diff --git a/app/src/main/java/org/mian/gitnex/activities/RepoDetailActivity.java b/app/src/main/java/org/mian/gitnex/activities/RepoDetailActivity.java index cbc0d25e..34f5db7a 100644 --- a/app/src/main/java/org/mian/gitnex/activities/RepoDetailActivity.java +++ b/app/src/main/java/org/mian/gitnex/activities/RepoDetailActivity.java @@ -45,6 +45,7 @@ import org.mian.gitnex.fragments.MilestonesFragment; import org.mian.gitnex.fragments.PullRequestsFragment; import org.mian.gitnex.fragments.ReleasesFragment; import org.mian.gitnex.fragments.RepoInfoFragment; +import org.mian.gitnex.fragments.WikiFragment; import org.mian.gitnex.helpers.AppUtil; import org.mian.gitnex.helpers.Toasty; import org.mian.gitnex.helpers.contexts.RepositoryContext; @@ -498,14 +499,14 @@ public class RepoDetailActivity extends BaseActivity implements BottomSheetListe break; case 4: // Releases return ReleasesFragment.newInstance(repository); - case 5: // Milestones + case 5: // Wiki + return WikiFragment.newInstance(repository); + case 6: // Milestones fragment = MilestonesFragment.newInstance(repository); break; - case 6: // Labels + case 7: // Labels return LabelsFragment.newInstance(repository); - case 7: // Collaborators - return CollaboratorsFragment.newInstance(repository); - case 8: // Wiki + case 8: // Collaborators return CollaboratorsFragment.newInstance(repository); } assert fragment != null; @@ -575,17 +576,12 @@ public class RepoDetailActivity extends BaseActivity implements BottomSheetListe viewPager.setAdapter(new ViewPagerAdapter(this)); - String[] tabTitles = {ctx.getResources().getString(R.string.tabTextInfo), ctx.getResources().getString(R.string.tabTextFiles), ctx.getResources().getString(R.string.pageTitleIssues), ctx.getResources().getString(R.string.tabPullRequests), ctx.getResources().getString(R.string.tabTextReleases), ctx.getResources().getString(R.string.tabTextMl), ctx.getResources().getString(R.string.newIssueLabelsTitle), ctx.getResources().getString(R.string.tabTextCollaborators), ctx.getResources().getString(R.string.wiki)}; + String[] tabTitles = {ctx.getResources().getString(R.string.tabTextInfo), ctx.getResources().getString(R.string.tabTextFiles), ctx.getResources().getString(R.string.pageTitleIssues), ctx.getResources().getString(R.string.tabPullRequests), ctx.getResources().getString(R.string.tabTextReleases), ctx.getResources().getString(R.string.wiki), ctx.getResources().getString(R.string.tabTextMl), ctx.getResources().getString(R.string.newIssueLabelsTitle), ctx.getResources().getString(R.string.tabTextCollaborators)}; new TabLayoutMediator(tabLayout, viewPager, (tab, position) -> tab.setText(tabTitles[position])).attach(); ViewGroup viewGroup = (ViewGroup) tabLayout.getChildAt(0); int tabsCount = viewGroup.getChildCount(); - if(getAccount().requiresVersionLess("1.16")) { - tabsCount = tabsCount - 1; - Objects.requireNonNull(tabLayout.getTabAt(8)).view.setVisibility(View.GONE); - } - for(int j = 0; j < tabsCount; j++) { ViewGroup vgTab = (ViewGroup) viewGroup.getChildAt(j); diff --git a/app/src/main/java/org/mian/gitnex/adapters/WikiListAdapter.java b/app/src/main/java/org/mian/gitnex/adapters/WikiListAdapter.java new file mode 100644 index 00000000..aaa84b93 --- /dev/null +++ b/app/src/main/java/org/mian/gitnex/adapters/WikiListAdapter.java @@ -0,0 +1,132 @@ +package org.mian.gitnex.adapters; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.graphics.Typeface; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; +import androidx.annotation.NonNull; +import androidx.core.text.HtmlCompat; +import androidx.recyclerview.widget.RecyclerView; +import com.amulyakhare.textdrawable.TextDrawable; +import com.amulyakhare.textdrawable.util.ColorGenerator; +import org.gitnex.tea4j.v2.models.WikiPageMetaData; +import org.mian.gitnex.R; +import org.mian.gitnex.helpers.ClickListener; +import org.mian.gitnex.helpers.TimeHelper; +import java.util.List; + +/** + * @author M M Arif + */ + +public class WikiListAdapter extends RecyclerView.Adapter { + + private final Context ctx; + private List wikiList; + private OnLoadMoreListener loadMoreListener; + private boolean isLoading = false, isMoreDataAvailable = true; + + public WikiListAdapter(List wikiListMain, Context ctx) { + this.ctx = ctx; + this.wikiList = wikiListMain; + } + + @NonNull + @Override + public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + LayoutInflater inflater = LayoutInflater.from(ctx); + return new WikiListAdapter.WikisHolder(inflater.inflate(R.layout.list_wiki, parent, false)); + } + + @Override + public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { + if(position >= getItemCount() - 1 && isMoreDataAvailable && !isLoading && loadMoreListener != null) { + isLoading = true; + loadMoreListener.onLoadMore(); + } + + ((WikiListAdapter.WikisHolder) holder).bindData(wikiList.get(position)); + } + + @Override + public int getItemViewType(int position) { + return position; + } + + @Override + public int getItemCount() { + return wikiList.size(); + } + + class WikisHolder extends RecyclerView.ViewHolder { + + private WikiPageMetaData wikiPageMeta; + + private final ImageView avatar; + private final TextView pageName; + private final TextView wikiLastUpdatedBy; + + WikisHolder(View itemView) { + + super(itemView); + pageName = itemView.findViewById(R.id.page_name); + avatar = itemView.findViewById(R.id.image_avatar); + wikiLastUpdatedBy = itemView.findViewById(R.id.wiki_last_updated_by); + + itemView.setOnClickListener(v -> { + }); + } + + @SuppressLint("SetTextI18n") + void bindData(WikiPageMetaData wikiPageMetaData) { + + this.wikiPageMeta = wikiPageMetaData; + + pageName.setText(wikiPageMetaData.getTitle()); + wikiLastUpdatedBy.setText( + HtmlCompat.fromHtml(ctx.getResources().getString(R.string.wikiAuthor, wikiPageMetaData.getLastCommit().getAuthor().getName(), + TimeHelper.formatTime(TimeHelper.parseIso8601(wikiPageMetaData.getLastCommit().getAuthor().getDate()), ctx.getResources().getConfiguration().locale, "pretty", + ctx)), HtmlCompat.FROM_HTML_MODE_COMPACT)); + this.wikiLastUpdatedBy.setOnClickListener(new ClickListener(TimeHelper.customDateFormatForToastDateFormat(TimeHelper.parseIso8601(wikiPageMetaData.getLastCommit().getAuthor().getDate())), ctx)); + + ColorGenerator generator = ColorGenerator.Companion.getMATERIAL(); + int color = generator.getColor(wikiPageMetaData.getTitle()); + String firstCharacter = String.valueOf(wikiPageMetaData.getTitle().charAt(0)); + + TextDrawable drawable = TextDrawable.builder().beginConfig().useFont(Typeface.DEFAULT).fontSize(18).toUpperCase().width(28).height(28).endConfig().buildRoundRect(firstCharacter, color, 3); + avatar.setImageDrawable(drawable); + } + } + + public void setMoreDataAvailable(boolean moreDataAvailable) { + isMoreDataAvailable = moreDataAvailable; + if(!isMoreDataAvailable) { + loadMoreListener.onLoadFinished(); + } + } + + @SuppressLint("NotifyDataSetChanged") + public void notifyDataChanged() { + notifyDataSetChanged(); + isLoading = false; + loadMoreListener.onLoadFinished(); + } + + public interface OnLoadMoreListener { + void onLoadMore(); + void onLoadFinished(); + } + + public void setLoadMoreListener(OnLoadMoreListener loadMoreListener) { + this.loadMoreListener = loadMoreListener; + } + + public void updateList(List list) { + wikiList = list; + notifyDataChanged(); + } +} diff --git a/app/src/main/java/org/mian/gitnex/fragments/BottomSheetRepoFragment.java b/app/src/main/java/org/mian/gitnex/fragments/BottomSheetRepoFragment.java index e958be11..c24f1420 100644 --- a/app/src/main/java/org/mian/gitnex/fragments/BottomSheetRepoFragment.java +++ b/app/src/main/java/org/mian/gitnex/fragments/BottomSheetRepoFragment.java @@ -10,12 +10,14 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import com.google.android.material.bottomsheet.BottomSheetDialogFragment; import org.mian.gitnex.actions.RepositoryActions; +import org.mian.gitnex.activities.BaseActivity; import org.mian.gitnex.databinding.BottomSheetRepoBinding; +import org.mian.gitnex.helpers.contexts.AccountContext; import org.mian.gitnex.helpers.contexts.RepositoryContext; import org.mian.gitnex.structs.BottomSheetListener; /** - * Author M M Arif + * @author M M Arif */ public class BottomSheetRepoFragment extends BottomSheetDialogFragment { @@ -33,6 +35,8 @@ public class BottomSheetRepoFragment extends BottomSheetDialogFragment { BottomSheetRepoBinding bottomSheetRepoBinding = BottomSheetRepoBinding.inflate(inflater, container, false); + AccountContext account = ((BaseActivity) requireActivity()).getAccount(); + TextView createLabel = bottomSheetRepoBinding.createLabel; TextView createIssue = bottomSheetRepoBinding.createNewIssue; TextView createMilestone = bottomSheetRepoBinding.createNewMilestone; @@ -48,6 +52,7 @@ public class BottomSheetRepoFragment extends BottomSheetDialogFragment { TextView copyRepoUrl = bottomSheetRepoBinding.copyRepoUrl; TextView repoSettings = bottomSheetRepoBinding.repoSettings; TextView createPullRequest = bottomSheetRepoBinding.createPullRequest; + TextView createWiki = bottomSheetRepoBinding.createWiki; boolean canPush = repository.getPermissions().isPush(); if(!canPush) { @@ -57,6 +62,10 @@ public class BottomSheetRepoFragment extends BottomSheetDialogFragment { newFile.setVisibility(View.GONE); } + if(account.requiresVersionLess("1.16")) { + createWiki.setVisibility(View.GONE); + } + boolean archived = repository.getRepository().isArchived(); if(archived) { createIssue.setVisibility(View.GONE); @@ -65,6 +74,7 @@ public class BottomSheetRepoFragment extends BottomSheetDialogFragment { createLabel.setVisibility(View.GONE); createRelease.setVisibility(View.GONE); newFile.setVisibility(View.GONE); + createWiki.setVisibility(View.GONE); } createLabel.setOnClickListener(v112 -> { @@ -120,11 +130,18 @@ public class BottomSheetRepoFragment extends BottomSheetDialogFragment { bmListener.onButtonClicked("addCollaborator"); dismiss(); }); + + createWiki.setOnClickListener(v1 -> { + + bmListener.onButtonClicked("createWiki"); + dismiss(); + }); } else { addCollaborator.setVisibility(View.GONE); repoSettings.setVisibility(View.GONE); + createWiki.setVisibility(View.GONE); } createRelease.setOnClickListener(v14 -> { diff --git a/app/src/main/java/org/mian/gitnex/fragments/WikiFragment.java b/app/src/main/java/org/mian/gitnex/fragments/WikiFragment.java new file mode 100644 index 00000000..682eb9c8 --- /dev/null +++ b/app/src/main/java/org/mian/gitnex/fragments/WikiFragment.java @@ -0,0 +1,112 @@ +package org.mian.gitnex.fragments; + +import android.os.Bundle; +import android.os.Handler; +import android.os.Looper; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import androidx.annotation.NonNull; +import androidx.core.content.ContextCompat; +import androidx.fragment.app.Fragment; +import androidx.lifecycle.ViewModelProvider; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; +import org.mian.gitnex.R; +import org.mian.gitnex.adapters.WikiListAdapter; +import org.mian.gitnex.databinding.FragmentWikiBinding; +import org.mian.gitnex.helpers.Constants; +import org.mian.gitnex.helpers.DividerItemDecorator; +import org.mian.gitnex.helpers.contexts.RepositoryContext; +import org.mian.gitnex.viewmodels.WikiViewModel; + +/** + * @author M M Arif + */ + +public class WikiFragment extends Fragment { + + private WikiViewModel wikiViewModel; + private FragmentWikiBinding fragmentWikiBinding; + private WikiListAdapter adapter; + private int page = 1; + private int resultLimit; + private RepositoryContext repository; + + public static WikiFragment newInstance(RepositoryContext repository) { + WikiFragment fragment = new WikiFragment(); + fragment.setArguments(repository.getBundle()); + return fragment; + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + repository = RepositoryContext.fromBundle(requireArguments()); + } + + @Override + public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + + fragmentWikiBinding = FragmentWikiBinding.inflate(inflater, container, false); + setHasOptionsMenu(true); + + wikiViewModel = new ViewModelProvider(this).get(WikiViewModel.class); + + resultLimit = Constants.getCurrentResultLimit(getContext()); + + fragmentWikiBinding.recyclerView.setHasFixedSize(true); + fragmentWikiBinding.recyclerView.setLayoutManager(new LinearLayoutManager(getContext())); + + RecyclerView.ItemDecoration dividerItemDecoration = new DividerItemDecorator(ContextCompat.getDrawable(requireContext(), R.drawable.shape_list_divider)); + fragmentWikiBinding.recyclerView.addItemDecoration(dividerItemDecoration); + + fragmentWikiBinding.pullToRefresh.setOnRefreshListener(() -> new Handler(Looper.getMainLooper()).postDelayed(() -> { + + page = 1; + fragmentWikiBinding.pullToRefresh.setRefreshing(false); + fetchDataAsync(repository.getOwner(), repository.getName()); + fragmentWikiBinding.progressBar.setVisibility(View.VISIBLE); + }, 50)); + + fetchDataAsync(repository.getOwner(), repository.getName()); + + return fragmentWikiBinding.getRoot(); + }; + + private void fetchDataAsync(String owner, String repo) { + + wikiViewModel.getWiki(owner, repo, page, resultLimit, getContext(), fragmentWikiBinding).observe(getViewLifecycleOwner(), wikiListMain -> { + + adapter = new WikiListAdapter(wikiListMain, getContext()); + adapter.setLoadMoreListener(new WikiListAdapter.OnLoadMoreListener() { + + @Override + public void onLoadMore() { + + page += 1; + wikiViewModel.loadMoreWiki(repository.getOwner(), repository.getName(), page, resultLimit, getContext(), fragmentWikiBinding, adapter); + fragmentWikiBinding.progressBar.setVisibility(View.VISIBLE); + } + + @Override + public void onLoadFinished() { + + fragmentWikiBinding.progressBar.setVisibility(View.GONE); + } + }); + + if(adapter.getItemCount() > 0) { + fragmentWikiBinding.recyclerView.setAdapter(adapter); + fragmentWikiBinding.noData.setVisibility(View.GONE); + } + else { + adapter.notifyDataChanged(); + fragmentWikiBinding.recyclerView.setAdapter(adapter); + fragmentWikiBinding.noData.setVisibility(View.VISIBLE); + } + + fragmentWikiBinding.progressBar.setVisibility(View.GONE); + }); + } +} diff --git a/app/src/main/java/org/mian/gitnex/viewmodels/WikiViewModel.java b/app/src/main/java/org/mian/gitnex/viewmodels/WikiViewModel.java new file mode 100644 index 00000000..d613d0cc --- /dev/null +++ b/app/src/main/java/org/mian/gitnex/viewmodels/WikiViewModel.java @@ -0,0 +1,117 @@ +package org.mian.gitnex.viewmodels; + +import android.content.Context; +import android.util.Log; +import android.view.View; +import androidx.annotation.NonNull; +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; +import androidx.lifecycle.ViewModel; +import org.gitnex.tea4j.v2.models.WikiPageMetaData; +import org.json.JSONException; +import org.json.JSONObject; +import org.mian.gitnex.R; +import org.mian.gitnex.adapters.WikiListAdapter; +import org.mian.gitnex.clients.RetrofitClient; +import org.mian.gitnex.databinding.FragmentWikiBinding; +import org.mian.gitnex.helpers.Toasty; +import java.io.IOException; +import java.util.List; +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; + +/** + * @author M M Arif + */ + +public class WikiViewModel extends ViewModel { + + private MutableLiveData> wikiList; + + public LiveData> getWiki(String owner, String repo, int page, int resultLimit, Context ctx, FragmentWikiBinding fragmentWikiBinding) { + + wikiList = new MutableLiveData<>(); + loadWikiList(owner, repo, page, resultLimit, ctx, fragmentWikiBinding); + + return wikiList; + } + + public void loadWikiList(String owner, String repo, int page, int resultLimit, Context ctx, FragmentWikiBinding fragmentWikiBinding) { + + Call> call; + call = RetrofitClient.getApiInterface(ctx).repoGetWikiPages(owner, repo, page, resultLimit); + + call.enqueue(new Callback<>() { + + @Override + public void onResponse(@NonNull Call> call, @NonNull Response> response) { + + if(response.isSuccessful()) { + if(response.code() == 200) { + wikiList.postValue(response.body()); + } + } + else if(response.code() == 404) { + fragmentWikiBinding.progressBar.setVisibility(View.GONE); + fragmentWikiBinding.noData.setVisibility(View.VISIBLE); + fragmentWikiBinding.recyclerView.setVisibility(View.GONE); + } + else { + Toasty.error(ctx, ctx.getString(R.string.genericError)); + } + + try { + if(response.errorBody() != null) { + new JSONObject(response.errorBody().string()); + } + } + catch(IOException | JSONException e) { + fragmentWikiBinding.noData.setText(ctx.getResources().getString(R.string.apiNotFound)); + } + } + + @Override + public void onFailure(@NonNull Call> call, @NonNull Throwable t) { + + Toasty.error(ctx, ctx.getString(R.string.genericServerResponseError)); + } + }); + } + + public void loadMoreWiki(String owner, String repo, int page, int resultLimit, Context ctx, FragmentWikiBinding fragmentWikiBinding, WikiListAdapter adapter) { + + Call> call; + call = RetrofitClient.getApiInterface(ctx).repoGetWikiPages(owner, repo, page, resultLimit); + + call.enqueue(new Callback<>() { + + @Override + public void onResponse(@NonNull Call> call, @NonNull Response> response) { + + if(response.isSuccessful()) { + List list = wikiList.getValue(); + assert list != null; + assert response.body() != null; + + if(response.body().size() != 0) { + list.addAll(response.body()); + adapter.updateList(list); + } + else { + adapter.setMoreDataAvailable(false); + } + } + else { + Toasty.error(ctx, ctx.getString(R.string.genericError)); + } + } + + @Override + public void onFailure(@NonNull Call> call, @NonNull Throwable t) { + + Toasty.error(ctx, ctx.getString(R.string.genericServerResponseError)); + } + }); + } +} diff --git a/app/src/main/res/layout/bottom_sheet_admin_users.xml b/app/src/main/res/layout/bottom_sheet_admin_users.xml index 912c5625..01b0dac6 100644 --- a/app/src/main/res/layout/bottom_sheet_admin_users.xml +++ b/app/src/main/res/layout/bottom_sheet_admin_users.xml @@ -49,7 +49,7 @@ android:id="@+id/createNewUser" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" android:gravity="center" app:layout_alignSelf="flex_start" diff --git a/app/src/main/res/layout/bottom_sheet_drafts.xml b/app/src/main/res/layout/bottom_sheet_drafts.xml index 1964229a..8be6a450 100644 --- a/app/src/main/res/layout/bottom_sheet_drafts.xml +++ b/app/src/main/res/layout/bottom_sheet_drafts.xml @@ -49,7 +49,7 @@ android:id="@+id/deleteAllDrafts" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" android:gravity="center" app:layout_alignSelf="flex_start" diff --git a/app/src/main/res/layout/bottom_sheet_file_viewer.xml b/app/src/main/res/layout/bottom_sheet_file_viewer.xml index 725f02dc..2d8138b2 100644 --- a/app/src/main/res/layout/bottom_sheet_file_viewer.xml +++ b/app/src/main/res/layout/bottom_sheet_file_viewer.xml @@ -49,7 +49,7 @@ android:id="@+id/editFile" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" android:gravity="center" app:layout_alignSelf="flex_start" @@ -62,7 +62,7 @@ android:id="@+id/deleteFile" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" android:gravity="center" app:layout_alignSelf="flex_start" @@ -75,7 +75,7 @@ android:id="@+id/downloadFile" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" android:gravity="center" app:layout_alignSelf="flex_start" diff --git a/app/src/main/res/layout/bottom_sheet_issue_comments.xml b/app/src/main/res/layout/bottom_sheet_issue_comments.xml index 418f5e90..1c57ff52 100644 --- a/app/src/main/res/layout/bottom_sheet_issue_comments.xml +++ b/app/src/main/res/layout/bottom_sheet_issue_comments.xml @@ -64,7 +64,7 @@ android:id="@+id/commentMenuEdit" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" android:gravity="center" app:layout_alignSelf="flex_start" @@ -77,7 +77,7 @@ android:id="@+id/commentMenuDelete" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" android:gravity="center" app:layout_alignSelf="flex_start" @@ -90,7 +90,7 @@ android:id="@+id/commentMenuQuote" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" android:gravity="center" app:layout_alignSelf="flex_start" @@ -103,7 +103,7 @@ android:id="@+id/commentMenuCopy" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" android:gravity="center" app:layout_alignSelf="flex_start" @@ -134,7 +134,7 @@ android:id="@+id/issueCommentCopyUrl" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" android:gravity="center" app:layout_alignSelf="flex_start" @@ -147,7 +147,7 @@ android:id="@+id/issueCommentShare" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" android:gravity="center" app:layout_alignSelf="flex_start" @@ -160,7 +160,7 @@ android:id="@+id/open" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" android:gravity="center" app:layout_alignSelf="flex_start" diff --git a/app/src/main/res/layout/bottom_sheet_issues_filter.xml b/app/src/main/res/layout/bottom_sheet_issues_filter.xml index 8da5c398..7ddd0be7 100644 --- a/app/src/main/res/layout/bottom_sheet_issues_filter.xml +++ b/app/src/main/res/layout/bottom_sheet_issues_filter.xml @@ -49,7 +49,7 @@ android:id="@+id/filterByMilestone" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" android:gravity="center" app:layout_alignSelf="flex_start" @@ -62,7 +62,7 @@ android:id="@+id/openIssues" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" android:gravity="center" app:layout_alignSelf="flex_start" @@ -75,7 +75,7 @@ android:id="@+id/closedIssues" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" android:gravity="center" app:layout_alignSelf="flex_start" diff --git a/app/src/main/res/layout/bottom_sheet_labels_in_list.xml b/app/src/main/res/layout/bottom_sheet_labels_in_list.xml index 3978fc6a..65de6606 100644 --- a/app/src/main/res/layout/bottom_sheet_labels_in_list.xml +++ b/app/src/main/res/layout/bottom_sheet_labels_in_list.xml @@ -49,7 +49,7 @@ android:id="@+id/labelMenuEdit" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" android:gravity="center" app:layout_alignSelf="flex_start" @@ -62,7 +62,7 @@ android:id="@+id/labelMenuDelete" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" android:gravity="center" app:layout_alignSelf="flex_start" diff --git a/app/src/main/res/layout/bottom_sheet_milestones_filter.xml b/app/src/main/res/layout/bottom_sheet_milestones_filter.xml index fae951eb..c4ff33c6 100644 --- a/app/src/main/res/layout/bottom_sheet_milestones_filter.xml +++ b/app/src/main/res/layout/bottom_sheet_milestones_filter.xml @@ -49,7 +49,7 @@ android:id="@+id/openMilestone" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" android:gravity="center" app:layout_alignSelf="flex_start" @@ -62,7 +62,7 @@ android:id="@+id/closedMilestone" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" android:gravity="center" app:layout_alignSelf="flex_start" diff --git a/app/src/main/res/layout/bottom_sheet_milestones_in_list.xml b/app/src/main/res/layout/bottom_sheet_milestones_in_list.xml index 427c5e89..5b884e7a 100644 --- a/app/src/main/res/layout/bottom_sheet_milestones_in_list.xml +++ b/app/src/main/res/layout/bottom_sheet_milestones_in_list.xml @@ -49,7 +49,7 @@ android:id="@+id/closeMilestone" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" android:gravity="center" app:layout_alignSelf="flex_start" @@ -62,7 +62,7 @@ android:id="@+id/openMilestone" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" android:gravity="center" app:layout_alignSelf="flex_start" diff --git a/app/src/main/res/layout/bottom_sheet_my_issues_filter.xml b/app/src/main/res/layout/bottom_sheet_my_issues_filter.xml index 8fa725d5..475cc78e 100644 --- a/app/src/main/res/layout/bottom_sheet_my_issues_filter.xml +++ b/app/src/main/res/layout/bottom_sheet_my_issues_filter.xml @@ -49,7 +49,7 @@ android:id="@+id/openMyIssues" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" android:gravity="center" app:layout_alignSelf="flex_start" @@ -62,7 +62,7 @@ android:id="@+id/closedMyIssues" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" app:layout_alignSelf="flex_start" android:gravity="center" @@ -75,7 +75,7 @@ android:id="@+id/assignedToMe" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" app:layout_alignSelf="flex_start" android:gravity="center" diff --git a/app/src/main/res/layout/bottom_sheet_notifications.xml b/app/src/main/res/layout/bottom_sheet_notifications.xml index 912582e3..47efa094 100644 --- a/app/src/main/res/layout/bottom_sheet_notifications.xml +++ b/app/src/main/res/layout/bottom_sheet_notifications.xml @@ -48,7 +48,7 @@ android:id="@+id/markPinned" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" android:gravity="center" app:layout_alignSelf="flex_start" @@ -61,7 +61,7 @@ android:id="@+id/markRead" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" android:gravity="center" app:layout_alignSelf="flex_start" @@ -74,7 +74,7 @@ android:id="@+id/markUnread" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" android:gravity="center" app:layout_alignSelf="flex_start" diff --git a/app/src/main/res/layout/bottom_sheet_notifications_filter.xml b/app/src/main/res/layout/bottom_sheet_notifications_filter.xml index 15f762d4..6bdbfacf 100644 --- a/app/src/main/res/layout/bottom_sheet_notifications_filter.xml +++ b/app/src/main/res/layout/bottom_sheet_notifications_filter.xml @@ -49,7 +49,7 @@ android:id="@+id/unreadNotifications" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" android:gravity="center" app:layout_alignSelf="flex_start" @@ -62,7 +62,7 @@ android:id="@+id/readNotifications" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" android:gravity="center" app:layout_alignSelf="flex_start" diff --git a/app/src/main/res/layout/bottom_sheet_organization.xml b/app/src/main/res/layout/bottom_sheet_organization.xml index 718d8a37..3daa9bf5 100644 --- a/app/src/main/res/layout/bottom_sheet_organization.xml +++ b/app/src/main/res/layout/bottom_sheet_organization.xml @@ -49,7 +49,7 @@ android:id="@+id/createRepository" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" android:gravity="center" app:layout_alignSelf="flex_start" @@ -62,7 +62,7 @@ android:id="@+id/createTeam" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" app:layout_alignSelf="flex_start" android:gravity="center" @@ -75,7 +75,7 @@ android:id="@+id/createLabel" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" app:layout_alignSelf="flex_start" android:gravity="center" diff --git a/app/src/main/res/layout/bottom_sheet_organization_teams.xml b/app/src/main/res/layout/bottom_sheet_organization_teams.xml index 223f6c40..0fa38752 100644 --- a/app/src/main/res/layout/bottom_sheet_organization_teams.xml +++ b/app/src/main/res/layout/bottom_sheet_organization_teams.xml @@ -49,7 +49,7 @@ android:id="@+id/addRepo" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" android:gravity="center" app:layout_alignSelf="flex_start" @@ -62,7 +62,7 @@ android:id="@+id/addNewMember" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" android:gravity="center" app:layout_alignSelf="flex_start" diff --git a/app/src/main/res/layout/bottom_sheet_profile.xml b/app/src/main/res/layout/bottom_sheet_profile.xml index 33f33f6e..3d07bfcc 100644 --- a/app/src/main/res/layout/bottom_sheet_profile.xml +++ b/app/src/main/res/layout/bottom_sheet_profile.xml @@ -49,7 +49,7 @@ android:id="@+id/addNewEmailAddress" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" android:gravity="center" app:layout_alignSelf="flex_start" diff --git a/app/src/main/res/layout/bottom_sheet_pull_request_filter.xml b/app/src/main/res/layout/bottom_sheet_pull_request_filter.xml index 5d059360..8d1665e9 100644 --- a/app/src/main/res/layout/bottom_sheet_pull_request_filter.xml +++ b/app/src/main/res/layout/bottom_sheet_pull_request_filter.xml @@ -49,7 +49,7 @@ android:id="@+id/openPr" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" android:gravity="center" app:layout_alignSelf="flex_start" @@ -62,7 +62,7 @@ android:id="@+id/closedPr" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" android:gravity="center" app:layout_alignSelf="flex_start" diff --git a/app/src/main/res/layout/bottom_sheet_release_in_list.xml b/app/src/main/res/layout/bottom_sheet_release_in_list.xml index 99723f19..4ef50f61 100644 --- a/app/src/main/res/layout/bottom_sheet_release_in_list.xml +++ b/app/src/main/res/layout/bottom_sheet_release_in_list.xml @@ -49,7 +49,7 @@ android:id="@+id/deleteRelease" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" android:gravity="center" app:layout_alignSelf="flex_start" diff --git a/app/src/main/res/layout/bottom_sheet_releases_tags.xml b/app/src/main/res/layout/bottom_sheet_releases_tags.xml index 83d9092e..7d5cba78 100644 --- a/app/src/main/res/layout/bottom_sheet_releases_tags.xml +++ b/app/src/main/res/layout/bottom_sheet_releases_tags.xml @@ -49,7 +49,7 @@ android:id="@+id/releases" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" android:gravity="center" app:layout_alignSelf="flex_start" @@ -62,7 +62,7 @@ android:id="@+id/tags" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" android:gravity="center" app:layout_alignSelf="flex_start" diff --git a/app/src/main/res/layout/bottom_sheet_repo.xml b/app/src/main/res/layout/bottom_sheet_repo.xml index 9aeed7c2..c21e16a3 100644 --- a/app/src/main/res/layout/bottom_sheet_repo.xml +++ b/app/src/main/res/layout/bottom_sheet_repo.xml @@ -49,7 +49,7 @@ android:id="@+id/newFile" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" android:gravity="center" app:layout_alignSelf="flex_start" @@ -62,7 +62,7 @@ android:id="@+id/createNewIssue" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" app:layout_alignSelf="flex_start" android:gravity="center" @@ -75,7 +75,7 @@ android:id="@+id/createLabel" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" app:layout_alignSelf="flex_start" android:gravity="center" @@ -88,7 +88,7 @@ android:id="@+id/createNewMilestone" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" app:layout_alignSelf="flex_start" android:gravity="center" @@ -101,7 +101,7 @@ android:id="@+id/createRelease" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" app:layout_alignSelf="flex_start" android:gravity="center" @@ -114,7 +114,7 @@ android:id="@+id/createPullRequest" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" app:layout_alignSelf="flex_start" android:gravity="center" @@ -127,7 +127,7 @@ android:id="@+id/addCollaborator" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" app:layout_alignSelf="flex_start" android:gravity="center" @@ -140,7 +140,7 @@ android:id="@+id/create_wiki" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" app:layout_alignSelf="flex_start" android:gravity="center" @@ -189,7 +189,7 @@ android:id="@+id/starRepository" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" app:layout_alignSelf="flex_start" android:gravity="center" @@ -202,7 +202,7 @@ android:id="@+id/unStarRepository" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" app:layout_alignSelf="flex_start" android:gravity="center" @@ -215,7 +215,7 @@ android:id="@+id/watchRepository" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" app:layout_alignSelf="flex_start" android:gravity="center" @@ -228,7 +228,7 @@ android:id="@+id/unWatchRepository" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" app:layout_alignSelf="flex_start" android:gravity="center" @@ -241,7 +241,7 @@ android:id="@+id/copyRepoUrl" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" app:layout_alignSelf="flex_start" android:gravity="center" @@ -254,7 +254,7 @@ android:id="@+id/shareRepository" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" app:layout_alignSelf="flex_start" android:gravity="center" @@ -267,7 +267,7 @@ android:id="@+id/openWebRepo" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" app:layout_alignSelf="flex_start" android:gravity="center" @@ -280,7 +280,7 @@ android:id="@+id/repoSettings" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" app:layout_alignSelf="flex_start" android:gravity="center" diff --git a/app/src/main/res/layout/bottom_sheet_single_issue.xml b/app/src/main/res/layout/bottom_sheet_single_issue.xml index 48f68b24..b91dac6f 100644 --- a/app/src/main/res/layout/bottom_sheet_single_issue.xml +++ b/app/src/main/res/layout/bottom_sheet_single_issue.xml @@ -64,7 +64,7 @@ android:id="@+id/openFilesDiff" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" android:gravity="center" app:layout_alignSelf="flex_start" @@ -78,7 +78,7 @@ android:id="@+id/mergePullRequest" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" android:gravity="center" app:layout_alignSelf="flex_start" @@ -92,7 +92,7 @@ android:id="@+id/updatePullRequest" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" android:gravity="center" app:layout_alignSelf="flex_start" @@ -106,7 +106,7 @@ android:id="@+id/deletePrHeadBranch" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" android:gravity="center" app:layout_alignSelf="flex_start" @@ -119,7 +119,7 @@ android:id="@+id/editIssue" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" android:gravity="center" app:layout_alignSelf="flex_start" @@ -132,7 +132,7 @@ android:id="@+id/addRemoveAssignees" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" android:gravity="center" app:layout_alignSelf="flex_start" @@ -145,7 +145,7 @@ android:id="@+id/editLabels" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" android:gravity="center" app:layout_alignSelf="flex_start" @@ -158,7 +158,7 @@ android:id="@+id/subscribeIssue" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" android:gravity="center" app:layout_alignSelf="flex_start" @@ -171,7 +171,7 @@ android:id="@+id/unsubscribeIssue" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" android:gravity="center" app:layout_alignSelf="flex_start" @@ -185,7 +185,7 @@ android:id="@+id/closeIssue" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" android:gravity="center" app:layout_alignSelf="flex_start" @@ -216,7 +216,7 @@ android:id="@+id/copyIssueUrl" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" android:gravity="center" app:layout_alignSelf="flex_start" @@ -229,7 +229,7 @@ android:id="@+id/shareIssue" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" android:gravity="center" app:layout_alignSelf="flex_start" @@ -242,7 +242,7 @@ android:id="@+id/open" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" android:gravity="center" app:layout_alignSelf="flex_start" diff --git a/app/src/main/res/layout/bottom_sheet_tag_in_list.xml b/app/src/main/res/layout/bottom_sheet_tag_in_list.xml index f0d95994..5210e112 100644 --- a/app/src/main/res/layout/bottom_sheet_tag_in_list.xml +++ b/app/src/main/res/layout/bottom_sheet_tag_in_list.xml @@ -49,7 +49,7 @@ android:id="@+id/tagMenuDelete" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" android:gravity="center" app:layout_alignSelf="flex_start" diff --git a/app/src/main/res/layout/bottom_sheet_user_profile.xml b/app/src/main/res/layout/bottom_sheet_user_profile.xml index 301255ed..3ff90c45 100644 --- a/app/src/main/res/layout/bottom_sheet_user_profile.xml +++ b/app/src/main/res/layout/bottom_sheet_user_profile.xml @@ -49,7 +49,7 @@ android:id="@+id/followUser" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" android:gravity="center" app:layout_alignSelf="flex_start" @@ -62,7 +62,7 @@ android:id="@+id/unfollowUser" android:layout_width="98dp" android:layout_height="100dp" - android:padding="8dp" + android:padding="4dp" android:background="?android:attr/selectableItemBackgroundBorderless" android:gravity="center" app:layout_alignSelf="flex_start" diff --git a/app/src/main/res/layout/fragment_wiki.xml b/app/src/main/res/layout/fragment_wiki.xml new file mode 100644 index 00000000..53b50e5e --- /dev/null +++ b/app/src/main/res/layout/fragment_wiki.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/list_wiki.xml b/app/src/main/res/layout/list_wiki.xml new file mode 100644 index 00000000..36d298da --- /dev/null +++ b/app/src/main/res/layout/list_wiki.xml @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 26eeeb12..b5bbeb76 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -769,4 +769,5 @@ Wiki + %1$s updated %2$s]]>