1
0
mirror of https://codeberg.org/gitnex/GitNex synced 2025-02-01 11:56:55 +01:00

Enhancements and improvements (#1403)

closes #1388

Reviewed-on: https://codeberg.org/gitnex/GitNex/pulls/1403
Co-authored-by: M M Arif <mmarif@swatian.com>
Co-committed-by: M M Arif <mmarif@swatian.com>
This commit is contained in:
M M Arif 2025-01-19 16:38:07 +00:00 committed by M M Arif
parent a288555076
commit cad36de367
67 changed files with 1232 additions and 527 deletions

View File

@ -13,9 +13,16 @@ steps:
OUTPUT: "signed.apk"
INSTANCE: "https://codeberg.org"
KS_FILE: "gitnex_ci_keystore.jks"
BOT_TOKEN:
from_secret: BOT_TOKEN
KS_PASS:
from_secret: KS_PASS
KEY_PASS:
from_secret: KEY_PASS
KS_REPO:
from_secret: KS_REPO
commands:
- ./scripts/sign-build.sh
secrets: [ BOT_TOKEN, KS_PASS, KEY_PASS, KS_REPO ]
when:
event: [ push, tag ]
branch: main
@ -27,9 +34,10 @@ steps:
WEBDAV_USERNAME: "GitNexBot"
PLUGIN_FILE: "signed.apk"
PLUGIN_DESTINATION: "https://cloud.swatian.com/remote.php/dav/files/GitNexBot/gitnex/builds/latest.apk"
WEBDAV_PASSWORD:
from_secret: WEBDAV_PASSWORD
commands:
- curl -T "$PLUGIN_FILE" -u "$WEBDAV_USERNAME":"$WEBDAV_PASSWORD" "$PLUGIN_DESTINATION"
secrets: [ WEBDAV_PASSWORD ]
when:
event: [ push, tag ]
branch: main
@ -40,9 +48,10 @@ steps:
environment:
WEBDAV_USERNAME: "GitNexBot"
PLUGIN_FILE: "signed.apk"
WEBDAV_PASSWORD:
from_secret: WEBDAV_PASSWORD
commands:
- "[[ $CI_COMMIT_TAG == *'-rc'* ]] && echo 'Upload blocked. Build seems to be a release candidate.' && exit 0"
- curl -T "$PLUGIN_FILE" -u "$WEBDAV_USERNAME":"$WEBDAV_PASSWORD" 'https://cloud.swatian.com/remote.php/dav/files/GitNexBot/gitnex/releases/'"$CI_COMMIT_TAG"'.apk'
secrets: [ WEBDAV_PASSWORD ]
when:
event: [ tag ]

View File

@ -3,7 +3,6 @@ depends_on:
- locale
- check
run_on: [ success, failure ]
skip_clone: true
steps:

View File

@ -4,7 +4,9 @@ steps:
commands:
- cp crowdin.example.yml crowdin.yml
- sed -i 's/-removed-/'"$CROWDIN_TOKEN"'/' crowdin.yml
secrets: [ CROWDIN_TOKEN ]
environment:
CROWDIN_TOKEN:
from_secret: CROWDIN_TOKEN
when:
event: [ push, tag, cron ]
branch: main
@ -40,7 +42,8 @@ steps:
- GITEA_BRANCH=main
# Token that should be used to authenticate against the gitea instance
# - BOT_TOKEN=secret
secrets: [ BOT_TOKEN ]
BOT_TOKEN:
from_secret: BOT_TOKEN
commands:
# Setup git credentials and checkout target branch
- git config user.name "$${GIT_AUTHOR_NAME}"

View File

@ -7,12 +7,12 @@ android {
defaultConfig {
applicationId "org.mian.gitnex"
minSdkVersion 23
targetSdkVersion 34
targetSdkVersion 35
versionCode 695
versionName "7.0.0-dev"
multiDexEnabled true
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
compileSdk 34
compileSdk 35
}
flavorDimensions = ["default"]
productFlavors {
@ -106,7 +106,7 @@ dependencies {
implementation 'ch.acra:acra-notification:5.11.3'
implementation 'androidx.room:room-runtime:2.6.1'
annotationProcessor 'androidx.room:room-compiler:2.6.1'
implementation "androidx.work:work-runtime:2.9.1"
implementation "androidx.work:work-runtime:2.10.0"
implementation "io.mikael:urlbuilder:2.0.9"
implementation "org.codeberg.gitnex-garage:emoji-java:v5.1.2"
//noinspection GradleDependency

View File

@ -61,7 +61,7 @@ public class AddCollaboratorToRepositoryActivity extends BaseActivity {
activityAddCollaboratorToRepositoryBinding
.addCollaboratorSearch.getText())
.toString()
.equals("")) {
.isEmpty()) {
activityAddCollaboratorToRepositoryBinding.progressBar.setVisibility(
View.VISIBLE);
@ -128,7 +128,9 @@ public class AddCollaboratorToRepositoryActivity extends BaseActivity {
activityAddCollaboratorToRepositoryBinding.noData.setVisibility(View.GONE);
} else {
activityAddCollaboratorToRepositoryBinding.recyclerViewUserSearch.setAdapter(null);
activityAddCollaboratorToRepositoryBinding.noData.setVisibility(View.VISIBLE);
adapter.clearAdapter();
}
activityAddCollaboratorToRepositoryBinding.progressBar.setVisibility(View.GONE);

View File

@ -118,7 +118,7 @@ public class AddNewTeamMemberActivity extends BaseActivity {
if (response.isSuccessful()) {
assert response.body() != null;
if (response.body().getData().size() > 0) {
if (!response.body().getData().isEmpty()) {
dataList.clear();
dataList.addAll(response.body().getData());
@ -126,7 +126,9 @@ public class AddNewTeamMemberActivity extends BaseActivity {
noData.setVisibility(View.GONE);
} else {
dataList.clear();
noData.setVisibility(View.VISIBLE);
mRecyclerView.setAdapter(null);
}
mProgressBar.setVisibility(View.GONE);

View File

@ -61,6 +61,7 @@ public class CreateNoteActivity extends BaseActivity {
binding.close.setOnClickListener(close -> finish());
binding.toolbarTitle.setMovementMethod(new ScrollingMovementMethod());
assert action != null;
if (action.equalsIgnoreCase("edit")) {
noteId = getIntent().getIntExtra("noteId", 0);

View File

@ -1,22 +1,47 @@
package org.mian.gitnex.activities;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.NotificationManager;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.NonNull;
import androidx.core.app.NotificationCompat;
import androidx.recyclerview.widget.LinearLayoutManager;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.request.target.CustomTarget;
import com.bumptech.glide.request.transition.Transition;
import com.google.android.material.bottomsheet.BottomSheetDialog;
import com.google.android.material.card.MaterialCardView;
import com.google.android.material.datepicker.MaterialDatePicker;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.vdurmont.emoji.EmojiParser;
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.LinkedHashMap;
@ -24,27 +49,41 @@ import java.util.List;
import java.util.Locale;
import java.util.Objects;
import java.util.TimeZone;
import okhttp3.MediaType;
import okhttp3.RequestBody;
import okhttp3.ResponseBody;
import org.apache.commons.io.FilenameUtils;
import org.gitnex.tea4j.v2.models.Attachment;
import org.gitnex.tea4j.v2.models.EditIssueOption;
import org.gitnex.tea4j.v2.models.Issue;
import org.gitnex.tea4j.v2.models.Milestone;
import org.mian.gitnex.R;
import org.mian.gitnex.adapters.AttachmentsAdapter;
import org.mian.gitnex.clients.RetrofitClient;
import org.mian.gitnex.databinding.ActivityEditIssueBinding;
import org.mian.gitnex.databinding.BottomSheetAttachmentsBinding;
import org.mian.gitnex.databinding.CustomImageViewDialogBinding;
import org.mian.gitnex.fragments.IssuesFragment;
import org.mian.gitnex.fragments.PullRequestsFragment;
import org.mian.gitnex.helpers.AlertDialogs;
import org.mian.gitnex.helpers.AppDatabaseSettings;
import org.mian.gitnex.helpers.AppUtil;
import org.mian.gitnex.helpers.Constants;
import org.mian.gitnex.helpers.Markdown;
import org.mian.gitnex.helpers.SnackBar;
import org.mian.gitnex.helpers.attachments.AttachmentUtils;
import org.mian.gitnex.helpers.attachments.AttachmentsModel;
import org.mian.gitnex.helpers.contexts.IssueContext;
import org.mian.gitnex.notifications.Notifications;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
/**
* @author M M Arif
*/
public class EditIssueActivity extends BaseActivity {
public class EditIssueActivity extends BaseActivity
implements AttachmentsAdapter.AttachmentsReceiverListener {
private ActivityEditIssueBinding binding;
private final String msState = "open";
@ -52,6 +91,147 @@ public class EditIssueActivity extends BaseActivity {
private int milestoneId = 0;
private IssueContext issue;
private boolean renderMd = false;
private MaterialAlertDialogBuilder materialAlertDialogBuilder;
private String token;
private String filename;
private Long filesize;
private String filehash;
private String instanceUrlOnly;
private AttachmentsAdapter attachmentsAdapter;
private static List<AttachmentsModel> attachmentsList;
private static final List<Uri> contentUri = new ArrayList<>();
private MenuItem create;
public ActivityResultLauncher<Intent> downloadAttachmentLauncher =
registerForActivityResult(
new ActivityResultContracts.StartActivityForResult(),
result -> {
if (result.getResultCode() == Activity.RESULT_OK) {
assert result.getData() != null;
try {
OutputStream outputStream =
getContentResolver()
.openOutputStream(
Objects.requireNonNull(
result.getData().getData()));
NotificationCompat.Builder builder =
new NotificationCompat.Builder(ctx, ctx.getPackageName())
.setContentTitle(
getString(
R.string
.fileViewerNotificationTitleStarted))
.setContentText(
getString(
R.string
.fileViewerNotificationDescriptionStarted,
filename))
.setSmallIcon(R.drawable.gitnex_transparent)
.setPriority(NotificationCompat.PRIORITY_LOW)
.setChannelId(
Constants.downloadNotificationChannelId)
.setProgress(100, 0, false)
.setOngoing(true);
int notificationId = Notifications.uniqueNotificationId(ctx);
NotificationManager notificationManager =
(NotificationManager)
getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(notificationId, builder.build());
Thread thread =
new Thread(
() -> {
try {
Call<ResponseBody> call =
RetrofitClient.getWebInterface(
ctx,
instanceUrlOnly)
.getAttachment(filehash);
Response<ResponseBody> response =
call.execute();
assert response.body() != null;
builder.setOngoing(false)
.setContentTitle(
getString(
R.string
.fileViewerNotificationTitleFinished))
.setContentText(
getString(
R.string
.fileViewerNotificationDescriptionFinished,
filename));
AppUtil.copyProgress(
response.body().byteStream(),
outputStream,
filesize,
progress -> {
builder.setProgress(
100, progress, false);
notificationManager.notify(
notificationId,
builder.build());
});
} catch (IOException ignored) {
builder.setOngoing(false)
.setContentTitle(
getString(
R.string
.fileViewerNotificationTitleFailed))
.setContentText(
getString(
R.string
.fileViewerNotificationDescriptionFailed,
filename));
} finally {
builder.setProgress(0, 0, false)
.setOngoing(false);
notificationManager.notify(
notificationId, builder.build());
}
});
thread.start();
} catch (IOException ignored) {
}
}
});
ActivityResultLauncher<Intent> startActivityForResult =
registerForActivityResult(
new ActivityResultContracts.StartActivityForResult(),
result -> {
if (result.getResultCode() == Activity.RESULT_OK) {
Intent data = result.getData();
assert data != null;
contentUri.add(data.getData());
attachmentsList.add(
new AttachmentsModel(
AttachmentUtils.queryName(ctx, data.getData()),
data.getData()));
attachmentsAdapter.updateList(attachmentsList);
}
});
public void onDestroy() {
AttachmentsAdapter.setAttachmentsReceiveListener(null);
super.onDestroy();
}
@SuppressLint("ClickableViewAccessibility")
@Override
@ -65,12 +245,27 @@ public class EditIssueActivity extends BaseActivity {
int resultLimit = Constants.getCurrentResultLimit(ctx);
issue = IssueContext.fromIntent(getIntent());
binding.topAppBar.setNavigationOnClickListener(v -> finish());
binding.topAppBar.setNavigationOnClickListener(
v -> {
finish();
contentUri.clear();
});
MenuItem attachment = binding.topAppBar.getMenu().getItem(0);
MenuItem create = binding.topAppBar.getMenu().getItem(2);
attachment.setVisible(false);
create.setTitle(getString(R.string.menuEditText));
materialAlertDialogBuilder =
new MaterialAlertDialogBuilder(ctx, R.style.ThemeOverlay_Material3_Dialog_Alert);
token = ((BaseActivity) ctx).getAccount().getAccount().getToken();
String instanceUrl = ((BaseActivity) ctx).getAccount().getAccount().getInstanceUrl();
instanceUrlOnly = instanceUrl.substring(0, instanceUrl.lastIndexOf("api/v1/"));
attachmentsList = new ArrayList<>();
attachmentsAdapter = new AttachmentsAdapter(attachmentsList, ctx);
AttachmentsAdapter.setAttachmentsReceiveListener(this);
create = binding.topAppBar.getMenu().getItem(2);
create.setTitle(getString(R.string.saveButton));
binding.editIssueDescription.setOnTouchListener(
(touchView, motionEvent) -> {
@ -122,7 +317,15 @@ public class EditIssueActivity extends BaseActivity {
return true;
} else if (id == R.id.create) {
create.setVisible(false);
processEditIssue();
if (!contentUri.isEmpty()) {
processAttachments();
contentUri.clear();
}
return true;
} else if (id == R.id.attachment) {
checkForAttachments();
return true;
} else {
return super.onOptionsItemSelected(menuItem);
@ -135,12 +338,116 @@ public class EditIssueActivity extends BaseActivity {
issue.getIssueIndex(),
resultLimit);
getAttachments();
if (!issue.getRepository().getPermissions().isPush()) {
findViewById(R.id.editIssueMilestoneSpinnerLayout).setVisibility(View.GONE);
findViewById(R.id.editIssueDueDateLayout).setVisibility(View.GONE);
}
}
@Override
public void setAttachmentsData(Uri filename) {
contentUri.remove(filename);
}
private void checkForAttachments() {
if (!contentUri.isEmpty()) {
BottomSheetAttachmentsBinding bottomSheetAttachmentsBinding =
BottomSheetAttachmentsBinding.inflate(getLayoutInflater());
BottomSheetDialog bottomSheetDialog = new BottomSheetDialog(ctx);
bottomSheetAttachmentsBinding.addAttachment.setOnClickListener(
v1 -> openFileAttachmentActivity());
bottomSheetAttachmentsBinding.recyclerViewAttachments.setHasFixedSize(true);
bottomSheetAttachmentsBinding.recyclerViewAttachments.setLayoutManager(
new LinearLayoutManager(ctx));
bottomSheetAttachmentsBinding.recyclerViewAttachments.setAdapter(attachmentsAdapter);
bottomSheetDialog.setContentView(bottomSheetAttachmentsBinding.getRoot());
bottomSheetDialog.show();
} else {
attachmentsAdapter.clearAdapter();
openFileAttachmentActivity();
}
}
private void openFileAttachmentActivity() {
Intent data = new Intent(Intent.ACTION_GET_CONTENT);
data.addCategory(Intent.CATEGORY_OPENABLE);
data.setType("*/*");
Intent intent = Intent.createChooser(data, "Choose a file");
startActivityForResult.launch(intent);
}
private void processAttachments() {
for (int i = 0; i < contentUri.size(); i++) {
File file = AttachmentUtils.getFile(ctx, contentUri.get(i));
RequestBody requestFile =
RequestBody.create(
file,
MediaType.parse(
Objects.requireNonNull(
getContentResolver().getType(contentUri.get(i)))));
uploadAttachments(requestFile, file.getName());
}
}
private void uploadAttachments(RequestBody requestFile, String filename1) {
Call<Attachment> call3 =
RetrofitClient.getApiInterface(ctx)
.issueCreateIssueAttachment(
requestFile,
issue.getRepository().getOwner(),
issue.getRepository().getName(),
(long) issue.getIssueIndex(),
filename1);
call3.enqueue(
new Callback<>() {
@Override
public void onResponse(
@NonNull Call<Attachment> call,
@NonNull retrofit2.Response<Attachment> response2) {
if (response2.code() == 201) {
new Handler().postDelayed(() -> finish(), 3000);
} else if (response2.code() == 401) {
AlertDialogs.authorizationTokenRevokedDialog(ctx);
} else {
create.setVisible(true);
SnackBar.error(
ctx,
findViewById(android.R.id.content),
getString(R.string.attachmentsSaveError));
}
}
@Override
public void onFailure(@NonNull Call<Attachment> call, @NonNull Throwable t) {
create.setVisible(true);
SnackBar.error(
ctx,
findViewById(android.R.id.content),
getString(R.string.genericServerResponseError));
}
});
}
private void processEditIssue() {
String editIssueTitleForm =
@ -149,7 +456,7 @@ public class EditIssueActivity extends BaseActivity {
Objects.requireNonNull(binding.editIssueDescription.getText()).toString();
String dueDate = Objects.requireNonNull(binding.editIssueDueDate.getText()).toString();
if (editIssueTitleForm.equals("")) {
if (editIssueTitleForm.isEmpty()) {
SnackBar.error(
ctx, findViewById(android.R.id.content), getString(R.string.issueTitleEmpty));
@ -229,6 +536,7 @@ public class EditIssueActivity extends BaseActivity {
AlertDialogs.authorizationTokenRevokedDialog(ctx);
} else {
create.setVisible(true);
SnackBar.error(
ctx,
findViewById(android.R.id.content),
@ -237,7 +545,9 @@ public class EditIssueActivity extends BaseActivity {
}
@Override
public void onFailure(@NonNull Call<Issue> call, @NonNull Throwable t) {}
public void onFailure(@NonNull Call<Issue> call, @NonNull Throwable t) {
create.setVisible(true);
}
});
}
@ -326,7 +636,7 @@ public class EditIssueActivity extends BaseActivity {
.issueCreatedNoMilestone));
milestonesList.put(ms.getTitle(), ms);
if (milestonesList_.size() > 0) {
if (!milestonesList_.isEmpty()) {
for (Milestone milestone :
milestonesList_) {
@ -448,6 +758,150 @@ public class EditIssueActivity extends BaseActivity {
});
}
private void getAttachments() {
Call<List<Attachment>> call =
RetrofitClient.getApiInterface(ctx)
.issueListIssueAttachments(
issue.getRepository().getOwner(),
issue.getRepository().getName(),
(long) issue.getIssueIndex());
call.enqueue(
new Callback<>() {
@Override
public void onResponse(
@NonNull Call<List<Attachment>> call,
@NonNull retrofit2.Response<List<Attachment>> response) {
List<Attachment> attachment = response.body();
if (response.code() == 200) {
assert attachment != null;
if (!attachment.isEmpty()) {
binding.attachmentFrame.setVisibility(View.VISIBLE);
LinearLayout.LayoutParams paramsAttachment =
new LinearLayout.LayoutParams(96, 96);
paramsAttachment.setMargins(0, 0, 48, 0);
for (int i = 0; i < attachment.size(); i++) {
ImageView attachmentView = new ImageView(ctx);
MaterialCardView materialCardView = new MaterialCardView(ctx);
materialCardView.setLayoutParams(paramsAttachment);
materialCardView.setStrokeWidth(0);
materialCardView.setRadius(28);
materialCardView.setCardBackgroundColor(Color.TRANSPARENT);
if (Arrays.asList(
"bmp", "gif", "jpg", "jpeg", "png", "webp",
"heic", "heif")
.contains(
FilenameUtils.getExtension(
attachment.get(i).getName())
.toLowerCase())) {
Glide.with(ctx)
.load(
attachment.get(i).getBrowserDownloadUrl()
+ "?token="
+ token)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.placeholder(R.drawable.loader_animated)
.centerCrop()
.error(R.drawable.ic_close)
.into(attachmentView);
binding.attachmentsView.addView(materialCardView);
attachmentView.setLayoutParams(paramsAttachment);
materialCardView.addView(attachmentView);
int finalI1 = i;
materialCardView.setOnClickListener(
v1 ->
imageViewDialog(
attachment
.get(finalI1)
.getBrowserDownloadUrl()));
} else {
attachmentView.setImageResource(
R.drawable.ic_file_download);
attachmentView.setPadding(4, 4, 4, 4);
binding.attachmentsView.addView(materialCardView);
attachmentView.setLayoutParams(paramsAttachment);
materialCardView.addView(attachmentView);
int finalI = i;
materialCardView.setOnClickListener(
v1 -> {
filesize = attachment.get(finalI).getSize();
filename = attachment.get(finalI).getName();
filehash = attachment.get(finalI).getUuid();
requestFileDownload();
});
}
}
} else {
binding.attachmentFrame.setVisibility(View.GONE);
}
}
}
@Override
public void onFailure(
@NonNull Call<List<Attachment>> call, @NonNull Throwable t) {}
});
}
private void requestFileDownload() {
Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.putExtra(Intent.EXTRA_TITLE, filename);
intent.setType("*/*");
downloadAttachmentLauncher.launch(intent);
}
private void imageViewDialog(String url) {
CustomImageViewDialogBinding imageViewDialogBinding =
CustomImageViewDialogBinding.inflate(LayoutInflater.from(ctx));
View view = imageViewDialogBinding.getRoot();
materialAlertDialogBuilder.setView(view);
materialAlertDialogBuilder.setNeutralButton(getString(R.string.close), null);
Glide.with(ctx)
.asBitmap()
.load(url + "?token=" + token)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.placeholder(R.drawable.loader_animated)
.centerCrop()
.error(R.drawable.ic_close)
.into(
new CustomTarget<Bitmap>() {
@Override
public void onResourceReady(
@NonNull Bitmap resource,
Transition<? super Bitmap> transition) {
imageViewDialogBinding.imageView.setImageBitmap(resource);
imageViewDialogBinding.imageView.buildDrawingCache();
}
@Override
public void onLoadCleared(Drawable placeholder) {}
});
materialAlertDialogBuilder.create().show();
}
@Override
public void onResume() {
super.onResume();

View File

@ -535,7 +535,7 @@ public class IssueDetailActivity extends BaseActivity
viewBinding.commentReply.setText(null);
viewBinding.commentReply.clearFocus();
imm.toggleSoftInput(
InputMethodManager.HIDE_IMPLICIT_ONLY, 0);
InputMethodManager.SHOW_IMPLICIT, 0);
} else {
Toasty.error(ctx, getString(R.string.genericError));
@ -1785,7 +1785,7 @@ public class IssueDetailActivity extends BaseActivity
viewBinding.send.setEnabled(false);
viewBinding.commentReply.setText(null);
viewBinding.commentReply.clearFocus();
imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0);
imm.toggleSoftInput(InputMethodManager.SHOW_IMPLICIT, 0);
} else if (response.code() == 401) {

View File

@ -10,6 +10,7 @@ import android.view.MenuItem;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.activity.EdgeToEdge;
import androidx.activity.OnBackPressedCallback;
import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBarDrawerToggle;
@ -93,6 +94,7 @@ public class MainActivity extends BaseActivity
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
EdgeToEdge.enable(this);
ActivityMainBinding activityMainBinding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(activityMainBinding.getRoot());

View File

@ -222,11 +222,11 @@ public class RepoDetailActivity extends BaseActivity implements BottomSheetListe
filterMilestoneBottomSheet.show(
getSupportFragmentManager(), "repoFilterMenuMilestoneBottomSheet");
return true;
} else if (id == R.id.switchBranches) {
} /*else if (id == R.id.switchBranches) {
chooseBranch();
return true;
} else if (id == R.id.branchCommits) {
}*/ else if (id == R.id.branchCommits) {
Intent intent = repository.getIntent(ctx, CommitsActivity.class);

View File

@ -1,5 +1,6 @@
package org.mian.gitnex.adapters;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.os.Handler;
@ -99,7 +100,7 @@ public class CollaboratorSearchAdapter
currentItem.getLogin());
call.enqueue(
new Callback<Void>() {
new Callback<>() {
@Override
public void onResponse(
@ -138,6 +139,12 @@ public class CollaboratorSearchAdapter
return usersSearchList.size();
}
@SuppressLint("NotifyDataSetChanged")
public void clearAdapter() {
usersSearchList.clear();
notifyDataSetChanged();
}
public class CollaboratorSearchViewHolder extends RecyclerView.ViewHolder {
private final ImageView userAvatar;

View File

@ -18,6 +18,7 @@ import com.amulyakhare.textdrawable.TextDrawable;
import com.amulyakhare.textdrawable.util.ColorGenerator;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.google.android.material.card.MaterialCardView;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
@ -164,6 +165,7 @@ public class ReposListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHold
private final View spacerView;
private org.gitnex.tea4j.v2.models.Repository userRepositories;
private CheckBox isRepoAdmin;
private MaterialCardView isRepoArchivedFrame;
ReposHolder(View itemView) {
@ -176,6 +178,7 @@ public class ReposListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHold
repoStars = itemView.findViewById(R.id.repoStars);
repoLastUpdated = itemView.findViewById(R.id.repoLastUpdated);
spacerView = itemView.findViewById(R.id.spacerView);
isRepoArchivedFrame = itemView.findViewById(R.id.repo_is_archived_frame);
itemView.setOnClickListener(
v -> {
@ -254,6 +257,12 @@ public class ReposListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHold
isRepoAdmin = new CheckBox(context);
}
isRepoAdmin.setChecked(repositories.getPermissions().isAdmin());
if (repositories.isArchived()) {
isRepoArchivedFrame.setVisibility(View.VISIBLE);
} else {
isRepoArchivedFrame.setVisibility(View.GONE);
}
}
}
}

View File

@ -1,6 +1,7 @@
package org.mian.gitnex.fragments;
import android.annotation.SuppressLint;
import android.app.Dialog;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
@ -17,17 +18,21 @@ import androidx.appcompat.widget.SearchView;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProvider;
import androidx.recyclerview.widget.LinearLayoutManager;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import moe.feng.common.view.breadcrumbs.DefaultBreadcrumbsCallback;
import moe.feng.common.view.breadcrumbs.model.BreadcrumbItem;
import org.gitnex.tea4j.v2.models.Branch;
import org.gitnex.tea4j.v2.models.ContentsResponse;
import org.mian.gitnex.R;
import org.mian.gitnex.activities.CreateFileActivity;
import org.mian.gitnex.activities.FileViewActivity;
import org.mian.gitnex.activities.RepoDetailActivity;
import org.mian.gitnex.adapters.FilesAdapter;
import org.mian.gitnex.clients.RetrofitClient;
import org.mian.gitnex.database.api.BaseApi;
import org.mian.gitnex.database.api.UserAccountsApi;
import org.mian.gitnex.database.models.UserAccount;
@ -36,6 +41,9 @@ import org.mian.gitnex.helpers.AppUtil;
import org.mian.gitnex.helpers.Path;
import org.mian.gitnex.helpers.contexts.RepositoryContext;
import org.mian.gitnex.viewmodels.FilesViewModel;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
/**
* @author M M Arif
@ -79,6 +87,8 @@ public class FilesFragment extends Fragment implements FilesAdapter.FilesAdapter
binding.recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
binding.recyclerView.setAdapter(filesAdapter);
binding.branchTitle.setText(repository.getBranchRef());
binding.breadcrumbsView.setItems(
new ArrayList<>(
Collections.singletonList(
@ -172,6 +182,8 @@ public class FilesFragment extends Fragment implements FilesAdapter.FilesAdapter
binding.newFile.setOnClickListener(
v17 -> startActivity(repository.getIntent(getContext(), CreateFileActivity.class)));
binding.switchBranch.setOnClickListener(switchBranch -> chooseBranch());
return binding.getRoot();
}
@ -220,10 +232,10 @@ public class FilesFragment extends Fragment implements FilesAdapter.FilesAdapter
for (UserAccount userAccount : userAccounts) {
Uri instanceUri = Uri.parse(userAccount.getInstanceUrl());
if (instanceUri.getHost().toLowerCase().equals(host)) {
if (Objects.requireNonNull(instanceUri.getHost()).toLowerCase().equals(host)) {
account = userAccount;
// if scheme is wrong fix it
if (!url.getScheme().equals(instanceUri.getScheme())) {
if (!Objects.equals(url.getScheme(), instanceUri.getScheme())) {
url = AppUtil.changeScheme(url, instanceUri.getScheme());
}
break;
@ -281,7 +293,7 @@ public class FilesFragment extends Fragment implements FilesAdapter.FilesAdapter
filesAdapter.getOriginalFiles().addAll(filesListMain);
filesAdapter.notifyOriginalDataSetChanged();
if (filesListMain.size() > 0) {
if (!filesListMain.isEmpty()) {
AppUtil.setMultiVisibility(
View.VISIBLE, binding.recyclerView, binding.filesFrame);
@ -322,7 +334,7 @@ public class FilesFragment extends Fragment implements FilesAdapter.FilesAdapter
filesAdapter.getOriginalFiles().addAll(filesListMain2);
filesAdapter.notifyOriginalDataSetChanged();
if (filesListMain2.size() > 0) {
if (!filesListMain2.isEmpty()) {
AppUtil.setMultiVisibility(
View.VISIBLE, binding.recyclerView, binding.filesFrame);
@ -340,6 +352,70 @@ public class FilesFragment extends Fragment implements FilesAdapter.FilesAdapter
});
}
private void chooseBranch() {
Dialog progressDialog = new Dialog(requireContext());
progressDialog.setCancelable(false);
progressDialog.setContentView(R.layout.custom_progress_loader);
progressDialog.show();
MaterialAlertDialogBuilder materialAlertDialogBuilder =
new MaterialAlertDialogBuilder(
requireContext(), R.style.ThemeOverlay_Material3_Dialog_Alert);
Call<List<Branch>> call =
RetrofitClient.getApiInterface(requireContext())
.repoListBranches(repository.getOwner(), repository.getName(), null, null);
call.enqueue(
new Callback<>() {
@Override
public void onResponse(
@NonNull Call<List<Branch>> call,
@NonNull Response<List<Branch>> response) {
progressDialog.hide();
if (response.code() == 200) {
List<String> branchesList = new ArrayList<>();
int selectedBranch = 0;
assert response.body() != null;
for (int i = 0; i < response.body().size(); i++) {
Branch branches = response.body().get(i);
branchesList.add(branches.getName());
if (repository.getBranchRef().equals(branches.getName())) {
selectedBranch = i;
}
}
materialAlertDialogBuilder
.setTitle(R.string.pageTitleChooseBranch)
.setSingleChoiceItems(
branchesList.toArray(new String[0]),
selectedBranch,
(dialogInterface, i) -> {
repository.setBranchRef(branchesList.get(i));
binding.branchTitle.setText(branchesList.get(i));
refresh();
dialogInterface.dismiss();
})
.setNeutralButton(R.string.cancelButton, null);
materialAlertDialogBuilder.create().show();
}
}
@Override
public void onFailure(@NonNull Call<List<Branch>> call, @NonNull Throwable t) {
progressDialog.hide();
}
});
}
@Override
public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {
@ -353,6 +429,7 @@ public class FilesFragment extends Fragment implements FilesAdapter.FilesAdapter
MenuItem searchItem = menu.findItem(R.id.action_search);
SearchView searchView = (SearchView) searchItem.getActionView();
assert searchView != null;
searchView.setImeOptions(EditorInfo.IME_ACTION_DONE);
searchView.setOnQueryTextListener(
new SearchView.OnQueryTextListener() {

View File

@ -286,19 +286,9 @@ public class RepoInfoFragment extends Fragment {
AlertDialogs.authorizationTokenRevokedDialog(ctx);
break;
case 403:
Toasty.error(ctx, ctx.getString(R.string.authorizeError));
binding.languagesStatistic.setVisibility(View.GONE);
break;
case 404:
binding.languagesStatistic.setVisibility(View.GONE);
break;
default:
Toasty.error(getContext(), getString(R.string.genericError));
binding.languagesStatistic.setVisibility(View.GONE);
break;
}
}
}
@ -529,22 +519,10 @@ public class RepoInfoFragment extends Fragment {
AlertDialogs.authorizationTokenRevokedDialog(ctx);
break;
case 403:
Toasty.error(ctx, ctx.getString(R.string.authorizeError));
binding.fileContentsFrameHeader.setVisibility(View.GONE);
binding.fileContentsFrame.setVisibility(View.GONE);
break;
case 404:
binding.fileContentsFrameHeader.setVisibility(View.GONE);
binding.fileContentsFrame.setVisibility(View.GONE);
break;
default:
Toasty.error(getContext(), getString(R.string.genericError));
binding.fileContentsFrameHeader.setVisibility(View.GONE);
binding.fileContentsFrame.setVisibility(View.GONE);
break;
}
}
}

View File

@ -1,10 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:layout_width="match_parent"
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:background="?attr/primaryBackgroundColor"
xmlns:android="http://schemas.android.com/apk/res/android"
android:background="?attr/primaryBackgroundColor">
xmlns:app="http://schemas.android.com/apk/res-auto"
android:fitsSystemWindows="true">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appbar"
@ -55,66 +56,69 @@
android:visibility="gone"
app:indicatorColor="?attr/progressIndicatorColor"/>
<LinearLayout
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dimen10dp"
android:layout_marginEnd="@dimen/dimen10dp"
android:layout_marginTop="@dimen/dimen10dp"
android:layout_marginBottom="@dimen/dimen10dp">
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/addCollaboratorSearchLayout"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColorHint="?attr/hintColor"
app:hintTextColor="?attr/hintColor"
app:boxStrokeErrorColor="@color/darkRed"
android:layout_marginTop="@dimen/dimen8dp"
android:layout_marginBottom="@dimen/dimen8dp"
app:startIconDrawable="@drawable/ic_search"
app:startIconTint="?attr/iconsColor"
app:endIconMode="clear_text"
app:endIconTint="?attr/iconsColor"
android:hint="@string/addCollaboratorSearchHint">
android:orientation="vertical"
android:padding="@dimen/dimen16dp">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/addCollaboratorSearch"
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/addCollaboratorSearchLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="?attr/inputTextColor"
android:textColorHint="?attr/hintColor"
android:singleLine="true"
android:imeOptions="actionSend"
android:inputType="text"
android:textSize="@dimen/dimen16sp"/>
app:hintTextColor="?attr/hintColor"
app:boxStrokeErrorColor="@color/darkRed"
android:layout_marginBottom="@dimen/dimen8dp"
app:startIconDrawable="@drawable/ic_search"
app:startIconTint="?attr/iconsColor"
app:endIconMode="clear_text"
app:endIconTint="?attr/iconsColor"
android:hint="@string/addCollaboratorSearchHint">
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/addCollaboratorSearch"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="?attr/inputTextColor"
android:textColorHint="?attr/hintColor"
android:singleLine="true"
android:imeOptions="actionSend"
android:inputType="text"
android:textSize="@dimen/dimen16sp"/>
</LinearLayout>
</com.google.android.material.textfield.TextInputLayout>
<TextView
android:id="@+id/noData"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="@dimen/dimen16dp"
android:gravity="center"
android:text="@string/noDataFound"
android:textColor="?attr/primaryTextColor"
android:textSize="@dimen/dimen20sp"
android:visibility="gone"/>
<TextView
android:id="@+id/noData"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="@dimen/dimen16dp"
android:gravity="center"
android:text="@string/noDataFound"
android:textColor="?attr/primaryTextColor"
android:textSize="@dimen/dimen20sp"
android:visibility="gone"/>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?attr/primaryBackgroundColor"
android:padding="@dimen/dimen8dp">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?attr/primaryBackgroundColor">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerViewUserSearch"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerViewUserSearch"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</FrameLayout>
</FrameLayout>
</LinearLayout>
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</androidx.coordinatorlayout.widget.CoordinatorLayout>

View File

@ -4,14 +4,14 @@
android:layout_height="match_parent"
android:background="?attr/primaryBackgroundColor"
xmlns:android="http://schemas.android.com/apk/res/android"
android:fitsSystemWindows="true"
xmlns:app="http://schemas.android.com/apk/res-auto">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/primaryBackgroundColor"
android:fitsSystemWindows="true">
android:background="?attr/primaryBackgroundColor">
<com.google.android.material.appbar.CollapsingToolbarLayout
style="?attr/collapsingToolbarLayoutLargeStyle"

View File

@ -1,10 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:layout_width="match_parent"
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:background="?attr/primaryBackgroundColor"
xmlns:android="http://schemas.android.com/apk/res/android"
android:background="?attr/primaryBackgroundColor">
xmlns:app="http://schemas.android.com/apk/res-auto"
android:fitsSystemWindows="true">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appbar"
@ -55,15 +56,18 @@
style="@style/Widget.MaterialComponents.LinearProgressIndicator"
app:indicatorColor="?attr/progressIndicatorColor"/>
<LinearLayout
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dimen10dp"
android:layout_marginEnd="@dimen/dimen10dp"
android:layout_marginTop="@dimen/dimen10dp"
android:layout_marginBottom="@dimen/dimen10dp">
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<com.google.android.material.textfield.TextInputLayout
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="@dimen/dimen16dp">
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/addNewTeamMemberLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
@ -71,7 +75,6 @@
android:textColorHint="?attr/hintColor"
app:hintTextColor="?attr/hintColor"
app:boxStrokeErrorColor="@color/darkRed"
android:layout_marginTop="@dimen/dimen8dp"
android:layout_marginBottom="@dimen/dimen8dp"
app:startIconDrawable="@drawable/ic_search"
app:startIconTint="?attr/iconsColor"
@ -89,32 +92,33 @@
android:inputType="text"
android:textSize="@dimen/dimen16sp"/>
</com.google.android.material.textfield.TextInputLayout>
</com.google.android.material.textfield.TextInputLayout>
</LinearLayout>
<TextView
android:id="@+id/noData"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="@dimen/dimen16dp"
android:gravity="center"
android:text="@string/noDataFound"
android:textColor="?attr/primaryTextColor"
android:textSize="@dimen/dimen20sp"
android:visibility="gone"/>
<TextView
android:id="@+id/noData"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="@dimen/dimen16dp"
android:gravity="center"
android:text="@string/noDataFound"
android:textColor="?attr/primaryTextColor"
android:textSize="@dimen/dimen20sp"
android:visibility="gone"/>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?attr/primaryBackgroundColor">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?attr/primaryBackgroundColor"
android:padding="@dimen/dimen8dp">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerViewUserSearch"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerViewUserSearch"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</FrameLayout>
</FrameLayout>
</LinearLayout>
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</androidx.coordinatorlayout.widget.CoordinatorLayout>

View File

@ -1,10 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:background="?attr/primaryBackgroundColor"
android:orientation="vertical">
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:fitsSystemWindows="true">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appbar"
@ -87,4 +88,4 @@
android:textSize="@dimen/dimen20sp"
android:visibility="gone" />
</RelativeLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>

View File

@ -5,6 +5,7 @@
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:fitsSystemWindows="true"
android:background="?attr/primaryBackgroundColor">
<FrameLayout

View File

@ -4,6 +4,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:orientation="vertical">
<com.google.android.material.appbar.AppBarLayout

View File

@ -1,8 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="match_parent"
android:background="?attr/primaryBackgroundColor"
xmlns:android="http://schemas.android.com/apk/res/android"
android:fitsSystemWindows="true">
<FrameLayout
android:id="@+id/fragment_container"
@ -10,4 +12,4 @@
android:layout_height="match_parent"
android:background="?attr/primaryBackgroundColor"/>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>

View File

@ -1,10 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?attr/primaryBackgroundColor"
android:orientation="vertical">
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:fitsSystemWindows="true">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appbar"
@ -90,4 +91,4 @@
android:textSize="@dimen/dimen20sp"
android:visibility="gone"/>
</RelativeLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>

View File

@ -4,14 +4,14 @@
android:layout_height="match_parent"
android:background="?attr/primaryBackgroundColor"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
xmlns:app="http://schemas.android.com/apk/res-auto"
android:fitsSystemWindows="true">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/primaryBackgroundColor"
android:fitsSystemWindows="true">
android:background="?attr/primaryBackgroundColor">
<com.google.android.material.appbar.CollapsingToolbarLayout
style="?attr/collapsingToolbarLayoutLargeStyle"

View File

@ -4,14 +4,14 @@
android:layout_height="match_parent"
android:background="?attr/primaryBackgroundColor"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
xmlns:app="http://schemas.android.com/apk/res-auto"
android:fitsSystemWindows="true">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/primaryBackgroundColor"
android:fitsSystemWindows="true">
android:background="?attr/primaryBackgroundColor">
<com.google.android.material.appbar.CollapsingToolbarLayout
style="?attr/collapsingToolbarLayoutLargeStyle"

View File

@ -4,14 +4,14 @@
android:layout_height="match_parent"
android:background="?attr/primaryBackgroundColor"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
xmlns:app="http://schemas.android.com/apk/res-auto"
android:fitsSystemWindows="true">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/primaryBackgroundColor"
android:fitsSystemWindows="true">
android:background="?attr/primaryBackgroundColor">
<com.google.android.material.appbar.CollapsingToolbarLayout
style="?attr/collapsingToolbarLayoutLargeStyle"

View File

@ -4,14 +4,14 @@
android:layout_height="match_parent"
android:background="?attr/primaryBackgroundColor"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
xmlns:app="http://schemas.android.com/apk/res-auto"
android:fitsSystemWindows="true">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/primaryBackgroundColor"
android:fitsSystemWindows="true">
android:background="?attr/primaryBackgroundColor">
<com.google.android.material.appbar.CollapsingToolbarLayout
style="?attr/collapsingToolbarLayoutLargeStyle"

View File

@ -4,14 +4,14 @@
android:layout_height="match_parent"
android:background="?attr/primaryBackgroundColor"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
xmlns:app="http://schemas.android.com/apk/res-auto"
android:fitsSystemWindows="true">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/primaryBackgroundColor"
android:fitsSystemWindows="true">
android:background="?attr/primaryBackgroundColor">
<com.google.android.material.appbar.CollapsingToolbarLayout
style="?attr/collapsingToolbarLayoutLargeStyle"

View File

@ -1,16 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?attr/primaryBackgroundColor"
android:orientation="vertical">
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:fitsSystemWindows="true">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/Widget.AppCompat.SearchView"
android:background="?attr/primaryBackgroundColor"
app:elevation="@dimen/dimen0dp">
<com.google.android.material.appbar.MaterialToolbar
@ -46,9 +47,10 @@
</com.google.android.material.appbar.AppBarLayout>
<ScrollView
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
android:background="?attr/primaryBackgroundColor">
<LinearLayout
@ -81,6 +83,6 @@
</LinearLayout>
</ScrollView>
</androidx.core.widget.NestedScrollView>
</LinearLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>

View File

@ -4,14 +4,14 @@
android:layout_height="match_parent"
android:background="?attr/primaryBackgroundColor"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
xmlns:app="http://schemas.android.com/apk/res-auto"
android:fitsSystemWindows="true">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/primaryBackgroundColor"
android:fitsSystemWindows="true">
android:background="?attr/primaryBackgroundColor">
<com.google.android.material.appbar.CollapsingToolbarLayout
style="?attr/collapsingToolbarLayoutLargeStyle"

View File

@ -4,14 +4,14 @@
android:layout_height="match_parent"
android:background="?attr/primaryBackgroundColor"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
xmlns:app="http://schemas.android.com/apk/res-auto"
android:fitsSystemWindows="true">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/primaryBackgroundColor"
android:fitsSystemWindows="true">
android:background="?attr/primaryBackgroundColor">
<com.google.android.material.appbar.CollapsingToolbarLayout
style="?attr/collapsingToolbarLayoutLargeStyle"
@ -94,7 +94,7 @@
android:text="@string/insertNote"
android:textColor="?attr/primaryTextColor"
android:textSize="@dimen/dimen14sp"/>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/prBodyLayout"
android:layout_width="match_parent"

View File

@ -4,14 +4,14 @@
android:layout_height="match_parent"
android:background="?attr/primaryBackgroundColor"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
xmlns:app="http://schemas.android.com/apk/res-auto"
android:fitsSystemWindows="true">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/primaryBackgroundColor"
android:fitsSystemWindows="true">
android:background="?attr/primaryBackgroundColor">
<com.google.android.material.appbar.CollapsingToolbarLayout
style="?attr/collapsingToolbarLayoutLargeStyle"

View File

@ -4,14 +4,14 @@
android:layout_height="match_parent"
android:background="?attr/primaryBackgroundColor"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
xmlns:app="http://schemas.android.com/apk/res-auto"
android:fitsSystemWindows="true">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/primaryBackgroundColor"
android:fitsSystemWindows="true">
android:background="?attr/primaryBackgroundColor">
<com.google.android.material.appbar.CollapsingToolbarLayout
style="?attr/collapsingToolbarLayoutLargeStyle"

View File

@ -4,14 +4,14 @@
android:layout_height="match_parent"
android:background="?attr/primaryBackgroundColor"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
xmlns:app="http://schemas.android.com/apk/res-auto"
android:fitsSystemWindows="true">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/primaryBackgroundColor"
android:fitsSystemWindows="true">
android:background="?attr/primaryBackgroundColor">
<com.google.android.material.appbar.CollapsingToolbarLayout
style="?attr/collapsingToolbarLayoutLargeStyle"

View File

@ -1,10 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_height="match_parent"
android:background="?attr/primaryBackgroundColor"
android:orientation="vertical">
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:fitsSystemWindows="true">
<com.google.android.material.progressindicator.LinearProgressIndicator
android:id="@+id/progressBar"
@ -14,10 +15,10 @@
android:indeterminate="true"
app:indicatorColor="?attr/progressIndicatorColor" />
<ScrollView
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<LinearLayout
android:layout_width="match_parent"
@ -158,6 +159,6 @@
</LinearLayout>
</ScrollView>
</androidx.core.widget.NestedScrollView>
</LinearLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>

View File

@ -1,13 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?attr/primaryBackgroundColor"
android:orientation="vertical">
xmlns:android="http://schemas.android.com/apk/res/android"
android:fitsSystemWindows="true">
<FrameLayout
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>

View File

@ -4,14 +4,14 @@
android:layout_height="match_parent"
android:background="?attr/primaryBackgroundColor"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
xmlns:app="http://schemas.android.com/apk/res-auto"
android:fitsSystemWindows="true">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/primaryBackgroundColor"
android:fitsSystemWindows="true">
android:background="?attr/primaryBackgroundColor">
<com.google.android.material.appbar.CollapsingToolbarLayout
style="?attr/collapsingToolbarLayoutLargeStyle"
@ -158,6 +158,24 @@
</com.google.android.material.textfield.TextInputLayout>
<LinearLayout
android:id="@+id/attachmentFrame"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone"
android:orientation="vertical">
<LinearLayout
android:id="@+id/attachmentsView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dimen12dp"
android:orientation="horizontal">
</LinearLayout>
</LinearLayout>
</LinearLayout>
</androidx.core.widget.NestedScrollView>

View File

@ -1,11 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?attr/primaryBackgroundColor"
android:orientation="vertical">
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:fitsSystemWindows="true">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appbar"
@ -61,6 +61,7 @@
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
android:background="?attr/primaryBackgroundColor">
<LinearLayout
@ -100,8 +101,7 @@
android:id="@+id/contents"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone"
tools:visibility="visible"/>
android:visibility="gone" />
<com.github.chrisbanes.photoview.PhotoView
android:id="@+id/photo_view"
@ -114,4 +114,4 @@
</androidx.core.widget.NestedScrollView>
</LinearLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>

View File

@ -5,6 +5,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?attr/primaryBackgroundColor"
android:fitsSystemWindows="true"
android:orientation="vertical">
<com.google.android.material.appbar.AppBarLayout

View File

@ -12,6 +12,8 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:background="?attr/primaryBackgroundColor"
android:orientation="vertical">
<com.google.android.material.appbar.MaterialToolbar
@ -20,7 +22,6 @@
android:background="?attr/primaryBackgroundColor"
android:id="@+id/toolbar"
app:titleTextColor="?attr/primaryTextColor"
android:theme="@style/Widget.AppCompat.SearchView"
android:elevation="@dimen/dimen0dp">
<TextView

View File

@ -4,14 +4,14 @@
android:layout_height="match_parent"
android:background="?attr/primaryBackgroundColor"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
xmlns:app="http://schemas.android.com/apk/res-auto"
android:fitsSystemWindows="true">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/primaryBackgroundColor"
android:fitsSystemWindows="true">
android:background="?attr/primaryBackgroundColor">
<com.google.android.material.appbar.CollapsingToolbarLayout
style="?attr/collapsingToolbarLayoutLargeStyle"

View File

@ -1,10 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?attr/primaryBackgroundColor"
android:orientation="vertical">
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:fitsSystemWindows="true">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appbar"
@ -63,4 +64,4 @@
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"/>
</LinearLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>

View File

@ -1,10 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?attr/primaryBackgroundColor">
android:background="?attr/primaryBackgroundColor"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:fitsSystemWindows="true">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appbar"
@ -100,4 +101,4 @@
android:textSize="@dimen/dimen20sp"
android:visibility="gone"/>
</RelativeLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>

View File

@ -1,18 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:background="?attr/primaryBackgroundColor"
android:orientation="vertical">
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:fitsSystemWindows="true">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:elevation="@dimen/dimen0dp"
android:theme="@style/Widget.AppCompat.SearchView">
android:theme="@style/Widget.AppCompat.SearchView"
app:elevation="@dimen/dimen0dp">
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/toolbar"
@ -46,32 +46,47 @@
</com.google.android.material.appbar.AppBarLayout>
<GridView
android:id="@+id/gridView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scrollbars="none"
android:numColumns="2"
android:gravity="center"
android:background="?attr/primaryBackgroundColor"
android:padding="@dimen/dimen4dp"/>
<com.google.android.material.progressindicator.LinearProgressIndicator
android:id="@+id/progress_bar"
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:indeterminate="true"
style="@style/Widget.MaterialComponents.LinearProgressIndicator"
app:indicatorColor="?attr/progressIndicatorColor"/>
app:layout_behavior="@string/appbar_scrolling_view_behavior"
android:background="?attr/primaryBackgroundColor">
<TextView
android:id="@+id/noDataStargazers"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="@string/noDataFound"
android:textColor="?attr/primaryTextColor"
android:textSize="@dimen/dimen20sp"
android:visibility="gone"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
</LinearLayout>
<GridView
android:id="@+id/gridView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scrollbars="none"
android:numColumns="2"
android:gravity="center"
android:background="?attr/primaryBackgroundColor"
android:padding="@dimen/dimen4dp"/>
<com.google.android.material.progressindicator.LinearProgressIndicator
android:id="@+id/progress_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:indeterminate="true"
style="@style/Widget.MaterialComponents.LinearProgressIndicator"
app:indicatorColor="?attr/progressIndicatorColor"/>
</LinearLayout>
</androidx.core.widget.NestedScrollView>
<TextView
android:id="@+id/noDataStargazers"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="@string/noDataFound"
android:textColor="?attr/primaryTextColor"
android:textSize="@dimen/dimen20sp"
android:visibility="gone"/>
</androidx.coordinatorlayout.widget.CoordinatorLayout>

View File

@ -1,18 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:background="?attr/primaryBackgroundColor"
android:orientation="vertical">
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:fitsSystemWindows="true">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:elevation="@dimen/dimen0dp"
android:theme="@style/Widget.AppCompat.SearchView">
android:theme="@style/Widget.AppCompat.SearchView"
app:elevation="@dimen/dimen0dp">
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/toolbar"
@ -46,23 +46,38 @@
</com.google.android.material.appbar.AppBarLayout>
<GridView
android:id="@+id/gridView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="?attr/primaryBackgroundColor"
android:padding="@dimen/dimen4dp"
android:scrollbars="none"
android:numColumns="2"
android:gravity="center"/>
<com.google.android.material.progressindicator.LinearProgressIndicator
android:id="@+id/progress_bar"
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:indeterminate="true"
style="@style/Widget.MaterialComponents.LinearProgressIndicator"
app:indicatorColor="?attr/progressIndicatorColor"/>
app:layout_behavior="@string/appbar_scrolling_view_behavior"
android:background="?attr/primaryBackgroundColor">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<com.google.android.material.progressindicator.LinearProgressIndicator
android:id="@+id/progress_bar"
style="@style/Widget.MaterialComponents.LinearProgressIndicator"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:indeterminate="true"
app:indicatorColor="?attr/progressIndicatorColor"/>
<GridView
android:id="@+id/gridView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="?attr/primaryBackgroundColor"
android:padding="@dimen/dimen4dp"
android:scrollbars="none"
android:numColumns="2"
android:gravity="center"/>
</LinearLayout>
</androidx.core.widget.NestedScrollView>
<TextView
android:id="@+id/noDataWatchers"
@ -74,4 +89,4 @@
android:textSize="@dimen/dimen20sp"
android:visibility="gone"/>
</LinearLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>

View File

@ -1,11 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?attr/primaryBackgroundColor"
android:orientation="vertical">
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:fitsSystemWindows="true">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appbar"
@ -48,8 +48,10 @@
</com.google.android.material.appbar.AppBarLayout>
<ScrollView android:layout_width="match_parent"
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
android:background="?attr/primaryBackgroundColor">
<LinearLayout
@ -75,6 +77,10 @@
<View
android:layout_width="match_parent"
android:layout_height="@dimen/dimen1dp"
android:layout_marginTop="@dimen/dimen4dp"
android:layout_marginBottom="@dimen/dimen4dp"
android:layout_marginStart="@dimen/dimen16dp"
android:layout_marginEnd="@dimen/dimen16dp"
android:background="?attr/dividerColor"/>
<LinearLayout
@ -84,8 +90,7 @@
android:background="?android:attr/selectableItemBackground"
android:clickable="true"
android:focusable="true"
android:orientation="vertical"
tools:visibility="visible">
android:orientation="vertical">
<TextView
android:id="@+id/transferRepositoryOwnership"
@ -116,6 +121,10 @@
<View
android:layout_width="match_parent"
android:layout_height="@dimen/dimen1dp"
android:layout_marginTop="@dimen/dimen4dp"
android:layout_marginBottom="@dimen/dimen4dp"
android:layout_marginStart="@dimen/dimen16dp"
android:layout_marginEnd="@dimen/dimen16dp"
android:background="?attr/dividerColor"/>
</LinearLayout>
@ -159,7 +168,7 @@
</LinearLayout>
</ScrollView>
</androidx.core.widget.NestedScrollView>
</LinearLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>

View File

@ -4,14 +4,14 @@
android:layout_height="match_parent"
android:background="?attr/primaryBackgroundColor"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
xmlns:app="http://schemas.android.com/apk/res-auto"
android:fitsSystemWindows="true">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/primaryBackgroundColor"
android:fitsSystemWindows="true">
android:background="?attr/primaryBackgroundColor">
<com.google.android.material.appbar.CollapsingToolbarLayout
style="?attr/collapsingToolbarLayoutLargeStyle"

View File

@ -4,14 +4,14 @@
android:layout_height="match_parent"
android:background="?attr/primaryBackgroundColor"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
xmlns:app="http://schemas.android.com/apk/res-auto"
android:fitsSystemWindows="true">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/primaryBackgroundColor"
android:fitsSystemWindows="true">
android:background="?attr/primaryBackgroundColor">
<com.google.android.material.appbar.CollapsingToolbarLayout
style="?attr/collapsingToolbarLayoutLargeStyle"

View File

@ -4,14 +4,14 @@
android:layout_height="match_parent"
android:background="?attr/primaryBackgroundColor"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
xmlns:app="http://schemas.android.com/apk/res-auto"
android:fitsSystemWindows="true">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/primaryBackgroundColor"
android:fitsSystemWindows="true">
android:background="?attr/primaryBackgroundColor">
<com.google.android.material.appbar.CollapsingToolbarLayout
style="?attr/collapsingToolbarLayoutLargeStyle"

View File

@ -4,14 +4,14 @@
android:layout_height="match_parent"
android:background="?attr/primaryBackgroundColor"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
xmlns:app="http://schemas.android.com/apk/res-auto"
android:fitsSystemWindows="true">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/primaryBackgroundColor"
android:fitsSystemWindows="true">
android:background="?attr/primaryBackgroundColor">
<com.google.android.material.appbar.CollapsingToolbarLayout
style="?attr/collapsingToolbarLayoutLargeStyle"

View File

@ -4,14 +4,14 @@
android:layout_height="match_parent"
android:background="?attr/primaryBackgroundColor"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
xmlns:app="http://schemas.android.com/apk/res-auto"
android:fitsSystemWindows="true">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/primaryBackgroundColor"
android:fitsSystemWindows="true">
android:background="?attr/primaryBackgroundColor">
<com.google.android.material.appbar.CollapsingToolbarLayout
style="?attr/collapsingToolbarLayoutLargeStyle"

View File

@ -4,14 +4,14 @@
android:layout_height="match_parent"
android:background="?attr/primaryBackgroundColor"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
xmlns:app="http://schemas.android.com/apk/res-auto"
android:fitsSystemWindows="true">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/primaryBackgroundColor"
android:fitsSystemWindows="true">
android:background="?attr/primaryBackgroundColor">
<com.google.android.material.appbar.CollapsingToolbarLayout
style="?attr/collapsingToolbarLayoutLargeStyle"

View File

@ -1,11 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?attr/primaryBackgroundColor"
android:orientation="vertical">
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:fitsSystemWindows="true">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appbar"
@ -61,7 +61,8 @@
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/primaryBackgroundColor">
android:background="?attr/primaryBackgroundColor"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<LinearLayout
android:layout_width="match_parent"
@ -101,8 +102,7 @@
android:id="@+id/contents"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone"
tools:visibility="visible"/>
android:visibility="gone" />
</LinearLayout>
@ -181,4 +181,4 @@
</androidx.core.widget.NestedScrollView>
</LinearLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>

View File

@ -1,9 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:layout_width="match_parent"
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?attr/primaryBackgroundColor"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android">
android:fitsSystemWindows="true">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appbar"
@ -84,4 +86,4 @@
</FrameLayout>
</LinearLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>

View File

@ -19,7 +19,10 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="?attr/materialCardViewElevatedStyle"
android:layout_margin="@dimen/dimen8dp"
android:layout_marginStart="@dimen/dimen8dp"
android:layout_marginEnd="@dimen/dimen8dp"
android:layout_marginTop="@dimen/dimen8dp"
android:visibility="gone"
app:cardElevation="@dimen/dimen0dp">
<LinearLayout
@ -43,27 +46,98 @@
</com.google.android.material.card.MaterialCardView>
<FrameLayout
<!-- branch section -->
<com.google.android.material.card.MaterialCardView
android:id="@+id/branch_section"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?attr/primaryBackgroundColor"
android:padding="@dimen/dimen8dp">
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dimen8dp"
android:layout_marginBottom="@dimen/dimen0dp"
android:layout_marginStart="@dimen/dimen8dp"
android:layout_marginEnd="@dimen/dimen8dp"
style="?attr/materialCardViewElevatedStyle"
app:strokeWidth="@dimen/dimen0dp"
app:cardElevation="@dimen/dimen0dp">
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/pullToRefresh"
<LinearLayout
android:id="@+id/files_branches_main_frame"
android:layout_width="match_parent"
android:layout_height="wrap_content">
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal"
android:background="?attr/materialCardBackgroundColor"
android:padding="@dimen/dimen12dp">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
<ImageView
android:layout_width="@dimen/dimen24dp"
android:layout_height="@dimen/dimen24dp"
android:contentDescription="@string/branch"
android:layout_marginEnd="@dimen/dimen16dp"
app:tint="?attr/iconsColor"
app:srcCompat="@drawable/ic_branch" />
<LinearLayout
android:id="@+id/files_branches_frame"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false"
android:paddingBottom="@dimen/dimen72dp" />
android:layout_height="wrap_content"
android:orientation="horizontal"
tools:ignore="UseCompoundDrawables">
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
<TextView
android:id="@+id/branch_title"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginEnd="@dimen/dimen16dp"
android:text="@string/branch"
android:textSize="@dimen/dimen16sp" />
</FrameLayout>
<TextView
android:id="@+id/switch_branch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/switch_branch"
android:textAllCaps="true"
android:textSize="@dimen/dimen14sp" />
</LinearLayout>
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
<!-- branch section -->
<com.google.android.material.card.MaterialCardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="?attr/materialCardViewElevatedStyle"
android:layout_margin="@dimen/dimen8dp"
app:cardElevation="@dimen/dimen0dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:foreground="?android:attr/selectableItemBackground"
android:background="?attr/materialCardBackgroundColor"
android:orientation="horizontal">
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/pullToRefresh"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false"
android:paddingBottom="@dimen/dimen72dp" />
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
</LinearLayout>

View File

@ -4,172 +4,178 @@
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="@dimen/dimen8dp">
android:layout_height="match_parent">
<ScrollView
android:orientation="vertical"
android:background="?attr/primaryBackgroundColor"
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="match_parent"
android:background="?attr/primaryBackgroundColor"
android:padding="@dimen/dimen8dp">
<com.google.android.material.card.MaterialCardView
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="?attr/materialCardViewElevatedStyle"
app:cardElevation="@dimen/dimen0dp">
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<LinearLayout
<com.google.android.material.card.MaterialCardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:foreground="?android:attr/selectableItemBackground"
android:background="?attr/materialCardBackgroundColor">
style="?attr/materialCardViewElevatedStyle"
app:cardElevation="@dimen/dimen0dp">
<LinearLayout
android:id="@+id/orgInfoLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="@dimen/dimen16dp"
android:visibility="gone"
tools:visibility="visible">
<com.google.android.material.card.MaterialCardView
android:layout_width="@dimen/dimen96dp"
android:layout_height="@dimen/dimen96dp"
style="?attr/materialCardViewFilledStyle"
android:layout_gravity="center_horizontal"
app:cardElevation="@dimen/dimen0dp"
android:layout_marginTop="@dimen/dimen12dp"
android:layout_marginBottom="@dimen/dimen12dp"
app:cardCornerRadius="@dimen/dimen16dp">
<ImageView
android:id="@+id/orgAvatar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:contentDescription="@string/orgContentAvatar"/>
</com.google.android.material.card.MaterialCardView>
<TextView
android:id="@+id/orgNameInfo"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="?attr/primaryTextColor"
android:layout_marginBottom="@dimen/dimen4dp"
android:textSize="@dimen/dimen22sp"
android:textStyle="bold"/>
<TextView
android:id="@+id/orgDescInfo"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:autoLink="web"
android:ellipsize="end"
android:maxLines="3"
android:textColor="?attr/primaryTextColor"
android:textColorLink="@color/lightBlue"
android:textSize="@dimen/dimen16sp"/>
<com.google.android.material.divider.MaterialDivider
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dimen24dp"
android:layout_marginBottom="@dimen/dimen24dp" />
android:foreground="?android:attr/selectableItemBackground"
android:background="?attr/materialCardBackgroundColor">
<LinearLayout
android:id="@+id/orgInfoLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/dimen20dp"
android:orientation="horizontal"
android:paddingLeft="@dimen/dimen12dp"
android:paddingRight="@dimen/dimen12dp">
android:orientation="vertical"
android:padding="@dimen/dimen16dp"
android:visibility="gone"
tools:visibility="visible">
<ImageView
android:layout_gravity="center"
android:layout_width="wrap_content"
<com.google.android.material.card.MaterialCardView
android:layout_width="@dimen/dimen96dp"
android:layout_height="@dimen/dimen96dp"
style="?attr/materialCardViewFilledStyle"
android:layout_gravity="center_horizontal"
app:cardElevation="@dimen/dimen0dp"
android:layout_marginTop="@dimen/dimen12dp"
android:layout_marginBottom="@dimen/dimen12dp"
app:cardCornerRadius="@dimen/dimen16dp">
<ImageView
android:id="@+id/orgAvatar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:contentDescription="@string/orgContentAvatar"/>
</com.google.android.material.card.MaterialCardView>
<TextView
android:id="@+id/orgNameInfo"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:contentDescription="@string/websiteText"
app:srcCompat="@drawable/ic_link"/>
android:textColor="?attr/primaryTextColor"
android:layout_marginBottom="@dimen/dimen4dp"
android:textSize="@dimen/dimen22sp"
android:textStyle="bold"/>
<TextView
android:id="@+id/orgDescInfo"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:autoLink="web"
android:ellipsize="end"
android:maxLines="3"
android:textColor="?attr/primaryTextColor"
android:textColorLink="@color/lightBlue"
android:textSize="@dimen/dimen16sp"/>
<com.google.android.material.divider.MaterialDivider
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dimen24dp"
android:layout_marginBottom="@dimen/dimen24dp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dimen16dp"
android:gravity="center_vertical"
android:orientation="vertical">
android:layout_marginBottom="@dimen/dimen20dp"
android:orientation="horizontal"
android:paddingLeft="@dimen/dimen12dp"
android:paddingRight="@dimen/dimen12dp">
<TextView
<ImageView
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/websiteText"
android:textColor="?attr/primaryTextColor"
android:textSize="@dimen/dimen16sp"/>
android:contentDescription="@string/websiteText"
app:srcCompat="@drawable/ic_link"/>
<TextView
android:id="@+id/orgWebsiteInfo"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:alpha="0.9"
android:autoLink="web"
android:textColor="?attr/primaryTextColor"
android:textColorLink="@color/lightBlue"
android:textSize="@dimen/dimen14sp"
tools:text="29"/>
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/orgWebsiteInfo"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:alpha="0.9"
android:autoLink="web"
android:textColor="?attr/primaryTextColor"
android:textColorLink="@color/lightBlue"
android:textSize="@dimen/dimen14sp"
tools:text="29"/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="20dp"
android:orientation="horizontal"
android:paddingLeft="@dimen/dimen12dp"
android:paddingRight="@dimen/dimen12dp">
<ImageView
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/locationText"
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">
android:layout_marginBottom="20dp"
android:orientation="horizontal"
android:paddingLeft="@dimen/dimen12dp"
android:paddingRight="@dimen/dimen12dp">
<TextView
<ImageView
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/locationText"
android:textColor="?attr/primaryTextColor"
android:textSize="@dimen/dimen16sp"/>
android:contentDescription="@string/locationText"
app:srcCompat="@drawable/ic_location"/>
<TextView
android:id="@+id/orgLocationInfo"
<LinearLayout
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"/>
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/orgLocationInfo"
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>
</LinearLayout>
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
</com.google.android.material.card.MaterialCardView>
</androidx.core.widget.NestedScrollView>
</ScrollView>
</FrameLayout>
<com.google.android.material.progressindicator.LinearProgressIndicator
android:id="@+id/progress_bar"

View File

@ -27,10 +27,9 @@
android:text="@string/archivedRepositoryMessage"
android:background="@drawable/shape_archived"
android:padding="@dimen/dimen10dp"
android:layout_marginBottom="@dimen/dimen10dp"
android:textStyle="bold"
android:textSize="@dimen/dimen14sp"
android:textColor="?attr/fabColor" />
android:layout_marginBottom="@dimen/dimen8dp"
android:textColor="?attr/primaryTextColor"
android:textSize="@dimen/dimen14sp" />
<com.google.android.material.card.MaterialCardView
android:layout_width="match_parent"

View File

@ -86,7 +86,8 @@
android:background="@drawable/shape_circle"
android:src="@drawable/ic_add"
android:padding="@dimen/dimen8dp"
android:visibility="gone"/>
android:visibility="gone"
app:tint="@color/colorWhite" />
<ImageView
android:id="@+id/addCollaboratorButtonRemove"
@ -97,7 +98,8 @@
android:background="@drawable/shape_circle_red"
android:src="@drawable/ic_remove"
android:padding="@dimen/dimen8dp"
android:visibility="gone"/>
app:tint="@color/colorWhite"
android:visibility="gone" />
</LinearLayout>

View File

@ -1,73 +1,53 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/fileFrame"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="@dimen/dimen4dp"
android:paddingBottom="@dimen/dimen4dp"
android:padding="@dimen/dimen12dp"
android:gravity="center_vertical"
android:orientation="horizontal">
<com.google.android.material.card.MaterialCardView
<ImageView
android:id="@+id/fileTypeIs"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dimen16dp"
android:contentDescription="@string/generalImgContentText"
android:src="@drawable/ic_file"/>
<LinearLayout
android:id="@+id/infoSection"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="?attr/materialCardViewElevatedStyle"
app:cardElevation="@dimen/dimen0dp">
android:orientation="vertical">
<TextView
android:id="@+id/fileName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/defaultFilename"
android:textColor="?attr/primaryTextColor"
android:textSize="@dimen/dimen16sp"/>
<LinearLayout
android:id="@+id/infoRow"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:foreground="?android:attr/selectableItemBackground"
android:background="?attr/materialCardBackgroundColor"
android:padding="@dimen/dimen12dp"
android:orientation="horizontal">
<ImageView
android:id="@+id/fileTypeIs"
<TextView
android:id="@+id/fileInfo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dimen16dp"
android:contentDescription="@string/generalImgContentText"
android:src="@drawable/ic_file"/>
<LinearLayout
android:id="@+id/infoSection"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/fileName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/defaultFilename"
android:textColor="?attr/primaryTextColor"
android:textSize="@dimen/dimen16sp"/>
<LinearLayout
android:id="@+id/infoRow"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/fileInfo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/sizeCopy"
android:textColor="?attr/hintColor"
android:textSize="@dimen/dimen12sp"
android:visibility="gone"
tools:visibility="visible"/>
</LinearLayout>
</LinearLayout>
android:text="@string/sizeCopy"
android:textColor="?attr/hintColor"
android:textSize="@dimen/dimen12sp"
android:visibility="gone"
tools:visibility="visible"/>
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
</LinearLayout>
</LinearLayout>

View File

@ -59,12 +59,37 @@
<TextView
android:id="@+id/orgName"
android:layout_width="match_parent"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:textColor="?attr/primaryTextColor"
android:textSize="@dimen/dimen14sp"
android:layout_weight="1"
tools:text="@string/orgName"/>
<com.google.android.material.card.MaterialCardView
android:id="@+id/repo_is_archived_frame"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:backgroundTint="@android:color/transparent"
android:layout_weight="0"
app:strokeWidth="@dimen/dimen1dp"
app:cardElevation="@dimen/dimen0dp"
app:cardCornerRadius="@dimen/dimen6dp"
android:visibility="gone">
<TextView
android:id="@+id/repo_is_archived"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="@dimen/dimen12sp"
android:paddingStart="@dimen/dimen4dp"
android:paddingEnd="@dimen/dimen4dp"
android:paddingTop="@dimen/dimen2dp"
android:paddingBottom="@dimen/dimen2dp"
android:text="@string/archivedRepository" />
</com.google.android.material.card.MaterialCardView>
</LinearLayout>
<TextView

View File

@ -4,6 +4,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/navHeaderFrame"
android:layout_width="match_parent"
android:layout_marginTop="@dimen/dimen24dp"
android:layout_height="@dimen/dimen180dp">
<ImageView

View File

@ -2,13 +2,6 @@
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/switchBranches"
android:icon="@drawable/ic_branch"
android:orderInCategory="1"
android:title="@string/strSwitchBranches"
app:showAsAction="ifRoom" />
<item
android:id="@+id/branchCommits"
android:icon="@drawable/ic_commit"

View File

@ -3,7 +3,7 @@
<!-- Light theme -->
<style name="AppThemeLight" parent="Theme.Material3.Light.NoActionBar">
<item name="android:statusBarColor">@color/lightThemeBackground</item>
<item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:windowLightStatusBar">true</item>
<item name="android:typeface">monospace</item>
<item name="colorAccent">@color/colorAccent</item>
@ -48,7 +48,7 @@
<!-- Retro theme -->
<style name="AppThemeRetro" parent="Theme.Material3.Light.NoActionBar">
<item name="android:statusBarColor">@color/retroThemeBackground</item>
<item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:windowLightStatusBar">true</item>
<item name="android:typeface">monospace</item>
<item name="colorAccent">@color/colorAccent</item>
@ -93,7 +93,7 @@
<!-- Codeberg dark theme -->
<style name="AppThemeCodebergDark" parent="Theme.Material3.Dark.NoActionBar">
<item name="android:statusBarColor">@color/codebergDarkThemeBackground</item>
<item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:typeface">monospace</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:textColorSecondary">@color/codebergDarkThemeTextColor</item>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="AppThemeDarkDynamicColors" parent="Theme.Material3.Dark.NoActionBar">
<item name="android:statusBarColor">@android:color/system_neutral1_900</item>
<item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:typeface">monospace</item>
<item name="colorAccent">@android:color/system_neutral1_800</item>
<item name="android:textColorSecondary">@android:color/system_accent1_0</item>
@ -45,7 +45,7 @@
</style>
<style name="AppThemeLightDynamicColors" parent="Theme.Material3.Light.NoActionBar">
<item name="android:statusBarColor">@android:color/system_neutral1_10</item>
<item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:windowLightStatusBar">true</item>
<item name="android:typeface">monospace</item>
<item name="materialCardBackgroundColor">@android:color/system_accent2_50</item>

View File

@ -135,7 +135,6 @@
<string name="tabTextFiles">Files</string>
<string name="tabTextMl">Milestones</string>
<string name="tabTextReleases">Releases</string>
<string name="tabTextBranches">Branches</string>
<string name="tabTextCollaborators">Collaborators</string>
<string name="tabPullRequests">Pull Requests</string>
<string name="pullRequest">Pull Request</string>
@ -480,7 +479,6 @@
<string name="newFileRequiredFieldNewBranchName">New branch name cannot be empty if current branch is not selected</string>
<string name="strFilter">Filter</string>
<string name="strSwitchBranches">Branches</string>
<string name="strMarkdown">Markdown</string>
<string name="copyIssueUrl">Copy Issue URL</string>
@ -558,6 +556,8 @@
<string name="bioText">Bio</string>
<string name="pin">Pin</string>
<string name="unpin">Unpin</string>
<string name="branch">Branch</string>
<string name="branches">Branches</string>
<!-- generic copy -->
<string name="exploreUsers">Explore users</string>
@ -606,6 +606,7 @@
<string name="selectMergeStrategy">Select merge strategy</string>
<string name="mergeNotAllowed">Not allowed to merge [Reason: Does not have enough approvals]</string>
<string name="deleteBranch">Delete Branch</string>
<string name="switch_branch">Switch Branch</string>
<string name="waitLoadingDownloadFile">Please wait for the file to load to memory</string>
<string name="downloadFileSaved">File saved successfully</string>

View File

@ -3,7 +3,7 @@
<!-- Dark theme - default -->
<style name="AppTheme" parent="Theme.Material3.Dark.NoActionBar">
<item name="android:statusBarColor">@color/colorPrimary</item>
<item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:typeface">monospace</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:textColorSecondary">@color/colorWhite</item>
@ -49,7 +49,7 @@
<!-- Light theme -->
<style name="AppThemeLight" parent="Theme.Material3.Light.NoActionBar">
<item name="android:statusBarColor">@color/lightThemeBackground</item>
<item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:typeface">monospace</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:textColorSecondary">@color/lightThemeTextColor</item>
@ -94,7 +94,7 @@
<!-- Retro theme -->
<style name="AppThemeRetro" parent="Theme.Material3.Light.NoActionBar">
<item name="android:statusBarColor">@color/retroThemeBackground</item>
<item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:typeface">monospace</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:textColorSecondary">@color/retroThemeTextColor</item>
@ -138,7 +138,7 @@
<!-- Pitch black theme -->
<style name="AppThemePitchBlack" parent="Theme.Material3.Dark.NoActionBar">
<item name="android:statusBarColor">@color/pitchBlackThemeBackground</item>
<item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:typeface">monospace</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:textColorSecondary">@color/pitchBlackThemeTextColor</item>
@ -184,7 +184,7 @@
<!-- Codeberg dark theme -->
<style name="AppThemeCodebergDark" parent="Theme.Material3.Dark.NoActionBar">
<item name="android:statusBarColor">@color/codebergDarkThemeBackground</item>
<item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:typeface">monospace</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:textColorSecondary">@color/codebergDarkThemeTextColor</item>

View File

@ -7,7 +7,7 @@ buildscript {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:8.7.2'
classpath 'com.android.tools.build:gradle:8.7.3'
}
}