Commit e23f08f8 authored by iman Fauzi's avatar iman Fauzi

Merge branch 'dev' into cart

parents c7eb6f42 1507ff21
...@@ -4,8 +4,10 @@ import androidx.appcompat.app.AppCompatActivity; ...@@ -4,8 +4,10 @@ import androidx.appcompat.app.AppCompatActivity;
import androidx.lifecycle.Observer; import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProviders; import androidx.lifecycle.ViewModelProviders;
import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.os.Build; import android.os.Build;
import android.content.SharedPreferences;
import android.os.Bundle; import android.os.Bundle;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log; import android.util.Log;
...@@ -28,6 +30,7 @@ public class LoginActivity extends AppCompatActivity { ...@@ -28,6 +30,7 @@ public class LoginActivity extends AppCompatActivity {
MaterialButton btnLogin; MaterialButton btnLogin;
MainViewModels mainViewModels; MainViewModels mainViewModels;
ProgressBar progressBar; ProgressBar progressBar;
SharedPreferences sharedPreferences;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
...@@ -46,6 +49,7 @@ public class LoginActivity extends AppCompatActivity { ...@@ -46,6 +49,7 @@ public class LoginActivity extends AppCompatActivity {
progressBar.setVisibility(View.GONE); progressBar.setVisibility(View.GONE);
mainViewModels = ViewModelProviders.of(this).get(MainViewModels.class); mainViewModels = ViewModelProviders.of(this).get(MainViewModels.class);
sharedPreferences = getSharedPreferences(SplashScreen.MY_SHARED_PREFERENCES, Context.MODE_PRIVATE);
btnLogin.setOnClickListener(new View.OnClickListener() { btnLogin.setOnClickListener(new View.OnClickListener() {
@Override @Override
...@@ -72,6 +76,9 @@ public class LoginActivity extends AppCompatActivity { ...@@ -72,6 +76,9 @@ public class LoginActivity extends AppCompatActivity {
Log.d("Status", usersModelsDataResponse.getMessageData()); Log.d("Status", usersModelsDataResponse.getMessageData());
if (!usersModelsDataResponse.getMessageData().equals("Login Failed")){ if (!usersModelsDataResponse.getMessageData().equals("Login Failed")){
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putBoolean(SplashScreen.SESSION, true);
editor.commit();
startActivity(new Intent(LoginActivity.this, MainActivity.class)); startActivity(new Intent(LoginActivity.this, MainActivity.class));
progressBar.setVisibility(View.GONE); progressBar.setVisibility(View.GONE);
...@@ -84,6 +91,7 @@ public class LoginActivity extends AppCompatActivity { ...@@ -84,6 +91,7 @@ public class LoginActivity extends AppCompatActivity {
username.setEnabled(true); username.setEnabled(true);
password.setEnabled(true); password.setEnabled(true);
btnLogin.setEnabled(true); btnLogin.setEnabled(true);
finish();
} }
} }
......
...@@ -19,6 +19,7 @@ import androidx.lifecycle.ViewModelProvider; ...@@ -19,6 +19,7 @@ import androidx.lifecycle.ViewModelProvider;
import androidx.lifecycle.Observer; import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProviders; import androidx.lifecycle.ViewModelProviders;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
import com.google.android.material.appbar.MaterialToolbar; import com.google.android.material.appbar.MaterialToolbar;
...@@ -110,8 +111,8 @@ public class MainActivity extends AppCompatActivity { ...@@ -110,8 +111,8 @@ public class MainActivity extends AppCompatActivity {
productModelsArrayList.addAll(productModels); productModelsArrayList.addAll(productModels);
productAdapter.setProduct(MainActivity.this,productModelsArrayList ); productAdapter.setProduct(MainActivity.this,productModelsArrayList );
binding.rvCategory.setLayoutManager(new LinearLayoutManager(MainActivity.this, LinearLayoutManager.HORIZONTAL, false)); binding.rvProduct.setLayoutManager(new GridLayoutManager(MainActivity.this, 2));
binding.rvCategory.setAdapter(categoryAdapter); binding.rvProduct.setAdapter(productAdapter);
} }
......
package com.yono.messeripos; package com.yono.messeripos;
import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import android.os.Looper; import android.os.Looper;
...@@ -12,6 +14,10 @@ import androidx.appcompat.app.AppCompatActivity; ...@@ -12,6 +14,10 @@ import androidx.appcompat.app.AppCompatActivity;
public class SplashScreen extends AppCompatActivity { public class SplashScreen extends AppCompatActivity {
ImageView img; ImageView img;
SharedPreferences sharedPreferences;
public static final String MY_SHARED_PREFERENCES = "my_shared_preferences";
public static final String SESSION = "session";
public static Boolean session;
@Override @Override
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
...@@ -20,12 +26,18 @@ public class SplashScreen extends AppCompatActivity { ...@@ -20,12 +26,18 @@ public class SplashScreen extends AppCompatActivity {
// Animation animation = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.zoom_in); // Animation animation = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.zoom_in);
// img.startAnimation(animation); // img.startAnimation(animation);
sharedPreferences = getSharedPreferences(MY_SHARED_PREFERENCES, Context.MODE_PRIVATE);
session = sharedPreferences.getBoolean(SESSION, false);
new Handler(Looper.getMainLooper()).postDelayed(()->{ new Handler(Looper.getMainLooper()).postDelayed(()->{
startActivity(new Intent(SplashScreen.this, LoginActivity.class)); if (session){
finish(); startActivity(new Intent(SplashScreen.this, MainActivity.class));
finish();
}else{
startActivity(new Intent(SplashScreen.this, LoginActivity.class));
finish();
}
}, 3000); }, 3000);
} }
} }
...@@ -2,7 +2,6 @@ package com.yono.messeripos.adapter; ...@@ -2,7 +2,6 @@ package com.yono.messeripos.adapter;
import android.content.Context; import android.content.Context;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
...@@ -10,13 +9,12 @@ import androidx.databinding.DataBindingUtil; ...@@ -10,13 +9,12 @@ import androidx.databinding.DataBindingUtil;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import com.yono.messeripos.R; import com.yono.messeripos.R;
import com.yono.messeripos.databinding.ItemCategoryBinding;
import com.yono.messeripos.databinding.ItemListBinding; import com.yono.messeripos.databinding.ItemListBinding;
import com.yono.messeripos.models.CategoryModels;
import com.yono.messeripos.models.ProductModels; import com.yono.messeripos.models.ProductModels;
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List;
public class ProductAdapter extends RecyclerView.Adapter<ProductAdapter.MyViewHolder> { public class ProductAdapter extends RecyclerView.Adapter<ProductAdapter.MyViewHolder> {
private ArrayList<ProductModels> productModels; private ArrayList<ProductModels> productModels;
...@@ -63,6 +61,18 @@ public class ProductAdapter extends RecyclerView.Adapter<ProductAdapter.MyViewHo ...@@ -63,6 +61,18 @@ public class ProductAdapter extends RecyclerView.Adapter<ProductAdapter.MyViewHo
public void bindData(ProductModels products) { public void bindData(ProductModels products) {
binding.setProducts(products); binding.setProducts(products);
DecimalFormat rupiah = (DecimalFormat) DecimalFormat.getCurrencyInstance();
DecimalFormatSymbols format = new DecimalFormatSymbols();
format.setCurrencySymbol("Rp. ");
format.setMonetaryDecimalSeparator(',');
format.setGroupingSeparator('.');
rupiah.setDecimalFormatSymbols(format);
binding.setPrice(rupiah.format(products.getPriceProduct()));
binding.setImage(products.getImageProduct());
} }
} }
} }
...@@ -6,6 +6,7 @@ import retrofit2.converter.gson.GsonConverterFactory; ...@@ -6,6 +6,7 @@ import retrofit2.converter.gson.GsonConverterFactory;
public class ApiHelper { public class ApiHelper {
public static final String BASE_URL = "https://rest-api-meser.herokuapp.com/"; public static final String BASE_URL = "https://rest-api-meser.herokuapp.com/";
public static final String VERSI_API_1 = "api/v1/"; public static final String VERSI_API_1 = "api/v1/";
public static final String BASE_URL_IMAGE = "https://storage.googleapis.com/rest-api-meser.appspot.com/images/";
public static Retrofit request(String baseUrl){ public static Retrofit request(String baseUrl){
Retrofit retrofit = new Retrofit.Builder() Retrofit retrofit = new Retrofit.Builder()
......
package com.yono.messeripos.models; package com.yono.messeripos.models;
import android.widget.ImageView;
import androidx.databinding.BindingAdapter;
import com.bumptech.glide.Glide;
import com.google.gson.annotations.SerializedName; import com.google.gson.annotations.SerializedName;
import com.yono.messeripos.R;
import com.yono.messeripos.api.ApiHelper;
public class ProductModels<T> { public class ProductModels<T> {
@SerializedName("id") @SerializedName("id")
...@@ -15,6 +22,9 @@ public class ProductModels<T> { ...@@ -15,6 +22,9 @@ public class ProductModels<T> {
@SerializedName("stock") @SerializedName("stock")
private int stockProduct; private int stockProduct;
@SerializedName("image")
private String imageProduct;
@SerializedName("category") @SerializedName("category")
private T categoryProduct; private T categoryProduct;
...@@ -57,4 +67,21 @@ public class ProductModels<T> { ...@@ -57,4 +67,21 @@ public class ProductModels<T> {
public void setCategoryProduct(T categoryProduct) { public void setCategoryProduct(T categoryProduct) {
this.categoryProduct = categoryProduct; this.categoryProduct = categoryProduct;
} }
public String getImageProduct() {
return imageProduct;
}
public void setImageProduct(String imageProduct) {
this.imageProduct = imageProduct;
}
@BindingAdapter("url")
public static void setImage(ImageView view, String url){
if (ApiHelper.BASE_URL_IMAGE+url == null){
view.setImageResource(R.drawable.ic_meser);
}else{
Glide.with(view).load(ApiHelper.BASE_URL_IMAGE+url).into(view);
}
}
} }
<vector android:height="24dp" android:tint="#FF4A50" <vector android:height="24dp" android:tint="#FC151B"
android:viewportHeight="24" android:viewportWidth="24" android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> 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"/> <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 android:height="24dp" android:tint="#34C25B"
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="M3,17.25V21h3.75L17.81,9.94l-3.75,-3.75L3,17.25zM20.71,7.04c0.39,-0.39 0.39,-1.02 0,-1.41l-2.34,-2.34c-0.39,-0.39 -1.02,-0.39 -1.41,0l-1.83,1.83 3.75,3.75 1.83,-1.83z"/>
</vector>
...@@ -7,79 +7,98 @@ ...@@ -7,79 +7,98 @@
<variable <variable
name="products" name="products"
type="com.yono.messeripos.models.ProductModels" /> type="com.yono.messeripos.models.ProductModels" />
<variable
name="price"
type="String" />
<variable
name="image"
type="String" />
</data> </data>
<com.google.android.material.card.MaterialCardView <androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="300dp"
android:layout_margin="@dimen/cardview_default_radius" android:layout_marginEnd="10dp"
android:padding="@dimen/cardview_default_elevation" android:layout_marginBottom="10dp">
app:cardCornerRadius="@dimen/cardview_default_radius">
<RelativeLayout <com.google.android.material.card.MaterialCardView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="match_parent"
app:cardElevation="0dp"
app:strokeWidth="1dp"
app:strokeColor="#3CB3B3B3"
app:cardCornerRadius="10dp">
<ImageView <androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/ivMeser"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="match_parent">
android:adjustViewBounds="true"
tools:src="@tools:sample/avatars" />
<com.google.android.material.textview.MaterialTextView <ImageView
android:id="@+id/tvQuantity" android:id="@+id/image_product"
android:layout_width="wrap_content" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="200dp"
android:layout_above="@id/tvProduct" android:src="@mipmap/ic_launcher_round"
android:layout_alignParentEnd="true" app:layout_constraintTop_toTopOf="parent"
android:background="#fff" app:url="@{image}"
android:fontFamily="monospace" android:scaleType="fitXY"/>
android:padding="@dimen/material_emphasis_medium"
android:textColor="@android:color/white"
android:textSize="12sp"
android:textStyle="bold"
tools:text="10" />
<com.google.android.material.textview.MaterialTextView <ImageView
android:id="@+id/tvProduct" android:id="@+id/btnDelete"
android:layout_width="match_parent" android:layout_width="30dp"
android:layout_height="wrap_content" android:layout_height="30dp"
android:layout_below="@id/ivMeser" app:layout_constraintEnd_toEndOf="parent"
android:fontFamily="@font/roboto" app:layout_constraintTop_toTopOf="parent"
android:gravity="center" android:src="@drawable/ic_baseline_delete_24"/>
android:padding="@dimen/material_emphasis_high_type"
android:textAllCaps="true"
android:textColor="@color/ic_launcher_background"
android:textSize="12sp"
android:textStyle="bold"
tools:text="@tools:sample/full_names" />
<com.google.android.material.textview.MaterialTextView <ImageView
android:id="@+id/tvPrice" android:id="@+id/btnEdit"
android:layout_width="match_parent" android:layout_width="30dp"
android:layout_height="wrap_content" android:layout_height="30dp"
android:layout_below="@id/tvProduct" app:layout_constraintTop_toTopOf="parent"
android:fontFamily="@font/roboto" app:layout_constraintEnd_toStartOf="@id/btnDelete"
android:gravity="end" android:src="@drawable/ic_baseline_edit_24"/>
android:paddingStart="@dimen/material_emphasis_medium"
android:paddingEnd="@dimen/material_emphasis_disabled"
android:textColor="@color/colorPrimary"
android:textSize="12sp" />
<com.google.android.material.textview.MaterialTextView <TextView
android:id="@+id/tvDescription" android:id="@+id/title_product"
android:layout_width="match_parent" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_below="@id/tvPrice" app:layout_constraintTop_toBottomOf="@id/image_product"
android:fontFamily="@font/roboto" app:layout_constraintStart_toStartOf="parent"
android:padding="@dimen/material_emphasis_high_type" tools:text="@tools:sample/full_names"
android:textColor="@android:color/darker_gray" android:textColor="@android:color/black"
android:textSize="12sp" android:layout_marginStart="10dp"
tools:text="@tools:sample/lorem" /> android:layout_marginTop="5dp"
android:textSize="18sp"
android:lines="1"
android:textStyle="bold"
android:text="@{products.productName}"
android:maxLength="25"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@id/title_product"
app:layout_constraintStart_toStartOf="parent"
tools:text="@tools:sample/full_names"
android:textColor="@android:color/black"
android:layout_marginStart="10dp"
android:layout_marginTop="5dp"
android:textSize="18sp"
android:lines="1"
android:text="@{price}"
android:maxLength="25"/>
</RelativeLayout> </androidx.constraintlayout.widget.ConstraintLayout>
<com.google.android.material.button.MaterialButton
android:layout_width="match_parent"
android:layout_height="35dp"
android:layout_gravity="bottom"
android:layout_marginStart="10dp"
android:layout_marginEnd="10dp"
android:text="Add To Cart"/>
</com.google.android.material.card.MaterialCardView>
</com.google.android.material.card.MaterialCardView> </androidx.constraintlayout.widget.ConstraintLayout>
</layout> </layout>
\ No newline at end of file \ 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