### Overview
I am making a program that helps one learn languages. The program works by displaying
‘Cards’, a card is a fact that has an associated sound file and text. The user reads the text or listens to the sounds. Some cards have a delay that give the user a chance to respond to the card.
This program will be included in my software which helps one learn basic Thai. The cards can be orginised and enabled or disabled according to their type or tag. A tag will usually be something like a lesson number.
The program record how many times a card has been repeated and the user is able to decrease and increase the priority of cards which will make the display more often.
The user is also able to add and delate cards. The cards are to be saved to some kind of database file. The sounds should be saved in a separate folder. Not in the database.
The program also needs to work on windows and mac. So I think Java is the best way to make it but I am not sure. I have already created a sample database and sample screens. I have done this in SQL and .Net. This will help give the user a better idea of what he needs to do.
## Deliverables
### Overview
I am making a program that helps one learn languages. The program works by displaying
‘Cards’, a card is a fact that has an associated sound file and text. The user reads the text or listens to the sounds. Some cards have a delay that give the user a chance to respond to the card.
This program will be included in my software which helps one learn basic Thai. The cards can be orginised and enabled or disabled according to their type or tag. A tag will usually be something like a lesson number.
The program record how many times a card has been repeated and the user is able to decrease and increase the priority of cards which will make the display more often.
The user is also able to add and delate cards. The cards are to be saved to some kind of database file. The sounds should be saved in a separate folder. Not in the database.
The program also needs to work on windows and mac. So I think Java is the best way to make it but I am not sure. I have already created a sample database and sample screens. I have done this in SQL and .Net. This will help give the user a better idea of what he needs to do.
The program also needs an activation process, this helps to ensure that the customers don’t use it on many computers. The program should connect to my sql server to check for activation. The activation process needs to use some internal hardware id on their computer to verify which computer they are using. The program should ask to reactivate if it is copied to another computer
In the sample information I have sent, I have used the words cards, facts and sentences interchangeably. In the final program please use the word “Cards??.
The program has an export function. This allows a user to export the due cards to individual mp3 files which are renamed and copied to a folder. This allows the user to review the cards on his ipod or mp3 player. When exporting the program should rename the exported mp3 files so they play in the correct order.
I have attached some screenshots of what I want along with the project files and database files and so forth.
The project should be programmed in an opject oriented manner. If you are unable to create clean well structured code please don’t bid.
###
### Startup
Startup:
Check for activation
Connect to the web database
### Activate
Activate:
Connect to the web database
Send Email address, hardwarid and get result,
Save email address for checking activation
Results:
1 Too many activations from ip ??" Display message telling them to try again in an hours time.
2. No email address in the database ??" Tell them that their email was not found and to contact support <support@[login to view URL]>.
3. Too many activations for the email ??" Tell the customer that he has activated too many times and tell him to contact <support@[login to view URL]>.
9 ??" Already activated ??" Continue to main screen
10. Success ??" Change a variable in the program that it has been activated.
The program should auto check if connected to the net. The program should check for to make sure the hardware id has not changed cause if it has the user has copied it to another computer.
### Main window
Main window info
Needs a button at the top to make it float ontop of all the windows. Near the minimize button
Needs to be resizable. When resizing the white space with the text needs to expand and shrink. The other controls can stay in a fixed position
When the white space expands and decreases the font size needs to change to fit the text.
By default the font should be around size 20. But if the sentence is long the font needs to be resized so it can all fit onto the screen. The min font size should be about p10.
Needs the ability to be set translucent
Main window load
Load facts from the database with spGetGetCardsToDisplay
Put the system into stop mode
Start playing
Pass through the cards playing the sounds making sure the delays are included if delays are turned on
When all cards have been passed through grab new cards with spGetGetCardsToDisplay
Update the display
The options should be checked for the overall speed to see what speed the audios and delays need to be played at.
The appropriate sound for the fact type needs to be played between facts
If there is no text with the card. Audio only should be displayed.
Priority Up
Increase the priority of the fact by one in the database
Update the display too
Priority Down
Decrease the priority in DB
Undate display
Next
Cancel playing the sound for the current card and move onto the next one. If there is no more cards get new cards from the db.
Start
Cycle through the cards play the sounds, when finished get new cards with spGetGetCardsToDisplay
Stop
Stop playing the current card and don’t move to the next card
Suspend card
Set the card to suspended in the databse,
Cancel playing the card and move to next
Delete
Cancel the card from playing
Delete card from the db
Move no next card
Edit
Stop the cards from playing
Open the edit screen with the current card
Replay
Cancel the current sound playing and restart the card
Replay X Times
Pause the card : popup a box asking how many times to replay.
Resume playback and replay the card the specified amount of times
Replay Slow
Restart the sound replaying at the speed specified in the options under SlowPlayBackSpeed
Record
Record input from mike while they are pressing down the record button. Playback when the record button is released. Don’t move onto new cards while this is happening if the do not display new cards during recording is on.
Delay checkbox
If the delay text box is on make sure the delays are turned on. The delays are measured as a multiple of the length of the sound file.
### Drop down menu in main window
Open
Open a new deck. Load it and don’t start playing until one preses start. Should display the text of the first fact.
Create a new file
Ask user where to save a file. Once they have created the file they should go to the add card window
Save file
Ask then where they want to save. Save the database file along with the associated resources file.
Program Options
Open the program options screen
Export Facts as a playlist
Query the database input card types, card tags. And whether the user wants priorities. If the user wants to export priorities each sentence is exported a number of times then randomized.
If the insert delays is selected the procedure needs to insert blank mp3s between the files. The process needs to work out how much of a delay should be inserted. Then work out which blank mp3s need to be exported. I will attach blank mp3s for 2 seconds, 5s, 10s, 20s, 40s, 80s, 160s, 320, 640’s
The export should copy and rename the mp3s into a subfolder and number them so they can be played on a mp3 player.
So the files in the directory should look something like this after export.
[login to view URL]
[login to view URL]
[login to view URL]
…….
The user can just copy these files to his mp3 player and play them to review what he has learnt.
This process should not export sentences with no sound
When the export is finished it should open up the folder with all the files.
### Deck
Viiew cards ??" Shows the view cards
Deck options ??" Shows the deck options screen
Add cards ??" shows the add cards screen
### About
View Shortcut Keys:
Show the shortcut keys for :
Delete :
Edit :
Next :
Record :
Replay :
Replay Slow :
Replay X Times :
Start :
Stop :
Suspend :
The versin needs to show the appropriate shortcut keys for the operationg system (mac / win)
About language driller:
Show version number 1.0
And link to [login to view URL]
### Add Card
Add new card to the db.
Make sure the lenth of the sound file is added.
Mp3 and wav files should be accepted.
When pressing Ok, they should get a popup window saying it was ok and the forum should be replaced.
The audio file should be copied to the resource file.
The file name needs to be checked that it is unique.
Default priority should be 3
Default delay should be one
### Edit Card
Update the card in the db. Perform field validation. Ensure the length od the sound is added in seconds.
Replace the file in the resource file
### Options
Set the various options and save them to the db.
Card types
Add, will popup and ask them to select the sound file and the name for the Car type. It will then add it to the db. The sound file should be a mp3 or wav and should be saved to the files associated resources folder.
Edit
Update the name and change the sound file.
Remove
Tell them that all the cards with this type will be removed. Remove the card type and associated cards.
### About the storage file
The files should be in some kind of database format.
Each file should not store the audio files externally. There should be a separate folder for the audio files. Perhaps if the file name is [login to view URL] the audio files should be stored in a folder called EnglishVocab.resources.
### View Cards
Get all the facts from the database in some kind of grid control. The grid should have resizable columns. The grid should also show the sound file lenth which cannot be seen in the screen shot.
The user should be able to order by any field.
The search function should search every field. It should filter the results. So facts that do not match the results should disappear.
The heading of each column should be resizable
The user should be able to select multiple facts.
Edit.
Only one fact should be opened in the edit window.
Screen should be updated after the edit
Delete:
Delete the card from the db and refresh screen.
Reest
Set the delay to 0
Suspend
Set the suspended to 1
All cards that are suspended should have yellow as the background color of the row
Increase and Decrease priority
Decrease or increase priority by 1 update screen
Set delay
Popup a window asking for a number.
Update the delay of the selected cards
Refresh screen
Increase and Decrease Delay
Increase and decrease the delay by .1 refresh screen
Increase and Decrease Reps
Manually increase or decrease the reps by 1, refresh screen.