Skip to content
Calendar Companion icon

iOS App

Calendar Companion

Your calendar, supercharged

App Store Coming Soon

Query Tab

Query Tab - 01-query-01

Query Tab

The Query tab is the main search interface for finding calendar events. It allows you to search with Include and Exclude terms, filter by year range, and view event details.

Controls

Include Search Field

The top search field, labeled "Include (And)" or "Include (Or)" depending on the logic setting in the Filter tab, is used to find events that match your search terms.

  • Supports comma-separated search terms. For example, typing meeting, review searches for events containing both "meeting" and "review" (And logic) or either one (Or logic).
  • A clear button (X) appears on the right when text is entered. Tap it to clear the field.
  • Results update automatically as you type.
  • Your search text is saved via iCloud sync and restored the next time you open the app.

Exclude Search Field

The second search field, labeled "Exclude (And)" or "Exclude (Or)", removes matching events from the results.

  • Works the same way as the Include field with comma-separated terms.
  • Events that match the exclude terms are removed from the results produced by the Include field.
  • Also persists across sessions via iCloud sync.

Year Range Pickers

Below the search fields is a row with "Years:" label and two dropdown pickers.

  • Start Year (left picker): Selects the beginning of the date range. Range: 2000 to 2050. Defaults to the current year minus 2.
  • End Year (right picker): Selects the end of the date range. Range: 2000 to 2050. Defaults to the current year plus 2.
  • Refresh button (circular arrow icon, far right): Tap to manually reload calendar events for the selected year range.
  • Changing either year picker automatically reloads all calendar events within the new range.
  • The start year is always validated to be less than or equal to the end year.

Calendar Picker

Below the year range pickers, a calendar icon and dropdown menu appear when multiple calendars exist on the device.

  • Displays "Calendars: All" when all calendars are selected.
  • Displays "Calendars: X of Y" when only some calendars are selected (e.g., "Calendars: 3 of 5").
  • Tapping the dropdown opens a menu with:
    • "Select All" button at the top to quickly select all calendars.
    • A divider line.
    • Individual calendar toggles with checkmarks indicating which calendars are currently selected.
  • Only appears when the device has more than one calendar.
  • Deselecting the last remaining calendar is prevented โ€” at least one must always be selected.
  • Calendar selection persists across sessions via iCloud sync.
  • Filtering affects both search results and the event count shown in the empty state.

Keyboard Toolbar

When the keyboard is visible (while typing in either search field), a toolbar appears above it with two buttons:

  • Refresh button (left): Reloads all calendar events.
  • Close button (X, right): Dismisses the keyboard.

Results List

When search terms match events, a scrollable list is displayed. Each row shows:

  • A calendar icon on the left
  • The event title
  • The start date/time and end date/time (formatted as abbreviated date and shortened time)
  • The calendar name the event belongs to
  • A chevron (>) on the right indicating the row is tappable

Tapping a result opens the Event Detail view in a sheet, which shows full event information and provides an Edit option.

Results are sorted chronologically by start date, then by end date.

Navigation Title

  • Displays "Query" when no search terms are entered.
  • Changes to "Query: N found" (where N is the result count) when a search is active.

Conditional States

The main content area displays one of several states depending on the situation:

  1. Loading -- A spinner is shown with either "Loading events..." or "Loading [YEAR]... (X of Y)" as each year in the range is fetched.

  2. Calendar Access Required -- Shown when the app has not yet been granted calendar permission. Displays a blue calendar icon, a brief privacy explanation ("Data stays on your device and only syncs with your iCloud"), and a "Grant Access" button.

  3. Calendar Access Denied -- Shown when the user has previously denied calendar access. Displays a red calendar icon with an exclamation mark and an "Open Settings" button that navigates to the iOS Settings app.

  4. No Search Terms -- The default state after events have loaded. Shows a magnifying glass icon, the heading "Search Calendar Events", and a message indicating how many events were found along with instructions to enter a search term.

  5. No Results -- Shown when search terms are entered but nothing matches. Displays an exclamation magnifying glass icon and the message "No events found matching your search criteria".

Search Behavior

The Include and Exclude fields work together in two phases:

  1. Phase 1 (Include): Events matching the include terms are gathered. If the Include field is empty but the Exclude field has terms, all events are used as the starting set.
  2. Phase 2 (Exclude): Events matching the exclude terms are removed from the Phase 1 results.

Search behavior is controlled by settings in the Filter tab. The Include and Exclude fields each have independent settings for:

  • Scope: "Just title" searches only event titles. "All" searches titles, locations, and notes.
  • Type: "Contains..." matches anywhere in the field. "Begins with..." matches only at the start. "Ends with..." matches only at the end.
  • Logic: "And" requires all comma-separated terms to match. "Or" requires any one term to match.
  • Case: "Case insensitive" (default) ignores capitalization. "Case sensitive" requires exact case matching.

The current logic setting (And/Or) is shown in the placeholder text of each search field so you always know which mode is active.

Examples

  1. Find all meetings: Type meeting in the Include field.
  2. Find meetings but not standups: Type meeting in Include, then type standup in Exclude.
  3. Find events about Q1 or Q2: Set the Include logic to "Or" in the Filter tab, then type Q1, Q2 in the Include field.
  4. Find events with a specific location: Set the Include scope to "All" in the Filter tab, then type the location name in the Include field.
  5. Narrow by year: Adjust the Start Year and End Year pickers to limit results to a specific time period.

Features

Mass Update

Intelligently update your event titles in bulk with powerful find-and-replace.