Commit 11a69354 authored by Muhammad Suryono's avatar Muhammad Suryono

merge from cart

parents 9f6fc32a 802056dc
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
<component name="ProjectType">
......
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>
\ No newline at end of file
......@@ -2,6 +2,8 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.yono.messeripos">
<uses-permission android:name="android.permission.INTERNET"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
......@@ -9,6 +11,8 @@
android:roundIcon="@mipmap/ic_launcher"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".PaymentActivity"></activity>
<activity android:name=".CartActivity" />
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
......@@ -16,6 +20,7 @@
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<meta-data
android:name="preloaded_fonts"
android:resource="@array/preloaded_fonts" />
......
package com.yono.messeripos;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageButton;
import android.widget.TextView;
import com.google.android.material.textfield.TextInputEditText;
import java.text.NumberFormat;
import java.util.Locale;
public class CartActivity extends AppCompatActivity {
ImageButton btMinus, btPlus, btDelete;
TextInputEditText tiQty;
TextView tvQtyView, tvPrice, tvTotal;
private int counter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_cart);
btMinus = findViewById(R.id.btMinus);
btPlus = findViewById(R.id.btPlus);
btDelete = findViewById(R.id.btDelete);
tiQty = findViewById(R.id.etQty);
tvQtyView = findViewById(R.id.tvQuantity);
tvPrice = findViewById(R.id.tvPrice);
tvTotal = findViewById(R.id.tvTotal);
counter = Integer.parseInt(tvQtyView.getText().toString());
btMinus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (counter > 1){
counter--;
tiQty.setText(Integer.toString(counter));
tvQtyView.setText(Integer.toString(counter));
countTotal();
}
}
});
btPlus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
counter++;
tiQty.setText(Integer.toString(counter));
tvQtyView.setText(Integer.toString(counter));
countTotal();
}
});
}
private void countTotal() {
int price = Integer.parseInt(tvPrice.getText().toString());
int qtyView = Integer.parseInt(tvQtyView.getText().toString());
int count = price*qtyView;
String result = Integer.toString(price*qtyView);
// set to view
tvTotal.setText(setToRp().format((double) count));
}
private NumberFormat setToRp() {
Locale ID = new Locale("in", "ID");
NumberFormat formatRp = NumberFormat.getCurrencyInstance(ID);
return formatRp;
}
}
\ No newline at end of file
package com.yono.messeripos;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.content.Intent;
import android.os.Bundle;
import android.widget.ImageView;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
......@@ -11,4 +19,5 @@ public class MainActivity extends AppCompatActivity {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
\ No newline at end of file
package com.yono.messeripos;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.os.Bundle;
import java.util.ArrayList;
public class PaymentActivity extends AppCompatActivity {
private ArrayList<PaymentModel> paymentModels = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_payment);
RecyclerView rvPayment = findViewById(R.id.rvPayment);
LinearLayoutManager llm = new LinearLayoutManager(this);
rvPayment.setLayoutManager(llm);
paymentModels.add(new PaymentModel("https://i.ibb.co/XCsdmmT/Bank-Mandiri-logo.png", "mandiri"));
paymentModels.add(new PaymentModel("https://i.ibb.co/2n65nCT/bca-bank-central-asia.png", "bca"));
paymentModels.add(new PaymentModel("https://i.ibb.co/RjJQT9K/BNI-logo.png", "bni"));
PaymentAdapter adapter = new PaymentAdapter(paymentModels, this);
rvPayment.setAdapter(adapter);
}
}
\ No newline at end of file
package com.yono.messeripos;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.RadioButton;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.cardview.widget.CardView;
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
import com.bumptech.glide.request.RequestOptions;
import java.util.ArrayList;
public class PaymentAdapter extends RecyclerView.Adapter<PaymentAdapter.ViewHolder> {
private ArrayList<PaymentModel> paymentModels;
Context context;
int getPosition = -1;
public PaymentAdapter(ArrayList<PaymentModel> paymentModels, PaymentActivity mainActivity) {
this.paymentModels = paymentModels;
this.context = mainActivity;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.payment_list, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
holder.cardView.setTag(position);
holder.radioButton.setChecked(position == getPosition);
final PaymentModel paymentModel = paymentModels.get(position);
ImageView imageView = holder.logoComp;
Glide.with(context)
.load(paymentModel.getUrl())
.apply(new RequestOptions().placeholder(R.drawable.skeleton))
.into(imageView);
}
@Override
public int getItemCount() {
return paymentModels.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
public CardView cardView;
public ImageView logoComp;
public RadioButton radioButton;
public TextView textView;
public Button btnPay;
public ViewHolder(@NonNull View itemView) {
super(itemView);
cardView = itemView.findViewById(R.id.cvPayment);
logoComp = itemView.findViewById(R.id.ivLogo);
radioButton = itemView.findViewById(R.id.rbPayment);
textView = itemView.findViewById(R.id.tvPayment);
btnPay = itemView.findViewById(R.id.btnPay);
cardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
getPosition = getAdapterPosition();
notifyDataSetChanged();
if (getPosition == Integer.parseInt(cardView.getTag().toString())) radioButton.setChecked(true); else radioButton.setChecked(false);
}
});
}
}
}
package com.yono.messeripos;
public class PaymentModel {
private String url;
private String bank;
public PaymentModel(String url, String bank) {
this.url = url;
this.bank = bank;
}
public void setUrl(String url) {
this.url = url;
}
public String getUrl() {
return url;
}
public String getBank() {
return bank;
}
public void setBank(String bank) {
this.bank = bank;
}
}
\ No newline at end of file
<vector android:height="24dp" android:tint="#FF4A50"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M6,19c0,1.1 0.9,2 2,2h8c1.1,0 2,-0.9 2,-2V7H6v12zM19,4h-3.5l-1,-1h-5l-1,1H5v2h14V4z"/>
</vector>
<vector android:height="24dp" android:tint="#313131"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M19,13H5v-2h14v2z"/>
</vector>
<vector android:height="24dp" android:tint="#313131"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M19,13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"/>
</vector>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="175dp"
android:height="57dp"
android:viewportWidth="175"
android:viewportHeight="57">
<path
android:pathData="M2.64,22.756L17.053,40.938L2.64,52.882L2.64,22.756L2.64,22.756z"
android:strokeLineJoin="miter"
android:strokeWidth="1"
android:fillColor="#F15A23"
android:strokeColor="#00000000"
android:fillType="evenOdd"
android:strokeLineCap="butt"/>
<path
android:pathData="M8.441,52.882L19.286,43.809L26.782,52.882L8.441,52.882z"
android:strokeLineJoin="miter"
android:strokeWidth="1"
android:fillColor="#F15A23"
android:strokeColor="#00000000"
android:fillType="evenOdd"
android:strokeLineCap="butt"/>
<path
android:pathData="M2.64,13.027L6.401,17.785L21.866,37.11L26.878,33.12C26.878,33.12 22.718,28.222 19.924,22.756C14.462,12.07 18.329,5.417 18.329,5.417L2.64,5.417L2.64,13.027z"
android:strokeLineJoin="miter"
android:strokeWidth="1"
android:fillColor="#F15A23"
android:strokeColor="#00000000"
android:fillType="evenOdd"
android:strokeLineCap="butt"/>
<path
android:pathData="M24.071,40.094L29.175,35.878C29.175,35.878 34.049,42.294 39.701,43.809C47.108,45.794 50.387,40.938 50.387,40.938L50.387,52.882L34.119,52.882L37.787,49.71C37.787,49.71 35.873,50.986 31.192,47.744C28.43,45.83 24.071,40.094 24.071,40.094z"
android:strokeLineJoin="miter"
android:strokeWidth="1"
android:fillColor="#F15A23"
android:strokeColor="#00000000"
android:fillType="evenOdd"
android:strokeLineCap="butt"/>
<path
android:pathData="M24.54,5.382C24.54,5.382 22.912,7.6 24.071,13.027C25.31,18.828 30.236,24.967 30.225,24.829C30.225,24.829 30.541,18.733 34.119,15.156C41.744,7.531 50.387,12.07 50.387,12.07L50.387,5.417L24.54,5.382z"
android:strokeLineJoin="miter"
android:strokeWidth="1"
android:fillColor="#F15A23"
android:strokeColor="#00000000"
android:fillType="evenOdd"
android:strokeLineCap="butt"/>
<path
android:pathData="M50.387,20.109C50.387,20.109 45.565,15.978 41.372,15.978C36.009,15.978 33.082,20.608 33.082,23.967C33.082,28.859 35.43,31.577 37.787,33.934C41.174,37.321 45.295,40.974 50.387,38.034C50.387,32.469 50.387,20.109 50.387,20.109z"
android:strokeLineJoin="miter"
android:strokeWidth="1"
android:fillColor="#F15A23"
android:strokeColor="#00000000"
android:fillType="evenOdd"
android:strokeLineCap="butt"/>
<path
android:pathData="M105.304,5.88L116.683,5.88C116.683,5.88 126.764,21.143 131.718,27.449C136.672,33.755 142.004,40.938 142.004,40.938C142.004,40.938 142.004,20.109 142.004,9.298C142.004,7.931 138.416,5.88 138.416,5.88L151.538,5.88C151.538,5.88 147.233,7.649 147.233,9.298C147.233,22.756 147.233,55.327 147.233,55.327C147.233,55.327 143.101,53.036 138.416,47.592C133.153,41.476 114.428,16.781 114.428,16.781C114.428,16.781 114.428,40.094 114.428,48.766C114.428,50.404 118.016,52.882 118.016,52.882L105.304,52.882C105.304,52.882 108.79,50.384 108.79,48.766C108.79,37.11 108.79,20.109 108.79,9.298C108.79,7.845 105.304,5.88 105.304,5.88z"
android:strokeLineJoin="miter"
android:strokeWidth="1"
android:fillColor="#005E6A"
android:strokeColor="#00000000"
android:fillType="evenOdd"
android:strokeLineCap="butt"/>
<path
android:pathData="M158.887,5.88L173.492,5.88C173.492,5.88 169.57,7.737 169.57,9.298C169.57,20.109 169.57,38.034 169.57,48.766C169.57,50.471 173.492,52.882 173.492,52.882L158.887,52.882C158.887,52.882 162.539,50.417 162.539,48.766C162.539,35.878 162.539,20.109 162.539,9.298C162.539,7.797 158.887,5.88 158.887,5.88z"
android:strokeLineJoin="miter"
android:strokeWidth="1"
android:fillColor="#005E6A"
android:strokeColor="#00000000"
android:fillType="evenOdd"
android:strokeLineCap="butt"/>
<path
android:pathData="M62.337,5.88C62.337,5.88 66.123,7.768 66.123,9.298C66.123,20.109 66.123,35.878 66.123,48.766C66.123,50.444 62.337,52.882 62.337,52.882L62.337,52.882C62.337,52.882 81.252,52.882 83.973,52.882C85.325,52.882 100.47,50.405 100.47,38.729C100.47,27.053 88.706,25.959 88.706,25.959C88.706,25.959 95.873,23.967 95.873,15.978C95.873,7.367 85.325,5.88 83.973,5.88C81.163,5.88 62.337,5.88 62.337,5.88zM73.831,25.185L73.831,10.491C73.831,10.491 80.102,10.491 82.62,10.491C83.973,10.491 88.706,12.07 88.706,17.928C88.706,22.756 83.973,25.185 82.62,25.185C79.555,25.185 73.831,25.185 73.831,25.185zM73.831,29.039C73.831,29.039 82.62,29.039 83.973,29.039C85.325,29.039 93.303,31.112 93.303,38.034C93.303,45.091 85.325,47.592 83.973,47.592C82.62,47.592 73.831,47.592 73.831,47.592L73.831,29.039z"
android:strokeLineJoin="miter"
android:strokeWidth="1"
android:fillColor="#005E6A"
android:strokeColor="#00000000"
android:fillType="evenOdd"
android:strokeLineCap="butt"/>
</vector>
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="#74333333">
<item android:id="@android:id/mask">
<shape android:shape="rectangle">
<solid android:color="#25333333"/>
<corners android:radius="50dp"/>
</shape>
</item>
<item android:id="@android:id/background">
<shape android:shape="rectangle">
<solid android:color="#0D333333"/>
<corners android:radius="50dp" />
</shape>
</item>
</ripple>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<solid android:color="#20333333"/>
<corners android:radius="4dp"/>
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<com.google.android.material.card.MaterialCardView xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingVertical="15dp"
android:paddingHorizontal="20dp">
<com.google.android.material.textview.MaterialTextView
android:id="@+id/tvProductName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hint_product_name"
android:fontFamily="@font/roboto"
android:textSize="24sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
<com.google.android.material.textview.MaterialTextView
android:id="@+id/tvPrice"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hint_price"
android:fontFamily="@font/roboto"
android:textSize="16sp"
app:layout_constraintTop_toBottomOf="@+id/tvProductName"
app:layout_constraintStart_toStartOf="@id/tvProductName"/>
<com.google.android.material.textview.MaterialTextView
android:id="@+id/cross"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="x"
android:fontFamily="@font/roboto"
android:textSize="16sp"
android:layout_marginStart="10dp"
app:layout_constraintStart_toEndOf="@id/tvPrice"
app:layout_constraintBottom_toBottomOf="@id/tvPrice"/>
<com.google.android.material.textview.MaterialTextView
android:id="@+id/tvQuantity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="1"
android:fontFamily="@font/roboto"
android:textSize="16sp"
android:layout_marginStart="10dp"
app:layout_constraintStart_toEndOf="@id/cross"
app:layout_constraintBottom_toBottomOf="@id/cross"/>
<com.google.android.material.textview.MaterialTextView
android:id="@+id/tvTotal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hint_price"
android:fontFamily="@font/roboto"
android:textSize="16sp"
android:textFontWeight="600"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toBottomOf="@id/tvQuantity"/>
<ImageButton
android:id="@+id/btMinus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:layout_marginTop="20dp"
android:src="@drawable/ic_baseline_minus_24"
android:background="@drawable/ic_rounded_circle"
app:layout_constraintTop_toBottomOf="@id/tvPrice"
app:layout_constraintStart_toStartOf="parent"/>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/tiQty"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:boxBackgroundColor="#fff"
app:layout_constraintBottom_toBottomOf="@id/btMinus"
app:layout_constraintStart_toEndOf="@id/btMinus">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/etQty"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="1"
android:textColor="#333"/>
</com.google.android.material.textfield.TextInputLayout>
<ImageButton
android:id="@+id/btPlus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:src="@drawable/ic_baseline_plus_24"
android:background="@drawable/ic_rounded_circle"
app:layout_constraintStart_toEndOf="@id/tiQty"
app:layout_constraintBottom_toBottomOf="@id/tiQty"/>
<ImageButton
android:id="@+id/btDelete"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:backgroundTint="#00FFFFFF"
android:src="@drawable/ic_baseline_delete_24"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toBottomOf="@id/btPlus"/>
</androidx.constraintlayout.widget.ConstraintLayout>
</com.google.android.material.card.MaterialCardView>
......@@ -15,4 +15,5 @@
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"
android:padding="10dp"
tools:context=".PaymentActivity">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvPayment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintTop_toTopOf="parent" />
<com.google.android.material.button.MaterialButton
android:id="@+id/btnPay"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="pay"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:layout_marginVertical="2dp">
<com.google.android.material.card.MaterialCardView
android:id="@+id/cvPayment"
android:layout_height="wrap_content"
android:layout_width="match_parent"
app:layout_constraintTop_toTopOf="parent"
app:strokeWidth="1dp"
app:strokeColor="#22333333">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="15dp">
<View
android:id="@+id/icon"
android:layout_width="131dp"
android:layout_height="39dp"
android:layout_margin="15dp"
android:visibility="invisible"
android:layout_gravity="center_vertical"
android:background="@drawable/skeleton"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
<ImageView
android:id="@+id/ivLogo"
android:layout_width="131dp"
android:layout_height="39dp"
android:src="@drawable/ic_bni_logo"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tvPayment"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/app_name"
android:visibility="invisible"
app:layout_constraintStart_toEndOf="@id/ivLogo"
app:layout_constraintTop_toTopOf="parent"
/>
<com.google.android.material.radiobutton.MaterialRadioButton
android:id="@+id/rbPayment"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:enabled="false"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toBottomOf="@id/ivLogo"
app:layout_constraintTop_toTopOf="@id/ivLogo"/>
</androidx.constraintlayout.widget.ConstraintLayout>
</com.google.android.material.card.MaterialCardView>
</androidx.constraintlayout.widget.ConstraintLayout>
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
</menu>
\ No newline at end of file
......@@ -14,7 +14,7 @@
<string name="hint_product_name">Product Name</string>
<string name="hint_category">Category Name</string>
<string name="hint_quantity">0</string>
<string name="hint_price">Rp. xxx</string>
<string name="hint_price">1000</string>
<string name="hint_description">Description</string>
</resources>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment