Compare commits
31 Commits
Author | SHA1 | Date | |
---|---|---|---|
a31abf0974 | |||
6d466e2542 | |||
01bd61ad8e | |||
4031c32fc8 | |||
d51d2d5164 | |||
7b8bc21a83 | |||
1c1f73eafc | |||
02672aef3d | |||
23fb1ce71f | |||
1f5eeb5632 | |||
78782d159a | |||
a75ffe0381 | |||
c4279dcd77 | |||
14b1256ce1 | |||
7b72815bcb | |||
5e6c600e71 | |||
dbf5be25a5 | |||
2bfe0b8d1a | |||
0c92eb3fa2 | |||
32f3080283 | |||
7342668a1b | |||
6f9bbe4c58 | |||
b2b42887f7 | |||
37f622b952 | |||
d677c90b01 | |||
23d3ba7f42 | |||
a42d888eb7 | |||
bbcffd67d6 | |||
00eb9c9135 | |||
28a23d30f8 | |||
82f874dc37 |
@ -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
|
||||
|
||||
|
@ -7,6 +7,9 @@ stages:
|
||||
test:
|
||||
image: nextcloudci/android:android-49
|
||||
stage: test
|
||||
only:
|
||||
- master
|
||||
- tags
|
||||
script:
|
||||
- ./gradlew test
|
||||
|
||||
@ -15,8 +18,9 @@ build:
|
||||
stage: build
|
||||
only:
|
||||
- master
|
||||
- tags
|
||||
script:
|
||||
- ./gradlew build
|
||||
- ./gradlew assembleFreeRelease
|
||||
artifacts:
|
||||
paths:
|
||||
- app/build/outputs/
|
||||
@ -27,9 +31,10 @@ sign:
|
||||
stage: sign
|
||||
only:
|
||||
- master
|
||||
- tags
|
||||
variables:
|
||||
OUTPUT: "signed.apk"
|
||||
GITEA: "https://gitea.com"
|
||||
INSTANCE: "https://codeberg.org"
|
||||
KS_FILE: "ci_keystore.jks"
|
||||
script:
|
||||
- ./scripts/sign-build.sh
|
||||
|
20
.idea/codeStyles/Project.xml
generated
@ -16,6 +16,24 @@
|
||||
</value>
|
||||
</option>
|
||||
</JavaCodeStyleSettings>
|
||||
<JetCodeStyleSettings>
|
||||
<option name="PACKAGES_TO_USE_STAR_IMPORTS">
|
||||
<value>
|
||||
<package name="java.util" alias="false" withSubpackages="false" />
|
||||
<package name="kotlinx.android.synthetic" alias="false" withSubpackages="true" />
|
||||
<package name="io.ktor" alias="false" withSubpackages="true" />
|
||||
</value>
|
||||
</option>
|
||||
<option name="PACKAGES_IMPORT_LAYOUT">
|
||||
<value>
|
||||
<package name="" alias="false" withSubpackages="true" />
|
||||
<package name="java" alias="false" withSubpackages="true" />
|
||||
<package name="javax" alias="false" withSubpackages="true" />
|
||||
<package name="kotlin" alias="false" withSubpackages="true" />
|
||||
<package name="" alias="true" withSubpackages="true" />
|
||||
</value>
|
||||
</option>
|
||||
</JetCodeStyleSettings>
|
||||
<codeStyleSettings language="JAVA">
|
||||
<option name="RIGHT_MARGIN" value="220" />
|
||||
<option name="KEEP_LINE_BREAKS" value="false" />
|
||||
@ -162,4 +180,4 @@
|
||||
</arrangement>
|
||||
</codeStyleSettings>
|
||||
</code_scheme>
|
||||
</component>
|
||||
</component>
|
||||
|
@ -1,4 +1,4 @@
|
||||
[](https://www.gnu.org/licenses/gpl-3.0) [](https://codeberg.org/gitnex/GitNex/releases) [](https://crowdin.com/project/gitnex) [](https://discord.gg/FbSS4rf)
|
||||
[](https://www.gnu.org/licenses/gpl-3.0)  [](https://codeberg.org/gitnex/GitNex/releases) [](https://crowdin.com/project/gitnex) [](https://discord.gg/FbSS4rf)
|
||||
|
||||
[<img alt="Become a Patroen" src="https://c5.patreon.com/external/logo/become_a_patron_button@2x.png" height="40"/>](https://www.patreon.com/mmarif) [<img alt="Donate using Liberapay" src="https://liberapay.com/assets/widgets/donate.svg" height="40"/>](https://liberapay.com/mmarif/donate)
|
||||
|
||||
@ -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 310
|
||||
versionName "3.1.0"
|
||||
targetSdkVersion 30
|
||||
versionCode 317
|
||||
versionName "3.2.0-rc1"
|
||||
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
|
||||
}
|
||||
@ -39,29 +52,29 @@ configurations {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
def lifecycle_version = "2.3.0-alpha06"
|
||||
def markwon_version = "4.4.0"
|
||||
def lifecycle_version = '2.3.0-alpha07'
|
||||
def markwon_version = '4.6.0'
|
||||
def work_version = "2.4.0"
|
||||
def acra = "5.5.0"
|
||||
|
||||
implementation fileTree(include: ['*.jar'], dir: 'libs')
|
||||
implementation "androidx.appcompat:appcompat:1.3.0-alpha01"
|
||||
implementation 'androidx.appcompat:appcompat:1.3.0-alpha02'
|
||||
implementation "com.google.android.material:material:1.3.0-alpha02"
|
||||
implementation "androidx.constraintlayout:constraintlayout:1.1.3"
|
||||
implementation 'androidx.constraintlayout:constraintlayout:2.0.1'
|
||||
implementation "androidx.legacy:legacy-support-v4:1.0.0"
|
||||
implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version"
|
||||
testImplementation "junit:junit:4.13"
|
||||
androidTestImplementation "androidx.test:runner:1.2.0"
|
||||
androidTestImplementation "androidx.test.espresso:espresso-core:3.2.0"
|
||||
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.0'
|
||||
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.0'
|
||||
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"
|
||||
|
@ -84,6 +84,8 @@
|
||||
<activity android:name=".activities.SettingsDraftsActivity" />
|
||||
<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 |
@ -144,5 +144,4 @@ public class AddCollaboratorToRepositoryActivity extends BaseActivity {
|
||||
onClickListener = view -> finish();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -40,9 +40,11 @@ public class AddNewAccountActivity extends BaseActivity {
|
||||
private ActivityAddNewAccountBinding viewBinding;
|
||||
|
||||
private enum Protocol {HTTPS, HTTP}
|
||||
private String spinnerSelectedValue;
|
||||
|
||||
@Override
|
||||
protected int getLayoutResourceId(){
|
||||
protected int getLayoutResourceId() {
|
||||
|
||||
return R.layout.activity_add_new_account;
|
||||
}
|
||||
|
||||
@ -62,12 +64,12 @@ public class AddNewAccountActivity extends BaseActivity {
|
||||
initCloseListener();
|
||||
viewBinding.close.setOnClickListener(onClickListener);
|
||||
|
||||
ArrayAdapter<AddNewAccountActivity.Protocol> adapterProtocols = new ArrayAdapter<>(AddNewAccountActivity.this, R.layout.spinner_item, AddNewAccountActivity.Protocol.values());
|
||||
adapterProtocols.setDropDownViewResource(R.layout.spinner_dropdown_item);
|
||||
|
||||
ArrayAdapter<Protocol> adapterProtocols = new ArrayAdapter<>(ctx, R.layout.list_spinner_items, Protocol.values());
|
||||
viewBinding.protocolSpinner.setAdapter(adapterProtocols);
|
||||
|
||||
viewBinding.addNewAccount.setOnClickListener(login -> {
|
||||
viewBinding.protocolSpinner.setOnItemClickListener((parent, view1, position, id) -> spinnerSelectedValue = String.valueOf(parent.getItemAtPosition(position)));
|
||||
|
||||
viewBinding.addNewAccount.setOnClickListener(login -> {
|
||||
|
||||
boolean connToInternet = AppUtil.hasNetworkConnection(appCtx);
|
||||
|
||||
@ -80,7 +82,7 @@ public class AddNewAccountActivity extends BaseActivity {
|
||||
|
||||
processLogin();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
@ -88,9 +90,15 @@ public class AddNewAccountActivity extends BaseActivity {
|
||||
|
||||
try {
|
||||
|
||||
String instanceUrlET = viewBinding.instanceUrl.getText().toString();
|
||||
String loginToken = viewBinding.loginToken.getText().toString();
|
||||
Protocol protocol = (Protocol) viewBinding.protocolSpinner.getSelectedItem();
|
||||
String instanceUrlET = String.valueOf(viewBinding.instanceUrl.getText());
|
||||
String loginToken = String.valueOf(viewBinding.loginToken.getText());
|
||||
String protocol = spinnerSelectedValue;
|
||||
|
||||
if(protocol == null) {
|
||||
|
||||
Toasty.error(ctx, getResources().getString(R.string.protocolEmptyError));
|
||||
return;
|
||||
}
|
||||
|
||||
if(instanceUrlET.equals("")) {
|
||||
|
||||
@ -106,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.name().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);
|
||||
@ -127,7 +132,7 @@ public class AddNewAccountActivity extends BaseActivity {
|
||||
|
||||
Call<GiteaVersion> callVersion;
|
||||
|
||||
callVersion = RetrofitClient.getInstance(instanceUrl, ctx).getApiInterface().getGiteaVersionWithToken(loginToken);
|
||||
callVersion = RetrofitClient.getInstance(instanceUrl, ctx).getApiInterface().getGiteaVersionWithToken("token " + loginToken);
|
||||
|
||||
callVersion.enqueue(new Callback<GiteaVersion>() {
|
||||
|
||||
@ -137,19 +142,16 @@ public class AddNewAccountActivity extends BaseActivity {
|
||||
if(responseVersion.code() == 200) {
|
||||
|
||||
GiteaVersion version = responseVersion.body();
|
||||
Version giteaVersion;
|
||||
|
||||
assert version != null;
|
||||
|
||||
try {
|
||||
giteaVersion = new Version(version.getVersion());
|
||||
}
|
||||
catch(Exception e) {
|
||||
|
||||
if(!Version.valid(version.getVersion())) {
|
||||
Toasty.error(ctx, getResources().getString(R.string.versionUnknown));
|
||||
return;
|
||||
}
|
||||
|
||||
tinyDB.putString("giteaVersion", version.getVersion());
|
||||
Version giteaVersion = new Version(version.getVersion());
|
||||
|
||||
if(giteaVersion.less(getString(R.string.versionLow))) {
|
||||
|
||||
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(ctx).setTitle(getString(R.string.versionAlertDialogHeader))
|
||||
@ -159,7 +161,6 @@ public class AddNewAccountActivity extends BaseActivity {
|
||||
alertDialogBuilder.setNegativeButton(getString(R.string.cancelButton), (dialog, which) -> {
|
||||
|
||||
dialog.dismiss();
|
||||
//enableProcessButton();
|
||||
});
|
||||
|
||||
alertDialogBuilder.setPositiveButton(getString(R.string.textContinue), (dialog, which) -> {
|
||||
@ -239,12 +240,12 @@ public class AddNewAccountActivity extends BaseActivity {
|
||||
|
||||
case 401:
|
||||
|
||||
Toasty.error(ctx,getResources().getString(R.string.unauthorizedApiError));
|
||||
Toasty.error(ctx, getResources().getString(R.string.unauthorizedApiError));
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
Toasty.error(ctx,getResources().getString(R.string.genericApiStatusError) + response.code());
|
||||
Toasty.error(ctx, getResources().getString(R.string.genericApiStatusError) + response.code());
|
||||
}
|
||||
|
||||
}
|
||||
@ -253,7 +254,7 @@ public class AddNewAccountActivity extends BaseActivity {
|
||||
public void onFailure(@NonNull Call<UserInfo> call, @NonNull Throwable t) {
|
||||
|
||||
Log.e("onFailure", t.toString());
|
||||
Toasty.error(ctx,getResources().getString(R.string.genericError));
|
||||
Toasty.error(ctx, getResources().getString(R.string.genericError));
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -5,6 +5,7 @@ import android.os.Bundle;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import org.acra.ACRA;
|
||||
import org.acra.BuildConfig;
|
||||
import org.acra.annotation.AcraCore;
|
||||
import org.acra.annotation.AcraNotification;
|
||||
import org.acra.config.CoreConfigurationBuilder;
|
||||
import org.acra.config.LimiterConfigurationBuilder;
|
||||
@ -16,6 +17,7 @@ import org.mian.gitnex.helpers.FontsOverride;
|
||||
import org.mian.gitnex.helpers.TimeHelper;
|
||||
import org.mian.gitnex.helpers.TinyDB;
|
||||
import org.mian.gitnex.notifications.NotificationsMaster;
|
||||
import static org.acra.ReportField.*;
|
||||
|
||||
/**
|
||||
* Author M M Arif
|
||||
@ -25,6 +27,7 @@ import org.mian.gitnex.notifications.NotificationsMaster;
|
||||
resTitle = R.string.crashTitle,
|
||||
resChannelName = R.string.setCrashReports,
|
||||
resText = R.string.crashMessage)
|
||||
@AcraCore(reportContent = { ANDROID_VERSION, PHONE_MODEL, STACK_TRACE })
|
||||
|
||||
public abstract class BaseActivity extends AppCompatActivity {
|
||||
|
||||
@ -133,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);
|
||||
|
@ -94,8 +94,9 @@ public class CreateIssueActivity extends BaseActivity implements View.OnClickLis
|
||||
final String repoName = parts[1];
|
||||
final String instanceToken = "token " + tinyDb.getString(loginUid + "-token");
|
||||
|
||||
// if gitea is 1.12 or higher use the new limit
|
||||
// require gitea 1.12 or higher
|
||||
if(new Version(tinyDb.getString("giteaVersion")).higherOrEqual("1.12.0")) {
|
||||
|
||||
resultLimit = StaticGlobalVariables.resultLimitNewGiteaInstances;
|
||||
}
|
||||
|
||||
@ -199,9 +200,9 @@ public class CreateIssueActivity extends BaseActivity implements View.OnClickLis
|
||||
}
|
||||
|
||||
int[] integers;
|
||||
if (!newIssueLabelsIdHolderForm.equals("")) {
|
||||
if (!newIssueLabelsIdHolderForm.equals("") && !newIssueLabelsIdHolderForm.equals("[]")) {
|
||||
|
||||
String[] items = newIssueLabelsIdHolderForm.replaceAll("\\[", "").replaceAll("\\]", "").replaceAll("\\s", "").split(",");
|
||||
String[] items = newIssueLabelsIdHolderForm.replaceAll("\\[", "").replaceAll("]", "").replaceAll("\\s", "").split(",");
|
||||
integers = new int[items.length];
|
||||
for (int i = 0; i < integers.length; i++) {
|
||||
integers[i] = Integer.parseInt(items[i]);
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
@ -104,6 +104,7 @@ public class IssueDetailActivity extends BaseActivity {
|
||||
private LinearLayout assigneesLayout;
|
||||
private View divider;
|
||||
private ProgressBar progressBar;
|
||||
private ImageView issuePrState;
|
||||
|
||||
@Override
|
||||
protected int getLayoutResourceId() {
|
||||
@ -145,6 +146,7 @@ public class IssueDetailActivity extends BaseActivity {
|
||||
assigneesLayout = findViewById(R.id.frameAssignees);
|
||||
divider = findViewById(R.id.divider);
|
||||
progressBar = findViewById(R.id.progressBar);
|
||||
issuePrState = findViewById(R.id.issuePrState);
|
||||
|
||||
Toolbar toolbar = findViewById(R.id.toolbar);
|
||||
TextView toolbarTitle = toolbar.findViewById(R.id.toolbar_title);
|
||||
@ -351,6 +353,27 @@ public class IssueDetailActivity extends BaseActivity {
|
||||
Issues singleIssue = response.body();
|
||||
assert singleIssue != null;
|
||||
|
||||
issuePrState.setVisibility(View.VISIBLE);
|
||||
if(singleIssue.getPull_request() != null) {
|
||||
|
||||
if(singleIssue.getPull_request().isMerged()) { // merged
|
||||
|
||||
issuePrState.setImageResource(R.drawable.ic_pull_request_merged);
|
||||
}
|
||||
else if(!singleIssue.getPull_request().isMerged() && singleIssue.getState().equals("closed")) { // closed
|
||||
|
||||
issuePrState.setImageResource(R.drawable.ic_pull_request_closed);
|
||||
}
|
||||
else { // open
|
||||
|
||||
issuePrState.setImageResource(R.drawable.ic_pull_request);
|
||||
}
|
||||
}
|
||||
else if(singleIssue.getState().equals("closed")) { // issue closed
|
||||
|
||||
issuePrState.setImageResource(R.drawable.ic_issue_closed_red);
|
||||
}
|
||||
|
||||
final Markwon markwon = Markwon.builder(Objects.requireNonNull(ctx)).usePlugin(CorePlugin.create())
|
||||
.usePlugin(ImagesPlugin.create(plugin -> {
|
||||
plugin.addSchemeHandler(new SchemeHandler() {
|
||||
|
@ -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("")) {
|
||||
|
||||
@ -256,7 +252,7 @@ public class LoginActivity extends BaseActivity {
|
||||
|
||||
if(!loginToken.equals("")) {
|
||||
|
||||
callVersion = RetrofitClient.getInstance(instanceUrl, ctx).getApiInterface().getGiteaVersionWithToken(loginToken);
|
||||
callVersion = RetrofitClient.getInstance(instanceUrl, ctx).getApiInterface().getGiteaVersionWithToken("token " + loginToken);
|
||||
}
|
||||
else {
|
||||
|
||||
@ -276,20 +272,17 @@ public class LoginActivity extends BaseActivity {
|
||||
if(responseVersion.code() == 200) {
|
||||
|
||||
GiteaVersion version = responseVersion.body();
|
||||
Version gitea_version;
|
||||
|
||||
assert version != null;
|
||||
|
||||
try {
|
||||
gitea_version = new Version(version.getVersion());
|
||||
}
|
||||
catch(Exception e) {
|
||||
|
||||
if(!Version.valid(version.getVersion())) {
|
||||
Toasty.error(ctx, getResources().getString(R.string.versionUnknown));
|
||||
enableProcessButton();
|
||||
return;
|
||||
}
|
||||
|
||||
tinyDB.putString("giteaVersion", version.getVersion());
|
||||
Version gitea_version = new Version(version.getVersion());
|
||||
|
||||
if(gitea_version.less(getString(R.string.versionLow))) {
|
||||
|
||||
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(ctx).setTitle(getString(R.string.versionAlertDialogHeader))
|
||||
@ -570,7 +563,8 @@ public class LoginActivity extends BaseActivity {
|
||||
|
||||
if(checkAccount == 0) {
|
||||
|
||||
accountId = userAccountsApi.insertNewAccount(accountName, instanceUrl, userDetails.getUsername(), newToken.getSha1(), "");
|
||||
accountId = userAccountsApi
|
||||
.insertNewAccount(accountName, instanceUrl, userDetails.getUsername(), newToken.getSha1(), "");
|
||||
tinyDB.putInt("currentActiveAccountId", (int) accountId);
|
||||
}
|
||||
else {
|
||||
|
@ -10,6 +10,7 @@ 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;
|
||||
@ -55,6 +56,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 +84,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 +110,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");
|
||||
@ -191,10 +201,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 +219,7 @@ public class MainActivity extends BaseActivity implements NavigationView.OnNavig
|
||||
@Override
|
||||
public void onDrawerOpened(@NonNull View drawerView) {
|
||||
|
||||
getNotificationsCount(instanceUrl, instanceToken);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -705,4 +721,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());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -104,7 +104,12 @@ public class ReplyToIssueActivity extends BaseActivity {
|
||||
}
|
||||
else {
|
||||
|
||||
draftIdOnCreate = returnDraftId();
|
||||
if(getIntent().getStringExtra("commentBody") != null) {
|
||||
draftIdOnCreate = returnDraftId(getIntent().getStringExtra("commentBody"));
|
||||
}
|
||||
else {
|
||||
draftIdOnCreate = returnDraftId("");
|
||||
}
|
||||
}
|
||||
|
||||
replyButton = findViewById(R.id.replyButton);
|
||||
@ -216,7 +221,7 @@ public class ReplyToIssueActivity extends BaseActivity {
|
||||
|
||||
}
|
||||
|
||||
private long returnDraftId() {
|
||||
private long returnDraftId(String draftText) {
|
||||
|
||||
TinyDB tinyDb = new TinyDB(getApplicationContext());
|
||||
|
||||
@ -226,7 +231,7 @@ public class ReplyToIssueActivity extends BaseActivity {
|
||||
|
||||
DraftsApi draftsApi = new DraftsApi(appCtx);
|
||||
|
||||
return draftsApi.insertDraft(repositoryId, currentActiveAccountId, issueNumber, "", StaticGlobalVariables.draftTypeComment, "");
|
||||
return draftsApi.insertDraft(repositoryId, currentActiveAccountId, issueNumber, draftText, StaticGlobalVariables.draftTypeComment, "");
|
||||
|
||||
}
|
||||
|
||||
|
@ -33,7 +33,6 @@ import org.mian.gitnex.fragments.BottomSheetIssuesFilterFragment;
|
||||
import org.mian.gitnex.fragments.BottomSheetMilestonesFilterFragment;
|
||||
import org.mian.gitnex.fragments.BottomSheetPullRequestFilterFragment;
|
||||
import org.mian.gitnex.fragments.BottomSheetRepoFragment;
|
||||
import org.mian.gitnex.fragments.BranchesFragment;
|
||||
import org.mian.gitnex.fragments.CollaboratorsFragment;
|
||||
import org.mian.gitnex.fragments.FilesFragment;
|
||||
import org.mian.gitnex.fragments.IssuesFragment;
|
||||
@ -163,7 +162,7 @@ public class RepoDetailActivity extends BaseActivity implements BottomSheetRepoF
|
||||
}
|
||||
|
||||
// Only show collaborators tab, if you have permission to
|
||||
View collaboratorTab = viewGroup.getChildAt(8);
|
||||
View collaboratorTab = viewGroup.getChildAt(7);
|
||||
|
||||
if(tinyDB.getBoolean("isRepoAdmin") || new Version(tinyDB.getString("giteaVersion")).higherOrEqual("1.12.0")) {
|
||||
|
||||
@ -229,8 +228,8 @@ public class RepoDetailActivity extends BaseActivity implements BottomSheetRepoF
|
||||
|
||||
if(textViewBadgeRelease.getText() != "") { // only show if API returned a number
|
||||
|
||||
Objects.requireNonNull(tabLayout.getTabAt(5)).setCustomView(tabHeader6);
|
||||
TabLayout.Tab tabOpenRelease = tabLayout.getTabAt(5);
|
||||
Objects.requireNonNull(tabLayout.getTabAt(4)).setCustomView(tabHeader6);
|
||||
TabLayout.Tab tabOpenRelease = tabLayout.getTabAt(4);
|
||||
assert tabOpenRelease != null; // FIXME This should be cleaned up
|
||||
TextView openReleaseTabView = Objects.requireNonNull(tabOpenRelease.getCustomView()).findViewById(R.id.counterBadgeReleaseText);
|
||||
openReleaseTabView.setTextColor(textColor);
|
||||
@ -300,6 +299,12 @@ public class RepoDetailActivity extends BaseActivity implements BottomSheetRepoF
|
||||
chooseBranch();
|
||||
return true;
|
||||
|
||||
case R.id.branchCommits:
|
||||
Intent intent = new Intent(ctx, CommitsActivity.class);
|
||||
intent.putExtra("branchName", tinyDB.getString("repoBranch"));
|
||||
ctx.startActivity(intent);
|
||||
return true;
|
||||
|
||||
default:
|
||||
return super.onOptionsItemSelected(item);
|
||||
|
||||
@ -397,6 +402,14 @@ public class RepoDetailActivity extends BaseActivity implements BottomSheetRepoF
|
||||
}
|
||||
break;
|
||||
|
||||
case "repoSettings":
|
||||
startActivity(new Intent(RepoDetailActivity.this, RepositorySettingsActivity.class));
|
||||
break;
|
||||
|
||||
case "newPullRequest":
|
||||
startActivity(new Intent(RepoDetailActivity.this, CreatePullRequestActivity.class));
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@ -490,20 +503,17 @@ public class RepoDetailActivity extends BaseActivity implements BottomSheetRepoF
|
||||
fragment = new PullRequestsFragment();
|
||||
break;
|
||||
|
||||
case 4: // Branches
|
||||
return BranchesFragment.newInstance(repositoryOwner, repositoryName);
|
||||
|
||||
case 5: // Releases
|
||||
case 4: // Releases
|
||||
return ReleasesFragment.newInstance(repositoryOwner, repositoryName);
|
||||
|
||||
case 6: // Milestones
|
||||
case 5: // Milestones
|
||||
fragment = new MilestonesFragment();
|
||||
break;
|
||||
|
||||
case 7: // Labels
|
||||
case 6: // Labels
|
||||
return LabelsFragment.newInstance(repositoryOwner, repositoryName);
|
||||
|
||||
case 8: // Collaborators
|
||||
case 7: // Collaborators
|
||||
return CollaboratorsFragment.newInstance(repositoryOwner, repositoryName);
|
||||
|
||||
}
|
||||
|
@ -0,0 +1,435 @@
|
||||
package org.mian.gitnex.activities;
|
||||
|
||||
import android.app.Dialog;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.drawable.ColorDrawable;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.widget.ImageView;
|
||||
import androidx.annotation.NonNull;
|
||||
import com.google.gson.JsonElement;
|
||||
import org.mian.gitnex.R;
|
||||
import org.mian.gitnex.clients.RetrofitClient;
|
||||
import org.mian.gitnex.database.api.RepositoriesApi;
|
||||
import org.mian.gitnex.databinding.ActivityRepositorySettingsBinding;
|
||||
import org.mian.gitnex.databinding.CustomRepositoryDeleteDialogBinding;
|
||||
import org.mian.gitnex.databinding.CustomRepositoryEditPropertiesDialogBinding;
|
||||
import org.mian.gitnex.databinding.CustomRepositoryTransferDialogBinding;
|
||||
import org.mian.gitnex.helpers.TinyDB;
|
||||
import org.mian.gitnex.helpers.Toasty;
|
||||
import org.mian.gitnex.helpers.Version;
|
||||
import org.mian.gitnex.models.RepositoryTransfer;
|
||||
import org.mian.gitnex.models.UserRepositories;
|
||||
import retrofit2.Call;
|
||||
import retrofit2.Callback;
|
||||
|
||||
/**
|
||||
* Author M M Arif
|
||||
*/
|
||||
|
||||
public class RepositorySettingsActivity extends BaseActivity {
|
||||
|
||||
private ActivityRepositorySettingsBinding viewBinding;
|
||||
private CustomRepositoryEditPropertiesDialogBinding propBinding;
|
||||
private CustomRepositoryDeleteDialogBinding deleteRepoBinding;
|
||||
private CustomRepositoryTransferDialogBinding transferRepoBinding;
|
||||
private Dialog dialogProp;
|
||||
private Dialog dialogDeleteRepository;
|
||||
private Dialog dialogTransferRepository;
|
||||
private View.OnClickListener onClickListener;
|
||||
private Context ctx = this;
|
||||
private Context appCtx;
|
||||
private TinyDB tinyDb;
|
||||
|
||||
private String instanceUrl;
|
||||
private String loginUid;
|
||||
private String instanceToken;
|
||||
|
||||
private String repositoryOwner;
|
||||
private String repositoryName;
|
||||
|
||||
@Override
|
||||
protected int getLayoutResourceId(){
|
||||
return R.layout.activity_repository_settings;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
|
||||
super.onCreate(savedInstanceState);
|
||||
appCtx = getApplicationContext();
|
||||
tinyDb = new TinyDB(appCtx);
|
||||
|
||||
viewBinding = ActivityRepositorySettingsBinding.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("/");
|
||||
repositoryOwner = parts[0];
|
||||
repositoryName = parts[1];
|
||||
instanceToken = "token " + tinyDb.getString(loginUid + "-token");
|
||||
|
||||
ImageView closeActivity = findViewById(R.id.close);
|
||||
|
||||
initCloseListener();
|
||||
closeActivity.setOnClickListener(onClickListener);
|
||||
|
||||
// require gitea 1.12 or higher
|
||||
if(new Version(tinyDb.getString("giteaVersion")).higherOrEqual("1.12.0")) {
|
||||
|
||||
viewBinding.transferOwnerFrame.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
viewBinding.editProperties.setOnClickListener(editProperties -> {
|
||||
showRepositoryProperties();
|
||||
});
|
||||
|
||||
viewBinding.deleteRepository.setOnClickListener(deleteRepository -> {
|
||||
showDeleteRepository();
|
||||
});
|
||||
|
||||
viewBinding.transferOwnerFrame.setOnClickListener(transferRepositoryOwnership -> {
|
||||
showTransferRepository();
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
private void showTransferRepository() {
|
||||
|
||||
dialogTransferRepository = new Dialog(ctx, R.style.ThemeOverlay_MaterialComponents_Dialog_Alert);
|
||||
|
||||
if (dialogTransferRepository.getWindow() != null) {
|
||||
|
||||
dialogTransferRepository.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
|
||||
}
|
||||
|
||||
transferRepoBinding = CustomRepositoryTransferDialogBinding.inflate(LayoutInflater.from(ctx));
|
||||
|
||||
View view = transferRepoBinding.getRoot();
|
||||
dialogTransferRepository.setContentView(view);
|
||||
|
||||
transferRepoBinding.cancel.setOnClickListener(editProperties -> {
|
||||
dialogTransferRepository.dismiss();
|
||||
});
|
||||
|
||||
transferRepoBinding.transfer.setOnClickListener(deleteRepo -> {
|
||||
|
||||
String newOwner = String.valueOf(transferRepoBinding.ownerNameForTransfer.getText());
|
||||
String repoName = String.valueOf(transferRepoBinding.repoNameForTransfer.getText());
|
||||
|
||||
if(!repositoryName.equals(repoName)) {
|
||||
|
||||
Toasty.error(ctx, getString(R.string.repoSettingsDeleteError));
|
||||
}
|
||||
else if(newOwner.matches("")) {
|
||||
|
||||
Toasty.error(ctx, getString(R.string.repoTransferOwnerError));
|
||||
}
|
||||
else {
|
||||
|
||||
transferRepository(newOwner);
|
||||
}
|
||||
});
|
||||
|
||||
dialogTransferRepository.show();
|
||||
}
|
||||
|
||||
private void transferRepository(String newOwner) {
|
||||
|
||||
RepositoryTransfer repositoryTransfer = new RepositoryTransfer(newOwner);
|
||||
|
||||
Call<JsonElement> transferCall = RetrofitClient
|
||||
.getInstance(instanceUrl, ctx)
|
||||
.getApiInterface()
|
||||
.transferRepository(instanceToken, repositoryOwner, repositoryName, repositoryTransfer);
|
||||
|
||||
transferCall.enqueue(new Callback<JsonElement>() {
|
||||
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<JsonElement> call, @NonNull retrofit2.Response<JsonElement> response) {
|
||||
|
||||
transferRepoBinding.transfer.setVisibility(View.GONE);
|
||||
transferRepoBinding.processingRequest.setVisibility(View.VISIBLE);
|
||||
|
||||
if (response.code() == 202) {
|
||||
|
||||
dialogTransferRepository.dismiss();
|
||||
Toasty.success(ctx, getString(R.string.repoTransferSuccess));
|
||||
|
||||
finish();
|
||||
RepositoriesApi.deleteRepository((int) tinyDb.getLong("repositoryId", 0));
|
||||
Intent intent = new Intent(RepositorySettingsActivity.this, MainActivity.class);
|
||||
RepositorySettingsActivity.this.startActivity(intent);
|
||||
}
|
||||
else if (response.code() == 404) {
|
||||
|
||||
transferRepoBinding.transfer.setVisibility(View.VISIBLE);
|
||||
transferRepoBinding.processingRequest.setVisibility(View.GONE);
|
||||
Toasty.error(ctx, getString(R.string.repoTransferError));
|
||||
}
|
||||
else {
|
||||
|
||||
transferRepoBinding.transfer.setVisibility(View.VISIBLE);
|
||||
transferRepoBinding.processingRequest.setVisibility(View.GONE);
|
||||
Toasty.error(ctx, getString(R.string.genericError));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(@NonNull Call<JsonElement> call, @NonNull Throwable t) {
|
||||
|
||||
transferRepoBinding.transfer.setVisibility(View.VISIBLE);
|
||||
transferRepoBinding.processingRequest.setVisibility(View.GONE);
|
||||
Toasty.error(ctx, getString(R.string.genericServerResponseError));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void showDeleteRepository() {
|
||||
|
||||
dialogDeleteRepository = new Dialog(ctx, R.style.ThemeOverlay_MaterialComponents_Dialog_Alert);
|
||||
|
||||
if (dialogDeleteRepository.getWindow() != null) {
|
||||
dialogDeleteRepository.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
|
||||
}
|
||||
|
||||
deleteRepoBinding = CustomRepositoryDeleteDialogBinding.inflate(LayoutInflater.from(ctx));
|
||||
|
||||
View view = deleteRepoBinding.getRoot();
|
||||
dialogDeleteRepository.setContentView(view);
|
||||
|
||||
deleteRepoBinding.cancel.setOnClickListener(editProperties -> {
|
||||
dialogDeleteRepository.dismiss();
|
||||
});
|
||||
|
||||
deleteRepoBinding.delete.setOnClickListener(deleteRepo -> {
|
||||
|
||||
if(!repositoryName.equals(String.valueOf(deleteRepoBinding.repoNameForDeletion.getText()))) {
|
||||
|
||||
Toasty.error(ctx, getString(R.string.repoSettingsDeleteError));
|
||||
}
|
||||
else {
|
||||
|
||||
deleteRepository();
|
||||
}
|
||||
});
|
||||
|
||||
dialogDeleteRepository.show();
|
||||
}
|
||||
|
||||
private void deleteRepository() {
|
||||
|
||||
Call<JsonElement> deleteCall = RetrofitClient
|
||||
.getInstance(instanceUrl, ctx)
|
||||
.getApiInterface()
|
||||
.deleteRepository(instanceToken, repositoryOwner, repositoryName);
|
||||
|
||||
deleteCall.enqueue(new Callback<JsonElement>() {
|
||||
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<JsonElement> call, @NonNull retrofit2.Response<JsonElement> response) {
|
||||
|
||||
deleteRepoBinding.delete.setVisibility(View.GONE);
|
||||
deleteRepoBinding.processingRequest.setVisibility(View.VISIBLE);
|
||||
|
||||
if (response.code() == 204) {
|
||||
|
||||
dialogDeleteRepository.dismiss();
|
||||
Toasty.success(ctx, getString(R.string.repoDeletionSuccess));
|
||||
|
||||
finish();
|
||||
RepositoriesApi.deleteRepository((int) tinyDb.getLong("repositoryId", 0));
|
||||
Intent intent = new Intent(RepositorySettingsActivity.this, MainActivity.class);
|
||||
RepositorySettingsActivity.this.startActivity(intent);
|
||||
}
|
||||
else {
|
||||
|
||||
deleteRepoBinding.delete.setVisibility(View.VISIBLE);
|
||||
deleteRepoBinding.processingRequest.setVisibility(View.GONE);
|
||||
Toasty.error(ctx, getString(R.string.genericError));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(@NonNull Call<JsonElement> call, @NonNull Throwable t) {
|
||||
|
||||
deleteRepoBinding.delete.setVisibility(View.VISIBLE);
|
||||
deleteRepoBinding.processingRequest.setVisibility(View.GONE);
|
||||
Toasty.error(ctx, getString(R.string.genericServerResponseError));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void showRepositoryProperties() {
|
||||
|
||||
dialogProp = new Dialog(ctx, R.style.ThemeOverlay_MaterialComponents_Dialog_Alert);
|
||||
|
||||
if (dialogProp.getWindow() != null) {
|
||||
dialogProp.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
|
||||
}
|
||||
|
||||
propBinding = CustomRepositoryEditPropertiesDialogBinding.inflate(LayoutInflater.from(ctx));
|
||||
|
||||
View view = propBinding.getRoot();
|
||||
dialogProp.setContentView(view);
|
||||
|
||||
propBinding.cancel.setOnClickListener(editProperties -> {
|
||||
dialogProp.dismiss();
|
||||
});
|
||||
|
||||
Call<UserRepositories> call = RetrofitClient
|
||||
.getInstance(instanceUrl, ctx)
|
||||
.getApiInterface()
|
||||
.getUserRepository(instanceToken, repositoryOwner, repositoryName);
|
||||
|
||||
call.enqueue(new Callback<UserRepositories>() {
|
||||
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<UserRepositories> call, @NonNull retrofit2.Response<UserRepositories> response) {
|
||||
|
||||
UserRepositories repoInfo = response.body();
|
||||
|
||||
propBinding.progressBar.setVisibility(View.GONE);
|
||||
propBinding.mainView.setVisibility(View.VISIBLE);
|
||||
|
||||
if (response.code() == 200) {
|
||||
|
||||
assert repoInfo != null;
|
||||
propBinding.repoName.setText(repoInfo.getName());
|
||||
propBinding.repoWebsite.setText(repoInfo.getWebsite());
|
||||
propBinding.repoDescription.setText(repoInfo.getDescription());
|
||||
propBinding.repoPrivate.setChecked(repoInfo.getPrivateFlag());
|
||||
propBinding.repoAsTemplate.setChecked(repoInfo.isTemplate());
|
||||
|
||||
propBinding.repoEnableIssues.setChecked(repoInfo.getHas_issues());
|
||||
|
||||
propBinding.repoEnableIssues.setOnCheckedChangeListener((buttonView, isChecked) -> {
|
||||
|
||||
if (isChecked) {
|
||||
propBinding.repoEnableTimer.setVisibility(View.VISIBLE);
|
||||
}
|
||||
else {
|
||||
propBinding.repoEnableTimer.setVisibility(View.GONE);
|
||||
}
|
||||
});
|
||||
|
||||
if(repoInfo.getInternal_tracker() != null) {
|
||||
propBinding.repoEnableTimer.setChecked(repoInfo.getInternal_tracker().isEnable_time_tracker());
|
||||
}
|
||||
else {
|
||||
propBinding.repoEnableTimer.setVisibility(View.GONE);
|
||||
}
|
||||
propBinding.repoEnableWiki.setChecked(repoInfo.isHas_wiki());
|
||||
propBinding.repoEnablePr.setChecked(repoInfo.isHas_pull_requests());
|
||||
propBinding.repoEnableMerge.setChecked(repoInfo.isAllow_merge_commits());
|
||||
propBinding.repoEnableRebase.setChecked(repoInfo.isAllow_rebase());
|
||||
propBinding.repoEnableSquash.setChecked(repoInfo.isAllow_squash_merge());
|
||||
propBinding.repoEnableForceMerge.setChecked(repoInfo.isAllow_rebase_explicit());
|
||||
|
||||
}
|
||||
else {
|
||||
|
||||
Toasty.error(ctx, getString(R.string.genericError));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(@NonNull Call<UserRepositories> call, @NonNull Throwable t) {
|
||||
|
||||
Toasty.error(ctx, getString(R.string.genericServerResponseError));
|
||||
}
|
||||
});
|
||||
|
||||
propBinding.save.setOnClickListener(saveProperties -> saveRepositoryProperties(String.valueOf(propBinding.repoName.getText()),
|
||||
String.valueOf(propBinding.repoWebsite.getText()),
|
||||
String.valueOf(propBinding.repoDescription.getText()),
|
||||
propBinding.repoPrivate.isChecked(), propBinding.repoAsTemplate.isChecked(),
|
||||
propBinding.repoEnableIssues.isChecked(), propBinding.repoEnableWiki.isChecked(),
|
||||
propBinding.repoEnablePr.isChecked(), propBinding.repoEnableTimer.isChecked(),
|
||||
propBinding.repoEnableMerge.isChecked(), propBinding.repoEnableRebase.isChecked(),
|
||||
propBinding.repoEnableSquash.isChecked(), propBinding.repoEnableForceMerge.isChecked()));
|
||||
|
||||
dialogProp.show();
|
||||
|
||||
}
|
||||
|
||||
private void saveRepositoryProperties(String repoName, String repoWebsite, String repoDescription,
|
||||
boolean repoPrivate, boolean repoAsTemplate, boolean repoEnableIssues, boolean repoEnableWiki,
|
||||
boolean repoEnablePr, boolean repoEnableTimer, boolean repoEnableMerge, boolean repoEnableRebase,
|
||||
boolean repoEnableSquash, boolean repoEnableForceMerge) {
|
||||
|
||||
UserRepositories.internalTimeTrackerObject repoPropsTimeTracker = new UserRepositories.internalTimeTrackerObject(repoEnableTimer);
|
||||
|
||||
UserRepositories repoProps;
|
||||
if(!repoEnableIssues) {
|
||||
repoProps = new UserRepositories(repoName, repoWebsite, repoDescription, repoPrivate, repoAsTemplate, repoEnableIssues, repoEnableWiki, repoEnablePr, repoEnableMerge,
|
||||
repoEnableRebase, repoEnableSquash, repoEnableForceMerge);
|
||||
}
|
||||
else {
|
||||
repoProps = new UserRepositories(repoName, repoWebsite, repoDescription, repoPrivate, repoAsTemplate, repoEnableIssues, repoEnableWiki, repoEnablePr, repoPropsTimeTracker, repoEnableMerge,
|
||||
repoEnableRebase, repoEnableSquash, repoEnableForceMerge);
|
||||
}
|
||||
|
||||
Call<UserRepositories> propsCall = RetrofitClient
|
||||
.getInstance(instanceUrl, ctx)
|
||||
.getApiInterface()
|
||||
.updateRepositoryProperties(instanceToken, repositoryOwner, repositoryName, repoProps);
|
||||
|
||||
propsCall.enqueue(new Callback<UserRepositories>() {
|
||||
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<UserRepositories> call, @NonNull retrofit2.Response<UserRepositories> response) {
|
||||
|
||||
propBinding.save.setVisibility(View.GONE);
|
||||
propBinding.processingRequest.setVisibility(View.VISIBLE);
|
||||
|
||||
if (response.code() == 200) {
|
||||
|
||||
tinyDb.putBoolean("hasIssues", repoEnableIssues);
|
||||
tinyDb.putBoolean("hasPullRequests", repoEnablePr);
|
||||
|
||||
dialogProp.dismiss();
|
||||
Toasty.success(ctx, getString(R.string.repoPropertiesSaveSuccess));
|
||||
|
||||
if(!repositoryName.equals(repoName)) {
|
||||
|
||||
finish();
|
||||
RepositoriesApi.updateRepositoryOwnerAndName(repositoryOwner, repoName, (int) tinyDb.getLong("repositoryId", 0));
|
||||
Intent intent = new Intent(RepositorySettingsActivity.this, MainActivity.class);
|
||||
RepositorySettingsActivity.this.startActivity(intent);
|
||||
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
||||
propBinding.save.setVisibility(View.VISIBLE);
|
||||
propBinding.processingRequest.setVisibility(View.GONE);
|
||||
Toasty.error(ctx, getString(R.string.genericError));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(@NonNull Call<UserRepositories> call, @NonNull Throwable t) {
|
||||
|
||||
propBinding.save.setVisibility(View.VISIBLE);
|
||||
propBinding.processingRequest.setVisibility(View.GONE);
|
||||
Toasty.error(ctx, getString(R.string.genericServerResponseError));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void initCloseListener() {
|
||||
onClickListener = view -> finish();
|
||||
}
|
||||
|
||||
}
|
@ -22,8 +22,8 @@ public class SettingsTranslationActivity extends BaseActivity {
|
||||
private Context appCtx;
|
||||
private View.OnClickListener onClickListener;
|
||||
|
||||
private static String[] langList = {"English", "Arabic", "Chinese", "Finnish", "French", "German", "Italian", "Latvian", "Persian", "Polish", "Portuguese/Brazilian", "Russian", "Serbian", "Spanish", "Turkish",
|
||||
"Ukrainian"};
|
||||
private static String[] langList = {"English", "Arabic", "Chinese", "Czech", "Finnish", "French", "German", "Italian", "Latvian", "Persian",
|
||||
"Polish", "Portuguese/Brazilian", "Russian", "Serbian", "Spanish", "Turkish", "Ukrainian"};
|
||||
private static int langSelectedChoice = 0;
|
||||
|
||||
@Override
|
||||
@ -95,6 +95,9 @@ public class SettingsTranslationActivity extends BaseActivity {
|
||||
case "Chinese":
|
||||
tinyDb.putString("locale", "zh");
|
||||
break;
|
||||
case "Czech":
|
||||
tinyDb.putString("locale", "cs");
|
||||
break;
|
||||
case "Finnish":
|
||||
tinyDb.putString("locale", "fi");
|
||||
break;
|
||||
@ -157,6 +160,7 @@ public class SettingsTranslationActivity extends BaseActivity {
|
||||
}
|
||||
|
||||
private void initCloseListener() {
|
||||
|
||||
onClickListener = view -> finish();
|
||||
}
|
||||
|
||||
|
@ -1,90 +0,0 @@
|
||||
package org.mian.gitnex.adapters;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.Button;
|
||||
import android.widget.TextView;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import org.mian.gitnex.R;
|
||||
import org.mian.gitnex.activities.CommitsActivity;
|
||||
import org.mian.gitnex.helpers.TinyDB;
|
||||
import org.mian.gitnex.models.Branches;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* Author M M Arif
|
||||
*/
|
||||
|
||||
public class BranchesAdapter extends RecyclerView.Adapter<BranchesAdapter.BranchesViewHolder> {
|
||||
|
||||
private List<Branches> branchesList;
|
||||
private Context mCtx;
|
||||
|
||||
static class BranchesViewHolder extends RecyclerView.ViewHolder {
|
||||
|
||||
private TextView branchNameTv;
|
||||
private TextView branchCommitAuthor;
|
||||
|
||||
private BranchesViewHolder(View itemView) {
|
||||
super(itemView);
|
||||
|
||||
branchNameTv = itemView.findViewById(R.id.branchName);
|
||||
branchCommitAuthor = itemView.findViewById(R.id.branchCommitAuthor);
|
||||
Button branchCommitHash = itemView.findViewById(R.id.branchCommitHash);
|
||||
|
||||
branchCommitHash.setOnClickListener(new View.OnClickListener() {
|
||||
public void onClick(View v) {
|
||||
|
||||
Intent intent = new Intent(v.getContext(), CommitsActivity.class);
|
||||
intent.putExtra("branchName", String.valueOf(branchNameTv.getText()));
|
||||
Objects.requireNonNull(v.getContext()).startActivity(intent);
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public BranchesAdapter(Context mCtx, List<Branches> branchesMain) {
|
||||
this.mCtx = mCtx;
|
||||
this.branchesList = branchesMain;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public BranchesAdapter.BranchesViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
||||
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_branches, parent, false);
|
||||
return new BranchesAdapter.BranchesViewHolder(v);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(@NonNull BranchesAdapter.BranchesViewHolder holder, int position) {
|
||||
|
||||
final TinyDB tinyDb = new TinyDB(mCtx);
|
||||
final String instanceUrl = tinyDb.getString("instanceUrl");
|
||||
|
||||
Branches currentItem = branchesList.get(position);
|
||||
holder.branchNameTv.setText(currentItem.getName());
|
||||
|
||||
if(currentItem.getCommit().getAuthor().getName() != null || !currentItem.getCommit().getAuthor().getName().equals("")) {
|
||||
holder.branchCommitAuthor.setText(mCtx.getResources().getString(R.string.commitAuthor, currentItem.getCommit().getAuthor().getName()));
|
||||
}
|
||||
else {
|
||||
holder.branchCommitAuthor.setText(mCtx.getResources().getString(R.string.commitAuthor, currentItem.getCommit().getAuthor().getUsername()));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return branchesList.size();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
@ -286,7 +286,7 @@ public class ExploreRepositoriesAdapter extends RecyclerView.Adapter<ExploreRepo
|
||||
holder.repoDescription.setVisibility(View.VISIBLE);
|
||||
holder.repoDescription.setText(currentItem.getDescription());
|
||||
}
|
||||
holder.fullName.setText(currentItem.getFullname());
|
||||
holder.fullName.setText(currentItem.getFullName());
|
||||
if(currentItem.getPrivateFlag()) {
|
||||
holder.repoPrivatePublic.setImageResource(R.drawable.ic_lock);
|
||||
holder.repoType.setText(R.string.strPrivate);
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
@ -291,7 +291,7 @@ public class MyReposListAdapter extends RecyclerView.Adapter<MyReposListAdapter.
|
||||
holder.repoDescription.setVisibility(View.VISIBLE);
|
||||
holder.repoDescription.setText(currentItem.getDescription());
|
||||
}
|
||||
holder.repoFullName.setText(currentItem.getFullname());
|
||||
holder.repoFullName.setText(currentItem.getFullName());
|
||||
if(currentItem.getPrivateFlag()) {
|
||||
holder.repoPrivatePublic.setImageResource(R.drawable.ic_lock);
|
||||
holder.repoType.setText(R.string.strPrivate);
|
||||
@ -344,7 +344,7 @@ public class MyReposListAdapter extends RecyclerView.Adapter<MyReposListAdapter.
|
||||
String filterPattern = constraint.toString().toLowerCase().trim();
|
||||
|
||||
for(UserRepositories item : reposListFull) {
|
||||
if(item.getFullname().toLowerCase().contains(filterPattern) || item.getDescription().toLowerCase().contains(filterPattern)) {
|
||||
if(item.getFullName().toLowerCase().contains(filterPattern) || item.getDescription().toLowerCase().contains(filterPattern)) {
|
||||
filteredList.add(item);
|
||||
}
|
||||
}
|
||||
|
@ -85,7 +85,7 @@ public class NotificationsAdapter extends RecyclerView.Adapter<NotificationsAdap
|
||||
.getString(R.string.hash) + url.substring(url.lastIndexOf("/") + 1) + "</font>";
|
||||
|
||||
holder.subject.setText(Html.fromHtml(subjectId + " " + notificationThread.getSubject().getTitle()));
|
||||
holder.repository.setText(notificationThread.getRepository().getFullname());
|
||||
holder.repository.setText(notificationThread.getRepository().getFullName());
|
||||
|
||||
if(notificationThread.isPinned()) {
|
||||
holder.pinned.setVisibility(View.VISIBLE);
|
||||
@ -120,7 +120,7 @@ public class NotificationsAdapter extends RecyclerView.Adapter<NotificationsAdap
|
||||
|
||||
onNotificationClickedListener.onNotificationClicked(notificationThread);
|
||||
|
||||
String[] parts = notificationThread.getRepository().getFullname().split("/");
|
||||
String[] parts = notificationThread.getRepository().getFullName().split("/");
|
||||
final String repoOwner = parts[0];
|
||||
final String repoName = parts[1];
|
||||
|
||||
|
@ -175,7 +175,7 @@ public class RepoForksAdapter extends RecyclerView.Adapter<RecyclerView.ViewHold
|
||||
repoDescription.setVisibility(View.VISIBLE);
|
||||
repoDescription.setText(forksModel.getDescription());
|
||||
}
|
||||
fullName.setText(forksModel.getFullname());
|
||||
fullName.setText(forksModel.getFullName());
|
||||
|
||||
if(forksModel.getPrivateFlag()) {
|
||||
repoPrivatePublic.setImageResource(R.drawable.ic_lock);
|
||||
|
@ -292,7 +292,7 @@ public class ReposListAdapter extends RecyclerView.Adapter<ReposListAdapter.Repo
|
||||
holder.repoDescription.setVisibility(View.VISIBLE);
|
||||
holder.repoDescription.setText(currentItem.getDescription());
|
||||
}
|
||||
holder.fullName.setText(currentItem.getFullname());
|
||||
holder.fullName.setText(currentItem.getFullName());
|
||||
if(currentItem.getPrivateFlag()) {
|
||||
holder.repoPrivatePublic.setImageResource(R.drawable.ic_lock);
|
||||
holder.repoType.setText(R.string.strPrivate);
|
||||
@ -344,7 +344,7 @@ public class ReposListAdapter extends RecyclerView.Adapter<ReposListAdapter.Repo
|
||||
String filterPattern = constraint.toString().toLowerCase().trim();
|
||||
|
||||
for(UserRepositories item : reposListFull) {
|
||||
if(item.getFullname().toLowerCase().contains(filterPattern) || item.getDescription().toLowerCase().contains(filterPattern)) {
|
||||
if(item.getFullName().toLowerCase().contains(filterPattern) || item.getDescription().toLowerCase().contains(filterPattern)) {
|
||||
filteredList.add(item);
|
||||
}
|
||||
}
|
||||
|
@ -292,7 +292,7 @@ public class RepositoriesByOrgAdapter extends RecyclerView.Adapter<RepositoriesB
|
||||
holder.repoDescription.setVisibility(View.VISIBLE);
|
||||
holder.repoDescription.setText(currentItem.getDescription());
|
||||
}
|
||||
holder.fullName.setText(currentItem.getFullname());
|
||||
holder.fullName.setText(currentItem.getFullName());
|
||||
if(currentItem.getPrivateFlag()) {
|
||||
holder.repoPrivatePublic.setImageResource(R.drawable.ic_lock);
|
||||
holder.repoType.setText(R.string.strPrivate);
|
||||
@ -340,7 +340,7 @@ public class RepositoriesByOrgAdapter extends RecyclerView.Adapter<RepositoriesB
|
||||
String filterPattern = constraint.toString().toLowerCase().trim();
|
||||
|
||||
for (UserRepositories item : reposListFull) {
|
||||
if (item.getFullname().toLowerCase().contains(filterPattern) || item.getDescription().toLowerCase().contains(filterPattern)) {
|
||||
if (item.getFullName().toLowerCase().contains(filterPattern) || item.getDescription().toLowerCase().contains(filterPattern)) {
|
||||
filteredList.add(item);
|
||||
}
|
||||
}
|
||||
|
@ -295,7 +295,7 @@ public class StarredReposListAdapter extends RecyclerView.Adapter<StarredReposLi
|
||||
holder.repoDescription.setVisibility(View.VISIBLE);
|
||||
holder.repoDescription.setText(currentItem.getDescription());
|
||||
}
|
||||
holder.fullName.setText(currentItem.getFullname());
|
||||
holder.fullName.setText(currentItem.getFullName());
|
||||
if(currentItem.getPrivateFlag()) {
|
||||
holder.repoPrivatePublic.setImageResource(R.drawable.ic_lock);
|
||||
holder.repoType.setText(R.string.strPrivate);
|
||||
@ -342,7 +342,7 @@ public class StarredReposListAdapter extends RecyclerView.Adapter<StarredReposLi
|
||||
String filterPattern = constraint.toString().toLowerCase().trim();
|
||||
|
||||
for (UserRepositories item : reposListFull) {
|
||||
if (item.getFullname().toLowerCase().contains(filterPattern) || item.getDescription().toLowerCase().contains(filterPattern)) {
|
||||
if (item.getFullName().toLowerCase().contains(filterPattern) || item.getDescription().toLowerCase().contains(filterPattern)) {
|
||||
filteredList.add(item);
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,5 @@
|
||||
package org.mian.gitnex.adapters;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.Context;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
@ -25,32 +24,33 @@ import io.mikael.urlbuilder.UrlBuilder;
|
||||
public class UserAccountsListDialogAdapter extends ArrayAdapter<UserAccount> {
|
||||
|
||||
private final Context mCtx;
|
||||
private final List<UserAccount> userAccountsList;
|
||||
private final TinyDB tinyDB;
|
||||
private final List<UserAccount> userAccounts;
|
||||
|
||||
public UserAccountsListDialogAdapter(@NonNull Context mCtx, int resource, @NonNull List<UserAccount> objects) {
|
||||
public UserAccountsListDialogAdapter(@NonNull Context mCtx, int resource, @NonNull List<UserAccount> userAccounts) {
|
||||
|
||||
super(mCtx, resource, objects);
|
||||
userAccountsList = objects;
|
||||
super(mCtx, resource, userAccounts);
|
||||
|
||||
tinyDB = new TinyDB(mCtx);
|
||||
this.userAccounts = userAccounts;
|
||||
this.mCtx = mCtx;
|
||||
|
||||
}
|
||||
|
||||
@SuppressLint("ViewHolder")
|
||||
@NonNull
|
||||
@Override
|
||||
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
|
||||
|
||||
LayoutInflater inflater = (LayoutInflater) mCtx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
|
||||
assert inflater != null;
|
||||
View rowView = inflater.inflate(R.layout.custom_user_accounts_list, parent, false);
|
||||
if(convertView == null) {
|
||||
convertView = LayoutInflater.from(mCtx).inflate(R.layout.custom_user_accounts_list, parent, false);
|
||||
}
|
||||
|
||||
TinyDB tinyDB = new TinyDB(mCtx);
|
||||
ImageView profileImage = convertView.findViewById(R.id.profileImage);
|
||||
TextView userName = convertView.findViewById(R.id.userName);
|
||||
TextView accountUrl = convertView.findViewById(R.id.accountUrl);
|
||||
ImageView activeAccount = convertView.findViewById(R.id.activeAccount);
|
||||
|
||||
ImageView profileImage = rowView.findViewById(R.id.profileImage);
|
||||
TextView userName = rowView.findViewById(R.id.userName);
|
||||
TextView accountUrl = rowView.findViewById(R.id.accountUrl);
|
||||
ImageView activeAccount = rowView.findViewById(R.id.activeAccount);
|
||||
|
||||
UserAccount currentItem = userAccountsList.get(position);
|
||||
UserAccount currentItem = userAccounts.get(position);
|
||||
|
||||
String url = UrlBuilder.fromString(currentItem.getInstanceUrl())
|
||||
.withPath("/")
|
||||
@ -62,11 +62,15 @@ public class UserAccountsListDialogAdapter extends ArrayAdapter<UserAccount> {
|
||||
if(tinyDB.getInt("currentActiveAccountId") == currentItem.getAccountId()) {
|
||||
activeAccount.setVisibility(View.VISIBLE);
|
||||
}
|
||||
else {
|
||||
activeAccount.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
PicassoService
|
||||
.getInstance(mCtx).get().load(url + "img/favicon.png").placeholder(R.drawable.loader_animated).transform(new RoundedTransformation(8, 0)).resize(120, 120).centerCrop().into(profileImage);
|
||||
|
||||
return rowView;
|
||||
return convertView;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -127,6 +127,11 @@ public class RepositoriesApi {
|
||||
return repository;
|
||||
}
|
||||
|
||||
public static void updateRepositoryOwnerAndName(String repositoryOwner, String repositoryName, int repositoryId) {
|
||||
|
||||
new Thread(() -> repositoriesDao.updateRepositoryOwnerAndName(repositoryOwner, repositoryName, repositoryId)).start();
|
||||
}
|
||||
|
||||
public static void deleteRepositoriesByAccount(final int repoAccountId) {
|
||||
|
||||
new Thread(() -> repositoriesDao.deleteRepositoriesByAccount(repoAccountId)).start();
|
||||
|
@ -6,14 +6,12 @@ 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.databinding.FragmentAboutBinding;
|
||||
import org.mian.gitnex.helpers.AppUtil;
|
||||
import org.mian.gitnex.helpers.TinyDB;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* Author M M Arif
|
||||
@ -21,30 +19,17 @@ 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);
|
||||
|
||||
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 +38,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 +47,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 +56,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 +65,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();
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -41,6 +41,9 @@ public class BottomSheetRepoFragment extends BottomSheetDialogFragment {
|
||||
TextView unWatchRepository = v.findViewById(R.id.unWatchRepository);
|
||||
TextView shareRepository = v.findViewById(R.id.shareRepository);
|
||||
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 -> {
|
||||
|
||||
@ -49,6 +52,7 @@ public class BottomSheetRepoFragment extends BottomSheetDialogFragment {
|
||||
});
|
||||
|
||||
if(tinyDb.getBoolean("hasIssues")) {
|
||||
|
||||
createIssue.setVisibility(View.VISIBLE);
|
||||
createIssue.setOnClickListener(v12 -> {
|
||||
|
||||
@ -57,9 +61,24 @@ public class BottomSheetRepoFragment extends BottomSheetDialogFragment {
|
||||
});
|
||||
}
|
||||
else {
|
||||
|
||||
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");
|
||||
@ -67,13 +86,24 @@ public class BottomSheetRepoFragment extends BottomSheetDialogFragment {
|
||||
});
|
||||
|
||||
if (tinyDb.getBoolean("isRepoAdmin")) {
|
||||
|
||||
repoSettings.setOnClickListener(repoSettingsView -> {
|
||||
|
||||
bmListener.onButtonClicked("repoSettings");
|
||||
dismiss();
|
||||
});
|
||||
|
||||
addCollaborator.setOnClickListener(v1 -> {
|
||||
|
||||
bmListener.onButtonClicked("addCollaborator");
|
||||
dismiss();
|
||||
});
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
|
||||
addCollaborator.setVisibility(View.GONE);
|
||||
repoSettingsDivider.setVisibility(View.GONE);
|
||||
repoSettings.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
createRelease.setOnClickListener(v14 -> {
|
||||
|
@ -1,149 +0,0 @@
|
||||
package org.mian.gitnex.fragments;
|
||||
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ProgressBar;
|
||||
import android.widget.TextView;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.lifecycle.Observer;
|
||||
import androidx.lifecycle.ViewModelProvider;
|
||||
import androidx.recyclerview.widget.DividerItemDecoration;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
|
||||
import org.mian.gitnex.R;
|
||||
import org.mian.gitnex.adapters.BranchesAdapter;
|
||||
import org.mian.gitnex.helpers.Authorization;
|
||||
import org.mian.gitnex.helpers.TinyDB;
|
||||
import org.mian.gitnex.models.Branches;
|
||||
import org.mian.gitnex.viewmodels.BranchesViewModel;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Author M M Arif
|
||||
*/
|
||||
|
||||
public class BranchesFragment extends Fragment {
|
||||
|
||||
private ProgressBar mProgressBar;
|
||||
private BranchesAdapter adapter;
|
||||
private RecyclerView mRecyclerView;
|
||||
private TextView noDataBranches;
|
||||
private static String repoNameF = "param2";
|
||||
private static String repoOwnerF = "param1";
|
||||
|
||||
private String repoName;
|
||||
private String repoOwner;
|
||||
|
||||
private OnFragmentInteractionListener mListener;
|
||||
|
||||
public BranchesFragment() {
|
||||
}
|
||||
|
||||
public static BranchesFragment newInstance(String param1, String param2) {
|
||||
BranchesFragment fragment = new BranchesFragment();
|
||||
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) {
|
||||
repoName = getArguments().getString(repoNameF);
|
||||
repoOwner = getArguments().getString(repoOwnerF);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState) {
|
||||
View v = inflater.inflate(R.layout.fragment_branches, container, false);
|
||||
|
||||
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");
|
||||
final String locale = tinyDb.getString("locale");
|
||||
final String timeFormat = tinyDb.getString("dateFormat");
|
||||
noDataBranches = v.findViewById(R.id.noDataBranches);
|
||||
|
||||
final SwipeRefreshLayout swipeRefresh = v.findViewById(R.id.pullToRefresh);
|
||||
|
||||
mRecyclerView = v.findViewById(R.id.recyclerView);
|
||||
mRecyclerView.setHasFixedSize(true);
|
||||
mRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
|
||||
|
||||
DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(mRecyclerView.getContext(),
|
||||
DividerItemDecoration.VERTICAL);
|
||||
mRecyclerView.addItemDecoration(dividerItemDecoration);
|
||||
|
||||
mProgressBar = v.findViewById(R.id.progress_bar);
|
||||
|
||||
swipeRefresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
|
||||
@Override
|
||||
public void onRefresh() {
|
||||
new Handler().postDelayed(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
swipeRefresh.setRefreshing(false);
|
||||
BranchesViewModel.loadBranchesList(instanceUrl, instanceToken, repoOwner, repoName, getContext());
|
||||
}
|
||||
}, 50);
|
||||
}
|
||||
});
|
||||
|
||||
fetchDataAsync(instanceUrl, Authorization.returnAuthentication(getContext(), loginUid, instanceToken), repoOwner, repoName);
|
||||
|
||||
return v;
|
||||
}
|
||||
|
||||
public void onButtonPressed(Uri uri) {
|
||||
if (mListener != null) {
|
||||
mListener.onFragmentInteraction(uri);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDetach() {
|
||||
super.onDetach();
|
||||
mListener = null;
|
||||
}
|
||||
|
||||
public interface OnFragmentInteractionListener {
|
||||
void onFragmentInteraction(Uri uri);
|
||||
}
|
||||
|
||||
private void fetchDataAsync(String instanceUrl, String instanceToken, String owner, String repo) {
|
||||
|
||||
BranchesViewModel branchesModel = new ViewModelProvider(this).get(BranchesViewModel.class);
|
||||
|
||||
branchesModel.getBranchesList(instanceUrl, instanceToken, owner, repo, getContext()).observe(getViewLifecycleOwner(), new Observer<List<Branches>>() {
|
||||
@Override
|
||||
public void onChanged(@Nullable List<Branches> branchesListMain) {
|
||||
adapter = new BranchesAdapter(getContext(), branchesListMain);
|
||||
if(adapter.getItemCount() > 0) {
|
||||
mRecyclerView.setAdapter(adapter);
|
||||
noDataBranches.setVisibility(View.GONE);
|
||||
}
|
||||
else {
|
||||
adapter.notifyDataSetChanged();
|
||||
mRecyclerView.setAdapter(adapter);
|
||||
noDataBranches.setVisibility(View.VISIBLE);
|
||||
}
|
||||
mProgressBar.setVisibility(View.GONE);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -30,7 +30,6 @@ import org.mian.gitnex.helpers.TinyDB;
|
||||
import org.mian.gitnex.viewmodels.FilesViewModel;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Objects;
|
||||
import moe.feng.common.view.breadcrumbs.BreadcrumbsView;
|
||||
import moe.feng.common.view.breadcrumbs.DefaultBreadcrumbsCallback;
|
||||
import moe.feng.common.view.breadcrumbs.model.BreadcrumbItem;
|
||||
@ -111,7 +110,7 @@ public class FilesFragment extends Fragment implements FilesAdapter.FilesAdapter
|
||||
mBreadcrumbsView = v.findViewById(R.id.breadcrumbs_view);
|
||||
mBreadcrumbsView.setItems(new ArrayList<>(Collections.singletonList(BreadcrumbItem.createSimpleItem(getResources().getString(R.string.filesBreadcrumbRoot) + getResources().getString(R.string.colonDivider) + ref))));
|
||||
|
||||
((RepoDetailActivity) Objects.requireNonNull(getActivity())).setFragmentRefreshListenerFiles(repoBranch -> {
|
||||
((RepoDetailActivity) requireActivity()).setFragmentRefreshListenerFiles(repoBranch -> {
|
||||
|
||||
fileStructure.setText("");
|
||||
ref = repoBranch;
|
||||
@ -198,7 +197,7 @@ public class FilesFragment extends Fragment implements FilesAdapter.FilesAdapter
|
||||
intent.putExtra("singleFileName", fileName);
|
||||
}
|
||||
|
||||
Objects.requireNonNull(getContext()).startActivity(intent);
|
||||
requireContext().startActivity(intent);
|
||||
}
|
||||
|
||||
private void fetchDataAsync(String instanceUrl, String instanceToken, String owner, String repo, String ref) {
|
||||
@ -263,6 +262,7 @@ public class FilesFragment extends Fragment implements FilesAdapter.FilesAdapter
|
||||
@Override
|
||||
public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {
|
||||
|
||||
menu.clear();
|
||||
inflater.inflate(R.menu.search_menu, menu);
|
||||
inflater.inflate(R.menu.files_switch_branches_menu, menu);
|
||||
super.onCreateOptionsMenu(menu, inflater);
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
||||
@ -337,7 +336,7 @@ public class NotificationsFragment extends Fragment implements NotificationsAdap
|
||||
|
||||
tinyDB.putString("issueNumber", issueUrl.substring(issueUrl.lastIndexOf("/") + 1));
|
||||
tinyDB.putString("issueType", notificationThread.getSubject().getType());
|
||||
tinyDB.putString("repoFullName", notificationThread.getRepository().getFullname());
|
||||
tinyDB.putString("repoFullName", notificationThread.getRepository().getFullName());
|
||||
|
||||
startActivity(intent);
|
||||
|
||||
|
@ -16,12 +16,10 @@ import android.widget.LinearLayout;
|
||||
import android.widget.ProgressBar;
|
||||
import android.widget.TextView;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import org.mian.gitnex.R;
|
||||
import org.mian.gitnex.activities.RepoDetailActivity;
|
||||
import org.mian.gitnex.activities.RepoForksActivity;
|
||||
import org.mian.gitnex.activities.RepoStargazersActivity;
|
||||
import org.mian.gitnex.activities.RepoWatchersActivity;
|
||||
import org.mian.gitnex.clients.RetrofitClient;
|
||||
@ -36,7 +34,6 @@ import org.mian.gitnex.models.UserRepositories;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Locale;
|
||||
import java.util.Objects;
|
||||
import io.noties.markwon.AbstractMarkwonPlugin;
|
||||
import io.noties.markwon.Markwon;
|
||||
import io.noties.markwon.core.CorePlugin;
|
||||
@ -45,7 +42,6 @@ import io.noties.markwon.ext.strikethrough.StrikethroughPlugin;
|
||||
import io.noties.markwon.ext.tables.TablePlugin;
|
||||
import io.noties.markwon.ext.tasklist.TaskListPlugin;
|
||||
import io.noties.markwon.html.HtmlPlugin;
|
||||
import io.noties.markwon.image.AsyncDrawable;
|
||||
import io.noties.markwon.image.DefaultMediaDecoder;
|
||||
import io.noties.markwon.image.ImageItem;
|
||||
import io.noties.markwon.image.ImagesPlugin;
|
||||
@ -165,17 +161,9 @@ public class RepoInfoFragment extends Fragment {
|
||||
toggleExpandViewMeta();
|
||||
}
|
||||
|
||||
fileContentsFrameHeader.setOnClickListener(new View.OnClickListener() {
|
||||
public void onClick(View v) {
|
||||
toggleExpandView();
|
||||
}
|
||||
});
|
||||
fileContentsFrameHeader.setOnClickListener(v1 -> toggleExpandView());
|
||||
|
||||
repoMetaFrameHeader.setOnClickListener(new View.OnClickListener() {
|
||||
public void onClick(View v) {
|
||||
toggleExpandViewMeta();
|
||||
}
|
||||
});
|
||||
repoMetaFrameHeader.setOnClickListener(v12 -> toggleExpandViewMeta());
|
||||
|
||||
repoMetaStarsFrame.setOnClickListener(metaStars -> {
|
||||
|
||||
@ -184,13 +172,6 @@ public class RepoInfoFragment extends Fragment {
|
||||
ctx.startActivity(intent);
|
||||
});
|
||||
|
||||
repoMetaForksFrame.setOnClickListener(metaForks -> {
|
||||
|
||||
Intent intent = new Intent(ctx, RepoForksActivity.class);
|
||||
intent.putExtra("repoFullNameForForks", repoOwner + "/" + repoName);
|
||||
ctx.startActivity(intent);
|
||||
});
|
||||
|
||||
repoMetaWatchersFrame.setOnClickListener(metaWatchers -> {
|
||||
|
||||
Intent intent = new Intent(ctx, RepoWatchersActivity.class);
|
||||
@ -370,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);
|
||||
@ -412,46 +400,37 @@ public class RepoInfoFragment extends Fragment {
|
||||
|
||||
if (response.code() == 200) {
|
||||
|
||||
final Markwon markwon = Markwon.builder(Objects.requireNonNull(getContext()))
|
||||
final Markwon markwon = Markwon.builder(requireContext())
|
||||
.usePlugin(CorePlugin.create())
|
||||
.usePlugin(ImagesPlugin.create(new ImagesPlugin.ImagesConfigure() {
|
||||
@Override
|
||||
public void configureImages(@NonNull ImagesPlugin plugin) {
|
||||
plugin.addSchemeHandler(new SchemeHandler() {
|
||||
@NonNull
|
||||
@Override
|
||||
public ImageItem handle(@NonNull String raw, @NonNull Uri uri) {
|
||||
.usePlugin(ImagesPlugin.create(plugin -> {
|
||||
plugin.addSchemeHandler(new SchemeHandler() {
|
||||
@NonNull
|
||||
@Override
|
||||
public ImageItem handle(@NonNull String raw, @NonNull Uri uri) {
|
||||
|
||||
final int resourceId = getContext().getResources().getIdentifier(
|
||||
raw.substring("drawable://".length()),
|
||||
"drawable",
|
||||
getContext().getPackageName());
|
||||
final int resourceId = requireContext().getResources().getIdentifier(
|
||||
raw.substring("drawable://".length()),
|
||||
"drawable",
|
||||
requireContext().getPackageName());
|
||||
|
||||
final Drawable drawable = getContext().getDrawable(resourceId);
|
||||
final Drawable drawable = requireContext().getDrawable(resourceId);
|
||||
|
||||
assert drawable != null;
|
||||
return ImageItem.withResult(drawable);
|
||||
}
|
||||
assert drawable != null;
|
||||
return ImageItem.withResult(drawable);
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public Collection<String> supportedSchemes() {
|
||||
return Collections.singleton("drawable");
|
||||
}
|
||||
});
|
||||
plugin.placeholderProvider(new ImagesPlugin.PlaceholderProvider() {
|
||||
@Nullable
|
||||
@Override
|
||||
public Drawable providePlaceholder(@NonNull AsyncDrawable drawable) {
|
||||
return null;
|
||||
}
|
||||
});
|
||||
plugin.addMediaDecoder(GifMediaDecoder.create(false));
|
||||
plugin.addMediaDecoder(SvgMediaDecoder.create(getContext().getResources()));
|
||||
plugin.addMediaDecoder(SvgMediaDecoder.create());
|
||||
plugin.defaultMediaDecoder(DefaultMediaDecoder.create(getContext().getResources()));
|
||||
plugin.defaultMediaDecoder(DefaultMediaDecoder.create());
|
||||
}
|
||||
@NonNull
|
||||
@Override
|
||||
public Collection<String> supportedSchemes() {
|
||||
return Collections.singleton("drawable");
|
||||
}
|
||||
});
|
||||
plugin.placeholderProvider(drawable -> null);
|
||||
plugin.addMediaDecoder(GifMediaDecoder.create(false));
|
||||
plugin.addMediaDecoder(SvgMediaDecoder.create(requireContext().getResources()));
|
||||
plugin.addMediaDecoder(SvgMediaDecoder.create());
|
||||
plugin.defaultMediaDecoder(DefaultMediaDecoder.create(requireContext().getResources()));
|
||||
plugin.defaultMediaDecoder(DefaultMediaDecoder.create());
|
||||
}))
|
||||
.usePlugin(new AbstractMarkwonPlugin() {
|
||||
@Override
|
||||
@ -462,8 +441,8 @@ public class RepoInfoFragment extends Fragment {
|
||||
.linkColor(getResources().getColor(R.color.lightBlue));
|
||||
}
|
||||
})
|
||||
.usePlugin(TablePlugin.create(getContext()))
|
||||
.usePlugin(TaskListPlugin.create(getContext()))
|
||||
.usePlugin(TablePlugin.create(requireContext()))
|
||||
.usePlugin(TaskListPlugin.create(requireContext()))
|
||||
.usePlugin(HtmlPlugin.create())
|
||||
.usePlugin(StrikethroughPlugin.create())
|
||||
.usePlugin(LinkifyPlugin.create())
|
||||
|
@ -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();
|
||||
|
@ -24,6 +24,21 @@ public class Version {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* valid return true if string is a valid version
|
||||
*
|
||||
* @param value
|
||||
* @return
|
||||
*/
|
||||
public static boolean valid(String value) {
|
||||
|
||||
if(value == null) {
|
||||
return false;
|
||||
}
|
||||
final Pattern pattern_valid = Pattern.compile("^[v,V]?(\\d+)+(\\.(\\d+))*([_,\\-,+][\\w,\\d,_,\\-,+]*)?$");
|
||||
return pattern_valid.matcher(value).find();
|
||||
}
|
||||
|
||||
/**
|
||||
* init parse and store values for other functions of an Version instance
|
||||
* it use the raw variable as base
|
||||
@ -32,10 +47,9 @@ public class Version {
|
||||
*/
|
||||
private void init() {
|
||||
|
||||
final Pattern pattern_valid = Pattern.compile("^[v,V]?(\\d+)+(\\.(\\d+))*([_,\\-,+][\\w,\\d,_,\\-,+]*)?$");
|
||||
final Pattern pattern_number_dot_number = Pattern.compile("^\\d+(\\.(\\d)+)*");
|
||||
|
||||
if(!pattern_valid.matcher(raw).find()) {
|
||||
if(!valid(raw)) {
|
||||
throw new IllegalArgumentException("Invalid version format");
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
@ -26,6 +28,7 @@ import org.mian.gitnex.models.OrganizationRepository;
|
||||
import org.mian.gitnex.models.Permission;
|
||||
import org.mian.gitnex.models.PullRequests;
|
||||
import org.mian.gitnex.models.Releases;
|
||||
import org.mian.gitnex.models.RepositoryTransfer;
|
||||
import org.mian.gitnex.models.Teams;
|
||||
import org.mian.gitnex.models.UpdateIssueAssignees;
|
||||
import org.mian.gitnex.models.UpdateIssueState;
|
||||
@ -92,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);
|
||||
@ -127,6 +130,15 @@ public interface ApiInterface {
|
||||
@GET("repos/{owner}/{repo}") // get repo information
|
||||
Call<UserRepositories> getUserRepository(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName);
|
||||
|
||||
@PATCH("repos/{owner}/{repo}") // patch/update repository properties
|
||||
Call<UserRepositories> updateRepositoryProperties(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName, @Body UserRepositories jsonStr);
|
||||
|
||||
@DELETE("repos/{owner}/{repo}") // delete repository
|
||||
Call<JsonElement> deleteRepository(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName);
|
||||
|
||||
@POST("repos/{owner}/{repo}/transfer") // transfer repository
|
||||
Call<JsonElement> transferRepository(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName, @Body RepositoryTransfer jsonStr);
|
||||
|
||||
@GET("repos/{owner}/{repo}/issues") // get issues by repo
|
||||
Call<List<Issues>> getIssues(@Header("Authorization") String token, @Path("owner") String owner, @Path("repo") String repo, @Query("page") int page, @Query("limit") int limit, @Query("type") String requestType, @Query("state") String issueState);
|
||||
|
||||
@ -310,6 +322,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;
|
||||
}
|
||||
|
||||
}
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,20 @@
|
||||
package org.mian.gitnex.models;
|
||||
|
||||
/**
|
||||
* Author M M Arif
|
||||
*/
|
||||
|
||||
public class RepositoryTransfer {
|
||||
|
||||
private String new_owner;
|
||||
|
||||
public RepositoryTransfer(String new_owner) {
|
||||
|
||||
this.new_owner = new_owner;
|
||||
}
|
||||
|
||||
public String getNew_owner() {
|
||||
|
||||
return new_owner;
|
||||
}
|
||||
}
|
@ -32,12 +32,134 @@ public class UserRepositories {
|
||||
private Boolean has_issues;
|
||||
private String avatar_url;
|
||||
private boolean archived;
|
||||
private boolean allow_merge_commits;
|
||||
private boolean allow_rebase;
|
||||
private boolean allow_rebase_explicit;
|
||||
private boolean allow_squash_merge;
|
||||
private boolean has_pull_requests;
|
||||
private boolean has_wiki;
|
||||
private boolean ignore_whitespace_conflicts;
|
||||
private boolean template;
|
||||
|
||||
private permissionsObject permissions;
|
||||
private externalIssueTrackerObject external_tracker;
|
||||
private externalWikiObject external_wiki;
|
||||
private internalTimeTrackerObject internal_tracker;
|
||||
|
||||
public UserRepositories(String body) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
private permissionsObject permissions;
|
||||
public UserRepositories(String name, String website, String description,
|
||||
boolean repoPrivate, boolean repoAsTemplate, boolean repoEnableIssues,
|
||||
boolean repoEnableWiki, boolean repoEnablePr,
|
||||
boolean repoEnableMerge, boolean repoEnableRebase, boolean repoEnableSquash, boolean repoEnableForceMerge) {
|
||||
|
||||
this.name = name;
|
||||
this.website = website;
|
||||
this.description = description;
|
||||
this.privateFlag = repoPrivate;
|
||||
this.template = repoAsTemplate;
|
||||
this.has_issues = repoEnableIssues;
|
||||
this.has_wiki = repoEnableWiki;
|
||||
this.has_pull_requests = repoEnablePr;
|
||||
this.allow_merge_commits = repoEnableMerge;
|
||||
this.allow_rebase = repoEnableRebase;
|
||||
this.allow_squash_merge = repoEnableSquash;
|
||||
this.allow_rebase_explicit = repoEnableForceMerge;
|
||||
}
|
||||
|
||||
public UserRepositories(String name, String website, String description,
|
||||
boolean repoPrivate, boolean repoAsTemplate, boolean repoEnableIssues,
|
||||
boolean repoEnableWiki, boolean repoEnablePr, internalTimeTrackerObject repoEnableTimer,
|
||||
boolean repoEnableMerge, boolean repoEnableRebase, boolean repoEnableSquash, boolean repoEnableForceMerge) {
|
||||
|
||||
this.name = name;
|
||||
this.website = website;
|
||||
this.description = description;
|
||||
this.privateFlag = repoPrivate;
|
||||
this.template = repoAsTemplate;
|
||||
this.has_issues = repoEnableIssues;
|
||||
this.has_wiki = repoEnableWiki;
|
||||
this.has_pull_requests = repoEnablePr;
|
||||
this.internal_tracker = repoEnableTimer;
|
||||
this.allow_merge_commits = repoEnableMerge;
|
||||
this.allow_rebase = repoEnableRebase;
|
||||
this.allow_squash_merge = repoEnableSquash;
|
||||
this.allow_rebase_explicit = repoEnableForceMerge;
|
||||
}
|
||||
|
||||
public static class internalTimeTrackerObject {
|
||||
|
||||
private boolean allow_only_contributors_to_track_time;
|
||||
private boolean enable_issue_dependencies;
|
||||
private boolean enable_time_tracker;
|
||||
|
||||
public internalTimeTrackerObject(boolean enable_time_tracker) {
|
||||
|
||||
this.enable_time_tracker = enable_time_tracker;
|
||||
}
|
||||
|
||||
public boolean isAllow_only_contributors_to_track_time() {
|
||||
|
||||
return allow_only_contributors_to_track_time;
|
||||
}
|
||||
|
||||
public boolean isEnable_issue_dependencies() {
|
||||
|
||||
return enable_issue_dependencies;
|
||||
}
|
||||
|
||||
public boolean isEnable_time_tracker() {
|
||||
|
||||
return enable_time_tracker;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static class externalWikiObject {
|
||||
|
||||
private String external_wiki_url;
|
||||
|
||||
public externalWikiObject(String external_wiki_url) {
|
||||
|
||||
this.external_wiki_url = external_wiki_url;
|
||||
}
|
||||
|
||||
public String getExternal_wiki_url() {
|
||||
|
||||
return external_wiki_url;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static class externalIssueTrackerObject {
|
||||
|
||||
private String external_tracker_format;
|
||||
private String external_tracker_style;
|
||||
private String external_tracker_url;
|
||||
|
||||
public externalIssueTrackerObject(String external_tracker_url) {
|
||||
|
||||
this.external_tracker_url = external_tracker_url;
|
||||
}
|
||||
|
||||
public String getExternal_tracker_format() {
|
||||
|
||||
return external_tracker_format;
|
||||
}
|
||||
|
||||
public String getExternal_tracker_style() {
|
||||
|
||||
return external_tracker_style;
|
||||
}
|
||||
|
||||
public String getExternal_tracker_url() {
|
||||
|
||||
return external_tracker_url;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static class permissionsObject {
|
||||
|
||||
@ -72,7 +194,7 @@ public class UserRepositories {
|
||||
return name;
|
||||
}
|
||||
|
||||
public String getFullname() {
|
||||
public String getFullName() {
|
||||
|
||||
return full_name;
|
||||
}
|
||||
@ -192,4 +314,64 @@ public class UserRepositories {
|
||||
return archived;
|
||||
}
|
||||
|
||||
public String getFull_name() {
|
||||
|
||||
return full_name;
|
||||
}
|
||||
|
||||
public boolean isAllow_merge_commits() {
|
||||
|
||||
return allow_merge_commits;
|
||||
}
|
||||
|
||||
public boolean isAllow_rebase() {
|
||||
|
||||
return allow_rebase;
|
||||
}
|
||||
|
||||
public boolean isAllow_rebase_explicit() {
|
||||
|
||||
return allow_rebase_explicit;
|
||||
}
|
||||
|
||||
public boolean isAllow_squash_merge() {
|
||||
|
||||
return allow_squash_merge;
|
||||
}
|
||||
|
||||
public boolean isHas_pull_requests() {
|
||||
|
||||
return has_pull_requests;
|
||||
}
|
||||
|
||||
public boolean isHas_wiki() {
|
||||
|
||||
return has_wiki;
|
||||
}
|
||||
|
||||
public boolean isIgnore_whitespace_conflicts() {
|
||||
|
||||
return ignore_whitespace_conflicts;
|
||||
}
|
||||
|
||||
public boolean isTemplate() {
|
||||
|
||||
return template;
|
||||
}
|
||||
|
||||
public externalIssueTrackerObject getExternal_tracker() {
|
||||
|
||||
return external_tracker;
|
||||
}
|
||||
|
||||
public externalWikiObject getExternal_wiki() {
|
||||
|
||||
return external_wiki;
|
||||
}
|
||||
|
||||
public internalTimeTrackerObject getInternal_tracker() {
|
||||
|
||||
return internal_tracker;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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>
|
||||
|
27
app/src/main/res/drawable/ic_commit.xml
Normal file
@ -0,0 +1,27 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:pathData="M12,12m-4,0a4,4 0,1 1,8 0a4,4 0,1 1,-8 0"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="2"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="?attr/iconsColor"
|
||||
android:strokeLineCap="round"/>
|
||||
<path
|
||||
android:pathData="M1.05,12L7,12"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="2"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="?attr/iconsColor"
|
||||
android:strokeLineCap="round"/>
|
||||
<path
|
||||
android:pathData="M17.01,12L22.96,12"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="2"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="?attr/iconsColor"
|
||||
android:strokeLineCap="round"/>
|
||||
</vector>
|
20
app/src/main/res/drawable/ic_issue_closed_red.xml
Normal file
@ -0,0 +1,20 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:pathData="M22,11.08V12a10,10 0,1 1,-5.93 -9.14"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="2"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="@color/iconIssuePrClosedColor"
|
||||
android:strokeLineCap="round"/>
|
||||
<path
|
||||
android:pathData="M22,4l-10,10.01l-3,-3"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="2"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="@color/iconIssuePrClosedColor"
|
||||
android:strokeLineCap="round"/>
|
||||
</vector>
|
12
app/src/main/res/drawable/ic_migrate.xml
Normal file
@ -0,0 +1,12 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="?attr/iconsColor"
|
||||
android:pathData="M4.75,0A2.75,2.75 0,0 0,2 2.75v16.5A2.75,2.75 0,0 0,4.75 22h11a0.75,0.75 0,0 0,0 -1.5h-11c-0.69,0 -1.25,-0.56 -1.25,-1.25V18A1.5,1.5 0,0 1,5 16.5h7.25a0.75,0.75 0,0 0,0 -1.5H5c-0.546,0 -1.059,0.146 -1.5,0.401V2.75c0,-0.69 0.56,-1.25 1.25,-1.25H18.5v7a0.75,0.75 0,0 0,1.5 0V0.75a0.75,0.75 0,0 0,-0.75 -0.75H4.75z"/>
|
||||
<path
|
||||
android:fillColor="?attr/iconsColor"
|
||||
android:pathData="M20,13.903l2.202,2.359a0.75,0.75 0,0 0,1.096 -1.024l-3.5,-3.75a0.75,0.75 0,0 0,-1.096 0l-3.5,3.75a0.75,0.75 0,1 0,1.096 1.024l2.202,-2.36v9.348a0.75,0.75 0,0 0,1.5 0v-9.347z"/>
|
||||
</vector>
|
34
app/src/main/res/drawable/ic_pull_request_closed.xml
Normal file
@ -0,0 +1,34 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:pathData="M18,18m-3,0a3,3 0,1 1,6 0a3,3 0,1 1,-6 0"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="2"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="@color/iconIssuePrClosedColor"
|
||||
android:strokeLineCap="round"/>
|
||||
<path
|
||||
android:pathData="M6,6m-3,0a3,3 0,1 1,6 0a3,3 0,1 1,-6 0"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="2"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="@color/iconIssuePrClosedColor"
|
||||
android:strokeLineCap="round"/>
|
||||
<path
|
||||
android:pathData="M13,6h3a2,2 0,0 1,2 2v7"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="2"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="@color/iconIssuePrClosedColor"
|
||||
android:strokeLineCap="round"/>
|
||||
<path
|
||||
android:pathData="M6,9L6,21"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="2"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="@color/iconIssuePrClosedColor"
|
||||
android:strokeLineCap="round"/>
|
||||
</vector>
|
34
app/src/main/res/drawable/ic_pull_request_merged.xml
Normal file
@ -0,0 +1,34 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:pathData="M18,18m-3,0a3,3 0,1 1,6 0a3,3 0,1 1,-6 0"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="2"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="@color/iconPrMergedColor"
|
||||
android:strokeLineCap="round"/>
|
||||
<path
|
||||
android:pathData="M6,6m-3,0a3,3 0,1 1,6 0a3,3 0,1 1,-6 0"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="2"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="@color/iconPrMergedColor"
|
||||
android:strokeLineCap="round"/>
|
||||
<path
|
||||
android:pathData="M13,6h3a2,2 0,0 1,2 2v7"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="2"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="@color/iconPrMergedColor"
|
||||
android:strokeLineCap="round"/>
|
||||
<path
|
||||
android:pathData="M6,9L6,21"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="2"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="@color/iconPrMergedColor"
|
||||
android:strokeLineCap="round"/>
|
||||
</vector>
|
@ -1,6 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="rectangle" >
|
||||
<solid android:color="?attr/primaryBackgroundColor"/>
|
||||
<corners android:radius="8dp"/>
|
||||
|
||||
</shape>
|
||||
|
@ -55,65 +55,91 @@
|
||||
android:padding="16dp"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="wrap_content"
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:id="@+id/protocolSpinnerLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="10dp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:background="@drawable/shape_dropdown">
|
||||
app:boxBackgroundColor="?attr/inputBackgroundColor"
|
||||
android:textColorHint="?attr/hintColor"
|
||||
app:hintTextColor="?attr/hintColor"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:hint="@string/protocol"
|
||||
app:endIconTint="?attr/iconsColor"
|
||||
style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox.ExposedDropdownMenu">
|
||||
|
||||
<Spinner
|
||||
<AutoCompleteTextView
|
||||
android:id="@+id/protocolSpinner"
|
||||
android:layout_width="120dp"
|
||||
android:layout_height="44dp"
|
||||
android:padding="10dp"
|
||||
android:spinnerMode="dropdown" />
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:inputType="none"
|
||||
android:textColor="?attr/inputTextColor"
|
||||
android:labelFor="@+id/protocolSpinner"
|
||||
android:textSize="16sp" />
|
||||
|
||||
</RelativeLayout>
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
<EditText
|
||||
android:id="@+id/instanceUrl"
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:id="@+id/instanceUrlLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="10dp"
|
||||
android:background="@drawable/shape_inputs"
|
||||
android:drawableStart="@drawable/ic_link"
|
||||
android:drawablePadding="10dp"
|
||||
android:hint="@string/instanceUrl"
|
||||
android:inputType="textUri"
|
||||
android:padding="10dp"
|
||||
android:textColor="?attr/inputTextColor"
|
||||
android:textColorHighlight="?attr/hintColor"
|
||||
app:boxBackgroundColor="?attr/inputBackgroundColor"
|
||||
android:textColorHint="?attr/hintColor"
|
||||
android:textSize="14sp"
|
||||
android:autofillHints="@string/instanceUrl" />
|
||||
app:hintTextColor="?attr/hintColor"
|
||||
app:boxStrokeErrorColor="@color/darkRed"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginBottom="8dp"
|
||||
app:startIconDrawable="@drawable/ic_link"
|
||||
app:startIconTint="?attr/iconsColor"
|
||||
app:endIconMode="clear_text"
|
||||
app:endIconTint="?attr/iconsColor"
|
||||
android:hint="@string/instanceUrl">
|
||||
|
||||
<EditText
|
||||
android:id="@+id/loginToken"
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:id="@+id/instanceUrl"
|
||||
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:textSize="16sp" />
|
||||
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:id="@+id/loginTokenLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="10dp"
|
||||
android:background="@drawable/shape_inputs"
|
||||
android:drawableStart="@drawable/ic_lock"
|
||||
android:drawablePadding="10dp"
|
||||
android:hint="@string/copyToken"
|
||||
android:inputType="text"
|
||||
android:padding="10dp"
|
||||
android:textColor="?attr/inputTextColor"
|
||||
android:textColorHighlight="?attr/hintColor"
|
||||
app:boxBackgroundColor="?attr/inputBackgroundColor"
|
||||
android:textColorHint="?attr/hintColor"
|
||||
android:textSize="14sp"
|
||||
android:visibility="visible"
|
||||
android:autofillHints="@string/copyToken" />
|
||||
app:hintTextColor="?attr/hintColor"
|
||||
app:boxStrokeErrorColor="@color/darkRed"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginBottom="8dp"
|
||||
app:startIconDrawable="@drawable/ic_lock"
|
||||
app:startIconTint="?attr/iconsColor"
|
||||
app:endIconMode="clear_text"
|
||||
app:endIconTint="?attr/iconsColor"
|
||||
android:hint="@string/copyToken">
|
||||
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:id="@+id/loginToken"
|
||||
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:textSize="16sp" />
|
||||
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
<Button
|
||||
android:id="@+id/addNewAccount"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="60dp"
|
||||
android:layout_marginStart="10dp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginEnd="10dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginBottom="15dp"
|
||||
android:text="@string/addNewAccountText"
|
||||
android:textColor="@color/btnTextColor"
|
||||
|
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>
|
@ -19,6 +19,16 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?attr/primaryBackgroundColor">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/issuePrState"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/ic_issue"
|
||||
android:paddingStart="0dp"
|
||||
android:paddingEnd="8dp"
|
||||
android:visibility="gone"
|
||||
android:contentDescription="@string/generalImgContentText" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
|
@ -68,12 +68,6 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/tabPullRequests" />
|
||||
|
||||
<com.google.android.material.tabs.TabItem
|
||||
android:id="@+id/tabItem5_branches"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/tab_text_branches" />
|
||||
|
||||
<com.google.android.material.tabs.TabItem
|
||||
android:id="@+id/tabItem6_releases"
|
||||
android:layout_width="wrap_content"
|
||||
|
149
app/src/main/res/layout/activity_repository_settings.xml
Normal file
@ -0,0 +1,149 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
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/repoSettingsTitle"
|
||||
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:orientation="vertical"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/editProperties"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:text="@string/repoSettingsEditProperties"
|
||||
android:drawableStart="@drawable/ic_edit"
|
||||
android:drawablePadding="32dp"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="16sp"
|
||||
android:padding="16dp" />
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:background="?attr/dividerColor" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/transferOwnerFrame"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:visibility="gone">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/transferRepositoryOwnership"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:text="@string/repoSettingsTransferOwnership"
|
||||
android:drawableStart="@drawable/ic_arrow_up"
|
||||
android:drawablePadding="32dp"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="16sp"
|
||||
android:paddingTop="16dp"
|
||||
android:paddingStart="16dp"
|
||||
android:paddingEnd="16dp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/transferRepositoryOwnershipHint"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:text="@string/repoSettingsTransferOwnershipHint"
|
||||
android:textColor="?attr/hintColor"
|
||||
android:textSize="12sp"
|
||||
android:paddingBottom="16dp"
|
||||
android:paddingStart="72dp"
|
||||
android:paddingEnd="16dp" />
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:background="?attr/dividerColor" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:orientation="vertical"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingBottom="16dp">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/deleteRepository"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:text="@string/repoSettingsDelete"
|
||||
android:drawableStart="@drawable/ic_delete"
|
||||
android:drawablePadding="32dp"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="16sp"
|
||||
android:paddingTop="16dp"
|
||||
android:paddingStart="16dp"
|
||||
android:paddingEnd="16dp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/deleteRepositoryHint"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:text="@string/repoSettingsDeleteHint"
|
||||
android:textColor="?attr/hintColor"
|
||||
android:textSize="12sp"
|
||||
android:paddingStart="72dp"
|
||||
android:paddingEnd="16dp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</ScrollView>
|
||||
|
||||
</LinearLayout>
|
||||
|
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"
|
||||
@ -189,6 +201,27 @@
|
||||
android:textSize="16sp"
|
||||
android:padding="12dp" />
|
||||
|
||||
<View
|
||||
android:id="@+id/repoSettingsDivider"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:layout_marginTop="12dp"
|
||||
android:layout_marginBottom="12dp"
|
||||
android:layout_marginStart="64dp"
|
||||
android:background="?attr/dividerColor" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/repoSettings"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:drawableStart="@drawable/ic_settings"
|
||||
android:drawablePadding="24dp"
|
||||
android:text="@string/navSettings"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="16sp"
|
||||
android:padding="12dp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</androidx.core.widget.NestedScrollView>
|
||||
|
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>
|
110
app/src/main/res/layout/custom_repository_delete_dialog.xml
Normal file
@ -0,0 +1,110 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
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">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="16dp"
|
||||
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_delete"
|
||||
android:drawablePadding="16dp"
|
||||
android:text="@string/repoSettingsDelete"
|
||||
android:layout_marginBottom="16dp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/description"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="16sp"
|
||||
android:text="@string/repoSettingsDeleteDescription"
|
||||
android:layout_marginBottom="16dp" />
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:id="@+id/repoNameForDeletionLayout"
|
||||
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_marginBottom="8dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:hint="@string/newRepoTintCopy">
|
||||
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:id="@+id/repoNameForDeletion"
|
||||
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>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:id="@+id/divider"
|
||||
android:background="?attr/dividerColor" />
|
||||
|
||||
<com.google.android.material.progressindicator.ProgressIndicator
|
||||
android:id="@+id/processingRequest"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone"
|
||||
style="@style/Widget.MaterialComponents.ProgressIndicator.Linear.Indeterminate"
|
||||
app:indicatorColor="?attr/progressIndicatorColor" />
|
||||
|
||||
<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/cancelButton"
|
||||
android:textColor="@color/colorWhite"
|
||||
android:textSize="16sp" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/delete"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="60dp"
|
||||
style="?android:attr/button"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:text="@string/menuDeleteText"
|
||||
android:backgroundTint="@color/darkRed"
|
||||
android:textColor="@color/colorWhite"
|
||||
android:textSize="16sp"
|
||||
tools:ignore="RelativeOverlap" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
@ -0,0 +1,234 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
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" />
|
||||
|
||||
<androidx.core.widget.NestedScrollView
|
||||
android:id="@+id/mainView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone">
|
||||
|
||||
<LinearLayout
|
||||
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:orientation="vertical">
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:id="@+id/repoNameLayout"
|
||||
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_marginBottom="8dp"
|
||||
android:hint="@string/newRepoTintCopy">
|
||||
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:id="@+id/repoName"
|
||||
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/repoWebsiteLayout"
|
||||
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_marginBottom="8dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:hint="@string/websiteText">
|
||||
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:id="@+id/repoWebsite"
|
||||
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/repoDescriptionLayout"
|
||||
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_marginBottom="8dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:hint="@string/newRepoDescTintCopy">
|
||||
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:id="@+id/repoDescription"
|
||||
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.switchmaterial.SwitchMaterial
|
||||
android:id="@+id/repoPrivate"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:checked="true"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:text="@string/newRepoPrivateCopy" />
|
||||
|
||||
<com.google.android.material.switchmaterial.SwitchMaterial
|
||||
android:id="@+id/repoAsTemplate"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:checked="true"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:text="@string/repoPropertiesTemplate" />
|
||||
|
||||
<com.google.android.material.switchmaterial.SwitchMaterial
|
||||
android:id="@+id/repoEnableIssues"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:checked="true"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:text="@string/repoPropertiesEnableIssues" />
|
||||
|
||||
<com.google.android.material.switchmaterial.SwitchMaterial
|
||||
android:id="@+id/repoEnableWiki"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:checked="true"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:text="@string/repoPropertiesEnableWiki" />
|
||||
|
||||
<com.google.android.material.switchmaterial.SwitchMaterial
|
||||
android:id="@+id/repoEnablePr"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:checked="true"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:text="@string/repoPropertiesEnablePr" />
|
||||
|
||||
<com.google.android.material.switchmaterial.SwitchMaterial
|
||||
android:id="@+id/repoEnableTimer"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:checked="true"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:text="@string/repoPropertiesEnableTimeTracker" />
|
||||
|
||||
<com.google.android.material.switchmaterial.SwitchMaterial
|
||||
android:id="@+id/repoEnableMerge"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:checked="true"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:text="@string/repoPropertiesEnableMergeCommits" />
|
||||
|
||||
<com.google.android.material.switchmaterial.SwitchMaterial
|
||||
android:id="@+id/repoEnableRebase"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:checked="true"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:text="@string/repoPropertiesEnableRebase" />
|
||||
|
||||
<com.google.android.material.switchmaterial.SwitchMaterial
|
||||
android:id="@+id/repoEnableSquash"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:checked="true"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:text="@string/repoPropertiesEnableSquash" />
|
||||
|
||||
<com.google.android.material.switchmaterial.SwitchMaterial
|
||||
android:id="@+id/repoEnableForceMerge"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:checked="true"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:text="@string/repoPropertiesEnableForceMerge" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:id="@+id/divider"
|
||||
android:background="?attr/dividerColor" />
|
||||
|
||||
<com.google.android.material.progressindicator.ProgressIndicator
|
||||
android:id="@+id/processingRequest"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone"
|
||||
style="@style/Widget.MaterialComponents.ProgressIndicator.Linear.Indeterminate"
|
||||
app:indicatorColor="?attr/progressIndicatorColor" />
|
||||
|
||||
<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/cancelButton"
|
||||
android:textColor="@color/colorWhite"
|
||||
android:textSize="16sp" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/save"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="60dp"
|
||||
style="?android:attr/button"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:text="@string/saveButton"
|
||||
android:textColor="@color/colorWhite"
|
||||
android:textSize="16sp"
|
||||
tools:ignore="RelativeOverlap" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</androidx.core.widget.NestedScrollView>
|
||||
|
||||
</LinearLayout>
|
134
app/src/main/res/layout/custom_repository_transfer_dialog.xml
Normal file
@ -0,0 +1,134 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
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">
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="16dp"
|
||||
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_arrow_up"
|
||||
android:drawablePadding="16dp"
|
||||
android:text="@string/repoSettingsTransferOwnership"
|
||||
android:layout_marginBottom="16dp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/description"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="16sp"
|
||||
android:text="@string/repoSettingsTransferOwnershipDescription"
|
||||
android:layout_marginBottom="16dp" />
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:id="@+id/repoNameForTransferLayout"
|
||||
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_marginBottom="8dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:hint="@string/newRepoTintCopy">
|
||||
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:id="@+id/repoNameForTransfer"
|
||||
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/ownerNameForTransferLayout"
|
||||
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_marginBottom="8dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:hint="@string/repoTransferOwnerText">
|
||||
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:id="@+id/ownerNameForTransfer"
|
||||
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>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:id="@+id/divider"
|
||||
android:background="?attr/dividerColor" />
|
||||
|
||||
<com.google.android.material.progressindicator.ProgressIndicator
|
||||
android:id="@+id/processingRequest"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone"
|
||||
style="@style/Widget.MaterialComponents.ProgressIndicator.Linear.Indeterminate"
|
||||
app:indicatorColor="?attr/progressIndicatorColor" />
|
||||
|
||||
<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/cancelButton"
|
||||
android:textColor="@color/colorWhite"
|
||||
android:textSize="16sp" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/transfer"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="60dp"
|
||||
style="?android:attr/button"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:text="@string/repoTransferText"
|
||||
android:backgroundTint="@color/darkRed"
|
||||
android:textColor="@color/colorWhite"
|
||||
android:textSize="16sp"
|
||||
tools:ignore="RelativeOverlap" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
@ -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>
|
||||
|
@ -1,50 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
tools:context=".activities.RepoDetailActivity">
|
||||
|
||||
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
||||
android:id="@+id/pullToRefresh"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/recyclerView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="?attr/primaryBackgroundColor"
|
||||
android:scrollbars="vertical" />
|
||||
|
||||
<GridView
|
||||
android:id="@+id/gridView"
|
||||
android:numColumns="auto_fit"
|
||||
android:gravity="center"
|
||||
android:columnWidth="50dp"
|
||||
android:stretchMode="columnWidth"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent" />
|
||||
|
||||
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
|
||||
|
||||
<com.google.android.material.progressindicator.ProgressIndicator
|
||||
android:id="@+id/progress_bar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
style="@style/Widget.MaterialComponents.ProgressIndicator.Linear.Indeterminate"
|
||||
app:indicatorColor="?attr/progressIndicatorColor" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/noDataBranches"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_margin="15dp"
|
||||
android:gravity="center"
|
||||
android:text="@string/noDataBranchesTab"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="20sp"
|
||||
android:visibility="gone" />
|
||||
|
||||
</RelativeLayout>
|
@ -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
|
||||
|
@ -1,50 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:id="@+id/relativeLayoutMainFrame"
|
||||
android:background="?attr/primaryBackgroundColor">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:paddingBottom="5dp"
|
||||
android:id="@+id/branchesFrame"
|
||||
android:layout_margin="15dp"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/branchName"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textIsSelectable="true"
|
||||
android:textSize="18sp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/branchCommitAuthor"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:textIsSelectable="true"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="14sp" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/branchCommitHash"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="60dp"
|
||||
android:text="@string/viewCommits"
|
||||
android:layout_marginTop="15dp"
|
||||
android:textColor="@color/btnTextColor"
|
||||
android:textSize="14sp"
|
||||
android:minHeight="0dp"
|
||||
android:minWidth="0dp"
|
||||
android:padding="8dp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</RelativeLayout>
|
||||
|
12
app/src/main/res/layout/list_spinner_items.xml
Normal file
@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:padding="16dp"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="1"
|
||||
tools:ignore="MissingConstraints"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
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"
|
||||
|
@ -1,12 +1,39 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<item
|
||||
android:id="@+id/switchBranches"
|
||||
android:icon="@drawable/ic_branch"
|
||||
android:title="@string/strSwitchBranches"
|
||||
android:orderInCategory="0"
|
||||
app:showAsAction="ifRoom" />
|
||||
android:id="@+id/mainRepoMenu"
|
||||
android:icon="@drawable/ic_dotted_menu"
|
||||
android:title="@string/menuTitleText"
|
||||
android:orderInCategory="1"
|
||||
app:showAsAction="always" >
|
||||
|
||||
<menu>
|
||||
|
||||
<item
|
||||
android:id="@+id/repoMenu"
|
||||
android:icon="@drawable/ic_dotted_menu"
|
||||
android:title="@string/menuTitleText"
|
||||
android:orderInCategory="0"
|
||||
app:showAsAction="ifRoom|withText" />
|
||||
|
||||
<item
|
||||
android:id="@+id/switchBranches"
|
||||
android:icon="@drawable/ic_branch"
|
||||
android:title="@string/strSwitchBranches"
|
||||
android:orderInCategory="1"
|
||||
app:showAsAction="ifRoom|withText" />
|
||||
|
||||
<item
|
||||
android:id="@+id/branchCommits"
|
||||
android:icon="@drawable/ic_commit"
|
||||
android:title="@string/commitTitle"
|
||||
android:orderInCategory="2"
|
||||
app:showAsAction="ifRoom|withText" />
|
||||
|
||||
</menu>
|
||||
|
||||
</item>
|
||||
|
||||
</menu>
|
||||
|
@ -9,4 +9,4 @@
|
||||
android:orderInCategory="1"
|
||||
app:showAsAction="ifRoom" />
|
||||
|
||||
</menu>
|
||||
</menu>
|
||||
|
@ -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 |
@ -37,6 +37,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 +63,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 +71,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 +109,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 +421,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>
|
||||
@ -476,7 +477,7 @@
|
||||
<string name="sharePr">Share Pull Request</string>
|
||||
<string name="shareRepository">Share Repository</string>
|
||||
<string name="createRepository">Create Repository</string>
|
||||
<string name="commitTitle">Branch Commits</string>
|
||||
<string name="commitTitle">Commits</string>
|
||||
<string name="commitCommittedBy">Committed by %1$s</string>
|
||||
<string name="viewCommits">View Commits</string>
|
||||
<!-- Memorizing Trust Manager -->
|
||||
@ -504,7 +505,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>
|
||||
@ -541,4 +542,39 @@
|
||||
<string name="markedNotificationsAsRead">Successfully marked all notifications as read</string>
|
||||
<string name="isRead">Read</string>
|
||||
<string name="isUnread">Unread</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="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="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>
|
||||
|
580
app/src/main/res/values-cs/strings.xml
Normal file
@ -0,0 +1,580 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<!-- menu items -->
|
||||
<string name="navMyRepos">Mé repositáře</string>
|
||||
<string name="navStarredRepos">Oblíbené repozitáře</string>
|
||||
<string name="navRepos">Repozitáře</string>
|
||||
<string name="navProfile">Profil</string>
|
||||
<string name="navSettings">Nastavení</string>
|
||||
<string name="navOrgs">Organizace</string>
|
||||
<string name="navAbout">O aplikaci</string>
|
||||
<string name="navRate">Ohodnotit GitNex</string>
|
||||
<string name="navLogout">Odhlásit se</string>
|
||||
<string name="navExplore">Prozkoumat</string>
|
||||
<string name="navAdministration">Administrace</string>
|
||||
<!-- menu items -->
|
||||
<!-- page titles -->
|
||||
<string name="pageTitleAbout">O aplikaci</string>
|
||||
<string name="pageTitleMyRepos">Mé repositáře</string>
|
||||
<string name="pageTitleRepositories">Repozitáře</string>
|
||||
<string name="pageTitleProfile">Profil</string>
|
||||
<string name="pageTitleNewRepo">Nový repozitář</string>
|
||||
<string name="pageTitleOrganizations">Organizace</string>
|
||||
<string name="pageTitleIssues">Issues</string>
|
||||
<string name="pageTitleSettings">Nastavení</string>
|
||||
<string name="pageTitleCreateOrganization">Nová organizace</string>
|
||||
<string name="pageTitleCreateMilestone">Nový milník</string>
|
||||
<string name="pageTitleCreateNewIssue">Nový problém</string>
|
||||
<string name="pageTitleCreateLabel">Nový štítek</string>
|
||||
<string name="pageTitleCredits">Poděkování</string>
|
||||
<string name="pageTitleChooseBranch">Vybrat větev</string>
|
||||
<string name="pageTitleLabelUpdate">Aktualizovat štítek</string>
|
||||
<string name="pageTitleSponsors">Dárci</string>
|
||||
<string name="pageTitleStarredRepos">Oblíbené repozitáře</string>
|
||||
<string name="pageTitleCreateTeam">Nový tým</string>
|
||||
<string name="pageTitleAddEmail">Přidat e-mailovou adresu</string>
|
||||
<string name="pageTitleNewFile">Nový soubor</string>
|
||||
<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>
|
||||
<string name="repoDescription">Demo popis</string>
|
||||
<string name="noData">Nebyly nalezeny žádné repozitáře</string>
|
||||
<string name="orgName">Demo organizace</string>
|
||||
<string name="orgDescription">Demo popis</string>
|
||||
<string name="noDataOrg">Nebyly nalezeny žádné organizace</string>
|
||||
<string name="newCreateButtonCopy">Vytvořit</string>
|
||||
<string name="newUpdateButtonCopy">Aktualizovat</string>
|
||||
<string name="newRepoTintCopy">Název repositáře</string>
|
||||
<string name="newRepoDescTintCopy">Popis repozitáře</string>
|
||||
<string name="newRepoPrivateCopy">Soukromé</string>
|
||||
<string name="newRepoDescInfo">Max 255 znaků</string>
|
||||
<string name="newRepoOwner">Vlastník</string>
|
||||
<string name="newOrgTintCopy">Název organizace</string>
|
||||
<string name="newOrgDescTintCopy">Popis organizace</string>
|
||||
<string name="newOrgDescInfo">Max 255 znaků</string>
|
||||
<string name="userName">Uživatelské jméno</string>
|
||||
<string name="passWord">Heslo</string>
|
||||
<string name="btnLogin">Přihlásit se</string>
|
||||
<string name="instanceUrl">URL instance</string>
|
||||
<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>
|
||||
<string name="malformedJson">Byl přijat chybný JSON. Odpověď od serveru nebyla úspěšná</string>
|
||||
<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>
|
||||
<string name="repoNameErrorInvalid">Název repositáře není platný. [a–z A–Z 0–9 – _]</string>
|
||||
<string name="repoNameErrorReservedName">Název repozitáře je rezervován</string>
|
||||
<string name="repoNameErrorReservedPatterns">Název repozitáře obsahuje vyhrazená slova</string>
|
||||
<string name="repoDescError">Popis repozitáře překračuje maximální limit 255 znaků</string>
|
||||
<string name="repoCreated">Repozitář byl úspěšně vytvořen</string>
|
||||
<string name="repoCreatedError">Něco se pokazilo, zkuste to prosím znovu</string>
|
||||
<string name="repoExistsError">Repozitář tohoto jména již existuje pod vybraným vlastníkem</string>
|
||||
<string name="orgNameErrorEmpty">Název organizace je prázdný</string>
|
||||
<string name="orgNameErrorInvalid">Název organizace není platný, [a–z A–Z 0–9 – _]</string>
|
||||
<string name="orgDescError">Popis organizace překračuje maximální limit 255 znaků</string>
|
||||
<string name="orgCreated">Organizace byla úspěšně vytvořena</string>
|
||||
<string name="orgCreatedError">Něco se pokazilo, zkuste to prosím znovu</string>
|
||||
<string name="orgExistsError">Organizace již existuje</string>
|
||||
<string name="binaryFileError">Binární soubory ještě nejsou podporovány.</string>
|
||||
<string name="fileTooLarge">Tento soubor překračuje maximální možný počet rozdílových řádků</string>
|
||||
<string name="processingText">Zpracovávání</string>
|
||||
<string name="search">Hledat</string>
|
||||
<string name="close">Zavřít</string>
|
||||
<string name="addNewContent">Přidat</string>
|
||||
<string name="orgContentAvatar">Avatar organizace</string>
|
||||
<string name="repoContentAvatar">Repozitář</string>
|
||||
<string name="privateAvatar">Soukromý avatar</string>
|
||||
<string name="removeContent">Odebrat</string>
|
||||
<string name="genericApiStatusError">Instance vrátila chybu. Kód\u0020</string>
|
||||
<string name="title_activity_repo_detail">Detailní aktivity repozitáře</string>
|
||||
<string name="tab_text_info">Podrobnosti</string>
|
||||
<string name="tab_text_files">Soubory</string>
|
||||
<string name="tab_text_ml">Milníky</string>
|
||||
<string name="tab_text_releases">Vydání</string>
|
||||
<string name="tab_text_branches">Větve</string>
|
||||
<string name="tab_text_labels">Štítky</string>
|
||||
<string name="tab_text_collaborators">Spolupracovníci</string>
|
||||
<string name="tabPullRequests">Pull Requesty</string>
|
||||
<string name="noDataIssueTab">Nebyla nalezena žádná issue</string>
|
||||
<string name="infoTabRepoSize">Velikost</string>
|
||||
<string name="infoTabRepoDefaultBranch">Výchozí větev</string>
|
||||
<string name="infoTabRepoSshUrl">SSH URL</string>
|
||||
<string name="infoTabRepoCloneUrl">URL pro klonování</string>
|
||||
<string name="infoTabRepoRepoUrl">URL repozitáře</string>
|
||||
<string name="infoTabRepoForksCount">Forky</string>
|
||||
<string name="infoTabRepoCreatedAt">Vytvořeno</string>
|
||||
<string name="infoTabRepoUpdatedAt">Naposledy aktualizováno</string>
|
||||
<string name="infoShowMoreInformation">Zobrazit více informací</string>
|
||||
<string name="infoMoreInformation">Více informací</string>
|
||||
<string name="timeAtText">v(ve)</string>
|
||||
<string name="createdText">Otevřeno\u0020</string>
|
||||
<string name="issueCreator">Tvůrce:\u0020</string>
|
||||
<string name="issueCommenter">Komentující:\u0020</string>
|
||||
<string name="issueMilestone">Milník %1$s</string>
|
||||
<string name="dueDate">Termín do %1$s</string>
|
||||
<string name="assignedTo">Přiřazeno uživateli %1$s</string>
|
||||
<string name="commentButtonText">Komentář</string>
|
||||
<string name="commentEmptyError">Zadejte svůj komentář</string>
|
||||
<string name="commentSuccess">Komentář byl zveřejněn</string>
|
||||
<string name="commentError">Něco se pokazilo, zkuste to prosím znovu</string>
|
||||
<string name="featureDeprecated">Tato funkce bude v budoucnu odstraněna</string>
|
||||
<string name="generalImgContentText">Avatar</string>
|
||||
<string name="noDataMilestonesTab">Nebyly nalezeny žádné milníky</string>
|
||||
<string name="commitAuthor">Autor commitu: %1$s</string>
|
||||
<string name="releaseDownloadText">Stahování</string>
|
||||
<string name="noDataReleasesTab">Nebyly nalezeny žádná vydání</string>
|
||||
<string name="releasePublishedBy">Zveřejnil/a %1$s</string>
|
||||
<string name="noReleaseBodyContent">Poznámky k verzi nejsou poskytnuty vydavatelem.</string>
|
||||
<string name="noDataCollaboratorTab">Nebyli nalezeni žádní spolupracovníci</string>
|
||||
<string name="newMilestoneTitle">Název</string>
|
||||
<string name="newMilestoneDescription">Popis</string>
|
||||
<string name="newMilestoneDueDate">Splnit do</string>
|
||||
<string name="milestoneNameErrorEmpty">Název milníku je prázdný</string>
|
||||
<string name="milestoneDescError">Popis repozitáře překračuje maximální limit 255 znaků</string>
|
||||
<string name="milestoneCreated">Milník byl úspěšně vytvořen</string>
|
||||
<string name="milestoneCreatedError">Něco se pokazilo, zkuste to prosím znovu</string>
|
||||
<string name="milestoneDateEmpty">Vyberte prosím datum dokončení</string>
|
||||
<string name="milestoneNoDueDate">Bez termínu dokončení</string>
|
||||
<string name="milestoneNoDescription">Bez popisu</string>
|
||||
<string name="milestoneIssueStatusOpen">%1$d otevřených</string>
|
||||
<string name="milestoneIssueStatusClosed">%1$d zavřených</string>
|
||||
<string name="newIssueSelectAssigneesListTitle">Vybrat pověřenou osobu</string>
|
||||
<string name="newIssueSelectLabelsListTitle">Vybrat popisek</string>
|
||||
<string name="newIssueTitle">Název</string>
|
||||
<string name="newIssueAssigneesListTitle">Pověřené osoby</string>
|
||||
<string name="newIssueDescriptionTitle">Popis</string>
|
||||
<string name="newIssueDueDateTitle">Splnit do</string>
|
||||
<string name="newIssueMilestoneTitle">Milník</string>
|
||||
<string name="newIssueLabelsTitle">Popisky</string>
|
||||
<string name="issueTitleEmpty">Název problému je prázdný</string>
|
||||
<string name="issueDescriptionEmpty">Popis je prázdný</string>
|
||||
<string name="issueCreated">Problém úspěšně vytvořen</string>
|
||||
<string name="issueCreatedError">Něco se pokazilo, zkuste to prosím znovu</string>
|
||||
<string name="issueCreatedNoMilestone">Žádný milník</string>
|
||||
<string name="noAssigneesFound">Nebyli nalezeni žádní spolupracovníci</string>
|
||||
<string name="noLabelsFound">Nebyly nalezeny žádné popisky</string>
|
||||
<!-- settings -->
|
||||
<string name="settingsLanguageHeaderText">Překlad</string>
|
||||
<string name="settingsSecurityHeader">Zabezpečení</string>
|
||||
<string name="settingsCertsSelectorHeader">Odstranit důvěryhodné certifikáty</string>
|
||||
<string name="settingsCertsPopupTitle">Smazat důvěryhodné certifikáty?</string>
|
||||
<string name="settingsCertsPopupMessage">Opravdu chcete odstranit jakýkoli ručně důvěryhodný certifikát nebo název hostitele? \n\nBudete také odhlášeni.</string>
|
||||
<string name="settingsDateTimeHeaderText">Datum & čas</string>
|
||||
<string name="settingsSave">Nastavení uloženo</string>
|
||||
<string name="settingsLanguageSelectorHeader">Jazyk</string>
|
||||
<string name="settingsLanguageSelectedHeaderDefault">Angličtina</string>
|
||||
<string name="settingsAppearanceHeader">Vzhled</string>
|
||||
<string name="settingsDateTimeHeaderDefault">Pěkný</string>
|
||||
<string name="settingsLanguageSelectorDialogTitle">Zvolte jazyk</string>
|
||||
<string name="settingsTimeSelectorDialogTitle">Zvolte formát času</string>
|
||||
<string name="settingsHelpTranslateText">Pomozte nám přeložit GitNex do češtiny</string>
|
||||
<string name="codeBlockHeaderText">Barva bloku kódu</string>
|
||||
<string name="settingsCodeBlockSelectorDialogTitle">Výběr barvy bloku kódu</string>
|
||||
<string name="settingsHomeScreenHeaderText">Úvodní obrazovka</string>
|
||||
<string name="settingsHomeScreenSelectedText">Mé repositáře</string>
|
||||
<string name="settingsHomeScreenSelectorDialogTitle">Vyberte domovskou obrazovku</string>
|
||||
<string name="settingsCustomFontHeaderText">Písmo</string>
|
||||
<string name="settingsCustomFontSelectorDialogTitle">Vybrat písmo</string>
|
||||
<string name="themeSelectorDialogTitle">Select App Theme</string>
|
||||
<string name="themeSelectionHeaderText">Theme</string>
|
||||
<string name="settingsPdfModeHeaderText">PDF Night Mode</string>
|
||||
<string name="fileViewerHeader">File Viewer</string>
|
||||
<string name="settingsCounterBadges">Counter Badges</string>
|
||||
<string name="settingsFileviewerSourceCodeHeaderText">Source Code Theme</string>
|
||||
<string name="fileviewerSourceCodeThemeSelectorDialogTitle">Select Source Code Theme</string>
|
||||
<string name="cacheSizeDataDialogHeader">Data Cache Size</string>
|
||||
<string name="cacheSizeDataSelectionHeaderText">Data Cache Size</string>
|
||||
<string name="cacheSizeImagesDialogHeader">Images Cache Size</string>
|
||||
<string name="cacheSizeImagesSelectionHeaderText">Images Cache Size</string>
|
||||
<string name="clearCacheSelectionHeaderText">Clear Cache</string>
|
||||
<string name="clearCacheDialogHeader">Clear Cache?</string>
|
||||
<string name="clearCacheDialogMessage">This will delete all the cache data including files and images.\n\nProceed with deletion?</string>
|
||||
<string name="draftsHeader">Drafts</string>
|
||||
<string name="draftsHintText">Comments draft</string>
|
||||
<string name="settingsEnableCommentsDeletionText">Enable Drafts Deletion</string>
|
||||
<string name="settingsEnableCommentsDeletionHintText">Delete comment draft when comment is posted</string>
|
||||
<!-- settings -->
|
||||
<string name="noMoreData">No more data available</string>
|
||||
<string name="createLabel">New Label</string>
|
||||
<string name="menuTitleText">Repo Menu</string>
|
||||
<string name="labelName">Label Name</string>
|
||||
<string name="labelColor">Label Color</string>
|
||||
<string name="labelEmptyError">Label name is empty</string>
|
||||
<string name="labelNameError">Label name is not valid</string>
|
||||
<string name="labelCreated">Label created.</string>
|
||||
<string name="labelGeneralError">Something went wrong, please try again</string>
|
||||
<string name="labelUpdated">Label updated.</string>
|
||||
<string name="noDataLabelsTab">No labels found</string>
|
||||
<string name="labelMenuContentDesc">Desc</string>
|
||||
<string name="labelMenuEdit">Edit</string>
|
||||
<string name="labelMenuDelete">Delete</string>
|
||||
<string name="labelDeleteText">Label deleted</string>
|
||||
<string name="labelDeleteErrorText">Something went wrong, please try again</string>
|
||||
<string name="noDataBranchesTab">No branches found</string>
|
||||
<string name="alertDialogTokenRevokedTitle">Authorization Error</string>
|
||||
<string name="alertDialogTokenRevokedMessage">It seems that the Access Token is revoked OR your are not allowed to see these contents.\n\nIn case of revoked Token, please logout and login again</string>
|
||||
<string name="alertDialogTokenRevokedCopyNegativeButton">Cancel</string>
|
||||
<string name="alertDialogTokenRevokedCopyPositiveButton">Logout</string>
|
||||
<string name="labelDeleteTitle">Delete\u0020</string>
|
||||
<string name="labelDeleteMessage">Do you really want to delete this label?</string>
|
||||
<string name="labelDeletePositiveButton">OK</string>
|
||||
<string name="labelDeleteNegativeButton">Cancel</string>
|
||||
<!-- org tabbed layout str -->
|
||||
<string name="title_activity_org_detail">OrgDetailActivity</string>
|
||||
<string name="orgTabRepos">Repositories</string>
|
||||
<string name="orgTabTeams">Teams</string>
|
||||
<string name="orgTabMembers">Members</string>
|
||||
<string name="orgCreateTeam">New Team</string>
|
||||
<string name="noDataTeams">No teams found</string>
|
||||
<string name="teamTitle">Team name</string>
|
||||
<string name="teamDescription">Team desc</string>
|
||||
<string name="teamPermission">Permission : %1$s</string>
|
||||
<string name="noDataMembers">No members found</string>
|
||||
<string name="orgMember">Org members</string>
|
||||
<string name="orgTeamMembers">Organization team members</string>
|
||||
<string name="addNewMember">Add / Remove New Member</string>
|
||||
<string name="removeTeamMemberTitle">Remove\u0020</string>
|
||||
<string name="addTeamMemberTitle">Add\u0020</string>
|
||||
<string name="addTeamMemberMessage">Do you want to add this user to the team?</string>
|
||||
<string name="removeTeamMemberMessage">Do you want to remove this user from the team?</string>
|
||||
<string name="memberAddedMessage">Member added to the team successfully</string>
|
||||
<string name="memberRemovedMessage">Member removed from the team successfully</string>
|
||||
<!-- org tabbed layout str -->
|
||||
<!-- create team -->
|
||||
<string name="newTeamTitle">Team Name</string>
|
||||
<string name="newTeamDesc">Description</string>
|
||||
<string name="newTeamPermission">Permission</string>
|
||||
<string name="newTeamAccessControls">Access Controls</string>
|
||||
<string name="newTeamPermissionRead">Members can view and clone team repositories</string>
|
||||
<string name="newTeamPermissionWrite">Members can read and push to team repositories</string>
|
||||
<string name="newTeamPermissionAdmin">Members can pull and push to team repositories and add collaborators to them</string>
|
||||
<string name="teamNameEmpty">Please enter team name</string>
|
||||
<string name="teamNameError">Team name should contain only alphanumeric, dash (-), underscore (_) and dot (.) characters</string>
|
||||
<string name="teamPermissionEmpty">Please select permission</string>
|
||||
<string name="teamDescError">Team description have illegal characters</string>
|
||||
<string name="teamDescLimit">Team description have more than 100 characters</string>
|
||||
<string name="teamCreated">Team created successfully</string>
|
||||
<string name="teamCreatedError">Something went wrong, please try again</string>
|
||||
<!-- create team -->
|
||||
<!-- issue comments -->
|
||||
<string name="editCommentTitle">Edit Comment</string>
|
||||
<string name="editCommentButtonText">Edit</string>
|
||||
<string name="editCommentUpdatedText">Comment updated</string>
|
||||
<string name="issueCommentShare">Share Comment</string>
|
||||
<string name="deleteCommentSuccess">Comment deleted successfully</string>
|
||||
<string name="copyCommentText">Copy Comment</string>
|
||||
<!-- issue comments -->
|
||||
<!-- add collaborator -->
|
||||
<string name="addCollaboratorTitle">Add / Remove Collaborator</string>
|
||||
<string name="addCollaboratorSearchHint">Search users</string>
|
||||
<string name="addCollaboratorViewUserDesc">Username</string>
|
||||
<string name="removeCollaboratorTitle">Remove\u0020</string>
|
||||
<string name="removeCollaboratorMessage">Do you want to remove this user from the repository?</string>
|
||||
<string name="removeCollaboratorToastText">User removed from the repository.</string>
|
||||
<string name="addCollaboratorToastText">User added to the repository.</string>
|
||||
<!-- add collaborator -->
|
||||
<!-- profile section -->
|
||||
<string name="profileTabFollowers">Followers</string>
|
||||
<string name="profileTabFollowing">Following</string>
|
||||
<string name="profileCreateNewEmailAddress">Add Email Address</string>
|
||||
<string name="profileEmailButton">Save</string>
|
||||
<string name="profileEmailTitle">Email Address</string>
|
||||
<string name="emailAddedText">New email added successfully</string>
|
||||
<string name="emailErrorEmpty">Email address is empty</string>
|
||||
<string name="emailErrorInvalid">Email address is not valid</string>
|
||||
<string name="emailErrorInUse">Email address is already in use</string>
|
||||
<string name="emailTypeText">Primary</string>
|
||||
<string name="profileTabEmails">Emails</string>
|
||||
<!-- profile section -->
|
||||
<!-- single issue section -->
|
||||
<string name="singleIssueEditLabels">Add / Remove Labels</string>
|
||||
<string name="labelsUpdated">Labels updated</string>
|
||||
<string name="closeIssue">Close Issue</string>
|
||||
<string name="editIssue">Edit Issue</string>
|
||||
<string name="reOpenIssue">Reopen Issue</string>
|
||||
<string name="issueStateClosed">Issue closed</string>
|
||||
<string name="issueStateReopened">Issue reopened</string>
|
||||
<string name="addRemoveAssignees">Add / Remove Assignees</string>
|
||||
<string name="assigneesUpdated">Assignees updated</string>
|
||||
<string name="singleIssueSubscribe">Subscribe</string>
|
||||
<string name="singleIssueUnSubscribe">Unsubscribe</string>
|
||||
<!-- single issue section -->
|
||||
<!-- multi select dialog -->
|
||||
<string name="select_entry">Select Entries</string>
|
||||
<string name="please_select_atleast">Please select at least </string>
|
||||
<string name="you_can_only_select_upto">You can only select up to </string>
|
||||
<string name="option"> option</string>
|
||||
<string name="options"> options</string>
|
||||
<string name="select_all">Select all</string>
|
||||
<!-- multi select dialog -->
|
||||
<string name="repoMetaData">Repository Meta</string>
|
||||
<!-- admin -->
|
||||
<string name="adminCreateNewUser">Add New User</string>
|
||||
<string name="adminUsers">System Users</string>
|
||||
<string name="userRoleAdmin">Admin</string>
|
||||
<!-- admin -->
|
||||
<!-- create user -->
|
||||
<string name="userFullNameText">Full Name</string>
|
||||
<string name="userEmail">Email</string>
|
||||
<string name="userUserName">Username</string>
|
||||
<string name="userPassword">Password</string>
|
||||
<string name="userInvalidFullName">Invalid Full Name</string>
|
||||
<string name="userInvalidUserName">Invalid Username</string>
|
||||
<string name="userInvalidEmail">Invalid Email</string>
|
||||
<string name="userCreatedText">New user added successfully</string>
|
||||
<string name="userExistsError">User already exists</string>
|
||||
<!-- create user -->
|
||||
<!-- edit issue -->
|
||||
<string name="editIssueNavHeader">Edit Issue #%1$s</string>
|
||||
<string name="editIssueSuccessMessage">Issue updated</string>
|
||||
<!-- edit issue -->
|
||||
<!-- release -->
|
||||
<string name="createRelease">New Release</string>
|
||||
<string name="releaseTagNameText">Tag Name</string>
|
||||
<string name="releaseTitleText">Title</string>
|
||||
<string name="releaseContentText">Content</string>
|
||||
<string name="releaseTypeText">Mark as Pre-Release</string>
|
||||
<string name="releaseBranchText">Select Branch</string>
|
||||
<string name="releaseDraftText">Draft</string>
|
||||
<string name="tagNameErrorEmpty">Tag name is empty</string>
|
||||
<string name="titleErrorEmpty">Title is empty</string>
|
||||
<string name="releaseCreatedText">New release created</string>
|
||||
<!-- release -->
|
||||
<string name="loginOTPTypeError">OTP code should be numbers</string>
|
||||
<string name="loginOTP">OTP Code (Optional)</string>
|
||||
<string name="otpMessage">Enter otp code if 2FA is enabled</string>
|
||||
<string name="openWebRepo">Open in Browser</string>
|
||||
<string name="repoStargazersInMenu">Stargazers</string>
|
||||
<string name="repoWatchersInMenu">Watchers</string>
|
||||
<string name="noDataWebsite">No website found</string>
|
||||
<string name="noDataDescription">No description found</string>
|
||||
<string name="noDataLocation">No location found</string>
|
||||
<string name="starMember">Star</string>
|
||||
<string name="watcherMember">Watcher</string>
|
||||
<string name="zipArchiveDownloadReleasesTab">Source code (ZIP)</string>
|
||||
<string name="tarArchiveDownloadReleasesTab">Source code (TAR.GZ)</string>
|
||||
<!-- new file -->
|
||||
<string name="newFileNameTintCopy">File Name</string>
|
||||
<string name="newFileBranchTintCopy">New Branch Name</string>
|
||||
<string name="newFileContentTintCopy">File Content</string>
|
||||
<string name="newFileButtonCopy">Create New File</string>
|
||||
<string name="newFileNameHintMessage">with folder: app/test.md</string>
|
||||
<string name="newFileMessageTintCopy">Zpráva commitu</string>
|
||||
<string name="newFileInvalidBranchName">Invalid branch name, may only contain –, a–z, 0–9</string>
|
||||
<string name="newFileCommitMessageError">Commit zpráva je příliš dlouhá</string>
|
||||
<string name="newFileSuccessMessage">New file created</string>
|
||||
<string name="newFileOldBranches">Current Branches</string>
|
||||
<string name="newFileRequiredFields">Fields like filename, content and commit message are required</string>
|
||||
<string name="newFileCurrentBranchMessage">Selecting current branch will disable new branch</string>
|
||||
<string name="newFileNewBranchMessage">e.g: new-branch</string>
|
||||
<string name="newFileRequiredFieldNewBranchName">New branch name cannot be empty if current branch is not selected</string>
|
||||
<string name="strFilter">Filter</string>
|
||||
<string name="strSwitchBranches">Branches</string>
|
||||
<string name="strMarkdown">Markdown</string>
|
||||
<string name="copyIssueUrl">Copy Issue URL</string>
|
||||
<string name="copyIssueUrlToastMsg">URL copied to clipboard</string>
|
||||
<string name="copyIssueCommentToastMsg">Copied comment to clipboard</string>
|
||||
<string name="milestoneCompletion">%1$d\uFF05 completed</string>
|
||||
<!-- files -->
|
||||
<string name="noDataFilesTab">No files found</string>
|
||||
<string name="filesGenericError">Sorry this file cannot be viewed as API returned an error</string>
|
||||
<string name="notSupported">Not supported</string>
|
||||
<!-- generic copy -->
|
||||
<string name="okButton">OK</string>
|
||||
<string name="doneButton">Done</string>
|
||||
<string name="cancelButton">Cancel</string>
|
||||
<string name="genericError">Something went wrong, please try again</string>
|
||||
<string name="apiNotFound">This request needs higher Gitea version than the one installed. Please upgrade your instance to the latest version of Gitea.</string>
|
||||
<string name="noDataFound">No data found</string>
|
||||
<string name="addButton">Add</string>
|
||||
<string name="removeButton">Remove</string>
|
||||
<string name="authorizeError">You are not authorized to perform this action.</string>
|
||||
<string name="menuContentDesc">Menu</string>
|
||||
<string name="menuEditText">Edit</string>
|
||||
<string name="menuDeleteText">Delete</string>
|
||||
<string name="menuCopyText">Copy</string>
|
||||
<string name="menuQuoteText">Quote and Reply</string>
|
||||
<string name="modifiedText">edited</string>
|
||||
<string name="saveButton">Save</string>
|
||||
<string name="websiteText">Website</string>
|
||||
<string name="locationText">Location</string>
|
||||
<string name="characters255Limit">Max 255 characters</string>
|
||||
<string name="emptyFields">All fields are required</string>
|
||||
<string name="textContinue">Continue</string>
|
||||
<string name="copyToken">Token</string>
|
||||
<string name="viewInBrowser">View in Browser</string>
|
||||
<string name="isOpen">Open</string>
|
||||
<string name="isClosed">Closed</string>
|
||||
<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="exploreTextBoxHint">Explore repositories</string>
|
||||
<string name="starRepository">Star Repository</string>
|
||||
<string name="unStarRepository">Unstar Repository</string>
|
||||
<string name="starRepositorySuccess">Repository added to starred list</string>
|
||||
<string name="unStarRepositorySuccess">Repository removed from starred list</string>
|
||||
<string name="watchRepository">Watch Repository</string>
|
||||
<string name="unWatchRepository">Unwatch Repository</string>
|
||||
<string name="watchRepositorySuccess">Repository added to watch list</string>
|
||||
<string name="unWatchRepositorySuccess">Repository removed from watch list</string>
|
||||
<string name="titleDrafts">Drafts</string>
|
||||
<string name="versionUnsupportedOld">Unsupported old version(%1$s) of Gitea detected. Please update to latest stable version. If you continue, the app may not function properly</string>
|
||||
<string name="versionUnsupportedNew">New Gitea version detected! Please UPDATE GitNex!</string>
|
||||
<string name="versionUnknown">No Gitea detected!</string>
|
||||
<string name="versionAlertDialogHeader">Unsupported Version of Gitea</string>
|
||||
<string name="loginViaPassword">Username / Password</string>
|
||||
<string name="loginMethodText">Choose your preferred login method to access your account. Token is more secure!</string>
|
||||
<string name="unauthorizedApiError">Instance has returned an error - Unauthorized. Check your credentials and try again</string>
|
||||
<string name="loginTokenError">Token is required</string>
|
||||
<string name="prDeletedFrok">Deleted Fork</string>
|
||||
<string name="noDataPullRequests">No pull requests found</string>
|
||||
<string name="prCreator">Creator :\u0020</string>
|
||||
<string name="editPrText">Edit Pull Request</string>
|
||||
<string name="copyPrUrlText">Copy Pull Request URL</string>
|
||||
<string name="editPrNavHeader">Edit Pull Request #%1$s</string>
|
||||
<string name="editPrSuccessMessage">Pull Request updated</string>
|
||||
<string name="fileDiffViewHeader">%1$s Files Changed</string>
|
||||
<string name="fileDiffViewHeaderSingle">%1$s File Changed</string>
|
||||
<string name="openFileDiffText">Files Changed</string>
|
||||
<string name="mergePullRequestText">Merge Pull Request</string>
|
||||
<string name="mergePullRequestButtonText">Merge</string>
|
||||
<string name="deleteBranchAfterMerge">Delete branch after merge</string>
|
||||
<string name="mergeNoteText">Merge may fail if you are not authorized to merge this Pull Request.</string>
|
||||
<string name="mergeInfoDisabledMessage">Disabled Merge button means that there are conflicts OR other things to fix before Merge</string>
|
||||
<string name="deleteBranchForkInfo">This branch belong to a forked repository</string>
|
||||
<string name="mergeCommentText">Merge comment</string>
|
||||
<string name="mergePRSuccessMsg">Pull Request was merged successfully</string>
|
||||
<string name="mergePR404ErrorMsg">Pull Request is not available for merge</string>
|
||||
<string name="mergeOptionMerge">Merge Pull Request</string>
|
||||
<string name="mergeOptionRebase">Rebase and Merge</string>
|
||||
<string name="mergeOptionRebaseCommit">Rebase and Merge (--no-ff)</string>
|
||||
<string name="mergeOptionSquash">Squash and Merge</string>
|
||||
<string name="downloadFile">Download This File</string>
|
||||
<string name="waitLoadingDownloadFile">Please wait for the file to load to memory</string>
|
||||
<string name="downloadFileSaved">File saved successfully</string>
|
||||
<string name="excludeFilesInFileviewer">This file type is not supported in file viewer. Download it instead from the three dotted menu?</string>
|
||||
<string name="deleteFile">Delete This File</string>
|
||||
<string name="editFile">Edit This File</string>
|
||||
<string name="deleteFileText">Delete %1$s</string>
|
||||
<string name="deleteFileMessage">File is set for deletion by branch %1$s</string>
|
||||
<string name="editFileText">Edit %1$s</string>
|
||||
<string name="editFileMessage">File is modified by branch %1$s</string>
|
||||
<string name="sizeCopy">Size</string>
|
||||
<string name="shareIssue">Share Issue</string>
|
||||
<string name="sharePr">Share Pull Request</string>
|
||||
<string name="shareRepository">Share Repository</string>
|
||||
<string name="createRepository">Create Repository</string>
|
||||
<string name="commitTitle">Commits</string>
|
||||
<string name="commitCommittedBy">Commitnuto uživatelem %1$s</string>
|
||||
<string name="viewCommits">Zobrazit commity</string>
|
||||
<!-- Memorizing Trust Manager -->
|
||||
<string name="mtm_notification">Certificate Verification</string>
|
||||
<string name="mtm_accept_cert">Accept Unknown Certificate?</string>
|
||||
<string name="mtm_trust_anchor">The server certificate is not signed by a known Certificate Authority</string>
|
||||
<string name="mtm_cert_expired">The server certificate is expired.</string>
|
||||
<string name="mtm_accept_server_name">Accept Mismatching Server Name?</string>
|
||||
<string name="mtm_hostname_mismatch">Server could not authenticate as \"%s\". The certificate is only valid for:</string>
|
||||
<string name="mtm_connect_anyway">Do you want to connect anyway?</string>
|
||||
<string name="mtm_cert_details">Certificate details:</string>
|
||||
<string name="mtm_decision_always">Trust</string>
|
||||
<string name="mtm_decision_abort">Abort</string>
|
||||
<string name="subscribedSuccessfully">Subscribed successfully</string>
|
||||
<string name="alreadySubscribed">You have already subscribed</string>
|
||||
<string name="subscriptionError">Subscription failed</string>
|
||||
<string name="unsubscribedSuccessfully">Unsubscribed successfully</string>
|
||||
<string name="alreadyUnsubscribed">You have already Unsubscribed</string>
|
||||
<string name="unsubscriptionError">Un-Subscription failed</string>
|
||||
<string name="closeMilestone">Close Milestone</string>
|
||||
<string name="openMilestone">Open Milestone</string>
|
||||
<string name="milestoneStatusUpdate">Milestone status updated successfully</string>
|
||||
<string name="errorOnLogin">We cannot reach the server, please check your server status</string>
|
||||
<string name="reportViewerHeader">Crash Reports</string>
|
||||
<string name="settingsEnableReportsText">Enable Crash Reports</string>
|
||||
<string name="crashTitle">GitNex has stopped :(</string>
|
||||
<string name="setCrashReports">Crash reports</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>
|
||||
<string name="draftsListEmpty">No drafts found</string>
|
||||
<string name="draftsDeleteSuccess">Drafts deleted successfully</string>
|
||||
<string name="draftsSingleDeleteSuccess">Draft deleted successfully</string>
|
||||
<string name="deleteAllDraftsDialogMessage">This will delete all the drafts for this account. \n\nProceed with deletion?</string>
|
||||
<string name="draftSaved">Draft saved</string>
|
||||
<string name="appearanceHintText">Themes, fonts, badges, code block theme</string>
|
||||
<string name="fileViewerHintText">PDF mode, source code theme</string>
|
||||
<string name="securityHintText">SSL certificates, cache, polling delay</string>
|
||||
<string name="languagesHintText">Languages</string>
|
||||
<string name="reportsHintText">Crash reports</string>
|
||||
<string name="archivedRepository">Archived</string>
|
||||
<string name="accountDeletedMessage">Account deleted successfully</string>
|
||||
<string name="removeAccountPopupTitle">Remove Account</string>
|
||||
<string name="removeAccountPopupMessage">Are you sure you want to remove this account from the app?\n\nThis will remove all the data related to this account on the app only.</string>
|
||||
<string name="addNewAccount">New Account</string>
|
||||
<string name="addNewAccountText">Add New Account</string>
|
||||
<string name="accountAlreadyExistsError">Account already exists in the app</string>
|
||||
<string name="accountAddedMessage">Account added successfully</string>
|
||||
<string name="switchAccountSuccess">Switched to account : %1$s@%2$s</string>
|
||||
<!-- Notifications -->
|
||||
<string name="pageTitleNotifications">Notifications</string>
|
||||
<string name="noDataNotifications">No notifications found</string>
|
||||
<string name="notificationBody">You have received a new notification. (%s)</string>
|
||||
<string name="notificationsPollingHeaderText">Notifications Polling Delay</string>
|
||||
<string name="pollingDelaySelectedText">%d Minutes</string>
|
||||
<string name="pollingDelayDialogHeaderText">Select Polling Delay</string>
|
||||
<string name="pollingDelayDialogDescriptionText">Choose a minutely delay in which GitNex tries to poll new notifications</string>
|
||||
<string name="markAsRead">Mark as Read</string>
|
||||
<string name="markAsUnread">Mark as Unread</string>
|
||||
<string name="pinNotification">Pin Notification</string>
|
||||
<string name="markedNotificationsAsRead">Successfully marked all notifications as read</string>
|
||||
<string name="isRead">Read</string>
|
||||
<string name="isUnread">Unread</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="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="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>
|
@ -37,6 +37,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 +63,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 +71,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 +109,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 +421,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>
|
||||
@ -468,7 +469,7 @@
|
||||
<string name="deleteFile">Diese Datei löschen</string>
|
||||
<string name="editFile">Diese Datei bearbeiten</string>
|
||||
<string name="deleteFileText">Lösche %1$s</string>
|
||||
<string name="deleteFileMessage">File is set for deletion by branch %1$s</string>
|
||||
<string name="deleteFileMessage">Datei zum Löschen durch Branch %1$s gesetzt</string>
|
||||
<string name="editFileText">Bearbeite %1$s</string>
|
||||
<string name="editFileMessage">Datei wurde von Branch %1$s geändert</string>
|
||||
<string name="sizeCopy">Größe</string>
|
||||
@ -476,13 +477,13 @@
|
||||
<string name="sharePr">Pull-Request teilen</string>
|
||||
<string name="shareRepository">Repository teilen</string>
|
||||
<string name="createRepository">Repository erstellen</string>
|
||||
<string name="commitTitle">Branch-Commits</string>
|
||||
<string name="commitTitle">Commits</string>
|
||||
<string name="commitCommittedBy">Committed von %1$s</string>
|
||||
<string name="viewCommits">Commits anzeigen</string>
|
||||
<!-- Memorizing Trust Manager -->
|
||||
<string name="mtm_notification">Zertifikatsüberprüfung</string>
|
||||
<string name="mtm_accept_cert">Unbekanntes Zertifikat akzeptieren?</string>
|
||||
<string name="mtm_trust_anchor">The server certificate is not signed by a known Certificate Authority</string>
|
||||
<string name="mtm_trust_anchor">Das Serverzertifikat wurde nicht von einer bekannten Zertifizierungsstelle signiert</string>
|
||||
<string name="mtm_cert_expired">Das Server-Zertifikat ist abgelaufen.</string>
|
||||
<string name="mtm_accept_server_name">Nicht übereinstimmender Hostname akzeptieren?</string>
|
||||
<string name="mtm_hostname_mismatch">Server konnte sich nicht als \"%s\" authentifizieren. Das Zertifikat ist nur gültig für:</string>
|
||||
@ -504,7 +505,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>
|
||||
@ -541,4 +542,39 @@
|
||||
<string name="markedNotificationsAsRead">Alle Benachrichtigungen erfolgreich als gelesen markiert</string>
|
||||
<string name="isRead">Gelesen</string>
|
||||
<string name="isUnread">Ungelesen</string>
|
||||
<string name="repoSettingsTitle">Repository Einstellungen</string>
|
||||
<string name="repoSettingsEditProperties">Eigenschaften bearbeiten</string>
|
||||
<string name="repoSettingsDelete">Repository löschen</string>
|
||||
<string name="repoSettingsDeleteHint">Sei vorsichtig, diese Operation kann NICHT rückgängig gemacht werden!</string>
|
||||
<string name="repoPropertiesTemplate">Als Vorlage speichern</string>
|
||||
<string name="repoPropertiesEnableIssues">Issues aktivieren</string>
|
||||
<string name="repoPropertiesExternalIssuesUrl">Url für externes Ticket Systems</string>
|
||||
<string name="repoPropertiesEnableWiki">Wiki aktivieren</string>
|
||||
<string name="repoPropertiesExternalWikiUrl">Externe Wiki Url</string>
|
||||
<string name="repoPropertiesEnablePr">Pull Requests aktivieren</string>
|
||||
<string name="repoPropertiesEnableTimeTracker">Time Tracker aktivieren</string>
|
||||
<string name="repoPropertiesEnableMergeCommits">Merge Commits aktivieren</string>
|
||||
<string name="repoPropertiesEnableRebase">Rebase aktivieren</string>
|
||||
<string name="repoPropertiesEnableSquash">Squash und Merge aktivieren</string>
|
||||
<string name="repoPropertiesEnableForceMerge">Rebase mit Merge Commits aktivieren (——no-ff)</string>
|
||||
<string name="repoPropertiesSaveSuccess">Repository-Eigenschaften erfolgreich aktualisiert</string>
|
||||
<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="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>
|
||||
|
@ -37,6 +37,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 +63,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 +71,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 +109,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 +421,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>
|
||||
@ -476,7 +477,7 @@
|
||||
<string name="sharePr">Compartir Pull Request</string>
|
||||
<string name="shareRepository">Compartir repositorio</string>
|
||||
<string name="createRepository">Crear repositorio</string>
|
||||
<string name="commitTitle">Compromisos de la rama</string>
|
||||
<string name="commitTitle">Commits</string>
|
||||
<string name="commitCommittedBy">Comisionado por %1$s</string>
|
||||
<string name="viewCommits">Ver Compromisos</string>
|
||||
<!-- Memorizing Trust Manager -->
|
||||
@ -504,7 +505,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>
|
||||
@ -541,4 +542,39 @@
|
||||
<string name="markedNotificationsAsRead">Successfully marked all notifications as read</string>
|
||||
<string name="isRead">Read</string>
|
||||
<string name="isUnread">Unread</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="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="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>
|
||||
|
@ -37,6 +37,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 +63,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 +74,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 +112,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 +424,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>
|
||||
@ -479,7 +480,7 @@
|
||||
<string name="sharePr">Share Pull Request</string>
|
||||
<string name="shareRepository">Share Repository</string>
|
||||
<string name="createRepository">Create Repository</string>
|
||||
<string name="commitTitle">Branch Commits</string>
|
||||
<string name="commitTitle">Commits</string>
|
||||
<string name="commitCommittedBy">Committed by %1$s</string>
|
||||
<string name="viewCommits">View Commits</string>
|
||||
<!-- Memorizing Trust Manager -->
|
||||
@ -507,7 +508,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>
|
||||
@ -544,4 +545,39 @@
|
||||
<string name="markedNotificationsAsRead">Successfully marked all notifications as read</string>
|
||||
<string name="isRead">Read</string>
|
||||
<string name="isUnread">Unread</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="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="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>
|
||||
|
@ -37,6 +37,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 +63,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 +71,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 +109,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 +421,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>
|
||||
@ -476,7 +477,7 @@
|
||||
<string name="sharePr">Share Pull Request</string>
|
||||
<string name="shareRepository">Share Repository</string>
|
||||
<string name="createRepository">Create Repository</string>
|
||||
<string name="commitTitle">Branch Commits</string>
|
||||
<string name="commitTitle">Commits</string>
|
||||
<string name="commitCommittedBy">Committed by %1$s</string>
|
||||
<string name="viewCommits">View Commits</string>
|
||||
<!-- Memorizing Trust Manager -->
|
||||
@ -504,7 +505,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>
|
||||
@ -541,4 +542,39 @@
|
||||
<string name="markedNotificationsAsRead">Successfully marked all notifications as read</string>
|
||||
<string name="isRead">Read</string>
|
||||
<string name="isUnread">Unread</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="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="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>
|
||||
|
@ -36,7 +36,8 @@
|
||||
<string name="pageTitleNewFile">Nouveau fichier</string>
|
||||
<string name="pageTitleExplore">Explorer</string>
|
||||
<string name="pageTitleAdministration">Administration de Gitea</string>
|
||||
<string name="pageTitleUserAccounts">Manage Accounts</string>
|
||||
<string name="pageTitleUserAccounts">Gestion des comptes</string>
|
||||
<string name="pageTitleNewPullRequest">New Pull Request</string>
|
||||
<!-- page titles -->
|
||||
<string name="repoName">Dépôt de démonstration</string>
|
||||
<string name="repoFullname">Nom complet du dépôt</string>
|
||||
@ -62,13 +63,15 @@
|
||||
<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">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>
|
||||
<string name="malformedJson">Malformed JSON was received. Server response was not successful</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>
|
||||
<string name="malformedJson">JSON mal formé. Le serveur ne répond pas.</string>
|
||||
<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>
|
||||
@ -86,7 +89,7 @@
|
||||
<string name="orgCreatedError">Une erreur s’est produite, veuillez réessayer</string>
|
||||
<string name="orgExistsError">Ce nom d’organisation est déjà pris</string>
|
||||
<string name="binaryFileError">Les fichiers binaires ne sont pas encore pris en charge.</string>
|
||||
<string name="fileTooLarge">This file exceeds the maximum possible diff lines</string>
|
||||
<string name="fileTooLarge">Ce fichier dépasse le maximum de lignes de diff</string>
|
||||
<string name="processingText">Traitement en cours</string>
|
||||
<string name="search">Rechercher</string>
|
||||
<string name="close">Fermer</string>
|
||||
@ -106,7 +109,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>
|
||||
@ -128,7 +130,7 @@
|
||||
<string name="commentEmptyError">Veuillez saisir votre commentaire</string>
|
||||
<string name="commentSuccess">Commentaire publié</string>
|
||||
<string name="commentError">Une erreur s’est produite, veuillez réessayer</string>
|
||||
<string name="featureDeprecated">This function will be removed in the future</string>
|
||||
<string name="featureDeprecated">Cette fonction sera prochainement supprimée</string>
|
||||
<string name="generalImgContentText">Avatar</string>
|
||||
<string name="noDataMilestonesTab">Aucun jalon</string>
|
||||
<string name="commitAuthor">Auteur de la révision : %1$s</string>
|
||||
@ -223,7 +225,7 @@
|
||||
<string name="labelDeleteErrorText">Une erreur s’est produite, veuillez réessayer</string>
|
||||
<string name="noDataBranchesTab">Aucune branche</string>
|
||||
<string name="alertDialogTokenRevokedTitle">Erreur d’autorisation</string>
|
||||
<string name="alertDialogTokenRevokedMessage">It seems that the Access Token is revoked OR your are not allowed to see these contents.\n\nIn case of revoked Token, please logout and login again</string>
|
||||
<string name="alertDialogTokenRevokedMessage">Le jeton d’accès est peut-être révoqué ou vous n’êtes pas autorisé à voir ce contenu.\n\nEn cas de jeton révoqué, veuillez vous reconnecter</string>
|
||||
<string name="alertDialogTokenRevokedCopyNegativeButton">Annuler</string>
|
||||
<string name="alertDialogTokenRevokedCopyPositiveButton">Déconnexion</string>
|
||||
<string name="labelDeleteTitle">Supprimer\u0020</string>
|
||||
@ -273,7 +275,7 @@
|
||||
<string name="editCommentUpdatedText">Commentaire modifié</string>
|
||||
<string name="issueCommentShare">Partager le commentaire</string>
|
||||
<string name="deleteCommentSuccess">Commentaire supprimé avec succès</string>
|
||||
<string name="copyCommentText">Copy Comment</string>
|
||||
<string name="copyCommentText">Copier le commentaire</string>
|
||||
<!-- issue comments -->
|
||||
<!-- add collaborator -->
|
||||
<string name="addCollaboratorTitle">Gérer les collaborateurs</string>
|
||||
@ -290,8 +292,8 @@
|
||||
<string name="profileCreateNewEmailAddress">Ajouter une adresse e-mail</string>
|
||||
<string name="profileEmailButton">Sauvegarder</string>
|
||||
<string name="profileEmailTitle">Adresse e-mail</string>
|
||||
<string name="emailAddedText">New email added successfully</string>
|
||||
<string name="emailErrorEmpty">Email address is empty</string>
|
||||
<string name="emailAddedText">Nouvelle adresse e-mail ajoutée</string>
|
||||
<string name="emailErrorEmpty">Adresse e-mail manquante</string>
|
||||
<string name="emailErrorInvalid">Adresse e-mail invalide</string>
|
||||
<string name="emailErrorInUse">Adresse e-mail déjà utilisée</string>
|
||||
<string name="emailTypeText">Principale</string>
|
||||
@ -351,9 +353,9 @@
|
||||
<string name="titleErrorEmpty">Titre requis</string>
|
||||
<string name="releaseCreatedText">Nouvelle version créée</string>
|
||||
<!-- release -->
|
||||
<string name="loginOTPTypeError">OTP code should be numbers</string>
|
||||
<string name="loginOTPTypeError">Le code OTP est un nombre</string>
|
||||
<string name="loginOTP">Code OTP (si nécessaire)</string>
|
||||
<string name="otpMessage">Enter otp code if 2FA is enabled</string>
|
||||
<string name="otpMessage">Entrez le code OTP si l’authentification à deux facteurs est activée</string>
|
||||
<string name="openWebRepo">Ouvrir dans le navigateur</string>
|
||||
<string name="repoStargazersInMenu">Fans</string>
|
||||
<string name="repoWatchersInMenu">Observateurs</string>
|
||||
@ -417,9 +419,8 @@
|
||||
<string name="isOpen">Ouvert</string>
|
||||
<string name="isClosed">Fermé</string>
|
||||
<string name="genericServerResponseError">Impossible de se connecter au serveur pour le moment, veuillez vérifier son statut puis réessayer</string>
|
||||
<string name="genericCopyUrl">Copy URL</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>
|
||||
@ -430,14 +431,14 @@
|
||||
<string name="watchRepositorySuccess">Vous suivez ce dépôt</string>
|
||||
<string name="unWatchRepositorySuccess">Vous ne suivez plus ce dépôt</string>
|
||||
<string name="titleDrafts">Brouillons</string>
|
||||
<string name="versionUnsupportedOld">Unsupported old version(%1$s) of Gitea detected. Please update to latest stable version. If you continue, the app may not function properly</string>
|
||||
<string name="versionUnsupportedOld">Ancienne version de Gitea détectée (%1$s). Faire la mise à jour vers la dernière version stable est fortement recommandé.</string>
|
||||
<string name="versionUnsupportedNew">Nouvelle version de Gitea détectée ! Veuillez mettre à jour GitNex !</string>
|
||||
<string name="versionUnknown">Aucun serveur Gitea détecté !</string>
|
||||
<string name="versionAlertDialogHeader">Version de Gitea non prise en charge</string>
|
||||
<string name="loginViaPassword">Nom d’utilisateur / mot de passe</string>
|
||||
<string name="loginMethodText">Choisissez une méthode de connexion pour accéder à votre compte. Le jeton est la plus sécurisée !</string>
|
||||
<string name="unauthorizedApiError">L\'instance a renvoyé une erreur « Autorisation refusée ». Vérifiez vos identifiants et réessayez.</string>
|
||||
<string name="loginTokenError">Token is required</string>
|
||||
<string name="loginTokenError">Jeton est requis</string>
|
||||
<string name="prDeletedFrok">Fourche supprimée</string>
|
||||
<string name="noDataPullRequests">Aucune demande de tirage</string>
|
||||
<string name="prCreator">Auteur :\u0020</string>
|
||||
@ -452,7 +453,7 @@
|
||||
<string name="mergePullRequestButtonText">Fusionner</string>
|
||||
<string name="deleteBranchAfterMerge">Supprimer la branche après la fusion</string>
|
||||
<string name="mergeNoteText">La fusion peut échouer si vous n’êtes pas autorisé à fusionner cette demande de tirage.</string>
|
||||
<string name="mergeInfoDisabledMessage">Disabled Merge button means that there are conflicts OR other things to fix before Merge</string>
|
||||
<string name="mergeInfoDisabledMessage">Le bouton Fusion désactivé signifie qu’il y a des conflits ou des choses à corriger au préalable</string>
|
||||
<string name="deleteBranchForkInfo">Cette branche appartient à un dépôt forké</string>
|
||||
<string name="mergeCommentText">Commentaire de la fusion</string>
|
||||
<string name="mergePRSuccessMsg">La demande de tirage a été fusionnée</string>
|
||||
@ -465,24 +466,24 @@
|
||||
<string name="waitLoadingDownloadFile">Chargement du fichier dans la mémoire</string>
|
||||
<string name="downloadFileSaved">Fichier sauvegardé avec succès</string>
|
||||
<string name="excludeFilesInFileviewer">La visionneuse ne prend pas en charge ce type de fichier. Télécharger ce fichier ?</string>
|
||||
<string name="deleteFile">Delete This File</string>
|
||||
<string name="editFile">Edit This File</string>
|
||||
<string name="deleteFileText">Delete %1$s</string>
|
||||
<string name="deleteFileMessage">File is set for deletion by branch %1$s</string>
|
||||
<string name="editFileText">Edit %1$s</string>
|
||||
<string name="editFileMessage">File is modified by branch %1$s</string>
|
||||
<string name="deleteFile">Supprimer ce fichier</string>
|
||||
<string name="editFile">Éditer ce fichier</string>
|
||||
<string name="deleteFileText">Supprimer %1$s</string>
|
||||
<string name="deleteFileMessage">Fichier supprimé par la branche %1$s</string>
|
||||
<string name="editFileText">Modifier %1$s</string>
|
||||
<string name="editFileMessage">Fichier modifié par la branche %1$s</string>
|
||||
<string name="sizeCopy">Taille</string>
|
||||
<string name="shareIssue">Partager le ticket</string>
|
||||
<string name="sharePr">Partager la demande de tirage</string>
|
||||
<string name="shareRepository">Partager le dépôt</string>
|
||||
<string name="createRepository">Créer un dépôt</string>
|
||||
<string name="commitTitle">Révisions de la branche</string>
|
||||
<string name="commitTitle">Révisions</string>
|
||||
<string name="commitCommittedBy">Révision de %1$s</string>
|
||||
<string name="viewCommits">Voir révisions</string>
|
||||
<!-- Memorizing Trust Manager -->
|
||||
<string name="mtm_notification">Vérification du certificat</string>
|
||||
<string name="mtm_accept_cert">Accepter le certificat inconnu ?</string>
|
||||
<string name="mtm_trust_anchor">The server certificate is not signed by a known Certificate Authority</string>
|
||||
<string name="mtm_trust_anchor">Le certificat du serveur est signé par une autorité de certification inconnue</string>
|
||||
<string name="mtm_cert_expired">Le certificat du serveur a expiré.</string>
|
||||
<string name="mtm_accept_server_name">Accepter le nom de serveur incohérent ?</string>
|
||||
<string name="mtm_hostname_mismatch">Le serveur ne peut s’authentifier comme « %s ». Le certificat est valide pour :</string>
|
||||
@ -504,7 +505,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>
|
||||
@ -520,13 +521,13 @@
|
||||
<string name="reportsHintText">Rapports de plantage</string>
|
||||
<string name="archivedRepository">Archivé</string>
|
||||
<string name="accountDeletedMessage">Compte supprimé</string>
|
||||
<string name="removeAccountPopupTitle">Remove Account</string>
|
||||
<string name="removeAccountPopupMessage">Are you sure you want to remove this account from the app?\n\nThis will remove all the data related to this account on the app only.</string>
|
||||
<string name="addNewAccount">New Account</string>
|
||||
<string name="addNewAccountText">Add New Account</string>
|
||||
<string name="accountAlreadyExistsError">Account already exists in the app</string>
|
||||
<string name="accountAddedMessage">Account added successfully</string>
|
||||
<string name="switchAccountSuccess">Switched to account : %1$s@%2$s</string>
|
||||
<string name="removeAccountPopupTitle">Supprimer le compte</string>
|
||||
<string name="removeAccountPopupMessage">Êtes-vous sûr de vouloir supprimer ce compte de l’application ?\n\nSeules les données de l’application seront supprimées.</string>
|
||||
<string name="addNewAccount">Nouveau compte</string>
|
||||
<string name="addNewAccountText">Ajouter un nouveau compte</string>
|
||||
<string name="accountAlreadyExistsError">Ce compte existe déjà dans l’application</string>
|
||||
<string name="accountAddedMessage">Compte ajouté</string>
|
||||
<string name="switchAccountSuccess">Passé au compte : %1$s@%2$s</string>
|
||||
<!-- Notifications -->
|
||||
<string name="pageTitleNotifications">Notifications</string>
|
||||
<string name="noDataNotifications">Aucune notification</string>
|
||||
@ -534,11 +535,46 @@
|
||||
<string name="notificationsPollingHeaderText">Délai de scrutation des notifications</string>
|
||||
<string name="pollingDelaySelectedText">%d minutes</string>
|
||||
<string name="pollingDelayDialogHeaderText">Délai de scrutation</string>
|
||||
<string name="pollingDelayDialogDescriptionText">Choose a minutely delay in which GitNex tries to poll new notifications</string>
|
||||
<string name="pollingDelayDialogDescriptionText">Choisissez un délai de scrutation où GitNex obtient les notifications</string>
|
||||
<string name="markAsRead">Marquer comme lu</string>
|
||||
<string name="markAsUnread">Marquer comme non lu</string>
|
||||
<string name="pinNotification">Épingler la notification</string>
|
||||
<string name="markedNotificationsAsRead">Successfully marked all notifications as read</string>
|
||||
<string name="markedNotificationsAsRead">Les notifications ont été marquées comme lues</string>
|
||||
<string name="isRead">Lu</string>
|
||||
<string name="isUnread">Non lu</string>
|
||||
<string name="repoSettingsTitle">Paramètres du dépôt</string>
|
||||
<string name="repoSettingsEditProperties">Modifier les propriétés</string>
|
||||
<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">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">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="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>
|
||||
|
@ -37,6 +37,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 +63,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 +72,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 +110,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 +423,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>
|
||||
@ -478,7 +479,7 @@ autorizzazione</string>
|
||||
<string name="sharePr">Condividi Pull Request</string>
|
||||
<string name="shareRepository">Condividi Repository</string>
|
||||
<string name="createRepository">Crea Repository</string>
|
||||
<string name="commitTitle">Commit del branch</string>
|
||||
<string name="commitTitle">Commits</string>
|
||||
<string name="commitCommittedBy">Commit di %1$s</string>
|
||||
<string name="viewCommits">Visualizza Commit</string>
|
||||
<!-- Memorizing Trust Manager -->
|
||||
@ -506,7 +507,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>
|
||||
@ -543,4 +544,39 @@ autorizzazione</string>
|
||||
<string name="markedNotificationsAsRead">Successfully marked all notifications as read</string>
|
||||
<string name="isRead">Letto</string>
|
||||
<string name="isUnread">Non letto</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="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="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>
|
||||
|