Create an Adobe AIR application that allows someone to enter information about members of their extended family and then generate and print a deck of playing cards containing this information. A playing card would be generated for each individual entered. Each playing card would include a picture and some descriptive information about the individual.
The UI is fairly straightforward: show the cards entered in a table on the left-hand side of the screen, and on the right-hand side of the screen show a preview of the highlighted card in the table. In addition, allow the user to print the cards by creating a print job showing 8 cards per page (4x2 grid).
NOTE: the previous dependency upon AlivePDF has been removed, making this project much simpler.
Each playing card should include on the top half:
* the number and suite of the card (in the upper-left corner) and
* either a thumbnail image or short description of the person,
and on the bottom half of the card:
* the person's name
* birth date+place
* marriage date+place
* death date+place
* spouse's name
* father's name
* mother's name
* a "fun fact" -- e.g., their favorite food or book
(1) The main screen should contain two components: a main menu, a table component, and a card preview component.
* Main Menu:
* * File: New, Open, Close, Save, Save As, Print, Exit
* New, Open, Close, Save, Save As: allows the user to create and save decks - sets of cards. A deck should be saved as an XML file, with one element for each card, and sub-elements for each piece of information about each card.
* Print - print the cards using a FlexPrintJob with 8 cards per page (4x2 layout).
* Edit: Add, Edit, Delete -- add card, edit card, delete card
* Table component: shows one row per card, should include columns for the person's name, birth, marriage, death, spouse, father, mother, fun fact, and description/image. The description/image column should display an icon of a document if a description has been entered for the person, an icon of a camera if a picture has been uploaded for the person, or nothing if neither a description or a picture has been entered for the person.
* Card preview component: should display approximately what the selected card in the table component will look like when it is printed.
(2) Edit card: dialog to allow the user to enter fields for one card. Should include a button to allow them to upload an image for the person. If they upload an image they can't also enter a description (since there's only room for either the image or the description on the printed card.
(3) Print dialog: Create a FlexPrintJob with 8 cards per page, 4 cards across and 2 cards high in landscape mode. The cards should be numbered from 1 .. N starting with 1. The first four cards are numbered 1 (the first is 1-heart, the next is 1-diamond, the next is 1-spade, and the next is 1-club). The next four are numbered 2, the next four are numbered 3, and so on. If the total number of cards is not evenly divisible by 4, then the 1 to 3 remaining cards are assigned to be jokers. Note that we're not going to print Jack, Queen, or King; instead we'll print 11, 12, and 13. (And we might print 14, 15, 16, ... if the user has entered a lot of cards.)