From 085be69eaee5d6d155ca4609cbbde0eaac797e12 Mon Sep 17 00:00:00 2001
From: Janne Koschinski <janne@kuschku.de>
Date: Sat, 19 May 2018 00:22:49 +0200
Subject: [PATCH] Added translator menu

---
 .../ui/clientsettings/about/AboutFragment.kt  | 22 +++++++
 .../ui/clientsettings/about/Translator.kt     | 27 +++++++++
 .../clientsettings/about/TranslatorAdapter.kt | 59 +++++++++++++++++++
 app/src/main/res/layout/preferences_about.xml | 19 ++++++
 app/src/main/res/layout/widget_translator.xml | 59 +++++++++++++++++++
 app/src/main/res/values/strings.xml           |  1 +
 .../main/res/values/strings_preferences.xml   |  3 +
 7 files changed, 190 insertions(+)
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/Translator.kt
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/TranslatorAdapter.kt
 create mode 100644 app/src/main/res/layout/widget_translator.xml

diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/AboutFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/AboutFragment.kt
index c3f7f9b74..8098f974b 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/AboutFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/AboutFragment.kt
@@ -61,6 +61,9 @@ class AboutFragment : DaggerFragment() {
   @BindView(R.id.contributors)
   lateinit var contributors: RecyclerView
 
+  @BindView(R.id.translators)
+  lateinit var translators: RecyclerView
+
   @BindView(R.id.libraries)
   lateinit var libraries: RecyclerView
 
@@ -351,6 +354,25 @@ class AboutFragment : DaggerFragment() {
     contributors.addItemDecoration(DividerItemDecoration(context, LinearLayoutManager.VERTICAL))
     ViewCompat.setNestedScrollingEnabled(contributors, false)
 
+    translators.layoutManager = LinearLayoutManager(context)
+    translators.itemAnimator = null
+    translators.adapter = TranslatorAdapter(listOf(
+      Translator(
+        name = "TDa_",
+        language = R.string.preference_language_entry_lt
+      ),
+      Translator(
+        name = "Exterminador",
+        language = R.string.preference_language_entry_pt
+      ),
+      Translator(
+        name = "Luka Ilić",
+        language = R.string.preference_language_entry_sr
+      )
+    ))
+    translators.addItemDecoration(DividerItemDecoration(context, LinearLayoutManager.VERTICAL))
+    ViewCompat.setNestedScrollingEnabled(translators, false)
+
     return view
   }
 }
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/Translator.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/Translator.kt
new file mode 100644
index 000000000..b29f42305
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/Translator.kt
@@ -0,0 +1,27 @@
+/*
+ * Quasseldroid - Quassel client for Android
+ *
+ * Copyright (c) 2018 Janne Koschinski
+ * Copyright (c) 2018 The Quassel Project
+ *
+ * This program is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 3 as published
+ * by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+package de.kuschku.quasseldroid.ui.clientsettings.about
+
+import android.support.annotation.StringRes
+
+data class Translator(
+  val name: String,
+  @StringRes val language: Int
+)
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/TranslatorAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/TranslatorAdapter.kt
new file mode 100644
index 000000000..b751d65ea
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/TranslatorAdapter.kt
@@ -0,0 +1,59 @@
+/*
+ * Quasseldroid - Quassel client for Android
+ *
+ * Copyright (c) 2018 Janne Koschinski
+ * Copyright (c) 2018 The Quassel Project
+ *
+ * This program is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 3 as published
+ * by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+package de.kuschku.quasseldroid.ui.clientsettings.about
+
+import android.support.v7.widget.RecyclerView
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import butterknife.BindView
+import butterknife.ButterKnife
+import de.kuschku.quasseldroid.R
+
+class TranslatorAdapter(private val translators: List<Translator>) :
+  RecyclerView.Adapter<TranslatorAdapter.TranslatorViewHolder>() {
+  override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = TranslatorViewHolder(
+    LayoutInflater.from(parent.context).inflate(R.layout.widget_translator, parent, false)
+  )
+
+  override fun getItemCount() = translators.size
+
+  override fun onBindViewHolder(holder: TranslatorViewHolder, position: Int) {
+    holder.bind(translators[position])
+  }
+
+  class TranslatorViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+    @BindView(R.id.name)
+    lateinit var name: TextView
+
+    @BindView(R.id.language)
+    lateinit var language: TextView
+
+    init {
+      ButterKnife.bind(this, itemView)
+    }
+
+    fun bind(item: Translator) {
+      this.name.text = item.name
+      this.language.text = itemView.resources.getString(item.language)
+    }
+  }
+}
diff --git a/app/src/main/res/layout/preferences_about.xml b/app/src/main/res/layout/preferences_about.xml
index 47e761bc2..530fefa51 100644
--- a/app/src/main/res/layout/preferences_about.xml
+++ b/app/src/main/res/layout/preferences_about.xml
@@ -49,6 +49,25 @@
 
     </LinearLayout>
 
+    <LinearLayout
+      android:layout_width="match_parent"
+      android:layout_height="wrap_content"
+      android:layout_marginTop="?listPreferredItemHeight"
+      android:orientation="vertical">
+
+      <TextView
+        style="@style/Widget.Subhead"
+        android:text="@string/label_translators" />
+
+      <android.support.v7.widget.RecyclerView
+        android:id="@+id/translators"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        tools:itemCount="5"
+        tools:listitem="@layout/widget_translator" />
+
+    </LinearLayout>
+
     <LinearLayout
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
diff --git a/app/src/main/res/layout/widget_translator.xml b/app/src/main/res/layout/widget_translator.xml
new file mode 100644
index 000000000..1a345a5ac
--- /dev/null
+++ b/app/src/main/res/layout/widget_translator.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="utf-8"?><!--
+  Quasseldroid - Quassel client for Android
+
+  Copyright (c) 2018 Janne Koschinski
+  Copyright (c) 2018 The Quassel Project
+
+  This program is free software: you can redistribute it and/or modify it
+  under the terms of the GNU General Public License version 3 as published
+  by the Free Software Foundation.
+
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License along
+  with this program.  If not, see <http://www.gnu.org/licenses/>.
+  -->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+  xmlns:tools="http://schemas.android.com/tools"
+  android:layout_width="match_parent"
+  android:layout_height="wrap_content"
+  android:background="?android:attr/selectableItemBackground"
+  android:focusable="true"
+  android:gravity="center_vertical"
+  android:minHeight="?android:attr/listPreferredItemHeightSmall"
+  android:paddingEnd="?android:attr/listPreferredItemPaddingRight"
+  android:paddingLeft="?android:attr/listPreferredItemPaddingLeft"
+  android:paddingRight="?android:attr/listPreferredItemPaddingRight"
+  android:paddingStart="?android:attr/listPreferredItemPaddingLeft"
+  tools:showIn="@layout/preferences_about">
+
+  <LinearLayout
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:orientation="vertical"
+    android:paddingBottom="16dp"
+    android:paddingTop="16dp">
+
+    <TextView
+      android:id="@+id/name"
+      style="@style/Widget.RtlConformTextView"
+      android:layout_width="wrap_content"
+      android:layout_height="wrap_content"
+      android:textColor="?colorTextPrimary"
+      android:textSize="16sp"
+      tools:text="@sample/contributors.json/data/name" />
+
+    <TextView
+      android:id="@+id/language"
+      style="@style/Widget.RtlConformTextView"
+      android:layout_width="wrap_content"
+      android:layout_height="wrap_content"
+      android:textAppearance="?android:attr/textAppearanceSmall"
+      android:textColor="?colorTextSecondary"
+      tools:text="@sample/contributors.json/data/description" />
+  </LinearLayout>
+</LinearLayout>
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index e3019f061..f4736bc61 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -96,6 +96,7 @@
   <string name="label_share_crashreport">Share Crash Report</string>
   <string name="label_show_hidden">Show Hidden</string>
   <string name="label_topic">Channel Topic</string>
+  <string name="label_translators">Translators</string>
   <string name="label_unhide">Make Visible</string>
   <string name="label_website">Website</string>
   <string name="label_whitelist">Ignore</string>
diff --git a/app/src/main/res/values/strings_preferences.xml b/app/src/main/res/values/strings_preferences.xml
index a4f188f13..56a6e5edd 100644
--- a/app/src/main/res/values/strings_preferences.xml
+++ b/app/src/main/res/values/strings_preferences.xml
@@ -85,12 +85,14 @@
   <string name="preference_language_entry_de" translatable="false">Deutsch</string>
   <string name="preference_language_entry_lt" translatable="false">Lietuvių</string>
   <string name="preference_language_entry_pt" translatable="false">Português</string>
+  <string name="preference_language_entry_sr" translatable="false">Srpski (latinica)</string>
   <string-array name="preference_language_entries" translatable="false">
     <item>@string/preference_language_entry_auto</item>
     <item>@string/preference_language_entry_en</item>
     <item>@string/preference_language_entry_de</item>
     <item>@string/preference_language_entry_lt</item>
     <item>@string/preference_language_entry_pt</item>
+    <!--<item>@string/preference_language_entry_sr</item>-->
   </string-array>
   <string-array name="preference_language_entryvalues" translatable="false">
     <item />
@@ -98,6 +100,7 @@
     <item>de</item>
     <item>lt</item>
     <item>pt</item>
+    <!--<item>sr</item>-->
   </string-array>
 
 
-- 
GitLab