diff --git a/app/build.gradle b/app/build.gradle index 7aeeac1d..3eb9c127 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -112,6 +112,11 @@ dependencies { kapt "androidx.room:room-compiler:$room_version" implementation "androidx.room:room-ktx:$room_version" + // billing library + def billing_version = "2.2.0" + implementation "com.android.billingclient:billing:$billing_version" + implementation "com.android.billingclient:billing-ktx:$billing_version" + // debug tools implementation 'com.facebook.stetho:stetho:1.5.1' implementation 'com.facebook.stetho:stetho-okhttp3:1.5.1' diff --git a/app/src/main/java/net/vonforst/evmap/fragment/AboutFragment.kt b/app/src/main/java/net/vonforst/evmap/fragment/AboutFragment.kt index 0477fc3c..0c67d276 100644 --- a/app/src/main/java/net/vonforst/evmap/fragment/AboutFragment.kt +++ b/app/src/main/java/net/vonforst/evmap/fragment/AboutFragment.kt @@ -51,6 +51,10 @@ class AboutFragment : PreferenceFragmentCompat() { .start(requireActivity()) true } + "donate" -> { + findNavController().navigate(R.id.action_about_to_donateFragment) + true + } else -> super.onPreferenceTreeClick(preference) } } diff --git a/app/src/main/java/net/vonforst/evmap/fragment/DonateFragment.kt b/app/src/main/java/net/vonforst/evmap/fragment/DonateFragment.kt new file mode 100644 index 00000000..89366824 --- /dev/null +++ b/app/src/main/java/net/vonforst/evmap/fragment/DonateFragment.kt @@ -0,0 +1,44 @@ +package net.vonforst.evmap.fragment + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.appcompat.app.AppCompatActivity +import androidx.appcompat.widget.Toolbar +import androidx.databinding.DataBindingUtil +import androidx.fragment.app.Fragment +import androidx.fragment.app.viewModels +import androidx.navigation.fragment.findNavController +import androidx.navigation.ui.setupWithNavController +import net.vonforst.evmap.MapsActivity +import net.vonforst.evmap.R +import net.vonforst.evmap.databinding.FragmentDonateBinding +import net.vonforst.evmap.viewmodel.DonateViewModel + +class DonateFragment : Fragment() { + private lateinit var binding: FragmentDonateBinding + private val vm: DonateViewModel by viewModels() + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + binding = DataBindingUtil.inflate(inflater, R.layout.fragment_donate, container, false) + binding.lifecycleOwner = this + binding.vm = vm + return binding.root + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + val toolbar = view.findViewById(R.id.toolbar) as Toolbar + (requireActivity() as AppCompatActivity).setSupportActionBar(toolbar) + + val navController = findNavController() + toolbar.setupWithNavController( + navController, + (requireActivity() as MapsActivity).appBarConfiguration + ) + } +} \ No newline at end of file diff --git a/app/src/main/java/net/vonforst/evmap/viewmodel/DonateViewModel.kt b/app/src/main/java/net/vonforst/evmap/viewmodel/DonateViewModel.kt new file mode 100644 index 00000000..fad2186a --- /dev/null +++ b/app/src/main/java/net/vonforst/evmap/viewmodel/DonateViewModel.kt @@ -0,0 +1,29 @@ +package net.vonforst.evmap.viewmodel + +import android.app.Application +import androidx.lifecycle.AndroidViewModel +import androidx.lifecycle.MutableLiveData +import com.android.billingclient.api.* + +class DonateViewModel(application: Application) : AndroidViewModel(application), + PurchasesUpdatedListener { + private var billingClient = BillingClient.newBuilder(application) + .setListener(this) + .enablePendingPurchases() + .build() + + val products: MutableLiveData> by lazy { + MutableLiveData>().apply { + value = null + + val params = SkuDetailsParams.newBuilder().setType(BillingClient.SkuType.INAPP).build() + billingClient.querySkuDetailsAsync(params) { result, details -> + value = details + } + } + } + + override fun onPurchasesUpdated(result: BillingResult, purchases: List?) { + TODO("Not yet implemented") + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_donate.xml b/app/src/main/res/layout/fragment_donate.xml new file mode 100644 index 00000000..28a374bd --- /dev/null +++ b/app/src/main/res/layout/fragment_donate.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/navigation/nav_graph.xml b/app/src/main/res/navigation/nav_graph.xml index c88be490..b9f08fd3 100644 --- a/app/src/main/res/navigation/nav_graph.xml +++ b/app/src/main/res/navigation/nav_graph.xml @@ -29,7 +29,11 @@ android:id="@+id/about" android:name="net.vonforst.evmap.fragment.AboutFragment" android:label="@string/about" - tools:layout="@layout/fragment_preference" /> + tools:layout="@layout/fragment_preference"> + + + \ No newline at end of file diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 6c0f4179..830e228f 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -63,4 +63,5 @@ mehr… weniger… Wenn du Ladestationen als Favorit markierst, tauchen sie hier auf. + Spenden \ 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 c2dc86b2..c3a62f32 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -62,4 +62,5 @@ more… less… If you add chargers as favorites, they will show up here. + Donate diff --git a/app/src/main/res/xml/about.xml b/app/src/main/res/xml/about.xml index 9e173531..d1656473 100644 --- a/app/src/main/res/xml/about.xml +++ b/app/src/main/res/xml/about.xml @@ -14,8 +14,12 @@ android:title="@string/copyright" android:summary="@string/copyright_summary" /> + +