Merge remote-tracking branch 'remotes/main/master' into manrope

This commit is contained in:
opyale
2020-04-07 23:28:45 +02:00
38 changed files with 1492 additions and 852 deletions

View File

@ -60,6 +60,12 @@ public abstract class BaseActivity extends AppCompatActivity {
}
// enabling counter badges by default
if(tinyDb.getString("enableCounterBadgesInit").isEmpty()) {
tinyDb.putBoolean("enableCounterBadges", true);
tinyDb.putString("enableCounterBadgesInit", "yes");
}
}
protected abstract int getLayoutResourceId();

View File

@ -29,6 +29,7 @@ import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.Typeface;
import android.graphics.drawable.Drawable;
@ -95,6 +96,7 @@ public class IssueDetailActivity extends BaseActivity {
private HorizontalScrollView assigneesScrollView;
private ScrollView scrollViewComments;
private TextView issueModified;
private ImageView createNewComment;
final Context ctx = this;
private LinearLayout labelsLayout;
private LinearLayout assigneesLayout;
@ -132,6 +134,7 @@ public class IssueDetailActivity extends BaseActivity {
assigneesScrollView = findViewById(R.id.assigneesScrollView);
scrollViewComments = findViewById(R.id.scrollViewComments);
issueModified = findViewById(R.id.issueModified);
createNewComment = findViewById(R.id.addNewComment);
labelsLayout = findViewById(R.id.frameLabels);
assigneesLayout = findViewById(R.id.frameAssignees);
@ -147,10 +150,38 @@ public class IssueDetailActivity extends BaseActivity {
mRecyclerView.setNestedScrollingEnabled(false);
mRecyclerView.setLayoutManager(new LinearLayoutManager(getApplicationContext()));
DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(mRecyclerView.getContext(),
DividerItemDecoration.VERTICAL);
DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(mRecyclerView.getContext(), DividerItemDecoration.VERTICAL);
mRecyclerView.addItemDecoration(dividerItemDecoration);
createNewComment = findViewById(R.id.addNewComment);
createNewComment.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(ctx, ReplyToIssueActivity.class));
}
});
mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
if (dy > 0 && createNewComment.isShown()) {
createNewComment.setVisibility(View.GONE);
} else if (dy < 0) {
createNewComment.setVisibility(View.VISIBLE);
}
}
@Override
public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
}
});
swipeRefresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
@ -165,24 +196,24 @@ public class IssueDetailActivity extends BaseActivity {
});
Typeface myTypeface;
if(tinyDb.getInt("customFontId") == 0) {
myTypeface = Typeface.createFromAsset(Objects.requireNonNull(getApplicationContext()).getAssets(), "fonts/roboto.ttf");
switch(tinyDb.getInt("customFontId")) {
}
else if (tinyDb.getInt("customFontId") == 1) {
case 0:
myTypeface = Typeface.createFromAsset(Objects.requireNonNull(getApplicationContext()).getAssets(), "fonts/roboto.ttf");
break;
myTypeface = Typeface.createFromAsset(Objects.requireNonNull(getApplicationContext()).getAssets(), "fonts/manroperegular.ttf");
case 1:
myTypeface = Typeface.createFromAsset(Objects.requireNonNull(getApplicationContext()).getAssets(), "fonts/manroperegular.ttf");
break;
}
else if (tinyDb.getInt("customFontId") == 2) {
case 2:
myTypeface = Typeface.createFromAsset(Objects.requireNonNull(getApplicationContext()).getAssets(), "fonts/sourcecodeproregular.ttf");
break;
myTypeface = Typeface.createFromAsset(Objects.requireNonNull(getApplicationContext()).getAssets(), "fonts/sourcecodeproregular.ttf");
}
else {
myTypeface = Typeface.createFromAsset(Objects.requireNonNull(getApplicationContext()).getAssets(), "fonts/roboto.ttf");
default:
myTypeface = Typeface.createFromAsset(Objects.requireNonNull(getApplicationContext()).getAssets(), "fonts/roboto.ttf");
break;
}
@ -506,29 +537,11 @@ public class IssueDetailActivity extends BaseActivity {
issueDescription.setLayoutParams(paramsDesc);
}
switch (timeFormat) {
case "pretty": {
PrettyTime prettyTime = new PrettyTime(new Locale(locale));
String createdTime = prettyTime.format(singleIssue.getCreated_at());
issueCreatedTime.setText(createdTime);
issueCreatedTime.setVisibility(View.VISIBLE);
issueCreatedTime.setOnClickListener(new ClickListener(TimeHelper.customDateFormatForToastDateFormat(singleIssue.getCreated_at()), getApplicationContext()));
break;
}
case "normal": {
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd '" + getResources().getString(R.string.timeAtText) + "' HH:mm", new Locale(locale));
String createdTime = formatter.format(singleIssue.getCreated_at());
issueCreatedTime.setText(createdTime);
issueCreatedTime.setVisibility(View.VISIBLE);
break;
}
case "normal1": {
DateFormat formatter = new SimpleDateFormat("dd-MM-yyyy '" + getResources().getString(R.string.timeAtText) + "' HH:mm", new Locale(locale));
String createdTime = formatter.format(singleIssue.getCreated_at());
issueCreatedTime.setText(createdTime);
issueCreatedTime.setVisibility(View.VISIBLE);
break;
}
issueCreatedTime.setText(TimeHelper.formatTime(singleIssue.getCreated_at(), new Locale(locale), timeFormat, ctx));
issueCreatedTime.setVisibility(View.VISIBLE);
if(timeFormat.equals("pretty")) {
issueCreatedTime.setOnClickListener(new ClickListener(TimeHelper.customDateFormatForToastDateFormat(singleIssue.getCreated_at()), ctx));
}
if(singleIssue.getMilestone() != null) {

View File

@ -193,26 +193,10 @@ public class ClosedIssuesAdapter extends RecyclerView.Adapter<RecyclerView.ViewH
issueNumber.setText(String.valueOf(issuesModel.getNumber()));
issueCommentsCount.setText(String.valueOf(issuesModel.getComments()));
switch (timeFormat) {
case "pretty": {
PrettyTime prettyTime = new PrettyTime(new Locale(locale));
String createdTime = prettyTime.format(issuesModel.getCreated_at());
issueCreatedTime.setText(createdTime);
issueCreatedTime.setOnClickListener(new ClickListener(TimeHelper.customDateFormatForToastDateFormat(issuesModel.getCreated_at()), context));
break;
}
case "normal": {
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd '" + context.getResources().getString(R.string.timeAtText) + "' HH:mm", new Locale(locale));
String createdTime = formatter.format(issuesModel.getCreated_at());
issueCreatedTime.setText(createdTime);
break;
}
case "normal1": {
DateFormat formatter = new SimpleDateFormat("dd-MM-yyyy '" + context.getResources().getString(R.string.timeAtText) + "' HH:mm", new Locale(locale));
String createdTime = formatter.format(issuesModel.getCreated_at());
issueCreatedTime.setText(createdTime);
break;
}
issueCreatedTime.setText(TimeHelper.formatTime(issuesModel.getClosed_at(), new Locale(locale), timeFormat, context));
if(timeFormat.equals("pretty")) {
issueCreatedTime.setOnClickListener(new ClickListener(TimeHelper.customDateFormatForToastDateFormat(issuesModel.getClosed_at()), context));
}
}

View File

@ -23,6 +23,7 @@ import org.mian.gitnex.helpers.RoundedTransformation;
import org.mian.gitnex.util.TinyDB;
import org.mian.gitnex.helpers.ClickListener;
import org.ocpsoft.prettytime.PrettyTime;
import java.sql.Time;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Collection;
@ -261,30 +262,11 @@ public class IssueCommentsAdapter extends RecyclerView.Adapter<IssueCommentsAdap
}
switch(timeFormat) {
case "pretty": {
PrettyTime prettyTime = new PrettyTime(new Locale(locale));
String createdTime = prettyTime.format(currentItem.getCreated_at());
holder.issueCommentDate.setText(createdTime);
holder.issueCommentDate.setOnClickListener(new ClickListener(TimeHelper.customDateFormatForToastDateFormat(currentItem.getCreated_at()), mCtx));
break;
}
case "normal": {
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd '" + mCtx.getResources().getString(R.string.timeAtText) + "' HH:mm", new Locale(locale));
String createdTime = formatter.format(currentItem.getCreated_at());
holder.issueCommentDate.setText(createdTime);
break;
}
case "normal1": {
DateFormat formatter = new SimpleDateFormat("dd-MM-yyyy '" + mCtx.getResources().getString(R.string.timeAtText) + "' HH:mm", new Locale(locale));
String createdTime = formatter.format(currentItem.getCreated_at());
holder.issueCommentDate.setText(createdTime);
break;
}
holder.issueCommentDate.setText(TimeHelper.formatTime(currentItem.getCreated_date(), new Locale(locale), timeFormat, mCtx));
if(timeFormat.equals("pretty")) {
holder.issueCommentDate.setOnClickListener(new ClickListener(TimeHelper.customDateFormatForToastDateFormat(currentItem.getCreated_at()), mCtx));
}
}
@Override

View File

@ -189,26 +189,10 @@ public class IssuesAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
issueNumber.setText(String.valueOf(issuesModel.getNumber()));
issueCommentsCount.setText(String.valueOf(issuesModel.getComments()));
switch (timeFormat) {
case "pretty": {
PrettyTime prettyTime = new PrettyTime(new Locale(locale));
String createdTime = prettyTime.format(issuesModel.getCreated_at());
issueCreatedTime.setText(createdTime);
issueCreatedTime.setOnClickListener(new ClickListener(TimeHelper.customDateFormatForToastDateFormat(issuesModel.getCreated_at()), context));
break;
}
case "normal": {
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd '" + context.getResources().getString(R.string.timeAtText) + "' HH:mm", new Locale(locale));
String createdTime = formatter.format(issuesModel.getCreated_at());
issueCreatedTime.setText(createdTime);
break;
}
case "normal1": {
DateFormat formatter = new SimpleDateFormat("dd-MM-yyyy '" + context.getResources().getString(R.string.timeAtText) + "' HH:mm", new Locale(locale));
String createdTime = formatter.format(issuesModel.getCreated_at());
issueCreatedTime.setText(createdTime);
break;
}
issueCreatedTime.setText(TimeHelper.formatTime(issuesModel.getCreated_at(), new Locale(locale), timeFormat, context));
if(timeFormat.equals("pretty")) {
issueCreatedTime.setOnClickListener(new ClickListener(TimeHelper.customDateFormatForToastDateFormat(issuesModel.getCreated_at()), context));
}
}

View File

@ -181,26 +181,10 @@ public class PullRequestsAdapter extends RecyclerView.Adapter<RecyclerView.ViewH
prNumber.setText(String.valueOf(prModel.getNumber()));
prCommentsCount.setText(String.valueOf(prModel.getComments()));
switch (timeFormat) {
case "pretty": {
PrettyTime prettyTime = new PrettyTime(new Locale(locale));
String createdTime = prettyTime.format(prModel.getCreated_at());
prCreatedTime.setText(createdTime);
prCreatedTime.setOnClickListener(new ClickListener(TimeHelper.customDateFormatForToastDateFormat(prModel.getCreated_at()), context));
break;
}
case "normal": {
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd '" + context.getResources().getString(R.string.timeAtText) + "' HH:mm", new Locale(locale));
String createdTime = formatter.format(prModel.getCreated_at());
prCreatedTime.setText(createdTime);
break;
}
case "normal1": {
DateFormat formatter = new SimpleDateFormat("dd-MM-yyyy '" + context.getResources().getString(R.string.timeAtText) + "' HH:mm", new Locale(locale));
String createdTime = formatter.format(prModel.getCreated_at());
prCreatedTime.setText(createdTime);
break;
}
prCreatedTime.setText(TimeHelper.formatTime(prModel.getCreated_at(), new Locale(locale), timeFormat, context));
if(timeFormat.equals("pretty")) {
prCreatedTime.setOnClickListener(new ClickListener(TimeHelper.customDateFormatForToastDateFormat(prModel.getCreated_at()), context));
}
}

View File

@ -43,7 +43,6 @@ public class BottomSheetSingleIssueFragment extends BottomSheetDialogFragment {
final Context ctx = getContext();
final TinyDB tinyDB = new TinyDB(ctx);
TextView replyToIssue = v.findViewById(R.id.replyToIssue);
TextView editIssue = v.findViewById(R.id.editIssue);
TextView editLabels = v.findViewById(R.id.editLabels);
TextView closeIssue = v.findViewById(R.id.closeIssue);
@ -56,16 +55,6 @@ public class BottomSheetSingleIssueFragment extends BottomSheetDialogFragment {
TextView subscribeIssue = v.findViewById(R.id.subscribeIssue);
TextView unsubscribeIssue = v.findViewById(R.id.unsubscribeIssue);
replyToIssue.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(ctx, ReplyToIssueActivity.class));
dismiss();
}
});
if(tinyDB.getString("issueType").equals("pr")) {
editIssue.setText(R.string.editPrText);

View File

@ -100,18 +100,18 @@ public class MyRepositoriesFragment extends Fragment {
mRecyclerView.setHasFixedSize(true);
mRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(mRecyclerView.getContext(),
DividerItemDecoration.VERTICAL);
DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(mRecyclerView.getContext(), DividerItemDecoration.VERTICAL);
mRecyclerView.addItemDecoration(dividerItemDecoration);
createNewRepo = v.findViewById(R.id.addNewRepo);
createNewRepo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(view.getContext(), CreateRepoActivity.class);
startActivity(intent);
}
});
@ -119,12 +119,13 @@ public class MyRepositoriesFragment extends Fragment {
mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
if (dy > 0 && createNewRepo.isShown()) {
createNewRepo.setVisibility(View.GONE);
} else if (dy < 0 ) {
} else if (dy < 0) {
createNewRepo.setVisibility(View.VISIBLE);
}
}
@Override

View File

@ -6,6 +6,7 @@ import android.net.Uri;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.Fragment;
import io.noties.markwon.AbstractMarkwonPlugin;
import io.noties.markwon.Markwon;
@ -30,6 +31,7 @@ import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
@ -44,9 +46,6 @@ import org.mian.gitnex.helpers.Toasty;
import org.mian.gitnex.models.UserRepositories;
import org.mian.gitnex.util.AppUtil;
import org.mian.gitnex.util.TinyDB;
import org.ocpsoft.prettytime.PrettyTime;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.Collections;
import java.util.Locale;
@ -58,7 +57,7 @@ import java.util.Objects;
public class RepoInfoFragment extends Fragment {
private Context ctx = getContext();
private Context ctx;
private ProgressBar mProgressBar;
private LinearLayout pageContent;
private static String repoNameF = "param2";
@ -66,17 +65,17 @@ public class RepoInfoFragment extends Fragment {
private String repoName;
private String repoOwner;
private TextView repoNameInfo;
private TextView repoOwnerInfo;
private TextView repoDescriptionInfo;
private TextView repoWebsiteInfo;
private TextView repoSizeInfo;
private TextView repoDefaultBranchInfo;
private TextView repoSshUrlInfo;
private TextView repoCloneUrlInfo;
private TextView repoRepoUrlInfo;
private TextView repoForksCountInfo;
private TextView repoCreatedAtInfo;
private TextView repoMetaName;
private TextView repoMetaDescription;
private TextView repoMetaStars;
private TextView repoMetaPullRequests;
private LinearLayout repoMetaPullRequestsFrame;
private TextView repoMetaForks;
private TextView repoMetaSize;
private TextView repoMetaWatchers;
private TextView repoMetaCreatedAt;
private TextView repoMetaWebsite;
private Button repoAdditionalButton;
private TextView repoFileContents;
private LinearLayout repoMetaFrame;
private ImageView repoMetaDataExpandCollapse;
@ -120,21 +119,23 @@ public class RepoInfoFragment extends Fragment {
final String locale = tinyDb.getString("locale");
final String timeFormat = tinyDb.getString("dateFormat");
ctx = getActivity();
pageContent = v.findViewById(R.id.repoInfoLayout);
pageContent.setVisibility(View.GONE);
mProgressBar = v.findViewById(R.id.progress_bar);
repoNameInfo = v.findViewById(R.id.repoNameInfo);
repoOwnerInfo = v.findViewById(R.id.repoOwnerInfo);
repoDescriptionInfo = v.findViewById(R.id.repoDescriptionInfo);
repoWebsiteInfo = v.findViewById(R.id.repoWebsiteInfo);
repoSizeInfo = v.findViewById(R.id.repoSizeInfo);
repoDefaultBranchInfo = v.findViewById(R.id.repoDefaultBranchInfo);
repoSshUrlInfo = v.findViewById(R.id.repoSshUrlInfo);
repoCloneUrlInfo = v.findViewById(R.id.repoCloneUrlInfo);
repoRepoUrlInfo = v.findViewById(R.id.repoRepoUrlInfo);
repoForksCountInfo = v.findViewById(R.id.repoForksCountInfo);
repoCreatedAtInfo = v.findViewById(R.id.repoCreatedAtInfo);
repoMetaName = v.findViewById(R.id.repoMetaName);
repoMetaDescription = v.findViewById(R.id.repoMetaDescription);
repoMetaStars = v.findViewById(R.id.repoMetaStars);
repoMetaPullRequests = v.findViewById(R.id.repoMetaPullRequests);
repoMetaPullRequestsFrame = v.findViewById(R.id.repoMetaPullRequestsFrame);
repoMetaForks = v.findViewById(R.id.repoMetaForks);
repoMetaSize = v.findViewById(R.id.repoMetaSize);
repoMetaWatchers = v.findViewById(R.id.repoMetaWatchers);
repoMetaCreatedAt = v.findViewById(R.id.repoMetaCreatedAt);
repoMetaWebsite = v.findViewById(R.id.repoMetaWebsite);
repoAdditionalButton = v.findViewById(R.id.repoAdditionalButton);
repoFileContents = v.findViewById(R.id.repoFileContents);
repoMetaFrame = v.findViewById(R.id.repoMetaFrame);
LinearLayout repoMetaFrameHeader = v.findViewById(R.id.repoMetaFrameHeader);
@ -148,15 +149,23 @@ public class RepoInfoFragment extends Fragment {
getRepoInfo(instanceUrl, Authorization.returnAuthentication(getContext(), loginUid, instanceToken), repoOwner, repoName, locale, timeFormat);
getFileContents(instanceUrl, Authorization.returnAuthentication(getContext(), loginUid, instanceToken), repoOwner, repoName, getResources().getString(R.string.defaultFilename));
if(isExpandViewVisible()) {
toggleExpandView();
}
if(!isExpandViewMetaVisible()) {
toggleExpandViewMeta();
}
fileContentsFrameHeader.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
collapseExpandView();
toggleExpandView();
}
});
repoMetaFrameHeader.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
collapseExpandViewMeta();
toggleExpandViewMeta();
}
});
@ -179,7 +188,7 @@ public class RepoInfoFragment extends Fragment {
void onFragmentInteraction(Uri uri);
}
private void collapseExpandView() {
private void toggleExpandView() {
if (repoFileContents.getVisibility() == View.GONE) {
repoFilenameExpandCollapse.setImageResource(R.drawable.ic_arrow_up);
@ -193,10 +202,14 @@ public class RepoInfoFragment extends Fragment {
//Animation slide_up = AnimationUtils.loadAnimation(getContext(), R.anim.slide_up);
//fileContentsFrame.startAnimation(slide_up);
}
}
private void collapseExpandViewMeta() {
private boolean isExpandViewVisible() {
return repoFileContents.getVisibility() == View.VISIBLE;
}
private void toggleExpandViewMeta() {
if (repoMetaFrame.getVisibility() == View.GONE) {
repoMetaDataExpandCollapse.setImageResource(R.drawable.ic_arrow_up);
repoMetaFrame.setVisibility(View.VISIBLE);
@ -209,9 +222,12 @@ public class RepoInfoFragment extends Fragment {
//Animation slide_up = AnimationUtils.loadAnimation(getContext(), R.anim.slide_up);
//repoMetaFrame.startAnimation(slide_up);
}
}
private boolean isExpandViewMetaVisible() {
return repoMetaFrame.getVisibility() == View.VISIBLE;
}
private void getRepoInfo(String instanceUrl, String token, final String owner, String repo, final String locale, final String timeFormat) {
final TinyDB tinyDb = new TinyDB(getContext());
@ -235,16 +251,64 @@ public class RepoInfoFragment extends Fragment {
if (response.code() == 200) {
assert repoInfo != null;
repoNameInfo.setText(repoInfo.getName());
repoOwnerInfo.setText(owner);
repoDescriptionInfo.setText(repoInfo.getDescription());
repoWebsiteInfo.setText(repoInfo.getWebsite());
repoSizeInfo.setText(AppUtil.formatFileSize(repoInfo.getSize()));
repoDefaultBranchInfo.setText(repoInfo.getDefault_branch());
repoSshUrlInfo.setText(repoInfo.getSsh_url());
repoCloneUrlInfo.setText(repoInfo.getClone_url());
repoRepoUrlInfo.setText(repoInfo.getHtml_url());
repoForksCountInfo.setText(repoInfo.getForks_count());
repoMetaName.setText(repoInfo.getName());
repoMetaDescription.setText(repoInfo.getDescription());
repoMetaStars.setText(repoInfo.getStars_count());
if(repoInfo.getOpen_pull_count() != null) {
repoMetaPullRequests.setText(repoInfo.getOpen_pull_count());
}
else {
repoMetaPullRequestsFrame.setVisibility(View.GONE);
}
repoMetaForks.setText(repoInfo.getForks_count());
repoMetaWatchers.setText(repoInfo.getWatchers_count());
if(repoInfo.getSize() != 0) {
repoMetaSize.setText(AppUtil.formatFileSize(repoInfo.getSize()));
}
else {
repoMetaSize.setText("0");
}
repoMetaCreatedAt.setText(TimeHelper.formatTime(repoInfo.getCreated_at(), new Locale(locale), timeFormat, ctx));
if(timeFormat.equals("pretty")) {
repoMetaCreatedAt.setOnClickListener(new ClickListener(TimeHelper.customDateFormatForToastDateFormat(repoInfo.getCreated_at()), ctx));
}
String repoMetaUpdatedAt = TimeHelper.formatTime(repoInfo.getUpdated_at(), new Locale(locale), timeFormat, ctx);
String website = (repoInfo.getWebsite().isEmpty()) ? getResources().getString(R.string.noDataWebsite) : repoInfo.getWebsite();
repoMetaWebsite.setText(website);
repoAdditionalButton.setOnClickListener(v -> {
StringBuilder message = new StringBuilder();
message.append(getResources().getString(R.string.infoTabRepoDefaultBranch))
.append(" :\n").append(repoInfo.getDefault_branch()).append("\n\n");
message.append(getResources().getString(R.string.infoTabRepoUpdatedAt))
.append(" :\n").append(repoMetaUpdatedAt).append("\n\n");
message.append(getResources().getString(R.string.infoTabRepoSshUrl))
.append(" :\n").append(repoInfo.getSsh_url()).append("\n\n");
message.append(getResources().getString(R.string.infoTabRepoCloneUrl))
.append(" :\n").append(repoInfo.getClone_url()).append("\n\n");
message.append(getResources().getString(R.string.infoTabRepoRepoUrl))
.append(" :\n").append(repoInfo.getHtml_url());
AlertDialog.Builder alertDialog = new AlertDialog.Builder(ctx);
alertDialog.setTitle(getResources().getString(R.string.infoMoreInformation));
alertDialog.setMessage(message);
alertDialog.setPositiveButton(getResources().getString(R.string.close), (dialog, which) -> dialog.dismiss());
alertDialog.create().show();
});
if(repoInfo.getHas_issues() != null) {
tinyDb.putBoolean("hasIssues", repoInfo.getHas_issues());
@ -253,28 +317,6 @@ public class RepoInfoFragment extends Fragment {
tinyDb.putBoolean("hasIssues", true);
}
switch (timeFormat) {
case "pretty": {
PrettyTime prettyTime = new PrettyTime(new Locale(locale));
String createdTime = prettyTime.format(repoInfo.getCreated_at());
repoCreatedAtInfo.setText(createdTime);
repoCreatedAtInfo.setOnClickListener(new ClickListener(TimeHelper.customDateFormatForToastDateFormat(repoInfo.getCreated_at()), getContext()));
break;
}
case "normal": {
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd '" + getResources().getString(R.string.timeAtText) + "' HH:mm", new Locale(locale));
String createdTime = formatter.format(repoInfo.getCreated_at());
repoCreatedAtInfo.setText(createdTime);
break;
}
case "normal1": {
DateFormat formatter = new SimpleDateFormat("dd-MM-yyyy '" + getResources().getString(R.string.timeAtText) + "' HH:mm", new Locale(locale));
String createdTime = formatter.format(repoInfo.getCreated_at());
repoCreatedAtInfo.setText(createdTime);
break;
}
}
mProgressBar.setVisibility(View.GONE);
pageContent.setVisibility(View.VISIBLE);
@ -373,13 +415,14 @@ public class RepoInfoFragment extends Fragment {
.build();
Spanned bodyWithMD = null;
if (response.body() != null) {
bodyWithMD = markwon.toMarkdown(response.body());
}
assert bodyWithMD != null;
markwon.setParsedMarkdown(repoFileContents, bodyWithMD);
} else if (response.code() == 401) {
AlertDialogs.authorizationTokenRevokedDialog(ctx, getResources().getString(R.string.alertDialogTokenRevokedTitle),

View File

@ -1,7 +1,6 @@
package org.mian.gitnex.fragments;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
@ -11,16 +10,16 @@ import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.Switch;
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.MainActivity;
import org.mian.gitnex.helpers.Toasty;
import org.mian.gitnex.helpers.ssl.MemorizingTrustManager;
import org.mian.gitnex.util.TinyDB;
import java.util.Objects;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.Fragment;
/**
* Author M M Arif
@ -28,453 +27,452 @@ import androidx.fragment.app.Fragment;
public class SettingsFragment extends Fragment {
private Context ctx = null;
private Context ctx = null;
private static String[] langList = {"Arabic", "Chinese", "English", "Finnish", "French", "German", "Italian", "Latvian", "Persian", "Portuguese/Brazilian", "Russian", "Serbian", "Spanish", "Turkish", "Ukrainian"};
private static int langSelectedChoice = 0;
private static String[] langList = {"Arabic", "Chinese", "English", "Finnish", "French", "German", "Italian", "Latvian", "Persian", "Polish", "Portuguese/Brazilian", "Russian", "Serbian", "Spanish", "Turkish", "Ukrainian"};
private static int langSelectedChoice = 0;
private static String[] timeList = {"Pretty", "Normal"};
private static int timeSelectedChoice = 0;
private static String[] timeList = {"Pretty", "Normal"};
private static int timeSelectedChoice = 0;
private static String[] codeBlockList = {"Green - Black", "White - Black", "Grey - Black", "White - Grey", "Dark - White"};
private static int codeBlockSelectedChoice = 0;
private static String[] codeBlockList = {"Green - Black", "White - Black", "Grey - Black", "White - Grey", "Dark - White"};
private static int codeBlockSelectedChoice = 0;
private static String[] homeScreenList = {"My Repositories", "Starred Repositories", "Organizations", "Repositories", "Profile"};
private static int homeScreenSelectedChoice = 0;
private static String[] homeScreenList = {"My Repositories", "Starred Repositories", "Organizations", "Repositories", "Profile"};
private static int homeScreenSelectedChoice = 0;
private static String[] customFontList = {"Roboto", "Manrope", "Source Code Pro"};
private static int customFontSelectedChoice = 0;
private static String[] customFontList = {"Roboto", "Manrope", "Source Code Pro"};
private static int customFontSelectedChoice = 0;
private static String[] themeList = {"Dark", "Light"};
private static int themeSelectedChoice = 0;
private static String[] themeList = {"Dark", "Light"};
private static int themeSelectedChoice = 0;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_settings, container, false);
final TinyDB tinyDb = new TinyDB(getContext());
View v = inflater.inflate(R.layout.fragment_settings, container, false);
final TinyDB tinyDb = new TinyDB(getContext());
final TextView tvLanguageSelected = v.findViewById(R.id.tvLanguageSelected); // setter for en, fr
final TextView tvDateTimeSelected = v.findViewById(R.id.tvDateTimeSelected); // setter for time
final TextView codeBlockSelected = v.findViewById(R.id.codeBlockSelected); // setter for code block
final TextView homeScreenSelected = v.findViewById(R.id.homeScreenSelected); // setter for home screen
final TextView customFontSelected = v.findViewById(R.id.customFontSelected); // setter for custom font
final TextView themeSelected = v.findViewById(R.id.themeSelected); // setter for theme
final TextView tvLanguageSelected = v.findViewById(R.id.tvLanguageSelected); // setter for en, fr
final TextView tvDateTimeSelected = v.findViewById(R.id.tvDateTimeSelected); // setter for time
final TextView codeBlockSelected = v.findViewById(R.id.codeBlockSelected); // setter for code block
final TextView homeScreenSelected = v.findViewById(R.id.homeScreenSelected); // setter for home screen
final TextView customFontSelected = v.findViewById(R.id.customFontSelected); // setter for custom font
final TextView themeSelected = v.findViewById(R.id.themeSelected); // setter for theme
LinearLayout langFrame = v.findViewById(R.id.langFrame);
LinearLayout timeFrame = v.findViewById(R.id.timeFrame);
LinearLayout codeBlockFrame = v.findViewById(R.id.codeBlockFrame);
LinearLayout homeScreenFrame = v.findViewById(R.id.homeScreenFrame);
LinearLayout customFontFrame = v.findViewById(R.id.customFontFrame);
LinearLayout themeFrame = v.findViewById(R.id.themeSelectionFrame);
LinearLayout certsFrame = v.findViewById(R.id.certsFrame);
LinearLayout langFrame = v.findViewById(R.id.langFrame);
LinearLayout timeFrame = v.findViewById(R.id.timeFrame);
LinearLayout codeBlockFrame = v.findViewById(R.id.codeBlockFrame);
LinearLayout homeScreenFrame = v.findViewById(R.id.homeScreenFrame);
LinearLayout customFontFrame = v.findViewById(R.id.customFontFrame);
LinearLayout themeFrame = v.findViewById(R.id.themeSelectionFrame);
LinearLayout certsFrame = v.findViewById(R.id.certsFrame);
Switch counterBadgesSwitch = v.findViewById(R.id.switchCounterBadge);
Switch pdfModeSwitch = v.findViewById(R.id.switchPdfMode);
TextView helpTranslate = v.findViewById(R.id.helpTranslate);
Switch counterBadgesSwitch = v.findViewById(R.id.switchCounterBadge);
Switch pdfModeSwitch = v.findViewById(R.id.switchPdfMode);
TextView helpTranslate = v.findViewById(R.id.helpTranslate);
helpTranslate.setOnClickListener(v12 -> {
helpTranslate.setOnClickListener(v12 -> {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.addCategory(Intent.CATEGORY_BROWSABLE);
intent.setData(Uri.parse(getResources().getString(R.string.crowdInLink)));
startActivity(intent);
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.addCategory(Intent.CATEGORY_BROWSABLE);
intent.setData(Uri.parse(getResources().getString(R.string.crowdInLink)));
startActivity(intent);
});
});
if(!tinyDb.getString("localeStr").isEmpty()) {
tvLanguageSelected.setText(tinyDb.getString("localeStr"));
}
if(!tinyDb.getString("localeStr").isEmpty()) {
tvLanguageSelected.setText(tinyDb.getString("localeStr"));
}
if(!tinyDb.getString("timeStr").isEmpty()) {
tvDateTimeSelected.setText(tinyDb.getString("timeStr"));
}
if(!tinyDb.getString("timeStr").isEmpty()) {
tvDateTimeSelected.setText(tinyDb.getString("timeStr"));
}
if(!tinyDb.getString("codeBlockStr").isEmpty()) {
codeBlockSelected.setText(tinyDb.getString("codeBlockStr"));
}
if(!tinyDb.getString("codeBlockStr").isEmpty()) {
codeBlockSelected.setText(tinyDb.getString("codeBlockStr"));
}
if(!tinyDb.getString("homeScreenStr").isEmpty()) {
homeScreenSelected.setText(tinyDb.getString("homeScreenStr"));
}
if(!tinyDb.getString("homeScreenStr").isEmpty()) {
homeScreenSelected.setText(tinyDb.getString("homeScreenStr"));
}
if(!tinyDb.getString("customFontStr").isEmpty()) {
customFontSelected.setText(tinyDb.getString("customFontStr"));
}
if(!tinyDb.getString("themeStr").isEmpty()) {
themeSelected.setText(tinyDb.getString("themeStr"));
}
if(!tinyDb.getString("themeStr").isEmpty()) {
themeSelected.setText(tinyDb.getString("themeStr"));
}
if(langSelectedChoice == 0) {
langSelectedChoice = tinyDb.getInt("langId");
}
if(langSelectedChoice == 0) {
langSelectedChoice = tinyDb.getInt("langId");
}
if(timeSelectedChoice == 0) {
timeSelectedChoice = tinyDb.getInt("timeId");
}
if(timeSelectedChoice == 0) {
timeSelectedChoice = tinyDb.getInt("timeId");
}
if(codeBlockSelectedChoice == 0) {
codeBlockSelectedChoice = tinyDb.getInt("codeBlockId");
}
if(codeBlockSelectedChoice == 0) {
codeBlockSelectedChoice = tinyDb.getInt("codeBlockId");
}
if(homeScreenSelectedChoice == 0) {
homeScreenSelectedChoice = tinyDb.getInt("homeScreenId");
}
if(homeScreenSelectedChoice == 0) {
homeScreenSelectedChoice = tinyDb.getInt("homeScreenId");
}
if(customFontSelectedChoice == 0) {
customFontSelectedChoice = tinyDb.getInt("customFontId");
}
if(customFontSelectedChoice == 0) {
customFontSelectedChoice = tinyDb.getInt("customFontId");
}
if(themeSelectedChoice == 0) {
themeSelectedChoice = tinyDb.getInt("themeId");
}
if(themeSelectedChoice == 0) {
themeSelectedChoice = tinyDb.getInt("themeId");
}
if(tinyDb.getBoolean("enableCounterBadges")) {
counterBadgesSwitch.setChecked(true);
}
else {
counterBadgesSwitch.setChecked(false);
}
if(tinyDb.getBoolean("enableCounterBadges")) {
counterBadgesSwitch.setChecked(true);
}
else {
counterBadgesSwitch.setChecked(false);
}
if(tinyDb.getBoolean("enablePdfMode")) {
pdfModeSwitch.setChecked(true);
}
else {
pdfModeSwitch.setChecked(false);
}
if(tinyDb.getBoolean("enablePdfMode")) {
pdfModeSwitch.setChecked(true);
}
else {
pdfModeSwitch.setChecked(false);
}
// certs deletion
certsFrame.setOnClickListener(v1 -> {
// certs deletion
certsFrame.setOnClickListener(v1 -> {
AlertDialog.Builder builder = new AlertDialog.Builder(ctx);
builder.setTitle(getResources().getString(R.string.settingsCertsPopupTitle));
builder.setMessage(getResources().getString(R.string.settingsCertsPopupMessage));
builder.setPositiveButton(R.string.menuDeleteText, (dialog, which) -> {
AlertDialog.Builder builder = new AlertDialog.Builder(ctx);
builder.setTitle(getResources().getString(R.string.settingsCertsPopupTitle));
builder.setMessage(getResources().getString(R.string.settingsCertsPopupMessage));
builder.setPositiveButton(R.string.menuDeleteText, (dialog, which) -> {
ctx.getSharedPreferences(MemorizingTrustManager.KEYSTORE_NAME, Context.MODE_PRIVATE)
.edit()
.remove(MemorizingTrustManager.KEYSTORE_KEY)
.apply();
ctx.getSharedPreferences(MemorizingTrustManager.KEYSTORE_NAME, Context.MODE_PRIVATE).edit().remove(MemorizingTrustManager.KEYSTORE_KEY).apply();
MainActivity.logout(Objects.requireNonNull(getActivity()), ctx);
MainActivity.logout(Objects.requireNonNull(getActivity()), ctx);
});
});
builder.setNeutralButton(R.string.cancelButton, (dialog, which) -> dialog.dismiss());
builder.create().show();
builder.setNeutralButton(R.string.cancelButton, (dialog, which) -> dialog.dismiss());
builder.create().show();
});
});
// counter badge switcher
counterBadgesSwitch.setOnCheckedChangeListener((buttonView, isChecked) -> {
// counter badge switcher
counterBadgesSwitch.setOnCheckedChangeListener((buttonView, isChecked) -> {
if (isChecked) {
tinyDb.putBoolean("enableCounterBadges", true);
tinyDb.putString("enableCounterBadgesInit", "yes");
Toasty.info(getContext(), getResources().getString(R.string.settingsSave));
}
else {
tinyDb.putBoolean("enableCounterBadges", false);
tinyDb.putString("enableCounterBadgesInit", "yes");
Toasty.info(getContext(), getResources().getString(R.string.settingsSave));
}
});
});
// pdf night mode switcher
pdfModeSwitch.setOnCheckedChangeListener((buttonView, isChecked) -> {
// pdf night mode switcher
pdfModeSwitch.setOnCheckedChangeListener((buttonView, isChecked) -> {
if (isChecked) {
tinyDb.putBoolean("enablePdfMode", true);
tinyDb.putString("enablePdfModeInit", "yes");
Toasty.info(getContext(), getResources().getString(R.string.settingsSave));
}
else {
tinyDb.putBoolean("enablePdfMode", false);
tinyDb.putString("enablePdfModeInit", "yes");
Toasty.info(getContext(), getResources().getString(R.string.settingsSave));
}
if(isChecked) {
tinyDb.putBoolean("enablePdfMode", true);
tinyDb.putString("enablePdfModeInit", "yes");
Toasty.info(getContext(), getResources().getString(R.string.settingsSave));
}
else {
tinyDb.putBoolean("enablePdfMode", false);
tinyDb.putString("enablePdfModeInit", "yes");
Toasty.info(getContext(), getResources().getString(R.string.settingsSave));
}
});
});
// theme selection dialog
themeFrame.setOnClickListener(view -> {
// theme selection dialog
themeFrame.setOnClickListener(view -> {
AlertDialog.Builder tsBuilder = new AlertDialog.Builder(ctx);
AlertDialog.Builder tsBuilder = new AlertDialog.Builder(ctx);
tsBuilder.setTitle(R.string.themeSelectorDialogTitle);
if(themeSelectedChoice != -1) {
tsBuilder.setCancelable(true);
}
else {
tsBuilder.setCancelable(false);
}
tsBuilder.setTitle(R.string.themeSelectorDialogTitle);
if(themeSelectedChoice != -1) {
tsBuilder.setCancelable(true);
}
else {
tsBuilder.setCancelable(false);
}
tsBuilder.setSingleChoiceItems(themeList, themeSelectedChoice, (dialogInterfaceTheme, i) -> {
tsBuilder.setSingleChoiceItems(themeList, themeSelectedChoice, (dialogInterfaceTheme, i) -> {
themeSelectedChoice = i;
themeSelected.setText(themeList[i]);
tinyDb.putString("themeStr", themeList[i]);
tinyDb.putInt("themeId", i);
themeSelectedChoice = i;
themeSelected.setText(themeList[i]);
tinyDb.putString("themeStr", themeList[i]);
tinyDb.putInt("themeId", i);
Objects.requireNonNull(getActivity()).recreate();
getActivity().overridePendingTransition(0, 0);
dialogInterfaceTheme.dismiss();
Toasty.info(getContext(), getResources().getString(R.string.settingsSave));
Objects.requireNonNull(getActivity()).recreate();
getActivity().overridePendingTransition(0, 0);
dialogInterfaceTheme.dismiss();
Toasty.info(getContext(), getResources().getString(R.string.settingsSave));
});
});
AlertDialog cfDialog = tsBuilder.create();
cfDialog.show();
});
// custom font dialog
customFontFrame.setOnClickListener(view -> {
AlertDialog.Builder cfBuilder = new AlertDialog.Builder(ctx);
cfBuilder.setTitle(R.string.settingsCustomFontSelectorDialogTitle);
if(customFontSelectedChoice != -1) {
cfBuilder.setCancelable(true);
}
else {
cfBuilder.setCancelable(false);
}
AlertDialog cfDialog = tsBuilder.create();
cfDialog.show();
});
// custom font dialog
customFontFrame.setOnClickListener(view -> {
AlertDialog.Builder cfBuilder = new AlertDialog.Builder(ctx);
cfBuilder.setTitle(R.string.settingsCustomFontSelectorDialogTitle);
if(customFontSelectedChoice != -1) {
cfBuilder.setCancelable(true);
}
else {
cfBuilder.setCancelable(false);
}
cfBuilder.setSingleChoiceItems(customFontList, customFontSelectedChoice, (dialogInterfaceCustomFont, i) -> {
cfBuilder.setSingleChoiceItems(customFontList, customFontSelectedChoice, (dialogInterfaceCustomFont, i) -> {
customFontSelectedChoice = i;
customFontSelected.setText(customFontList[i]);
tinyDb.putString("customFontStr", customFontList[i]);
tinyDb.putInt("customFontId", i);
customFontSelectedChoice = i;
customFontSelected.setText(customFontList[i]);
tinyDb.putString("customFontStr", customFontList[i]);
tinyDb.putInt("customFontId", i);
Objects.requireNonNull(getActivity()).recreate();
getActivity().overridePendingTransition(0, 0);
dialogInterfaceCustomFont.dismiss();
Toasty.info(getContext(), getResources().getString(R.string.settingsSave));
Objects.requireNonNull(getActivity()).recreate();
getActivity().overridePendingTransition(0, 0);
dialogInterfaceCustomFont.dismiss();
Toasty.info(getContext(), getResources().getString(R.string.settingsSave));
});
AlertDialog cfDialog = cfBuilder.create();
cfDialog.show();
});
AlertDialog cfDialog = cfBuilder.create();
cfDialog.show();
});
});
// home screen dialog
homeScreenFrame.setOnClickListener(view -> {
// home screen dialog
homeScreenFrame.setOnClickListener(view -> {
AlertDialog.Builder hsBuilder = new AlertDialog.Builder(ctx);
AlertDialog.Builder hsBuilder = new AlertDialog.Builder(ctx);
hsBuilder.setTitle(R.string.settingshomeScreenSelectorDialogTitle);
if(homeScreenSelectedChoice != -1) {
hsBuilder.setCancelable(true);
}
else {
hsBuilder.setCancelable(false);
}
hsBuilder.setSingleChoiceItems(homeScreenList, homeScreenSelectedChoice, (dialogInterfaceHomeScreen, i) -> {
homeScreenSelectedChoice = i;
homeScreenSelected.setText(homeScreenList[i]);
tinyDb.putString("homeScreenStr", homeScreenList[i]);
tinyDb.putInt("homeScreenId", i);
dialogInterfaceHomeScreen.dismiss();
Toasty.info(getContext(), getResources().getString(R.string.settingsSave));
});
AlertDialog hsDialog = hsBuilder.create();
hsDialog.show();
});
// code block dialog
codeBlockFrame.setOnClickListener(view -> {
AlertDialog.Builder cBuilder = new AlertDialog.Builder(ctx);
cBuilder.setTitle(R.string.settingsCodeBlockSelectorDialogTitle);
if(codeBlockSelectedChoice != -1) {
cBuilder.setCancelable(true);
}
else {
cBuilder.setCancelable(false);
}
cBuilder.setSingleChoiceItems(codeBlockList, codeBlockSelectedChoice, (dialogInterfaceCodeBlock, i) -> {
codeBlockSelectedChoice = i;
codeBlockSelected.setText(codeBlockList[i]);
tinyDb.putString("codeBlockStr", codeBlockList[i]);
tinyDb.putInt("codeBlockId", i);
switch (codeBlockList[i]) {
case "White - Black":
tinyDb.putInt("codeBlockColor", getResources().getColor(R.color.white));
tinyDb.putInt("codeBlockBackground", getResources().getColor(R.color.black));
break;
case "Grey - Black":
tinyDb.putInt("codeBlockColor", getResources().getColor(R.color.colorAccent));
tinyDb.putInt("codeBlockBackground", getResources().getColor(R.color.black));
break;
case "White - Grey":
tinyDb.putInt("codeBlockColor", getResources().getColor(R.color.white));
tinyDb.putInt("codeBlockBackground", getResources().getColor(R.color.colorAccent));
break;
case "Dark - White":
tinyDb.putInt("codeBlockColor", getResources().getColor(R.color.colorPrimary));
tinyDb.putInt("codeBlockBackground", getResources().getColor(R.color.white));
break;
default:
tinyDb.putInt("codeBlockColor", getResources().getColor(R.color.colorLightGreen));
tinyDb.putInt("codeBlockBackground", getResources().getColor(R.color.black));
break;
}
dialogInterfaceCodeBlock.dismiss();
Toasty.info(getContext(), getResources().getString(R.string.settingsSave));
});
AlertDialog cDialog = cBuilder.create();
cDialog.show();
});
// language dialog
langFrame.setOnClickListener(view -> {
AlertDialog.Builder lBuilder = new AlertDialog.Builder(ctx);
lBuilder.setTitle(R.string.settingsLanguageSelectorDialogTitle);
if(langSelectedChoice != -1) {
lBuilder.setCancelable(true);
}
else {
lBuilder.setCancelable(false);
}
lBuilder.setSingleChoiceItems(langList, langSelectedChoice, (dialogInterface, i) -> {
langSelectedChoice = i;
tvLanguageSelected.setText(langList[i]);
tinyDb.putString("localeStr", langList[i]);
tinyDb.putInt("langId", i);
switch (langList[i]) {
case "Arabic":
tinyDb.putString("locale", "ar");
break;
case "Chinese":
tinyDb.putString("locale", "zh");
break;
case "Finnish":
tinyDb.putString("locale", "fi");
break;
case "French":
tinyDb.putString("locale", "fr");
break;
case "German":
tinyDb.putString("locale", "de");
break;
case "Italian":
tinyDb.putString("locale", "it");
break;
case "Latvian":
tinyDb.putString("locale", "lv");
break;
case "Persian":
tinyDb.putString("locale", "fa");
break;
case "Portuguese/Brazilian":
tinyDb.putString("locale", "pt");
break;
case "Russian":
tinyDb.putString("locale", "ru");
break;
case "Serbian":
tinyDb.putString("locale", "sr");
break;
case "Spanish":
tinyDb.putString("locale", "es");
break;
case "Turkish":
tinyDb.putString("locale", "tr");
break;
case "Ukrainian":
tinyDb.putString("locale", "uk");
break;
default:
tinyDb.putString("locale", "en");
break;
}
dialogInterface.dismiss();
Toasty.info(getContext(), getResources().getString(R.string.settingsSave));
Objects.requireNonNull(getActivity()).recreate();
getActivity().overridePendingTransition(0, 0);
});
lBuilder.setNegativeButton(getString(R.string.cancelButton), (dialog, which) -> dialog.dismiss());
AlertDialog lDialog = lBuilder.create();
lDialog.show();
});
// time n date dialog
timeFrame.setOnClickListener(view -> {
AlertDialog.Builder tBuilder = new AlertDialog.Builder(ctx);
tBuilder.setTitle(R.string.settingsTimeSelectorDialogTitle);
if(timeSelectedChoice != -1) {
tBuilder.setCancelable(true);
}
else {
tBuilder.setCancelable(false);
}
tBuilder.setSingleChoiceItems(timeList, timeSelectedChoice, (dialogInterfaceTime, i) -> {
timeSelectedChoice = i;
tvDateTimeSelected.setText(timeList[i]);
tinyDb.putString("timeStr", timeList[i]);
tinyDb.putInt("timeId", i);
if ("Normal".equals(timeList[i])) {
tinyDb.putString("dateFormat", "normal");
} else {
tinyDb.putString("dateFormat", "pretty");
}
dialogInterfaceTime.dismiss();
Toasty.info(getContext(), getResources().getString(R.string.settingsSave));
});
AlertDialog tDialog = tBuilder.create();
tDialog.show();
});
return v;
}
@Override
public void onAttach(@NonNull Context context) {
super.onAttach(context);
ctx = context;
}
hsBuilder.setTitle(R.string.settingshomeScreenSelectorDialogTitle);
if(homeScreenSelectedChoice != -1) {
hsBuilder.setCancelable(true);
}
else {
hsBuilder.setCancelable(false);
}
hsBuilder.setSingleChoiceItems(homeScreenList, homeScreenSelectedChoice, (dialogInterfaceHomeScreen, i) -> {
homeScreenSelectedChoice = i;
homeScreenSelected.setText(homeScreenList[i]);
tinyDb.putString("homeScreenStr", homeScreenList[i]);
tinyDb.putInt("homeScreenId", i);
dialogInterfaceHomeScreen.dismiss();
Toasty.info(getContext(), getResources().getString(R.string.settingsSave));
});
AlertDialog hsDialog = hsBuilder.create();
hsDialog.show();
});
// code block dialog
codeBlockFrame.setOnClickListener(view -> {
AlertDialog.Builder cBuilder = new AlertDialog.Builder(ctx);
cBuilder.setTitle(R.string.settingsCodeBlockSelectorDialogTitle);
if(codeBlockSelectedChoice != -1) {
cBuilder.setCancelable(true);
}
else {
cBuilder.setCancelable(false);
}
cBuilder.setSingleChoiceItems(codeBlockList, codeBlockSelectedChoice, (dialogInterfaceCodeBlock, i) -> {
codeBlockSelectedChoice = i;
codeBlockSelected.setText(codeBlockList[i]);
tinyDb.putString("codeBlockStr", codeBlockList[i]);
tinyDb.putInt("codeBlockId", i);
switch(codeBlockList[i]) {
case "White - Black":
tinyDb.putInt("codeBlockColor", getResources().getColor(R.color.white));
tinyDb.putInt("codeBlockBackground", getResources().getColor(R.color.black));
break;
case "Grey - Black":
tinyDb.putInt("codeBlockColor", getResources().getColor(R.color.colorAccent));
tinyDb.putInt("codeBlockBackground", getResources().getColor(R.color.black));
break;
case "White - Grey":
tinyDb.putInt("codeBlockColor", getResources().getColor(R.color.white));
tinyDb.putInt("codeBlockBackground", getResources().getColor(R.color.colorAccent));
break;
case "Dark - White":
tinyDb.putInt("codeBlockColor", getResources().getColor(R.color.colorPrimary));
tinyDb.putInt("codeBlockBackground", getResources().getColor(R.color.white));
break;
default:
tinyDb.putInt("codeBlockColor", getResources().getColor(R.color.colorLightGreen));
tinyDb.putInt("codeBlockBackground", getResources().getColor(R.color.black));
break;
}
dialogInterfaceCodeBlock.dismiss();
Toasty.info(getContext(), getResources().getString(R.string.settingsSave));
});
AlertDialog cDialog = cBuilder.create();
cDialog.show();
});
// language dialog
langFrame.setOnClickListener(view -> {
AlertDialog.Builder lBuilder = new AlertDialog.Builder(ctx);
lBuilder.setTitle(R.string.settingsLanguageSelectorDialogTitle);
if(langSelectedChoice != -1) {
lBuilder.setCancelable(true);
}
else {
lBuilder.setCancelable(false);
}
lBuilder.setSingleChoiceItems(langList, langSelectedChoice, (dialogInterface, i) -> {
langSelectedChoice = i;
tvLanguageSelected.setText(langList[i]);
tinyDb.putString("localeStr", langList[i]);
tinyDb.putInt("langId", i);
switch(langList[i]) {
case "Arabic":
tinyDb.putString("locale", "ar");
break;
case "Chinese":
tinyDb.putString("locale", "zh");
break;
case "Finnish":
tinyDb.putString("locale", "fi");
break;
case "French":
tinyDb.putString("locale", "fr");
break;
case "German":
tinyDb.putString("locale", "de");
break;
case "Italian":
tinyDb.putString("locale", "it");
break;
case "Latvian":
tinyDb.putString("locale", "lv");
break;
case "Persian":
tinyDb.putString("locale", "fa");
break;
case "Polish":
tinyDb.putString("locale", "pl");
break;
case "Portuguese/Brazilian":
tinyDb.putString("locale", "pt");
break;
case "Russian":
tinyDb.putString("locale", "ru");
break;
case "Serbian":
tinyDb.putString("locale", "sr");
break;
case "Spanish":
tinyDb.putString("locale", "es");
break;
case "Turkish":
tinyDb.putString("locale", "tr");
break;
case "Ukrainian":
tinyDb.putString("locale", "uk");
break;
default:
tinyDb.putString("locale", "en");
break;
}
dialogInterface.dismiss();
Toasty.info(getContext(), getResources().getString(R.string.settingsSave));
Objects.requireNonNull(getActivity()).recreate();
getActivity().overridePendingTransition(0, 0);
});
lBuilder.setNegativeButton(getString(R.string.cancelButton), (dialog, which) -> dialog.dismiss());
AlertDialog lDialog = lBuilder.create();
lDialog.show();
});
// time n date dialog
timeFrame.setOnClickListener(view -> {
AlertDialog.Builder tBuilder = new AlertDialog.Builder(ctx);
tBuilder.setTitle(R.string.settingsTimeSelectorDialogTitle);
if(timeSelectedChoice != -1) {
tBuilder.setCancelable(true);
}
else {
tBuilder.setCancelable(false);
}
tBuilder.setSingleChoiceItems(timeList, timeSelectedChoice, (dialogInterfaceTime, i) -> {
timeSelectedChoice = i;
tvDateTimeSelected.setText(timeList[i]);
tinyDb.putString("timeStr", timeList[i]);
tinyDb.putInt("timeId", i);
if("Normal".equals(timeList[i])) {
tinyDb.putString("dateFormat", "normal");
}
else {
tinyDb.putString("dateFormat", "pretty");
}
dialogInterfaceTime.dismiss();
Toasty.info(getContext(), getResources().getString(R.string.settingsSave));
});
AlertDialog tDialog = tBuilder.create();
tDialog.show();
});
return v;
}
@Override
public void onAttach(@NonNull Context context) {
super.onAttach(context);
ctx = context;
}
}

View File

@ -1,5 +1,8 @@
package org.mian.gitnex.helpers;
import android.content.Context;
import org.mian.gitnex.R;
import org.ocpsoft.prettytime.PrettyTime;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
@ -25,6 +28,30 @@ public class TimeHelper {
}
public static String formatTime(Date date, Locale locale, String timeFormat, Context context) {
switch (timeFormat) {
case "pretty": {
PrettyTime prettyTime = new PrettyTime(Locale.getDefault());
return prettyTime.format(date);
}
case "normal": {
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd '" + context.getResources().getString(R.string.timeAtText) + "' HH:mm", locale);
return formatter.format(date);
}
case "normal1": {
DateFormat formatter = new SimpleDateFormat("dd-MM-yyyy '" + context.getResources().getString(R.string.timeAtText) + "' HH:mm", locale);
return formatter.format(date);
}
}
return "";
}
public static String customDateFormatForToastDateFormat(Date customDate) {
DateFormat format = DateFormat.getDateTimeInstance();

View File

@ -138,26 +138,10 @@ public class CommitsItems extends AbstractItem<CommitsItems, CommitsItems.ViewHo
commitTitleVw.setText(item.getCommitTitle());
commitCommitterVw.setText(ctx.getString(R.string.commitCommittedBy, item.getcommitCommitter()));
switch (timeFormat) {
case "pretty": {
PrettyTime prettyTime = new PrettyTime(new Locale(locale));
String createdTime = prettyTime.format(item.getcommitDate());
commitDateVw.setText(createdTime);
commitDateVw.setOnClickListener(new ClickListener(TimeHelper.customDateFormatForToastDateFormat(item.getcommitDate()), ctx));
break;
}
case "normal": {
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd '" + ctx.getResources().getString(R.string.timeAtText) + "' HH:mm", new Locale(locale));
String createdTime = formatter.format(item.getcommitDate());
commitDateVw.setText(createdTime);
break;
}
case "normal1": {
DateFormat formatter = new SimpleDateFormat("dd-MM-yyyy '" + ctx.getResources().getString(R.string.timeAtText) + "' HH:mm", new Locale(locale));
String createdTime = formatter.format(item.getcommitDate());
commitDateVw.setText(createdTime);
break;
}
commitDateVw.setText(TimeHelper.formatTime(item.getcommitDate(), new Locale(locale), timeFormat, ctx));
if(timeFormat.equals("pretty")) {
commitDateVw.setOnClickListener(new ClickListener(TimeHelper.customDateFormatForToastDateFormat(item.getcommitDate()), ctx));
}
commitHtmlUrlVw.setText(Html.fromHtml("<a href='" + item.getCommitHtmlUrl() + "'>" + ctx.getResources().getString(R.string.viewInBrowser) + "</a> "));

View File

@ -23,7 +23,7 @@ public class UserRepositories {
private String html_url;
private String default_branch;
private Date created_at;
private String updated_at;
private Date updated_at;
private String clone_url;
private long size;
private String ssh_url;
@ -84,7 +84,7 @@ public class UserRepositories {
return created_at;
}
public String getUpdated_at() {
public Date getUpdated_at() {
return updated_at;
}

View File

@ -212,6 +212,19 @@
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
<ImageView
android:id="@+id/addNewComment"
android:src="@drawable/ic_reply"
android:tint="@color/white"
android:layout_width="54dp"
android:layout_height="54dp"
android:layout_margin="15dp"
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true"
android:background="@drawable/circle"
android:padding="@dimen/fab_padding"
android:contentDescription="@string/addNewContent" />
</RelativeLayout>
</LinearLayout>

View File

@ -30,18 +30,6 @@
android:visibility="gone"
android:padding="16dp" />
<TextView
android:id="@+id/replyToIssue"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="@string/replyToIssue"
android:drawableStart="@drawable/ic_reply"
android:drawablePadding="24dp"
android:textColor="?attr/primaryTextColor"
android:textSize="16sp"
android:padding="16dp" />
<TextView
android:id="@+id/mergePullRequest"
android:layout_width="match_parent"

View File

@ -50,7 +50,7 @@
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true"
android:background="@drawable/circle"
android:padding="12dp"
android:padding="@dimen/fab_padding"
android:visibility="gone"
android:contentDescription="@string/addNewContent" />

View File

@ -38,7 +38,7 @@
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true"
android:background="@drawable/circle"
android:padding="12dp"
android:padding="@dimen/fab_padding"
android:contentDescription="@string/addNewContent" />
<TextView

View File

@ -36,7 +36,7 @@
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true"
android:background="@drawable/circle"
android:padding="12dp"
android:padding="@dimen/fab_padding"
android:contentDescription="@string/addNewContent" />
<TextView

View File

@ -1,5 +1,6 @@
<?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="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto">
@ -52,214 +53,267 @@
<LinearLayout
android:id="@+id/repoMetaFrame"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/repoMetaName"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/infoTabRepoName1"
android:textSize="16sp"
android:textColor="?attr/primaryTextColor"/>
<TextView
android:id="@+id/repoNameInfo"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/infoTabRepoBlank"
android:textIsSelectable="true"
android:textSize="14sp"
android:paddingTop="5dp"
android:textColor="?attr/primaryTextColor"/>
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/infoTabRepoOwner1"
android:textSize="16sp"
android:layout_height="wrap_content"
android:textColor="?attr/primaryTextColor"
android:layout_marginTop="15dp"/>
android:textSize="22sp"
android:textStyle="bold"
tools:text="GitNex" />
<TextView
android:id="@+id/repoOwnerInfo"
android:id="@+id/repoMetaDescription"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/infoTabRepoBlank"
android:textIsSelectable="true"
android:textSize="14sp"
android:paddingTop="5dp"
android:textColor="?attr/primaryTextColor"/>
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/infoTabRepoDesc"
android:textSize="16sp"
android:textColor="?attr/primaryTextColor"
android:layout_marginTop="15dp"/>
<TextView
android:id="@+id/repoDescriptionInfo"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/infoTabRepoBlank"
android:textIsSelectable="true"
android:textSize="14sp"
android:paddingTop="5dp"
android:layout_height="wrap_content"
android:layout_marginBottom="15dp"
android:autoLink="web"
android:textColor="?attr/primaryTextColor"/>
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/infoTabRepoWebsite"
android:textSize="16sp"
android:ellipsize="end"
android:maxLines="3"
android:textColor="?attr/primaryTextColor"
android:layout_marginTop="15dp"/>
<TextView
android:id="@+id/repoWebsiteInfo"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/infoTabRepoBlank"
android:textIsSelectable="true"
android:textSize="14sp"
android:paddingTop="5dp"
android:autoLink="web"
android:textColorLink="@color/lightBlue"
android:textColor="?attr/primaryTextColor"/>
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/infoTabRepoSize"
android:textSize="16sp"
android:textColor="?attr/primaryTextColor"
android:layout_marginTop="15dp"/>
tools:text="Android client for Gitea https://gitnex.com" />
<TextView
android:id="@+id/repoSizeInfo"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/infoTabRepoZero"
android:textIsSelectable="true"
android:textSize="14sp"
android:paddingTop="5dp"
android:textColor="?attr/primaryTextColor"/>
android:layout_marginTop="20dp"
android:baselineAligned="false"
android:orientation="horizontal">
<TextView
<LinearLayout
android:id="@+id/repoMetaStarsFrame"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/repoStargazersInMenu"
app:srcCompat="@drawable/ic_star" />
<TextView
android:id="@+id/repoMetaStars"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="?attr/primaryTextColor"
android:textSize="14sp" />
</LinearLayout>
<LinearLayout
android:id="@+id/repoMetaPullRequestsFrame"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/tabPullRequests"
app:srcCompat="@drawable/ic_merge" />
<TextView
android:id="@+id/repoMetaPullRequests"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="?attr/primaryTextColor"
android:textSize="14sp" />
</LinearLayout>
<LinearLayout
android:id="@+id/repoMetaForksFrame"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/infoTabRepoForksCount"
app:srcCompat="@drawable/ic_forks_24" />
<TextView
android:id="@+id/repoMetaForks"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="?attr/primaryTextColor"
android:textSize="14sp" />
</LinearLayout>
<LinearLayout
android:id="@+id/repoMetaWatchersFrame"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/repoWatchersInMenu"
app:srcCompat="@drawable/ic_watchers" />
<TextView
android:id="@+id/repoMetaWatchers"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="?attr/primaryTextColor"
android:textSize="14sp" />
</LinearLayout>
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginTop="25dp"
android:layout_marginBottom="25dp"
android:alpha="0.2"
android:background="@color/lightGray" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/infoTabRepoDefaultBranch"
android:textSize="16sp"
android:textColor="?attr/primaryTextColor"
android:layout_marginTop="15dp"/>
android:layout_marginBottom="20dp"
android:orientation="horizontal"
android:paddingLeft="15dp"
android:paddingRight="15dp">
<TextView
android:id="@+id/repoDefaultBranchInfo"
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/repoWatchersInMenu"
app:srcCompat="@drawable/ic_file_download_24dp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:gravity="center_vertical"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/infoTabRepoSize"
android:textColor="?attr/primaryTextColor"
android:textSize="16sp" />
<TextView
android:id="@+id/repoMetaSize"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:alpha="0.9"
android:textColor="?attr/primaryTextColor"
android:textSize="14sp"
tools:text="29" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/infoTabRepoDefaultBranchText"
android:textIsSelectable="true"
android:textSize="14sp"
android:paddingTop="5dp"
android:textColor="?attr/primaryTextColor"/>
android:layout_marginBottom="20dp"
android:orientation="horizontal"
android:paddingLeft="15dp"
android:paddingRight="15dp">
<TextView
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/infoTabRepoCreatedAt"
app:srcCompat="@drawable/ic_calendar" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:gravity="center_vertical"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/infoTabRepoCreatedAt"
android:textColor="?attr/primaryTextColor"
android:textSize="16sp" />
<TextView
android:id="@+id/repoMetaCreatedAt"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:alpha="0.9"
android:textColor="?attr/primaryTextColor"
android:textSize="14sp"
tools:text="29" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/infoTabRepoSshUrl"
android:textSize="16sp"
android:textColor="?attr/primaryTextColor"
android:layout_marginTop="15dp"/>
android:layout_marginBottom="20dp"
android:orientation="horizontal"
android:paddingLeft="15dp"
android:paddingRight="15dp">
<TextView
android:id="@+id/repoSshUrlInfo"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/infoTabRepoBlank"
android:textIsSelectable="true"
android:textSize="14sp"
android:paddingTop="5dp"
android:autoLink="web"
android:textColorLink="@color/lightBlue"
android:textColor="?attr/primaryTextColor"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/infoTabRepoWebsite"
app:srcCompat="@drawable/ic_link_24dp" />
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/infoTabRepoCloneUrl"
android:textSize="16sp"
android:textColor="?attr/primaryTextColor"
android:layout_marginTop="15dp"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:gravity="center_vertical"
android:orientation="vertical">
<TextView
android:id="@+id/repoCloneUrlInfo"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/infoTabRepoBlank"
android:textIsSelectable="true"
android:textSize="14sp"
android:paddingTop="5dp"
android:autoLink="web"
android:textColorLink="@color/lightBlue"
android:textColor="?attr/primaryTextColor"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/websiteText"
android:textColor="?attr/primaryTextColor"
android:textSize="16sp" />
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/infoTabRepoRepoUrl"
android:textSize="16sp"
android:textColor="?attr/primaryTextColor"
android:layout_marginTop="15dp"/>
<TextView
android:id="@+id/repoMetaWebsite"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:alpha="0.9"
android:autoLink="web"
android:textColorLink="@color/lightBlue"
android:textColor="?attr/primaryTextColor"
android:textSize="14sp"
tools:text="29" />
</LinearLayout>
<TextView
android:id="@+id/repoRepoUrlInfo"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/infoTabRepoBlank"
android:textIsSelectable="true"
android:textSize="14sp"
android:paddingTop="5dp"
android:autoLink="web"
android:textColorLink="@color/lightBlue"
android:textColor="?attr/primaryTextColor"/>
</LinearLayout>
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/infoTabRepoForksCount"
android:textSize="16sp"
android:textColor="?attr/primaryTextColor"
android:layout_marginTop="15dp"/>
<TextView
android:id="@+id/repoForksCountInfo"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/infoTabRepoZero"
android:textIsSelectable="true"
android:textSize="14sp"
android:paddingTop="5dp"
android:textColor="?attr/primaryTextColor"/>
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/infoTabRepoCreatedAt"
android:textSize="16sp"
android:textColor="?attr/primaryTextColor"
android:layout_marginTop="15dp"/>
<TextView
android:id="@+id/repoCreatedAtInfo"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/infoTabRepoDummyTime"
android:textSize="14sp"
android:paddingTop="5dp"
android:textColor="?attr/primaryTextColor"/>
<Button
android:id="@+id/repoAdditionalButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="5dp"
android:layout_marginBottom="20dp"
android:background="@drawable/shape_buttons"
android:text="@string/infoShowMoreInformation"
android:textColor="@color/btnTextColor" />
</LinearLayout>

View File

@ -49,7 +49,7 @@
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true"
android:background="@drawable/circle"
android:padding="12dp"
android:padding="@dimen/fab_padding"
android:contentDescription="@string/addNewContent" />
</RelativeLayout>

View File

@ -49,7 +49,7 @@
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true"
android:background="@drawable/circle"
android:padding="12dp"
android:padding="@dimen/fab_padding"
android:contentDescription="@string/addNewContent" />
</RelativeLayout>

View File

@ -70,6 +70,7 @@
<string name="emptyFieldUsername">اسم المستخدم لازم</string>
<string name="emptyFieldPassword">الكلمة السرية لازمة</string>
<string name="checkNetConnection">Cannot access network, please check your Internet connection</string>
<string name="netConnectionIsBack">Yay, Internet connection is back</string>
<string name="repoNameErrorEmpty">اسم المستودع فارغ</string>
<string name="repoNameErrorInvalid">Repository name is not valid. [a&#8211;z A&#8211;Z 0&#8211;9 &#8211; _]</string>
<string name="repoNameErrorReservedName">Repository name is reserved</string>
@ -307,6 +308,8 @@
<string name="addRemoveAssignees2">Add Assignees</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>
@ -477,4 +480,8 @@
<string name="mtm_decision_once">Once</string>
<string name="mtm_decision_abort">Abort</string>
<string name="issueCommentShare">Share Comment</string>
<string name="issueSubscribtion">Issue Subscribed</string>
<string name="issueSubscribtionError">Issue Subscription failed</string>
<string name="issueUnsubscribtion">Issue Unsubscribed</string>
<string name="issueUnsubscribtionError">Issue Un-Subscription failed</string>
</resources>

View File

@ -70,6 +70,7 @@
<string name="emptyFieldUsername">Benutzername ist erforderlich</string>
<string name="emptyFieldPassword">Passwort ist erforderlich</string>
<string name="checkNetConnection">Kann nicht auf das Netzwerk zugreifen. Bitte überprüfe die Internetverbindung</string>
<string name="netConnectionIsBack">Yay, Internet connection is back</string>
<string name="repoNameErrorEmpty">Der Repository Name ist leer.</string>
<string name="repoNameErrorInvalid">Der Repository Name ist nicht gültig. [a&#8211;z A&#8211;Z 0&#8211;9 &#8211; _]</string>
<string name="repoNameErrorReservedName">Repository-Name ist reserviert</string>
@ -307,6 +308,8 @@
<string name="addRemoveAssignees2">Füge Zuständige hinzu</string>
<string name="addRemoveAssignees">Zuständige hinzufügen/entfernen</string>
<string name="assigneesUpdated">Zuständige aktualisiert</string>
<string name="singleIssueSubscribe">Subscribe</string>
<string name="singleIssueUnSubscribe">Unsubscribe</string>
<!-- single issue section -->
<!-- multi select dialog -->
<string name="select_entry">Einträge auswählen</string>
@ -477,4 +480,8 @@
<string name="mtm_decision_once">Einmal</string>
<string name="mtm_decision_abort">Abbrechen</string>
<string name="issueCommentShare">Kommentar teilen</string>
<string name="issueSubscribtion">Issue Subscribed</string>
<string name="issueSubscribtionError">Issue Subscription failed</string>
<string name="issueUnsubscribtion">Issue Unsubscribed</string>
<string name="issueUnsubscribtionError">Issue Un-Subscription failed</string>
</resources>

View File

@ -70,6 +70,7 @@
<string name="emptyFieldUsername">Se requiere el usuario</string>
<string name="emptyFieldPassword">Se requiere la contraseña</string>
<string name="checkNetConnection">No se puede acceder a la red, por favor comprueba tu conexión a internet</string>
<string name="netConnectionIsBack">Yay, Internet connection is back</string>
<string name="repoNameErrorEmpty">El nombre del repositorio está vacío</string>
<string name="repoNameErrorInvalid">El nombre del repositorio es inválido. [a&#8211;z A&#8211;Z 0&#8211;9 &#8211; _]</string>
<string name="repoNameErrorReservedName">Nombre del repositorio reservado</string>
@ -307,6 +308,8 @@
<string name="addRemoveAssignees2">Add Assignees</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>
@ -477,4 +480,8 @@
<string name="mtm_decision_once">Once</string>
<string name="mtm_decision_abort">Abort</string>
<string name="issueCommentShare">Share Comment</string>
<string name="issueSubscribtion">Issue Subscribed</string>
<string name="issueSubscribtionError">Issue Subscription failed</string>
<string name="issueUnsubscribtion">Issue Unsubscribed</string>
<string name="issueUnsubscribtionError">Issue Un-Subscription failed</string>
</resources>

View File

@ -73,6 +73,7 @@
<string name="emptyFieldUsername">نام کاربری اجباری است</string>
<string name="emptyFieldPassword">گذر واژه اجباری است</string>
<string name="checkNetConnection">عدم دسترسی به شبکه، لطفا از برقراری ارتباط با اینترنت مطمئن شوید</string>
<string name="netConnectionIsBack">Yay, Internet connection is back</string>
<string name="repoNameErrorEmpty">نام مخزن خالی است</string>
<string name="repoNameErrorInvalid">نام مخزن اشتباه است. [a&#8211;z A&#8211;Z 0&#8211;9 &#8211; _]</string>
<string name="repoNameErrorReservedName">Repository name is reserved</string>
@ -310,6 +311,8 @@
<string name="addRemoveAssignees2">Add Assignees</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>
@ -480,4 +483,8 @@
<string name="mtm_decision_once">Once</string>
<string name="mtm_decision_abort">Abort</string>
<string name="issueCommentShare">Share Comment</string>
<string name="issueSubscribtion">Issue Subscribed</string>
<string name="issueSubscribtionError">Issue Subscription failed</string>
<string name="issueUnsubscribtion">Issue Unsubscribed</string>
<string name="issueUnsubscribtionError">Issue Un-Subscription failed</string>
</resources>

View File

@ -70,6 +70,7 @@
<string name="emptyFieldUsername">Username is required</string>
<string name="emptyFieldPassword">Password is required</string>
<string name="checkNetConnection">Cannot access network, please check your Internet connection</string>
<string name="netConnectionIsBack">Yay, Internet connection is back</string>
<string name="repoNameErrorEmpty">Repository name is empty</string>
<string name="repoNameErrorInvalid">Repository name is not valid. [a&#8211;z A&#8211;Z 0&#8211;9 &#8211; _]</string>
<string name="repoNameErrorReservedName">Repository name is reserved</string>
@ -307,6 +308,8 @@
<string name="addRemoveAssignees2">Add Assignees</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>
@ -477,4 +480,8 @@
<string name="mtm_decision_once">Once</string>
<string name="mtm_decision_abort">Abort</string>
<string name="issueCommentShare">Share Comment</string>
<string name="issueSubscribtion">Issue Subscribed</string>
<string name="issueSubscribtionError">Issue Subscription failed</string>
<string name="issueUnsubscribtion">Issue Unsubscribed</string>
<string name="issueUnsubscribtionError">Issue Un-Subscription failed</string>
</resources>

View File

@ -63,13 +63,14 @@
<string name="logo">Se connecter à Gitea</string>
<string name="urlInfoTooltip">1. Choisissez le protocole adéquat (HTTPS ou HTTP)\n2. Entrez lURL de votre instance Gitea (ex : try.gitea.io)\n3. Si lauthentification à 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="loginFailed">Mauvais nom dutilisateur/mot de passe</string>
<string name="malformedUrl">Couldn\'t connect to host. Please check your URL or port for any errors.</string>
<string name="malformedUrl">Connexion impossible. Vérifiez que lURL et le port sont corrects.</string>
<string name="protocolError">Il nest recommandé dutiliser le protocole HTTP que pour des tests en réseau local.</string>
<string name="malformedJson">JSON mal formé. Le serveur ne répond pas.</string>
<string name="emptyFieldURL">URL de linstance requise</string>
<string name="emptyFieldUsername">Nom dutilisateur requis</string>
<string name="emptyFieldPassword">Mot de passe requis</string>
<string name="checkNetConnection">Impossible daccéder au réseau, veuillez vérifier votre connexion Internet</string>
<string name="netConnectionIsBack">Yay, Internet connection is back</string>
<string name="repoNameErrorEmpty">Nom du dépôt requis</string>
<string name="repoNameErrorInvalid">Nom de dépôt invalide [a&#8211;z A&#8211;Z 0&#8211;9 &#8211; _]</string>
<string name="repoNameErrorReservedName">Ce nom de dépôt est réservé</string>
@ -184,10 +185,10 @@
<string name="noLabelsFound">Aucune étiquette</string>
<!-- settings -->
<string name="settingsLanguageHeaderText">Traduction</string>
<string name="settingsSecurityHeader">Security</string>
<string name="settingsCertsSelectorHeader">Delete Trusted Certificates</string>
<string name="settingsCertsPopupTitle">Delete Trusted Certificates?</string>
<string name="settingsCertsPopupMessage">Are you sure to delete any manually trusted certificate or hostname? \n\nYou will also be logged out.</string>
<string name="settingsSecurityHeader">Sécurité</string>
<string name="settingsCertsSelectorHeader">Supprimer les certificats de confiance</string>
<string name="settingsCertsPopupTitle">Supprimer les certificats de confiance ?</string>
<string name="settingsCertsPopupMessage">Supprimer les nom dhôtes et certificats ajoutés manuellement ? \n\nVous serez déconnecté.</string>
<string name="settingsDateTimeHeaderText">Date et heure</string>
<string name="settingsSave">Réglages enregistrés</string>
<string name="settingsLanguageSelectorHeader">Langue</string>
@ -210,7 +211,7 @@
<string name="themeSelectionHeaderText">Thème</string>
<string name="settingsPdfModeHeaderText">PDF mode nuit</string>
<string name="fileViewerHeader">Visionneuse de fichiers</string>
<string name="settingsCounterBadges">Counter Badges</string>
<string name="settingsCounterBadges">Compteurs</string>
<!-- settings -->
<string name="noMoreData">Aucune donnée</string>
<string name="createLabel">Nouvelle étiquette</string>
@ -307,6 +308,8 @@
<string name="addRemoveAssignees2">Ajouter des assignés</string>
<string name="addRemoveAssignees">Ajouter/supprimer des assignés</string>
<string name="assigneesUpdated">Assignés mis à jour</string>
<string name="singleIssueSubscribe">Subscribe</string>
<string name="singleIssueUnSubscribe">Unsubscribe</string>
<!-- single issue section -->
<!-- multi select dialog -->
<string name="select_entry">Sélection des entrées</string>
@ -465,16 +468,20 @@
<string name="commitCommittedBy">Révision de %1$s</string>
<string name="viewCommits">Voir révisions</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_servername">Accept Mismatching Server Name?</string>
<string name="mtm_hostname_mismatch">Server could not authenticate as \&quot;%s\&quot;. 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_once">Once</string>
<string name="mtm_decision_abort">Abort</string>
<string name="issueCommentShare">Share Comment</string>
<string name="mtm_notification">Vérification du certificat</string>
<string name="mtm_accept_cert">Accepter le certificat inconnu ?</string>
<string name="mtm_trust_anchor">Le certificat du serveur nest pas signé par une autorité de certification connue.</string>
<string name="mtm_cert_expired">Le certificat du serveur a expiré.</string>
<string name="mtm_accept_servername">Accepter le nom de serveur incohérent ?</string>
<string name="mtm_hostname_mismatch">Le serveur ne peut sauthentifier comme « %s ». Le certificat est valide pour :</string>
<string name="mtm_connect_anyway">Se connecter malgré tout ?</string>
<string name="mtm_cert_details">Détails du certificat :</string>
<string name="mtm_decision_always">Faire confiance</string>
<string name="mtm_decision_once">Une fois</string>
<string name="mtm_decision_abort">Abandonner</string>
<string name="issueCommentShare">Partager le commentaire</string>
<string name="issueSubscribtion">Issue Subscribed</string>
<string name="issueSubscribtionError">Issue Subscription failed</string>
<string name="issueUnsubscribtion">Issue Unsubscribed</string>
<string name="issueUnsubscribtionError">Issue Un-Subscription failed</string>
</resources>

View File

@ -71,6 +71,7 @@ URL è richiesto</string>
<string name="emptyFieldUsername">Nome utente obbligatorio</string>
<string name="emptyFieldPassword">Password obbligatoria</string>
<string name="checkNetConnection">Errore di connessione. Controllare la connessione Internet</string>
<string name="netConnectionIsBack">Yay, Internet connection is back</string>
<string name="repoNameErrorEmpty">Il nome del repository è vuoto</string>
<string name="repoNameErrorInvalid">Nome del repository non è valido. [a&#8211;z A&#8211;Z 0&#8211;char@@9 &#8211; _]</string>
<string name="repoNameErrorReservedName">Repository name is reserved</string>
@ -309,6 +310,8 @@ autorizzazione</string>
<string name="addRemoveAssignees2">Aggiungi Assegnatari</string>
<string name="addRemoveAssignees">Aggiungi/Rimuovi Assegnatari</string>
<string name="assigneesUpdated">Assegnatari aggiornati</string>
<string name="singleIssueSubscribe">Subscribe</string>
<string name="singleIssueUnSubscribe">Unsubscribe</string>
<!-- single issue section -->
<!-- multi select dialog -->
<string name="select_entry">Elementi selezionati</string>
@ -479,4 +482,8 @@ autorizzazione</string>
<string name="mtm_decision_once">Once</string>
<string name="mtm_decision_abort">Abort</string>
<string name="issueCommentShare">Share Comment</string>
<string name="issueSubscribtion">Issue Subscribed</string>
<string name="issueSubscribtionError">Issue Subscription failed</string>
<string name="issueUnsubscribtion">Issue Unsubscribed</string>
<string name="issueUnsubscribtionError">Issue Un-Subscription failed</string>
</resources>

View File

@ -70,6 +70,7 @@
<string name="emptyFieldUsername">Username is required</string>
<string name="emptyFieldPassword">Password is required</string>
<string name="checkNetConnection">Cannot access network, please check your Internet connection</string>
<string name="netConnectionIsBack">Yay, Internet connection is back</string>
<string name="repoNameErrorEmpty">Repository name is empty</string>
<string name="repoNameErrorInvalid">Repository name is not valid. [a&#8211;z A&#8211;Z 0&#8211;9 &#8211; _]</string>
<string name="repoNameErrorReservedName">Repository name is reserved</string>
@ -307,6 +308,8 @@
<string name="addRemoveAssignees2">Add Assignees</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>
@ -477,4 +480,8 @@
<string name="mtm_decision_once">Once</string>
<string name="mtm_decision_abort">Abort</string>
<string name="issueCommentShare">Share Comment</string>
<string name="issueSubscribtion">Issue Subscribed</string>
<string name="issueSubscribtionError">Issue Subscription failed</string>
<string name="issueUnsubscribtion">Issue Unsubscribed</string>
<string name="issueUnsubscribtionError">Issue Un-Subscription failed</string>
</resources>

View File

@ -0,0 +1,487 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- menu items -->
<string name="navMyRepos">Moje repozytoria</string>
<string name="navStarredRepos">Ulubione repozytoria</string>
<string name="navRepos">Repozytoria</string>
<string name="navProfile">Profil</string>
<string name="navSettings">Ustawienia</string>
<string name="navOrgs">Organizacje</string>
<string name="navAbout">O programie</string>
<string name="navRate">Oceń GitNex</string>
<string name="navLogout">Wyloguj się</string>
<string name="navExplore">Przeglądaj</string>
<!-- menu items -->
<!-- page titles -->
<string name="pageTitleAbout">O programie</string>
<string name="pageTitleHome">Strona główna</string>
<string name="pageTitleMyRepos">Moje repozytoria</string>
<string name="pageTitleRepositories">Repozytoria</string>
<string name="pageTitleProfile">Profil</string>
<string name="pageTitleNewRepo">Nowe repozytorium</string>
<string name="pageTitleOrganizations">Organizacje</string>
<string name="pageTitleIssues">Problemy</string>
<string name="pageTitleSettings">Ustawienia</string>
<string name="pageTitleCreateOrganization">Nowa organizacja</string>
<string name="pageTitleCreateMilestone">Nowy etap</string>
<string name="pageTitleCreateNewIssue">Nowy problem</string>
<string name="pageTitleCreateLabel">Nowa etykieta</string>
<string name="pageTitleCredits">Podziękowania</string>
<string name="pageTitleLabelUpdate">Aktualizuj etykietę</string>
<string name="pageTitleSponsors">Dawcy</string>
<string name="pageTitleStarredRepos">Ulubione repozytoria</string>
<string name="pageTitleCreateTeam">Nowy zespół</string>
<string name="pageTitleAddEmail">Dodaj adres e-mail</string>
<string name="pageTitleNewFile">Nowy plik</string>
<string name="pageTitleExplore">Przeglądaj</string>
<!-- page titles -->
<string name="appVersion">Wersja\u0020:\u0020</string>
<string name="appBuild">Build nr\u0020:\u0020</string>
<string name="repoName">Repozytorium demo</string>
<string name="repoFullname">Repozytorium z ORG</string>
<string name="repoDescription">Opis demo</string>
<string name="noData">Nie znaleziono repozytoriów</string>
<string name="orgName">Organizacja demo</string>
<string name="orgDescription">Opis demo</string>
<string name="noDataOrg">Nie znaleziono organizacji</string>
<string name="newCreateButtonCopy">Utwórz</string>
<string name="newUpdateButtonCopy">Aktualizuj</string>
<string name="newRepoTintCopy">Nazwa repozytorium</string>
<string name="newRepoDescTintCopy">Opis repozytorium</string>
<string name="newRepoPrivateCopy">Prywatny</string>
<string name="newRepoDescInfo">Maksymalnie 255 znaków</string>
<string name="newRepoOwner">Właściciel</string>
<string name="newOrgTintCopy">Nazwa organizacji</string>
<string name="newOrgDescTintCopy">Opis organizacji</string>
<string name="newOrgDescInfo">Maksymalnie 255 znaków</string>
<string name="userName">Nazwa użytkownika</string>
<string name="passWord">Hasło</string>
<string name="btnLogin">ZALOGUJ</string>
<string name="instanceUrl">Adres URL instancji</string>
<string name="navigation_drawer_open">Otwórz szufladę nawigacji</string>
<string name="navigation_drawer_close">Zamknij szufladę nawigacji</string>
<string name="logo">Zaloguj się do Gitea</string>
<string name="urlInfoTooltip">1- Wybierz poprawny protokół (https lub http). \n2- Wprowadź adres URL Gitea np: try.gitea.io. \n3- Jeśli włączyłeś 2FA dla swojego konta, wprowadź kod w polu OTP Code. \n4 - Dla podstawowej autoryzacji HTTP użyj NAZWAUŻYTKOWNIKA@STRONA.PL w polu URL.</string>
<string name="loginFailed">Nieprawidłowa nazwa użytkownika/hasło</string>
<string name="malformedUrl">Nie można połączyć się z hostem. Sprawdź swój adres URL lub port pod kątem jakichkolwiek błędów.</string>
<string name="protocolError">Nie zaleca się używania protokołu HTTP, chyba że testujesz w sieci lokalnej.</string>
<string name="malformedJson">Otrzymano błędne JSON. Odpowiedź serwera nie powiodła się.</string>
<string name="emptyFieldURL">Adres URL instancji jest wymagany</string>
<string name="emptyFieldUsername">Nazwa użytkownika jest wymagana</string>
<string name="emptyFieldPassword">Hasło jest wymagane</string>
<string name="checkNetConnection">Nie można uzyskać dostępu do sieci, sprawdź swoje połączenie internetowe</string>
<string name="netConnectionIsBack">Yay, Internet connection is back</string>
<string name="repoNameErrorEmpty">Nazwa repozytorium jest pusta</string>
<string name="repoNameErrorInvalid">Nazwa repozytorium jest nieprawidłowa. [a&#8211;z A&#8211;Z 0&#8211;9 &#8211; _]</string>
<string name="repoNameErrorReservedName">Nazwa repozytorium jest zarezerwowana</string>
<string name="repoNameErrorReservedPatterns">Nazwa repozytorium zawiera zarezerwowane słowa kluczowe</string>
<string name="repoDescError">Opis repozytorium przekracza limit 255 znaków</string>
<string name="repoCreated">Repozytorium utworzone pomyślnie</string>
<string name="repoCreatedError">Coś poszło nie tak, spróbuj ponownie</string>
<string name="repoExistsError">Repozytorium o tej nazwie już istnieje pod wybranym właścicielem</string>
<string name="orgNameErrorEmpty">Nazwa organizacji jest pusta</string>
<string name="orgNameErrorInvalid">Nazwa organizacji jest nieprawidłowa, [a&#8211;z A&#8211;Z 0&#8211;9 &#8211; _]</string>
<string name="orgDescError">Opis organizacji przekracza limit 255 znaków</string>
<string name="orgCreated">Organizacja utworzona pomyślnie</string>
<string name="orgCreatedError">Coś poszło nie tak, spróbuj ponownie</string>
<string name="orgExistsError">Organizacja już istnieje</string>
<string name="processingText">Przetwarzanie</string>
<string name="search">Szukaj</string>
<string name="wip">Prace w toku</string>
<string name="close">Zamknij</string>
<string name="addNewContent">Dodaj</string>
<string name="orgContentAvatar">Org</string>
<string name="repoContentAvatar">Repozytorium</string>
<string name="privateAvatar">Pri</string>
<string name="removeContent">Usuń</string>
<string name="genericApiStatusError">Instancja zwróciła błąd. Kod\u0020</string>
<string name="title_activity_repo_detail">Szczegółowa aktywność repozytorium</string>
<string name="tab_text_info">Szczegóły</string>
<string name="tab_text_files">Pliki</string>
<string name="tab_text_issues">Otwarte problemy</string>
<string name="tabItemCloseIssues">Zamknięte problemy</string>
<string name="tab_text_ml">Kamienie milowe</string>
<string name="tab_text_releases">Wydania</string>
<string name="tab_text_branches">Oddziały</string>
<string name="tab_text_labels">Etykiety</string>
<string name="action_settings">Ustawienia</string>
<string name="tab_text_collaborators">Współpracownicy</string>
<string name="tabPullRequests">Pull Requesty</string>
<string name="noDataIssueTab">Nie znaleziono problemów</string>
<string name="infoTabRepoName1">Repozytorium</string>
<string name="infoTabRepoOwner1">Właściciel</string>
<string name="infoTabRepoDesc">Opis</string>
<string name="infoTabRepoWebsite">Strona internetowa</string>
<string name="infoTabRepoSize">Rozmiar</string>
<string name="infoTabRepoDefaultBranch">Domyślna gałąź</string>
<string name="infoTabRepoSshUrl">Adres URL SSH</string>
<string name="infoTabRepoCloneUrl">Sklonuj adres URL</string>
<string name="infoTabRepoRepoUrl">Adres URL repozytorium</string>
<string name="infoTabRepoForksCount">Forki</string>
<string name="infoTabRepoCreatedAt">Utworzono</string>
<string name="infoTabRepoUpdatedAt">Ostatnia aktualizacja</string>
<string name="timeAtText">w</string>
<string name="createdText">Otwarty\u0020</string>
<string name="dueDateText">Termin</string>
<string name="issueStatusTextOpen">Status: otwarte</string>
<string name="issueStatusOpen">otwarte</string>
<string name="issueStatusTextClosed">Status: zamknięte</string>
<string name="issueStatusClosed">zamknięty</string>
<string name="issueCreator">Twórca:\u0020</string>
<string name="issueAssigneesText">Przypisani</string>
<string name="issueTypeIssue">Typ: Problem</string>
<string name="issueTypePullRequest">Typ: Pull Request</string>
<string name="issueCommenter">Komentujący:\u0020</string>
<string name="issueMilestone">Etap %1$s</string>
<string name="dueDate">Termin %1$s</string>
<string name="createdTime">Otwarto %1$s</string>
<string name="assignedTo">Przypisano do: %1$s</string>
<string name="commentButtonText">Komentarz</string>
<string name="commentEmptyError">Napisz swój komentarz</string>
<string name="commentSuccess">Komentarz wysłany</string>
<string name="commentError">Coś poszło nie tak, spróbuj ponownie</string>
<string name="generalImgContentText">Awatar</string>
<string name="noDataMilestonesTab">Nie znaleziono kamieni milowych</string>
<string name="commitAuthor">Autor commit: %1$s</string>
<string name="commitHash">Hash commita \n%1$s%2$s</string>
<string name="releaseTitle">Tytuł wydania</string>
<string name="releaseDescription">Opis wydania</string>
<string name="releaseDownloadText">Pobrania</string>
<string name="releaseType">Typ wydania</string>
<string name="releaseZip">Wydaj Zip</string>
<string name="releaseTar">Wydaj Tar</string>
<string name="noDataReleasesTab">Nie znaleziono wydań</string>
<string name="releaseTag">Tag: %1$s</string>
<string name="collaboratorsNameToast">Współpracujący: %1$s</string>
<string name="noDataCollaboratorTab">Nie znaleziono współpracowników</string>
<string name="editText">Edytuj</string>
<string name="newMilestoneTitle">Tytuł</string>
<string name="newMilestoneDescription">Opis</string>
<string name="newMilestoneDueDate">Termin</string>
<string name="milestoneNameErrorEmpty">Tytuł etapu jest pusty</string>
<string name="milestoneNameErrorInvalid">Tytuł etapu jest nieprawidłowy. [a&#8211;z A&#8211;Z 0&#8211;9 &#8211; _]</string>
<string name="milestoneDescError">Opis etapu przekracza limit 255 znaków</string>
<string name="milestoneCreated">Etap został utworzony pomyślnie</string>
<string name="milestoneCreatedError">Coś poszło nie tak, spróbuj ponownie</string>
<string name="milestoneDateEmpty">Proszę wybrać termin</string>
<string name="milestoneOpenIssues">Otwarte problemy: %1$d</string>
<string name="milestoneClosedIssues">Zamknięte problemy: %1$d</string>
<string name="newIssueSelectAssigneesListTitle">Wybierz przypisane osoby</string>
<string name="newIssueSelectLabelsListTitle">Wybierz etykiety</string>
<string name="newIssueDialogDone">Gotowe</string>
<string name="newIssueDialogCancel">Anuluj</string>
<string name="newIssueTitle">Tytuł</string>
<string name="newIssueAssigneesListTitle">Przypisani</string>
<string name="newIssueDescriptionTitle">Opis</string>
<string name="newIssueDueDateTitle">Termin</string>
<string name="newIssueMilestoneTitle">Etap</string>
<string name="newIssueLabelsTitle">Etykiety</string>
<string name="issueTitleEmpty">Tytuł problemu jest pusty</string>
<string name="issueDescriptionEmpty">Opis problemu jest pusty</string>
<string name="issueCreated">Nowy problem został pomyślnie utworzony</string>
<string name="issueCreatedError">Coś poszło nie tak, spróbuj ponownie</string>
<string name="issueCreatedNoMilestone">Brak kamienia milowego</string>
<string name="noAssigneesFound">Nie znaleziono współpracowników</string>
<string name="noLabelsFound">Nie znaleziono etykiet</string>
<!-- settings -->
<string name="settingsLanguageHeaderText">Tłumaczenie</string>
<string name="settingsSecurityHeader">Bezpieczeństwo</string>
<string name="settingsCertsSelectorHeader">Usuń zaufane certyfikaty</string>
<string name="settingsCertsPopupTitle">Usunąć zaufane certyfikaty?</string>
<string name="settingsCertsPopupMessage">Czy na pewno chcesz usunąć wszystkie ręcznie zaufane certyfikaty lub nazwy hostów? \n\nZostaniesz również wylogowany.</string>
<string name="settingsDateTimeHeaderText">Data &amp; Czas</string>
<string name="settingsSave">Ustawienia zapisane</string>
<string name="settingsLanguageSelectorHeader">Język</string>
<string name="settingsLanguageSelectedHeaderDefault">Angielski</string>
<string name="settingsAppearanceHeader">Wygląd</string>
<string name="settingsDateTimeHeaderDefault">Piękny</string>
<string name="settingsLanguageSelectorDialogTitle">Wybierz język</string>
<string name="settingsTimeSelectorDialogTitle">Wybierz format czasu</string>
<string name="settingsIssueBadgeHeaderText">Odznaka problemów</string>
<string name="settingsHelpTranslateText">Pomóż nam przetłumaczyć GitNex na Twój język</string>
<string name="codeBlockHeaderText">Kolor bloku kodu</string>
<string name="settingsCodeBlockSelectorDialogTitle">Wybór koloru bloku kodu</string>
<string name="settingsHomeScreenHeaderText">Ekran główny</string>
<string name="settingsHomeScreenSelectedText">Moje repozytoria</string>
<string name="settingshomeScreenSelectorDialogTitle">Wybierz ekran główny</string>
<string name="settingsCustomFontHeaderText">Czcionka</string>
<string name="settingsCustomFontSelectorDialogTitle">Wybierz czcionkę</string>
<string name="settingsCustomFontDefault">Roboto</string>
<string name="themeSelectorDialogTitle">Wybierz motyw aplikacji</string>
<string name="themeSelectionHeaderText">Motyw</string>
<string name="settingsPdfModeHeaderText">Tryb nocny PDF</string>
<string name="fileViewerHeader">Przeglądarka plików</string>
<string name="settingsCounterBadges">Odznaki liczników</string>
<!-- settings -->
<string name="noMoreData">Brak dostępnych danych</string>
<string name="createLabel">Nowa etykieta</string>
<string name="menuTitleText">Menu repozytorium</string>
<string name="labelName">Nazwa etykiety</string>
<string name="labelColor">Kolor etykiety</string>
<string name="labelEmptyError">Nazwa etykiety jest pusta</string>
<string name="labelNameError">Nazwa etykiety jest nieprawidłowa</string>
<string name="labelCreated">Etykieta utworzona.</string>
<string name="labelGeneralError">Coś poszło nie tak, spróbuj ponownie</string>
<string name="labelUpdated">Etykieta zaktualizowana.</string>
<string name="noDataLabelsTab">Nie znaleziono etykiet</string>
<string name="labelMenuContentDesc">Opis</string>
<string name="labelMenuEdit">Edytuj</string>
<string name="labelMenuDelete">Usuń</string>
<string name="labelDeleteText">Etykieta usunięta</string>
<string name="labelDeleteErrorText">Coś poszło nie tak, spróbuj ponownie</string>
<string name="noDataBranchesTab">Nie znaleziono gałęzi</string>
<string name="creditsLogoDesign">Wygląd</string>
<string name="alertDialogTokenRevokedTitle">Błąd autoryzacji</string>
<string name="alertDialogTokenRevokedMessage">Wygląda na to, że Token Dostępu został odwołany LUB nie możesz zobaczyć tych treści. W przypadku cofnięcia tokenu, wyloguj się i zaloguj ponownie</string>
<string name="alertDialogTokenRevokedCopyNegativeButton">Anuluj</string>
<string name="alertDialogTokenRevokedCopyPositiveButton">Wyloguj się</string>
<string name="labelDeleteTitle">Usuń\u0020</string>
<string name="labelDeleteMessage">Czy na pewno chcesz usunąć tę etykietę?</string>
<string name="labelDeletePositiveButton">OK</string>
<string name="labelDeleteNegativeButton">Anuluj</string>
<!-- org tabbed layout str -->
<string name="title_activity_org_detail">Szczegółowa aktywność organizacji</string>
<string name="orgTabRepos">Repozytoria</string>
<string name="orgTabTeams">Drużyny</string>
<string name="orgTabMembers">Członkowie</string>
<string name="orgCreateTeam">Nowy zespół</string>
<string name="noDataTeams">Nie znaleziono drużyn</string>
<string name="teamTitle">Nazwa zespołu</string>
<string name="teamDescription">Opis zespołu</string>
<string name="teamPermission">Pozwolenie: %1$s</string>
<string name="noDataMembers">Nie znaleziono członków</string>
<string name="orgMember">Członkowie organizacji</string>
<string name="orgTeamMembers">Członkowie zespołu organizacji</string>
<!-- org tabbed layout str -->
<!-- create team -->
<string name="newTeamTitle">Nazwa zespołu</string>
<string name="newTeamDesc">Opis</string>
<string name="newTeamPermission">Uprawnienie</string>
<string name="newTeamAccessControls">Kontrola dostępu</string>
<string name="newTeamPermissionRead">Członkowie mogą przeglądać i sklonować repozytoria zespołu</string>
<string name="newTeamPermissionWrite">Członkowie mogą czytać i wysyłać do repozytoriów zespołu</string>
<string name="newTeamPermissionAdmin">Członkowie mogą ciągnąć i wypchać do repozytoriów zespołu i dodawać do nich współpracowników</string>
<string name="teamNameEmpty">Wprowadź nazwę zespołu</string>
<string name="teamNameError">Nazwa zespołu powinna zawierać tylko znaki alfanumeryczne, myślniki (-), podkreślenia (_) i kropki (.)</string>
<string name="teamPermissionEmpty">Proszę wybrać uprawnienia</string>
<string name="teamDescError">Opis zespołu ma niedozwolone znaki</string>
<string name="teamDescLimit">Opis zespołu ma więcej niż 100 znaków</string>
<string name="teamCreated">Zespół utworzony pomyślnie</string>
<string name="teamCreatedError">Coś poszło nie tak, spróbuj ponownie</string>
<!-- create team -->
<!-- edit comment -->
<string name="editCommentTitle">Edytuj komentarz</string>
<string name="editCommentButtonText">Edytuj</string>
<string name="editCommentUpdatedText">Komentarz zaktualizowany</string>
<!-- edit comment -->
<!-- add collaborator -->
<string name="addCollaboratorTitle">Dodaj / Usuń współpracownika</string>
<string name="addCollaboratorSearchHint">Szukaj użytkowników</string>
<string name="addCollaboratorViewUserDesc">Nazwa użytkownika</string>
<string name="removeCollaboratorTitle">Usuń\u0020</string>
<string name="removeCollaboratorMessage">Czy chcesz usunąć tego użytkownika z repozytorium?</string>
<string name="removeCollaboratorToastText">Użytkownik usunięty z repozytorium.</string>
<string name="addCollaboratorToastText">Użytkownik dodany do repozytorium.</string>
<!-- add collaborator -->
<!-- profile section -->
<string name="profileTabFollowers">Obserwujący</string>
<string name="profileTabFollowing">Obserwowane</string>
<string name="profileCreateNewEmailAddress">Dodaj adres e-mail</string>
<string name="profileEmailButton">Zapisz</string>
<string name="profileEmailTitle">Adres e-mail</string>
<string name="emailAddedText">Nowy e-mail został dodany.</string>
<string name="emailErrorEmpty">Adres e-mail jest pusty.</string>
<string name="emailErrorInvalid">Adres e-mail jest nieprawidłowy</string>
<string name="emailErrorInUse">Adres e-mail jest już używany</string>
<string name="emailTypeText">Podstawowy</string>
<string name="profileTabEmails">E-maile</string>
<!-- profile section -->
<!-- single issue section -->
<string name="singleIssueEditLabels">Dodaj / Usuń etykiety</string>
<string name="labelsUpdated">Etykiety zaktualizowane</string>
<string name="closeIssue">Zamknij problem</string>
<string name="replyToIssue">Dodaj komentarz</string>
<string name="editIssue">Edytuj problem</string>
<string name="reOpenIssue">Otwórz ponownie problem</string>
<string name="issueStateClosed">Problem zamknięty</string>
<string name="issueStateReopened">Problem ponownie otwarty</string>
<string name="addRemoveAssignees2">Dodaj przypisanych osób</string>
<string name="addRemoveAssignees">Dodaj / Usuń przypisanych osób</string>
<string name="assigneesUpdated">Zaktualizowano przypisanych</string>
<string name="singleIssueSubscribe">Subscribe</string>
<string name="singleIssueUnSubscribe">Unsubscribe</string>
<!-- single issue section -->
<!-- multi select dialog -->
<string name="select_entry">Wybierz wpisy</string>
<string name="validation_text">Proszę wybrać co najmniej jedną opcję</string>
<string name="please_select_atleast">Proszę wybrać co najmniej </string>
<string name="you_can_only_select_upto">Możesz wybrać tylko do </string>
<string name="option"> opcja</string>
<string name="options"> opcje</string>
<string name="select_all">Zaznacz wszystkie</string>
<string name="de_select_all">Odznacz wszystkie</string>
<!-- multi select dialog -->
<string name="repoMetaData">Meta repozytorium</string>
<!-- admin -->
<string name="adminCreateNewUser">Dodaj nowego użytkownika</string>
<string name="adminUsers">Użytkownicy</string>
<string name="userRoleAdmin">Administrator</string>
<!-- admin -->
<!-- create user -->
<string name="userFullNameText">Pełna nazwa</string>
<string name="userEmail">E-mail</string>
<string name="userUserName">Nazwa użytkownika</string>
<string name="userPassword">Hasło</string>
<string name="userInvalidFullName">Nieprawidłowa pełna nazwa</string>
<string name="userInvalidUserName">Nieprawidłowa nazwa użytkownika</string>
<string name="userInvalidEmail">Nieprawidłowy adres e-mail</string>
<string name="userCreatedText">Nowy użytkownik został pomyślnie dodany</string>
<string name="userExistsError">Użytkownik już istnieje</string>
<!-- create user -->
<!-- edit issue -->
<string name="editIssueNavHeader">Edytuj problem #%1$s</string>
<string name="editIssueSuccessMessage">Zaktualizowano problem</string>
<!-- edit issue -->
<!-- release -->
<string name="createRelease">Nowe wydanie</string>
<string name="releaseTagNameText">Nazwa tagu</string>
<string name="releaseTitleText">Tytuł</string>
<string name="releaseContentText">Zawartość</string>
<string name="releaseTypeText">Oznacz jako wstępne wydanie</string>
<string name="releaseBranchText">Wybierz gałąź</string>
<string name="releaseDraftText">Szkic</string>
<string name="tagNameErrorEmpty">Nazwa tagu jest pusta</string>
<string name="titleErrorEmpty">Tytuł jest pusty</string>
<string name="releaseCreatedText">Utworzono nową wersję</string>
<!-- release -->
<string name="loginOTPError">Wprowadź kod OTP</string>
<string name="loginOTPTypeError">Kod OTP powinien być liczbami.</string>
<string name="loginOTP">Kod OTP (opcjonalnie)</string>
<string name="otpMessage">Wprowadź kod OTP, jeśli 2FA jest włączony</string>
<string name="openWebRepo">Otwórz w przeglądarce</string>
<string name="repoStargazersInMenu">Polubienia</string>
<string name="repoWatchersInMenu">Obserwatorzy</string>
<string name="noDataStargazers">Nie znaleziono gwiazdek</string>
<string name="noDataWatchers">Nie znaleziono obserwatorów</string>
<string name="starMember">Gwiazdka</string>
<string name="watcherMember">Obserwujący</string>
<string name="commitLinkBranchesTab">Commit</string>
<string name="zipArchiveDownloadReleasesTab">Archiwum ZIP</string>
<string name="tarArchiveDownloadReleasesTab">Archiwum Tar</string>
<!-- new file -->
<string name="newFileNameTintCopy">Nazwa pliku</string>
<string name="newFileBranchTintCopy">Nazwa nowego oddziału</string>
<string name="newFileContentTintCopy">Zawartość pliku</string>
<string name="newFileButtonCopy">Utwórz nowy plik</string>
<string name="newFileNameHintMessage">z folderem: app/test.md</string>
<string name="newFileMessageTintCopy">Wiadomość commitu</string>
<string name="newFileInvalidBranchName">Nieprawidłowa nazwa gałęzi, może zawierać tylko &#8211;,&#8211;z, 0&#8211;9</string>
<string name="newFileCommitMessageError">Wiadomość commitu jest zbyt długa</string>
<string name="newFileSuccessMessage">Nowy plik został utworzony</string>
<string name="newFileOldBranches">Bieżące oddziały</string>
<string name="newFileRequiredFields">Pola takie jak nazwa pliku, zawartość i wiadomość zatwierdzenia są wymagane</string>
<string name="newFileCurrentBranchMessage">Wybranie bieżącej gałęzi spowoduje wyłączenie nowej gałęzi</string>
<string name="newFileNewBranchMessage">np. nowa-gałąź</string>
<string name="newFileRequiredFieldNewBranchName">Nazwa nowej gałęzi nie może być pusta, jeśli nie wybrano bieżącej gałęzi</string>
<string name="strFilter">Filtr</string>
<string name="copyIssueUrl">Skopiuj adres URL zgłoszenia</string>
<string name="copyIssueUrlToastMsg">Adres URL skopiowany do schowka</string>
<string name="milestoneCompletion">%1$d\uFF05 zakończony</string>
<!-- files -->
<string name="noDataFilesTab">Nie znaleziono plików</string>
<string name="filesDirNotSupportedYet">Przeglądanie katalogu nie jest jeszcze obsługiwane</string>
<string name="filesGenericError">Przepraszamy, ten plik nie może być otworzony, ponieważ API zwrócił błąd</string>
<string name="filesBreadcrumb">Główny</string>
<!-- generic copy -->
<string name="okButton">OK</string>
<string name="doneButton">Gotowe</string>
<string name="cancelButton">Anuluj</string>
<string name="genericError">Coś poszło nie tak, spróbuj ponownie</string>
<string name="apiNotFound">To żądanie wymaga wyższej wersji Gitea niż zainstalowana. Proszę zaktualizować swoją instancję do najnowszej wersji Gitea.</string>
<string name="noDataFound">Nie znaleziono danych</string>
<string name="addButton">Dodaj</string>
<string name="removeButton">Usuń</string>
<string name="authorizeError">Nie masz uprawnień do wykonania tej czynności.</string>
<string name="menuContentDesc">Menu</string>
<string name="menuEditText">Edytuj</string>
<string name="menuDeleteText">Usuń</string>
<string name="modifiedText">edytowano</string>
<string name="saveButton">Zapisz</string>
<string name="nameText">Nazwa</string>
<string name="descriptionText">Opis</string>
<string name="websiteText">Strona internetowa</string>
<string name="locationText">Lokalizacja</string>
<string name="characters255Limit">Maksymalnie 255 znaków</string>
<string name="emptyFields">Wszystkie pola są wymagane</string>
<string name="textContinue">Kontynuuj</string>
<string name="copyToken">Token</string>
<string name="viewInBrowser">Zobacz w przeglądarce</string>
<!-- generic copy -->
<string name="translateText">Przetłumacz GitNex z Crowdin</string>
<string name="exploreTextBoxHint">Przeglądaj repozytoria</string>
<string name="starRepository">Ogwiazdkuj repozytorium</string>
<string name="unStarRepository">Odgwiazdkuj repozytorium</string>
<string name="starRepositorySuccess">Repozytorium dodane do listy gwiazdkowanych</string>
<string name="unStarRepositorySuccess">Repozytorium usunięte z listy oznaczonych gwiazdką</string>
<string name="watchRepository">Obserwuj repozytorium</string>
<string name="unWatchRepository">Przestań obserwować repozytorium</string>
<string name="watchRepositorySuccess">Repozytorium dodane do listy obserwowanych</string>
<string name="unWatchRepositorySuccess">Repozytorium usunięte z listy obserwacyjnej</string>
<string name="versionUnsupportedOld">Wykryto nieobsługiwaną starą wersję(%1$s) Gitea. Proszę zaktualizować do najnowszej stabilnej wersji. Jeśli kontynuujesz, aplikacja może nie działać poprawnie.</string>
<string name="versionSupportedOld">Wykryto starą wersję Gitea, proszę zaktualizować do najnowszej stabilnej wersji</string>
<string name="versionUnsupportedNew">Wykryto nową wersję Gitea! Proszę AKTUALIZUJ GitNex!</string>
<string name="versionSupportedLatest">Wersja Gitea jest aktualna</string>
<string name="versionDevelopment">Wersja rozwojowa Gitea</string>
<string name="versionUnknow">Nie wykryto Gitea!</string>
<string name="versionAlertTitle">Powiadomienie o wersji</string>
<string name="versionAlertDialogHeader">Nieobsługiwana wersja Gitea</string>
<string name="loginViaPassword">Nazwa użytkownika / Hasło</string>
<string name="loginMethodText">Wybierz preferowaną metodę logowania, aby uzyskać dostęp do swojego konta. Token jest bezpieczniejszy!</string>
<string name="unauthorizedApiError">Instancja zwróciła błąd - nieautoryzowana. Sprawdź swoje dane i spróbuj ponownie</string>
<string name="loginTokenError">Wprowadź poprawny token</string>
<string name="noDataPullRequests">Nie znaleziono pull requestów</string>
<string name="prCreator">Twórca:\u0020</string>
<string name="editPrText">Edytuj Pull Request</string>
<string name="copyPrUrlText">Skopiuj Pull Request URL</string>
<string name="editPrNavHeader">Edytuj Pull Request #%1$s</string>
<string name="editPrSuccessMessage">Zaktualizowano Pull Request</string>
<string name="fileDiffViewHeader">%1$s Plików zmienionych</string>
<string name="fileDiffViewHeaderSingle">%1$s Plik zmieniony</string>
<string name="openFileDiffText">Pliki zmienione</string>
<string name="mergePullRequestText">Scal Pull Request</string>
<string name="mergePullRequestButtonText">Połącz</string>
<string name="mergeNoteText">Scalanie może się nie powieść, jeśli nie masz uprawnień do scalania Pull Request.</string>
<string name="mergeCommentText">Scal komentarz</string>
<string name="mergePRSuccessMsg">Pull Request został pomyślnie scalony</string>
<string name="mergePR404ErrorMsg">Pull Request nie jest dostępny do scalenia</string>
<string name="downloadFile">Pobierz ten plik</string>
<string name="waitLoadingDownloadFile">Poczekaj aż plik załaduje się do pamięci</string>
<string name="downloadFileSaved">Plik został zapisany do katalogu pobierania</string>
<string name="excludeFilesInFileviewer">Ten typ pliku nie jest obsługiwany w przeglądarce plików. Pobrać go z trzech kropkowanych menu?</string>
<string name="sizeCopy">Rozmiar</string>
<string name="shareIssue">Udostępnij problem</string>
<string name="sharePr">Udostępnij Pull Request</string>
<string name="shareRepository">Udostępnij repozytorium</string>
<string name="createRepository">Utwórz repozytorium</string>
<string name="repositoryTabCommits">Commity</string>
<string name="commitTitle">Commity gałęzi</string>
<string name="commitCommittedBy">Zcommitowane przez %1$s</string>
<string name="viewCommits">Zobacz commity</string>
<!-- Memorizing Trust Manager -->
<string name="mtm_notification">Weryfikacja certyfikatu</string>
<string name="mtm_accept_cert">Zaakceptować nieznany certyfikat?</string>
<string name="mtm_trust_anchor">Certyfikat serwera nie jest podpisany przez znany organ certyfikacji.</string>
<string name="mtm_cert_expired">Certyfikat serwera wygasł.</string>
<string name="mtm_accept_servername">Zaakceptować niepasującą nazwę serwera?</string>
<string name="mtm_hostname_mismatch">Serwer nie mógł uwierzytelnić jako \&quot;%s\&quot;. Certyfikat jest ważny tylko dla:</string>
<string name="mtm_connect_anyway">Czy mimo to chcesz się połączyć?</string>
<string name="mtm_cert_details">Szczegóły certyfikatu:</string>
<string name="mtm_decision_always">Zaufaj</string>
<string name="mtm_decision_once">Raz</string>
<string name="mtm_decision_abort">Przerwij</string>
<string name="issueCommentShare">Udostępnij komentarz</string>
<string name="issueSubscribtion">Issue Subscribed</string>
<string name="issueSubscribtionError">Issue Subscription failed</string>
<string name="issueUnsubscribtion">Issue Unsubscribed</string>
<string name="issueUnsubscribtionError">Issue Un-Subscription failed</string>
</resources>

View File

@ -70,6 +70,7 @@
<string name="emptyFieldUsername">Nome de usuário é necessário</string>
<string name="emptyFieldPassword">A senha é necessária</string>
<string name="checkNetConnection">Não é possível acessar a rede, por favor, verifique sua conexão com a Internet</string>
<string name="netConnectionIsBack">Yay, Internet connection is back</string>
<string name="repoNameErrorEmpty">Nome do repositório está vazio</string>
<string name="repoNameErrorInvalid">O nome do repositório não é válido. [um&#8211;z A&#8211;Z 0&#8211;9 &#8211; _]</string>
<string name="repoNameErrorReservedName">Repository name is reserved</string>
@ -307,6 +308,8 @@
<string name="addRemoveAssignees2">Adicionar Designados</string>
<string name="addRemoveAssignees">Adicionar/Remover designados</string>
<string name="assigneesUpdated">Designados atualizados</string>
<string name="singleIssueSubscribe">Subscribe</string>
<string name="singleIssueUnSubscribe">Unsubscribe</string>
<!-- single issue section -->
<!-- multi select dialog -->
<string name="select_entry">Selecionar</string>
@ -477,4 +480,8 @@
<string name="mtm_decision_once">Once</string>
<string name="mtm_decision_abort">Abort</string>
<string name="issueCommentShare">Share Comment</string>
<string name="issueSubscribtion">Issue Subscribed</string>
<string name="issueSubscribtionError">Issue Subscription failed</string>
<string name="issueUnsubscribtion">Issue Unsubscribed</string>
<string name="issueUnsubscribtionError">Issue Un-Subscription failed</string>
</resources>

View File

@ -63,17 +63,18 @@
<string name="logo">Войти в Gitea</string>
<string name="urlInfoTooltip">1. Выберите протокол (https или http) \n2. Укажите URL Gitea, например: try.gitea.io \n3. Если для учетной записи включена 2FA, введите код OTP в соответствующее поле. \n4. Для базовой аутентификации HTTP укажите USERNAME@DOMAIN.COM в поле URL.</string>
<string name="loginFailed">Неверные логин и/или пароль</string>
<string name="malformedUrl">Couldn\'t connect to host. Please check your URL or port for any errors.</string>
<string name="malformedUrl">Не удалось подключиться к хосту. Пожалуйста, проверьте URL-адрес или порт на наличие ошибок.</string>
<string name="protocolError">Не рекомендуется использовать протокол HTTP, если вы не тестируете инстанцию в локальной сети.</string>
<string name="malformedJson">Неожиданный ответ от сервера. Попробуйте сменить протокол или обратитесь к администратору инстанции.</string>
<string name="emptyFieldURL">Требуется URL экземпляра</string>
<string name="emptyFieldUsername">Требуется имя пользователя</string>
<string name="emptyFieldPassword">Требуется пароль</string>
<string name="checkNetConnection">Нет подключения к интернету, проверьте наличие связи.</string>
<string name="netConnectionIsBack">Yay, Internet connection is back</string>
<string name="repoNameErrorEmpty">Название репозитория пустое.</string>
<string name="repoNameErrorInvalid">Недоступное название репозитория. [a&#8211;z A&#8211;Z 0&#8211;9 &#8211; _]</string>
<string name="repoNameErrorReservedName">Repository name is reserved</string>
<string name="repoNameErrorReservedPatterns">Repository name contains reserved keywords</string>
<string name="repoNameErrorReservedName">Название репозитория зарезервировано</string>
<string name="repoNameErrorReservedPatterns">Имя репозитория содержит зарезервированные ключевые слова</string>
<string name="repoDescError">Описание репозитория превышает 255 символов.</string>
<string name="repoCreated">Репозиторий успешно создан!</string>
<string name="repoCreatedError">Что-то пошло не так. Пожалуйста, попытайтесь еще раз.</string>
@ -184,10 +185,10 @@
<string name="noLabelsFound">Меток не обнаружено</string>
<!-- settings -->
<string name="settingsLanguageHeaderText">Перевод</string>
<string name="settingsSecurityHeader">Security</string>
<string name="settingsCertsSelectorHeader">Delete Trusted Certificates</string>
<string name="settingsCertsPopupTitle">Delete Trusted Certificates?</string>
<string name="settingsCertsPopupMessage">Are you sure to delete any manually trusted certificate or hostname? \n\nYou will also be logged out.</string>
<string name="settingsSecurityHeader">Безопасность</string>
<string name="settingsCertsSelectorHeader">Удалить доверенные сертификаты</string>
<string name="settingsCertsPopupTitle">Удалить доверенные сертификаты?</string>
<string name="settingsCertsPopupMessage">Вы уверены, что хотите удалить любой вручную доверенный сертификат или имя хоста? \n\nВы также выйдите из системы.</string>
<string name="settingsDateTimeHeaderText">Дата и время</string>
<string name="settingsSave">Сохранено</string>
<string name="settingsLanguageSelectorHeader">Язык</string>
@ -210,7 +211,7 @@
<string name="themeSelectionHeaderText">Тема</string>
<string name="settingsPdfModeHeaderText">Ночной режим PDF</string>
<string name="fileViewerHeader">Просмотрщик файла</string>
<string name="settingsCounterBadges">Counter Badges</string>
<string name="settingsCounterBadges">Значки счётчика</string>
<!-- settings -->
<string name="noMoreData">Больше даных нет</string>
<string name="createLabel">Создание метки</string>
@ -307,6 +308,8 @@
<string name="addRemoveAssignees2">Добавить исполнителей</string>
<string name="addRemoveAssignees">Добавить / удалить исполнителей</string>
<string name="assigneesUpdated">Исполнители обновлены</string>
<string name="singleIssueSubscribe">Subscribe</string>
<string name="singleIssueUnSubscribe">Unsubscribe</string>
<!-- single issue section -->
<!-- multi select dialog -->
<string name="select_entry">Выбрать записи</string>
@ -412,7 +415,7 @@
<string name="emptyFields">Все поля обязательны для заполнения</string>
<string name="textContinue">Продолжить</string>
<string name="copyToken">Токен</string>
<string name="viewInBrowser">View in Browser</string>
<string name="viewInBrowser">Просмотреть в браузере</string>
<!-- generic copy -->
<string name="translateText">Перевести GitNex на Crowdin</string>
<string name="exploreTextBoxHint">Просмотреть репозитории</string>
@ -455,26 +458,30 @@
<string name="waitLoadingDownloadFile">Пожалуйста дождитесь загрузки файла</string>
<string name="downloadFileSaved">Файл сохранен в папку Загрузки</string>
<string name="excludeFilesInFileviewer">Этот тип файла не поддерживается в средстве просмотра файлов. Загрузить его?</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="repositoryTabCommits">Commits</string>
<string name="commitTitle">Branch Commits</string>
<string name="commitCommittedBy">Committed by %1$s</string>
<string name="viewCommits">View Commits</string>
<string name="sizeCopy">Размер</string>
<string name="shareIssue">Поделиться задачей</string>
<string name="sharePr">Поделиться запросом на слияние</string>
<string name="shareRepository">Поделиться репозиторием</string>
<string name="createRepository">Создать репозиторий</string>
<string name="repositoryTabCommits">Коммиты</string>
<string name="commitTitle">Коммиты ветки</string>
<string name="commitCommittedBy">Коммит от %1$s</string>
<string name="viewCommits">Просмотр коммитов</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_servername">Accept Mismatching Server Name?</string>
<string name="mtm_hostname_mismatch">Server could not authenticate as \&quot;%s\&quot;. 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_once">Once</string>
<string name="mtm_decision_abort">Abort</string>
<string name="issueCommentShare">Share Comment</string>
<string name="mtm_notification">Проверка сертификата</string>
<string name="mtm_accept_cert">Принять неизвестный сертификат?</string>
<string name="mtm_trust_anchor">Сертификат сервера не подписан известным центром сертификации.</string>
<string name="mtm_cert_expired">Срок действия сертификата сервера истек.</string>
<string name="mtm_accept_servername">Имя сервера не совпадает. Принять?</string>
<string name="mtm_hostname_mismatch">Сервер не может быть опознан как \&quot;%s\&quot;. Сертификат действителен только для:</string>
<string name="mtm_connect_anyway">Вы все равно хотите продолжить?</string>
<string name="mtm_cert_details">Детали о сертификате:</string>
<string name="mtm_decision_always">Доверять</string>
<string name="mtm_decision_once">Один раз</string>
<string name="mtm_decision_abort">Прервать</string>
<string name="issueCommentShare">Поделиться комментарием</string>
<string name="issueSubscribtion">Issue Subscribed</string>
<string name="issueSubscribtionError">Issue Subscription failed</string>
<string name="issueUnsubscribtion">Issue Unsubscribed</string>
<string name="issueUnsubscribtionError">Issue Un-Subscription failed</string>
</resources>

View File

@ -70,6 +70,7 @@
<string name="emptyFieldUsername">Корисничко име је обавезно</string>
<string name="emptyFieldPassword">Лозинка је обавезна</string>
<string name="checkNetConnection">Не могу да приступим мрежи, провери интернет конекцију</string>
<string name="netConnectionIsBack">Yay, Internet connection is back</string>
<string name="repoNameErrorEmpty">Назив репозиторијума је обавезан</string>
<string name="repoNameErrorInvalid">Назив репозиторијума није валидан [a&#8211;z A&#8211;Z 0&#8211;9 &#8211; _]</string>
<string name="repoNameErrorReservedName">Repository name is reserved</string>
@ -307,6 +308,8 @@
<string name="addRemoveAssignees2">Додели</string>
<string name="addRemoveAssignees">Додај или уклони задужене</string>
<string name="assigneesUpdated">Задужења су ажурирана</string>
<string name="singleIssueSubscribe">Subscribe</string>
<string name="singleIssueUnSubscribe">Unsubscribe</string>
<!-- single issue section -->
<!-- multi select dialog -->
<string name="select_entry">Одабери</string>
@ -477,4 +480,8 @@
<string name="mtm_decision_once">Once</string>
<string name="mtm_decision_abort">Abort</string>
<string name="issueCommentShare">Share Comment</string>
<string name="issueSubscribtion">Issue Subscribed</string>
<string name="issueSubscribtionError">Issue Subscription failed</string>
<string name="issueUnsubscribtion">Issue Unsubscribed</string>
<string name="issueUnsubscribtionError">Issue Un-Subscription failed</string>
</resources>

View File

@ -70,6 +70,7 @@
<string name="emptyFieldUsername">Kullanıcı adı gerekli</string>
<string name="emptyFieldPassword">Parola gerekli</string>
<string name="checkNetConnection">Ağa erişilemiyor, lütfen internet bağlantınızı kontrol edin</string>
<string name="netConnectionIsBack">Yay, Internet connection is back</string>
<string name="repoNameErrorEmpty">Depo adı boş</string>
<string name="repoNameErrorInvalid">Depo adı geçerli değil. [a&#8211;z A&#8211;Z 0&#8211;9 &#8211; _]</string>
<string name="repoNameErrorReservedName">Repository name is reserved</string>
@ -307,6 +308,8 @@
<string name="addRemoveAssignees2">Atanan Ekle</string>
<string name="addRemoveAssignees">Atanan Ekle/Kaldır</string>
<string name="assigneesUpdated">Atanan güncellendi</string>
<string name="singleIssueSubscribe">Subscribe</string>
<string name="singleIssueUnSubscribe">Unsubscribe</string>
<!-- single issue section -->
<!-- multi select dialog -->
<string name="select_entry">Öğeleri Seç</string>
@ -477,4 +480,8 @@
<string name="mtm_decision_once">Once</string>
<string name="mtm_decision_abort">Abort</string>
<string name="issueCommentShare">Share Comment</string>
<string name="issueSubscribtion">Issue Subscribed</string>
<string name="issueSubscribtionError">Issue Subscription failed</string>
<string name="issueUnsubscribtion">Issue Unsubscribed</string>
<string name="issueUnsubscribtionError">Issue Un-Subscription failed</string>
</resources>

View File

@ -70,6 +70,7 @@
<string name="emptyFieldUsername">Ім\'я користувача є обов\'язковим</string>
<string name="emptyFieldPassword">Пароль є обов\'язковим</string>
<string name="checkNetConnection">Неможливо отримати доступ до мережі, будь ласка, перевірте підключення до Інтернету</string>
<string name="netConnectionIsBack">Yay, Internet connection is back</string>
<string name="repoNameErrorEmpty">Назва репозиторія порожня</string>
<string name="repoNameErrorInvalid">Назва репозиторія некоректна. [a&#8211;z A&#8211;Z 0&#8211;9 &#8211; _]</string>
<string name="repoNameErrorReservedName">Repository name is reserved</string>
@ -307,6 +308,8 @@
<string name="addRemoveAssignees2">Додати виконавців</string>
<string name="addRemoveAssignees">Додати / Видалити виконавців</string>
<string name="assigneesUpdated">Виконавців оновлено</string>
<string name="singleIssueSubscribe">Subscribe</string>
<string name="singleIssueUnSubscribe">Unsubscribe</string>
<!-- single issue section -->
<!-- multi select dialog -->
<string name="select_entry">Обрати записи</string>
@ -477,4 +480,8 @@
<string name="mtm_decision_once">Once</string>
<string name="mtm_decision_abort">Abort</string>
<string name="issueCommentShare">Share Comment</string>
<string name="issueSubscribtion">Issue Subscribed</string>
<string name="issueSubscribtionError">Issue Subscription failed</string>
<string name="issueUnsubscribtion">Issue Unsubscribed</string>
<string name="issueUnsubscribtionError">Issue Un-Subscription failed</string>
</resources>

View File

@ -70,6 +70,7 @@
<string name="emptyFieldUsername">用户名必填</string>
<string name="emptyFieldPassword">密码为必填</string>
<string name="checkNetConnection">连接错误: 请检查您的网络连接</string>
<string name="netConnectionIsBack">Yay, Internet connection is back</string>
<string name="repoNameErrorEmpty">仓库名称为空</string>
<string name="repoNameErrorInvalid">仓库名称无效。[a&#8211;z A&#8211;Z 0&#8211;9 &#8211; _]</string>
<string name="repoNameErrorReservedName">Repository name is reserved</string>
@ -307,6 +308,8 @@
<string name="addRemoveAssignees2">添加被指派人</string>
<string name="addRemoveAssignees">添加/移除分配人</string>
<string name="assigneesUpdated">受让人已更新</string>
<string name="singleIssueSubscribe">Subscribe</string>
<string name="singleIssueUnSubscribe">Unsubscribe</string>
<!-- single issue section -->
<!-- multi select dialog -->
<string name="select_entry">选择条目</string>
@ -477,4 +480,8 @@
<string name="mtm_decision_once">Once</string>
<string name="mtm_decision_abort">Abort</string>
<string name="issueCommentShare">Share Comment</string>
<string name="issueSubscribtion">Issue Subscribed</string>
<string name="issueSubscribtionError">Issue Subscription failed</string>
<string name="issueUnsubscribtion">Issue Unsubscribed</string>
<string name="issueUnsubscribtionError">Issue Un-Subscription failed</string>
</resources>

View File

@ -6,5 +6,6 @@
<dimen name="tooltipCornor">5dp</dimen>
<dimen name="fab_margin">16dp</dimen>
<dimen name="fab_padding">15dp</dimen>
<dimen name="appbar_padding_top">8dp</dimen>
</resources>

View File

@ -165,6 +165,9 @@
<string name="infoTabRepoZero" translatable="false">0</string>
<string name="infoTabRepoDefaultBranchText" translatable="false">master</string>
<string name="infoShowMoreInformation">Show more information</string>
<string name="infoMoreInformation">More information</string>
<string name="timeAtText">at</string>
<string name="hash" translatable="false">#</string>
<string name="createdText">Opened\u0020</string>
@ -451,6 +454,7 @@
<string name="repoWatchersInMenu">Watchers</string>
<string name="noDataStargazers">No stars found</string>
<string name="noDataWatchers">No watchers found</string>
<string name="noDataWebsite">No website found</string>
<string name="starMember">Star</string>
<string name="watcherMember">Watcher</string>