KaykCaputo / KaykCaputo/OpenCifra
Implement adjustable font size for lyrics
- Dominant language
- Python
- Stars
- 6
- Forks
- 1
- PR merge metrics
- No merged PRs in 30d
Description
## Description
Allow users to adjust the font size of lyrics and chords for better readability. This improves accessibility for users with visual impairments or different screen sizes.
## Proposed UI
Add options in the lyrics screen:
- 🔍➕ Increase font size
- 🔍➖ Decrease font size
- Min size: 8dp, Max size: 16dp, Default: 9dp
## Implementation
1. Store font size preference using Kivy's `App.user_data_dir`
2. Update the `create_label_chunk()` method to use dynamic font size
3. Add font size controls to the top bar or as floating action buttons
```python
from kivy.storage.jsonstore import JsonStore
class OpenCifraApp(MDApp):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.settings = JsonStore('settings.json')
self.font_size = self.settings.get('font_size', {}).get('value', 9)
def increase_font_size(self):
self.font_size = min(16, self.font_size + 1)
self.settings.put('font_size', value=self.font_size)
self.refresh_lyrics()
def decrease_font_size(self):
self.font_size = max(8, self.font_size - 1)
self.settings.put('font_size', value=self.font_size)
self.refresh_lyrics()
```
## Benefits
- Better accessibility
- Improved user experience across different devices
- Persistent user preferences
Contributor guide
No contributing guide indexed for this repository
Research direction
Start at the lyrics screen and the create_label_chunk() method, then inspect how the top bar or floating action buttons are built. Use Kivy's App.user_data_dir for the persistent setting, and consider the work complete when controls change lyric and chord sizes between 8dp and 16dp and the selected size survives a restart.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- accessibility, mobile
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100