A complete and modern multimedia library with C++17 backend and Qt 6 frontend, designed to manage books, movies, songs, magazines, and podcasts with an elegant and functional graphical interface.
- π― C++17 Backend: Robust architecture with advanced design patterns
- π¨ Qt 6 Frontend: Modern graphical interface with Material UI dark theme
- π Advanced Search: Real-time textual search + advanced filters
- π± Responsive UI: Adaptive grid that automatically resizes
- π΅ Multi-Media Support: 5 media types with specific properties
- πΎ Data Persistence: Save/load in JSON and XML
- β¨οΈ Keyboard Shortcuts: Fast navigation with global shortcuts
- π Customizable Theme: Advanced CSS styling with SVG icons
MultimediaLibrary/
βββ src/
β βββ Backend/
β β βββ Elements/ # Base and derived classes
β β β βββ Media.h/.cpp # Abstract base class
β β β βββ Book.h/.cpp # Book management
β β β βββ Movie.h/.cpp # Movie management
β β β βββ Song.h/.cpp # Song management
β β β βββ Magazine.h/.cpp # Magazine management
β β β βββ Podcast.h/.cpp # Podcast management
β β β βββ Date.h/.cpp # Custom date class
β β βββ Enums/ # Typed enums for genres and languages
β β β βββ Genres.h/.cpp # Genres for all media types
β β β βββ Languages.h/.cpp # Supported languages
β β βββ Library/ # Media collection management
β β β βββ Library.h/.cpp # CRUD, search, filters, statistics
β β βββ Persistence/ # Data save/load
β β βββ JsonPersistence.h/.cpp
β β βββ XmlPersistence.h/.cpp
β βββ Frontend/
β β βββ Windows/ # Main interfaces
β β β βββ MainWindow.h/.cpp # Main window
β β β βββ MediaCard.h/.cpp # Card for each media
β β β βββ AddMediaDialog.h/.cpp # Add/edit dialog
β β β βββ SearchDialog.h/.cpp # Advanced search dialog
β β βββ Resources/ # Graphic resources
β β βββ icons/ # SVG icons for each media type
β βββ main.cpp # Application entry point
βββ resources.qrc # Qt resources file
βββ MultimediaLibrary.pro # Qt project
βββ Frontend_Documentation.md # Frontend documentation
βββ Backend_Documentation.md # Backend documentation
βββ README.md # This file
- MSYS2 with MinGW-w64
- Make (installed via MSYS2)
- g++ (C++17 compiler)
- Qt 6.8.3 installed in
D:\qt\6.8.3\mingw_64 - Qt Creator for development (optional)
- Module QtSvg (required)
# Add to PATH
$env:PATH += ";C:\msys64\usr\bin"# Add Qt to PATH
$env:PATH += "path"# Generate Makefile from Qt project
qmake MultimediaLibrary.pro
# Compile
make
# Clean
make clean# Install build deps (auto-detects distro)
bash scripts/setup-linux.sh
# Build
qmake MultimediaLibrary.pro # or qmake6
make
./build/bin/MultimediaLibraryNota: il progetto richiede QtSvg. In assenza del modulo, il file .pro fallirΓ con un messaggio chiaro.
# Launch Qt graphical interface
./build/bin/MultimediaLibrary.exe- Media Base Class: Abstract interface for all types
- Derived Classes: Book, Movie, Song, Magazine, Podcast
- Enum System: Typed genres and languages for each media
- Library Class: Complete CRUD, search, filters, statistics
- Persistence: Save/load in JSON and XML
- Validation: Data integrity checks
- MainWindow: Main interface with adaptive layout
- MediaCard: Responsive card for each media with fallback icon
- Search Bar: Real-time textual search
- Advanced Search: Complex filters for genre, dates, type
- Add/Edit Dialog: Media creation and modification with validation
- Sidebar: Category navigation with SVG icons
- Responsive Grid: Grid that automatically adapts
- Dark Theme: Material UI with vibrant colors
- SVG Icons: Scalable and customizable
- Adaptive Layout: Automatically resizes
- Keyboard Shortcuts: Ctrl+F (search), Ctrl+N (new), etc.
- Animations: Smooth transitions between views
- Responsive Design: Adapts to different window sizes
- Inheritance/Polymorphism: Media hierarchy with derived classes
- Visitor Pattern:
MediaVisitorfor type-specific operations - Strategy Pattern: Persistence in different formats
- Factory Pattern: Dynamic creation of media objects
- Observer Pattern: Change notifications
- MVC: Separation between logic and presentation
- Signal/Slot: Asynchronous Qt communication
- Widget Composition: Modular UI assembly
- Resource Management: Centralized resource management
- Menu Bar: File, Edit, View, Help with shortcuts
- Search Bar: Quick search + advanced filters
- Sidebar: Categories with SVG icons
- Media Grid: Responsive grid with cards
- Details Panel: Detailed view with cover and attributes
- Status Bar: Information and status messages
- Instant Search: Filters in real-time by title/author
- Sorting: By title or date (ascending/descending)
- Advanced Filters: By genre, language, availability, dates
- Drag & Drop: Cover images
- Responsive Grid: Automatically adapts to window
- Dark Theme: Material UI colors with vibrant icons
- Real-time: Activates with each character typed
- Case-insensitive: Doesn't distinguish uppercase/lowercase
- Multi-field: Searches in title AND author
- Integrated: Works with other filters
- Multiple Filters: Genre, language, dates, availability
- Logical Combinations: Logically combinable filters
- Persistence: Maintains filters between sessions
- Reset: Button to clear all filters
- JSON: Main format, readable and compatible
- XML: Alternative format for interoperability
- Import/Export: Data loading and saving
- Backup: Automatic saving
- Validation: Data integrity checks
- Migration: Conversion between formats
- Properties: Title, author, publisher, pages, ISBN, language, genre
- Genres: Fiction, Non-Fiction, Mystery, Thriller, Romance, Sci-Fi, Fantasy, Horror, Historical, Biography, Self-Help, Business, Philosophy, Religion, Science, Technology, Cooking, Travel, Poetry, Drama, Children, Young Adult, Academic
- Properties: Title, director, duration, rating, language, genre
- Genres: Action, Adventure, Comedy, Drama, Horror, Thriller, Sci-Fi, Fantasy, Romance, Documentary, Animation, Crime, Mystery, War, Western, Musical, Historical, Biographical, Family, Superhero
- Properties: Title, artist, album, duration, genre
- Genres: Pop, Rock, Jazz, Classical, Hip-Hop, Electronic, Country, Blues, Folk, R&B, Metal, Punk, Reggae, World, Alternative, Indie, Gospel, Soul, Funk, Disco
- Properties: Title, publisher, issue, language, genre
- Genres: News, Fashion, Technology, Science, Health, Business, Politics, Entertainment, Sports, Travel, Food, Home, Art, Literature, Education, Finance, Lifestyle, Automotive, Gaming, Music
- Properties: Title, host, episodes, duration, genre
- Genres: News, Technology, Business, Education, Entertainment, Comedy, True Crime, History, Science, Health, Politics, Sports, Music, Arts, Literature, Philosophy, Religion, Travel, Food, Lifestyle
"Italian", "English", "Spanish", "French", "German", "Portuguese", "Russian", "Chinese", "Japanese", "Korean", "Arabic", "Hindi", "Dutch", "Swedish", "Norwegian", "Danish", "Finnish", "Polish", "Czech", "Hungarian", "Romanian", "Bulgarian", "Greek", "Turkish", "Hebrew", "Persian", "Thai", "Vietnamese", "Indonesian", "Malay", "Filipino", "Latin", "Ancient Greek", "Sanskrit", "Old English", "Middle English", "Old French", "Old German", "Old Italian", "Old Spanish", "Old Portuguese", "Old Russian", "Old Chinese", "Old Japanese", "Old Korean", "Old Arabic", "Old Hindi", "Old Dutch", "Old Swedish", "Old Norwegian", "Old Danish", "Old Finnish", "Old Polish", "Old Czech", "Old Hungarian", "Old Romanian", "Old Bulgarian", "Old Greek", "Old Turkish", "Old Hebrew", "Old Persian", "Old Thai", "Old Vietnamese", "Old Indonesian", "Old Malay", "Old Filipino", "Old Latin", "Old Ancient Greek", "Old Sanskrit", "Other"
make debugqmake --versionmake --version- Error Handling: Robust error management
- Performance Monitoring: Performance metrics
- Memory Management: Optimized memory management
- Open
MultimediaLibrary.proin Qt Creator - Configure MinGW kit
- Compile and run directly from Qt Creator
- Use
qmake && maketo compile GUI - Use
./build/bin/MultimediaLibrary.exeto run - Use
make cleanto clean build files
- Backend: Pure C++17, no Qt dependencies
- Frontend: Qt 6, complete graphical interface
- Separation: Business logic separated from UI
- Modularity: Reusable and testable components
- β Robust backend architecture
- β Complete Qt interface
- β Advanced search system
- β JSON/XML data persistence
- π Grid performance optimization
- π Responsive design improvement
- π Smooth animations addition
- π User theme customization
- β Architecture: Design patterns implemented
- β Media Classes: Complete and functional hierarchy
- β Enum System: Typed genres and languages
- β Library Class: CRUD, search, filters, statistics
- β Persistence: JSON and XML working
- β Validation: Complete integrity checks
- β MainWindow: Complete main interface
- β MediaCard: Responsive card with fallback
- β Search System: Quick + advanced search
- β Add/Edit Dialog: Media creation and modification
- β Sidebar: Category navigation
- β Grid System: Adaptive and responsive grid
- β Theme System: Complete Material UI dark theme
- β Shortcuts: Keyboard shortcuts
- π Performance: Optimizations in progress
- β README: Complete project guide
- β Frontend Documentation: Frontend documentation
- β Backend Documentation: Backend documentation
- π Code Comments: Comments in code
- β Compilation: Working build system
- β Runtime: Stable and performant application
- β Error Handling: Robust error management
- π Integration Tests: Integration tests planned
Developed with β€οΈ using C++17, Qt 6.8.3 and Make π