Convert ShortcutConfigActivity to Kotlin

pull/1043/head
Alex Baker 6 years ago
parent de3e23d9d7
commit 76eafc0985

@ -1,176 +0,0 @@
package org.tasks.widget;
import static org.tasks.Strings.isNullOrEmpty;
import static org.tasks.themes.ThemeColor.getLauncherColor;
import android.app.Activity;
import android.content.Intent;
import android.content.Intent.ShortcutIconResource;
import android.os.Bundle;
import android.os.Parcelable;
import android.view.View;
import android.widget.TextView;
import androidx.appcompat.widget.Toolbar;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import butterknife.OnFocusChange;
import com.google.android.material.textfield.TextInputEditText;
import com.todoroo.astrid.api.Filter;
import dagger.hilt.android.AndroidEntryPoint;
import javax.inject.Inject;
import org.tasks.R;
import org.tasks.activities.FilterSelectionActivity;
import org.tasks.dialogs.ColorPalettePicker;
import org.tasks.dialogs.ColorPickerAdapter.Palette;
import org.tasks.injection.ThemedInjectingAppCompatActivity;
import org.tasks.intents.TaskIntents;
import org.tasks.preferences.DefaultFilterProvider;
import org.tasks.themes.DrawableUtil;
import org.tasks.themes.ThemeColor;
@AndroidEntryPoint
public class ShortcutConfigActivity extends ThemedInjectingAppCompatActivity
implements ColorPalettePicker.ColorPickedCallback {
private static final String EXTRA_FILTER = "extra_filter";
private static final String EXTRA_THEME = "extra_theme";
private static final String FRAG_TAG_COLOR_PICKER = "frag_tag_color_picker";
private static final int REQUEST_FILTER = 1019;
@Inject DefaultFilterProvider defaultFilterProvider;
@BindView(R.id.toolbar)
Toolbar toolbar;
@BindView(R.id.shortcut_list)
TextInputEditText shortcutList;
@BindView(R.id.shortcut_name)
TextInputEditText shortcutName;
@BindView(R.id.color)
TextView colorIcon;
@BindView(R.id.clear)
View clear;
private Filter selectedFilter;
private int selectedTheme;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.activity_widget_shortcut_layout);
ButterKnife.bind(this);
toolbar.setTitle(R.string.FSA_label);
toolbar.setNavigationIcon(getDrawable(R.drawable.ic_outline_save_24px));
toolbar.setNavigationOnClickListener(v -> save());
if (icicle == null) {
selectedFilter = defaultFilterProvider.getStartupFilter();
selectedTheme = 7;
} else {
selectedFilter = icicle.getParcelable(EXTRA_FILTER);
selectedTheme = icicle.getInt(EXTRA_THEME);
}
updateFilterAndTheme();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_FILTER) {
if (resultCode == Activity.RESULT_OK) {
if (selectedFilter != null && selectedFilter.listingTitle.equals(getShortcutName())) {
shortcutName.setText(null);
}
selectedFilter = data.getParcelableExtra(FilterSelectionActivity.EXTRA_FILTER);
updateFilterAndTheme();
}
} else {
super.onActivityResult(requestCode, resultCode, data);
}
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putParcelable(EXTRA_FILTER, selectedFilter);
outState.putInt(EXTRA_THEME, selectedTheme);
}
@OnFocusChange(R.id.shortcut_list)
void onListFocusChange(boolean focused) {
if (focused) {
shortcutList.clearFocus();
showListPicker();
}
}
@OnClick(R.id.shortcut_list)
void showListPicker() {
Intent intent = new Intent(this, FilterSelectionActivity.class);
intent.putExtra(FilterSelectionActivity.EXTRA_FILTER, selectedFilter);
intent.putExtra(FilterSelectionActivity.EXTRA_RETURN_FILTER, true);
startActivityForResult(intent, REQUEST_FILTER);
}
@OnClick(R.id.color_row)
void showThemePicker() {
ColorPalettePicker.Companion.newColorPalette(null, 0, Palette.LAUNCHERS)
.show(getSupportFragmentManager(), FRAG_TAG_COLOR_PICKER);
}
private void updateFilterAndTheme() {
if (isNullOrEmpty(getShortcutName()) && selectedFilter != null) {
shortcutName.setText(selectedFilter.listingTitle);
}
if (selectedFilter != null) {
shortcutList.setText(selectedFilter.listingTitle);
}
updateTheme();
}
private void updateTheme() {
clear.setVisibility(View.GONE);
ThemeColor color = getLauncherColor(this, getThemeIndex());
DrawableUtil.setLeftDrawable(this, colorIcon, R.drawable.color_picker);
DrawableUtil.setTint(DrawableUtil.getLeftDrawable(colorIcon), color.getPrimaryColor());
color.apply(toolbar);
color.applyToSystemBars(this);
}
private int getThemeIndex() {
return selectedTheme >= 0 && selectedTheme < ThemeColor.LAUNCHER_COLORS.length
? selectedTheme
: 7;
}
private String getShortcutName() {
return shortcutName.getText().toString().trim();
}
private void save() {
String filterId = defaultFilterProvider.getFilterPreferenceValue(selectedFilter);
Intent shortcutIntent = TaskIntents.getTaskListByIdIntent(this, filterId);
Parcelable icon = ShortcutIconResource.fromContext(this, ThemeColor.ICONS[getThemeIndex()]);
Intent intent = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");
intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, getShortcutName());
intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon);
setResult(RESULT_OK, intent);
finish();
}
@Override
public void onColorPicked(int color) {
selectedTheme = color;
updateTheme();
}
}

@ -0,0 +1,162 @@
package org.tasks.widget
import android.app.Activity
import android.content.Intent
import android.content.Intent.ShortcutIconResource
import android.os.Bundle
import android.os.Parcelable
import android.view.View
import android.widget.TextView
import androidx.appcompat.widget.Toolbar
import butterknife.BindView
import butterknife.ButterKnife
import butterknife.OnClick
import butterknife.OnFocusChange
import com.google.android.material.textfield.TextInputEditText
import com.todoroo.astrid.api.Filter
import dagger.hilt.android.AndroidEntryPoint
import org.tasks.R
import org.tasks.Strings.isNullOrEmpty
import org.tasks.activities.FilterSelectionActivity
import org.tasks.dialogs.ColorPalettePicker
import org.tasks.dialogs.ColorPalettePicker.Companion.newColorPalette
import org.tasks.dialogs.ColorPickerAdapter.Palette
import org.tasks.injection.ThemedInjectingAppCompatActivity
import org.tasks.intents.TaskIntents
import org.tasks.preferences.DefaultFilterProvider
import org.tasks.themes.DrawableUtil
import org.tasks.themes.ThemeColor
import javax.inject.Inject
@AndroidEntryPoint
class ShortcutConfigActivity : ThemedInjectingAppCompatActivity(), ColorPalettePicker.ColorPickedCallback {
@Inject lateinit var defaultFilterProvider: DefaultFilterProvider
@BindView(R.id.toolbar)
lateinit var toolbar: Toolbar
@BindView(R.id.shortcut_list)
lateinit var shortcutList: TextInputEditText
@BindView(R.id.shortcut_name)
lateinit var shortcutName: TextInputEditText
@BindView(R.id.color)
lateinit var colorIcon: TextView
@BindView(R.id.clear)
lateinit var clear: View
private var selectedFilter: Filter? = null
private var selectedTheme = 0
public override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_widget_shortcut_layout)
ButterKnife.bind(this)
toolbar.setTitle(R.string.FSA_label)
toolbar.navigationIcon = getDrawable(R.drawable.ic_outline_save_24px)
toolbar.setNavigationOnClickListener { save() }
if (savedInstanceState == null) {
selectedFilter = defaultFilterProvider.startupFilter
selectedTheme = 7
} else {
selectedFilter = savedInstanceState.getParcelable(EXTRA_FILTER)
selectedTheme = savedInstanceState.getInt(EXTRA_THEME)
}
updateFilterAndTheme()
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
if (requestCode == REQUEST_FILTER) {
if (resultCode == Activity.RESULT_OK) {
if (selectedFilter != null && selectedFilter!!.listingTitle == getShortcutName()) {
shortcutName.text = null
}
selectedFilter = data!!.getParcelableExtra(FilterSelectionActivity.EXTRA_FILTER)
updateFilterAndTheme()
}
} else {
super.onActivityResult(requestCode, resultCode, data)
}
}
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
outState.putParcelable(EXTRA_FILTER, selectedFilter)
outState.putInt(EXTRA_THEME, selectedTheme)
}
@OnFocusChange(R.id.shortcut_list)
fun onListFocusChange(focused: Boolean) {
if (focused) {
shortcutList.clearFocus()
showListPicker()
}
}
@OnClick(R.id.shortcut_list)
fun showListPicker() {
val intent = Intent(this, FilterSelectionActivity::class.java)
intent.putExtra(FilterSelectionActivity.EXTRA_FILTER, selectedFilter)
intent.putExtra(FilterSelectionActivity.EXTRA_RETURN_FILTER, true)
startActivityForResult(intent, REQUEST_FILTER)
}
@OnClick(R.id.color_row)
fun showThemePicker() {
newColorPalette(null, 0, Palette.LAUNCHERS)
.show(supportFragmentManager, FRAG_TAG_COLOR_PICKER)
}
private fun updateFilterAndTheme() {
if (isNullOrEmpty(getShortcutName()) && selectedFilter != null) {
shortcutName.setText(selectedFilter!!.listingTitle)
}
if (selectedFilter != null) {
shortcutList.setText(selectedFilter!!.listingTitle)
}
updateTheme()
}
private fun updateTheme() {
clear.visibility = View.GONE
val color = ThemeColor.getLauncherColor(this, themeIndex)
DrawableUtil.setLeftDrawable(this, colorIcon, R.drawable.color_picker)
DrawableUtil.setTint(DrawableUtil.getLeftDrawable(colorIcon), color.primaryColor)
color.apply(toolbar)
color.applyToSystemBars(this)
}
private val themeIndex: Int
get() = if (selectedTheme >= 0 && selectedTheme < ThemeColor.LAUNCHER_COLORS.size) selectedTheme else 7
private fun getShortcutName(): String {
return shortcutName.text.toString().trim { it <= ' ' }
}
private fun save() {
val filterId = defaultFilterProvider.getFilterPreferenceValue(selectedFilter!!)
val shortcutIntent = TaskIntents.getTaskListByIdIntent(this, filterId)
val icon: Parcelable = ShortcutIconResource.fromContext(this, ThemeColor.ICONS[themeIndex])
val intent = Intent("com.android.launcher.action.INSTALL_SHORTCUT")
intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent)
intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, getShortcutName())
intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon)
setResult(Activity.RESULT_OK, intent)
finish()
}
override fun onColorPicked(index: Int) {
selectedTheme = index
updateTheme()
}
companion object {
private const val EXTRA_FILTER = "extra_filter"
private const val EXTRA_THEME = "extra_theme"
private const val FRAG_TAG_COLOR_PICKER = "frag_tag_color_picker"
private const val REQUEST_FILTER = 1019
}
}
Loading…
Cancel
Save