diff --git a/Habitica/assets/migrations/Habitica/35.sql b/Habitica/assets/migrations/Habitica/35.sql new file mode 100644 index 000000000..34786fcee --- /dev/null +++ b/Habitica/assets/migrations/Habitica/35.sql @@ -0,0 +1 @@ +ALTER TABLE Preferences ADD COLUMN dailyDueDefaultView bool; \ No newline at end of file diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/HabitDatabase.java b/Habitica/src/main/java/com/habitrpg/android/habitica/HabitDatabase.java index fb71d61a5..4be466de1 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/HabitDatabase.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/HabitDatabase.java @@ -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(); diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/TaskFilterHelper.java b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/TaskFilterHelper.java index f94e22e83..ac55cb082 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/TaskFilterHelper.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/TaskFilterHelper.java @@ -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 getTags() { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java index 31410143d..af9bc95d0 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java @@ -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, 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, 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, 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, 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, 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, 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, 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, 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, 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")) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/setup/CustomizationSetupAdapter.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/setup/CustomizationSetupAdapter.java index afbec2b60..057ce0c28 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/setup/CustomizationSetupAdapter.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/setup/CustomizationSetupAdapter.java @@ -154,12 +154,20 @@ public class CustomizationSetupAdapter extends RecyclerView.Adapter>) subscriber -> { - contentCache.getItemDataList(itemKeys, obj -> { - ArrayList buyableItems = new ArrayList<>(); + return Observable.create((Observable.OnSubscribe>) subscriber -> contentCache.getItemDataList(itemKeys, obj -> { + ArrayList 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 { this.filteredContent.addAll(items); diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallegeFilterDialogHolder.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengeFilterDialogHolder.java similarity index 83% rename from Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallegeFilterDialogHolder.java rename to Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengeFilterDialogHolder.java index 5ae39542c..0ffeaaeb4 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallegeFilterDialogHolder.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengeFilterDialogHolder.java @@ -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 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 challengesViewed, @@ -97,16 +98,19 @@ class ChallegeFilterDialogHolder { } private Collection getGroups(@Nullable List challenges){ - HashMap groupMap = new HashMap<>(); + Map 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(); diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengeListFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengeListFragment.java index 2e702176d..7b083e820 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengeListFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengeListFragment.java @@ -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; })); diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TaskRecyclerViewFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TaskRecyclerViewFragment.java index 62d87be5c..b89bee8ff 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TaskRecyclerViewFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TaskRecyclerViewFragment.java @@ -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; diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TasksFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TasksFragment.java index 730561ce2..cee8b4651 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TasksFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TasksFragment.java @@ -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 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); } } diff --git a/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/models/Preferences.java b/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/models/Preferences.java index edd9b76e8..a17ffc235 100644 --- a/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/models/Preferences.java +++ b/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/models/Preferences.java @@ -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; + } }