diff --git a/Habitica/AndroidManifest.xml b/Habitica/AndroidManifest.xml
index 76d459508..377cca52e 100644
--- a/Habitica/AndroidManifest.xml
+++ b/Habitica/AndroidManifest.xml
@@ -84,23 +84,7 @@
android:parentActivityName=".MainActivity">
-
-
-
-
-
-
+ android:value=".MainActivity" />
+ tools:context=".MainActivity">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Habitica/res/layout/activity_tasks.xml b/Habitica/res/layout/activity_tasks.xml
deleted file mode 100644
index b8fb3b740..000000000
--- a/Habitica/res/layout/activity_tasks.xml
+++ /dev/null
@@ -1,171 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Habitica/res/layout/activity_tavern.xml b/Habitica/res/layout/activity_tavern.xml
deleted file mode 100644
index 2048ca7c0..000000000
--- a/Habitica/res/layout/activity_tavern.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Habitica/res/layout/value_bar.xml b/Habitica/res/layout/value_bar.xml
index 47a2f85d4..4a8936e29 100644
--- a/Habitica/res/layout/value_bar.xml
+++ b/Habitica/res/layout/value_bar.xml
@@ -42,14 +42,14 @@
android:orientation="horizontal">
+ android:scaleType="center"
+ android:contentDescription="Bar Icon" />
userTransactionListener = new TransactionListener() {
@@ -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);
+ }
}
diff --git a/Habitica/src/com/habitrpg/android/habitica/PartyActivity.java b/Habitica/src/com/habitrpg/android/habitica/PartyActivity.java
deleted file mode 100644
index f5300e5b6..000000000
--- a/Habitica/src/com/habitrpg/android/habitica/PartyActivity.java
+++ /dev/null
@@ -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() {
- @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 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
-}
diff --git a/Habitica/src/com/habitrpg/android/habitica/TaskActivity.java b/Habitica/src/com/habitrpg/android/habitica/TaskActivity.java
deleted file mode 100644
index 58903ee60..000000000
--- a/Habitica/src/com/habitrpg/android/habitica/TaskActivity.java
+++ /dev/null
@@ -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 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(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>() {
- @Override
- public void success(List 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(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() {
-
- @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>() {
- @Override
- public void success(List itemDatas, Response response) {
-
- // get itemdata list
- ArrayList itemKeys = new ArrayList();
- for (ItemData item : itemDatas) {
- itemKeys.add(item.key);
- }
- itemKeys.add("potion");
-
- contentCache.GetItemDataList(itemKeys, new ContentCache.GotContentEntryCallback>() {
- @Override
- public void GotObject(List obj) {
- ArrayList buyableItems = new ArrayList();
-
- 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 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 tags) {
- Log.d("tags", "Updating tags");
- List 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 tagList = new ArrayList<>();
-
- for (Map.Entry f : tagFilterMap.entrySet()) {
- if (f.getValue()) {
- tagList.add(f.getKey());
- }
- }
- tagsHelper.setTags(tagList);
- EventBus.getDefault().post(new FilterTasksByTagsCommand());
- }
- };
-
-
- private HashMap 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 userTransactionListener = new TransactionListener() {
- @Override
- public void onResultReceived(HabitRPGUser habitRPGUser) {
- User = habitRPGUser;
- SetUserData();
- }
-
- @Override
- public boolean onReady(BaseTransaction baseTransaction) {
- return true;
- }
-
- @Override
- public boolean hasResult(BaseTransaction 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();
- }
-
- }
-}
\ No newline at end of file
diff --git a/Habitica/src/com/habitrpg/android/habitica/TavernActivity.java b/Habitica/src/com/habitrpg/android/habitica/TavernActivity.java
deleted file mode 100644
index ba775d52b..000000000
--- a/Habitica/src/com/habitrpg/android/habitica/TavernActivity.java
+++ /dev/null
@@ -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);
- }
-}
diff --git a/Habitica/src/com/habitrpg/android/habitica/TavernFragment.java b/Habitica/src/com/habitrpg/android/habitica/TavernFragment.java
index efd35f13c..eac2ad2d7 100644
--- a/Habitica/src/com/habitrpg/android/habitica/TavernFragment.java
+++ b/Habitica/src/com/habitrpg/android/habitica/TavernFragment.java
@@ -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) {
+
+ }
}
diff --git a/Habitica/src/com/habitrpg/android/habitica/ui/MainDrawerBuilder.java b/Habitica/src/com/habitrpg/android/habitica/ui/MainDrawerBuilder.java
index d9314ade3..598d74b39 100644
--- a/Habitica/src/com/habitrpg/android/habitica/ui/MainDrawerBuilder.java
+++ b/Habitica/src/com/habitrpg/android/habitica/ui/MainDrawerBuilder.java
@@ -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;
diff --git a/Habitica/src/com/habitrpg/android/habitica/widget/UpdateWidgetService.java b/Habitica/src/com/habitrpg/android/habitica/widget/UpdateWidgetService.java
index d51924aa8..bcdc57f6d 100644
--- a/Habitica/src/com/habitrpg/android/habitica/widget/UpdateWidgetService.java
+++ b/Habitica/src/com/habitrpg/android/habitica/widget/UpdateWidgetService.java
@@ -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);