diff options
author | Alex Ning <chineseperson5@gmail.com> | 2020-09-28 16:09:33 +0000 |
---|---|---|
committer | Alex Ning <chineseperson5@gmail.com> | 2020-09-28 16:09:33 +0000 |
commit | d7f85cb471038498332195c9a1bdea794ec32068 (patch) | |
tree | 3fbaa1c7caefc94cdb666bbd7c6aef94731231bc /app/src/main | |
parent | f5320c1e60fbc9e967c11189a3da00fd8b440278 (diff) | |
download | infinity-for-reddit-d7f85cb471038498332195c9a1bdea794ec32068.tar infinity-for-reddit-d7f85cb471038498332195c9a1bdea794ec32068.tar.gz infinity-for-reddit-d7f85cb471038498332195c9a1bdea794ec32068.tar.bz2 infinity-for-reddit-d7f85cb471038498332195c9a1bdea794ec32068.tar.lz infinity-for-reddit-d7f85cb471038498332195c9a1bdea794ec32068.tar.xz infinity-for-reddit-d7f85cb471038498332195c9a1bdea794ec32068.tar.zst infinity-for-reddit-d7f85cb471038498332195c9a1bdea794ec32068.zip |
Add translation contributors in Settigs->About->Translation.
Diffstat (limited to 'app/src/main')
30 files changed, 692 insertions, 4 deletions
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Settings/AcknowledgementRecyclerViewAdapter.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/AcknowledgementRecyclerViewAdapter.java index 6b081ad1..3958054a 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/Settings/AcknowledgementRecyclerViewAdapter.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/AcknowledgementRecyclerViewAdapter.java @@ -1,4 +1,4 @@ -package ml.docilealligator.infinityforreddit.Settings; +package ml.docilealligator.infinityforreddit.Adapter; import android.content.Context; import android.content.Intent; @@ -16,12 +16,13 @@ import butterknife.BindView; import butterknife.ButterKnife; import ml.docilealligator.infinityforreddit.Activity.LinkResolverActivity; import ml.docilealligator.infinityforreddit.R; +import ml.docilealligator.infinityforreddit.Settings.Acknowledgement; -class AcknowledgementRecyclerViewAdapter extends RecyclerView.Adapter<AcknowledgementRecyclerViewAdapter.AcknowledgementViewHolder> { +public class AcknowledgementRecyclerViewAdapter extends RecyclerView.Adapter<AcknowledgementRecyclerViewAdapter.AcknowledgementViewHolder> { private ArrayList<Acknowledgement> acknowledgements; private Context context; - AcknowledgementRecyclerViewAdapter(Context context, ArrayList<Acknowledgement> acknowledgements) { + public AcknowledgementRecyclerViewAdapter(Context context, ArrayList<Acknowledgement> acknowledgements) { this.context = context; this.acknowledgements = acknowledgements; } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/TranslationFragmentRecyclerViewAdapter.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/TranslationFragmentRecyclerViewAdapter.java new file mode 100644 index 00000000..a31381c5 --- /dev/null +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/TranslationFragmentRecyclerViewAdapter.java @@ -0,0 +1,82 @@ +package ml.docilealligator.infinityforreddit.Adapter; + +import android.app.Activity; +import android.content.Intent; +import android.net.Uri; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import java.util.ArrayList; + +import butterknife.BindView; +import butterknife.ButterKnife; +import ml.docilealligator.infinityforreddit.Activity.LinkResolverActivity; +import ml.docilealligator.infinityforreddit.CustomTheme.CustomThemeWrapper; +import ml.docilealligator.infinityforreddit.R; +import ml.docilealligator.infinityforreddit.Settings.Translation; + +public class TranslationFragmentRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { + private Activity activity; + private int primaryTextColor; + private int secondaryTextColor; + private ArrayList<Translation> translationContributors; + + public TranslationFragmentRecyclerViewAdapter(Activity activity, CustomThemeWrapper customThemeWrapper) { + this.activity = activity; + primaryTextColor = customThemeWrapper.getPrimaryTextColor(); + secondaryTextColor = customThemeWrapper.getSecondaryTextColor(); + translationContributors = Translation.getTranslationContributors(); + } + + @NonNull + @Override + public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + return new TranslationContributorViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_translation_contributor, parent, false)); + } + + @Override + public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { + if (holder instanceof TranslationContributorViewHolder) { + Translation translation = translationContributors.get(position); + ((TranslationContributorViewHolder) holder).countryFlagImageView.setImageResource(translation.flagDrawableId); + ((TranslationContributorViewHolder) holder).languageNameTextView.setText(translation.language); + ((TranslationContributorViewHolder) holder).contributorNamesTextView.setText(translation.contributors); + } + } + + @Override + public int getItemCount() { + return translationContributors.size(); + } + + class TranslationContributorViewHolder extends RecyclerView.ViewHolder { + + @BindView(R.id.country_flag_image_view_item_translation_contributor) + ImageView countryFlagImageView; + @BindView(R.id.language_name_text_view_item_translation_contributor) + TextView languageNameTextView; + @BindView(R.id.contributor_names_text_view_item_translation_contributor) + TextView contributorNamesTextView; + + public TranslationContributorViewHolder(@NonNull View itemView) { + super(itemView); + + ButterKnife.bind(this, itemView); + + languageNameTextView.setTextColor(primaryTextColor); + contributorNamesTextView.setTextColor(secondaryTextColor); + + itemView.setOnClickListener(view -> { + Intent intent = new Intent(activity, LinkResolverActivity.class); + intent.setData(Uri.parse("https://poeditor.com/join/project?hash=b2IRyfaJv6")); + activity.startActivity(intent); + }); + } + } +} diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/AppComponent.java b/app/src/main/java/ml/docilealligator/infinityforreddit/AppComponent.java index e7c8e456..e537b248 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/AppComponent.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/AppComponent.java @@ -71,6 +71,7 @@ import ml.docilealligator.infinityforreddit.Settings.NotificationPreferenceFragm import ml.docilealligator.infinityforreddit.Settings.NsfwAndBlurringFragment; import ml.docilealligator.infinityforreddit.Settings.SecurityPreferenceFragment; import ml.docilealligator.infinityforreddit.Settings.ThemePreferenceFragment; +import ml.docilealligator.infinityforreddit.Settings.TranslationFragment; import ml.docilealligator.infinityforreddit.Settings.VideoPreferenceFragment; @Singleton @@ -215,4 +216,6 @@ public interface AppComponent { void inject(CustomizeBottomAppBarFragment customizeBottomAppBarFragment); void inject(GiveAwardActivity giveAwardActivity); + + void inject(TranslationFragment translationFragment); } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Settings/Acknowledgement.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Settings/Acknowledgement.java index 9291b53c..f3466268 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/Settings/Acknowledgement.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Settings/Acknowledgement.java @@ -2,7 +2,7 @@ package ml.docilealligator.infinityforreddit.Settings; import android.net.Uri; -class Acknowledgement { +public class Acknowledgement { private String name; private String introduction; private Uri link; diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Settings/AcknowledgementFragment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Settings/AcknowledgementFragment.java index c765682e..feb13e66 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/Settings/AcknowledgementFragment.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Settings/AcknowledgementFragment.java @@ -18,6 +18,7 @@ import java.util.ArrayList; import butterknife.BindView; import butterknife.ButterKnife; +import ml.docilealligator.infinityforreddit.Adapter.AcknowledgementRecyclerViewAdapter; import ml.docilealligator.infinityforreddit.R; /** diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Settings/Translation.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Settings/Translation.java new file mode 100644 index 00000000..3d809a7f --- /dev/null +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Settings/Translation.java @@ -0,0 +1,42 @@ +package ml.docilealligator.infinityforreddit.Settings; + +import java.util.ArrayList; + +import ml.docilealligator.infinityforreddit.R; + +public class Translation { + public String language; + public String contributors; + public int flagDrawableId; + + public Translation(String language, String contributors, int flagDrawableId) { + this.language = language; + this.contributors = contributors; + this.flagDrawableId = flagDrawableId; + } + + public static ArrayList<Translation> getTranslationContributors() { + ArrayList<Translation> translationContributors = new ArrayList<>(); + translationContributors.add(new Translation("简体中文", "Gloria, Justin", R.drawable.flag_china)); + translationContributors.add(new Translation("繁體中文", "", R.drawable.flag_china)); + translationContributors.add(new Translation("Hrvatski", "Josip", R.drawable.flag_croatia)); + translationContributors.add(new Translation("Française", "367, oursonbleu, Owen, pinembour", R.drawable.flag_france)); + translationContributors.add(new Translation("Deutsche", "Jorge, Netto Hikari, translatewingman, translatorwiz", R.drawable.flag_germany)); + translationContributors.add(new Translation("Ελληνικά", "Marios, Viktor", R.drawable.flag_greece)); + translationContributors.add(new Translation("हिंदी", "a, Arya, charu, Mrigendra Bhandari, raghav, Sachin, Ved", R.drawable.flag_india)); + translationContributors.add(new Translation("Magyar", "Zoltan", R.drawable.flag_hungary)); + translationContributors.add(new Translation("Italiana", "Daniele Basso, DanOlivaw, Gianni00palmieri, Gillauino, ztiaa", R.drawable.flag_italy)); + translationContributors.add(new Translation("日本語", "Issa, Mrigendra Bhandari, Ryan", R.drawable.flag_japan)); + translationContributors.add(new Translation("한국어", "noname", R.drawable.flag_south_korea)); + translationContributors.add(new Translation("norsk", "", R.drawable.flag_norway)); + translationContributors.add(new Translation("Português", "Bruno Guerreiro, Lucas", R.drawable.flag_portugal)); + translationContributors.add(new Translation("Português (BR)", "Laura Vasconcellos Pereira Felippe, Ricky, Super_Iguanna", R.drawable.flag_brazil)); + translationContributors.add(new Translation("Română", "", R.drawable.flag_romania)); + translationContributors.add(new Translation("русский язык", "aveblazer, flexagoon, Georgiy, Vova", R.drawable.flag_russia)); + translationContributors.add(new Translation("Español", "Jorge, Miguel, mvstermoe, Nana Snixx, Sofia Flores", R.drawable.flag_spain)); + translationContributors.add(new Translation("svenska", "Marcus Nordberg", R.drawable.flag_sweden)); + translationContributors.add(new Translation("Türk", "Emir481, Faoiltiarna, Mehmet Yavuz, Serif", R.drawable.flag_turkey)); + translationContributors.add(new Translation("Tiếng Việt", "Kai, Laezzy, Lmao, Ryan, viecdet69", R.drawable.flag_vietnam)); + return translationContributors; + } +} diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Settings/TranslationFragment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Settings/TranslationFragment.java new file mode 100644 index 00000000..44ad57e8 --- /dev/null +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Settings/TranslationFragment.java @@ -0,0 +1,58 @@ +package ml.docilealligator.infinityforreddit.Settings; + +import android.app.Activity; +import android.content.Context; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.fragment.app.Fragment; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import javax.inject.Inject; + +import butterknife.BindView; +import butterknife.ButterKnife; +import ml.docilealligator.infinityforreddit.Adapter.TranslationFragmentRecyclerViewAdapter; +import ml.docilealligator.infinityforreddit.CustomTheme.CustomThemeWrapper; +import ml.docilealligator.infinityforreddit.Infinity; +import ml.docilealligator.infinityforreddit.R; + +public class TranslationFragment extends Fragment { + + @BindView(R.id.recycler_view_translation_fragment) + RecyclerView recyclerView; + @Inject + CustomThemeWrapper customThemeWrapper; + private Activity activity; + + public TranslationFragment() { + // Required empty public constructor + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + // Inflate the layout for this fragment + View rootView = inflater.inflate(R.layout.fragment_translation, container, false); + + ((Infinity) activity.getApplication()).getAppComponent().inject(this); + + ButterKnife.bind(this, rootView); + + TranslationFragmentRecyclerViewAdapter adapter = new TranslationFragmentRecyclerViewAdapter(activity, customThemeWrapper); + recyclerView.setLayoutManager(new LinearLayoutManager(activity)); + recyclerView.setAdapter(adapter); + + return rootView; + } + + @Override + public void onAttach(@NonNull Context context) { + super.onAttach(context); + activity = (Activity) context; + } +}
\ No newline at end of file diff --git a/app/src/main/res/drawable/flag_brazil.xml b/app/src/main/res/drawable/flag_brazil.xml new file mode 100644 index 00000000..04e3485b --- /dev/null +++ b/app/src/main/res/drawable/flag_brazil.xml @@ -0,0 +1,21 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="512dp" + android:height="512dp" + android:viewportWidth="512" + android:viewportHeight="512"> + <path + android:pathData="M256,256m-256,0a256,256 0,1 1,512 0a256,256 0,1 1,-512 0" + android:fillColor="#6DA544"/> + <path + android:pathData="M256,100.174l211.478,155.826l-211.478,155.826l-211.478,-155.826z" + android:fillColor="#FFDA44"/> + <path + android:pathData="M256,256m-89.043,0a89.043,89.043 0,1 1,178.086 0a89.043,89.043 0,1 1,-178.086 0" + android:fillColor="#F0F0F0"/> + <path + android:pathData="M211.478,250.435c-15.484,0 -30.427,2.355 -44.493,6.725c0.623,48.64 40.227,87.884 89.015,87.884c30.168,0 56.812,-15.017 72.919,-37.968C301.362,272.579 258.961,250.435 211.478,250.435z" + android:fillColor="#0052B4"/> + <path + android:pathData="M343.393,273.06c1.072,-5.524 1.651,-11.223 1.651,-17.06c0,-49.178 -39.866,-89.043 -89.043,-89.043c-36.694,0 -68.194,22.201 -81.826,53.899c12.05,-2.497 24.526,-3.812 37.305,-3.812C263.197,217.043 309.983,238.541 343.393,273.06z" + android:fillColor="#0052B4"/> +</vector> diff --git a/app/src/main/res/drawable/flag_china.xml b/app/src/main/res/drawable/flag_china.xml new file mode 100644 index 00000000..e0dceaaf --- /dev/null +++ b/app/src/main/res/drawable/flag_china.xml @@ -0,0 +1,24 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="512dp" + android:height="512dp" + android:viewportWidth="512" + android:viewportHeight="512"> + <path + android:pathData="M256,256m-256,0a256,256 0,1 1,512 0a256,256 0,1 1,-512 0" + android:fillColor="#D80027"/> + <path + android:pathData="M140.1,155.8l22.1,68l71.5,0l-57.8,42.1l22.1,68l-57.9,-42l-57.9,42l22.2,-68l-57.9,-42.1l71.5,0z" + android:fillColor="#FFDA44"/> + <path + android:pathData="M303.5,396.5l-16.9,-20.8l-25,9.7l14.5,-22.5l-16.9,-20.9l25.9,6.9l14.6,-22.5l1.4,26.8l26,6.9l-25.1,9.6z" + android:fillColor="#FFDA44"/> + <path + android:pathData="M337.1,335.5l8,-25.6l-21.9,-15.5l26.8,-0.4l7.9,-25.6l8.7,25.4l26.8,-0.3l-21.5,16l8.6,25.4l-21.9,-15.5z" + android:fillColor="#FFDA44"/> + <path + android:pathData="M382.4,187.9l-11.8,24.1l19.2,18.7l-26.5,-3.8l-11.8,24l-4.6,-26.4l-26.6,-3.8l23.8,-12.5l-4.6,-26.5l19.2,18.7z" + android:fillColor="#FFDA44"/> + <path + android:pathData="M304.2,114.9l-2,26.7l24.9,10.1l-26.1,6.4l-1.9,26.8l-14.1,-22.8l-26.1,6.4l17.3,-20.5l-14.2,-22.7l24.9,10.1z" + android:fillColor="#FFDA44"/> +</vector> diff --git a/app/src/main/res/drawable/flag_croatia.xml b/app/src/main/res/drawable/flag_croatia.xml new file mode 100644 index 00000000..ae31dba0 --- /dev/null +++ b/app/src/main/res/drawable/flag_croatia.xml @@ -0,0 +1,72 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="512dp" + android:height="512dp" + android:viewportWidth="512" + android:viewportHeight="512"> + <path + android:pathData="M512,256c0,-31.314 -5.633,-61.311 -15.923,-89.043L256,155.826l-240.077,11.13C5.633,194.689 0,224.686 0,256s5.633,61.311 15.923,89.043L256,356.174l240.077,-11.13C506.367,317.311 512,287.314 512,256z" + android:fillColor="#F0F0F0"/> + <path + android:pathData="M256,512c110.071,0 203.906,-69.472 240.077,-166.957H15.923C52.094,442.528 145.929,512 256,512z" + android:fillColor="#0052B4"/> + <path + android:pathData="M15.923,166.957h480.155C459.906,69.472 366.071,0 256,0S52.094,69.472 15.923,166.957z" + android:fillColor="#D80027"/> + <path + android:pathData="M322.783,178.088l-44.522,0l7.421,-55.653l29.68,-22.261l29.681,22.261l0,44.522z" + android:fillColor="#338AF3"/> + <path + android:pathData="M189.217,178.088l44.522,0l-7.421,-55.653l-29.681,-22.261l-29.68,22.261l0,44.522z" + android:fillColor="#338AF3"/> + <path + android:pathData="M285.682,178.088l-59.364,0l0,-55.653l29.682,-22.261l29.682,22.261z" + android:fillColor="#0052B4"/> + <path + android:pathData="M166.957,166.958v122.434c0,29.153 14.082,55.079 35.802,71.332l15.583,-3.899l19.664,19.782c5.815,1.198 11.832,1.829 17.995,1.829c6.13,0 12.117,-0.623 17.901,-1.809l22.447,-18.69l12.892,2.751c21.711,-16.252 35.803,-42.151 35.803,-71.296V166.958H166.957z" + android:fillColor="#F0F0F0"/> + <path + android:pathData="M166.957,166.957h35.617v35.617h-35.617z" + android:fillColor="#D80027"/> + <path + android:pathData="M238.191,166.957h35.617v35.617h-35.617z" + android:fillColor="#D80027"/> + <path + android:pathData="M309.426,166.957h35.617v35.617h-35.617z" + android:fillColor="#D80027"/> + <path + android:pathData="M202.574,202.574h35.617v35.617h-35.617z" + android:fillColor="#D80027"/> + <path + android:pathData="M273.809,202.574h35.617v35.617h-35.617z" + android:fillColor="#D80027"/> + <path + android:pathData="M166.957,238.18h35.617v35.617h-35.617z" + android:fillColor="#D80027"/> + <path + android:pathData="M202.574,273.798h35.617v35.617h-35.617z" + android:fillColor="#D80027"/> + <path + android:pathData="M238.191,238.18h35.617v35.617h-35.617z" + android:fillColor="#D80027"/> + <path + android:pathData="M309.426,238.18h35.617v35.617h-35.617z" + android:fillColor="#D80027"/> + <path + android:pathData="M273.809,273.798h35.617v35.617h-35.617z" + android:fillColor="#D80027"/> + <path + android:pathData="M238.191,309.415h35.617v35.617h-35.617z" + android:fillColor="#D80027"/> + <path + android:pathData="M202.574,309.418h-33.319c3.056,13.24 9.064,25.355 17.302,35.617h16.017V309.418z" + android:fillColor="#D80027"/> + <path + android:pathData="M309.426,345.036h16.016c8.24,-10.262 14.246,-22.378 17.302,-35.617h-33.318V345.036z" + android:fillColor="#D80027"/> + <path + android:pathData="M202.574,345.036v15.541c10.359,7.795 22.465,13.384 35.617,16.066v-31.607H202.574z" + android:fillColor="#D80027"/> + <path + android:pathData="M273.809,345.036v31.607c13.153,-2.68 25.258,-8.271 35.617,-16.066v-15.541H273.809z" + android:fillColor="#D80027"/> +</vector> diff --git a/app/src/main/res/drawable/flag_france.xml b/app/src/main/res/drawable/flag_france.xml new file mode 100644 index 00000000..19e2182c --- /dev/null +++ b/app/src/main/res/drawable/flag_france.xml @@ -0,0 +1,15 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="512dp" + android:height="512dp" + android:viewportWidth="512" + android:viewportHeight="512"> + <path + android:pathData="M256,256m-256,0a256,256 0,1 1,512 0a256,256 0,1 1,-512 0" + android:fillColor="#F0F0F0"/> + <path + android:pathData="M512,256c0,-110.071 -69.472,-203.906 -166.957,-240.077v480.155C442.528,459.906 512,366.071 512,256z" + android:fillColor="#D80027"/> + <path + android:pathData="M0,256c0,110.071 69.473,203.906 166.957,240.077V15.923C69.473,52.094 0,145.929 0,256z" + android:fillColor="#0052B4"/> +</vector> diff --git a/app/src/main/res/drawable/flag_germany.xml b/app/src/main/res/drawable/flag_germany.xml new file mode 100644 index 00000000..a17c08b9 --- /dev/null +++ b/app/src/main/res/drawable/flag_germany.xml @@ -0,0 +1,15 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="512dp" + android:height="512dp" + android:viewportWidth="512" + android:viewportHeight="512"> + <path + android:pathData="M15.923,345.043C52.094,442.527 145.929,512 256,512s203.906,-69.473 240.077,-166.957L256,322.783L15.923,345.043z" + android:fillColor="#FFDA44"/> + <path + android:fillColor="#FF000000" + android:pathData="M256,0C145.929,0 52.094,69.472 15.923,166.957L256,189.217l240.077,-22.261C459.906,69.472 366.071,0 256,0z"/> + <path + android:pathData="M15.923,166.957C5.633,194.69 0,224.686 0,256s5.633,61.31 15.923,89.043h480.155C506.368,317.31 512,287.314 512,256s-5.632,-61.31 -15.923,-89.043H15.923z" + android:fillColor="#D80027"/> +</vector> diff --git a/app/src/main/res/drawable/flag_greece.xml b/app/src/main/res/drawable/flag_greece.xml new file mode 100644 index 00000000..7dfc2da0 --- /dev/null +++ b/app/src/main/res/drawable/flag_greece.xml @@ -0,0 +1,24 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="512dp" + android:height="512dp" + android:viewportWidth="512" + android:viewportHeight="512"> + <path + android:pathData="M256,256m-256,0a256,256 0,1 1,512 0a256,256 0,1 1,-512 0" + android:fillColor="#F0F0F0"/> + <path + android:pathData="M256,189.217h247.181c-6.419,-23.814 -16.175,-46.255 -28.755,-66.783H256V189.217z" + android:fillColor="#338AF3"/> + <path + android:pathData="M96.643,456.348h318.713c23.363,-18.608 43.399,-41.21 59.069,-66.783H37.574C53.245,415.137 73.281,437.74 96.643,456.348z" + android:fillColor="#338AF3"/> + <path + android:pathData="M89.043,61.939c-20.126,17.331 -37.525,37.74 -51.469,60.496h51.469V61.939z" + android:fillColor="#338AF3"/> + <path + android:pathData="M256,256c0,-26.076 0,-47.899 0,-66.783H155.826V256H89.043v-66.783H8.819C3.08,210.511 0,232.893 0,256s3.08,45.489 8.819,66.783h494.363C508.92,301.489 512,279.107 512,256H256z" + android:fillColor="#338AF3"/> + <path + android:pathData="M256,0c-35.549,0 -69.404,7.253 -100.174,20.348v102.087H256c0,-23.312 0,-43.139 0,-66.783h159.357C371.626,20.824 316.249,0 256,0z" + android:fillColor="#338AF3"/> +</vector> diff --git a/app/src/main/res/drawable/flag_hungary.xml b/app/src/main/res/drawable/flag_hungary.xml new file mode 100644 index 00000000..21a9f40c --- /dev/null +++ b/app/src/main/res/drawable/flag_hungary.xml @@ -0,0 +1,15 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="512dp" + android:height="512dp" + android:viewportWidth="512" + android:viewportHeight="512"> + <path + android:pathData="M15.923,166.957C5.633,194.691 0,224.686 0,256s5.633,61.311 15.923,89.043L256,367.304l240.077,-22.261C506.367,317.311 512,287.314 512,256s-5.633,-61.309 -15.923,-89.043L256,144.696L15.923,166.957z" + android:fillColor="#F0F0F0"/> + <path + android:pathData="M256,0C145.93,0 52.094,69.472 15.924,166.957h480.155C459.906,69.472 366.072,0 256,0z" + android:fillColor="#D80027"/> + <path + android:pathData="M256,512c110.072,0 203.906,-69.472 240.078,-166.957H15.924C52.094,442.528 145.93,512 256,512z" + android:fillColor="#6DA544"/> +</vector> diff --git a/app/src/main/res/drawable/flag_india.xml b/app/src/main/res/drawable/flag_india.xml new file mode 100644 index 00000000..7e96cbbe --- /dev/null +++ b/app/src/main/res/drawable/flag_india.xml @@ -0,0 +1,24 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="512dp" + android:height="512dp" + android:viewportWidth="512" + android:viewportHeight="512"> + <path + android:pathData="M256,256m-256,0a256,256 0,1 1,512 0a256,256 0,1 1,-512 0" + android:fillColor="#F0F0F0"/> + <path + android:pathData="M256,0C154.506,0 66.81,59.065 25.402,144.696h461.195C445.19,59.065 357.493,0 256,0z" + android:fillColor="#FF9811"/> + <path + android:pathData="M256,512c101.493,0 189.19,-59.065 230.598,-144.696H25.402C66.81,452.935 154.506,512 256,512z" + android:fillColor="#6DA544"/> + <path + android:pathData="M256,256m-89.043,0a89.043,89.043 0,1 1,178.086 0a89.043,89.043 0,1 1,-178.086 0" + android:fillColor="#0052B4"/> + <path + android:pathData="M256,256m-55.652,0a55.652,55.652 0,1 1,111.304 0a55.652,55.652 0,1 1,-111.304 0" + android:fillColor="#F0F0F0"/> + <path + android:pathData="M256,187.326l17.169,38.938l42.304,-4.601l-25.136,34.337l25.136,34.337l-42.304,-4.601l-17.169,38.938l-17.169,-38.938l-42.304,4.6l25.136,-34.336l-25.136,-34.337l42.304,4.601z" + android:fillColor="#0052B4"/> +</vector> diff --git a/app/src/main/res/drawable/flag_italy.xml b/app/src/main/res/drawable/flag_italy.xml new file mode 100644 index 00000000..dbf19c86 --- /dev/null +++ b/app/src/main/res/drawable/flag_italy.xml @@ -0,0 +1,15 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="512dp" + android:height="512dp" + android:viewportWidth="512" + android:viewportHeight="512"> + <path + android:pathData="M256,256m-256,0a256,256 0,1 1,512 0a256,256 0,1 1,-512 0" + android:fillColor="#F0F0F0"/> + <path + android:pathData="M512,256c0,-110.071 -69.472,-203.906 -166.957,-240.077v480.155C442.528,459.906 512,366.071 512,256z" + android:fillColor="#D80027"/> + <path + android:pathData="M0,256c0,110.071 69.472,203.906 166.957,240.077V15.923C69.472,52.094 0,145.929 0,256z" + android:fillColor="#6DA544"/> +</vector> diff --git a/app/src/main/res/drawable/flag_japan.xml b/app/src/main/res/drawable/flag_japan.xml new file mode 100644 index 00000000..5653cbbb --- /dev/null +++ b/app/src/main/res/drawable/flag_japan.xml @@ -0,0 +1,12 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="512dp" + android:height="512dp" + android:viewportWidth="512" + android:viewportHeight="512"> + <path + android:pathData="M256,256m-256,0a256,256 0,1 1,512 0a256,256 0,1 1,-512 0" + android:fillColor="#F0F0F0"/> + <path + android:pathData="M256,256m-111.304,0a111.304,111.304 0,1 1,222.608 0a111.304,111.304 0,1 1,-222.608 0" + android:fillColor="#D80027"/> +</vector> diff --git a/app/src/main/res/drawable/flag_norway.xml b/app/src/main/res/drawable/flag_norway.xml new file mode 100644 index 00000000..ecb80eda --- /dev/null +++ b/app/src/main/res/drawable/flag_norway.xml @@ -0,0 +1,24 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="512dp" + android:height="512dp" + android:viewportWidth="512" + android:viewportHeight="512"> + <path + android:pathData="M256,256m-256,0a256,256 0,1 1,512 0a256,256 0,1 1,-512 0" + android:fillColor="#F0F0F0"/> + <path + android:pathData="M8.819,322.783c14.812,54.959 47.457,102.593 91.355,136.322V322.783H8.819z" + android:fillColor="#D80027"/> + <path + android:pathData="M233.739,511.026C241.077,511.658 248.498,512 256,512c118.279,0 217.805,-80.221 247.181,-189.217H233.739V511.026z" + android:fillColor="#D80027"/> + <path + android:pathData="M503.181,189.217C473.805,80.221 374.279,0 256,0c-7.502,0 -14.923,0.342 -22.261,0.974v188.243H503.181z" + android:fillColor="#D80027"/> + <path + android:pathData="M100.174,52.895c-43.898,33.73 -76.543,81.363 -91.355,136.322h91.355V52.895z" + android:fillColor="#D80027"/> + <path + android:pathData="M509.833,222.609H200.349h-0.001V6.085c-23.658,5.246 -46.087,13.749 -66.783,25.042v191.48v0.001H2.167C0.742,233.539 0,244.683 0,256s0.742,22.461 2.167,33.391h131.397h0.001v191.481c20.696,11.292 43.125,19.797 66.783,25.042V289.394v-0.002h309.485C511.256,278.461 512,267.317 512,256S511.256,233.539 509.833,222.609z" + android:fillColor="#0052B4"/> +</vector> diff --git a/app/src/main/res/drawable/flag_portugal.xml b/app/src/main/res/drawable/flag_portugal.xml new file mode 100644 index 00000000..a0e92558 --- /dev/null +++ b/app/src/main/res/drawable/flag_portugal.xml @@ -0,0 +1,21 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="512dp" + android:height="512dp" + android:viewportWidth="512" + android:viewportHeight="512"> + <path + android:pathData="M0,256c0,110.07 69.472,203.905 166.955,240.076l22.262,-240.077L166.955,15.923C69.472,52.095 0,145.929 0,256z" + android:fillColor="#6DA544"/> + <path + android:pathData="M512,256C512,114.616 397.384,0 256,0c-31.314,0 -61.311,5.633 -89.045,15.923v480.154C194.689,506.368 224.686,512 256,512C397.384,512 512,397.384 512,256z" + android:fillColor="#D80027"/> + <path + android:pathData="M166.957,256m-89.043,0a89.043,89.043 0,1 1,178.086 0a89.043,89.043 0,1 1,-178.086 0" + android:fillColor="#FFDA44"/> + <path + android:pathData="M116.87,211.478v55.652c0,27.662 22.424,50.087 50.087,50.087s50.087,-22.424 50.087,-50.087v-55.652H116.87z" + android:fillColor="#D80027"/> + <path + android:pathData="M166.957,283.826c-9.206,0 -16.696,-7.49 -16.696,-16.696V244.87h33.391v22.261C183.652,276.336 176.162,283.826 166.957,283.826z" + android:fillColor="#F0F0F0"/> +</vector> diff --git a/app/src/main/res/drawable/flag_romania.xml b/app/src/main/res/drawable/flag_romania.xml new file mode 100644 index 00000000..e6daa579 --- /dev/null +++ b/app/src/main/res/drawable/flag_romania.xml @@ -0,0 +1,15 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="512dp" + android:height="512dp" + android:viewportWidth="512" + android:viewportHeight="512"> + <path + android:pathData="M345.043,15.922C317.309,5.633 287.314,0 256,0c-31.314,-0.001 -61.31,5.633 -89.043,15.922l-22.261,240.077l22.261,240.077C194.689,506.368 224.685,512 256,512c31.313,0 61.31,-5.632 89.043,-15.924L367.303,256L345.043,15.922z" + android:fillColor="#FFDA44"/> + <path + android:pathData="M512,256c0,-110.07 -69.472,-203.907 -166.957,-240.077v480.156C442.528,459.905 511.999,366.072 512,256z" + android:fillColor="#D80027"/> + <path + android:pathData="M0,255.999c0,110.073 69.472,203.906 166.955,240.079l0.001,-480.154C69.472,52.094 0,145.928 0,255.999z" + android:fillColor="#0052B4"/> +</vector> diff --git a/app/src/main/res/drawable/flag_russia.xml b/app/src/main/res/drawable/flag_russia.xml new file mode 100644 index 00000000..08ec9553 --- /dev/null +++ b/app/src/main/res/drawable/flag_russia.xml @@ -0,0 +1,15 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="512dp" + android:height="512dp" + android:viewportWidth="512" + android:viewportHeight="512"> + <path + android:pathData="M256,256m-256,0a256,256 0,1 1,512 0a256,256 0,1 1,-512 0" + android:fillColor="#F0F0F0"/> + <path + android:pathData="M496.077,345.043C506.368,317.31 512,287.314 512,256s-5.632,-61.31 -15.923,-89.043H15.923C5.633,194.69 0,224.686 0,256s5.633,61.31 15.923,89.043L256,367.304L496.077,345.043z" + android:fillColor="#0052B4"/> + <path + android:pathData="M256,512c110.071,0 203.906,-69.472 240.077,-166.957H15.923C52.094,442.528 145.929,512 256,512z" + android:fillColor="#D80027"/> +</vector> diff --git a/app/src/main/res/drawable/flag_south_korea.xml b/app/src/main/res/drawable/flag_south_korea.xml new file mode 100644 index 00000000..5481b529 --- /dev/null +++ b/app/src/main/res/drawable/flag_south_korea.xml @@ -0,0 +1,69 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="512dp" + android:height="512dp" + android:viewportWidth="512" + android:viewportHeight="512"> + <path + android:pathData="M256,256m-256,0a256,256 0,1 1,512 0a256,256 0,1 1,-512 0" + android:fillColor="#F0F0F0"/> + <path + android:pathData="M345.043,256c0,22.261 -39.866,77.913 -89.043,77.913S166.957,278.261 166.957,256c0,-49.178 39.866,-89.043 89.043,-89.043S345.043,206.822 345.043,256z" + android:fillColor="#D80027"/> + <path + android:pathData="M345.043,256c0,49.178 -39.866,89.043 -89.043,89.043S166.957,305.178 166.957,256" + android:fillColor="#0052B4"/> + <path + android:fillColor="#FF000000" + android:pathData="M350.442,334.705l23.611,-23.611l15.741,15.741l-23.611,23.611z"/> + <path + android:fillColor="#FF000000" + android:pathData="M311.085,374.059l23.611,-23.611l15.741,15.741l-23.611,23.611z"/> + <path + android:fillColor="#FF000000" + android:pathData="M397.67,381.917l23.611,-23.611l15.741,15.741l-23.611,23.611z"/> + <path + android:fillColor="#FF000000" + android:pathData="M358.314,421.278l23.611,-23.611l15.741,15.741l-23.611,23.611z"/> + <path + android:fillColor="#FF000000" + android:pathData="M374.055,358.313l23.611,-23.611l15.741,15.741l-23.611,23.611z"/> + <path + android:fillColor="#FF000000" + android:pathData="M334.709,397.667l23.611,-23.611l15.741,15.741l-23.611,23.611z"/> + <path + android:fillColor="#FF000000" + android:pathData="M397.678,177.289l-62.962,-62.962l15.741,-15.741l62.962,62.962z"/> + <path + android:fillColor="#FF000000" + android:pathData="M334.713,161.558l-23.611,-23.611l15.74,-15.74l23.611,23.611z"/> + <path + android:fillColor="#FF000000" + android:pathData="M374.06,200.907l-23.611,-23.611l15.74,-15.74l23.611,23.611z"/> + <path + android:fillColor="#FF000000" + android:pathData="M381.915,114.336l-23.611,-23.611l15.741,-15.741l23.611,23.611z"/> + <path + android:fillColor="#FF000000" + android:pathData="M421.283,153.688l-23.611,-23.611l15.741,-15.741l23.611,23.611z"/> + <path + android:fillColor="#FF000000" + android:pathData="M90.723,358.318l62.962,62.962l-15.741,15.741l-62.962,-62.962z"/> + <path + android:fillColor="#FF000000" + android:pathData="M153.68,374.051l23.611,23.611l-15.74,15.74l-23.611,-23.611z"/> + <path + android:fillColor="#FF000000" + android:pathData="M114.331,334.703l23.611,23.611l-15.741,15.741l-23.611,-23.611z"/> + <path + android:fillColor="#FF000000" + android:pathData="M137.943,311.091l62.962,62.962l-15.741,15.741l-62.962,-62.962z"/> + <path + android:fillColor="#FF000000" + android:pathData="M153.684,90.72l-62.962,62.962l-15.741,-15.741l62.962,-62.962z"/> + <path + android:fillColor="#FF000000" + android:pathData="M177.287,114.325l-62.962,62.962l-15.741,-15.741l62.962,-62.962z"/> + <path + android:fillColor="#FF000000" + android:pathData="M200.912,137.947l-62.962,62.962l-15.74,-15.74l62.962,-62.962z"/> +</vector> diff --git a/app/src/main/res/drawable/flag_spain.xml b/app/src/main/res/drawable/flag_spain.xml new file mode 100644 index 00000000..b3e03266 --- /dev/null +++ b/app/src/main/res/drawable/flag_spain.xml @@ -0,0 +1,15 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="512dp" + android:height="512dp" + android:viewportWidth="512" + android:viewportHeight="512"> + <path + android:pathData="M0,256c0,31.314 5.633,61.31 15.923,89.043L256,367.304l240.077,-22.261C506.367,317.31 512,287.314 512,256s-5.633,-61.31 -15.923,-89.043L256,144.696L15.923,166.957C5.633,194.69 0,224.686 0,256z" + android:fillColor="#FFDA44"/> + <path + android:pathData="M496.077,166.957C459.906,69.473 366.071,0 256,0S52.094,69.473 15.923,166.957H496.077z" + android:fillColor="#D80027"/> + <path + android:pathData="M15.923,345.043C52.094,442.527 145.929,512 256,512s203.906,-69.473 240.077,-166.957H15.923z" + android:fillColor="#D80027"/> +</vector> diff --git a/app/src/main/res/drawable/flag_sweden.xml b/app/src/main/res/drawable/flag_sweden.xml new file mode 100644 index 00000000..fe24454d --- /dev/null +++ b/app/src/main/res/drawable/flag_sweden.xml @@ -0,0 +1,21 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="512dp" + android:height="512dp" + android:viewportWidth="512" + android:viewportHeight="512"> + <path + android:pathData="M256,256m-256,0a256,256 0,1 1,512 0a256,256 0,1 1,-512 0" + android:fillColor="#FFDA44"/> + <path + android:pathData="M200.349,222.609h309.484C493.47,97.002 386.067,0 256,0c-19.114,0 -37.733,2.113 -55.652,6.085v216.524H200.349z" + android:fillColor="#0052B4"/> + <path + android:pathData="M133.565,222.608V31.127C63.271,69.481 12.95,139.832 2.167,222.609h131.398V222.608z" + android:fillColor="#0052B4"/> + <path + android:pathData="M133.564,289.391H2.167c10.783,82.777 61.104,153.128 131.398,191.481L133.564,289.391L133.564,289.391z" + android:fillColor="#0052B4"/> + <path + android:pathData="M200.348,289.392v216.523C218.267,509.887 236.886,512 256,512c130.067,0 237.47,-97.002 253.833,-222.609H200.348V289.392z" + android:fillColor="#0052B4"/> +</vector> diff --git a/app/src/main/res/drawable/flag_turkey.xml b/app/src/main/res/drawable/flag_turkey.xml new file mode 100644 index 00000000..57be045c --- /dev/null +++ b/app/src/main/res/drawable/flag_turkey.xml @@ -0,0 +1,15 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="512dp" + android:height="512dp" + android:viewportWidth="512" + android:viewportHeight="512"> + <path + android:pathData="M256,256m-256,0a256,256 0,1 1,512 0a256,256 0,1 1,-512 0" + android:fillColor="#D80027"/> + <path + android:pathData="M245.518,209.186l21.005,28.945l34.017,-11.03l-21.038,28.92l21.002,28.944l-34.005,-11.072l-21.037,28.92l0.022,-35.761l-34.006,-11.072l34.018,-11.03z" + android:fillColor="#F0F0F0"/> + <path + android:pathData="M188.194,328.348c-39.956,0 -72.348,-32.392 -72.348,-72.348s32.392,-72.348 72.348,-72.348c12.458,0 24.18,3.151 34.414,8.696c-16.055,-15.702 -38.012,-25.392 -62.24,-25.392c-49.178,0 -89.043,39.866 -89.043,89.043s39.866,89.043 89.043,89.043c24.23,0 46.186,-9.691 62.24,-25.392C212.374,325.197 200.652,328.348 188.194,328.348z" + android:fillColor="#F0F0F0"/> +</vector> diff --git a/app/src/main/res/drawable/flag_vietnam.xml b/app/src/main/res/drawable/flag_vietnam.xml new file mode 100644 index 00000000..a7e76979 --- /dev/null +++ b/app/src/main/res/drawable/flag_vietnam.xml @@ -0,0 +1,12 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="512dp" + android:height="512dp" + android:viewportWidth="512" + android:viewportHeight="512"> + <path + android:pathData="M256,256m-256,0a256,256 0,1 1,512 0a256,256 0,1 1,-512 0" + android:fillColor="#D80027"/> + <path + android:pathData="M256,133.565l27.628,85.029l89.405,0l-72.331,52.55l27.628,85.03l-72.33,-52.551l-72.33,52.551l27.628,-85.03l-72.33,-52.55l89.404,0z" + android:fillColor="#FFDA44"/> +</vector> diff --git a/app/src/main/res/layout/fragment_translation.xml b/app/src/main/res/layout/fragment_translation.xml new file mode 100644 index 00000000..69234bd3 --- /dev/null +++ b/app/src/main/res/layout/fragment_translation.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<androidx.recyclerview.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:id="@+id/recycler_view_translation_fragment" + tools:context=".Settings.TranslationFragment" />
\ No newline at end of file diff --git a/app/src/main/res/layout/item_translation_contributor.xml b/app/src/main/res/layout/item_translation_contributor.xml new file mode 100644 index 00000000..7054a892 --- /dev/null +++ b/app/src/main/res/layout/item_translation_contributor.xml @@ -0,0 +1,42 @@ +<?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="16dp" + android:clickable="true" + android:focusable="true" + android:background="?attr/selectableItemBackground"> + + <ImageView + android:id="@+id/country_flag_image_view_item_translation_contributor" + android:layout_width="40dp" + android:layout_height="40dp" + android:layout_gravity="center_vertical" /> + + <LinearLayout + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:orientation="vertical" + android:layout_gravity="center_vertical" + android:layout_marginStart="16dp" + android:layout_marginEnd="16dp"> + + <TextView + android:id="@+id/language_name_text_view_item_translation_contributor" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:textSize="?attr/font_12" + android:fontFamily="?attr/font_family" /> + + <TextView + android:id="@+id/contributor_names_text_view_item_translation_contributor" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:textSize="?attr/font_default" + android:fontFamily="?attr/font_family" /> + + </LinearLayout> + +</LinearLayout>
\ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ce787a3c..018969fa 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -490,6 +490,7 @@ <string name="settings_bottom_app_bar_fab">Floating Action Button</string> <string name="settings_data_saving_mode">Data Saving Mode</string> <string name="settings_data_saving_mode_info_summary">In data saving mode, preview images are in lower resolution.</string> + <string name="settings_translation">Translation</string> <string name="no_link_available">Cannot get the link</string> @@ -907,5 +908,7 @@ <string name="give_award_error_message">Code: %1$d/\n Message: %2$s</string> <string name="give_award_success">Award given</string> <string name="give_award_failed">Failed</string> + <!-- TODO: Remove or change this placeholder text --> + <string name="hello_blank_fragment">Hello blank fragment</string> </resources> diff --git a/app/src/main/res/xml/about_preferences.xml b/app/src/main/res/xml/about_preferences.xml index a73f9aaa..74a17eaa 100644 --- a/app/src/main/res/xml/about_preferences.xml +++ b/app/src/main/res/xml/about_preferences.xml @@ -11,6 +11,11 @@ app:fragment="ml.docilealligator.infinityforreddit.Settings.CreditsPreferenceFragment" /> <Preference + android:key="translation" + app:title="@string/settings_translation" + app:fragment="ml.docilealligator.infinityforreddit.Settings.TranslationFragment"/> + + <Preference android:key="open_source" app:title="@string/settings_open_source_title" app:summary="@string/settings_open_source_summary" /> |