diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 840c9b46..0eab7a1f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -9,9 +9,10 @@ fileDownloadActivityResultLauncher = registerForActivityResult( - new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallback() { - - @Override - public void onActivityResult(ActivityResult result) { + ActivityResultLauncher fileDownloadActivityResultLauncher = + registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> { if (result.getResultCode() == Activity.RESULT_OK) { @@ -443,15 +440,14 @@ public class FileViewActivity extends BaseActivity implements BottomSheetFileVie outputStream.close(); Toasty.success(ctx, getString(R.string.downloadFileSaved)); - } catch(IOException e) { Log.e("errorFileDownloading", Objects.requireNonNull(e.getMessage())); } } - } - }); + + }); private void initCloseListener() { diff --git a/app/src/main/java/org/mian/gitnex/activities/MainActivity.java b/app/src/main/java/org/mian/gitnex/activities/MainActivity.java index 8923940b..764161ba 100644 --- a/app/src/main/java/org/mian/gitnex/activities/MainActivity.java +++ b/app/src/main/java/org/mian/gitnex/activities/MainActivity.java @@ -214,7 +214,7 @@ public class MainActivity extends BaseActivity implements NavigationView.OnNavig Menu menu = navigationView.getMenu(); navNotifications = menu.findItem(R.id.nav_notifications); - ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); + ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawer, toolbar, R.string.navigationDrawerOpen, R.string.navigationDrawerClose); drawer.addDrawerListener(toggle); drawer.addDrawerListener(new DrawerLayout.DrawerListener() { diff --git a/app/src/main/java/org/mian/gitnex/activities/SettingsFileViewerActivity.java b/app/src/main/java/org/mian/gitnex/activities/SettingsFileViewerActivity.java index 42f37e8c..d3e86f63 100644 --- a/app/src/main/java/org/mian/gitnex/activities/SettingsFileViewerActivity.java +++ b/app/src/main/java/org/mian/gitnex/activities/SettingsFileViewerActivity.java @@ -54,7 +54,7 @@ public class SettingsFileViewerActivity extends BaseActivity { AlertDialog.Builder fvtsBuilder = new AlertDialog.Builder(SettingsFileViewerActivity.this); - fvtsBuilder.setTitle(R.string.fileviewerSourceCodeThemeSelectorDialogTitle); + fvtsBuilder.setTitle(R.string.fileViewerSourceCodeThemeSelectorDialogTitle); fvtsBuilder.setCancelable(fileViewerSourceCodeThemesSelectedChoice != -1); fvtsBuilder.setSingleChoiceItems(fileViewerSourceCodeThemesList, fileViewerSourceCodeThemesSelectedChoice, (dialogInterfaceTheme, i) -> { diff --git a/app/src/main/java/org/mian/gitnex/activities/SettingsGeneralActivity.java b/app/src/main/java/org/mian/gitnex/activities/SettingsGeneralActivity.java index a96bbb2c..f63762a5 100644 --- a/app/src/main/java/org/mian/gitnex/activities/SettingsGeneralActivity.java +++ b/app/src/main/java/org/mian/gitnex/activities/SettingsGeneralActivity.java @@ -113,7 +113,7 @@ public class SettingsGeneralActivity extends BaseActivity { // home screen // link handler - String[] defaultScreen_ = {getResources().getString(R.string.generalDeepLinkSelectedText), getResources().getString(R.string.navRepos), getResources().getString(R.string.navOrgs), getResources().getString(R.string.pageTitleNotifications), getResources().getString(R.string.navExplore)}; + String[] defaultScreen_ = {getResources().getString(R.string.generalDeepLinkSelectedText), getResources().getString(R.string.navRepos), getResources().getString(R.string.navOrg), getResources().getString(R.string.pageTitleNotifications), getResources().getString(R.string.navExplore)}; defaultScreen = new ArrayList<>(Arrays.asList(defaultScreen_)); String[] linksArray = new String[defaultScreen.size()]; @@ -131,7 +131,7 @@ public class SettingsGeneralActivity extends BaseActivity { } else if(defaultLinkHandlerScreenSelectedChoice == 2) { - viewBinding.generalDeepLinkSelected.setText(getResources().getString(R.string.navOrgs)); + viewBinding.generalDeepLinkSelected.setText(getResources().getString(R.string.navOrg)); } else if(defaultLinkHandlerScreenSelectedChoice == 3) { diff --git a/app/src/main/java/org/mian/gitnex/activities/SettingsNotificationsActivity.java b/app/src/main/java/org/mian/gitnex/activities/SettingsNotificationsActivity.java index 3a231f34..b668625b 100644 --- a/app/src/main/java/org/mian/gitnex/activities/SettingsNotificationsActivity.java +++ b/app/src/main/java/org/mian/gitnex/activities/SettingsNotificationsActivity.java @@ -10,7 +10,7 @@ import org.mian.gitnex.R; import org.mian.gitnex.databinding.ActivitySettingsNotificationsBinding; import org.mian.gitnex.helpers.StaticGlobalVariables; import org.mian.gitnex.helpers.Toasty; -import org.mian.gitnex.notifications.NotificationsMaster; +import org.mian.gitnex.notifications.Notifications; /** * Template Author M M Arif @@ -43,7 +43,7 @@ public class SettingsNotificationsActivity extends BaseActivity { viewBinding.enableNotificationsMode.setOnCheckedChangeListener((buttonView, isChecked) -> { tinyDB.putBoolean("notificationsEnabled", isChecked); - if(!isChecked) NotificationsMaster.fireWorker(ctx); + if(!isChecked) Notifications.stopWorker(ctx); Toasty.info(appCtx, getResources().getString(R.string.settingsSave)); }); @@ -66,8 +66,8 @@ public class SettingsNotificationsActivity extends BaseActivity { tinyDB.putInt("pollingDelayMinutes", numberPicker.getValue()); - NotificationsMaster.fireWorker(ctx); - NotificationsMaster.hireWorker(ctx); + Notifications.stopWorker(ctx); + Notifications.startWorker(ctx); viewBinding.pollingDelaySelected.setText(String.format(getString(R.string.pollingDelaySelectedText), numberPicker.getValue())); Toasty.info(appCtx, getResources().getString(R.string.settingsSave)); diff --git a/app/src/main/java/org/mian/gitnex/adapters/PullRequestsAdapter.java b/app/src/main/java/org/mian/gitnex/adapters/PullRequestsAdapter.java index de24d474..0535ca4c 100644 --- a/app/src/main/java/org/mian/gitnex/adapters/PullRequestsAdapter.java +++ b/app/src/main/java/org/mian/gitnex/adapters/PullRequestsAdapter.java @@ -199,7 +199,7 @@ public class PullRequestsAdapter extends RecyclerView.Adapter, FileType> extensions = new HashMap<>(); + + // AppUtil should not be instantiated. + private AppUtil() {} + + static { + + extensions.put(Arrays.asList("jpg", "jpeg", "gif", "png", "ico"), FileType.IMAGE); + extensions.put(Arrays.asList("doc", "docx", "ppt", "pptx", "xls", "xlsx", "xlsm", "odt", "ott", "odf", "ods", "ots", "exe", "jar", "odg", "otg", "odp", "otp", "bin", "dmg", "psd", "xcf", "pdf"), FileType.DOCUMENT); + extensions.put(Arrays.asList("txt", "md", "json", "java", "go", "php", "c", "cc", "cpp", "h", "cxx", "cyc", "m", "cs", "bash", "sh", "bsh", "cv", "python", "perl", "pm", "rb", "ruby", "javascript", "coffee", "rc", "rs", "rust", "basic", "clj", "css", "dart", "lisp", "erl", "hs", "lsp", "rkt", "ss", "llvm", "ll", "lua", "matlab", "pascal", "r", "scala", "sql", "latex", "tex", "vb", "vbs", "vhd", "tcl", "wiki.meta", "yaml", "yml", "markdown", "xml", "proto", "regex", "py", "pl", "js", "html", "htm", "volt", "ini", "htaccess", "conf", "gitignore", "gradle", "txt", "properties", "bat", "twig", "cvs", "cmake", "in", "info", "spec", "m4", "am", "dist", "pam", "hx", "ts"), FileType.TEXT); + } + + public static FileType getFileType(String extension) { + + for(List e : extensions.keySet()) { + + if(e.contains(extension)) { + + return extensions.get(e); + } + } + + return FileType.UNKNOWN; + } + public static boolean hasNetworkConnection(Context context) { return NetworkStatusObserver.get(context).hasNetworkConnection(); @@ -57,19 +86,19 @@ public class AppUtil { return context.getPackageName().equals("org.mian.gitnex.pro"); } - public Boolean checkStringsWithAlphaNumeric(String str) { // [a-zA-Z0-9] + public static Boolean checkStringsWithAlphaNumeric(String str) { // [a-zA-Z0-9] return str.matches("^[\\w]+$"); } - public Boolean checkStrings(String str) { // [a-zA-Z0-9-_. ] + public static Boolean checkStrings(String str) { // [a-zA-Z0-9-_. ] return str.matches("^[\\w .-]+$"); } - public Boolean checkStringsWithAlphaNumericDashDotUnderscore(String str) { // [a-zA-Z0-9-_] + public static Boolean checkStringsWithAlphaNumericDashDotUnderscore(String str) { // [a-zA-Z0-9-_] return str.matches("^[\\w.-]+$"); } - public Boolean checkStringsWithDash(String str) { // [a-zA-Z0-9-_. ] + public static Boolean checkStringsWithDash(String str) { // [a-zA-Z0-9-_. ] return str.matches("^[\\w-]+$"); } @@ -168,7 +197,7 @@ public class AppUtil { } - public String encodeBase64(String str) { + public static String encodeBase64(String str) { String base64Str = str; if(!str.equals("")) { @@ -180,7 +209,7 @@ public class AppUtil { } - public String decodeBase64(String str) { + public static String decodeBase64(String str) { String base64Str = str; if(!str.equals("")) { @@ -192,39 +221,7 @@ public class AppUtil { } - public Boolean sourceCodeExtension(String ext) { - - String[] extValues = new String[]{"md", "json", "java", "go", "php", "c", "cc", "cpp", "h", "cxx", "cyc", "m", "cs", "bash", "sh", "bsh", "cv", "python", "perl", "pm", "rb", "ruby", "javascript", "coffee", "rc", "rs", "rust", "basic", "clj", "css", "dart", "lisp", "erl", "hs", "lsp", "rkt", "ss", "llvm", "ll", "lua", "matlab", "pascal", "r", "scala", "sql", "latex", "tex", "vb", "vbs", "vhd", "tcl", "wiki.meta", "yaml", "yml", "markdown", "xml", "proto", "regex", "py", "pl", "js", "html", "htm", "volt", "ini", "htaccess", "conf", "gitignore", "gradle", "txt", "properties", "bat", "twig", "cvs", "cmake", "in", "info", "spec", "m4", "am", "dist", "pam", "hx", "ts"}; - - return Arrays.asList(extValues).contains(ext); - - } - - public Boolean pdfExtension(String ext) { - - String[] extValues = new String[]{"pdf"}; - - return Arrays.asList(extValues).contains(ext); - - } - - public Boolean imageExtension(String ext) { - - String[] extValues = new String[]{"jpg", "jpeg", "gif", "png", "ico"}; - - return Arrays.asList(extValues).contains(ext); - - } - - public Boolean excludeFilesInFileViewerExtension(String ext) { - - String[] extValues = new String[]{"doc", "docx", "ppt", "pptx", "xls", "xlsx", "xlsm", "odt", "ott", "odf", "ods", "ots", "exe", "jar", "odg", "otg", "odp", "otp", "bin", "dmg", "psd", "xcf"}; - - return Arrays.asList(extValues).contains(ext); - - } - - public String getLastCharactersOfWord(String str, int count) { + public static String getLastCharactersOfWord(String str, int count) { return str.substring(str.length() - count); diff --git a/app/src/main/java/org/mian/gitnex/helpers/Images.java b/app/src/main/java/org/mian/gitnex/helpers/Images.java index 84f62ae4..d3aa82dd 100644 --- a/app/src/main/java/org/mian/gitnex/helpers/Images.java +++ b/app/src/main/java/org/mian/gitnex/helpers/Images.java @@ -9,24 +9,34 @@ import android.graphics.BitmapFactory; public class Images { - public static Bitmap scaleImage(byte[] imageData, int maxSizeWidth, int maxSizeScaledWidth) { + public static Bitmap scaleImage(byte[] imageData, int sizeLimit) { - Bitmap scaledImage; - Bitmap image = BitmapFactory.decodeByteArray(imageData, 0, imageData.length); - int orgWidth = image.getWidth(); - int orgHeight = image.getHeight(); + Bitmap original = BitmapFactory.decodeByteArray(imageData, 0, imageData.length); - if(orgWidth > maxSizeWidth) { + if(original.getHeight() > sizeLimit && original.getWidth() <= original.getHeight()) { + + double reductionPercentage = (double) sizeLimit / original.getHeight(); + + Bitmap scaled = Bitmap.createScaledBitmap(original, (int) (reductionPercentage * original.getWidth()), sizeLimit, false); + original.recycle(); + + return scaled; - int aspectRatio = orgWidth / orgHeight; - int scaledHeight = maxSizeScaledWidth * aspectRatio; - scaledImage = Bitmap.createScaledBitmap(image, maxSizeScaledWidth, scaledHeight, false); } - else { + else if(original.getWidth() > sizeLimit && original.getHeight() < original.getWidth()) { + + double reductionPercentage = (double) sizeLimit / original.getWidth(); + + Bitmap scaled = Bitmap.createScaledBitmap(original, sizeLimit, (int) (reductionPercentage * original.getHeight()), false); + original.recycle(); + + return scaled; - scaledImage = Bitmap.createScaledBitmap(image, orgWidth, orgHeight, false); } - return scaledImage; + // Image size does not exceed bounds. + return original; + } + } diff --git a/app/src/main/java/org/mian/gitnex/helpers/ssl/MemorizingActivity.java b/app/src/main/java/org/mian/gitnex/helpers/ssl/MemorizingActivity.java index 23395ad5..cf31106c 100644 --- a/app/src/main/java/org/mian/gitnex/helpers/ssl/MemorizingActivity.java +++ b/app/src/main/java/org/mian/gitnex/helpers/ssl/MemorizingActivity.java @@ -19,15 +19,15 @@ public class MemorizingActivity extends Activity { Intent intent = getIntent(); int decisionId = intent.getIntExtra("DECISION_INTENT_ID", MTMDecision.DECISION_INVALID); - int titleId = intent.getIntExtra("DECISION_TITLE_ID", R.string.mtm_accept_cert); + int titleId = intent.getIntExtra("DECISION_TITLE_ID", R.string.mtmAcceptCert); String cert = intent.getStringExtra("DECISION_INTENT_CERT"); AlertDialog.Builder builder = new AlertDialog.Builder(MemorizingActivity.this); builder.setTitle(titleId); builder.setMessage(cert); - builder.setPositiveButton(R.string.mtm_decision_always, (dialog, which) -> onSendResult(decisionId, MTMDecision.DECISION_ALWAYS)); - builder.setNeutralButton(R.string.mtm_decision_abort, (dialog, which) -> onSendResult(decisionId, MTMDecision.DECISION_ABORT)); + builder.setPositiveButton(R.string.mtmDecisionAlways, (dialog, which) -> onSendResult(decisionId, MTMDecision.DECISION_ALWAYS)); + builder.setNeutralButton(R.string.mtmDecisionAbort, (dialog, which) -> onSendResult(decisionId, MTMDecision.DECISION_ABORT)); builder.setOnCancelListener(dialog -> onSendResult(decisionId, MTMDecision.DECISION_ABORT)); builder.create().show(); diff --git a/app/src/main/java/org/mian/gitnex/helpers/ssl/MemorizingTrustManager.java b/app/src/main/java/org/mian/gitnex/helpers/ssl/MemorizingTrustManager.java index 2d06e043..cc5161c0 100644 --- a/app/src/main/java/org/mian/gitnex/helpers/ssl/MemorizingTrustManager.java +++ b/app/src/main/java/org/mian/gitnex/helpers/ssl/MemorizingTrustManager.java @@ -449,10 +449,10 @@ public class MemorizingTrustManager implements X509TrustManager { StringBuilder stringBuilder = new StringBuilder(); if(isPathException(e)) { - stringBuilder.append(context.getString(R.string.mtm_trust_anchor)); + stringBuilder.append(context.getString(R.string.mtmTrustAnchor)); } else if(isExpiredException(e)) { - stringBuilder.append(context.getString(R.string.mtm_cert_expired)); + stringBuilder.append(context.getString(R.string.mtmCertExpired)); } else { // get to the cause @@ -464,9 +464,9 @@ public class MemorizingTrustManager implements X509TrustManager { } stringBuilder.append("\n\n"); - stringBuilder.append(context.getString(R.string.mtm_connect_anyway)); + stringBuilder.append(context.getString(R.string.mtmConnectAnyway)); stringBuilder.append("\n\n"); - stringBuilder.append(context.getString(R.string.mtm_cert_details)); + stringBuilder.append(context.getString(R.string.mtmCertDetails)); for(X509Certificate c : chain) { certDetails(stringBuilder, c); @@ -479,7 +479,7 @@ public class MemorizingTrustManager implements X509TrustManager { StringBuilder stringBuilder = new StringBuilder(); - stringBuilder.append(context.getString(R.string.mtm_hostname_mismatch, hostname)); + stringBuilder.append(context.getString(R.string.mtmHostnameMismatch, hostname)); stringBuilder.append("\n\n"); try { @@ -510,9 +510,9 @@ public class MemorizingTrustManager implements X509TrustManager { } stringBuilder.append("\n"); - stringBuilder.append(context.getString(R.string.mtm_connect_anyway)); + stringBuilder.append(context.getString(R.string.mtmConnectAnyway)); stringBuilder.append("\n\n"); - stringBuilder.append(context.getString(R.string.mtm_cert_details)); + stringBuilder.append(context.getString(R.string.mtmCertDetails)); certDetails(stringBuilder, cert); return stringBuilder.toString(); } @@ -544,7 +544,7 @@ public class MemorizingTrustManager implements X509TrustManager { private void startActivityNotification(Intent intent, int decisionId, String certName) { final PendingIntent call = PendingIntent.getActivity(context, 0, intent, 0); - final String mtmNotification = context.getString(R.string.mtm_notification); + final String mtmNotification = context.getString(R.string.mtmNotification); NotificationCompat.Builder builder = new NotificationCompat.Builder(context, "ssl") .setSmallIcon(android.R.drawable.ic_lock_lock) @@ -596,7 +596,7 @@ public class MemorizingTrustManager implements X509TrustManager { private void interactCert(final X509Certificate[] chain, String authType, CertificateException cause) throws CertificateException { - if(interact(certChainMessage(chain, cause), R.string.mtm_accept_cert) == MTMDecision.DECISION_ALWAYS) { + if(interact(certChainMessage(chain, cause), R.string.mtmAcceptCert) == MTMDecision.DECISION_ALWAYS) { storeCert(chain[0]); // only store the server cert, not the whole chain } else { throw (cause); @@ -605,7 +605,7 @@ public class MemorizingTrustManager implements X509TrustManager { private boolean interactHostname(X509Certificate cert, String hostname) { - if(interact(hostNameMessage(cert, hostname), R.string.mtm_accept_server_name) == MTMDecision.DECISION_ALWAYS) { + if(interact(hostNameMessage(cert, hostname), R.string.mtmAcceptServerName) == MTMDecision.DECISION_ALWAYS) { storeCert(hostname, cert); return true; } diff --git a/app/src/main/java/org/mian/gitnex/notifications/NotificationsMaster.java b/app/src/main/java/org/mian/gitnex/notifications/Notifications.java similarity index 93% rename from app/src/main/java/org/mian/gitnex/notifications/NotificationsMaster.java rename to app/src/main/java/org/mian/gitnex/notifications/Notifications.java index aca4981e..37d90a5f 100644 --- a/app/src/main/java/org/mian/gitnex/notifications/NotificationsMaster.java +++ b/app/src/main/java/org/mian/gitnex/notifications/Notifications.java @@ -16,7 +16,7 @@ import java.util.concurrent.TimeUnit; * Author opyale */ -public class NotificationsMaster { +public class Notifications { private static int notificationsSupported = -1; @@ -30,12 +30,12 @@ public class NotificationsMaster { } } - public static void fireWorker(Context context) { + public static void stopWorker(Context context) { WorkManager.getInstance(context).cancelAllWorkByTag(context.getPackageName()); } - public static void hireWorker(Context context) { + public static void startWorker(Context context) { TinyDB tinyDB = TinyDB.getInstance(context); diff --git a/app/src/main/java/org/mian/gitnex/notifications/NotificationsWorker.java b/app/src/main/java/org/mian/gitnex/notifications/NotificationsWorker.java index 02724e12..1972f016 100644 --- a/app/src/main/java/org/mian/gitnex/notifications/NotificationsWorker.java +++ b/app/src/main/java/org/mian/gitnex/notifications/NotificationsWorker.java @@ -36,8 +36,8 @@ public class NotificationsWorker extends Worker { private static final int MAXIMUM_NOTIFICATIONS = 100; private static final long[] VIBRATION_PATTERN = new long[]{ 1000, 1000 }; - private Context context; - private TinyDB tinyDB; + private final Context context; + private final TinyDB tinyDB; public NotificationsWorker(@NonNull Context context, @NonNull WorkerParameters workerParams) { @@ -157,7 +157,7 @@ public class NotificationsWorker extends Worker { if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - NotificationChannel notificationChannel = new NotificationChannel(context.getPackageName(), context.getString(R.string.app_name), + NotificationChannel notificationChannel = new NotificationChannel(context.getPackageName(), context.getString(R.string.appName), NotificationManager.IMPORTANCE_DEFAULT); notificationChannel.setDescription(context.getString(R.string.notificationChannelDescription)); diff --git a/app/src/main/res/layout/activity_deeplinks.xml b/app/src/main/res/layout/activity_deeplinks.xml index c47935fd..298aef6f 100644 --- a/app/src/main/res/layout/activity_deeplinks.xml +++ b/app/src/main/res/layout/activity_deeplinks.xml @@ -94,7 +94,7 @@ android:id="@+id/organization" android:layout_width="match_parent" android:layout_height="60dp" - android:text="@string/navOrgs" + android:text="@string/navOrg" android:textColor="@color/btnTextColor" android:textSize="16sp" android:layout_marginTop="8dp" /> diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml index 2e9a4b17..d2bf34ea 100644 --- a/app/src/main/res/layout/activity_login.xml +++ b/app/src/main/res/layout/activity_login.xml @@ -22,7 +22,7 @@ android:layout_marginTop="20dp" android:layout_marginBottom="20dp" android:baselineAligned="false" - android:contentDescription="@string/app_name" + android:contentDescription="@string/appName" android:src="@mipmap/app_logo" /> + android:text="@string/tabTextInfo" /> + android:text="@string/tabTextLabels" /> + android:text="@string/tabTextInfo" /> + android:text="@string/tabTextFiles" /> + android:text="@string/tabTextReleases" /> + android:text="@string/tabTextMl" /> + android:text="@string/tabTextLabels" /> + android:text="@string/tabTextCollaborators" /> diff --git a/app/src/main/res/layout/activity_settings_fileviewer.xml b/app/src/main/res/layout/activity_settings_fileviewer.xml index 6ae20e31..3099c53e 100644 --- a/app/src/main/res/layout/activity_settings_fileviewer.xml +++ b/app/src/main/res/layout/activity_settings_fileviewer.xml @@ -59,7 +59,7 @@ android:layout_marginTop="10dp" android:layout_marginStart="44dp" android:layout_marginEnd="24dp" - android:text="@string/settingsFileviewerSourceCodeHeaderText" + android:text="@string/settingsFileViewerSourceCodeHeaderText" android:textColor="?attr/primaryTextColor"/> diff --git a/app/src/main/res/layout/badge_release.xml b/app/src/main/res/layout/badge_release.xml index 4167accc..37515ae1 100644 --- a/app/src/main/res/layout/badge_release.xml +++ b/app/src/main/res/layout/badge_release.xml @@ -11,7 +11,7 @@ android:gravity="center" android:textSize="16sp" app:textAllCaps="true" - android:text="@string/tab_text_releases" + android:text="@string/tabTextReleases" android:textColor="@color/lightGray" /> diff --git a/app/src/main/res/layout/list_repositories.xml b/app/src/main/res/layout/list_repositories.xml index 42373fbf..498c5785 100644 --- a/app/src/main/res/layout/list_repositories.xml +++ b/app/src/main/res/layout/list_repositories.xml @@ -107,7 +107,7 @@ android:id="@+id/repoFullName" android:layout_width="match_parent" android:layout_height="wrap_content" - android:text="@string/repoFullname" + android:text="@string/repoFullName" android:textColor="?attr/primaryTextColor" android:textSize="16sp" android:textStyle="bold" /> diff --git a/app/src/main/res/menu/drawer_menu.xml b/app/src/main/res/menu/drawer_menu.xml index 22a04944..bf084a1e 100644 --- a/app/src/main/res/menu/drawer_menu.xml +++ b/app/src/main/res/menu/drawer_menu.xml @@ -17,7 +17,7 @@ + android:title="@string/navOrg" /> - GitNex + GitNex gitnex@swatian.com Source code https://codeberg.org/gitnex/GitNex @@ -25,7 +25,7 @@ Repositories Profile Settings - Organizations + Organizations About Rate GitNex Logout @@ -62,7 +62,7 @@ Demo repo - Repo with ORG + Repo with ORG Demo description No repositories found @@ -87,8 +87,8 @@ Password LOGIN Instance URL - Open Navigation Drawer - Close Navigation Drawer + Open Navigation Drawer + Close Navigation Drawer Login to Gitea Protocol 1- Choose the correct protocol(https or http). \n2- Enter Gitea url e.g: try.gitea.io. \n3- If you have enabled 2FA for your account, enter the code in the OTP Code field. \n4- For HTTP basic auth use USERNAME@DOMAIN.COM in the URL field. @@ -136,14 +136,14 @@ Remove Instance has returned an error. Code\u0020 - RepoDetailActivity - Details - Files - Milestones - Releases - Branches - Labels - Collaborators + RepoDetailActivity + Details + Files + Milestones + Releases + Branches + Labels + Collaborators Pull Requests No issues found @@ -252,9 +252,9 @@ PDF Night Mode File Viewer Counter Badges - Source Code Theme - Sublime - Select Source Code Theme + Source Code Theme + Sublime + Select Source Code Theme Data Cache Size Data Cache Size 50 MB @@ -309,7 +309,7 @@ Cancel - OrgDetailActivity + OrgDetailActivity Repositories Teams Members @@ -397,15 +397,6 @@ Unsubscribe - - Select Entries - Please select at least - You can only select up to - option - options - Select all - - Repository Meta @@ -496,7 +487,7 @@ No files found Sorry this file cannot be viewed as API returned an error \u0020:\u0020 - + Files of this type cannot be edited Not supported @@ -556,7 +547,7 @@ Instance has returned an error - Unauthorized. Check your credentials and try again Token is required - Deleted Fork + Deleted Fork No pull requests found Creator :\u0020 Edit Pull Request @@ -586,7 +577,7 @@ Download This File Please wait for the file to load to memory File saved successfully - This file type is not supported in file viewer. Download it instead from the three dotted menu? + This file type is not supported in file viewer. Download it instead from the three dotted menu? Delete This File Edit This File Delete %1$s @@ -605,23 +596,23 @@ Changelog - Certificate Verification - Accept Unknown Certificate? - The server certificate is not signed by a known Certificate Authority - The server certificate is expired. - Accept Mismatching Server Name? - Server could not authenticate as \"%s\". The certificate is only valid for: - Do you want to connect anyway? - Certificate details: - Trust - Abort + Certificate Verification + Accept Unknown Certificate? + The server certificate is not signed by a known Certificate Authority + The server certificate is expired. + Accept Mismatching Server Name? + Server could not authenticate as \"%s\". The certificate is only valid for: + Do you want to connect anyway? + Certificate details: + Trust + Abort Subscribed successfully You have already subscribed Subscription failed Unsubscribed successfully You have already Unsubscribed - Un-Subscription failed + Un-Subscription failed Close Milestone Open Milestone @@ -741,4 +732,5 @@ Grey on Black White on Grey Dark on White +