63 Commits

Author SHA1 Message Date
02edb186bb feat: Implement photo capture functionality
Implement the logic for capturing and saving photos from the live preview stream.

- Add `save_photo` method to `MediaRepository` to handle file saving and database updates.
- `MainController` now tracks the selected color and the latest camera frame.
- The "Take Photo" button is enabled only when a color is selected.
- Pressing the button saves the current preview frame to the correct media folder and refreshes the thumbnail list.
- Fixes indentation issues in `main_controller.py` caused by previous faulty replacements.
2025-10-14 10:04:01 +02:00
47c1e6040a feat: Implement State pattern for camera logic
Refactor camera control logic in `MainController` to use the State design pattern.

- Create a new `core/camera/states.py` module with state classes (`NoCamerasState`, `DetectingState`, `ReadyToStreamState`, `StreamingState`).
- `MainController` now acts as a context, delegating actions to the current state object.
- This replaces complex conditional logic with a robust, scalable, and maintainable state machine, making it easier to manage camera behavior and add new states in the future.
2025-10-14 09:03:19 +02:00
c8d9029df7 refactor: Implement Singleton pattern for DatabaseManager
Refactor the database handling to use a Singleton pattern for `DatabaseManager`.

- A single, module-level instance `db_manager` is created in `core/database.py` to ensure one database connection is used throughout the application.
- `MediaRepository` and `MainController` are updated to use this shared instance instead of creating their own.
- This simplifies dependency injection and prevents potential issues with multiple database connections.
- Also, update `review.md` to reflect the progress.
2025-10-14 08:55:45 +02:00
96c2495a8b refactor(MainController): Simplify camera button signal handling
Refactor the signal handling for the camera start/stop button in `MainController` to simplify logic and improve reliability.

- Replaced the dynamic connect/disconnect pattern with a single, persistent signal connection to `_on_start_button_clicked`.
- Centralized UI state updates (e.g., button text) into a new `_update_start_button_state` method.
- This eliminates potential errors from mismatched signal connections and makes the control flow easier to follow.
- Also fixes major indentation errors caused by a previous faulty replacement.
2025-10-14 08:49:20 +02:00
03ab345e17 refactor(SplitView): Improve image rotation logic
Refactor the image rotation mechanism in the `SplitView` widget to prevent image quality degradation.

- The original reference pixmap is now stored in `self.original_ref_pixmap`.
- Rotations are always applied to the original, unmodified pixmap, using a cumulative rotation angle.
- This avoids sequential transformations that caused gradual quality loss.
- Also fixes indentation issues caused by previous automated replacements.
2025-10-14 08:41:47 +02:00
d62b367b47 refactor: Centralize resource path management
Create a new `settings.py` file to define and manage global application paths.

Modify UI components (`split_view_widget.py`, `view_settings_dialog.py`) to use the centralized `ICONS_DIR` path constant instead of hardcoded relative paths for icons. This improves maintainability and makes the application independent of the working directory.
2025-10-14 08:33:08 +02:00
bbdb7d3459 delete unused files 2025-10-14 08:27:40 +02:00
fa84a29ab5 review concept 2025-10-14 08:26:41 +02:00
2cc496a2b2 refactor: enhance SplitView to support image rotation and handle null pixmap in ZoomableImageView 2025-10-13 22:22:35 +02:00
0bc6c01e7e refactor: enhance camera rotation functionality and integrate with live view 2025-10-13 20:54:04 +02:00
4d00f83083 refactor: update camera start button behavior to handle camera detection and live view 2025-10-13 19:39:34 +02:00
2c1233f304 refactor: initialize QTimer with parent and ensure proper thread cleanup on stop 2025-10-13 19:36:09 +02:00
feebc5153a refactor: update SplitView to use ViewWithOverlay for live and reference images 2025-10-13 05:17:59 +02:00
49a1405340 Merge branch 'feature/camera-manager' 2025-10-13 05:15:27 +02:00
c6345c569d refactor: update camera control signals and improve live view handling 2025-10-13 05:14:27 +02:00
73b51c696e Merge branch 'feature/camera-worker' into feature/camera-manager 2025-10-12 19:31:28 +02:00
511e668cb3 feat: add isConnected method to CameraWorker and is_connected method to CameraController 2025-10-12 19:29:23 +02:00
ce1b864b17 refactor: streamline MainController initialization and signal connections 2025-10-12 19:02:53 +02:00
46734208e7 refactor. new qobjct thread approuch insted qthread 2025-10-12 18:51:37 +02:00
bbdc2af605 refactor: change CameraController to inherit from QObject and manage threading in CameraManager 2025-10-12 13:41:13 +02:00
2a5f570e5e feat: implement CameraDetectionWorker for asynchronous camera detection 2025-10-12 13:08:40 +02:00
d63d616675 working on camera-manager 2025-10-12 10:31:40 +02:00
eb72b25fdb feat: add error label and update related methods in CameraPlaceholder 2025-10-12 10:28:53 +02:00
86b9cc70a6 fix: correct variable name in abilities extraction loop 2025-10-12 10:28:22 +02:00
5b345e6641 feater: add camera buttons 2025-10-09 21:48:23 +02:00
cc37d7054c refactor: new mock gphoto 2025-10-09 21:35:50 +02:00
71a55843c1 chore: update requirements.txt to include additional dependencies 2025-10-09 18:56:54 +02:00
ca08e44358 Merge branch 'dev-camera' 2025-10-09 18:56:00 +02:00
c815762f72 refactor: enhance mock camera classes and update camera detection logic 2025-10-09 18:47:17 +02:00
ca25b06f99 refactor: implement CameraManager class with methods for detecting GPhoto and OpenCV cameras 2025-10-01 18:26:41 +02:00
dea17b8b26 refactor: update detect method in camera classes to return dictionaries instead of lists 2025-10-01 18:26:02 +02:00
324ab2e016 refactor: update camera classes to improve initialization and connection handling 2025-09-30 21:50:30 +02:00
196eff7fd8 refacot: change name from CameraManager to CameraController. Add set_camera nad cleanup code. 2025-09-30 18:58:56 +02:00
e2c8352c44 fix: correct config attribute from 'config' to 'widget' in set_config method 2025-09-30 18:56:47 +02:00
c63821617a feat: add view settings dialog with adjustable parameters and navigation controls 2025-09-29 06:30:25 +02:00
f2a002a249 feat: add view settings dialog and button in main window 2025-09-28 07:55:54 +02:00
d86a6429f7 feat: add split view functionality with image rotation and flipping controls 2025-09-27 19:14:42 +02:00
a1c608f279 refactor: implement set_dark_theme function for application theming 2025-09-27 12:28:41 +02:00
dcf4ef0f0a refactor: implement set_dark_theme function for application theming 2025-09-27 12:26:57 +02:00
1ff5091250 refactor: update set_config methods to specify return type as None
feat: implement CvCamera class for OpenCV camera handling
2025-09-27 12:26:43 +02:00
373e01310e refactor: update GPhotoCamera configuration methods for consistency 2025-09-21 22:01:46 +02:00
abc07fd08d refactor: replace CameraWidget with dictionary-based config handling in GPhotoCamera 2025-09-21 21:43:44 +02:00
35576986c9 refactor gphoto_camera 2025-09-21 20:51:37 +02:00
19e2c7977c feat: read gphoto config 2025-09-21 18:46:38 +02:00
508930ae39 feat: implement camera management with GPhotoCamera and CameraManager classes 2025-09-21 08:38:26 +02:00
2187536c7d refactor: update camera handling with mock implementation and improve signal connections 2025-09-15 20:58:05 +02:00
6133c9fb18 add application style setting and requirements file for dependencies 2025-09-09 19:34:36 +02:00
e006fea037 add CameraWorker and CameraController classes for handling camera operations in a separate thread 2025-09-09 19:20:12 +02:00
6acb690f16 add split view widget and integrate photo button functionality in main controller 2025-09-09 19:19:50 +02:00
ab266c2767 connect thumbnail selection signal to main controller; enhance thumbnail handling with media ID 2025-09-07 20:32:56 +02:00