From bf808502c0f2bf993d957bafab7c8e8daff7674a Mon Sep 17 00:00:00 2001 From: Kosh Date: Sat, 11 Mar 2017 19:37:22 +0800 Subject: [PATCH] added badges for repos to close #86 and made a separate commits filter by branch to improve #118 and #100 --- .../adapter/viewholder/ReposViewHolder.java | 17 ++++- .../modules/repos/code/RepoCodePagerMvp.java | 4 -- .../modules/repos/code/RepoCodePagerView.java | 10 --- .../repos/code/commit/RepoCommitsMvp.java | 13 +++- .../code/commit/RepoCommitsPresenter.java | 27 +++++++- .../repos/code/commit/RepoCommitsView.java | 67 ++++++++++++++++++- .../code/files/paths/RepoFilePathView.java | 10 --- .../layout/commit_with_branch_layout.xml | 56 ++++++++++++++++ app/src/main/res/values/strings.xml | 1 + 9 files changed, 173 insertions(+), 32 deletions(-) create mode 100644 app/src/main/res/layouts/main_layouts/layout/commit_with_branch_layout.xml diff --git a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/ReposViewHolder.java b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/ReposViewHolder.java index 778c5e18..e679ac01 100644 --- a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/ReposViewHolder.java +++ b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/ReposViewHolder.java @@ -10,12 +10,14 @@ import com.fastaccess.data.dao.RepoModel; import com.fastaccess.helper.ParseDateFormat; import com.fastaccess.ui.widgets.AvatarLayout; import com.fastaccess.ui.widgets.FontTextView; +import com.fastaccess.ui.widgets.RoundBackgroundSpan; import com.fastaccess.ui.widgets.SpannableBuilder; import com.fastaccess.ui.widgets.recyclerview.BaseRecyclerAdapter; import com.fastaccess.ui.widgets.recyclerview.BaseViewHolder; import java.text.NumberFormat; +import butterknife.BindColor; import butterknife.BindString; import butterknife.BindView; @@ -31,6 +33,9 @@ public class ReposViewHolder extends BaseViewHolder { @BindView(R.id.forks) FontTextView forks; @Nullable @BindView(R.id.avatarLayout) AvatarLayout avatarLayout; @BindString(R.string.forked) String forked; + @BindString(R.string.private_repo) String privateRepo; + @BindColor(R.color.material_indigo_700) int forkColor; + @BindColor(R.color.material_deep_purple_700) int privateColor; private boolean isStarred; private boolean withImage; @@ -50,8 +55,16 @@ public class ReposViewHolder extends BaseViewHolder { } @Override public void bind(@NonNull RepoModel repo) { - if (repo.isFork()) { - title.setText(SpannableBuilder.builder().bold(forked).append(" ").append(repo.getName())); + if (repo.isFork() && !isStarred) { + title.setText(SpannableBuilder.builder() + .append(" " + forked + " ", new RoundBackgroundSpan(forkColor, 5)) + .append(" ") + .append(repo.getName())); + } else if (repo.isPrivateX()) { + title.setText(SpannableBuilder.builder() + .append(" " + privateRepo + " ", new RoundBackgroundSpan(forkColor, 5)) + .append(" ") + .append(repo.getName())); } else { title.setText(!isStarred ? repo.getName() : repo.getFullName()); } diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/code/RepoCodePagerMvp.java b/app/src/main/java/com/fastaccess/ui/modules/repos/code/RepoCodePagerMvp.java index 4e3818fd..88c55dc9 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/repos/code/RepoCodePagerMvp.java +++ b/app/src/main/java/com/fastaccess/ui/modules/repos/code/RepoCodePagerMvp.java @@ -1,7 +1,5 @@ package com.fastaccess.ui.modules.repos.code; -import android.support.annotation.NonNull; - import com.fastaccess.ui.base.mvp.BaseMvp; /** @@ -14,8 +12,6 @@ public interface RepoCodePagerMvp { boolean canPressBack(); void onBackPressed(); - - void onBranchChanged(@NonNull String branch); } interface Presenter extends BaseMvp.FAPresenter {} diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/code/RepoCodePagerView.java b/app/src/main/java/com/fastaccess/ui/modules/repos/code/RepoCodePagerView.java index e3e97f5d..5e7db2ee 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/repos/code/RepoCodePagerView.java +++ b/app/src/main/java/com/fastaccess/ui/modules/repos/code/RepoCodePagerView.java @@ -14,7 +14,6 @@ import com.fastaccess.helper.Bundler; import com.fastaccess.helper.InputHelper; import com.fastaccess.ui.adapter.FragmentsPagerAdapter; import com.fastaccess.ui.base.BaseFragment; -import com.fastaccess.ui.modules.repos.code.commit.RepoCommitsView; import com.fastaccess.ui.modules.repos.code.files.paths.RepoFilePathView; import com.fastaccess.ui.widgets.ViewPagerView; @@ -78,13 +77,4 @@ public class RepoCodePagerView extends BaseFragment branches, boolean firstTime); + + void showBranchesProgress(); + + void hideBranchesProgress(); } interface Presenter extends BaseMvp.FAPresenter, @@ -32,8 +38,13 @@ interface RepoCommitsMvp { @NonNull ArrayList getCommits(); + @NonNull ArrayList getBranches(); + void onWorkOffline(); void onBranchChanged(@NonNull String branch); + + String getDefaultBranch(); + } } diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/code/commit/RepoCommitsPresenter.java b/app/src/main/java/com/fastaccess/ui/modules/repos/code/commit/RepoCommitsPresenter.java index 0dd440c3..72016d3d 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/repos/code/commit/RepoCommitsPresenter.java +++ b/app/src/main/java/com/fastaccess/ui/modules/repos/code/commit/RepoCommitsPresenter.java @@ -6,10 +6,10 @@ import android.support.annotation.Nullable; import android.text.TextUtils; import android.view.View; +import com.fastaccess.data.dao.BranchesModel; import com.fastaccess.data.dao.CommitModel; import com.fastaccess.helper.BundleConstant; import com.fastaccess.helper.InputHelper; -import com.fastaccess.helper.Logger; import com.fastaccess.helper.RxHelper; import com.fastaccess.provider.rest.RestProvider; import com.fastaccess.ui.base.mvp.BaseMvp; @@ -25,6 +25,7 @@ import java.util.ArrayList; class RepoCommitsPresenter extends BasePresenter implements RepoCommitsMvp.Presenter { private ArrayList commits = new ArrayList<>(); + private ArrayList branches = new ArrayList<>(); private String login; private String repoId; private String branch; @@ -80,7 +81,21 @@ class RepoCommitsPresenter extends BasePresenter implements repoId = bundle.getString(BundleConstant.ID); login = bundle.getString(BundleConstant.EXTRA); branch = bundle.getString(BundleConstant.EXTRA_TWO); - Logger.e(branch); + if (branches.isEmpty()) { + makeRestCall(RestProvider.getRepoService() + .getBranches(login, repoId) + .doOnSubscribe(() -> sendToView(RepoCommitsMvp.View::showBranchesProgress)), + response -> { + if (response != null && response.getItems() != null) { + branches.clear(); + branches.addAll(response.getItems()); + sendToView(view -> { + view.setBranchesData(branches, true); + view.hideBranchesProgress(); + }); + } + }); + } if (!InputHelper.isEmpty(login) && !InputHelper.isEmpty(repoId)) { onCallApi(1, null); } @@ -90,6 +105,10 @@ class RepoCommitsPresenter extends BasePresenter implements return commits; } + @NonNull @Override public ArrayList getBranches() { + return branches; + } + @Override public void onWorkOffline() { if (commits.isEmpty()) { manageSubscription(RxHelper.getObserver(CommitModel.getCommits(repoId, login)) @@ -109,6 +128,10 @@ class RepoCommitsPresenter extends BasePresenter implements } } + @Override public String getDefaultBranch() { + return branch; + } + @Override public void onItemClick(int position, View v, CommitModel item) { CommitPagerView.createIntentForOffline(v.getContext(), item); } diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/code/commit/RepoCommitsView.java b/app/src/main/java/com/fastaccess/ui/modules/repos/code/commit/RepoCommitsView.java index 645fd37f..ee00465b 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/repos/code/commit/RepoCommitsView.java +++ b/app/src/main/java/com/fastaccess/ui/modules/repos/code/commit/RepoCommitsView.java @@ -1,22 +1,32 @@ package com.fastaccess.ui.modules.repos.code.commit; +import android.content.Context; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.annotation.StringRes; import android.support.v4.widget.SwipeRefreshLayout; +import android.support.v7.widget.AppCompatSpinner; import android.view.View; +import android.widget.ArrayAdapter; +import android.widget.ProgressBar; import com.fastaccess.R; +import com.fastaccess.data.dao.BranchesModel; import com.fastaccess.helper.BundleConstant; import com.fastaccess.helper.Bundler; +import com.fastaccess.helper.InputHelper; import com.fastaccess.provider.rest.loadmore.OnLoadMore; import com.fastaccess.ui.adapter.CommitsAdapter; import com.fastaccess.ui.base.BaseFragment; +import com.fastaccess.ui.modules.repos.RepoPagerMvp; import com.fastaccess.ui.widgets.StateLayout; import com.fastaccess.ui.widgets.recyclerview.DynamicRecyclerView; +import java.util.List; + import butterknife.BindView; +import butterknife.OnItemSelected; /** * Created by Kosh on 03 Dec 2016, 3:56 PM @@ -26,8 +36,11 @@ public class RepoCommitsView extends BaseFragment branchesData, boolean firstTime) { + branchesProgress.setVisibility(View.GONE); + ArrayAdapter adapter = new ArrayAdapter<>(getContext(), android.R.layout.simple_spinner_item, branchesData); + adapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line); + branches.setAdapter(adapter); + if (firstTime) { + if (!InputHelper.isEmpty(getPresenter().getDefaultBranch())) { + int index = -1; + for (int i = 0; i < branchesData.size(); i++) { + if (branchesData.get(i).getName().equals(getPresenter().getDefaultBranch())) { + index = i; + break; + } + } + if (index != -1) { + branches.setSelection(index, true); + } + } + } + } + + @Override public void showBranchesProgress() { + branchesProgress.setVisibility(View.VISIBLE); + } + + @Override public void hideBranchesProgress() { + branchesProgress.setVisibility(View.GONE); } @Override public void onRefresh() { diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/code/files/paths/RepoFilePathView.java b/app/src/main/java/com/fastaccess/ui/modules/repos/code/files/paths/RepoFilePathView.java index 02971804..7b4217cc 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/repos/code/files/paths/RepoFilePathView.java +++ b/app/src/main/java/com/fastaccess/ui/modules/repos/code/files/paths/RepoFilePathView.java @@ -22,7 +22,6 @@ import com.fastaccess.helper.Logger; import com.fastaccess.ui.adapter.RepoFilePathsAdapter; import com.fastaccess.ui.base.BaseFragment; import com.fastaccess.ui.modules.repos.RepoPagerMvp; -import com.fastaccess.ui.modules.repos.code.RepoCodePagerMvp; import com.fastaccess.ui.modules.repos.code.files.RepoFilesView; import java.util.List; @@ -48,7 +47,6 @@ public class RepoFilePathView extends BaseFragment + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 02f52f0e..d8a5c0b7 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -239,4 +239,5 @@ Disable pressing the back button twice to exit FastHub. Back Button Behavior Any unsaved data will be discarded. + Private \ No newline at end of file