Commit c9f33120 authored by Ahmad Abi Mulya's avatar Ahmad Abi Mulya

buat template alert dialog

parent f7507423
package com.example.yourcashiertest.activities;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.util.Log;
import android.text.TextUtils;
import java.net.InetAddress;
import java.net.UnknownHostException;
public class InetChecker{
public boolean isNetworkConnected(Context context) {
ConnectivityManager cm = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
return cm.getActiveNetworkInfo() != null && cm.getActiveNetworkInfo().isConnected();
// try {
// InetAddress address = InetAddress.getByName("www.google.com");
// return !TextUtils.isEmpty(address.toString());
// } catch (Exception e) {
// e.printStackTrace();
// return false;
// }
}
}
......@@ -4,10 +4,14 @@ import androidx.appcompat.app.AppCompatActivity;
import androidx.databinding.DataBindingUtil;
import androidx.lifecycle.ViewModelProvider;
import android.app.AlertDialog;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Toast;
......@@ -18,11 +22,14 @@ import com.example.yourcashiertest.models.Data;
import com.example.yourcashiertest.models.Login;
import com.example.yourcashiertest.models.ResponseLogin;
import com.example.yourcashiertest.services.UserService;
import com.example.yourcashiertest.utils.ViewUtil;
import com.example.yourcashiertest.viewmodels.UserViewModel;
import com.google.gson.Gson;
import java.io.IOException;
import javax.security.auth.login.LoginException;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
......@@ -32,7 +39,7 @@ public class LoginActivity extends AppCompatActivity {
private PrefManager prefManager;
UserViewModel viewModel;
InetChecker network = new InetChecker();
ViewUtil utils;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
......@@ -50,8 +57,8 @@ public class LoginActivity extends AppCompatActivity {
Toast.makeText(getApplicationContext(), "Please input Username and Password", Toast.LENGTH_SHORT).show();
} else {
Log.d("network", ""+network.isNetworkConnected(getApplicationContext()));
if(!network.isNetworkConnected(getApplicationContext())) {
Toast.makeText(getApplicationContext(), "Please connect your device to Internet!", Toast.LENGTH_SHORT).show();
if (!network.isNetworkConnected(getApplicationContext())) {
Toast.makeText(getApplicationContext(), "Please connect your device to Internet", Toast.LENGTH_SHORT).show();
}else{
binding.setLoading(true);
launchMain();
......@@ -93,7 +100,10 @@ public class LoginActivity extends AppCompatActivity {
errorJson = response.errorBody().string();
Log.d("response", "" + errorJson);
ResponseLogin responseLogin = new Gson().fromJson(errorJson, ResponseLogin.class);
Toast.makeText(getApplicationContext(), responseLogin.getMessages(), Toast.LENGTH_LONG).show();
final View customLayout = getLayoutInflater()
.inflate(R.layout.alert_dialog, null);
loginFailed(customLayout, responseLogin.getMessages());
// Toast.makeText(getApplicationContext(), responseLogin.getMessages(), Toast.LENGTH_LONG).show();
} catch (IOException e) {
e.printStackTrace();
......@@ -104,6 +114,8 @@ public class LoginActivity extends AppCompatActivity {
@Override
public void onFailure(Call<ResponseLogin> call, Throwable t) {
t.printStackTrace();
binding.setLoading(false);
Toast.makeText(getApplicationContext(), "Connection Time Out", Toast.LENGTH_LONG).show();
}
});
}
......@@ -113,4 +125,24 @@ public class LoginActivity extends AppCompatActivity {
startActivity(new Intent(LoginActivity.this, MainActivity.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));
finish();
}
public void loginFailed(View customLayout, String message){
utils = new ViewUtil(customLayout);
utils.dialog(LoginActivity.this, false, customLayout, "ERROR",
message,
"Close")
.show();
utils.setListener(new ViewUtil.DialogListener() {
@Override
public void onClickDisimiss(AlertDialog alertDialog) {
alertDialog.dismiss();
}
@Override
public void onClickLink(AlertDialog alertDialog) {
}
});
}
}
\ No newline at end of file
......@@ -4,6 +4,8 @@ import androidx.appcompat.app.AppCompatActivity;
import androidx.databinding.DataBindingUtil;
import androidx.lifecycle.ViewModelProvider;
import android.app.AlertDialog;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
......@@ -14,6 +16,7 @@ import android.widget.Toast;
import com.example.yourcashiertest.R;
import com.example.yourcashiertest.databinding.ActivityRegisterBinding;
import com.example.yourcashiertest.models.User;
import com.example.yourcashiertest.utils.ViewUtil;
import com.example.yourcashiertest.viewmodels.UserViewModel;
public class RegisterActivity extends AppCompatActivity {
......@@ -23,7 +26,7 @@ public class RegisterActivity extends AppCompatActivity {
ActivityRegisterBinding binding;
User user;
UserViewModel viewModel;
ViewUtil utils;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
......@@ -46,8 +49,9 @@ public class RegisterActivity extends AppCompatActivity {
user.setPassword(binding.etPassword.getText().toString());
user.setPhoneNumber(binding.etPhoneNumber.getText().toString());
viewModel.registrasi(user);
startActivity(new Intent(getApplicationContext(), LoginActivity.class));
finish();
// startActivity(new Intent(getApplicationContext(), LoginActivity.class));
// finish();
}
});
}
......
package com.example.yourcashiertest.utils;
import android.app.AlertDialog;
import android.content.Context;
import android.view.View;
import android.widget.TextView;
import androidx.annotation.Nullable;
import androidx.cardview.widget.CardView;
import com.example.yourcashiertest.R;
import com.google.android.material.snackbar.Snackbar;
public class ViewUtil {
public ViewUtil(){};
public ViewUtil(View v){};
public static void showMessage(View view, String message) {
Snackbar.make(view, message, Snackbar.LENGTH_LONG).show();
}
public interface DialogListener {
void onClickDisimiss(AlertDialog alertDialog);
void onClickLink(AlertDialog alertDialog);
}
private DialogListener listener;
public void setListener(DialogListener listener) {
this.listener = listener;
}
public AlertDialog dialog(Context context,
Boolean cancelable,
View view,
@Nullable String titles,
@Nullable String messages,
@Nullable String dismiss,
@Nullable String link) {
/**
* Button1 untuk dismiss
* Button2 untuk link
*/
TextView title = view.findViewById(R.id.alertTitles);
TextView message = view.findViewById(R.id.alertBody);
TextView button = view.findViewById(R.id.tvTextBtn);
TextView button2 = view.findViewById(R.id.tvTextBtn2);
CardView btnCard = view.findViewById(R.id.cvAlertOnClick);
CardView btnCard2 = view.findViewById(R.id.cvAlertOnClick2);
// set title and message
title.setText(titles);
message.setText(messages);
btnCard.setVisibility(View.VISIBLE);
button.setText(link);
btnCard2.setVisibility(View.VISIBLE);
button2.setText(dismiss);
AlertDialog.Builder builder = new AlertDialog.Builder(context)
.setCancelable(cancelable)
.setView(view);
AlertDialog dialog = builder.create();
btnCard.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
listener.onClickLink(dialog);
}
});
btnCard2.setOnClickListener(view1 -> listener.onClickDisimiss(dialog));
return dialog;
}
public AlertDialog dialog(Context context,
Boolean cancelable,
View view,
@Nullable String titles,
@Nullable String messages,
@Nullable String dismiss) {
/**
* Button1 untuk dismiss
* Button2 untuk link
*/
TextView title = view.findViewById(R.id.alertTitles);
TextView message = view.findViewById(R.id.alertBody);
TextView button2 = view.findViewById(R.id.tvTextBtn2);
CardView btnCard2 = view.findViewById(R.id.cvAlertOnClick2);
// set title and message
title.setText(titles);
message.setText(messages);
btnCard2.setVisibility(View.VISIBLE);
button2.setText(dismiss);
AlertDialog.Builder builder = new AlertDialog.Builder(context)
.setCancelable(cancelable)
.setView(view);
AlertDialog dialog = builder.create();
btnCard2.setOnClickListener(view1 -> listener.onClickDisimiss(dialog));
return dialog;
}
}
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout android:layout_height="wrap_content"
android:layout_width="match_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<com.google.android.material.card.MaterialCardView
android:id="@+id/cvAlertDialog"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardElevation="0dp"
app:cardBackgroundColor="@android:color/transparent"
android:layout_marginVertical="10dp"
android:layout_marginHorizontal="20dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toTopOf="@id/cvAlertDialog"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/alertTitles"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@android:string/dialog_alert_title"
android:textSize="18sp"
android:textStyle="bold"
android:layout_marginBottom="10dp"
android:layout_gravity="center"/>
<TextView
android:id="@+id/alertBody"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Your username or password wrong"
android:textSize="18sp"
android:gravity="center"
android:layout_gravity="center"/>
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintTop_toBottomOf="@id/cvAlertDialog">
<com.google.android.material.card.MaterialCardView
android:id="@+id/cvAlertOnClick"
app:cardCornerRadius="0dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone"
android:clickable="true"
android:focusable="true">
<View
android:id="@+id/divider"
android:layout_marginTop="10dp"
android:layout_width="match_parent"
android:layout_height="1dp"
style="@style/Divider.Horizontal"/>
<com.google.android.material.textview.MaterialTextView
android:id="@+id/tvTextBtn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Coba Lagi"
android:textSize="18sp"
android:textColor="#3949AB"
android:textFontWeight="600"
android:paddingVertical="15dp"
android:gravity="center"/>
</com.google.android.material.card.MaterialCardView>
<com.google.android.material.card.MaterialCardView
android:id="@+id/cvAlertOnClick2"
app:cardCornerRadius="0dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clickable="true"
android:visibility="gone"
android:focusable="true">
<View
android:id="@+id/divider2"
android:layout_width="match_parent"
android:layout_height="1dp"
style="@style/Divider.Horizontal"/>
<com.google.android.material.textview.MaterialTextView
android:id="@+id/tvTextBtn2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Coba Lagi"
android:textSize="18sp"
android:textFontWeight="600"
android:paddingVertical="15dp"
android:gravity="center"/>
</com.google.android.material.card.MaterialCardView>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
......@@ -125,5 +125,17 @@
<style name="AppTheme.RoundedCornerMaterialButton" parent="Widget.AppCompat.Button.Colored">
<item name="android:background">@drawable/rounded_shape</item>
</style>
<style name="Divider">
<item name="android:background">#36333333</item> //you can give your color here. that will change all divider color in your app.
</style>
<style name="Divider.Horizontal" parent="Divider">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">1dp</item> // You can change thickness here.
</style>
<style name="Divider.Vertical" parent="Divider">
<item name="android:layout_width">1dp</item>
<item name="android:layout_height">match_parent</item>
</style>
</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