Mandatory assignment: Time registration

This is a preliminary version of the assignment. Look out for changes!!

19 March, new extras.

To get access to the exam in the elective courses you must complete a mandatory assignment in each of your elective courses.

This is the mandatory assignment for the course "Android application development".

You must show your solution to me on Monday 13 April 2015 (or earlier if you are ready).
Your solution must be approved by me before you can access the exam.

Time registration

Tteachers must register their working hours. Every day every teacher must register how many hours he spend on which tasks.

We already have a web-based systems to do the registrations. However, we want an Android based system as well.

Since we have to use the system on a daily basis (often more than once a day) user friendliness is most important, for example we would like to be able to make registrations with a few clicks.

In this version of the application there is a fixed number of tasks, you can call them "task1", "task2", etc.
In a later version there might be a more dynamic set of tasks.

User interface

The user interface should have at least two activities: Login + Registration

The Registration might look like this. However, feel free to make a nicer more user friendly user interface.

The "Sum" field is automatically updated then the user types in numbers (hours worked).

login     registration

Regarding the "Save" button

I would like to get rid of the "Save" button. Registrations should be saved automatically when the user leaves the screen, either by picking another date, or by pressing the devices "Home" or "Back" button.

If you keep the "Save" button, you should ask the user (some kind of dialog), if he/she would save the registrations before leaving the screen.

Technical requirements

InputType

All EditTexts must have a relavant InputType.

InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL could be relevant for the EditTexts where the user types the working hours.

Changing screen orientation

The application must not loose any data when the user changes the screen orientation from portrait to landscape and vice versa.

The graphical layout must look nice in both landscape and portrait mode. You may have to make special layouts for landscape mode (/res/layout-land) for some of your activities.

Menu

I want you to make an options menu, but I don't know what to put in the menu.

Ideas for the menu items: "Settings", "Help", "About", etc.

The only functionality you must implement is "change password" in the "Settings" dialog item.

For all other dialog item tt is enough to show the menu items and make a Toast when the user presses the item.

SharedPreferences for username + password

Use a SharedPreferences object to store the username + password for quick login: The username + password is readily available in the relevant fields in the Login Activity.

Hints & Help

Model classes

It might be helpful to make a few model classes (a plain Java class, NOT an Activity)

The model classes (feel free to modify) User and Registration are included in this zipped Android Studio project timeregistrationModelOnly.

Data access

We can not get access to real world data!
To solve this problem I have made a very-simple DAO (Data Access Object).

The DAO and a very simple Implementation (which keeps data in memory) is inclused in this zipped Android Studio project timeregistrationModelOnly.

Date handling

Some line that might be helpful

Skip Login Activity from the Activity stack

If the user taps the back bottom in the Registration Activity you may want to save the date + close the application without going back to the Login Activity.

This might be helpful Skip going back to direct parent activity when pressed back

Extras

If you have extra time (and want to learn more) you can try one or more of these: