Twidere-App-Android-Twitter.../twidere/src/main/kotlin/org/mariotaku/twidere/fragment/ThemedPreferenceDialogFragm...

63 lines
2.0 KiB
Kotlin

package org.mariotaku.twidere.fragment
import android.app.Dialog
import android.content.Context
import android.content.DialogInterface
import android.os.Bundle
import android.support.v7.app.AlertDialog
import android.support.v7.preference.PreferenceDialogFragmentCompat
import org.mariotaku.kpreferences.KPreferences
import org.mariotaku.twidere.extension.applyTheme
import org.mariotaku.twidere.util.dagger.GeneralComponent
import javax.inject.Inject
/**
* Created by mariotaku on 16/3/15.
*/
abstract class ThemedPreferenceDialogFragmentCompat : PreferenceDialogFragmentCompat() {
@Inject
lateinit var kPreferences: KPreferences
override fun onAttach(context: Context) {
super.onAttach(context)
GeneralComponent.get(context).inject(this)
}
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
val context = context
val preference = preference
onClick(null, DialogInterface.BUTTON_NEGATIVE)
val builder = AlertDialog.Builder(context)
.setTitle(preference.dialogTitle)
.setIcon(preference.dialogIcon)
.setPositiveButton(preference.positiveButtonText, this)
.setNegativeButton(preference.negativeButtonText, this)
val contentView = onCreateDialogView(context)
if (contentView != null) {
onBindDialogView(contentView)
builder.setView(contentView)
} else {
builder.setMessage(preference.dialogMessage)
}
onPrepareDialogBuilder(builder)
// Create the dialog
val dialog = builder.create()
dialog.setOnShowListener { dialog -> (dialog as AlertDialog).applyTheme() }
if (needInputMethod()) {
supportRequestInputMethod(dialog)
}
return dialog
}
override fun onPrepareDialogBuilder(builder: AlertDialog.Builder?) {
}
private fun supportRequestInputMethod(dialog: Dialog) {
val window = dialog.window
window?.setSoftInputMode(5)
}
}