diff --git a/Habitica/res/values/strings.xml b/Habitica/res/values/strings.xml index 901810142..907a04330 100644 --- a/Habitica/res/values/strings.xml +++ b/Habitica/res/values/strings.xml @@ -18,6 +18,10 @@ Contact me An error happened… Account + First Day of the Week + First day of the week in all calendars + 1 + FirstDayOfTheWeek Daily Reminder Activate Reminder Set Reminder Time diff --git a/Habitica/res/values/values.xml b/Habitica/res/values/values.xml index ad1ca667d..3c4676808 100644 --- a/Habitica/res/values/values.xml +++ b/Habitica/res/values/values.xml @@ -29,6 +29,16 @@ @string/sunday + + 2 + 3 + 4 + 5 + 6 + 7 + 1 + + @string/avatar_size_slim @string/avatar_size_broad diff --git a/Habitica/res/xml/preferences_fragment.xml b/Habitica/res/xml/preferences_fragment.xml index 1d50cc370..6e8bb0a9e 100644 --- a/Habitica/res/xml/preferences_fragment.xml +++ b/Habitica/res/xml/preferences_fragment.xml @@ -62,6 +62,13 @@ android:key="choose_class" android:order="2"/> + + { int day = dialogDatePicker.getDayOfMonth(); int month = dialogDatePicker.getMonth(); 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 a2978fc9b..468da1be6 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 @@ -1,5 +1,40 @@ package com.habitrpg.android.habitica.ui.activities; +import android.app.AlarmManager; +import android.app.PendingIntent; +import android.content.Context; +import android.content.Intent; +import android.content.SharedPreferences; +import android.content.pm.PackageInfo; +import android.content.pm.PackageManager; +import android.content.pm.ResolveInfo; +import android.database.sqlite.SQLiteDoneException; +import android.databinding.DataBindingUtil; +import android.graphics.Bitmap; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Paint; +import android.graphics.Rect; +import android.graphics.drawable.BitmapDrawable; +import android.net.Uri; +import android.os.Bundle; +import android.os.Handler; +import android.preference.PreferenceManager; +import android.support.design.widget.TabLayout; +import android.support.v4.app.FragmentTransaction; +import android.support.v4.content.FileProvider; +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.Log; +import android.view.Gravity; +import android.view.KeyEvent; +import android.view.View; +import android.widget.FrameLayout; +import android.widget.ImageView; +import android.widget.TextView; + import com.amplitude.api.Amplitude; import com.habitrpg.android.habitica.APIHelper; import com.habitrpg.android.habitica.HabiticaApplication; @@ -35,8 +70,6 @@ import com.habitrpg.android.habitica.events.commands.SellItemCommand; import com.habitrpg.android.habitica.events.commands.UnlockPathCommand; import com.habitrpg.android.habitica.events.commands.UpdateUserCommand; import com.habitrpg.android.habitica.helpers.notifications.PushNotificationManager; -import com.habitrpg.android.habitica.prefs.scanner.IntentIntegrator; -import com.habitrpg.android.habitica.prefs.scanner.IntentResult; import com.habitrpg.android.habitica.ui.AvatarView; import com.habitrpg.android.habitica.ui.AvatarWithBarsViewModel; import com.habitrpg.android.habitica.ui.TutorialView; @@ -95,42 +128,6 @@ import org.json.JSONObject; import org.solovyev.android.checkout.ActivityCheckout; import org.solovyev.android.checkout.Checkout; -import android.app.AlarmManager; -import android.app.PendingIntent; -import android.content.Context; -import android.content.Intent; -import android.content.SharedPreferences; -import android.content.pm.PackageInfo; -import android.content.pm.PackageManager; -import android.content.pm.ResolveInfo; -import android.database.sqlite.SQLiteDoneException; -import android.databinding.DataBindingUtil; -import android.graphics.Bitmap; -import android.graphics.Canvas; -import android.graphics.Color; -import android.graphics.Paint; -import android.graphics.Rect; -import android.graphics.drawable.BitmapDrawable; -import android.net.Uri; -import android.os.Bundle; -import android.os.Handler; -import android.preference.PreferenceManager; -import android.support.design.widget.TabLayout; -import android.support.v4.app.FragmentTransaction; -import android.support.v4.content.FileProvider; -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.Log; -import android.view.Gravity; -import android.view.KeyEvent; -import android.view.View; -import android.widget.FrameLayout; -import android.widget.ImageView; -import android.widget.TextView; -import android.widget.Toast; - import java.io.File; import java.util.ArrayList; import java.util.Calendar; diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/SetupActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/SetupActivity.java index 20f0dbffc..ba871847d 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/SetupActivity.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/SetupActivity.java @@ -1,5 +1,15 @@ package com.habitrpg.android.habitica.ui.activities; +import android.content.Intent; +import android.content.SharedPreferences; +import android.os.Bundle; +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentPagerAdapter; +import android.support.v4.view.ViewPager; +import android.support.v7.preference.PreferenceManager; +import android.view.View; +import android.widget.Button; + import com.amplitude.api.Amplitude; import com.habitrpg.android.habitica.APIHelper; import com.habitrpg.android.habitica.HostConfig; @@ -20,14 +30,7 @@ import org.greenrobot.eventbus.Subscribe; import org.json.JSONException; import org.json.JSONObject; -import android.content.Intent; -import android.os.Bundle; -import android.support.v4.app.Fragment; -import android.support.v4.app.FragmentPagerAdapter; -import android.support.v4.view.ViewPager; -import android.view.View; -import android.widget.Button; - +import java.util.Calendar; import java.util.List; import javax.inject.Inject; @@ -148,6 +151,11 @@ public class SetupActivity extends BaseActivity implements View.OnClickListener, @Override public void onClick(View v) { + SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); + SharedPreferences.Editor editor = sharedPreferences.edit(); + editor.putString("FirstDayOfTheWeek", + Integer.toString(Calendar.getInstance().getFirstDayOfWeek())); + editor.commit(); if (v == this.nextButton) { if (this.pager.getCurrentItem() == 1) { List newTasks = this.taskSetupFragment.createSampleTasks(); diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivity.java index bc85040d1..c07337324 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivity.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivity.java @@ -1,42 +1,17 @@ package com.habitrpg.android.habitica.ui.activities; -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.commands.DeleteTaskCommand; -import com.habitrpg.android.habitica.helpers.RemindersManager; -import com.habitrpg.android.habitica.ui.WrapContentRecyclerViewLayoutManager; -import com.habitrpg.android.habitica.ui.adapter.tasks.CheckListAdapter; -import com.habitrpg.android.habitica.ui.adapter.tasks.RemindersAdapter; -import com.habitrpg.android.habitica.ui.helpers.MarkdownParser; -import com.habitrpg.android.habitica.ui.helpers.SimpleItemTouchHelperCallback; -import com.habitrpg.android.habitica.helpers.TaskAlarmManager; -import com.habitrpg.android.habitica.ui.helpers.ViewHelper; -import com.magicmicky.habitrpgwrapper.lib.models.Tag; -import com.magicmicky.habitrpgwrapper.lib.models.tasks.ChecklistItem; -import com.magicmicky.habitrpgwrapper.lib.models.tasks.Days; -import com.magicmicky.habitrpgwrapper.lib.models.tasks.RemindersItem; -import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task; -import com.magicmicky.habitrpgwrapper.lib.models.tasks.TaskTag; -import com.raizlabs.android.dbflow.sql.builder.Condition; -import com.raizlabs.android.dbflow.sql.language.Select; - -import net.pherth.android.emoji_library.EmojiEditText; -import net.pherth.android.emoji_library.EmojiPopup; - -import org.greenrobot.eventbus.EventBus; - import android.app.DatePickerDialog; -import android.app.Dialog; -import android.app.TimePickerDialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.content.SharedPreferences; +import android.os.Build; import android.os.Bundle; import android.support.design.widget.TextInputLayout; import android.support.v4.content.ContextCompat; import android.support.v7.app.ActionBar; import android.support.v7.app.AlertDialog; +import android.support.v7.preference.PreferenceManager; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.helper.ItemTouchHelper; @@ -58,19 +33,45 @@ import android.widget.NumberPicker; import android.widget.Spinner; import android.widget.TableRow; import android.widget.TextView; -import android.widget.TimePicker; + +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.commands.DeleteTaskCommand; +import com.habitrpg.android.habitica.helpers.FirstDayOfTheWeekHelper; +import com.habitrpg.android.habitica.helpers.RemindersManager; +import com.habitrpg.android.habitica.helpers.TaskAlarmManager; +import com.habitrpg.android.habitica.ui.WrapContentRecyclerViewLayoutManager; +import com.habitrpg.android.habitica.ui.adapter.tasks.CheckListAdapter; +import com.habitrpg.android.habitica.ui.adapter.tasks.RemindersAdapter; +import com.habitrpg.android.habitica.ui.helpers.MarkdownParser; +import com.habitrpg.android.habitica.ui.helpers.SimpleItemTouchHelperCallback; +import com.habitrpg.android.habitica.ui.helpers.ViewHelper; +import com.magicmicky.habitrpgwrapper.lib.models.Tag; +import com.magicmicky.habitrpgwrapper.lib.models.tasks.ChecklistItem; +import com.magicmicky.habitrpgwrapper.lib.models.tasks.Days; +import com.magicmicky.habitrpgwrapper.lib.models.tasks.RemindersItem; +import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task; +import com.magicmicky.habitrpgwrapper.lib.models.tasks.TaskTag; +import com.raizlabs.android.dbflow.sql.builder.Condition; +import com.raizlabs.android.dbflow.sql.language.Select; + +import net.pherth.android.emoji_library.EmojiEditText; +import net.pherth.android.emoji_library.EmojiPopup; + +import org.greenrobot.eventbus.EventBus; import java.text.DateFormat; import java.text.DecimalFormat; import java.text.NumberFormat; import java.text.ParseException; -import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Arrays; import java.util.Calendar; +import java.util.Collections; import java.util.Date; import java.util.List; import java.util.Locale; -import java.util.UUID; import butterknife.BindView; import butterknife.OnClick; @@ -570,6 +571,15 @@ public class TaskFormActivity extends BaseActivity implements AdapterView.OnItem this.frequencyContainer.removeAllViews(); if (this.dailyFrequencySpinner.getSelectedItemPosition() == 0) { String[] weekdays = getResources().getStringArray(R.array.weekdays); + SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); + String dayOfTheWeek = sharedPreferences.getString("FirstDayOfTheWeek", + Integer.toString(Calendar.getInstance().getFirstDayOfWeek())); + FirstDayOfTheWeekHelper firstDayOfTheWeekHelper = + FirstDayOfTheWeekHelper.newInstance(Integer.parseInt(dayOfTheWeek)); + ArrayList weekdaysTemp = new ArrayList<>(Arrays.asList(weekdays)); + Collections.rotate(weekdaysTemp, firstDayOfTheWeekHelper.getDailyTaskFormOffset()); + weekdays = weekdaysTemp.toArray(new String[1]); + for (int i = 0; i < 7; i++) { View weekdayRow = getLayoutInflater().inflate(R.layout.row_checklist, this.frequencyContainer, false); CheckBox checkbox = (CheckBox) weekdayRow.findViewById(R.id.checkbox); @@ -901,6 +911,7 @@ public class TaskFormActivity extends BaseActivity implements AdapterView.OnItem public DateEditTextListener(EditText dateText) { calendar = Calendar.getInstance(); + this.datePickerText = dateText; this.datePickerText.setOnClickListener(this); this.dateFormatter = DateFormat.getDateInstance(); @@ -908,6 +919,20 @@ public class TaskFormActivity extends BaseActivity implements AdapterView.OnItem calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH)); + + SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); + String dayOfTheWeek = sharedPreferences.getString("FirstDayOfTheWeek", + Integer.toString(Calendar.getInstance().getFirstDayOfWeek())); + FirstDayOfTheWeekHelper firstDayOfTheWeekHelper = + FirstDayOfTheWeekHelper.newInstance(Integer.parseInt(dayOfTheWeek)); + if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT_WATCH) { + datePickerDialog.getDatePicker().getCalendarView().setFirstDayOfWeek( + firstDayOfTheWeekHelper.getFirstDayOfTheWeek()); + } else { + datePickerDialog.getDatePicker().setFirstDayOfWeek(firstDayOfTheWeekHelper + .getFirstDayOfTheWeek()); + } + this.datePickerDialog.setButton(DialogInterface.BUTTON_NEUTRAL, getResources().getString(R.string.today), (dialog, which) -> { setCalendar(Calendar.getInstance().getTime()); }); diff --git a/build.gradle b/build.gradle index 0e19da6e8..4bb1d4fd4 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:2.1.2' + classpath 'com.android.tools.build:gradle:2.1.3' classpath 'com.android.databinding:dataBinder:1.0-rc4' classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' classpath 'com.google.gms:google-services:3.0.0' diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 73e9ac19c..b6420c1dd 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,7 +1,7 @@ -#Wed Apr 27 08:20:39 CST 2016 +#Wed Sep 07 23:45:14 CDT 2016 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.13-all.zip org.gradle.jvmargs=-Xmx3072M +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip