Skip to content

Commit

Permalink
Convert to kt
Browse files Browse the repository at this point in the history
Signed-off-by: alperozturk <[email protected]>
  • Loading branch information
alperozturk96 authored and AndyScherzinger committed Oct 30, 2023
1 parent 08e3495 commit 237019f
Showing 1 changed file with 95 additions and 109 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,85 +20,57 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

package com.owncloud.android.ui.dialog;


import android.app.DatePickerDialog;
import android.app.Dialog;
import android.os.Bundle;
import android.text.format.DateUtils;
import android.widget.DatePicker;

import com.google.android.material.button.MaterialButton;
import com.nextcloud.client.di.Injectable;
import com.owncloud.android.R;
import com.owncloud.android.utils.theme.ViewThemeUtils;

import java.util.Calendar;

import javax.inject.Inject;

import androidx.annotation.NonNull;
import androidx.fragment.app.DialogFragment;
package com.owncloud.android.ui.dialog

import android.app.DatePickerDialog
import android.app.DatePickerDialog.OnDateSetListener
import android.app.Dialog
import android.content.DialogInterface
import android.os.Bundle
import android.text.format.DateUtils
import android.widget.DatePicker
import androidx.fragment.app.DialogFragment
import com.google.android.material.button.MaterialButton
import com.nextcloud.client.di.Injectable
import com.owncloud.android.R
import com.owncloud.android.utils.theme.ViewThemeUtils
import java.util.Calendar
import javax.inject.Inject

/**
* Dialog requesting a date after today.
*/
public class ExpirationDatePickerDialogFragment
extends DialogFragment
implements DatePickerDialog.OnDateSetListener, Injectable {
class ExpirationDatePickerDialogFragment : DialogFragment(), OnDateSetListener, Injectable {

/** Tag for FragmentsManager */
public static final String DATE_PICKER_DIALOG = "DATE_PICKER_DIALOG";
@JvmField
@Inject
var viewThemeUtils: ViewThemeUtils? = null

/** Parameter constant for date chosen initially */
private static final String ARG_CHOSEN_DATE_IN_MILLIS = "CHOSEN_DATE_IN_MILLIS";
private var onExpiryDateListener: OnExpiryDateListener? = null

@Inject ViewThemeUtils viewThemeUtils;
private OnExpiryDateListener onExpiryDateListener;

/**
* Factory method to create new instances
*
* @param chosenDateInMillis Date chosen when the dialog appears
* @return New dialog instance
*/
public static ExpirationDatePickerDialogFragment newInstance(long chosenDateInMillis) {
Bundle arguments = new Bundle();
arguments.putLong(ARG_CHOSEN_DATE_IN_MILLIS, chosenDateInMillis);

ExpirationDatePickerDialogFragment dialog = new ExpirationDatePickerDialogFragment();
dialog.setArguments(arguments);
return dialog;
fun setOnExpiryDateListener(onExpiryDateListener: OnExpiryDateListener?) {
this.onExpiryDateListener = onExpiryDateListener
}

public void setOnExpiryDateListener(OnExpiryDateListener onExpiryDateListener) {
this.onExpiryDateListener = onExpiryDateListener;
}
override fun onStart() {
super.onStart()


@Override
public void onStart() {
super.onStart();
final Dialog currentDialog = getDialog();
val currentDialog = dialog

if (currentDialog != null) {
final DatePickerDialog dialog = (DatePickerDialog) currentDialog;
val dialog = currentDialog as DatePickerDialog

MaterialButton positiveButton = (MaterialButton) dialog.getButton(DatePickerDialog.BUTTON_POSITIVE);
val positiveButton = dialog.getButton(DatePickerDialog.BUTTON_POSITIVE) as MaterialButton?
if (positiveButton != null) {
viewThemeUtils.material.colorMaterialButtonPrimaryTonal(positiveButton);
viewThemeUtils?.material?.colorMaterialButtonPrimaryTonal(positiveButton)
}

MaterialButton negativeButton = (MaterialButton) dialog.getButton(DatePickerDialog.BUTTON_NEGATIVE);
val negativeButton = dialog.getButton(DatePickerDialog.BUTTON_NEGATIVE) as MaterialButton?
if (negativeButton != null) {
viewThemeUtils.material.colorMaterialButtonPrimaryBorderless(negativeButton);
viewThemeUtils?.material?.colorMaterialButtonPrimaryBorderless(negativeButton)
}

MaterialButton neutralButton = (MaterialButton) dialog.getButton(DatePickerDialog.BUTTON_NEUTRAL);
val neutralButton = dialog.getButton(DatePickerDialog.BUTTON_NEUTRAL) as MaterialButton?
if (neutralButton != null) {
viewThemeUtils.material.colorMaterialButtonPrimaryBorderless(neutralButton);
viewThemeUtils?.material?.colorMaterialButtonPrimaryBorderless(neutralButton)
}
}
}
Expand All @@ -108,59 +80,55 @@ public class ExpirationDatePickerDialogFragment
*
* @return A new dialog to let the user choose an expiration date that will be bound to a share link.
*/
@Override
@NonNull
public Dialog onCreateDialog(Bundle savedInstanceState) {

override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
// Chosen date received as an argument must be later than tomorrow ; default to tomorrow in other case
final Calendar chosenDate = Calendar.getInstance();
long tomorrowInMillis = chosenDate.getTimeInMillis() + DateUtils.DAY_IN_MILLIS;
long chosenDateInMillis = requireArguments().getLong(ARG_CHOSEN_DATE_IN_MILLIS);
chosenDate.setTimeInMillis(Math.max(chosenDateInMillis, tomorrowInMillis));
val chosenDate = Calendar.getInstance()
val tomorrowInMillis = chosenDate.timeInMillis + DateUtils.DAY_IN_MILLIS
val chosenDateInMillis = requireArguments().getLong(ARG_CHOSEN_DATE_IN_MILLIS)
chosenDate.timeInMillis = chosenDateInMillis.coerceAtLeast(tomorrowInMillis)

// Create a new instance of DatePickerDialog
DatePickerDialog dialog = new DatePickerDialog(
val dialog = DatePickerDialog(
requireActivity(),
R.style.FallbackDatePickerDialogTheme,
this,
chosenDate.get(Calendar.YEAR),
chosenDate.get(Calendar.MONTH),
chosenDate.get(Calendar.DAY_OF_MONTH)
);
chosenDate[Calendar.YEAR],
chosenDate[Calendar.MONTH],
chosenDate[Calendar.DAY_OF_MONTH]
)

//show unset button only when date is already selected
// show unset button only when date is already selected
if (chosenDateInMillis > 0) {
dialog.setButton(
Dialog.BUTTON_NEGATIVE,
getText(R.string.share_via_link_unset_password),
(dialog1, which) -> {
if (onExpiryDateListener != null) {
onExpiryDateListener.onDateUnSet();
}
});
getText(R.string.share_via_link_unset_password)
) { _: DialogInterface?, _: Int ->
onExpiryDateListener?.onDateUnSet()
}
}

// Prevent days in the past may be chosen
DatePicker picker = dialog.getDatePicker();
picker.setMinDate(tomorrowInMillis - 1000);
val picker = dialog.datePicker
picker.minDate = tomorrowInMillis - 1000

// Enforce spinners view; ignored by MD-based theme in Android >=5, but calendar is REALLY buggy
// in Android < 5, so let's be sure it never appears (in tablets both spinners and calendar are
// shown by default)
picker.setCalendarViewShown(false);

return dialog;
@Suppress("DEPRECATION")
picker.calendarViewShown = false
return dialog
}

public long getCurrentSelectionMillis() {
final Dialog dialog = getDialog();
if (dialog != null) {
final DatePickerDialog datePickerDialog = (DatePickerDialog) dialog;
final DatePicker picker = datePickerDialog.getDatePicker();
return yearMonthDayToMillis(picker.getYear(), picker.getMonth(), picker.getDayOfMonth());
val currentSelectionMillis: Long
get() {
val dialog = dialog
if (dialog != null) {
val datePickerDialog = dialog as DatePickerDialog
val picker = datePickerDialog.datePicker
return yearMonthDayToMillis(picker.year, picker.month, picker.dayOfMonth)
}
return 0
}
return 0;
}

/**
* Called when the user chooses an expiration date.
Expand All @@ -170,27 +138,45 @@ public class ExpirationDatePickerDialogFragment
* @param monthOfYear Month of the date chosen [0, 11]
* @param dayOfMonth Day of the date chosen
*/
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {

long chosenDateInMillis = yearMonthDayToMillis(year, monthOfYear, dayOfMonth);

override fun onDateSet(view: DatePicker, year: Int, monthOfYear: Int, dayOfMonth: Int) {
val chosenDateInMillis = yearMonthDayToMillis(year, monthOfYear, dayOfMonth)
if (onExpiryDateListener != null) {
onExpiryDateListener.onDateSet(year, monthOfYear, dayOfMonth, chosenDateInMillis);
onExpiryDateListener?.onDateSet(year, monthOfYear, dayOfMonth, chosenDateInMillis)
}
}

private long yearMonthDayToMillis(int year, int monthOfYear, int dayOfMonth) {
Calendar date = Calendar.getInstance();
date.set(Calendar.YEAR, year);
date.set(Calendar.MONTH, monthOfYear);
date.set(Calendar.DAY_OF_MONTH, dayOfMonth);
return date.getTimeInMillis();
private fun yearMonthDayToMillis(year: Int, monthOfYear: Int, dayOfMonth: Int): Long {
val date = Calendar.getInstance()
date[Calendar.YEAR] = year
date[Calendar.MONTH] = monthOfYear
date[Calendar.DAY_OF_MONTH] = dayOfMonth
return date.timeInMillis
}

public interface OnExpiryDateListener {
void onDateSet(int year, int monthOfYear, int dayOfMonth, long chosenDateInMillis);
interface OnExpiryDateListener {
fun onDateSet(year: Int, monthOfYear: Int, dayOfMonth: Int, chosenDateInMillis: Long)
fun onDateUnSet()
}

void onDateUnSet();
companion object {
/** Tag for FragmentsManager */
const val DATE_PICKER_DIALOG = "DATE_PICKER_DIALOG"

/** Parameter constant for date chosen initially */
private const val ARG_CHOSEN_DATE_IN_MILLIS = "CHOSEN_DATE_IN_MILLIS"

/**
* Factory method to create new instances
*
* @param chosenDateInMillis Date chosen when the dialog appears
* @return New dialog instance
*/
fun newInstance(chosenDateInMillis: Long): ExpirationDatePickerDialogFragment {
val arguments = Bundle()
arguments.putLong(ARG_CHOSEN_DATE_IN_MILLIS, chosenDateInMillis)
val dialog = ExpirationDatePickerDialogFragment()
dialog.arguments = arguments
return dialog
}
}
}

0 comments on commit 237019f

Please sign in to comment.