From 9cddcb425ddb24c61f0b42c7a26c115773120499 Mon Sep 17 00:00:00 2001 From: Kosh Date: Sun, 11 Jun 2017 22:14:27 +0800 Subject: [PATCH 01/12] improved feeds again. --- .../com/fastaccess/ui/adapter/viewholder/FeedsViewHolder.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/FeedsViewHolder.java b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/FeedsViewHolder.java index c021b3d0..114c0716 100644 --- a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/FeedsViewHolder.java +++ b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/FeedsViewHolder.java @@ -214,8 +214,8 @@ public class FeedsViewHolder extends BaseViewHolder { int size = commits != null ? commits.size() : -1; SpannableBuilder spanCommits = SpannableBuilder.builder(); if (size > 0) { - if (size != 1) spanCommits.append(String.valueOf(eventsModel.getPayload().getSize())).append(" new commits").append(" "); - else spanCommits.append("1 new commit").append(" "); + if (size != 1) spanCommits.append(String.valueOf(eventsModel.getPayload().getSize())).append(" new commits").append("\n"); + else spanCommits.append("1 new commit").append("\n"); int max = 5; int appended = 0; for (GitCommitModel commit : commits) { From 9dfd76873a28e463bca5aaae5484649c95e015d9 Mon Sep 17 00:00:00 2001 From: Kosh Date: Sun, 11 Jun 2017 23:25:41 +0800 Subject: [PATCH 02/12] this commit fixes #640 and fixes #636 --- .../adapter/viewholder/FeedsViewHolder.java | 21 +++++++++---------- .../ui/modules/repos/RepoPagerActivity.java | 8 ++++++- .../ui/modules/repos/RepoPagerMvp.java | 2 ++ .../ui/modules/repos/RepoPagerPresenter.java | 2 +- .../repos/code/prettifier/ViewerFragment.java | 1 + .../code/prettifier/ViewerPresenter.java | 4 +++- .../layout/title_header_layout.xml | 1 + app/src/main/res/xml/behaviour_settings.xml | 2 +- 8 files changed, 26 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/FeedsViewHolder.java b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/FeedsViewHolder.java index 114c0716..e46a606e 100644 --- a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/FeedsViewHolder.java +++ b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/FeedsViewHolder.java @@ -214,7 +214,7 @@ public class FeedsViewHolder extends BaseViewHolder { int size = commits != null ? commits.size() : -1; SpannableBuilder spanCommits = SpannableBuilder.builder(); if (size > 0) { - if (size != 1) spanCommits.append(String.valueOf(eventsModel.getPayload().getSize())).append(" new commits").append("\n"); + if (size != 1) spanCommits.append(String.valueOf(eventsModel.getPayload().getSize())).append(" more commits").append("\n"); else spanCommits.append("1 new commit").append("\n"); int max = 5; int appended = 0; @@ -224,7 +224,7 @@ public class FeedsViewHolder extends BaseViewHolder { if (TextUtils.isEmpty(sha)) continue; sha = sha.length() > 7 ? sha.substring(0, 7) : sha; spanCommits.url(sha).append(" ") - .append(commit.getMessage() != null ? commit.getMessage().replaceAll("\\r?\\n|\\r"," ") : "") + .append(commit.getMessage() != null ? commit.getMessage().replaceAll("\\r?\\n|\\r", " ") : "") .append("\n"); appended++; if (appended == max) break; @@ -255,7 +255,7 @@ public class FeedsViewHolder extends BaseViewHolder { .bold("#") .bold(String.valueOf(pullRequest.getNumber())); if (comment.getBody() != null) { - MarkDownProvider.stripMdText(description, comment.getBody().replaceAll("\\r?\\n|\\r"," ")); + MarkDownProvider.stripMdText(description, comment.getBody().replaceAll("\\r?\\n|\\r", " ")); description.setVisibility(View.VISIBLE); } else { description.setText(""); @@ -280,7 +280,7 @@ public class FeedsViewHolder extends BaseViewHolder { .bold(String.valueOf(issue.getNumber())); if ("opened".equals(action) || "closed".equals(action)) { if (issue.getTitle() != null) { - MarkDownProvider.stripMdText(description, issue.getTitle().replaceAll("\\r?\\n|\\r"," ")); + MarkDownProvider.stripMdText(description, issue.getTitle().replaceAll("\\r?\\n|\\r", " ")); description.setVisibility(View.VISIBLE); } else { description.setText(""); @@ -325,7 +325,7 @@ public class FeedsViewHolder extends BaseViewHolder { .bold("#") .bold(String.valueOf(issue.getNumber())); if (issue.getTitle() != null) { - MarkDownProvider.stripMdText(description, issue.getTitle().replaceAll("\\r?\\n|\\r"," ")); + MarkDownProvider.stripMdText(description, issue.getTitle().replaceAll("\\r?\\n|\\r", " ")); description.setVisibility(View.VISIBLE); } else { description.setText(""); @@ -348,7 +348,7 @@ public class FeedsViewHolder extends BaseViewHolder { .bold("#") .bold(String.valueOf(issue.getNumber())); if (comment.getBody() != null) { - MarkDownProvider.stripMdText(description, comment.getBody().replaceAll("\\r?\\n|\\r"," ")); + MarkDownProvider.stripMdText(description, comment.getBody().replaceAll("\\r?\\n|\\r", " ")); description.setVisibility(View.VISIBLE); } else { description.setText(""); @@ -420,7 +420,7 @@ public class FeedsViewHolder extends BaseViewHolder { .append(" ") .append(eventsModel.getRepo().getName()); if (payloadModel.getDescription() != null) { - MarkDownProvider.stripMdText(description, payloadModel.getDescription().replaceAll("\\r?\\n|\\r"," ")); + MarkDownProvider.stripMdText(description, payloadModel.getDescription().replaceAll("\\r?\\n|\\r", " ")); description.setVisibility(View.VISIBLE); } else { description.setText(""); @@ -445,13 +445,12 @@ public class FeedsViewHolder extends BaseViewHolder { .append(" ") .bold("commit") .append(" ") - .url(commitId != null ? commitId : "") - .append(" ") .bold("in") .append(" ") - .append(eventsModel.getRepo().getName()); + .append(eventsModel.getRepo().getName()) + .url(commitId != null ? "@" + commitId : ""); if (comment != null && comment.getBody() != null) { - MarkDownProvider.stripMdText(description, comment.getBody().replaceAll("\\r?\\n|\\r"," ")); + MarkDownProvider.stripMdText(description, comment.getBody().replaceAll("\\r?\\n|\\r", " ")); description.setVisibility(View.VISIBLE); } else { description.setText(""); diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/RepoPagerActivity.java b/app/src/main/java/com/fastaccess/ui/modules/repos/RepoPagerActivity.java index ad2512fb..e3f3dbfb 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/repos/RepoPagerActivity.java +++ b/app/src/main/java/com/fastaccess/ui/modules/repos/RepoPagerActivity.java @@ -501,6 +501,12 @@ public class RepoPagerActivity extends BaseActivity implements Rep @Override public void onMenuItemSelect(@IdRes int id, int position, boolean fromUser) { if (id == R.id.issues && (getRepo() != null && !getRepo().isHasIssues())) { - sendToView(view -> view.showMessage(R.string.error, R.string.repo_issues_is_disabled)); + sendToView(RepoPagerMvp.View::disableIssueTab); return; } if (getView() != null && isViewAttached() && fromUser) { diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/code/prettifier/ViewerFragment.java b/app/src/main/java/com/fastaccess/ui/modules/repos/code/prettifier/ViewerFragment.java index 1d8061f7..3e51335e 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/repos/code/prettifier/ViewerFragment.java +++ b/app/src/main/java/com/fastaccess/ui/modules/repos/code/prettifier/ViewerFragment.java @@ -101,6 +101,7 @@ public class ViewerFragment extends BaseFragment implements ViewerMvp throwable.printStackTrace(); int code = RestProvider.getErrorCode(throwable); if (code == 404) { - sendToView(view -> view.onShowError(isRepo ? R.string.no_readme_found : R.string.no_file_found)); + if (!isRepo) { + sendToView(view -> view.onShowError(R.string.no_file_found)); + } } else { if (code == 406) { sendToView(view -> view.openUrl(url)); diff --git a/app/src/main/res/layouts/main_layouts/layout/title_header_layout.xml b/app/src/main/res/layouts/main_layouts/layout/title_header_layout.xml index a6481c39..7e070f4c 100644 --- a/app/src/main/res/layouts/main_layouts/layout/title_header_layout.xml +++ b/app/src/main/res/layouts/main_layouts/layout/title_header_layout.xml @@ -32,6 +32,7 @@ Date: Sun, 11 Jun 2017 19:49:42 +0300 Subject: [PATCH 03/12] added color picker in preference --- app/build.gradle | 1 + .../ui/widgets/ColorPickerPreference.java | 84 +++++++++++++++++++ .../main/res/xml/customization_settings.xml | 2 +- 3 files changed, 86 insertions(+), 1 deletion(-) create mode 100644 app/src/main/java/com/fastaccess/ui/widgets/ColorPickerPreference.java diff --git a/app/build.gradle b/app/build.gradle index dabffe9d..7a0dc288 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -150,6 +150,7 @@ dependencies { implementation 'org.jsoup:jsoup:1.10.2' implementation 'com.jakewharton:kotterknife:0.1.0-SNAPSHOT' implementation "com.evernote:android-state:${state_version}" + implementation "petrov.kristiyan:colorpicker-library:1.1.4" compileOnly "org.projectlombok:lombok:${lombokVersion}" kapt "io.requery:requery-processor:${requery}" kapt "org.projectlombok:lombok:${lombokVersion}" diff --git a/app/src/main/java/com/fastaccess/ui/widgets/ColorPickerPreference.java b/app/src/main/java/com/fastaccess/ui/widgets/ColorPickerPreference.java new file mode 100644 index 00000000..d5de5912 --- /dev/null +++ b/app/src/main/java/com/fastaccess/ui/widgets/ColorPickerPreference.java @@ -0,0 +1,84 @@ +package com.fastaccess.ui.widgets; + +import android.content.Context; +import android.graphics.Color; +import android.support.v7.preference.Preference; +import android.util.AttributeSet; +import android.view.View; +import android.widget.ArrayAdapter; +import android.widget.Toast; + +import com.fastaccess.R; +import com.fastaccess.helper.PrefGetter; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashMap; + +import petrov.kristiyan.colorpicker.ColorPicker; + +/** + * Created by Hamad on 6/11/17. + */ + +public class ColorPickerPreference extends Preference implements Preference.OnPreferenceClickListener, ColorPicker.OnChooseColorListener { + + private int mValue = Color.BLACK; + private ColorPicker colorPicker; + + public ColorPickerPreference(Context context) { + super(context); + init(context, null); + } + + public ColorPickerPreference(Context context, AttributeSet attrs) { + super(context, attrs); + init(context, attrs); + } + + public ColorPickerPreference(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + init(context, attrs); + } + + private void init(Context context, AttributeSet attrs) { + setOnPreferenceClickListener(this); + } + + @Override + protected void onClick() { + super.onClick(); + + /* + colors should no be setup like this must be a better way to retrive them from the theme + or from preferences + also relaying on constant integers worries me + */ + String[] colors = {"#F44336", "#E91E63", "#9C27B0", "#673AB7", "#3F51B5", "#2196F3", "#03A9F4", "#00BCD4", "#009688", "#4CAF50", "#8BC34A", "#CDDC39", "#FFEB3B", "#FFC107", "#FF9800","#FF5722"}; + colorPicker = new ColorPicker(getContext()).setRoundColorButton(true).setColors(new ArrayList<>(Arrays.asList(colors))); + colorPicker.setDefaultColorButton(Color.parseColor(colors[PrefGetter.getThemeColor(getContext()) - 1])); + colorPicker.setOnChooseColorListener(this); + colorPicker.show(); + } + + @Override + public boolean onPreferenceClick(Preference preference) { + return false; + } + + @Override + public void onChooseColor(int position, int color) { + // put code + //getOnPreferenceChangeListener().onPreferenceChange(ColorPickerPreference.this, color); + Toast.makeText(getContext(), "" + position, Toast.LENGTH_SHORT).show(); + persistString(getContext().getResources().getStringArray(R.array.theme_colors)[position]); + getOnPreferenceChangeListener().onPreferenceChange(this, getContext().getResources().getStringArray(R.array.theme_colors)[position]); + + } + + @Override + public void onCancel() { + + } +} diff --git a/app/src/main/res/xml/customization_settings.xml b/app/src/main/res/xml/customization_settings.xml index 1161f048..5d66188b 100644 --- a/app/src/main/res/xml/customization_settings.xml +++ b/app/src/main/res/xml/customization_settings.xml @@ -7,7 +7,7 @@ android:key="enable_ads" android:title="@string/enable_ads"/> - Date: Sun, 11 Jun 2017 21:44:54 +0300 Subject: [PATCH 04/12] color picker now gets colors from the arrays.xml dialog now follows theme --- .../com/fastaccess/helper/PrefGetter.java | 5 ++ .../ui/widgets/ColorPickerPreference.java | 71 +++++++++++-------- app/src/main/res/values/arrays.xml | 19 +++++ debug_gradle.properties | 4 +- 4 files changed, 66 insertions(+), 33 deletions(-) diff --git a/app/src/main/java/com/fastaccess/helper/PrefGetter.java b/app/src/main/java/com/fastaccess/helper/PrefGetter.java index f4d005f1..57e1da2c 100644 --- a/app/src/main/java/com/fastaccess/helper/PrefGetter.java +++ b/app/src/main/java/com/fastaccess/helper/PrefGetter.java @@ -256,6 +256,11 @@ public class PrefGetter { @ThemeColor private static int getThemeColor(@NonNull Resources resources) { String appColor = PrefHelper.getString("appColor"); + return getThemeColor(resources, appColor); + } + + // used for color picker to get the index of the color (enum) from the name of the color + public static int getThemeColor(@NonNull Resources resources, String appColor) { if (!InputHelper.isEmpty(appColor)) { if (appColor.equalsIgnoreCase(resources.getString(R.string.red_theme_mode))) return RED; diff --git a/app/src/main/java/com/fastaccess/ui/widgets/ColorPickerPreference.java b/app/src/main/java/com/fastaccess/ui/widgets/ColorPickerPreference.java index d5de5912..fa8bffdf 100644 --- a/app/src/main/java/com/fastaccess/ui/widgets/ColorPickerPreference.java +++ b/app/src/main/java/com/fastaccess/ui/widgets/ColorPickerPreference.java @@ -1,19 +1,15 @@ package com.fastaccess.ui.widgets; import android.content.Context; +import android.content.res.TypedArray; import android.graphics.Color; import android.support.v7.preference.Preference; import android.util.AttributeSet; -import android.view.View; -import android.widget.ArrayAdapter; -import android.widget.Toast; - import com.fastaccess.R; import com.fastaccess.helper.PrefGetter; +import com.fastaccess.helper.ViewHelper; import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; import java.util.HashMap; import petrov.kristiyan.colorpicker.ColorPicker; @@ -22,63 +18,76 @@ import petrov.kristiyan.colorpicker.ColorPicker; * Created by Hamad on 6/11/17. */ -public class ColorPickerPreference extends Preference implements Preference.OnPreferenceClickListener, ColorPicker.OnChooseColorListener { +public class ColorPickerPreference extends Preference implements ColorPicker.OnChooseColorListener { - private int mValue = Color.BLACK; private ColorPicker colorPicker; public ColorPickerPreference(Context context) { super(context); - init(context, null); + } + + public ColorPickerPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { + super(context, attrs, defStyleAttr, defStyleRes); + } + + public ColorPickerPreference(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); } public ColorPickerPreference(Context context, AttributeSet attrs) { super(context, attrs); - init(context, attrs); } - public ColorPickerPreference(Context context, AttributeSet attrs, int defStyle) { - super(context, attrs, defStyle); - init(context, attrs); - } - - private void init(Context context, AttributeSet attrs) { - setOnPreferenceClickListener(this); - } @Override protected void onClick() { super.onClick(); - /* - colors should no be setup like this must be a better way to retrive them from the theme - or from preferences - also relaying on constant integers worries me - */ - String[] colors = {"#F44336", "#E91E63", "#9C27B0", "#673AB7", "#3F51B5", "#2196F3", "#03A9F4", "#00BCD4", "#009688", "#4CAF50", "#8BC34A", "#CDDC39", "#FFEB3B", "#FFC107", "#FF9800","#FF5722"}; - colorPicker = new ColorPicker(getContext()).setRoundColorButton(true).setColors(new ArrayList<>(Arrays.asList(colors))); - colorPicker.setDefaultColorButton(Color.parseColor(colors[PrefGetter.getThemeColor(getContext()) - 1])); + int selected_color = getSelected_color(); + String title = String.format("Accent Color: (Current: %s)", getSelected_color_name()); + colorPicker = new ColorPicker(getContext()); + colorPicker.setRoundColorButton(true); + colorPicker.setColors(R.array.theme_colors_hex); + colorPicker.setDefaultColorButton(selected_color); + colorPicker.setTitle(title); + colorPicker.getPositiveButton().setTextColor(ViewHelper.getAccentColor(getContext())); + colorPicker.getNegativeButton().setTextColor(ViewHelper.getPrimaryTextColor(getContext())); colorPicker.setOnChooseColorListener(this); colorPicker.show(); } - @Override - public boolean onPreferenceClick(Preference preference) { - return false; + private int getSelected_color() { + TypedArray colorTypedArray = getContext().getResources().obtainTypedArray(R.array.theme_colors_hex); + String[] colorNames = getContext().getResources().getStringArray(R.array.theme_colors); + + ArrayList colors = new ArrayList<>(); + for (int i = 0; i < colorTypedArray.length(); i++) { + colors.add(colorTypedArray.getColor(i, 0)); + } + colorTypedArray.recycle(); + HashMap preferenceValueToColor = new HashMap<>(); + + for(int i=0; i@string/deep_orange_theme_mode + + @color/material_red_700 + @color/material_pink_700 + @color/material_purple_700 + @color/material_deep_purple_700 + @color/material_indigo_700 + @color/material_blue_700 + @color/material_light_blue_700 + @color/material_cyan_700 + @color/material_teal_700 + @color/material_green_700 + @color/material_light_green_700 + @color/material_lime_700 + @color/material_yellow_700 + @color/material_amber_700 + @color/material_orange_700 + @color/material_deep_orange_700 + + @string/created @string/assigned diff --git a/debug_gradle.properties b/debug_gradle.properties index d0ba5760..5af7314a 100644 --- a/debug_gradle.properties +++ b/debug_gradle.properties @@ -2,8 +2,8 @@ org.gradle.jvmargs=-Xmx2536M android_store_password=PASSWORD android_key_password=PASSWORD android_key_alias=ALIAS -github_client_id=GITHUB_CLIENT_ID -github_secret=GITHUB_SECRET +github_client_id=23d8f586bf170edaa301 +github_secret=3994d4f5adc909d97f82a610db692bab9244560f imgur_client_id=imgur_client_id imgur_secret=imgur_secret redirect_url=fasthub://login \ No newline at end of file From 7cdd9908a847c1035bf0c87575c37c36bfdcb280 Mon Sep 17 00:00:00 2001 From: Hamad alghanim Date: Sun, 11 Jun 2017 22:21:31 +0300 Subject: [PATCH 05/12] color widget for preferences is working now --- .../ui/widgets/ColorPickerPreference.java | 22 ++++++++++++++++++- .../layout/preference_widget_color.xml | 11 ++++++++++ .../main/res/xml/customization_settings.xml | 2 -- 3 files changed, 32 insertions(+), 3 deletions(-) create mode 100644 app/src/main/res/layouts/row_layouts/layout/preference_widget_color.xml diff --git a/app/src/main/java/com/fastaccess/ui/widgets/ColorPickerPreference.java b/app/src/main/java/com/fastaccess/ui/widgets/ColorPickerPreference.java index fa8bffdf..454892fb 100644 --- a/app/src/main/java/com/fastaccess/ui/widgets/ColorPickerPreference.java +++ b/app/src/main/java/com/fastaccess/ui/widgets/ColorPickerPreference.java @@ -3,8 +3,13 @@ package com.fastaccess.ui.widgets; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Color; +import android.graphics.PorterDuff; import android.support.v7.preference.Preference; +import android.support.v7.preference.PreferenceViewHolder; import android.util.AttributeSet; +import android.widget.Button; +import android.widget.LinearLayout; + import com.fastaccess.R; import com.fastaccess.helper.PrefGetter; import com.fastaccess.helper.ViewHelper; @@ -24,27 +29,34 @@ public class ColorPickerPreference extends Preference implements ColorPicker.OnC public ColorPickerPreference(Context context) { super(context); + init(); } public ColorPickerPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); + init(); } public ColorPickerPreference(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); + init(); } public ColorPickerPreference(Context context, AttributeSet attrs) { super(context, attrs); + init(); } + private void init() { + setWidgetLayoutResource(R.layout.preference_widget_color); + } @Override protected void onClick() { super.onClick(); int selected_color = getSelected_color(); - String title = String.format("Accent Color: (Current: %s)", getSelected_color_name()); + String title = String.format("Accent Color: (Selected: %s)", getSelected_color_name()); colorPicker = new ColorPicker(getContext()); colorPicker.setRoundColorButton(true); colorPicker.setColors(R.array.theme_colors_hex); @@ -56,6 +68,14 @@ public class ColorPickerPreference extends Preference implements ColorPicker.OnC colorPicker.show(); } + @Override + public void onBindViewHolder(PreferenceViewHolder holder) { + super.onBindViewHolder(holder); + final Button colorButton = (Button) holder.findViewById(R.id.color); + colorButton.setBackgroundResource(R.drawable.circle_shape); + colorButton.getBackground().setColorFilter(getSelected_color(), PorterDuff.Mode.SRC_IN); + } + private int getSelected_color() { TypedArray colorTypedArray = getContext().getResources().obtainTypedArray(R.array.theme_colors_hex); String[] colorNames = getContext().getResources().getStringArray(R.array.theme_colors); diff --git a/app/src/main/res/layouts/row_layouts/layout/preference_widget_color.xml b/app/src/main/res/layouts/row_layouts/layout/preference_widget_color.xml new file mode 100644 index 00000000..bc1430f3 --- /dev/null +++ b/app/src/main/res/layouts/row_layouts/layout/preference_widget_color.xml @@ -0,0 +1,11 @@ + + + +