Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
M
meser
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Muhammad Suryono
meser
Commits
5b669715
Commit
5b669715
authored
Sep 02, 2020
by
Muhammad Suryono
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'cart' into dev
parents
dbdfc6c5
22bec9ae
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
712 additions
and
423 deletions
+712
-423
build.gradle
app/build.gradle
+1
-0
AndroidManifest.xml
app/src/main/AndroidManifest.xml
+0
-3
LoginActivity.java
app/src/main/java/com/yono/messeripos/LoginActivity.java
+45
-92
LoginState.java
app/src/main/java/com/yono/messeripos/LoginState.java
+70
-7
RegisterState.java
app/src/main/java/com/yono/messeripos/RegisterState.java
+95
-0
UsersService.java
...in/java/com/yono/messeripos/api/service/UsersService.java
+3
-0
MainViewModels.java
.../main/java/com/yono/messeripos/models/MainViewModels.java
+57
-30
UsersModels.java
...src/main/java/com/yono/messeripos/models/UsersModels.java
+18
-1
cash_logo.png
app/src/main/res/drawable/cash_logo.png
+0
-0
nfc_icon.png
app/src/main/res/drawable/nfc_icon.png
+0
-0
dashboard_login.xml
app/src/main/res/layout/dashboard_login.xml
+1
-10
expansion_header_layout.xml
app/src/main/res/layout/expansion_header_layout.xml
+106
-0
login_form.xml
app/src/main/res/layout/login_form.xml
+114
-98
payment_method.xml
app/src/main/res/layout/payment_method.xml
+83
-0
register_form.xml
app/src/main/res/layout/register_form.xml
+118
-182
strings.xml
app/src/main/res/values/strings.xml
+1
-0
No files found.
app/build.gradle
View file @
5b669715
...
...
@@ -61,5 +61,6 @@ dependencies {
androidTestImplementation
'androidx.test.espresso:espresso-core:3.2.0'
implementation
'androidmads.library.qrgenearator:QRGenearator:1.0.4'
implementation
'com.google.zxing:core:3.3.2'
implementation
'com.github.florent37:expansionpanel:1.2.4'
}
\ No newline at end of file
app/src/main/AndroidManifest.xml
View file @
5b669715
...
...
@@ -38,9 +38,6 @@
<activity
android:name=
".CartActivity"
android:theme=
"@style/AppTheme.appbar"
/>
<activity
android:name=
".ProductActivity"
android:theme=
"@style/AppTheme.appbar"
/>
<activity
android:name=
".SplashScreen"
>
<intent-filter>
<action
android:name=
"android.intent.action.MAIN"
/>
...
...
app/src/main/java/com/yono/messeripos/LoginActivity.java
View file @
5b669715
...
...
@@ -32,16 +32,17 @@ import com.yono.messeripos.utils.Utils;
public
class
LoginActivity
extends
AppCompatActivity
{
TextInputEditText
username
,
password
;
MaterialButton
btnLogin
;
MainViewModels
mainViewModels
;
ProgressBar
progressBar
;
SharedPreferences
sharedPreferences
;
Utils
utils
=
new
Utils
();
//State
LoginState
loginState
;
RegisterState
registerState
;
MaterialButton
btnSignin
;
MaterialButton
btnSignup
,
btnSignIn
;
ConstraintLayout
loginSheetLayout
,
registerSheetLayout
;
BottomSheetBehavior
sheetBehavior
,
sheetBehavior2
;
int
height
,
width
;
ImageButton
closeBtn
;
...
...
@@ -50,7 +51,7 @@ public class LoginActivity extends AppCompatActivity {
@Override
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
setContentView
(
R
.
layout
.
dashboard_login
);
setContentView
(
R
.
layout
.
payment_method
);
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
KITKAT
)
{
Window
w
=
getWindow
();
...
...
@@ -58,98 +59,41 @@ public class LoginActivity extends AppCompatActivity {
}
mainViewModels
=
ViewModelProviders
.
of
(
this
).
get
(
MainViewModels
.
class
);
// bindUI
// get window height
DisplayMetrics
displayMetrics
=
new
DisplayMetrics
();
getWindowManager
().
getDefaultDisplay
().
getMetrics
(
displayMetrics
);
height
=
displayMetrics
.
heightPixels
;
width
=
displayMetrics
.
widthPixels
;
// get bottom sheets
sheetBehavior
=
BottomSheetBehavior
.
from
(
loginSheetLayout
);
sheetBehavior2
=
BottomSheetBehavior
.
from
(
registerSheetLayout
);
// button on click to form login
btnSignIn
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
public
void
onClick
(
View
view
)
{
if
(
sheetBehavior
.
getState
()
!=
BottomSheetBehavior
.
STATE_EXPANDED
)
{
sheetBehavior
.
setState
(
BottomSheetBehavior
.
STATE_EXPANDED
);
loginSheetLayout
.
setMaxHeight
(
height
-
100
);
}
else
{
sheetBehavior
.
setState
(
BottomSheetBehavior
.
STATE_COLLAPSED
);
}
}
});
// registerSheetLayout = findViewById(R.id.ConstraintRegisterLayout);
// sheetBehavior2 = BottomSheetBehavior.from(registerSheetLayout);
//button on click to form register
btnSignup
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
public
void
onClick
(
View
view
)
{
if
(
sheetBehavior2
.
getState
()
!=
BottomSheetBehavior
.
STATE_EXPANDED
)
{
sheetBehavior2
.
setState
(
BottomSheetBehavior
.
STATE_EXPANDED
);
registerSheetLayout
.
setMaxHeight
(
height
-
100
);
}
else
{
sheetBehavior2
.
setState
(
BottomSheetBehavior
.
STATE_COLLAPSED
);
}
}
});
/*
* LOGIN LOGIKA DIBAWAH INI
* */
//<<<<<<< HEAD
// public void onClick(View v) {
// Snackbar snackbar = Snackbar.make(v, "Oppss! Wrong Username Or Password!", Snackbar.LENGTH_LONG);
//
// if (TextUtils.isEmpty(username.getText().toString()) &&
// TextUtils.isEmpty(password.getText().toString())){
// username.setError("This field can't empty");
// password.setError("This field can't empty");
// }else if (TextUtils.isEmpty(username.getText().toString())){
// username.setError("This field can't empty");
// }else if (TextUtils.isEmpty(password.getText().toString())){
// password.setError("This field can't empty");
// }else{
// progressBar.setVisibility(View.VISIBLE);
// username.setEnabled(false);
// password.setEnabled(false);
// btnLogin.setEnabled(false);
//
// mainViewModels.checkLogin(new UsersModels(username.getText().toString(),
// password.getText().toString())).observe(LoginActivity.this, new Observer<DataResponse<UsersModels>>() {
// btnSignup.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onChanged(DataResponse<UsersModels> usersModelsDataResponse) {
// Log.d("Status", usersModelsDataResponse.getMessageData());
//
// if (usersModelsDataResponse != null){
// if (usersModelsDataResponse.getStatusData()){
// SharedPreferences.Editor editor = sharedPreferences.edit();
// editor.putBoolean(SplashScreen.SESSION, true);
// editor.commit();
//
// startActivity(new Intent(LoginActivity.this, MainActivity.class));
//
// progressBar.setVisibility(View.GONE);
// username.setEnabled(true);
// password.setEnabled(true);
// btnLogin.setEnabled(true);
// }else {
// utils.snackBar(v,"Oppss! Wrong Username Or Password!").show();
// progressBar.setVisibility(View.GONE);
// username.setEnabled(true);
// password.setEnabled(true);
// btnLogin.setEnabled(true);
// public void onClick(View view) {
// if (sheetBehavior2.getState() != BottomSheetBehavior.STATE_EXPANDED) {
// sheetBehavior2.setState(BottomSheetBehavior.STATE_EXPANDED);
// registerSheetLayout.setMaxHeight(height - 100);
// } else {
// sheetBehavior2.setState(BottomSheetBehavior.STATE_COLLAPSED);
// }
// }
// }else{
// utils.snackBar(v, "Oppss! ログイン中にエラーが発生しました。しばらくしてからもう一度お試しください").show();
// });
// bindUI
btnSignIn
=
findViewById
(
R
.
id
.
signInButtonDashboardLogin
);
btnSignup
=
findViewById
(
R
.
id
.
signUpButtonDashboardLogin
);
// //button on click to form register
// btnSignup.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View view) {
// if (sheetBehavior2.getState() != BottomSheetBehavior.STATE_EXPANDED) {
// sheetBehavior2.setState(BottomSheetBehavior.STATE_EXPANDED);
// registerSheetLayout.setMaxHeight(height - 100);
// } else {
// sheetBehavior2.setState(BottomSheetBehavior.STATE_COLLAPSED);
// }
//
// }
// });
//=======
// session login
sharedPreferences
=
getSharedPreferences
(
SplashScreen
.
MY_SHARED_PREFERENCES
,
Context
.
MODE_PRIVATE
);
...
...
@@ -158,9 +102,18 @@ public class LoginActivity extends AppCompatActivity {
@Override
public
void
onClick
(
View
v
)
{
loginState
=
new
LoginState
(
LoginActivity
.
this
,
mainViewModels
);
loginState
.
setCancelable
(
false
);
loginState
.
show
(
getSupportFragmentManager
(),
loginState
.
getTag
());
}
});
btnSignup
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
public
void
onClick
(
View
view
)
{
registerState
=
new
RegisterState
(
LoginActivity
.
this
,
mainViewModels
);
registerState
.
setCancelable
(
false
);
registerState
.
show
(
getSupportFragmentManager
(),
registerState
.
getTag
());
}
});
}
}
app/src/main/java/com/yono/messeripos/LoginState.java
View file @
5b669715
package
com
.
yono
.
messeripos
;
import
android.app.Dialog
;
import
android.app.ProgressDialog
;
import
android.content.Context
;
import
android.content.DialogInterface
;
import
android.content.Intent
;
import
android.content.SharedPreferences
;
import
android.content.res.Resources
;
...
...
@@ -11,10 +13,12 @@ import android.util.Log;
import
android.view.KeyEvent
;
import
android.view.View
;
import
android.widget.ImageView
;
import
android.widget.ProgressBar
;
import
android.widget.RelativeLayout
;
import
androidx.annotation.NonNull
;
import
androidx.annotation.Nullable
;
import
androidx.appcompat.app.AlertDialog
;
import
androidx.lifecycle.LifecycleOwner
;
import
androidx.lifecycle.Observer
;
...
...
@@ -23,6 +27,7 @@ import com.google.android.material.bottomsheet.BottomSheetBehavior;
import
com.google.android.material.bottomsheet.BottomSheetDialog
;
import
com.google.android.material.bottomsheet.BottomSheetDialogFragment
;
import
com.google.android.material.button.MaterialButton
;
import
com.google.android.material.dialog.MaterialAlertDialogBuilder
;
import
com.google.android.material.snackbar.Snackbar
;
import
com.google.android.material.textfield.TextInputEditText
;
import
com.yono.messeripos.models.MainViewModels
;
...
...
@@ -33,6 +38,7 @@ import com.yono.messeripos.utils.Utils;
public
class
LoginState
extends
BottomSheetDialogFragment
{
private
static
final
String
TAG
=
"LoginState"
;
private
static
String
DEFAULT_LOGIN_NAME
=
"sign in"
;
BottomSheetBehavior
sheetBehavior
;
BottomSheetDialog
sheetDialog
;
RelativeLayout
loginLayout
;
...
...
@@ -43,6 +49,10 @@ public class LoginState extends BottomSheetDialogFragment {
MainViewModels
mainViewModels
;
SharedPreferences
sharedPreferences
;
Utils
utils
;
ProgressBar
bar
;
AlertDialog
alertDialog
;
ProgressDialog
dialog
;
public
LoginState
(
Context
context
,
MainViewModels
mainViewModels
)
{
this
.
context
=
context
;
...
...
@@ -56,6 +66,8 @@ public class LoginState extends BottomSheetDialogFragment {
sheetDialog
=
(
BottomSheetDialog
)
super
.
onCreateDialog
(
savedInstanceState
);
dialog
=
new
ProgressDialog
(
context
);
// inflating layout
View
view
=
View
.
inflate
(
getContext
(),
R
.
layout
.
login_form
,
null
);
...
...
@@ -65,6 +77,10 @@ public class LoginState extends BottomSheetDialogFragment {
password
=
view
.
findViewById
(
R
.
id
.
ETPasswordLogin
);
loginButton
=
view
.
findViewById
(
R
.
id
.
SignInButtonInLogin
);
closeBtn
=
view
.
findViewById
(
R
.
id
.
closeBtnLogin
);
bar
=
view
.
findViewById
(
R
.
id
.
progressLogin
);
// set progress bar gone
bar
.
setVisibility
(
View
.
GONE
);
// create session
sharedPreferences
=
context
.
getSharedPreferences
(
SplashScreen
.
MY_SHARED_PREFERENCES
,
Context
.
MODE_PRIVATE
);
...
...
@@ -78,16 +94,28 @@ public class LoginState extends BottomSheetDialogFragment {
// get Window size
int
getHeight
=
Resources
.
getSystem
().
getDisplayMetrics
().
heightPixels
;
int
setHeight
=
getHeight
-
(
getHeight
*
10
)
/
100
;
int
setHeight
=
getHeight
-
(
getHeight
*
5
)
/
100
;
// set max height
sheetBehavior
.
setPeekHeight
(
setHeight
);
loginLayout
.
setMinimumHeight
(
setHeight
);
Log
.
d
(
TAG
,
"onCreateDialog: "
+
sheetBehavior
.
getState
());
// alert dialog buat nampilin error
alertDialog
=
new
AlertDialog
.
Builder
(
context
)
.
setTitle
(
"Username dan Password Salah"
)
.
setMessage
(
"Oppss! Username dan Password yang kamu masukan salah!"
)
.
setPositiveButton
(
"Coba Lagi"
,
null
)
.
setCancelable
(
false
)
.
create
();
loginButton
.
setOnClickListener
(
view1
->
{
if
(
sheetBehavior
.
getState
()
!=
BottomSheetBehavior
.
STATE_EXPANDED
)
loginAuth
(
view1
);
if
(
sheetBehavior
.
getState
()
!=
BottomSheetBehavior
.
STATE_EXPANDED
)
{
bar
.
setVisibility
(
View
.
VISIBLE
);
loginButton
.
setText
(
""
);
sheetDialog
.
setCancelable
(
false
);
loginAuth
(
view1
);
}
});
// close btn is clicked
...
...
@@ -100,7 +128,6 @@ public class LoginState extends BottomSheetDialogFragment {
}
private
void
loginAuth
(
View
v
)
{
Snackbar
snackbar
=
Snackbar
.
make
(
v
,
"Oppss! Wrong Username Or Password!"
,
Snackbar
.
LENGTH_LONG
);
if
(
TextUtils
.
isEmpty
(
username
.
getText
().
toString
())
&&
TextUtils
.
isEmpty
(
password
.
getText
().
toString
())){
...
...
@@ -111,37 +138,73 @@ public class LoginState extends BottomSheetDialogFragment {
}
else
if
(
TextUtils
.
isEmpty
(
password
.
getText
().
toString
())){
password
.
setError
(
"This field can't empty"
);
}
else
{
/**
* Jika tombol sign in ditekan
*/
// aktifkan progress bar
bar
.
setVisibility
(
View
.
VISIBLE
);
// hilangkan tulisan di button
loginButton
.
setText
(
""
);
// nonaktifkan semua form
username
.
setEnabled
(
false
);
password
.
setEnabled
(
false
);
loginButton
.
setEnabled
(
false
);
closeBtn
.
setEnabled
(
false
);
// buat checking login
mainViewModels
.
checkLogin
(
new
UsersModels
(
username
.
getText
().
toString
(),
password
.
getText
().
toString
())).
observe
((
LifecycleOwner
)
context
,
new
Observer
<
DataResponse
<
UsersModels
>>()
{
password
.
getText
().
toString
()))
.
observe
((
LifecycleOwner
)
context
,
new
Observer
<
DataResponse
<
UsersModels
>>()
{
@Override
public
void
onChanged
(
DataResponse
<
UsersModels
>
usersModelsDataResponse
)
{
Log
.
d
(
"Status"
,
usersModelsDataResponse
.
getMessageData
());
if
(
usersModelsDataResponse
!=
null
)
{
/**
* Jika response atau data ada dan cocok
*/
if
(
usersModelsDataResponse
.
getStatusData
())
{
// SharedPreferences.Editor editor = sharedPreferences.edit();
// editor.putBoolean(SplashScreen.SESSION, true);
// editor.commit();
// redirect ke home
startActivity
(
new
Intent
(
context
,
MainActivity
.
class
));
// set progress bar jadi nonaktif
bar
.
setVisibility
(
View
.
GONE
);
// munculkan tulisan default di button sign in
loginButton
.
setText
(
DEFAULT_LOGIN_NAME
);
// ubah sheet dialog jadi tidak bisa di slide atau cancel
sheetDialog
.
setCancelable
(
true
);
// set form jadi enable
username
.
setEnabled
(
true
);
password
.
setEnabled
(
true
);
loginButton
.
setEnabled
(
true
);
closeBtn
.
setEnabled
(
true
);
}
else
{
utils
.
snackBar
(
v
,
"Oppss! Wrong Username Or Password!"
).
show
();
/**
* Jika response atau data tidak cocok
*/
bar
.
setVisibility
(
View
.
GONE
);
loginButton
.
setText
(
DEFAULT_LOGIN_NAME
);
sheetDialog
.
setCancelable
(
true
);
utils
.
snackBar
(
v
,
"Oppss! Wrong Username or Password!"
).
show
();
username
.
setEnabled
(
true
);
password
.
setEnabled
(
true
);
loginButton
.
setEnabled
(
true
);
closeBtn
.
setEnabled
(
true
);
}
}
else
{
bar
.
setVisibility
(
View
.
VISIBLE
);
utils
.
snackBar
(
v
,
"Oppss! ログイン中にエラーが発生しました。しばらくしてからもう一度お試しください"
).
show
();
}
...
...
app/src/main/java/com/yono/messeripos/RegisterState.java
0 → 100644
View file @
5b669715
package
com
.
yono
.
messeripos
;
import
android.app.Dialog
;
import
android.content.Context
;
import
android.content.SharedPreferences
;
import
android.content.res.Resources
;
import
android.os.Bundle
;
import
android.util.Log
;
import
android.view.View
;
import
android.widget.ImageView
;
import
android.widget.RelativeLayout
;
import
androidx.annotation.NonNull
;
import
androidx.annotation.Nullable
;
import
com.google.android.material.bottomsheet.BottomSheetBehavior
;
import
com.google.android.material.bottomsheet.BottomSheetDialog
;
import
com.google.android.material.bottomsheet.BottomSheetDialogFragment
;
import
com.google.android.material.button.MaterialButton
;
import
com.google.android.material.textfield.TextInputEditText
;
import
com.yono.messeripos.models.MainViewModels
;
import
com.yono.messeripos.utils.Utils
;
public
class
RegisterState
extends
BottomSheetDialogFragment
{
private
static
final
String
TAG
=
"RegisterState"
;
BottomSheetBehavior
sheetBehavior2
;
BottomSheetDialog
sheetDialog2
;
RelativeLayout
registerLayout
;
TextInputEditText
username
,
email
,
password
,
repassword
;
MaterialButton
registerButton
;
ImageView
closeBtn
;
Context
context
;
MainViewModels
mainViewModels
;
SharedPreferences
sharedPreferences
;
Utils
utils
;
public
RegisterState
(
Context
context
,
MainViewModels
mainViewModels
)
{
this
.
context
=
context
;
this
.
mainViewModels
=
mainViewModels
;
}
@NonNull
@Override
public
Dialog
onCreateDialog
(
@Nullable
Bundle
savedInstanceState
)
{
sheetDialog2
=
(
BottomSheetDialog
)
super
.
onCreateDialog
(
savedInstanceState
);
// inflating layout
View
view
=
View
.
inflate
(
getContext
(),
R
.
layout
.
register_form
,
null
);
// bindUI
registerLayout
=
view
.
findViewById
(
R
.
id
.
RegisterLayout
);
username
=
view
.
findViewById
(
R
.
id
.
ETUsernameReg
);
email
=
view
.
findViewById
(
R
.
id
.
ETEmailReg
);
password
=
view
.
findViewById
(
R
.
id
.
ETPasswordReg
);
repassword
=
view
.
findViewById
(
R
.
id
.
ETRePasswordReg
);
registerButton
=
view
.
findViewById
(
R
.
id
.
MBRegister
);
closeBtn
=
view
.
findViewById
(
R
.
id
.
ivclose
);
// create session
sharedPreferences
=
context
.
getSharedPreferences
(
SplashScreen
.
MY_SHARED_PREFERENCES
,
Context
.
MODE_PRIVATE
);
// utils
utils
=
new
Utils
();
sheetDialog2
.
setContentView
(
view
);
sheetBehavior2
=
BottomSheetBehavior
.
from
((
View
)
(
view
.
getParent
()));
// get Window size
int
getHeight
=
Resources
.
getSystem
().
getDisplayMetrics
().
heightPixels
;
int
setHeight
=
getHeight
-
(
getHeight
*
5
)
/
100
;
// set max height
sheetBehavior2
.
setPeekHeight
(
setHeight
);
registerLayout
.
setMinimumHeight
(
setHeight
);
Log
.
d
(
TAG
,
"onCreateDialog: "
+
sheetBehavior2
.
getState
());
// loginButton.setOnClickListener(view1 -> {
// if (sheetBehavior.getState() != BottomSheetBehavior.STATE_EXPANDED) loginAuth(view1);
// });
// close btn is clicked
closeBtn
.
setOnClickListener
(
view12
->
{
Log
.
d
(
TAG
,
"onCreateDialog: "
+
sheetBehavior2
.
getState
());
sheetDialog2
.
dismiss
();
});
return
sheetDialog2
;
}
}
app/src/main/java/com/yono/messeripos/api/service/UsersService.java
View file @
5b669715
...
...
@@ -11,4 +11,7 @@ import retrofit2.http.POST;
public
interface
UsersService
{
@POST
(
ApiHelper
.
VERSI_API_1
+
"login"
)
Call
<
DataResponse
<
UsersModels
>>
checkLogin
(
@Body
UsersModels
usersModels
);
@POST
(
ApiHelper
.
VERSI_API_1
+
"register"
)
Call
<
DataResponse
<
UsersModels
>>
postRegister
(
@Body
UsersModels
usersModels
);
}
app/src/main/java/com/yono/messeripos/models/MainViewModels.java
View file @
5b669715
...
...
@@ -29,6 +29,8 @@ public class MainViewModels extends ViewModel {
MutableLiveData
<
DataResponse
<
List
<
ProductModels
>>>
productByCategory
;
MutableLiveData
<
DataResponse
<
List
<
CategoryModels
>>>
categoryList
;
MutableLiveData
<
DataResponse
<
UsersModels
>>
usersLogin
;
MutableLiveData
<
DataResponse
<
UsersModels
>>
usersRegister
;
MutableLiveData
<
DataResponse
<
List
<
PaymentsModels
<
String
>>>>
transactions
;
private
MainViewModels
mainViewModels
;
...
...
@@ -36,7 +38,7 @@ public class MainViewModels extends ViewModel {
Client
client
=
new
Client
();
Utils
utils
=
new
Utils
();
public
MainViewModels
(){
public
MainViewModels
()
{
productList
=
new
MutableLiveData
<>();
categoryList
=
new
MutableLiveData
<>();
productByCategory
=
new
MutableLiveData
<>();
...
...
@@ -44,26 +46,26 @@ public class MainViewModels extends ViewModel {
}
public
LiveData
<
DataResponse
<
List
<
ProductModels
<
CategoryModels
>>>>
getProduct
(){
public
LiveData
<
DataResponse
<
List
<
ProductModels
<
CategoryModels
>>>>
getProduct
()
{
getProductList
();
return
productList
;
}
public
LiveData
<
DataResponse
<
List
<
CategoryModels
>>>
getCategory
(){
public
LiveData
<
DataResponse
<
List
<
CategoryModels
>>>
getCategory
()
{
getCategoryList
();
return
categoryList
;
}
public
void
postCategory
(
CategoryModels
categoryModels
){
public
void
postCategory
(
CategoryModels
categoryModels
)
{
saveCategory
(
categoryModels
);
}
public
LiveData
<
DataResponse
<
List
<
ProductModels
>>>
getProductByCategory
(
int
id
){
public
LiveData
<
DataResponse
<
List
<
ProductModels
>>>
getProductByCategory
(
int
id
)
{
getDataProductByCategory
(
id
);
return
productByCategory
;
}
public
LiveData
<
DataResponse
<
List
<
PaymentsModels
<
String
>>>>
getAllTransactions
(){
public
LiveData
<
DataResponse
<
List
<
PaymentsModels
<
String
>>>>
getAllTransactions
()
{
getDataTransaction
();
return
transactions
;
}
...
...
@@ -74,27 +76,27 @@ public class MainViewModels extends ViewModel {
categoryServise
.
addCategory
(
categoryModels
).
enqueue
(
new
Callback
<
DataResponse
<
CategoryModels
>>()
{
@Override
public
void
onResponse
(
Call
<
DataResponse
<
CategoryModels
>>
call
,
Response
<
DataResponse
<
CategoryModels
>>
response
)
{
Log
.
i
(
"Add Categiry"
,
"onResponse: "
+
utils
.
convertGson
(
response
.
body
()));
Log
.
i
(
"Add Categiry"
,
"onResponse: "
+
utils
.
convertGson
(
response
.
body
()));
}
@Override
public
void
onFailure
(
Call
<
DataResponse
<
CategoryModels
>>
call
,
Throwable
t
)
{
Log
.
e
(
"error add"
,
"onFailure: "
,
t
);
Log
.
e
(
"error add"
,
"onFailure: "
,
t
);
}
});
}
public
void
deleteProducts
(
int
id
){
public
void
deleteProducts
(
int
id
)
{
ProductService
productService
=
client
.
Client
(
ProductService
.
class
);
productService
.
deleteProducts
(
id
).
enqueue
(
new
Callback
<
DataResponse
<
ProductModels
>>()
{
@Override
public
void
onResponse
(
Call
<
DataResponse
<
ProductModels
>>
call
,
Response
<
DataResponse
<
ProductModels
>>
response
)
{
Log
.
i
(
"Delete"
,
"onResponse: "
+
utils
.
convertGson
(
response
.
body
()));
Log
.
i
(
"Delete"
,
"onResponse: "
+
utils
.
convertGson
(
response
.
body
()));
}
@Override
public
void
onFailure
(
Call
<
DataResponse
<
ProductModels
>>
call
,
Throwable
t
)
{
Log
.
e
(
"error delete"
,
"onFailure: "
,
t
);
Log
.
e
(
"error delete"
,
"onFailure: "
,
t
);
}
});
}
...
...
@@ -106,17 +108,17 @@ public class MainViewModels extends ViewModel {
@Override
public
void
onResponse
(
Call
<
DataResponse
<
List
<
PaymentsModels
<
String
>>>>
call
,
Response
<
DataResponse
<
List
<
PaymentsModels
<
String
>>>>
response
)
{
Log
.
i
(
"Get all transaction"
,
"onResponse: "
+
utils
.
convertGson
(
response
.
body
()));
if
(
response
.
body
()
!=
null
){
Log
.
i
(
"Get all transaction"
,
"onResponse: "
+
utils
.
convertGson
(
response
.
body
()));
if
(
response
.
body
()
!=
null
)
{
transactions
.
setValue
(
response
.
body
());
}
else
{
}
else
{
transactions
=
null
;
}
}
@Override
public
void
onFailure
(
Call
<
DataResponse
<
List
<
PaymentsModels
<
String
>>>>
call
,
Throwable
t
)
{
Log
.
e
(
"Error get transaction"
,
"onFailure: "
,
t
);
Log
.
e
(
"Error get transaction"
,
"onFailure: "
,
t
);
transactions
=
null
;
}
});
...
...
@@ -130,8 +132,8 @@ public class MainViewModels extends ViewModel {
public
void
onResponse
(
Call
<
DataResponse
<
List
<
ProductModels
>>>
call
,
Response
<
DataResponse
<
List
<
ProductModels
>>>
response
)
{
String
js
=
new
Gson
().
toJson
(
response
.
body
());
Log
.
i
(
"Get data by category"
,
"onResponse: "
+
js
);
if
(
response
!=
null
){
Log
.
i
(
"Get data by category"
,
"onResponse: "
+
js
);
if
(
response
!=
null
)
{
productByCategory
.
setValue
(
response
.
body
());
}
}
...
...
@@ -143,28 +145,53 @@ public class MainViewModels extends ViewModel {
});
}
public
MutableLiveData
<
DataResponse
<
UsersModels
>>
checkLogin
(
UsersModels
usersModels
){
public
MutableLiveData
<
DataResponse
<
UsersModels
>>
checkLogin
(
UsersModels
usersModels
)
{
usersLogin
=
new
MutableLiveData
<>();
PeriksaLogin
(
usersModels
);
return
usersLogin
;
}
public
MutableLiveData
<
DataResponse
<
UsersModels
>>
checkRegis
(
UsersModels
usersModels
){
usersRegister
=
new
MutableLiveData
<>();
CreateRegister
(
usersModels
);
return
usersRegister
;
}
private
void
PeriksaLogin
(
UsersModels
usersModels
)
{
UsersService
usersService
=
client
.
Client
(
UsersService
.
class
);
//cek login
usersService
.
checkLogin
(
usersModels
).
enqueue
(
new
Callback
<
DataResponse
<
UsersModels
>>()
{
@Override
public
void
onResponse
(
Call
<
DataResponse
<
UsersModels
>>
call
,
Response
<
DataResponse
<
UsersModels
>>
response
)
{
if
(
response
.
body
()
!=
null
){
if
(
response
.
body
()
!=
null
)
{
usersLogin
.
setValue
(
response
.
body
());
}
String
js
=
new
Gson
().
toJson
(
response
.
body
());
Log
.
d
(
"Periksa login"
,
"Response "
+
js
);
Log
.
d
(
"Periksa login"
,
"Response "
+
js
);
}
@Override
public
void
onFailure
(
Call
<
DataResponse
<
UsersModels
>>
call
,
Throwable
t
)
{
Log
.
e
(
"Error Login"
,
"Response "
+
t
.
getMessage
());
}
});
}
private
void
CreateRegister
(
UsersModels
usersModels
){
UsersService
usersService
=
client
.
Client
(
UsersService
.
class
);
//post register
usersService
.
postRegister
(
usersModels
).
enqueue
(
new
Callback
<
DataResponse
<
UsersModels
>>()
{
@Override
public
void
onResponse
(
Call
<
DataResponse
<
UsersModels
>>
call
,
Response
<
DataResponse
<
UsersModels
>>
response
)
{
}
@Override
public
void
onFailure
(
Call
<
DataResponse
<
UsersModels
>>
call
,
Throwable
t
)
{
Log
.
e
(
"Error
Login"
,
"Response
"
+
t
.
getMessage
());
Log
.
e
(
"Error
Register"
,
"Response
"
+
t
.
getMessage
());
}
});
}
...
...
@@ -176,40 +203,40 @@ public class MainViewModels extends ViewModel {
productService
.
getProducts
().
enqueue
(
new
Callback
<
DataResponse
<
List
<
ProductModels
<
CategoryModels
>>>>()
{
@Override
public
void
onResponse
(
Call
<
DataResponse
<
List
<
ProductModels
<
CategoryModels
>>>>
call
,
Response
<
DataResponse
<
List
<
ProductModels
<
CategoryModels
>>>>
response
)
{
Log
.
i
(
"Get products"
,
"onResponse: "
+
utils
.
convertGson
(
response
.
body
()));
if
(
response
.
body
()
!=
null
){
Log
.
i
(
"Get products"
,
"onResponse: "
+
utils
.
convertGson
(
response
.
body
()));
if
(
response
.
body
()
!=
null
)
{
productList
.
setValue
(
response
.
body
());
}
else
{
}
else
{
productList
.
setValue
(
null
);
}
}
@Override
public
void
onFailure
(
Call
<
DataResponse
<
List
<
ProductModels
<
CategoryModels
>>>>
call
,
Throwable
t
)
{
Log
.
e
(
"Error get product"
,
"Response "
+
t
.
getMessage
());
Log
.
e
(
"Error get product"
,
"Response "
+
t
.
getMessage
());
}
});
}
private
void
getCategoryList
(){
private
void
getCategoryList
()
{
CategoryServise
categoryServise
=
client
.
Client
(
CategoryServise
.
class
);
categoryServise
.
getCategory
().
enqueue
(
new
Callback
<
DataResponse
<
List
<
CategoryModels
>>>()
{
@Override
public
void
onResponse
(
Call
<
DataResponse
<
List
<
CategoryModels
>>>
call
,
Response
<
DataResponse
<
List
<
CategoryModels
>>>
response
)
{
String
js
=
new
Gson
().
toJson
(
response
.
body
());
Log
.
d
(
"Get Data Category"
,
"Response "
+
js
);
if
(
response
.
body
()
!=
null
){
Log
.
d
(
"Get Data Category"
,
"Response "
+
js
);
if
(
response
.
body
()
!=
null
)
{
categoryList
.
setValue
(
response
.
body
());
}
else
{
}
else
{
categoryList
.
setValue
(
null
);
}
}
@Override
public
void
onFailure
(
Call
<
DataResponse
<
List
<
CategoryModels
>>>
call
,
Throwable
t
)
{
Log
.
e
(
"Error get product"
,
"Response "
+
t
.
getMessage
());
Log
.
e
(
"Error get product"
,
"Response "
+
t
.
getMessage
());
}
});
}
...
...
app/src/main/java/com/yono/messeripos/models/UsersModels.java
View file @
5b669715
...
...
@@ -6,14 +6,31 @@ public class UsersModels {
@SerializedName
(
"username"
)
private
String
usernameUsers
;
@SerializedName
(
"email"
)
private
String
emailUsers
;
@SerializedName
(
"password"
)
private
String
passwordUsers
;
public
UsersModels
(
String
usernameUsers
,
String
passwordUsers
)
{
public
UsersModels
(
String
usernameUsers
,
String
passwordUsers
)
{
this
.
usernameUsers
=
usernameUsers
;
this
.
passwordUsers
=
passwordUsers
;
}
public
UsersModels
(
String
usernameUsers
,
String
emailUsers
,
String
passwordUsers
)
{
this
.
usernameUsers
=
usernameUsers
;
this
.
emailUsers
=
emailUsers
;
this
.
passwordUsers
=
passwordUsers
;
}
public
String
getEmailUsers
()
{
return
emailUsers
;
}
public
void
setEmailUsers
(
String
emailUsers
)
{
this
.
emailUsers
=
emailUsers
;
}
public
String
getUsernameUsers
()
{
return
usernameUsers
;
}
...
...
app/src/main/res/drawable/cash_logo.png
0 → 100644
View file @
5b669715
61.5 KB
app/src/main/res/drawable/nfc_icon.png
0 → 100644
View file @
5b669715
4.58 KB
app/src/main/res/layout/dashboard_login.xml
View file @
5b669715
<?xml version="1.0" encoding="utf-8"?>
<!--<androidx.coordinatorlayout.widget.CoordinatorLayout android:layout_width="match_parent"-->
<!-- android:layout_height="match_parent"-->
<!-- xmlns:app="http://schemas.android.com/apk/res-auto"-->
<!-- xmlns:tools="http://schemas.android.com/tools"-->
<!-- android:background="@drawable/gradient"-->
<!-- xmlns:android="http://schemas.android.com/apk/res/android"-->
<!-- tools:context=".LoginActivity">-->
<layout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
...
...
@@ -46,12 +38,11 @@
app:strokeColor=
"#fff"
android:text=
"sign up"
android:textStyle=
"bold"
android:textColor=
"
@color/colorWhite
"
android:textColor=
"
#fff
"
app:strokeWidth=
"2dp"
app:rippleColor=
"@color/colorWhite"
android:padding=
"20dp"
app:cornerRadius=
"5dp"
android:background=
"@color/colorPrimaryCenter"
android:layout_above=
"@id/signInButtonDashboardLogin"
android:layout_marginBottom=
"10dp"
/>
...
...
app/src/main/res/layout/expansion_header_layout.xml
0 → 100644
View file @
5b669715
<RelativeLayout
android:layout_height=
"wrap_content"
android:layout_width=
"match_parent"
android:orientation=
"vertical"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:android=
"http://schemas.android.com/apk/res/android"
>
<com.github.florent37.expansionpanel.ExpansionHeader
android:layout_height=
"wrap_content"
android:layout_width=
"match_parent"
android:id=
"@+id/sampleHeader"
app:expansion_headerIndicator=
"@id/headerIndicator"
app:expansion_layout=
"@id/expansionLayout"
app:expansion_toggleOnClick=
"true"
>
<RelativeLayout
android:background=
"@android:color/white"
android:layout_height=
"48dp"
android:layout_width=
"match_parent"
android:paddingLeft=
"16dp"
android:paddingRight=
"16dp"
>
<TextView
android:layout_centerVertical=
"true"
android:layout_height=
"wrap_content"
android:layout_width=
"wrap_content"
android:text=
"Trip name"
android:textColor=
"#3E3E3E"
/>
<TextView
android:layout_centerVertical=
"true"
android:layout_height=
"wrap_content"
android:layout_marginLeft=
"120dp"
android:layout_width=
"wrap_content"
android:text=
"Carribean cruise"
android:textColor=
"#AAA"
/>
<androidx.appcompat.widget.AppCompatImageView
android:adjustViewBounds=
"true"
android:id=
"@+id/headerIndicator"
android:layout_alignParentRight=
"true"
android:layout_centerVertical=
"true"
android:layout_height=
"wrap_content"
android:layout_marginLeft=
"16dp"
android:layout_width=
"wrap_content"
app:srcCompat=
"@drawable/ic_expansion_header_indicator_grey_24dp"
/>
</RelativeLayout>
</com.github.florent37.expansionpanel.ExpansionHeader>
<com.github.florent37.expansionpanel.ExpansionLayout
android:id=
"@+id/expansionLayout"
app:expansion_expanded=
"false"
android:layout_height=
"wrap_content"
android:layout_width=
"match_parent"
>
<androidx.constraintlayout.widget.ConstraintLayout
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:clickable=
"true"
android:focusable=
"true"
android:checkable=
"true"
android:layout_height=
"wrap_content"
android:layout_width=
"match_parent"
app:layout_constraintTop_toTopOf=
"parent"
app:strokeWidth=
"1dp"
app:strokeColor=
"@color/color_stroke"
>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:padding=
"15dp"
>
<ImageView
android:id=
"@+id/ivLogo"
android:layout_width=
"120dp"
android:layout_height=
"0dp"
android:src=
"@drawable/ic_bni_logo"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
app:layout_constraintBottom_toBottomOf=
"parent"
/>
<RadioButton
android:id=
"@+id/rbPayment"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:buttonTint=
"@color/colorPrimary"
android:enabled=
"false"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
app:layout_constraintBottom_toBottomOf=
"parent"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
</com.google.android.material.card.MaterialCardView>
</androidx.constraintlayout.widget.ConstraintLayout>
</com.github.florent37.expansionpanel.ExpansionLayout>
</RelativeLayout>
\ No newline at end of file
app/src/main/res/layout/login_form.xml
View file @
5b669715
<?xml version="1.0" encoding="utf-8"?>
<!--<androidx.constraintlayout.widget.ConstraintLayout-->
<!-- android:id="@+id/ConstraintLoginLayout"-->
<!-- xmlns:android="http://schemas.android.com/apk/res/android"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="match_parent"-->
<!-- xmlns:app="http://schemas.android.com/apk/res-auto"-->
<!-- android:orientation="vertical"-->
<!-- android:layout_gravity="bottom"-->
<!-- app:behavior_hideable="false"-->
<!-- android:padding="20dp"-->
<!-- style="@style/Widget.Rounded.BottomSheet"-->
<!-- app:behavior_peekHeight="0dp"-->
<!-- android:background="@color/colorWhite"-->
<!-- app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior">-->
<layout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
>
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
>
<RelativeLayout
android:id=
"@+id/LoginLayout"
android:padding=
"20dp"
style=
"@style/Widget.Rounded.BottomSheet"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
>
android:layout_height=
"match_parent"
android:padding=
"20dp"
>
<ImageButton
android:id=
"@+id/closeBtnLogin"
android:layout_width=
"20dp"
android:layout_height=
"20dp"
android:
src=
"@drawable/ic_baseline_plus_24
"
android:
scaleType=
"centerInsid
e"
android:
layout_alignParentStart=
"true
"
android:
layout_alignParentTop=
"tru
e"
android:adjustViewBounds=
"true"
android:padding=
"20dp"
android:backgroundTint=
"@android:color/transparent"
android:
layout_alignParentTop=
"true
"
android:
layout_alignParentStart=
"tru
e"
/>
android:
padding=
"20dp
"
android:
scaleType=
"centerInsid
e"
android:src=
"@drawable/ic_close"
/>
<ImageView
android:id=
"@+id/messerLogoInLogin"
android:layout_width=
"150dp"
android:layout_height=
"150dp"
android:src=
"@drawable/ic_messer_primary"
android:layout_below=
"@id/closeBtnLogin"
android:layout_centerHorizontal=
"true"
android:layout_marginTop=
"20dp"
/>
android:layout_marginTop=
"20dp"
android:src=
"@drawable/ic_messer_primary"
/>
<com.google.android.material.textview.MaterialTextView
android:id=
"@+id/tvLogin"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_below=
"@id/messerLogoInLogin"
android:paddingLeft=
"12dp"
android:text=
"Login Your Account"
android:textColor=
"@color/colorPrimary"
android:textFontWeight=
"600"
android:textSize=
"16sp"
/>
<com.google.android.material.textfield.TextInputLayout
android:id=
"@+id/formUsernameLogin"
style=
"@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:hint=
"@string/username"
android:layout_below=
"@id/messerLogoInLogin"
style=
"@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
>
android:layout_below=
"@id/tvLogin"
android:hint=
"@string/username"
>
<com.google.android.material.textfield.TextInputEditText
android:id=
"@+id/ETUsernameLogin"
android:layout_width=
"match_parent"
android:inputType=
"text"
android:imeOptions=
"actionNext"
android:layout_height=
"wrap_content"
/>
android:imeOptions=
"actionNext"
android:inputType=
"text"
/>
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id=
"@+id/FormPasswordLogin"
style=
"@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:hint=
"@string/password"
android:layout_below=
"@id/formUsernameLogin"
android:layout_marginTop=
"20dp"
style=
"@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox
"
>
android:hint=
"@string/password
"
>
<com.google.android.material.textfield.TextInputEditText
android:id=
"@+id/ETPasswordLogin"
android:layout_width=
"match_parent"
android:inputType=
"textPassword"
android:imeOptions=
"actionDone|actionGo"
android:layout_height=
"wrap_content"
/>
android:imeOptions=
"actionDone|actionGo"
android:inputType=
"textPassword"
/>
</com.google.android.material.textfield.TextInputLayout>
...
...
@@ -92,26 +85,49 @@
android:id=
"@+id/CBRememberMe"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"Remember Me"
android:textColor=
"@color/colorPrimary"
android:layout_below=
"@id/FormPasswordLogin"
android:layout_marginVertical=
"10dp"
app:useMaterialThemeColors=
"true"
/>
android:text=
"Remember Me"
android:textColor=
"@color/colorPrimary"
app:useMaterialThemeColors=
"true"
/>
<androidx.constraintlayout.widget.ConstraintLayout
android:id=
"@+id/constraintBtn"
android:layout_below=
"@id/CBRememberMe"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
>
<com.google.android.material.button.MaterialButton
android:id=
"@+id/SignInButtonInLogin"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
app:layout_constraintTop_toBottomOf=
"@id/CBRememberMe"
android:text=
"Sign In"
android:layout_below=
"@id/CBRememberMe"
android:padding=
"20dp"
/>
android:text=
"Sign in"
android:padding=
"20dp"
app:layout_constraintTop_toTopOf=
"parent"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
/>
<ProgressBar
android:id=
"@+id/progressLogin"
style=
"?android:attr/progressBarStyle"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:elevation=
"2dp"
app:layout_constraintBottom_toBottomOf=
"@id/SignInButtonInLogin"
app:layout_constraintTop_toTopOf=
"@id/SignInButtonInLogin"
app:layout_constraintStart_toStartOf=
"@id/SignInButtonInLogin"
app:layout_constraintEnd_toEndOf=
"@id/SignInButtonInLogin"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
<com.google.android.material.textview.MaterialTextView
android:id=
"@+id/forgotPwd"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"Forgot Password?"
android:layout_below=
"@id/SignInButtonInLogi
n"
android:layout_below=
"@id/constraintBt
n"
android:layout_marginTop=
"10dp"
android:layout_alignParentEnd=
"true"
android:textColor=
"@color/colorPrimary"
/>
...
...
app/src/main/res/layout/payment_method.xml
0 → 100644
View file @
5b669715
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_height=
"match_parent"
android:layout_width=
"match_parent"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
android:layout_marginVertical=
"2dp"
xmlns:android=
"http://schemas.android.com/apk/res/android"
>
<com.google.android.material.card.MaterialCardView
android:id=
"@+id/cvPayment"
android:clickable=
"true"
android:focusable=
"true"
android:checkable=
"true"
android:layout_height=
"wrap_content"
android:layout_width=
"match_parent"
android:layout_alignParentTop=
"true"
app:strokeWidth=
"1dp"
app:strokeColor=
"@color/color_stroke"
>
<RelativeLayout
android:layout_width=
"match_parent"
android:layout_height=
"48dp"
>
<ImageView
android:id=
"@+id/ivLogo"
android:layout_width=
"150dp"
android:layout_height=
"wrap_content"
android:src=
"@drawable/cash_logo"
android:layout_alignParentStart=
"true"
/>
</RelativeLayout>
</com.google.android.material.card.MaterialCardView>
<include
android:id=
"@+id/bankPayment"
layout=
"@layout/expansion_header_layout"
android:layout_height=
"wrap_content"
android:layout_width=
"match_parent"
android:layout_below=
"@id/cvPayment"
/>
<com.google.android.material.card.MaterialCardView
android:id=
"@+id/cvNFC"
android:clickable=
"true"
android:focusable=
"true"
android:checkable=
"true"
android:layout_height=
"wrap_content"
android:layout_width=
"match_parent"
android:layout_below=
"@id/bankPayment"
app:strokeWidth=
"1dp"
app:strokeColor=
"@color/color_stroke"
>
<RelativeLayout
android:layout_width=
"match_parent"
android:layout_height=
"48dp"
android:padding=
"5dp"
>
<ImageView
android:id=
"@+id/nfcLogo"
android:layout_width=
"50dp"
android:layout_height=
"wrap_content"
android:src=
"@drawable/nfc_icon"
android:layout_alignParentTop=
"true"
android:layout_alignParentBottom=
"true"
android:layout_alignParentStart=
"true"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"NFC Payment"
android:textSize=
"20dp"
android:textColor=
"#F7686868"
android:fontFamily=
"@font/poppins_medium"
android:layout_toEndOf=
"@id/nfcLogo"
android:layout_centerVertical=
"true"
/>
</RelativeLayout>
</com.google.android.material.card.MaterialCardView>
</RelativeLayout>
\ No newline at end of file
app/src/main/res/layout/register_form.xml
View file @
5b669715
This diff is collapsed.
Click to expand it.
app/src/main/res/values/strings.xml
View file @
5b669715
...
...
@@ -29,6 +29,7 @@
<string
name=
"open_cart"
>
Open Cart
</string>
<string
name=
"text_new_category"
>
Add New Category
</string>
<string
name=
"email"
>
Email
</string>
<string
name=
"password_Confirmation"
>
Password Confirmation
</string>
<string-array
name=
"planets_array"
>
<item>
Mercury
</item>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment