mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-04-14 19:56:32 +00:00
better back handling for fragments
This commit is contained in:
parent
2dddc93c39
commit
687c915bb4
16 changed files with 39 additions and 1569 deletions
|
|
@ -84,23 +84,7 @@
|
|||
android:parentActivityName=".MainActivity">
|
||||
<meta-data
|
||||
android:name="android.support.PARENT_ACTIVITY"
|
||||
android:value=".TaskActivity" />
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".TavernActivity"
|
||||
android:label="@string/title_activity_tavern"
|
||||
android:parentActivityName=".MainActivity">
|
||||
<meta-data
|
||||
android:name="android.support.PARENT_ACTIVITY"
|
||||
android:value=".TaskActivity" />
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".PartyActivity"
|
||||
android:label="@string/title_activity_party"
|
||||
android:parentActivityName=".MainActivity">
|
||||
<meta-data
|
||||
android:name="android.support.PARENT_ACTIVITY"
|
||||
android:value=".TaskActivity" />
|
||||
android:value=".MainActivity" />
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".GemPurchaseActivity"
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
android:layout_height="match_parent"
|
||||
android:fitsSystemWindows="true"
|
||||
android:gravity="center"
|
||||
tools:context=".PartyActivity">
|
||||
tools:context=".MainActivity">
|
||||
|
||||
<android.support.design.widget.CoordinatorLayout
|
||||
android:id="@+id/main_content"
|
||||
|
|
|
|||
|
|
@ -1,79 +0,0 @@
|
|||
<android.support.v4.widget.DrawerLayout 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/drawer_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:fitsSystemWindows="true"
|
||||
android:gravity="center"
|
||||
tools:context=".PartyActivity">
|
||||
|
||||
<android.support.design.widget.CoordinatorLayout
|
||||
android:id="@+id/main_content"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:elevation="0dp"
|
||||
tools:context=".MainActivity">
|
||||
|
||||
|
||||
<android.support.v4.view.ViewPager
|
||||
android:id="@+id/viewpager"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
|
||||
|
||||
<android.support.design.widget.AppBarLayout
|
||||
android:id="@+id/appbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:fitsSystemWindows="false">
|
||||
|
||||
<android.support.design.widget.CollapsingToolbarLayout
|
||||
android:id="@+id/collapsing_toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:fitsSystemWindows="false"
|
||||
app:titleEnabled="false"
|
||||
app:contentScrim="?attr/colorPrimary"
|
||||
app:expandedTitleMarginEnd="?attr/actionBarSize"
|
||||
app:expandedTitleMarginStart="0dp"
|
||||
app:layout_scrollFlags="scroll|exitUntilCollapsed">
|
||||
|
||||
<include
|
||||
android:id="@+id/avatar_with_bars"
|
||||
layout="@layout/avatar_with_bars"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="?attr/actionBarSize"
|
||||
app:layout_collapseMode="parallax" />
|
||||
|
||||
<android.support.v7.widget.Toolbar
|
||||
android:id="@+id/toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:minHeight="?attr/actionBarSize"
|
||||
android:theme="@style/Toolbar"
|
||||
app:layout_collapseMode="pin"
|
||||
app:popupTheme="@style/ThemeOverlay.AppCompat.Dark" />
|
||||
</android.support.design.widget.CollapsingToolbarLayout>
|
||||
|
||||
<android.support.design.widget.TabLayout
|
||||
android:id="@+id/detail_tabs"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
android:layout_gravity="bottom"
|
||||
android:background="?attr/colorPrimary"
|
||||
android:elevation="0dp"
|
||||
android:fillViewport="false"
|
||||
|
||||
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
|
||||
app:layout_anchor="@+id/collapsing_toolbar"
|
||||
app:layout_anchorGravity="bottom"
|
||||
|
||||
app:layout_collapseMode="pin"
|
||||
app:tabGravity="fill"
|
||||
app:tabIndicatorColor="@android:color/white"
|
||||
app:tabMode="fixed" />
|
||||
</android.support.design.widget.AppBarLayout>
|
||||
</android.support.design.widget.CoordinatorLayout>
|
||||
</android.support.v4.widget.DrawerLayout>
|
||||
|
|
@ -1,171 +0,0 @@
|
|||
<android.support.v4.widget.DrawerLayout 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"
|
||||
xmlns:fab="http://schemas.android.com/apk/res-auto"
|
||||
android:id="@+id/drawer_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="center"
|
||||
tools:context=".MainActivity">
|
||||
|
||||
<android.support.design.widget.CoordinatorLayout
|
||||
android:id="@+id/main_content"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:elevation="0dp"
|
||||
tools:context=".MainActivity">
|
||||
|
||||
<android.support.v4.view.ViewPager
|
||||
android:id="@+id/viewpager"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
|
||||
|
||||
|
||||
<android.support.design.widget.AppBarLayout
|
||||
android:id="@+id/appbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:fitsSystemWindows="false">
|
||||
|
||||
<android.support.design.widget.CollapsingToolbarLayout
|
||||
android:id="@+id/collapsing_toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:fitsSystemWindows="false"
|
||||
app:titleEnabled="false"
|
||||
app:contentScrim="?attr/colorPrimary"
|
||||
app:expandedTitleMarginEnd="?attr/actionBarSize"
|
||||
app:expandedTitleMarginStart="0dp"
|
||||
app:layout_scrollFlags="scroll|exitUntilCollapsed">
|
||||
|
||||
<include
|
||||
android:id="@+id/avatar_with_bars"
|
||||
layout="@layout/avatar_with_bars"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="?attr/actionBarSize"
|
||||
app:layout_collapseMode="parallax" />
|
||||
|
||||
<android.support.v7.widget.Toolbar
|
||||
android:id="@+id/toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:theme="@style/Toolbar"
|
||||
app:layout_collapseMode="pin"
|
||||
android:minHeight="?attr/actionBarSize"
|
||||
app:popupTheme="@style/ThemeOverlay.AppCompat.Dark" />
|
||||
|
||||
|
||||
</android.support.design.widget.CollapsingToolbarLayout>
|
||||
|
||||
<android.support.design.widget.TabLayout
|
||||
android:id="@+id/detail_tabs"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
android:layout_gravity="bottom"
|
||||
android:background="@color/brand_300"
|
||||
android:elevation="0dp"
|
||||
android:fillViewport="false"
|
||||
android:theme="@style/MyCustomTabLayout"
|
||||
app:layout_anchor="@+id/collapsing_toolbar"
|
||||
app:layout_anchorGravity="bottom"
|
||||
|
||||
app:layout_collapseMode="pin"
|
||||
app:tabGravity="fill"
|
||||
app:tabIndicatorColor="@android:color/white"
|
||||
app:tabMode="fixed" />
|
||||
|
||||
</android.support.design.widget.AppBarLayout>
|
||||
|
||||
|
||||
<com.github.clans.fab.FloatingActionMenu
|
||||
android:id="@+id/fab.menu"
|
||||
app:layout_behavior="com.habitrpg.android.habitica.ui.helpers.FloatingActionMenuBehavior"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="bottom|right"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_marginBottom="16dp"
|
||||
android:layout_marginRight="8dp"
|
||||
fab:menu_fab_size="normal"
|
||||
fab:menu_labels_paddingTop="8dp"
|
||||
fab:menu_labels_paddingRight="8dp"
|
||||
fab:menu_labels_paddingBottom="8dp"
|
||||
fab:menu_labels_paddingLeft="8dp"
|
||||
|
||||
fab:menu_colorNormal="@color/brand"
|
||||
fab:menu_colorPressed="@color/brand_400"
|
||||
fab:menu_colorRipple="#FFFFFF"
|
||||
fab:menu_animationDelayPerItem="50"
|
||||
fab:menu_icon="@drawable/fab_add"
|
||||
fab:menu_buttonSpacing="2dp">
|
||||
|
||||
<com.github.clans.fab.FloatingActionButton
|
||||
android:id="@+id/fab.new.habit"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
|
||||
fab:fab_colorNormal="@color/brand"
|
||||
fab:fab_colorPressed="@color/brand_400"
|
||||
fab:fab_colorRipple="#FFFFFF"
|
||||
|
||||
fab:fab_shadowColor="#000"
|
||||
fab:fab_elevationCompat="6dp"
|
||||
android:src="@drawable/fab_add"
|
||||
fab:fab_size="mini"
|
||||
fab:fab_label="New Habit" />
|
||||
|
||||
<com.github.clans.fab.FloatingActionButton
|
||||
android:id="@+id/fab.new.daily"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
|
||||
fab:fab_colorNormal="@color/brand"
|
||||
fab:fab_colorPressed="@color/brand_400"
|
||||
fab:fab_colorRipple="#FFFFFF"
|
||||
|
||||
fab:fab_shadowColor="#000"
|
||||
fab:fab_elevationCompat="6dp"
|
||||
|
||||
android:src="@drawable/fab_add"
|
||||
fab:fab_size="mini"
|
||||
fab:fab_label="New Daily" />
|
||||
|
||||
<com.github.clans.fab.FloatingActionButton
|
||||
android:id="@+id/fab.new.todo"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
|
||||
fab:fab_colorNormal="@color/brand"
|
||||
fab:fab_colorPressed="@color/brand_400"
|
||||
fab:fab_colorRipple="#FFFFFF"
|
||||
|
||||
fab:fab_shadowColor="#000"
|
||||
fab:fab_elevationCompat="6dp"
|
||||
|
||||
android:src="@drawable/fab_add"
|
||||
fab:fab_size="mini"
|
||||
fab:fab_label="New Todo" />
|
||||
|
||||
<com.github.clans.fab.FloatingActionButton
|
||||
android:id="@+id/fab.new.reward"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
|
||||
fab:fab_colorNormal="@color/brand"
|
||||
fab:fab_colorPressed="@color/brand_400"
|
||||
fab:fab_colorRipple="#FFFFFF"
|
||||
|
||||
fab:fab_shadowColor="#000"
|
||||
fab:fab_elevationCompat="6dp"
|
||||
|
||||
android:src="@drawable/fab_add"
|
||||
fab:fab_size="mini"
|
||||
fab:fab_label="New Reward" />
|
||||
|
||||
</com.github.clans.fab.FloatingActionMenu>
|
||||
|
||||
</android.support.design.widget.CoordinatorLayout>
|
||||
</android.support.v4.widget.DrawerLayout>
|
||||
|
|
@ -1,45 +0,0 @@
|
|||
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:id="@+id/drawer_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="center"
|
||||
tools:context=".TavernActivity">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/layout_main"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:fitsSystemWindows="true"
|
||||
android:orientation="vertical">
|
||||
|
||||
<android.support.v7.widget.Toolbar
|
||||
android:id="@+id/toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?attr/colorPrimary"
|
||||
android:minHeight="?attr/actionBarSize"
|
||||
android:theme="@style/Toolbar"
|
||||
app:popupTheme="@style/ThemeOverlay.AppCompat.Dark" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/content_frame"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@color/white"
|
||||
android:orientation="vertical">
|
||||
|
||||
<include
|
||||
android:id="@+id/avatar"
|
||||
layout="@layout/avatar_with_bars"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/tavern.framelayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
</android.support.v4.widget.DrawerLayout>
|
||||
|
|
@ -42,14 +42,14 @@
|
|||
android:orientation="horizontal">
|
||||
<ImageView
|
||||
android:id="@+id/ic_header"
|
||||
android:src="@drawable/ic_header_heart"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginRight="@dimen/bar_padding"
|
||||
android:layout_marginEnd="@dimen/bar_padding"
|
||||
android:layout_alignTop="@+id/bar_full"
|
||||
android:layout_alignBottom="@id/bar_full"
|
||||
android:scaleType="center"/>
|
||||
android:scaleType="center"
|
||||
android:contentDescription="Bar Icon" />
|
||||
<LinearLayout
|
||||
android:id="@id/bar_full"
|
||||
android:layout_toRightOf="@id/ic_header"
|
||||
|
|
|
|||
|
|
@ -1,125 +0,0 @@
|
|||
package com.habitrpg.android.habitica;
|
||||
|
||||
import android.graphics.Bitmap;
|
||||
import android.os.Bundle;
|
||||
import android.support.design.widget.CollapsingToolbarLayout;
|
||||
import android.support.design.widget.TabLayout;
|
||||
import android.support.v4.view.ViewPager;
|
||||
import android.support.v7.app.ActionBar;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
import android.view.View;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.crashlytics.android.Crashlytics;
|
||||
import com.crashlytics.android.core.CrashlyticsCore;
|
||||
import com.habitrpg.android.habitica.ui.AvatarWithBarsViewModel;
|
||||
import com.habitrpg.android.habitica.ui.MainDrawerBuilder;
|
||||
import com.habitrpg.android.habitica.userpicture.UserPicture;
|
||||
import com.habitrpg.android.habitica.userpicture.UserPictureRunnable;
|
||||
import com.instabug.wrapper.support.activity.InstabugAppCompatActivity;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
|
||||
import com.mikepenz.materialdrawer.AccountHeader;
|
||||
import com.mikepenz.materialdrawer.Drawer;
|
||||
import com.mikepenz.materialdrawer.model.interfaces.IProfile;
|
||||
|
||||
import butterknife.ButterKnife;
|
||||
import butterknife.InjectView;
|
||||
import de.greenrobot.event.EventBus;
|
||||
import io.fabric.sdk.android.Fabric;
|
||||
|
||||
/**
|
||||
* Created by Negue on 14.09.2015.
|
||||
*/
|
||||
public abstract class AvatarActivityBase extends InstabugAppCompatActivity {
|
||||
|
||||
//region View Elements
|
||||
@InjectView(R.id.viewpager)
|
||||
ViewPager viewPager;
|
||||
|
||||
@InjectView(R.id.toolbar)
|
||||
Toolbar toolbar;
|
||||
|
||||
@InjectView(R.id.detail_tabs)
|
||||
TabLayout detail_tabs;
|
||||
|
||||
@InjectView(R.id.avatar_with_bars)
|
||||
View avatar_with_bars;
|
||||
|
||||
@InjectView(R.id.collapsing_toolbar)
|
||||
CollapsingToolbarLayout collapsingToolbarLayout;
|
||||
|
||||
TextView titleTextView;
|
||||
|
||||
AccountHeader accountHeader;
|
||||
Drawer drawer;
|
||||
//endregion
|
||||
|
||||
protected HostConfig hostConfig;
|
||||
protected HabitRPGUser User;
|
||||
|
||||
AvatarWithBarsViewModel avatarInHeader;
|
||||
|
||||
protected abstract int getLayoutRes();
|
||||
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(getLayoutRes());
|
||||
|
||||
// Inject Controls
|
||||
ButterKnife.inject(this);
|
||||
|
||||
// Receive Events
|
||||
EventBus.getDefault().register(this);
|
||||
|
||||
// Initialize Crashlytics
|
||||
Crashlytics crashlytics = new Crashlytics.Builder()
|
||||
.core(new CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build())
|
||||
.build();
|
||||
Fabric.with(this, crashlytics);
|
||||
|
||||
if (toolbar != null) {
|
||||
setSupportActionBar(toolbar);
|
||||
|
||||
ActionBar actionBar = getSupportActionBar();
|
||||
|
||||
if (actionBar != null) {
|
||||
actionBar.setDisplayHomeAsUpEnabled(true);
|
||||
actionBar.setDisplayShowHomeEnabled(false);
|
||||
actionBar.setDisplayShowTitleEnabled(true);
|
||||
actionBar.setDisplayUseLogoEnabled(false);
|
||||
actionBar.setHomeButtonEnabled(false);
|
||||
}
|
||||
|
||||
// toolbar.setPadding(0, getResources().getDimensionPixelSize(R.dimen.tool_bar_top_padding), 0, 0);
|
||||
}
|
||||
|
||||
viewPager.setBackgroundColor(getResources().getColor(R.color.white));
|
||||
|
||||
avatarInHeader = new AvatarWithBarsViewModel(this, avatar_with_bars);
|
||||
accountHeader = MainDrawerBuilder.CreateDefaultAccountHeader(this).build();
|
||||
|
||||
}
|
||||
|
||||
protected void setTitle(String text) {
|
||||
toolbar.setTitle(text);
|
||||
}
|
||||
|
||||
public void updateSidebar() {
|
||||
final IProfile profile = accountHeader.getProfiles().get(0);
|
||||
if (User.getAuthentication() != null) {
|
||||
if (User.getAuthentication().getLocalAuthentication() != null) {
|
||||
profile.withEmail(User.getAuthentication().getLocalAuthentication().getEmail());
|
||||
}
|
||||
}
|
||||
profile.withName(User.getProfile().getName());
|
||||
new UserPicture(User, this, true, false).setPictureWithRunnable(new UserPictureRunnable() {
|
||||
public void run(Bitmap avatar) {
|
||||
profile.withIcon(avatar);
|
||||
accountHeader.updateProfile(profile);
|
||||
}
|
||||
});
|
||||
accountHeader.updateProfile(profile);
|
||||
}
|
||||
}
|
||||
|
|
@ -25,6 +25,7 @@ public abstract class BaseFragment extends Fragment {
|
|||
APIHelper mAPIHelper;
|
||||
protected HabitRPGUser user;
|
||||
public boolean usesTabLayout;
|
||||
public int fragmentSidebarPosition;
|
||||
|
||||
public void setUser(HabitRPGUser user) { this.user = user; }
|
||||
public void updateUserData(HabitRPGUser user) { this.user = user; }
|
||||
|
|
@ -52,14 +53,16 @@ public abstract class BaseFragment extends Fragment {
|
|||
|
||||
setHasOptionsMenu(true);
|
||||
|
||||
activity.setActiveFragment(this);
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
public void onDestroyView() {
|
||||
EventBus.getDefault().unregister(this);
|
||||
|
||||
super.onDestroy();
|
||||
super.onDestroyView();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -172,9 +172,8 @@ public class LoginActivity extends AppCompatActivity
|
|||
}
|
||||
|
||||
private void startMainActivity() {
|
||||
startActivity(new Intent(LoginActivity.this, TaskActivity.class));
|
||||
startActivity(new Intent(LoginActivity.this, MainActivity.class));
|
||||
finish();
|
||||
|
||||
}
|
||||
private void saveTokens(String api, String user) throws Exception {
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(LoginActivity.this);
|
||||
|
|
|
|||
|
|
@ -42,9 +42,6 @@ import io.fabric.sdk.android.Fabric;
|
|||
*/
|
||||
public class MainActivity extends InstabugAppCompatActivity implements HabitRPGUserCallback.OnUserReceived, FlowContentObserver.OnSpecificModelStateChangedListener {
|
||||
|
||||
@InjectView(R.id.fragment_container)
|
||||
FrameLayout fragment_container;
|
||||
|
||||
BaseFragment activeFragment;
|
||||
|
||||
@InjectView(R.id.toolbar)
|
||||
|
|
@ -59,8 +56,6 @@ public class MainActivity extends InstabugAppCompatActivity implements HabitRPGU
|
|||
@InjectView(R.id.collapsing_toolbar)
|
||||
CollapsingToolbarLayout collapsingToolbarLayout;
|
||||
|
||||
TextView titleTextView;
|
||||
|
||||
AccountHeader accountHeader;
|
||||
Drawer drawer;
|
||||
|
||||
|
|
@ -123,7 +118,7 @@ public class MainActivity extends InstabugAppCompatActivity implements HabitRPGU
|
|||
|
||||
// Create a new Fragment to be placed in the activity layout
|
||||
TasksFragment tasksFragment = new TasksFragment();
|
||||
|
||||
tasksFragment.fragmentSidebarPosition = 0;
|
||||
// In case this activity was started with special instructions from an
|
||||
// Intent, pass the Intent's extras to the fragment as arguments
|
||||
this.displayFragment(tasksFragment);
|
||||
|
|
@ -153,7 +148,6 @@ public class MainActivity extends InstabugAppCompatActivity implements HabitRPGU
|
|||
} else {
|
||||
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, fragment).addToBackStack(null).commit();
|
||||
}
|
||||
activeFragment = fragment;
|
||||
}
|
||||
|
||||
private TransactionListener<HabitRPGUser> userTransactionListener = new TransactionListener<HabitRPGUser>() {
|
||||
|
|
@ -238,4 +232,9 @@ public class MainActivity extends InstabugAppCompatActivity implements HabitRPGU
|
|||
public void onUserFail() {
|
||||
|
||||
}
|
||||
|
||||
public void setActiveFragment(BaseFragment fragment) {
|
||||
this.activeFragment = fragment;
|
||||
this.drawer.setSelectionAtPosition(this.activeFragment.fragmentSidebarPosition, false);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,196 +0,0 @@
|
|||
package com.habitrpg.android.habitica;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.design.widget.AppBarLayout;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.app.FragmentPagerAdapter;
|
||||
|
||||
import com.habitrpg.android.habitica.events.commands.CreateTagCommand;
|
||||
import com.habitrpg.android.habitica.prefs.PrefsActivity;
|
||||
import com.habitrpg.android.habitica.ui.MainDrawerBuilder;
|
||||
import com.habitrpg.android.habitica.ui.fragments.ChatListFragment;
|
||||
import com.habitrpg.android.habitica.ui.fragments.PartyInformationFragment;
|
||||
import com.habitrpg.android.habitica.ui.fragments.PartyMemberListFragment;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Group;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.QuestContent;
|
||||
import com.raizlabs.android.dbflow.sql.builder.Condition;
|
||||
import com.raizlabs.android.dbflow.sql.language.Select;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
import butterknife.InjectView;
|
||||
import retrofit.Callback;
|
||||
import retrofit.RetrofitError;
|
||||
import retrofit.client.Response;
|
||||
|
||||
public class PartyActivity extends AvatarActivityBase implements AppBarLayout.OnOffsetChangedListener {
|
||||
|
||||
@InjectView(R.id.appbar)
|
||||
AppBarLayout appBarLayout;
|
||||
|
||||
private APIHelper mAPIHelper;
|
||||
|
||||
private Group group;
|
||||
|
||||
@Override
|
||||
protected int getLayoutRes() {
|
||||
return R.layout.activity_party;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
setViewPagerAdapter();
|
||||
|
||||
this.hostConfig = PrefsActivity.fromContext(this);
|
||||
User = new Select().from(HabitRPGUser.class).where(Condition.column("id").eq(hostConfig.getUser())).querySingle();
|
||||
|
||||
mAPIHelper = new APIHelper(this, hostConfig);
|
||||
|
||||
if (User == null)
|
||||
return;
|
||||
|
||||
updateUserAvatars();
|
||||
updateSidebar();
|
||||
final ContentCache contentCache = new ContentCache(mAPIHelper.apiService);
|
||||
|
||||
|
||||
// Get the full group data
|
||||
mAPIHelper.apiService.getGroup("party", new Callback<Group>() {
|
||||
@Override
|
||||
public void success(Group group, Response response) {
|
||||
PartyActivity.this.group = group;
|
||||
|
||||
if (partyMemberListFragment != null) {
|
||||
partyMemberListFragment.setMemberList(group.members);
|
||||
}
|
||||
|
||||
if (partyInformationFragment != null) {
|
||||
partyInformationFragment.setGroup(group);
|
||||
}
|
||||
|
||||
if (group != null && group.quest != null && !group.quest.key.isEmpty()) {
|
||||
contentCache.GetQuestContent(group.quest.key, new ContentCache.QuestContentCallback() {
|
||||
@Override
|
||||
public void GotQuest(QuestContent content) {
|
||||
partyInformationFragment.setQuestContent(content);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failure(RetrofitError error) {
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
appBarLayout.addOnOffsetChangedListener(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPause() {
|
||||
super.onPause();
|
||||
appBarLayout.removeOnOffsetChangedListener(this);
|
||||
}
|
||||
|
||||
private HashMap<Integer, Fragment> fragmentDictionary = new HashMap<>();
|
||||
|
||||
private PartyMemberListFragment partyMemberListFragment;
|
||||
private PartyInformationFragment partyInformationFragment;
|
||||
|
||||
|
||||
public void setViewPagerAdapter() {
|
||||
android.support.v4.app.FragmentManager fragmentManager = getSupportFragmentManager();
|
||||
|
||||
viewPager.setAdapter(new FragmentPagerAdapter(fragmentManager) {
|
||||
|
||||
@Override
|
||||
public Fragment getItem(int position) {
|
||||
|
||||
Fragment fragment;
|
||||
|
||||
switch (position) {
|
||||
case 0: {
|
||||
fragment = partyInformationFragment = new PartyInformationFragment(group);
|
||||
break;
|
||||
}
|
||||
case 1: {
|
||||
fragment = new ChatListFragment(PartyActivity.this, "party", mAPIHelper, User, false);
|
||||
break;
|
||||
}
|
||||
case 2: {
|
||||
fragment = partyMemberListFragment = new PartyMemberListFragment(PartyActivity.this, group);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
fragment = new Fragment();
|
||||
}
|
||||
|
||||
fragmentDictionary.put(position, fragment);
|
||||
|
||||
return fragment;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCount() {
|
||||
return 3;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CharSequence getPageTitle(int position) {
|
||||
switch (position) {
|
||||
case 0:
|
||||
return "Party";
|
||||
case 1:
|
||||
return "Chat";
|
||||
case 2:
|
||||
return "Members";
|
||||
}
|
||||
return "";
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
detail_tabs.setupWithViewPager(viewPager);
|
||||
}
|
||||
|
||||
|
||||
private void updateUserAvatars() {
|
||||
avatarInHeader.updateData(User);
|
||||
}
|
||||
|
||||
//region Events
|
||||
|
||||
// until there is a party event
|
||||
public void onEvent(CreateTagCommand event) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onOffsetChanged(AppBarLayout appBarLayout, int i) {
|
||||
Fragment fragment = fragmentDictionary.get(viewPager.getCurrentItem());
|
||||
|
||||
if (!(fragment instanceof ChatListFragment))
|
||||
return;
|
||||
|
||||
ChatListFragment chatFragment = (ChatListFragment) fragment;
|
||||
|
||||
// Disable Refresh if Header is collapsed
|
||||
|
||||
if (i == 0) {
|
||||
chatFragment.setRefreshEnabled(true);
|
||||
} else {
|
||||
chatFragment.setRefreshEnabled(false);
|
||||
}
|
||||
}
|
||||
|
||||
//endregion Events
|
||||
}
|
||||
|
|
@ -1,782 +0,0 @@
|
|||
package com.habitrpg.android.habitica;
|
||||
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.databinding.DataBindingUtil;
|
||||
import android.graphics.Color;
|
||||
import android.os.Bundle;
|
||||
import android.support.design.widget.Snackbar;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.app.FragmentPagerAdapter;
|
||||
import android.support.v4.content.ContextCompat;
|
||||
import android.util.Log;
|
||||
import android.view.Gravity;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.widget.CompoundButton;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.afollestad.materialdialogs.MaterialDialog;
|
||||
import com.github.clans.fab.FloatingActionMenu;
|
||||
import com.habitrpg.android.habitica.callbacks.HabitRPGUserCallback;
|
||||
import com.habitrpg.android.habitica.callbacks.TaskCreationCallback;
|
||||
import com.habitrpg.android.habitica.callbacks.TaskScoringCallback;
|
||||
import com.habitrpg.android.habitica.callbacks.TaskUpdateCallback;
|
||||
import com.habitrpg.android.habitica.databinding.ValueBarBinding;
|
||||
import com.habitrpg.android.habitica.events.commands.BuyRewardCommand;
|
||||
import com.habitrpg.android.habitica.events.HabitScoreEvent;
|
||||
import com.habitrpg.android.habitica.events.commands.TaskCheckedCommand;
|
||||
import com.habitrpg.android.habitica.events.TaskLongPressedEvent;
|
||||
import com.habitrpg.android.habitica.events.TaskSaveEvent;
|
||||
import com.habitrpg.android.habitica.events.TaskTappedEvent;
|
||||
import com.habitrpg.android.habitica.events.ToggledInnStateEvent;
|
||||
import com.habitrpg.android.habitica.events.commands.AddNewTaskCommand;
|
||||
import com.habitrpg.android.habitica.events.commands.CreateTagCommand;
|
||||
import com.habitrpg.android.habitica.events.commands.FilterTasksByTagsCommand;
|
||||
import com.habitrpg.android.habitica.helpers.TagsHelper;
|
||||
import com.habitrpg.android.habitica.prefs.PrefsActivity;
|
||||
import com.habitrpg.android.habitica.ui.AvatarWithBarsViewModel;
|
||||
import com.habitrpg.android.habitica.ui.EditTextDrawer;
|
||||
import com.habitrpg.android.habitica.ui.adapter.HabitItemRecyclerViewAdapter;
|
||||
import com.habitrpg.android.habitica.ui.adapter.IReceiveNewEntries;
|
||||
import com.habitrpg.android.habitica.ui.fragments.TaskRecyclerViewFragment;
|
||||
import com.habitrpg.android.habitica.ui.helpers.Debounce;
|
||||
import com.habitrpg.android.habitica.userpicture.UserPicture;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.SuppressedModals;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Tag;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.TaskDirection;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.TaskDirectionData;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.ItemData;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.TaskTag;
|
||||
import com.mikepenz.materialdrawer.Drawer;
|
||||
import com.mikepenz.materialdrawer.DrawerBuilder;
|
||||
import com.mikepenz.materialdrawer.model.SectionDrawerItem;
|
||||
import com.mikepenz.materialdrawer.model.SwitchDrawerItem;
|
||||
import com.mikepenz.materialdrawer.model.interfaces.IDrawerItem;
|
||||
import com.mikepenz.materialdrawer.interfaces.OnCheckedChangeListener;
|
||||
import com.raizlabs.android.dbflow.runtime.FlowContentObserver;
|
||||
import com.raizlabs.android.dbflow.runtime.transaction.BaseTransaction;
|
||||
import com.raizlabs.android.dbflow.runtime.transaction.TransactionListener;
|
||||
import com.raizlabs.android.dbflow.sql.builder.Condition;
|
||||
import com.raizlabs.android.dbflow.sql.language.Select;
|
||||
import com.raizlabs.android.dbflow.structure.BaseModel;
|
||||
import com.raizlabs.android.dbflow.structure.Model;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import butterknife.InjectView;
|
||||
import butterknife.OnClick;
|
||||
import de.greenrobot.event.EventBus;
|
||||
import retrofit.Callback;
|
||||
import retrofit.RetrofitError;
|
||||
import retrofit.client.Response;
|
||||
|
||||
|
||||
|
||||
public class TaskActivity extends AvatarActivityBase implements HabitRPGUserCallback.OnUserReceived,
|
||||
TaskScoringCallback.OnTaskScored, FlowContentObserver.OnSpecificModelStateChangedListener,
|
||||
OnCheckedChangeListener {
|
||||
|
||||
public enum SnackbarDisplayType {
|
||||
NORMAL, FAILURE, DROP
|
||||
}
|
||||
|
||||
static final int TASK_CREATED_RESULT = 1;
|
||||
static final int TASK_UPDATED_RESULT = 2;
|
||||
|
||||
Drawer filterDrawer;
|
||||
|
||||
Map<Integer, TaskRecyclerViewFragment> ViewFragmentsDictionary = new HashMap<>();
|
||||
|
||||
APIHelper mAPIHelper;
|
||||
|
||||
@InjectView(R.id.fab_menu)
|
||||
FloatingActionMenu floatingMenu;
|
||||
|
||||
FlowContentObserver observer;
|
||||
|
||||
private TagsHelper tagsHelper;
|
||||
|
||||
private ContentCache contentCache;
|
||||
|
||||
private MaterialDialog faintDialog;
|
||||
|
||||
@Override
|
||||
protected int getLayoutRes() {
|
||||
return R.layout.activity_tasks;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
this.hostConfig = PrefsActivity.fromContext(this);
|
||||
if (hostConfig == null || hostConfig.getApi() == null || hostConfig.getApi().equals("") || hostConfig.getUser() == null || hostConfig.getUser().equals("")) {
|
||||
startActivity(new Intent(this, LoginActivity.class));
|
||||
finish();
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
filterDrawer = new DrawerBuilder()
|
||||
.withActivity(this)
|
||||
.withDrawerGravity(Gravity.RIGHT)
|
||||
.withCloseOnClick(false)
|
||||
.append(drawer);
|
||||
|
||||
viewPager.setCurrentItem(0);
|
||||
|
||||
new Select().from(HabitRPGUser.class).where(Condition.column("id").eq(hostConfig.getUser())).async().querySingle(userTransactionListener);
|
||||
this.observer = new FlowContentObserver();
|
||||
this.observer.registerForContentChanges(this.getApplicationContext(), HabitRPGUser.class);
|
||||
|
||||
this.observer.addSpecificModelChangeListener(this);
|
||||
|
||||
this.tagsHelper = new TagsHelper();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
|
||||
if (mAPIHelper == null) {
|
||||
this.mAPIHelper = new APIHelper(this, hostConfig);
|
||||
|
||||
mAPIHelper.retrieveUser(new HabitRPGUserCallback(this));
|
||||
|
||||
contentCache = new ContentCache(mAPIHelper.apiService);
|
||||
}
|
||||
SetUserData();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
if (observer != null) {
|
||||
this.observer.unregisterForContentChanges(this.getApplicationContext());
|
||||
}
|
||||
EventBus.getDefault().unregister(this);
|
||||
|
||||
super.onDestroy();
|
||||
}
|
||||
|
||||
// region onClick for the FAB Menu
|
||||
|
||||
@OnClick(R.id.fab_new_habit)
|
||||
public void onNewHabit(View view) {
|
||||
openNewTaskActivity("habit");
|
||||
}
|
||||
|
||||
@OnClick(R.id.fab_new_daily)
|
||||
public void onNewDaily(View view) {
|
||||
openNewTaskActivity("daily");
|
||||
}
|
||||
|
||||
@OnClick(R.id.fab_new_todo)
|
||||
public void onNewTodo(View view) {
|
||||
openNewTaskActivity("todo");
|
||||
}
|
||||
|
||||
@OnClick(R.id.fab_new_reward)
|
||||
public void onNewReward(View view) {
|
||||
openNewTaskActivity("reward");
|
||||
}
|
||||
|
||||
|
||||
private void openNewTaskActivity(String type) {
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putString("type", type);
|
||||
bundle.putStringArrayList("tagsId", new ArrayList<String>(this.tagsHelper.getTags()));
|
||||
|
||||
Intent intent = new Intent(this, TaskFormActivity.class);
|
||||
intent.putExtras(bundle);
|
||||
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
|
||||
|
||||
startActivityForResult(intent, TASK_CREATED_RESULT);
|
||||
}
|
||||
|
||||
// endregion
|
||||
|
||||
private void showSnackbar(String content) {
|
||||
showSnackbar(content, SnackbarDisplayType.NORMAL);
|
||||
}
|
||||
|
||||
private void showSnackbar(String content, SnackbarDisplayType displayType) {
|
||||
Snackbar snackbar = Snackbar.make(floatingMenu, content, Snackbar.LENGTH_LONG);
|
||||
View snackbarView = snackbar.getView();
|
||||
|
||||
if (displayType == SnackbarDisplayType.FAILURE) {
|
||||
|
||||
//change Snackbar's background color;
|
||||
snackbarView.setBackgroundColor(ContextCompat.getColor(this, R.color.worse_10));
|
||||
} else if (displayType == SnackbarDisplayType.DROP) {
|
||||
TextView tv = (TextView) snackbarView.findViewById(android.support.design.R.id.snackbar_text);
|
||||
tv.setMaxLines(5);
|
||||
snackbarView.setBackgroundColor(ContextCompat.getColor(this, R.color.best_10));
|
||||
}
|
||||
snackbar.show();
|
||||
}
|
||||
|
||||
//region Events
|
||||
|
||||
public void onEvent(CreateTagCommand event) {
|
||||
Tag t = new Tag();
|
||||
t.setName(event.tagName);
|
||||
t.save();
|
||||
|
||||
mAPIHelper.apiService.createTag(t, new Callback<List<Tag>>() {
|
||||
@Override
|
||||
public void success(List<Tag> tags, Response response) {
|
||||
FillTagFilterDrawer(tags);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failure(RetrofitError error) {
|
||||
showSnackbar("Error: " + error.getMessage(), SnackbarDisplayType.FAILURE);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void onEvent(TaskTappedEvent event) {
|
||||
if (event.Task.type.equals("reward"))
|
||||
return;
|
||||
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putString("type", event.Task.getType());
|
||||
bundle.putString("taskId", event.Task.getId());
|
||||
bundle.putStringArrayList("tagsId", new ArrayList<String>(this.tagsHelper.getTags()));
|
||||
Intent intent = new Intent(this, TaskFormActivity.class);
|
||||
intent.putExtras(bundle);
|
||||
startActivityForResult(intent, TASK_UPDATED_RESULT);
|
||||
}
|
||||
|
||||
public void onEvent(TaskLongPressedEvent event) {
|
||||
}
|
||||
|
||||
public void onEvent(TaskCheckedCommand event) {
|
||||
mAPIHelper.updateTaskDirection(event.Task.getId(), event.Task.getCompleted() ? TaskDirection.down : TaskDirection.up, new TaskScoringCallback(this, event.Task.getId()));
|
||||
}
|
||||
|
||||
public void onEvent(HabitScoreEvent event) {
|
||||
mAPIHelper.updateTaskDirection(event.Habit.getId(), event.Up ? TaskDirection.up : TaskDirection.down, new TaskScoringCallback(this, event.Habit.getId()));
|
||||
}
|
||||
|
||||
public void onEvent(AddNewTaskCommand event) {
|
||||
openNewTaskActivity(event.ClassType.toLowerCase());
|
||||
}
|
||||
|
||||
public void onEvent(final BuyRewardCommand event) {
|
||||
final String rewardKey = event.Reward.getId();
|
||||
|
||||
if (User.getStats().getGp() < event.Reward.getValue()) {
|
||||
showSnackbar("Not enough Gold", SnackbarDisplayType.FAILURE);
|
||||
return;
|
||||
}
|
||||
|
||||
if (event.Reward.specialTag == "item") {
|
||||
if (rewardKey.equals("potion")) {
|
||||
int currentHp = User.getStats().getHp().intValue();
|
||||
int maxHp = User.getStats().getMaxHealth();
|
||||
|
||||
if(currentHp == maxHp) {
|
||||
showSnackbar("You don't need to buy an health potion", SnackbarDisplayType.FAILURE);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
mAPIHelper.apiService.buyItem(event.Reward.getId(), new Callback<Void>() {
|
||||
|
||||
@Override
|
||||
public void success(Void aVoid, Response response) {
|
||||
switch (rewardKey) {
|
||||
case "potion":
|
||||
double newHp = Math.min(User.getStats().getMaxHealth(), User.getStats().getHp() + 15);
|
||||
User.getStats().setHp(newHp);
|
||||
|
||||
updateHeader();
|
||||
|
||||
break;
|
||||
default:
|
||||
|
||||
// TODO Add bought item to the avatar
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
showSnackbar("Buy Reward Successful " + event.Reward.getText());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failure(RetrofitError error) {
|
||||
showSnackbar("Buy Reward Error " + event.Reward.getText(), SnackbarDisplayType.FAILURE);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
// user created Rewards
|
||||
|
||||
mAPIHelper.updateTaskDirection(rewardKey, TaskDirection.down, new TaskScoringCallback(this, rewardKey));
|
||||
}
|
||||
}
|
||||
|
||||
public void onEvent(final TaskSaveEvent event) {
|
||||
Task task = (Task) event.task;
|
||||
Log.d("tags", "Task saving");
|
||||
if (event.created) {
|
||||
this.mAPIHelper.createNewTask(task, new TaskCreationCallback());
|
||||
updateTags(event.task.getTags());
|
||||
} else {
|
||||
this.mAPIHelper.updateTask(task, new TaskUpdateCallback());
|
||||
}
|
||||
}
|
||||
|
||||
public void onEvent(ToggledInnStateEvent event) {
|
||||
User.getPreferences().setSleep(event.Inn);
|
||||
|
||||
updateUserAvatars();
|
||||
}
|
||||
|
||||
//endregion Events
|
||||
|
||||
private void notifyUser(double xp, double hp, double gold,
|
||||
int lvl, double delta) {
|
||||
StringBuilder message = new StringBuilder();
|
||||
SnackbarDisplayType displayType = SnackbarDisplayType.NORMAL;
|
||||
if (lvl > User.getStats().getLvl()) {
|
||||
displayLevelUpDialog(lvl);
|
||||
|
||||
this.mAPIHelper.retrieveUser(new HabitRPGUserCallback(this));
|
||||
User.getStats().setLvl((int) lvl);
|
||||
showSnackbar(message.toString());
|
||||
} else {
|
||||
com.magicmicky.habitrpgwrapper.lib.models.Stats stats = User.getStats();
|
||||
|
||||
if (xp > stats.getExp()) {
|
||||
message.append(" + ").append(round(xp - stats.getExp(), 2)).append(" XP");
|
||||
User.getStats().setExp(xp);
|
||||
}
|
||||
if (hp != stats.getHp()) {
|
||||
displayType = SnackbarDisplayType.FAILURE;
|
||||
message.append(" - ").append(round(stats.getHp() - hp, 2)).append(" HP");
|
||||
User.getStats().setHp(hp);
|
||||
}
|
||||
if (gold > stats.getGp()) {
|
||||
message.append(" + ").append(round(gold - stats.getGp(), 2)).append(" GP");
|
||||
stats.setGp(gold);
|
||||
} else if (gold < stats.getGp()) {
|
||||
displayType = SnackbarDisplayType.FAILURE;
|
||||
message.append(" - ").append(round(stats.getGp() - gold, 2)).append(" GP");
|
||||
stats.setGp(gold);
|
||||
}
|
||||
showSnackbar(message.toString(), displayType);
|
||||
|
||||
updateUserAvatars();
|
||||
}
|
||||
}
|
||||
|
||||
static public Double round(Double value, int n) {
|
||||
return (Math.round(value * Math.pow(10, n))) / (Math.pow(10, n));
|
||||
}
|
||||
|
||||
public void loadTaskLists() {
|
||||
android.support.v4.app.FragmentManager fragmentManager = getSupportFragmentManager();
|
||||
|
||||
viewPager.setAdapter(new FragmentPagerAdapter(fragmentManager) {
|
||||
|
||||
int oldPosition = -1;
|
||||
|
||||
@Override
|
||||
public Fragment getItem(int position) {
|
||||
int layoutOfType;
|
||||
TaskRecyclerViewFragment fragment;
|
||||
HabitItemRecyclerViewAdapter adapter;
|
||||
|
||||
switch (position) {
|
||||
case 0:
|
||||
layoutOfType = R.layout.habit_item_card;
|
||||
fragment = TaskRecyclerViewFragment.newInstance(new HabitItemRecyclerViewAdapter(Task.TYPE_HABIT, TaskActivity.this.tagsHelper, layoutOfType, HabitItemRecyclerViewAdapter.HabitViewHolder.class, TaskActivity.this), Task.TYPE_HABIT);
|
||||
|
||||
break;
|
||||
case 1:
|
||||
layoutOfType = R.layout.daily_item_card;
|
||||
adapter = new HabitItemRecyclerViewAdapter(Task.TYPE_DAILY, TaskActivity.this.tagsHelper, layoutOfType, HabitItemRecyclerViewAdapter.DailyViewHolder.class, TaskActivity.this);
|
||||
if (User != null) {
|
||||
adapter.dailyResetOffset = User.getPreferences().getDayStart();
|
||||
}
|
||||
fragment = TaskRecyclerViewFragment.newInstance(adapter, Task.TYPE_DAILY);
|
||||
break;
|
||||
case 3:
|
||||
layoutOfType = R.layout.reward_item_card;
|
||||
adapter = new HabitItemRecyclerViewAdapter(Task.TYPE_REWARD, TaskActivity.this.tagsHelper,
|
||||
layoutOfType, HabitItemRecyclerViewAdapter.RewardViewHolder.class, TaskActivity.this,
|
||||
new HabitItemRecyclerViewAdapter.IAdditionalEntries() {
|
||||
@Override
|
||||
public void GetAdditionalEntries(final IReceiveNewEntries callBack) {
|
||||
|
||||
// request buyable gear
|
||||
mAPIHelper.apiService.getInventoryBuyableGear(new Callback<List<ItemData>>() {
|
||||
@Override
|
||||
public void success(List<ItemData> itemDatas, Response response) {
|
||||
|
||||
// get itemdata list
|
||||
ArrayList<String> itemKeys = new ArrayList<String>();
|
||||
for (ItemData item : itemDatas) {
|
||||
itemKeys.add(item.key);
|
||||
}
|
||||
itemKeys.add("potion");
|
||||
|
||||
contentCache.GetItemDataList(itemKeys, new ContentCache.GotContentEntryCallback<List<ItemData>>() {
|
||||
@Override
|
||||
public void GotObject(List<ItemData> obj) {
|
||||
ArrayList<Task> buyableItems = new ArrayList<Task>();
|
||||
|
||||
for (ItemData item : obj) {
|
||||
Task reward = new Task();
|
||||
reward.text = item.text;
|
||||
reward.notes = item.notes;
|
||||
reward.value = item.value;
|
||||
reward.setType("reward");
|
||||
reward.specialTag = "item";
|
||||
reward.setId(item.key);
|
||||
|
||||
buyableItems.add(reward);
|
||||
}
|
||||
|
||||
callBack.GotAdditionalItems(buyableItems);
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failure(RetrofitError error) {
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
fragment = TaskRecyclerViewFragment.newInstance(adapter, Task.TYPE_REWARD);
|
||||
break;
|
||||
default:
|
||||
layoutOfType = R.layout.todo_item_card;
|
||||
fragment = TaskRecyclerViewFragment.newInstance(new HabitItemRecyclerViewAdapter(Task.TYPE_TODO, TaskActivity.this.tagsHelper, layoutOfType, HabitItemRecyclerViewAdapter.TodoViewHolder.class, TaskActivity.this), Task.TYPE_TODO);
|
||||
}
|
||||
|
||||
ViewFragmentsDictionary.put(position, fragment);
|
||||
|
||||
return fragment;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCount() {
|
||||
return 4;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CharSequence getPageTitle(int position) {
|
||||
switch (position) {
|
||||
case 0:
|
||||
return "Habits";
|
||||
case 1:
|
||||
return "Dailies";
|
||||
case 2:
|
||||
return "Todos";
|
||||
case 3:
|
||||
return "Rewards";
|
||||
}
|
||||
return "";
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
detail_tabs.setupWithViewPager(viewPager);
|
||||
|
||||
}
|
||||
|
||||
|
||||
public int adjustAlpha(int color, float factor) {
|
||||
int alpha = Math.round(Color.alpha(color) * factor);
|
||||
int red = Color.red(color);
|
||||
int green = Color.green(color);
|
||||
int blue = Color.blue(color);
|
||||
return Color.argb(alpha, red, green, blue);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCreateOptionsMenu(Menu menu) {
|
||||
// Inflate the menu; this adds items to the action bar if it is present.
|
||||
getMenuInflater().inflate(R.menu.menu_main_activity, menu);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
// Handle action bar item clicks here. The action bar will
|
||||
// automatically handle clicks on the Home/Up button, so long
|
||||
// as you specify a parent activity in AndroidManifest.xml.
|
||||
int id = item.getItemId();
|
||||
|
||||
switch (id) {
|
||||
case R.id.action_search:
|
||||
filterDrawer.openDrawer();
|
||||
return true;
|
||||
case R.id.action_reload:
|
||||
mAPIHelper.retrieveUser(new HabitRPGUserCallback(this));
|
||||
return true;
|
||||
}
|
||||
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
|
||||
private void updateUserAvatars() {
|
||||
avatarInHeader.updateData(User);
|
||||
}
|
||||
|
||||
private void updateHeader() {
|
||||
updateUserAvatars();
|
||||
setTitle(User.getProfile().getName());
|
||||
|
||||
android.support.v7.app.ActionBarDrawerToggle actionBarDrawerToggle = drawer.getActionBarDrawerToggle();
|
||||
|
||||
if (actionBarDrawerToggle != null) {
|
||||
actionBarDrawerToggle.setDrawerIndicatorEnabled(true);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUserReceived(HabitRPGUser user) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUserFail() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTaskDataReceived(TaskDirectionData data) {
|
||||
notifyUser(data.getExp(), data.getHp(), data.getGp(), data.getLvl(), data.getDelta());
|
||||
if (data.get_tmp() != null) {
|
||||
if (data.get_tmp().getDrop() != null) {
|
||||
showSnackbar(data.get_tmp().getDrop().getDialog(), SnackbarDisplayType.DROP);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTaskScoringFailed() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onModelStateChanged(Class<? extends Model> aClass, BaseModel.Action action, String s, String s1) {
|
||||
if (aClass != HabitRPGUser.class)
|
||||
return;
|
||||
|
||||
|
||||
new Select().from(HabitRPGUser.class).where(Condition.column("id").eq(hostConfig.getUser())).async().querySingle(userTransactionListener);
|
||||
Log.d("db", "received notif");
|
||||
// SetUserData();
|
||||
}
|
||||
|
||||
private boolean taskListAlreadyAdded;
|
||||
|
||||
private void SetUserData() {
|
||||
if (User != null) {
|
||||
runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (!taskListAlreadyAdded) {
|
||||
taskListAlreadyAdded = true;
|
||||
loadTaskLists();
|
||||
FillTagFilterDrawer(User.getTags());
|
||||
}
|
||||
TaskRecyclerViewFragment fragment = ViewFragmentsDictionary.get(2);
|
||||
if (fragment != null) {
|
||||
HabitItemRecyclerViewAdapter adapter =(HabitItemRecyclerViewAdapter)fragment.mAdapter;
|
||||
adapter.dailyResetOffset = User.getPreferences().getDayStart();
|
||||
}
|
||||
updateHeader();
|
||||
updateSidebar();
|
||||
displayDeathDialogIfNeeded();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// Filter Tags
|
||||
|
||||
public void FillTagFilterDrawer(List<Tag> tagList) {
|
||||
filterDrawer.removeAllItems();
|
||||
filterDrawer.addItems(
|
||||
new SectionDrawerItem().withName("Filter by Tag"),
|
||||
new EditTextDrawer()
|
||||
);
|
||||
|
||||
for (Tag t : tagList) {
|
||||
filterDrawer.addItem(new SwitchDrawerItem()
|
||||
.withName(t.getName())
|
||||
.withTag(t)
|
||||
.withDescription("" + t.getTasks().size())
|
||||
.withOnCheckedChangeListener(this)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Updates concerned tags.
|
||||
*/
|
||||
public void updateTags(List<TaskTag> tags) {
|
||||
Log.d("tags", "Updating tags");
|
||||
List<IDrawerItem> filters = filterDrawer.getDrawerItems();
|
||||
for (IDrawerItem filter : filters) {
|
||||
if (filter instanceof SwitchDrawerItem) {
|
||||
SwitchDrawerItem currentfilter = (SwitchDrawerItem) filter;
|
||||
Log.v("tags", "Tag " + currentfilter.getName());
|
||||
String tagId = ((Tag) currentfilter.getTag()).getId();
|
||||
for (TaskTag tag : tags) {
|
||||
Tag currentTag = tag.getTag();
|
||||
|
||||
|
||||
if (tagId != null && currentTag != null && tagId.equals(currentTag.getId())) {
|
||||
currentfilter.withDescription("" + (currentTag.getTasks().size() + 1));
|
||||
filterDrawer.updateItem(currentfilter);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// A Filter was checked
|
||||
|
||||
private Debounce filterChangedHandler = new Debounce(1500, 1000) {
|
||||
@Override
|
||||
public void execute() {
|
||||
ArrayList<String> tagList = new ArrayList<>();
|
||||
|
||||
for (Map.Entry<String, Boolean> f : tagFilterMap.entrySet()) {
|
||||
if (f.getValue()) {
|
||||
tagList.add(f.getKey());
|
||||
}
|
||||
}
|
||||
tagsHelper.setTags(tagList);
|
||||
EventBus.getDefault().post(new FilterTasksByTagsCommand());
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
private HashMap<String, Boolean> tagFilterMap = new HashMap<>();
|
||||
|
||||
@Override
|
||||
public void onCheckedChanged(IDrawerItem iDrawerItem, CompoundButton compoundButton, boolean b) {
|
||||
Tag t = (Tag) iDrawerItem.getTag();
|
||||
if (t != null) {
|
||||
tagFilterMap.put(t.getId(), b);
|
||||
filterChangedHandler.hit();
|
||||
showSnackbar(t.getName() + " : " + b);
|
||||
}
|
||||
}
|
||||
|
||||
private TransactionListener<HabitRPGUser> userTransactionListener = new TransactionListener<HabitRPGUser>() {
|
||||
@Override
|
||||
public void onResultReceived(HabitRPGUser habitRPGUser) {
|
||||
User = habitRPGUser;
|
||||
SetUserData();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onReady(BaseTransaction<HabitRPGUser> baseTransaction) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasResult(BaseTransaction<HabitRPGUser> baseTransaction, HabitRPGUser habitRPGUser) {
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
private void displayLevelUpDialog(int level) {
|
||||
SuppressedModals suppressedModals = User.getPreferences().getSuppressModals();
|
||||
if (suppressedModals != null) {
|
||||
if (suppressedModals.getLevelUp()) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
MaterialDialog dialog = new MaterialDialog.Builder(this)
|
||||
.title(R.string.levelup_header)
|
||||
.customView(R.layout.levelup_dialog, true)
|
||||
.positiveText(R.string.levelup_button)
|
||||
.positiveColorRes(R.color.brand_100)
|
||||
.build();
|
||||
|
||||
View customView = dialog.getCustomView();
|
||||
if (customView != null) {
|
||||
TextView detailView = (TextView)customView.findViewById(R.id.levelupDetail);
|
||||
detailView.setText(this.getString(R.string.levelup_detail, level));
|
||||
|
||||
ImageView avatarView = (ImageView)customView.findViewById(R.id.avatarView);
|
||||
UserPicture userPicture = new UserPicture(User, this, false, false);
|
||||
userPicture.setPictureOn(avatarView);
|
||||
}
|
||||
|
||||
dialog.show();
|
||||
}
|
||||
|
||||
private void displayDeathDialogIfNeeded() {
|
||||
|
||||
if (User.getStats().getHp() > 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (this.faintDialog == null) {
|
||||
final TaskActivity activity = this;
|
||||
this.faintDialog = new MaterialDialog.Builder(this)
|
||||
.title(R.string.faint_header)
|
||||
.customView(R.layout.faint_dialog, true)
|
||||
.positiveText(R.string.faint_button)
|
||||
.positiveColorRes(R.color.worse_100)
|
||||
.dismissListener(new DialogInterface.OnDismissListener() {
|
||||
@Override
|
||||
public void onDismiss(DialogInterface dialog) {
|
||||
faintDialog = null;
|
||||
mAPIHelper.reviveUser(new HabitRPGUserCallback(activity));
|
||||
}
|
||||
})
|
||||
.cancelListener(new DialogInterface.OnCancelListener() {
|
||||
@Override
|
||||
public void onCancel(DialogInterface dialog) {
|
||||
faintDialog = null;
|
||||
}
|
||||
})
|
||||
.build();
|
||||
|
||||
View customView = this.faintDialog.getCustomView();
|
||||
if (customView != null) {
|
||||
View hpBarView = customView.findViewById(R.id.hpBar);
|
||||
|
||||
ValueBarBinding hpBar = DataBindingUtil.bind(hpBarView);
|
||||
hpBar.setPartyMembers(true);
|
||||
AvatarWithBarsViewModel.setHpBarData(hpBar, User.getStats(), this);
|
||||
|
||||
ImageView avatarView = (ImageView)customView.findViewById(R.id.avatarView);
|
||||
UserPicture userPicture = new UserPicture(User, this, false, false);
|
||||
userPicture.setPictureOn(avatarView);
|
||||
}
|
||||
|
||||
this.faintDialog.show();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -1,132 +0,0 @@
|
|||
package com.habitrpg.android.habitica;
|
||||
|
||||
import android.graphics.Bitmap;
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.app.FragmentManager;
|
||||
import android.support.v4.app.FragmentTransaction;
|
||||
import android.support.v7.app.ActionBar;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
import android.view.MenuItem;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import com.habitrpg.android.habitica.events.ToggledInnStateEvent;
|
||||
import com.habitrpg.android.habitica.prefs.PrefsActivity;
|
||||
import com.habitrpg.android.habitica.ui.AvatarWithBarsViewModel;
|
||||
import com.habitrpg.android.habitica.ui.MainDrawerBuilder;
|
||||
import com.habitrpg.android.habitica.ui.fragments.ChatListFragment;
|
||||
import com.habitrpg.android.habitica.userpicture.UserPicture;
|
||||
import com.habitrpg.android.habitica.userpicture.UserPictureRunnable;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
|
||||
import com.mikepenz.materialdrawer.AccountHeader;
|
||||
import com.mikepenz.materialdrawer.Drawer;
|
||||
import com.mikepenz.materialdrawer.model.ProfileDrawerItem;
|
||||
import com.mikepenz.materialdrawer.model.interfaces.IProfile;
|
||||
import com.raizlabs.android.dbflow.sql.builder.Condition;
|
||||
import com.raizlabs.android.dbflow.sql.language.Select;
|
||||
|
||||
import butterknife.ButterKnife;
|
||||
import butterknife.InjectView;
|
||||
import de.greenrobot.event.EventBus;
|
||||
|
||||
public class TavernActivity extends AppCompatActivity {
|
||||
|
||||
@InjectView(R.id.toolbar)
|
||||
Toolbar toolbar;
|
||||
|
||||
@InjectView(R.id.avatar)
|
||||
ViewGroup avatarHeader;
|
||||
|
||||
private AvatarWithBarsViewModel avatarInHeader;
|
||||
private APIHelper mAPIHelper;
|
||||
private HabitRPGUser User;
|
||||
|
||||
private AccountHeader accountHeader;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_tavern);
|
||||
|
||||
ButterKnife.inject(this);
|
||||
|
||||
setSupportActionBar(toolbar);
|
||||
|
||||
// Receive Events
|
||||
EventBus.getDefault().register(this);
|
||||
|
||||
ActionBar actionBar = getSupportActionBar();
|
||||
|
||||
if (actionBar != null) {
|
||||
actionBar.setDisplayHomeAsUpEnabled(true);
|
||||
actionBar.setDisplayShowHomeEnabled(false);
|
||||
actionBar.setDisplayShowTitleEnabled(true);
|
||||
actionBar.setDisplayUseLogoEnabled(false);
|
||||
actionBar.setHomeButtonEnabled(false);
|
||||
|
||||
toolbar.setTitleTextColor(this.getResources().getColor(R.color.white));
|
||||
}
|
||||
|
||||
accountHeader = MainDrawerBuilder.CreateDefaultAccountHeader(this).build();
|
||||
|
||||
|
||||
avatarInHeader = new AvatarWithBarsViewModel(this, avatarHeader);
|
||||
|
||||
HostConfig hostConfig = PrefsActivity.fromContext(this);
|
||||
User = new Select().from(HabitRPGUser.class).where(Condition.column("id").eq(hostConfig.getUser())).querySingle();
|
||||
|
||||
avatarInHeader.updateData(User);
|
||||
updateSidebar();
|
||||
|
||||
mAPIHelper = new APIHelper(this, hostConfig);
|
||||
|
||||
setFragment(new ChatListFragment(this, "habitrpg", mAPIHelper, User, true));
|
||||
}
|
||||
|
||||
private void updateSidebar() {
|
||||
final IProfile profile = accountHeader.getProfiles().get(0);
|
||||
if (User.getAuthentication() != null) {
|
||||
if (User.getAuthentication().getLocalAuthentication() != null) {
|
||||
profile.withEmail(User.getAuthentication().getLocalAuthentication().getEmail());
|
||||
}
|
||||
} profile.withName(User.getProfile().getName());
|
||||
new UserPicture(User, this, true, false).setPictureWithRunnable(new UserPictureRunnable() {
|
||||
public void run(Bitmap avatar) {
|
||||
profile.withIcon(avatar);
|
||||
accountHeader.updateProfile(profile);
|
||||
}
|
||||
});
|
||||
accountHeader.updateProfile(profile);
|
||||
}
|
||||
|
||||
// This could be moved into an abstract BaseActivity
|
||||
// class for being re-used by several instances
|
||||
protected void setFragment(Fragment fragment) {
|
||||
FragmentManager fragmentManager = getSupportFragmentManager();
|
||||
FragmentTransaction fragmentTransaction =
|
||||
fragmentManager.beginTransaction();
|
||||
fragmentTransaction.replace(R.id.tavern_framelayout, fragment);
|
||||
fragmentTransaction.commit();
|
||||
}
|
||||
|
||||
public void onEvent(ToggledInnStateEvent evt) {
|
||||
avatarInHeader.updateData(User);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
// Handle action bar item clicks here. The action bar will
|
||||
// automatically handle clicks on the Home/Up button, so long
|
||||
// as you specify a parent activity in AndroidManifest.xml.
|
||||
int id = item.getItemId();
|
||||
|
||||
//noinspection SimplifiableIfStatement
|
||||
if (id == android.R.id.home) {
|
||||
finish();
|
||||
return true;
|
||||
}
|
||||
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
}
|
||||
|
|
@ -10,6 +10,7 @@ import android.view.LayoutInflater;
|
|||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import com.habitrpg.android.habitica.events.commands.CreateTagCommand;
|
||||
import com.habitrpg.android.habitica.helpers.TagsHelper;
|
||||
import com.habitrpg.android.habitica.ui.fragments.ChatListFragment;
|
||||
import com.mikepenz.materialdrawer.DrawerBuilder;
|
||||
|
|
@ -37,4 +38,9 @@ public class TavernFragment extends BaseFragment {
|
|||
fragmentTransaction.replace(R.id.tavern_framelayout, fragment);
|
||||
fragmentTransaction.commit();
|
||||
}
|
||||
|
||||
//we don't have custom tavern events right now.
|
||||
public void onEvent(CreateTagCommand event) {
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,11 +10,8 @@ import com.habitrpg.android.habitica.BaseFragment;
|
|||
import com.habitrpg.android.habitica.GemPurchaseActivity;
|
||||
import com.habitrpg.android.habitica.MainActivity;
|
||||
import com.habitrpg.android.habitica.PartyFragment;
|
||||
import com.habitrpg.android.habitica.TaskActivity;
|
||||
import com.habitrpg.android.habitica.PartyActivity;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.TasksFragment;
|
||||
import com.habitrpg.android.habitica.TavernActivity;
|
||||
import com.habitrpg.android.habitica.TavernFragment;
|
||||
import com.habitrpg.android.habitica.prefs.PrefsActivity;
|
||||
import com.mikepenz.materialdrawer.AccountHeader;
|
||||
|
|
@ -100,9 +97,8 @@ public class MainDrawerBuilder {
|
|||
.withOnDrawerItemClickListener(new Drawer.OnDrawerItemClickListener() {
|
||||
@Override
|
||||
public boolean onItemClick(View view, int position, IDrawerItem drawerItem) {
|
||||
// do something with the clicked item :D
|
||||
|
||||
BaseFragment fragment = null;
|
||||
Class newActivityClass = null;
|
||||
|
||||
switch (drawerItem.getIdentifier()) {
|
||||
case SIDEBAR_TASKS: {
|
||||
|
|
@ -117,12 +113,25 @@ public class MainDrawerBuilder {
|
|||
fragment = new TavernFragment();
|
||||
break;
|
||||
}
|
||||
case SIDEBAR_SETTINGS: {
|
||||
newActivityClass = PrefsActivity.class;
|
||||
break;
|
||||
}
|
||||
case SIDEBAR_ABOUT: {
|
||||
newActivityClass = AboutActivity.class;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (fragment != null) {
|
||||
fragment.fragmentSidebarPosition = position;
|
||||
activity.displayFragment(fragment);
|
||||
return false;
|
||||
}
|
||||
if (newActivityClass != null) {
|
||||
activity.startActivity(new Intent(activity, newActivityClass));
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
return true;
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ import android.widget.RemoteViews;
|
|||
|
||||
import com.habitrpg.android.habitica.APIHelper;
|
||||
import com.habitrpg.android.habitica.HostConfig;
|
||||
import com.habitrpg.android.habitica.TaskActivity;
|
||||
import com.habitrpg.android.habitica.MainActivity;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.callbacks.HabitRPGUserCallback;
|
||||
import com.habitrpg.android.habitica.prefs.PrefsActivity;
|
||||
|
|
@ -64,7 +64,7 @@ public class UpdateWidgetService extends Service implements HabitRPGUserCallback
|
|||
PendingIntent updateIntent = PendingIntent.getBroadcast(this, 0, clickIntent, PendingIntent.FLAG_UPDATE_CURRENT);
|
||||
remoteViews.setOnClickPendingIntent(R.id.BT_refresh, updateIntent);
|
||||
|
||||
Intent openAppIntent = new Intent(this.getApplicationContext(), TaskActivity.class);
|
||||
Intent openAppIntent = new Intent(this.getApplicationContext(), MainActivity.class);
|
||||
PendingIntent openApp = PendingIntent.getActivity(this, 0, openAppIntent, PendingIntent.FLAG_UPDATE_CURRENT);
|
||||
remoteViews.setOnClickPendingIntent(R.id.widget_main_view, openApp);
|
||||
appWidgetManager.updateAppWidget(widgetId, remoteViews);
|
||||
|
|
@ -95,7 +95,7 @@ public class UpdateWidgetService extends Service implements HabitRPGUserCallback
|
|||
remoteViews.setOnClickPendingIntent(R.id.BT_refresh, updateIntent);
|
||||
|
||||
//If user click on life and xp: open the app
|
||||
Intent openAppIntent = new Intent(this.getApplicationContext(), TaskActivity.class);
|
||||
Intent openAppIntent = new Intent(this.getApplicationContext(), MainActivity.class);
|
||||
PendingIntent openApp = PendingIntent.getActivity(this, 0, openAppIntent, PendingIntent.FLAG_UPDATE_CURRENT);
|
||||
remoteViews.setOnClickPendingIntent(R.id.LL_header, openApp);
|
||||
remoteViews.setOnClickPendingIntent(R.id.IMG_ProfilePicture, openApp);
|
||||
|
|
|
|||
Loading…
Reference in a new issue