From 76eafc0985ba1d43e3e0a4f168321a0b3a636310 Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Thu, 25 Jun 2020 10:49:23 -0500 Subject: [PATCH] Convert ShortcutConfigActivity to Kotlin --- .../tasks/widget/ShortcutConfigActivity.java | 176 ------------------ .../tasks/widget/ShortcutConfigActivity.kt | 162 ++++++++++++++++ 2 files changed, 162 insertions(+), 176 deletions(-) delete mode 100644 app/src/main/java/org/tasks/widget/ShortcutConfigActivity.java create mode 100644 app/src/main/java/org/tasks/widget/ShortcutConfigActivity.kt diff --git a/app/src/main/java/org/tasks/widget/ShortcutConfigActivity.java b/app/src/main/java/org/tasks/widget/ShortcutConfigActivity.java deleted file mode 100644 index 666b487b8..000000000 --- a/app/src/main/java/org/tasks/widget/ShortcutConfigActivity.java +++ /dev/null @@ -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(); - } -} diff --git a/app/src/main/java/org/tasks/widget/ShortcutConfigActivity.kt b/app/src/main/java/org/tasks/widget/ShortcutConfigActivity.kt new file mode 100644 index 000000000..898fc3e2e --- /dev/null +++ b/app/src/main/java/org/tasks/widget/ShortcutConfigActivity.kt @@ -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 + } +} \ No newline at end of file