mirror of https://github.com/tasks/tasks
Convert LocalePickerDialog to Kotlin
parent
7590984531
commit
f77b6e48dd
@ -1,55 +0,0 @@
|
|||||||
package org.tasks.locale;
|
|
||||||
|
|
||||||
import static android.app.Activity.RESULT_OK;
|
|
||||||
import static com.google.common.collect.Lists.transform;
|
|
||||||
|
|
||||||
import android.app.Dialog;
|
|
||||||
import android.content.Intent;
|
|
||||||
import android.os.Bundle;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
import javax.inject.Inject;
|
|
||||||
import org.tasks.R;
|
|
||||||
import org.tasks.dialogs.DialogBuilder;
|
|
||||||
import org.tasks.injection.DialogFragmentComponent;
|
|
||||||
import org.tasks.injection.InjectingDialogFragment;
|
|
||||||
|
|
||||||
public class LocalePickerDialog extends InjectingDialogFragment {
|
|
||||||
|
|
||||||
public static final String EXTRA_LOCALE = "extra_locale";
|
|
||||||
|
|
||||||
@Inject DialogBuilder dialogBuilder;
|
|
||||||
@Inject Locale locale;
|
|
||||||
|
|
||||||
public static LocalePickerDialog newLocalePickerDialog() {
|
|
||||||
return new LocalePickerDialog();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Dialog onCreateDialog(Bundle savedInstanceState) {
|
|
||||||
final List<Locale> locales = new ArrayList<>();
|
|
||||||
locales.add(locale.withLanguage(null)); // device locale
|
|
||||||
for (String override : getResources().getStringArray(R.array.localization)) {
|
|
||||||
locales.add(locale.withLanguage(override));
|
|
||||||
}
|
|
||||||
List<String> display = transform(locales, Locale::getDisplayName);
|
|
||||||
return dialogBuilder
|
|
||||||
.newDialog()
|
|
||||||
.setSingleChoiceItems(
|
|
||||||
display,
|
|
||||||
display.indexOf(locale.getDisplayName()),
|
|
||||||
(dialogInterface, i) -> {
|
|
||||||
Locale locale = locales.get(i);
|
|
||||||
Intent data = new Intent().putExtra(EXTRA_LOCALE, locale);
|
|
||||||
getTargetFragment().onActivityResult(getTargetRequestCode(), RESULT_OK, data);
|
|
||||||
dialogInterface.dismiss();
|
|
||||||
})
|
|
||||||
.setNegativeButton(android.R.string.cancel, null)
|
|
||||||
.show();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void inject(DialogFragmentComponent component) {
|
|
||||||
component.inject(this);
|
|
||||||
}
|
|
||||||
}
|
|
@ -0,0 +1,45 @@
|
|||||||
|
package org.tasks.locale
|
||||||
|
|
||||||
|
import android.app.Activity
|
||||||
|
import android.app.Dialog
|
||||||
|
import android.content.Intent
|
||||||
|
import android.os.Bundle
|
||||||
|
import org.tasks.R
|
||||||
|
import org.tasks.dialogs.DialogBuilder
|
||||||
|
import org.tasks.injection.DialogFragmentComponent
|
||||||
|
import org.tasks.injection.InjectingDialogFragment
|
||||||
|
import java.util.*
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
class LocalePickerDialog : InjectingDialogFragment() {
|
||||||
|
@Inject lateinit var dialogBuilder: DialogBuilder
|
||||||
|
@Inject lateinit var locale: Locale
|
||||||
|
|
||||||
|
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
|
||||||
|
val locales = ArrayList<Locale>()
|
||||||
|
locales.add(locale.withLanguage(null)) // device locale
|
||||||
|
for (override in resources.getStringArray(R.array.localization)) {
|
||||||
|
locales.add(locale.withLanguage(override))
|
||||||
|
}
|
||||||
|
val display = locales.map(Locale::getDisplayName)
|
||||||
|
return dialogBuilder
|
||||||
|
.newDialog()
|
||||||
|
.setSingleChoiceItems(display, display.indexOf(locale.displayName)) { dialog, which ->
|
||||||
|
val locale = locales[which]
|
||||||
|
val data = Intent().putExtra(EXTRA_LOCALE, locale)
|
||||||
|
targetFragment!!.onActivityResult(targetRequestCode, Activity.RESULT_OK, data)
|
||||||
|
dialog.dismiss()
|
||||||
|
}
|
||||||
|
.setNegativeButton(android.R.string.cancel, null)
|
||||||
|
.show()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun inject(component: DialogFragmentComponent) = component.inject(this)
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
const val EXTRA_LOCALE = "extra_locale"
|
||||||
|
fun newLocalePickerDialog(): LocalePickerDialog {
|
||||||
|
return LocalePickerDialog()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue