mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-05-21 05:09:00 +00:00
Merge pull request #620 from DanielKaparunakis/FirstDayOfTheWeek
Feature: First day of the week
This commit is contained in:
commit
258215fee9
10 changed files with 193 additions and 83 deletions
|
|
@ -18,6 +18,10 @@
|
|||
<string name="PS_contact_title">Contact me</string>
|
||||
<string name="unknown_error">An error happened…</string>
|
||||
<string name="pref_account_header">Account</string>
|
||||
<string name="pref_first_day_of_the_week_title">First Day of the Week</string>
|
||||
<string name="pref_first_day_of_the_week_summary">First day of the week in all calendars</string>
|
||||
<string name="pref_first_day_of_the_week_default_value">1</string>
|
||||
<string name="pref_first_day_of_the_week_key">FirstDayOfTheWeek</string>
|
||||
<string name="pref_reminder_header">Daily Reminder</string>
|
||||
<string name="pref_reminder_checkbox">Activate Reminder</string>
|
||||
<string name="pref_reminder_picker">Set Reminder Time</string>
|
||||
|
|
|
|||
|
|
@ -29,6 +29,16 @@
|
|||
<item>@string/sunday</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="weekdayValues">
|
||||
<item>2</item>
|
||||
<item>3</item>
|
||||
<item>4</item>
|
||||
<item>5</item>
|
||||
<item>6</item>
|
||||
<item>7</item>
|
||||
<item>1</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="avatar_sizes">
|
||||
<item>@string/avatar_size_slim</item>
|
||||
<item>@string/avatar_size_broad</item>
|
||||
|
|
|
|||
|
|
@ -62,6 +62,13 @@
|
|||
android:key="choose_class"
|
||||
android:order="2"/>
|
||||
|
||||
<ListPreference android:title="@string/pref_first_day_of_the_week_title"
|
||||
android:key="@string/pref_first_day_of_the_week_key"
|
||||
android:entries="@array/weekdays"
|
||||
android:entryValues="@array/weekdayValues"
|
||||
android:summary="@string/pref_first_day_of_the_week_summary"
|
||||
android:order="4"/>
|
||||
|
||||
<Preference android:title="@string/logout"
|
||||
android:key="logout"
|
||||
android:summary="@string/logout_description"
|
||||
|
|
|
|||
|
|
@ -0,0 +1,46 @@
|
|||
package com.habitrpg.android.habitica.helpers;
|
||||
|
||||
import java.util.Calendar;
|
||||
|
||||
/**
|
||||
* Created by DanielKaparunakis on 9/10/16.
|
||||
*/
|
||||
public class FirstDayOfTheWeekHelper {
|
||||
|
||||
private int firstDayOfTheWeek;
|
||||
private int dailyTaskFormOffset;
|
||||
|
||||
private FirstDayOfTheWeekHelper(int dailyTaskFormOffset, int firstDayOfTheWeek) {
|
||||
this.dailyTaskFormOffset = dailyTaskFormOffset;
|
||||
this.firstDayOfTheWeek = firstDayOfTheWeek;
|
||||
}
|
||||
|
||||
public static FirstDayOfTheWeekHelper newInstance(int firstDayOfTheWeekSharedPref) {
|
||||
switch (firstDayOfTheWeekSharedPref){
|
||||
case Calendar.SUNDAY:
|
||||
return new FirstDayOfTheWeekHelper(1, Calendar.SUNDAY);
|
||||
case Calendar.MONDAY:
|
||||
return new FirstDayOfTheWeekHelper(0, Calendar.MONDAY);
|
||||
case Calendar.TUESDAY:
|
||||
return new FirstDayOfTheWeekHelper(6, Calendar.TUESDAY);
|
||||
case Calendar.WEDNESDAY:
|
||||
return new FirstDayOfTheWeekHelper(5, Calendar.WEDNESDAY);
|
||||
case Calendar.THURSDAY:
|
||||
return new FirstDayOfTheWeekHelper(4, Calendar.THURSDAY);
|
||||
case Calendar.FRIDAY:
|
||||
return new FirstDayOfTheWeekHelper(3, Calendar.FRIDAY);
|
||||
case Calendar.SATURDAY:
|
||||
return new FirstDayOfTheWeekHelper(2, Calendar.SATURDAY);
|
||||
default:
|
||||
return new FirstDayOfTheWeekHelper(1, Calendar.SUNDAY);
|
||||
}
|
||||
}
|
||||
|
||||
public int getFirstDayOfTheWeek() {
|
||||
return firstDayOfTheWeek;
|
||||
}
|
||||
|
||||
public int getDailyTaskFormOffset() {
|
||||
return dailyTaskFormOffset;
|
||||
}
|
||||
}
|
||||
|
|
@ -3,7 +3,9 @@ package com.habitrpg.android.habitica.helpers;
|
|||
import android.app.Dialog;
|
||||
import android.app.TimePickerDialog;
|
||||
import android.content.Context;
|
||||
import android.view.View;
|
||||
import android.content.SharedPreferences;
|
||||
import android.os.Build;
|
||||
import android.support.v7.preference.PreferenceManager;
|
||||
import android.widget.Button;
|
||||
import android.widget.DatePicker;
|
||||
import android.widget.EditText;
|
||||
|
|
@ -15,7 +17,6 @@ import com.magicmicky.habitrpgwrapper.lib.models.tasks.RemindersItem;
|
|||
|
||||
import java.text.DateFormat;
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.UUID;
|
||||
|
|
@ -69,6 +70,18 @@ public class RemindersManager {
|
|||
TimePicker dialogTimePicker = (TimePicker) dialog.findViewById(R.id.timePicker);
|
||||
DatePicker dialogDatePicker = (DatePicker) dialog.findViewById(R.id.datePicker);
|
||||
|
||||
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
|
||||
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) {
|
||||
dialogDatePicker.getCalendarView().setFirstDayOfWeek(
|
||||
firstDayOfTheWeekHelper.getFirstDayOfTheWeek());
|
||||
} else {
|
||||
dialogDatePicker.setFirstDayOfWeek(firstDayOfTheWeekHelper.getFirstDayOfTheWeek());
|
||||
}
|
||||
|
||||
dialogConfirmButton.setOnClickListener(view -> {
|
||||
int day = dialogDatePicker.getDayOfMonth();
|
||||
int month = dialogDatePicker.getMonth();
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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<Task> newTasks = this.taskSetupFragment.createSampleTasks();
|
||||
|
|
|
|||
|
|
@ -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<String> 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());
|
||||
});
|
||||
|
|
|
|||
|
|
@ -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'
|
||||
|
|
|
|||
6
gradle/wrapper/gradle-wrapper.properties
vendored
6
gradle/wrapper/gradle-wrapper.properties
vendored
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in a new issue