mirror of
https://codeberg.org/gitnex/GitNex.git
synced 2023-12-13 20:50:18 +01:00
Language statistics
This commit is contained in:
parent
f05f9229f5
commit
56bab586d9
|
@ -56,14 +56,14 @@ configurations {
|
|||
dependencies {
|
||||
def lifecycle_version = '2.6.0'
|
||||
def markwon_version = '4.6.2'
|
||||
def work_version = '2.8.0'
|
||||
def work_version = '2.8.1'
|
||||
def acra = '5.9.7'
|
||||
|
||||
implementation fileTree(include: ['*.jar'], dir: 'libs')
|
||||
implementation 'androidx.appcompat:appcompat:1.6.1'
|
||||
implementation 'com.google.android.material:material:1.9.0-beta01'
|
||||
implementation 'androidx.compose.material3:material3:1.1.0-alpha08'
|
||||
implementation 'androidx.compose.material3:material3-window-size-class:1.1.0-alpha08'
|
||||
implementation 'androidx.compose.material3:material3:1.1.0-beta01'
|
||||
implementation 'androidx.compose.material3:material3-window-size-class:1.1.0-beta01'
|
||||
implementation 'androidx.viewpager2:viewpager2:1.1.0-beta01'
|
||||
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
|
||||
implementation "androidx.legacy:legacy-support-v4:1.0.0"
|
||||
|
@ -103,8 +103,8 @@ dependencies {
|
|||
implementation "ch.acra:acra-mail:$acra"
|
||||
implementation "ch.acra:acra-limiter:$acra"
|
||||
implementation "ch.acra:acra-notification:$acra"
|
||||
implementation 'androidx.room:room-runtime:2.5.0'
|
||||
annotationProcessor 'androidx.room:room-compiler:2.5.0'
|
||||
implementation 'androidx.room:room-runtime:2.5.1'
|
||||
annotationProcessor 'androidx.room:room-compiler:2.5.1'
|
||||
implementation "androidx.work:work-runtime:$work_version"
|
||||
implementation "io.mikael:urlbuilder:2.0.9"
|
||||
implementation "org.codeberg.gitnex-garage:emoji-java:v5.1.2"
|
||||
|
|
|
@ -72,7 +72,7 @@ public class NotesAdapter extends RecyclerView.Adapter<NotesAdapter.NotesViewHol
|
|||
|
||||
materialAlertDialogBuilder
|
||||
.setTitle(ctx.getString(R.string.menuDeleteText))
|
||||
.setMessage(ctx.getString(R.string.noteDeleteDialoMessage))
|
||||
.setMessage(ctx.getString(R.string.noteDeleteDialogMessage))
|
||||
.setPositiveButton(
|
||||
R.string.menuDeleteText,
|
||||
(dialog, whichButton) ->
|
||||
|
|
|
@ -1,18 +1,28 @@
|
|||
package org.mian.gitnex.fragments;
|
||||
|
||||
import static org.mian.gitnex.helpers.languagestatistics.LanguageColor.languageColor;
|
||||
import static org.mian.gitnex.helpers.languagestatistics.LanguageStatisticsHelper.calculatePercentage;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.graphics.Color;
|
||||
import android.os.Bundle;
|
||||
import android.view.Gravity;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.SeekBar;
|
||||
import android.widget.TextView;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import com.amulyakhare.textdrawable.TextDrawable;
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import okhttp3.ResponseBody;
|
||||
import org.apache.commons.io.FileUtils;
|
||||
import org.gitnex.tea4j.v2.models.Organization;
|
||||
|
@ -34,6 +44,7 @@ import org.mian.gitnex.helpers.Markdown;
|
|||
import org.mian.gitnex.helpers.TimeHelper;
|
||||
import org.mian.gitnex.helpers.Toasty;
|
||||
import org.mian.gitnex.helpers.contexts.RepositoryContext;
|
||||
import org.mian.gitnex.helpers.languagestatistics.SeekbarItem;
|
||||
import retrofit2.Call;
|
||||
import retrofit2.Callback;
|
||||
import retrofit2.Response;
|
||||
|
@ -104,6 +115,8 @@ public class RepoInfoFragment extends Fragment {
|
|||
binding.repoMetaPullRequestsFrame.setOnClickListener(
|
||||
metaPR -> ((RepoDetailActivity) requireActivity()).viewPager.setCurrentItem(3));
|
||||
|
||||
setLanguageStatistics();
|
||||
|
||||
return binding.getRoot();
|
||||
}
|
||||
|
||||
|
@ -145,6 +158,201 @@ public class RepoInfoFragment extends Fragment {
|
|||
return binding.repoMetaFrame.getVisibility() == View.VISIBLE;
|
||||
}
|
||||
|
||||
private void setLanguageStatistics() {
|
||||
|
||||
Call<Map<String, Long>> call =
|
||||
RetrofitClient.getApiInterface(getContext())
|
||||
.repoGetLanguages(repository.getOwner(), repository.getName());
|
||||
|
||||
call.enqueue(
|
||||
new Callback<>() {
|
||||
|
||||
@Override
|
||||
public void onResponse(
|
||||
@NonNull Call<Map<String, Long>> call,
|
||||
@NonNull Response<Map<String, Long>> response) {
|
||||
|
||||
if (isAdded()) {
|
||||
|
||||
switch (response.code()) {
|
||||
case 200:
|
||||
assert response.body() != null;
|
||||
if (response.body().size() > 0) {
|
||||
|
||||
ArrayList<SeekbarItem> seekbarItemList = new ArrayList<>();
|
||||
|
||||
float totalSpan =
|
||||
(float)
|
||||
response.body().values().stream()
|
||||
.mapToDouble(a -> a)
|
||||
.sum();
|
||||
|
||||
for (Map.Entry<String, Long> entry :
|
||||
response.body().entrySet()) {
|
||||
|
||||
SeekbarItem seekbarItem = new SeekbarItem();
|
||||
|
||||
seekbarItem.progressItemPercentage =
|
||||
(entry.getValue() / totalSpan) * 100;
|
||||
seekbarItem.color = languageColor(entry.getKey());
|
||||
seekbarItemList.add(seekbarItem);
|
||||
}
|
||||
|
||||
binding.languagesStatistic.setVisibility(View.VISIBLE);
|
||||
binding.languagesStatistic.initData(seekbarItemList);
|
||||
|
||||
binding.languagesStatistic.setOnSeekBarChangeListener(
|
||||
new SeekBar.OnSeekBarChangeListener() {
|
||||
|
||||
@Override
|
||||
public void onStopTrackingTouch(
|
||||
SeekBar seekBar) {}
|
||||
|
||||
@Override
|
||||
public void onStartTrackingTouch(
|
||||
SeekBar seekBar) {}
|
||||
|
||||
@Override
|
||||
public void onProgressChanged(
|
||||
SeekBar seekBar,
|
||||
int progress,
|
||||
boolean fromUser) {
|
||||
|
||||
View view =
|
||||
LayoutInflater.from(ctx)
|
||||
.inflate(
|
||||
R.layout
|
||||
.layout_repo_language_statistics,
|
||||
null);
|
||||
|
||||
LinearLayout.LayoutParams params =
|
||||
new LinearLayout.LayoutParams(
|
||||
LinearLayout.LayoutParams
|
||||
.WRAP_CONTENT,
|
||||
LinearLayout.LayoutParams
|
||||
.WRAP_CONTENT);
|
||||
params.setMargins(0, 32, 32, 0);
|
||||
|
||||
LinearLayout layout =
|
||||
view.findViewById(R.id.lang_color);
|
||||
layout.removeAllViews();
|
||||
|
||||
for (Map.Entry<String, Long> entry :
|
||||
response.body().entrySet()) {
|
||||
|
||||
LinearLayout layoutSub =
|
||||
new LinearLayout(getContext());
|
||||
layoutSub.setOrientation(
|
||||
LinearLayout.HORIZONTAL);
|
||||
layoutSub.setGravity(
|
||||
Gravity.START | Gravity.TOP);
|
||||
layout.addView(layoutSub);
|
||||
|
||||
ImageView colorView =
|
||||
new ImageView(getContext());
|
||||
colorView.setLayoutParams(params);
|
||||
|
||||
String hexColor =
|
||||
String.format(
|
||||
"#%06X",
|
||||
(0xFFFFFF
|
||||
& languageColor(
|
||||
entry
|
||||
.getKey())));
|
||||
TextDrawable drawable =
|
||||
TextDrawable.builder()
|
||||
.beginConfig()
|
||||
.width(64)
|
||||
.height(64)
|
||||
.endConfig()
|
||||
.buildRoundRect(
|
||||
"",
|
||||
Color
|
||||
.parseColor(
|
||||
hexColor),
|
||||
8);
|
||||
drawable.setTint(
|
||||
getResources()
|
||||
.getColor(
|
||||
languageColor(
|
||||
entry
|
||||
.getKey()),
|
||||
null));
|
||||
colorView.setImageDrawable(drawable);
|
||||
layoutSub.addView(colorView);
|
||||
|
||||
TextView langName =
|
||||
new TextView(getContext());
|
||||
langName.setLayoutParams(params);
|
||||
langName.setText(entry.getKey());
|
||||
layoutSub.addView(langName);
|
||||
|
||||
TextView langPercentage =
|
||||
new TextView(getContext());
|
||||
langPercentage.setLayoutParams(params);
|
||||
langPercentage.setTextSize(12);
|
||||
langPercentage.setText(
|
||||
getString(
|
||||
R.string
|
||||
.lang_percentage,
|
||||
calculatePercentage(
|
||||
entry
|
||||
.getValue(),
|
||||
totalSpan)));
|
||||
layoutSub.addView(langPercentage);
|
||||
}
|
||||
|
||||
MaterialAlertDialogBuilder
|
||||
materialAlertDialogBuilder1 =
|
||||
new MaterialAlertDialogBuilder(
|
||||
ctx)
|
||||
.setTitle(
|
||||
R.string
|
||||
.lang_statistics)
|
||||
.setView(view)
|
||||
.setNeutralButton(
|
||||
getString(
|
||||
R
|
||||
.string
|
||||
.close),
|
||||
null);
|
||||
|
||||
materialAlertDialogBuilder1.create().show();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case 401:
|
||||
AlertDialogs.authorizationTokenRevokedDialog(ctx);
|
||||
break;
|
||||
|
||||
case 403:
|
||||
Toasty.error(ctx, ctx.getString(R.string.authorizeError));
|
||||
binding.languagesStatistic.setVisibility(View.GONE);
|
||||
break;
|
||||
|
||||
case 404:
|
||||
binding.languagesStatistic.setVisibility(View.GONE);
|
||||
break;
|
||||
|
||||
default:
|
||||
Toasty.error(getContext(), getString(R.string.genericError));
|
||||
binding.languagesStatistic.setVisibility(View.GONE);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(
|
||||
@NonNull Call<Map<String, Long>> call, @NonNull Throwable t) {
|
||||
Toasty.error(ctx, ctx.getString(R.string.genericServerResponseError));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void setRepoInfo(Locale locale) {
|
||||
Repository repoInfo = repository.getRepository();
|
||||
|
||||
|
|
|
@ -0,0 +1,410 @@
|
|||
package org.mian.gitnex.helpers.languagestatistics;
|
||||
|
||||
import org.mian.gitnex.R;
|
||||
|
||||
/**
|
||||
* @author M M Arif
|
||||
*/
|
||||
public class LanguageColor {
|
||||
|
||||
public static int languageColor(String key) {
|
||||
|
||||
int color;
|
||||
if (key.equalsIgnoreCase("ASP.NET")) {
|
||||
color = R.color.default_lang_color;
|
||||
} else if (key.equalsIgnoreCase("ATS")) {
|
||||
color = R.color.ats;
|
||||
} else if (key.equalsIgnoreCase("ActionScript")) {
|
||||
color = R.color.action_script;
|
||||
} else if (key.equalsIgnoreCase("Ada")) {
|
||||
color = R.color.ada;
|
||||
} else if (key.equalsIgnoreCase("AngelScript")) {
|
||||
color = R.color.angel_script;
|
||||
} else if (key.equalsIgnoreCase("Ant Build System")) {
|
||||
color = R.color.ant_build_system;
|
||||
} else if (key.equalsIgnoreCase("Antlers")) {
|
||||
color = R.color.antlers;
|
||||
} else if (key.equalsIgnoreCase("ApacheConf")) {
|
||||
color = R.color.apache_conf;
|
||||
} else if (key.equalsIgnoreCase("Apex")) {
|
||||
color = R.color.apex;
|
||||
} else if (key.equalsIgnoreCase("AppleScript")) {
|
||||
color = R.color.apple_script;
|
||||
} else if (key.equalsIgnoreCase("AsciiDoc")) {
|
||||
color = R.color.ascii_doc;
|
||||
} else if (key.equalsIgnoreCase("Assembly")) {
|
||||
color = R.color.assembly;
|
||||
} else if (key.equalsIgnoreCase("Awk")) {
|
||||
color = R.color.awk;
|
||||
} else if (key.equalsIgnoreCase("BASIC")) {
|
||||
color = R.color.basic;
|
||||
} else if (key.equalsIgnoreCase("Batchfile")) {
|
||||
color = R.color.batch_file;
|
||||
} else if (key.equalsIgnoreCase("Bison")) {
|
||||
color = R.color.bison;
|
||||
} else if (key.equalsIgnoreCase("Blade")) {
|
||||
color = R.color.blade;
|
||||
} else if (key.equalsIgnoreCase("C")) {
|
||||
color = R.color.c;
|
||||
} else if (key.equalsIgnoreCase("C#")) {
|
||||
color = R.color.c_sharp;
|
||||
} else if (key.equalsIgnoreCase("C++")) {
|
||||
color = R.color.c_plus_plus;
|
||||
} else if (key.equalsIgnoreCase("CMake")) {
|
||||
color = R.color.c_make;
|
||||
} else if (key.equalsIgnoreCase("COBOL")) {
|
||||
color = R.color.c_make;
|
||||
} else if (key.equalsIgnoreCase("CSS")) {
|
||||
color = R.color.css;
|
||||
} else if (key.equalsIgnoreCase("CSV")) {
|
||||
color = R.color.csv;
|
||||
} else if (key.equalsIgnoreCase("Checksums")) {
|
||||
color = R.color.csv;
|
||||
} else if (key.equalsIgnoreCase("Classic ASP")) {
|
||||
color = R.color.classic_asp;
|
||||
} else if (key.equalsIgnoreCase("Clojure")) {
|
||||
color = R.color.clojure;
|
||||
} else if (key.equalsIgnoreCase("Closure Templates")) {
|
||||
color = R.color.closure_templates;
|
||||
} else if (key.equalsIgnoreCase("CodeQL")) {
|
||||
color = R.color.code_ql;
|
||||
} else if (key.equalsIgnoreCase("CoffeeScript")) {
|
||||
color = R.color.coffee_script;
|
||||
} else if (key.equalsIgnoreCase("ColdFusion")) {
|
||||
color = R.color.cold_fusion;
|
||||
} else if (key.equalsIgnoreCase("Common Lisp")) {
|
||||
color = R.color.common_lisp;
|
||||
} else if (key.equalsIgnoreCase("Cython")) {
|
||||
color = R.color.cython;
|
||||
} else if (key.equalsIgnoreCase("DNS Zone")) {
|
||||
color = R.color.cython;
|
||||
} else if (key.equalsIgnoreCase("Dart")) {
|
||||
color = R.color.dart;
|
||||
} else if (key.equalsIgnoreCase("Diff")) {
|
||||
color = R.color.dart;
|
||||
} else if (key.equalsIgnoreCase("Dockerfile")) {
|
||||
color = R.color.docker_file;
|
||||
} else if (key.equalsIgnoreCase("Dotenv")) {
|
||||
color = R.color.dot_env;
|
||||
} else if (key.equalsIgnoreCase("E-mail")) {
|
||||
color = R.color.dot_env;
|
||||
} else if (key.equalsIgnoreCase("EJS")) {
|
||||
color = R.color.ejs;
|
||||
} else if (key.equalsIgnoreCase("Elixir")) {
|
||||
color = R.color.elixir;
|
||||
} else if (key.equalsIgnoreCase("Elm")) {
|
||||
color = R.color.elm;
|
||||
} else if (key.equalsIgnoreCase("Emacs Lisp")) {
|
||||
color = R.color.emacs_lisp;
|
||||
} else if (key.equalsIgnoreCase("EmberScript")) {
|
||||
color = R.color.ember_script;
|
||||
} else if (key.equalsIgnoreCase("Erlang")) {
|
||||
color = R.color.erlang;
|
||||
} else if (key.equalsIgnoreCase("Forth")) {
|
||||
color = R.color.forth;
|
||||
} else if (key.equalsIgnoreCase("Fortran")) {
|
||||
color = R.color.fortran;
|
||||
} else if (key.equalsIgnoreCase("Fortran Free Form")) {
|
||||
color = R.color.fortran_free_form;
|
||||
} else if (key.equalsIgnoreCase("FreeBasic")) {
|
||||
color = R.color.free_basic;
|
||||
} else if (key.equalsIgnoreCase("GDScript")) {
|
||||
color = R.color.gd_script;
|
||||
} else if (key.equalsIgnoreCase("GLSL")) {
|
||||
color = R.color.glsl;
|
||||
} else if (key.equalsIgnoreCase("Git Attributes")) {
|
||||
color = R.color.git_attributes;
|
||||
} else if (key.equalsIgnoreCase("Git Config")) {
|
||||
color = R.color.git_config;
|
||||
} else if (key.equalsIgnoreCase("Gnuplot")) {
|
||||
color = R.color.gnuplot;
|
||||
} else if (key.equalsIgnoreCase("Go")) {
|
||||
color = R.color.go;
|
||||
} else if (key.equalsIgnoreCase("Go Checksums")) {
|
||||
color = R.color.go_checksums;
|
||||
} else if (key.equalsIgnoreCase("Go Module")) {
|
||||
color = R.color.go_module;
|
||||
} else if (key.equalsIgnoreCase("Gradle")) {
|
||||
color = R.color.gradle;
|
||||
} else if (key.equalsIgnoreCase("GraphQL")) {
|
||||
color = R.color.graph_ql;
|
||||
} else if (key.equalsIgnoreCase("Groovy")) {
|
||||
color = R.color.groovy;
|
||||
} else if (key.equalsIgnoreCase("HAProxy")) {
|
||||
color = R.color.ha_proxy;
|
||||
} else if (key.equalsIgnoreCase("HCL")) {
|
||||
color = R.color.hcl;
|
||||
} else if (key.equalsIgnoreCase("HTML")) {
|
||||
color = R.color.html;
|
||||
} else if (key.equalsIgnoreCase("HTML+PHP")) {
|
||||
color = R.color.html_php;
|
||||
} else if (key.equalsIgnoreCase("Hack")) {
|
||||
color = R.color.hack;
|
||||
} else if (key.equalsIgnoreCase("Haml")) {
|
||||
color = R.color.haml;
|
||||
} else if (key.equalsIgnoreCase("Haskell")) {
|
||||
color = R.color.haskell;
|
||||
} else if (key.equalsIgnoreCase("Haxe")) {
|
||||
color = R.color.haxe;
|
||||
} else if (key.equalsIgnoreCase("INI")) {
|
||||
color = R.color.ini;
|
||||
} else if (key.equalsIgnoreCase("Ignore List")) {
|
||||
color = R.color.ignore_list;
|
||||
} else if (key.equalsIgnoreCase("JAR Manifest")) {
|
||||
color = R.color.jar_manifest;
|
||||
} else if (key.equalsIgnoreCase("JSON")) {
|
||||
color = R.color.json;
|
||||
} else if (key.equalsIgnoreCase("JSON with Comments")) {
|
||||
color = R.color.json_with_comments;
|
||||
} else if (key.equalsIgnoreCase("JSON5")) {
|
||||
color = R.color.json5;
|
||||
} else if (key.equalsIgnoreCase("JSONLD")) {
|
||||
color = R.color.json_ld;
|
||||
} else if (key.equalsIgnoreCase("JSONiq")) {
|
||||
color = R.color.json_iq;
|
||||
} else if (key.equalsIgnoreCase("Java")) {
|
||||
color = R.color.java;
|
||||
} else if (key.equalsIgnoreCase("Java Properties")) {
|
||||
color = R.color.java_properties;
|
||||
} else if (key.equalsIgnoreCase("Java Server Pages")) {
|
||||
color = R.color.java_server_pages;
|
||||
} else if (key.equalsIgnoreCase("JavaScript")) {
|
||||
color = R.color.java_script;
|
||||
} else if (key.equalsIgnoreCase("Jinja")) {
|
||||
color = R.color.jinja;
|
||||
} else if (key.equalsIgnoreCase("Julia")) {
|
||||
color = R.color.julia;
|
||||
} else if (key.equalsIgnoreCase("Jupyter Notebook")) {
|
||||
color = R.color.jupyter_notebook;
|
||||
} else if (key.equalsIgnoreCase("Kotlin")) {
|
||||
color = R.color.kotlin;
|
||||
} else if (key.equalsIgnoreCase("LLVM")) {
|
||||
color = R.color.llvm;
|
||||
} else if (key.equalsIgnoreCase("LSL")) {
|
||||
color = R.color.lsl;
|
||||
} else if (key.equalsIgnoreCase("Lasso")) {
|
||||
color = R.color.lasso;
|
||||
} else if (key.equalsIgnoreCase("Latte")) {
|
||||
color = R.color.latte;
|
||||
} else if (key.equalsIgnoreCase("Less")) {
|
||||
color = R.color.less;
|
||||
} else if (key.equalsIgnoreCase("LiveScript")) {
|
||||
color = R.color.live_script;
|
||||
} else if (key.equalsIgnoreCase("Lua")) {
|
||||
color = R.color.lua;
|
||||
} else if (key.equalsIgnoreCase("MATLAB")) {
|
||||
color = R.color.matlab;
|
||||
} else if (key.equalsIgnoreCase("MTML")) {
|
||||
color = R.color.mtml;
|
||||
} else if (key.equalsIgnoreCase("Makefile")) {
|
||||
color = R.color.make_file;
|
||||
} else if (key.equalsIgnoreCase("Markdown")) {
|
||||
color = R.color.markdown;
|
||||
} else if (key.equalsIgnoreCase("Mathematica")) {
|
||||
color = R.color.mathematica;
|
||||
} else if (key.equalsIgnoreCase("Maven POM")) {
|
||||
color = R.color.mathematica;
|
||||
} else if (key.equalsIgnoreCase("Max")) {
|
||||
color = R.color.max;
|
||||
} else if (key.equalsIgnoreCase("Mercury")) {
|
||||
color = R.color.mercury;
|
||||
} else if (key.equalsIgnoreCase("Mermaid")) {
|
||||
color = R.color.mermaid;
|
||||
} else if (key.equalsIgnoreCase("Meson")) {
|
||||
color = R.color.meson;
|
||||
} else if (key.equalsIgnoreCase("MiniYAML")) {
|
||||
color = R.color.mini_yaml;
|
||||
} else if (key.equalsIgnoreCase("NPM Config")) {
|
||||
color = R.color.npm_rc;
|
||||
} else if (key.equalsIgnoreCase("NSIS")) {
|
||||
color = R.color.npm_rc;
|
||||
} else if (key.equalsIgnoreCase("Nginx")) {
|
||||
color = R.color.nginx;
|
||||
} else if (key.equalsIgnoreCase("Nim")) {
|
||||
color = R.color.nim;
|
||||
} else if (key.equalsIgnoreCase("Nix")) {
|
||||
color = R.color.nix;
|
||||
} else if (key.equalsIgnoreCase("ObjectScript")) {
|
||||
color = R.color.object_script;
|
||||
} else if (key.equalsIgnoreCase("Objective-C")) {
|
||||
color = R.color.objective_c;
|
||||
} else if (key.equalsIgnoreCase("Objective-C++")) {
|
||||
color = R.color.objective_c_plus_plus;
|
||||
} else if (key.equalsIgnoreCase("PHP")) {
|
||||
color = R.color.php;
|
||||
} else if (key.equalsIgnoreCase("PLSQL")) {
|
||||
color = R.color.pl_sql;
|
||||
} else if (key.equalsIgnoreCase("PLpgSQL")) {
|
||||
color = R.color.pl_pg_sql;
|
||||
} else if (key.equalsIgnoreCase("Pascal")) {
|
||||
color = R.color.pascal;
|
||||
} else if (key.equalsIgnoreCase("Perl")) {
|
||||
color = R.color.perl;
|
||||
} else if (key.equalsIgnoreCase("PostCSS")) {
|
||||
color = R.color.post_css;
|
||||
} else if (key.equalsIgnoreCase("PostScript")) {
|
||||
color = R.color.post_script;
|
||||
} else if (key.equalsIgnoreCase("PowerShell")) {
|
||||
color = R.color.power_shell;
|
||||
} else if (key.equalsIgnoreCase("Proguard")) {
|
||||
color = R.color.pro_log;
|
||||
} else if (key.equalsIgnoreCase("Prolog")) {
|
||||
color = R.color.pro_log;
|
||||
} else if (key.equalsIgnoreCase("Public Key")) {
|
||||
color = R.color.pro_log;
|
||||
} else if (key.equalsIgnoreCase("Pug")) {
|
||||
color = R.color.pug;
|
||||
} else if (key.equalsIgnoreCase("Puppet")) {
|
||||
color = R.color.puppet;
|
||||
} else if (key.equalsIgnoreCase("Python")) {
|
||||
color = R.color.python;
|
||||
} else if (key.equalsIgnoreCase("Python console")) {
|
||||
color = R.color.python;
|
||||
} else if (key.equalsIgnoreCase("Python traceback")) {
|
||||
color = R.color.python;
|
||||
} else if (key.equalsIgnoreCase("QML")) {
|
||||
color = R.color.qml;
|
||||
} else if (key.equalsIgnoreCase("Qt Script")) {
|
||||
color = R.color.qt_script;
|
||||
} else if (key.equalsIgnoreCase("R")) {
|
||||
color = R.color.r;
|
||||
} else if (key.equalsIgnoreCase("Racket")) {
|
||||
color = R.color.racket;
|
||||
} else if (key.equalsIgnoreCase("Raku")) {
|
||||
color = R.color.raku;
|
||||
} else if (key.equalsIgnoreCase("Raw token data")) {
|
||||
color = R.color.raku;
|
||||
} else if (key.equalsIgnoreCase("Regular Expression")) {
|
||||
color = R.color.regexp;
|
||||
} else if (key.equalsIgnoreCase("Rich Text Format")) {
|
||||
color = R.color.regexp;
|
||||
} else if (key.equalsIgnoreCase("Roff")) {
|
||||
color = R.color.roff;
|
||||
} else if (key.equalsIgnoreCase("Roff Manpage")) {
|
||||
color = R.color.hack;
|
||||
} else if (key.equalsIgnoreCase("Ruby")) {
|
||||
color = R.color.ruby;
|
||||
} else if (key.equalsIgnoreCase("Rust")) {
|
||||
color = R.color.rust;
|
||||
} else if (key.equalsIgnoreCase("SCSS")) {
|
||||
color = R.color.scss;
|
||||
} else if (key.equalsIgnoreCase("SELinux Policy")) {
|
||||
color = R.color.scss;
|
||||
} else if (key.equalsIgnoreCase("SQL")) {
|
||||
color = R.color.sql;
|
||||
} else if (key.equalsIgnoreCase("SQLPL")) {
|
||||
color = R.color.sql;
|
||||
} else if (key.equalsIgnoreCase("SSH Config")) {
|
||||
color = R.color.sql;
|
||||
} else if (key.equalsIgnoreCase("SVG")) {
|
||||
color = R.color.svg;
|
||||
} else if (key.equalsIgnoreCase("Sass")) {
|
||||
color = R.color.sass;
|
||||
} else if (key.equalsIgnoreCase("Scala")) {
|
||||
color = R.color.scala;
|
||||
} else if (key.equalsIgnoreCase("Scheme")) {
|
||||
color = R.color.scheme;
|
||||
} else if (key.equalsIgnoreCase("Shell")) {
|
||||
color = R.color.shell;
|
||||
} else if (key.equalsIgnoreCase("ShellCheck Config")) {
|
||||
color = R.color.scheme;
|
||||
} else if (key.equalsIgnoreCase("ShellSession")) {
|
||||
color = R.color.scala;
|
||||
} else if (key.equalsIgnoreCase("Smarty")) {
|
||||
color = R.color.smarty;
|
||||
} else if (key.equalsIgnoreCase("Standard ML")) {
|
||||
color = R.color.standard_ml;
|
||||
} else if (key.equalsIgnoreCase("Stata")) {
|
||||
color = R.color.stata;
|
||||
} else if (key.equalsIgnoreCase("Stylus")) {
|
||||
color = R.color.stylus;
|
||||
} else if (key.equalsIgnoreCase("Svelte")) {
|
||||
color = R.color.svelte;
|
||||
} else if (key.equalsIgnoreCase("Swift")) {
|
||||
color = R.color.swift;
|
||||
} else if (key.equalsIgnoreCase("TOML")) {
|
||||
color = R.color.toml;
|
||||
} else if (key.equalsIgnoreCase("TSQL")) {
|
||||
color = R.color.swift;
|
||||
} else if (key.equalsIgnoreCase("TSV")) {
|
||||
color = R.color.swift;
|
||||
} else if (key.equalsIgnoreCase("TSX")) {
|
||||
color = R.color.swift;
|
||||
} else if (key.equalsIgnoreCase("TXL")) {
|
||||
color = R.color.swift;
|
||||
} else if (key.equalsIgnoreCase("Tcl")) {
|
||||
color = R.color.tcl;
|
||||
} else if (key.equalsIgnoreCase("TeX")) {
|
||||
color = R.color.tex;
|
||||
} else if (key.equalsIgnoreCase("Texinfo")) {
|
||||
color = R.color.tex;
|
||||
} else if (key.equalsIgnoreCase("Text")) {
|
||||
color = R.color.roff;
|
||||
} else if (key.equalsIgnoreCase("Twig")) {
|
||||
color = R.color.twig;
|
||||
} else if (key.equalsIgnoreCase("TypeScript")) {
|
||||
color = R.color.type_script;
|
||||
} else if (key.equalsIgnoreCase("Unity3D Asset")) {
|
||||
color = R.color.unity_asset;
|
||||
} else if (key.equalsIgnoreCase("VBA")) {
|
||||
color = R.color.vba;
|
||||
} else if (key.equalsIgnoreCase("VBScript")) {
|
||||
color = R.color.vbs;
|
||||
} else if (key.equalsIgnoreCase("VHDL")) {
|
||||
color = R.color.vhdl;
|
||||
} else if (key.equalsIgnoreCase("Vala")) {
|
||||
color = R.color.vala;
|
||||
} else if (key.equalsIgnoreCase("Vim Help File")) {
|
||||
color = R.color.vim;
|
||||
} else if (key.equalsIgnoreCase("Vim Script")) {
|
||||
color = R.color.vim;
|
||||
} else if (key.equalsIgnoreCase("Vim Snippet")) {
|
||||
color = R.color.vb_net;
|
||||
} else if (key.equalsIgnoreCase("Visual Basic .NET")) {
|
||||
color = R.color.hack;
|
||||
} else if (key.equalsIgnoreCase("Visual Basic 6.0")) {
|
||||
color = R.color.vb6;
|
||||
} else if (key.equalsIgnoreCase("Volt")) {
|
||||
color = R.color.volt;
|
||||
} else if (key.equalsIgnoreCase("Vue")) {
|
||||
color = R.color.vue;
|
||||
} else if (key.equalsIgnoreCase("WebAssembly")) {
|
||||
color = R.color.web_assembly;
|
||||
} else if (key.equalsIgnoreCase("Wikitext")) {
|
||||
color = R.color.wiki;
|
||||
} else if (key.equalsIgnoreCase("Windows Registry Entries")) {
|
||||
color = R.color.win_reg_entries;
|
||||
} else if (key.equalsIgnoreCase("XML")) {
|
||||
color = R.color.xml;
|
||||
} else if (key.equalsIgnoreCase("XML Property List")) {
|
||||
color = R.color.xml_props_list;
|
||||
} else if (key.equalsIgnoreCase("XQuery")) {
|
||||
color = R.color.vb6;
|
||||
} else if (key.equalsIgnoreCase("XS")) {
|
||||
color = R.color.wiki;
|
||||
} else if (key.equalsIgnoreCase("XSLT")) {
|
||||
color = R.color.xslt;
|
||||
} else if (key.equalsIgnoreCase("XProc")) {
|
||||
color = R.color.vb6;
|
||||
} else if (key.equalsIgnoreCase("YAML")) {
|
||||
color = R.color.yaml;
|
||||
} else if (key.equalsIgnoreCase("Zephir")) {
|
||||
color = R.color.zep;
|
||||
} else if (key.equalsIgnoreCase("cURL Config")) {
|
||||
color = R.color.zep;
|
||||
} else if (key.equalsIgnoreCase("desktop")) {
|
||||
color = R.color.win_reg_entries;
|
||||
} else if (key.equalsIgnoreCase("dircolors")) {
|
||||
color = R.color.xslt;
|
||||
} else if (key.equalsIgnoreCase("robots.txt")) {
|
||||
color = R.color.yaml;
|
||||
} else if (key.equalsIgnoreCase("sed")) {
|
||||
color = R.color.sed;
|
||||
} else if (key.equalsIgnoreCase("xBase")) {
|
||||
color = R.color.x_base;
|
||||
} else {
|
||||
color = R.color.default_lang_color;
|
||||
}
|
||||
return color;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,78 @@
|
|||
package org.mian.gitnex.helpers.languagestatistics;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.Context;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Paint;
|
||||
import android.graphics.Rect;
|
||||
import android.util.AttributeSet;
|
||||
import java.util.ArrayList;
|
||||
|
||||
/**
|
||||
* @author M M Arif
|
||||
*/
|
||||
public class LanguageStatisticsBar extends androidx.appcompat.widget.AppCompatSeekBar {
|
||||
|
||||
private ArrayList<SeekbarItem> progressItemsList;
|
||||
|
||||
public LanguageStatisticsBar(Context context) {
|
||||
super(context);
|
||||
}
|
||||
|
||||
public LanguageStatisticsBar(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
}
|
||||
|
||||
public LanguageStatisticsBar(Context context, AttributeSet attrs, int defStyle) {
|
||||
super(context, attrs, defStyle);
|
||||
}
|
||||
|
||||
public void initData(ArrayList<SeekbarItem> progressItemsListInit) {
|
||||
this.progressItemsList = progressItemsListInit;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected synchronized void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
|
||||
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
|
||||
}
|
||||
|
||||
protected void onDraw(Canvas canvas) {
|
||||
|
||||
if (progressItemsList.size() > 0) {
|
||||
|
||||
int progressBarWidth = getWidth();
|
||||
int progressBarHeight = getHeight();
|
||||
int thumbOffSet = getThumbOffset();
|
||||
int lastProgressX = 0;
|
||||
int progressItemWidth, progressItemRight;
|
||||
|
||||
for (int i = 0; i < progressItemsList.size(); i++) {
|
||||
|
||||
SeekbarItem progressItem = progressItemsList.get(i);
|
||||
@SuppressLint("DrawAllocation")
|
||||
Paint progressPaint = new Paint();
|
||||
progressPaint.setColor(getResources().getColor(progressItem.color, null));
|
||||
|
||||
progressItemWidth =
|
||||
(int) (progressItem.progressItemPercentage * progressBarWidth / 100);
|
||||
|
||||
progressItemRight = lastProgressX + progressItemWidth;
|
||||
|
||||
if (i == progressItemsList.size() - 1 && progressItemRight != progressBarWidth) {
|
||||
progressItemRight = progressBarWidth;
|
||||
}
|
||||
|
||||
@SuppressLint("DrawAllocation")
|
||||
Rect progressRect = new Rect();
|
||||
progressRect.set(
|
||||
lastProgressX,
|
||||
thumbOffSet / 2,
|
||||
progressItemRight,
|
||||
progressBarHeight - thumbOffSet / 2);
|
||||
canvas.drawRect(progressRect, progressPaint);
|
||||
lastProgressX = progressItemRight;
|
||||
}
|
||||
super.onDraw(canvas);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
package org.mian.gitnex.helpers.languagestatistics;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
|
||||
/**
|
||||
* @author M M Arif
|
||||
*/
|
||||
public class LanguageStatisticsHelper {
|
||||
|
||||
@SuppressLint("DefaultLocale")
|
||||
public static String calculatePercentage(Long number, float total) {
|
||||
float percent = number * 100f / total;
|
||||
return String.format("%.1f", percent);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
package org.mian.gitnex.helpers.languagestatistics;
|
||||
|
||||
/**
|
||||
* @author M M Arif
|
||||
*/
|
||||
public class SeekbarItem {
|
||||
|
||||
public int color;
|
||||
public float progressItemPercentage;
|
||||
}
|
|
@ -134,6 +134,26 @@
|
|||
android:textColorLink="@color/lightBlue"
|
||||
android:textSize="@dimen/dimen16sp"/>
|
||||
|
||||
<com.google.android.material.card.MaterialCardView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
style="?attr/materialCardViewElevatedStyle"
|
||||
android:backgroundTint="@android:color/transparent"
|
||||
app:cardElevation="@dimen/dimen0dp">
|
||||
|
||||
<org.mian.gitnex.helpers.languagestatistics.LanguageStatisticsBar
|
||||
android:id="@+id/languages_statistic"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:thumbTint="@android:color/transparent"
|
||||
android:clickable="false"
|
||||
android:focusable="false"
|
||||
android:enabled="false"
|
||||
android:progressDrawable="@android:color/transparent"
|
||||
android:visibility="gone" />
|
||||
|
||||
</com.google.android.material.card.MaterialCardView>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
|
|
16
app/src/main/res/layout/layout_repo_language_statistics.xml
Normal file
16
app/src/main/res/layout/layout_repo_language_statistics.xml
Normal file
|
@ -0,0 +1,16 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="@dimen/dimen20dp"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/lang_color"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical" />
|
||||
|
||||
</LinearLayout>
|
|
@ -76,4 +76,169 @@
|
|||
<color name="gold">#e6b121</color>
|
||||
<color name="five_yellow">#fdc92f</color>
|
||||
<color name="five_background_grey">#f5f2f0</color>
|
||||
|
||||
<!-- language statistics colors -->
|
||||
<color name="default_lang_color">#49da39</color>
|
||||
<color name="asp_net">#9400ff</color>
|
||||
<color name="ats">#1ac620</color>
|
||||
<color name="action_script">#882B0F</color>
|
||||
<color name="ada">#02f88c</color>
|
||||
<color name="angel_script">#C7D7DC</color>
|
||||
<color name="ant_build_system">#A9157E</color>
|
||||
<color name="antlers">#ff269e</color>
|
||||
<color name="apache_conf">#d12127</color>
|
||||
<color name="apex">#1797c0</color>
|
||||
<color name="apple_script">#101F1F</color>
|
||||
<color name="ascii_doc">#73a0c5</color>
|
||||
<color name="assembly">#6E4C13</color>
|
||||
<color name="awk">#c30e9b</color>
|
||||
<color name="basic">#ff0000</color>
|
||||
<color name="batch_file">#C1F12E</color>
|
||||
<color name="bison">#6A463F</color>
|
||||
<color name="blade">#f7523f</color>
|
||||
<color name="c">#555555</color>
|
||||
<color name="c_sharp">#178600</color>
|
||||
<color name="c_plus_plus">#f34b7d</color>
|
||||
<color name="c_make">#DA3434</color>
|
||||
<color name="css">#563d7c</color>
|
||||
<color name="csv">#237346</color>
|
||||
<color name="classic_asp">#6a40fd</color>
|
||||
<color name="clojure">#db5855</color>
|
||||
<color name="closure_templates">#0d948f</color>
|
||||
<color name="code_ql">#140f46</color>
|
||||
<color name="coffee_script">#244776</color>
|
||||
<color name="cold_fusion">#ed2cd6</color>
|
||||
<color name="common_lisp">#3fb68b</color>
|
||||
<color name="cython">#fedf5b</color>
|
||||
<color name="dart">#00B4AB</color>
|
||||
<color name="docker_file">#384d54</color>
|
||||
<color name="dot_env">#e5d559</color>
|
||||
<color name="ejs">#a91e50</color>
|
||||
<color name="elixir">#6e4a7e</color>
|
||||
<color name="elm">#60B5CC</color>
|
||||
<color name="emacs_lisp">#c065db</color>
|
||||
<color name="ember_script">#FFF4F3</color>
|
||||
<color name="erlang">#B83998</color>
|
||||
<color name="forth">#341708</color>
|
||||
<color name="fortran">#4d41b1</color>
|
||||
<color name="fortran_free_form">#4d41b1</color>
|
||||
<color name="free_basic">#141AC9</color>
|
||||
<color name="gd_script">#355570</color>
|
||||
<color name="glsl">#5686a5</color>
|
||||
<color name="git_attributes">#F44D27</color>
|
||||
<color name="git_config">#F44D27</color>
|
||||
<color name="gnuplot">#f0a9f0</color>
|
||||
<color name="go">#00ADD8</color>
|
||||
<color name="go_checksums">#00ADD8</color>
|
||||
<color name="go_module">#00ADD8</color>
|
||||
<color name="gradle">#02303a</color>
|
||||
<color name="graph_ql">#e10098</color>
|
||||
<color name="groovy">#4298b8</color>
|
||||
<color name="ha_proxy">#106da9</color>
|
||||
<color name="hcl">#844FBA</color>
|
||||
<color name="html">#e34c26</color>
|
||||
<color name="html_php">#4f5d95</color>
|
||||
<color name="hack">#878787</color>
|
||||
<color name="haml">#ece2a9</color>
|
||||
<color name="haskell">#5e5086</color>
|
||||
<color name="haxe">#df7900</color>
|
||||
<color name="ini">#d1dbe0</color>
|
||||
<color name="ignore_list">#000000</color>
|
||||
<color name="jar_manifest">#b07219</color>
|
||||
<color name="json">#292929</color>
|
||||
<color name="json_with_comments">#292929</color>
|
||||
<color name="json5">#267CB9</color>
|
||||
<color name="json_ld">#0c479c</color>
|
||||
<color name="json_iq">#40d47e</color>
|
||||
<color name="java">#b07219</color>
|
||||
<color name="java_properties">#2A6277</color>
|
||||
<color name="java_server_pages">#2A6277</color>
|
||||
<color name="java_script">#f1e05a</color>
|
||||
<color name="jinja">#a52a22</color>
|
||||
<color name="julia">#a270ba</color>
|
||||
<color name="jupyter_notebook">#DA5B0B</color>
|
||||
<color name="kotlin">#A97BFF</color>
|
||||
<color name="llvm">#185619</color>
|
||||
<color name="lsl">#3d9970</color>
|
||||
<color name="lasso">#999999</color>
|
||||
<color name="latte">#f2a542</color>
|
||||
<color name="less">#1d365d</color>
|
||||
<color name="live_script">#499886</color>
|
||||
<color name="lua">#000080</color>
|
||||
<color name="matlab">#e16737</color>
|
||||
<color name="mtml">#b7e1f4</color>
|
||||
<color name="make_file">#427819</color>
|
||||
<color name="markdown">#083fa1</color>
|
||||
<color name="mathematica">#dd1100</color>
|
||||
<color name="max">#c4a79c</color>
|
||||
<color name="mercury">#ff2b2b</color>
|
||||
<color name="mermaid">#ff3670</color>
|
||||
<color name="meson">#007800</color>
|
||||
<color name="mini_yaml">#ff1111</color>
|
||||
<color name="npm_rc">#cb3837</color>
|
||||
<color name="nginx">#009639</color>
|
||||
<color name="nim">#ffc200</color>
|
||||
<color name="nix">#7e7eff</color>
|
||||
<color name="object_script">#424893</color>
|
||||
<color name="objective_c">#438eff</color>
|
||||
<color name="objective_c_plus_plus">#6866fb</color>
|
||||
<color name="php">#4F5D95</color>
|
||||
<color name="pl_sql">#dad8d8</color>
|
||||
<color name="pl_pg_sql">#336790</color>
|
||||
<color name="pascal">#E3F171</color>
|
||||
<color name="perl">#0298c3</color>
|
||||
<color name="post_css">#dc3a0c</color>
|
||||
<color name="post_script">#da291c</color>
|
||||
<color name="power_shell">#012456</color>
|
||||
<color name="pro_log">#74283c</color>
|
||||
<color name="pug">#a86454</color>
|
||||
<color name="puppet">#302B6D</color>
|
||||
<color name="python">#3572A5</color>
|
||||
<color name="qml">#44a51c</color>
|
||||
<color name="qt_script">#00b841</color>
|
||||
<color name="r">#198CE7</color>
|
||||
<color name="racket">#3c5caa</color>
|
||||
<color name="raku">#0000fb</color>
|
||||
<color name="regexp">#009a00</color>
|
||||
<color name="roff">#ecdebe</color>
|
||||
<color name="ruby">#701516</color>
|
||||
<color name="rust">#dea584</color>
|
||||
<color name="scss">#c6538c</color>
|
||||
<color name="sql">#e38c00</color>
|
||||
<color name="svg">#ff9900</color>
|
||||
<color name="sass">#a53b70</color>
|
||||
<color name="scala">#c22d40</color>
|
||||
<color name="scheme">#1e4aec</color>
|
||||
<color name="shell">#89e051</color>
|
||||
<color name="smarty">#f0c040</color>
|
||||
<color name="standard_ml">#dc566d</color>
|
||||
<color name="stata">#1a5f91</color>
|
||||
<color name="stylus">#ff6347</color>
|
||||
<color name="svelte">#ff3e00</color>
|
||||
<color name="swift">#F05138</color>
|
||||
<color name="toml">#9c4221</color>
|
||||
<color name="tcl">#e4cc98</color>
|
||||
<color name="tex">#3D6117</color>
|
||||
<color name="twig">#c1d026</color>
|
||||
<color name="type_script">#3178c6</color>
|
||||
<color name="unity_asset">#222c37</color>
|
||||
<color name="vba">#867db1</color>
|
||||
<color name="vbs">#15dcdc</color>
|
||||
<color name="vhdl">#adb2cb</color>
|
||||
<color name="vala">#a56de2</color>
|
||||
<color name="vim">#199f4b</color>
|
||||
<color name="vb_net">#945db7</color>
|
||||
<color name="vb6">#2c6353</color>
|
||||
<color name="volt">#1F1F1F</color>
|
||||
<color name="vue">#41b883</color>
|
||||
<color name="web_assembly">#04133b</color>
|
||||
<color name="wiki">#fc5757</color>
|
||||
<color name="win_reg_entries">#52d5ff</color>
|
||||
<color name="xml">#0060ac</color>
|
||||
<color name="xml_props_list">#0060ac</color>
|
||||
<color name="xslt">#EB8CEB</color>
|
||||
<color name="yaml">#cb171e</color>
|
||||
<color name="zep">#118f9e</color>
|
||||
<color name="sed">#64b970</color>
|
||||
<color name="x_base">#403a40</color>
|
||||
</resources>
|
||||
|
|
|
@ -797,7 +797,7 @@
|
|||
<string name="newNoteContentHint">Start taking your notes here</string>
|
||||
<string name="noteDateTime">Created %s</string>
|
||||
<string name="noteTimeModified">Updated %s</string>
|
||||
<string name="noteDeleteDialoMessage">Do you really want to delete this note?</string>
|
||||
<string name="noteDeleteDialogMessage">Do you really want to delete this note?</string>
|
||||
<plurals name="noteDeleteMessage">
|
||||
<item quantity="one">Note deleted successfully</item>
|
||||
<item quantity="other">Notes deleted successfully</item>
|
||||
|
@ -852,4 +852,7 @@
|
|||
<string name="statusNoUrl">This status has no linked target URL.</string>
|
||||
|
||||
<string name="starredRepos">Starred Repos</string>
|
||||
|
||||
<string name="lang_statistics">Language Statistics</string>
|
||||
<string name="lang_percentage" translatable="false">%s%%</string>
|
||||
</resources>
|
||||
|
|
Loading…
Reference in a new issue