mirror of
https://codeberg.org/gitnex/GitNex.git
synced 2025-10-05 15:52:46 +02:00
Redesign profile screen, render md in titles, improve repo info screen (#1508)
Closes #1507 Reviewed-on: https://codeberg.org/gitnex/GitNex/pulls/1508 Co-authored-by: M M Arif <mmarif@swatian.com> Co-committed-by: M M Arif <mmarif@swatian.com>
This commit is contained in:
@@ -1,15 +1,15 @@
|
||||
plugins {
|
||||
id "com.diffplug.spotless" version "7.0.3"
|
||||
id "com.diffplug.spotless" version "7.0.4"
|
||||
}
|
||||
apply plugin: 'com.android.application'
|
||||
|
||||
android {
|
||||
defaultConfig {
|
||||
applicationId "org.mian.gitnex"
|
||||
minSdkVersion 23
|
||||
targetSdkVersion 35
|
||||
versionCode 900
|
||||
versionName "9.0.0"
|
||||
minSdkVersion 26
|
||||
targetSdkVersion 36
|
||||
versionCode 995
|
||||
versionName "10.0.0-dev"
|
||||
multiDexEnabled true
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
compileSdk 35
|
||||
@@ -67,19 +67,19 @@ dependencies {
|
||||
implementation 'androidx.viewpager2:viewpager2:1.1.0'
|
||||
implementation 'androidx.constraintlayout:constraintlayout:2.2.1'
|
||||
implementation "androidx.legacy:legacy-support-v4:1.0.0"
|
||||
implementation "androidx.navigation:navigation-fragment:2.9.0"
|
||||
implementation "androidx.navigation:navigation-ui:2.9.0"
|
||||
implementation "androidx.navigation:navigation-fragment:2.9.1"
|
||||
implementation "androidx.navigation:navigation-ui:2.9.1"
|
||||
implementation "androidx.lifecycle:lifecycle-viewmodel:2.9.1"
|
||||
testImplementation 'junit:junit:4.13.2'
|
||||
androidTestImplementation 'androidx.test.ext:junit:1.2.1'
|
||||
androidTestImplementation 'androidx.test.espresso:espresso-core:3.6.1'
|
||||
implementation 'com.squareup.okhttp3:okhttp:5.0.0-alpha.14'
|
||||
implementation 'com.google.code.gson:gson:2.11.0'
|
||||
implementation 'com.squareup.okhttp3:okhttp:5.0.0-alpha.17'
|
||||
implementation 'com.google.code.gson:gson:2.13.1'
|
||||
implementation 'com.github.ramseth001:TextDrawable:1.1.3'
|
||||
implementation 'com.squareup.retrofit2:retrofit:2.11.0'
|
||||
implementation 'com.squareup.retrofit2:converter-gson:2.11.0'
|
||||
implementation 'com.squareup.retrofit2:converter-scalars:2.11.0'
|
||||
implementation 'com.squareup.okhttp3:logging-interceptor:5.0.0-alpha.14'
|
||||
implementation 'com.squareup.retrofit2:retrofit:3.0.0'
|
||||
implementation 'com.squareup.retrofit2:converter-gson:3.0.0'
|
||||
implementation 'com.squareup.retrofit2:converter-scalars:3.0.0'
|
||||
implementation 'com.squareup.okhttp3:logging-interceptor:5.0.0-alpha.17'
|
||||
implementation 'org.ocpsoft.prettytime:prettytime:5.0.7.Final'
|
||||
implementation "com.github.skydoves:colorpickerview:2.3.0"
|
||||
implementation "io.noties.markwon:core:4.6.2"
|
||||
@@ -100,14 +100,14 @@ dependencies {
|
||||
annotationProcessor 'com.github.bumptech.glide:compiler:4.16.0'
|
||||
implementation "com.caverock:androidsvg-aar:1.4"
|
||||
implementation "pl.droidsonroids.gif:android-gif-drawable:1.2.29"
|
||||
implementation 'com.google.guava:guava:33.3.1-jre'
|
||||
implementation 'com.google.guava:guava:33.4.8-jre'
|
||||
//noinspection GradleDependency
|
||||
implementation 'commons-io:commons-io:2.5'
|
||||
implementation 'org.apache.commons:commons-lang3:3.13.0'
|
||||
implementation 'org.apache.commons:commons-lang3:3.18.0'
|
||||
implementation "com.github.chrisbanes:PhotoView:2.3.0"
|
||||
implementation 'ch.acra:acra-mail:5.11.3'
|
||||
implementation 'ch.acra:acra-limiter:5.11.3'
|
||||
implementation 'ch.acra:acra-notification:5.11.3'
|
||||
implementation 'ch.acra:acra-mail:5.12.0'
|
||||
implementation 'ch.acra:acra-limiter:5.12.0'
|
||||
implementation 'ch.acra:acra-notification:5.12.0'
|
||||
implementation 'androidx.room:room-runtime:2.7.2'
|
||||
annotationProcessor 'androidx.room:room-compiler:2.7.2'
|
||||
implementation "androidx.work:work-runtime:2.10.2"
|
||||
@@ -116,7 +116,8 @@ dependencies {
|
||||
//noinspection GradleDependency
|
||||
coreLibraryDesugaring "com.android.tools:desugar_jdk_libs:2.1.5"
|
||||
implementation 'androidx.biometric:biometric:1.1.0'
|
||||
implementation 'com.github.chrisvest:stormpot:2.4.2'
|
||||
//noinspection GradleDependency
|
||||
implementation 'com.github.chrisvest:stormpot:3.2'
|
||||
implementation 'androidx.browser:browser:1.8.0'
|
||||
implementation 'com.google.android.flexbox:flexbox:3.0.0'
|
||||
implementation('org.codeberg.gitnex:tea4j-autodeploy:0ad7eaf429') {
|
||||
|
@@ -1302,7 +1302,7 @@ public class IssueDetailActivity extends BaseActivity
|
||||
}
|
||||
}
|
||||
|
||||
final Locale locale = getResources().getConfiguration().locale;
|
||||
Locale locale = getResources().getConfiguration().getLocales().get(0);
|
||||
issueCreator = issue.getIssue().getUser().getLogin();
|
||||
|
||||
Glide.with(ctx)
|
||||
@@ -1319,12 +1319,16 @@ public class IssueDetailActivity extends BaseActivity
|
||||
+ appCtx.getResources().getString(R.string.hash)
|
||||
+ issue.getIssue().getNumber()
|
||||
+ "</font>";
|
||||
viewBinding.issueTitle.setText(
|
||||
Markdown.render(
|
||||
ctx,
|
||||
HtmlCompat.fromHtml(
|
||||
issueNumber_
|
||||
+ " "
|
||||
+ EmojiParser.parseToUnicode(issue.getIssue().getTitle()),
|
||||
HtmlCompat.FROM_HTML_MODE_LEGACY));
|
||||
issueNumber_
|
||||
+ " "
|
||||
+ EmojiParser.parseToUnicode(issue.getIssue().getTitle()),
|
||||
HtmlCompat.FROM_HTML_MODE_LEGACY)
|
||||
.toString(),
|
||||
viewBinding.issueTitle);
|
||||
|
||||
String cleanIssueDescription = issue.getIssue().getBody().trim();
|
||||
|
||||
if (!AppUtil.checkGhostUsers(issue.getIssue().getUser().getLogin())) {
|
||||
@@ -1484,7 +1488,7 @@ public class IssueDetailActivity extends BaseActivity
|
||||
|
||||
String edited;
|
||||
|
||||
if (!issue.getIssue().getUpdatedAt().equals(issue.getIssue().getUpdatedAt())) {
|
||||
if (!issue.getIssue().getCreatedAt().equals(issue.getIssue().getUpdatedAt())) {
|
||||
|
||||
edited = getString(R.string.colorfulBulletSpan) + getString(R.string.modifiedText);
|
||||
viewBinding.issueModified.setVisibility(View.VISIBLE);
|
||||
|
@@ -36,6 +36,7 @@ import org.mian.gitnex.helpers.AppUtil;
|
||||
import org.mian.gitnex.helpers.ClickListener;
|
||||
import org.mian.gitnex.helpers.ColorInverter;
|
||||
import org.mian.gitnex.helpers.LabelWidthCalculator;
|
||||
import org.mian.gitnex.helpers.Markdown;
|
||||
import org.mian.gitnex.helpers.TimeHelper;
|
||||
import org.mian.gitnex.helpers.TinyDB;
|
||||
import org.mian.gitnex.helpers.contexts.IssueContext;
|
||||
@@ -175,7 +176,7 @@ public class IssuesAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
|
||||
@SuppressLint("SetTextI18n")
|
||||
void bindData(Issue issue) {
|
||||
|
||||
Locale locale = context.getResources().getConfiguration().locale;
|
||||
Locale locale = context.getResources().getConfiguration().getLocales().get(0);
|
||||
|
||||
Glide.with(context)
|
||||
.load(issue.getUser().getAvatarUrl())
|
||||
@@ -192,10 +193,15 @@ public class IssuesAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
|
||||
+ context.getResources().getString(R.string.hash)
|
||||
+ issue.getNumber()
|
||||
+ "</font>";
|
||||
issueTitle.setText(
|
||||
Markdown.render(
|
||||
context,
|
||||
HtmlCompat.fromHtml(
|
||||
issueNumber_ + " " + EmojiParser.parseToUnicode(issue.getTitle()),
|
||||
HtmlCompat.FROM_HTML_MODE_LEGACY));
|
||||
issueNumber_
|
||||
+ " "
|
||||
+ EmojiParser.parseToUnicode(issue.getTitle()),
|
||||
HtmlCompat.FROM_HTML_MODE_LEGACY)
|
||||
.toString(),
|
||||
issueTitle);
|
||||
|
||||
this.issueObject = issue;
|
||||
this.issueCommentsCount.setText(String.valueOf(issue.getComments()));
|
||||
|
@@ -37,6 +37,7 @@ import org.mian.gitnex.helpers.AppUtil;
|
||||
import org.mian.gitnex.helpers.ClickListener;
|
||||
import org.mian.gitnex.helpers.ColorInverter;
|
||||
import org.mian.gitnex.helpers.LabelWidthCalculator;
|
||||
import org.mian.gitnex.helpers.Markdown;
|
||||
import org.mian.gitnex.helpers.TimeHelper;
|
||||
import org.mian.gitnex.helpers.contexts.IssueContext;
|
||||
|
||||
@@ -181,7 +182,7 @@ public class PullRequestsAdapter extends RecyclerView.Adapter<RecyclerView.ViewH
|
||||
|
||||
void bindData(PullRequest pullRequest) {
|
||||
|
||||
Locale locale = context.getResources().getConfiguration().locale;
|
||||
Locale locale = context.getResources().getConfiguration().getLocales().get(0);
|
||||
|
||||
Glide.with(context)
|
||||
.load(pullRequest.getUser().getAvatarUrl())
|
||||
@@ -309,10 +310,16 @@ public class PullRequestsAdapter extends RecyclerView.Adapter<RecyclerView.ViewH
|
||||
this.issuePrState.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
this.prTitle.setText(
|
||||
Markdown.render(
|
||||
context,
|
||||
HtmlCompat.fromHtml(
|
||||
prNumber_ + " " + EmojiParser.parseToUnicode(pullRequest.getTitle()),
|
||||
HtmlCompat.FROM_HTML_MODE_LEGACY));
|
||||
prNumber_
|
||||
+ " "
|
||||
+ EmojiParser.parseToUnicode(pullRequest.getTitle()),
|
||||
HtmlCompat.FROM_HTML_MODE_LEGACY)
|
||||
.toString(),
|
||||
this.prTitle);
|
||||
|
||||
this.prCommentsCount.setText(String.valueOf(pullRequest.getComments()));
|
||||
this.prCreatedTime.setText(TimeHelper.formatTime(pullRequest.getCreatedAt(), locale));
|
||||
|
||||
|
@@ -391,7 +391,7 @@ public class FilesFragment extends Fragment implements FilesAdapter.FilesAdapter
|
||||
(int)
|
||||
requireContext()
|
||||
.getResources()
|
||||
.getDimension(R.dimen.dimen16dp);
|
||||
.getDimension(R.dimen.dimen4dp);
|
||||
int spacingTop =
|
||||
(int)
|
||||
requireContext()
|
||||
|
@@ -1,25 +1,24 @@
|
||||
package org.mian.gitnex.fragments;
|
||||
|
||||
import static org.mian.gitnex.helpers.languagestatistics.LanguageColor.languageColor;
|
||||
import static org.mian.gitnex.helpers.languagestatistics.LanguageStatisticsHelper.calculatePercentage;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.res.ColorStateList;
|
||||
import android.graphics.Color;
|
||||
import android.os.Bundle;
|
||||
import android.view.Gravity;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.SeekBar;
|
||||
import android.widget.TextView;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import com.amulyakhare.textdrawable.TextDrawable;
|
||||
import com.google.android.material.chip.Chip;
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
||||
import com.google.android.material.shape.CornerFamily;
|
||||
import com.google.android.material.shape.ShapeAppearanceModel;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Locale;
|
||||
@@ -45,13 +44,15 @@ import org.mian.gitnex.helpers.Markdown;
|
||||
import org.mian.gitnex.helpers.TimeHelper;
|
||||
import org.mian.gitnex.helpers.Toasty;
|
||||
import org.mian.gitnex.helpers.contexts.RepositoryContext;
|
||||
import org.mian.gitnex.helpers.languagestatistics.LanguageColor;
|
||||
import org.mian.gitnex.helpers.languagestatistics.LanguageStatisticsHelper;
|
||||
import org.mian.gitnex.helpers.languagestatistics.SeekbarItem;
|
||||
import retrofit2.Call;
|
||||
import retrofit2.Callback;
|
||||
import retrofit2.Response;
|
||||
|
||||
/**
|
||||
* @author M M Arif
|
||||
* @author mmarif
|
||||
*/
|
||||
public class RepoInfoFragment extends Fragment {
|
||||
|
||||
@@ -82,7 +83,7 @@ public class RepoInfoFragment extends Fragment {
|
||||
|
||||
binding = FragmentRepoInfoBinding.inflate(inflater, container, false);
|
||||
ctx = getContext();
|
||||
Locale locale = getResources().getConfiguration().locale;
|
||||
Locale locale = getResources().getConfiguration().getLocales().get(0);
|
||||
|
||||
pageContent = binding.repoInfoLayout;
|
||||
pageContent.setVisibility(View.GONE);
|
||||
@@ -156,127 +157,75 @@ public class RepoInfoFragment extends Fragment {
|
||||
seekbarItemList.add(seekbarItem);
|
||||
}
|
||||
|
||||
binding.languagesStatistic.setVisibility(View.VISIBLE);
|
||||
binding.languagesStatistic.initData(seekbarItemList);
|
||||
binding.languageStatsCard.setVisibility(View.VISIBLE);
|
||||
binding.languagesStatistic.setData(seekbarItemList);
|
||||
|
||||
binding.languagesStatistic.setOnSeekBarChangeListener(
|
||||
new SeekBar.OnSeekBarChangeListener() {
|
||||
|
||||
@Override
|
||||
public void onStopTrackingTouch(
|
||||
SeekBar seekBar) {}
|
||||
|
||||
@Override
|
||||
public void onStartTrackingTouch(
|
||||
SeekBar seekBar) {}
|
||||
|
||||
@Override
|
||||
public void onProgressChanged(
|
||||
SeekBar seekBar,
|
||||
int progress,
|
||||
boolean fromUser) {
|
||||
|
||||
View view =
|
||||
LayoutInflater.from(ctx)
|
||||
.inflate(
|
||||
R.layout
|
||||
.layout_repo_language_statistics,
|
||||
null);
|
||||
binding.languageStatsCard.setOnClickListener(
|
||||
v -> {
|
||||
View view =
|
||||
LayoutInflater.from(ctx)
|
||||
.inflate(
|
||||
R.layout
|
||||
.layout_repo_language_statistics,
|
||||
null);
|
||||
LinearLayout layout =
|
||||
view.findViewById(R.id.lang_color);
|
||||
layout.removeAllViews();
|
||||
|
||||
for (Map.Entry<String, Long> entry :
|
||||
response.body().entrySet()) {
|
||||
Chip chip = new Chip(ctx);
|
||||
LinearLayout.LayoutParams params =
|
||||
new LinearLayout.LayoutParams(
|
||||
LinearLayout.LayoutParams
|
||||
.WRAP_CONTENT,
|
||||
.MATCH_PARENT,
|
||||
LinearLayout.LayoutParams
|
||||
.WRAP_CONTENT);
|
||||
params.setMargins(0, 32, 32, 0);
|
||||
params.setMargins(0, 8, 0, 0);
|
||||
chip.setLayoutParams(params);
|
||||
chip.setText(
|
||||
String.format(
|
||||
"%s - %s%%",
|
||||
entry.getKey(),
|
||||
LanguageStatisticsHelper
|
||||
.calculatePercentage(
|
||||
entry
|
||||
.getValue(),
|
||||
totalSpan)));
|
||||
int bgColor =
|
||||
ctx.getResources()
|
||||
.getColor(
|
||||
LanguageColor
|
||||
.languageColor(
|
||||
entry
|
||||
.getKey()),
|
||||
null);
|
||||
chip.setChipBackgroundColor(
|
||||
ColorStateList.valueOf(bgColor));
|
||||
chip.setTextColor(
|
||||
isLightColor(bgColor)
|
||||
? Color.BLACK
|
||||
: Color.WHITE);
|
||||
chip.setShapeAppearanceModel(
|
||||
new ShapeAppearanceModel()
|
||||
.toBuilder()
|
||||
.setAllCorners(
|
||||
CornerFamily
|
||||
.ROUNDED,
|
||||
48)
|
||||
.build());
|
||||
chip.setEnabled(false);
|
||||
|
||||
LinearLayout layout =
|
||||
view.findViewById(R.id.lang_color);
|
||||
layout.removeAllViews();
|
||||
|
||||
for (Map.Entry<String, Long> entry :
|
||||
response.body().entrySet()) {
|
||||
|
||||
LinearLayout layoutSub =
|
||||
new LinearLayout(getContext());
|
||||
layoutSub.setOrientation(
|
||||
LinearLayout.HORIZONTAL);
|
||||
layoutSub.setGravity(
|
||||
Gravity.START | Gravity.TOP);
|
||||
layout.addView(layoutSub);
|
||||
|
||||
ImageView colorView =
|
||||
new ImageView(getContext());
|
||||
colorView.setLayoutParams(params);
|
||||
|
||||
String hexColor =
|
||||
String.format(
|
||||
"#%06X",
|
||||
(0xFFFFFF
|
||||
& languageColor(
|
||||
entry
|
||||
.getKey())));
|
||||
TextDrawable drawable =
|
||||
TextDrawable.builder()
|
||||
.beginConfig()
|
||||
.width(64)
|
||||
.height(64)
|
||||
.endConfig()
|
||||
.buildRoundRect(
|
||||
"",
|
||||
Color
|
||||
.parseColor(
|
||||
hexColor),
|
||||
8);
|
||||
drawable.setTint(
|
||||
getResources()
|
||||
.getColor(
|
||||
languageColor(
|
||||
entry
|
||||
.getKey()),
|
||||
null));
|
||||
colorView.setImageDrawable(drawable);
|
||||
layoutSub.addView(colorView);
|
||||
|
||||
TextView langName =
|
||||
new TextView(getContext());
|
||||
langName.setLayoutParams(params);
|
||||
langName.setText(entry.getKey());
|
||||
layoutSub.addView(langName);
|
||||
|
||||
TextView langPercentage =
|
||||
new TextView(getContext());
|
||||
langPercentage.setLayoutParams(params);
|
||||
langPercentage.setTextSize(12);
|
||||
langPercentage.setText(
|
||||
getString(
|
||||
R.string
|
||||
.lang_percentage,
|
||||
calculatePercentage(
|
||||
entry
|
||||
.getValue(),
|
||||
totalSpan)));
|
||||
layoutSub.addView(langPercentage);
|
||||
}
|
||||
|
||||
MaterialAlertDialogBuilder
|
||||
materialAlertDialogBuilder1 =
|
||||
new MaterialAlertDialogBuilder(
|
||||
ctx)
|
||||
.setTitle(
|
||||
R.string
|
||||
.lang_statistics)
|
||||
.setView(view)
|
||||
.setNeutralButton(
|
||||
getString(
|
||||
R
|
||||
.string
|
||||
.close),
|
||||
null);
|
||||
|
||||
materialAlertDialogBuilder1.create().show();
|
||||
layout.addView(chip);
|
||||
}
|
||||
|
||||
new MaterialAlertDialogBuilder(ctx)
|
||||
.setTitle(R.string.lang_statistics)
|
||||
.setView(view)
|
||||
.setNeutralButton(
|
||||
getString(R.string.close), null)
|
||||
.create()
|
||||
.show();
|
||||
});
|
||||
}
|
||||
|
||||
@@ -287,7 +236,7 @@ public class RepoInfoFragment extends Fragment {
|
||||
break;
|
||||
|
||||
case 404:
|
||||
binding.languagesStatistic.setVisibility(View.GONE);
|
||||
binding.languageStatsCard.setVisibility(View.GONE);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -301,6 +250,13 @@ public class RepoInfoFragment extends Fragment {
|
||||
});
|
||||
}
|
||||
|
||||
private boolean isLightColor(int color) {
|
||||
double luminance =
|
||||
(0.299 * Color.red(color) + 0.587 * Color.green(color) + 0.114 * Color.blue(color))
|
||||
/ 255;
|
||||
return luminance > 0.5;
|
||||
}
|
||||
|
||||
private void setRepoInfo(Locale locale) {
|
||||
Repository repoInfo = repository.getRepository();
|
||||
|
||||
@@ -376,7 +332,7 @@ public class RepoInfoFragment extends Fragment {
|
||||
: repoInfo.getWebsite();
|
||||
binding.repoMetaWebsite.setText(website);
|
||||
binding.repoMetaWebsite.setLinksClickable(false);
|
||||
binding.websiteFrame.setOnClickListener(
|
||||
binding.repoMetaWebsite.setOnClickListener(
|
||||
(v) -> {
|
||||
if (!repoInfo.getWebsite().isEmpty()) {
|
||||
AppUtil.openUrlInBrowser(requireContext(), repoInfo.getWebsite());
|
||||
|
@@ -118,10 +118,12 @@ public class DetailFragment extends Fragment {
|
||||
((ProfileActivity) requireActivity()).viewPager.setCurrentItem(2));
|
||||
|
||||
if (username.equals(((BaseActivity) context).getAccount().getAccount().getUserName())) {
|
||||
binding.metaProfile.setVisibility(View.VISIBLE);
|
||||
binding.updateAvatar.setVisibility(View.VISIBLE);
|
||||
binding.updateProfile.setVisibility(View.VISIBLE);
|
||||
itsMe = true;
|
||||
} else {
|
||||
binding.metaProfile.setVisibility(View.GONE);
|
||||
binding.updateAvatar.setVisibility(View.GONE);
|
||||
binding.updateProfile.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
binding.updateProfile.setOnClickListener(
|
||||
@@ -475,7 +477,7 @@ public class DetailFragment extends Fragment {
|
||||
String.format(
|
||||
response.body().getStarredReposCount()
|
||||
+ " "
|
||||
+ getString(R.string.starredRepos)));
|
||||
+ getString(R.string.navStarredRepos)));
|
||||
|
||||
String[] userLanguageCodes =
|
||||
response.body().getLanguage().split("-");
|
||||
@@ -520,14 +522,12 @@ public class DetailFragment extends Fragment {
|
||||
binding.website.setText(response.body().getWebsite());
|
||||
} else {
|
||||
binding.website.setText(R.string.noDataWebsite);
|
||||
binding.website.setAlpha(.4F);
|
||||
}
|
||||
|
||||
if (!response.body().getLocation().isEmpty()) {
|
||||
binding.location.setText(response.body().getLocation());
|
||||
} else {
|
||||
binding.location.setText(R.string.noDataLocation);
|
||||
binding.location.setAlpha(.4F);
|
||||
}
|
||||
|
||||
if (!response.body().getDescription().isEmpty()) {
|
||||
@@ -537,7 +537,6 @@ public class DetailFragment extends Fragment {
|
||||
binding.bio);
|
||||
} else {
|
||||
binding.bio.setText(R.string.noDataBio);
|
||||
binding.bio.setAlpha(.4F);
|
||||
}
|
||||
|
||||
break;
|
||||
|
@@ -66,8 +66,6 @@ import org.mian.gitnex.helpers.contexts.IssueContext;
|
||||
import org.mian.gitnex.helpers.contexts.RepositoryContext;
|
||||
import org.mian.gitnex.helpers.markdown.AlertPlugin;
|
||||
import stormpot.Allocator;
|
||||
import stormpot.BlazePool;
|
||||
import stormpot.Config;
|
||||
import stormpot.Pool;
|
||||
import stormpot.Poolable;
|
||||
import stormpot.Slot;
|
||||
@@ -75,6 +73,7 @@ import stormpot.Timeout;
|
||||
|
||||
/**
|
||||
* @author opyale
|
||||
* @author mmarif
|
||||
*/
|
||||
public class Markdown {
|
||||
|
||||
@@ -95,44 +94,37 @@ public class Markdown {
|
||||
private static final Pool<RecyclerViewRenderer> rvRendererPool;
|
||||
|
||||
static {
|
||||
Config<Renderer> config = new Config<>();
|
||||
rendererPool =
|
||||
Pool.from(
|
||||
new Allocator<Renderer>() {
|
||||
@Override
|
||||
public Renderer allocate(Slot slot) {
|
||||
return new Renderer(slot);
|
||||
}
|
||||
|
||||
config.setBackgroundExpirationEnabled(true);
|
||||
config.setPreciseLeakDetectionEnabled(true);
|
||||
config.setSize(MAX_OBJECT_POOL_SIZE);
|
||||
config.setAllocator(
|
||||
new Allocator<Renderer>() {
|
||||
@Override
|
||||
public void deallocate(Renderer poolable) {}
|
||||
})
|
||||
.setSize(MAX_OBJECT_POOL_SIZE)
|
||||
.setBackgroundExpirationEnabled(true)
|
||||
.setPreciseLeakDetectionEnabled(true)
|
||||
.build();
|
||||
|
||||
@Override
|
||||
public Renderer allocate(Slot slot) {
|
||||
return new Renderer(slot);
|
||||
}
|
||||
rvRendererPool =
|
||||
Pool.from(
|
||||
new Allocator<RecyclerViewRenderer>() {
|
||||
@Override
|
||||
public RecyclerViewRenderer allocate(Slot slot) {
|
||||
return new RecyclerViewRenderer(slot);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deallocate(Renderer poolable) {}
|
||||
});
|
||||
|
||||
rendererPool = new BlazePool<>(config);
|
||||
|
||||
Config<RecyclerViewRenderer> configRv = new Config<>();
|
||||
|
||||
configRv.setBackgroundExpirationEnabled(true);
|
||||
configRv.setPreciseLeakDetectionEnabled(true);
|
||||
configRv.setSize(MAX_OBJECT_POOL_SIZE);
|
||||
configRv.setAllocator(
|
||||
new Allocator<RecyclerViewRenderer>() {
|
||||
|
||||
@Override
|
||||
public RecyclerViewRenderer allocate(Slot slot) {
|
||||
|
||||
return new RecyclerViewRenderer(slot);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deallocate(RecyclerViewRenderer poolable) {}
|
||||
});
|
||||
|
||||
rvRendererPool = new BlazePool<>(configRv);
|
||||
@Override
|
||||
public void deallocate(RecyclerViewRenderer poolable) {}
|
||||
})
|
||||
.setSize(MAX_OBJECT_POOL_SIZE)
|
||||
.setBackgroundExpirationEnabled(true)
|
||||
.setPreciseLeakDetectionEnabled(true)
|
||||
.build();
|
||||
}
|
||||
|
||||
public static void render(Context context, String markdown, TextView textView) {
|
||||
|
@@ -5,11 +5,9 @@ import java.util.Map;
|
||||
import org.mian.gitnex.R;
|
||||
|
||||
/**
|
||||
* @author M M Arif
|
||||
* @author mmarif
|
||||
*/
|
||||
public class LanguageColor {
|
||||
|
||||
private static int color = R.color.default_lang_color;
|
||||
private static final Map<String, Integer> colors = new HashMap<>();
|
||||
|
||||
static {
|
||||
@@ -208,16 +206,14 @@ public class LanguageColor {
|
||||
colors.put("robots.txt", R.color.yaml);
|
||||
colors.put("sed", R.color.sed);
|
||||
colors.put("xBase", R.color.x_base);
|
||||
colors.put("D", R.color.wiki);
|
||||
}
|
||||
|
||||
public static int languageColor(String key) {
|
||||
|
||||
for (Map.Entry<String, Integer> s : colors.entrySet()) {
|
||||
if (key.equalsIgnoreCase(s.getKey())) {
|
||||
color = s.getValue();
|
||||
}
|
||||
if (key == null) {
|
||||
return R.color.default_lang_color;
|
||||
}
|
||||
|
||||
return color;
|
||||
Integer color = colors.get(key);
|
||||
return color != null ? color : R.color.default_lang_color;
|
||||
}
|
||||
}
|
||||
|
@@ -1,78 +0,0 @@
|
||||
package org.mian.gitnex.helpers.languagestatistics;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.Context;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Paint;
|
||||
import android.graphics.Rect;
|
||||
import android.util.AttributeSet;
|
||||
import java.util.ArrayList;
|
||||
|
||||
/**
|
||||
* @author M M Arif
|
||||
*/
|
||||
public class LanguageStatisticsBar extends androidx.appcompat.widget.AppCompatSeekBar {
|
||||
|
||||
private ArrayList<SeekbarItem> progressItemsList;
|
||||
|
||||
public LanguageStatisticsBar(Context context) {
|
||||
super(context);
|
||||
}
|
||||
|
||||
public LanguageStatisticsBar(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
}
|
||||
|
||||
public LanguageStatisticsBar(Context context, AttributeSet attrs, int defStyle) {
|
||||
super(context, attrs, defStyle);
|
||||
}
|
||||
|
||||
public void initData(ArrayList<SeekbarItem> progressItemsListInit) {
|
||||
this.progressItemsList = progressItemsListInit;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected synchronized void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
|
||||
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
|
||||
}
|
||||
|
||||
protected void onDraw(Canvas canvas) {
|
||||
|
||||
if (!progressItemsList.isEmpty()) {
|
||||
|
||||
int progressBarWidth = getWidth();
|
||||
int progressBarHeight = getHeight();
|
||||
int thumbOffSet = getThumbOffset();
|
||||
int lastProgressX = 0;
|
||||
int progressItemWidth, progressItemRight;
|
||||
|
||||
for (int i = 0; i < progressItemsList.size(); i++) {
|
||||
|
||||
SeekbarItem progressItem = progressItemsList.get(i);
|
||||
@SuppressLint("DrawAllocation")
|
||||
Paint progressPaint = new Paint();
|
||||
progressPaint.setColor(getResources().getColor(progressItem.color, null));
|
||||
|
||||
progressItemWidth =
|
||||
(int) (progressItem.progressItemPercentage * progressBarWidth / 100);
|
||||
|
||||
progressItemRight = lastProgressX + progressItemWidth;
|
||||
|
||||
if (i == progressItemsList.size() - 1 && progressItemRight != progressBarWidth) {
|
||||
progressItemRight = progressBarWidth;
|
||||
}
|
||||
|
||||
@SuppressLint("DrawAllocation")
|
||||
Rect progressRect = new Rect();
|
||||
progressRect.set(
|
||||
lastProgressX,
|
||||
thumbOffSet / 2,
|
||||
progressItemRight,
|
||||
progressBarHeight - thumbOffSet / 2);
|
||||
canvas.drawRect(progressRect, progressPaint);
|
||||
lastProgressX = progressItemRight;
|
||||
}
|
||||
super.onDraw(canvas);
|
||||
}
|
||||
}
|
||||
}
|
@@ -3,7 +3,7 @@ package org.mian.gitnex.helpers.languagestatistics;
|
||||
import android.annotation.SuppressLint;
|
||||
|
||||
/**
|
||||
* @author M M Arif
|
||||
* @author mmarif
|
||||
*/
|
||||
public class LanguageStatisticsHelper {
|
||||
|
||||
|
@@ -0,0 +1,80 @@
|
||||
package org.mian.gitnex.helpers.languagestatistics;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Paint;
|
||||
import android.graphics.RectF;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.View;
|
||||
import androidx.annotation.NonNull;
|
||||
import java.util.ArrayList;
|
||||
|
||||
/**
|
||||
* @author mmarif
|
||||
*/
|
||||
public class LanguageStatisticsView extends View {
|
||||
|
||||
private ArrayList<SeekbarItem> progressItemsList;
|
||||
private static final float CORNER_RADIUS = 8f;
|
||||
private final Paint progressPaint = new Paint();
|
||||
private final RectF progressRect = new RectF();
|
||||
|
||||
public LanguageStatisticsView(Context context) {
|
||||
super(context);
|
||||
init();
|
||||
}
|
||||
|
||||
public LanguageStatisticsView(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
init();
|
||||
}
|
||||
|
||||
public LanguageStatisticsView(Context context, AttributeSet attrs, int defStyle) {
|
||||
super(context, attrs, defStyle);
|
||||
init();
|
||||
}
|
||||
|
||||
private void init() {
|
||||
progressItemsList = new ArrayList<>();
|
||||
}
|
||||
|
||||
public void setData(ArrayList<SeekbarItem> progressItemsListInit) {
|
||||
this.progressItemsList = progressItemsListInit;
|
||||
invalidate();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDraw(@NonNull Canvas canvas) {
|
||||
super.onDraw(canvas);
|
||||
|
||||
if (progressItemsList.isEmpty()) return;
|
||||
|
||||
int width = getWidth();
|
||||
int height = getHeight();
|
||||
float lastX = 0f;
|
||||
|
||||
for (int i = 0; i < progressItemsList.size(); i++) {
|
||||
SeekbarItem progressItem = progressItemsList.get(i);
|
||||
progressPaint.setColor(getResources().getColor(progressItem.color, null));
|
||||
|
||||
float progressItemWidth = (progressItem.progressItemPercentage * width) / 100f;
|
||||
float progressItemRight = lastX + progressItemWidth;
|
||||
|
||||
if (i == progressItemsList.size() - 1 && progressItemRight < width) {
|
||||
progressItemRight = width;
|
||||
}
|
||||
|
||||
progressRect.set(lastX, 0f, progressItemRight, height);
|
||||
canvas.drawRoundRect(progressRect, CORNER_RADIUS, CORNER_RADIUS, progressPaint);
|
||||
|
||||
lastX = progressItemRight;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
|
||||
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
|
||||
setMeasuredDimension(
|
||||
MeasureSpec.getSize(widthMeasureSpec), MeasureSpec.getSize(heightMeasureSpec));
|
||||
}
|
||||
}
|
@@ -1,7 +1,7 @@
|
||||
package org.mian.gitnex.helpers.languagestatistics;
|
||||
|
||||
/**
|
||||
* @author M M Arif
|
||||
* @author mmarif
|
||||
*/
|
||||
public class SeekbarItem {
|
||||
|
||||
|
@@ -168,7 +168,7 @@
|
||||
style="@style/CustomChipFilter"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/starredRepos" />
|
||||
android:text="@string/navStarredRepos" />
|
||||
|
||||
<com.google.android.material.chip.Chip
|
||||
android:id="@+id/chipHomeScreen3"
|
||||
|
@@ -33,7 +33,6 @@
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:id="@+id/hoursInputLayout"
|
||||
style="@style/Widget.Material3.TextInputLayout.OutlinedBox.Dense"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
@@ -52,7 +51,6 @@
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:id="@+id/minutesInputLayout"
|
||||
style="@style/Widget.Material3.TextInputLayout.OutlinedBox.Dense"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
@@ -75,6 +73,7 @@
|
||||
android:layout_height="@dimen/dimen50dp"
|
||||
android:text="@string/addButton"
|
||||
android:minWidth="0dp"
|
||||
android:backgroundTint="?attr/iconsColor"
|
||||
android:paddingHorizontal="@dimen/dimen16dp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
@@ -11,8 +11,10 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/pageTitleChooseBranch"
|
||||
android:textAppearance="?attr/textAppearanceHeadline5"
|
||||
android:layout_marginBottom="@dimen/dimen8dp"
|
||||
android:padding="@dimen/dimen16dp" />
|
||||
android:layout_marginBottom="@dimen/dimen16dp"
|
||||
android:layout_marginStart="@dimen/dimen8dp"
|
||||
android:layout_marginEnd="@dimen/dimen8dp"
|
||||
android:layout_marginTop="@dimen/dimen8dp" />
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/recyclerView"
|
||||
|
@@ -92,6 +92,8 @@
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dimen8dp"
|
||||
android:layout_marginEnd="@dimen/dimen8dp"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
@@ -99,7 +101,7 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="@dimen/dimen16sp"
|
||||
android:textSize="@dimen/dimen18sp"
|
||||
android:textIsSelectable="true" />
|
||||
|
||||
<TextView
|
||||
|
@@ -47,130 +47,273 @@
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:orientation="vertical"
|
||||
android:gravity="start"
|
||||
tools:ignore="UseCompoundDrawables">
|
||||
|
||||
<com.google.android.material.card.MaterialCardView
|
||||
android:layout_width="@dimen/dimen96dp"
|
||||
android:layout_height="@dimen/dimen96dp"
|
||||
style="?attr/materialCardViewElevatedStyle"
|
||||
android:backgroundTint="@android:color/transparent"
|
||||
android:layout_marginBottom="@dimen/dimen8dp"
|
||||
app:cardElevation="@dimen/dimen0dp"
|
||||
app:cardCornerRadius="@dimen/dimen16dp">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/userAvatar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:src="@drawable/loader_animated"
|
||||
android:contentDescription="@string/generalImgContentText" />
|
||||
|
||||
</com.google.android.material.card.MaterialCardView>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingStart="@dimen/dimen24dp"
|
||||
android:paddingEnd="@dimen/dimen10dp"
|
||||
android:orientation="vertical">
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/userFullName"
|
||||
<com.google.android.material.card.MaterialCardView
|
||||
android:layout_width="@dimen/dimen84dp"
|
||||
android:layout_height="@dimen/dimen84dp"
|
||||
style="?attr/materialCardViewElevatedStyle"
|
||||
android:backgroundTint="@android:color/transparent"
|
||||
android:layout_marginBottom="@dimen/dimen8dp"
|
||||
app:cardElevation="@dimen/dimen0dp"
|
||||
app:cardCornerRadius="@dimen/dimen16dp">
|
||||
|
||||
<FrameLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/userAvatar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:src="@drawable/loader_animated"
|
||||
android:contentDescription="@string/generalImgContentText"
|
||||
tools:ignore="TooDeepLayout" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/update_avatar"
|
||||
android:layout_width="@dimen/dimen24dp"
|
||||
android:layout_height="@dimen/dimen24dp"
|
||||
android:layout_gravity="top|end"
|
||||
android:src="@drawable/ic_edit"
|
||||
android:contentDescription="@string/userAvatar"
|
||||
android:background="@color/dividerColorDark"
|
||||
android:alpha=".8"
|
||||
android:padding="@dimen/dimen4dp" />
|
||||
|
||||
</FrameLayout>
|
||||
|
||||
</com.google.android.material.card.MaterialCardView>
|
||||
|
||||
<View
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1" />
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/update_profile"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textIsSelectable="true"
|
||||
android:textSize="@dimen/dimen18sp" />
|
||||
android:text="@string/editSettings"
|
||||
android:layout_gravity="end"
|
||||
android:textColor="?attr/materialCardBackgroundColor"
|
||||
android:textSize="@dimen/dimen14sp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="start"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/userLogin"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="@dimen/dimen10dp"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textIsSelectable="true"
|
||||
android:layout_marginTop="@dimen/dimen4dp"
|
||||
android:alpha=".8"
|
||||
android:textSize="@dimen/dimen14sp" />
|
||||
|
||||
<com.google.android.material.button.MaterialButtonToggleGroup
|
||||
android:id="@+id/metaProfile"
|
||||
<TextView
|
||||
android:id="@+id/userFullName"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone">
|
||||
android:layout_marginTop="@dimen/dimen4dp"
|
||||
android:layout_marginBottom="@dimen/dimen12dp"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textIsSelectable="true"
|
||||
android:textSize="@dimen/dimen20sp" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/update_avatar"
|
||||
style="?attr/materialButtonToggleGroupStyle"
|
||||
<TextView
|
||||
android:id="@+id/bio"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:layout_marginBottom="@dimen/dimen16dp"
|
||||
android:textSize="@dimen/dimen16sp" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="@dimen/dimen12dp"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="@dimen/dimen18dp"
|
||||
android:layout_height="@dimen/dimen18dp"
|
||||
android:src="@drawable/ic_person"
|
||||
android:contentDescription="@string/generalImgContentText" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/user_followers_count"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:iconTint="?attr/materialCardBackgroundColor"
|
||||
app:icon="@drawable/ic_person"
|
||||
android:textColor="?attr/materialCardBackgroundColor"
|
||||
android:textSize="@dimen/dimen14sp"
|
||||
android:text="@string/userAvatar" />
|
||||
android:layout_marginStart="@dimen/dimen16dp"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:text="@string/profileTabFollowers"
|
||||
android:textSize="@dimen/dimen14sp" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/update_profile"
|
||||
style="?attr/materialButtonToggleGroupStyle"
|
||||
<TextView
|
||||
android:id="@+id/user_following_count"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:iconTint="?attr/materialCardBackgroundColor"
|
||||
app:icon="@drawable/ic_edit"
|
||||
android:textColor="?attr/materialCardBackgroundColor"
|
||||
android:textSize="@dimen/dimen14sp"
|
||||
android:text="@string/navProfile" />
|
||||
android:layout_marginStart="@dimen/dimen16dp"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:text="@string/profileTabFollowing"
|
||||
android:textSize="@dimen/dimen14sp" />
|
||||
|
||||
</com.google.android.material.button.MaterialButtonToggleGroup>
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="@dimen/dimen12dp"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="@dimen/dimen18dp"
|
||||
android:layout_height="@dimen/dimen18dp"
|
||||
android:src="@drawable/ic_star_unfilled"
|
||||
android:contentDescription="@string/generalImgContentText" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/user_starred_repos_count"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dimen16dp"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:text="@string/navStarredRepos"
|
||||
android:textSize="@dimen/dimen14sp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="@dimen/dimen12dp"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="@dimen/dimen18dp"
|
||||
android:layout_height="@dimen/dimen18dp"
|
||||
android:src="@drawable/ic_email"
|
||||
android:contentDescription="@string/generalImgContentText" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/userEmail"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dimen16dp"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:autoLink="email"
|
||||
android:textSize="@dimen/dimen14sp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="@dimen/dimen12dp"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="@dimen/dimen18dp"
|
||||
android:layout_height="@dimen/dimen18dp"
|
||||
android:src="@drawable/ic_link"
|
||||
android:contentDescription="@string/generalImgContentText" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/website"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dimen16dp"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:autoLink="web"
|
||||
android:text="@string/websiteText"
|
||||
android:textSize="@dimen/dimen14sp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="@dimen/dimen12dp"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="@dimen/dimen18dp"
|
||||
android:layout_height="@dimen/dimen18dp"
|
||||
android:src="@drawable/ic_location"
|
||||
android:contentDescription="@string/generalImgContentText" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/location"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dimen16dp"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="@dimen/dimen14sp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="@dimen/dimen12dp"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="@dimen/dimen18dp"
|
||||
android:layout_height="@dimen/dimen18dp"
|
||||
android:src="@drawable/ic_language"
|
||||
android:contentDescription="@string/generalImgContentText" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/userLang"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dimen16dp"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="@dimen/dimen14sp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="@dimen/dimen12dp"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="@dimen/dimen18dp"
|
||||
android:layout_height="@dimen/dimen18dp"
|
||||
android:src="@drawable/ic_calendar"
|
||||
android:contentDescription="@string/generalImgContentText" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/userJoinedOn"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dimen16dp"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="@dimen/dimen14sp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dimen20dp"
|
||||
android:layout_marginBottom="@dimen/dimen0dp"
|
||||
android:orientation="horizontal"
|
||||
android:gravity="center"
|
||||
android:baselineAligned="false">
|
||||
|
||||
<com.google.android.material.button.MaterialButtonToggleGroup
|
||||
android:id="@+id/metaInfoGroup"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<Button
|
||||
android:id="@+id/user_followers_count"
|
||||
style="?attr/materialButtonToggleGroupStyle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textSize="@dimen/dimen14sp"
|
||||
android:textStyle="bold"
|
||||
android:text="@string/profileTabFollowers" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/user_following_count"
|
||||
style="?attr/materialButtonToggleGroupStyle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textSize="@dimen/dimen14sp"
|
||||
android:textStyle="bold"
|
||||
android:text="@string/profileTabFollowing" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/user_starred_repos_count"
|
||||
style="?attr/materialButtonToggleGroupStyle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textSize="@dimen/dimen14sp"
|
||||
android:textStyle="bold"
|
||||
android:text="@string/starredRepos" />
|
||||
|
||||
</com.google.android.material.button.MaterialButtonToggleGroup>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<GridView
|
||||
android:id="@+id/heatmapGrid"
|
||||
android:layout_width="match_parent"
|
||||
@@ -178,239 +321,9 @@
|
||||
android:numColumns="12"
|
||||
android:gravity="center"
|
||||
android:verticalSpacing="@dimen/dimen6dp"
|
||||
android:layout_marginTop="@dimen/dimen24dp"
|
||||
android:layout_marginTop="@dimen/dimen12dp"
|
||||
android:visibility="gone" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dimen32dp"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
android:layout_gravity="center"
|
||||
android:layout_width="@dimen/dimen24dp"
|
||||
android:layout_height="@dimen/dimen24dp"
|
||||
android:contentDescription="@string/generalImgContentText"
|
||||
app:srcCompat="@drawable/ic_email" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dimen16dp"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/userEmail"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="@dimen/dimen16sp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/userEmail"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:alpha="0.9"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:autoLink="email"
|
||||
android:textSize="@dimen/dimen14sp" />
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dimen32dp"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
android:layout_gravity="center"
|
||||
android:layout_width="@dimen/dimen24dp"
|
||||
android:layout_height="@dimen/dimen24dp"
|
||||
android:contentDescription="@string/generalImgContentText"
|
||||
app:srcCompat="@drawable/ic_browser" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dimen16dp"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/websiteText"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="@dimen/dimen16sp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/website"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:alpha="0.9"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:autoLink="web"
|
||||
android:textSize="@dimen/dimen14sp" />
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dimen32dp"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
android:layout_gravity="center"
|
||||
android:layout_width="@dimen/dimen24dp"
|
||||
android:layout_height="@dimen/dimen24dp"
|
||||
android:contentDescription="@string/generalImgContentText"
|
||||
app:srcCompat="@drawable/ic_location" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dimen16dp"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/locationText"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="@dimen/dimen16sp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/location"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:alpha="0.9"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="@dimen/dimen14sp" />
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dimen32dp"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
android:layout_gravity="center"
|
||||
android:layout_width="@dimen/dimen24dp"
|
||||
android:layout_height="@dimen/dimen24dp"
|
||||
android:contentDescription="@string/generalImgContentText"
|
||||
app:srcCompat="@drawable/ic_language"/>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dimen16dp"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/settingsLanguageSelectorHeader"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="@dimen/dimen16sp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/userLang"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:alpha="0.9"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="@dimen/dimen14sp" />
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dimen32dp"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
android:layout_gravity="center"
|
||||
android:layout_width="@dimen/dimen24dp"
|
||||
android:layout_height="@dimen/dimen24dp"
|
||||
android:contentDescription="@string/generalImgContentText"
|
||||
app:srcCompat="@drawable/ic_file_description" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dimen16dp"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/bioText"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="@dimen/dimen16sp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/bio"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:alpha="0.9"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="@dimen/dimen14sp" />
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dimen32dp"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
android:layout_gravity="center"
|
||||
android:layout_width="@dimen/dimen24dp"
|
||||
android:layout_height="@dimen/dimen24dp"
|
||||
android:contentDescription="@string/generalImgContentText"
|
||||
app:srcCompat="@drawable/ic_calendar"/>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dimen16dp"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/joined"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="@dimen/dimen16sp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/userJoinedOn"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:alpha="0.9"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="@dimen/dimen14sp" />
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</com.google.android.material.card.MaterialCardView>
|
||||
|
@@ -93,17 +93,20 @@
|
||||
android:textColorLink="@color/lightBlue"
|
||||
android:textSize="@dimen/dimen16sp"/>
|
||||
|
||||
<org.mian.gitnex.helpers.languagestatistics.LanguageStatisticsBar
|
||||
android:id="@+id/languages_statistic"
|
||||
<com.google.android.material.card.MaterialCardView
|
||||
android:id="@+id/language_stats_card"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/dimen22dp"
|
||||
android:layout_marginTop="@dimen/dimen4dp"
|
||||
android:thumbTint="@android:color/transparent"
|
||||
android:clickable="false"
|
||||
android:focusable="false"
|
||||
android:enabled="false"
|
||||
android:progressDrawable="@android:color/transparent"
|
||||
android:visibility="gone" />
|
||||
android:layout_height="wrap_content"
|
||||
app:cardCornerRadius="@dimen/dimen16dp"
|
||||
app:cardElevation="0dp"
|
||||
app:cardBackgroundColor="@android:color/transparent">
|
||||
|
||||
<org.mian.gitnex.helpers.languagestatistics.LanguageStatisticsView
|
||||
android:id="@+id/languages_statistic"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/dimen14dp" />
|
||||
|
||||
</com.google.android.material.card.MaterialCardView>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
@@ -163,161 +166,114 @@
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dimen12dp"
|
||||
android:layout_marginBottom="@dimen/dimen16dp"
|
||||
android:orientation="horizontal"
|
||||
android:paddingStart="@dimen/dimen16dp"
|
||||
android:paddingEnd="@dimen/dimen16dp"
|
||||
tools:ignore="UseCompoundDrawables">
|
||||
|
||||
<ImageView
|
||||
android:layout_gravity="center"
|
||||
android:layout_width="@dimen/dimen18dp"
|
||||
android:layout_height="@dimen/dimen18dp"
|
||||
android:contentDescription="@string/size"
|
||||
app:srcCompat="@drawable/ic_download"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/repoMetaSize"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dimen16dp"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="@dimen/dimen14sp"
|
||||
tools:text="29"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="@dimen/dimen16dp"
|
||||
android:orientation="horizontal"
|
||||
android:paddingStart="@dimen/dimen16dp"
|
||||
android:paddingEnd="@dimen/dimen16dp"
|
||||
tools:ignore="UseCompoundDrawables">
|
||||
|
||||
<ImageView
|
||||
android:layout_gravity="center"
|
||||
android:layout_width="@dimen/dimen18dp"
|
||||
android:layout_height="@dimen/dimen18dp"
|
||||
android:contentDescription="@string/infoTabRepoCreatedAt"
|
||||
app:srcCompat="@drawable/ic_calendar"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/repoMetaCreatedAt"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dimen16dp"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="@dimen/dimen14sp"
|
||||
tools:text="29"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="@dimen/dimen16dp"
|
||||
android:orientation="horizontal"
|
||||
android:paddingStart="@dimen/dimen16dp"
|
||||
android:paddingEnd="@dimen/dimen16dp"
|
||||
tools:ignore="UseCompoundDrawables">
|
||||
|
||||
<ImageView
|
||||
android:layout_gravity="center"
|
||||
android:layout_width="@dimen/dimen18dp"
|
||||
android:layout_height="@dimen/dimen18dp"
|
||||
android:contentDescription="@string/websiteText"
|
||||
app:srcCompat="@drawable/ic_link"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/repoMetaWebsite"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dimen16dp"
|
||||
android:autoLink="web"
|
||||
android:textColorLink="@color/lightBlue"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="@dimen/dimen14sp"
|
||||
tools:text="29"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/repo_fork_frame"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:background="?android:attr/selectableItemBackground"
|
||||
android:paddingTop="@dimen/dimen8dp"
|
||||
android:paddingBottom="@dimen/dimen8dp"
|
||||
android:layout_marginBottom="@dimen/dimen16dp"
|
||||
android:paddingStart="@dimen/dimen16dp"
|
||||
android:paddingEnd="@dimen/dimen16dp">
|
||||
|
||||
<ImageView
|
||||
android:layout_gravity="center"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="@dimen/dimen18dp"
|
||||
android:layout_height="@dimen/dimen18dp"
|
||||
app:srcCompat="@drawable/ic_fork"
|
||||
android:contentDescription="@string/generalImgContentText"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/repo_fork"
|
||||
android:layout_marginStart="15dp"
|
||||
android:layout_marginStart="@dimen/dimen16dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="@dimen/dimen16sp"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dimen12dp"
|
||||
android:layout_marginBottom="@dimen/dimen20dp"
|
||||
android:orientation="horizontal"
|
||||
android:paddingStart="@dimen/dimen16dp"
|
||||
android:paddingEnd="@dimen/dimen16dp">
|
||||
|
||||
<ImageView
|
||||
android:layout_gravity="center"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:contentDescription="@string/size"
|
||||
app:srcCompat="@drawable/ic_download"/>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dimen16dp"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/size"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="@dimen/dimen16sp"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/repoMetaSize"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:alpha="0.9"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="@dimen/dimen14sp"
|
||||
tools:text="29"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="20dp"
|
||||
android:orientation="horizontal"
|
||||
android:paddingStart="@dimen/dimen16dp"
|
||||
android:paddingEnd="@dimen/dimen16dp">
|
||||
|
||||
<ImageView
|
||||
android:layout_gravity="center"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:contentDescription="@string/infoTabRepoCreatedAt"
|
||||
app:srcCompat="@drawable/ic_calendar"/>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dimen16dp"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/infoTabRepoCreatedAt"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="@dimen/dimen16sp"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/repoMetaCreatedAt"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:alpha="0.9"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="@dimen/dimen14sp"
|
||||
tools:text="29"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="@dimen/dimen20dp"
|
||||
android:orientation="horizontal"
|
||||
android:paddingStart="@dimen/dimen16dp"
|
||||
android:paddingEnd="@dimen/dimen16dp">
|
||||
|
||||
<ImageView
|
||||
android:layout_gravity="center"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:contentDescription="@string/websiteText"
|
||||
app:srcCompat="@drawable/ic_link"/>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/websiteFrame"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dimen16dp"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/websiteText"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="@dimen/dimen16sp"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/repoMetaWebsite"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:alpha="0.9"
|
||||
android:autoLink="web"
|
||||
android:textColorLink="@color/lightBlue"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="@dimen/dimen14sp"
|
||||
tools:text="29"/>
|
||||
|
||||
</LinearLayout>
|
||||
android:textSize="@dimen/dimen14sp"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
@@ -8,6 +8,7 @@
|
||||
<dimen name="dimen8dp">8dp</dimen>
|
||||
<dimen name="dimen10dp">10dp</dimen>
|
||||
<dimen name="dimen12dp">12dp</dimen>
|
||||
<dimen name="dimen14dp">14dp</dimen>
|
||||
<dimen name="dimen16dp">16dp</dimen>
|
||||
<dimen name="dimen18dp">18dp</dimen>
|
||||
<dimen name="dimen20dp">20dp</dimen>
|
||||
|
@@ -933,8 +933,6 @@
|
||||
<string name="commitStatuses">Statuses</string>
|
||||
<string name="statusNoUrl">This status has no linked target URL.</string>
|
||||
|
||||
<string name="starredRepos">Starred Repos</string>
|
||||
|
||||
<string name="lang_statistics">Language Statistics</string>
|
||||
<string name="lang_percentage" translatable="false">%s%%</string>
|
||||
|
||||
|
@@ -1,23 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<changelog>
|
||||
|
||||
<release version="9.0.0" versioncode="900">
|
||||
<type name="🎉 Features 🎉">
|
||||
<change>Redesigned home screen</change>
|
||||
<change>Markdown alert support</change>
|
||||
<change>Repository sorting (requires Forgejo 11.x)</change>
|
||||
<change>Revamped login screen UI</change>
|
||||
<change>Revamped app settings</change>
|
||||
</type>
|
||||
<type name="🚀 Improvements 🚀">
|
||||
<change>Improved changelog UI</change>
|
||||
<change>Added popup on login screen explaining where to get a token</change>
|
||||
<change>Theme improvements across the app</change>
|
||||
</type>
|
||||
<type name="🐛 Bug Fixes 🐛">
|
||||
<change>Fixed login screen issue</change>
|
||||
<change>Fixed French translation on the Appearance screen</change>
|
||||
<change>Fixed duplicate labels in issue/pr</change>
|
||||
<release version="10.0.0-dev" versioncode="995">
|
||||
<type name="Dev">
|
||||
<change>Under development</change>
|
||||
</type>
|
||||
</release>
|
||||
|
||||
|
@@ -7,7 +7,7 @@ buildscript {
|
||||
mavenCentral()
|
||||
}
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:8.10.1'
|
||||
classpath 'com.android.tools.build:gradle:8.11.1'
|
||||
}
|
||||
}
|
||||
|
||||
|
2
gradle/wrapper/gradle-wrapper.properties
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
@@ -1,6 +1,6 @@
|
||||
#Tue Jul 11 23:34:25 PKT 2023
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
|
Reference in New Issue
Block a user