Merge branch 'master' into 7-assign-team-to-repo
# Conflicts: # app/src/main/res/values/strings.xml
@ -66,7 +66,7 @@ steps:
|
||||
- name: build
|
||||
image: nextcloudci/android:android-49
|
||||
commands:
|
||||
- ./gradlew build
|
||||
- ./gradlew assembleFreeRelease
|
||||
|
||||
- name: sign
|
||||
image: nextcloudci/android:android-49
|
||||
@ -78,7 +78,7 @@ steps:
|
||||
KEY_PASS:
|
||||
from_secret: KEY_PASS
|
||||
OUTPUT: signed.apk
|
||||
GITEA: https://gitea.com
|
||||
INSTANCE: https://codeberg.org
|
||||
KS_FILE: ci_keystore.jks
|
||||
KS_REPO:
|
||||
from_secret: KS_REPO
|
||||
|
3
.gitignore
vendored
@ -11,6 +11,9 @@
|
||||
# Release dir
|
||||
app/release/*
|
||||
|
||||
# Pro dir
|
||||
app/pro/*
|
||||
|
||||
# Files for the ART/Dalvik VM
|
||||
*.dex
|
||||
|
||||
|
@ -20,7 +20,7 @@ build:
|
||||
- master
|
||||
- tags
|
||||
script:
|
||||
- ./gradlew build
|
||||
- ./gradlew assembleFreeRelease
|
||||
artifacts:
|
||||
paths:
|
||||
- app/build/outputs/
|
||||
@ -34,7 +34,7 @@ sign:
|
||||
- tags
|
||||
variables:
|
||||
OUTPUT: "signed.apk"
|
||||
GITEA: "https://gitea.com"
|
||||
INSTANCE: "https://codeberg.org"
|
||||
KS_FILE: "ci_keystore.jks"
|
||||
script:
|
||||
- ./scripts/sign-build.sh
|
||||
@ -48,6 +48,7 @@ latest:
|
||||
stage: publish
|
||||
only:
|
||||
- master
|
||||
- tags
|
||||
variables:
|
||||
WEBDAV_USERNAME: "GitNexBot"
|
||||
PLUGIN_FILE: "signed.apk"
|
||||
|
@ -4,13 +4,13 @@
|
||||
|
||||
# GitNex - Android client for Gitea
|
||||
|
||||
GitNex is a free, open-source Android client for Git repository management tool Gitea. Gitea is a community managed fork of Gogs, lightweight code hosting solution written in Go.
|
||||
GitNex is a free/paid, open-source Android client for Git repository management tool Gitea. Gitea is a community managed fork of Gogs, lightweight code hosting solution written in Go.
|
||||
|
||||
GitNex is licensed under GPLv3 License. See the LICENSE file for the full license text. No trackers are used and source code is available here for anyone to audit.
|
||||
|
||||
## Downloads
|
||||
[<img alt='Get it on F-droid' src='https://gitlab.com/fdroid/artwork/raw/master/badge/get-it-on.png' height="80"/>](https://f-droid.org/en/packages/org.mian.gitnex/)
|
||||
[<img alt='Get it on Google Play' src='https://play.google.com/intl/en_us/badges/images/generic/en_badge_web_generic.png' height="80"/>](https://play.google.com/store/apps/details?id=org.mian.gitnex)
|
||||
[<img alt='Get it on Google Play' src='https://play.google.com/intl/en_us/badges/images/generic/en_badge_web_generic.png' height="80"/>](https://play.google.com/store/apps/details?id=org.mian.gitnex.pro)
|
||||
[<img alt='Download builds and releases' src='assets/apk-badge.png' height="82"/>](https://cloud.swatian.com/s/DN7E5xxtaw4fRbE)
|
||||
|
||||
## Note about Gitea version
|
||||
@ -21,11 +21,10 @@ Check the versions [compatibility page](https://codeberg.org/gitnex/GitNex/wiki/
|
||||
## Build from source
|
||||
Option 1 - Download the source code, open it in Android Studio and build it there.
|
||||
|
||||
Option 2 - Open terminal(Linux) and cd to the project dir. Run `./gradlew build`.
|
||||
Option 2 - Open terminal(Linux) and cd to the project dir. Run `./gradlew assembleFree`.
|
||||
|
||||
## Features
|
||||
- Multiple accounts support
|
||||
- Repositories / issues/ org list
|
||||
- File and directory browser
|
||||
- File viewer
|
||||
- Create files
|
||||
@ -34,6 +33,7 @@ Option 2 - Open terminal(Linux) and cd to the project dir. Run `./gradlew build`
|
||||
- Files diff for PRs
|
||||
- Notifications
|
||||
- Drafts
|
||||
- Repositories / issues / org list
|
||||
- [MANY MORE](https://codeberg.org/gitnex/GitNex/wiki/Features)
|
||||
|
||||
## Contributing
|
||||
|
@ -1,15 +1,28 @@
|
||||
apply plugin: 'com.android.application'
|
||||
|
||||
android {
|
||||
compileSdkVersion 29
|
||||
compileSdkVersion 30
|
||||
defaultConfig {
|
||||
applicationId "org.mian.gitnex"
|
||||
minSdkVersion 21
|
||||
targetSdkVersion 29
|
||||
versionCode 317
|
||||
versionName "3.2.0-dev"
|
||||
targetSdkVersion 30
|
||||
versionCode 320
|
||||
versionName "3.2.0"
|
||||
multiDexEnabled true
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
}
|
||||
dexOptions {
|
||||
javaMaxHeapSize "4g"
|
||||
}
|
||||
flavorDimensions "default"
|
||||
productFlavors {
|
||||
free {
|
||||
applicationId "org.mian.gitnex"
|
||||
}
|
||||
pro {
|
||||
applicationId "org.mian.gitnex.pro"
|
||||
}
|
||||
}
|
||||
buildFeatures {
|
||||
viewBinding = true
|
||||
}
|
||||
@ -40,7 +53,7 @@ configurations {
|
||||
|
||||
dependencies {
|
||||
def lifecycle_version = '2.3.0-alpha07'
|
||||
def markwon_version = '4.5.1'
|
||||
def markwon_version = '4.6.0'
|
||||
def work_version = "2.4.0"
|
||||
def acra = "5.5.0"
|
||||
|
||||
@ -54,14 +67,14 @@ dependencies {
|
||||
androidTestImplementation 'androidx.test:runner:1.3.0'
|
||||
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
|
||||
implementation "com.github.vihtarb:tooltip:0.2.0"
|
||||
implementation 'com.squareup.okhttp3:okhttp:4.8.1'
|
||||
implementation 'com.squareup.okhttp3:okhttp:4.9.0'
|
||||
implementation "com.google.code.gson:gson:2.8.6"
|
||||
implementation "com.squareup.picasso:picasso:2.71828"
|
||||
implementation "com.amulyakhare:com.amulyakhare.textdrawable:1.0.1"
|
||||
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
|
||||
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
|
||||
implementation 'com.squareup.retrofit2:converter-scalars:2.9.0'
|
||||
implementation 'com.squareup.okhttp3:logging-interceptor:4.8.1'
|
||||
implementation 'com.squareup.okhttp3:logging-interceptor:4.9.0'
|
||||
implementation 'org.ocpsoft.prettytime:prettytime:4.0.5.Final'
|
||||
implementation "com.vdurmont:emoji-java:5.1.1"
|
||||
implementation "com.pes.materialcolorpicker:library:1.2.5"
|
||||
|
@ -85,6 +85,7 @@
|
||||
<activity android:name=".activities.RepoForksActivity" />
|
||||
<activity android:name=".activities.AddNewAccountActivity" />
|
||||
<activity android:name=".activities.RepositorySettingsActivity" />
|
||||
<activity android:name=".activities.CreatePullRequestActivity" />
|
||||
|
||||
<!-- Version < 3.0. DeX Mode and Screen Mirroring support -->
|
||||
<meta-data android:name="com.samsung.android.keepalive.density" android:value="true"/>
|
||||
|
BIN
app/src/main/app_logo-playstore.png
Normal file
After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 15 KiB |
@ -114,10 +114,7 @@ public class AddNewAccountActivity extends BaseActivity {
|
||||
|
||||
URI rawInstanceUrl = UrlBuilder.fromString(UrlHelper.fixScheme(instanceUrlET, "http")).toUri();
|
||||
|
||||
URI instanceUrlWithProtocol = UrlBuilder.fromUri(rawInstanceUrl).withPath(PathsHelper.join(rawInstanceUrl.getPath()))
|
||||
.withScheme(protocol.toLowerCase()).toUri();
|
||||
|
||||
URI instanceUrl = UrlBuilder.fromUri(instanceUrlWithProtocol).withPath(PathsHelper.join(instanceUrlWithProtocol.getPath(), "/api/v1/"))
|
||||
URI instanceUrl = UrlBuilder.fromUri(rawInstanceUrl).withScheme(protocol.toLowerCase()).withPath(PathsHelper.join(rawInstanceUrl.getPath(), "/api/v1/"))
|
||||
.toUri();
|
||||
|
||||
versionCheck(instanceUrl.toString(), loginToken);
|
||||
|
@ -136,11 +136,6 @@ public abstract class BaseActivity extends AppCompatActivity {
|
||||
tinyDb.putString("draftsCommentsDeletionEnabledInit", "yes");
|
||||
}
|
||||
|
||||
if(!tinyDb.getString("instanceUrlWithProtocol").endsWith("/")) {
|
||||
|
||||
tinyDb.putString("instanceUrlWithProtocol", tinyDb.getString("instanceUrlWithProtocol") + "/");
|
||||
}
|
||||
|
||||
if (tinyDb.getBoolean("crashReportingEnabled")) {
|
||||
|
||||
CoreConfigurationBuilder ACRABuilder = new CoreConfigurationBuilder(this);
|
||||
|
@ -0,0 +1,431 @@
|
||||
package org.mian.gitnex.activities;
|
||||
|
||||
import android.app.DatePickerDialog;
|
||||
import android.app.Dialog;
|
||||
import android.content.Context;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.drawable.ColorDrawable;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.ImageView;
|
||||
import androidx.annotation.NonNull;
|
||||
import org.mian.gitnex.R;
|
||||
import org.mian.gitnex.adapters.LabelsListAdapter;
|
||||
import org.mian.gitnex.clients.RetrofitClient;
|
||||
import org.mian.gitnex.databinding.ActivityCreatePrBinding;
|
||||
import org.mian.gitnex.databinding.CustomLabelsSelectionDialogBinding;
|
||||
import org.mian.gitnex.helpers.AppUtil;
|
||||
import org.mian.gitnex.helpers.Authorization;
|
||||
import org.mian.gitnex.helpers.StaticGlobalVariables;
|
||||
import org.mian.gitnex.helpers.TinyDB;
|
||||
import org.mian.gitnex.helpers.Toasty;
|
||||
import org.mian.gitnex.helpers.Version;
|
||||
import org.mian.gitnex.models.Branches;
|
||||
import org.mian.gitnex.models.CreatePullRequest;
|
||||
import org.mian.gitnex.models.Labels;
|
||||
import org.mian.gitnex.models.Milestones;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.List;
|
||||
import okhttp3.ResponseBody;
|
||||
import retrofit2.Call;
|
||||
import retrofit2.Callback;
|
||||
|
||||
/**
|
||||
* Author M M Arif
|
||||
*/
|
||||
|
||||
public class CreatePullRequestActivity extends BaseActivity implements LabelsListAdapter.LabelsListAdapterListener {
|
||||
|
||||
private View.OnClickListener onClickListener;
|
||||
private Context ctx = this;
|
||||
private Context appCtx;
|
||||
private TinyDB tinyDb;
|
||||
private ActivityCreatePrBinding viewBinding;
|
||||
private CustomLabelsSelectionDialogBinding labelsBinding;
|
||||
private int resultLimit = StaticGlobalVariables.resultLimitOldGiteaInstances;
|
||||
private Dialog dialogLabels;
|
||||
private String labelsSetter;
|
||||
private ArrayList<Integer> labelsIds = new ArrayList<>();
|
||||
private ArrayList<String> assignees = new ArrayList<>();
|
||||
private int milestoneId;
|
||||
|
||||
private String instanceUrl;
|
||||
private String loginUid;
|
||||
private String instanceToken;
|
||||
private String repoOwner;
|
||||
private String repoName;
|
||||
|
||||
private LabelsListAdapter labelsAdapter;
|
||||
|
||||
List<Milestones> milestonesList = new ArrayList<>();
|
||||
List<Branches> branchesList = new ArrayList<>();
|
||||
List<Labels> labelsList = new ArrayList<>();
|
||||
|
||||
public CreatePullRequestActivity() {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getLayoutResourceId(){
|
||||
return R.layout.activity_create_pr;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
|
||||
super.onCreate(savedInstanceState);
|
||||
appCtx = getApplicationContext();
|
||||
tinyDb = new TinyDB(appCtx);
|
||||
|
||||
viewBinding = ActivityCreatePrBinding.inflate(getLayoutInflater());
|
||||
View view = viewBinding.getRoot();
|
||||
setContentView(view);
|
||||
|
||||
instanceUrl = tinyDb.getString("instanceUrl");
|
||||
loginUid = tinyDb.getString("loginUid");
|
||||
String repoFullName = tinyDb.getString("repoFullName");
|
||||
String[] parts = repoFullName.split("/");
|
||||
repoOwner = parts[0];
|
||||
repoName = parts[1];
|
||||
instanceToken = "token " + tinyDb.getString(loginUid + "-token");
|
||||
|
||||
// require gitea 1.12 or higher
|
||||
if(new Version(tinyDb.getString("giteaVersion")).higherOrEqual("1.12.0")) {
|
||||
resultLimit = StaticGlobalVariables.resultLimitNewGiteaInstances;
|
||||
}
|
||||
|
||||
labelsAdapter = new LabelsListAdapter(labelsList, CreatePullRequestActivity.this);
|
||||
|
||||
ImageView closeActivity = findViewById(R.id.close);
|
||||
|
||||
initCloseListener();
|
||||
closeActivity.setOnClickListener(onClickListener);
|
||||
|
||||
viewBinding.prDueDate.setOnClickListener(dueDate ->
|
||||
setDueDate()
|
||||
);
|
||||
|
||||
disableProcessButton();
|
||||
|
||||
getMilestones(instanceUrl, instanceToken, repoOwner, repoName, loginUid, resultLimit);
|
||||
getBranches(instanceUrl, instanceToken, repoOwner, repoName, loginUid);
|
||||
|
||||
viewBinding.prLabels.setOnClickListener(prLabels ->
|
||||
showLabels()
|
||||
);
|
||||
|
||||
viewBinding.createPr.setOnClickListener(createPr ->
|
||||
processPullRequest()
|
||||
);
|
||||
}
|
||||
|
||||
private void processPullRequest() {
|
||||
|
||||
String prTitle = String.valueOf(viewBinding.prTitle.getText());
|
||||
String prDescription = String.valueOf(viewBinding.prBody.getText());
|
||||
String mergeInto = viewBinding.mergeIntoBranchSpinner.getText().toString();
|
||||
String pullFrom = viewBinding.pullFromBranchSpinner.getText().toString();
|
||||
String dueDate = String.valueOf(viewBinding.prDueDate.getText());
|
||||
|
||||
assignees.add("");
|
||||
|
||||
if (labelsIds.size() == 0) {
|
||||
labelsIds.add(0);
|
||||
}
|
||||
|
||||
if (dueDate.matches("")) {
|
||||
dueDate = null;
|
||||
}
|
||||
else {
|
||||
dueDate = AppUtil.customDateCombine(AppUtil.customDateFormat(dueDate));
|
||||
}
|
||||
|
||||
if(prTitle.matches("")) {
|
||||
|
||||
Toasty.error(ctx, getString(R.string.titleError));
|
||||
}
|
||||
else if(mergeInto.matches("")) {
|
||||
|
||||
Toasty.error(ctx, getString(R.string.mergeIntoError));
|
||||
}
|
||||
else if(pullFrom.matches("")) {
|
||||
|
||||
Toasty.error(ctx, getString(R.string.pullFromError));
|
||||
}
|
||||
else if(pullFrom.equals(mergeInto)) {
|
||||
|
||||
Toasty.error(ctx, getString(R.string.sameBranchesError));
|
||||
}
|
||||
else {
|
||||
createPullRequest(prTitle, prDescription, mergeInto, pullFrom, milestoneId, dueDate, assignees);
|
||||
}
|
||||
//Log.e("processPullRequest", String.valueOf(milestoneId));
|
||||
}
|
||||
|
||||
private void createPullRequest(String prTitle, String prDescription, String mergeInto, String pullFrom, int milestoneId, String dueDate, ArrayList<String> assignees) {
|
||||
|
||||
CreatePullRequest createPullRequest = new CreatePullRequest(prTitle, prDescription, loginUid, mergeInto, pullFrom, milestoneId, dueDate, assignees, labelsIds);
|
||||
|
||||
Call<ResponseBody> transferCall = RetrofitClient
|
||||
.getInstance(instanceUrl, ctx)
|
||||
.getApiInterface()
|
||||
.createPullRequest(instanceToken, repoOwner, repoName, createPullRequest);
|
||||
|
||||
transferCall.enqueue(new Callback<ResponseBody>() {
|
||||
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<ResponseBody> call, @NonNull retrofit2.Response<ResponseBody> response) {
|
||||
|
||||
disableProcessButton();
|
||||
|
||||
if (response.code() == 201) {
|
||||
|
||||
Toasty.success(ctx, getString(R.string.prCreateSuccess));
|
||||
finish();
|
||||
}
|
||||
else if (response.code() == 409 && response.message().equals("Conflict")) {
|
||||
|
||||
enableProcessButton();
|
||||
Toasty.error(ctx, getString(R.string.prAlreadyExists));
|
||||
}
|
||||
else if (response.code() == 404) {
|
||||
|
||||
enableProcessButton();
|
||||
Toasty.error(ctx, getString(R.string.apiNotFound));
|
||||
}
|
||||
else {
|
||||
|
||||
enableProcessButton();
|
||||
Toasty.error(ctx, getString(R.string.genericError));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(@NonNull Call<ResponseBody> call, @NonNull Throwable t) {
|
||||
|
||||
enableProcessButton();
|
||||
Toasty.error(ctx, getString(R.string.genericServerResponseError));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void labelsStringData(ArrayList<String> data) {
|
||||
|
||||
labelsSetter = String.valueOf(data);
|
||||
viewBinding.prLabels.setText(labelsSetter.replace("]", "").replace("[", ""));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void labelsIdsData(ArrayList<Integer> data) {
|
||||
|
||||
labelsIds = data;
|
||||
}
|
||||
|
||||
private void showLabels() {
|
||||
|
||||
dialogLabels = new Dialog(ctx, R.style.ThemeOverlay_MaterialComponents_Dialog_Alert);
|
||||
|
||||
if (dialogLabels.getWindow() != null) {
|
||||
dialogLabels.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
|
||||
}
|
||||
|
||||
labelsBinding = CustomLabelsSelectionDialogBinding.inflate(LayoutInflater.from(ctx));
|
||||
|
||||
View view = labelsBinding.getRoot();
|
||||
dialogLabels.setContentView(view);
|
||||
|
||||
labelsBinding.cancel.setOnClickListener(editProperties ->
|
||||
dialogLabels.dismiss()
|
||||
);
|
||||
|
||||
Call<List<Labels>> call = RetrofitClient
|
||||
.getInstance(instanceUrl, ctx)
|
||||
.getApiInterface()
|
||||
.getlabels(instanceToken, repoOwner, repoName);
|
||||
|
||||
call.enqueue(new Callback<List<Labels>>() {
|
||||
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<List<Labels>> call, @NonNull retrofit2.Response<List<Labels>> response) {
|
||||
|
||||
labelsList.clear();
|
||||
List<Labels> labelsList_ = response.body();
|
||||
|
||||
labelsBinding.progressBar.setVisibility(View.GONE);
|
||||
labelsBinding.dialogFrame.setVisibility(View.VISIBLE);
|
||||
|
||||
if (response.code() == 200) {
|
||||
|
||||
assert labelsList_ != null;
|
||||
if(labelsList_.size() > 0) {
|
||||
for (int i = 0; i < labelsList_.size(); i++) {
|
||||
|
||||
labelsList.add(new Labels(labelsList_.get(i).getId(), labelsList_.get(i).getName()));
|
||||
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
||||
dialogLabels.dismiss();
|
||||
Toasty.warning(ctx, getString(R.string.noLabelsFound));
|
||||
}
|
||||
|
||||
labelsBinding.labelsRecyclerView.setAdapter(labelsAdapter);
|
||||
|
||||
}
|
||||
else {
|
||||
|
||||
Toasty.error(ctx, getString(R.string.genericError));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(@NonNull Call<List<Labels>> call, @NonNull Throwable t) {
|
||||
|
||||
Toasty.error(ctx, getString(R.string.genericServerResponseError));
|
||||
}
|
||||
});
|
||||
|
||||
dialogLabels.show();
|
||||
|
||||
}
|
||||
|
||||
private void getBranches(String instanceUrl, String instanceToken, String repoOwner, String repoName, String loginUid) {
|
||||
|
||||
Call<List<Branches>> call = RetrofitClient
|
||||
.getInstance(instanceUrl, ctx)
|
||||
.getApiInterface()
|
||||
.getBranches(Authorization.returnAuthentication(ctx, loginUid, instanceToken), repoOwner, repoName);
|
||||
|
||||
call.enqueue(new Callback<List<Branches>>() {
|
||||
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<List<Branches>> call, @NonNull retrofit2.Response<List<Branches>> response) {
|
||||
|
||||
if(response.isSuccessful()) {
|
||||
if(response.code() == 200) {
|
||||
|
||||
List<Branches> branchesList_ = response.body();
|
||||
|
||||
assert branchesList_ != null;
|
||||
if(branchesList_.size() > 0) {
|
||||
for (int i = 0; i < branchesList_.size(); i++) {
|
||||
|
||||
Branches data = new Branches(
|
||||
branchesList_.get(i).getName()
|
||||
);
|
||||
branchesList.add(data);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
ArrayAdapter<Branches> adapter = new ArrayAdapter<>(CreatePullRequestActivity.this,
|
||||
R.layout.list_spinner_items, branchesList);
|
||||
|
||||
viewBinding.mergeIntoBranchSpinner.setAdapter(adapter);
|
||||
viewBinding.pullFromBranchSpinner.setAdapter(adapter);
|
||||
enableProcessButton();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(@NonNull Call<List<Branches>> call, @NonNull Throwable t) {
|
||||
|
||||
Toasty.error(ctx, getString(R.string.genericServerResponseError));
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
private void getMilestones(String instanceUrl, String instanceToken, String repoOwner, String repoName, String loginUid, int resultLimit) {
|
||||
|
||||
String msState = "open";
|
||||
Call<List<Milestones>> call = RetrofitClient
|
||||
.getInstance(instanceUrl, ctx)
|
||||
.getApiInterface()
|
||||
.getMilestones(Authorization.returnAuthentication(ctx, loginUid, instanceToken), repoOwner, repoName, 1, resultLimit, msState);
|
||||
|
||||
call.enqueue(new Callback<List<Milestones>>() {
|
||||
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<List<Milestones>> call, @NonNull retrofit2.Response<List<Milestones>> response) {
|
||||
|
||||
if(response.code() == 200) {
|
||||
|
||||
List<Milestones> milestonesList_ = response.body();
|
||||
|
||||
milestonesList.add(new Milestones(0,getString(R.string.issueCreatedNoMilestone)));
|
||||
assert milestonesList_ != null;
|
||||
if(milestonesList_.size() > 0) {
|
||||
for (int i = 0; i < milestonesList_.size(); i++) {
|
||||
|
||||
//Don't translate "open" is a enum
|
||||
if(milestonesList_.get(i).getState().equals("open")) {
|
||||
Milestones data = new Milestones(
|
||||
milestonesList_.get(i).getId(),
|
||||
milestonesList_.get(i).getTitle()
|
||||
);
|
||||
milestonesList.add(data);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
ArrayAdapter<Milestones> adapter = new ArrayAdapter<>(CreatePullRequestActivity.this,
|
||||
R.layout.list_spinner_items, milestonesList);
|
||||
|
||||
viewBinding.milestonesSpinner.setAdapter(adapter);
|
||||
enableProcessButton();
|
||||
|
||||
viewBinding.milestonesSpinner.setOnItemClickListener ((parent, view, position, id) ->
|
||||
|
||||
milestoneId = milestonesList.get(position).getId()
|
||||
);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(@NonNull Call<List<Milestones>> call, @NonNull Throwable t) {
|
||||
|
||||
Toasty.error(ctx, getString(R.string.genericServerResponseError));
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
private void setDueDate() {
|
||||
|
||||
final Calendar c = Calendar.getInstance();
|
||||
int mYear = c.get(Calendar.YEAR);
|
||||
final int mMonth = c.get(Calendar.MONTH);
|
||||
final int mDay = c.get(Calendar.DAY_OF_MONTH);
|
||||
|
||||
DatePickerDialog datePickerDialog = new DatePickerDialog(this,
|
||||
(view, year, monthOfYear, dayOfMonth) -> viewBinding.prDueDate.setText(getString(R.string.setDueDate, year, (monthOfYear + 1), dayOfMonth)), mYear, mMonth, mDay);
|
||||
datePickerDialog.show();
|
||||
}
|
||||
|
||||
private void initCloseListener() {
|
||||
|
||||
onClickListener = view -> finish();
|
||||
}
|
||||
|
||||
private void disableProcessButton() {
|
||||
|
||||
viewBinding.createPr.setEnabled(false);
|
||||
}
|
||||
|
||||
private void enableProcessButton() {
|
||||
|
||||
viewBinding.createPr.setEnabled(true);
|
||||
}
|
||||
}
|
@ -167,16 +167,12 @@ public class LoginActivity extends BaseActivity {
|
||||
|
||||
URI rawInstanceUrl = UrlBuilder.fromString(UrlHelper.fixScheme(instanceUrlET.getText().toString(), "http")).toUri();
|
||||
|
||||
URI instanceUrlWithProtocol = UrlBuilder.fromUri(rawInstanceUrl).withPath(PathsHelper.join(rawInstanceUrl.getPath()))
|
||||
.withScheme(protocol.name().toLowerCase()).toUri();
|
||||
|
||||
URI instanceUrl = UrlBuilder.fromUri(instanceUrlWithProtocol).withPath(PathsHelper.join(instanceUrlWithProtocol.getPath(), "/api/v1/"))
|
||||
URI instanceUrl = UrlBuilder.fromUri(rawInstanceUrl).withScheme(protocol.name().toLowerCase()).withPath(PathsHelper.join(rawInstanceUrl.getPath(), "/api/v1/"))
|
||||
.toUri();
|
||||
|
||||
tinyDB.putString("loginType", loginType.name().toLowerCase());
|
||||
tinyDB.putString("instanceUrlRaw", instanceUrlET.getText().toString());
|
||||
tinyDB.putString("instanceUrl", instanceUrl.toString());
|
||||
tinyDB.putString("instanceUrlWithProtocol", instanceUrlWithProtocol.toString());
|
||||
|
||||
if(instanceUrlET.getText().toString().equals("")) {
|
||||
|
||||
|
@ -1,15 +1,14 @@
|
||||
package org.mian.gitnex.activities;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.ActivityNotFoundException;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.graphics.Typeface;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
@ -32,11 +31,10 @@ import org.mian.gitnex.clients.PicassoService;
|
||||
import org.mian.gitnex.clients.RetrofitClient;
|
||||
import org.mian.gitnex.database.api.UserAccountsApi;
|
||||
import org.mian.gitnex.database.models.UserAccount;
|
||||
import org.mian.gitnex.fragments.AboutFragment;
|
||||
import org.mian.gitnex.fragments.AdministrationFragment;
|
||||
import org.mian.gitnex.fragments.BottomSheetDraftsFragment;
|
||||
import org.mian.gitnex.fragments.DraftsFragment;
|
||||
import org.mian.gitnex.fragments.ExploreRepositoriesFragment;
|
||||
import org.mian.gitnex.fragments.ExploreFragment;
|
||||
import org.mian.gitnex.fragments.MyRepositoriesFragment;
|
||||
import org.mian.gitnex.fragments.NotificationsFragment;
|
||||
import org.mian.gitnex.fragments.OrganizationsFragment;
|
||||
@ -55,6 +53,7 @@ import org.mian.gitnex.helpers.TinyDB;
|
||||
import org.mian.gitnex.helpers.Toasty;
|
||||
import org.mian.gitnex.helpers.Version;
|
||||
import org.mian.gitnex.models.GiteaVersion;
|
||||
import org.mian.gitnex.models.NotificationCount;
|
||||
import org.mian.gitnex.models.UserInfo;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@ -82,6 +81,14 @@ public class MainActivity extends BaseActivity implements NavigationView.OnNavig
|
||||
private Context appCtx;
|
||||
private Typeface myTypeface;
|
||||
|
||||
private String instanceUrl;
|
||||
private String loginUid;
|
||||
private String instanceToken;
|
||||
|
||||
private View hView;
|
||||
private MenuItem navNotifications;
|
||||
private TextView notificationCounter;
|
||||
|
||||
@Override
|
||||
protected int getLayoutResourceId() {
|
||||
|
||||
@ -100,9 +107,9 @@ public class MainActivity extends BaseActivity implements NavigationView.OnNavig
|
||||
Intent mainIntent = getIntent();
|
||||
String launchFragment = mainIntent.getStringExtra("launchFragment");
|
||||
|
||||
final String instanceUrl = tinyDb.getString("instanceUrl");
|
||||
final String loginUid = tinyDb.getString("loginUid");
|
||||
final String instanceToken = "token " + tinyDb.getString(loginUid + "-token");
|
||||
instanceUrl = tinyDb.getString("instanceUrl");
|
||||
loginUid = tinyDb.getString("loginUid");
|
||||
instanceToken = "token " + tinyDb.getString(loginUid + "-token");
|
||||
|
||||
if(tinyDb.getString("dateFormat").isEmpty()) {
|
||||
tinyDb.putString("dateFormat", "pretty");
|
||||
@ -169,7 +176,7 @@ public class MainActivity extends BaseActivity implements NavigationView.OnNavig
|
||||
else if(fragmentById instanceof OrganizationsFragment) {
|
||||
toolbarTitle.setText(getResources().getString(R.string.pageTitleOrganizations));
|
||||
}
|
||||
else if(fragmentById instanceof ExploreRepositoriesFragment) {
|
||||
else if(fragmentById instanceof ExploreFragment) {
|
||||
toolbarTitle.setText(getResources().getString(R.string.pageTitleExplore));
|
||||
}
|
||||
else if(fragmentById instanceof NotificationsFragment) {
|
||||
@ -178,9 +185,6 @@ public class MainActivity extends BaseActivity implements NavigationView.OnNavig
|
||||
else if(fragmentById instanceof ProfileFragment) {
|
||||
toolbarTitle.setText(getResources().getString(R.string.pageTitleProfile));
|
||||
}
|
||||
else if(fragmentById instanceof AboutFragment) {
|
||||
toolbarTitle.setText(getResources().getString(R.string.pageTitleAbout));
|
||||
}
|
||||
else if(fragmentById instanceof DraftsFragment) {
|
||||
toolbarTitle.setText(getResources().getString(R.string.titleDrafts));
|
||||
}
|
||||
@ -191,10 +195,15 @@ public class MainActivity extends BaseActivity implements NavigationView.OnNavig
|
||||
toolbarTitle.setText(getResources().getString(R.string.pageTitleUserAccounts));
|
||||
}
|
||||
|
||||
getNotificationsCount(instanceUrl, instanceToken);
|
||||
|
||||
drawer = findViewById(R.id.drawer_layout);
|
||||
NavigationView navigationView = findViewById(R.id.nav_view);
|
||||
navigationView.setNavigationItemSelectedListener(this);
|
||||
final View hView = navigationView.getHeaderView(0);
|
||||
hView = navigationView.getHeaderView(0);
|
||||
|
||||
Menu menu = navigationView.getMenu();
|
||||
navNotifications = menu.findItem(R.id.nav_notifications);
|
||||
|
||||
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
|
||||
|
||||
@ -204,6 +213,7 @@ public class MainActivity extends BaseActivity implements NavigationView.OnNavig
|
||||
@Override
|
||||
public void onDrawerOpened(@NonNull View drawerView) {
|
||||
|
||||
getNotificationsCount(instanceUrl, instanceToken);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -295,6 +305,7 @@ public class MainActivity extends BaseActivity implements NavigationView.OnNavig
|
||||
|
||||
toolbarTitle.setText(getResources().getString(R.string.pageTitleProfile));
|
||||
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new ProfileFragment()).commit();
|
||||
navigationView.setCheckedItem(R.id.nav_profile);
|
||||
drawer.closeDrawers();
|
||||
});
|
||||
|
||||
@ -374,7 +385,7 @@ public class MainActivity extends BaseActivity implements NavigationView.OnNavig
|
||||
|
||||
case 5:
|
||||
toolbarTitle.setText(getResources().getString(R.string.pageTitleExplore));
|
||||
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new ExploreRepositoriesFragment()).commit();
|
||||
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new ExploreFragment()).commit();
|
||||
navigationView.setCheckedItem(R.id.nav_explore);
|
||||
break;
|
||||
|
||||
@ -439,6 +450,11 @@ public class MainActivity extends BaseActivity implements NavigationView.OnNavig
|
||||
}
|
||||
}
|
||||
|
||||
public void setActionBarTitle(String title) {
|
||||
|
||||
toolbarTitle.setText(title);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onButtonClicked(String text) {
|
||||
|
||||
@ -528,15 +544,6 @@ public class MainActivity extends BaseActivity implements NavigationView.OnNavig
|
||||
overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
|
||||
break;
|
||||
|
||||
case R.id.nav_about:
|
||||
toolbarTitle.setText(getResources().getString(R.string.pageTitleAbout));
|
||||
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new AboutFragment()).commit();
|
||||
break;
|
||||
|
||||
case R.id.nav_rate_app:
|
||||
rateThisApp();
|
||||
break;
|
||||
|
||||
case R.id.nav_starred_repos:
|
||||
toolbarTitle.setText(getResources().getString(R.string.pageTitleStarredRepos));
|
||||
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new StarredRepositoriesFragment()).commit();
|
||||
@ -544,7 +551,7 @@ public class MainActivity extends BaseActivity implements NavigationView.OnNavig
|
||||
|
||||
case R.id.nav_explore:
|
||||
toolbarTitle.setText(getResources().getString(R.string.pageTitleExplore));
|
||||
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new ExploreRepositoriesFragment()).commit();
|
||||
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new ExploreFragment()).commit();
|
||||
break;
|
||||
|
||||
case R.id.nav_notifications:
|
||||
@ -568,16 +575,6 @@ public class MainActivity extends BaseActivity implements NavigationView.OnNavig
|
||||
return true;
|
||||
}
|
||||
|
||||
public void rateThisApp() {
|
||||
|
||||
try {
|
||||
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + getPackageName())));
|
||||
}
|
||||
catch(ActivityNotFoundException e) {
|
||||
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + getPackageName())));
|
||||
}
|
||||
}
|
||||
|
||||
public static void logout(Activity activity, Context ctx) {
|
||||
|
||||
TinyDB tinyDb = new TinyDB(ctx.getApplicationContext());
|
||||
@ -705,4 +702,31 @@ public class MainActivity extends BaseActivity implements NavigationView.OnNavig
|
||||
|
||||
}
|
||||
|
||||
private void getNotificationsCount(String instanceUrl, String token) {
|
||||
|
||||
Call<NotificationCount> call = RetrofitClient.getInstance(instanceUrl, ctx).getApiInterface().checkUnreadNotifications(token);
|
||||
|
||||
call.enqueue(new Callback<NotificationCount>() {
|
||||
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<NotificationCount> call, @NonNull retrofit2.Response<NotificationCount> response) {
|
||||
|
||||
NotificationCount notificationCount = response.body();
|
||||
|
||||
if(response.code() == 200) {
|
||||
|
||||
assert notificationCount != null;
|
||||
notificationCounter = navNotifications.getActionView().findViewById(R.id.counterBadgeNotification);
|
||||
notificationCounter.setText(String.valueOf(notificationCount.getCounter()));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(@NonNull Call<NotificationCount> call, @NonNull Throwable t) {
|
||||
|
||||
Log.e("onFailure-notification", t.toString());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -406,6 +406,10 @@ public class RepoDetailActivity extends BaseActivity implements BottomSheetRepoF
|
||||
startActivity(new Intent(RepoDetailActivity.this, RepositorySettingsActivity.class));
|
||||
break;
|
||||
|
||||
case "newPullRequest":
|
||||
startActivity(new Intent(RepoDetailActivity.this, CreatePullRequestActivity.class));
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -394,6 +394,9 @@ public class RepositorySettingsActivity extends BaseActivity {
|
||||
|
||||
if (response.code() == 200) {
|
||||
|
||||
tinyDb.putBoolean("hasIssues", repoEnableIssues);
|
||||
tinyDb.putBoolean("hasPullRequests", repoEnablePr);
|
||||
|
||||
dialogProp.dismiss();
|
||||
Toasty.success(ctx, getString(R.string.repoPropertiesSaveSuccess));
|
||||
|
||||
|
@ -318,4 +318,9 @@ public class ExploreRepositoriesAdapter extends RecyclerView.Adapter<ExploreRepo
|
||||
return searchedReposList.size();
|
||||
}
|
||||
|
||||
public void notifyDataChanged() {
|
||||
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -0,0 +1,95 @@
|
||||
package org.mian.gitnex.adapters;
|
||||
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.CheckBox;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import org.mian.gitnex.R;
|
||||
import org.mian.gitnex.models.Labels;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Author M M Arif
|
||||
*/
|
||||
|
||||
public class LabelsListAdapter extends RecyclerView.Adapter<LabelsListAdapter.LabelsViewHolder> {
|
||||
|
||||
private List<Labels> labels;
|
||||
private ArrayList<String> labelsStrings = new ArrayList<>();
|
||||
private ArrayList<Integer> labelsIds = new ArrayList<>();
|
||||
|
||||
private LabelsListAdapterListener labelsListener;
|
||||
|
||||
public interface LabelsListAdapterListener {
|
||||
|
||||
void labelsStringData(ArrayList<String> data);
|
||||
void labelsIdsData(ArrayList<Integer> data);
|
||||
}
|
||||
|
||||
public LabelsListAdapter(List<Labels> labelsMain, LabelsListAdapterListener labelsListener) {
|
||||
|
||||
this.labels = labelsMain;
|
||||
this.labelsListener = labelsListener;
|
||||
}
|
||||
|
||||
static class LabelsViewHolder extends RecyclerView.ViewHolder {
|
||||
|
||||
private CheckBox labelSelection;
|
||||
|
||||
private LabelsViewHolder(View itemView) {
|
||||
super(itemView);
|
||||
|
||||
labelSelection = itemView.findViewById(R.id.labelSelection);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public LabelsListAdapter.LabelsViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
||||
|
||||
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.custom_labels_list, parent, false);
|
||||
return new LabelsListAdapter.LabelsViewHolder(v);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(@NonNull LabelsListAdapter.LabelsViewHolder holder, int position) {
|
||||
|
||||
Labels currentItem = labels.get(position);
|
||||
|
||||
holder.labelSelection.setText(currentItem.getName());
|
||||
|
||||
for(int i = 0; i < labelsIds.size(); i++) {
|
||||
|
||||
if(labelsStrings.contains(currentItem.getName())) {
|
||||
|
||||
holder.labelSelection.setChecked(true);
|
||||
}
|
||||
}
|
||||
|
||||
holder.labelSelection.setOnCheckedChangeListener((buttonView, isChecked) -> {
|
||||
|
||||
if(isChecked) {
|
||||
|
||||
labelsStrings.add(currentItem.getName());
|
||||
labelsIds.add(currentItem.getId());
|
||||
}
|
||||
else {
|
||||
|
||||
labelsStrings.remove(currentItem.getName());
|
||||
labelsIds.remove(Integer.valueOf(currentItem.getId()));
|
||||
}
|
||||
|
||||
labelsListener.labelsStringData(labelsStrings);
|
||||
labelsListener.labelsIdsData(labelsIds);
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return labels.size();
|
||||
}
|
||||
}
|
@ -0,0 +1,172 @@
|
||||
package org.mian.gitnex.adapters;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.text.Html;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import org.mian.gitnex.R;
|
||||
import org.mian.gitnex.activities.IssueDetailActivity;
|
||||
import org.mian.gitnex.clients.PicassoService;
|
||||
import org.mian.gitnex.database.api.RepositoriesApi;
|
||||
import org.mian.gitnex.database.models.Repository;
|
||||
import org.mian.gitnex.helpers.ClickListener;
|
||||
import org.mian.gitnex.helpers.RoundedTransformation;
|
||||
import org.mian.gitnex.helpers.TimeHelper;
|
||||
import org.mian.gitnex.helpers.TinyDB;
|
||||
import org.mian.gitnex.models.Issues;
|
||||
import org.ocpsoft.prettytime.PrettyTime;
|
||||
import java.text.DateFormat;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
||||
/**
|
||||
* Author M M Arif
|
||||
*/
|
||||
|
||||
public class SearchIssuesAdapter extends RecyclerView.Adapter<SearchIssuesAdapter.SearchViewHolder> {
|
||||
|
||||
private List<Issues> searchedList;
|
||||
private Context mCtx;
|
||||
private TinyDB tinyDb;
|
||||
|
||||
public SearchIssuesAdapter(List<Issues> dataList, Context mCtx) {
|
||||
|
||||
this.mCtx = mCtx;
|
||||
this.searchedList = dataList;
|
||||
this.tinyDb = new TinyDB(mCtx);
|
||||
}
|
||||
|
||||
class SearchViewHolder extends RecyclerView.ViewHolder {
|
||||
|
||||
private TextView issueNumber;
|
||||
private ImageView issueAssigneeAvatar;
|
||||
private TextView issueTitle;
|
||||
private TextView issueCreatedTime;
|
||||
private TextView issueCommentsCount;
|
||||
private TextView repoFullName;
|
||||
|
||||
private SearchViewHolder(View itemView) {
|
||||
|
||||
super(itemView);
|
||||
|
||||
issueNumber = itemView.findViewById(R.id.issueNumber);
|
||||
issueAssigneeAvatar = itemView.findViewById(R.id.assigneeAvatar);
|
||||
issueTitle = itemView.findViewById(R.id.issueTitle);
|
||||
issueCommentsCount = itemView.findViewById(R.id.issueCommentsCount);
|
||||
issueCreatedTime = itemView.findViewById(R.id.issueCreatedTime);
|
||||
repoFullName = itemView.findViewById(R.id.repoFullName);
|
||||
|
||||
issueTitle.setOnClickListener(v -> {
|
||||
|
||||
Context context = v.getContext();
|
||||
|
||||
Intent intent = new Intent(context, IssueDetailActivity.class);
|
||||
intent.putExtra("issueNumber", issueNumber.getText());
|
||||
|
||||
tinyDb.putString("issueNumber", issueNumber.getText().toString());
|
||||
tinyDb.putString("issueType", "Issue");
|
||||
|
||||
tinyDb.putString("repoFullName", repoFullName.getText().toString());
|
||||
|
||||
String[] parts = repoFullName.getText().toString().split("/");
|
||||
final String repoOwner = parts[0];
|
||||
final String repoName = parts[1];
|
||||
|
||||
int currentActiveAccountId = tinyDb.getInt("currentActiveAccountId");
|
||||
RepositoriesApi repositoryData = new RepositoriesApi(context);
|
||||
|
||||
Integer count = repositoryData.checkRepository(currentActiveAccountId, repoOwner, repoName);
|
||||
|
||||
if(count == 0) {
|
||||
|
||||
long id = repositoryData.insertRepository(currentActiveAccountId, repoOwner, repoName);
|
||||
tinyDb.putLong("repositoryId", id);
|
||||
|
||||
}
|
||||
else {
|
||||
|
||||
Repository data = repositoryData.getRepository(currentActiveAccountId, repoOwner, repoName);
|
||||
tinyDb.putLong("repositoryId", data.getRepositoryId());
|
||||
|
||||
}
|
||||
|
||||
context.startActivity(intent);
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public SearchIssuesAdapter.SearchViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
||||
|
||||
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_issues, parent, false);
|
||||
return new SearchIssuesAdapter.SearchViewHolder(v);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(@NonNull final SearchIssuesAdapter.SearchViewHolder holder, int position) {
|
||||
|
||||
Issues currentItem = searchedList.get(position);
|
||||
|
||||
String locale = tinyDb.getString("locale");
|
||||
String timeFormat = tinyDb.getString("dateFormat");
|
||||
|
||||
if(!currentItem.getUser().getFull_name().equals("")) {
|
||||
holder.issueAssigneeAvatar.setOnClickListener(new ClickListener(mCtx.getResources().getString(R.string.issueCreator) + currentItem.getUser().getFull_name(), mCtx));
|
||||
}
|
||||
else {
|
||||
holder.issueAssigneeAvatar.setOnClickListener(new ClickListener(mCtx.getResources().getString(R.string.issueCreator) + currentItem.getUser().getLogin(), mCtx));
|
||||
}
|
||||
|
||||
PicassoService
|
||||
.getInstance(mCtx).get().load(currentItem.getUser().getAvatar_url()).placeholder(R.drawable.loader_animated).transform(new RoundedTransformation(8, 0)).resize(120, 120).centerCrop().into(holder.issueAssigneeAvatar);
|
||||
|
||||
String issueNumber_ = "<font color='" + mCtx.getResources().getColor(R.color.lightGray) + "'>" + currentItem.getRepository().getFull_name() + mCtx.getResources().getString(R.string.hash) + currentItem.getNumber() + "</font>";
|
||||
holder.issueTitle.setText(Html.fromHtml(issueNumber_ + " " + currentItem.getTitle()));
|
||||
|
||||
holder.issueNumber.setText(String.valueOf(currentItem.getNumber()));
|
||||
holder.issueCommentsCount.setText(String.valueOf(currentItem.getComments()));
|
||||
holder.repoFullName.setText(currentItem.getRepository().getFull_name());
|
||||
|
||||
switch(timeFormat) {
|
||||
case "pretty": {
|
||||
PrettyTime prettyTime = new PrettyTime(new Locale(locale));
|
||||
String createdTime = prettyTime.format(currentItem.getCreated_at());
|
||||
holder.issueCreatedTime.setText(createdTime);
|
||||
holder.issueCreatedTime.setOnClickListener(new ClickListener(TimeHelper.customDateFormatForToastDateFormat(currentItem.getCreated_at()), mCtx));
|
||||
break;
|
||||
}
|
||||
case "normal": {
|
||||
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd '" + mCtx.getResources().getString(R.string.timeAtText) + "' HH:mm", new Locale(locale));
|
||||
String createdTime = formatter.format(currentItem.getCreated_at());
|
||||
holder.issueCreatedTime.setText(createdTime);
|
||||
break;
|
||||
}
|
||||
case "normal1": {
|
||||
DateFormat formatter = new SimpleDateFormat("dd-MM-yyyy '" + mCtx.getResources().getString(R.string.timeAtText) + "' HH:mm", new Locale(locale));
|
||||
String createdTime = formatter.format(currentItem.getCreated_at());
|
||||
holder.issueCreatedTime.setText(createdTime);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
|
||||
return searchedList.size();
|
||||
}
|
||||
|
||||
public void notifyDataChanged() {
|
||||
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
}
|
@ -6,14 +6,13 @@ import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.TextView;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import org.mian.gitnex.R;
|
||||
import org.mian.gitnex.activities.MainActivity;
|
||||
import org.mian.gitnex.databinding.FragmentAboutBinding;
|
||||
import org.mian.gitnex.helpers.AppUtil;
|
||||
import org.mian.gitnex.helpers.TinyDB;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* Author M M Arif
|
||||
@ -21,30 +20,19 @@ import java.util.Objects;
|
||||
|
||||
public class AboutFragment extends Fragment {
|
||||
|
||||
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
||||
|
||||
View v = inflater.inflate(R.layout.fragment_about, container, false);
|
||||
@Override
|
||||
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
|
||||
FragmentAboutBinding viewBinding = FragmentAboutBinding.inflate(inflater, container, false);
|
||||
TinyDB tinyDb = new TinyDB(getContext());
|
||||
|
||||
final TextView appVerBuild;
|
||||
final TextView donationLink;
|
||||
final TextView donationLinkPatreon;
|
||||
final TextView translateLink;
|
||||
final TextView appWebsite;
|
||||
final TextView appRepo;
|
||||
viewBinding.appVersion.setText(AppUtil.getAppVersion(requireContext()));
|
||||
viewBinding.userServerVersion.setText(tinyDb.getString("giteaVersion"));
|
||||
viewBinding.appBuild.setText(String.valueOf(AppUtil.getAppBuildNo(requireContext())));
|
||||
|
||||
appVerBuild = v.findViewById(R.id.appVerBuild);
|
||||
TextView viewTextGiteaVersion = v.findViewById(R.id.giteaVersion);
|
||||
donationLink = v.findViewById(R.id.donationLink);
|
||||
donationLinkPatreon = v.findViewById(R.id.donationLinkPatreon);
|
||||
translateLink = v.findViewById(R.id.translateLink);
|
||||
appWebsite = v.findViewById(R.id.appWebsite);
|
||||
appRepo = v.findViewById(R.id.appRepo);
|
||||
((MainActivity) requireActivity()).setActionBarTitle(getResources().getString(R.string.pageTitleAbout));
|
||||
|
||||
appVerBuild.setText(getString(R.string.appVerBuild, AppUtil.getAppVersion(Objects.requireNonNull(getContext())), AppUtil.getAppBuildNo(getContext())));
|
||||
|
||||
donationLink.setOnClickListener(v1 -> {
|
||||
viewBinding.donationLinkLiberapay.setOnClickListener(v1 -> {
|
||||
|
||||
Intent intent = new Intent();
|
||||
intent.setAction(Intent.ACTION_VIEW);
|
||||
@ -53,7 +41,7 @@ public class AboutFragment extends Fragment {
|
||||
startActivity(intent);
|
||||
});
|
||||
|
||||
donationLinkPatreon.setOnClickListener(v12 -> {
|
||||
viewBinding.donationLinkPatreon.setOnClickListener(v12 -> {
|
||||
|
||||
Intent intent = new Intent();
|
||||
intent.setAction(Intent.ACTION_VIEW);
|
||||
@ -62,7 +50,7 @@ public class AboutFragment extends Fragment {
|
||||
startActivity(intent);
|
||||
});
|
||||
|
||||
translateLink.setOnClickListener(v13 -> {
|
||||
viewBinding.translateLink.setOnClickListener(v13 -> {
|
||||
|
||||
Intent intent = new Intent();
|
||||
intent.setAction(Intent.ACTION_VIEW);
|
||||
@ -71,7 +59,7 @@ public class AboutFragment extends Fragment {
|
||||
startActivity(intent);
|
||||
});
|
||||
|
||||
appWebsite.setOnClickListener(v14 -> {
|
||||
viewBinding.appWebsite.setOnClickListener(v14 -> {
|
||||
|
||||
Intent intent = new Intent();
|
||||
intent.setAction(Intent.ACTION_VIEW);
|
||||
@ -80,19 +68,15 @@ public class AboutFragment extends Fragment {
|
||||
startActivity(intent);
|
||||
});
|
||||
|
||||
appRepo.setOnClickListener(v15 -> {
|
||||
if(AppUtil.isPro(requireContext())) {
|
||||
|
||||
Intent intent = new Intent();
|
||||
intent.setAction(Intent.ACTION_VIEW);
|
||||
intent.addCategory(Intent.CATEGORY_BROWSABLE);
|
||||
intent.setData(Uri.parse(getResources().getString(R.string.appRepoLink)));
|
||||
startActivity(intent);
|
||||
});
|
||||
viewBinding.supportHeader.setVisibility(View.GONE);
|
||||
viewBinding.dividerSupport.setVisibility(View.GONE);
|
||||
viewBinding.donationLinkLiberapay.setVisibility(View.GONE);
|
||||
viewBinding.donationLinkPatreon.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
String commit = getResources().getString(R.string.commitPage) + tinyDb.getString("giteaVersion");
|
||||
viewTextGiteaVersion.setText(commit);
|
||||
|
||||
return v;
|
||||
return viewBinding.getRoot();
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -43,6 +43,7 @@ public class BottomSheetRepoFragment extends BottomSheetDialogFragment {
|
||||
TextView copyRepoUrl = v.findViewById(R.id.copyRepoUrl);
|
||||
View repoSettingsDivider = v.findViewById(R.id.repoSettingsDivider);
|
||||
TextView repoSettings = v.findViewById(R.id.repoSettings);
|
||||
TextView createPullRequest = v.findViewById(R.id.createPullRequest);
|
||||
|
||||
createLabel.setOnClickListener(v112 -> {
|
||||
|
||||
@ -64,6 +65,20 @@ public class BottomSheetRepoFragment extends BottomSheetDialogFragment {
|
||||
createIssue.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
if(tinyDb.getBoolean("hasPullRequests")) {
|
||||
|
||||
createPullRequest.setVisibility(View.VISIBLE);
|
||||
createPullRequest.setOnClickListener(vPr -> {
|
||||
|
||||
bmListener.onButtonClicked("newPullRequest");
|
||||
dismiss();
|
||||
});
|
||||
}
|
||||
else {
|
||||
|
||||
createPullRequest.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
createMilestone.setOnClickListener(v13 -> {
|
||||
|
||||
bmListener.onButtonClicked("newMilestone");
|
||||
|
129
app/src/main/java/org/mian/gitnex/fragments/ExploreFragment.java
Normal file
@ -0,0 +1,129 @@
|
||||
package org.mian.gitnex.fragments;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Typeface;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.TextView;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
import androidx.fragment.app.FragmentPagerAdapter;
|
||||
import androidx.viewpager.widget.ViewPager;
|
||||
import com.google.android.material.tabs.TabLayout;
|
||||
import org.mian.gitnex.R;
|
||||
import org.mian.gitnex.activities.MainActivity;
|
||||
import org.mian.gitnex.helpers.TinyDB;
|
||||
|
||||
/**
|
||||
* Author M M Arif
|
||||
*/
|
||||
|
||||
public class ExploreFragment extends Fragment {
|
||||
|
||||
private Context ctx;
|
||||
private TinyDB tinyDB;
|
||||
|
||||
private int tabsCount;
|
||||
public ViewPager mViewPager;
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
||||
|
||||
View v = inflater.inflate(R.layout.fragment_explore, container,false);
|
||||
ctx = getContext();
|
||||
tinyDB = new TinyDB(ctx);
|
||||
|
||||
((MainActivity) requireActivity()).setActionBarTitle(getResources().getString(R.string.navExplore));
|
||||
|
||||
TabLayout tabLayout = v.findViewById(R.id.tabsExplore);
|
||||
|
||||
ViewGroup viewGroup = (ViewGroup) tabLayout.getChildAt(0);
|
||||
tabsCount = viewGroup.getChildCount();
|
||||
|
||||
Typeface myTypeface;
|
||||
|
||||
switch(tinyDB.getInt("customFontId", -1)) {
|
||||
|
||||
case 0:
|
||||
myTypeface = Typeface.createFromAsset(ctx.getAssets(), "fonts/roboto.ttf");
|
||||
break;
|
||||
|
||||
case 2:
|
||||
myTypeface = Typeface.createFromAsset(ctx.getAssets(), "fonts/sourcecodeproregular.ttf");
|
||||
break;
|
||||
|
||||
default:
|
||||
myTypeface = Typeface.createFromAsset(ctx.getAssets(), "fonts/manroperegular.ttf");
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
for(int j = 0; j < tabsCount; j++) {
|
||||
|
||||
ViewGroup vgTab = (ViewGroup) viewGroup.getChildAt(j);
|
||||
int tabChildCount = vgTab.getChildCount();
|
||||
|
||||
for(int i = 0; i < tabChildCount; i++) {
|
||||
|
||||
View tabViewChild = vgTab.getChildAt(i);
|
||||
|
||||
if(tabViewChild instanceof TextView) {
|
||||
((TextView) tabViewChild).setTypeface(myTypeface);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
mViewPager = v.findViewById(R.id.containerExplore);
|
||||
|
||||
mViewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
|
||||
tabLayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(mViewPager));
|
||||
|
||||
SectionsPagerAdapter mSectionsPagerAdapter = new SectionsPagerAdapter(getChildFragmentManager());
|
||||
mViewPager.setAdapter(mSectionsPagerAdapter);
|
||||
|
||||
return v;
|
||||
}
|
||||
|
||||
public class SectionsPagerAdapter extends FragmentPagerAdapter {
|
||||
|
||||
SectionsPagerAdapter(FragmentManager fm) {
|
||||
|
||||
super(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT);
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public Fragment getItem(int position) {
|
||||
|
||||
Fragment fragment = null;
|
||||
|
||||
switch(position) {
|
||||
|
||||
case 0: // Repositories
|
||||
fragment = new ExploreRepositoriesFragment();
|
||||
break;
|
||||
|
||||
case 1: // Issues
|
||||
fragment = new SearchIssuesFragment();
|
||||
break;
|
||||
}
|
||||
|
||||
assert fragment != null;
|
||||
return fragment;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCount() {
|
||||
|
||||
return tabsCount;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -1,27 +1,37 @@
|
||||
package org.mian.gitnex.fragments;
|
||||
|
||||
import android.app.Dialog;
|
||||
import android.content.Context;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.drawable.ColorDrawable;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuInflater;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.inputmethod.EditorInfo;
|
||||
import android.widget.ProgressBar;
|
||||
import android.widget.TextView;
|
||||
import android.view.inputmethod.InputMethodManager;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.recyclerview.widget.DividerItemDecoration;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import org.mian.gitnex.R;
|
||||
import org.mian.gitnex.adapters.ExploreRepositoriesAdapter;
|
||||
import org.mian.gitnex.clients.RetrofitClient;
|
||||
import org.mian.gitnex.databinding.CustomExploreRepositoriesDialogBinding;
|
||||
import org.mian.gitnex.databinding.FragmentExploreRepoBinding;
|
||||
import org.mian.gitnex.helpers.AppUtil;
|
||||
import org.mian.gitnex.helpers.Authorization;
|
||||
import org.mian.gitnex.helpers.InfiniteScrollListener;
|
||||
import org.mian.gitnex.helpers.StaticGlobalVariables;
|
||||
import org.mian.gitnex.helpers.TinyDB;
|
||||
import org.mian.gitnex.helpers.Version;
|
||||
import org.mian.gitnex.models.ExploreRepositories;
|
||||
import org.mian.gitnex.models.UserRepositories;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import retrofit2.Call;
|
||||
@ -29,189 +39,300 @@ import retrofit2.Callback;
|
||||
import retrofit2.Response;
|
||||
|
||||
/**
|
||||
* Template Author Author M M Arif
|
||||
* Template Author M M Arif
|
||||
* Author 6543
|
||||
*/
|
||||
|
||||
public class ExploreRepositoriesFragment extends Fragment {
|
||||
|
||||
private static String repoNameF = "param2";
|
||||
private static String repoOwnerF = "param1";
|
||||
private ProgressBar mProgressBar;
|
||||
private RecyclerView mRecyclerView;
|
||||
private TextView noData;
|
||||
private TextView searchKeyword;
|
||||
private Boolean repoTypeInclude = true;
|
||||
private FragmentExploreRepoBinding viewBinding;
|
||||
private Context ctx;
|
||||
private TinyDB tinyDb;
|
||||
|
||||
private int pageCurrentIndex = 1;
|
||||
private boolean repoTypeInclude = true;
|
||||
private String sort = "updated";
|
||||
private String order = "desc";
|
||||
private int limit = 50;
|
||||
private int limit = 10;
|
||||
private List<UserRepositories> dataList;
|
||||
private ExploreRepositoriesAdapter adapter;
|
||||
|
||||
private OnFragmentInteractionListener mListener;
|
||||
private String instanceUrl;
|
||||
private String loginUid;
|
||||
private String instanceToken;
|
||||
|
||||
public ExploreRepositoriesFragment() {
|
||||
|
||||
}
|
||||
|
||||
public static ExploreRepositoriesFragment newInstance(String param1, String param2) {
|
||||
|
||||
ExploreRepositoriesFragment fragment = new ExploreRepositoriesFragment();
|
||||
Bundle args = new Bundle();
|
||||
args.putString(repoOwnerF, param1);
|
||||
args.putString(repoNameF, param2);
|
||||
fragment.setArguments(args);
|
||||
return fragment;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
|
||||
super.onCreate(savedInstanceState);
|
||||
if(getArguments() != null) {
|
||||
String repoName = getArguments().getString(repoNameF);
|
||||
String repoOwner = getArguments().getString(repoOwnerF);
|
||||
}
|
||||
}
|
||||
private Dialog dialogFilterOptions;
|
||||
private CustomExploreRepositoriesDialogBinding filterBinding;
|
||||
|
||||
@Override
|
||||
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
|
||||
final View v = inflater.inflate(R.layout.fragment_explore_repo, container, false);
|
||||
//setHasOptionsMenu(true);
|
||||
viewBinding = FragmentExploreRepoBinding.inflate(inflater, container, false);
|
||||
setHasOptionsMenu(true);
|
||||
|
||||
TinyDB tinyDb = new TinyDB(getContext());
|
||||
final String instanceUrl = tinyDb.getString("instanceUrl");
|
||||
final String loginUid = tinyDb.getString("loginUid");
|
||||
final String instanceToken = "token " + tinyDb.getString(loginUid + "-token");
|
||||
ctx = getContext();
|
||||
tinyDb = new TinyDB(getContext());
|
||||
|
||||
searchKeyword = v.findViewById(R.id.searchKeyword);
|
||||
noData = v.findViewById(R.id.noData);
|
||||
mProgressBar = v.findViewById(R.id.progress_bar);
|
||||
mRecyclerView = v.findViewById(R.id.recyclerViewReposSearch);
|
||||
instanceUrl = tinyDb.getString("instanceUrl");
|
||||
loginUid = tinyDb.getString("loginUid");
|
||||
instanceToken = "token " + tinyDb.getString(loginUid + "-token");
|
||||
|
||||
mProgressBar.setVisibility(View.VISIBLE);
|
||||
dataList = new ArrayList<>();
|
||||
adapter = new ExploreRepositoriesAdapter(dataList, ctx);
|
||||
|
||||
searchKeyword.setOnEditorActionListener((v1, actionId, event) -> {
|
||||
tinyDb.putBoolean("exploreRepoIncludeTopic", false);
|
||||
tinyDb.putBoolean("exploreRepoIncludeDescription", false);
|
||||
tinyDb.putBoolean("exploreRepoIncludeTemplate", false);
|
||||
tinyDb.putBoolean("exploreRepoOnlyArchived", false);
|
||||
|
||||
// if gitea is 1.12 or higher use the new limit
|
||||
if(new Version(tinyDb.getString("giteaVersion")).higherOrEqual("1.12.0")) {
|
||||
limit = StaticGlobalVariables.resultLimitNewGiteaInstances;
|
||||
}
|
||||
|
||||
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(ctx);
|
||||
|
||||
viewBinding.recyclerViewReposSearch.setHasFixedSize(true);
|
||||
viewBinding.recyclerViewReposSearch.setLayoutManager(linearLayoutManager);
|
||||
viewBinding.recyclerViewReposSearch.setAdapter(adapter);
|
||||
|
||||
viewBinding.searchKeyword.setOnEditorActionListener((v1, actionId, event) -> {
|
||||
|
||||
if(actionId == EditorInfo.IME_ACTION_SEND) {
|
||||
if(!searchKeyword.getText().toString().equals("")) {
|
||||
mProgressBar.setVisibility(View.VISIBLE);
|
||||
mRecyclerView.setVisibility(View.GONE);
|
||||
loadSearchReposList(instanceUrl, instanceToken, loginUid, searchKeyword.getText().toString(), repoTypeInclude, sort, order, getContext(), limit);
|
||||
|
||||
if(!Objects.requireNonNull(viewBinding.searchKeyword.getText()).toString().equals("")) {
|
||||
|
||||
InputMethodManager imm = (InputMethodManager) requireActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
|
||||
imm.hideSoftInputFromWindow(viewBinding.searchKeyword.getWindowToken(), 0);
|
||||
|
||||
// if gitea is 1.12 or higher use the new limit
|
||||
if(new Version(tinyDb.getString("giteaVersion")).higherOrEqual("1.12.0")) {
|
||||
limit = StaticGlobalVariables.resultLimitNewGiteaInstances;
|
||||
}
|
||||
else {
|
||||
limit = 10;
|
||||
}
|
||||
|
||||
pageCurrentIndex = 1;
|
||||
viewBinding.progressBar.setVisibility(View.VISIBLE);
|
||||
loadData(false, viewBinding.searchKeyword.getText().toString(), tinyDb.getBoolean("exploreRepoIncludeTopic"), tinyDb.getBoolean("exploreRepoIncludeDescription"), tinyDb.getBoolean("exploreRepoIncludeTemplate"), tinyDb.getBoolean("exploreRepoOnlyArchived"));
|
||||
}
|
||||
}
|
||||
return false;
|
||||
});
|
||||
|
||||
int limitDefault = 25;
|
||||
loadDefaultList(instanceUrl, instanceToken, loginUid, repoTypeInclude, sort, order, getContext(), limitDefault);
|
||||
|
||||
return v;
|
||||
|
||||
}
|
||||
|
||||
private void loadDefaultList(String instanceUrl, String instanceToken, String loginUid, Boolean repoTypeInclude, String sort, String order, final Context context, int limit) {
|
||||
|
||||
Call<ExploreRepositories> call = RetrofitClient.getInstance(instanceUrl, getContext()).getApiInterface().queryRepos(Authorization.returnAuthentication(getContext(), loginUid, instanceToken), null, repoTypeInclude, sort, order, limit);
|
||||
|
||||
call.enqueue(new Callback<ExploreRepositories>() {
|
||||
viewBinding.recyclerViewReposSearch.addOnScrollListener(new InfiniteScrollListener(pageCurrentIndex, linearLayoutManager) {
|
||||
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<ExploreRepositories> call, @NonNull Response<ExploreRepositories> response) {
|
||||
|
||||
if(response.isSuccessful()) {
|
||||
assert response.body() != null;
|
||||
getReposList(response.body().getSearchedData(), context);
|
||||
}
|
||||
else {
|
||||
Log.i("onResponse", String.valueOf(response.code()));
|
||||
}
|
||||
public void onScrolledToEnd(int firstVisibleItemPosition) {
|
||||
|
||||
pageCurrentIndex++;
|
||||
loadData(true, Objects.requireNonNull(viewBinding.searchKeyword.getText()).toString(), tinyDb.getBoolean("exploreRepoIncludeTopic"), tinyDb.getBoolean("exploreRepoIncludeDescription"), tinyDb.getBoolean("exploreRepoIncludeTemplate"), tinyDb.getBoolean("exploreRepoOnlyArchived"));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(@NonNull Call<ExploreRepositories> call, @NonNull Throwable t) {
|
||||
|
||||
Log.i("onFailure", Objects.requireNonNull(t.getMessage()));
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
viewBinding.pullToRefresh.setOnRefreshListener(() -> {
|
||||
|
||||
private void loadSearchReposList(String instanceUrl, String instanceToken, String loginUid, String searchKeyword, Boolean repoTypeInclude, String sort, String order, final Context context, int limit) {
|
||||
|
||||
Call<ExploreRepositories> call = RetrofitClient.getInstance(instanceUrl, getContext()).getApiInterface().queryRepos(Authorization.returnAuthentication(getContext(), loginUid, instanceToken), searchKeyword, repoTypeInclude, sort, order, limit);
|
||||
|
||||
call.enqueue(new Callback<ExploreRepositories>() {
|
||||
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<ExploreRepositories> call, @NonNull Response<ExploreRepositories> response) {
|
||||
|
||||
if(response.isSuccessful()) {
|
||||
assert response.body() != null;
|
||||
getReposList(response.body().getSearchedData(), context);
|
||||
}
|
||||
else {
|
||||
Log.i("onResponse", String.valueOf(response.code()));
|
||||
}
|
||||
pageCurrentIndex = 1;
|
||||
|
||||
// if gitea is 1.12 or higher use the new limit
|
||||
if(new Version(tinyDb.getString("giteaVersion")).higherOrEqual("1.12.0")) {
|
||||
limit = StaticGlobalVariables.resultLimitNewGiteaInstances;
|
||||
}
|
||||
else {
|
||||
limit = 10;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(@NonNull Call<ExploreRepositories> call, @NonNull Throwable t) {
|
||||
|
||||
Log.i("onFailure", Objects.requireNonNull(t.getMessage()));
|
||||
}
|
||||
|
||||
loadData(false, Objects.requireNonNull(viewBinding.searchKeyword.getText()).toString(), tinyDb.getBoolean("exploreRepoIncludeTopic"), tinyDb.getBoolean("exploreRepoIncludeDescription"), tinyDb.getBoolean("exploreRepoIncludeTemplate"), tinyDb.getBoolean("exploreRepoOnlyArchived"));
|
||||
});
|
||||
|
||||
loadData(false, "", tinyDb.getBoolean("exploreRepoIncludeTopic"), tinyDb.getBoolean("exploreRepoIncludeDescription"), tinyDb.getBoolean("exploreRepoIncludeTemplate"), tinyDb.getBoolean("exploreRepoOnlyArchived"));
|
||||
|
||||
return viewBinding.getRoot();
|
||||
|
||||
}
|
||||
|
||||
private void getReposList(List<UserRepositories> dataList, Context context) {
|
||||
private void loadData(boolean append, String searchKeyword, boolean exploreRepoIncludeTopic, boolean exploreRepoIncludeDescription, boolean exploreRepoIncludeTemplate, boolean exploreRepoOnlyArchived) {
|
||||
|
||||
ExploreRepositoriesAdapter adapter = new ExploreRepositoriesAdapter(dataList, context);
|
||||
viewBinding.noData.setVisibility(View.GONE);
|
||||
|
||||
mRecyclerView.setVisibility(View.VISIBLE);
|
||||
int apiCallDefaultLimit = 10;
|
||||
// if gitea is 1.12 or higher use the new limit
|
||||
if(new Version(tinyDb.getString("giteaVersion")).higherOrEqual("1.12.0")) {
|
||||
apiCallDefaultLimit = StaticGlobalVariables.resultLimitNewGiteaInstances;
|
||||
}
|
||||
|
||||
mRecyclerView.setHasFixedSize(true);
|
||||
mRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
|
||||
DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(mRecyclerView.getContext(), DividerItemDecoration.VERTICAL);
|
||||
mRecyclerView.addItemDecoration(dividerItemDecoration);
|
||||
if(apiCallDefaultLimit > limit) {
|
||||
return;
|
||||
}
|
||||
|
||||
if(adapter.getItemCount() > 0) {
|
||||
|
||||
mRecyclerView.setAdapter(adapter);
|
||||
noData.setVisibility(View.GONE);
|
||||
mProgressBar.setVisibility(View.GONE);
|
||||
if(pageCurrentIndex == 1 || !append) {
|
||||
|
||||
dataList.clear();
|
||||
adapter.notifyDataSetChanged();
|
||||
viewBinding.pullToRefresh.setRefreshing(false);
|
||||
viewBinding.progressBar.setVisibility(View.VISIBLE);
|
||||
}
|
||||
else {
|
||||
|
||||
noData.setVisibility(View.VISIBLE);
|
||||
mProgressBar.setVisibility(View.GONE);
|
||||
|
||||
viewBinding.loadingMoreView.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
Call<ExploreRepositories> call = RetrofitClient.getInstance(instanceUrl, getContext()).getApiInterface().queryRepos(Authorization.returnAuthentication(getContext(), loginUid, instanceToken), searchKeyword, repoTypeInclude, sort, order, exploreRepoIncludeTopic, exploreRepoIncludeDescription, exploreRepoIncludeTemplate, exploreRepoOnlyArchived, limit, pageCurrentIndex);
|
||||
|
||||
call.enqueue(new Callback<ExploreRepositories>() {
|
||||
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<ExploreRepositories> call, @NonNull Response<ExploreRepositories> response) {
|
||||
|
||||
if(response.code() == 200) {
|
||||
|
||||
assert response.body() != null;
|
||||
|
||||
limit = response.body().getSearchedData().size();
|
||||
|
||||
if(!append) {
|
||||
|
||||
dataList.clear();
|
||||
}
|
||||
|
||||
dataList.addAll(response.body().getSearchedData());
|
||||
adapter.notifyDataSetChanged();
|
||||
|
||||
}
|
||||
else {
|
||||
|
||||
dataList.clear();
|
||||
adapter.notifyDataChanged();
|
||||
viewBinding.noData.setVisibility(View.VISIBLE);
|
||||
|
||||
}
|
||||
|
||||
onCleanup();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(@NonNull Call<ExploreRepositories> call, @NonNull Throwable t) {
|
||||
|
||||
Log.e("onFailure", Objects.requireNonNull(t.getMessage()));
|
||||
onCleanup();
|
||||
|
||||
}
|
||||
|
||||
private void onCleanup() {
|
||||
|
||||
AppUtil.setMultiVisibility(View.GONE, viewBinding.loadingMoreView, viewBinding.progressBar);
|
||||
|
||||
if(dataList.isEmpty()) {
|
||||
|
||||
viewBinding.noData.setVisibility(View.VISIBLE);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {
|
||||
|
||||
menu.clear();
|
||||
inflater.inflate(R.menu.filter_menu, menu);
|
||||
super.onCreateOptionsMenu(menu, inflater);
|
||||
|
||||
MenuItem filter = menu.findItem(R.id.filter);
|
||||
|
||||
filter.setOnMenuItemClickListener(filter_ -> {
|
||||
|
||||
showFilterOptions();
|
||||
return false;
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
public void onButtonPressed(Uri uri) {
|
||||
private void showFilterOptions() {
|
||||
|
||||
if(mListener != null) {
|
||||
mListener.onFragmentInteraction(uri);
|
||||
dialogFilterOptions = new Dialog(ctx, R.style.ThemeOverlay_MaterialComponents_Dialog_Alert);
|
||||
|
||||
if (dialogFilterOptions.getWindow() != null) {
|
||||
|
||||
dialogFilterOptions.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
|
||||
}
|
||||
|
||||
filterBinding = CustomExploreRepositoriesDialogBinding.inflate(LayoutInflater.from(ctx));
|
||||
|
||||
View view = filterBinding.getRoot();
|
||||
dialogFilterOptions.setContentView(view);
|
||||
|
||||
filterBinding.includeTopic.setOnClickListener(includeTopic -> {
|
||||
|
||||
if(filterBinding.includeTopic.isChecked()) {
|
||||
|
||||
tinyDb.putBoolean("exploreRepoIncludeTopic", true);
|
||||
}
|
||||
else {
|
||||
|
||||
tinyDb.putBoolean("exploreRepoIncludeTopic", false);
|
||||
}
|
||||
});
|
||||
|
||||
filterBinding.includeDesc.setOnClickListener(includeDesc -> {
|
||||
|
||||
if(filterBinding.includeDesc.isChecked()) {
|
||||
|
||||
tinyDb.putBoolean("exploreRepoIncludeDescription", true);
|
||||
}
|
||||
else {
|
||||
|
||||
tinyDb.putBoolean("exploreRepoIncludeDescription", false);
|
||||
}
|
||||
});
|
||||
|
||||
filterBinding.includeTemplate.setOnClickListener(includeTemplate -> {
|
||||
|
||||
if(filterBinding.includeTemplate.isChecked()) {
|
||||
|
||||
tinyDb.putBoolean("exploreRepoIncludeTemplate", true);
|
||||
}
|
||||
else {
|
||||
|
||||
tinyDb.putBoolean("exploreRepoIncludeTemplate", false);
|
||||
}
|
||||
});
|
||||
|
||||
filterBinding.onlyArchived.setOnClickListener(onlyArchived -> {
|
||||
|
||||
if(filterBinding.onlyArchived.isChecked()) {
|
||||
|
||||
tinyDb.putBoolean("exploreRepoOnlyArchived", true);
|
||||
}
|
||||
else {
|
||||
|
||||
tinyDb.putBoolean("exploreRepoOnlyArchived", false);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
filterBinding.includeTopic.setChecked(tinyDb.getBoolean("exploreRepoIncludeTopic"));
|
||||
filterBinding.includeDesc.setChecked(tinyDb.getBoolean("exploreRepoIncludeDescription"));
|
||||
filterBinding.includeTemplate.setChecked(tinyDb.getBoolean("exploreRepoIncludeTemplate"));
|
||||
filterBinding.onlyArchived.setChecked(tinyDb.getBoolean("exploreRepoOnlyArchived"));
|
||||
|
||||
filterBinding.cancel.setOnClickListener(editProperties -> {
|
||||
dialogFilterOptions.dismiss();
|
||||
});
|
||||
|
||||
dialogFilterOptions.show();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDetach() {
|
||||
|
||||
super.onDetach();
|
||||
mListener = null;
|
||||
}
|
||||
|
||||
public interface OnFragmentInteractionListener {
|
||||
|
||||
void onFragmentInteraction(Uri uri);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -32,7 +32,6 @@ import org.mian.gitnex.interfaces.ApiInterface;
|
||||
import org.mian.gitnex.models.Issues;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import retrofit2.Call;
|
||||
import retrofit2.Callback;
|
||||
import retrofit2.Response;
|
||||
@ -112,7 +111,7 @@ public class IssuesFragment extends Fragment {
|
||||
recyclerView.setLayoutManager(new LinearLayoutManager(context));
|
||||
recyclerView.setAdapter(adapter);
|
||||
|
||||
((RepoDetailActivity) Objects.requireNonNull(getActivity())).setFragmentRefreshListener(issueState -> {
|
||||
((RepoDetailActivity) requireActivity()).setFragmentRefreshListener(issueState -> {
|
||||
|
||||
if(issueState.equals("closed")) {
|
||||
menu.getItem(1).setIcon(R.drawable.ic_filter_closed);
|
||||
|
@ -27,7 +27,6 @@ import org.mian.gitnex.interfaces.ApiInterface;
|
||||
import org.mian.gitnex.models.Milestones;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import retrofit2.Call;
|
||||
import retrofit2.Callback;
|
||||
import retrofit2.Response;
|
||||
@ -104,7 +103,7 @@ public class MilestonesFragment extends Fragment {
|
||||
|
||||
}, 50));
|
||||
|
||||
((RepoDetailActivity) Objects.requireNonNull(getActivity())).setFragmentRefreshListenerMilestone(milestoneState -> {
|
||||
((RepoDetailActivity) requireActivity()).setFragmentRefreshListenerMilestone(milestoneState -> {
|
||||
|
||||
if(milestoneState.equals("closed")) {
|
||||
menu.getItem(1).setIcon(R.drawable.ic_filter_closed);
|
||||
|
@ -36,7 +36,6 @@ import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import retrofit2.Call;
|
||||
import retrofit2.Callback;
|
||||
import retrofit2.Response;
|
||||
@ -79,7 +78,7 @@ public class NotificationsFragment extends Fragment implements NotificationsAdap
|
||||
View v = inflater.inflate(R.layout.fragment_notifications, container, false);
|
||||
setHasOptionsMenu(true);
|
||||
|
||||
activity = Objects.requireNonNull(getActivity());
|
||||
activity = requireActivity();
|
||||
context = getContext();
|
||||
tinyDB = new TinyDB(context);
|
||||
|
||||
|
@ -351,6 +351,13 @@ public class RepoInfoFragment extends Fragment {
|
||||
tinyDb.putBoolean("hasIssues", true);
|
||||
}
|
||||
|
||||
if(repoInfo.isHas_pull_requests()) {
|
||||
tinyDb.putBoolean("hasPullRequests", repoInfo.isHas_pull_requests());
|
||||
}
|
||||
else {
|
||||
tinyDb.putBoolean("hasPullRequests", false);
|
||||
}
|
||||
|
||||
tinyDb.putString("repoHtmlUrl", repoInfo.getHtml_url());
|
||||
|
||||
mProgressBar.setVisibility(View.GONE);
|
||||
|
@ -0,0 +1,190 @@
|
||||
package org.mian.gitnex.fragments;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.inputmethod.EditorInfo;
|
||||
import android.view.inputmethod.InputMethodManager;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import org.mian.gitnex.adapters.SearchIssuesAdapter;
|
||||
import org.mian.gitnex.clients.RetrofitClient;
|
||||
import org.mian.gitnex.databinding.FragmentSearchIssuesBinding;
|
||||
import org.mian.gitnex.helpers.AppUtil;
|
||||
import org.mian.gitnex.helpers.Authorization;
|
||||
import org.mian.gitnex.helpers.InfiniteScrollListener;
|
||||
import org.mian.gitnex.helpers.TinyDB;
|
||||
import org.mian.gitnex.models.Issues;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import retrofit2.Call;
|
||||
import retrofit2.Callback;
|
||||
import retrofit2.Response;
|
||||
|
||||
/**
|
||||
* Author M M Arif
|
||||
*/
|
||||
|
||||
public class SearchIssuesFragment extends Fragment {
|
||||
|
||||
private Context ctx;
|
||||
private TinyDB tinyDb;
|
||||
private FragmentSearchIssuesBinding viewBinding;
|
||||
private SearchIssuesAdapter adapter;
|
||||
private List<Issues> dataList;
|
||||
|
||||
private String instanceUrl;
|
||||
private String loginUid;
|
||||
private String instanceToken;
|
||||
|
||||
private int apiCallCurrentValue = 10;
|
||||
private int pageCurrentIndex = 1;
|
||||
private String type = "issues";
|
||||
private String state = "open";
|
||||
|
||||
@Override
|
||||
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
|
||||
viewBinding = FragmentSearchIssuesBinding.inflate(inflater, container, false);
|
||||
setHasOptionsMenu(true);
|
||||
|
||||
ctx = getContext();
|
||||
tinyDb = new TinyDB(getContext());
|
||||
|
||||
instanceUrl = tinyDb.getString("instanceUrl");
|
||||
loginUid = tinyDb.getString("loginUid");
|
||||
instanceToken = "token " + tinyDb.getString(loginUid + "-token");
|
||||
|
||||
dataList = new ArrayList<>();
|
||||
adapter = new SearchIssuesAdapter(dataList, ctx);
|
||||
|
||||
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(ctx);
|
||||
|
||||
viewBinding.recyclerViewSearchIssues.setHasFixedSize(true);
|
||||
viewBinding.recyclerViewSearchIssues.setLayoutManager(linearLayoutManager);
|
||||
viewBinding.recyclerViewSearchIssues.setAdapter(adapter);
|
||||
|
||||
viewBinding.searchKeyword.setOnEditorActionListener((v1, actionId, event) -> {
|
||||
|
||||
if(actionId == EditorInfo.IME_ACTION_SEND) {
|
||||
|
||||
if(!Objects.requireNonNull(viewBinding.searchKeyword.getText()).toString().equals("")) {
|
||||
|
||||
InputMethodManager imm = (InputMethodManager) requireActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
|
||||
imm.hideSoftInputFromWindow(viewBinding.searchKeyword.getWindowToken(), 0);
|
||||
|
||||
pageCurrentIndex = 1;
|
||||
apiCallCurrentValue = 10;
|
||||
viewBinding.progressBar.setVisibility(View.VISIBLE);
|
||||
loadData(false, viewBinding.searchKeyword.getText().toString());
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
viewBinding.recyclerViewSearchIssues.addOnScrollListener(new InfiniteScrollListener(pageCurrentIndex, linearLayoutManager) {
|
||||
|
||||
@Override
|
||||
public void onScrolledToEnd(int firstVisibleItemPosition) {
|
||||
|
||||
pageCurrentIndex++;
|
||||
loadData(true, Objects.requireNonNull(viewBinding.searchKeyword.getText()).toString());
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
viewBinding.pullToRefresh.setOnRefreshListener(() -> {
|
||||
|
||||
pageCurrentIndex = 1;
|
||||
apiCallCurrentValue = 10;
|
||||
loadData(false, Objects.requireNonNull(viewBinding.searchKeyword.getText()).toString());
|
||||
|
||||
});
|
||||
|
||||
loadData(false, "");
|
||||
|
||||
return viewBinding.getRoot();
|
||||
}
|
||||
|
||||
private void loadData(boolean append, String searchKeyword) {
|
||||
|
||||
viewBinding.noData.setVisibility(View.GONE);
|
||||
|
||||
int apiCallDefaultLimit = 10;
|
||||
if(apiCallDefaultLimit > apiCallCurrentValue) {
|
||||
return;
|
||||
}
|
||||
|
||||
if(pageCurrentIndex == 1 || !append) {
|
||||
|
||||
dataList.clear();
|
||||
adapter.notifyDataSetChanged();
|
||||
viewBinding.pullToRefresh.setRefreshing(false);
|
||||
viewBinding.progressBar.setVisibility(View.VISIBLE);
|
||||
}
|
||||
else {
|
||||
|
||||
viewBinding.loadingMoreView.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
Call<List<Issues>> call = RetrofitClient.getInstance(instanceUrl, getContext()).getApiInterface().queryIssues(
|
||||
Authorization.returnAuthentication(getContext(), loginUid, instanceToken), searchKeyword, type, state, pageCurrentIndex);
|
||||
|
||||
call.enqueue(new Callback<List<Issues>>() {
|
||||
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<List<Issues>> call, @NonNull Response<List<Issues>> response) {
|
||||
|
||||
if(response.code() == 200) {
|
||||
|
||||
assert response.body() != null;
|
||||
apiCallCurrentValue = response.body().size();
|
||||
|
||||
if(!append) {
|
||||
|
||||
dataList.clear();
|
||||
}
|
||||
|
||||
dataList.addAll(response.body());
|
||||
adapter.notifyDataSetChanged();
|
||||
|
||||
}
|
||||
else {
|
||||
|
||||
dataList.clear();
|
||||
adapter.notifyDataChanged();
|
||||
viewBinding.noData.setVisibility(View.VISIBLE);
|
||||
|
||||
}
|
||||
|
||||
onCleanup();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(@NonNull Call<List<Issues>> call, @NonNull Throwable t) {
|
||||
|
||||
Log.e("onFailure", Objects.requireNonNull(t.getMessage()));
|
||||
onCleanup();
|
||||
|
||||
}
|
||||
|
||||
private void onCleanup() {
|
||||
|
||||
AppUtil.setMultiVisibility(View.GONE, viewBinding.loadingMoreView, viewBinding.progressBar);
|
||||
|
||||
if(dataList.isEmpty()) {
|
||||
|
||||
viewBinding.noData.setVisibility(View.VISIBLE);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
@ -1,6 +1,8 @@
|
||||
package org.mian.gitnex.fragments;
|
||||
|
||||
import android.content.ActivityNotFoundException;
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
@ -17,7 +19,6 @@ import org.mian.gitnex.activities.SettingsReportsActivity;
|
||||
import org.mian.gitnex.activities.SettingsSecurityActivity;
|
||||
import org.mian.gitnex.activities.SettingsTranslationActivity;
|
||||
import org.mian.gitnex.helpers.TinyDB;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* Author M M Arif
|
||||
@ -37,6 +38,8 @@ public class SettingsFragment extends Fragment {
|
||||
LinearLayout securityFrame = v.findViewById(R.id.securityFrame);
|
||||
LinearLayout languagesFrame = v.findViewById(R.id.languagesFrame);
|
||||
LinearLayout reportsFrame = v.findViewById(R.id.reportsFrame);
|
||||
LinearLayout rateAppFrame = v.findViewById(R.id.rateAppFrame);
|
||||
LinearLayout aboutAppFrame = v.findViewById(R.id.aboutAppFrame);
|
||||
|
||||
appearanceFrame.setOnClickListener(v1 -> startActivity(new Intent(getContext(), SettingsAppearanceActivity.class)));
|
||||
|
||||
@ -50,10 +53,24 @@ public class SettingsFragment extends Fragment {
|
||||
|
||||
reportsFrame.setOnClickListener(v1 -> startActivity(new Intent(getContext(), SettingsReportsActivity.class)));
|
||||
|
||||
rateAppFrame.setOnClickListener(aboutApp -> rateThisApp());
|
||||
|
||||
aboutAppFrame.setOnClickListener(aboutApp -> requireActivity().getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new AboutFragment()).commit());
|
||||
|
||||
return v;
|
||||
|
||||
}
|
||||
|
||||
public void rateThisApp() {
|
||||
|
||||
try {
|
||||
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + requireActivity().getPackageName())));
|
||||
}
|
||||
catch(ActivityNotFoundException e) {
|
||||
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + requireActivity().getPackageName())));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
|
||||
@ -62,8 +79,8 @@ public class SettingsFragment extends Fragment {
|
||||
TinyDB tinyDb = new TinyDB(getContext());
|
||||
|
||||
if(tinyDb.getBoolean("refreshParent")) {
|
||||
Objects.requireNonNull(getActivity()).recreate();
|
||||
getActivity().overridePendingTransition(0, 0);
|
||||
requireActivity().recreate();
|
||||
requireActivity().overridePendingTransition(0, 0);
|
||||
tinyDb.putBoolean("refreshParent", false);
|
||||
}
|
||||
|
||||
|
@ -76,6 +76,10 @@ public class AppUtil {
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean isPro(Context context) {
|
||||
return context.getPackageName().equals("org.mian.gitnex.pro");
|
||||
}
|
||||
|
||||
public int charactersLength(String str) {
|
||||
|
||||
return str.length();
|
||||
|
@ -3,7 +3,6 @@ package org.mian.gitnex.helpers;
|
||||
import android.content.Context;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
import org.mian.gitnex.R;
|
||||
@ -18,17 +17,16 @@ public class ClickListener implements View.OnClickListener {
|
||||
private Context mCtx;
|
||||
|
||||
public ClickListener(String infoText, Context mCtx) {
|
||||
|
||||
this.infoText = infoText;
|
||||
this.mCtx = mCtx;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClick(View v)
|
||||
{
|
||||
public void onClick(View v) {
|
||||
|
||||
LayoutInflater inflater1 = LayoutInflater.from(mCtx);
|
||||
View layout = inflater1.inflate(R.layout.custom_toast_success,
|
||||
(ViewGroup) v.findViewById(R.id.custom_toast_container));
|
||||
View layout = inflater1.inflate(R.layout.custom_toast_info, v.findViewById(R.id.custom_toast_container));
|
||||
|
||||
TextView text = layout.findViewById(R.id.toastText);
|
||||
text.setText(infoText);
|
||||
|
@ -7,6 +7,7 @@ import org.mian.gitnex.models.Collaborators;
|
||||
import org.mian.gitnex.models.Commits;
|
||||
import org.mian.gitnex.models.CreateIssue;
|
||||
import org.mian.gitnex.models.CreateLabel;
|
||||
import org.mian.gitnex.models.CreatePullRequest;
|
||||
import org.mian.gitnex.models.DeleteFile;
|
||||
import org.mian.gitnex.models.EditFile;
|
||||
import org.mian.gitnex.models.Emails;
|
||||
@ -19,6 +20,7 @@ import org.mian.gitnex.models.Labels;
|
||||
import org.mian.gitnex.models.MergePullRequest;
|
||||
import org.mian.gitnex.models.Milestones;
|
||||
import org.mian.gitnex.models.NewFile;
|
||||
import org.mian.gitnex.models.NotificationCount;
|
||||
import org.mian.gitnex.models.NotificationThread;
|
||||
import org.mian.gitnex.models.OrgOwner;
|
||||
import org.mian.gitnex.models.Organization;
|
||||
@ -93,7 +95,7 @@ public interface ApiInterface {
|
||||
Call<ResponseBody> markNotificationThreadsAsRead(@Header("Authorization") String token, @Query("last_read_at") String last_read_at, @Query("all") Boolean all, @Query("status-types") String[] statusTypes, @Query("to-status") String toStatus);
|
||||
|
||||
@GET("notifications/new") // Check if unread notifications exist
|
||||
Call<JsonElement> checkUnreadNotifications(@Header("Authorization") String token);
|
||||
Call<NotificationCount> checkUnreadNotifications(@Header("Authorization") String token);
|
||||
|
||||
@GET("notifications/threads/{id}") // Get notification thread by ID
|
||||
Call<NotificationThread> getNotificationThread(@Header("Authorization") String token, @Path("id") Integer id);
|
||||
@ -264,7 +266,10 @@ public interface ApiInterface {
|
||||
Call<List<UserInfo>> getRepoWatchers(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName);
|
||||
|
||||
@GET("repos/search") // get all the repos which match the query string
|
||||
Call<ExploreRepositories> queryRepos(@Header("Authorization") String token, @Query("q") String searchKeyword, @Query("private") Boolean repoTypeInclude, @Query("sort") String sort, @Query("order") String order, @Query("limit") int limit);
|
||||
Call<ExploreRepositories> queryRepos(@Header("Authorization") String token, @Query("q") String searchKeyword, @Query("private") Boolean repoTypeInclude, @Query("sort") String sort, @Query("order") String order, @Query("topic") boolean topic, @Query("includeDesc") boolean includeDesc, @Query("template") boolean template, @Query("archived") boolean archived, @Query("limit") int limit, @Query("page") int page);
|
||||
|
||||
@GET("repos/issues/search") // get all the issues which match the query string
|
||||
Call<List<Issues>> queryIssues(@Header("Authorization") String token, @Query("q") String searchKeyword, @Query("type") String type, @Query("state") String state, @Query("page") int page);
|
||||
|
||||
@POST("repos/{owner}/{repo}/contents/{file}") // create new file
|
||||
Call<JsonElement> createNewFile(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName, @Path("file") String fileName, @Body NewFile jsonStr);
|
||||
@ -320,6 +325,9 @@ public interface ApiInterface {
|
||||
@POST("repos/{owner}/{repo}/pulls/{index}/merge") // merge a pull request
|
||||
Call<ResponseBody> mergePullRequest(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName, @Path("index") int index, @Body MergePullRequest jsonStr);
|
||||
|
||||
@POST("repos/{owner}/{repo}/pulls") // create a pull request
|
||||
Call<ResponseBody> createPullRequest(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName, @Body CreatePullRequest jsonStr);
|
||||
|
||||
@GET("repos/{owner}/{repo}/commits") // get all commits
|
||||
Call<List<Commits>> getRepositoryCommits(@Header("Authorization") String token, @Path("owner") String owner, @Path("repo") String repo, @Query("page") int page, @Query("sha") String branchName, @Query("limit") int limit);
|
||||
|
||||
|
@ -0,0 +1,36 @@
|
||||
package org.mian.gitnex.models;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
/**
|
||||
* Author M M Arif
|
||||
*/
|
||||
|
||||
public class CreatePullRequest {
|
||||
|
||||
private String title;
|
||||
private String body;
|
||||
private String assignee;
|
||||
private String base;
|
||||
private String head;
|
||||
private int milestone;
|
||||
private String due_date;
|
||||
private String message;
|
||||
|
||||
private ArrayList<String> assignees;
|
||||
private ArrayList<Integer> labels;
|
||||
|
||||
public CreatePullRequest(String title, String body, String assignee, String base, String head, int milestone, String due_date, ArrayList<String> assignees, ArrayList<Integer> labels) {
|
||||
|
||||
this.title = title;
|
||||
this.body = body;
|
||||
this.assignee = assignee;
|
||||
this.base = base; // merge into branch
|
||||
this.head = head; // pull from branch
|
||||
this.milestone = milestone;
|
||||
this.due_date = due_date;
|
||||
this.assignees = assignees;
|
||||
this.labels = labels;
|
||||
}
|
||||
|
||||
}
|
@ -27,6 +27,7 @@ public class Issues {
|
||||
private pullRequestObject pull_request;
|
||||
private milestoneObject milestone;
|
||||
private List<assigneesObject> assignees;
|
||||
private repositoryObject repository;
|
||||
|
||||
public Issues(String body) {
|
||||
this.body = body;
|
||||
@ -193,6 +194,35 @@ public class Issues {
|
||||
}
|
||||
}
|
||||
|
||||
public static class repositoryObject {
|
||||
|
||||
private int id;
|
||||
private String full_name;
|
||||
private String name;
|
||||
private String owner;
|
||||
|
||||
public int getId() {
|
||||
|
||||
return id;
|
||||
}
|
||||
|
||||
public String getFull_name() {
|
||||
|
||||
return full_name;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
|
||||
return name;
|
||||
}
|
||||
|
||||
public String getOwner() {
|
||||
|
||||
return owner;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
@ -267,4 +297,9 @@ public class Issues {
|
||||
this.html_url = html_url;
|
||||
}
|
||||
|
||||
public repositoryObject getRepository() {
|
||||
|
||||
return repository;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -21,6 +21,11 @@ public class Labels {
|
||||
this.labels = labels;
|
||||
}
|
||||
|
||||
public Labels(int id, String name) {
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
@ -0,0 +1,19 @@
|
||||
package org.mian.gitnex.models;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
/**
|
||||
* Author M M Arif
|
||||
*/
|
||||
|
||||
public class NotificationCount {
|
||||
|
||||
@SerializedName("new")
|
||||
private int counter;
|
||||
|
||||
public int getCounter() {
|
||||
|
||||
return counter;
|
||||
}
|
||||
|
||||
}
|
@ -1,46 +1,78 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="108dp"
|
||||
android:height="108dp"
|
||||
android:viewportWidth="135.47"
|
||||
android:viewportHeight="135.47">
|
||||
<path
|
||||
android:pathData="M68.02,66.305m-94.784,-6.397a94.999,94.999 48.861,1 1,189.567 12.793a94.999,94.999 48.861,1 1,-189.567 -12.793"
|
||||
android:strokeWidth="1.40255427"
|
||||
android:fillColor="#39404a"/>
|
||||
<path
|
||||
android:pathData="M31.738,45.193a9.139,9.151 63.873,1 0,12.769 -13.108a9.139,9.151 63.873,1 0,-12.769 13.108z"
|
||||
android:strokeWidth="0.99999666"
|
||||
android:fillColor="#609926"/>
|
||||
<path
|
||||
android:pathData="M31.875,115.115a9.139,9.151 63.873,1 0,12.769 -13.108a9.139,9.151 63.873,1 0,-12.769 13.108z"
|
||||
android:strokeWidth="0.99999666"
|
||||
android:fillColor="#609926"/>
|
||||
<path
|
||||
android:pathData="M61.361,80.42a9.139,9.151 63.873,1 0,12.769 -13.108a9.139,9.151 63.873,1 0,-12.769 13.108z"
|
||||
android:strokeWidth="0.99999666"
|
||||
android:fillColor="#609926"/>
|
||||
<path
|
||||
android:pathData="M34.37,18.911l7.038,0.003l-0.096,85.655l-7.038,-0.003z"
|
||||
android:fillColor="#609926"/>
|
||||
<path
|
||||
android:pathData="m37.878,38.707c31.743,0.128 29.614,-4.427 29.723,36.496"
|
||||
android:strokeWidth="8.72550011"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#609926"/>
|
||||
<path
|
||||
android:pathData="m97.323,109.027c-31.743,-0.128 -29.614,4.427 -29.723,-36.496"
|
||||
android:strokeWidth="8.72550011"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#609926"/>
|
||||
<path
|
||||
android:pathData="M90.959,45.193a9.139,9.151 63.873,1 0,12.769 -13.108a9.139,9.151 63.873,1 0,-12.769 13.108z"
|
||||
android:strokeWidth="0.99999666"
|
||||
android:fillColor="#609926"/>
|
||||
<path
|
||||
android:pathData="M90.955,115.117a9.139,9.151 63.873,1 0,12.769 -13.108a9.139,9.151 63.873,1 0,-12.769 13.108z"
|
||||
android:strokeWidth="0.99999666"
|
||||
android:fillColor="#609926"/>
|
||||
<path
|
||||
android:pathData="M93.872,35.636l7.038,0.002l-0.096,68.927l-7.038,-0.002z"
|
||||
android:fillColor="#609926"/>
|
||||
android:viewportWidth="108"
|
||||
android:viewportHeight="108">
|
||||
<group android:scaleX="0"
|
||||
android:scaleY="0"
|
||||
android:translateX="54"
|
||||
android:translateY="54">
|
||||
<path android:fillColor="#3DDC84"
|
||||
android:pathData="M0,0h108v108h-108z"/>
|
||||
<path android:fillColor="#00000000" android:pathData="M9,0L9,108"
|
||||
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
|
||||
<path android:fillColor="#00000000" android:pathData="M19,0L19,108"
|
||||
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
|
||||
<path android:fillColor="#00000000" android:pathData="M29,0L29,108"
|
||||
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
|
||||
<path android:fillColor="#00000000" android:pathData="M39,0L39,108"
|
||||
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
|
||||
<path android:fillColor="#00000000" android:pathData="M49,0L49,108"
|
||||
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
|
||||
<path android:fillColor="#00000000" android:pathData="M59,0L59,108"
|
||||
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
|
||||
<path android:fillColor="#00000000" android:pathData="M69,0L69,108"
|
||||
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
|
||||
<path android:fillColor="#00000000" android:pathData="M79,0L79,108"
|
||||
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
|
||||
<path android:fillColor="#00000000" android:pathData="M89,0L89,108"
|
||||
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
|
||||
<path android:fillColor="#00000000" android:pathData="M99,0L99,108"
|
||||
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
|
||||
<path android:fillColor="#00000000" android:pathData="M0,9L108,9"
|
||||
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
|
||||
<path android:fillColor="#00000000" android:pathData="M0,19L108,19"
|
||||
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
|
||||
<path android:fillColor="#00000000" android:pathData="M0,29L108,29"
|
||||
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
|
||||
<path android:fillColor="#00000000" android:pathData="M0,39L108,39"
|
||||
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
|
||||
<path android:fillColor="#00000000" android:pathData="M0,49L108,49"
|
||||
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
|
||||
<path android:fillColor="#00000000" android:pathData="M0,59L108,59"
|
||||
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
|
||||
<path android:fillColor="#00000000" android:pathData="M0,69L108,69"
|
||||
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
|
||||
<path android:fillColor="#00000000" android:pathData="M0,79L108,79"
|
||||
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
|
||||
<path android:fillColor="#00000000" android:pathData="M0,89L108,89"
|
||||
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
|
||||
<path android:fillColor="#00000000" android:pathData="M0,99L108,99"
|
||||
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
|
||||
<path android:fillColor="#00000000" android:pathData="M19,29L89,29"
|
||||
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
|
||||
<path android:fillColor="#00000000" android:pathData="M19,39L89,39"
|
||||
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
|
||||
<path android:fillColor="#00000000" android:pathData="M19,49L89,49"
|
||||
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
|
||||
<path android:fillColor="#00000000" android:pathData="M19,59L89,59"
|
||||
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
|
||||
<path android:fillColor="#00000000" android:pathData="M19,69L89,69"
|
||||
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
|
||||
<path android:fillColor="#00000000" android:pathData="M19,79L89,79"
|
||||
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
|
||||
<path android:fillColor="#00000000" android:pathData="M29,19L29,89"
|
||||
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
|
||||
<path android:fillColor="#00000000" android:pathData="M39,19L39,89"
|
||||
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
|
||||
<path android:fillColor="#00000000" android:pathData="M49,19L49,89"
|
||||
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
|
||||
<path android:fillColor="#00000000" android:pathData="M59,19L59,89"
|
||||
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
|
||||
<path android:fillColor="#00000000" android:pathData="M69,19L69,89"
|
||||
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
|
||||
<path android:fillColor="#00000000" android:pathData="M79,19L79,89"
|
||||
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
|
||||
</group>
|
||||
</vector>
|
||||
|
246
app/src/main/res/layout/activity_create_pr.xml
Normal file
@ -0,0 +1,246 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:orientation="vertical"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:background="?attr/primaryBackgroundColor">
|
||||
|
||||
<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">
|
||||
|
||||
<com.google.android.material.appbar.MaterialToolbar
|
||||
android:id="@+id/toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?attr/primaryBackgroundColor">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/close"
|
||||
android:layout_width="@dimen/close_button_size"
|
||||
android:layout_height="@dimen/close_button_size"
|
||||
android:layout_marginRight="15dp"
|
||||
android:layout_marginLeft="15dp"
|
||||
android:gravity="center_vertical"
|
||||
android:contentDescription="@string/close"
|
||||
android:src="@drawable/ic_arrow_back" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/toolbarTitle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:text="@string/pageTitleNewPullRequest"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:maxLines="1"
|
||||
android:textSize="20sp" />
|
||||
|
||||
</com.google.android.material.appbar.MaterialToolbar>
|
||||
|
||||
</com.google.android.material.appbar.AppBarLayout>
|
||||
|
||||
<ScrollView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="?attr/primaryBackgroundColor">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="16dp"
|
||||
android:orientation="vertical">
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:id="@+id/prTitleLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:boxBackgroundColor="?attr/inputBackgroundColor"
|
||||
android:textColorHint="?attr/hintColor"
|
||||
app:hintTextColor="?attr/hintColor"
|
||||
app:boxStrokeErrorColor="@color/darkRed"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginBottom="8dp"
|
||||
app:endIconMode="clear_text"
|
||||
app:endIconTint="?attr/iconsColor"
|
||||
app:counterEnabled="true"
|
||||
app:counterMaxLength="255"
|
||||
app:counterTextColor="?attr/inputTextColor"
|
||||
android:hint="@string/newIssueTitle">
|
||||
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:id="@+id/prTitle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="?attr/inputTextColor"
|
||||
android:textColorHighlight="?attr/hintColor"
|
||||
android:textColorHint="?attr/hintColor"
|
||||
android:textSize="16sp" />
|
||||
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:id="@+id/prBodyLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:boxBackgroundColor="?attr/inputBackgroundColor"
|
||||
android:textColorHint="?attr/hintColor"
|
||||
app:hintTextColor="?attr/hintColor"
|
||||
app:boxStrokeErrorColor="@color/darkRed"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginBottom="8dp"
|
||||
app:endIconMode="clear_text"
|
||||
app:endIconTint="?attr/iconsColor"
|
||||
android:hint="@string/newIssueDescriptionTitle">
|
||||
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:id="@+id/prBody"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="140dp"
|
||||
android:textColor="?attr/inputTextColor"
|
||||
android:textColorHighlight="?attr/hintColor"
|
||||
android:textColorHint="?attr/hintColor"
|
||||
android:textSize="16sp" />
|
||||
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:id="@+id/mergeIntoBranchSpinnerLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:boxBackgroundColor="?attr/inputBackgroundColor"
|
||||
android:textColorHint="?attr/hintColor"
|
||||
app:hintTextColor="?attr/hintColor"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:hint="@string/mergeIntoBranch"
|
||||
app:endIconTint="?attr/iconsColor"
|
||||
style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox.ExposedDropdownMenu">
|
||||
|
||||
<AutoCompleteTextView
|
||||
android:id="@+id/mergeIntoBranchSpinner"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:inputType="none"
|
||||
android:textColor="?attr/inputTextColor"
|
||||
android:labelFor="@+id/mergeIntoBranchSpinner"
|
||||
android:textSize="16sp" />
|
||||
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:id="@+id/pullFromBranchSpinnerLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:boxBackgroundColor="?attr/inputBackgroundColor"
|
||||
android:textColorHint="?attr/hintColor"
|
||||
app:hintTextColor="?attr/hintColor"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:hint="@string/pullFromBranch"
|
||||
app:endIconTint="?attr/iconsColor"
|
||||
style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox.ExposedDropdownMenu">
|
||||
|
||||
<AutoCompleteTextView
|
||||
android:id="@+id/pullFromBranchSpinner"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:inputType="none"
|
||||
android:textColor="?attr/inputTextColor"
|
||||
android:labelFor="@+id/pullFromBranchSpinner"
|
||||
android:textSize="16sp" />
|
||||
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:id="@+id/milestonesSpinnerLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:boxBackgroundColor="?attr/inputBackgroundColor"
|
||||
android:textColorHint="?attr/hintColor"
|
||||
app:hintTextColor="?attr/hintColor"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:hint="@string/newIssueMilestoneTitle"
|
||||
app:endIconTint="?attr/iconsColor"
|
||||
android:visibility="gone"
|
||||
style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox.ExposedDropdownMenu">
|
||||
|
||||
<AutoCompleteTextView
|
||||
android:id="@+id/milestonesSpinner"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:inputType="none"
|
||||
android:textColor="?attr/inputTextColor"
|
||||
android:labelFor="@+id/milestonesSpinner"
|
||||
android:textSize="16sp" />
|
||||
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:id="@+id/prLabelsLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:boxBackgroundColor="?attr/inputBackgroundColor"
|
||||
android:textColorHint="?attr/hintColor"
|
||||
app:hintTextColor="?attr/hintColor"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:hint="@string/newIssueLabelsTitle">
|
||||
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:id="@+id/prLabels"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="?attr/inputTextColor"
|
||||
android:textColorHighlight="?attr/hintColor"
|
||||
android:textColorHint="?attr/hintColor"
|
||||
android:focusable="false"
|
||||
android:textSize="16sp" />
|
||||
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:id="@+id/prDueDateLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:boxBackgroundColor="?attr/inputBackgroundColor"
|
||||
android:textColorHint="?attr/hintColor"
|
||||
app:hintTextColor="?attr/hintColor"
|
||||
app:boxStrokeErrorColor="@color/darkRed"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginBottom="8dp"
|
||||
app:endIconMode="clear_text"
|
||||
app:endIconTint="?attr/iconsColor"
|
||||
android:hint="@string/newIssueDueDateTitle">
|
||||
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:id="@+id/prDueDate"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="?attr/inputTextColor"
|
||||
android:textColorHighlight="?attr/hintColor"
|
||||
android:textColorHint="?attr/hintColor"
|
||||
android:maxLines="1"
|
||||
android:focusable="false"
|
||||
android:textSize="16sp" />
|
||||
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
<Button
|
||||
android:id="@+id/createPr"
|
||||
android:gravity="center"
|
||||
android:layout_gravity="end"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="60dp"
|
||||
android:text="@string/newCreateButtonCopy"
|
||||
android:textColor="@color/btnTextColor" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</ScrollView>
|
||||
|
||||
</LinearLayout>
|
@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
<LinearLayout android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:orientation="vertical"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:background="?attr/primaryBackgroundColor">
|
||||
@ -50,27 +50,30 @@
|
||||
android:padding="16dp"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:id="@+id/userEmailLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/profileEmailTitle"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="16sp" />
|
||||
|
||||
<EditText
|
||||
android:id="@+id/userEmail"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="10dp"
|
||||
android:padding="10dp"
|
||||
android:textSize="14sp"
|
||||
tools:ignore="Autofill"
|
||||
android:inputType="textEmailAddress"
|
||||
android:labelFor="@+id/userEmail"
|
||||
android:background="@drawable/shape_inputs"
|
||||
android:textColor="?attr/inputTextColor"
|
||||
app:boxBackgroundColor="?attr/inputBackgroundColor"
|
||||
android:textColorHint="?attr/hintColor"
|
||||
android:textColorHighlight="?attr/primaryTextColor"/>
|
||||
app:hintTextColor="?attr/hintColor"
|
||||
app:boxStrokeErrorColor="@color/darkRed"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginBottom="8dp"
|
||||
app:endIconMode="clear_text"
|
||||
app:endIconTint="?attr/iconsColor"
|
||||
android:hint="@string/profileEmailTitle">
|
||||
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:id="@+id/userEmail"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="?attr/inputTextColor"
|
||||
android:textColorHighlight="?attr/hintColor"
|
||||
android:textColorHint="?attr/hintColor"
|
||||
android:textSize="16sp" />
|
||||
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
<Button
|
||||
android:id="@+id/addEmailButton"
|
||||
|
21
app/src/main/res/layout/badge_notification.xml
Normal file
@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="center_vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/counterBadgeNotification"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:singleLine="true"
|
||||
android:maxLength="4"
|
||||
android:ellipsize="marquee"
|
||||
android:background="@drawable/shape_badge_background"
|
||||
android:paddingStart="5dp"
|
||||
android:paddingEnd="5dp"
|
||||
android:textColor="@color/colorWhite"
|
||||
android:textSize="12sp" />
|
||||
|
||||
</LinearLayout>
|
@ -41,6 +41,18 @@
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="16sp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/createPullRequest"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:drawableStart="@drawable/ic_pull_request"
|
||||
android:drawablePadding="24dp"
|
||||
android:padding="12dp"
|
||||
android:text="@string/pageTitleNewPullRequest"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="16sp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/createNewMilestone"
|
||||
android:layout_width="match_parent"
|
||||
|
116
app/src/main/res/layout/custom_explore_repositories_dialog.xml
Normal file
@ -0,0 +1,116 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@drawable/shape_custom_dialog"
|
||||
android:orientation="vertical">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/dialogFrame"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="16dp"
|
||||
android:id="@+id/titleFrame"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="20sp"
|
||||
android:textStyle="bold"
|
||||
android:drawableStart="@drawable/ic_filter"
|
||||
android:drawablePadding="16dp"
|
||||
android:text="@string/exploreFilterDialogTitle"
|
||||
android:layout_marginBottom="4dp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:id="@+id/dividerTitle"
|
||||
android:background="?attr/dividerColor" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_weight="100"
|
||||
android:layout_margin="12dp"
|
||||
android:orientation="vertical">
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/includeTopic"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:checked="false"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:text="@string/exploreFilterIncludeTopic"
|
||||
android:textSize="16sp" />
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/includeDesc"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:checked="false"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:text="@string/exploreFilterIncludeDesc"
|
||||
android:textSize="16sp" />
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/includeTemplate"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:checked="false"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:text="@string/exploreFilterIncludeTemplateRepos"
|
||||
android:textSize="16sp" />
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/onlyArchived"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:checked="false"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:text="@string/exploreFilterIncludeArchive"
|
||||
android:textSize="16sp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:id="@+id/divider"
|
||||
android:background="?attr/dividerColor" />
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingStart="16dp"
|
||||
android:paddingEnd="16dp"
|
||||
android:paddingTop="8dp"
|
||||
android:paddingBottom="8dp"
|
||||
android:orientation="horizontal" >
|
||||
|
||||
<Button
|
||||
android:id="@+id/cancel"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="60dp"
|
||||
style="?android:attr/button"
|
||||
android:layout_alignParentStart="true"
|
||||
android:text="@string/close"
|
||||
android:textColor="@color/colorWhite"
|
||||
android:textSize="16sp" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
19
app/src/main/res/layout/custom_labels_list.xml
Normal file
@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/layoutFrame"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical">
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/labelSelection"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:checked="false"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="16sp" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
101
app/src/main/res/layout/custom_labels_selection_dialog.xml
Normal file
@ -0,0 +1,101 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:background="@drawable/shape_custom_dialog"
|
||||
android:orientation="vertical">
|
||||
|
||||
<com.google.android.material.progressindicator.ProgressIndicator
|
||||
android:id="@+id/progressBar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
style="@style/Widget.MaterialComponents.ProgressIndicator.Linear.Indeterminate"
|
||||
app:indicatorColor="?attr/progressIndicatorColor" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/dialogFrame"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone"
|
||||
android:orientation="vertical">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="16dp"
|
||||
android:id="@+id/TitleFrame"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="20sp"
|
||||
android:textStyle="bold"
|
||||
android:drawableStart="@drawable/ic_label"
|
||||
android:drawablePadding="16dp"
|
||||
android:text="@string/newIssueSelectLabelsListTitle" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:id="@+id/dividerTitle"
|
||||
android:background="?attr/dividerColor" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_weight="100"
|
||||
android:layout_margin="12dp"
|
||||
android:orientation="vertical">
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/labelsRecyclerView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:id="@+id/divider"
|
||||
android:background="?attr/dividerColor" />
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingStart="16dp"
|
||||
android:paddingEnd="16dp"
|
||||
android:paddingTop="8dp"
|
||||
android:paddingBottom="8dp"
|
||||
android:orientation="vertical" >
|
||||
|
||||
<Button
|
||||
android:id="@+id/cancel"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="60dp"
|
||||
style="?android:attr/button"
|
||||
android:layout_alignParentStart="true"
|
||||
android:text="@string/close"
|
||||
android:textColor="@color/colorWhite"
|
||||
android:textSize="16sp" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
@ -43,6 +43,7 @@
|
||||
app:hintTextColor="?attr/hintColor"
|
||||
app:boxStrokeErrorColor="@color/darkRed"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:hint="@string/newRepoTintCopy">
|
||||
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
@ -77,14 +78,14 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingStart="16dp"
|
||||
android:paddingEnd="16dp"
|
||||
android:paddingTop="4dp"
|
||||
android:paddingBottom="4dp"
|
||||
android:paddingTop="8dp"
|
||||
android:paddingBottom="8dp"
|
||||
android:orientation="horizontal" >
|
||||
|
||||
<Button
|
||||
android:id="@+id/cancel"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_height="60dp"
|
||||
style="?android:attr/button"
|
||||
android:layout_alignParentStart="true"
|
||||
android:text="@string/cancelButton"
|
||||
@ -94,7 +95,7 @@
|
||||
<Button
|
||||
android:id="@+id/delete"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_height="60dp"
|
||||
style="?android:attr/button"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:text="@string/menuDeleteText"
|
||||
|
@ -62,6 +62,7 @@
|
||||
app:hintTextColor="?attr/hintColor"
|
||||
app:boxStrokeErrorColor="@color/darkRed"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:hint="@string/websiteText">
|
||||
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
@ -83,6 +84,8 @@
|
||||
android:textColorHint="?attr/hintColor"
|
||||
app:hintTextColor="?attr/hintColor"
|
||||
app:boxStrokeErrorColor="@color/darkRed"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:hint="@string/newRepoDescTintCopy">
|
||||
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
@ -197,14 +200,14 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingStart="16dp"
|
||||
android:paddingEnd="16dp"
|
||||
android:paddingTop="4dp"
|
||||
android:paddingBottom="4dp"
|
||||
android:paddingTop="8dp"
|
||||
android:paddingBottom="8dp"
|
||||
android:orientation="horizontal" >
|
||||
|
||||
<Button
|
||||
android:id="@+id/cancel"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_height="60dp"
|
||||
style="?android:attr/button"
|
||||
android:layout_alignParentStart="true"
|
||||
android:text="@string/cancelButton"
|
||||
@ -214,7 +217,7 @@
|
||||
<Button
|
||||
android:id="@+id/save"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_height="60dp"
|
||||
style="?android:attr/button"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:text="@string/saveButton"
|
||||
|
@ -44,6 +44,7 @@
|
||||
app:hintTextColor="?attr/hintColor"
|
||||
app:boxStrokeErrorColor="@color/darkRed"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:hint="@string/newRepoTintCopy">
|
||||
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
@ -66,6 +67,7 @@
|
||||
app:hintTextColor="?attr/hintColor"
|
||||
app:boxStrokeErrorColor="@color/darkRed"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:hint="@string/repoTransferOwnerText">
|
||||
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
@ -100,14 +102,14 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingStart="16dp"
|
||||
android:paddingEnd="16dp"
|
||||
android:paddingTop="4dp"
|
||||
android:paddingBottom="4dp"
|
||||
android:paddingTop="8dp"
|
||||
android:paddingBottom="8dp"
|
||||
android:orientation="horizontal" >
|
||||
|
||||
<Button
|
||||
android:id="@+id/cancel"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_height="60dp"
|
||||
style="?android:attr/button"
|
||||
android:layout_alignParentStart="true"
|
||||
android:text="@string/cancelButton"
|
||||
@ -117,7 +119,7 @@
|
||||
<Button
|
||||
android:id="@+id/transfer"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_height="60dp"
|
||||
style="?android:attr/button"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:text="@string/repoTransferText"
|
||||
|
@ -28,7 +28,7 @@
|
||||
<Button
|
||||
android:id="@+id/manageAccounts"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_height="60dp"
|
||||
android:layout_margin="16dp"
|
||||
android:paddingStart="4dp"
|
||||
android:paddingEnd="4dp"
|
||||
|
@ -3,7 +3,8 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" >
|
||||
|
||||
<ScrollView android:layout_width="match_parent"
|
||||
<androidx.core.widget.NestedScrollView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="?attr/primaryBackgroundColor">
|
||||
|
||||
@ -23,7 +24,7 @@
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:layout_marginTop="20dp"
|
||||
android:baselineAligned="false"
|
||||
android:contentDescription="@string/logo"
|
||||
android:contentDescription="@string/app_name"
|
||||
android:src="@mipmap/app_logo" />
|
||||
|
||||
<TextView
|
||||
@ -34,134 +35,200 @@
|
||||
android:textIsSelectable="true"
|
||||
android:layout_marginTop="5dp"
|
||||
android:textSize="24sp"
|
||||
android:textStyle="bold"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:layout_gravity="center_horizontal"/>
|
||||
android:layout_gravity="center_horizontal" />
|
||||
|
||||
<!-- version -->
|
||||
<TextView
|
||||
android:id="@+id/appVerBuild"
|
||||
android:text="@string/appVerBuild"
|
||||
android:layout_width="wrap_content"
|
||||
android:id="@+id/appVersionHeader"
|
||||
android:text="@string/appVersion"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:textIsSelectable="true"
|
||||
android:layout_marginTop="40dp"
|
||||
android:textSize="16sp"
|
||||
android:textStyle="bold"
|
||||
android:textColor="?attr/primaryTextColor" />
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:id="@+id/dividerVersion"
|
||||
android:background="?attr/dividerColor"
|
||||
android:layout_marginTop="5dp"
|
||||
android:textSize="16sp"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:layout_gravity="center_horizontal"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/appDesc"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/appDesc"
|
||||
android:textIsSelectable="true"
|
||||
android:layout_marginTop="25dp"
|
||||
android:textSize="16sp"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:padding="5dp"
|
||||
android:background="?attr/primaryBackgroundColor"
|
||||
android:layout_gravity="center_horizontal"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/giteaVersion"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/commitPage"
|
||||
android:layout_marginTop="15dp"
|
||||
android:textSize="16sp"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:padding="5dp"
|
||||
android:background="?attr/primaryBackgroundColor"
|
||||
android:autoLink="web" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="15dp"
|
||||
android:orientation="vertical"
|
||||
android:padding="5dp"
|
||||
android:background="?attr/primaryBackgroundColor">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/donationLink"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/supportText"
|
||||
android:textColor="@color/lightBlue"
|
||||
android:textSize="16sp"
|
||||
android:gravity="start"
|
||||
android:autoLink="web"
|
||||
android:visibility="visible"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:textColorLink="@color/lightBlue" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/donationLinkPatreon"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/supportTextPatreon"
|
||||
android:textColor="@color/lightBlue"
|
||||
android:textSize="16sp"
|
||||
android:gravity="start"
|
||||
android:autoLink="web"
|
||||
android:visibility="visible"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:textColorLink="@color/lightBlue" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/translateLink"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:autoLink="web"
|
||||
android:gravity="start"
|
||||
android:text="@string/translateText"
|
||||
android:textColor="@color/lightBlue"
|
||||
android:textColorLink="@color/lightBlue"
|
||||
android:textSize="16sp"
|
||||
android:visibility="visible" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="15dp"
|
||||
android:orientation="vertical"
|
||||
android:padding="5dp"
|
||||
android:background="?attr/primaryBackgroundColor">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/appWebsite"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/appWebsite"
|
||||
android:textColor="@color/lightBlue"
|
||||
android:textSize="16sp"
|
||||
android:gravity="start"
|
||||
android:autoLink="web"
|
||||
android:visibility="visible"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:textColorLink="@color/lightBlue" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/appRepo"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/appRepo"
|
||||
android:textColor="@color/lightBlue"
|
||||
android:textSize="16sp"
|
||||
android:gravity="start"
|
||||
android:autoLink="web"
|
||||
android:visibility="visible"
|
||||
android:textColorLink="@color/lightBlue" />
|
||||
|
||||
</LinearLayout>
|
||||
android:layout_marginBottom="5dp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/appVersion"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="25dp" />
|
||||
android:layout_height="wrap_content"
|
||||
android:textIsSelectable="true"
|
||||
android:textSize="14sp"
|
||||
android:textColor="?attr/primaryTextColor" />
|
||||
<!-- version -->
|
||||
|
||||
<!-- build -->
|
||||
<TextView
|
||||
android:id="@+id/appBuildHeader"
|
||||
android:text="@string/appBuild"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="24dp"
|
||||
android:textSize="16sp"
|
||||
android:textStyle="bold"
|
||||
android:textColor="?attr/primaryTextColor" />
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:id="@+id/dividerBuild"
|
||||
android:background="?attr/dividerColor"
|
||||
android:layout_marginTop="5dp"
|
||||
android:layout_marginBottom="5dp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/appBuild"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textIsSelectable="true"
|
||||
android:textSize="14sp"
|
||||
android:textColor="?attr/primaryTextColor" />
|
||||
<!-- build -->
|
||||
|
||||
<!-- user server version -->
|
||||
<TextView
|
||||
android:id="@+id/userServerVersionHeader"
|
||||
android:text="@string/commitPage"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="24dp"
|
||||
android:textSize="16sp"
|
||||
android:textStyle="bold"
|
||||
android:textColor="?attr/primaryTextColor" />
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:id="@+id/dividerUserServerVersion"
|
||||
android:background="?attr/dividerColor"
|
||||
android:layout_marginTop="5dp"
|
||||
android:layout_marginBottom="5dp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/userServerVersion"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textIsSelectable="true"
|
||||
android:textSize="14sp"
|
||||
android:textColor="?attr/primaryTextColor" />
|
||||
<!-- user server version -->
|
||||
|
||||
<!-- support -->
|
||||
<TextView
|
||||
android:id="@+id/supportHeader"
|
||||
android:text="@string/supportText"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="24dp"
|
||||
android:textSize="16sp"
|
||||
android:textStyle="bold"
|
||||
android:textColor="?attr/primaryTextColor" />
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:id="@+id/dividerSupport"
|
||||
android:background="?attr/dividerColor"
|
||||
android:layout_marginTop="5dp"
|
||||
android:layout_marginBottom="5dp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/donationLinkLiberapay"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/supportTextLiberapay"
|
||||
android:textColor="@color/lightBlue"
|
||||
android:textSize="14sp"
|
||||
android:autoLink="web"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:textColorLink="@color/lightBlue" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/donationLinkPatreon"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/supportTextPatreon"
|
||||
android:textColor="@color/lightBlue"
|
||||
android:textSize="14sp"
|
||||
android:autoLink="web"
|
||||
android:textColorLink="@color/lightBlue" />
|
||||
<!-- support -->
|
||||
|
||||
<!-- translate -->
|
||||
<TextView
|
||||
android:id="@+id/translateHeader"
|
||||
android:text="@string/translateText"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="24dp"
|
||||
android:textSize="16sp"
|
||||
android:textStyle="bold"
|
||||
android:textColor="?attr/primaryTextColor" />
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:id="@+id/dividerTranslate"
|
||||
android:background="?attr/dividerColor"
|
||||
android:layout_marginTop="5dp"
|
||||
android:layout_marginBottom="5dp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/translateLink"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:autoLink="web"
|
||||
android:gravity="start"
|
||||
android:text="@string/translateWithCrowdin"
|
||||
android:textColor="@color/lightBlue"
|
||||
android:textColorLink="@color/lightBlue"
|
||||
android:textSize="14sp"
|
||||
android:visibility="visible" />
|
||||
<!-- translate -->
|
||||
|
||||
<!-- website -->
|
||||
<TextView
|
||||
android:id="@+id/websiteHeader"
|
||||
android:text="@string/websiteText"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="24dp"
|
||||
android:textSize="16sp"
|
||||
android:textStyle="bold"
|
||||
android:textColor="?attr/primaryTextColor" />
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:id="@+id/dividerWebsite"
|
||||
android:background="?attr/dividerColor"
|
||||
android:layout_marginTop="5dp"
|
||||
android:layout_marginBottom="5dp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/appWebsite"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/appWebsiteLink"
|
||||
android:textColor="@color/lightBlue"
|
||||
android:textSize="14sp"
|
||||
android:autoLink="web"
|
||||
android:layout_marginBottom="24dp"
|
||||
android:textColorLink="@color/lightBlue" />
|
||||
<!-- website -->
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</ScrollView>
|
||||
</androidx.core.widget.NestedScrollView>
|
||||
|
||||
</RelativeLayout>
|
||||
|
48
app/src/main/res/layout/fragment_explore.xml
Normal file
@ -0,0 +1,48 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.coordinatorlayout.widget.CoordinatorLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:id="@+id/exploreFragment"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="?attr/primaryBackgroundColor">
|
||||
|
||||
<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">
|
||||
|
||||
<com.google.android.material.tabs.TabLayout
|
||||
android:id="@+id/tabsExplore"
|
||||
app:tabMode="fixed"
|
||||
app:tabTextAppearance="@style/customTabLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:background="?attr/primaryBackgroundColor"
|
||||
app:tabTextColor="?attr/primaryTextColor"
|
||||
app:tabIndicatorColor="?attr/pagerTabIndicatorColor"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<com.google.android.material.tabs.TabItem
|
||||
android:id="@+id/tabExploreRepositories"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/pageTitleRepositories" />
|
||||
|
||||
<com.google.android.material.tabs.TabItem
|
||||
android:id="@+id/tabExploreIssues"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/pageTitleIssues" />
|
||||
|
||||
</com.google.android.material.tabs.TabLayout>
|
||||
|
||||
</com.google.android.material.appbar.AppBarLayout>
|
||||
|
||||
<androidx.viewpager.widget.ViewPager
|
||||
android:id="@+id/containerExplore"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
|
||||
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
@ -7,30 +7,58 @@
|
||||
android:orientation="vertical">
|
||||
|
||||
<com.google.android.material.progressindicator.ProgressIndicator
|
||||
android:id="@+id/progress_bar"
|
||||
android:id="@+id/loadingMoreView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone"
|
||||
style="@style/Widget.MaterialComponents.ProgressIndicator.Linear.Indeterminate"
|
||||
app:indicatorColor="?attr/progressIndicatorColor" />
|
||||
|
||||
<com.google.android.material.progressindicator.ProgressIndicator
|
||||
android:id="@+id/progressBar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
style="@style/Widget.MaterialComponents.ProgressIndicator.Linear.Indeterminate"
|
||||
app:indicatorColor="?attr/progressIndicatorColor" />
|
||||
|
||||
<EditText
|
||||
android:id="@+id/searchKeyword"
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="10dp"
|
||||
android:textSize="14sp"
|
||||
android:layout_marginStart="10dp"
|
||||
android:layout_marginEnd="10dp"
|
||||
android:layout_marginTop="20dp"
|
||||
android:layout_marginBottom="20dp"
|
||||
android:inputType="text"
|
||||
android:background="@drawable/shape_inputs"
|
||||
android:textColor="?attr/inputTextColor"
|
||||
android:textColorHint="?attr/hintColor"
|
||||
android:hint="@string/exploreTextBoxHint"
|
||||
android:textColorHighlight="?attr/primaryTextColor"
|
||||
android:imeOptions="actionSend"
|
||||
android:autofillHints="@string/exploreTextBoxHint" />
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginBottom="10dp">
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:id="@+id/searchKeywordLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:boxBackgroundColor="?attr/inputBackgroundColor"
|
||||
android:textColorHint="?attr/hintColor"
|
||||
app:hintTextColor="?attr/hintColor"
|
||||
app:boxStrokeErrorColor="@color/darkRed"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginBottom="8dp"
|
||||
app:startIconDrawable="@drawable/ic_search"
|
||||
app:startIconTint="?attr/iconsColor"
|
||||
app:endIconMode="clear_text"
|
||||
app:endIconTint="?attr/iconsColor"
|
||||
android:hint="@string/exploreTextBoxHint">
|
||||
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:id="@+id/searchKeyword"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="?attr/inputTextColor"
|
||||
android:textColorHighlight="?attr/hintColor"
|
||||
android:textColorHint="?attr/hintColor"
|
||||
android:imeOptions="actionSend"
|
||||
android:inputType="text"
|
||||
android:textSize="16sp" />
|
||||
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/noData"
|
||||
@ -43,11 +71,18 @@
|
||||
android:textSize="20sp"
|
||||
android:visibility="gone" />
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/recyclerViewReposSearch"
|
||||
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
||||
android:id="@+id/pullToRefresh"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="?attr/primaryBackgroundColor"
|
||||
android:scrollbars="vertical" />
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/recyclerViewReposSearch"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="?attr/primaryBackgroundColor"
|
||||
android:scrollbars="vertical" />
|
||||
|
||||
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
@ -272,7 +272,7 @@
|
||||
<ImageView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:contentDescription="@string/infoTabRepoWebsite"
|
||||
android:contentDescription="@string/websiteText"
|
||||
app:srcCompat="@drawable/ic_link" />
|
||||
|
||||
<LinearLayout
|
||||
|
88
app/src/main/res/layout/fragment_search_issues.xml
Normal file
@ -0,0 +1,88 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
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">
|
||||
|
||||
<com.google.android.material.progressindicator.ProgressIndicator
|
||||
android:id="@+id/loadingMoreView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone"
|
||||
style="@style/Widget.MaterialComponents.ProgressIndicator.Linear.Indeterminate"
|
||||
app:indicatorColor="?attr/progressIndicatorColor" />
|
||||
|
||||
<com.google.android.material.progressindicator.ProgressIndicator
|
||||
android:id="@+id/progressBar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
style="@style/Widget.MaterialComponents.ProgressIndicator.Linear.Indeterminate"
|
||||
app:indicatorColor="?attr/progressIndicatorColor" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="10dp"
|
||||
android:layout_marginEnd="10dp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginBottom="10dp">
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:id="@+id/searchKeywordLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:boxBackgroundColor="?attr/inputBackgroundColor"
|
||||
android:textColorHint="?attr/hintColor"
|
||||
app:hintTextColor="?attr/hintColor"
|
||||
app:boxStrokeErrorColor="@color/darkRed"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginBottom="8dp"
|
||||
app:startIconDrawable="@drawable/ic_search"
|
||||
app:startIconTint="?attr/iconsColor"
|
||||
app:endIconMode="clear_text"
|
||||
app:endIconTint="?attr/iconsColor"
|
||||
android:hint="@string/navSearchIssuesPulls">
|
||||
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:id="@+id/searchKeyword"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="?attr/inputTextColor"
|
||||
android:textColorHighlight="?attr/hintColor"
|
||||
android:textColorHint="?attr/hintColor"
|
||||
android:imeOptions="actionSend"
|
||||
android:inputType="text"
|
||||
android:textSize="16sp" />
|
||||
|
||||
</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="15dp"
|
||||
android:gravity="center"
|
||||
android:text="@string/noDataFound"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="20sp"
|
||||
android:visibility="gone" />
|
||||
|
||||
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
||||
android:id="@+id/pullToRefresh"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/recyclerViewSearchIssues"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="?attr/primaryBackgroundColor"
|
||||
android:scrollbars="vertical" />
|
||||
|
||||
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
|
||||
|
||||
</LinearLayout>
|
@ -5,7 +5,7 @@
|
||||
android:layout_height="match_parent"
|
||||
android:background="?attr/primaryBackgroundColor">
|
||||
|
||||
<ScrollView
|
||||
<androidx.core.widget.NestedScrollView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="?attr/primaryBackgroundColor">
|
||||
@ -208,8 +208,72 @@
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/rateAppFrame"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:layout_marginTop="25dp">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/rateApp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:drawableStart="@drawable/ic_like"
|
||||
android:drawablePadding="24dp"
|
||||
android:paddingStart="12dp"
|
||||
android:paddingEnd="12dp"
|
||||
android:text="@string/navRate"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="16sp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/rateAppHintText"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:text="@string/rateAppHintText"
|
||||
android:paddingStart="60dp"
|
||||
android:paddingEnd="12dp"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="12sp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/aboutAppFrame"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:layout_marginTop="25dp">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/aboutApp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:drawableStart="@drawable/ic_info"
|
||||
android:drawablePadding="24dp"
|
||||
android:paddingStart="12dp"
|
||||
android:paddingEnd="12dp"
|
||||
android:text="@string/navAbout"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="16sp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/aboutAppHintText"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:text="@string/aboutAppHintText"
|
||||
android:paddingStart="60dp"
|
||||
android:paddingEnd="12dp"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="12sp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</ScrollView>
|
||||
</androidx.core.widget.NestedScrollView>
|
||||
|
||||
</RelativeLayout>
|
||||
|
@ -12,6 +12,12 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="invisible" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/repoFullName"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="invisible" />
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/mainFrame"
|
||||
android:layout_width="match_parent"
|
||||
|
@ -46,7 +46,7 @@
|
||||
android:gravity="end"
|
||||
android:paddingEnd="25dp"
|
||||
android:paddingStart="15dp"
|
||||
android:paddingTop="10dp"
|
||||
android:paddingTop="6dp"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
|
@ -1,7 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<ImageView
|
||||
android:id="@+id/userAccountAvatar"
|
||||
android:layout_width="32dp"
|
||||
android:layout_height="32dp"
|
||||
android:layout_width="36dp"
|
||||
android:layout_height="36dp"
|
||||
android:paddingStart="4dp"
|
||||
android:paddingEnd="4dp"
|
||||
android:contentDescription="@string/generalImgContentText"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android" />
|
||||
|
@ -1,6 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<menu 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"
|
||||
tools:showIn="navigation_view">
|
||||
|
||||
<group android:checkableBehavior="single"
|
||||
@ -26,6 +27,7 @@
|
||||
android:id="@+id/nav_notifications"
|
||||
android:icon="@drawable/ic_notifications"
|
||||
android:title="@string/pageTitleNotifications"
|
||||
app:actionLayout="@layout/badge_notification"
|
||||
android:visible="false" />
|
||||
|
||||
<item android:id="@+id/nav_explore"
|
||||
@ -54,19 +56,6 @@
|
||||
android:icon="@drawable/ic_settings"
|
||||
android:title="@string/navSettings" />
|
||||
|
||||
<item android:id="@+id/nav_about"
|
||||
android:icon="@drawable/ic_info"
|
||||
android:title="@string/navAbout" />
|
||||
|
||||
</group>
|
||||
|
||||
<item android:id="@+id/nav_rate_app"
|
||||
android:icon="@drawable/ic_like"
|
||||
android:title="@string/navRate" />
|
||||
|
||||
<group android:checkableBehavior="single"
|
||||
android:id="@+id/nav_extra">
|
||||
|
||||
<item android:id="@+id/nav_logout"
|
||||
android:icon="@drawable/ic_logout"
|
||||
android:title="@string/navLogout" />
|
||||
|
@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<background android:drawable="@drawable/app_logo_background"/>
|
||||
<foreground android:drawable="@drawable/app_logo_foreground"/>
|
||||
<foreground android:drawable="@mipmap/app_logo_foreground"/>
|
||||
</adaptive-icon>
|
@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<background android:drawable="@drawable/app_logo_background"/>
|
||||
<foreground android:drawable="@drawable/app_logo_foreground"/>
|
||||
<foreground android:drawable="@mipmap/app_logo_foreground"/>
|
||||
</adaptive-icon>
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
BIN
app/src/main/res/mipmap-hdpi/app_logo_foreground.png
Normal file
After Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.0 KiB |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1020 B |
BIN
app/src/main/res/mipmap-mdpi/app_logo_foreground.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
BIN
app/src/main/res/mipmap-xhdpi/app_logo_foreground.png
Normal file
After Width: | Height: | Size: 3.0 KiB |
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 4.3 KiB |
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 3.2 KiB |
BIN
app/src/main/res/mipmap-xxhdpi/app_logo_foreground.png
Normal file
After Width: | Height: | Size: 4.9 KiB |
Before Width: | Height: | Size: 7.3 KiB After Width: | Height: | Size: 6.8 KiB |
Before Width: | Height: | Size: 4.5 KiB After Width: | Height: | Size: 4.5 KiB |
BIN
app/src/main/res/mipmap-xxxhdpi/app_logo_foreground.png
Normal file
After Width: | Height: | Size: 7.2 KiB |
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 9.7 KiB |
@ -12,6 +12,7 @@
|
||||
<string name="navLogout">الخروج</string>
|
||||
<string name="navExplore">استكشف</string>
|
||||
<string name="navAdministration">Administration</string>
|
||||
<string name="navSearchIssuesPulls">Search Issues</string>
|
||||
<!-- menu items -->
|
||||
<!-- page titles -->
|
||||
<string name="pageTitleAbout">عن التطبيق</string>
|
||||
@ -37,6 +38,7 @@
|
||||
<string name="pageTitleExplore">استكشف</string>
|
||||
<string name="pageTitleAdministration">Gitea Administration</string>
|
||||
<string name="pageTitleUserAccounts">Manage Accounts</string>
|
||||
<string name="pageTitleNewPullRequest">New Pull Request</string>
|
||||
<!-- page titles -->
|
||||
<string name="repoName">Demo repo</string>
|
||||
<string name="repoFullname">Repo with ORG</string>
|
||||
@ -62,6 +64,7 @@
|
||||
<string name="navigation_drawer_open">Open Navigation Drawer</string>
|
||||
<string name="navigation_drawer_close">Close Navigation Drawer</string>
|
||||
<string name="logo">لِج إلى Gitea</string>
|
||||
<string name="protocol">Protocol</string>
|
||||
<string name="urlInfoTooltip">1- Choose the correct protocol(https or http). \n2- Enter Gitea url e.g: try.gitea.io. \n3- If you have enabled 2FA for your account, enter the code in the OTP Code field. \n4- For HTTP basic auth use USERNAME@DOMAIN.COM in the URL field.</string>
|
||||
<string name="malformedUrl">Couldn\'t connect to host. Please check your URL or port for any errors</string>
|
||||
<string name="protocolError">It is not recommended to use HTTP protocol unless you are testing on local network</string>
|
||||
@ -69,6 +72,7 @@
|
||||
<string name="emptyFieldURL">Instance URL is required</string>
|
||||
<string name="emptyFieldUsername">اسم المستخدم لازم</string>
|
||||
<string name="emptyFieldPassword">الكلمة السرية لازمة</string>
|
||||
<string name="protocolEmptyError">Protocol is required</string>
|
||||
<string name="checkNetConnection">Cannot access network, please check your Internet connection</string>
|
||||
<string name="netConnectionIsBack">Yay, We have Internet connection!</string>
|
||||
<string name="repoNameErrorEmpty">اسم المستودع فارغ</string>
|
||||
@ -106,7 +110,6 @@
|
||||
<string name="tab_text_collaborators">المتعاونون</string>
|
||||
<string name="tabPullRequests">Pull Requests</string>
|
||||
<string name="noDataIssueTab">No issues found</string>
|
||||
<string name="infoTabRepoWebsite">موقع الويب</string>
|
||||
<string name="infoTabRepoSize">الحجم</string>
|
||||
<string name="infoTabRepoDefaultBranch">الفرع المبدئيّ</string>
|
||||
<string name="infoTabRepoSshUrl">عنوان SSH</string>
|
||||
@ -419,7 +422,6 @@
|
||||
<string name="genericServerResponseError">We cannot reach the server at the moment, please check your server status and try again</string>
|
||||
<string name="genericCopyUrl">Copy URL</string>
|
||||
<!-- generic copy -->
|
||||
<string name="translateText">ترجم GitNex على كراودين</string>
|
||||
<string name="exploreTextBoxHint">Explore repositories</string>
|
||||
<string name="starRepository">Star Repository</string>
|
||||
<string name="unStarRepository">Unstar Repository</string>
|
||||
@ -504,7 +506,7 @@
|
||||
<string name="settingsEnableReportsText">Enable Crash Reports</string>
|
||||
<string name="crashTitle">GitNex has stopped :(</string>
|
||||
<string name="setCrashReports">Crash reports</string>
|
||||
<string name="crashMessage">You can tap the OK button to send the crash report by email. It will help to fix it :)\n\nYou can also add additional content in the email. Thank you!</string>
|
||||
<string name="crashMessage">It is encouraged to open an issue at the project repository with how to reproduce this bug. It is easier to debug and fix the problem that way.\n\nTap the OK button to send the crash report by email instead. Additional content could be added in the email.\nThank you!</string>
|
||||
<string name="forceLogoutDialogHeader">Please sign in again</string>
|
||||
<string name="forceLogoutDialogDescription">Due to some major changes regarding the internal functioning of the app, we require you to login again. These changes allow us to make the app more flexible in the future.\n\nThank you for your patience and sorry for the inconvenience.</string>
|
||||
<string name="deleteAllDrafts">Delete All Drafts</string>
|
||||
@ -518,6 +520,8 @@
|
||||
<string name="securityHintText">SSL certificates, cache, polling delay</string>
|
||||
<string name="languagesHintText">Languages</string>
|
||||
<string name="reportsHintText">Crash reports</string>
|
||||
<string name="rateAppHintText">If you like GitNex you can give it a thumbs up</string>
|
||||
<string name="aboutAppHintText">App version, build, user gitea version</string>
|
||||
<string name="archivedRepository">Archived</string>
|
||||
<string name="accountDeletedMessage">Account deleted successfully</string>
|
||||
<string name="removeAccountPopupTitle">Remove Account</string>
|
||||
@ -560,4 +564,26 @@
|
||||
<string name="repoSettingsDeleteDescription">Things to know before deletion:\n\n- This operation CANNOT be undone.\n- This operation will permanently delete the repository including code, issues, comments, wiki data and collaborator settings.\n\nEnter the repository name as confirmation</string>
|
||||
<string name="repoSettingsDeleteError">Repository name does not match</string>
|
||||
<string name="repoDeletionSuccess">Repository deleted successfully</string>
|
||||
<string name="repoSettingsTransferOwnership">Transfer Ownership</string>
|
||||
<string name="repoSettingsTransferOwnershipHint">Transfer this repository to a user or to an organization for which you have administrator rights</string>
|
||||
<string name="repoSettingsTransferOwnershipDescription">Things to know before transfer:\n\n- You will lose access to the repository if you transfer it to an individual user.\n- You will keep access to the repository if you transfer it to an organization that you (co-)own.\n\nEnter the repository name as confirmation</string>
|
||||
<string name="repoTransferText">Perform Transfer</string>
|
||||
<string name="repoTransferOwnerText">New Owner</string>
|
||||
<string name="repoTransferSuccess">Repository transferred successfully</string>
|
||||
<string name="repoTransferOwnerError">New owner is required</string>
|
||||
<string name="repoTransferError">There is a problem with the owner name. Make sure that the new owner exists</string>
|
||||
<string name="exploreFilterDialogTitle">Filter Repositories</string>
|
||||
<string name="exploreFilterIncludeTopic">Search ONLY in Topic</string>
|
||||
<string name="exploreFilterIncludeDesc">Search in Description</string>
|
||||
<string name="exploreFilterIncludeArchive">Only Archived Repositories</string>
|
||||
<string name="exploreFilterIncludePrivate">Only Private Repositories</string>
|
||||
<string name="exploreFilterIncludeTemplateRepos">Search in Template Repositories</string>
|
||||
<string name="mergeIntoBranch">Merge Into</string>
|
||||
<string name="pullFromBranch">Pull From</string>
|
||||
<string name="sameBranchesError">These branches are equal. There is no need to create a pull request</string>
|
||||
<string name="mergeIntoError">Merge into branch is required</string>
|
||||
<string name="pullFromError">Pull from branch is required</string>
|
||||
<string name="titleError">Title is required</string>
|
||||
<string name="prCreateSuccess">Pull Request created successfully</string>
|
||||
<string name="prAlreadyExists">A pull request between these branches already exists</string>
|
||||
</resources>
|
||||
|
@ -12,6 +12,7 @@
|
||||
<string name="navLogout">Odhlásit se</string>
|
||||
<string name="navExplore">Prozkoumat</string>
|
||||
<string name="navAdministration">Administrace</string>
|
||||
<string name="navSearchIssuesPulls">Search Issues</string>
|
||||
<!-- menu items -->
|
||||
<!-- page titles -->
|
||||
<string name="pageTitleAbout">O aplikaci</string>
|
||||
@ -37,6 +38,7 @@
|
||||
<string name="pageTitleExplore">Prozkoumat</string>
|
||||
<string name="pageTitleAdministration">Administrace Gitea</string>
|
||||
<string name="pageTitleUserAccounts">Správa účtů</string>
|
||||
<string name="pageTitleNewPullRequest">New Pull Request</string>
|
||||
<!-- page titles -->
|
||||
<string name="repoName">Demo repozitář</string>
|
||||
<string name="repoFullname">Repo with ORG</string>
|
||||
@ -62,6 +64,7 @@
|
||||
<string name="navigation_drawer_open">Otevřít navigační menu</string>
|
||||
<string name="navigation_drawer_close">Zavřít navigační menu</string>
|
||||
<string name="logo">Přihlásit se do Gitea</string>
|
||||
<string name="protocol">Protocol</string>
|
||||
<string name="urlInfoTooltip">1- Vyberte správný protokol (https nebo http). \n2- zadejte URL Gitea např.: try.gitea.io. \n3- Pokud jste pro svůj účet povolili 2FA, zadejte kód do pole OTP kód. \n4- Pro základní ověření HTTP použijte USERNAME@DOMAIN.COM v poli URL.</string>
|
||||
<string name="malformedUrl">Nelze se připojit k serveru. Zkontrolujte prosím URL nebo port pro případné chyby</string>
|
||||
<string name="protocolError">Není doporučeno používat HTTP protokol, pokud netestujete na místní síti</string>
|
||||
@ -69,6 +72,7 @@
|
||||
<string name="emptyFieldURL">Je vyžadována URL instance</string>
|
||||
<string name="emptyFieldUsername">Uživatelské jméno je vyžadováno</string>
|
||||
<string name="emptyFieldPassword">Heslo je vyžadováno</string>
|
||||
<string name="protocolEmptyError">Protocol is required</string>
|
||||
<string name="checkNetConnection">Nelze se přihlásit, zkontrolujte prosím vaše připojení k internetu</string>
|
||||
<string name="netConnectionIsBack">Ano, máme připojení k internetu!</string>
|
||||
<string name="repoNameErrorEmpty">Název repozitáře není vyplněn</string>
|
||||
@ -106,7 +110,6 @@
|
||||
<string name="tab_text_collaborators">Spolupracovníci</string>
|
||||
<string name="tabPullRequests">Pull Requesty</string>
|
||||
<string name="noDataIssueTab">Nebyla nalezena žádná issue</string>
|
||||
<string name="infoTabRepoWebsite">Webová stránka</string>
|
||||
<string name="infoTabRepoSize">Velikost</string>
|
||||
<string name="infoTabRepoDefaultBranch">Výchozí větev</string>
|
||||
<string name="infoTabRepoSshUrl">SSH URL</string>
|
||||
@ -419,7 +422,6 @@
|
||||
<string name="genericServerResponseError">We cannot reach the server at the moment, please check your server status and try again</string>
|
||||
<string name="genericCopyUrl">Copy URL</string>
|
||||
<!-- generic copy -->
|
||||
<string name="translateText">Translate GitNex with Crowdin</string>
|
||||
<string name="exploreTextBoxHint">Explore repositories</string>
|
||||
<string name="starRepository">Star Repository</string>
|
||||
<string name="unStarRepository">Unstar Repository</string>
|
||||
@ -504,7 +506,7 @@
|
||||
<string name="settingsEnableReportsText">Enable Crash Reports</string>
|
||||
<string name="crashTitle">GitNex has stopped :(</string>
|
||||
<string name="setCrashReports">Crash reports</string>
|
||||
<string name="crashMessage">You can tap the OK button to send the crash report by email. It will help to fix it :)\n\nYou can also add additional content in the email. Thank you!</string>
|
||||
<string name="crashMessage">It is encouraged to open an issue at the project repository with how to reproduce this bug. It is easier to debug and fix the problem that way.\n\nTap the OK button to send the crash report by email instead. Additional content could be added in the email.\nThank you!</string>
|
||||
<string name="forceLogoutDialogHeader">Please sign in again</string>
|
||||
<string name="forceLogoutDialogDescription">Due to some major changes regarding the internal functioning of the app, we require you to login again. These changes allow us to make the app more flexible in the future.\n\nThank you for your patience and sorry for the inconvenience.</string>
|
||||
<string name="deleteAllDrafts">Delete All Drafts</string>
|
||||
@ -518,6 +520,8 @@
|
||||
<string name="securityHintText">SSL certificates, cache, polling delay</string>
|
||||
<string name="languagesHintText">Languages</string>
|
||||
<string name="reportsHintText">Crash reports</string>
|
||||
<string name="rateAppHintText">If you like GitNex you can give it a thumbs up</string>
|
||||
<string name="aboutAppHintText">App version, build, user gitea version</string>
|
||||
<string name="archivedRepository">Archived</string>
|
||||
<string name="accountDeletedMessage">Account deleted successfully</string>
|
||||
<string name="removeAccountPopupTitle">Remove Account</string>
|
||||
@ -560,4 +564,26 @@
|
||||
<string name="repoSettingsDeleteDescription">Things to know before deletion:\n\n- This operation CANNOT be undone.\n- This operation will permanently delete the repository including code, issues, comments, wiki data and collaborator settings.\n\nEnter the repository name as confirmation</string>
|
||||
<string name="repoSettingsDeleteError">Repository name does not match</string>
|
||||
<string name="repoDeletionSuccess">Repository deleted successfully</string>
|
||||
<string name="repoSettingsTransferOwnership">Transfer Ownership</string>
|
||||
<string name="repoSettingsTransferOwnershipHint">Transfer this repository to a user or to an organization for which you have administrator rights</string>
|
||||
<string name="repoSettingsTransferOwnershipDescription">Things to know before transfer:\n\n- You will lose access to the repository if you transfer it to an individual user.\n- You will keep access to the repository if you transfer it to an organization that you (co-)own.\n\nEnter the repository name as confirmation</string>
|
||||
<string name="repoTransferText">Perform Transfer</string>
|
||||
<string name="repoTransferOwnerText">New Owner</string>
|
||||
<string name="repoTransferSuccess">Repository transferred successfully</string>
|
||||
<string name="repoTransferOwnerError">New owner is required</string>
|
||||
<string name="repoTransferError">There is a problem with the owner name. Make sure that the new owner exists</string>
|
||||
<string name="exploreFilterDialogTitle">Filter Repositories</string>
|
||||
<string name="exploreFilterIncludeTopic">Search ONLY in Topic</string>
|
||||
<string name="exploreFilterIncludeDesc">Search in Description</string>
|
||||
<string name="exploreFilterIncludeArchive">Only Archived Repositories</string>
|
||||
<string name="exploreFilterIncludePrivate">Only Private Repositories</string>
|
||||
<string name="exploreFilterIncludeTemplateRepos">Search in Template Repositories</string>
|
||||
<string name="mergeIntoBranch">Merge Into</string>
|
||||
<string name="pullFromBranch">Pull From</string>
|
||||
<string name="sameBranchesError">These branches are equal. There is no need to create a pull request</string>
|
||||
<string name="mergeIntoError">Merge into branch is required</string>
|
||||
<string name="pullFromError">Pull from branch is required</string>
|
||||
<string name="titleError">Title is required</string>
|
||||
<string name="prCreateSuccess">Pull Request created successfully</string>
|
||||
<string name="prAlreadyExists">A pull request between these branches already exists</string>
|
||||
</resources>
|
||||
|
@ -12,6 +12,7 @@
|
||||
<string name="navLogout">Ausloggen</string>
|
||||
<string name="navExplore">Erkunden</string>
|
||||
<string name="navAdministration">Administration</string>
|
||||
<string name="navSearchIssuesPulls">Issues Suche</string>
|
||||
<!-- menu items -->
|
||||
<!-- page titles -->
|
||||
<string name="pageTitleAbout">Über</string>
|
||||
@ -37,6 +38,7 @@
|
||||
<string name="pageTitleExplore">Erkunden</string>
|
||||
<string name="pageTitleAdministration">Gitea-Administration</string>
|
||||
<string name="pageTitleUserAccounts">Konten verwalten</string>
|
||||
<string name="pageTitleNewPullRequest">Neuer Pull-Request</string>
|
||||
<!-- page titles -->
|
||||
<string name="repoName">Demo Repo</string>
|
||||
<string name="repoFullname">Repo mit ORG</string>
|
||||
@ -62,6 +64,7 @@
|
||||
<string name="navigation_drawer_open">Navigationsleiste öffnen</string>
|
||||
<string name="navigation_drawer_close">Navigationsleiste schließen</string>
|
||||
<string name="logo">In Gitea anmelden</string>
|
||||
<string name="protocol">Protokoll</string>
|
||||
<string name="urlInfoTooltip">1- Wähle das richtige Protokoll (https oder http) \ N2- Gebe die Gitea-URL ein, z.B. try.gitea.io \n3- Falls du 2FA aktiviert hast, gib den Code in das OTP-Code Feld ein. \n4- Für HTTP basic auth nutze BENUTZERNAME@DOMAIN.COM im URL Feld</string>
|
||||
<string name="malformedUrl">Konnte keine Verbindung zum Host herstellen. Bitte überprüfe die URL oder Port auf irgendwelche Fehler</string>
|
||||
<string name="protocolError">Es wird nicht empfohlen, das HTTP-Protokoll zu verwenden, es sei denn, du testest in einem lokalen Netzwerk</string>
|
||||
@ -69,6 +72,7 @@
|
||||
<string name="emptyFieldURL">Instanzen-URL ist erforderlich</string>
|
||||
<string name="emptyFieldUsername">Benutzername ist erforderlich</string>
|
||||
<string name="emptyFieldPassword">Passwort ist erforderlich</string>
|
||||
<string name="protocolEmptyError">Protokoll ist erforderlich</string>
|
||||
<string name="checkNetConnection">Kann nicht auf das Netzwerk zugreifen. Bitte überprüfe die Internetverbindung</string>
|
||||
<string name="netConnectionIsBack">Juhu, wir haben eine Internetverbindung!</string>
|
||||
<string name="repoNameErrorEmpty">Der Repository Name ist leer.</string>
|
||||
@ -106,7 +110,6 @@
|
||||
<string name="tab_text_collaborators">Mitarbeiter</string>
|
||||
<string name="tabPullRequests">Pull Requests</string>
|
||||
<string name="noDataIssueTab">Keine Issues gefunden!</string>
|
||||
<string name="infoTabRepoWebsite">Webseite</string>
|
||||
<string name="infoTabRepoSize">Größe</string>
|
||||
<string name="infoTabRepoDefaultBranch">Standard Branch</string>
|
||||
<string name="infoTabRepoSshUrl">SSH Link</string>
|
||||
@ -419,7 +422,6 @@
|
||||
<string name="genericServerResponseError">Wir können den Server im Moment nicht erreichen. Bitte überprüfen Sie Ihren Serverstatus und versuchen Sie es erneut</string>
|
||||
<string name="genericCopyUrl">Link kopieren</string>
|
||||
<!-- generic copy -->
|
||||
<string name="translateText">GitNex mit Crowdin übersetzen</string>
|
||||
<string name="exploreTextBoxHint">Repositories entdecken</string>
|
||||
<string name="starRepository">Repository favorisieren</string>
|
||||
<string name="unStarRepository">Repository nicht mehr favorisieren</string>
|
||||
@ -504,7 +506,7 @@
|
||||
<string name="settingsEnableReportsText">Absturzberichte aktivieren</string>
|
||||
<string name="crashTitle">GitNex hat gestoppt :(</string>
|
||||
<string name="setCrashReports">Absturzberichte</string>
|
||||
<string name="crashMessage">Klicke auf OK, um den Absturzbericht per E-Mail zu senden. Es wird helfen, diesen zu beheben :)\n\nDu könntest auch zusätzliche Infos in der E-Mail angeben. Danke für deine Hilfe!</string>
|
||||
<string name="crashMessage">Es wird empfohlen, ein Issue im Projekt zu öffnen, wie man diesen Fehler reproduzieren kann. Es ist einfacher, das Problem so zu debuggen und zu beheben.\n\nTippen Sie auf OK, um stattdessen den Absturzbericht per E-Mail zu senden. Zusätzliche Inhalte konnten in der E-Mail hinzugefügt werden.\nVielen Dank!</string>
|
||||
<string name="forceLogoutDialogHeader">Bitte melden Sie sich erneut an</string>
|
||||
<string name="forceLogoutDialogDescription">Aufgrund einiger wichtiger Änderungen in Bezug auf das interne Funktionieren der App müssen Sie sich erneut anmelden. Diese Änderungen ermöglichen es uns, die App in Zukunft flexibler zu gestalten.\n\nVielen Dank für Ihre Geduld und Entschuldigung für die Unannehmlichkeiten.</string>
|
||||
<string name="deleteAllDrafts">Alle Entwürfe löschen</string>
|
||||
@ -518,6 +520,8 @@
|
||||
<string name="securityHintText">SSL-Zertifikate, Cache, Abfrageverzögerung</string>
|
||||
<string name="languagesHintText">Sprachen</string>
|
||||
<string name="reportsHintText">Absturzberichte</string>
|
||||
<string name="rateAppHintText">Wenn dir GitNex gefällt, hinterlassen Feedback</string>
|
||||
<string name="aboutAppHintText">App-Version, Build, Gitea Version</string>
|
||||
<string name="archivedRepository">Archiviert</string>
|
||||
<string name="accountDeletedMessage">Konto erfolgreich gelöscht</string>
|
||||
<string name="removeAccountPopupTitle">Konto entfernen</string>
|
||||
@ -560,4 +564,26 @@
|
||||
<string name="repoSettingsDeleteDescription">Vor dem Löschen zu erfahrende Dinge:\n\n- Dieser Vorgang kann NICHT rückgängig gemacht werden.\n- Dieser Vorgang wird das Projektarchiv dauerhaft löschen, einschließlich Code, Issues, Kommentare, Wiki-Daten und Einstellungen.\n\nGib den Repository-Namen als Bestätigung ein</string>
|
||||
<string name="repoSettingsDeleteError">Repository-Name stimmt nicht überein</string>
|
||||
<string name="repoDeletionSuccess">Repository erfolgreich gelöscht</string>
|
||||
<string name="repoSettingsTransferOwnership">Besitz übertragen</string>
|
||||
<string name="repoSettingsTransferOwnershipHint">Dieses Repository an einen Benutzer oder eine Organisation übertragen, für die Sie Admin Rechte haben</string>
|
||||
<string name="repoSettingsTransferOwnershipDescription">Dinge, die vor der Übertragung bekannt sind:\n\n- Du verlierst den Zugriff auf das Projekt, wenn es an einen Benutzer übertragen wird.\n- Du behälst den Zugriff auf das Projekt, wenn es an eine Organisation übertragen wird, die du (mit-)besitzt.\n\nGeben den Repository-Namen als Bestätigung ein</string>
|
||||
<string name="repoTransferText">Übertragung durchführen</string>
|
||||
<string name="repoTransferOwnerText">Neuer Besitzer</string>
|
||||
<string name="repoTransferSuccess">Repository erfolgreich übertragen</string>
|
||||
<string name="repoTransferOwnerError">Neuer Besitzer ist erforderlich</string>
|
||||
<string name="repoTransferError">Es gibt ein Problem mit dem Besitzer Namen. Stelle sicher, dass der neue Besitzer existiert</string>
|
||||
<string name="exploreFilterDialogTitle">Repositories filtern</string>
|
||||
<string name="exploreFilterIncludeTopic">NUR in Themen suchen</string>
|
||||
<string name="exploreFilterIncludeDesc">In Beschreibung suchen</string>
|
||||
<string name="exploreFilterIncludeArchive">Nur archivierte Repositories</string>
|
||||
<string name="exploreFilterIncludePrivate">Nur private Repositories</string>
|
||||
<string name="exploreFilterIncludeTemplateRepos">Zeige auch Template-Repositories</string>
|
||||
<string name="mergeIntoBranch">Zusammenführen in</string>
|
||||
<string name="pullFromBranch">Pull-Request von</string>
|
||||
<string name="sameBranchesError">Diese Branches sind gleich. Es besteht keine Notwendigkeit, einen Pull-Request zu erstellen</string>
|
||||
<string name="mergeIntoError">Merge in Branch ist erforderlich</string>
|
||||
<string name="pullFromError">Pull-Request von Branch ist erforderlich</string>
|
||||
<string name="titleError">Titel wird benötigt</string>
|
||||
<string name="prCreateSuccess">Pull-Request erfolgreich erstellt</string>
|
||||
<string name="prAlreadyExists">Zwischen diesen Branches existiert bereits ein Pull-Request</string>
|
||||
</resources>
|
||||
|
@ -12,6 +12,7 @@
|
||||
<string name="navLogout">Cerrar sesión</string>
|
||||
<string name="navExplore">Explorar</string>
|
||||
<string name="navAdministration">Administration</string>
|
||||
<string name="navSearchIssuesPulls">Search Issues</string>
|
||||
<!-- menu items -->
|
||||
<!-- page titles -->
|
||||
<string name="pageTitleAbout">Sobre</string>
|
||||
@ -37,6 +38,7 @@
|
||||
<string name="pageTitleExplore">Explorar</string>
|
||||
<string name="pageTitleAdministration">Gitea Administration</string>
|
||||
<string name="pageTitleUserAccounts">Manage Accounts</string>
|
||||
<string name="pageTitleNewPullRequest">New Pull Request</string>
|
||||
<!-- page titles -->
|
||||
<string name="repoName">Repo Demo</string>
|
||||
<string name="repoFullname">Repo con ORG</string>
|
||||
@ -62,6 +64,7 @@
|
||||
<string name="navigation_drawer_open">Abrir cajón de navegación</string>
|
||||
<string name="navigation_drawer_close">Cerrar cajón de navegación</string>
|
||||
<string name="logo">Iniciar sesión en Gitea</string>
|
||||
<string name="protocol">Protocol</string>
|
||||
<string name="urlInfoTooltip">1- Elige el protocolo correcto (https o http).\n2- Introduce Gitea URL p.e: try.gitea.io.\n3- Si has activado 2FA, introduce el código OTP.\n4- Para HTTP Basic Auth usa USUARIO@DOMAIN.COM en la caja de texto URL.</string>
|
||||
<string name="malformedUrl">Couldn\'t connect to host. Please check your URL or port for any errors</string>
|
||||
<string name="protocolError">It is not recommended to use HTTP protocol unless you are testing on local network</string>
|
||||
@ -69,6 +72,7 @@
|
||||
<string name="emptyFieldURL">Se requiere la URL de la instancia</string>
|
||||
<string name="emptyFieldUsername">Se requiere el usuario</string>
|
||||
<string name="emptyFieldPassword">Se requiere la contraseña</string>
|
||||
<string name="protocolEmptyError">Protocol is required</string>
|
||||
<string name="checkNetConnection">No se puede acceder a la red, por favor comprueba tu conexión a internet</string>
|
||||
<string name="netConnectionIsBack">Yay, We have Internet connection!</string>
|
||||
<string name="repoNameErrorEmpty">El nombre del repositorio está vacío</string>
|
||||
@ -106,7 +110,6 @@
|
||||
<string name="tab_text_collaborators">Colaboradores</string>
|
||||
<string name="tabPullRequests">Peticiones pull</string>
|
||||
<string name="noDataIssueTab">No se han encontrado incidencias</string>
|
||||
<string name="infoTabRepoWebsite">Página web</string>
|
||||
<string name="infoTabRepoSize">Tamaño</string>
|
||||
<string name="infoTabRepoDefaultBranch">Rama por defecto</string>
|
||||
<string name="infoTabRepoSshUrl">URL SSH</string>
|
||||
@ -419,7 +422,6 @@
|
||||
<string name="genericServerResponseError">We cannot reach the server at the moment, please check your server status and try again</string>
|
||||
<string name="genericCopyUrl">Copy URL</string>
|
||||
<!-- generic copy -->
|
||||
<string name="translateText">Translate GitNex with Crowdin</string>
|
||||
<string name="exploreTextBoxHint">Explore repositories</string>
|
||||
<string name="starRepository">Star Repository</string>
|
||||
<string name="unStarRepository">Unstar Repository</string>
|
||||
@ -504,7 +506,7 @@
|
||||
<string name="settingsEnableReportsText">Enable Crash Reports</string>
|
||||
<string name="crashTitle">GitNex has stopped :(</string>
|
||||
<string name="setCrashReports">Crash reports</string>
|
||||
<string name="crashMessage">You can tap the OK button to send the crash report by email. It will help to fix it :)\n\nYou can also add additional content in the email. Thank you!</string>
|
||||
<string name="crashMessage">It is encouraged to open an issue at the project repository with how to reproduce this bug. It is easier to debug and fix the problem that way.\n\nTap the OK button to send the crash report by email instead. Additional content could be added in the email.\nThank you!</string>
|
||||
<string name="forceLogoutDialogHeader">Please sign in again</string>
|
||||
<string name="forceLogoutDialogDescription">Due to some major changes regarding the internal functioning of the app, we require you to login again. These changes allow us to make the app more flexible in the future.\n\nThank you for your patience and sorry for the inconvenience.</string>
|
||||
<string name="deleteAllDrafts">Delete All Drafts</string>
|
||||
@ -518,6 +520,8 @@
|
||||
<string name="securityHintText">SSL certificates, cache, polling delay</string>
|
||||
<string name="languagesHintText">Languages</string>
|
||||
<string name="reportsHintText">Crash reports</string>
|
||||
<string name="rateAppHintText">If you like GitNex you can give it a thumbs up</string>
|
||||
<string name="aboutAppHintText">App version, build, user gitea version</string>
|
||||
<string name="archivedRepository">Archived</string>
|
||||
<string name="accountDeletedMessage">Account deleted successfully</string>
|
||||
<string name="removeAccountPopupTitle">Remove Account</string>
|
||||
@ -560,4 +564,26 @@
|
||||
<string name="repoSettingsDeleteDescription">Things to know before deletion:\n\n- This operation CANNOT be undone.\n- This operation will permanently delete the repository including code, issues, comments, wiki data and collaborator settings.\n\nEnter the repository name as confirmation</string>
|
||||
<string name="repoSettingsDeleteError">Repository name does not match</string>
|
||||
<string name="repoDeletionSuccess">Repository deleted successfully</string>
|
||||
<string name="repoSettingsTransferOwnership">Transfer Ownership</string>
|
||||
<string name="repoSettingsTransferOwnershipHint">Transfer this repository to a user or to an organization for which you have administrator rights</string>
|
||||
<string name="repoSettingsTransferOwnershipDescription">Things to know before transfer:\n\n- You will lose access to the repository if you transfer it to an individual user.\n- You will keep access to the repository if you transfer it to an organization that you (co-)own.\n\nEnter the repository name as confirmation</string>
|
||||
<string name="repoTransferText">Perform Transfer</string>
|
||||
<string name="repoTransferOwnerText">New Owner</string>
|
||||
<string name="repoTransferSuccess">Repository transferred successfully</string>
|
||||
<string name="repoTransferOwnerError">New owner is required</string>
|
||||
<string name="repoTransferError">There is a problem with the owner name. Make sure that the new owner exists</string>
|
||||
<string name="exploreFilterDialogTitle">Filter Repositories</string>
|
||||
<string name="exploreFilterIncludeTopic">Search ONLY in Topic</string>
|
||||
<string name="exploreFilterIncludeDesc">Search in Description</string>
|
||||
<string name="exploreFilterIncludeArchive">Only Archived Repositories</string>
|
||||
<string name="exploreFilterIncludePrivate">Only Private Repositories</string>
|
||||
<string name="exploreFilterIncludeTemplateRepos">Search in Template Repositories</string>
|
||||
<string name="mergeIntoBranch">Merge Into</string>
|
||||
<string name="pullFromBranch">Pull From</string>
|
||||
<string name="sameBranchesError">These branches are equal. There is no need to create a pull request</string>
|
||||
<string name="mergeIntoError">Merge into branch is required</string>
|
||||
<string name="pullFromError">Pull from branch is required</string>
|
||||
<string name="titleError">Title is required</string>
|
||||
<string name="prCreateSuccess">Pull Request created successfully</string>
|
||||
<string name="prAlreadyExists">A pull request between these branches already exists</string>
|
||||
</resources>
|
||||
|
@ -12,6 +12,7 @@
|
||||
<string name="navLogout">خروج از حساب کاربری</string>
|
||||
<string name="navExplore">جست و جو</string>
|
||||
<string name="navAdministration">Administration</string>
|
||||
<string name="navSearchIssuesPulls">Search Issues</string>
|
||||
<!-- menu items -->
|
||||
<!-- page titles -->
|
||||
<string name="pageTitleAbout">در مورد ما</string>
|
||||
@ -37,6 +38,7 @@
|
||||
<string name="pageTitleExplore">گشتوگذار</string>
|
||||
<string name="pageTitleAdministration">Gitea Administration</string>
|
||||
<string name="pageTitleUserAccounts">Manage Accounts</string>
|
||||
<string name="pageTitleNewPullRequest">New Pull Request</string>
|
||||
<!-- page titles -->
|
||||
<string name="repoName">مخزن نمایشی</string>
|
||||
<string name="repoFullname">نخزن با ORG</string>
|
||||
@ -62,6 +64,7 @@
|
||||
<string name="navigation_drawer_open">باز کردن کشو ی ناوبری</string>
|
||||
<string name="navigation_drawer_close">بستن کشوی ناوبری</string>
|
||||
<string name="logo">ورود به گیتی</string>
|
||||
<string name="protocol">Protocol</string>
|
||||
<string name="urlInfoTooltip">1. پروتوکل صحیح را انتخاب کنید (http یا https)
|
||||
2. URL گیتی را وارد کنید. مثلا: try.gitea.io
|
||||
3. اگر احراز هویت دو مرحلهای را برای حساب خود فعال کردهاید، کد را در کادر OTP وارد کنید.
|
||||
@ -72,6 +75,7 @@
|
||||
<string name="emptyFieldURL">URL نمونه مورد نیاز است</string>
|
||||
<string name="emptyFieldUsername">نام کاربری اجباری است</string>
|
||||
<string name="emptyFieldPassword">گذر واژه اجباری است</string>
|
||||
<string name="protocolEmptyError">Protocol is required</string>
|
||||
<string name="checkNetConnection">عدم دسترسی به شبکه، لطفا از برقراری ارتباط با اینترنت مطمئن شوید</string>
|
||||
<string name="netConnectionIsBack">Yay, We have Internet connection!</string>
|
||||
<string name="repoNameErrorEmpty">نام مخزن خالی است</string>
|
||||
@ -109,7 +113,6 @@
|
||||
<string name="tab_text_collaborators">Collaborators</string>
|
||||
<string name="tabPullRequests">Pull Requests</string>
|
||||
<string name="noDataIssueTab">No issues found</string>
|
||||
<string name="infoTabRepoWebsite">Website</string>
|
||||
<string name="infoTabRepoSize">Size</string>
|
||||
<string name="infoTabRepoDefaultBranch">Default Branch</string>
|
||||
<string name="infoTabRepoSshUrl">SSH URL</string>
|
||||
@ -422,7 +425,6 @@
|
||||
<string name="genericServerResponseError">We cannot reach the server at the moment, please check your server status and try again</string>
|
||||
<string name="genericCopyUrl">Copy URL</string>
|
||||
<!-- generic copy -->
|
||||
<string name="translateText">Translate GitNex with Crowdin</string>
|
||||
<string name="exploreTextBoxHint">Explore repositories</string>
|
||||
<string name="starRepository">Star Repository</string>
|
||||
<string name="unStarRepository">Unstar Repository</string>
|
||||
@ -507,7 +509,7 @@
|
||||
<string name="settingsEnableReportsText">Enable Crash Reports</string>
|
||||
<string name="crashTitle">GitNex has stopped :(</string>
|
||||
<string name="setCrashReports">Crash reports</string>
|
||||
<string name="crashMessage">You can tap the OK button to send the crash report by email. It will help to fix it :)\n\nYou can also add additional content in the email. Thank you!</string>
|
||||
<string name="crashMessage">It is encouraged to open an issue at the project repository with how to reproduce this bug. It is easier to debug and fix the problem that way.\n\nTap the OK button to send the crash report by email instead. Additional content could be added in the email.\nThank you!</string>
|
||||
<string name="forceLogoutDialogHeader">Please sign in again</string>
|
||||
<string name="forceLogoutDialogDescription">Due to some major changes regarding the internal functioning of the app, we require you to login again. These changes allow us to make the app more flexible in the future.\n\nThank you for your patience and sorry for the inconvenience.</string>
|
||||
<string name="deleteAllDrafts">Delete All Drafts</string>
|
||||
@ -521,6 +523,8 @@
|
||||
<string name="securityHintText">SSL certificates, cache, polling delay</string>
|
||||
<string name="languagesHintText">Languages</string>
|
||||
<string name="reportsHintText">Crash reports</string>
|
||||
<string name="rateAppHintText">If you like GitNex you can give it a thumbs up</string>
|
||||
<string name="aboutAppHintText">App version, build, user gitea version</string>
|
||||
<string name="archivedRepository">Archived</string>
|
||||
<string name="accountDeletedMessage">Account deleted successfully</string>
|
||||
<string name="removeAccountPopupTitle">Remove Account</string>
|
||||
@ -563,4 +567,26 @@
|
||||
<string name="repoSettingsDeleteDescription">Things to know before deletion:\n\n- This operation CANNOT be undone.\n- This operation will permanently delete the repository including code, issues, comments, wiki data and collaborator settings.\n\nEnter the repository name as confirmation</string>
|
||||
<string name="repoSettingsDeleteError">Repository name does not match</string>
|
||||
<string name="repoDeletionSuccess">Repository deleted successfully</string>
|
||||
<string name="repoSettingsTransferOwnership">Transfer Ownership</string>
|
||||
<string name="repoSettingsTransferOwnershipHint">Transfer this repository to a user or to an organization for which you have administrator rights</string>
|
||||
<string name="repoSettingsTransferOwnershipDescription">Things to know before transfer:\n\n- You will lose access to the repository if you transfer it to an individual user.\n- You will keep access to the repository if you transfer it to an organization that you (co-)own.\n\nEnter the repository name as confirmation</string>
|
||||
<string name="repoTransferText">Perform Transfer</string>
|
||||
<string name="repoTransferOwnerText">New Owner</string>
|
||||
<string name="repoTransferSuccess">Repository transferred successfully</string>
|
||||
<string name="repoTransferOwnerError">New owner is required</string>
|
||||
<string name="repoTransferError">There is a problem with the owner name. Make sure that the new owner exists</string>
|
||||
<string name="exploreFilterDialogTitle">Filter Repositories</string>
|
||||
<string name="exploreFilterIncludeTopic">Search ONLY in Topic</string>
|
||||
<string name="exploreFilterIncludeDesc">Search in Description</string>
|
||||
<string name="exploreFilterIncludeArchive">Only Archived Repositories</string>
|
||||
<string name="exploreFilterIncludePrivate">Only Private Repositories</string>
|
||||
<string name="exploreFilterIncludeTemplateRepos">Search in Template Repositories</string>
|
||||
<string name="mergeIntoBranch">Merge Into</string>
|
||||
<string name="pullFromBranch">Pull From</string>
|
||||
<string name="sameBranchesError">These branches are equal. There is no need to create a pull request</string>
|
||||
<string name="mergeIntoError">Merge into branch is required</string>
|
||||
<string name="pullFromError">Pull from branch is required</string>
|
||||
<string name="titleError">Title is required</string>
|
||||
<string name="prCreateSuccess">Pull Request created successfully</string>
|
||||
<string name="prAlreadyExists">A pull request between these branches already exists</string>
|
||||
</resources>
|
||||
|
@ -12,6 +12,7 @@
|
||||
<string name="navLogout">Kirjaudu ulos</string>
|
||||
<string name="navExplore">Explore</string>
|
||||
<string name="navAdministration">Administration</string>
|
||||
<string name="navSearchIssuesPulls">Search Issues</string>
|
||||
<!-- menu items -->
|
||||
<!-- page titles -->
|
||||
<string name="pageTitleAbout">Tietoja</string>
|
||||
@ -37,6 +38,7 @@
|
||||
<string name="pageTitleExplore">Explore</string>
|
||||
<string name="pageTitleAdministration">Gitea Administration</string>
|
||||
<string name="pageTitleUserAccounts">Manage Accounts</string>
|
||||
<string name="pageTitleNewPullRequest">New Pull Request</string>
|
||||
<!-- page titles -->
|
||||
<string name="repoName">Demo repo</string>
|
||||
<string name="repoFullname">Repo with ORG</string>
|
||||
@ -62,6 +64,7 @@
|
||||
<string name="navigation_drawer_open">Open Navigation Drawer</string>
|
||||
<string name="navigation_drawer_close">Close Navigation Drawer</string>
|
||||
<string name="logo">Login to Gitea</string>
|
||||
<string name="protocol">Protocol</string>
|
||||
<string name="urlInfoTooltip">1- Choose the correct protocol(https or http). \n2- Enter Gitea url e.g: try.gitea.io. \n3- If you have enabled 2FA for your account, enter the code in the OTP Code field. \n4- For HTTP basic auth use USERNAME@DOMAIN.COM in the URL field.</string>
|
||||
<string name="malformedUrl">Couldn\'t connect to host. Please check your URL or port for any errors</string>
|
||||
<string name="protocolError">It is not recommended to use HTTP protocol unless you are testing on local network</string>
|
||||
@ -69,6 +72,7 @@
|
||||
<string name="emptyFieldURL">Instance URL is required</string>
|
||||
<string name="emptyFieldUsername">Username is required</string>
|
||||
<string name="emptyFieldPassword">Password is required</string>
|
||||
<string name="protocolEmptyError">Protocol is required</string>
|
||||
<string name="checkNetConnection">Cannot access network, please check your Internet connection</string>
|
||||
<string name="netConnectionIsBack">Yay, We have Internet connection!</string>
|
||||
<string name="repoNameErrorEmpty">Repository name is empty</string>
|
||||
@ -106,7 +110,6 @@
|
||||
<string name="tab_text_collaborators">Collaborators</string>
|
||||
<string name="tabPullRequests">Pull Requests</string>
|
||||
<string name="noDataIssueTab">No issues found</string>
|
||||
<string name="infoTabRepoWebsite">Verkkosivusto</string>
|
||||
<string name="infoTabRepoSize">Koko</string>
|
||||
<string name="infoTabRepoDefaultBranch">Olutus haara</string>
|
||||
<string name="infoTabRepoSshUrl">SSH URL</string>
|
||||
@ -419,7 +422,6 @@
|
||||
<string name="genericServerResponseError">We cannot reach the server at the moment, please check your server status and try again</string>
|
||||
<string name="genericCopyUrl">Copy URL</string>
|
||||
<!-- generic copy -->
|
||||
<string name="translateText">Translate GitNex with Crowdin</string>
|
||||
<string name="exploreTextBoxHint">Explore repositories</string>
|
||||
<string name="starRepository">Star Repository</string>
|
||||
<string name="unStarRepository">Unstar Repository</string>
|
||||
@ -504,7 +506,7 @@
|
||||
<string name="settingsEnableReportsText">Enable Crash Reports</string>
|
||||
<string name="crashTitle">GitNex has stopped :(</string>
|
||||
<string name="setCrashReports">Crash reports</string>
|
||||
<string name="crashMessage">You can tap the OK button to send the crash report by email. It will help to fix it :)\n\nYou can also add additional content in the email. Thank you!</string>
|
||||
<string name="crashMessage">It is encouraged to open an issue at the project repository with how to reproduce this bug. It is easier to debug and fix the problem that way.\n\nTap the OK button to send the crash report by email instead. Additional content could be added in the email.\nThank you!</string>
|
||||
<string name="forceLogoutDialogHeader">Please sign in again</string>
|
||||
<string name="forceLogoutDialogDescription">Due to some major changes regarding the internal functioning of the app, we require you to login again. These changes allow us to make the app more flexible in the future.\n\nThank you for your patience and sorry for the inconvenience.</string>
|
||||
<string name="deleteAllDrafts">Delete All Drafts</string>
|
||||
@ -518,6 +520,8 @@
|
||||
<string name="securityHintText">SSL certificates, cache, polling delay</string>
|
||||
<string name="languagesHintText">Languages</string>
|
||||
<string name="reportsHintText">Crash reports</string>
|
||||
<string name="rateAppHintText">If you like GitNex you can give it a thumbs up</string>
|
||||
<string name="aboutAppHintText">App version, build, user gitea version</string>
|
||||
<string name="archivedRepository">Archived</string>
|
||||
<string name="accountDeletedMessage">Account deleted successfully</string>
|
||||
<string name="removeAccountPopupTitle">Remove Account</string>
|
||||
@ -560,4 +564,26 @@
|
||||
<string name="repoSettingsDeleteDescription">Things to know before deletion:\n\n- This operation CANNOT be undone.\n- This operation will permanently delete the repository including code, issues, comments, wiki data and collaborator settings.\n\nEnter the repository name as confirmation</string>
|
||||
<string name="repoSettingsDeleteError">Repository name does not match</string>
|
||||
<string name="repoDeletionSuccess">Repository deleted successfully</string>
|
||||
<string name="repoSettingsTransferOwnership">Transfer Ownership</string>
|
||||
<string name="repoSettingsTransferOwnershipHint">Transfer this repository to a user or to an organization for which you have administrator rights</string>
|
||||
<string name="repoSettingsTransferOwnershipDescription">Things to know before transfer:\n\n- You will lose access to the repository if you transfer it to an individual user.\n- You will keep access to the repository if you transfer it to an organization that you (co-)own.\n\nEnter the repository name as confirmation</string>
|
||||
<string name="repoTransferText">Perform Transfer</string>
|
||||
<string name="repoTransferOwnerText">New Owner</string>
|
||||
<string name="repoTransferSuccess">Repository transferred successfully</string>
|
||||
<string name="repoTransferOwnerError">New owner is required</string>
|
||||
<string name="repoTransferError">There is a problem with the owner name. Make sure that the new owner exists</string>
|
||||
<string name="exploreFilterDialogTitle">Filter Repositories</string>
|
||||
<string name="exploreFilterIncludeTopic">Search ONLY in Topic</string>
|
||||
<string name="exploreFilterIncludeDesc">Search in Description</string>
|
||||
<string name="exploreFilterIncludeArchive">Only Archived Repositories</string>
|
||||
<string name="exploreFilterIncludePrivate">Only Private Repositories</string>
|
||||
<string name="exploreFilterIncludeTemplateRepos">Search in Template Repositories</string>
|
||||
<string name="mergeIntoBranch">Merge Into</string>
|
||||
<string name="pullFromBranch">Pull From</string>
|
||||
<string name="sameBranchesError">These branches are equal. There is no need to create a pull request</string>
|
||||
<string name="mergeIntoError">Merge into branch is required</string>
|
||||
<string name="pullFromError">Pull from branch is required</string>
|
||||
<string name="titleError">Title is required</string>
|
||||
<string name="prCreateSuccess">Pull Request created successfully</string>
|
||||
<string name="prAlreadyExists">A pull request between these branches already exists</string>
|
||||
</resources>
|
||||
|
@ -12,6 +12,7 @@
|
||||
<string name="navLogout">Déconnexion</string>
|
||||
<string name="navExplore">Explorer</string>
|
||||
<string name="navAdministration">Administration</string>
|
||||
<string name="navSearchIssuesPulls">Search Issues</string>
|
||||
<!-- menu items -->
|
||||
<!-- page titles -->
|
||||
<string name="pageTitleAbout">À propos</string>
|
||||
@ -37,6 +38,7 @@
|
||||
<string name="pageTitleExplore">Explorer</string>
|
||||
<string name="pageTitleAdministration">Administration de Gitea</string>
|
||||
<string name="pageTitleUserAccounts">Gestion des comptes</string>
|
||||
<string name="pageTitleNewPullRequest">Nouvelle demande de tirage</string>
|
||||
<!-- page titles -->
|
||||
<string name="repoName">Dépôt de démonstration</string>
|
||||
<string name="repoFullname">Nom complet du dépôt</string>
|
||||
@ -62,6 +64,7 @@
|
||||
<string name="navigation_drawer_open">Ouvrir le volet de navigation</string>
|
||||
<string name="navigation_drawer_close">Fermer le volet de navigation</string>
|
||||
<string name="logo">Se connecter à Gitea</string>
|
||||
<string name="protocol">Protocole</string>
|
||||
<string name="urlInfoTooltip">1. Choisissez le protocole adéquat (HTTPS ou HTTP)\n2. Entrez l’URL de votre instance Gitea (ex : try.gitea.io)\n3. Si l’authentification à deux facteurs est activée pour votre compte, saisissez le code OTP\n4. Pour une authentification basique avec HTTP, utilisez NOMDUTILISATEUR@DOMAINE.COM dans le champ URL GITEA</string>
|
||||
<string name="malformedUrl">Connexion impossible. Veuillez vérifier l’URL et le port</string>
|
||||
<string name="protocolError">Le protocole HTTP est déconseillé en dehors de tests sur un réseau local</string>
|
||||
@ -69,6 +72,7 @@
|
||||
<string name="emptyFieldURL">URL de l’instance requise</string>
|
||||
<string name="emptyFieldUsername">Nom d’utilisateur requis</string>
|
||||
<string name="emptyFieldPassword">Mot de passe requis</string>
|
||||
<string name="protocolEmptyError">Le protocole est requis</string>
|
||||
<string name="checkNetConnection">Impossible d’accéder au réseau, veuillez vérifier votre connexion Internet</string>
|
||||
<string name="netConnectionIsBack">On a Internet, youpi !</string>
|
||||
<string name="repoNameErrorEmpty">Nom manquant</string>
|
||||
@ -106,7 +110,6 @@
|
||||
<string name="tab_text_collaborators">Collaborateurs</string>
|
||||
<string name="tabPullRequests">Demandes de tirage</string>
|
||||
<string name="noDataIssueTab">Aucun ticket</string>
|
||||
<string name="infoTabRepoWebsite">Site Web</string>
|
||||
<string name="infoTabRepoSize">Taille</string>
|
||||
<string name="infoTabRepoDefaultBranch">Branche par défaut</string>
|
||||
<string name="infoTabRepoSshUrl">URL SSH</string>
|
||||
@ -419,7 +422,6 @@
|
||||
<string name="genericServerResponseError">Impossible de se connecter au serveur pour le moment, veuillez vérifier son statut puis réessayer</string>
|
||||
<string name="genericCopyUrl">Copier l’URL</string>
|
||||
<!-- generic copy -->
|
||||
<string name="translateText">Traduire GitNex avec Crowdin</string>
|
||||
<string name="exploreTextBoxHint">Explorer les dépôts</string>
|
||||
<string name="starRepository">Ajouter aux favoris</string>
|
||||
<string name="unStarRepository">Retirer des favoris</string>
|
||||
@ -504,7 +506,7 @@
|
||||
<string name="settingsEnableReportsText">Rapports de plantage</string>
|
||||
<string name="crashTitle">GitNex a planté :(</string>
|
||||
<string name="setCrashReports">Rapports de plantage</string>
|
||||
<string name="crashMessage">Cliquez sur OK pour nous envoyer un courriel avec le rapport de plantage. Cela nous aidera à corriger le problème. :)\n\nVous pouvez aussi ajouter vos propres observations. Merci !</string>
|
||||
<string name="crashMessage">Il est conseillé de créer un ticket expliquant comment reproduire ce bogue pour faciliter la correction du problème.\n\nAppuyez sur OK si vous préférez envoyer le rapport de plantage par courriel. Libre à vous d’y ajouter du contenu supplémentaire.\nMerci!</string>
|
||||
<string name="forceLogoutDialogHeader">Veuillez vous reconnecter</string>
|
||||
<string name="forceLogoutDialogDescription">Une reconnexion est nécessaire en raison de changements majeurs du fonctionnement interne pour améliorer la souplesse de l\'application.\n\nMerci pour votre patience et toutes nos excuses pour la gêne occasionnée.</string>
|
||||
<string name="deleteAllDrafts">Supprimer tous les brouillons</string>
|
||||
@ -518,6 +520,8 @@
|
||||
<string name="securityHintText">Certificats SSL, cache, scrutation des notifications</string>
|
||||
<string name="languagesHintText">Langues</string>
|
||||
<string name="reportsHintText">Rapports de plantage</string>
|
||||
<string name="rateAppHintText">Vous aimez GitNex ? Mettez-lui un pouce !</string>
|
||||
<string name="aboutAppHintText">app, build, gitea</string>
|
||||
<string name="archivedRepository">Archivé</string>
|
||||
<string name="accountDeletedMessage">Compte supprimé</string>
|
||||
<string name="removeAccountPopupTitle">Supprimer le compte</string>
|
||||
@ -546,18 +550,40 @@
|
||||
<string name="repoSettingsDelete">Supprimer le dépôt</string>
|
||||
<string name="repoSettingsDeleteHint">Attention, cette opération est IRRÉVERSIBLE !</string>
|
||||
<string name="repoPropertiesTemplate">Définir comme modèle</string>
|
||||
<string name="repoPropertiesEnableIssues">Autoriser les tickets</string>
|
||||
<string name="repoPropertiesEnableIssues">Activer les tickets</string>
|
||||
<string name="repoPropertiesExternalIssuesUrl">URL externe des tickets</string>
|
||||
<string name="repoPropertiesEnableWiki">Activer le Wiki</string>
|
||||
<string name="repoPropertiesExternalWikiUrl">URL externe du Wiki</string>
|
||||
<string name="repoPropertiesEnablePr">Autoriser les requêtes de tirage</string>
|
||||
<string name="repoPropertiesEnableTimeTracker">Autoriser l’horodatage</string>
|
||||
<string name="repoPropertiesEnableMergeCommits">Autoriser la fusion des révisions</string>
|
||||
<string name="repoPropertiesEnableRebase">Autoriser le rebasage</string>
|
||||
<string name="repoPropertiesEnableSquash">Enable Squash and Merge</string>
|
||||
<string name="repoPropertiesEnableForceMerge">Enable Rebase with Merge Commits (——no-ff)</string>
|
||||
<string name="repoPropertiesEnableWiki">Activer le wiki</string>
|
||||
<string name="repoPropertiesExternalWikiUrl">URL externe du wiki</string>
|
||||
<string name="repoPropertiesEnablePr">Activer les requêtes de tirage</string>
|
||||
<string name="repoPropertiesEnableTimeTracker">Activer l’horodatage</string>
|
||||
<string name="repoPropertiesEnableMergeCommits">Activer la fusion des révisions</string>
|
||||
<string name="repoPropertiesEnableRebase">Activer le rebasage</string>
|
||||
<string name="repoPropertiesEnableSquash">Activer squash et fusion</string>
|
||||
<string name="repoPropertiesEnableForceMerge">Activer resbasage avec révision de fusion (——no-ff)</string>
|
||||
<string name="repoPropertiesSaveSuccess">Propriétés du dépôt mises à jour</string>
|
||||
<string name="repoSettingsDeleteDescription">Cette opération est IRRÉVERSIBLE.\nSoyez conscient que le dépôt et son contenu (code, tickets, commentaires, wiki, contributions…) seront définitivement supprimés.\n\nEntrez le nom du dépôt afin de confirmer cette opération.</string>
|
||||
<string name="repoSettingsDeleteError">Nom du dépôt incorrect</string>
|
||||
<string name="repoDeletionSuccess">Dépôt supprimé</string>
|
||||
<string name="repoSettingsTransferOwnership">Changer de propriétaire</string>
|
||||
<string name="repoSettingsTransferOwnershipHint">Transfère le dépôt à un autre utilisateur ou une autre organisation dont vous possédez les droits d\'administrateur</string>
|
||||
<string name="repoSettingsTransferOwnershipDescription">Choses à savoir avant le transfert :\n\n- Vous perdez l’accès au dépôt si vous le transférez à un autre utilisateur.\n- Vous conservez l’accès au dépôt si vous le transférez à une organisation que vous (co-)gérez.\n\nEntrez le nom du dépôt pour confirmer</string>
|
||||
<string name="repoTransferText">Transférer</string>
|
||||
<string name="repoTransferOwnerText">Nouveau propriétaire</string>
|
||||
<string name="repoTransferSuccess">Dépôt transféré</string>
|
||||
<string name="repoTransferOwnerError">Un nouveau propriétaire est requis</string>
|
||||
<string name="repoTransferError">Erreur avec le nom du propriétaire. Assurez-vous que le nouveau propriétaire existe</string>
|
||||
<string name="exploreFilterDialogTitle">Filtrer les dépôts</string>
|
||||
<string name="exploreFilterIncludeTopic">Rechercher uniquement dans le sujet</string>
|
||||
<string name="exploreFilterIncludeDesc">Rechercher dans la description</string>
|
||||
<string name="exploreFilterIncludeArchive">Dépôts archivés seulement</string>
|
||||
<string name="exploreFilterIncludePrivate">Dépôts privés seulement</string>
|
||||
<string name="exploreFilterIncludeTemplateRepos">Rechercher dans les dépôts modèles</string>
|
||||
<string name="mergeIntoBranch">Fusionner dans</string>
|
||||
<string name="pullFromBranch">Tirer depuis</string>
|
||||
<string name="sameBranchesError">Ces branches sont identiques. La requête de tirage est inutile.</string>
|
||||
<string name="mergeIntoError">Fusion de branche requise</string>
|
||||
<string name="pullFromError">Tirage de branche requis</string>
|
||||
<string name="titleError">Titre requis</string>
|
||||
<string name="prCreateSuccess">Requête de tirage créé</string>
|
||||
<string name="prAlreadyExists">Une requête de tirage existe déjà entre ces branches</string>
|
||||
</resources>
|
||||
|
@ -12,6 +12,7 @@
|
||||
<string name="navLogout">Esci</string>
|
||||
<string name="navExplore">Esplora</string>
|
||||
<string name="navAdministration">Amministrazione</string>
|
||||
<string name="navSearchIssuesPulls">Search Issues</string>
|
||||
<!-- menu items -->
|
||||
<!-- page titles -->
|
||||
<string name="pageTitleAbout">Info su</string>
|
||||
@ -37,6 +38,7 @@
|
||||
<string name="pageTitleExplore">Esplora</string>
|
||||
<string name="pageTitleAdministration">Amministrazione Gitea</string>
|
||||
<string name="pageTitleUserAccounts">Manage Accounts</string>
|
||||
<string name="pageTitleNewPullRequest">New Pull Request</string>
|
||||
<!-- page titles -->
|
||||
<string name="repoName">Demo repo</string>
|
||||
<string name="repoFullname">Repo con ORG</string>
|
||||
@ -62,6 +64,7 @@
|
||||
<string name="navigation_drawer_open">Apri panello Navigazione</string>
|
||||
<string name="navigation_drawer_close">Chiudi panello Navigazione</string>
|
||||
<string name="logo">Accedi a Gitea</string>
|
||||
<string name="protocol">Protocol</string>
|
||||
<string name="urlInfoTooltip">1- Scegli il protocollo corretto(https or http). \n2- Enter Gitea url e.g: try.gitea.io. \n3- If you have enabled 2FA for your account, enter the code in the OTP Code field. \n4- For HTTP basic auth use USERNAME@DOMAIN.COM in the URL field.</string>
|
||||
<string name="malformedUrl">Couldn\'t connect to host. Please check your URL or port for any errors</string>
|
||||
<string name="protocolError">It is not recommended to use HTTP protocol unless you are testing on local network</string>
|
||||
@ -70,6 +73,7 @@
|
||||
URL è richiesto</string>
|
||||
<string name="emptyFieldUsername">Nome utente obbligatorio</string>
|
||||
<string name="emptyFieldPassword">Password obbligatoria</string>
|
||||
<string name="protocolEmptyError">Protocol is required</string>
|
||||
<string name="checkNetConnection">Errore di connessione. Controllare la connessione Internet</string>
|
||||
<string name="netConnectionIsBack">Yay, la connessione ad Internet funziona!</string>
|
||||
<string name="repoNameErrorEmpty">Il nome del repository è vuoto</string>
|
||||
@ -107,7 +111,6 @@ URL è richiesto</string>
|
||||
<string name="tab_text_collaborators">Collaboratori</string>
|
||||
<string name="tabPullRequests">Pull Requests</string>
|
||||
<string name="noDataIssueTab">Nessun problema trovato</string>
|
||||
<string name="infoTabRepoWebsite">Sito Web</string>
|
||||
<string name="infoTabRepoSize">Dimensione</string>
|
||||
<string name="infoTabRepoDefaultBranch">Branch predefinito</string>
|
||||
<string name="infoTabRepoSshUrl">SSH URL</string>
|
||||
@ -421,7 +424,6 @@ autorizzazione</string>
|
||||
<string name="genericServerResponseError">Al momento non possiamo raggiungere il server, controlla lo stato del tuo server e riprova</string>
|
||||
<string name="genericCopyUrl">Copy URL</string>
|
||||
<!-- generic copy -->
|
||||
<string name="translateText">Traduci GitNex con Crowdin</string>
|
||||
<string name="exploreTextBoxHint">Esplora i repository</string>
|
||||
<string name="starRepository">Repository star</string>
|
||||
<string name="unStarRepository">Unstar Repository</string>
|
||||
@ -506,7 +508,7 @@ autorizzazione</string>
|
||||
<string name="settingsEnableReportsText">Abilita Rapporti Crash</string>
|
||||
<string name="crashTitle">GitNex ha smesso di funzionare :(</string>
|
||||
<string name="setCrashReports">Rapporti crash</string>
|
||||
<string name="crashMessage">Puoi premere il pulsante OK per inviare la segnalazione di crash via email. Aiuterà a risolvere il problema :)\n\nPuoi anche aggiungere altri dettagli nell\'email. Grazie!</string>
|
||||
<string name="crashMessage">It is encouraged to open an issue at the project repository with how to reproduce this bug. It is easier to debug and fix the problem that way.\n\nTap the OK button to send the crash report by email instead. Additional content could be added in the email.\nThank you!</string>
|
||||
<string name="forceLogoutDialogHeader">Per favore accedi di nuovo</string>
|
||||
<string name="forceLogoutDialogDescription">A causa di alcune modifiche importanti riguardanti il funzionamento interno dell\'app, abbiamo bisogno che tu effettui nuovamente il login. Queste modifiche ci permettono di rendere l\'applicazione più flessibile in futuro.\n\nGrazie per la pazienza e ci scusiamo per il disagio.</string>
|
||||
<string name="deleteAllDrafts">Elimina Tutte Le Bozze</string>
|
||||
@ -520,6 +522,8 @@ autorizzazione</string>
|
||||
<string name="securityHintText">Certificati SSL, cache, ricerca di notifiche</string>
|
||||
<string name="languagesHintText">Lingue</string>
|
||||
<string name="reportsHintText">Rapporti crash</string>
|
||||
<string name="rateAppHintText">If you like GitNex you can give it a thumbs up</string>
|
||||
<string name="aboutAppHintText">App version, build, user gitea version</string>
|
||||
<string name="archivedRepository">Archiviato</string>
|
||||
<string name="accountDeletedMessage">Account eliminato con successo</string>
|
||||
<string name="removeAccountPopupTitle">Remove Account</string>
|
||||
@ -562,4 +566,26 @@ autorizzazione</string>
|
||||
<string name="repoSettingsDeleteDescription">Things to know before deletion:\n\n- This operation CANNOT be undone.\n- This operation will permanently delete the repository including code, issues, comments, wiki data and collaborator settings.\n\nEnter the repository name as confirmation</string>
|
||||
<string name="repoSettingsDeleteError">Repository name does not match</string>
|
||||
<string name="repoDeletionSuccess">Repository deleted successfully</string>
|
||||
<string name="repoSettingsTransferOwnership">Transfer Ownership</string>
|
||||
<string name="repoSettingsTransferOwnershipHint">Transfer this repository to a user or to an organization for which you have administrator rights</string>
|
||||
<string name="repoSettingsTransferOwnershipDescription">Things to know before transfer:\n\n- You will lose access to the repository if you transfer it to an individual user.\n- You will keep access to the repository if you transfer it to an organization that you (co-)own.\n\nEnter the repository name as confirmation</string>
|
||||
<string name="repoTransferText">Perform Transfer</string>
|
||||
<string name="repoTransferOwnerText">New Owner</string>
|
||||
<string name="repoTransferSuccess">Repository transferred successfully</string>
|
||||
<string name="repoTransferOwnerError">New owner is required</string>
|
||||
<string name="repoTransferError">There is a problem with the owner name. Make sure that the new owner exists</string>
|
||||
<string name="exploreFilterDialogTitle">Filter Repositories</string>
|
||||
<string name="exploreFilterIncludeTopic">Search ONLY in Topic</string>
|
||||
<string name="exploreFilterIncludeDesc">Search in Description</string>
|
||||
<string name="exploreFilterIncludeArchive">Only Archived Repositories</string>
|
||||
<string name="exploreFilterIncludePrivate">Only Private Repositories</string>
|
||||
<string name="exploreFilterIncludeTemplateRepos">Search in Template Repositories</string>
|
||||
<string name="mergeIntoBranch">Merge Into</string>
|
||||
<string name="pullFromBranch">Pull From</string>
|
||||
<string name="sameBranchesError">These branches are equal. There is no need to create a pull request</string>
|
||||
<string name="mergeIntoError">Merge into branch is required</string>
|
||||
<string name="pullFromError">Pull from branch is required</string>
|
||||
<string name="titleError">Title is required</string>
|
||||
<string name="prCreateSuccess">Pull Request created successfully</string>
|
||||
<string name="prAlreadyExists">A pull request between these branches already exists</string>
|
||||
</resources>
|
||||
|
@ -12,6 +12,7 @@
|
||||
<string name="navLogout">Logout</string>
|
||||
<string name="navExplore">Izpētīt</string>
|
||||
<string name="navAdministration">Administration</string>
|
||||
<string name="navSearchIssuesPulls">Search Issues</string>
|
||||
<!-- menu items -->
|
||||
<!-- page titles -->
|
||||
<string name="pageTitleAbout">Par</string>
|
||||
@ -37,6 +38,7 @@
|
||||
<string name="pageTitleExplore">Izpētīt</string>
|
||||
<string name="pageTitleAdministration">Gitea Administration</string>
|
||||
<string name="pageTitleUserAccounts">Manage Accounts</string>
|
||||
<string name="pageTitleNewPullRequest">New Pull Request</string>
|
||||
<!-- page titles -->
|
||||
<string name="repoName">Demo repo</string>
|
||||
<string name="repoFullname">Repo with ORG</string>
|
||||
@ -62,6 +64,7 @@
|
||||
<string name="navigation_drawer_open">Open Navigation Drawer</string>
|
||||
<string name="navigation_drawer_close">Close Navigation Drawer</string>
|
||||
<string name="logo">Login to Gitea</string>
|
||||
<string name="protocol">Protocol</string>
|
||||
<string name="urlInfoTooltip">1- Choose the correct protocol(https or http). \n2- Enter Gitea url e.g: try.gitea.io. \n3- If you have enabled 2FA for your account, enter the code in the OTP Code field. \n4- For HTTP basic auth use USERNAME@DOMAIN.COM in the URL field.</string>
|
||||
<string name="malformedUrl">Couldn\'t connect to host. Please check your URL or port for any errors</string>
|
||||
<string name="protocolError">It is not recommended to use HTTP protocol unless you are testing on local network</string>
|
||||
@ -69,6 +72,7 @@
|
||||
<string name="emptyFieldURL">Instance URL is required</string>
|
||||
<string name="emptyFieldUsername">Username is required</string>
|
||||
<string name="emptyFieldPassword">Password is required</string>
|
||||
<string name="protocolEmptyError">Protocol is required</string>
|
||||
<string name="checkNetConnection">Cannot access network, please check your Internet connection</string>
|
||||
<string name="netConnectionIsBack">Yay, We have Internet connection!</string>
|
||||
<string name="repoNameErrorEmpty">Repository name is empty</string>
|
||||
@ -106,7 +110,6 @@
|
||||
<string name="tab_text_collaborators">Collaborators</string>
|
||||
<string name="tabPullRequests">Pull Requests</string>
|
||||
<string name="noDataIssueTab">No issues found</string>
|
||||
<string name="infoTabRepoWebsite">Website</string>
|
||||
<string name="infoTabRepoSize">Size</string>
|
||||
<string name="infoTabRepoDefaultBranch">Default Branch</string>
|
||||
<string name="infoTabRepoSshUrl">SSH URL</string>
|
||||
@ -419,7 +422,6 @@
|
||||
<string name="genericServerResponseError">We cannot reach the server at the moment, please check your server status and try again</string>
|
||||
<string name="genericCopyUrl">Copy URL</string>
|
||||
<!-- generic copy -->
|
||||
<string name="translateText">Translate GitNex with Crowdin</string>
|
||||
<string name="exploreTextBoxHint">Explore repositories</string>
|
||||
<string name="starRepository">Star Repository</string>
|
||||
<string name="unStarRepository">Unstar Repository</string>
|
||||
@ -504,7 +506,7 @@
|
||||
<string name="settingsEnableReportsText">Enable Crash Reports</string>
|
||||
<string name="crashTitle">GitNex has stopped :(</string>
|
||||
<string name="setCrashReports">Crash reports</string>
|
||||
<string name="crashMessage">You can tap the OK button to send the crash report by email. It will help to fix it :)\n\nYou can also add additional content in the email. Thank you!</string>
|
||||
<string name="crashMessage">It is encouraged to open an issue at the project repository with how to reproduce this bug. It is easier to debug and fix the problem that way.\n\nTap the OK button to send the crash report by email instead. Additional content could be added in the email.\nThank you!</string>
|
||||
<string name="forceLogoutDialogHeader">Please sign in again</string>
|
||||
<string name="forceLogoutDialogDescription">Due to some major changes regarding the internal functioning of the app, we require you to login again. These changes allow us to make the app more flexible in the future.\n\nThank you for your patience and sorry for the inconvenience.</string>
|
||||
<string name="deleteAllDrafts">Delete All Drafts</string>
|
||||
@ -518,6 +520,8 @@
|
||||
<string name="securityHintText">SSL certificates, cache, polling delay</string>
|
||||
<string name="languagesHintText">Languages</string>
|
||||
<string name="reportsHintText">Crash reports</string>
|
||||
<string name="rateAppHintText">If you like GitNex you can give it a thumbs up</string>
|
||||
<string name="aboutAppHintText">App version, build, user gitea version</string>
|
||||
<string name="archivedRepository">Archived</string>
|
||||
<string name="accountDeletedMessage">Account deleted successfully</string>
|
||||
<string name="removeAccountPopupTitle">Remove Account</string>
|
||||
@ -560,4 +564,26 @@
|
||||
<string name="repoSettingsDeleteDescription">Things to know before deletion:\n\n- This operation CANNOT be undone.\n- This operation will permanently delete the repository including code, issues, comments, wiki data and collaborator settings.\n\nEnter the repository name as confirmation</string>
|
||||
<string name="repoSettingsDeleteError">Repository name does not match</string>
|
||||
<string name="repoDeletionSuccess">Repository deleted successfully</string>
|
||||
<string name="repoSettingsTransferOwnership">Transfer Ownership</string>
|
||||
<string name="repoSettingsTransferOwnershipHint">Transfer this repository to a user or to an organization for which you have administrator rights</string>
|
||||
<string name="repoSettingsTransferOwnershipDescription">Things to know before transfer:\n\n- You will lose access to the repository if you transfer it to an individual user.\n- You will keep access to the repository if you transfer it to an organization that you (co-)own.\n\nEnter the repository name as confirmation</string>
|
||||
<string name="repoTransferText">Perform Transfer</string>
|
||||
<string name="repoTransferOwnerText">New Owner</string>
|
||||
<string name="repoTransferSuccess">Repository transferred successfully</string>
|
||||
<string name="repoTransferOwnerError">New owner is required</string>
|
||||
<string name="repoTransferError">There is a problem with the owner name. Make sure that the new owner exists</string>
|
||||
<string name="exploreFilterDialogTitle">Filter Repositories</string>
|
||||
<string name="exploreFilterIncludeTopic">Search ONLY in Topic</string>
|
||||
<string name="exploreFilterIncludeDesc">Search in Description</string>
|
||||
<string name="exploreFilterIncludeArchive">Only Archived Repositories</string>
|
||||
<string name="exploreFilterIncludePrivate">Only Private Repositories</string>
|
||||
<string name="exploreFilterIncludeTemplateRepos">Search in Template Repositories</string>
|
||||
<string name="mergeIntoBranch">Merge Into</string>
|
||||
<string name="pullFromBranch">Pull From</string>
|
||||
<string name="sameBranchesError">These branches are equal. There is no need to create a pull request</string>
|
||||
<string name="mergeIntoError">Merge into branch is required</string>
|
||||
<string name="pullFromError">Pull from branch is required</string>
|
||||
<string name="titleError">Title is required</string>
|
||||
<string name="prCreateSuccess">Pull Request created successfully</string>
|
||||
<string name="prAlreadyExists">A pull request between these branches already exists</string>
|
||||
</resources>
|
||||
|
@ -12,6 +12,7 @@
|
||||
<string name="navLogout">Wyloguj się</string>
|
||||
<string name="navExplore">Przeglądaj</string>
|
||||
<string name="navAdministration">Administration</string>
|
||||
<string name="navSearchIssuesPulls">Search Issues</string>
|
||||
<!-- menu items -->
|
||||
<!-- page titles -->
|
||||
<string name="pageTitleAbout">O programie</string>
|
||||
@ -37,6 +38,7 @@
|
||||
<string name="pageTitleExplore">Przeglądaj</string>
|
||||
<string name="pageTitleAdministration">Gitea Administration</string>
|
||||
<string name="pageTitleUserAccounts">Manage Accounts</string>
|
||||
<string name="pageTitleNewPullRequest">New Pull Request</string>
|
||||
<!-- page titles -->
|
||||
<string name="repoName">Repozytorium demo</string>
|
||||
<string name="repoFullname">Repozytorium z ORG</string>
|
||||
@ -62,6 +64,7 @@
|
||||
<string name="navigation_drawer_open">Otwórz szufladę nawigacji</string>
|
||||
<string name="navigation_drawer_close">Zamknij szufladę nawigacji</string>
|
||||
<string name="logo">Zaloguj się do Gitea</string>
|
||||
<string name="protocol">Protocol</string>
|
||||
<string name="urlInfoTooltip">1- Wybierz poprawny protokół (https lub http). \n2- Wprowadź adres URL Gitea np: try.gitea.io. \n3- Jeśli włączyłeś 2FA dla swojego konta, wprowadź kod w polu OTP Code. \n4 - Dla podstawowej autoryzacji HTTP użyj NAZWAUŻYTKOWNIKA@STRONA.PL w polu URL.</string>
|
||||
<string name="malformedUrl">Couldn\'t connect to host. Please check your URL or port for any errors</string>
|
||||
<string name="protocolError">It is not recommended to use HTTP protocol unless you are testing on local network</string>
|
||||
@ -69,6 +72,7 @@
|
||||
<string name="emptyFieldURL">Adres URL instancji jest wymagany</string>
|
||||
<string name="emptyFieldUsername">Nazwa użytkownika jest wymagana</string>
|
||||
<string name="emptyFieldPassword">Hasło jest wymagane</string>
|
||||
<string name="protocolEmptyError">Protocol is required</string>
|
||||
<string name="checkNetConnection">Nie można uzyskać dostępu do sieci, sprawdź swoje połączenie internetowe</string>
|
||||
<string name="netConnectionIsBack">Jej, mamy połączenie z Internetem!</string>
|
||||
<string name="repoNameErrorEmpty">Nazwa repozytorium jest pusta</string>
|
||||
@ -106,7 +110,6 @@
|
||||
<string name="tab_text_collaborators">Współpracownicy</string>
|
||||
<string name="tabPullRequests">Pull Requesty</string>
|
||||
<string name="noDataIssueTab">Nie znaleziono problemów</string>
|
||||
<string name="infoTabRepoWebsite">Strona internetowa</string>
|
||||
<string name="infoTabRepoSize">Rozmiar</string>
|
||||
<string name="infoTabRepoDefaultBranch">Domyślna gałąź</string>
|
||||
<string name="infoTabRepoSshUrl">Adres URL SSH</string>
|
||||
@ -419,7 +422,6 @@
|
||||
<string name="genericServerResponseError">We cannot reach the server at the moment, please check your server status and try again</string>
|
||||
<string name="genericCopyUrl">Copy URL</string>
|
||||
<!-- generic copy -->
|
||||
<string name="translateText">Przetłumacz GitNex z Crowdin</string>
|
||||
<string name="exploreTextBoxHint">Przeglądaj repozytoria</string>
|
||||
<string name="starRepository">Ogwiazdkuj repozytorium</string>
|
||||
<string name="unStarRepository">Odgwiazdkuj repozytorium</string>
|
||||
@ -504,7 +506,7 @@
|
||||
<string name="settingsEnableReportsText">Włącz raporty awarii</string>
|
||||
<string name="crashTitle">GitNex zatrzymał się :(</string>
|
||||
<string name="setCrashReports">Raporty awarii</string>
|
||||
<string name="crashMessage">Możesz nacisnąć przycisk OK, aby wysłać raport o awarii pocztą elektroniczną. Pomoże to naprawić to :)\n\nMożesz również dodać dodatkowe treści w wiadomości e-mail. Dziękujemy!</string>
|
||||
<string name="crashMessage">It is encouraged to open an issue at the project repository with how to reproduce this bug. It is easier to debug and fix the problem that way.\n\nTap the OK button to send the crash report by email instead. Additional content could be added in the email.\nThank you!</string>
|
||||
<string name="forceLogoutDialogHeader">Please sign in again</string>
|
||||
<string name="forceLogoutDialogDescription">Due to some major changes regarding the internal functioning of the app, we require you to login again. These changes allow us to make the app more flexible in the future.\n\nThank you for your patience and sorry for the inconvenience.</string>
|
||||
<string name="deleteAllDrafts">Delete All Drafts</string>
|
||||
@ -518,6 +520,8 @@
|
||||
<string name="securityHintText">SSL certificates, cache, polling delay</string>
|
||||
<string name="languagesHintText">Languages</string>
|
||||
<string name="reportsHintText">Crash reports</string>
|
||||
<string name="rateAppHintText">If you like GitNex you can give it a thumbs up</string>
|
||||
<string name="aboutAppHintText">App version, build, user gitea version</string>
|
||||
<string name="archivedRepository">Archived</string>
|
||||
<string name="accountDeletedMessage">Account deleted successfully</string>
|
||||
<string name="removeAccountPopupTitle">Remove Account</string>
|
||||
@ -560,4 +564,26 @@
|
||||
<string name="repoSettingsDeleteDescription">Things to know before deletion:\n\n- This operation CANNOT be undone.\n- This operation will permanently delete the repository including code, issues, comments, wiki data and collaborator settings.\n\nEnter the repository name as confirmation</string>
|
||||
<string name="repoSettingsDeleteError">Repository name does not match</string>
|
||||
<string name="repoDeletionSuccess">Repository deleted successfully</string>
|
||||
<string name="repoSettingsTransferOwnership">Transfer Ownership</string>
|
||||
<string name="repoSettingsTransferOwnershipHint">Transfer this repository to a user or to an organization for which you have administrator rights</string>
|
||||
<string name="repoSettingsTransferOwnershipDescription">Things to know before transfer:\n\n- You will lose access to the repository if you transfer it to an individual user.\n- You will keep access to the repository if you transfer it to an organization that you (co-)own.\n\nEnter the repository name as confirmation</string>
|
||||
<string name="repoTransferText">Perform Transfer</string>
|
||||
<string name="repoTransferOwnerText">New Owner</string>
|
||||
<string name="repoTransferSuccess">Repository transferred successfully</string>
|
||||
<string name="repoTransferOwnerError">New owner is required</string>
|
||||
<string name="repoTransferError">There is a problem with the owner name. Make sure that the new owner exists</string>
|
||||
<string name="exploreFilterDialogTitle">Filter Repositories</string>
|
||||
<string name="exploreFilterIncludeTopic">Search ONLY in Topic</string>
|
||||
<string name="exploreFilterIncludeDesc">Search in Description</string>
|
||||
<string name="exploreFilterIncludeArchive">Only Archived Repositories</string>
|
||||
<string name="exploreFilterIncludePrivate">Only Private Repositories</string>
|
||||
<string name="exploreFilterIncludeTemplateRepos">Search in Template Repositories</string>
|
||||
<string name="mergeIntoBranch">Merge Into</string>
|
||||
<string name="pullFromBranch">Pull From</string>
|
||||
<string name="sameBranchesError">These branches are equal. There is no need to create a pull request</string>
|
||||
<string name="mergeIntoError">Merge into branch is required</string>
|
||||
<string name="pullFromError">Pull from branch is required</string>
|
||||
<string name="titleError">Title is required</string>
|
||||
<string name="prCreateSuccess">Pull Request created successfully</string>
|
||||
<string name="prAlreadyExists">A pull request between these branches already exists</string>
|
||||
</resources>
|
||||
|
@ -12,6 +12,7 @@
|
||||
<string name="navLogout">Sair</string>
|
||||
<string name="navExplore">Explorar</string>
|
||||
<string name="navAdministration">Administração</string>
|
||||
<string name="navSearchIssuesPulls">Search Issues</string>
|
||||
<!-- menu items -->
|
||||
<!-- page titles -->
|
||||
<string name="pageTitleAbout">Sobre</string>
|
||||
@ -37,6 +38,7 @@
|
||||
<string name="pageTitleExplore">Explorar</string>
|
||||
<string name="pageTitleAdministration">Administração de Gitea</string>
|
||||
<string name="pageTitleUserAccounts">Gerenciar contas</string>
|
||||
<string name="pageTitleNewPullRequest">New Pull Request</string>
|
||||
<!-- page titles -->
|
||||
<string name="repoName">Repo demo</string>
|
||||
<string name="repoFullname">Repo com ORG</string>
|
||||
@ -62,6 +64,7 @@
|
||||
<string name="navigation_drawer_open">Abrir painel de navegação</string>
|
||||
<string name="navigation_drawer_close">Fechar painel de navegação</string>
|
||||
<string name="logo">Conectar no Gitea</string>
|
||||
<string name="protocol">Protocol</string>
|
||||
<string name="urlInfoTooltip">1- Escolha o protocolo correto (https ou http). \n2- Insira a url do Gitea. Por exemplo: try.gitea.io. \n3 - Se você habilitou 2FA para sua conta, digite o código no campo de código OTP. \n4- Para autenticação básica HTTP use USUARIO@DOMINIO.COM no campo URL.</string>
|
||||
<string name="malformedUrl">Não foi possível conectar-se ao host. Por favor verifique sua URL ou porta para ver se há algum erro</string>
|
||||
<string name="protocolError">Não é recomendado usar o protocolo HTTP a menos que você esteja testando na rede local</string>
|
||||
@ -69,6 +72,7 @@
|
||||
<string name="emptyFieldURL">A URL da instância é necessária</string>
|
||||
<string name="emptyFieldUsername">Nome de usuário é necessário</string>
|
||||
<string name="emptyFieldPassword">A senha é necessária</string>
|
||||
<string name="protocolEmptyError">Protocol is required</string>
|
||||
<string name="checkNetConnection">Não é possível acessar a rede, por favor, verifique sua conexão com a Internet</string>
|
||||
<string name="netConnectionIsBack">Opa, temos conexão com a Internet!</string>
|
||||
<string name="repoNameErrorEmpty">Nome do repositório está vazio</string>
|
||||
@ -106,7 +110,6 @@
|
||||
<string name="tab_text_collaborators">Colaboradores</string>
|
||||
<string name="tabPullRequests">Pull requests</string>
|
||||
<string name="noDataIssueTab">Nenhum incidente encontrado</string>
|
||||
<string name="infoTabRepoWebsite">Site da Web</string>
|
||||
<string name="infoTabRepoSize">Tamanho</string>
|
||||
<string name="infoTabRepoDefaultBranch">Branch padrão</string>
|
||||
<string name="infoTabRepoSshUrl">URL de SSH</string>
|
||||
@ -419,7 +422,6 @@
|
||||
<string name="genericServerResponseError">Não conseguimos encontrar o servidor no momento, por favor, verifique o status do seu servidor e tente novamente</string>
|
||||
<string name="genericCopyUrl">Copiar URL</string>
|
||||
<!-- generic copy -->
|
||||
<string name="translateText">Traduza o GitNex com Crowdin</string>
|
||||
<string name="exploreTextBoxHint">Explorar repositórios</string>
|
||||
<string name="starRepository">Favoritar repositório</string>
|
||||
<string name="unStarRepository">Desfavoritar repositório</string>
|
||||
@ -504,7 +506,7 @@
|
||||
<string name="settingsEnableReportsText">Ativar relatórios de erros</string>
|
||||
<string name="crashTitle">GitNex parou :(</string>
|
||||
<string name="setCrashReports">Relatórios de erros</string>
|
||||
<string name="crashMessage">Você pode tocar no botão OK para enviar o relatório de erro por e-mail. Ajudará a consertá-lo :)\n\nVocê também pode adicionar conteúdo adicional no e-mail. Obrigado!</string>
|
||||
<string name="crashMessage">It is encouraged to open an issue at the project repository with how to reproduce this bug. It is easier to debug and fix the problem that way.\n\nTap the OK button to send the crash report by email instead. Additional content could be added in the email.\nThank you!</string>
|
||||
<string name="forceLogoutDialogHeader">Por favor, faça o login novamente</string>
|
||||
<string name="forceLogoutDialogDescription">Devido a algumas mudanças principais no funcionamento interno do aplicativo, exigimos que você faça o login novamente. Essas alterações nos permitem tornar o aplicativo mais flexível no futuro.\n\nAgradecemos por sua paciência e lamentamos o inconveniente.</string>
|
||||
<string name="deleteAllDrafts">Excluir Todos os Rascunhos</string>
|
||||
@ -518,6 +520,8 @@
|
||||
<string name="securityHintText">Certificados SSL, cache e atraso de pesquisa</string>
|
||||
<string name="languagesHintText">Idiomas</string>
|
||||
<string name="reportsHintText">Relatórios de erros</string>
|
||||
<string name="rateAppHintText">If you like GitNex you can give it a thumbs up</string>
|
||||
<string name="aboutAppHintText">App version, build, user gitea version</string>
|
||||
<string name="archivedRepository">Arquivado</string>
|
||||
<string name="accountDeletedMessage">Conta excluída com êxito</string>
|
||||
<string name="removeAccountPopupTitle">Excluir Conta</string>
|
||||
@ -560,4 +564,26 @@
|
||||
<string name="repoSettingsDeleteDescription">Things to know before deletion:\n\n- This operation CANNOT be undone.\n- This operation will permanently delete the repository including code, issues, comments, wiki data and collaborator settings.\n\nEnter the repository name as confirmation</string>
|
||||
<string name="repoSettingsDeleteError">Repository name does not match</string>
|
||||
<string name="repoDeletionSuccess">Repository deleted successfully</string>
|
||||
<string name="repoSettingsTransferOwnership">Transfer Ownership</string>
|
||||
<string name="repoSettingsTransferOwnershipHint">Transfer this repository to a user or to an organization for which you have administrator rights</string>
|
||||
<string name="repoSettingsTransferOwnershipDescription">Things to know before transfer:\n\n- You will lose access to the repository if you transfer it to an individual user.\n- You will keep access to the repository if you transfer it to an organization that you (co-)own.\n\nEnter the repository name as confirmation</string>
|
||||
<string name="repoTransferText">Perform Transfer</string>
|
||||
<string name="repoTransferOwnerText">New Owner</string>
|
||||
<string name="repoTransferSuccess">Repository transferred successfully</string>
|
||||
<string name="repoTransferOwnerError">New owner is required</string>
|
||||
<string name="repoTransferError">There is a problem with the owner name. Make sure that the new owner exists</string>
|
||||
<string name="exploreFilterDialogTitle">Filter Repositories</string>
|
||||
<string name="exploreFilterIncludeTopic">Search ONLY in Topic</string>
|
||||
<string name="exploreFilterIncludeDesc">Search in Description</string>
|
||||
<string name="exploreFilterIncludeArchive">Only Archived Repositories</string>
|
||||
<string name="exploreFilterIncludePrivate">Only Private Repositories</string>
|
||||
<string name="exploreFilterIncludeTemplateRepos">Search in Template Repositories</string>
|
||||
<string name="mergeIntoBranch">Merge Into</string>
|
||||
<string name="pullFromBranch">Pull From</string>
|
||||
<string name="sameBranchesError">These branches are equal. There is no need to create a pull request</string>
|
||||
<string name="mergeIntoError">Merge into branch is required</string>
|
||||
<string name="pullFromError">Pull from branch is required</string>
|
||||
<string name="titleError">Title is required</string>
|
||||
<string name="prCreateSuccess">Pull Request created successfully</string>
|
||||
<string name="prAlreadyExists">A pull request between these branches already exists</string>
|
||||
</resources>
|
||||
|
@ -12,6 +12,7 @@
|
||||
<string name="navLogout">Выход</string>
|
||||
<string name="navExplore">Обзор</string>
|
||||
<string name="navAdministration">Администрирование</string>
|
||||
<string name="navSearchIssuesPulls">Search Issues</string>
|
||||
<!-- menu items -->
|
||||
<!-- page titles -->
|
||||
<string name="pageTitleAbout">О программе</string>
|
||||
@ -37,6 +38,7 @@
|
||||
<string name="pageTitleExplore">Обзор</string>
|
||||
<string name="pageTitleAdministration">Администрирование Gitea</string>
|
||||
<string name="pageTitleUserAccounts">Управление аккаунтами</string>
|
||||
<string name="pageTitleNewPullRequest">New Pull Request</string>
|
||||
<!-- page titles -->
|
||||
<string name="repoName">Демо репозиторий</string>
|
||||
<string name="repoFullname">Репозиторий с организацией</string>
|
||||
@ -62,6 +64,7 @@
|
||||
<string name="navigation_drawer_open">Открыть навигацию</string>
|
||||
<string name="navigation_drawer_close">Закрыть навигацию</string>
|
||||
<string name="logo">Войти в Gitea</string>
|
||||
<string name="protocol">Protocol</string>
|
||||
<string name="urlInfoTooltip">1. Выберите протокол (https или http) \n2. Укажите URL Gitea, например: try.gitea.io \n3. Если для учетной записи включена 2FA, введите код OTP в соответствующее поле. \n4. Для базовой аутентификации HTTP укажите USERNAME@DOMAIN.COM в поле URL.</string>
|
||||
<string name="malformedUrl">Не удалось подключиться к хосту. Пожалуйста, проверьте URL-адрес или порт на наличие ошибок</string>
|
||||
<string name="protocolError">Не рекомендуется использовать протокол HTTP, если вы не тестируете в локальной сети</string>
|
||||
@ -69,6 +72,7 @@
|
||||
<string name="emptyFieldURL">Требуется URL экземпляра</string>
|
||||
<string name="emptyFieldUsername">Требуется имя пользователя</string>
|
||||
<string name="emptyFieldPassword">Требуется пароль</string>
|
||||
<string name="protocolEmptyError">Protocol is required</string>
|
||||
<string name="checkNetConnection">Нет подключения к интернету, проверьте наличие связи.</string>
|
||||
<string name="netConnectionIsBack">Ура, у нас есть интернет!</string>
|
||||
<string name="repoNameErrorEmpty">Название репозитория пустое.</string>
|
||||
@ -106,7 +110,6 @@
|
||||
<string name="tab_text_collaborators">Сотрудники</string>
|
||||
<string name="tabPullRequests">Запросы на слияние</string>
|
||||
<string name="noDataIssueTab">Задач не обнаружено</string>
|
||||
<string name="infoTabRepoWebsite">Сайт</string>
|
||||
<string name="infoTabRepoSize">Размер</string>
|
||||
<string name="infoTabRepoDefaultBranch">Ветка по умолчанию</string>
|
||||
<string name="infoTabRepoSshUrl">SSH/URL</string>
|
||||
@ -419,7 +422,6 @@
|
||||
<string name="genericServerResponseError">На данный момент мы не можем подключиться к серверу, пожалуйста, проверьте статус вашего сервера и повторите попытку</string>
|
||||
<string name="genericCopyUrl">Копировать URL</string>
|
||||
<!-- generic copy -->
|
||||
<string name="translateText">Перевести GitNex на Crowdin</string>
|
||||
<string name="exploreTextBoxHint">Просмотреть репозитории</string>
|
||||
<string name="starRepository">Репозиторий в избранное</string>
|
||||
<string name="unStarRepository">Убрать из избранного</string>
|
||||
@ -504,7 +506,7 @@
|
||||
<string name="settingsEnableReportsText">Включить отчёты об ошибках</string>
|
||||
<string name="crashTitle">GitNex остановлен :(</string>
|
||||
<string name="setCrashReports">Отчёты об ошибках</string>
|
||||
<string name="crashMessage">Вы можете нажать на кнопку ОК, чтобы отправить отчёт об ошибке по электронной почте. Это поможет исправить это :)\n\nВы также можете добавить дополнительный контент в электронную почту. Спасибо!</string>
|
||||
<string name="crashMessage">It is encouraged to open an issue at the project repository with how to reproduce this bug. It is easier to debug and fix the problem that way.\n\nTap the OK button to send the crash report by email instead. Additional content could be added in the email.\nThank you!</string>
|
||||
<string name="forceLogoutDialogHeader">Пожалуйста, войдите снова</string>
|
||||
<string name="forceLogoutDialogDescription">В связи с некоторыми существенными изменениями, касающимися внутренней работы приложения, мы просим вас снова войти в систему. Эти изменения позволяют сделать приложение более гибким в будущем.\n\nБлагодарим вас за терпение и приносим извинения за неудобства.</string>
|
||||
<string name="deleteAllDrafts">Удалить все черновики</string>
|
||||
@ -518,6 +520,8 @@
|
||||
<string name="securityHintText">SSL-сертификаты, кэш, задержка опроса</string>
|
||||
<string name="languagesHintText">Языки</string>
|
||||
<string name="reportsHintText">Отчёты об ошибках</string>
|
||||
<string name="rateAppHintText">If you like GitNex you can give it a thumbs up</string>
|
||||
<string name="aboutAppHintText">App version, build, user gitea version</string>
|
||||
<string name="archivedRepository">Архивировано</string>
|
||||
<string name="accountDeletedMessage">Учётная запись успешно удалена</string>
|
||||
<string name="removeAccountPopupTitle">Удалить учётную запись</string>
|
||||
@ -560,4 +564,26 @@
|
||||
<string name="repoSettingsDeleteDescription">Things to know before deletion:\n\n- This operation CANNOT be undone.\n- This operation will permanently delete the repository including code, issues, comments, wiki data and collaborator settings.\n\nEnter the repository name as confirmation</string>
|
||||
<string name="repoSettingsDeleteError">Repository name does not match</string>
|
||||
<string name="repoDeletionSuccess">Repository deleted successfully</string>
|
||||
<string name="repoSettingsTransferOwnership">Transfer Ownership</string>
|
||||
<string name="repoSettingsTransferOwnershipHint">Transfer this repository to a user or to an organization for which you have administrator rights</string>
|
||||
<string name="repoSettingsTransferOwnershipDescription">Things to know before transfer:\n\n- You will lose access to the repository if you transfer it to an individual user.\n- You will keep access to the repository if you transfer it to an organization that you (co-)own.\n\nEnter the repository name as confirmation</string>
|
||||
<string name="repoTransferText">Perform Transfer</string>
|
||||
<string name="repoTransferOwnerText">New Owner</string>
|
||||
<string name="repoTransferSuccess">Repository transferred successfully</string>
|
||||
<string name="repoTransferOwnerError">New owner is required</string>
|
||||
<string name="repoTransferError">There is a problem with the owner name. Make sure that the new owner exists</string>
|
||||
<string name="exploreFilterDialogTitle">Filter Repositories</string>
|
||||
<string name="exploreFilterIncludeTopic">Search ONLY in Topic</string>
|
||||
<string name="exploreFilterIncludeDesc">Search in Description</string>
|
||||
<string name="exploreFilterIncludeArchive">Only Archived Repositories</string>
|
||||
<string name="exploreFilterIncludePrivate">Only Private Repositories</string>
|
||||
<string name="exploreFilterIncludeTemplateRepos">Search in Template Repositories</string>
|
||||
<string name="mergeIntoBranch">Merge Into</string>
|
||||
<string name="pullFromBranch">Pull From</string>
|
||||
<string name="sameBranchesError">These branches are equal. There is no need to create a pull request</string>
|
||||
<string name="mergeIntoError">Merge into branch is required</string>
|
||||
<string name="pullFromError">Pull from branch is required</string>
|
||||
<string name="titleError">Title is required</string>
|
||||
<string name="prCreateSuccess">Pull Request created successfully</string>
|
||||
<string name="prAlreadyExists">A pull request between these branches already exists</string>
|
||||
</resources>
|
||||
|
@ -12,6 +12,7 @@
|
||||
<string name="navLogout">Одјави ме</string>
|
||||
<string name="navExplore">Претражи репозиторијуме</string>
|
||||
<string name="navAdministration">Administration</string>
|
||||
<string name="navSearchIssuesPulls">Search Issues</string>
|
||||
<!-- menu items -->
|
||||
<!-- page titles -->
|
||||
<string name="pageTitleAbout">О програму</string>
|
||||
@ -37,6 +38,7 @@
|
||||
<string name="pageTitleExplore">Претражи репозиторијуме</string>
|
||||
<string name="pageTitleAdministration">Gitea Administration</string>
|
||||
<string name="pageTitleUserAccounts">Manage Accounts</string>
|
||||
<string name="pageTitleNewPullRequest">New Pull Request</string>
|
||||
<!-- page titles -->
|
||||
<string name="repoName">Демо репозиторијум</string>
|
||||
<string name="repoFullname">Репозиторијум са ORG</string>
|
||||
@ -62,6 +64,7 @@
|
||||
<string name="navigation_drawer_open">Отвори навигацију</string>
|
||||
<string name="navigation_drawer_close">Затвори навигацију</string>
|
||||
<string name="logo">Пријави ме</string>
|
||||
<string name="protocol">Protocol</string>
|
||||
<string name="urlInfoTooltip">1. Одабери одговарајући протокол (HTTPS или HTTP).\n2. Унеси URL инстанце, нпр. try.gitea.io.\n3. Ако користиш 2FA, унеси OTP код.\n4. Ако користиш HTTP протокол, унеси URL инстанце у формату korisnickoime@domen.com.</string>
|
||||
<string name="malformedUrl">Couldn\'t connect to host. Please check your URL or port for any errors</string>
|
||||
<string name="protocolError">It is not recommended to use HTTP protocol unless you are testing on local network</string>
|
||||
@ -69,6 +72,7 @@
|
||||
<string name="emptyFieldURL">URL инстанце је обавезан</string>
|
||||
<string name="emptyFieldUsername">Корисничко име је обавезно</string>
|
||||
<string name="emptyFieldPassword">Лозинка је обавезна</string>
|
||||
<string name="protocolEmptyError">Protocol is required</string>
|
||||
<string name="checkNetConnection">Не могу да приступим мрежи, провери интернет конекцију</string>
|
||||
<string name="netConnectionIsBack">Yay, We have Internet connection!</string>
|
||||
<string name="repoNameErrorEmpty">Назив репозиторијума је обавезан</string>
|
||||
@ -106,7 +110,6 @@
|
||||
<string name="tab_text_collaborators">Сарадници</string>
|
||||
<string name="tabPullRequests">Пул захтеви</string>
|
||||
<string name="noDataIssueTab">Ниједан задатак није пронађен</string>
|
||||
<string name="infoTabRepoWebsite">Веб-сајт</string>
|
||||
<string name="infoTabRepoSize">Величина</string>
|
||||
<string name="infoTabRepoDefaultBranch">Подразумевана грана</string>
|
||||
<string name="infoTabRepoSshUrl">SSH URL</string>
|
||||
@ -419,7 +422,6 @@
|
||||
<string name="genericServerResponseError">We cannot reach the server at the moment, please check your server status and try again</string>
|
||||
<string name="genericCopyUrl">Copy URL</string>
|
||||
<!-- generic copy -->
|
||||
<string name="translateText">Преведи GitNex на платформи Crowdin</string>
|
||||
<string name="exploreTextBoxHint">Претражи репозиторијуме</string>
|
||||
<string name="starRepository">Додај у омиљене</string>
|
||||
<string name="unStarRepository">Уклони из омиљених</string>
|
||||
@ -504,7 +506,7 @@
|
||||
<string name="settingsEnableReportsText">Enable Crash Reports</string>
|
||||
<string name="crashTitle">GitNex has stopped :(</string>
|
||||
<string name="setCrashReports">Crash reports</string>
|
||||
<string name="crashMessage">You can tap the OK button to send the crash report by email. It will help to fix it :)\n\nYou can also add additional content in the email. Thank you!</string>
|
||||
<string name="crashMessage">It is encouraged to open an issue at the project repository with how to reproduce this bug. It is easier to debug and fix the problem that way.\n\nTap the OK button to send the crash report by email instead. Additional content could be added in the email.\nThank you!</string>
|
||||
<string name="forceLogoutDialogHeader">Please sign in again</string>
|
||||
<string name="forceLogoutDialogDescription">Due to some major changes regarding the internal functioning of the app, we require you to login again. These changes allow us to make the app more flexible in the future.\n\nThank you for your patience and sorry for the inconvenience.</string>
|
||||
<string name="deleteAllDrafts">Delete All Drafts</string>
|
||||
@ -518,6 +520,8 @@
|
||||
<string name="securityHintText">SSL certificates, cache, polling delay</string>
|
||||
<string name="languagesHintText">Languages</string>
|
||||
<string name="reportsHintText">Crash reports</string>
|
||||
<string name="rateAppHintText">If you like GitNex you can give it a thumbs up</string>
|
||||
<string name="aboutAppHintText">App version, build, user gitea version</string>
|
||||
<string name="archivedRepository">Archived</string>
|
||||
<string name="accountDeletedMessage">Account deleted successfully</string>
|
||||
<string name="removeAccountPopupTitle">Remove Account</string>
|
||||
@ -560,4 +564,26 @@
|
||||
<string name="repoSettingsDeleteDescription">Things to know before deletion:\n\n- This operation CANNOT be undone.\n- This operation will permanently delete the repository including code, issues, comments, wiki data and collaborator settings.\n\nEnter the repository name as confirmation</string>
|
||||
<string name="repoSettingsDeleteError">Repository name does not match</string>
|
||||
<string name="repoDeletionSuccess">Repository deleted successfully</string>
|
||||
<string name="repoSettingsTransferOwnership">Transfer Ownership</string>
|
||||
<string name="repoSettingsTransferOwnershipHint">Transfer this repository to a user or to an organization for which you have administrator rights</string>
|
||||
<string name="repoSettingsTransferOwnershipDescription">Things to know before transfer:\n\n- You will lose access to the repository if you transfer it to an individual user.\n- You will keep access to the repository if you transfer it to an organization that you (co-)own.\n\nEnter the repository name as confirmation</string>
|
||||
<string name="repoTransferText">Perform Transfer</string>
|
||||
<string name="repoTransferOwnerText">New Owner</string>
|
||||
<string name="repoTransferSuccess">Repository transferred successfully</string>
|
||||
<string name="repoTransferOwnerError">New owner is required</string>
|
||||
<string name="repoTransferError">There is a problem with the owner name. Make sure that the new owner exists</string>
|
||||
<string name="exploreFilterDialogTitle">Filter Repositories</string>
|
||||
<string name="exploreFilterIncludeTopic">Search ONLY in Topic</string>
|
||||
<string name="exploreFilterIncludeDesc">Search in Description</string>
|
||||
<string name="exploreFilterIncludeArchive">Only Archived Repositories</string>
|
||||
<string name="exploreFilterIncludePrivate">Only Private Repositories</string>
|
||||
<string name="exploreFilterIncludeTemplateRepos">Search in Template Repositories</string>
|
||||
<string name="mergeIntoBranch">Merge Into</string>
|
||||
<string name="pullFromBranch">Pull From</string>
|
||||
<string name="sameBranchesError">These branches are equal. There is no need to create a pull request</string>
|
||||
<string name="mergeIntoError">Merge into branch is required</string>
|
||||
<string name="pullFromError">Pull from branch is required</string>
|
||||
<string name="titleError">Title is required</string>
|
||||
<string name="prCreateSuccess">Pull Request created successfully</string>
|
||||
<string name="prAlreadyExists">A pull request between these branches already exists</string>
|
||||
</resources>
|
||||
|
@ -12,6 +12,7 @@
|
||||
<string name="navLogout">Çıkış Yap</string>
|
||||
<string name="navExplore">Keşfet</string>
|
||||
<string name="navAdministration">Administration</string>
|
||||
<string name="navSearchIssuesPulls">Search Issues</string>
|
||||
<!-- menu items -->
|
||||
<!-- page titles -->
|
||||
<string name="pageTitleAbout">Hakkında</string>
|
||||
@ -37,6 +38,7 @@
|
||||
<string name="pageTitleExplore">Keşfet</string>
|
||||
<string name="pageTitleAdministration">Gitea Administration</string>
|
||||
<string name="pageTitleUserAccounts">Manage Accounts</string>
|
||||
<string name="pageTitleNewPullRequest">New Pull Request</string>
|
||||
<!-- page titles -->
|
||||
<string name="repoName">Demo deposu</string>
|
||||
<string name="repoFullname">ORG ile Depo</string>
|
||||
@ -62,6 +64,7 @@
|
||||
<string name="navigation_drawer_open">Gezinme Çekmecesini Aç</string>
|
||||
<string name="navigation_drawer_close">Gezinme Çekmecesini Kapat</string>
|
||||
<string name="logo">Gitea\'ya Giriş Yap</string>
|
||||
<string name="protocol">Protocol</string>
|
||||
<string name="urlInfoTooltip">1- Doğru protokolü seçin (https veya http). \n2- Gitea url girin, örneğin: try.gitea.io. \n3- Hesabınız için 2FA\'yı etkinleştirdiyseniz, kodu OTP Kodu alanına girin. \n4- HTTP temel kimlik doğrulaması için, URL alanında KULLANICIADI@DOMAIN.COM adresini kullanın.</string>
|
||||
<string name="malformedUrl">Couldn\'t connect to host. Please check your URL or port for any errors</string>
|
||||
<string name="protocolError">It is not recommended to use HTTP protocol unless you are testing on local network</string>
|
||||
@ -69,6 +72,7 @@
|
||||
<string name="emptyFieldURL">Örnek URL gerekli</string>
|
||||
<string name="emptyFieldUsername">Kullanıcı adı gerekli</string>
|
||||
<string name="emptyFieldPassword">Parola gerekli</string>
|
||||
<string name="protocolEmptyError">Protocol is required</string>
|
||||
<string name="checkNetConnection">Ağa erişilemiyor, lütfen internet bağlantınızı kontrol edin</string>
|
||||
<string name="netConnectionIsBack">Yay, We have Internet connection!</string>
|
||||
<string name="repoNameErrorEmpty">Depo adı boş</string>
|
||||
@ -106,7 +110,6 @@
|
||||
<string name="tab_text_collaborators">İşbirlikçiler</string>
|
||||
<string name="tabPullRequests">İstekleri Çek</string>
|
||||
<string name="noDataIssueTab">Konu bulunamadı</string>
|
||||
<string name="infoTabRepoWebsite">Website</string>
|
||||
<string name="infoTabRepoSize">Boyut</string>
|
||||
<string name="infoTabRepoDefaultBranch">Varsayılan Dal</string>
|
||||
<string name="infoTabRepoSshUrl">SSH Adresi</string>
|
||||
@ -419,7 +422,6 @@
|
||||
<string name="genericServerResponseError">We cannot reach the server at the moment, please check your server status and try again</string>
|
||||
<string name="genericCopyUrl">Copy URL</string>
|
||||
<!-- generic copy -->
|
||||
<string name="translateText">Crowdin\'de GitNex için Çeviri Yap</string>
|
||||
<string name="exploreTextBoxHint">Depoları keşfet</string>
|
||||
<string name="starRepository">Depoyu Yıldızla</string>
|
||||
<string name="unStarRepository">Depo Yıldızını Kaldır</string>
|
||||
@ -504,7 +506,7 @@
|
||||
<string name="settingsEnableReportsText">Enable Crash Reports</string>
|
||||
<string name="crashTitle">GitNex has stopped :(</string>
|
||||
<string name="setCrashReports">Crash reports</string>
|
||||
<string name="crashMessage">You can tap the OK button to send the crash report by email. It will help to fix it :)\n\nYou can also add additional content in the email. Thank you!</string>
|
||||
<string name="crashMessage">It is encouraged to open an issue at the project repository with how to reproduce this bug. It is easier to debug and fix the problem that way.\n\nTap the OK button to send the crash report by email instead. Additional content could be added in the email.\nThank you!</string>
|
||||
<string name="forceLogoutDialogHeader">Please sign in again</string>
|
||||
<string name="forceLogoutDialogDescription">Due to some major changes regarding the internal functioning of the app, we require you to login again. These changes allow us to make the app more flexible in the future.\n\nThank you for your patience and sorry for the inconvenience.</string>
|
||||
<string name="deleteAllDrafts">Delete All Drafts</string>
|
||||
@ -518,6 +520,8 @@
|
||||
<string name="securityHintText">SSL certificates, cache, polling delay</string>
|
||||
<string name="languagesHintText">Languages</string>
|
||||
<string name="reportsHintText">Crash reports</string>
|
||||
<string name="rateAppHintText">If you like GitNex you can give it a thumbs up</string>
|
||||
<string name="aboutAppHintText">App version, build, user gitea version</string>
|
||||
<string name="archivedRepository">Archived</string>
|
||||
<string name="accountDeletedMessage">Account deleted successfully</string>
|
||||
<string name="removeAccountPopupTitle">Remove Account</string>
|
||||
@ -560,4 +564,26 @@
|
||||
<string name="repoSettingsDeleteDescription">Things to know before deletion:\n\n- This operation CANNOT be undone.\n- This operation will permanently delete the repository including code, issues, comments, wiki data and collaborator settings.\n\nEnter the repository name as confirmation</string>
|
||||
<string name="repoSettingsDeleteError">Repository name does not match</string>
|
||||
<string name="repoDeletionSuccess">Repository deleted successfully</string>
|
||||
<string name="repoSettingsTransferOwnership">Transfer Ownership</string>
|
||||
<string name="repoSettingsTransferOwnershipHint">Transfer this repository to a user or to an organization for which you have administrator rights</string>
|
||||
<string name="repoSettingsTransferOwnershipDescription">Things to know before transfer:\n\n- You will lose access to the repository if you transfer it to an individual user.\n- You will keep access to the repository if you transfer it to an organization that you (co-)own.\n\nEnter the repository name as confirmation</string>
|
||||
<string name="repoTransferText">Perform Transfer</string>
|
||||
<string name="repoTransferOwnerText">New Owner</string>
|
||||
<string name="repoTransferSuccess">Repository transferred successfully</string>
|
||||
<string name="repoTransferOwnerError">New owner is required</string>
|
||||
<string name="repoTransferError">There is a problem with the owner name. Make sure that the new owner exists</string>
|
||||
<string name="exploreFilterDialogTitle">Filter Repositories</string>
|
||||
<string name="exploreFilterIncludeTopic">Search ONLY in Topic</string>
|
||||
<string name="exploreFilterIncludeDesc">Search in Description</string>
|
||||
<string name="exploreFilterIncludeArchive">Only Archived Repositories</string>
|
||||
<string name="exploreFilterIncludePrivate">Only Private Repositories</string>
|
||||
<string name="exploreFilterIncludeTemplateRepos">Search in Template Repositories</string>
|
||||
<string name="mergeIntoBranch">Merge Into</string>
|
||||
<string name="pullFromBranch">Pull From</string>
|
||||
<string name="sameBranchesError">These branches are equal. There is no need to create a pull request</string>
|
||||
<string name="mergeIntoError">Merge into branch is required</string>
|
||||
<string name="pullFromError">Pull from branch is required</string>
|
||||
<string name="titleError">Title is required</string>
|
||||
<string name="prCreateSuccess">Pull Request created successfully</string>
|
||||
<string name="prAlreadyExists">A pull request between these branches already exists</string>
|
||||
</resources>
|
||||
|
@ -12,6 +12,7 @@
|
||||
<string name="navLogout">Вийти</string>
|
||||
<string name="navExplore">Огляд</string>
|
||||
<string name="navAdministration">Адміністрування</string>
|
||||
<string name="navSearchIssuesPulls">Search Issues</string>
|
||||
<!-- menu items -->
|
||||
<!-- page titles -->
|
||||
<string name="pageTitleAbout">Про додаток</string>
|
||||
@ -37,6 +38,7 @@
|
||||
<string name="pageTitleExplore">Огляд</string>
|
||||
<string name="pageTitleAdministration">Адміністрування Gitea</string>
|
||||
<string name="pageTitleUserAccounts">Manage Accounts</string>
|
||||
<string name="pageTitleNewPullRequest">New Pull Request</string>
|
||||
<!-- page titles -->
|
||||
<string name="repoName">Демо-репозиторій</string>
|
||||
<string name="repoFullname">Репозиторій з організацією</string>
|
||||
@ -62,6 +64,7 @@
|
||||
<string name="navigation_drawer_open">Відкрити панель навігації</string>
|
||||
<string name="navigation_drawer_close">Закрити панель навігації</string>
|
||||
<string name="logo">Увійти до Gitea</string>
|
||||
<string name="protocol">Protocol</string>
|
||||
<string name="urlInfoTooltip">1. Оберіть правильний протокол (https або http). \n2. Введіть URL Gitea, наприклад: try.gitea.io. \n3. Якщо для вашого облікового запису увімкнено двофакторну аутентифікацію, введіть код OTP у відповідне поле. \n4. Для базової автентифікації HTTP використовуйте USERNAME@DOMAIN.COM в полі URL.</string>
|
||||
<string name="malformedUrl">Couldn\'t connect to host. Please check your URL or port for any errors</string>
|
||||
<string name="protocolError">It is not recommended to use HTTP protocol unless you are testing on local network</string>
|
||||
@ -69,6 +72,7 @@
|
||||
<string name="emptyFieldURL">Потрібен URL екземпляра</string>
|
||||
<string name="emptyFieldUsername">Ім\'я користувача є обов\'язковим</string>
|
||||
<string name="emptyFieldPassword">Пароль є обов\'язковим</string>
|
||||
<string name="protocolEmptyError">Protocol is required</string>
|
||||
<string name="checkNetConnection">Неможливо отримати доступ до мережі, будь ласка, перевірте підключення до Інтернету</string>
|
||||
<string name="netConnectionIsBack">Ура! Ми маємо підключення до Інтернету!</string>
|
||||
<string name="repoNameErrorEmpty">Назва репозиторія порожня</string>
|
||||
@ -106,7 +110,6 @@
|
||||
<string name="tab_text_collaborators">Співавтори</string>
|
||||
<string name="tabPullRequests">Запити на злиття</string>
|
||||
<string name="noDataIssueTab">Проблем не знайдено</string>
|
||||
<string name="infoTabRepoWebsite">Веб-сайт</string>
|
||||
<string name="infoTabRepoSize">Розмір</string>
|
||||
<string name="infoTabRepoDefaultBranch">Головна гілка</string>
|
||||
<string name="infoTabRepoSshUrl">URL SSH</string>
|
||||
@ -419,7 +422,6 @@
|
||||
<string name="genericServerResponseError">На даний момент ми не можемо зв\'язатися з сервером, будь ласка, перевірте статус вашого сервера і спробуйте ще раз</string>
|
||||
<string name="genericCopyUrl">Copy URL</string>
|
||||
<!-- generic copy -->
|
||||
<string name="translateText">Перекласти GitNex на Crowdin</string>
|
||||
<string name="exploreTextBoxHint">Переглянути репозиторії</string>
|
||||
<string name="starRepository">Репозиторій у обране</string>
|
||||
<string name="unStarRepository">Вилучити репозиторій з обраного</string>
|
||||
@ -504,7 +506,7 @@
|
||||
<string name="settingsEnableReportsText">Увімкнути повідомлення про падіння</string>
|
||||
<string name="crashTitle">GitNex зупинено :(</string>
|
||||
<string name="setCrashReports">Звіти про падіння</string>
|
||||
<string name="crashMessage">Ви можете натиснути ОК кнопку, щоб надіслати звіт про аварію електронною поштою. Це допоможе виправити проблему :)\n\nВи також можете прикріпити додатковий вміст до листа. Дякуємо!</string>
|
||||
<string name="crashMessage">It is encouraged to open an issue at the project repository with how to reproduce this bug. It is easier to debug and fix the problem that way.\n\nTap the OK button to send the crash report by email instead. Additional content could be added in the email.\nThank you!</string>
|
||||
<string name="forceLogoutDialogHeader">Please sign in again</string>
|
||||
<string name="forceLogoutDialogDescription">Due to some major changes regarding the internal functioning of the app, we require you to login again. These changes allow us to make the app more flexible in the future.\n\nThank you for your patience and sorry for the inconvenience.</string>
|
||||
<string name="deleteAllDrafts">Delete All Drafts</string>
|
||||
@ -518,6 +520,8 @@
|
||||
<string name="securityHintText">SSL certificates, cache, polling delay</string>
|
||||
<string name="languagesHintText">Мови</string>
|
||||
<string name="reportsHintText">Звіти про падіння</string>
|
||||
<string name="rateAppHintText">If you like GitNex you can give it a thumbs up</string>
|
||||
<string name="aboutAppHintText">App version, build, user gitea version</string>
|
||||
<string name="archivedRepository">Архівовано</string>
|
||||
<string name="accountDeletedMessage">Account deleted successfully</string>
|
||||
<string name="removeAccountPopupTitle">Remove Account</string>
|
||||
@ -560,4 +564,26 @@
|
||||
<string name="repoSettingsDeleteDescription">Things to know before deletion:\n\n- This operation CANNOT be undone.\n- This operation will permanently delete the repository including code, issues, comments, wiki data and collaborator settings.\n\nEnter the repository name as confirmation</string>
|
||||
<string name="repoSettingsDeleteError">Repository name does not match</string>
|
||||
<string name="repoDeletionSuccess">Repository deleted successfully</string>
|
||||
<string name="repoSettingsTransferOwnership">Transfer Ownership</string>
|
||||
<string name="repoSettingsTransferOwnershipHint">Transfer this repository to a user or to an organization for which you have administrator rights</string>
|
||||
<string name="repoSettingsTransferOwnershipDescription">Things to know before transfer:\n\n- You will lose access to the repository if you transfer it to an individual user.\n- You will keep access to the repository if you transfer it to an organization that you (co-)own.\n\nEnter the repository name as confirmation</string>
|
||||
<string name="repoTransferText">Perform Transfer</string>
|
||||
<string name="repoTransferOwnerText">New Owner</string>
|
||||
<string name="repoTransferSuccess">Repository transferred successfully</string>
|
||||
<string name="repoTransferOwnerError">New owner is required</string>
|
||||
<string name="repoTransferError">There is a problem with the owner name. Make sure that the new owner exists</string>
|
||||
<string name="exploreFilterDialogTitle">Filter Repositories</string>
|
||||
<string name="exploreFilterIncludeTopic">Search ONLY in Topic</string>
|
||||
<string name="exploreFilterIncludeDesc">Search in Description</string>
|
||||
<string name="exploreFilterIncludeArchive">Only Archived Repositories</string>
|
||||
<string name="exploreFilterIncludePrivate">Only Private Repositories</string>
|
||||
<string name="exploreFilterIncludeTemplateRepos">Search in Template Repositories</string>
|
||||
<string name="mergeIntoBranch">Merge Into</string>
|
||||
<string name="pullFromBranch">Pull From</string>
|
||||
<string name="sameBranchesError">These branches are equal. There is no need to create a pull request</string>
|
||||
<string name="mergeIntoError">Merge into branch is required</string>
|
||||
<string name="pullFromError">Pull from branch is required</string>
|
||||
<string name="titleError">Title is required</string>
|
||||
<string name="prCreateSuccess">Pull Request created successfully</string>
|
||||
<string name="prAlreadyExists">A pull request between these branches already exists</string>
|
||||
</resources>
|
||||
|
@ -12,6 +12,7 @@
|
||||
<string name="navLogout">退出</string>
|
||||
<string name="navExplore">探索</string>
|
||||
<string name="navAdministration">管理</string>
|
||||
<string name="navSearchIssuesPulls">搜索问题</string>
|
||||
<!-- menu items -->
|
||||
<!-- page titles -->
|
||||
<string name="pageTitleAbout">关于</string>
|
||||
@ -37,6 +38,7 @@
|
||||
<string name="pageTitleExplore">探索</string>
|
||||
<string name="pageTitleAdministration">Gitea 管理</string>
|
||||
<string name="pageTitleUserAccounts">管理账户</string>
|
||||
<string name="pageTitleNewPullRequest">新拉取请求</string>
|
||||
<!-- page titles -->
|
||||
<string name="repoName">演示仓库</string>
|
||||
<string name="repoFullname">有组织的存储库</string>
|
||||
@ -62,6 +64,7 @@
|
||||
<string name="navigation_drawer_open">打开导航栏</string>
|
||||
<string name="navigation_drawer_close">关闭导航栏</string>
|
||||
<string name="logo">登录到 Gitea</string>
|
||||
<string name="protocol">协议</string>
|
||||
<string name="urlInfoTooltip">1- 选择协议 (https 或 http). \n2- 输入Gitea访问地址(可带端口) 例如: try.gitea.io:3000. \n3- 如已启用双重验证,请在OTP输入有效代码。 \n4- 在 URL 字段中使用 USERNAME@DOMAIN.COM 进行 HTTP 基本身份验证。</string>
|
||||
<string name="malformedUrl">无法连接到主机。请检查您的 URL 或端口是否有任何错误</string>
|
||||
<string name="protocolError">除非您正在本地网络上测试,否则不建议使用 HTTP 协议</string>
|
||||
@ -69,6 +72,7 @@
|
||||
<string name="emptyFieldURL">未填写 Gitea访问地址</string>
|
||||
<string name="emptyFieldUsername">未填写 用户名</string>
|
||||
<string name="emptyFieldPassword">未填写 密码</string>
|
||||
<string name="protocolEmptyError">协议是必需的</string>
|
||||
<string name="checkNetConnection">无法连接,请检查您的网络情况</string>
|
||||
<string name="netConnectionIsBack">有网了,奥力给!</string>
|
||||
<string name="repoNameErrorEmpty">仓库名称为空</string>
|
||||
@ -106,7 +110,6 @@
|
||||
<string name="tab_text_collaborators">协作者</string>
|
||||
<string name="tabPullRequests">拉取请求</string>
|
||||
<string name="noDataIssueTab">没有工单</string>
|
||||
<string name="infoTabRepoWebsite">网站</string>
|
||||
<string name="infoTabRepoSize">尺寸</string>
|
||||
<string name="infoTabRepoDefaultBranch">默认分支</string>
|
||||
<string name="infoTabRepoSshUrl">SSH URL</string>
|
||||
@ -258,7 +261,7 @@
|
||||
<string name="newTeamAccessControls">访问控制</string>
|
||||
<string name="newTeamPermissionRead">成员可以查看并克隆团队仓库</string>
|
||||
<string name="newTeamPermissionWrite">会员可以读取并推送到团队仓库</string>
|
||||
<string name="newTeamPermissionAdmin">会员可以拉取和推送到团队仓库并添加合作者</string>
|
||||
<string name="newTeamPermissionAdmin">成员可以拉取和推送到团队仓库并添加合作者</string>
|
||||
<string name="teamNameEmpty">请输入团队名称</string>
|
||||
<string name="teamNameError">团队名称只能包含字母数字、 破折号 (-), 下划线 (_) 和 dot (.) 字符</string>
|
||||
<string name="teamPermissionEmpty">请选择权限</string>
|
||||
@ -419,7 +422,6 @@
|
||||
<string name="genericServerResponseError">目前我们无法访问服务器,请检查您的服务器状态,然后重试</string>
|
||||
<string name="genericCopyUrl">复制 URL</string>
|
||||
<!-- generic copy -->
|
||||
<string name="translateText">使用 Crowdin 翻译 GitNex</string>
|
||||
<string name="exploreTextBoxHint">探索仓库</string>
|
||||
<string name="starRepository">星级仓库</string>
|
||||
<string name="unStarRepository">从仓库中删除星星</string>
|
||||
@ -456,8 +458,8 @@
|
||||
<string name="deleteBranchForkInfo">该分支属于一个分叉存储库</string>
|
||||
<string name="mergeCommentText">合并评论</string>
|
||||
<string name="mergePRSuccessMsg">拉取请求已成功合并</string>
|
||||
<string name="mergePR404ErrorMsg">拉取请求不可用于合并</string>
|
||||
<string name="mergeOptionMerge">合并请求</string>
|
||||
<string name="mergePR404ErrorMsg">用于合并的拉取请求不可用</string>
|
||||
<string name="mergeOptionMerge">合并拉取请求</string>
|
||||
<string name="mergeOptionRebase">重建并合并</string>
|
||||
<string name="mergeOptionRebaseCommit">重建合并 (--no-ff)</string>
|
||||
<string name="mergeOptionSquash">压缩提交并合并</string>
|
||||
@ -476,7 +478,7 @@
|
||||
<string name="sharePr">分享拉取请求</string>
|
||||
<string name="shareRepository">共享存储库</string>
|
||||
<string name="createRepository">创建仓库</string>
|
||||
<string name="commitTitle">Commits</string>
|
||||
<string name="commitTitle">提交</string>
|
||||
<string name="commitCommittedBy">由 %1$s提交</string>
|
||||
<string name="viewCommits">查看提交</string>
|
||||
<!-- Memorizing Trust Manager -->
|
||||
@ -504,7 +506,7 @@
|
||||
<string name="settingsEnableReportsText">启用崩溃报告</string>
|
||||
<string name="crashTitle">GitNex 已停止 :(</string>
|
||||
<string name="setCrashReports">崩溃报告</string>
|
||||
<string name="crashMessage">您可以点击确定按钮通过电子邮件发送崩溃报告。 这将有助于修复它:)\n\n您也可以在电子邮件中添加额外的内容。谢谢!</string>
|
||||
<string name="crashMessage">鼓励在项目存储库中提出一个问题,并说明如何重现这个bug。这样更容易调试和修复问题。\n\n点击OK按钮,通过电子邮件发送崩溃报告。可以在电子邮件中添加其他内容,\n谢谢!</string>
|
||||
<string name="forceLogoutDialogHeader">请重新登录</string>
|
||||
<string name="forceLogoutDialogDescription">由于应用内部功能发生了一些重大变化,我们要求您重新登录。这些变化使我们能够使应用程序在未来更具灵活性。\n\n感谢您的耐心,对给您带来的不便我们深表歉意</string>
|
||||
<string name="deleteAllDrafts">删除所有草稿</string>
|
||||
@ -518,6 +520,8 @@
|
||||
<string name="securityHintText">SSL 证书、缓存、轮询延迟</string>
|
||||
<string name="languagesHintText">语言</string>
|
||||
<string name="reportsHintText">崩溃报告</string>
|
||||
<string name="rateAppHintText">如果你喜欢GitNex,你可以给它点赞</string>
|
||||
<string name="aboutAppHintText">应用程序版本、构建、用户gitea版本</string>
|
||||
<string name="archivedRepository">已存档</string>
|
||||
<string name="accountDeletedMessage">帐户删除成功</string>
|
||||
<string name="removeAccountPopupTitle">删除账户</string>
|
||||
@ -541,23 +545,45 @@
|
||||
<string name="markedNotificationsAsRead">成功将所有通知标记为已读</string>
|
||||
<string name="isRead">已读</string>
|
||||
<string name="isUnread">未读</string>
|
||||
<string name="repoSettingsTitle">Repository Settings</string>
|
||||
<string name="repoSettingsEditProperties">Edit Properties</string>
|
||||
<string name="repoSettingsDelete">Delete Repository</string>
|
||||
<string name="repoSettingsDeleteHint">Be careful, this operation CANNOT be undone!</string>
|
||||
<string name="repoPropertiesTemplate">Set as Template</string>
|
||||
<string name="repoPropertiesEnableIssues">Enable Issues</string>
|
||||
<string name="repoPropertiesExternalIssuesUrl">External Issue Tracker Url</string>
|
||||
<string name="repoPropertiesEnableWiki">Enable Wiki</string>
|
||||
<string name="repoPropertiesExternalWikiUrl">External Wiki Url</string>
|
||||
<string name="repoPropertiesEnablePr">Enable Pull Requests</string>
|
||||
<string name="repoPropertiesEnableTimeTracker">Enable Time Tracker</string>
|
||||
<string name="repoPropertiesEnableMergeCommits">Enable Merge Commits</string>
|
||||
<string name="repoPropertiesEnableRebase">Enable Rebase</string>
|
||||
<string name="repoPropertiesEnableSquash">Enable Squash and Merge</string>
|
||||
<string name="repoPropertiesEnableForceMerge">Enable Rebase with Merge Commits (——no-ff)</string>
|
||||
<string name="repoPropertiesSaveSuccess">Repository properties updated successfully</string>
|
||||
<string name="repoSettingsDeleteDescription">Things to know before deletion:\n\n- This operation CANNOT be undone.\n- This operation will permanently delete the repository including code, issues, comments, wiki data and collaborator settings.\n\nEnter the repository name as confirmation</string>
|
||||
<string name="repoSettingsDeleteError">Repository name does not match</string>
|
||||
<string name="repoDeletionSuccess">Repository deleted successfully</string>
|
||||
<string name="repoSettingsTitle">存储库设置</string>
|
||||
<string name="repoSettingsEditProperties">编辑属性</string>
|
||||
<string name="repoSettingsDelete">删除存储库</string>
|
||||
<string name="repoSettingsDeleteHint">小心,这个操作无法撤销!</string>
|
||||
<string name="repoPropertiesTemplate">设置为模板</string>
|
||||
<string name="repoPropertiesEnableIssues">启用问题</string>
|
||||
<string name="repoPropertiesExternalIssuesUrl">外部问题跟踪网址</string>
|
||||
<string name="repoPropertiesEnableWiki">启用 Wiki</string>
|
||||
<string name="repoPropertiesExternalWikiUrl">外部 Wiki 网址</string>
|
||||
<string name="repoPropertiesEnablePr">允许拉取请求</string>
|
||||
<string name="repoPropertiesEnableTimeTracker">启用时间追踪器</string>
|
||||
<string name="repoPropertiesEnableMergeCommits">启用合并提交</string>
|
||||
<string name="repoPropertiesEnableRebase">启用代码变基</string>
|
||||
<string name="repoPropertiesEnableSquash">启用压扁和合并</string>
|
||||
<string name="repoPropertiesEnableForceMerge">用合并提交(——no-ff)启用代码变基</string>
|
||||
<string name="repoPropertiesSaveSuccess">成功更新存储库属性</string>
|
||||
<string name="repoSettingsDeleteDescription">删除前要知道的事:\n\n-此操作无法撤消。\n-此操作将永久删除存储库,包括代码、问题、注释、Wiki数据和协作者设置。\n\n输入存储库名称作为确认</string>
|
||||
<string name="repoSettingsDeleteError">存储库名称不匹配</string>
|
||||
<string name="repoDeletionSuccess">成功删除存储库</string>
|
||||
<string name="repoSettingsTransferOwnership">转移所有权</string>
|
||||
<string name="repoSettingsTransferOwnershipHint">将此存储库传输给您具有管理员权限的用户或组织</string>
|
||||
<string name="repoSettingsTransferOwnershipDescription">转移所有权之前需要注意的事项:\n\n- 如果将存储库移交给单个用户,您将失去对该存储库的访问权。\n- 如果您将存储库转移到您和他人(共同)拥有的组织,那么您将保留对该存储库的访问权。\n\n输入存储库名称作为确认</string>
|
||||
<string name="repoTransferText">执行移交</string>
|
||||
<string name="repoTransferOwnerText">新所有者</string>
|
||||
<string name="repoTransferSuccess">成功移交存储库</string>
|
||||
<string name="repoTransferOwnerError">需要新的所有者</string>
|
||||
<string name="repoTransferError">所有者名称有问题。确保新所有者存在</string>
|
||||
<string name="exploreFilterDialogTitle">过滤仓库</string>
|
||||
<string name="exploreFilterIncludeTopic">仅在话题中搜索</string>
|
||||
<string name="exploreFilterIncludeDesc">在描述中搜索</string>
|
||||
<string name="exploreFilterIncludeArchive">仅存档仓库</string>
|
||||
<string name="exploreFilterIncludePrivate">仅私有仓库</string>
|
||||
<string name="exploreFilterIncludeTemplateRepos">在模板仓库中搜索</string>
|
||||
<string name="mergeIntoBranch">合并到</string>
|
||||
<string name="pullFromBranch">拉取自</string>
|
||||
<string name="sameBranchesError">这些分支是相等的。 无需创建拉取请求</string>
|
||||
<string name="mergeIntoError">必须合并到分支</string>
|
||||
<string name="pullFromError">需要从分支下拉</string>
|
||||
<string name="titleError">标题不可为空</string>
|
||||
<string name="prCreateSuccess">拉取请求创建成功</string>
|
||||
<string name="prAlreadyExists">这些分支之间的拉取请求已存在</string>
|
||||
</resources>
|
||||
|
@ -4,18 +4,21 @@
|
||||
<string name="appEmail" translatable="false">gitnex@swatian.com</string>
|
||||
<string name="appRepo" translatable="false">Source code</string>
|
||||
<string name="appRepoLink" translatable="false">https://codeberg.org/gitnex/GitNex</string>
|
||||
<string name="appWebsite" translatable="false">Website</string>
|
||||
<string name="appWebsiteLink" translatable="false">https://gitnex.com/</string>
|
||||
<string name="commitPage" translatable="false">Your Gitea version\n</string>
|
||||
<string name="commitPage" translatable="false">Your Gitea Version</string>
|
||||
<string name="supportLink" translatable="false">https://liberapay.com/mmarif/donate</string>
|
||||
<string name="supportLinkPatreon" translatable="false">https://www.patreon.com/mmarif</string>
|
||||
<string name="appVerBuild" translatable="false">%1$s / build %2$d</string>
|
||||
<string name="appVersion" translatable="false">Version</string>
|
||||
<string name="appBuild" translatable="false">Build</string>
|
||||
<string name="appDesc" translatable="false">GitNex is a free, open-source Android client for Git repository management tool Gitea. GitNex is Licensed under GPLv3.\n\nThanks to all the contributors and donators for your generous work and donations.</string>
|
||||
<string name="crowdInLink" translatable="false">https://crowdin.com/project/gitnex</string>
|
||||
<string name="crashReportEmailSubject" translatable="false">[GitNex] - Crash Report #%1$d</string>
|
||||
<string name="translateWithCrowdin" translatable="false">Crowdin</string>
|
||||
<string name="translateText" translatable="false">Translate</string>
|
||||
<string name="supportText" translatable="false">Support</string>
|
||||
|
||||
<string name="supportText" translatable="false">Support the App on Liberapay</string>
|
||||
<string name="supportTextPatreon" translatable="false">Become a Patreon</string>
|
||||
<string name="supportTextLiberapay" translatable="false">Liberapay</string>
|
||||
<string name="supportTextPatreon" translatable="false">Patreon</string>
|
||||
|
||||
<!-- menu items -->
|
||||
<string name="navMyRepos">My Repositories</string>
|
||||
@ -29,6 +32,7 @@
|
||||
<string name="navLogout">Logout</string>
|
||||
<string name="navExplore">Explore</string>
|
||||
<string name="navAdministration">Administration</string>
|
||||
<string name="navSearchIssuesPulls">Search Issues</string>
|
||||
<!-- menu items -->
|
||||
|
||||
<!-- page titles -->
|
||||
@ -55,6 +59,7 @@
|
||||
<string name="pageTitleExplore">Explore</string>
|
||||
<string name="pageTitleAdministration">Gitea Administration</string>
|
||||
<string name="pageTitleUserAccounts">Manage Accounts</string>
|
||||
<string name="pageTitleNewPullRequest">New Pull Request</string>
|
||||
<!-- page titles -->
|
||||
|
||||
<string name="repoName">Demo repo</string>
|
||||
@ -143,7 +148,6 @@
|
||||
|
||||
<string name="noDataIssueTab">No issues found</string>
|
||||
|
||||
<string name="infoTabRepoWebsite">Website</string>
|
||||
<string name="infoTabRepoSize">Size</string>
|
||||
<string name="infoTabRepoDefaultBranch">Default Branch</string>
|
||||
<string name="infoTabRepoSshUrl">SSH URL</string>
|
||||
@ -518,7 +522,6 @@
|
||||
<string name="genericCopyUrl">Copy URL</string>
|
||||
<!-- generic copy -->
|
||||
|
||||
<string name="translateText">Translate GitNex with Crowdin</string>
|
||||
<string name="exploreTextBoxHint">Explore repositories</string>
|
||||
<string name="starRepository">Star Repository</string>
|
||||
<string name="unStarRepository">Unstar Repository</string>
|
||||
@ -632,6 +635,8 @@
|
||||
<string name="securityHintText">SSL certificates, cache, polling delay</string>
|
||||
<string name="languagesHintText">Languages</string>
|
||||
<string name="reportsHintText">Crash reports</string>
|
||||
<string name="rateAppHintText">If you like GitNex you can give it a thumbs up</string>
|
||||
<string name="aboutAppHintText">App version, build, user gitea version</string>
|
||||
|
||||
<string name="archivedRepository">Archived</string>
|
||||
|
||||
@ -693,4 +698,20 @@
|
||||
|
||||
<string name="assignTeamTitle">Assign Team</string>
|
||||
|
||||
<string name="exploreFilterDialogTitle">Filter Repositories</string>
|
||||
<string name="exploreFilterIncludeTopic">Search ONLY in Topic</string>
|
||||
<string name="exploreFilterIncludeDesc">Search in Description</string>
|
||||
<string name="exploreFilterIncludeArchive">Only Archived Repositories</string>
|
||||
<string name="exploreFilterIncludePrivate">Only Private Repositories</string>
|
||||
<string name="exploreFilterIncludeTemplateRepos">Search in Template Repositories</string>
|
||||
|
||||
<string name="mergeIntoBranch">Merge Into</string>
|
||||
<string name="pullFromBranch">Pull From</string>
|
||||
<string name="sameBranchesError">These branches are equal. There is no need to create a pull request</string>
|
||||
<string name="mergeIntoError">Merge into branch is required</string>
|
||||
<string name="pullFromError">Pull from branch is required</string>
|
||||
<string name="titleError">Title is required</string>
|
||||
<string name="prCreateSuccess">Pull Request created successfully</string>
|
||||
<string name="prAlreadyExists">A pull request between these branches already exists</string>
|
||||
|
||||
</resources>
|
||||
|
@ -210,7 +210,7 @@
|
||||
</style>
|
||||
|
||||
<style name="AppThemeCheckBoxStyle" parent="Base.Widget.AppCompat.CompoundButton.CheckBox">
|
||||
<item name="buttonTint">@color/colorWhite</item>
|
||||
<item name="buttonTint">?attr/iconsColor</item>
|
||||
</style>
|
||||
|
||||
<!-- Retro theme styles -->
|
||||
|
@ -1,8 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<changelog>
|
||||
|
||||
<release version="3.2.0-dev" versioncode="317">
|
||||
<change>Under development</change>
|
||||
<release version="3.2.0" versioncode="320">
|
||||
<change>New: Create pull request</change>
|
||||
<change>New: Edit repository properties (Admins only)</change>
|
||||
<change>New: Delete repository (Admins only)</change>
|
||||
<change>New: Transfer repository ownership (Admins only)</change>
|
||||
<change>New: Notification badge in navigation menu</change>
|
||||
<change>New: Search issues across all repositories</change>
|
||||
<change>New: Show issues/pr states in single view mode</change>
|
||||
<change>New: Explore repositories filter</change>
|
||||
<change>New: Android 11 support</change>
|
||||
<change>New: Commits under Files branches</change>
|
||||
<change>Bugfix: Fix crash when create issue with labels removed</change>
|
||||
<change>Bugfix: Fix active account selector</change>
|
||||
</release>
|
||||
|
||||
</changelog>
|
||||
|
5
fastlane/metadata/android/en-US/changelogs/317.txt
Normal file
@ -0,0 +1,5 @@
|
||||
3.2.0-rc1
|
||||
|
||||
3.2.0 RC1 release brings create pr, repository settings for admins and many more new features.
|
||||
|
||||
Detailed release notes will be published with stable release.
|
14
fastlane/metadata/android/en-US/changelogs/320.txt
Normal file
@ -0,0 +1,14 @@
|
||||
3.2.0
|
||||
|
||||
New: Create pull request
|
||||
New: Edit repository properties (Admins only)
|
||||
New: Delete repository (Admins only)
|
||||
New: Transfer repository ownership (Admins only)
|
||||
New: Notification badge in navigation menu
|
||||
New: Search issues across all repositories
|
||||
New: Show issues/pr states in single view mode
|
||||
New: Explore repositories filters
|
||||
New: Android 11 support
|
||||
New: Commits under Files branches
|
||||
|
||||
Release Notes: https://codeberg.org/gitnex/GitNex/releases
|
@ -1,7 +1,8 @@
|
||||
GitNex is a free, open-source Android client for Git repository management tool Gitea. Gitea is a community managed fork of Gogs, lightweight code hosting solution written in Go.
|
||||
GitNex is a free/paid, open-source Android client for Git repository management tool Gitea. Gitea is a community managed fork of Gogs, lightweight code hosting solution written in Go.
|
||||
|
||||
# Features
|
||||
|
||||
- Multiple accounts support
|
||||
- File and directory browser
|
||||
- File viewer
|
||||
- Create files
|
||||
|
BIN
fastlane/metadata/android/en-US/images/featureGraphic.png
Normal file
After Width: | Height: | Size: 91 KiB |
BIN
fastlane/metadata/android/en-US/images/icon.png
Normal file
After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 70 KiB After Width: | Height: | Size: 66 KiB |
Before Width: | Height: | Size: 144 KiB After Width: | Height: | Size: 99 KiB |