-
Calendar Selection UI - Click on calendar name in sidebar to select as active calendar for new events
- Added
selected_calendar_idto app state - Calendar list shows selection with accent color (Suggested button style)
SelectCalendar(String)message implemented
- Added
-
Event Messages - Core message types for event operations
StartQuickEvent(NaiveDate)- Start creating quick event on dateQuickEventTextChanged(String)- Update quick event textCommitQuickEvent- Save the quick eventCancelQuickEvent- Cancel quick event editingDeleteEvent(String)- Delete event by UID
-
Quick Event Input Component - Inline text field for fast event creation
render_quick_event_input()- Styled input with calendar color- Supports Enter to commit, Escape to cancel (message-based)
-
Event Chip Component - Display event in day cell
render_event_chip()- Compact event display with calendar colorrender_events_column()- Stack of events with "+N more" overflow
-
Day Cell with Events - Enhanced day cell for month view
DayCellConfigstruct with events and quick_event fieldsrender_day_cell_with_events()- Full day cell with event support- Double-click to start quick event creation
-
Event Storage Backend - Persist events to SQLite database
handle_commit_quick_event()creates CalendarEvent with UUID- Events stored via LocalCalendar → Database → SQLite
- Path:
~/.local/share/sol-calendar/sol.db
-
Month View Events Structure - Data passing for events
MonthViewEventsstruct with events_by_day HashMap- Quick event state tracking (date, text, color)
- Testing Event Creation - Verify events are created and persisted correctly
- Double-click on day to show quick event input
- Type event name and press Enter to save
- Check events persist across app restarts
-
Wire Up Event Display - Show events in month view
- Added
get_display_events_for_month()to CalendarManager - Caching events in app state (
cached_month_events) - Events refresh on navigation and after add/delete
- Lifetime issues resolved by owning data in app state
- Added
-
Basic Event Display
- Display events in month view day cells
- Show quick event input when double-clicking a day
- Color events based on their calendar's color
- Click on event chip to select/edit
- Delete event (context menu or keyboard)
- Edit event title inline
- Move event between days (drag & drop)
- Event creation dialog with full details
- Title, description, location
- Start/end date and time
- All-day toggle
- Calendar selection dropdown
- Event editing dialog
- Recurring events support
- Display events in week view time grid
- Display events in day view time grid
- Time-based event positioning
- Multi-day event spanning
- CalDAV sync implementation
- Parse iCalendar data from server
- Push local changes to server
- Google Calendar support
- iCloud Calendar support
- Nextcloud Calendar support
- Import iCal file (.ics)
- Export calendar to iCal
- Bulk import/export
- Clean up unused imports (cargo fix suggestions)
- Remove dead code warnings
- Better error handling (replace eprintln with proper logging)
- Add unit tests for event operations
-
Consider caching events in app state for better lifetime management(done) - Migrated event storage to SQLite with SQLCipher
- Calendar metadata (name, color, enabled) stored in config file:
~/.config/sol-calendar/calendars.json - Events stored in SQLite database:
~/.local/share/sol-calendar/sol.db - Better separation of concerns (config vs data)
- Encryption support via SQLCipher for event data (ready to use)
- Efficient indexed queries for date ranges
- Calendar metadata (name, color, enabled) stored in config file:
User Action → Message → update.rs → CalendarManager → CalendarSource → Database (SQLite)
Calendar Metadata (config) Events (database)
~/.config/sol-calendar/ → ~/.local/share/sol-calendar/
├── calendars.json └── sol.db (SQLite + SQLCipher)
├── id, name, color
├── enabled, type
src/message.rs- Event-related messagessrc/update.rs- Message handlers includinghandle_commit_quick_event()src/components/event_chip.rs- Event display componentssrc/components/day_cell.rs- Day cell with event supportsrc/views/month.rs- Month view withMonthViewEventssrc/calendars/- Calendar backend (LocalCalendar, CalDAV)src/calendars/config.rs- Calendar metadata (JSON config)src/database/- SQLite database for events (with SQLCipher encryption support)
CalendarEvent- Core event data (uid, summary, start, end, etc.)DisplayEvent- Event with calendar color for renderingDayCellConfig- Configuration for rendering day cellsMonthViewEvents- Events grouped by day for month view