From a39760017d8d0891d2072d43475f666864db876a Mon Sep 17 00:00:00 2001 From: Jaeyoung Kang <74623611+j97kang@users.noreply.github.com> Date: Tue, 5 Jan 2021 19:44:13 -0500 Subject: [PATCH 1/2] basic calendar UI --- app/build.gradle | 2 ++ .../sentimo/ui/calendar/CalendarFragment.java | 20 +++++++++---------- .../ui/calendar/CalendarViewModel.java | 19 ------------------ app/src/main/res/layout/fragment_calendar.xml | 16 +++++---------- 4 files changed, 17 insertions(+), 40 deletions(-) delete mode 100644 app/src/main/java/ca/uwaterloo/sentimo/ui/calendar/CalendarViewModel.java diff --git a/app/build.gradle b/app/build.gradle index ef70999..4bcbd5a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -38,8 +38,10 @@ dependencies { implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.2.0' implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0' implementation 'androidx.legacy:legacy-support-v4:1.0.0' + implementation 'org.naishadhparmar.zcustomcalendar:zcustomcalendar:1.0.1' implementation 'com.github.Armen101:AudioRecordView:1.0.5' testImplementation 'junit:junit:4.+' androidTestImplementation 'androidx.test.ext:junit:1.1.2' androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0' + } \ No newline at end of file diff --git a/app/src/main/java/ca/uwaterloo/sentimo/ui/calendar/CalendarFragment.java b/app/src/main/java/ca/uwaterloo/sentimo/ui/calendar/CalendarFragment.java index 68dbb8b..896155e 100644 --- a/app/src/main/java/ca/uwaterloo/sentimo/ui/calendar/CalendarFragment.java +++ b/app/src/main/java/ca/uwaterloo/sentimo/ui/calendar/CalendarFragment.java @@ -16,20 +16,20 @@ public class CalendarFragment extends Fragment { - private CalendarViewModel calendarViewModel; + public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - calendarViewModel = - new ViewModelProvider(this).get(CalendarViewModel.class); + View root = inflater.inflate(R.layout.fragment_calendar, container, false); - final TextView textView = root.findViewById(R.id.text_calendar); - calendarViewModel.getText().observe(getViewLifecycleOwner(), new Observer() { - @Override - public void onChanged(@Nullable String s) { - textView.setText(s); - } - }); + + + + + + + return root; + } } \ No newline at end of file diff --git a/app/src/main/java/ca/uwaterloo/sentimo/ui/calendar/CalendarViewModel.java b/app/src/main/java/ca/uwaterloo/sentimo/ui/calendar/CalendarViewModel.java deleted file mode 100644 index e3bb57b..0000000 --- a/app/src/main/java/ca/uwaterloo/sentimo/ui/calendar/CalendarViewModel.java +++ /dev/null @@ -1,19 +0,0 @@ -package ca.uwaterloo.sentimo.ui.calendar; - -import androidx.lifecycle.LiveData; -import androidx.lifecycle.MutableLiveData; -import androidx.lifecycle.ViewModel; - -public class CalendarViewModel extends ViewModel { - - private MutableLiveData mText; - - public CalendarViewModel() { - mText = new MutableLiveData<>(); - mText.setValue("This is the calendar fragment"); - } - - public LiveData getText() { - return mText; - } -} \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_calendar.xml b/app/src/main/res/layout/fragment_calendar.xml index 2cb5c37..f4181d2 100644 --- a/app/src/main/res/layout/fragment_calendar.xml +++ b/app/src/main/res/layout/fragment_calendar.xml @@ -6,17 +6,11 @@ android:layout_height="match_parent" tools:context=".ui.calendar.CalendarFragment"> - + app:layout_constraintTop_toTopOf="parent"/> + \ No newline at end of file From 8a798e88693771d40b9f924072859b1e20552026 Mon Sep 17 00:00:00 2001 From: Jaeyoung Kang <74623611+j97kang@users.noreply.github.com> Date: Tue, 5 Jan 2021 20:49:37 -0500 Subject: [PATCH 2/2] implement calendar fragment --- .../sentimo/ui/calendar/CalendarFragment.java | 87 ++++++++++++++++--- app/src/main/res/layout/absent_view.xml | 26 ++++++ app/src/main/res/layout/current_view.xml | 26 ++++++ app/src/main/res/layout/default_view.xml | 25 ++++++ app/src/main/res/layout/present_view.xml | 26 ++++++ 5 files changed, 180 insertions(+), 10 deletions(-) create mode 100644 app/src/main/res/layout/absent_view.xml create mode 100644 app/src/main/res/layout/current_view.xml create mode 100644 app/src/main/res/layout/default_view.xml create mode 100644 app/src/main/res/layout/present_view.xml diff --git a/app/src/main/java/ca/uwaterloo/sentimo/ui/calendar/CalendarFragment.java b/app/src/main/java/ca/uwaterloo/sentimo/ui/calendar/CalendarFragment.java index 896155e..66a8ff4 100644 --- a/app/src/main/java/ca/uwaterloo/sentimo/ui/calendar/CalendarFragment.java +++ b/app/src/main/java/ca/uwaterloo/sentimo/ui/calendar/CalendarFragment.java @@ -4,31 +4,98 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.TextView; +import android.widget.Toast; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; -import androidx.lifecycle.Observer; -import androidx.lifecycle.ViewModelProvider; + +import org.naishadhparmar.zcustomcalendar.CustomCalendar; +import org.naishadhparmar.zcustomcalendar.OnDateSelectedListener; +import org.naishadhparmar.zcustomcalendar.Property; + +import java.util.Calendar; +import java.util.HashMap; import ca.uwaterloo.sentimo.R; public class CalendarFragment extends Fragment { - + CustomCalendar customCalendar; + + @Override + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + + //Assign variable + customCalendar = view.findViewById(R.id.custom_calendar); + + //Initialize description hash map + HashMap descHashMap = new HashMap<>(); + //Initialize default property + Property defaultProperty = new Property(); + //Initialize default resource + defaultProperty.layoutResource = R.layout.default_view; + //Initialize and assign variable + defaultProperty.dateTextViewResource = R.id.text_view; + //Put object and property + descHashMap.put("default", defaultProperty); + + //For current date + Property currentProperty = new Property(); + currentProperty.layoutResource = R.layout.current_view; + currentProperty.dateTextViewResource = R.id.text_view; + descHashMap.put("current", currentProperty); + + //For Present date + Property presentProperty = new Property(); + presentProperty.layoutResource = R.layout.present_view; + presentProperty.dateTextViewResource = R.id.text_view; + descHashMap.put("present", presentProperty); + + //For absent + Property absentProperty = new Property(); + absentProperty.layoutResource = R.layout.absent_view; + absentProperty.dateTextViewResource = R.id.text_view; + descHashMap.put("absent", absentProperty); + + //Set desc hash map on custom calendar + customCalendar.setMapDescToProp(descHashMap); + + //Initialize date hash map + HashMap dateHashMap = new HashMap<>(); + //Initialize calendar + Calendar calendar = Calendar.getInstance(); + //Put values + dateHashMap.put(calendar.get(Calendar.DAY_OF_MONTH), "current"); + dateHashMap.put(1, "present"); + dateHashMap.put(2, "absent"); + dateHashMap.put(3, "present"); + dateHashMap.put(4, "absent"); + dateHashMap.put(20, "present"); + dateHashMap.put(30, "absent"); + //Set date + customCalendar.setDate(calendar, dateHashMap); + + customCalendar.setOnDateSelectedListener(new OnDateSelectedListener() { + @Override + public void onDateSelected(View view, Calendar selectedDate, Object desc) { + //Get string date + String sDate = selectedDate.get(Calendar.DAY_OF_MONTH) + + "/" + (selectedDate.get(Calendar.MONTH) + 1 ) + + "/" + selectedDate.get(Calendar.YEAR); + //Display date in toast + Toast.makeText(getActivity().getApplicationContext() + , sDate, Toast.LENGTH_SHORT).show(); + } + }); + } public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View root = inflater.inflate(R.layout.fragment_calendar, container, false); - - - - - - return root; } diff --git a/app/src/main/res/layout/absent_view.xml b/app/src/main/res/layout/absent_view.xml new file mode 100644 index 0000000..0c1a496 --- /dev/null +++ b/app/src/main/res/layout/absent_view.xml @@ -0,0 +1,26 @@ + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/current_view.xml b/app/src/main/res/layout/current_view.xml new file mode 100644 index 0000000..c9e6fd5 --- /dev/null +++ b/app/src/main/res/layout/current_view.xml @@ -0,0 +1,26 @@ + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/default_view.xml b/app/src/main/res/layout/default_view.xml new file mode 100644 index 0000000..737a0e2 --- /dev/null +++ b/app/src/main/res/layout/default_view.xml @@ -0,0 +1,25 @@ + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/present_view.xml b/app/src/main/res/layout/present_view.xml new file mode 100644 index 0000000..d29f4b5 --- /dev/null +++ b/app/src/main/res/layout/present_view.xml @@ -0,0 +1,26 @@ + + + + + + + + + + \ No newline at end of file