mirror of
https://github.com/bitfireAT/davx5-ose
synced 2024-07-21 18:51:52 +00:00
Mirror changes in AccountsDrawerHandler
Co-authored-by: Ricki Hirner <hirner@bitfire.at>
This commit is contained in:
parent
3c0a26bb0c
commit
12802f8697
20
app/src/davdroid/res/values/strings.xml
Normal file
20
app/src/davdroid/res/values/strings.xml
Normal file
|
@ -0,0 +1,20 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="navigation_drawer_support_project">Support the project</string>
|
||||
<string name="nav_earn_badges">Support us with badges</string>
|
||||
<string name="nav_rate_us">Review in Google Play</string>
|
||||
<plurals name="you_earned_badges">
|
||||
<item quantity="one">You\'ve earned a badge, thank you!</item>
|
||||
<item quantity="other">You have earned %d badges, thank you!</item>
|
||||
</plurals>
|
||||
<string name="available_badges">Available badges</string>
|
||||
<string name="available_badges_empty">Sorry, there are no badges available for purchase at the moment!</string>
|
||||
<string name="what_are_badges">What are badges?</string>
|
||||
<string name="what_are_badges_title">What are badges?</string>
|
||||
<string name="what_are_badges_body">Badges are simple in-app one-time-payments. You will earn a nice little badge and with it you can support us over time.</string>
|
||||
<string name="why_badges_title">Why does DAVx5 offer feature-free badges?</string>
|
||||
<string name="why_badges_body">DAVx5 has really grown over the years! We are still actively developing new features, providing support and we always update the app for upcoming Android versions. These badges are one-time payments where you can simply show your support by buying us a coffee, or two… or 10 :-) We want to be as open as possible, so there will never-ever be any new stuff locked to in-app payment.</string>
|
||||
<string name="button_buy_badge_free">FREE</string>
|
||||
<string name="button_buy_badge_bought">Thank you!</string>
|
||||
<string name="earn_badges">Earn badges to support us!</string>
|
||||
</resources>
|
|
@ -3,10 +3,15 @@
|
|||
**************************************************************************************************/
|
||||
package at.bitfire.davdroid
|
||||
|
||||
import java.io.File
|
||||
|
||||
object Constants {
|
||||
|
||||
const val DAVDROID_GREEN_RGBA = 0xFF8bc34a.toInt()
|
||||
|
||||
// gplay billing
|
||||
const val BILLINGCLIENT_CONNECTION_MAX_RETRIES = 4
|
||||
|
||||
/**
|
||||
* Context label for [org.apache.commons.lang3.exception.ContextedException].
|
||||
* Context value is the [at.bitfire.davdroid.resource.LocalResource]
|
||||
|
|
|
@ -182,7 +182,9 @@ class AboutActivity: AppCompatActivity() {
|
|||
|
||||
private lateinit var binding: AboutTranslationBinding
|
||||
|
||||
class ViewHolder(val context: Context, val binding: AboutTranslationBinding): RecyclerView.ViewHolder(binding.root)
|
||||
class ViewHolder(
|
||||
val context: Context, val binding: AboutTranslationBinding
|
||||
): RecyclerView.ViewHolder(binding.root)
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
|
||||
binding = AboutTranslationBinding.inflate(LayoutInflater.from(parent.context), parent, false)
|
||||
|
|
|
@ -32,12 +32,11 @@ import com.google.android.material.snackbar.Snackbar
|
|||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import java.util.*
|
||||
|
||||
class AccountsActivity: AppCompatActivity(), NavigationView.OnNavigationItemSelectedListener {
|
||||
|
||||
companion object {
|
||||
val accountsDrawerHandler = DefaultAccountsDrawerHandler()
|
||||
val accountsDrawerHandler = OseAccountsDrawerHandler()
|
||||
|
||||
const val REQUEST_INTRO = 0
|
||||
}
|
||||
|
@ -122,9 +121,9 @@ class AccountsActivity: AppCompatActivity(), NavigationView.OnNavigationItemSele
|
|||
}
|
||||
|
||||
override fun onNavigationItemSelected(item: MenuItem): Boolean {
|
||||
val processed = accountsDrawerHandler.onNavigationItemSelected(this, item)
|
||||
accountsDrawerHandler.onNavigationItemSelected(this, item)
|
||||
binding.drawerLayout.closeDrawer(GravityCompat.START)
|
||||
return processed
|
||||
return true
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,57 @@
|
|||
/***************************************************************************************************
|
||||
* Copyright © All Contributors. See LICENSE and AUTHORS in the root directory for details.
|
||||
**************************************************************************************************/
|
||||
|
||||
package at.bitfire.davdroid.ui
|
||||
|
||||
import android.app.Activity
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.net.Uri
|
||||
import android.util.Log
|
||||
import android.view.Menu
|
||||
import android.view.MenuItem
|
||||
import android.widget.Toast
|
||||
import androidx.annotation.CallSuper
|
||||
import at.bitfire.davdroid.App
|
||||
import at.bitfire.davdroid.BuildConfig
|
||||
import at.bitfire.davdroid.R
|
||||
import at.bitfire.davdroid.log.Logger
|
||||
import at.bitfire.davdroid.ui.webdav.WebdavMountsActivity
|
||||
|
||||
/**
|
||||
* Default menu items control
|
||||
*/
|
||||
abstract class BaseAccountsDrawerHandler: IAccountsDrawerHandler {
|
||||
|
||||
companion object {
|
||||
private const val BETA_FEEDBACK_URI = "mailto:play@bitfire.at?subject=${BuildConfig.APPLICATION_ID}/${BuildConfig.VERSION_NAME} feedback (${BuildConfig.VERSION_CODE})"
|
||||
}
|
||||
|
||||
|
||||
@CallSuper
|
||||
override fun initMenu(context: Context, menu: Menu) {
|
||||
if (BuildConfig.VERSION_NAME.contains("-alpha") || BuildConfig.VERSION_NAME.contains("-beta") || BuildConfig.VERSION_NAME.contains("-rc"))
|
||||
menu.findItem(R.id.nav_beta_feedback).isVisible = true
|
||||
}
|
||||
|
||||
@CallSuper
|
||||
override fun onNavigationItemSelected(activity: Activity, item: MenuItem) {
|
||||
when (item.itemId) {
|
||||
R.id.nav_about ->
|
||||
activity.startActivity(Intent(activity, AboutActivity::class.java))
|
||||
R.id.nav_beta_feedback ->
|
||||
if (!UiUtils.launchUri(
|
||||
activity,
|
||||
Uri.parse(BETA_FEEDBACK_URI),
|
||||
Intent.ACTION_SENDTO,
|
||||
false
|
||||
)
|
||||
)
|
||||
Toast.makeText(activity, R.string.install_email_client, Toast.LENGTH_LONG).show()
|
||||
R.id.nav_app_settings ->
|
||||
activity.startActivity(Intent(activity, AppSettingsActivity::class.java))
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -1,78 +0,0 @@
|
|||
/***************************************************************************************************
|
||||
* Copyright © All Contributors. See LICENSE and AUTHORS in the root directory for details.
|
||||
**************************************************************************************************/
|
||||
|
||||
package at.bitfire.davdroid.ui
|
||||
|
||||
import android.app.Activity
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.net.Uri
|
||||
import android.view.Menu
|
||||
import android.view.MenuItem
|
||||
import android.widget.Toast
|
||||
import at.bitfire.davdroid.App
|
||||
import at.bitfire.davdroid.BuildConfig
|
||||
import at.bitfire.davdroid.R
|
||||
import at.bitfire.davdroid.ui.webdav.WebdavMountsActivity
|
||||
|
||||
class DefaultAccountsDrawerHandler: IAccountsDrawerHandler {
|
||||
|
||||
companion object {
|
||||
private const val BETA_FEEDBACK_URI = "mailto:play@bitfire.at?subject=${BuildConfig.APPLICATION_ID}/${BuildConfig.VERSION_NAME} feedback (${BuildConfig.VERSION_CODE})"
|
||||
|
||||
const val COMMUNITY_URL = "https://github.com/bitfireAT/davx5-ose/discussions"
|
||||
}
|
||||
|
||||
|
||||
override fun initMenu(context: Context, menu: Menu) {
|
||||
if (BuildConfig.VERSION_NAME.contains("-alpha") || BuildConfig.VERSION_NAME.contains("-beta") || BuildConfig.VERSION_NAME.contains("-rc"))
|
||||
menu.findItem(R.id.nav_beta_feedback).isVisible = true
|
||||
if (/* ose */ true)
|
||||
menu.findItem(R.id.nav_donate).isVisible = true
|
||||
}
|
||||
|
||||
override fun onNavigationItemSelected(activity: Activity, item: MenuItem): Boolean {
|
||||
when (item.itemId) {
|
||||
R.id.nav_about ->
|
||||
activity.startActivity(Intent(activity, AboutActivity::class.java))
|
||||
R.id.nav_beta_feedback ->
|
||||
if (!UiUtils.launchUri(activity, Uri.parse(BETA_FEEDBACK_URI), Intent.ACTION_SENDTO, false))
|
||||
Toast.makeText(activity, R.string.install_email_client, Toast.LENGTH_LONG).show()
|
||||
R.id.nav_app_settings ->
|
||||
activity.startActivity(Intent(activity, AppSettingsActivity::class.java))
|
||||
|
||||
R.id.nav_twitter ->
|
||||
UiUtils.launchUri(activity,
|
||||
Uri.parse("https://twitter.com/" + activity.getString(R.string.twitter_handle)))
|
||||
R.id.nav_website ->
|
||||
UiUtils.launchUri(activity,
|
||||
App.homepageUrl(activity))
|
||||
|
||||
R.id.nav_webdav_mounts ->
|
||||
activity.startActivity(Intent(activity, WebdavMountsActivity::class.java))
|
||||
|
||||
R.id.nav_manual ->
|
||||
UiUtils.launchUri(activity,
|
||||
App.homepageUrl(activity).buildUpon().appendPath("manual").build())
|
||||
R.id.nav_faq ->
|
||||
UiUtils.launchUri(activity,
|
||||
App.homepageUrl(activity).buildUpon().appendPath("faq").build())
|
||||
R.id.nav_community ->
|
||||
UiUtils.launchUri(activity, Uri.parse(COMMUNITY_URL))
|
||||
R.id.nav_donate ->
|
||||
//if (BuildConfig.FLAVOR != App.FLAVOR_GOOGLE_PLAY)
|
||||
UiUtils.launchUri(activity,
|
||||
App.homepageUrl(activity).buildUpon().appendPath("donate").build())
|
||||
R.id.nav_privacy ->
|
||||
UiUtils.launchUri(activity,
|
||||
App.homepageUrl(activity).buildUpon().appendPath("privacy").build())
|
||||
|
||||
else ->
|
||||
return false
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
}
|
|
@ -13,6 +13,6 @@ interface IAccountsDrawerHandler {
|
|||
|
||||
fun initMenu(context: Context, menu: Menu)
|
||||
|
||||
fun onNavigationItemSelected(activity: Activity, item: MenuItem): Boolean
|
||||
fun onNavigationItemSelected(activity: Activity, item: MenuItem)
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,69 @@
|
|||
/***************************************************************************************************
|
||||
* Copyright © All Contributors. See LICENSE and AUTHORS in the root directory for details.
|
||||
**************************************************************************************************/
|
||||
|
||||
package at.bitfire.davdroid.ui
|
||||
|
||||
import android.app.Activity
|
||||
import android.content.Intent
|
||||
import android.net.Uri
|
||||
import android.view.MenuItem
|
||||
import at.bitfire.davdroid.App
|
||||
import at.bitfire.davdroid.R
|
||||
import at.bitfire.davdroid.ui.webdav.WebdavMountsActivity
|
||||
|
||||
/**
|
||||
* Default menu items control
|
||||
*/
|
||||
class OseAccountsDrawerHandler: BaseAccountsDrawerHandler() {
|
||||
|
||||
companion object {
|
||||
const val COMMUNITY_URL = "https://github.com/bitfireAT/davx5-ose/discussions"
|
||||
}
|
||||
|
||||
override fun onNavigationItemSelected(activity: Activity, item: MenuItem) {
|
||||
when (item.itemId) {
|
||||
|
||||
R.id.nav_twitter ->
|
||||
UiUtils.launchUri(
|
||||
activity,
|
||||
Uri.parse("https://twitter.com/" + activity.getString(R.string.twitter_handle))
|
||||
)
|
||||
|
||||
R.id.nav_webdav_mounts ->
|
||||
activity.startActivity(Intent(activity, WebdavMountsActivity::class.java))
|
||||
|
||||
R.id.nav_website ->
|
||||
UiUtils.launchUri(
|
||||
activity,
|
||||
App.homepageUrl(activity)
|
||||
)
|
||||
R.id.nav_manual ->
|
||||
UiUtils.launchUri(
|
||||
activity,
|
||||
App.homepageUrl(activity).buildUpon().appendPath("manual").build()
|
||||
)
|
||||
R.id.nav_faq ->
|
||||
UiUtils.launchUri(
|
||||
activity,
|
||||
App.homepageUrl(activity).buildUpon().appendPath("faq").build()
|
||||
)
|
||||
R.id.nav_community ->
|
||||
UiUtils.launchUri(activity, Uri.parse(COMMUNITY_URL))
|
||||
R.id.nav_donate ->
|
||||
UiUtils.launchUri(
|
||||
activity,
|
||||
App.homepageUrl(activity).buildUpon().appendPath("donate").build()
|
||||
)
|
||||
R.id.nav_privacy ->
|
||||
UiUtils.launchUri(
|
||||
activity,
|
||||
App.homepageUrl(activity).buildUpon().appendPath("privacy").build()
|
||||
)
|
||||
|
||||
else ->
|
||||
super.onNavigationItemSelected(activity, item)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -6,7 +6,6 @@ package at.bitfire.davdroid.ui.setup
|
|||
|
||||
import android.app.Application
|
||||
import android.app.Dialog
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
|
|
|
@ -15,11 +15,7 @@ import androidx.activity.result.contract.ActivityResultContracts
|
|||
import androidx.activity.viewModels
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.core.text.HtmlCompat
|
||||
import androidx.lifecycle.AndroidViewModel
|
||||
import androidx.lifecycle.MediatorLiveData
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import androidx.lifecycle.Observer
|
||||
import androidx.lifecycle.viewModelScope
|
||||
import androidx.lifecycle.*
|
||||
import androidx.recyclerview.widget.DiffUtil
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.ListAdapter
|
||||
|
@ -36,7 +32,6 @@ import at.bitfire.davdroid.webdav.CredentialsStore
|
|||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import org.apache.commons.io.FileUtils
|
||||
import java.util.*
|
||||
|
||||
class WebdavMountsActivity: AppCompatActivity() {
|
||||
|
||||
|
|
5
app/src/main/res/drawable/ic_star_rate.xml
Normal file
5
app/src/main/res/drawable/ic_star_rate.xml
Normal file
|
@ -0,0 +1,5 @@
|
|||
<vector android:autoMirrored="true" android:height="15dp"
|
||||
android:tint="?attr/colorControlNormal" android:viewportHeight="24"
|
||||
android:viewportWidth="24" android:width="15dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="@android:color/white" android:pathData="M14.43,10l-2.43,-8l-2.43,8l-7.57,0l6.18,4.41l-2.35,7.59l6.17,-4.69l6.18,4.69l-2.35,-7.59l6.17,-4.41z"/>
|
||||
</vector>
|
|
@ -1,9 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:orientation="vertical"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
<androidx.coordinatorlayout.widget.CoordinatorLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:orientation="vertical"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<com.google.android.material.appbar.AppBarLayout
|
||||
android:layout_width="match_parent"
|
||||
|
|
|
@ -58,8 +58,7 @@
|
|||
<item
|
||||
android:id="@+id/nav_donate"
|
||||
android:icon="@drawable/ic_attach_money"
|
||||
android:title="@string/navigation_drawer_donate"
|
||||
android:visible="false"/>
|
||||
android:title="@string/navigation_drawer_donate"/>
|
||||
<item
|
||||
android:id="@+id/nav_privacy"
|
||||
android:icon="@drawable/ic_cloud_off"
|
||||
|
|
|
@ -35,6 +35,10 @@
|
|||
<color name="backgroundColor">@color/grey200</color>
|
||||
<color name="errorColor">@color/red700</color>
|
||||
|
||||
<color name="badge_coffee">#352B1B</color>
|
||||
<color name="badge_life_buoy">#FF6A00</color>
|
||||
<color name="badge_medal">#FFC200</color>
|
||||
<color name="badge_sailboat">#083d77</color>
|
||||
|
||||
<!-- app theme -->
|
||||
|
||||
|
|
Loading…
Reference in a new issue