Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // CreateTaskBottomSheetFragment.java
- // Note that the dialog that I want to create is inside an fragment
- package com.learn.simplify.activities;
- import android.annotation.SuppressLint;
- import android.app.DatePickerDialog;
- import android.app.Dialog;
- import android.app.TimePickerDialog;
- import android.os.AsyncTask;
- import android.os.Build;
- import android.view.MotionEvent;
- import android.view.View;
- import android.widget.Button;
- import android.widget.EditText;
- import android.widget.Toast;
- import androidx.annotation.NonNull;
- import androidx.annotation.RequiresApi;
- import com.google.android.material.bottomsheet.BottomSheetBehavior;
- import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
- import com.learn.simplify.R;
- import com.learn.simplify.database.DatabaseClient;
- import com.learn.simplify.model.Task;
- import com.learn.simplify.ui.home.HomeFragment4;
- import java.util.Calendar;
- import java.util.GregorianCalendar;
- public class CreateTaskBottomSheetFragment extends BottomSheetDialogFragment {
- EditText addTaskTitle;
- EditText addTaskDescription;
- EditText taskDate;
- EditText taskTime;
- Button addTask;
- int taskId;
- boolean isEdit;
- Task task;
- int mYear, mMonth, mDay;
- int mHour, mMinute;
- setRefreshListener setRefreshListener;
- TimePickerDialog timePickerDialog;
- DatePickerDialog datePickerDialog;
- Home activity;
- public static int count = 0;
- private BottomSheetBehavior.BottomSheetCallback mBottomSheetBehaviorCallback = new BottomSheetBehavior.BottomSheetCallback() {
- @Override
- public void onStateChanged(@NonNull View bottomSheet, int newState) {
- if (newState == BottomSheetBehavior.STATE_HIDDEN) {
- dismiss();
- }
- }
- @Override
- public void onSlide(@NonNull View bottomSheet, float slideOffset) {
- }
- };
- public void setTaskId(int taskId, boolean isEdit, HomeFragment4 setRefreshListener, Home activity) {
- this.taskId = taskId;
- this.isEdit = isEdit;
- this.activity = activity;
- this.setRefreshListener = (CreateTaskBottomSheetFragment.setRefreshListener) setRefreshListener;
- }
- @RequiresApi(api = Build.VERSION_CODES.O)
- @SuppressLint({"RestrictedApi", "ClickableViewAccessibility"})
- @Override
- public void setupDialog(Dialog dialog, int style) {
- super.setupDialog(dialog, style);
- View contentView = View.inflate(getContext(), R.layout.fragment_create_task, null);
- addTask = contentView.findViewById(R.id.buttonAdd);
- taskTime = contentView.findViewById(R.id.taskTime);
- taskDate = contentView.findViewById(R.id.taskDate);
- addTaskDescription = contentView.findViewById(R.id.inputTaskDescription);
- addTaskTitle = contentView.findViewById(R.id.inputTaskTitle);
- dialog.setContentView(contentView);
- addTask.setOnClickListener(view -> {
- if(validateFields())createTask();
- });
- if (isEdit) {
- showTaskFromId();
- }
- taskDate.setOnTouchListener((view, motionEvent) -> {
- if(motionEvent.getAction() == MotionEvent.ACTION_UP) {
- final Calendar c = Calendar.getInstance();
- mYear = c.get(Calendar.YEAR);
- mMonth = c.get(Calendar.MONTH);
- mDay = c.get(Calendar.DAY_OF_MONTH);
- datePickerDialog = new DatePickerDialog(getActivity(), R.style.DatePickerDark,(view1, year, monthOfYear, dayOfMonth) -> {
- taskDate.setText(dayOfMonth + "-" + (monthOfYear + 1) + "-" + year);
- datePickerDialog.dismiss();
- }, mYear, mMonth, mDay);
- datePickerDialog.getDatePicker().setMinDate(System.currentTimeMillis() - 1000);
- datePickerDialog.show();
- }
- return true;
- });
- taskTime.setOnTouchListener((view, motionEvent) -> {
- if(motionEvent.getAction() == MotionEvent.ACTION_UP) {
- // Get Current Time
- final Calendar c = Calendar.getInstance();
- mHour = c.get(Calendar.HOUR_OF_DAY);
- mMinute = c.get(Calendar.MINUTE);
- // Launch Time Picker Dialog
- timePickerDialog = new TimePickerDialog(getActivity(), R.style.TimePickerDark, (view12, hourOfDay, minute) -> {
- taskTime.setText(hourOfDay + ":" + minute);
- timePickerDialog.dismiss();
- }, mHour, mMinute, false);
- timePickerDialog.show();
- }
- return true;
- });
- }
- public boolean validateFields() {
- if(addTaskTitle.getText().toString().equalsIgnoreCase("")) {
- Toast.makeText(activity, "Please enter a valid title", Toast.LENGTH_SHORT).show();
- return false;
- }
- else if(addTaskDescription.getText().toString().equalsIgnoreCase("")) {
- Toast.makeText(activity, "Please enter a valid description", Toast.LENGTH_SHORT).show();
- return false;
- }
- else if(taskDate.getText().toString().equalsIgnoreCase("")) {
- Toast.makeText(activity, "Please enter date", Toast.LENGTH_SHORT).show();
- return false;
- }
- else if(taskTime.getText().toString().equalsIgnoreCase("")) {
- Toast.makeText(activity, "Please enter time", Toast.LENGTH_SHORT).show();
- return false;
- }
- else {
- return true;
- }
- }
- @Override
- public void onDestroyView() {
- super.onDestroyView();
- }
- private void createTask() {
- class saveTaskInBackend extends AsyncTask<Void, Void, Void> {
- @SuppressLint("WrongThread")
- @Override
- protected Void doInBackground(Void... voids) {
- Task createTask = new Task();
- createTask.setTaskTitle(addTaskTitle.getText().toString());
- createTask.setTaskDescrption(addTaskDescription.getText().toString());
- createTask.setDate(taskDate.getText().toString());
- createTask.setLastAlarm(taskTime.getText().toString());
- if (!isEdit)
- DatabaseClient.getInstance(getActivity()).getAppDatabase()
- .dataBaseAction()
- .insertDataIntoTaskList(createTask);
- else
- DatabaseClient.getInstance(getActivity()).getAppDatabase()
- .dataBaseAction()
- .updateAnExistingRow(taskId, addTaskTitle.getText().toString(),
- addTaskDescription.getText().toString(),
- taskDate.getText().toString(),
- taskTime.getText().toString());
- return null;
- }
- @Override
- protected void onPostExecute(Void aVoid) {
- super.onPostExecute(aVoid);
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
- createAnAlarm();
- }
- setRefreshListener.refresh();
- Toast.makeText(getActivity(), "Your event is been added", Toast.LENGTH_SHORT).show();
- dismiss();
- }
- }
- saveTaskInBackend st = new saveTaskInBackend();
- st.execute();
- }
- @RequiresApi(api = Build.VERSION_CODES.M)
- public void createAnAlarm() {
- try {
- String[] items1 = taskDate.getText().toString().split("-");
- String dd = items1[0];
- String month = items1[1];
- String year = items1[2];
- String[] itemTime = taskTime.getText().toString().split(":");
- String hour = itemTime[0];
- String min = itemTime[1];
- Calendar cur_cal = new GregorianCalendar();
- cur_cal.setTimeInMillis(System.currentTimeMillis());
- Calendar cal = new GregorianCalendar();
- cal.set(Calendar.HOUR_OF_DAY, Integer.parseInt(hour));
- cal.set(Calendar.MINUTE, Integer.parseInt(min));
- cal.set(Calendar.SECOND, 0);
- cal.set(Calendar.MILLISECOND, 0);
- cal.set(Calendar.DATE, Integer.parseInt(dd));
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- private void showTaskFromId() {
- class showTaskFromId extends AsyncTask<Void, Void, Void> {
- @SuppressLint("WrongThread")
- @Override
- protected Void doInBackground(Void... voids) {
- task = DatabaseClient.getInstance(getActivity()).getAppDatabase()
- .dataBaseAction().selectDataFromAnId(taskId);
- return null;
- }
- @Override
- protected void onPostExecute(Void aVoid) {
- super.onPostExecute(aVoid);
- setDataInUI();
- }
- }
- showTaskFromId st = new showTaskFromId();
- st.execute();
- }
- private void setDataInUI() {
- addTaskTitle.setText(task.getTaskTitle());
- addTaskDescription.setText(task.getTaskDescrption());
- taskDate.setText(task.getDate());
- taskTime.setText(task.getLastAlarm());
- }
- public interface setRefreshListener {
- void refresh();
- }
- }
- // style.xml
- <resources xmlns:tools="http://schemas.android.com/tools">
- <!-- Base application theme. -->
- <style name="Base.Theme.Simplify" parent="Theme.AppCompat.DayNight.NoActionBar">
- <item name="colorPrimary">@color/primary</item>
- <item name="android:windowBackground">@color/background</item>
- <item name="android:statusBarColor">@color/blur</item>
- </style>
- <style name="CustomInactiveBottomNavigationTextAppearance">
- <item name="android:textSize">@dimen/_8ssp</item>
- <item name="android:fontFamily">@font/circular_regular</item>
- </style>
- <style name="CustomActiveBottomNavigationTextAppearance">
- <item name="android:textSize">@dimen/_8ssp</item>
- <item name="android:fontFamily">@font/circular_regular</item>
- </style>
- <style name="SquareShapeOverlay">
- <item name="cornerSize">@dimen/_14sdp</item>
- </style>
- <style name="Theme.Simplify" parent="Base.Theme.Simplify" />
- <style name="TimePickerDark" parent="@style/ThemeOverlay.MaterialComponents.Dialog">
- <item name="colorAccent">@color/primary</item>
- <item name="color">@color/primary</item>
- <item name="colorSecondaryFixed">@color/primary</item>
- <item name="android:numbersBackgroundColor">@color/secondary</item>
- <item name="android:windowBackground">@color/background</item>
- <item name="android:headerBackground">@color/secondary</item>
- </style>
- <style name="DatePickerDark" parent="Theme.AppCompat.Light.Dialog">
- <item name="colorAccent">@color/secondary</item>
- <item name="colorControlActivated">@color/primary</item>
- <item name="android:selectableItemBackgroundBorderless">@color/background</item>
- <item name="colorControlHighlight">@color/primary</item>
- <item name="android:windowBackground">@color/background</item>
- <item name="android:textColor">#4CAF50</item>
- <item name="fontFamily">@font/circular_medium</item>
- <item name="android:fontFamily">@font/circular_regular</item>
- <item name="android:textColorSecondary">@color/primary</item>
- <item name="android:textColorPrimary">@color/white</item>
- <item name="android:textColorPrimaryInverse">@color/white</item>
- <item name="android:textColorSecondaryInverse">@color/light</item>
- </style>
- </resources>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement