mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-07-14 02:01:56 +00:00
use the "daily due default view" setting
This commit is contained in:
parent
b3b84b193b
commit
cc40faeda7
12 changed files with 142 additions and 109 deletions
1
Habitica/assets/migrations/Habitica/35.sql
Normal file
1
Habitica/assets/migrations/Habitica/35.sql
Normal file
|
|
@ -0,0 +1 @@
|
|||
ALTER TABLE Preferences ADD COLUMN dailyDueDefaultView bool;
|
||||
|
|
@ -7,7 +7,7 @@ public class HabitDatabase {
|
|||
|
||||
public static final String NAME = "Habitica";
|
||||
|
||||
public static final int VERSION = 34;
|
||||
public static final int VERSION = 35;
|
||||
|
||||
public HabitDatabase() {
|
||||
super();
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ public class TaskFilterHelper {
|
|||
}
|
||||
|
||||
public int howMany(String type) {
|
||||
return this.tagsId.size() + (activeFilters.get(type) != null ? 1 : 0);
|
||||
return this.tagsId.size() + (activeFilters.get(type) != null || Task.FILTER_ACTIVE.equals(activeFilters.get(type)) ? 1 : 0);
|
||||
}
|
||||
|
||||
public List<String> getTags() {
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ package com.habitrpg.android.habitica.ui.activities;
|
|||
|
||||
import android.appwidget.AppWidgetManager;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.pm.PackageInfo;
|
||||
|
|
@ -26,8 +27,10 @@ import android.support.v4.view.GravityCompat;
|
|||
import android.support.v4.widget.DrawerLayout;
|
||||
import android.support.v7.app.AlertDialog;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
import android.util.DisplayMetrics;
|
||||
import android.util.Log;
|
||||
import android.util.TypedValue;
|
||||
import android.view.Display;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
|
@ -242,7 +245,6 @@ public class MainActivity extends BaseActivity implements Action1<Throwable>, Ha
|
|||
private AvatarWithBarsViewModel avatarInHeader;
|
||||
private AlertDialog faintDialog;
|
||||
private AvatarView sideAvatarView;
|
||||
private AvatarView dialogAvatarView;
|
||||
private Date lastSync;
|
||||
private TutorialView activeTutorialView;
|
||||
private boolean isloadingContent;
|
||||
|
|
@ -325,15 +327,6 @@ public class MainActivity extends BaseActivity implements Action1<Throwable>, Ha
|
|||
return result;
|
||||
}
|
||||
|
||||
private int getNavigationBarHeight() {
|
||||
int result = 0;
|
||||
int resourceId = getResources().getIdentifier("navigation_bar_height", "dimen", "android");
|
||||
if (resourceId > 0) {
|
||||
result = getResources().getDimensionPixelSize(resourceId);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void injectActivity(AppComponent component) {
|
||||
component.inject(this);
|
||||
|
|
@ -374,9 +367,7 @@ public class MainActivity extends BaseActivity implements Action1<Throwable>, Ha
|
|||
AlertDialog dialog = new AlertDialog.Builder(MainActivity.this)
|
||||
.setTitle(getString(R.string.warning))
|
||||
.setMessage(R.string.dont_keep_activities_warning)
|
||||
.setNeutralButton(R.string.close, (warningDialog, which) -> {
|
||||
warningDialog.dismiss();
|
||||
})
|
||||
.setNeutralButton(R.string.close, (warningDialog, which) -> warningDialog.dismiss())
|
||||
.setPositiveButton(R.string.open_settings, (hatchingDialog, which) -> {
|
||||
showDeveloperOptionsScreen();
|
||||
hatchingDialog.dismiss();
|
||||
|
|
@ -1113,9 +1104,7 @@ public class MainActivity extends BaseActivity implements Action1<Throwable>, Ha
|
|||
);
|
||||
} else {
|
||||
buyRewardUseCase.observable(new BuyRewardUseCase.RequestValues(event.Reward))
|
||||
.subscribe(res -> {
|
||||
onTaskDataReceived(res, event.Reward);
|
||||
}, error -> {
|
||||
.subscribe(res -> onTaskDataReceived(res, event.Reward), error -> {
|
||||
});
|
||||
}
|
||||
|
||||
|
|
@ -1139,17 +1128,15 @@ public class MainActivity extends BaseActivity implements Action1<Throwable>, Ha
|
|||
@Subscribe
|
||||
public void openMysteryItem(OpenMysteryItemEvent event) {
|
||||
apiClient.openMysteryItem()
|
||||
.subscribe(mysteryItem -> {
|
||||
apiClient.retrieveUser(false)
|
||||
.subscribe(new HabitRPGUserCallback(user1 -> {
|
||||
OpenedMysteryItemEvent openedEvent = new OpenedMysteryItemEvent();
|
||||
openedEvent.numberLeft = user1.getPurchased().getPlan().mysteryItems.size();
|
||||
openedEvent.mysteryItem = mysteryItem;
|
||||
EventBus.getDefault().post(openedEvent);
|
||||
MainActivity.this.onUserReceived(user1);
|
||||
}), throwable -> {
|
||||
});
|
||||
}, throwable -> {
|
||||
.subscribe(mysteryItem -> apiClient.retrieveUser(false)
|
||||
.subscribe(new HabitRPGUserCallback(user1 -> {
|
||||
OpenedMysteryItemEvent openedEvent = new OpenedMysteryItemEvent();
|
||||
openedEvent.numberLeft = user1.getPurchased().getPlan().mysteryItems.size();
|
||||
openedEvent.mysteryItem = mysteryItem;
|
||||
EventBus.getDefault().post(openedEvent);
|
||||
MainActivity.this.onUserReceived(user1);
|
||||
}), throwable -> {
|
||||
}), throwable -> {
|
||||
});
|
||||
}
|
||||
|
||||
|
|
@ -1198,15 +1185,13 @@ public class MainActivity extends BaseActivity implements Action1<Throwable>, Ha
|
|||
AlertDialog dialog = new AlertDialog.Builder(MainActivity.this)
|
||||
.setTitle(getString(R.string.hatched_pet_title, potionName, eggName))
|
||||
.setView(petWrapper)
|
||||
.setPositiveButton(R.string.close, (hatchingDialog, which) -> {
|
||||
hatchingDialog.dismiss();
|
||||
})
|
||||
.setPositiveButton(R.string.close, (hatchingDialog, which) -> hatchingDialog.dismiss())
|
||||
.setNeutralButton(R.string.share, (hatchingDialog, which) -> {
|
||||
ShareEvent event1 = new ShareEvent();
|
||||
event1.sharedMessage = getString(R.string.share_hatched, potionName, eggName) + " https://habitica.com/social/hatch-pet";
|
||||
Bitmap sharedImage = Bitmap.createBitmap(140, 140, Bitmap.Config.ARGB_8888);
|
||||
Canvas canvas = new Canvas(sharedImage);
|
||||
canvas.drawColor(getResources().getColor(R.color.brand_300));
|
||||
canvas.drawColor(ContextCompat.getColor(this, R.color.brand_300));
|
||||
petImageView.getDrawable().draw(canvas);
|
||||
event1.shareImage = sharedImage;
|
||||
EventBus.getDefault().post(event1);
|
||||
|
|
@ -1249,7 +1234,7 @@ public class MainActivity extends BaseActivity implements Action1<Throwable>, Ha
|
|||
event1.sharedMessage = getString(R.string.share_raised, colorName, animalName) + " https://habitica.com/social/raise-pet";
|
||||
Bitmap sharedImage = Bitmap.createBitmap(99, 99, Bitmap.Config.ARGB_8888);
|
||||
Canvas canvas = new Canvas(sharedImage);
|
||||
canvas.drawColor(getResources().getColor(R.color.brand_300));
|
||||
canvas.drawColor(ContextCompat.getColor(this, R.color.brand_300));
|
||||
mountImageView.getDrawable().draw(canvas);
|
||||
event1.shareImage = sharedImage;
|
||||
EventBus.getDefault().post(event1);
|
||||
|
|
@ -1322,7 +1307,7 @@ public class MainActivity extends BaseActivity implements Action1<Throwable>, Ha
|
|||
hpBar.setPartyMembers(true);
|
||||
AvatarWithBarsViewModel.setHpBarData(hpBar, user.getStats(), this);
|
||||
|
||||
dialogAvatarView = (AvatarView) customView.findViewById(R.id.avatarView);
|
||||
AvatarView dialogAvatarView = (AvatarView) customView.findViewById(R.id.avatarView);
|
||||
dialogAvatarView.setUser(user);
|
||||
}
|
||||
|
||||
|
|
@ -1542,15 +1527,6 @@ public class MainActivity extends BaseActivity implements Action1<Throwable>, Ha
|
|||
}
|
||||
}
|
||||
|
||||
public void closeDrawer(int gravity) {
|
||||
this.drawer.closeDrawer();
|
||||
}
|
||||
|
||||
public void openDrawer(int gravity) {
|
||||
EventBus.getDefault().post(new ToggledEditTagsEvent(false));
|
||||
this.drawer.openDrawer();
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onEvent(OpenFullProfileCommand cmd) {
|
||||
if (cmd.MemberId.equals("system"))
|
||||
|
|
|
|||
|
|
@ -154,12 +154,20 @@ public class CustomizationSetupAdapter extends RecyclerView.Adapter<RecyclerView
|
|||
imageView.setImageDrawable(null);
|
||||
}
|
||||
textView.setText(customization.text);
|
||||
if (isCustomizationActive(customization)) {
|
||||
imageView.setBackgroundResource(R.drawable.setup_customization_bg_selected);
|
||||
textView.setTextColor(ContextCompat.getColor(context, R.color.white));
|
||||
if ("flowers".equals(customization.subcategory)) {
|
||||
if (isCustomizationActive(customization)) {
|
||||
imageView.setBackgroundResource(R.drawable.setup_customization_flower_bg_selected);
|
||||
} else {
|
||||
imageView.setBackgroundResource(R.drawable.setup_customization_flower_bg);
|
||||
}
|
||||
} else {
|
||||
imageView.setBackgroundResource(R.drawable.setup_customization_bg);
|
||||
textView.setTextColor(ContextCompat.getColor(context, R.color.white_50_alpha));
|
||||
if (isCustomizationActive(customization)) {
|
||||
imageView.setBackgroundResource(R.drawable.setup_customization_bg_selected);
|
||||
textView.setTextColor(ContextCompat.getColor(context, R.color.white));
|
||||
} else {
|
||||
imageView.setBackgroundResource(R.drawable.setup_customization_bg);
|
||||
textView.setTextColor(ContextCompat.getColor(context, R.color.white_50_alpha));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -167,7 +175,11 @@ public class CustomizationSetupAdapter extends RecyclerView.Adapter<RecyclerView
|
|||
public void onClick(View v) {
|
||||
if (customization.path.equals("glasses")) {
|
||||
EquipCommand command = new EquipCommand();
|
||||
command.key = customization.key;
|
||||
if (customization.key.length() == 0) {
|
||||
command.key = user.getItems().getGear().getEquipped().getEyeWear();
|
||||
} else {
|
||||
command.key = customization.key;
|
||||
}
|
||||
command.type = "equipped";
|
||||
EventBus.getDefault().post(command);
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ import com.raizlabs.android.dbflow.sql.language.Select;
|
|||
|
||||
import android.content.Context;
|
||||
import android.databinding.ObservableArrayList;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
|
|
@ -40,7 +41,7 @@ public abstract class BaseTasksRecyclerViewAdapter<VH extends BaseTaskViewHolder
|
|||
private TaskFilterHelper taskFilterHelper;
|
||||
|
||||
public BaseTasksRecyclerViewAdapter(String taskType, TaskFilterHelper taskFilterHelper, int layoutResource,
|
||||
Context newContext, String userID) {
|
||||
Context newContext, @Nullable String userID) {
|
||||
this.setHasStableIds(true);
|
||||
this.taskType = taskType;
|
||||
this.context = newContext.getApplicationContext();
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ public class RewardsRecyclerViewAdapter extends BaseTasksRecyclerViewAdapter<Rew
|
|||
private ApiClient apiClient;
|
||||
|
||||
public RewardsRecyclerViewAdapter(String taskType, TaskFilterHelper taskFilterHelper, int layoutResource, Context newContext, HabitRPGUser user, ApiClient apiClient) {
|
||||
super(taskType, taskFilterHelper, layoutResource, newContext, user.getId());
|
||||
super(taskType, taskFilterHelper, layoutResource, newContext, user != null ? user.getId() : null);
|
||||
this.user = user;
|
||||
this.apiClient = apiClient;
|
||||
this.contentCache = new ContentCache(apiClient);
|
||||
|
|
@ -40,7 +40,7 @@ public class RewardsRecyclerViewAdapter extends BaseTasksRecyclerViewAdapter<Rew
|
|||
return new RewardViewHolder(getContentView(parent));
|
||||
}
|
||||
|
||||
public void loadEquipmentRewards() {
|
||||
private void loadEquipmentRewards() {
|
||||
if (apiClient != null) {
|
||||
apiClient.getInventoryBuyableGear()
|
||||
|
||||
|
|
@ -54,9 +54,9 @@ public class RewardsRecyclerViewAdapter extends BaseTasksRecyclerViewAdapter<Rew
|
|||
if (user.getFlags().getArmoireEnabled()) {
|
||||
itemKeys.add("armoire");
|
||||
}
|
||||
return Observable.create((Observable.OnSubscribe<List<Task>>) subscriber -> {
|
||||
contentCache.getItemDataList(itemKeys, obj -> {
|
||||
ArrayList<Task> buyableItems = new ArrayList<>();
|
||||
return Observable.create((Observable.OnSubscribe<List<Task>>) subscriber -> contentCache.getItemDataList(itemKeys, obj -> {
|
||||
ArrayList<Task> buyableItems = new ArrayList<>();
|
||||
if (obj != null) {
|
||||
for (ItemData item : obj) {
|
||||
Task reward = new Task();
|
||||
reward.text = item.text;
|
||||
|
|
@ -66,7 +66,7 @@ public class RewardsRecyclerViewAdapter extends BaseTasksRecyclerViewAdapter<Rew
|
|||
reward.specialTag = "item";
|
||||
reward.setId(item.key);
|
||||
|
||||
if (item.key.equals("armoire")) {
|
||||
if ("armoire".equals(item.key)) {
|
||||
if (user.getFlags().getArmoireEmpty()) {
|
||||
reward.notes = context.getResources().getString(R.string.armoireNotesEmpty);
|
||||
} else {
|
||||
|
|
@ -81,10 +81,10 @@ public class RewardsRecyclerViewAdapter extends BaseTasksRecyclerViewAdapter<Rew
|
|||
|
||||
buyableItems.add(reward);
|
||||
}
|
||||
subscriber.onNext(buyableItems);
|
||||
subscriber.onCompleted();
|
||||
});
|
||||
});
|
||||
}
|
||||
subscriber.onNext(buyableItems);
|
||||
subscriber.onCompleted();
|
||||
}));
|
||||
})
|
||||
.subscribe(items -> {
|
||||
this.filteredContent.addAll(items);
|
||||
|
|
|
|||
|
|
@ -17,13 +17,14 @@ import android.widget.CheckBox;
|
|||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import butterknife.OnClick;
|
||||
import rx.functions.Action1;
|
||||
|
||||
class ChallegeFilterDialogHolder {
|
||||
class ChallengeFilterDialogHolder {
|
||||
|
||||
@BindView(R.id.challenge_filter_recycler_view)
|
||||
RecyclerView groupRecyclerView;
|
||||
|
|
@ -51,7 +52,7 @@ class ChallegeFilterDialogHolder {
|
|||
private ChallengesFilterRecyclerViewAdapter adapter;
|
||||
|
||||
|
||||
private ChallegeFilterDialogHolder(View view, Activity context) {
|
||||
private ChallengeFilterDialogHolder(View view, Activity context) {
|
||||
this.context = context;
|
||||
ButterKnife.bind(this, view);
|
||||
}
|
||||
|
|
@ -61,12 +62,12 @@ class ChallegeFilterDialogHolder {
|
|||
Action1<ChallengeFilterOptions> selectedGroupsCallback) {
|
||||
View dialogLayout = activity.getLayoutInflater().inflate(R.layout.dialog_challenge_filter, null);
|
||||
|
||||
ChallegeFilterDialogHolder challegeFilterDialogHolder = new ChallegeFilterDialogHolder(dialogLayout, activity);
|
||||
ChallengeFilterDialogHolder challengeFilterDialogHolder = new ChallengeFilterDialogHolder(dialogLayout, activity);
|
||||
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(activity)
|
||||
.setView(dialogLayout);
|
||||
|
||||
challegeFilterDialogHolder.bind(builder.show(), challengesViewed, currentFilter, selectedGroupsCallback);
|
||||
challengeFilterDialogHolder.bind(builder.show(), challengesViewed, currentFilter, selectedGroupsCallback);
|
||||
}
|
||||
|
||||
public void bind(AlertDialog dialog, List<Challenge> challengesViewed,
|
||||
|
|
@ -97,16 +98,19 @@ class ChallegeFilterDialogHolder {
|
|||
}
|
||||
|
||||
private Collection<Group> getGroups(@Nullable List<Challenge> challenges){
|
||||
HashMap<String, Group> groupMap = new HashMap<>();
|
||||
Map<String, Group> groupMap = new HashMap<>();
|
||||
|
||||
if (challenges != null) {
|
||||
challenges.stream().filter(c -> !groupMap.containsKey(c.groupName)).forEach(c -> {
|
||||
Group g = new Group();
|
||||
g.id = c.groupId;
|
||||
g.name = c.groupName;
|
||||
for (Challenge challenge : challenges) {
|
||||
if (groupMap.containsKey(challenge.groupName)) {
|
||||
continue;
|
||||
}
|
||||
Group group = new Group();
|
||||
group.id = challenge.groupId;
|
||||
group.name = challenge.groupName;
|
||||
|
||||
groupMap.put(c.groupName, g);
|
||||
});
|
||||
groupMap.put(challenge.groupName, group);
|
||||
}
|
||||
}
|
||||
|
||||
return groupMap.values();
|
||||
|
|
@ -10,7 +10,6 @@ import android.view.View;
|
|||
import android.view.ViewGroup;
|
||||
import android.widget.LinearLayout;
|
||||
|
||||
import com.habitrpg.android.habitica.HabiticaApplication;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.components.AppComponent;
|
||||
import com.habitrpg.android.habitica.ui.adapter.social.ChallengesListViewAdapter;
|
||||
|
|
@ -124,7 +123,7 @@ public class ChallengeListFragment extends BaseMainFragment implements SwipeRefr
|
|||
|
||||
challengeFilterLayout.setVisibility(withFilter?View.VISIBLE:View.GONE);
|
||||
challengeFilterLayout.setClickable(true);
|
||||
challengeFilterLayout.setOnClickListener(view -> ChallegeFilterDialogHolder.showDialog(getActivity(), currentChallengesInView, lastFilterOptions, filterOptions -> {
|
||||
challengeFilterLayout.setOnClickListener(view -> ChallengeFilterDialogHolder.showDialog(getActivity(), currentChallengesInView, lastFilterOptions, filterOptions -> {
|
||||
challengeAdapter.setFilterByGroups(filterOptions);
|
||||
this.lastFilterOptions = filterOptions;
|
||||
}));
|
||||
|
|
|
|||
|
|
@ -127,6 +127,12 @@ public class TaskRecyclerViewFragment extends BaseFragment implements View.OnCli
|
|||
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
||||
super.onCreateView(inflater, container, savedInstanceState);
|
||||
|
||||
if (classType.equals(Task.TYPE_DAILY)) {
|
||||
if (user.getPreferences().getDailyDueDefaultView()) {
|
||||
taskFilterHelper.setActiveFilter(Task.TYPE_DAILY, Task.FILTER_ACTIVE);
|
||||
}
|
||||
}
|
||||
|
||||
mItemTouchCallback = new ItemTouchHelper.Callback() {
|
||||
private Integer mFromPosition = null;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,28 +1,5 @@
|
|||
package com.habitrpg.android.habitica.ui.fragments.tasks;
|
||||
|
||||
import com.github.clans.fab.FloatingActionButton;
|
||||
import com.github.clans.fab.FloatingActionMenu;
|
||||
import com.habitrpg.android.habitica.HabiticaApplication;
|
||||
import com.habitrpg.android.habitica.HabiticaBaseApplication;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.components.AppComponent;
|
||||
import com.habitrpg.android.habitica.events.TaskSaveEvent;
|
||||
import com.habitrpg.android.habitica.events.TaskTappedEvent;
|
||||
import com.habitrpg.android.habitica.events.commands.AddNewTaskCommand;
|
||||
import com.habitrpg.android.habitica.events.commands.RefreshUserCommand;
|
||||
import com.habitrpg.android.habitica.helpers.TaskFilterHelper;
|
||||
import com.habitrpg.android.habitica.ui.activities.MainActivity;
|
||||
import com.habitrpg.android.habitica.ui.activities.TaskFormActivity;
|
||||
import com.habitrpg.android.habitica.ui.adapter.tasks.BaseTasksRecyclerViewAdapter;
|
||||
import com.habitrpg.android.habitica.ui.adapter.tasks.DailiesRecyclerViewHolder;
|
||||
import com.habitrpg.android.habitica.ui.adapter.tasks.SortableTasksRecyclerViewAdapter;
|
||||
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment;
|
||||
import com.habitrpg.android.habitica.ui.views.tasks.TaskFilterDialog;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task;
|
||||
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.os.AsyncTask;
|
||||
|
|
@ -43,8 +20,34 @@ import android.view.ViewGroup;
|
|||
import android.widget.RelativeLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.github.clans.fab.FloatingActionButton;
|
||||
import com.github.clans.fab.FloatingActionMenu;
|
||||
import com.habitrpg.android.habitica.HabiticaApplication;
|
||||
import com.habitrpg.android.habitica.HabiticaBaseApplication;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.components.AppComponent;
|
||||
import com.habitrpg.android.habitica.events.TaskSaveEvent;
|
||||
import com.habitrpg.android.habitica.events.TaskTappedEvent;
|
||||
import com.habitrpg.android.habitica.events.commands.AddNewTaskCommand;
|
||||
import com.habitrpg.android.habitica.events.commands.RefreshUserCommand;
|
||||
import com.habitrpg.android.habitica.events.commands.UpdateUserCommand;
|
||||
import com.habitrpg.android.habitica.helpers.TaskFilterHelper;
|
||||
import com.habitrpg.android.habitica.ui.activities.MainActivity;
|
||||
import com.habitrpg.android.habitica.ui.activities.TaskFormActivity;
|
||||
import com.habitrpg.android.habitica.ui.adapter.tasks.BaseTasksRecyclerViewAdapter;
|
||||
import com.habitrpg.android.habitica.ui.adapter.tasks.DailiesRecyclerViewHolder;
|
||||
import com.habitrpg.android.habitica.ui.adapter.tasks.SortableTasksRecyclerViewAdapter;
|
||||
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment;
|
||||
import com.habitrpg.android.habitica.ui.views.tasks.TaskFilterDialog;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Locale;
|
||||
import java.util.Objects;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
|
|
@ -81,20 +84,20 @@ public class TasksFragment extends BaseMainFragment {
|
|||
|
||||
viewPager = (ViewPager) v.findViewById(R.id.view_pager);
|
||||
View view = inflater.inflate(R.layout.floating_menu_tasks, floatingMenuWrapper, true);
|
||||
if (Objects.equals(view.getClass(), FloatingActionMenu.class)) {
|
||||
if (FloatingActionMenu.class.equals(view.getClass())) {
|
||||
floatingMenu = (FloatingActionMenu) view;
|
||||
} else {
|
||||
ViewGroup frame = (ViewGroup) view;
|
||||
floatingMenu = (FloatingActionMenu) frame.findViewById(R.id.fab_menu);
|
||||
}
|
||||
FloatingActionButton habit_fab = (FloatingActionButton) floatingMenu.findViewById(R.id.fab_new_habit);
|
||||
habit_fab.setOnClickListener(v1 -> openNewTaskActivity("habit"));
|
||||
habit_fab.setOnClickListener(v1 -> openNewTaskActivity(Task.TYPE_HABIT));
|
||||
FloatingActionButton daily_fab = (FloatingActionButton) floatingMenu.findViewById(R.id.fab_new_daily);
|
||||
daily_fab.setOnClickListener(v1 -> openNewTaskActivity("daily"));
|
||||
daily_fab.setOnClickListener(v1 -> openNewTaskActivity(Task.TYPE_DAILY));
|
||||
FloatingActionButton todo_fab = (FloatingActionButton) floatingMenu.findViewById(R.id.fab_new_todo);
|
||||
todo_fab.setOnClickListener(v1 -> openNewTaskActivity("todo"));
|
||||
todo_fab.setOnClickListener(v1 -> openNewTaskActivity(Task.TYPE_TODO));
|
||||
FloatingActionButton reward_fab = (FloatingActionButton) floatingMenu.findViewById(R.id.fab_new_reward);
|
||||
reward_fab.setOnClickListener(v1 -> openNewTaskActivity("reward"));
|
||||
reward_fab.setOnClickListener(v1 -> openNewTaskActivity(Task.TYPE_REWARD));
|
||||
floatingMenu.setOnMenuButtonLongClickListener(this::onFloatingMenuLongClicked);
|
||||
|
||||
if (this.activity != null) {
|
||||
|
|
@ -172,19 +175,39 @@ public class TasksFragment extends BaseMainFragment {
|
|||
}
|
||||
dialog.setListener((activeTaskFilter, activeTags) -> {
|
||||
int activePos = viewPager.getCurrentItem();
|
||||
if (activePos >= 1) {
|
||||
if (activePos >= 1 && viewFragmentsDictionary.get(activePos-1).recyclerAdapter != null) {
|
||||
viewFragmentsDictionary.get(activePos-1).recyclerAdapter.filter();
|
||||
}
|
||||
getActiveFragment().setActiveFilter(activeTaskFilter);
|
||||
if (activePos < viewPager.getAdapter().getCount()) {
|
||||
if (activePos < viewPager.getAdapter().getCount() && viewFragmentsDictionary.get(activePos+1).recyclerAdapter != null) {
|
||||
viewFragmentsDictionary.get(activePos+1).recyclerAdapter.filter();
|
||||
}
|
||||
if (getActiveFragment() != null) {
|
||||
getActiveFragment().setActiveFilter(activeTaskFilter);
|
||||
if (Task.TYPE_DAILY.equals(getActiveFragment().classType)) {
|
||||
updateDailyDueDefaultSetting(activeTaskFilter);
|
||||
}
|
||||
|
||||
}
|
||||
taskFilterHelper.setTags(activeTags);
|
||||
updateFilterIcon();
|
||||
|
||||
});
|
||||
dialog.show();
|
||||
}
|
||||
|
||||
private void updateDailyDueDefaultSetting(String activeTaskFilter) {
|
||||
Boolean showDueDefault = Task.FILTER_ACTIVE.equals(activeTaskFilter);
|
||||
if (user != null) {
|
||||
if (user.getPreferences().getDailyDueDefaultView() != showDueDefault) {
|
||||
UpdateUserCommand command = new UpdateUserCommand();
|
||||
Map<String, Object> data = new HashMap<>();
|
||||
data.put("preferences.dailyDueDefaultView", showDueDefault);
|
||||
command.updateData = data;
|
||||
EventBus.getDefault().post(command);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void refresh() {
|
||||
if (getActiveFragment() != null) {
|
||||
getActiveFragment().onRefresh();
|
||||
|
|
@ -410,8 +433,11 @@ public class TasksFragment extends BaseMainFragment {
|
|||
}
|
||||
|
||||
private void switchToTaskTab(String taskType) {
|
||||
if (taskType == null) {
|
||||
return;
|
||||
}
|
||||
for (int index = 0; index < viewFragmentsDictionary.size(); index++) {
|
||||
if (viewFragmentsDictionary.get(index).getClassName().equals(taskType) && viewPager != null) {
|
||||
if (taskType.equals(viewFragmentsDictionary.get(index).getClassName()) && viewPager != null) {
|
||||
viewPager.setCurrentItem(index);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,13 +25,13 @@ public class Preferences extends BaseModel {
|
|||
@ForeignKey(references = {@ForeignKeyReference(columnName = "suppressedModals_user_id",
|
||||
columnType = String.class,
|
||||
foreignColumnName = "userId")})
|
||||
public SuppressedModals suppressModals;
|
||||
SuppressedModals suppressModals;
|
||||
@Column
|
||||
@PrimaryKey
|
||||
@NotNull
|
||||
String user_id;
|
||||
@Column
|
||||
private boolean costume, toolbarCollapsed, advancedCollapsed, tagsCollapsed, newTaskEdit, disableClasses, stickyHeader, sleep, hideHeader;
|
||||
private boolean costume, toolbarCollapsed, advancedCollapsed, tagsCollapsed, newTaskEdit, disableClasses, stickyHeader, sleep, hideHeader, dailyDueDefaultView;
|
||||
@Column
|
||||
private String allocationMode, shirt, skin, size, background, chair, language, sound;
|
||||
@Column
|
||||
|
|
@ -235,4 +235,12 @@ public class Preferences extends BaseModel {
|
|||
|
||||
super.save();
|
||||
}
|
||||
|
||||
public boolean getDailyDueDefaultView() {
|
||||
return dailyDueDefaultView;
|
||||
}
|
||||
|
||||
public void setDailyDueDefaultView(boolean dailyDueDefaultView) {
|
||||
this.dailyDueDefaultView = dailyDueDefaultView;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue