This commit is contained in:
Данил
2025-05-14 18:05:59 +07:00
parent 9259aaab19
commit 78d741935b
8 changed files with 118 additions and 27 deletions
@@ -1,17 +1,20 @@
package com.example.tasktracker.Activities;
import android.app.DatePickerDialog;
import android.app.TimePickerDialog;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.widget.DatePicker;
import android.widget.TimePicker;
import androidx.appcompat.app.AppCompatActivity;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProvider;
import com.example.tasktracker.Activities.ViewModels.AddItemViewModel;
import com.example.tasktracker.Activities.ViewModels.TimePickerFragment;
import com.example.tasktracker.Answers.Task;
import com.example.tasktracker.PublicKeyNames;
import com.example.tasktracker.R;
@@ -20,13 +23,14 @@ import com.google.android.material.snackbar.Snackbar;
import java.util.Random;
public class AddNewTask extends AppCompatActivity implements DatePickerDialog.OnDateSetListener {
public class AddNewTask extends AppCompatActivity implements DatePickerDialog.OnDateSetListener, TimePickerDialog.OnTimeSetListener {
private static final String TAG = "ADD_NEW_TASK";
private ActivityAddNewTaskBinding binding;
private static String token;
private AddItemViewModel viewModel;
private String stringDate = "";
private String stringTime = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -41,12 +45,14 @@ public class AddNewTask extends AppCompatActivity implements DatePickerDialog.On
return;
}
binding.btnDatePick.setOnClickListener(v->{
DatePickerFragment fragment;
fragment = new DatePickerFragment();
DatePickerFragment fragment = new DatePickerFragment();
fragment.show(getSupportFragmentManager(), "DATE PICK");
});
binding.btnTimePick.setOnClickListener(v->{
TimePickerFragment fragment = new TimePickerFragment();
fragment.show(getSupportFragmentManager(), "TIME PICKER");
});
viewModel = new ViewModelProvider(this).get(AddItemViewModel.class);
viewModel.getClose().observe(this, new Observer<Boolean>() {
@@ -80,9 +86,15 @@ public class AddNewTask extends AppCompatActivity implements DatePickerDialog.On
Snackbar.make(binding.getRoot(), R.string.snackbar_EnterDate, Snackbar.LENGTH_SHORT).show();
return;
}
if(stringTime.isEmpty()) {
Snackbar.make(binding.getRoot(), R.string.snackbar_EnterDate, Snackbar.LENGTH_SHORT).show();
return;
}
long ID = generateID(name, description, stringDate);
Task task = new Task(ID, name, description, stringDate);
String dateTime = stringDate + ' ' + stringTime;
long ID = generateID(name, description, dateTime);
Task task = new Task(ID, name, description, dateTime);
viewModel.OfflineSaveData(task);
});
}
@@ -98,19 +110,25 @@ public class AddNewTask extends AppCompatActivity implements DatePickerDialog.On
binding.AddTask.setOnClickListener(v->{
String name = binding.TaskName.getText().toString();
String description = binding.TaskDescription.getText().toString();
String date = binding.btnDatePick.getText().toString();
if(name.isEmpty()) {
Snackbar.make(binding.getRoot(), R.string.snackbar_EnterName, Snackbar.LENGTH_SHORT).show();
return;
}
if(date.isEmpty()) {
if(stringDate.isEmpty()) {
Snackbar.make(binding.getRoot(), R.string.snackbar_EnterDate, Snackbar.LENGTH_SHORT).show();
return;
}
if(stringTime.isEmpty()) {
Snackbar.make(binding.getRoot(), R.string.snackbar_EnterDate, Snackbar.LENGTH_SHORT).show();
return;
}
long ID = generateID(name, description, date);
Task task = new Task(ID, name, description, date);
String dateTime = stringDate + ' ' + stringTime;
long ID = generateID(name, description, dateTime);
Task task = new Task(ID, name, description, dateTime);
viewModel.OnlineSaveData(task, token);
});
}
@@ -140,4 +158,10 @@ public class AddNewTask extends AppCompatActivity implements DatePickerDialog.On
+ Integer.toString(year);
binding.btnDatePick.setText(stringDate);
}
@Override
public void onTimeSet(TimePicker timePicker, int hour, int minute) {
stringTime = Integer.toString(hour) + ':' + Integer.toString(minute);
binding.btnTimePick.setText(stringTime);
}
}
@@ -1,23 +1,26 @@
package com.example.tasktracker.Activities;
import android.app.DatePickerDialog;
import android.app.TimePickerDialog;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.widget.DatePicker;
import android.widget.TimePicker;
import androidx.appcompat.app.AppCompatActivity;
import androidx.lifecycle.Observer;
import com.example.tasktracker.Activities.ViewModels.EditTaskViewModel;
import com.example.tasktracker.Activities.ViewModels.TimePickerFragment;
import com.example.tasktracker.Answers.Task;
import com.example.tasktracker.PublicKeyNames;
import com.example.tasktracker.R;
import com.example.tasktracker.databinding.ActivityEditTaskBinding;
import com.google.android.material.snackbar.Snackbar;
public class EditTask extends AppCompatActivity implements DatePickerDialog.OnDateSetListener {
public class EditTask extends AppCompatActivity implements DatePickerDialog.OnDateSetListener, TimePickerDialog.OnTimeSetListener {
private static final String TAG = "EDIT_TASK";
private static final String TASK_ID_KEY = "TASK_ID";
@@ -26,6 +29,7 @@ public class EditTask extends AppCompatActivity implements DatePickerDialog.OnDa
private String token;
private long taskID = -1;
private String taskDateString;
private String taskTimeString;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -41,19 +45,26 @@ public class EditTask extends AppCompatActivity implements DatePickerDialog.OnDa
return;
}
binding.btnDatePick.setOnClickListener(v->{ // <-----
DatePickerFragment fragment;
fragment = new DatePickerFragment();
binding.btnDatePick.setOnClickListener(v->{
DatePickerFragment fragment = new DatePickerFragment();
fragment.show(getSupportFragmentManager(), "DATE PICK");
});
binding.btnTimePick.setOnClickListener(v->{
TimePickerFragment fragment = new TimePickerFragment();
fragment.show(getSupportFragmentManager(), "TIME PICKER");
});
viewModel.isLoading().observe(this, new Observer<Task>() {
@Override
public void onChanged(Task task) {
binding.TaskName.setText(task.getTaskName());
binding.TaskDescription.setText(task.getTaskDescription());
taskDateString = task.getTaskDate();
String dateTime = task.getTaskDate();
String[] buf = dateTime.split(" ");
taskDateString = buf[0];
taskTimeString = buf[1];
binding.btnDatePick.setText(taskDateString);
binding.btnTimePick.setText(taskTimeString);
}
});
viewModel.getClose().observe(this, new Observer<Boolean>() {
@@ -87,7 +98,7 @@ public class EditTask extends AppCompatActivity implements DatePickerDialog.OnDa
String name = binding.TaskName.getText().toString();
String description = binding.TaskDescription.getText().toString();
Task task = new Task(taskID, name, description, taskDateString);
Task task = new Task(taskID, name, description, taskDateString + ' ' +taskTimeString);
viewModel.OfflineSaveData(task);
});
}
@@ -97,7 +108,7 @@ public class EditTask extends AppCompatActivity implements DatePickerDialog.OnDa
String name = binding.TaskName.getText().toString();
String description = binding.TaskDescription.getText().toString();
Task task = new Task(taskID, name, description, taskDateString);
Task task = new Task(taskID, name, description, taskDateString + ' ' +taskTimeString);
viewModel.OnlineSaveData(task, token);
});
viewModel.getLiveDataFail().observe(this, new Observer<String>() {
@@ -125,4 +136,10 @@ public class EditTask extends AppCompatActivity implements DatePickerDialog.OnDa
+ Integer.toString(year);
binding.btnDatePick.setText(taskDateString);
}
@Override
public void onTimeSet(TimePicker timePicker, int hour, int minute) {
taskTimeString = Integer.toString(hour) + ':' + Integer.toString(minute);
binding.btnTimePick.setText(taskTimeString);
}
}
@@ -0,0 +1,22 @@
package com.example.tasktracker.Activities.ViewModels;
import android.app.Dialog;
import android.app.TimePickerDialog;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.DialogFragment;
import java.util.Calendar;
public class TimePickerFragment extends DialogFragment {
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
Calendar mCalendar = Calendar.getInstance();
int hour = mCalendar.get(Calendar.YEAR);
int minute = mCalendar.get(Calendar.MONTH);
return new TimePickerDialog(getActivity(), (TimePickerDialog.OnTimeSetListener) getActivity(), hour, minute, true);
}
}
@@ -21,12 +21,24 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textMultiLine"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_margin="5sp">
<Button
android:id="@+id/btnDatePick"
android:text="@string/button_DefaultData"
android:layout_width="200sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5sp"/>
android:layout_weight="1"/>
<Button
android:id="@+id/btnTimePick"
android:text="@string/button_DefaultTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"/>
</LinearLayout>
<Button
android:id="@+id/AddTask"
android:text="@string/button_AddTask"
+14 -2
View File
@@ -21,12 +21,24 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textMultiLine"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_margin="5sp">
<Button
android:id="@+id/btnDatePick"
android:text="@string/button_DefaultData"
android:layout_width="200sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5sp"/>
android:layout_weight="1"/>
<Button
android:id="@+id/btnTimePick"
android:text="@string/button_DefaultTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"/>
</LinearLayout>
<Button
android:id="@+id/btnEditTask"
android:text="@string/button_editTask"
+1
View File
@@ -21,6 +21,7 @@
<string name="snackebar_FailUpdateTaskList">Fail update task list!</string>
<string name="snackbar_EnterName">Enter task name</string>
<string name="snackbar_EnterDate">Enter task date</string>
<string name="snackbar_EnterTime">Enter time</string>
<string name="snackbar_DataBaseError">Something went wrong.</string>
<string name="button_editTask">Edit task</string>
<string name="button_YES">Yes</string>
+1
View File
@@ -21,6 +21,7 @@
<string name="snackebar_FailUpdateTaskList">Неудалось обновить список задач!</string>
<string name="snackbar_EnterName">Введите назвние</string>
<string name="snackbar_EnterDate">Введите дату</string>
<string name="snackbar_EnterTime">Введите время</string>
<string name="snackbar_DataBaseError">Что-то пошло не так</string>
<string name="button_editTask">Редакировать</string>
<string name="button_YES">Да</string>
+2
View File
@@ -11,6 +11,7 @@
<string name="button_YES">Yes</string>
<string name="button_NO">No</string>
<string name="button_DefaultData" translatable="false">DD/MM/YEAR</string>
<string name="button_DefaultTime" translatable="false">HH/MM</string>
<!-- Hints -->
<string name="hint_Login">Login</string>
@@ -33,6 +34,7 @@
<string name="snackebar_FailUpdateTaskList">Fail update task list!</string>
<string name="snackbar_EnterName">Enter task name</string>
<string name="snackbar_EnterDate">Enter task date</string>
<string name="snackbar_EnterTime">Enter time</string>
<string name="snackbar_DataBaseError">Something went wrong.</string>
</resources>