Add support for converting photos into daily video entries - #150
Add support for converting photos into daily video entries#150TerenceAbigail wants to merge 4 commits into
Conversation
There was a problem hiding this comment.
Pull request overview
Adds a new “save photo” flow that lets users pick a gallery photo for a calendar day, configure overlays (date, location, subtitles) and duration, and then convert the photo into a video entry suitable for movie creation.
Changes:
- Add a new
SAVE_PHOTOroute and page registration. - Add UI in the calendar editor to pick an image from gallery and route into the new save-photo flow.
- Implement a new Save Photo page + FFmpeg-based conversion pipeline and add i18n strings for the new UI actions.
Reviewed changes
Copilot reviewed 16 out of 16 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| lib/routes/app_routes.dart | Adds the SAVE_PHOTO route constant. |
| lib/routes/app_pages.dart | Registers SavePhotoPage with GetX routing. |
| lib/pages/save_photo/save_photo_page.dart | New screen for configuring and saving a photo-as-video daily entry (date/location/subtitles/duration). |
| lib/pages/save_photo/widgets/save_photo_button.dart | Converts the selected photo into an MP4 with FFmpeg, applying overlays/metadata and showing progress UI. |
| lib/pages/save_photo/widgets/tab_item.dart | Tab UI widget used by the Save Photo page. |
| lib/pages/home/calendar_editor/calendar_editor_page.dart | Adds “Add photo as video” action and gallery picker flow for images. |
| lib/lang/en.dart | Adds addPhotoAsVideo / savePhoto translations. |
| lib/lang/zh.dart | Adds addPhotoAsVideo / savePhoto translations. |
| lib/lang/ru.dart | Adds addPhotoAsVideo / savePhoto translations. |
| lib/lang/pt.dart | Adds addPhotoAsVideo / savePhoto translations. |
| lib/lang/id.dart | Adds addPhotoAsVideo / savePhoto translations. |
| lib/lang/fr.dart | Adds addPhotoAsVideo / savePhoto translations. |
| lib/lang/es.dart | Adds addPhotoAsVideo / savePhoto translations. |
| lib/lang/de.dart | Adds addPhotoAsVideo / savePhoto translations. |
| lib/lang/cs.dart | Adds addPhotoAsVideo / savePhoto translations. |
| lib/lang/ca.dart | Adds addPhotoAsVideo / savePhoto translations. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| onPressed: () { | ||
| Navigator.pop(context); | ||
| }, |
There was a problem hiding this comment.
Not actually needed. Confirmed that text is captured in the onTapOutside. Added comment here instead
84f5a27 to
956f66e
Compare
This issues was appearing only on debug builds when dialog appeared to type in a subtitles. This was happening because unscrollable container contains children whose total height exceeds the available vertical screen space. When the keyboard popped up the available screen height decreases by ~300+ pixels. Drawback with changing `resizeToAvoidBottomInset: false` is that the save button no longer pops up. Which is completely acceptable when dialog is onscreen.
|
@KyleKun Any updates on when you'd be able to review this PR? |
Hey, I'll be reviewing this week, my windows PC isn't working for some reason so I'll setup the android build on my Mac. Will keep you posted, thanks again for the contribution! |
Description
Fixes #124
Implement feature allowing users to select a photo from their gallery and convert it into a daily video entry
Went with the approach where on the calendar user selects if they want to add a photo or video. With this approach it allows for editing photos in the future to enable potentially different effects like allowing user to crop photo or add some sort of motion like slightly zooming into the photo for the duration selected by user giving a visual effect that is more appealing in the movie created.
Since
lib/pages/save_photo/widgets/save_photo_button.dartis largely copy and paste fromlib/pages/save_video/save_video_page.dart. Any issues flagged in the former was also addressed in the latter as wellChecklist
Before you create this PR, please confirm that it meets all requirements listed below by checking the relevant checkboxes (
[x]). This will ensure a smooth and quick review process.CHANGELOG.md.CONTRIBUTORS.mdfile, if it wasn't already present.Testing