diff --git a/Habitica/AndroidManifest.xml b/Habitica/AndroidManifest.xml index 16f4b4aee..0db19cdb2 100644 --- a/Habitica/AndroidManifest.xml +++ b/Habitica/AndroidManifest.xml @@ -2,7 +2,7 @@ + android:versionName="0.0.1" > + android:theme="@style/AppTheme" > + android:windowSoftInputMode="stateHidden|adjustResize" > @@ -37,7 +37,7 @@ + android:theme="@style/AppThemeWithActionBar" > @@ -45,8 +45,8 @@ + android:theme="@style/AppThemeWithActionBar" + android:windowSoftInputMode="adjustResize" > @@ -55,7 +55,7 @@ + android:label="Habitica Simple Widget" > @@ -71,8 +71,18 @@ android:name="io.fabric.ApiKey" android:value="2eb3b3edb3b0f4722d37d649a5af366656e46ddd" /> - + + + + diff --git a/Habitica/res/layout/activity_task_form.xml b/Habitica/res/layout/activity_task_form.xml new file mode 100644 index 000000000..849142d7b --- /dev/null +++ b/Habitica/res/layout/activity_task_form.xml @@ -0,0 +1,186 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Habitica/res/menu/menu_task_form.xml b/Habitica/res/menu/menu_task_form.xml new file mode 100644 index 000000000..84fd37938 --- /dev/null +++ b/Habitica/res/menu/menu_task_form.xml @@ -0,0 +1,7 @@ + + + diff --git a/Habitica/res/values/strings.xml b/Habitica/res/values/strings.xml index 769747f77..fd9a15488 100644 --- a/Habitica/res/values/strings.xml +++ b/Habitica/res/values/strings.xml @@ -118,4 +118,17 @@ Add checklist Edit checklist Add item… + Add Task + + Discard Changes + Notes + Text + Difficulty + Start Date + Positive ( + ) + Negative ( - ) + Checklist + Actions + Task + \ No newline at end of file diff --git a/Habitica/res/values/styles.xml b/Habitica/res/values/styles.xml index 3da25a2aa..cbed59c86 100644 --- a/Habitica/res/values/styles.xml +++ b/Habitica/res/values/styles.xml @@ -5,7 +5,7 @@ + \ No newline at end of file diff --git a/Habitica/res/values/task_difficulties.xml b/Habitica/res/values/task_difficulties.xml new file mode 100644 index 000000000..e7daf52a0 --- /dev/null +++ b/Habitica/res/values/task_difficulties.xml @@ -0,0 +1,9 @@ + + + + Trivial + Easy + Medium + Hard + + \ No newline at end of file diff --git a/Habitica/res/values/values.xml b/Habitica/res/values/values.xml index d76aba2c4..477c417e3 100644 --- a/Habitica/res/values/values.xml +++ b/Habitica/res/values/values.xml @@ -2,13 +2,9 @@ HabitRPG - HabitRPG Beta - Custom https://habitrpg.com/ - https://beta.habitrpg.com/ - OMGOMGOMGOMGOMG diff --git a/Habitica/src/com/habitrpg/android/habitica/MainActivity.java b/Habitica/src/com/habitrpg/android/habitica/MainActivity.java index 06b98a14c..81c2b014e 100644 --- a/Habitica/src/com/habitrpg/android/habitica/MainActivity.java +++ b/Habitica/src/com/habitrpg/android/habitica/MainActivity.java @@ -283,13 +283,13 @@ public class MainActivity extends InstabugAppCompatActivity implements HabitRPGU if(event.Task instanceof RewardItem) return; - Bundle b = new Bundle(); - b.putString("type", event.Task.getType().toString()); - b.putString("taskId", event.Task.getId()); + Bundle bundle = new Bundle(); + bundle.putString("type", event.Task.getType().toString()); + bundle.putString("taskId", event.Task.getId()); - AddTaskDialog dialog = new AddTaskDialog(); - dialog.setArguments(b); - dialog.show(getSupportFragmentManager(), "AddTaskDialog"); + Intent intent = new Intent(this, TaskFormActivity.class); + intent.putExtras(bundle); + startActivity(intent); } public void onEvent(TaskLongPressedEvent event) { @@ -305,12 +305,12 @@ public class MainActivity extends InstabugAppCompatActivity implements HabitRPGU } public void onEvent(AddTaskTappedEvent event) { - Bundle b = new Bundle(); - b.putString("type", event.ClassType.getSimpleName().toLowerCase()); + Bundle bundle = new Bundle(); + bundle.putString("type", event.ClassType.getSimpleName().toLowerCase()); - AddTaskDialog dialog = new AddTaskDialog(); - dialog.setArguments(b); - dialog.show(getSupportFragmentManager(), "AddTaskDialog"); + Intent intent = new Intent(this, TaskFormActivity.class); + intent.putExtras(bundle); + startActivity(intent); } public void onEvent(final BuyRewardTappedEvent event) { diff --git a/Habitica/src/com/habitrpg/android/habitica/TaskFormActivity.java b/Habitica/src/com/habitrpg/android/habitica/TaskFormActivity.java new file mode 100644 index 000000000..5ba51eb24 --- /dev/null +++ b/Habitica/src/com/habitrpg/android/habitica/TaskFormActivity.java @@ -0,0 +1,140 @@ +package com.habitrpg.android.habitica; + +import android.content.Intent; +import android.support.v7.app.AppCompatActivity; +import android.os.Bundle; +import android.view.Menu; +import android.view.MenuItem; +import android.widget.ArrayAdapter; +import android.widget.CheckBox; +import android.widget.EditText; +import android.widget.LinearLayout; +import android.widget.Spinner; + +import com.habitrpg.android.habitica.R; +import com.magicmicky.habitrpgwrapper.lib.models.tasks.Daily; +import com.magicmicky.habitrpgwrapper.lib.models.tasks.Habit; +import com.magicmicky.habitrpgwrapper.lib.models.tasks.HabitItem; +import com.magicmicky.habitrpgwrapper.lib.models.tasks.HabitType; +import com.magicmicky.habitrpgwrapper.lib.models.tasks.Reward; +import com.magicmicky.habitrpgwrapper.lib.models.tasks.ToDo; +import com.raizlabs.android.dbflow.sql.language.Select; + +import static com.magicmicky.habitrpgwrapper.lib.models.tasks.HabitType.daily; +import static com.magicmicky.habitrpgwrapper.lib.models.tasks.HabitType.habit; +import static com.magicmicky.habitrpgwrapper.lib.models.tasks.HabitType.reward; +import static com.magicmicky.habitrpgwrapper.lib.models.tasks.HabitType.todo; + +public class TaskFormActivity extends AppCompatActivity { + + private HabitType taskType; + private String taskId; + + private EditText taskText, taskNotes; + private Spinner taskDifficulty; + private CheckBox positiveCheckBox, negativeCheckBox; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_task_form); + + Intent intent = getIntent(); + Bundle bundle = intent.getExtras(); + String type = bundle.getString("type"); + taskId = bundle.getString("taskId"); + if (type == null) { + return; + } + taskType = type.equals(daily.toString()) ? daily + : type.equals(reward.toString()) ? reward + : type.equals(todo.toString()) ? todo + : habit; + + LinearLayout mainWrapper = (LinearLayout) findViewById(R.id.task_main_wrapper); + taskText = (EditText) findViewById(R.id.task_text_edittext); + taskNotes = (EditText) findViewById(R.id.task_notes_edittext); + taskDifficulty = (Spinner) findViewById(R.id.task_difficulty_spinner); + + ArrayAdapter adapter = ArrayAdapter.createFromResource(this, + R.array.task_difficulties, android.R.layout.simple_spinner_item); + adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); + taskDifficulty.setAdapter(adapter); + + if (taskType == habit) { + LinearLayout startDateLayout = (LinearLayout) findViewById(R.id.task_startdate_layout); + LinearLayout taskWrapper = (LinearLayout) findViewById(R.id.task_task_wrapper); + taskWrapper.removeView(startDateLayout); + + LinearLayout checklistLayout = (LinearLayout) findViewById(R.id.task_checklist_wrapper); + mainWrapper.removeView(checklistLayout); + + positiveCheckBox = (CheckBox) findViewById(R.id.task_positive_checkbox); + negativeCheckBox = (CheckBox) findViewById(R.id.task_negative_checkbox); + } + + if (taskType != habit) { + LinearLayout actionsLayout = (LinearLayout) findViewById(R.id.task_actions_wrapper); + mainWrapper.removeView(actionsLayout); + } + + if (taskId != null) { + switch (taskType) { + case todo: + ToDo todo = new Select().from(ToDo.class).byIds(taskId).querySingle(); + this.populate(todo); + break; + case daily: + Daily daily = new Select().from(Daily.class).byIds(taskId).querySingle(); + this.populate(daily); + break; + case habit: + Habit habit = new Select().from(Habit.class).byIds(taskId).querySingle(); + this.populate(habit); + break; + } + } + } + + @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_task_form, 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(); + + //noinspection SimplifiableIfStatement + if (id == R.id.action_settings) { + return true; + } + + return super.onOptionsItemSelected(item); + } + + + private void populate(HabitItem task) { + taskText.setText(task.text); + taskNotes.setText(task.notes); + } + + private void populate(Habit task) { + populate((HabitItem) task); + positiveCheckBox.setChecked(task.getUp()); + negativeCheckBox.setChecked(task.getDown()); + } + + private void populate(Daily task) { + populate((HabitItem) task); + } + + private void populate(ToDo task) { + populate((HabitItem) task); + } +}