mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-05-20 04:39:04 +00:00
correct events for fragments
This commit is contained in:
parent
aa79010ea0
commit
2dddc93c39
12 changed files with 670 additions and 29 deletions
|
|
@ -81,7 +81,7 @@
|
|||
<activity
|
||||
android:name=".TaskFormActivity"
|
||||
android:theme="@style/AppThemeWithActionBarBlackText"
|
||||
android:parentActivityName=".TaskActivity">
|
||||
android:parentActivityName=".MainActivity">
|
||||
<meta-data
|
||||
android:name="android.support.PARENT_ACTIVITY"
|
||||
android:value=".TaskActivity" />
|
||||
|
|
@ -89,7 +89,7 @@
|
|||
<activity
|
||||
android:name=".TavernActivity"
|
||||
android:label="@string/title_activity_tavern"
|
||||
android:parentActivityName=".TaskActivity">
|
||||
android:parentActivityName=".MainActivity">
|
||||
<meta-data
|
||||
android:name="android.support.PARENT_ACTIVITY"
|
||||
android:value=".TaskActivity" />
|
||||
|
|
@ -97,7 +97,7 @@
|
|||
<activity
|
||||
android:name=".PartyActivity"
|
||||
android:label="@string/title_activity_party"
|
||||
android:parentActivityName=".TaskActivity">
|
||||
android:parentActivityName=".MainActivity">
|
||||
<meta-data
|
||||
android:name="android.support.PARENT_ACTIVITY"
|
||||
android:value=".TaskActivity" />
|
||||
|
|
@ -105,10 +105,10 @@
|
|||
<activity
|
||||
android:name=".GemPurchaseActivity"
|
||||
android:label="@string/title_activity_gem_purchase"
|
||||
android:parentActivityName=".TaskActivity">
|
||||
android:parentActivityName=".MainActivity">
|
||||
<meta-data
|
||||
android:name="android.support.PARENT_ACTIVITY"
|
||||
android:value=".TaskActivity" />
|
||||
android:value=".MainActivity" />
|
||||
</activity>
|
||||
|
||||
<activity android:name="com.facebook.FacebookActivity"
|
||||
|
|
|
|||
|
|
@ -1,5 +1,98 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/view_pager"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:fab="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
<android.support.v4.view.ViewPager
|
||||
android:id="@+id/view_pager"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
<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>
|
||||
</RelativeLayout>
|
||||
|
|
|
|||
5
Habitica/res/layout/fragment_tavern.xml
Normal file
5
Habitica/res/layout/fragment_tavern.xml
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/tavern.framelayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
|
|
@ -6,12 +6,13 @@
|
|||
<!-- Search, should appear as action button -->
|
||||
<item android:id="@+id/action_search"
|
||||
android:icon="@drawable/ic_action_filter_list"
|
||||
android:title="filter"
|
||||
android:title="@string/filter"
|
||||
app:showAsAction="ifRoom" />
|
||||
|
||||
<item
|
||||
android:id="@+id/action_reload"
|
||||
android:icon="@drawable/ic_refresh_white"
|
||||
android:title="@string/action_refresh"
|
||||
android:orderInCategory="103"
|
||||
app:showAsAction="ifRoom"
|
||||
/>
|
||||
|
|
|
|||
|
|
@ -173,4 +173,7 @@
|
|||
<string name="faint_penalty_body">You lost a Level, your Gold, and a piece of Equipment, but you can get them all back with hard work! Good luck--you\'ll do great.</string>
|
||||
<string name="faint_header">You ran out of Health!</string>
|
||||
<string name="faint_button"><![CDATA[Refill Health & Try Again]]></string>
|
||||
|
||||
|
||||
<string name="filter">Filter</string>
|
||||
</resources>
|
||||
|
|
@ -5,27 +5,65 @@ import android.os.Bundle;
|
|||
import android.support.design.widget.TabLayout;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
|
||||
|
||||
import butterknife.ButterKnife;
|
||||
import de.greenrobot.event.EventBus;
|
||||
|
||||
/**
|
||||
* Created by admin on 18/11/15.
|
||||
*/
|
||||
public abstract class BaseFragment extends Fragment {
|
||||
|
||||
public MainActivity activity;
|
||||
public TabLayout tabLayout;
|
||||
APIHelper mAPIHelper;
|
||||
protected HabitRPGUser user;
|
||||
public boolean usesTabLayout;
|
||||
|
||||
public void setUser(HabitRPGUser user) { this.user = user; }
|
||||
public void updateUserData(HabitRPGUser user) { this.user = user; }
|
||||
public void setTabLayout(TabLayout tabLayout) {}
|
||||
public void setTabLayout(TabLayout tabLayout) {
|
||||
this.tabLayout = tabLayout;
|
||||
}
|
||||
public void setActivity(MainActivity activity) {this.activity = activity; }
|
||||
@Override
|
||||
public void onAttach(Context context) {
|
||||
super.onAttach(context);
|
||||
this.activity = (MainActivity) getActivity();
|
||||
}
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState) {
|
||||
if (this.usesTabLayout) {
|
||||
tabLayout.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
tabLayout.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
// Receive Events
|
||||
EventBus.getDefault().register(this);
|
||||
|
||||
setHasOptionsMenu(true);
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
EventBus.getDefault().unregister(this);
|
||||
|
||||
super.onDestroy();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
|
||||
super.onCreateOptionsMenu(menu, inflater);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ import android.support.design.widget.CollapsingToolbarLayout;
|
|||
import android.support.design.widget.TabLayout;
|
||||
import android.support.v7.app.ActionBar;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
import android.view.Menu;
|
||||
import android.view.View;
|
||||
import android.widget.FrameLayout;
|
||||
import android.widget.TextView;
|
||||
|
|
@ -135,6 +136,11 @@ public class MainActivity extends InstabugAppCompatActivity implements HabitRPGU
|
|||
SetUserData();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCreateOptionsMenu(Menu menu) {
|
||||
return true;
|
||||
}
|
||||
|
||||
public void displayFragment(BaseFragment fragment) {
|
||||
fragment.setArguments(getIntent().getExtras());
|
||||
fragment.mAPIHelper = mAPIHelper;
|
||||
|
|
|
|||
|
|
@ -31,7 +31,6 @@ import retrofit.client.Response;
|
|||
*/
|
||||
public class PartyFragment extends BaseFragment {
|
||||
|
||||
public TabLayout tabLayout;
|
||||
public ViewPager viewPager;
|
||||
private Group group;
|
||||
private HashMap<Integer, Fragment> fragmentDictionary = new HashMap<>();
|
||||
|
|
@ -42,7 +41,8 @@ public class PartyFragment extends BaseFragment {
|
|||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState) {
|
||||
// Inflate the layout for this fragment
|
||||
this.usesTabLayout = true;
|
||||
super.onCreateView(inflater, container, savedInstanceState);
|
||||
View v = inflater.inflate(R.layout.fragment_party, container, false);
|
||||
|
||||
viewPager = (ViewPager) v.findViewById(R.id.view_pager);
|
||||
|
|
@ -88,12 +88,6 @@ public class PartyFragment extends BaseFragment {
|
|||
return v;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setTabLayout(TabLayout tabLayout) {
|
||||
this.tabLayout = tabLayout;
|
||||
this.tabLayout.removeAllTabs();
|
||||
}
|
||||
|
||||
public void setViewPagerAdapter() {
|
||||
android.support.v4.app.FragmentManager fragmentManager = getChildFragmentManager();
|
||||
|
||||
|
|
|
|||
|
|
@ -681,7 +681,6 @@ public class TaskActivity extends AvatarActivityBase implements HabitRPGUserCall
|
|||
@Override
|
||||
public void onCheckedChanged(IDrawerItem iDrawerItem, CompoundButton compoundButton, boolean b) {
|
||||
Tag t = (Tag) iDrawerItem.getTag();
|
||||
Log.w("Tags", "onCheckedChanged" + compoundButton.isChecked() + " : " + b);
|
||||
if (t != null) {
|
||||
tagFilterMap.put(t.getId(), b);
|
||||
filterChangedHandler.hit();
|
||||
|
|
|
|||
|
|
@ -1,30 +1,79 @@
|
|||
package com.habitrpg.android.habitica;
|
||||
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.databinding.DataBindingUtil;
|
||||
import android.os.Bundle;
|
||||
import android.support.design.widget.Snackbar;
|
||||
import android.support.design.widget.TabLayout;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.app.FragmentPagerAdapter;
|
||||
import android.support.v4.content.ContextCompat;
|
||||
import android.support.v4.view.ViewPager;
|
||||
import android.util.Log;
|
||||
import android.view.Gravity;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuInflater;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.CompoundButton;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.RadioGroup;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.afollestad.materialdialogs.MaterialDialog;
|
||||
import com.github.clans.fab.FloatingActionButton;
|
||||
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.HabitScoreEvent;
|
||||
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.BuyRewardCommand;
|
||||
import com.habitrpg.android.habitica.events.commands.CreateTagCommand;
|
||||
import com.habitrpg.android.habitica.events.commands.FilterTasksByTagsCommand;
|
||||
import com.habitrpg.android.habitica.events.commands.TaskCheckedCommand;
|
||||
import com.habitrpg.android.habitica.helpers.TagsHelper;
|
||||
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.interfaces.OnCheckedChangeListener;
|
||||
import com.mikepenz.materialdrawer.model.SectionDrawerItem;
|
||||
import com.mikepenz.materialdrawer.model.SwitchDrawerItem;
|
||||
import com.mikepenz.materialdrawer.model.interfaces.IDrawerItem;
|
||||
import com.raizlabs.android.dbflow.runtime.FlowContentObserver;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import butterknife.ButterKnife;
|
||||
import butterknife.InjectView;
|
||||
import butterknife.OnClick;
|
||||
import de.greenrobot.event.EventBus;
|
||||
import retrofit.Callback;
|
||||
import retrofit.RetrofitError;
|
||||
import retrofit.client.Response;
|
||||
|
|
@ -32,13 +81,22 @@ import retrofit.client.Response;
|
|||
/**
|
||||
* Created by admin on 18/11/15.
|
||||
*/
|
||||
public class TasksFragment extends BaseFragment {
|
||||
public class TasksFragment extends BaseFragment implements TaskScoringCallback.OnTaskScored, OnCheckedChangeListener {
|
||||
|
||||
public enum SnackbarDisplayType {
|
||||
NORMAL, FAILURE, DROP
|
||||
}
|
||||
|
||||
static final int TASK_CREATED_RESULT = 1;
|
||||
static final int TASK_UPDATED_RESULT = 2;
|
||||
|
||||
public TabLayout tabLayout;
|
||||
public ViewPager viewPager;
|
||||
|
||||
Drawer filterDrawer;
|
||||
|
||||
private MaterialDialog faintDialog;
|
||||
|
||||
FloatingActionMenu floatingMenu;
|
||||
|
||||
Map<Integer, TaskRecyclerViewFragment> ViewFragmentsDictionary = new HashMap<>();
|
||||
|
||||
private TagsHelper tagsHelper;
|
||||
|
|
@ -49,18 +107,44 @@ public class TasksFragment extends BaseFragment {
|
|||
contentCache = new ContentCache(mAPIHelper.apiService);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setTabLayout(TabLayout tabLayout) {
|
||||
this.tabLayout = tabLayout;
|
||||
}
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState) {
|
||||
// Inflate the layout for this fragment
|
||||
this.usesTabLayout = true;
|
||||
super.onCreateView(inflater, container, savedInstanceState);
|
||||
View v = inflater.inflate(R.layout.fragment_tasks, container, false);
|
||||
|
||||
|
||||
viewPager = (ViewPager) v.findViewById(R.id.view_pager);
|
||||
floatingMenu = (FloatingActionMenu)v.findViewById(R.id.fab_menu);
|
||||
FloatingActionButton habit_fab = (FloatingActionButton) v.findViewById(R.id.fab_new_habit);
|
||||
habit_fab.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
openNewTaskActivity("habit");
|
||||
}
|
||||
});
|
||||
FloatingActionButton daily_fab = (FloatingActionButton) v.findViewById(R.id.fab_new_daily);
|
||||
daily_fab.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
openNewTaskActivity("daily");
|
||||
}
|
||||
});
|
||||
FloatingActionButton todo_fab = (FloatingActionButton) v.findViewById(R.id.fab_new_todo);
|
||||
todo_fab.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
openNewTaskActivity("todo");
|
||||
}
|
||||
});
|
||||
FloatingActionButton reward_fab = (FloatingActionButton) v.findViewById(R.id.fab_new_reward);
|
||||
reward_fab.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
openNewTaskActivity("reward");
|
||||
}
|
||||
});
|
||||
|
||||
filterDrawer = new DrawerBuilder()
|
||||
.withActivity(activity)
|
||||
|
|
@ -76,6 +160,30 @@ public class TasksFragment extends BaseFragment {
|
|||
return v;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
|
||||
inflater.inflate(R.menu.menu_main_activity, menu);
|
||||
}
|
||||
|
||||
@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(activity));
|
||||
return true;
|
||||
}
|
||||
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
|
||||
public void loadTaskLists() {
|
||||
android.support.v4.app.FragmentManager fragmentManager = getChildFragmentManager();
|
||||
|
||||
|
|
@ -199,6 +307,7 @@ public class TasksFragment extends BaseFragment {
|
|||
public void updateUserData(HabitRPGUser user) {
|
||||
super.updateUserData(user);
|
||||
if (this.user != null) {
|
||||
FillTagFilterDrawer(user.getTags());
|
||||
TaskRecyclerViewFragment fragment = ViewFragmentsDictionary.get(2);
|
||||
if (fragment != null) {
|
||||
HabitItemRecyclerViewAdapter adapter =(HabitItemRecyclerViewAdapter)fragment.mAdapter;
|
||||
|
|
@ -206,4 +315,352 @@ public class TasksFragment extends BaseFragment {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
@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() {
|
||||
|
||||
}
|
||||
|
||||
|
||||
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(activity, 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(activity, 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(activity, 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(activity, 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);
|
||||
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
//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(activity));
|
||||
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);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
static public Double round(Double value, int n) {
|
||||
return (Math.round(value * Math.pow(10, n))) / (Math.pow(10, n));
|
||||
}
|
||||
|
||||
private void displayDeathDialogIfNeeded() {
|
||||
|
||||
if (user.getStats().getHp() > 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (this.faintDialog == null) {
|
||||
this.faintDialog = new MaterialDialog.Builder(activity)
|
||||
.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(), activity);
|
||||
|
||||
ImageView avatarView = (ImageView)customView.findViewById(R.id.avatarView);
|
||||
UserPicture userPicture = new UserPicture(user, activity, false, false);
|
||||
userPicture.setPictureOn(avatarView);
|
||||
}
|
||||
|
||||
this.faintDialog.show();
|
||||
}
|
||||
}
|
||||
|
||||
private void displayLevelUpDialog(int level) {
|
||||
SuppressedModals suppressedModals = user.getPreferences().getSuppressModals();
|
||||
if (suppressedModals != null) {
|
||||
if (suppressedModals.getLevelUp()) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
MaterialDialog dialog = new MaterialDialog.Builder(activity)
|
||||
.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, activity, false, false);
|
||||
userPicture.setPictureOn(avatarView);
|
||||
}
|
||||
|
||||
dialog.show();
|
||||
}
|
||||
|
||||
|
||||
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)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
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<>();
|
||||
|
||||
/*
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,40 @@
|
|||
package com.habitrpg.android.habitica;
|
||||
|
||||
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.v4.view.ViewPager;
|
||||
import android.view.Gravity;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import com.habitrpg.android.habitica.helpers.TagsHelper;
|
||||
import com.habitrpg.android.habitica.ui.fragments.ChatListFragment;
|
||||
import com.mikepenz.materialdrawer.DrawerBuilder;
|
||||
|
||||
/**
|
||||
* Created by viirus on 19/11/15.
|
||||
*/
|
||||
public class TavernFragment extends BaseFragment {
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState) {
|
||||
super.onCreateView(inflater, container, savedInstanceState);
|
||||
View v = inflater.inflate(R.layout.fragment_tavern, container, false);
|
||||
|
||||
setFragment(new ChatListFragment(activity, "habitrpg", mAPIHelper, user, true));
|
||||
|
||||
return v;
|
||||
}
|
||||
|
||||
protected void setFragment(Fragment fragment) {
|
||||
FragmentManager fragmentManager = getChildFragmentManager();
|
||||
FragmentTransaction fragmentTransaction =
|
||||
fragmentManager.beginTransaction();
|
||||
fragmentTransaction.replace(R.id.tavern_framelayout, fragment);
|
||||
fragmentTransaction.commit();
|
||||
}
|
||||
}
|
||||
|
|
@ -15,6 +15,7 @@ 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;
|
||||
import com.mikepenz.materialdrawer.AccountHeaderBuilder;
|
||||
|
|
@ -112,6 +113,10 @@ public class MainDrawerBuilder {
|
|||
fragment = new PartyFragment();
|
||||
break;
|
||||
}
|
||||
case SIDEBAR_TAVERN: {
|
||||
fragment = new TavernFragment();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (fragment != null) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue