diff --git a/app/src/main/java/org/mian/gitnex/activities/RepoDetailActivity.java b/app/src/main/java/org/mian/gitnex/activities/RepoDetailActivity.java index ae249f77..20c83d77 100644 --- a/app/src/main/java/org/mian/gitnex/activities/RepoDetailActivity.java +++ b/app/src/main/java/org/mian/gitnex/activities/RepoDetailActivity.java @@ -50,7 +50,9 @@ import android.net.Uri; public class RepoDetailActivity extends BaseActivity implements BottomSheetRepoFragment.BottomSheetListener { - private TextView textViewBadge; + private TextView textViewBadgeIssue; + private TextView textViewBadgePull; + private TextView textViewBadgeRelease; @Override protected int getLayoutResourceId(){ @@ -129,25 +131,55 @@ public class RepoDetailActivity extends BaseActivity implements BottomSheetRepoF mViewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); tabLayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(mViewPager)); - if(tinyDb.getBoolean("enableCounterIssueBadge")) { + if(tinyDb.getBoolean("enableCounterBadges")) { - @SuppressLint("InflateParams") View tabHeader = LayoutInflater.from(this).inflate(R.layout.badge, null); - textViewBadge = tabHeader.findViewById(R.id.counterBadge); - if(!tinyDb.getString("issuesCounter").isEmpty()) { - getRepoInfo(instanceUrl, Authorization.returnAuthentication(getApplicationContext(), loginUid, instanceToken), repoOwner, repoName1); - } - Objects.requireNonNull(tabLayout.getTabAt(2)).setCustomView(tabHeader); + @SuppressLint("InflateParams") View tabHeader2 = LayoutInflater.from(this).inflate(R.layout.badge_issue, null); + textViewBadgeIssue = tabHeader2.findViewById(R.id.counterBadgeIssue); - TabLayout.Tab tabOpenIssues = tabLayout.getTabAt(2); + @SuppressLint("InflateParams") View tabHeader4 = LayoutInflater.from(this).inflate(R.layout.badge_pull, null); + textViewBadgePull = tabHeader4.findViewById(R.id.counterBadgePull); + + @SuppressLint("InflateParams") View tabHeader6 = LayoutInflater.from(this).inflate(R.layout.badge_release, null); + textViewBadgeRelease = tabHeader6.findViewById(R.id.counterBadgeRelease); + + textViewBadgeIssue.setVisibility(View.GONE); + textViewBadgePull.setVisibility(View.GONE); + textViewBadgeRelease.setVisibility(View.GONE); + + getRepoInfo(instanceUrl, Authorization.returnAuthentication(getApplicationContext(), loginUid, instanceToken), repoOwner, repoName1); ColorStateList textColor = tabLayout.getTabTextColors(); - assert tabOpenIssues != null; - TextView openIssueTabView = Objects.requireNonNull(tabOpenIssues.getCustomView()).findViewById(R.id.counterBadgeText); - openIssueTabView.setTextColor(textColor); + // issue count + if (textViewBadgeIssue.getText() != "") { + TabLayout.Tab tabOpenIssues = tabLayout.getTabAt(2); + Objects.requireNonNull(tabLayout.getTabAt(2)).setCustomView(tabHeader2); + assert tabOpenIssues != null; + TextView openIssueTabView = Objects.requireNonNull(tabOpenIssues.getCustomView()).findViewById(R.id.counterBadgeIssueText); + openIssueTabView.setTextColor(textColor); + } + + // pull count + if (textViewBadgePull.getText() != "") { // only show if API returned a number + Objects.requireNonNull(tabLayout.getTabAt(4)).setCustomView(tabHeader4); + TabLayout.Tab tabOpenPulls = tabLayout.getTabAt(4); + assert tabOpenPulls != null; + TextView openPullTabView = Objects.requireNonNull(tabOpenPulls.getCustomView()).findViewById(R.id.counterBadgePullText); + openPullTabView.setTextColor(textColor); + } + + // release count + if (textViewBadgeRelease.getText() != "") { // only show if API returned a number + Objects.requireNonNull(tabLayout.getTabAt(6)).setCustomView(tabHeader6); + TabLayout.Tab tabOpenRelease = tabLayout.getTabAt(6); + assert tabOpenRelease != null; + TextView openReleaseTabView = Objects.requireNonNull(tabOpenRelease.getCustomView()).findViewById(R.id.counterBadgeReleaseText); + openReleaseTabView.setTextColor(textColor); + } } checkRepositoryStarStatus(instanceUrl, Authorization.returnAuthentication(getApplicationContext(), loginUid, instanceToken), repoOwner, repoName1); checkRepositoryWatchStatus(instanceUrl, Authorization.returnAuthentication(getApplicationContext(), loginUid, instanceToken), repoOwner, repoName1); + } @Override @@ -166,13 +198,16 @@ public class RepoDetailActivity extends BaseActivity implements BottomSheetRepoF if(tinyDb.getBoolean("enableCounterIssueBadge")) { getRepoInfo(instanceUrl, Authorization.returnAuthentication(getApplicationContext(), loginUid, instanceToken), repoOwner, repoName); } + } @Override public boolean onCreateOptionsMenu(Menu menu) { + MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.repo_dotted_menu, menu); return true; + } @Override @@ -294,6 +329,8 @@ public class RepoDetailActivity extends BaseActivity implements BottomSheetRepoF private void getRepoInfo(String instanceUrl, String token, final String owner, String repo) { + TinyDB tinyDb = new TinyDB(getApplicationContext()); + Call call = RetrofitClient .getInstance(instanceUrl, getApplicationContext()) .getApiInterface() @@ -310,8 +347,24 @@ public class RepoDetailActivity extends BaseActivity implements BottomSheetRepoF if (response.code() == 200) { - assert repoInfo != null; - textViewBadge.setText(repoInfo.getOpen_issues_count()); + if(tinyDb.getBoolean("enableCounterBadges")) { + assert repoInfo != null; + + if(repoInfo.getOpen_issues_count() != null) { + textViewBadgeIssue.setVisibility(View.VISIBLE); + textViewBadgeIssue.setText(repoInfo.getOpen_issues_count()); + } + + if(repoInfo.getOpen_pull_count() != null) { + textViewBadgePull.setVisibility(View.VISIBLE); + textViewBadgePull.setText(repoInfo.getOpen_pull_count()); + } + + if(repoInfo.getRelease_count() != null) { + textViewBadgeRelease.setVisibility(View.VISIBLE); + textViewBadgeRelease.setText(repoInfo.getRelease_count()); + } + } } @@ -326,6 +379,7 @@ public class RepoDetailActivity extends BaseActivity implements BottomSheetRepoF public void onFailure(@NonNull Call call, @NonNull Throwable t) { Log.e("onFailure", t.toString()); } + }); } diff --git a/app/src/main/java/org/mian/gitnex/fragments/IssuesOpenFragment.java b/app/src/main/java/org/mian/gitnex/fragments/IssuesOpenFragment.java index 46b70dbc..8a1f2727 100644 --- a/app/src/main/java/org/mian/gitnex/fragments/IssuesOpenFragment.java +++ b/app/src/main/java/org/mian/gitnex/fragments/IssuesOpenFragment.java @@ -62,7 +62,6 @@ public class IssuesOpenFragment extends Fragment { TinyDB tinyDb = new TinyDB(getContext()); String repoFullName = tinyDb.getString("repoFullName"); - //Log.i("repoFullName", tinyDb.getString("repoFullName")); String[] parts = repoFullName.split("/"); final String repoOwner = parts[0]; final String repoName = parts[1]; diff --git a/app/src/main/java/org/mian/gitnex/fragments/SettingsFragment.java b/app/src/main/java/org/mian/gitnex/fragments/SettingsFragment.java index 0c87a21f..b0d8f2e5 100644 --- a/app/src/main/java/org/mian/gitnex/fragments/SettingsFragment.java +++ b/app/src/main/java/org/mian/gitnex/fragments/SettingsFragment.java @@ -8,7 +8,6 @@ import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.CompoundButton; import android.widget.LinearLayout; import android.widget.Switch; import android.widget.TextView; @@ -71,18 +70,18 @@ public class SettingsFragment extends Fragment { LinearLayout themeFrame = v.findViewById(R.id.themeSelectionFrame); LinearLayout certsFrame = v.findViewById(R.id.certsFrame); - Switch issuesSwitch = v.findViewById(R.id.switchIssuesBadge); + Switch counterBadgesSwitch = v.findViewById(R.id.switchCounterBadge); Switch pdfModeSwitch = v.findViewById(R.id.switchPdfMode); TextView helpTranslate = v.findViewById(R.id.helpTranslate); - helpTranslate.setOnClickListener(new View.OnClickListener() { - public void onClick(View v) { - 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); - } + 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); + }); if(!tinyDb.getString("localeStr").isEmpty()) { @@ -133,11 +132,11 @@ public class SettingsFragment extends Fragment { themeSelectedChoice = tinyDb.getInt("themeId"); } - if(tinyDb.getBoolean("enableCounterIssueBadge")) { - issuesSwitch.setChecked(true); + if(tinyDb.getBoolean("enableCounterBadges")) { + counterBadgesSwitch.setChecked(true); } else { - issuesSwitch.setChecked(false); + counterBadgesSwitch.setChecked(false); } if(tinyDb.getBoolean("enablePdfMode")) { @@ -169,345 +168,310 @@ public class SettingsFragment extends Fragment { }); - // issues badge switcher - issuesSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - if (isChecked) { - tinyDb.putBoolean("enableCounterIssueBadge", true); - tinyDb.putString("enableCounterIssueBadgeInit", "yes"); - Toasty.info(getContext(), getResources().getString(R.string.settingsSave)); - } else { - tinyDb.putBoolean("enableCounterIssueBadge", false); - tinyDb.putString("enableCounterIssueBadgeInit", "yes"); - Toasty.info(getContext(), getResources().getString(R.string.settingsSave)); - } + // 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(new CompoundButton.OnCheckedChangeListener() { - public void onCheckedChanged(CompoundButton buttonView, boolean 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)); - } + 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)); + } + }); // theme selection dialog - themeFrame.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { + themeFrame.setOnClickListener(view -> { - AlertDialog.Builder tsBuilder = new AlertDialog.Builder(ctx); - - tsBuilder.setTitle(R.string.themeSelectorDialogTitle); - if(themeSelectedChoice != -1) { - tsBuilder.setCancelable(true); - } - else { - tsBuilder.setCancelable(false); - } - - tsBuilder.setSingleChoiceItems(themeList, themeSelectedChoice, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialogInterfaceTheme, int 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)); - - } - }); - - AlertDialog cfDialog = tsBuilder.create(); - cfDialog.show(); + AlertDialog.Builder tsBuilder = new AlertDialog.Builder(ctx); + tsBuilder.setTitle(R.string.themeSelectorDialogTitle); + if(themeSelectedChoice != -1) { + tsBuilder.setCancelable(true); } + else { + tsBuilder.setCancelable(false); + } + + tsBuilder.setSingleChoiceItems(themeList, themeSelectedChoice, (dialogInterfaceTheme, 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)); + + }); + + AlertDialog cfDialog = tsBuilder.create(); + cfDialog.show(); + }); // custom font dialog - customFontFrame.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { + 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, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialogInterfaceCustomFont, int 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)); - - } - }); - - AlertDialog cfDialog = cfBuilder.create(); - cfDialog.show(); + 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) -> { + + 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)); + + }); + + AlertDialog cfDialog = cfBuilder.create(); + cfDialog.show(); + }); // home screen dialog - homeScreenFrame.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { + homeScreenFrame.setOnClickListener(view -> { - 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, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialogInterfaceHomeScreen, int 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(); + 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(new View.OnClickListener() { - @Override - public void onClick(View view) { + 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, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialogInterfaceCodeBlock, int 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(); + 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(new View.OnClickListener() { - @Override - public void onClick(View view) { + 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, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialogInterface, int 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 "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), new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - } - }); - - AlertDialog lDialog = lBuilder.create(); - lDialog.show(); + 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 "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(new View.OnClickListener() { - @Override - public void onClick(View view) { + 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, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialogInterfaceTime, int 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(); + 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; + } } diff --git a/app/src/main/java/org/mian/gitnex/models/PullRequests.java b/app/src/main/java/org/mian/gitnex/models/PullRequests.java index 9b479551..7c5573a1 100644 --- a/app/src/main/java/org/mian/gitnex/models/PullRequests.java +++ b/app/src/main/java/org/mian/gitnex/models/PullRequests.java @@ -80,6 +80,8 @@ public class PullRequests { private int forks_count; private int id; private int open_issues_count; + private int open_pr_counter; + private int release_counter; private int size; private int stars_count; private int watchers_count; @@ -256,6 +258,14 @@ public class PullRequests { return open_issues_count; } + public int getOpen_pull_count() { + return open_pr_counter; + } + + public int getRelease_count() { + return release_counter; + } + public int getSize() { return size; } diff --git a/app/src/main/java/org/mian/gitnex/models/UserRepositories.java b/app/src/main/java/org/mian/gitnex/models/UserRepositories.java index d5d3a869..45c9fe32 100644 --- a/app/src/main/java/org/mian/gitnex/models/UserRepositories.java +++ b/app/src/main/java/org/mian/gitnex/models/UserRepositories.java @@ -18,6 +18,8 @@ public class UserRepositories { private String stars_count; private String watchers_count; private String open_issues_count; + private String open_pr_counter; + private String release_counter; private String html_url; private String default_branch; private Date created_at; @@ -54,6 +56,14 @@ public class UserRepositories { return stars_count; } + public String getOpen_pull_count() { + return open_pr_counter; + } + + public String getRelease_count() { + return release_counter; + } + public String getWatchers_count() { return watchers_count; } diff --git a/app/src/main/res/layout/badge.xml b/app/src/main/res/layout/badge_issue.xml similarity index 82% rename from app/src/main/res/layout/badge.xml rename to app/src/main/res/layout/badge_issue.xml index 263e4596..f8972ead 100644 --- a/app/src/main/res/layout/badge.xml +++ b/app/src/main/res/layout/badge_issue.xml @@ -1,12 +1,11 @@ diff --git a/app/src/main/res/layout/badge_pull.xml b/app/src/main/res/layout/badge_pull.xml new file mode 100644 index 00000000..414351ee --- /dev/null +++ b/app/src/main/res/layout/badge_pull.xml @@ -0,0 +1,30 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/badge_release.xml b/app/src/main/res/layout/badge_release.xml new file mode 100644 index 00000000..13c26d02 --- /dev/null +++ b/app/src/main/res/layout/badge_release.xml @@ -0,0 +1,30 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/layout_settings_appearance.xml b/app/src/main/res/layout/layout_settings_appearance.xml index 6e41f2f3..7e902edb 100644 --- a/app/src/main/res/layout/layout_settings_appearance.xml +++ b/app/src/main/res/layout/layout_settings_appearance.xml @@ -109,25 +109,25 @@ Dark PDF Night Mode File Viewer + Counter Badges No more data available diff --git a/build.gradle b/build.gradle index 9aea99c1..e6f18503 100644 --- a/build.gradle +++ b/build.gradle @@ -7,7 +7,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:3.6.1' + classpath 'com.android.tools.build:gradle:3.6.2' } }