GEOS SDK TechDocs
|
|
1 Setting up a Contact List
|
3 Using a Dedicated Contact
RecentContactsSMSControlClass, CONTACTS_CONTROL_NOTIFY_ENTRY_SELECTED_MSG
For a list of recent SMS contacts, use a
RecentContactsSMSController
. You will need the following line in your
.gp
file:
library contlog
The following setup would allow the user to pick a phone number from a list of recently called SMS numbers, sending a
MSG_MYPROCESS_SEND_RECENT
message to the application's process object:
@object RecentContactsSMSControlClass MyLog = {
GCI_output = ( TO_PROCESS );
ATTR_RECENT_CONTACTS_CONTROL_NOTIFY_ENTRY_SELECTED_MSG =
MSG_MYPROCESS_SEND_RECENT;
}
With this setup, when the user chooses a phone number from the log, a
MSG_MYPROCESS_SEND_RECENT
message will be sent to the process object, which should handle the message. The message should conform to the CONTACTS_CONTROL_NOTIFY_ENTRY_SELECTED_MSG prototype.
@prototype void
CONTACTS_CONTROL_NOTIFY_ENTRY_SELECTED_MSG(
RecentContactsData *data)
typedef struct {
dword RCD_contactID;
NameOrNumber RCD_number;
} RecentContactsData;
The data argument's
RCD_number
field contains the GSM phone number of the selected contact. The code example below shows handler that extract's the name associated with the selected contact. It makes use of functions described in Setting up a Contact List
.
Code Display 4-2 Handling the RecentContacts "Selected" Message
@class MyProcessClass, GenProcessClass; @message (CONTACTS_CONTROL_NOTIFY_ENTRY_SELECTED_MSG) MSG_MYPROCESS_SEND_RECENT; @endc
@method MyProcessClass, MSG_MYPROCESS_SEND_RECENT {
/* Note: all of the code in this example is only useful if you need * the contact's name. If all you need is the GSM phone number, * none of this code is necessary. The phone number string is in * data->RCD_number. * * If you do need the following code, you will need to make sure * that your .gp file includes the lines library contdb library foamdb */
TCHAR theName[MAX_NAME_DATA_LEN+1]; VMFileHandle CDBHandle; MemHandle theRecord;
/* If the user chose a phone number that doesn't have a contact
* associated with it, the contact's RecordID value is -1,
* signalling an invalid contact. */
if ( data->RCD_contactID != LECI_INVALID_CONTACT_ID) {
CDBHandle = ContactGetDBHandle();
theRecord = FoamDBGetRecordFromID( CDBHandle, data->RCD_contactID );
ContactGetName(theRecord, theName); /* If you need more information about the contact * (e.g., business name, job title), this is a good place * to retrieve it. */ FoamDBDiscardRecord(CDBHandle, theRecord ); ContactReleaseDBHandle(); } /* do something clever with data->RCD_number and theName */ }
Recent versions of the Nokia 9000i Communicator allow fax and SMS contact lists to support multiple selections. Set the RCFCF_MULTIPLE_SELECTION or RCMCF_MULTIPLE_SELECTION bit to enable multiple selection for, respectively, a fax or SMS recent contact list and specify the message ATTR_RECENT_CONTACTS_CONTROL_NOTIFY_ENTRY_SELECTED_MSG which will be sent when the user chooses an item from the list.
GEOS SDK TechDocs
|
|
1 Setting up a Contact List
|
3 Using a Dedicated Contact