Merge pull request #692 from Bnyro/master

community fragment in settings
This commit is contained in:
Bnyro 2022-07-05 11:28:14 +02:00 committed by GitHub
commit 2fff41ba49
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
15 changed files with 303 additions and 19 deletions

View File

@ -0,0 +1,23 @@
package com.github.libretube
/**
* API link for the update checker
*/
const val GITHUB_API_URL = "https://api.github.com/repos/libre-tube/LibreTube/releases/latest"
/**
* Links for the about fragment
*/
const val WEBSITE_URL = "https://libre-tube.github.io/"
const val DONATE_URL = "https://github.com/libre-tube/LibreTube#donate"
const val GITHUB_URL = "https://github.com/libre-tube/LibreTube"
const val PIPED_GITHUB_URL = "https://github.com/TeamPiped/Piped"
/**
* Social media links for the community fragment
*/
const val TELEGRAM_URL = "https://t.me/libretube"
const val MATRIX_URL = "https://matrix.to/#/#LibreTube:matrix.org"
const val DISCORD_URL = "https://discord.com/invite/Qc34xCj2GV"
const val REDDIT_URL = "https://www.reddit.com/r/Libretube/"
const val TWITTER_URL = "https://twitter.com/libretube"

View File

@ -9,14 +9,14 @@ import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import com.github.libretube.DONATE_URL
import com.github.libretube.GITHUB_URL
import com.github.libretube.PIPED_GITHUB_URL
import com.github.libretube.R import com.github.libretube.R
import com.github.libretube.WEBSITE_URL
import com.github.libretube.activities.SettingsActivity import com.github.libretube.activities.SettingsActivity
import com.github.libretube.databinding.FragmentAboutBinding import com.github.libretube.databinding.FragmentAboutBinding
import com.github.libretube.util.DONATE_URL
import com.github.libretube.util.GITHUB_URL
import com.github.libretube.util.PIPED_GITHUB_URL
import com.github.libretube.util.ThemeHelper.getThemeColor import com.github.libretube.util.ThemeHelper.getThemeColor
import com.github.libretube.util.WEBSITE_URL
import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.google.android.material.snackbar.Snackbar import com.google.android.material.snackbar.Snackbar

View File

@ -0,0 +1,63 @@
package com.github.libretube.preferences
import android.content.Intent
import android.net.Uri
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import com.github.libretube.DISCORD_URL
import com.github.libretube.MATRIX_URL
import com.github.libretube.R
import com.github.libretube.REDDIT_URL
import com.github.libretube.TELEGRAM_URL
import com.github.libretube.TWITTER_URL
import com.github.libretube.activities.SettingsActivity
import com.github.libretube.databinding.FragmentCommunityBinding
class CommunityFragment : Fragment() {
private lateinit var binding: FragmentCommunityBinding
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
binding = FragmentCommunityBinding.inflate(layoutInflater)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val settingsActivity = activity as SettingsActivity
settingsActivity.changeTopBarText(getString(R.string.community))
binding.telegram.setOnClickListener {
openLinkFromHref(TELEGRAM_URL)
}
binding.matrix.setOnClickListener {
openLinkFromHref(MATRIX_URL)
}
binding.discord.setOnClickListener {
openLinkFromHref(DISCORD_URL)
}
binding.reddit.setOnClickListener {
openLinkFromHref(REDDIT_URL)
}
binding.twitter.setOnClickListener {
openLinkFromHref(TWITTER_URL)
}
}
private fun openLinkFromHref(link: String) {
val uri = Uri.parse(link)
val intent = Intent(Intent.ACTION_VIEW).setData(uri)
startActivity(intent)
}
}

View File

@ -38,35 +38,35 @@ class MainSettings : PreferenceFragmentCompat() {
val instance = findPreference<Preference>("instance") val instance = findPreference<Preference>("instance")
instance?.setOnPreferenceClickListener { instance?.setOnPreferenceClickListener {
val newFragment = InstanceSettings() val newFragment = InstanceSettings()
navigateSettings(newFragment) navigateToSettingsFragment(newFragment)
true true
} }
val appearance = findPreference<Preference>("appearance") val appearance = findPreference<Preference>("appearance")
appearance?.setOnPreferenceClickListener { appearance?.setOnPreferenceClickListener {
val newFragment = AppearanceSettings() val newFragment = AppearanceSettings()
navigateSettings(newFragment) navigateToSettingsFragment(newFragment)
true true
} }
val sponsorBlock = findPreference<Preference>("sponsorblock") val sponsorBlock = findPreference<Preference>("sponsorblock")
sponsorBlock?.setOnPreferenceClickListener { sponsorBlock?.setOnPreferenceClickListener {
val newFragment = SponsorBlockSettings() val newFragment = SponsorBlockSettings()
navigateSettings(newFragment) navigateToSettingsFragment(newFragment)
true true
} }
val player = findPreference<Preference>("player") val player = findPreference<Preference>("player")
player?.setOnPreferenceClickListener { player?.setOnPreferenceClickListener {
val newFragment = PlayerSettings() val newFragment = PlayerSettings()
navigateSettings(newFragment) navigateToSettingsFragment(newFragment)
true true
} }
val advanced = findPreference<Preference>("advanced") val advanced = findPreference<Preference>("advanced")
advanced?.setOnPreferenceClickListener { advanced?.setOnPreferenceClickListener {
val newFragment = AdvancedSettings() val newFragment = AdvancedSettings()
navigateSettings(newFragment) navigateToSettingsFragment(newFragment)
true true
} }
@ -80,12 +80,19 @@ class MainSettings : PreferenceFragmentCompat() {
val about = findPreference<Preference>("about") val about = findPreference<Preference>("about")
about?.setOnPreferenceClickListener { about?.setOnPreferenceClickListener {
val newFragment = AboutFragment() val newFragment = AboutFragment()
navigateSettings(newFragment) navigateToSettingsFragment(newFragment)
true
}
val community = findPreference<Preference>("community")
community?.setOnPreferenceClickListener {
val newFragment = CommunityFragment()
navigateToSettingsFragment(newFragment)
true true
} }
} }
private fun navigateSettings(newFragment: Fragment) { private fun navigateToSettingsFragment(newFragment: Fragment) {
isCurrentViewMainSettings = false isCurrentViewMainSettings = false
parentFragmentManager.beginTransaction() parentFragmentManager.beginTransaction()
.replace(R.id.settings, newFragment) .replace(R.id.settings, newFragment)

View File

@ -1,7 +0,0 @@
package com.github.libretube.util
const val GITHUB_API_URL = "https://api.github.com/repos/libre-tube/LibreTube/releases/latest"
const val WEBSITE_URL = "https://libre-tube.github.io/"
const val DONATE_URL = "https://github.com/libre-tube/LibreTube#donate"
const val GITHUB_URL = "https://github.com/libre-tube/LibreTube"
const val PIPED_GITHUB_URL = "https://github.com/TeamPiped/Piped"

View File

@ -3,6 +3,7 @@ package com.github.libretube.util
import android.util.Log import android.util.Log
import androidx.fragment.app.FragmentManager import androidx.fragment.app.FragmentManager
import com.github.libretube.BuildConfig import com.github.libretube.BuildConfig
import com.github.libretube.GITHUB_API_URL
import com.github.libretube.dialogs.NoUpdateAvailableDialog import com.github.libretube.dialogs.NoUpdateAvailableDialog
import com.github.libretube.dialogs.UpdateAvailableDialog import com.github.libretube.dialogs.UpdateAvailableDialog
import com.github.libretube.obj.UpdateInfo import com.github.libretube.obj.UpdateInfo

View File

@ -0,0 +1,15 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="?android:attr/colorControlNormal"
android:viewportWidth="48"
android:viewportHeight="48">
<path
android:fillColor="#000000"
android:fillType="evenOdd"
android:pathData="M20,32C28.837,32 36,26.627 36,20C36,13.373 28.837,8 20,8C11.163,8 4,13.373 4,20C4,22.684 5.175,25.163 7.16,27.162C6.356,29.454 5.313,31.172 4.65,32.132C4.407,32.483 4.657,32.98 5.083,32.945C6.785,32.806 10.122,32.311 12.374,30.552C14.641,31.475 17.239,32 20,32Z" />
<path
android:fillColor="#000000"
android:fillType="evenOdd"
android:pathData="M22.784,33.834C31.403,32.793 38,26.996 38,20C38,19.463 37.961,18.933 37.886,18.412C41.553,20.1 44,23.136 44,26.6C44,28.748 43.06,30.73 41.472,32.329C42.068,34.028 42.828,35.333 43.358,36.126C43.595,36.481 43.342,36.978 42.917,36.937C41.504,36.802 39.011,36.377 37.301,35.042C35.487,35.781 33.409,36.2 31.2,36.2C27.978,36.2 25.034,35.307 22.784,33.834Z" />
</vector>

View File

@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="?android:attr/colorControlNormal"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FF000000"
android:pathData="m15.43,11.4c-0.054,0.633 -0.582,1.127 -1.224,1.127 -0.678,0 -1.229,-0.55 -1.229,-1.229s0.55,-1.229 1.228,-1.229c0.683,0.029 1.225,0.59 1.225,1.277 0,0.019 0,0.037 -0.001,0.056v-0.003zM9.826,10.07c-0.688,0.061 -1.223,0.634 -1.223,1.332s0.535,1.271 1.218,1.332h0.005c0.683,-0.029 1.225,-0.59 1.225,-1.277 0,-0.019 0,-0.037 -0.001,-0.056v0.003c0.001,-0.02 0.002,-0.043 0.002,-0.067 0,-0.685 -0.541,-1.243 -1.219,-1.269h-0.002zM22.5,2.472v21.528c-3.023,-2.672 -2.057,-1.787 -5.568,-5.052l0.636,2.22h-13.609c-1.359,-0.004 -2.46,-1.106 -2.46,-2.466 0,-0.002 0,-0.004 0,-0.006v-16.224c0,-0.002 0,-0.004 0,-0.006 0,-1.36 1.101,-2.462 2.459,-2.466h16.081c1.359,0.004 2.46,1.106 2.46,2.466v0.006zM19.08,13.848c-0.042,-2.559 -0.676,-4.96 -1.77,-7.086l0.042,0.09c-0.924,-0.731 -2.088,-1.195 -3.358,-1.259l-0.014,-0.001 -0.168,0.192c1.15,0.312 2.15,0.837 3.002,1.535l-0.014,-0.011c-1.399,-0.769 -3.066,-1.222 -4.839,-1.222 -1.493,0 -2.911,0.321 -4.189,0.898l0.064,-0.026c-0.444,0.204 -0.708,0.35 -0.708,0.35 0.884,-0.722 1.942,-1.266 3.1,-1.56l0.056,-0.012 -0.12,-0.144c-1.284,0.065 -2.448,0.529 -3.384,1.269l0.012,-0.009c-1.052,2.036 -1.686,4.437 -1.728,6.982v0.014c0.799,1.111 2.088,1.826 3.543,1.826 0.041,0 0.082,-0.001 0.123,-0.002h-0.006s0.444,-0.54 0.804,-0.996c-0.866,-0.223 -1.592,-0.727 -2.093,-1.406l-0.007,-0.01c0.176,0.124 0.468,0.284 0.49,0.3 1.209,0.672 2.652,1.067 4.188,1.067 1.191,0 2.326,-0.238 3.36,-0.668l-0.058,0.021c0.528,-0.202 0.982,-0.44 1.404,-0.723l-0.025,0.016c-0.526,0.703 -1.277,1.212 -2.144,1.423l-0.026,0.005c0.36,0.456 0.792,0.972 0.792,0.972 0.033,0.001 0.072,0.001 0.111,0.001 1.461,0 2.755,-0.714 3.552,-1.813l0.009,-0.013z"/>
</vector>

View File

@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="?android:attr/colorControlNormal"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FF000000"
android:pathData="M0.632,0.55v22.9L2.28,23.45L2.28,24L0,24L0,0h2.28v0.55zM7.675,7.81v1.157h0.033c0.309,-0.443 0.683,-0.784 1.117,-1.024 0.433,-0.245 0.936,-0.365 1.5,-0.365 0.54,0 1.033,0.107 1.481,0.314 0.448,0.208 0.785,0.582 1.02,1.108 0.254,-0.374 0.6,-0.706 1.034,-0.992 0.434,-0.287 0.95,-0.43 1.546,-0.43 0.453,0 0.872,0.056 1.26,0.167 0.388,0.11 0.716,0.286 0.993,0.53 0.276,0.245 0.489,0.559 0.646,0.951 0.152,0.392 0.23,0.863 0.23,1.417v5.728h-2.349L16.186,11.52c0,-0.286 -0.01,-0.559 -0.032,-0.812a1.755,1.755 0,0 0,-0.18 -0.66,1.106 1.106,0 0,0 -0.438,-0.448c-0.194,-0.11 -0.457,-0.166 -0.785,-0.166 -0.332,0 -0.6,0.064 -0.803,0.189a1.38,1.38 0,0 0,-0.48 0.499,1.946 1.946,0 0,0 -0.231,0.696 5.56,5.56 0,0 0,-0.06 0.785v4.768h-2.35v-4.8c0,-0.254 -0.004,-0.503 -0.018,-0.752a2.074,2.074 0,0 0,-0.143 -0.688,1.052 1.052,0 0,0 -0.415,-0.503c-0.194,-0.125 -0.476,-0.19 -0.854,-0.19 -0.111,0 -0.259,0.024 -0.439,0.074 -0.18,0.051 -0.36,0.143 -0.53,0.282 -0.171,0.138 -0.319,0.337 -0.439,0.595 -0.12,0.259 -0.18,0.6 -0.18,1.02v4.966L5.46,16.375L5.46,7.81zM23.368,23.45L23.368,0.55L21.72,0.55L21.72,0L24,0v24h-2.28v-0.55z"/>
</vector>

View File

@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="?android:attr/colorControlNormal"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FF000000"
android:pathData="M12,0A12,12 0,0 0,0 12a12,12 0,0 0,12 12,12 12,0 0,0 12,-12A12,12 0,0 0,12 0zM17.01,4.744c0.688,0 1.25,0.561 1.25,1.249a1.25,1.25 0,0 1,-2.498 0.056l-2.597,-0.547 -0.8,3.747c1.824,0.07 3.48,0.632 4.674,1.488 0.308,-0.309 0.73,-0.491 1.207,-0.491 0.968,0 1.754,0.786 1.754,1.754 0,0.716 -0.435,1.333 -1.01,1.614a3.111,3.111 0,0 1,0.042 0.52c0,2.694 -3.13,4.87 -7.004,4.87 -3.874,0 -7.004,-2.176 -7.004,-4.87 0,-0.183 0.015,-0.366 0.043,-0.534A1.748,1.748 0,0 1,4.028 12c0,-0.968 0.786,-1.754 1.754,-1.754 0.463,0 0.898,0.196 1.207,0.49 1.207,-0.883 2.878,-1.43 4.744,-1.487l0.885,-4.182a0.342,0.342 0,0 1,0.14 -0.197,0.35 0.35,0 0,1 0.238,-0.042l2.906,0.617a1.214,1.214 0,0 1,1.108 -0.701zM9.25,12C8.561,12 8,12.562 8,13.25c0,0.687 0.561,1.248 1.25,1.248 0.687,0 1.248,-0.561 1.248,-1.249 0,-0.688 -0.561,-1.249 -1.249,-1.249zM14.75,12c-0.687,0 -1.248,0.561 -1.248,1.25 0,0.687 0.561,1.248 1.249,1.248 0.688,0 1.249,-0.561 1.249,-1.249 0,-0.687 -0.562,-1.249 -1.25,-1.249zM9.284,15.99a0.327,0.327 0,0 0,-0.231 0.094,0.33 0.33,0 0,0 0,0.463c0.842,0.842 2.484,0.913 2.961,0.913 0.477,0 2.105,-0.056 2.961,-0.913a0.361,0.361 0,0 0,0.029 -0.463,0.33 0.33,0 0,0 -0.464,0c-0.547,0.533 -1.684,0.73 -2.512,0.73 -0.828,0 -1.979,-0.196 -2.512,-0.73a0.326,0.326 0,0 0,-0.232 -0.095z"/>
</vector>

View File

@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="?android:attr/colorControlNormal"
android:viewportWidth="15"
android:viewportHeight="15">
<path
android:fillColor="#000000"
android:pathData="M14.993,1.582C15.022,1.407 14.957,1.23 14.821,1.116C14.685,1.003 14.499,0.97 14.332,1.029L0.332,6.029C0.143,6.096 0.013,6.27 0.001,6.47C-0.011,6.67 0.097,6.858 0.276,6.947L4.276,8.947C4.437,9.027 4.628,9.016 4.777,8.916L8.098,6.702L6.11,9.188C6.022,9.297 5.984,9.438 6.006,9.577C6.027,9.715 6.106,9.838 6.223,9.916L12.223,13.916C12.364,14.01 12.543,14.026 12.699,13.959C12.854,13.891 12.965,13.75 12.993,13.582L14.993,1.582Z" />
</vector>

View File

@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="?android:attr/colorControlNormal"
android:viewportWidth="310"
android:viewportHeight="310">
<path
android:fillColor="#FF000000"
android:pathData="M302.97,57.39c-4.87,2.16 -9.88,3.98 -14.99,5.46c6.06,-6.85 10.68,-14.91 13.49,-23.73c0.63,-1.98 -0.02,-4.14 -1.65,-5.43c-1.62,-1.29 -3.88,-1.45 -5.66,-0.39c-10.86,6.44 -22.59,11.07 -34.88,13.78c-12.38,-12.1 -29.2,-18.98 -46.58,-18.98c-36.69,0 -66.55,29.85 -66.55,66.55c0,2.89 0.18,5.76 0.55,8.6C101.16,99.24 58.83,76.86 29.76,41.2c-1.04,-1.27 -2.63,-1.96 -4.27,-1.83c-1.63,0.13 -3.1,1.05 -3.93,2.47c-5.9,10.12 -9.01,21.69 -9.01,33.46c0,16.03 5.72,31.25 15.84,43.14c-3.08,-1.07 -6.06,-2.4 -8.91,-3.98c-1.53,-0.85 -3.39,-0.84 -4.91,0.03c-1.52,0.87 -2.47,2.47 -2.51,4.22c-0.01,0.29 -0.01,0.59 -0.01,0.89c0,23.93 12.88,45.48 32.58,57.23c-1.69,-0.17 -3.38,-0.41 -5.06,-0.74c-1.73,-0.33 -3.51,0.28 -4.68,1.6c-1.17,1.32 -1.56,3.16 -1.02,4.84c7.29,22.76 26.06,39.5 48.75,44.6c-18.82,11.79 -40.34,17.96 -62.93,17.96c-4.71,0 -9.45,-0.28 -14.1,-0.83c-2.31,-0.27 -4.51,1.09 -5.29,3.28c-0.79,2.19 0.05,4.64 2.01,5.89c29.02,18.61 62.58,28.44 97.05,28.44c67.75,0 110.14,-31.95 133.76,-58.75c29.46,-33.42 46.36,-77.66 46.36,-121.37c0,-1.83 -0.03,-3.67 -0.08,-5.51c11.62,-8.76 21.63,-19.35 29.77,-31.54c1.24,-1.85 1.1,-4.3 -0.33,-6C307.39,57.04 305.01,56.49 302.97,57.39z" />
</vector>

View File

@ -0,0 +1,122 @@
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.google.android.material.imageview.ShapeableImageView
android:layout_width="90dp"
android:layout_height="90dp"
android:layout_gravity="center"
android:layout_marginTop="50dp"
android:src="@mipmap/ic_launcher_round"
app:shapeAppearanceOverlay="@style/CircleImageView" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="20dp"
android:layout_marginBottom="40dp"
android:text="@string/community"
android:textSize="24sp"
android:textStyle="bold" />
<com.google.android.material.card.MaterialCardView
android:id="@+id/telegram"
style="@style/AboutCard">
<LinearLayout style="@style/AboutItem">
<ImageView
style="@style/AboutImageView"
android:src="@drawable/ic_telegram" />
<TextView
style="@style/AboutTextView"
android:text="@string/telegram" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
<com.google.android.material.card.MaterialCardView
android:id="@+id/matrix"
style="@style/AboutCard">
<LinearLayout style="@style/AboutItem">
<ImageView
style="@style/AboutImageView"
android:src="@drawable/ic_matrix" />
<TextView
style="@style/AboutTextView"
android:text="@string/matrix" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
<com.google.android.material.card.MaterialCardView
android:id="@+id/discord"
style="@style/AboutCard">
<LinearLayout style="@style/AboutItem">
<ImageView
style="@style/AboutImageView"
android:src="@drawable/ic_discord" />
<TextView
style="@style/AboutTextView"
android:text="@string/discord" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
<com.google.android.material.card.MaterialCardView
android:id="@+id/reddit"
style="@style/AboutCard">
<LinearLayout style="@style/AboutItem">
<ImageView
style="@style/AboutImageView"
android:src="@drawable/ic_reddit" />
<TextView
style="@style/AboutTextView"
android:text="@string/reddit" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
<com.google.android.material.card.MaterialCardView
android:id="@+id/twitter"
style="@style/AboutCard">
<LinearLayout style="@style/AboutItem">
<ImageView
style="@style/AboutImageView"
android:src="@drawable/ic_twitter" />
<TextView
style="@style/AboutTextView"
android:text="@string/twitter" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
</LinearLayout>
</ScrollView>

View File

@ -221,4 +221,10 @@
<string name="auto_rotation">Auto rotation</string> <string name="auto_rotation">Auto rotation</string>
<string name="landscape">Landscape</string> <string name="landscape">Landscape</string>
<string name="portrait">Portrait</string> <string name="portrait">Portrait</string>
<string name="community">Community</string>
<string name="discord">Discord</string>
<string name="matrix">Matrix</string>
<string name="telegram">Telegram</string>
<string name="reddit">Reddit</string>
<string name="twitter">Twitter</string>
</resources> </resources>

View File

@ -69,9 +69,13 @@
<Preference <Preference
android:icon="@drawable/ic_info" android:icon="@drawable/ic_info"
app:key="about" app:key="about"
app:summary="@string/about_summary"
app:title="@string/about" /> app:title="@string/about" />
<Preference
android:icon="@drawable/ic_community"
app:key="community"
app:title="@string/community" />
</PreferenceCategory> </PreferenceCategory>
</PreferenceScreen> </PreferenceScreen>