In addition to displaying appointments, tasks and memos, Pimlical/Android can also display contacts. Contacts are stored in a separate contacts database which is separate from the main Android Contacts Database. This ensures that contacts are not stored on the cloud and therefore kept private. It also makes it possible to reliably sync that database with a parallel contacts database in Pimlical/Desktop using Pimlical/Desktop's DirectSync.
There are provisions for importing and exporting the database in standard vCard format, and also to import all contacts in the Android contact database. There is a folder, PimlicalContacts which is a sub-folder of the main Pimlical folder. The contacts database is named Contacts.dat and there will also be backup files there (Contacts.bk1, Contacts.bk2 etc.).
Appointments or tasks can also be linked to contacts - with Pimlical automatically using the local Pimlical Contacts database if it exists and the native Android Contacts database otherwise.
To display the list of contacts, use Menu | View/Edit Contacts.
Remember that menu items are in fact a preference item under: Menu | Commands/Functions | MenuCommandsAndOrder. With this release, the menu | View/Edit Contacts item should be displayed on startup since this version always forces all menu items to display on installation.
When you first invoke the contacts application, there will be no database and Pimlical will display a prompt providing you with the option of automatically importing all your existing contacts in the Android Contacts database, or proceeding with an empty contacts database. You can setup your contacts database by importing a vCard file (a vCard file for importing should be placed in the Pimlical/PimlicalContacts folder). Remember that even with the vCard standard, there are many applications that don't implement it properly, or have proprietary extensions that are not covered by the standard. However, all the most common fields (name, company, phone, email, address, notes etc.) should import properly. Contact Photos in the Android contacts database should import without difficulty.
A list is then displayed of all the contacts (see Contact Preferences for sorting options - first/last/company). At the top of the dialog, Pimlical displays the number of visible records, followed (if different) from the total number of records in the database. Since inactive and deleted records are normally not displayed, the second number is usually displayed and may be significantly larger. The category that is currently being displayed is also noted (unless all categories are visible) along with a notation if deleted or inactive records are being displayed.
There is a Fast Scroll feature on this list - drag the small nub that appears on the right-hand side of the contact list to quickly scroll through all the items of the list. As you do that, the matching first letter of the contacts is displayed in the center of the screen.
When sorting contacts, Pimlical always sub-sorts the list as follows:
Last Name - sorts by last name, then by first name, then by company
First Name - sorts by first name, then by last name, then by company
Company - sorts by company, then by last name, then by first name
A completely blank field always sorts after everything else regardless of whether the sort is ascending or descending. So the list will always start with those items that have a value present in the field and after the last item that has a value for the field will be all the items that have a blank field. Pimlical attempts to identify those items for you by placing some other useful information in parentheses. For example, if sorting by last name, and there is no last name, nor first name, the company name (if present) will be displayed in parentheses.
Pimlical displays the primary phone and address information for each contact. You can override this by setting a Preferred Label for the item which will then cause items associated with the preferred label to be displayed instead.
There are several buttons at the top of the contact selection list to aid in the navigation and selection of contacts:
[↑L+] This button controls the sorting of contacts. tap this button and you have six sort options - first name, last name and company name, either of which can be in either ascending or descending order. If you briefly tap this button, the database is temporarily sorted the way you select, but the default sort of the database remains the same as that set in Preferences. If you long-press this button, you can also set the selected sort as the new permanent sort preference. The arrow indicates whether the sort is ascending (up arrow) or descending (down arrow). The letter is either L-astName, F-irstName, or C-ompany.
 The green plus button is used to create a new contact. A new contact is created in the default contact category (see preferences) and the Edit dialog is opened up so you can enter all the appropriate information for the contact
 The red Find button is used to select just those contacts that match on the specified search string.
 The green checkmark button simply exits the contacts application and returns to the Pimlical Calendar.
[ All+] The All button displays all contacts, removing any other filters with the exception that inactive and deleted records are not displayed (but category, text filter etc. are removed). A long-press on this button displays all contacts in the database, including inactive and deleted records.
 The Category button pops up a list of available contact categories for selection. Tap on a category to select just those contacts in that category, or tap the CANCEL button to display all categories. There is also a New button to create a new category. This function only displays contact categories that are present in the contacts database, or any new categories created in the current session.
 The Favorites button displays all your favorite contacts (as indicated by a checkbox in the Edit Dialog). Typically, you would mark any contacts you need on a regular basis as Favorites. If you are importing contacts from the native Android contacts database, any contacts starred in that database will automatically be flagged as favorites.
 The Recent button displays all the contacts that have been recently accessed in reverse chronological order, starting with the most recent contact. This is very useful when invoking the contacts application and you want to look at a contact that you were just looking at earlier the same day. Each contact is displayed with the time you accessed you contact (for today's date) or the date (for items accessed yesterday or earlier). This list is limited to the number of days specified in the corresponding Contact Preference). You can also long-press this button to display all contacts in reverse chronological order of access.
 This ScrollTo button allows you to scroll the list very quickly to the first contact which begins with the designated location string. For example, if you are sorting by last name in ascending order and type in Dew then the list will immediately scroll to the first entry whose last name begins with Dew.
 This button pops up a menu of general commands for the contacts database (see section below)
Viewing a Contact
To view a Contact, briefly tap on the item to the right of the contact image (contacts that have no contact image display a generic image of a person). Tapping the contact image itself will bring up the contact for editing. The View screen shows almost all the details for the contact and has option buttons to edit and delete the contact as well.
When viewing a contact, you can tap the icon at the end of the line to invoke the corresponding function - for example, tap the Phone icon to dial that contact or tap the Text Message icon to send a text message. Tap the Envelope icon to send email to that contact, or tap the Map icon to invoke the mapping function with the selected address of the contact.
Editing a Contact
To edit a Contact, briefly tap the Contact image in the list (contacts that have no contact image display a generic image of a person). You can also long-press an item in the contacts list and select EDIT CONTACT from the popup list of commands. Also, if you are viewing a contact, there is an EDIT button which you can tap to edit the contact. The contact is then displayed in the Edit dialog where all fields can be modified.
For the phone/email/address/custom fields, only those fields which have values are displayed. There is a green [ + ] button at the end of the header line for those fields which will add a new, blank field so you can enter a new item. To remove an existing item, tap the red [ - ] button at the end of the line associated with that item.
For those fields, there is also a label button where you can pick a standard label or provide a custom label of your choice. Also, when selecting a label, you can also check the box to mark it as a Preferred label which means that items that have this label should be displayed in the Contacts list. For example, you might have an address marked Work, but want the address associated with the custom label "Vacation" to be displayed instead. In that case, you would check the box for preferred label and then select (or create) the custom label for Vacation.
If you call up a deleted contact, there will be a Deleted checkbox near the bottom of the dialog and it will be checked. You can uncheck that checkbox to effectively Undelete the item and return it as a normal item.
The green [ + ] button also supports a special function on a long-press: a long press will shuffle/rotate all the items in that section by one position. For example, if you have three addresses, the first address becomes the last address and the second and third addresses now become the first and second addresses. If there is no preferred label, the first item in the phone/email/address section is displayed by default, so you can use this function if necessary to put the desired item in the first position.
Deleting a Contact
To delete a contact, long press the contact in the list. A selection list then appears - select Delete Contact . Note that this does not remove the contact - it merely marks the contact as deleted. The contact is no longer displayed in the list of contacts unless deleted records are being displayed. This is done so that the activity of deleting the contact can be carried through to Pimlical/Desktop on the next DirectSync. If you are not using DirectSync, you can remove all deleted records using a menu command. Note that this means you can also undelete the contact by simply displaying deleted records and calling it into the Edit dialog and unchecking the Deleted checkbox.
Finding Contacts - Tap the Find Button: [ ]
The Find dialog, has checkboxes so you can control which fields are searched. By default, all text fields are searched, but you can uncheck the All Fields checkbox and then check individual boxes below to specify the search fields. There is also a checkbox to force the match to be case-sensitive (by default the searches are not case-sensitive). A long press on this Find button will invoke the search on all contacts in the database (including inactive and deleted contacts). Otherwise, the find function only operates on the currently selected list of contacts.
Restore from Backup
To restore the contact database from a backup copy, select the Restore Contacts item in the Contacts menu. A list is then displayed of all backup copies of the contacts database. The most recent backup will have the extension bk1, then bk2, bk3, etc. There will also be a weekly and monthly backup as well of the contacts database (how many backups are taken is controlled by the general preference: NumberOfBackups. There is also a preference that controls how often the backups are made (BackupLocalContacts -- the default value is 1 meaning every day).
When the contacts list is being displayed, you can long-press any item in the list to popup a list of commands that will only affect the selected item:
This function brings up the Edit dialog with the selected contact.
This function brings up the Edit dialog with a duplicate copy of the currently selected contact.
This function takes the name and address of the currently selected contact and places it on the clipboard. It can then be pasted into other applications
This function deletes the currently selected contact. There is no confirmation dialog, but neither is one really needed as the record still exists in the contacts database. If you long-press the [All+] button, deleted records will be displayed, and the record you just deleted will be displayed at the top of the list. You can always undelete a record by calling it into the Edit dialog and unchecking the deleted checkbox.
Dial Preferred #
This function looks for a preferred label associated with the selected contact and then attempts to locate the phone number associated with the preferred label. If there is no preferred label, or if there is no phone number associated with the preferred label, this command functions identically to the one below. If it is found, the phone/dial function is invoked using that phone number.
Dial Phone #
This function will dial the phone number associated with the selected contact. If there is more than one telephone number, a selection list is displayed of all the phone numbers associated with the contact.
Share Contact (Text)
This function shares most of the fields of a contact as a "text" type which can be then handled by any Android application that has registered itself to handle the text type. The fields shared include name fields, company, phone, email, address, company, note and any custom fields.
This function invokes any registered, Android Email application to send an email to the email address of the selected contact. If there is more than one email address, a selection list of all email addresses for the contact is displayed.
Display Address in Map
This function invokes any registered, Android application that can handle maps to display the address associated with the selected contact. If there is more than one address, a selection list of all addresses is displayed for that contact.
Menu Commands:  Button
Tapping the menu Contacts button brings up a list of commands:
Replace Contacts (VCF)
This function replaces the existing contacts database with a new database that is contained in a vCard file (vCard files usually have a VCF extension). Enter the name of the vCard file that you wish to import (or Cancel out of the operation).
Merge Contacts (VCF)
This function merges the existing contacts database with a contacts database that is contained in a vCard file. Specify the name of the vCard file to merge and at the end of the operation, the database will then display both the existing contacts and the newly merged contacts.
Export Contacts (VCF)
This function exports the currently displayed records in the existing contacts database into a vCard file. Pimlical provides a default filename consisting of Contacts plus a date/time stamp in YYYY_MM_DD_HH_MM_SS format. It is important to note that only displayed contacts are exported. If you wish to export the entire database, be sure to long-press the [All+] button first, so that all records are displaying.
Backup Contacts (DAT)
This function backs up the existing contacts database. Up to ten sequential backups (bk1, bk2, bk3 etc. -- the default is five) plus a weekly and monthly backup will be made (this is controlled by general preferences (NumberOfBackups, and WeeklyMonthlyBackups). The backup files are in the identical format to the primary contacts database file (Contacts.dat).
Restore Contacts (DAT)
This function restores the existing contacts database from a backup copy. Pimlical displays all the available backup files along with the date/time stamp for when the file was saved, and the size of the file in bytes. These are displayed in the order: bk1, bk2, bk3....bkw, bkm -- so the first file should be the most recent backup with the bkw (weekly) and bkm (monthly) backups being the oldest.
Show Deleted Records Only
This function only displays deleted records. Records that are deleted display the legend Deleted underneath the contact image. Deleted records will be preserved in the database until the sooner of (a) a DirectSync operation, or (b) Some number of days as determined by the preference setting DaysToKeepDeletedRecords (default value is 7 days). You can Undelete a record by simply bringing it into the Edit Dialog and unchecking the Deleted checkbox.
Hide Deleted Records
This function causes all deleted records to be hidden (which is the normal condition). Note that you can also just briefly tap the [All+] button to return to the normal condition whereby deleted and inactive records are hidden and all other filters are removed. This function only turns off the display of deleted records, leaving all other conditions the same.
Show Inactive Records Only
This function only displays inactive records. Records that are inactive display the legend Inactive underneath the contact image. Inactive records are not normally displayed.
Hide Inactive Records
This function causes all inactive records to be hidden (which is the normal condition). Note that you can also just briefly tap the [All+] button to return to the normal condition whereby deleted and inactive records are hidden and all other filters are removed. This function only turns off the display of inactive records, leaving all other conditions the same.
Include Inactive Records
This function causes all inactive records to be displayed (normally they are hidden).
Merge/Update Android Contacts
This function re-reads the native, Android contacts database and merges any new contacts and updates any existing contacts. The update of existing contacts takes place if any raw contact associated with the Android contact is modified (since Android contacts aggregates multiple records from different applications (such as Gmail Contacts, Facebook, Yahoo, Linked-in, etc.). It appears that Pimlical can only tell if a contact has been updated after it has been synced, so don't be surprised if you make a change to contacts and immediately try a Merge/Update that the very latest change won't make it into P/A contacts until the next time you do it. Alternatively, you can use Menu | Sync Now in Pimlical/Android as that tells Google's Sync software to run right away and sync both the calendar and contacts.
If a change is made in the Pimlical Contacts database, and the corresponding contact is subsequently altered in the Android contacts database after the last Merge/Update, it's possible that the Pimlical contact would be overwritten by the Android Contact, so some care should be taken in using this feature - in general if you intend to use this feature, you will likely want to make all updates to your contacts in the native Android contacts application.
If DebugMode is set true, then all the updated and imported contacts will be listed in a text file: ListOfUpdatedImportedRecords.txt for diagnostic or informational purposes.
WARNING: this feature will only work if the contacts database was originally created from the Android contacts database. If it was created from some other database, this function will typically result in many duplications (however, in most cases, you may be able to remove the duplications using the Merge Duplicate Records function below.
Remove All Blank Records
This function causes all blank records to be removed from the database. A blank record is considered to be any record that has no first name, no middle name, no last name and no company name present. Note that these records are removed and not deleted. This means that if you subsequently synchronize, those records may re-appear if they were also present on the desktop (solution is to do a sync overwrite to the desktop to remove them from the desktop as well).
Merge Duplicate Records
This function attempts to merge all duplicate records together. The Android contacts database often ends up with piles of duplicated records, sometimes with identical information, sometimes with nearly identical information. This function attempts to locate such records based upon a case-insensitive match of first name, middle name, last name, company, category and deleted status. If those items match, the records are considered a candidate for merging. Non-blank fields prevail in the merged record. If the duplicate records have different values for a field, they are merged together with a vertical bar (|) separator. Keep in mind this function is by definition imperfect as it can not make educated decisions about how to merge the information. However, for the most part it should perform a major clean up of a database that has multiple duplicate records. It is advised to do a manual backup of the contacts database before invoking this function so it can be restored if the desired result is not achieved. If debug mode is set, a list of merged records is stored in the file: ListOfDuplicatedRecords.txt in the Pimlical Folder.
Delete ALL Displayed Records
This function deletes all displayed records in the contacts database. Note that only displayed records are deleted - all other records are left alone. This allows you for example, to delete all records in a particular category (just select that category for display, then use this function to delete all the displayed records). The records are not removed from the database - they are just marked as deleted, so if you subsequently sync the database, those same records will then be deleted from the desktop contacts database.
Remove All Displayed Records
This function causes all displayed records to be removed. This differs from the above function in that they are not kept in the database as deleted records - they completely disappear. If you subsequently synchronize with the desktop, any corresponding records would then be restored to the Contacts database as there would never have been a record of them having been in that database.
Resort Contacts Database
This function causes the contacts database to be re-sorted using the current permanent sort criteria as defined in the preference: ContactSort. This is a function that would only be used on rare occasions as Pimlical automatically sorts the database whenever any changes are made.
Clear All Last Access date
This function clears the LastAccess field of every record in the database, so there are no items displayed when the [Rec.] button is pressed. This is a function that would only be used on rare occasion (for example, the system date was inadvertently set in the future, and so the recent items list is no longer useful as the future items always appear first).
This function imports all birthdays and anniversaries in the contacts database into the main calendar database as yearly repeat events. As with Pimlical/Desktop, you can set up a custom template to import your birthdays or anniversaries. To setup a custom template, you have to include the special Action Tag: ContactsDB:. You should also include either the birthday or Anniversary tag (that way Pimlical knows which template to use for importing birthdays and which for anniversaries). Then setup the rest of the template as a yearly repeat event, with appropriate icon, category, color, advance, etc. All existing calendar entries imported via this option will be deleted prior to importing.
Fix up Blank Names From Company
This function fixes up all the completely blank name fields in the database, using the company name. If all three name fields are blank, the company name (which should be present if all name fields are blank) is split up into the name fields. If the company name has no spaces, the last name is set to the company name. if the company name has one space, then the first and last name fields are filled in with the two words. If the company name has two or more spaces, the first word of the company name goes in the first name, and the last word of the company name goes into the last name and all the middle words of the company name go into the middle name field.
Check & Fix Duplicate IDs
This function scans the entire contacts database to check for any duplicate ID's. All uniqueID's in the database should, by definition, be unique, so it is an error condition if any duplicates are found. Duplicate ID's can cause odd things to happen (such as contacts unexpectedly duplicating, getting sync errors etc. Any contact records that are found to have a duplicate ID are updated with a newly assigned, unique ID. At the conclusion of the function, a dialog appears identifying the number of duplicate ID's found, and a complete log of all duplicate entries found is stored in the file: ListOfDuplicateContactIDs.txt which is stored in the Pimlical Folder.
Linking Appointments or Tasks to a Contact
To link an appointment or task, long-press the item in the Event Selection List and select the popup command: Set Link to Contact. Pimlical then displays the list of all the contacts. At that point, tap the contact that you want to link to and the View dialog will appear to confirm the selected contact. Tap the green checkmark button to confirm the contact and set the link to it. An event can be linked to any number of contacts (and/or memos). To view a contact linked to an appointment, use the popup command Show Linked Contact.
Contacts can be synced via Pimlical/Desktop's DirectSync to the desktop. Just check the box to Include Contacts in DirectSync. Note: DirectSync support for contacts requires an updated version of Pimlical/Desktop. Check the Pimlico website for release information.
Sharing Contact from other Contacts Application
Contacts can be imported into Pimlical's local contacts database using the standard Android Share feature in most Android and other third party contacts applications. To use this feature, make sure that Pimlical has been launched as otherwise, the error Unfortunately, PimlicalA has stopped will appear. This requirement of having Pimlical be launched may be lifted in a future release.