Dependency types
implementation 'com.squareup:android-times-square:1.6.5@aar'<com.squareup.timessquare.CalendarPickerView
android:id="@+id/calendar_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />
app/src/main/java/com/example/app/MainActivity.kt
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677package com.example.meyepro.fragments.Admin.Schedule.Reschedule;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import androidx.core.util.Pair;
import com.example.meyepro.R;
import com.example.meyepro.databinding.ActivityAdminScheduleRescheduleFreeSlotSelectionBinding;
import com.google.android.material.datepicker.CalendarConstraints;
import com.google.android.material.datepicker.DateValidatorPointForward;
import com.google.android.material.datepicker.MaterialDatePicker;
import com.google.gson.Gson;
import com.squareup.timessquare.CalendarPickerView;
import java.text.SimpleDateFormat;
import java.time.Year;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Locale;
public class AdminScheduleRescheduleFreeSlotSelectionActivity extends AppCompatActivity {
ActivityAdminScheduleRescheduleFreeSlotSelectionBinding binding;
private LinearLayout dateRangeLayout;
private TextView dateRangeText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding=ActivityAdminScheduleRescheduleFreeSlotSelectionBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
// MaterialDatePicker.Builder<Pair<Long, Long>> builder = MaterialDatePicker.Builder.dateRangePicker();
// builder.setTitleText("Select date range");
// CalendarConstraints.Builder constraintsBuilder = new CalendarConstraints.Builder();
// constraintsBuilder.setValidator(DateValidatorPointForward.now());
// builder.setCalendarConstraints(constraintsBuilder.build());
// MaterialDatePicker<Pair<Long, Long>> picker = builder.build();
//
// picker.show(getSupportFragmentManager(), picker.toString());
// CalendarPickerView.SelectionMode selectionMode = CalendarPickerView.SelectionMode.RANGE;
//
// Calendar minDate = Calendar.getInstance();
// minDate.add(Calendar.MONTH, -1);
//
// Calendar maxDate = Calendar.getInstance();
// maxDate.add(Calendar.MONTH, 1);
// // Create a List of Calendar objects to represent any preselected dates
//
// // Create a List of Calendar objects to represent any preselected dates
// List<Calendar> preselectedDates = new ArrayList<>();
// preselectedDates.add(minDate);
// preselectedDates.add(maxDate);
//
//// Convert List<Calendar> to List<Date>
// List<Date> selectedDates = new ArrayList<>();
// for (Calendar calendar : preselectedDates) {
// selectedDates.add(calendar.getTime());
// }
//
//// Initialize CalendarPickerView with selected dates
// CalendarPickerView calendarView = findViewById(R.id.calendar_view);
// calendarView.init(new Date(), maxDate.getTime())
// .inMode(selectionMode)
// .withSelectedDates(selectedDates);
// Date today = new Date();
// Calendar nextYear = Calendar.getInstance();
// nextYear.add(Calendar.YEAR, 1);
//
// Calendar lastYear = Calendar.getInstance();
// lastYear.add(Calendar.YEAR, -1);
//
// CalendarPickerView datePicker = findViewById(R.id.calendar_view);
// datePicker.init(today, nextYear.getTime())
// .inMode(CalendarPickerView.SelectionMode.RANGE)
// .withSelectedDate(today);
Date today = new Date();
Calendar nextWeek = Calendar.getInstance();
nextWeek.setTime(today);
nextWeek.add(Calendar.DAY_OF_WEEK, 7); // Add 7 days to get the end date
CalendarPickerView datePicker = findViewById(R.id.calendar_view);
datePicker.init(today, nextWeek.getTime())
.inMode(CalendarPickerView.SelectionMode.RANGE)
.withSelectedDate(today);
final List<Date> selectedDates = new ArrayList<>();
selectedDates.add(today);
final List<String> selectDaysName=new ArrayList<>();
final List<String> selectedDayNames = new ArrayList<>(); // To store day names
datePicker.setOnDateSelectedListener(new CalendarPickerView.OnDateSelectedListener() {
@Override
public void onDateSelected(Date date) {
selectedDates.add(date);
if (selectedDates.size() == 2) {
Date startDate = selectedDates.get(0);
Date endDate = selectedDates.get(1);
// Get day names within the range
Calendar calendar = Calendar.getInstance();
calendar.setTime(startDate);
while (!calendar.getTime().after(endDate)) {
String dayName = new SimpleDateFormat("EEEE", Locale.ENGLISH).format(calendar.getTime());
selectedDayNames.add(dayName);
calendar.add(Calendar.DAY_OF_WEEK, 1);
}
// Include the end date if it's not already included
String lastDayName = new SimpleDateFormat("EEEE", Locale.ENGLISH).format(endDate);
if (!selectedDayNames.contains(lastDayName)) {
selectedDayNames.add(lastDayName);
}
// Do something with the start and end dates...
// For example, convert them to strings using SimpleDateFormat
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String startDateStr = sdf.format(startDate);
String endDateStr = sdf.format(endDate);
if(startDate.before(endDate)){
//show start date and end date
// Toast.makeText(AdminScheduleRescheduleFreeSlotSelectionActivity.this, ""+"Start date: " + startDateStr + ", End date: " + endDateStr, Toast.LENGTH_SHORT).show();
}
// Do something with the selected day names
for (String dayName : selectedDayNames) {
Log.d("TAG", "Selected Day: " + dayName);
// Perform any other operations with the day names
}
//get range days of name
selectDaysName.addAll(selectedDayNames);
Toast.makeText(AdminScheduleRescheduleFreeSlotSelectionActivity.this, "rr"+new Gson().toJson(selectedDayNames), Toast.LENGTH_SHORT).show();
// Clear the selected dates and day names lists
selectedDayNames.clear();
selectedDates.clear();
}else {
selectDaysName.clear();
}
}
@Override
public void onDateUnselected(Date date) {
selectedDates.remove(date);
}
});
binding.btnSaveReSchedule.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Toast.makeText(AdminScheduleRescheduleFreeSlotSelectionActivity.this, ""+new Gson().toJson(selectDaysName), Toast.LENGTH_SHORT).show();
if(selectDaysName.size()!=0){
Intent i = new Intent(getApplicationContext(), AdminScheduleReScheduleFreeSlotActivity.class);
i.putExtra("IntentData",new Gson().toJson(selectDaysName));
startActivity(i);
}else {
Toast.makeText(AdminScheduleRescheduleFreeSlotSelectionActivity.this, "Place select the range", Toast.LENGTH_SHORT).show();
}
}
});
// datePicker.setOnDateSelectedListener(new CalendarPickerView.OnDateSelectedListener() {
// @Override
// public void onDateSelected(Date date) {
// //String selectedDate = DateFormat.getDateInstance(DateFormat.FULL).format(date);
//
// Calendar calSelected = Calendar.getInstance();
// calSelected.setTime(date);
//
// String selectedDate = "" + calSelected.get(Calendar.DAY_OF_MONTH)
// + " " + (calSelected.get(Calendar.MONTH) + 1)
// + " " + calSelected.get(Calendar.YEAR);
//
// Toast.makeText(getApplicationContext(), selectedDate, Toast.LENGTH_SHORT).show();
// }
//
// @Override
// public void onDateUnselected(Date date) {
//
// }
// });
//
// dateRangeLayout = findViewById(R.id.date_range_layout);
// dateRangeText = findViewById(R.id.date_range_text);
//
// MaterialDatePicker.Builder<Pair<Long, Long>> builder = MaterialDatePicker.Builder.dateRangePicker();
// final MaterialDatePicker<Pair<Long, Long>> picker = builder.build();
//
// dateRangeLayout.setOnClickListener(v -> {
// picker.show(getSupportFragmentManager(), picker.toString());
// });
// picker.addOnPositiveButtonClickListener(selection -> {
// String startDate = picker.getHeaderTextFromDate(selection.first);
// String endDate = picker.getHeaderTextFromDate(selection.second);
// String dateRange = String.format("%s - %s", startDate, endDate);
// dateRangeText.setText(dateRange);
// });
// }
}
}