diff --git a/app/src/main/java/gr/thmmy/mthmmy/editorview/AutoFitGridLayout.java b/app/src/main/java/gr/thmmy/mthmmy/editorview/AutoFitGridLayout.java deleted file mode 100644 index 2b3eff99..00000000 --- a/app/src/main/java/gr/thmmy/mthmmy/editorview/AutoFitGridLayout.java +++ /dev/null @@ -1,56 +0,0 @@ -package gr.thmmy.mthmmy.editorview; - -import android.content.Context; -import android.content.res.TypedArray; -import android.util.AttributeSet; -import android.widget.GridLayout; - -import gr.thmmy.mthmmy.R; - -public class AutoFitGridLayout extends GridLayout { - private int columnWidth; - private int defaultColumnCount; - - public AutoFitGridLayout(Context context) { - super(context); - init(context, null, 0); - } - - public AutoFitGridLayout(Context context, AttributeSet attrs) { - super(context, attrs); - init(context, attrs, 0); - } - - public AutoFitGridLayout(Context context, AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - init(context, attrs, defStyleAttr); - } - - public void init(Context context, AttributeSet attrs, int defStyleAttr) { - TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.AutoFitGridLayout, 0, defStyleAttr); - try { - columnWidth = a.getDimensionPixelSize(R.styleable.AutoFitGridLayout_columnWidth, 0); - - int[] set = {android.R.attr.columnCount}; - a = context.obtainStyledAttributes(attrs, set, 0, defStyleAttr); - defaultColumnCount = a.getInt(0, 6); - } finally { - a.recycle(); - } - setColumnCount(1); - } - - @Override - protected void onMeasure(int widthSpec, int heightSpec) { - super.onMeasure(widthSpec, heightSpec); - - int width = MeasureSpec.getSize(widthSpec); - if (columnWidth > 0 && width > 0) { - int totalSpace = width - getPaddingRight() - getPaddingLeft(); - int columnCount = Math.max(1, totalSpace / columnWidth); - setColumnCount(columnCount); - } else { - setColumnCount(defaultColumnCount); - } - } -} diff --git a/app/src/main/java/gr/thmmy/mthmmy/editorview/EditorView.java b/app/src/main/java/gr/thmmy/mthmmy/editorview/EditorView.java index 37fea85b..0cb17141 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/editorview/EditorView.java +++ b/app/src/main/java/gr/thmmy/mthmmy/editorview/EditorView.java @@ -10,9 +10,12 @@ import android.support.annotation.Nullable; import android.support.design.widget.TextInputEditText; import android.support.design.widget.TextInputLayout; import android.support.v7.widget.AppCompatImageButton; +import android.support.v7.widget.GridLayoutManager; +import android.support.v7.widget.RecyclerView; import android.text.Editable; import android.text.TextUtils; import android.util.AttributeSet; +import android.util.DisplayMetrics; import android.util.SparseArray; import android.view.LayoutInflater; import android.view.inputmethod.EditorInfo; @@ -80,47 +83,6 @@ public class EditorView extends LinearLayout { return false; }); - emojiButton.setOnClickListener(view -> { - InputMethodManager imm = (InputMethodManager) context.getSystemService(Activity.INPUT_METHOD_SERVICE); - assert imm != null; - if (emojiKeyboardOwner.isEmojiKeyboardVisible()) { - editText.requestFocus(); - imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT); - emojiButton.setImageResource(R.drawable.ic_tag_faces_24dp); - } else { - imm.hideSoftInputFromWindow(getWindowToken(), 0); - view.clearFocus(); - emojiButton.setImageResource(R.drawable.ic_keyboard_24dp); - } - emojiKeyboardOwner.setEmojiKeyboardVisible(!emojiKeyboardOwner.isEmojiKeyboardVisible()); - }); - - submitButton = findViewById(R.id.submit_button); - findViewById(R.id.bold_button).setOnClickListener(view -> { - boolean hadTextSelection = editText.hasSelection(); - getText().insert(editText.getSelectionStart(), "[b]"); - getText().insert(editText.getSelectionEnd(), "[/b]"); - editText.setSelection(hadTextSelection ? editText.getSelectionEnd() : editText.getSelectionStart() - 4); - }); - findViewById(R.id.italic_button).setOnClickListener(view -> { - boolean hadTextSelection = editText.hasSelection(); - getText().insert(editText.getSelectionStart(), "[i]"); - getText().insert(editText.getSelectionEnd(), "[/i]"); - editText.setSelection(hadTextSelection ? editText.getSelectionEnd() : editText.getSelectionStart() - 4); - }); - findViewById(R.id.underline_button).setOnClickListener(view -> { - boolean hadTextSelection = editText.hasSelection(); - getText().insert(editText.getSelectionStart(), "[u]"); - getText().insert(editText.getSelectionEnd(), "[/u]"); - editText.setSelection(hadTextSelection ? editText.getSelectionEnd() : editText.getSelectionStart() - 4); - }); - findViewById(R.id.strikethrough_button).setOnClickListener(view -> { - boolean hadTextSelection = editText.hasSelection(); - getText().insert(editText.getSelectionStart(), "[s]"); - getText().insert(editText.getSelectionEnd(), "[/s]"); - editText.setSelection(hadTextSelection ? editText.getSelectionEnd() : editText.getSelectionStart() - 4); - }); - colors.append(R.id.black, "black"); colors.append(R.id.red, "red"); colors.append(R.id.yellow, "yellow"); @@ -136,114 +98,181 @@ public class EditorView extends LinearLayout { colors.append(R.id.maroon, "maroon"); colors.append(R.id.lime_green, "limegreen"); - findViewById(R.id.text_color_button).setOnClickListener(view -> { - PopupWindow popupWindow = new PopupWindow(view.getContext()); - popupWindow.setHeight(LayoutParams.WRAP_CONTENT); - popupWindow.setWidth(LayoutParams.WRAP_CONTENT); - popupWindow.setFocusable(true); - ScrollView colorPickerScrollview = (ScrollView) LayoutInflater.from(context).inflate(R.layout.editor_view_color_picker, null); - LinearLayout colorPicker = (LinearLayout) colorPickerScrollview.getChildAt(0); - popupWindow.setContentView(colorPickerScrollview); - for (int i = 0; i < colorPicker.getChildCount(); i++) { - TextView child = (TextView) colorPicker.getChildAt(i); - child.setOnClickListener(v -> { + RecyclerView formatButtonsRecyclerview = findViewById(R.id.buttons_recyclerview); + DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics(); + float itemWidth = getResources().getDimension(R.dimen.editor_format_button_size) + + getResources().getDimension(R.dimen.editor_format_button_margin_between); + int columns = (int) Math.floor(displayMetrics.widthPixels / itemWidth); + formatButtonsRecyclerview.setLayoutManager(new GridLayoutManager(context, columns)); + formatButtonsRecyclerview.setAdapter(new FormatButtonsAdapter((view, drawableId) -> { + switch (drawableId) { + case R.drawable.ic_format_bold: { + boolean hadTextSelection = editText.hasSelection(); + getText().insert(editText.getSelectionStart(), "[b]"); + getText().insert(editText.getSelectionEnd(), "[/b]"); + editText.setSelection(hadTextSelection ? editText.getSelectionEnd() : editText.getSelectionStart() - 4); + break; + } + case R.drawable.ic_format_italic: { + boolean hadTextSelection = editText.hasSelection(); + getText().insert(editText.getSelectionStart(), "[i]"); + getText().insert(editText.getSelectionEnd(), "[/i]"); + editText.setSelection(hadTextSelection ? editText.getSelectionEnd() : editText.getSelectionStart() - 4); + break; + } + case R.drawable.ic_format_underlined: { + boolean hadTextSelection = editText.hasSelection(); + getText().insert(editText.getSelectionStart(), "[u]"); + getText().insert(editText.getSelectionEnd(), "[/u]"); + editText.setSelection(hadTextSelection ? editText.getSelectionEnd() : editText.getSelectionStart() - 4); + break; + } + case R.drawable.ic_strikethrough_s: { boolean hadTextSelection = editText.hasSelection(); - getText().insert(editText.getSelectionStart(), "[color=" + colors.get(v.getId()) + "]"); - getText().insert(editText.getSelectionEnd(), "[/color]"); + getText().insert(editText.getSelectionStart(), "[s]"); + getText().insert(editText.getSelectionEnd(), "[/s]"); + editText.setSelection(hadTextSelection ? editText.getSelectionEnd() : editText.getSelectionStart() - 4); + break; + } + case R.drawable.ic_format_color_text: { + PopupWindow popupWindow = new PopupWindow(view.getContext()); + popupWindow.setHeight(LayoutParams.WRAP_CONTENT); + popupWindow.setWidth(LayoutParams.WRAP_CONTENT); + popupWindow.setFocusable(true); + ScrollView colorPickerScrollview = (ScrollView) LayoutInflater.from(context).inflate(R.layout.editor_view_color_picker, null); + LinearLayout colorPicker = (LinearLayout) colorPickerScrollview.getChildAt(0); + popupWindow.setContentView(colorPickerScrollview); + for (int i = 0; i < colorPicker.getChildCount(); i++) { + TextView child = (TextView) colorPicker.getChildAt(i); + child.setOnClickListener(v -> { + boolean hadTextSelection = editText.hasSelection(); + getText().insert(editText.getSelectionStart(), "[color=" + colors.get(v.getId()) + "]"); + getText().insert(editText.getSelectionEnd(), "[/color]"); + editText.setSelection(hadTextSelection ? editText.getSelectionEnd() : editText.getSelectionStart() - 8); + popupWindow.dismiss(); + }); + } + popupWindow.showAsDropDown(view); + break; + } + case R.drawable.ic_format_size: { + boolean hadTextSelection = editText.hasSelection(); + getText().insert(editText.getSelectionStart(), "[size=10pt]"); + getText().insert(editText.getSelectionEnd(), "[/size]"); + editText.setSelection(hadTextSelection ? editText.getSelectionEnd() : editText.getSelectionStart() - 7); + break; + } + case R.drawable.ic_text_format: { + boolean hadTextSelection = editText.hasSelection(); + getText().insert(editText.getSelectionStart(), "[font=Verdana]"); + getText().insert(editText.getSelectionEnd(), "[/font]"); + editText.setSelection(hadTextSelection ? editText.getSelectionEnd() : editText.getSelectionStart() - 7); + break; + } + case R.drawable.ic_format_list_bulleted: { + boolean hadTextSelection = editText.hasSelection(); + getText().insert(editText.getSelectionStart(), "[list]\n[li]"); + getText().insert(editText.getSelectionEnd(), "[/li]\n[li][/li]\n[/list]"); + editText.setSelection(hadTextSelection ? editText.getSelectionEnd() - 13 : editText.getSelectionStart() - 23); + break; + } + case R.drawable.ic_format_align_left: { + boolean hadTextSelection = editText.hasSelection(); + getText().insert(editText.getSelectionStart(), "[left]"); + getText().insert(editText.getSelectionEnd(), "[/left]"); + editText.setSelection(hadTextSelection ? editText.getSelectionEnd() : editText.getSelectionStart() - 7); + break; + } + case R.drawable.ic_format_align_center: { + boolean hadTextSelection = editText.hasSelection(); + getText().insert(editText.getSelectionStart(), "[center]"); + getText().insert(editText.getSelectionEnd(), "[/center]"); + editText.setSelection(hadTextSelection ? editText.getSelectionEnd() : editText.getSelectionStart() - 9); + break; + } + case R.drawable.ic_format_align_right: { + boolean hadTextSelection = editText.hasSelection(); + getText().insert(editText.getSelectionStart(), "[right]"); + getText().insert(editText.getSelectionEnd(), "[/right]"); editText.setSelection(hadTextSelection ? editText.getSelectionEnd() : editText.getSelectionStart() - 8); - popupWindow.dismiss(); - }); - } - popupWindow.showAsDropDown(view); - }); - findViewById(R.id.text_size_button).setOnClickListener(view -> { - boolean hadTextSelection = editText.hasSelection(); - getText().insert(editText.getSelectionStart(), "[size=10pt]"); - getText().insert(editText.getSelectionEnd(), "[/size]"); - editText.setSelection(hadTextSelection ? editText.getSelectionEnd() : editText.getSelectionStart() - 7); - }); - findViewById(R.id.font_button).setOnClickListener(view -> { - boolean hadTextSelection = editText.hasSelection(); - getText().insert(editText.getSelectionStart(), "[font=Verdana]"); - getText().insert(editText.getSelectionEnd(), "[/font]"); - editText.setSelection(hadTextSelection ? editText.getSelectionEnd() : editText.getSelectionStart() - 7); - }); - findViewById(R.id.unordered_list_button).setOnClickListener(view -> { - boolean hadTextSelection = editText.hasSelection(); - getText().insert(editText.getSelectionStart(), "[list]\n[li]"); - getText().insert(editText.getSelectionEnd(), "[/li]\n[li][/li]\n[/list]"); - editText.setSelection(hadTextSelection ? editText.getSelectionEnd() - 13 : editText.getSelectionStart() - 23); - }); - findViewById(R.id.align_left_button).setOnClickListener(view -> { - boolean hadTextSelection = editText.hasSelection(); - getText().insert(editText.getSelectionStart(), "[left]"); - getText().insert(editText.getSelectionEnd(), "[/left]"); - editText.setSelection(hadTextSelection ? editText.getSelectionEnd() : editText.getSelectionStart() - 7); - }); - findViewById(R.id.align_center_button).setOnClickListener(view -> { - boolean hadTextSelection = editText.hasSelection(); - getText().insert(editText.getSelectionStart(), "[center]"); - getText().insert(editText.getSelectionEnd(), "[/center]"); - editText.setSelection(hadTextSelection ? editText.getSelectionEnd() : editText.getSelectionStart() - 9); - }); - findViewById(R.id.align_right_button).setOnClickListener(view -> { - boolean hadTextSelection = editText.hasSelection(); - getText().insert(editText.getSelectionStart(), "[right]"); - getText().insert(editText.getSelectionEnd(), "[/right]"); - editText.setSelection(hadTextSelection ? editText.getSelectionEnd() : editText.getSelectionStart() - 8); - }); - findViewById(R.id.link_button).setOnClickListener(view -> { - LinearLayout dialogBody = (LinearLayout) LayoutInflater.from(context) - .inflate(R.layout.dialog_create_link, null); - TextInputLayout linkUrl = dialogBody.findViewById(R.id.link_url_input); - linkUrl.setOnClickListener(view1 -> linkUrl.setError(null)); - TextInputLayout linkText = dialogBody.findViewById(R.id.link_text_input); - linkText.setOnClickListener(view2 -> linkText.setError(null)); - boolean hadTextSelection = editText.hasSelection(); - int start = editText.getSelectionStart(), end = editText.getSelectionEnd(); - if (editText.hasSelection()) { - linkText.getEditText().setText( - editText.getText().toString().substring(editText.getSelectionStart(), editText.getSelectionEnd())); + break; + } + case R.drawable.ic_insert_link: { + LinearLayout dialogBody = (LinearLayout) LayoutInflater.from(context) + .inflate(R.layout.dialog_create_link, null); + TextInputLayout linkUrl = dialogBody.findViewById(R.id.link_url_input); + linkUrl.setOnClickListener(view1 -> linkUrl.setError(null)); + TextInputLayout linkText = dialogBody.findViewById(R.id.link_text_input); + linkText.setOnClickListener(view2 -> linkText.setError(null)); + boolean hadTextSelection = editText.hasSelection(); + int start = editText.getSelectionStart(), end = editText.getSelectionEnd(); + if (editText.hasSelection()) { + linkText.getEditText().setText( + editText.getText().toString().substring(editText.getSelectionStart(), editText.getSelectionEnd())); + } + new AlertDialog.Builder(context, R.style.AppTheme_Dark_Dialog) + .setTitle(R.string.dialog_create_link_title) + .setView(dialogBody) + .setPositiveButton(R.string.ok, (dialog, which) -> { + if (TextUtils.isEmpty(Objects.requireNonNull(linkUrl.getEditText()).getText().toString())) { + linkUrl.setError(context.getString(R.string.input_field_required)); + return; + } + if (TextUtils.isEmpty(Objects.requireNonNull(linkText.getEditText()).getText().toString())) { + linkUrl.setError(context.getString(R.string.input_field_required)); + return; + } + + if (hadTextSelection) editText.getText().delete(start, end); + getText().insert(editText.getSelectionStart(), "[url=" + + Objects.requireNonNull(linkUrl.getEditText()).getText().toString() + "]" + + Objects.requireNonNull(linkText.getEditText()).getText().toString() + "[/url]"); + }) + .setNegativeButton(R.string.cancel, (dialog, which) -> dialog.dismiss()) + .show(); + break; + } + case R.drawable.ic_format_quote: { + boolean hadTextSelection = editText.hasSelection(); + getText().insert(editText.getSelectionStart(), "[quote]"); + getText().insert(editText.getSelectionEnd(), "[/quote]"); + editText.setSelection(hadTextSelection ? editText.getSelectionEnd() : editText.getSelectionStart() - 8); + break; + } + case R.drawable.ic_code: { + boolean hadTextSelection = editText.hasSelection(); + getText().insert(editText.getSelectionStart(), "[code]"); + getText().insert(editText.getSelectionEnd(), "[/code]"); + editText.setSelection(hadTextSelection ? editText.getSelectionEnd() : editText.getSelectionStart() - 7); + break; + } + case R.drawable.ic_functions: { + boolean hadTextSelection = editText.hasSelection(); + getText().insert(editText.getSelectionStart(), "[tex]"); + getText().insert(editText.getSelectionEnd(), "[/tex]"); + editText.setSelection(hadTextSelection ? editText.getSelectionEnd() : editText.getSelectionStart() - 6); + break; + } + default: throw new IllegalArgumentException("Unknown format button click"); } - new AlertDialog.Builder(context, R.style.AppTheme_Dark_Dialog) - .setTitle(R.string.dialog_create_link_title) - .setView(dialogBody) - .setPositiveButton(R.string.ok, (dialog, which) -> { - if (TextUtils.isEmpty(Objects.requireNonNull(linkUrl.getEditText()).getText().toString())) { - linkUrl.setError(context.getString(R.string.input_field_required)); - return; - } - if (TextUtils.isEmpty(Objects.requireNonNull(linkText.getEditText()).getText().toString())) { - linkUrl.setError(context.getString(R.string.input_field_required)); - return; - } + })); - if (hadTextSelection) editText.getText().delete(start, end); - getText().insert(editText.getSelectionStart(), "[url=" + - Objects.requireNonNull(linkUrl.getEditText()).getText().toString() + "]" + - Objects.requireNonNull(linkText.getEditText()).getText().toString() + "[/url]"); - }) - .setNegativeButton(R.string.cancel, (dialog, which) -> dialog.dismiss()) - .show(); - }); - findViewById(R.id.quote_button).setOnClickListener(view -> { - boolean hadTextSelection = editText.hasSelection(); - getText().insert(editText.getSelectionStart(), "[quote]"); - getText().insert(editText.getSelectionEnd(), "[/quote]"); - editText.setSelection(hadTextSelection ? editText.getSelectionEnd() : editText.getSelectionStart() - 8); - }); - findViewById(R.id.code_button).setOnClickListener(view -> { - boolean hadTextSelection = editText.hasSelection(); - getText().insert(editText.getSelectionStart(), "[code]"); - getText().insert(editText.getSelectionEnd(), "[/code]"); - editText.setSelection(hadTextSelection ? editText.getSelectionEnd() : editText.getSelectionStart() - 7); - }); - findViewById(R.id.math_button).setOnClickListener(view -> { - boolean hadTextSelection = editText.hasSelection(); - getText().insert(editText.getSelectionStart(), "[tex]"); - getText().insert(editText.getSelectionEnd(), "[/tex]"); - editText.setSelection(hadTextSelection ? editText.getSelectionEnd() : editText.getSelectionStart() - 6); + emojiButton.setOnClickListener(view -> { + InputMethodManager imm = (InputMethodManager) context.getSystemService(Activity.INPUT_METHOD_SERVICE); + assert imm != null; + if (emojiKeyboardOwner.isEmojiKeyboardVisible()) { + editText.requestFocus(); + imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT); + emojiButton.setImageResource(R.drawable.ic_tag_faces_24dp); + } else { + imm.hideSoftInputFromWindow(getWindowToken(), 0); + view.clearFocus(); + emojiButton.setImageResource(R.drawable.ic_keyboard_24dp); + } + emojiKeyboardOwner.setEmojiKeyboardVisible(!emojiKeyboardOwner.isEmojiKeyboardVisible()); }); + + submitButton = findViewById(R.id.submit_button); } public TextInputEditText getEditText() { diff --git a/app/src/main/java/gr/thmmy/mthmmy/editorview/FormatButtonsAdapter.java b/app/src/main/java/gr/thmmy/mthmmy/editorview/FormatButtonsAdapter.java new file mode 100644 index 00000000..469cf2f6 --- /dev/null +++ b/app/src/main/java/gr/thmmy/mthmmy/editorview/FormatButtonsAdapter.java @@ -0,0 +1,56 @@ +package gr.thmmy.mthmmy.editorview; + +import android.support.annotation.NonNull; +import android.support.v7.widget.AppCompatImageButton; +import android.support.v7.widget.RecyclerView; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import gr.thmmy.mthmmy.R; + +public class FormatButtonsAdapter extends RecyclerView.Adapter { + private OnFormatButtonClickListener listener; + + public static final int[] FORMAT_BUTTON_IDS = {R.drawable.ic_format_bold, R.drawable.ic_format_italic, + R.drawable.ic_format_underlined, R.drawable.ic_strikethrough_s, R.drawable.ic_format_color_text, + R.drawable.ic_format_size, R.drawable.ic_text_format, R.drawable.ic_format_list_bulleted, + R.drawable.ic_format_align_left, R.drawable.ic_format_align_center, R.drawable.ic_format_align_right, + R.drawable.ic_insert_link, R.drawable.ic_format_quote, R.drawable.ic_code, R.drawable.ic_functions}; + + public FormatButtonsAdapter(OnFormatButtonClickListener listener) { + this.listener = listener; + } + + @NonNull + @Override + public FormatButtonViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + AppCompatImageButton formatButton = (AppCompatImageButton) LayoutInflater.from(parent.getContext()) + .inflate(R.layout.format_button_grid_cell, parent, false); + return new FormatButtonViewHolder(formatButton); + } + + @Override + public void onBindViewHolder(@NonNull FormatButtonViewHolder holder, int position) { + holder.formatButton.setImageResource(FORMAT_BUTTON_IDS[position]); + holder.formatButton.setOnClickListener(v -> + listener.onFormatButtonClick(v, FORMAT_BUTTON_IDS[holder.getAdapterPosition()])); + } + + @Override + public int getItemCount() { + return FORMAT_BUTTON_IDS.length; + } + + static class FormatButtonViewHolder extends RecyclerView.ViewHolder { + AppCompatImageButton formatButton; + FormatButtonViewHolder(AppCompatImageButton formatButton) { + super(formatButton); + this.formatButton = formatButton; + } + } + + public interface OnFormatButtonClickListener { + void onFormatButtonClick(View view, int drawableId); + } +} diff --git a/app/src/main/res/layout/editor_view.xml b/app/src/main/res/layout/editor_view.xml index ad649e6a..b95ecc61 100644 --- a/app/src/main/res/layout/editor_view.xml +++ b/app/src/main/res/layout/editor_view.xml @@ -4,132 +4,10 @@ android:layout_width="wrap_content" android:layout_height="wrap_content"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + android:layout_height="wrap_content"/> + \ No newline at end of file diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml index 293db5cd..a086e88b 100644 --- a/app/src/main/res/values/attrs.xml +++ b/app/src/main/res/values/attrs.xml @@ -1,9 +1,5 @@ - - - - diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index c022ce31..ea69690c 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -10,5 +10,5 @@ 16sp 24sp 24dp - 4dp + 6dp diff --git a/build.gradle b/build.gradle index ee3a2f36..65178d9a 100644 --- a/build.gradle +++ b/build.gradle @@ -8,7 +8,7 @@ buildscript { google() } dependencies { - classpath 'com.android.tools.build:gradle:3.1.4' + classpath 'com.android.tools.build:gradle:3.2.0' classpath 'com.google.gms:google-services:4.0.1' classpath 'io.fabric.tools:gradle:1.25.4' } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 3cae3bf9..07d9d5c1 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Sat Apr 07 11:11:36 EEST 2018 +#Fri Sep 28 13:21:54 EEST 2018 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip