Fix about page

Signed-off-by: Muntashir Al-Islam <muntashirakon@riseup.net>
This commit is contained in:
Muntashir Al-Islam 2022-05-15 16:55:04 +06:00
parent c1b341ad51
commit 2f782debeb
18 changed files with 95 additions and 705 deletions

View file

@ -1,76 +0,0 @@
# Contributor Covenant Code of Conduct
## Our Pledge
In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to making participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, sex characteristics, gender identity and expression,
level of experience, education, socio-economic status, nationality, personal
appearance, race, religion, or sexual identity and orientation.
## Our Standards
Examples of behavior that contributes to creating a positive environment
include:
* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
* The use of sexualized language or imagery and unwelcome sexual attention or
advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic
address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
## Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or
reject comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct, or to ban temporarily or
permanently any contributor for other behaviors that they deem inappropriate,
threatening, offensive, or harmful.
## Scope
This Code of Conduct applies both within project spaces and in public spaces
when an individual is representing the project or its community. Examples of
representing a project or community include using an official project e-mail
address, posting via an official social media account, or acting as an appointed
representative at an online or offline event. Representation of a project may be
further defined and clarified by project maintainers.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team at retromusicapp@gmail.com. All
complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident.
Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good
faith may face temporary or permanent repercussions as determined by other
members of the project's leadership.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
[homepage]: https://www.contributor-covenant.org
For answers to common questions about this code of conduct, see
https://www.contributor-covenant.org/faq

View file

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name" translatable="false">Retro Music-Debug</string>
<string name="app_name" translatable="false">Metro Debug</string>
</resources>

View file

@ -1,38 +0,0 @@
[
{
"name": "Hemanth Savarala",
"summary": "Lead Developer & Designer",
"link": "https://github.com/h4h13",
"image": "https://i.imgur.com/AoVs9oj.jpg"
},
{
"name": "Prathamesh More",
"summary": "Developer",
"link": "https://prathameshmm02.github.io",
"image": "https://i.imgur.com/ZHoOrHx.jpg"
},
{
"name": "Daksh P. Jain",
"summary": "Website & GitHub Maintainer",
"link": "https://daksh.eu.org",
"image": "https://i.imgur.com/fnYpg65.jpg"
},
{
"name": "Milind Goel",
"summary": "Support Representative & Moderator",
"link": "https://milindgoel15.github.io",
"image": "https://i.imgur.com/hWL8t48.jpg"
},
{
"name": "Lennart Glamann",
"summary": "Play Store Banner & Images",
"link": "https://telegram.me/FlixbusLennart",
"image": "https://i.imgur.com/Q5Nsx1R.jpg"
},
{
"name": "Haythem Gataa",
"summary": "App Logo & Banners",
"link": "https://dribbble.com/haythemgataa",
"image": "https://i.imgur.com/g5RuIZq.jpg"
}
]

View file

@ -42,9 +42,6 @@
by Aidan Michael Follestad</p>
<p><b><a href="https://github.com/afollestad/material-cab" title="Material Contextual Action Bar">
Material Contextual Action Bar</a></b> by Aidan Michael Follestad</p>
<p><b><a href="https://github.com/anjlab/android-inapp-billing-v3"
title="Android In-App Billing v3 Library"> Android In-App Billing v3 Library</a></b> by
Henning Dodenhof</p>
<p><b><a href="https://github.com/h6ah4i/android-advancedrecyclerview"
title="Advanced RecyclerView"> Advanced RecyclerView</a></b> by Haruki Hasegawa</p>
<p><b><a href="https://github.com/Ereza/CustomActivityOnCrash"

View file

@ -23,13 +23,13 @@ object Constants {
const val TRANSLATE = "https://crowdin.com/project/retromusicplayer"
const val WEBSITE = "https://retromusic.app"
const val GITHUB_PROJECT = "https://github.com/MuntashirAkon/Metro"
const val TELEGRAM_CHANGE_LOG = "https://t.me/retromusiclog"
const val TELEGRAM_CHANGE_LOG = "https://t.me/AppManagerChannel"
const val USER_PROFILE = "profile.jpg"
const val USER_BANNER = "banner.jpg"
const val APP_INSTAGRAM_LINK = "https://www.instagram.com/retromusicapp/"
const val APP_TELEGRAM_LINK = "https://t.me/retromusicapp/"
const val APP_TWITTER_LINK = "https://twitter.com/retromusicapp"
const val FAQ_LINK = "https://github.com/RetroMusicPlayer/RetroMusicPlayer/blob/master/FAQ.md"
const val FAQ_LINK = "https://github.com/MuntashirAkon/Metro/blob/master/FAQ.md"
const val PINTEREST = "https://in.pinterest.com/retromusicapp/"
const val AUDIO_SCROBBLER_URL = "https://ws.audioscrobbler.com/2.0/"

View file

@ -118,7 +118,6 @@ private val dataModule = module {
get(),
get(),
get(),
get(),
)
} bind Repository::class
@ -163,9 +162,6 @@ private val dataModule = module {
get()
)
}
single {
RealLocalDataRepository(get())
} bind LocalDataRepository::class
}
private val viewModules = module {

View file

@ -1,96 +0,0 @@
/*
* Copyright (c) 2020 Hemanth Savarla.
*
* Licensed under the GNU General Public License v3
*
* This is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
*
* This software 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.
*
*/
package io.github.muntashirakon.music.adapter
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import io.github.muntashirakon.music.R
import io.github.muntashirakon.music.extensions.openUrl
import io.github.muntashirakon.music.model.Contributor
import io.github.muntashirakon.music.views.RetroShapeableImageView
import com.bumptech.glide.Glide
class ContributorAdapter(
private var contributors: List<Contributor>
) : RecyclerView.Adapter<ContributorAdapter.ViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
return if (viewType == HEADER) {
ViewHolder(
LayoutInflater.from(parent.context).inflate(
R.layout.item_contributor_header,
parent,
false
)
)
} else ViewHolder(
LayoutInflater.from(parent.context).inflate(
R.layout.item_contributor,
parent,
false
)
)
}
companion object {
const val HEADER: Int = 0
const val ITEM: Int = 1
}
override fun getItemViewType(position: Int): Int {
return if (position == 0) {
HEADER
} else {
ITEM
}
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val contributor = contributors[position]
holder.bindData(contributor)
holder.itemView.setOnClickListener {
it?.context?.openUrl(contributors[position].link)
}
}
override fun getItemCount(): Int {
return contributors.size
}
fun swapData(it: List<Contributor>) {
contributors = it
notifyDataSetChanged()
}
inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
val title: TextView = itemView.findViewById(R.id.title)
val text: TextView = itemView.findViewById(R.id.text)
val image: RetroShapeableImageView = itemView.findViewById(R.id.icon)
internal fun bindData(contributor: Contributor) {
title.text = contributor.name
text.text = contributor.summary
Glide.with(image.context)
.load(contributor.image)
.error(R.drawable.ic_account)
.placeholder(R.drawable.ic_account)
.dontAnimate()
.into(image)
}
}
}

View file

@ -278,10 +278,6 @@ class LibraryViewModel(
emit(repository.artistById(artistId))
}
fun fetchContributors(): LiveData<List<Contributor>> = liveData(IO) {
emit(repository.contributor())
}
fun observableHistorySongs(): LiveData<List<Song>> {
viewModelScope.launch(IO) {
repository.historySong().forEach { song ->

View file

@ -23,7 +23,6 @@ import androidx.recyclerview.widget.DefaultItemAnimator
import androidx.recyclerview.widget.LinearLayoutManager
import io.github.muntashirakon.music.Constants
import io.github.muntashirakon.music.R
import io.github.muntashirakon.music.adapter.ContributorAdapter
import io.github.muntashirakon.music.databinding.FragmentAboutBinding
import io.github.muntashirakon.music.extensions.openUrl
import io.github.muntashirakon.music.fragments.LibraryViewModel
@ -39,9 +38,8 @@ class AboutFragment : Fragment(R.layout.fragment_about), View.OnClickListener {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
_binding = FragmentAboutBinding.bind(view)
binding.aboutContent.cardOther.version.setSummary(getAppVersion())
binding.aboutContent.cardRetroInfo.version.setSummary(getAppVersion())
setUpView()
loadContributors()
binding.aboutContent.root.applyInsetter {
type(navigationBars = true) {
@ -53,71 +51,32 @@ class AboutFragment : Fragment(R.layout.fragment_about), View.OnClickListener {
private fun setUpView() {
binding.aboutContent.cardRetroInfo.appGithub.setOnClickListener(this)
binding.aboutContent.cardRetroInfo.faqLink.setOnClickListener(this)
binding.aboutContent.cardRetroInfo.appRate.setOnClickListener(this)
binding.aboutContent.cardRetroInfo.appTranslation.setOnClickListener(this)
binding.aboutContent.cardRetroInfo.appShare.setOnClickListener(this)
binding.aboutContent.cardRetroInfo.donateLink.setOnClickListener(this)
binding.aboutContent.cardRetroInfo.bugReportLink.setOnClickListener(this)
binding.aboutContent.cardSocial.telegramLink.setOnClickListener(this)
binding.aboutContent.cardSocial.instagramLink.setOnClickListener(this)
binding.aboutContent.cardSocial.twitterLink.setOnClickListener(this)
binding.aboutContent.cardSocial.pinterestLink.setOnClickListener(this)
binding.aboutContent.cardSocial.websiteLink.setOnClickListener(this)
binding.aboutContent.cardOther.changelog.setOnClickListener(this)
binding.aboutContent.cardOther.openSource.setOnClickListener(this)
binding.aboutContent.cardRetroInfo.changelog.setOnClickListener(this)
binding.aboutContent.cardRetroInfo.openSource.setOnClickListener(this)
}
override fun onClick(view: View) {
when (view.id) {
R.id.pinterestLink -> openUrl(Constants.PINTEREST)
R.id.faqLink -> openUrl(Constants.FAQ_LINK)
R.id.telegramLink -> openUrl(Constants.APP_TELEGRAM_LINK)
R.id.appGithub -> openUrl(Constants.GITHUB_PROJECT)
R.id.appTranslation -> openUrl(Constants.TRANSLATE)
R.id.appRate -> openUrl(Constants.RATE_ON_GOOGLE_PLAY)
R.id.appShare -> shareApp()
R.id.instagramLink -> openUrl(Constants.APP_INSTAGRAM_LINK)
R.id.twitterLink -> openUrl(Constants.APP_TWITTER_LINK)
R.id.changelog -> NavigationUtil.gotoWhatNews(requireActivity())
R.id.openSource -> NavigationUtil.goToOpenSource(requireActivity())
R.id.bugReportLink -> NavigationUtil.bugReport(requireActivity())
R.id.websiteLink -> openUrl(Constants.WEBSITE)
}
}
private fun getAppVersion(): String {
return try {
val isPro = "Pro"
val packageInfo =
requireActivity().packageManager.getPackageInfo(requireActivity().packageName, 0)
"${packageInfo.versionName} $isPro"
requireActivity().packageManager.getPackageInfo(requireActivity().packageName, 0).versionName
} catch (e: PackageManager.NameNotFoundException) {
e.printStackTrace()
"0.0.0"
}
}
private fun shareApp() {
ShareCompat.IntentBuilder(requireActivity()).setType("text/plain")
.setChooserTitle(R.string.share_app)
.setText(String.format(getString(R.string.app_share), requireActivity().packageName))
.startChooser()
}
private fun loadContributors() {
val contributorAdapter = ContributorAdapter(emptyList())
binding.aboutContent.cardCredit.recyclerView.apply {
layoutManager = LinearLayoutManager(requireContext())
itemAnimator = DefaultItemAnimator()
adapter = contributorAdapter
}
libraryViewModel.fetchContributors().observe(viewLifecycleOwner) { contributors ->
contributorAdapter.swapData(contributors)
}
}
override fun onDestroyView() {
super.onDestroyView()
_binding = null

View file

@ -1,25 +0,0 @@
package io.github.muntashirakon.music.repository
import android.content.Context
import io.github.muntashirakon.music.model.Contributor
import com.google.gson.GsonBuilder
import com.google.gson.reflect.TypeToken
interface LocalDataRepository {
fun contributors(): List<Contributor>
}
class RealLocalDataRepository(
private val context: Context
) : LocalDataRepository {
override fun contributors(): List<Contributor> {
val jsonString = context.assets.open("contributors.json")
.bufferedReader().use { it.readText() }
val gsonBuilder = GsonBuilder()
val gson = gsonBuilder.create()
val listContributorType = object : TypeToken<List<Contributor>>() {}.type
return gson.fromJson(jsonString, listContributorType)
}
}

View file

@ -105,7 +105,6 @@ interface Repository {
suspend fun playCountSongs(): List<PlayCountEntity>
suspend fun blackListPaths(): List<BlackListStoreEntity>
suspend fun deleteSongs(songs: List<Song>)
suspend fun contributor(): List<Contributor>
suspend fun searchArtists(query: String): List<Artist>
suspend fun searchSongs(query: String): List<Song>
suspend fun searchAlbums(query: String): List<Album>
@ -126,14 +125,11 @@ class RealRepository(
private val searchRepository: RealSearchRepository,
private val topPlayedRepository: TopPlayedRepository,
private val roomRepository: RoomRepository,
private val localDataRepository: LocalDataRepository
) : Repository {
override suspend fun deleteSongs(songs: List<Song>) = roomRepository.deleteSongs(songs)
override suspend fun contributor(): List<Contributor> = localDataRepository.contributors()
override suspend fun searchSongs(query: String): List<Song> = songRepository.songs(query)
override suspend fun searchAlbums(query: String): List<Album> = albumRepository.albums(query)

View file

@ -1,44 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.gridlayout.widget.GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:grid="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="8dp"
grid:alignmentMode="alignBounds">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="4dp"
android:orientation="vertical"
grid:layout_column="0"
grid:layout_columnWeight="1"
grid:layout_row="0">
<include
android:id="@+id/card_credit"
layout="@layout/card_credit" />
<include
android:id="@+id/card_social"
layout="@layout/card_social" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:orientation="vertical"
grid:layout_column="1"
grid:layout_columnWeight="1"
grid:layout_row="0">
<include
android:id="@+id/card_retro_info"
layout="@layout/card_retro_info" />
<include
android:id="@+id/card_other"
layout="@layout/card_other" />
</LinearLayout>
</androidx.gridlayout.widget.GridLayout>

View file

@ -1,44 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<com.google.android.material.card.MaterialCardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
style="@style/MaterialCardViewStroke"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="@dimen/about_card_radius">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<code.name.monkey.appthemehelper.common.views.ATEAccentTextView
android:id="@+id/sb1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingStart="?attr/listPreferredItemPaddingStart"
android:paddingTop="?attr/listPreferredItemPaddingStart"
android:paddingEnd="?attr/listPreferredItemPaddingEnd"
android:paddingBottom="?attr/listPreferredItemPaddingEnd"
android:text="@string/credit_title"
android:textAppearance="@style/TextViewNormal"
android:textColor="?android:attr/textColorSecondary"
app:layout_constrainedWidth="true"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:overScrollMode="never"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/sb1"
tools:itemCount="3"
tools:listitem="@layout/item_contributor" />
</androidx.constraintlayout.widget.ConstraintLayout>
</com.google.android.material.card.MaterialCardView>

View file

@ -1,72 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<com.google.android.material.card.MaterialCardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
style="@style/MaterialCardViewStroke"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="@dimen/about_card_radius">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<code.name.monkey.appthemehelper.common.views.ATEAccentTextView
android:id="@+id/sb4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingStart="?attr/listPreferredItemPaddingStart"
android:paddingTop="?attr/listPreferredItemPaddingStart"
android:paddingEnd="?attr/listPreferredItemPaddingEnd"
android:paddingBottom="?attr/listPreferredItemPaddingEnd"
android:text="@string/others"
android:textAppearance="@style/TextViewNormal"
android:textColor="?colorAccent"
app:layout_constrainedWidth="true"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<io.github.muntashirakon.music.views.ListItemView
android:id="@+id/changelog"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constrainedWidth="true"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/sb4"
app:listItemIcon="@drawable/ic_file_edit"
app:listItemSummary="@string/changelog_summary"
app:listItemTitle="@string/changelog" />
<io.github.muntashirakon.music.views.ListItemView
android:id="@+id/openSource"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constrainedWidth="true"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/changelog"
app:listItemIcon="@drawable/ic_license"
app:listItemSummary="@string/pref_summary_open_source_licences"
app:listItemTitle="@string/pref_title_open_source_licences" />
<io.github.muntashirakon.music.views.ListItemView
android:id="@+id/version"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constrainedWidth="true"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/openSource"
app:listItemIcon="@drawable/ic_info_outline"
app:listItemSummary="@string/pref_summary_open_source_licences"
app:listItemTitle="@string/version" />
</androidx.constraintlayout.widget.ConstraintLayout>
</com.google.android.material.card.MaterialCardView>

View file

@ -1,32 +1,34 @@
<?xml version="1.0" encoding="utf-8"?>
<com.google.android.material.card.MaterialCardView xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
style="@style/MaterialCardViewStroke"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="@dimen/about_card_radius">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<code.name.monkey.appthemehelper.common.views.ATEAccentTextView
android:id="@+id/sb2"
android:layout_width="wrap_content"
<io.github.muntashirakon.music.views.ListItemView
android:id="@+id/version"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:paddingStart="?attr/listPreferredItemPaddingStart"
android:paddingTop="?attr/listPreferredItemPaddingStart"
android:paddingEnd="?attr/listPreferredItemPaddingEnd"
android:paddingBottom="?attr/listPreferredItemPaddingEnd"
android:text="@string/support_development"
android:textAppearance="@style/TextViewNormal"
android:textColor="?android:attr/textColorSecondary"
app:layout_constrainedWidth="true"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
app:listItemIcon="@drawable/ic_info_outline"
app:listItemSummary="@string/pref_summary_open_source_licences"
app:listItemTitle="@string/version"/>
<io.github.muntashirakon.music.views.ListItemView
android:id="@+id/changelog"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constrainedWidth="true"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/version"
app:listItemIcon="@drawable/ic_file_edit"
app:listItemSummary="@string/changelog_summary"
app:listItemTitle="@string/changelog"/>
<io.github.muntashirakon.music.views.ListItemView
android:id="@+id/appGithub"
@ -36,10 +38,10 @@
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/sb2"
app:layout_constraintTop_toBottomOf="@id/changelog"
app:listItemIcon="@drawable/ic_github_circle"
app:listItemSummary="@string/git_hub_summary"
app:listItemTitle="@string/git_hub" />
app:listItemTitle="@string/git_hub"/>
<io.github.muntashirakon.music.views.ListItemView
android:id="@+id/appTranslation"
@ -52,35 +54,7 @@
app:layout_constraintTop_toBottomOf="@id/appGithub"
app:listItemIcon="@drawable/ic_flag"
app:listItemSummary="@string/translate_community"
app:listItemTitle="@string/translate" />
<io.github.muntashirakon.music.views.ListItemView
android:id="@+id/appRate"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constrainedWidth="true"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/appTranslation"
app:listItemIcon="@drawable/ic_star"
app:listItemSummary="@string/rate_on_google_play_summary"
app:listItemTitle="@string/rate_app" />
<io.github.muntashirakon.music.views.ListItemView
android:id="@+id/donateLink"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constrainedWidth="true"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/appRate"
app:listItemIcon="@drawable/ic_card_giftcard"
app:listItemSummary="@string/donate_summary"
app:listItemTitle="@string/donate" />
app:listItemTitle="@string/translate"/>
<io.github.muntashirakon.music.views.ListItemView
android:id="@+id/bugReportLink"
@ -90,23 +64,10 @@
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/donateLink"
app:layout_constraintTop_toBottomOf="@id/appTranslation"
app:listItemIcon="@drawable/ic_bug_report"
app:listItemSummary="@string/bug_report_summary"
app:listItemTitle="@string/report_bug" />
<io.github.muntashirakon.music.views.ListItemView
android:id="@+id/appShare"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constrainedWidth="true"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/bugReportLink"
app:listItemIcon="@drawable/ic_share"
app:listItemSummary="@string/share_summary"
app:listItemTitle="@string/action_share" />
app:listItemTitle="@string/report_bug"/>
<io.github.muntashirakon.music.views.ListItemView
android:id="@+id/faqLink"
@ -116,10 +77,22 @@
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/appShare"
app:layout_constraintTop_toBottomOf="@id/bugReportLink"
app:listItemIcon="@drawable/ic_help"
app:listItemSummary="@string/help_summary"
app:listItemTitle="@string/faq" />
app:listItemTitle="@string/faq"/>
</androidx.constraintlayout.widget.ConstraintLayout>
</com.google.android.material.card.MaterialCardView>
<io.github.muntashirakon.music.views.ListItemView
android:id="@+id/openSource"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constrainedWidth="true"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/faqLink"
app:listItemIcon="@drawable/ic_license"
app:listItemSummary="@string/pref_summary_open_source_licences"
app:listItemTitle="@string/pref_title_open_source_licences"/>
</androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -1,98 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<com.google.android.material.card.MaterialCardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
style="@style/MaterialCardViewStroke"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="@dimen/about_card_radius">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<code.name.monkey.appthemehelper.common.views.ATEAccentTextView
android:id="@+id/sb3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingStart="?attr/listPreferredItemPaddingStart"
android:paddingTop="?attr/listPreferredItemPaddingStart"
android:paddingEnd="?attr/listPreferredItemPaddingEnd"
android:paddingBottom="?attr/listPreferredItemPaddingEnd"
android:text="@string/social"
android:textAppearance="@style/TextViewNormal"
android:textColor="?colorAccent"
app:layout_constrainedWidth="true"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<io.github.muntashirakon.music.views.ListItemView
android:id="@+id/websiteLink"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constrainedWidth="true"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/sb3"
app:listItemIcon="@drawable/ic_baseline"
app:listItemSummary="@string/website_summary"
app:listItemTitle="@string/website" />
<io.github.muntashirakon.music.views.ListItemView
android:id="@+id/pinterestLink"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constrainedWidth="true"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/websiteLink"
app:listItemIcon="@drawable/ic_pinterest"
app:listItemSummary="@string/pinterest_page_summary"
app:listItemTitle="@string/pinterest_page" />
<io.github.muntashirakon.music.views.ListItemView
android:id="@+id/instagramLink"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constrainedWidth="true"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/pinterestLink"
app:listItemIcon="@drawable/ic_instagram"
app:listItemSummary="@string/instagram_page_summary"
app:listItemTitle="@string/instagram_page" />
<io.github.muntashirakon.music.views.ListItemView
android:id="@+id/twitterLink"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constrainedWidth="true"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/instagramLink"
app:listItemIcon="@drawable/ic_twitter"
app:listItemSummary="@string/twitter_page_summary"
app:listItemTitle="@string/twitter_page" />
<io.github.muntashirakon.music.views.ListItemView
android:id="@+id/telegramLink"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constrainedWidth="true"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/twitterLink"
app:listItemIcon="@drawable/ic_telegram_white"
app:listItemSummary="@string/telegram_group_summary"
app:listItemTitle="@string/telegram_group" />
</androidx.constraintlayout.widget.ConstraintLayout>
</com.google.android.material.card.MaterialCardView>

View file

@ -4,20 +4,8 @@
android:layout_height="wrap_content"
android:orientation="vertical">
<include
android:id="@+id/card_credit"
layout="@layout/card_credit" />
<include
android:id="@+id/card_retro_info"
layout="@layout/card_retro_info" />
<include
android:id="@+id/card_social"
layout="@layout/card_social" />
<include
android:id="@+id/card_other"
layout="@layout/card_other" />
</LinearLayout>

View file

@ -1,22 +0,0 @@
<?xml version="1.0" encoding="utf-8"?><!--
~ Copyright (c) 2019 Hemanth Savarala.
~
~ Licensed under the GNU General Public License v3
~
~ This is free software: you can redistribute it and/or modify it under
~ the terms of the GNU General Public License as published by
~ the Free Software Foundation either version 3 of the License, or (at your option) any later version.
~
~ This software 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.
-->
<resources>
<declare-styleable name="ContributorsView">
<attr name="profile_url" format="string" />
<attr name="profile_name" format="string" />
<attr name="profile_summary" format="string" />
<attr name="profile_link" format="string" />
</declare-styleable>
</resources>