ringer: Add bypass silent mode for favorite contacts
Users often keep their devices in silent mode but need certain important contacts to still ring through. This change allows calls from favorite contacts to bypass silent mode when enabled.
This implementation introduces a new GSettings key 'bypass-silent-mode' using flag-based configuration for future extensibility:
- CALLS_BYPASS_SILENT_MODE_NONE (0): Never bypass silent mode
- CALLS_BYPASS_SILENT_MODE_FAVORITES (1 << 0): Bypass for favorites
The ringer logic now checks:
- If bypass-silent-mode flags include FAVORITES
- If incoming call is from a favorite contact via contacts provider
- If both conditions are true, the call rings despite silent mode
Technical changes:
- Added CallsBypassSilentModeFlags enum in calls-settings.h
- New bypass-silent-mode GSettings key (unsigned int for flags)
- Added is_contact_favorite() function using CallsContactsProvider
- Modified have_incoming_call() to check favorite bypass logic
- Updated update_ring() to ensure favorite calls always ring
The flag-based approach allows future extensions like CALLS_BYPASS_SILENT_MODE_RECENT for recently answered contacts.
Fixes: #710