Skip to content

Commit

Permalink
feat: snooze only searched (#49)
Browse files Browse the repository at this point in the history
* feat: snooze only searched

init commit

* fix: it works! and even adds a little message with how many events!

* fix: fix to the fix

* feat: change message when snooze searched
  • Loading branch information
williscool authored Oct 9, 2024
1 parent 2e2b2c6 commit eb92367
Show file tree
Hide file tree
Showing 8 changed files with 77 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,8 @@ object Consts {
const val INTENT_SNOOZE_FROM_MAIN_ACTIVITY = "snooze_by_main_activity"
const val INTENT_SNOOZE_PRESET = "snooze_preset"
const val INTENT_SNOOZE_ALL_KEY = "snooze_all"
const val INTENT_SEARCH_QUERY = "search_query"
const val INTENT_SEARCH_QUERY_EVENT_COUNT = "search_query_event_count"
const val INTENT_SNOOZE_ALL_COLLAPSED_KEY = "snooze_all_collapsed"
const val INTENT_DISMISS_ALL_KEY = "dismiss_all"

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -778,8 +778,13 @@ object ApplicationController : EventMovedHandler {
return snoozeEvents(context, { it.displayStatus == EventDisplayStatus.DisplayedCollapsed }, snoozeDelay, isChange, onlySnoozeVisible)
}

fun snoozeAllEvents(context: Context, snoozeDelay: Long, isChange: Boolean, onlySnoozeVisible: Boolean): SnoozeResult? {
return snoozeEvents(context, { true }, snoozeDelay, isChange, onlySnoozeVisible)
fun snoozeAllEvents(context: Context, snoozeDelay: Long, isChange: Boolean, onlySnoozeVisible: Boolean, searchQuery: String? = null): SnoozeResult? {
return snoozeEvents(context, { event ->
searchQuery?.let { query ->
event.title.contains(query, ignoreCase = true) ||
event.desc.contains(query, ignoreCase = true)
} ?: true
}, snoozeDelay, isChange, onlySnoozeVisible)
}

fun fireEventReminder(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ class EventListAdapter(
private val primaryColor: Int
private val changeString: String
private val snoozeString: String
private var searchString: String? = null
private var currentSearchString: String? = null

private var currentScrollPosition: Int = 0

Expand All @@ -141,6 +141,9 @@ class EventListAdapter(
val scrollPosition: Int
get() = currentScrollPosition

val searchString: String?
get() = currentSearchString

init {
primaryColor = ContextCompat.getColor(context, R.color.primary)
changeString = context.resources.getString(R.string.card_view_btn_change);
Expand Down Expand Up @@ -378,7 +381,7 @@ class EventListAdapter(
get() = events.any { it.snoozedUntil == 0L }

fun setSearchText(query: String?) {
searchString = query
currentSearchString = query
setEventsToDisplay()
}

Expand All @@ -389,8 +392,13 @@ class EventListAdapter(
events = newEvents;
}

if (!searchString.isNullOrEmpty()){
events = allEvents.filter { ev -> searchString?.let { ev.title.lowercase().contains(it.lowercase()) } == true }.toTypedArray()
if (!currentSearchString.isNullOrEmpty()){
events = allEvents.filter { ev ->
currentSearchString?.let { query ->
ev.title.lowercase().contains(query.lowercase()) ||
ev.desc.lowercase().contains(query.lowercase())
} == true
}.toTypedArray()
} else {
events = allEvents
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -479,6 +479,8 @@ class MainActivity : AppCompatActivity(), EventListCallback {
Intent(this, SnoozeAllActivity::class.java)
.putExtra(Consts.INTENT_SNOOZE_ALL_IS_CHANGE, !adapter.hasActiveEvents)
.putExtra(Consts.INTENT_SNOOZE_FROM_MAIN_ACTIVITY, true)
.putExtra(Consts.INTENT_SEARCH_QUERY, adapter.searchString)
.putExtra(Consts.INTENT_SEARCH_QUERY_EVENT_COUNT, adapter.getItemCount())
.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP))

R.id.action_mute_all ->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ open class SnoozeAllActivity : AppCompatActivity() {
var customSnooze_TimeIntervalPickerController: TimeIntervalPickerController? = null
var snoozeUntil_DatePicker: DatePicker? = null
var snoozeUntil_TimePicker: TimePicker? = null

private var searchQuery: String? = null

override fun onCreate(savedInstanceState: Bundle?) {

Expand All @@ -120,7 +120,9 @@ open class SnoozeAllActivity : AppCompatActivity() {

snoozeFromMainActivity = intent.getBooleanExtra(Consts.INTENT_SNOOZE_FROM_MAIN_ACTIVITY, false)

val toolbar = find<Toolbar?>(R.id.toolbar)
searchQuery = intent.getStringExtra(Consts.INTENT_SEARCH_QUERY)

val toolbar = find<Toolbar?>(R.id.toolbar)
setSupportActionBar(toolbar)
supportActionBar?.setDisplayHomeAsUpEnabled(true)
supportActionBar?.setDisplayShowHomeEnabled(true)
Expand Down Expand Up @@ -181,6 +183,19 @@ open class SnoozeAllActivity : AppCompatActivity() {
else
resources.getString(R.string.change_all_title)

var count = intent.getIntExtra(Consts.INTENT_SEARCH_QUERY_EVENT_COUNT, 0)

var snoozeCountTextView = findViewById<TextView>(R.id.snooze_count_text)

if (searchQuery.isNullOrEmpty()) {
snoozeCountTextView.visibility = View.GONE
} else {
snoozeCountTextView.visibility = View.VISIBLE
snoozeCountTextView.text = resources.getQuantityString(
R.plurals.snooze_count_text, count, count, searchQuery
)
}

restoreState(state)
}

Expand Down Expand Up @@ -232,17 +247,24 @@ open class SnoozeAllActivity : AppCompatActivity() {
private fun snoozeEvent(snoozeDelay: Long) {
AlertDialog.Builder(this)
.setMessage(
if (snoozeAllIsChange)
R.string.change_all_notification
else
R.string.snooze_all_confirmation)
when {
!searchQuery.isNullOrEmpty() -> {
if (snoozeAllIsChange)
getString(R.string.change_filtered_notification, searchQuery)
else
getString(R.string.snooze_filtered_confirmation, searchQuery)
}
snoozeAllIsChange -> getString(R.string.change_all_notification)
else -> getString(R.string.snooze_all_confirmation)
}
)
.setCancelable(false)
.setPositiveButton(android.R.string.yes) {
_, _ ->

DevLog.debug(LOG_TAG, "Snoozing (change=$snoozeAllIsChange) all requests, snoozeDelay=${snoozeDelay / 1000L}")

val result = ApplicationController.snoozeAllEvents(this, snoozeDelay, snoozeAllIsChange, false);
val result = ApplicationController.snoozeAllEvents(this, snoozeDelay, snoozeAllIsChange, false, searchQuery);
if (result != null) {
result.toast(this)
}
Expand Down
15 changes: 14 additions & 1 deletion android/app/src/main/res/layout/activity_snooze_all.xml
Original file line number Diff line number Diff line change
Expand Up @@ -79,10 +79,23 @@
android:paddingRight="@dimen/snooze_view_padding_end"
android:paddingStart="@dimen/snooze_view_padding_start"
android:paddingTop="@dimen/snooze_view_in_text_vert_padding"
android:text="@string/snooze_event_for"
android:text="@string/snooze_all_events_for"
android:textAppearance="?android:textAppearanceMedium"
android:textColor="@color/primary_text" />

<TextView
android:id="@+id/snooze_count_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="@dimen/snooze_view_spacing"
android:paddingEnd="@dimen/snooze_view_padding_end"
android:paddingLeft="@dimen/snooze_view_padding_start"
android:paddingRight="@dimen/snooze_view_padding_end"
android:paddingStart="@dimen/snooze_view_padding_start"
android:paddingTop="@dimen/snooze_view_with_search_query"
android:textSize="16sp"
/>

<TextView
android:id="@+id/snooze_view_snooze_present1_quiet_time_notice_baseline"
android:layout_width="wrap_content"
Expand Down
2 changes: 2 additions & 0 deletions android/app/src/main/res/values/dimens.xml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@
<dimen name="snooze_view_spacing">14dp</dimen>

<dimen name="snooze_view_img_topbottom">20dp</dimen>

<dimen name="snooze_view_with_search_query">24dp</dimen>

<dimen name="snooze_view_event_title_max_height">160dp</dimen>
<dimen name="snooze_view_event_details_max_height">100dp</dimen>
Expand Down
12 changes: 9 additions & 3 deletions android/app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@

<string name="empty_title">(No title)</string>
<string name="snooze_event_for">Snooze event for:</string>
<string name="snooze_all_events_for">Snooze all event(s) for:</string>

<string name="snooze_preset_15_min">15 minutes</string>
<string name="snooze_preset_1_hour">1 hour</string>
Expand Down Expand Up @@ -89,8 +90,15 @@
<string name="snooze_all_confirmation">Snooze ALL events?\nAlready snoozed would also change snooze time unless snoozed to longer period</string>
<string name="change_all_notification">This will change snooze time for all events\nContinue?</string>

<string name="change_filtered_notification">Snooze ALL events matching \"%1$s\"?\nAlready snoozed would also change snooze time unless snoozed to longer period</string>
<string name="snooze_filtered_confirmation">This will change snooze time for all events matching \"%1$s\"?\nContinue?</string>

<string name="snooze_all_events">Snooze all events to:</string>
<string name="change_all_events">Change snooze time for all events:</string>
<plurals name="snooze_count_text">
<item quantity="one">%1$d event matching \""%2$s"\" will be snoozed</item>
<item quantity="other">%1$d events matching \""%2$s"\" will be snoozed</item>
</plurals>

<string name="change_snooze_to">Change snooze to:</string>

Expand Down Expand Up @@ -524,6 +532,4 @@
<string name="pebble_only_alarms_summary">Only forward #alarm events to PebbleAPI</string>
<string name="skip_expired_events_title">Ignore expired events</string>
<string name="skip_expired_events_summary">Do not process events if end time is already in the past</string>

</resources>

</resources>

0 comments on commit eb92367

Please sign in to comment.