[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] [taler-merchant-terminal-android] 02/03: wip
From: |
gnunet |
Subject: |
[GNUnet-SVN] [taler-merchant-terminal-android] 02/03: wip |
Date: |
Tue, 20 Aug 2019 22:58:18 +0200 |
This is an automated email from the git hooks/post-receive script.
dold pushed a commit to branch master
in repository merchant-terminal-android.
commit e63f231bc8583db065213a07019223f7c122c9fd
Author: Florian Dold <address@hidden>
AuthorDate: Mon Aug 12 10:21:50 2019 +0200
wip
---
app/build.gradle | 4 +-
.../java/net/taler/merchantpos/CreatePayment.kt | 102 +++++++++++++++++++++
.../java/net/taler/merchantpos/MainActivity.kt | 11 +--
.../java/net/taler/merchantpos/ProcessPayment.kt | 102 +++++++++++++++++++++
app/src/main/res/layout/app_bar_main.xml | 7 --
app/src/main/res/layout/content_main.xml | 15 +--
.../main/res/layout/fragment_create_payment.xml | 58 ++++++++++++
.../main/res/layout/fragment_process_payment.xml | 14 +++
app/src/main/res/navigation/nav_graph.xml | 12 +++
app/src/main/res/values/strings.xml | 3 +
10 files changed, 307 insertions(+), 21 deletions(-)
diff --git a/app/build.gradle b/app/build.gradle
index e722208..0316543 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -27,11 +27,11 @@ dependencies {
def nav_version = "2.1.0-rc01"
implementation fileTree(dir: 'libs', include: ['*.jar'])
- implementation"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
+ implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'androidx.core:core-ktx:1.0.2'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
- implementation 'com.google.android.material:material:1.0.0'
+ implementation 'com.google.android.material:material:1.1.0-alpha09'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.2.0'
diff --git a/app/src/main/java/net/taler/merchantpos/CreatePayment.kt
b/app/src/main/java/net/taler/merchantpos/CreatePayment.kt
new file mode 100644
index 0000000..aac8db3
--- /dev/null
+++ b/app/src/main/java/net/taler/merchantpos/CreatePayment.kt
@@ -0,0 +1,102 @@
+package net.taler.merchantpos
+
+import android.content.Context
+import android.net.Uri
+import android.os.Bundle
+import androidx.fragment.app.Fragment
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+
+
+// TODO: Rename parameter arguments, choose names that match
+// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
+private const val ARG_PARAM1 = "param1"
+private const val ARG_PARAM2 = "param2"
+
+/**
+ * A simple [Fragment] subclass.
+ * Activities that contain this fragment must implement the
+ * [CreatePayment.OnFragmentInteractionListener] interface
+ * to handle interaction events.
+ * Use the [CreatePayment.newInstance] factory method to
+ * create an instance of this fragment.
+ *
+ */
+class CreatePayment : Fragment() {
+ // TODO: Rename and change types of parameters
+ private var param1: String? = null
+ private var param2: String? = null
+ private var listener: OnFragmentInteractionListener? = null
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ arguments?.let {
+ param1 = it.getString(ARG_PARAM1)
+ param2 = it.getString(ARG_PARAM2)
+ }
+ }
+
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? {
+ // Inflate the layout for this fragment
+ return inflater.inflate(R.layout.fragment_create_payment, container,
false)
+ }
+
+ // TODO: Rename method, update argument and hook method into UI event
+ fun onButtonPressed(uri: Uri) {
+ listener?.onFragmentInteraction(uri)
+ }
+
+ override fun onAttach(context: Context) {
+ super.onAttach(context)
+ if (context is OnFragmentInteractionListener) {
+ listener = context
+ } else {
+ throw RuntimeException(context.toString() + " must implement
OnFragmentInteractionListener")
+ }
+ }
+
+ override fun onDetach() {
+ super.onDetach()
+ listener = null
+ }
+
+ /**
+ * This interface must be implemented by activities that contain this
+ * fragment to allow an interaction in this fragment to be communicated
+ * to the activity and potentially other fragments contained in that
+ * activity.
+ *
+ *
+ * See the Android Training lesson [Communicating with Other Fragments]
+ *
(http://developer.android.com/training/basics/fragments/communicating.html)
+ * for more information.
+ */
+ interface OnFragmentInteractionListener {
+ // TODO: Update argument type and name
+ fun onFragmentInteraction(uri: Uri)
+ }
+
+ companion object {
+ /**
+ * Use this factory method to create a new instance of
+ * this fragment using the provided parameters.
+ *
+ * @param param1 Parameter 1.
+ * @param param2 Parameter 2.
+ * @return A new instance of fragment CreatePayment.
+ */
+ // TODO: Rename and change types and number of parameters
+ @JvmStatic
+ fun newInstance(param1: String, param2: String) =
+ CreatePayment().apply {
+ arguments = Bundle().apply {
+ putString(ARG_PARAM1, param1)
+ putString(ARG_PARAM2, param2)
+ }
+ }
+ }
+}
diff --git a/app/src/main/java/net/taler/merchantpos/MainActivity.kt
b/app/src/main/java/net/taler/merchantpos/MainActivity.kt
index c977e29..ac34d2a 100644
--- a/app/src/main/java/net/taler/merchantpos/MainActivity.kt
+++ b/app/src/main/java/net/taler/merchantpos/MainActivity.kt
@@ -1,5 +1,6 @@
package net.taler.merchantpos
+import android.net.Uri
import android.os.Bundle
import com.google.android.material.floatingactionbutton.FloatingActionButton
import com.google.android.material.snackbar.Snackbar
@@ -12,7 +13,10 @@ import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.widget.Toolbar
import android.view.Menu
-class MainActivity : AppCompatActivity(),
NavigationView.OnNavigationItemSelectedListener {
+class MainActivity : AppCompatActivity(),
NavigationView.OnNavigationItemSelectedListener,
CreatePayment.OnFragmentInteractionListener,
ProcessPayment.OnFragmentInteractionListener {
+ override fun onFragmentInteraction(uri: Uri) {
+ TODO("not implemented") //To change body of created functions use File
| Settings | File Templates.
+ }
override fun onCreate(savedInstanceState: Bundle?) {
@@ -21,11 +25,6 @@ class MainActivity : AppCompatActivity(),
NavigationView.OnNavigationItemSelecte
val toolbar: Toolbar = findViewById(R.id.toolbar)
setSupportActionBar(toolbar)
- val fab: FloatingActionButton = findViewById(R.id.fab)
- fab.setOnClickListener { view ->
- Snackbar.make(view, "Replace with your own action",
Snackbar.LENGTH_LONG)
- .setAction("Action", null).show()
- }
val drawerLayout: DrawerLayout = findViewById(R.id.drawer_layout)
val navView: NavigationView = findViewById(R.id.nav_view)
val toggle = ActionBarDrawerToggle(
diff --git a/app/src/main/java/net/taler/merchantpos/ProcessPayment.kt
b/app/src/main/java/net/taler/merchantpos/ProcessPayment.kt
new file mode 100644
index 0000000..81c1901
--- /dev/null
+++ b/app/src/main/java/net/taler/merchantpos/ProcessPayment.kt
@@ -0,0 +1,102 @@
+package net.taler.merchantpos
+
+import android.content.Context
+import android.net.Uri
+import android.os.Bundle
+import androidx.fragment.app.Fragment
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+
+
+// TODO: Rename parameter arguments, choose names that match
+// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
+private const val ARG_PARAM1 = "param1"
+private const val ARG_PARAM2 = "param2"
+
+/**
+ * A simple [Fragment] subclass.
+ * Activities that contain this fragment must implement the
+ * [ProcessPayment.OnFragmentInteractionListener] interface
+ * to handle interaction events.
+ * Use the [ProcessPayment.newInstance] factory method to
+ * create an instance of this fragment.
+ *
+ */
+class ProcessPayment : Fragment() {
+ // TODO: Rename and change types of parameters
+ private var param1: String? = null
+ private var param2: String? = null
+ private var listener: OnFragmentInteractionListener? = null
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ arguments?.let {
+ param1 = it.getString(ARG_PARAM1)
+ param2 = it.getString(ARG_PARAM2)
+ }
+ }
+
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? {
+ // Inflate the layout for this fragment
+ return inflater.inflate(R.layout.fragment_process_payment, container,
false)
+ }
+
+ // TODO: Rename method, update argument and hook method into UI event
+ fun onButtonPressed(uri: Uri) {
+ listener?.onFragmentInteraction(uri)
+ }
+
+ override fun onAttach(context: Context) {
+ super.onAttach(context)
+ if (context is OnFragmentInteractionListener) {
+ listener = context
+ } else {
+ throw RuntimeException(context.toString() + " must implement
OnFragmentInteractionListener")
+ }
+ }
+
+ override fun onDetach() {
+ super.onDetach()
+ listener = null
+ }
+
+ /**
+ * This interface must be implemented by activities that contain this
+ * fragment to allow an interaction in this fragment to be communicated
+ * to the activity and potentially other fragments contained in that
+ * activity.
+ *
+ *
+ * See the Android Training lesson [Communicating with Other Fragments]
+ *
(http://developer.android.com/training/basics/fragments/communicating.html)
+ * for more information.
+ */
+ interface OnFragmentInteractionListener {
+ // TODO: Update argument type and name
+ fun onFragmentInteraction(uri: Uri)
+ }
+
+ companion object {
+ /**
+ * Use this factory method to create a new instance of
+ * this fragment using the provided parameters.
+ *
+ * @param param1 Parameter 1.
+ * @param param2 Parameter 2.
+ * @return A new instance of fragment ProcessPayment.
+ */
+ // TODO: Rename and change types and number of parameters
+ @JvmStatic
+ fun newInstance(param1: String, param2: String) =
+ ProcessPayment().apply {
+ arguments = Bundle().apply {
+ putString(ARG_PARAM1, param1)
+ putString(ARG_PARAM2, param2)
+ }
+ }
+ }
+}
diff --git a/app/src/main/res/layout/app_bar_main.xml
b/app/src/main/res/layout/app_bar_main.xml
index 2395912..01c4602 100644
--- a/app/src/main/res/layout/app_bar_main.xml
+++ b/app/src/main/res/layout/app_bar_main.xml
@@ -23,12 +23,5 @@
<include layout="@layout/content_main"/>
- <com.google.android.material.floatingactionbutton.FloatingActionButton
- android:id="@+id/fab"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="bottom|end"
- android:layout_margin="@dimen/fab_margin"
- app:srcCompat="@android:drawable/ic_dialog_email"/>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/content_main.xml
b/app/src/main/res/layout/content_main.xml
index 6317e13..112382e 100644
--- a/app/src/main/res/layout/content_main.xml
+++ b/app/src/main/res/layout/content_main.xml
@@ -9,13 +9,16 @@
tools:showIn="@layout/app_bar_main"
tools:context=".MainActivity">
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="Hello World!"
- app:layout_constraintBottom_toBottomOf="parent"
+ <fragment
+ android:id="@+id/nav_host_fragment"
+ android:name="androidx.navigation.fragment.NavHostFragment"
+ android:layout_width="0dp"
+ android:layout_height="0dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
- app:layout_constraintTop_toTopOf="parent"/>
+ app:layout_constraintTop_toTopOf="parent"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:defaultNavHost="true"
+ app:navGraph="@navigation/nav_graph" />
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_create_payment.xml
b/app/src/main/res/layout/fragment_create_payment.xml
new file mode 100644
index 0000000..2549e91
--- /dev/null
+++ b/app/src/main/res/layout/fragment_create_payment.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8"?>
+<FrameLayout 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"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ tools:context=".CreatePayment">
+
+ <LinearLayout
+ android:orientation="vertical"
+ android:paddingLeft="16dp"
+ android:paddingRight="16dp"
+ android:paddingBottom="16dp"
+ android:paddingTop="16dp"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
+
+ <Space
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_weight="0.5"/>
+
+ <TextView
+ android:text="Payment Subject"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
android:id="@+id/textView5"/>
+
+ <EditText
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:inputType="textPersonName"
+ android:text="Payment Subject"
+ android:ems="10"
+ android:layout_gravity="top"
+ android:id="@+id/editText5"/>
+ <TextView
+ android:text="Amount (TESTKUDOS)"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:id="@+id/textView6"/>
+ <EditText
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:inputType="numberDecimal"
+ android:ems="10"
+ android:id="@+id/editText6" android:layout_weight="0"
android:text="10"/>
+ <Space
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_weight="1"/>
+
+ <Button
+ android:text="Request Payment"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:id="@+id/button_request_payment"
+ android:layout_gravity="right"/>
+ </LinearLayout>
+</FrameLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_process_payment.xml
b/app/src/main/res/layout/fragment_process_payment.xml
new file mode 100644
index 0000000..b1d9813
--- /dev/null
+++ b/app/src/main/res/layout/fragment_process_payment.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ tools:context=".ProcessPayment">
+
+ <!-- TODO: Update blank fragment layout -->
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:text="@string/hello_blank_fragment"/>
+
+</FrameLayout>
\ 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
new file mode 100644
index 0000000..eaa7bf9
--- /dev/null
+++ b/app/src/main/res/navigation/nav_graph.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<navigation 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"
android:id="@+id/nav_graph"
+ app:startDestination="@id/createPayment">
+
+ <fragment android:id="@+id/createPayment"
android:name="net.taler.merchantpos.CreatePayment"
+ android:label="fragment_create_payment"
tools:layout="@layout/fragment_create_payment"/>
+ <fragment android:id="@+id/processPayment"
android:name="net.taler.merchantpos.ProcessPayment"
+ android:label="fragment_process_payment"
tools:layout="@layout/fragment_process_payment"/>
+ <action android:id="@+id/action_global_processPayment"
app:destination="@id/processPayment"/>
+</navigation>
\ 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 f6df07c..f3103af 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -13,4 +13,7 @@
<string name="menu_tools">Tools</string>
<string name="menu_share">Share</string>
<string name="menu_send">Send</string>
+
+ <!-- TODO: Remove or change this placeholder text -->
+ <string name="hello_blank_fragment">Hello blank fragment</string>
</resources>
--
To stop receiving notification emails like this one, please contact
address@hidden.