Skip to content

A UWP MVVM App for viewing and managing albums and images, built with VS 2015 update 3.

License

Notifications You must be signed in to change notification settings

Avi-Meshulam/MyAlbum

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MyAlbum

A UWP MVVM App for viewing and managing albums and images, built with VS 2015 update 3.

alt text

Features/Technologies/Tools

  • JSON Serialization - Auto save changes in Windows isolated storage.
  • MVVM - Implemented independently, without using any 3rd party library.
  • Binding - using the newer "x:bind".
  • Variable Sized Wrap Grid View (for display of characters in side panel).
  • Back/Forward navigation
  • Windows Location Service
  • Adaptive Display
  • Data Validations using Data Annotations
  • Content dialogs
  • Menu Flyouts
  • Custom message dialog
  • Live Tiles
  • Dark/Light Themes

...and many other tricks & goodies :)

The application consists of 3 projects:

  • MyAlbum - GUI Client (UWP application)
  • MyAlbum.BL - Business logic layer (UWP class library)
  • MyAlbum.DAL - Data access layer (UWP class library)

First Run

Live Tiles

Adaptive Display

Adaptive Display

Operations

1. Add/Delete album

Add Album

New Album

Delete Album

Delete Album

2. Edit album properties (name & "is main?")

Edit Album

  • Main album is displayed when the app starts and its name is displayed in bold in "Albums" menu.
  • Current album is identified by a check mark in "Albums" menu.

3. Add/Delete photos (file picker, drag & drop, camera)

Drag & Drop

Drag & Drop

Delete Photo

Delete Photo

4. Edit photo details in 2 places - directly in photo card or in side panel

Edit Photo Details

Edit Photo Details

Data Validation

Validation

Set Location

Set Location

5. Move photos between albums

Move Photo

6. Add/Delete characters in photo

Add Character

7. Toggle between Grid view and Flip view

Toggle View

8. Toggle between Dark theme and Light theme

Toggle Theme

9. Navigate using menu and Back/Forward buttons

Navigation

Menu

Albums - Navigation between albums or creation of a new one

  • Main Album

  • Album X

  • Album Y

    (...)

  • New Album...

Add Photos... - Open file picker to add photos to current album

Capture - Open camera app to take a picture and add it to current album

Photo

  • Details - Open photo details side panel (if not already open)
  • Move To... - Move selected photos to another album
  • Delete - Delete selected photos

Exit

Models

  • Model<T> - An abstract base class for Album & Photo models.
  • Album - Reflects an Album as it exists in storage. Contains a collection of photos.
  • Photo - Reflects a Photo as it exists in storage. Contains a collection of characters
  • Character - Reflects a character in photo (resembles a facebook tag, but simpler). Saved as part of its Photo container.

BL Diagram

View Models

  • ViewModelBase<T> - An abstract base class for Album & Photo ViewModels, where T is the model.
  • MainViewModel - Controlls Main view
  • AlbumViewModel - Represents and controlls an Album model and contains a collection of PhotoViewModels
  • PhotoViewModel - Represents and controlls a Photo model and contains a collection of CharacterViewModels
  • CharacterViewModel - Represents a Character model

UI Diagram

Views

  • Main: Container for all other views. Hosts app title, menu, navigation buttons and theme button. The rest is a frame used as a placeholder for other views (currently only album).
  • Album: Displays photos in a grid or flip view. Contains the photos edit side panel, which can be pinned.

DAL

DAL Diagram

Storage Location:

%LOCALAPPDATA%\Packages\{GUID}\LocalState

Folders (~tables):

  • Albums
  • Photos

Releases

No releases published

Packages

No packages published

Languages