By: Team W14-B1
Since: Jun 2016
Licence: MIT
- 1. Introduction
- 2. Who should use our application
- 3. About
- 4. Quick Start
- 5. The User Interface of iContacts
- 6. Why iContacts?
- 7. Features
- 7.1. Viewing help :
help
- 7.2. Adding a person:
add
- 7.3. Adding a reminder:
addreminder
- 7.4. Viewing details of a contact:
details
- 7.5. Listing all persons :
list
- 7.6. Sorting all persons :
sort
- 7.7. Exporting selected contacts :
export
- 7.8. Importing contacts from file :
import
- 7.9. Editing a person :
edit
- 7.10. Editing a reminder:
editreminder
- 7.11. Frequently Viewed Contacts
- 7.12. Adding a nickname to a person :
nickname
- 7.13. Adding Display picture for each person :
displaypic
- 7.14. Displaying location to a contact’s address:
location
- 7.15. Emailing to a group of people having a particular tag:
email
- 7.16. Locating persons by name:
find
- 7.17. Finding all people associated with a particular Tag:
viewtag
- 7.18. Finding all people by name and associated with one or more tags:
filter
- 7.19. Deleting a person :
delete
- 7.20. Deleting a reminder:
deletereminder
- 7.21. Selecting a person :
select
- 7.22. Listing entered commands :
history
- 7.23. Undoing previous command :
undo
- 7.24. Redoing the previously undone command :
redo
- 7.25. Clearing all entries :
clear
- 7.26. Changing the theme :
theme
- 7.27. Exiting the program :
exit
- 7.28. Saving the data
- 7.29. Toggling between reminders panel and browser:
toggle
- 7.1. Viewing help :
- 8. FAQ
- 9. Command Summary
- 10. Coming in V2.0
1. Introduction
iContacts is a Command Line Interface (CLI) application that helps you manage your contacts easily. You can use iContacts to add, edit and delete contacts. It has an easy-to-use search function to find specific contacts quickly. It also provides reminders for upcoming birthdays of contacts within the application and allows you to create your own reminders for upcoming events. It is designed for university students to effectively manage their university life by using one single app through which they can manage reminders, details of contacts, email, and maps.
2. Who should use our application
This application is targeted towards University students, aiming to meet their needs throughout their university life, and hopefully beyond. University students meet many people in the university, such as project group members, tutors, lecturers, friends and other connections. Nowadays it is important for students to build connections with other people, as connections may also help students for their future career after graduation. Since the students meet a lot of people, they may not be able to remember all the information about the people they met. Therefore, iContacts aims to help students to store and manage their contacts easily. Not only that, a student can also keep in track of the deadlines through the reminders features. They will also be able to easily share their contacts with other people just by typing a simple command. Hence, through iContacts university students can make their university life easier to manage with all the various features.
-
User Profile
-
University Students
-
Students part of many CCA clubs and committees
-
Students taking role of Teaching Assistant/Tutor
-
Students who is interning and has colleagues
-
Students having close friends and family
-
3. About
This User Guide aims to help you get started with iContacts. It explains the features of iContacts in detail, and will teach you how to use it effectively and efficiently. You will be able to understand this User Guide without the need to have any technical knowledge.
4. Quick Start
-
Ensure you have Java version
1.8.0_60
or later installed in your Computer.Having any Java 8 version is not enough.
This app will not work with earlier versions of Java 8. -
Download the latest
iContacts.jar
here. -
Copy the file to the folder you want to use as the home folder for your Address Book.
-
Double-click the file to start the app. The GUI should appear in a few seconds (Refer to Figure 1).
Figure 1: iContacts GUI.
-
Type the command in the command box and press Enter to execute it.
e.g. typinghelp
and pressing Enter will open the help window. -
Some example commands you can try:
-
list
: lists all contacts -
add
n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01
: adds a contact namedJohn Doe
to the Address Book. -
delete
3
: deletes the 3rd contact shown in the current list -
exit
: exits the app
-
-
Refer to the Features section below for details of each command.
5. The User Interface of iContacts
5.1. The Three Lists
-
Contacts List
It allows user to see the list of off contacts, and refer to them while adding, deleting or updating any contact. The list of contacts can be changed by searching, filtering and sorting the contacts. In the list one can view the most unique details about the contact, like their name, personalised nickname, tags and phone number.
-
Birthdays List
With this list right on the home screen it will be impossible to forget the birthday of your contacts. This list shows the birthday of all contacts in this month and a special icon for those whose birthday is today or tomorrow.
-
Reminder List
Find all your reminders in sorted manner here. The ones with
Red
indicate the due date is today,Yellow
having due date in 3 days andGreen
for the rest. The passed events have no colour.
5.2. The Two Panels
-
Browser Panel
It allows you to see the webpage of a contact or the location in Google maps.
-
Details Panel
View more details of a contact by selecting him in this panel. It shows other details like, email, birthday and address.
5.3. The One Command Box
This is where the Magic happens, type in the command and get instant results for the various commands in result box.
6. Why iContacts?
-
Convenient
-
Fast
-
One stop place to manage all university related activities
7. Features
Command Format
-
Words in
UPPER_CASE
are the parameters to be supplied by the user e.g. inadd n/NAME
,NAME
is a parameter which can be used asadd n/John Doe
. -
Items in square brackets are optional e.g
n/NAME [t/TAG]
can be used asn/John Doe t/friend
or asn/John Doe
. -
Items with
…
after them can be used multiple times including zero times e.g.[t/TAG]…
can be used ast/friend
,t/friend t/family
etc. -
Parameters can be in any order e.g. if the command specifies
n/NAME p/PHONE_NUMBER
,p/PHONE_NUMBER n/NAME
is also acceptable.
7.1. Viewing help : help
Format: help
7.2. Adding a person: add
Adds a person to the address book
Format: add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [b/BIRTHDAY] [t/TAG]…
|
Examples:
-
add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01
-
add n/Betsy Crowe t/friend e/betsycrowe@example.com a/Newgate Prison p/1234567 b/21/10/1995 t/criminal
7.3. Adding a reminder: addreminder
Adds a reminder to iContacts.
Format: addreminder rd/REMINDER d/DATE ti/TIME
Examples:
-
addreminder rd/Dinner with family d/10/10/2017 ti/18:00
(Refer to Figure 2) -
addreminder rd/CS2105 Assignment d/26.10-2017 ti/23:59
Figure 2: Reminder for a dinner with family on 10/10/2017 at 18:00.
The reminder cells are colored differently according to the urgency of the event:
Figure 3: A reminder of an event happening today.
Figure 4: A reminder of an event happening within three days.
Figure 5: A reminder of an event happening more than three days later.
|
7.4. Viewing details of a contact: details
Shows the full contact information of a person in the address book.
Format: details INDEX
Examples:
-
details 1
Show the full contact information of the person at index 1 (Refer to Figure 6).
Figure 6: The full contact information of the person at index 1.
7.5. Listing all persons : list
Shows a list of all persons in the address book.
Format: list
7.6. Sorting all persons : sort
Sorts and shows a list of all contacts in the iContacts alphabetically.
Format: sort
7.7. Exporting selected contacts : export
Exports selected contacts in iContacts.
Format: export r/RANGE p/PATH
Types of range inputs:
Examples:
-
list
export r/all p/c:\exports\classmates
Exports all the contacts to the file classmates.xml in path c:\exports. -
export r/1-4 p/c:\exports\classmates
Exports the contacts from index 1 to index 4 to the file classmates.xml in path c:\exports. -
export r/1-4,6,8 p/c:\exports\classmates
Exports the contacts at index 1 to index 4 with index 6 and index 8 to the file classmates.xml in path c:\exports.
7.8. Importing contacts from file : import
Imports contacts into iContacts.
Format: import p/PATH
Example:
-
import p/c:\exports\classmates.xml
Imports all the contacts stored in the file classmates.xml* into iContacts.
7.9. Editing a person : edit
Edits an existing person in the address book.
Format: edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [b/BIRTHDAY] [t/TAG]…
Examples:
-
edit 1 p/91234567 e/johndoe@example.com
Edits the phone number and email address of the 1st person to be91234567
andjohndoe@example.com
respectively. -
edit 2 n/Betsy Crower t/
Edits the name of the 2nd person to beBetsy Crower
and clears all existing tags. -
edit 3 b/
Clear the birthday of the 3rd person.
7.10. Editing a reminder: editreminder
Edits an existing reminder in iContacts.
Format: editreminder INDEX [rd/REMINDER] [d/DATE] [ti/TIME]
Examples:
-
editreminder 1 rd/Drink coffee
Edits the content of the 1st reminder to beDrink coffee
. -
editreminder 3 d/25/12/2017 ti/19:00
Edits the date and time of the 3rd reminder to be25/12/2017
and19:00
respectively.
7.11. Frequently Viewed Contacts
Shows the user a list of top five contacts which the user has viewed the most
Examples:
If the contact Roy Balakrishnan
is selected
once, he will be moved to the top of the list as his popularity counter is more than the rest of the contacts.
This can be seen in the image below:
Figure 7: Roy Balakrishnan
is moved to the top of the list.
7.12. Adding a nickname to a person : nickname
Adds a nickname to an existing person in the address book.
Format: nickname INDEX [NICKNAME]
Examples:
-
nickname 1 Eddie
Adds a nicknameEddie
to the 1st person. -
nickname 1
Removes the nickname from the the 1st person.
7.13. Adding Display picture for each person : displaypic
Adds a Display Picture to an existing person in the address book.
Format: displaypic INDEX [PATHOFIMAGE]
Examples:
-
displaypic 1 C:\Users\Admin\Desktop\Sem 3 Mods\CS2103T\mypic.jpg
Adds themypic.jpg
at the given path to the person atINDEX
1 as his display picture (Refer to Figure 8) -
displaypic 2
Removes the existing display picture for the person atINDEX
2
Figure 8: Adds a picture to the first person.
7.14. Displaying location to a contact’s address: location
Uses Google Maps to show location of the address of the selected INDEX
Format: location INDEX
Examples:
-
location 2
Returns location of the address of person atINDEX
2 (Refer to Figure 9)
Figure 9: Displays the location of the second person.
7.15. Emailing to a group of people having a particular tag: email
Opens up the link to send email to all people of having a particular tag. A drafter email with subject, body and recipients is opened in default browser
Format: email s/SERVICE to/KEYWORD [sub/SUBJECT] [b/BODY]
Examples:
-
email s/gmail to/cs2103 sub/Meeting body/Morning 10 am ` Allows to send email after drafting message to everyone with the tag `cs2103
in the default browser
7.16. Locating persons by name: find
Finds persons whose names or nicknames contain any of the given keywords.
Format: find KEYWORD [MORE_KEYWORDS]
Examples:
-
find John
Returnsjohn
andJohn Doe
-
find Betsy Tim John
Returns any person having names or nicknames Betsy
, Tim
, or John
7.17. Finding all people associated with a particular Tag: viewtag
Finds all people who have the tag given in the keyword.
Format: viewtag KEYWORD
Examples:
-
viewtag cs2103
Returns all people who have the tagcs2103
associated with them -
viewtag friends
ReturnsAlex
andBernice1 as they are having the tag `friends
(Refer to Figure 10)
Figure 10: Listing all contacts with the tag friends
.
7.18. Finding all people by name and associated with one or more tags: filter
Finds persons whose names and/or tag(s) contain any of the given keywords.
Format: filter [n/NAME] [t/TAG]
Examples:
-
filter n/John
Returnsjohn
andJohn Doe
-
filter n/John n/Doe
or
filter n/John Doe
Returns any person with bothJohn
andDoe
in his name. -
filter t/friends
Returns any persons with the tagfriends
. -
filter t/friends t/colleagues
or
filter t/friends colleagues
Returns any person with the tagfriends
andcolleagues
. -
filter n/John t/friends
Returns any person having the nameJohn
and with the tagfriends
.
7.19. Deleting a person : delete
Deletes the specified person from the address book.
Format: delete INDEX
Examples:
-
list
delete 2
Deletes the 2nd person in the address book. -
find Betsy
delete 1
Deletes the 1st person in the results of thefind
command.
7.20. Deleting a reminder: deletereminder
Deletes a specified reminder from iContacts.
Format: deletereminder INDEX
Examples:
-
deletereminder 1
Deletes the 1st reminder in iContacts. -
deletereminder 20
Deletes the 20th reminder in iContacts.
7.21. Selecting a person : select
Selects the person identified by the index number used in the last person listing.
Format: select INDEX
Examples:
-
list
select 2
Selects the 2nd person in the address book. -
find Betsy
select 1
Selects the 1st person in the results of thefind
command.
7.22. Listing entered commands : history
Lists all the commands that you have entered in reverse chronological order.
Format: history
Pressing the ↑ and ↓ arrows will display the previous and next input respectively in the command box. |
7.23. Undoing previous command : undo
Restores the address book to the state before the previous undoable command was executed.
Format: undo
Undoable commands: those commands that modify the address book’s content ( |
Examples:
-
delete 1
list
undo
(reverses thedelete 1
command) -
select 1
list
undo
Theundo
command fails as there are no undoable commands executed previously. -
delete 1
clear
undo
(reverses theclear
command)
undo
(reverses thedelete 1
command)
7.24. Redoing the previously undone command : redo
Reverses the most recent undo
command.
Format: redo
Examples:
-
delete 1
undo
(reverses thedelete 1
command)
redo
(reapplies thedelete 1
command) -
delete 1
redo
Theredo
command fails as there are noundo
commands executed previously. -
delete 1
clear
undo
(reverses theclear
command)
undo
(reverses thedelete 1
command)
redo
(reapplies thedelete 1
command)
redo
(reapplies theclear
command)
7.25. Clearing all entries : clear
Clears all entries from the address book.
Format: clear
7.26. Changing the theme : theme
Changes the theme of the address book to a specific theme.
Format: theme THEME
Examples:
-
theme day
Changes the theme today
(Refer to Figure 11).
Figure 11: Theme changed to day
.
7.27. Exiting the program : exit
Exits the program.
Format: exit
7.28. Saving the data
Address book data are saved in the hard disk automatically after any command that changes the data.
There is no need to save manually.
7.29. Toggling between reminders panel and browser: toggle
Toggle between the reminders panel (Refer to Figure 12 below) and the browser (Refer to Figure 13 below) as needed.
The reminders panel would display reminders for upcoming birthdays amongst the contacts in the current month and
also reminders that users can set for themselves. The birthday reminders and reminders are
displayed chronologically.
Format: toggle
Figure 12 : The reminders panel.
Figure 13 : The browser panel.
Figure 14 : The default background.
8. FAQ
Q: How do I transfer my data to another Computer?
A: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous Address Book folder.
9. Command Summary
-
Add
add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [b/BIRTHDAY] [t/TAG]…
e.g.add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 b/21/10/1995 t/friend t/colleague
-
Add Reminders :
addreminder rd/REMINDER d/DATE ti/TIME
e.g.addreminder rd/Dinner with family d/25/12/2017 ti/18:00
-
Clear :
clear
-
Delete :
delete INDEX
e.g.delete 3
-
Delete Reminders :
deletereminder INDEX
e.g.deletereminder 3
-
Edit :
edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [b/BIRTHDAY] [t/TAG]…
e.g.edit 2 n/James Lee e/jameslee@example.com
-
Edit Reminders :
editreminder INDEX [rd/REMINDER] [d/DATE] [ti/TIME]
e.g.editreminder 2 rd/Change reminder d/01-01-2017 ti/09:00
-
Nickname :
nickname INDEX [NICKNAME]
e.g.nickname 1 Jamie
-
Find :
find KEYWORD [MORE_KEYWORDS]
e.g.find James Jake
-
ViewTag :
viewtag KEYWORD
e.g.viewtag enemy
-
Display Picture :
displaypic INDEX [PATHOFIMAGE]
e.g.displaypic 2 C:\Users\Admin\Desktop\Sem 3 Mods\CS2103T\mypic.jpg
-
Email Command :
email s/SERVICE to/TAG [sub/SUBJECT] [body/BODY]
e.g.email s/gmail to/cs2103 sub/Submission body/Monday Deadline
-
Filter :
filter [n/NAME] [t/TAG]
e.g.filter n/John t/friends
-
List :
list
-
Sort :
sort
-
Help :
help
-
Select :
select INDEX
e.g.select 2
-
Details :
details INDEX
e.g.details 2
-
Location :
location INDEX
e.g.location 2
-
History :
history
-
Undo :
undo
-
Redo :
redo
-
Toggle :
toggle
-
Theme :
theme THEME
e.g.theme day
10. Coming in V2.0
10.1. Search Command
Users will be able to search for persons fulfilling all keywords provided by the users.
This allow a more focused and efficient search for users.
Format: search KEYWORD [MORE KEYWORDS]
KEYWORD
is either n/PHONE
or t/TAG
Examples:
-
search n/Dickson t/volleyball
Returns all persons with name matchingDickson
(case-insensitive) and tag matchingvolleyball
(case-insensitive). -
search t/friend t/NUS t/Computing
Returns all persons having tagsfriend
,NUS
, andComputing
(all case-insensitive).
10.2. List Themes command
Users will be able to switch to different color themes. They will be able to choose from a list of themes.
This allows users to better customise their address book.
10.2.1. List Theme
Format: listTheme
A window will pop up displaying the list of available themes. Users need only take note of the theme name of the theme they are interested in for the next step.
10.3. Find by similar keywords
Users would be able to obtain a list of contacts by entering similar keywords that is not identical.
This is an enhancement to the existing find
command, so format of command would remain the same.
Examples:
-
find john
Returnsjohn
andJohn Doe
andJon
-
find delylah justin
One possible list of contacts returned might bedelilah
,justinn
andJustin Lim
.
10.4. Authentication
Users would be required to provide authentication to access the application. This is so as to ensure the privacy of the contact information within the application.
Users would be prompted to sign up when they use the application for the first time.
To change the password, users need only type the command reset
. Users would then be prompted for the new password.
10.5. Integration with online Cloud Storage services
Users would be able to store and synchronize their contacts in the application within popular Cloud Storage services such as Google Drive.
Users would be required to provide authentication for the Cloud Storage services of their choice, and then any changes to the contacts of the application
would be synchronized with the copy within the Cloud service.
This way, users would have a backup copy of their contacts. Users would also be able to access their contacts from other devices, bringing about portability.
10.6. Enhance UI
The current User Interface (UI) doesn’t seem visually appealing to the user, which is why I plan to improve the design of the product. I aim to make it in the form of a chatbot where each command typed is a message sent by us and the result of command is the message sent by the product to us. This will make the user feel more connected to the product as it adds a personal touch where user feels like he is interacting directly with a person. This enhancement will be perfectly suitable for the target audience which is the university students as they will be more comfortable using an application which works similar to a messaging platform.
10.7. Flexibility in Commands
Currently, iContacts is limited in terms of the command keyword that needs to be typed in for executing a command. For e.g. in order to view the location of a contact the LOCATION
keyword needs to be used and using any other keyword instead of that will cause failure of the command.
To make the product more user friendly and provide more flexibility to the user, I aim to integrate the Natural Language Processing(NLP) library which will allow the successful execution of the command even when keywords similar to LOCATION
are typed, for e.g. MAP
, DIRECTION
, LOCATE
.