Hopefully delete messages correctly

This commit is contained in:
Pierre Pronchery 2011-08-21 00:11:56 +00:00
parent 6cae6dcdef
commit e9da2f8904
6 changed files with 190 additions and 81 deletions

View File

@ -67,6 +67,14 @@ typedef enum _ModemCallType
MODEM_CALL_TYPE_DATA MODEM_CALL_TYPE_DATA
} ModemCallType; } ModemCallType;
typedef enum _ModemContactStatus
{
MODEM_CONTACT_STATUS_OFFLINE = 0,
MODEM_CONTACT_STATUS_ONLINE,
MODEM_CONTACT_STATUS_AWAY,
MODEM_CONTACT_STATUS_IDLE
} ModemContactStatus;
typedef enum _ModemMessageEncoding typedef enum _ModemMessageEncoding
{ {
MODEM_MESSAGE_ENCODING_NONE = 0, MODEM_MESSAGE_ENCODING_NONE = 0,
@ -137,6 +145,7 @@ typedef enum _ModemEventType
MODEM_EVENT_TYPE_CONNECTION, MODEM_EVENT_TYPE_CONNECTION,
MODEM_EVENT_TYPE_CONTACT, MODEM_EVENT_TYPE_CONTACT,
MODEM_EVENT_TYPE_MESSAGE, MODEM_EVENT_TYPE_MESSAGE,
MODEM_EVENT_TYPE_MESSAGE_DELETED,
MODEM_EVENT_TYPE_MESSAGE_SENT, MODEM_EVENT_TYPE_MESSAGE_SENT,
MODEM_EVENT_TYPE_MODEL, MODEM_EVENT_TYPE_MODEL,
MODEM_EVENT_TYPE_REGISTRATION, MODEM_EVENT_TYPE_REGISTRATION,
@ -198,6 +207,7 @@ typedef union _ModemEvent
{ {
ModemEventType type; ModemEventType type;
unsigned int id; unsigned int id;
ModemContactStatus status;
char const * name; char const * name;
char const * number; char const * number;
} contact; } contact;
@ -216,12 +226,12 @@ typedef union _ModemEvent
char const * content; char const * content;
} message; } message;
/* MODEM_EVENT_TYPE_MESSAGE_SENT */ /* MODEM_EVENT_TYPE_MESSAGE_DELETED, MODEM_EVENT_TYPE_MESSAGE_SENT */
struct struct
{ {
ModemEventType type; ModemEventType type;
unsigned int id; unsigned int id;
} message_sent; } message_deleted, message_sent;
/* MODEM_EVENT_TYPE_MODEL */ /* MODEM_EVENT_TYPE_MODEL */
struct struct
@ -321,12 +331,12 @@ typedef union _ModemRequest
unsigned int id; unsigned int id;
} contact, contact_delete; } contact, contact_delete;
/* MODEM_REQUEST_MESSAGE */ /* MODEM_REQUEST_MESSAGE, MODEM_REQUEST_MESSAGE_DELETE */
struct struct
{ {
ModemRequestType type; ModemRequestType type;
unsigned int id; unsigned int id;
} message; } message, message_delete;
/* MODEM_REQUEST_MESSAGE_SEND */ /* MODEM_REQUEST_MESSAGE_SEND */
struct struct

154
po/fr.po
View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Phone 0.0.0\n" "Project-Id-Version: Phone 0.0.0\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-08-21 01:15+0200\n" "POT-Creation-Date: 2011-08-21 02:10+0200\n"
"PO-Revision-Date: 2010-04-24 02:07+0200\n" "PO-Revision-Date: 2010-04-24 02:07+0200\n"
"Last-Translator: Pierre Pronchery <khorben@defora.org>\n" "Last-Translator: Pierre Pronchery <khorben@defora.org>\n"
"Language-Team: DeforaOS development (French) <devel-fr@lists.defora.org>\n" "Language-Team: DeforaOS development (French) <devel-fr@lists.defora.org>\n"
@ -27,304 +27,308 @@ msgstr ""
" -m\tNom du greffon modem à charger\n" " -m\tNom du greffon modem à charger\n"
" -r\tDélai entre deux tentatives d'accès au modem (ms)\n" " -r\tDélai entre deux tentatives d'accès au modem (ms)\n"
#: ../src/phone.c:332 #: ../src/phone.c:333
msgid "All" msgid "All"
msgstr "Tous" msgstr "Tous"
#: ../src/phone.c:333 #: ../src/phone.c:334
msgid "Inbox" msgid "Inbox"
msgstr "Reçus" msgstr "Reçus"
#: ../src/phone.c:334 #: ../src/phone.c:335
msgid "Sent" msgid "Sent"
msgstr "Envoyés" msgstr "Envoyés"
#: ../src/phone.c:335 #: ../src/phone.c:336
msgid "Drafts" msgid "Drafts"
msgstr "Brouillons" msgstr "Brouillons"
#: ../src/phone.c:336 #: ../src/phone.c:337
msgid "Trash" msgid "Trash"
msgstr "Corbeille" msgstr "Corbeille"
#: ../src/phone.c:489 ../src/phone.c:2473 #: ../src/phone.c:490 ../src/phone.c:2476
msgid "System preferences" msgid "System preferences"
msgstr "Préférences système" msgstr "Préférences système"
#: ../src/phone.c:500 ../src/phone.c:1902 #: ../src/phone.c:501 ../src/phone.c:1905
msgid "Plug-ins" msgid "Plug-ins"
msgstr "Greffons" msgstr "Greffons"
#: ../src/phone.c:665 #: ../src/phone.c:666
#, c-format #, c-format
msgid "Checking %s..." msgid "Checking %s..."
msgstr "Vérification %s..." msgstr "Vérification %s..."
#: ../src/phone.c:728 #: ../src/phone.c:729
msgid "Delete this contact?" msgid "Delete this contact?"
msgstr "Supprimer ce contact?" msgstr "Supprimer ce contact?"
#: ../src/phone.c:1030 ../src/phone.c:1195 #: ../src/phone.c:1031 ../src/phone.c:1197
msgid "Delete this message?" msgid "Delete this message?"
msgstr "Supprimer ce message?" msgstr "Supprimer ce message?"
#: ../src/phone.c:1036 ../src/phone.c:1200 #: ../src/phone.c:1037 ../src/phone.c:1202
msgid "Deleting message..." msgid "Deleting message..."
msgstr "Suppression du message..." msgstr "Suppression du message..."
#: ../src/phone.c:1296 #: ../src/phone.c:1299
msgid "Unknown contact" msgid "Unknown contact"
msgstr "Contact inconnu" msgstr "Contact inconnu"
#: ../src/phone.c:1303 #: ../src/phone.c:1306
msgid "Unknown number" msgid "Unknown number"
msgstr "Numéro inconnu" msgstr "Numéro inconnu"
#: ../src/phone.c:1315 #: ../src/phone.c:1318
msgid "In conversation" msgid "In conversation"
msgstr "En conversation" msgstr "En conversation"
#: ../src/phone.c:1326 #: ../src/phone.c:1329
msgid "Incoming call" msgid "Incoming call"
msgstr "Appel entrant" msgstr "Appel entrant"
#: ../src/phone.c:1336 #: ../src/phone.c:1339
msgid "Outgoing call" msgid "Outgoing call"
msgstr "Appel sortant" msgstr "Appel sortant"
#: ../src/phone.c:1347 #: ../src/phone.c:1350
msgid "Call finished" msgid "Call finished"
msgstr "Appel terminé" msgstr "Appel terminé"
#: ../src/phone.c:1377 #: ../src/phone.c:1380
msgid "_Answer" msgid "_Answer"
msgstr "_Répondre" msgstr "_Répondre"
#: ../src/phone.c:1382 #: ../src/phone.c:1385
msgid "_Hangup" msgid "_Hangup"
msgstr "Ra_ccrocher" msgstr "Ra_ccrocher"
#: ../src/phone.c:1387 #: ../src/phone.c:1390
msgid "_Reject" msgid "_Reject"
msgstr "Re_jeter" msgstr "Re_jeter"
#: ../src/phone.c:1407 #: ../src/phone.c:1410
msgid "Loudspeaker" msgid "Loudspeaker"
msgstr "Haut-parleur" msgstr "Haut-parleur"
#: ../src/phone.c:1415 #: ../src/phone.c:1418
msgid "Mute microphone" msgid "Mute microphone"
msgstr "Couper le microphone" msgstr "Couper le microphone"
#: ../src/phone.c:1457 #: ../src/phone.c:1460
#, c-format #, c-format
msgid "Enter %s" msgid "Enter %s"
msgstr "Entrer %s" msgstr "Entrer %s"
#: ../src/phone.c:1500 #: ../src/phone.c:1503
msgid "Enter" msgid "Enter"
msgstr "Entrer" msgstr "Entrer"
#: ../src/phone.c:1502 #: ../src/phone.c:1505
msgid "Skip" msgid "Skip"
msgstr "Ignorer" msgstr "Ignorer"
#: ../src/phone.c:1530 #: ../src/phone.c:1533
msgid "Contacts" msgid "Contacts"
msgstr "Contacts" msgstr "Contacts"
#: ../src/phone.c:1536 ../src/phone.c:1647 ../src/phone.c:1683 #: ../src/phone.c:1539 ../src/phone.c:1650 ../src/phone.c:1686
#: ../src/phone.c:1798 ../src/phone.c:2154 #: ../src/phone.c:1801 ../src/phone.c:2157
msgid "Call" msgid "Call"
msgstr "Appeler" msgstr "Appeler"
#: ../src/phone.c:1542 #: ../src/phone.c:1545
msgid "Write" msgid "Write"
msgstr "Écrire" msgstr "Écrire"
#: ../src/phone.c:1576 ../src/phone.c:1933 ../src/phone.c:2265 #: ../src/phone.c:1579 ../src/phone.c:1936 ../src/phone.c:2268
msgid "Name" msgid "Name"
msgstr "Nom" msgstr "Nom"
#: ../src/phone.c:1622 #: ../src/phone.c:1625
msgid "Dialer" msgid "Dialer"
msgstr "Composer" msgstr "Composer"
#: ../src/phone.c:1649 #: ../src/phone.c:1652
msgid "Hang up" msgid "Hang up"
msgstr "Raccrocher" msgstr "Raccrocher"
#: ../src/phone.c:1677 #: ../src/phone.c:1680
msgid "Phone logs" msgid "Phone logs"
msgstr "Journal d'appels" msgstr "Journal d'appels"
#: ../src/phone.c:1689 #: ../src/phone.c:1692
msgid "Message" msgid "Message"
msgstr "Message" msgstr "Message"
#: ../src/phone.c:1720 #: ../src/phone.c:1723
msgid "Direction" msgid "Direction"
msgstr "Direction" msgstr "Direction"
#: ../src/phone.c:1725 ../src/phone.c:1844 #: ../src/phone.c:1728 ../src/phone.c:1847
msgid "To/From" msgid "To/From"
msgstr "Vers/De" msgstr "Vers/De"
#: ../src/phone.c:1731 ../src/phone.c:1852 #: ../src/phone.c:1734 ../src/phone.c:1855
msgid "Date" msgid "Date"
msgstr "Date" msgstr "Date"
#: ../src/phone.c:1792 #: ../src/phone.c:1795
msgid "Messages" msgid "Messages"
msgstr "Messages" msgstr "Messages"
#: ../src/phone.c:1803 #: ../src/phone.c:1806
msgid "New message" msgid "New message"
msgstr "Nouveau message" msgstr "Nouveau message"
#: ../src/phone.c:1809 ../src/phone.c:2160 #: ../src/phone.c:1812 ../src/phone.c:2163
msgid "Reply" msgid "Reply"
msgstr "Répondre" msgstr "Répondre"
#: ../src/phone.c:1921 #: ../src/phone.c:1924
msgid "Enabled" msgid "Enabled"
msgstr "Activé" msgstr "Activé"
#: ../src/phone.c:2148 #: ../src/phone.c:2151
msgid "Read message" msgid "Read message"
msgstr "Lire le message" msgstr "Lire le message"
#: ../src/phone.c:2166 #: ../src/phone.c:2169
msgid "Forward" msgid "Forward"
msgstr "Transmettre" msgstr "Transmettre"
#: ../src/phone.c:2240 #: ../src/phone.c:2243
msgid "Phone settings" msgid "Phone settings"
msgstr "Paramètres du téléphone" msgstr "Paramètres du téléphone"
#: ../src/phone.c:2317 #: ../src/phone.c:2320
msgid "missed calls" msgid "missed calls"
msgstr "appels manqués" msgstr "appels manqués"
#: ../src/phone.c:2317 #: ../src/phone.c:2320
msgid "missed call" msgid "missed call"
msgstr "appel manqué" msgstr "appel manqué"
#: ../src/phone.c:2326 #: ../src/phone.c:2329
msgid "new messages" msgid "new messages"
msgstr "nouveaux messages" msgstr "nouveaux messages"
#: ../src/phone.c:2327 #: ../src/phone.c:2330
msgid "new message" msgid "new message"
msgstr "nouveau message" msgstr "nouveau message"
#: ../src/phone.c:2345 ../src/phone.c:3250 ../src/phone.c:3254 #: ../src/phone.c:2348 ../src/phone.c:3253 ../src/phone.c:3257
msgid "Information" msgid "Information"
msgstr "Information" msgstr "Information"
#: ../src/phone.c:2355 #: ../src/phone.c:2358
msgid "Status" msgid "Status"
msgstr "État" msgstr "État"
#: ../src/phone.c:2379 #: ../src/phone.c:2382
msgid "_View" msgid "_View"
msgstr "_Vue" msgstr "_Vue"
#: ../src/phone.c:2398 #: ../src/phone.c:2401
msgid "_Read" msgid "_Read"
msgstr "_Lire" msgstr "_Lire"
#: ../src/phone.c:2499 #: ../src/phone.c:2502
msgid "Open file..." msgid "Open file..."
msgstr "Ouvrir fichier..." msgstr "Ouvrir fichier..."
#: ../src/phone.c:2685 #: ../src/phone.c:2688
msgid "Write message" msgid "Write message"
msgstr "Écrire un message" msgstr "Écrire un message"
#: ../src/phone.c:2691 #: ../src/phone.c:2694
msgid "Send" msgid "Send"
msgstr "Envoyer" msgstr "Envoyer"
#: ../src/phone.c:2697 #: ../src/phone.c:2700
msgid "Attach" msgid "Attach"
msgstr "Joindre" msgstr "Joindre"
#: ../src/phone.c:2813 #: ../src/phone.c:2816
msgid "Attach file..." msgid "Attach file..."
msgstr "Joindre un fichier..." msgstr "Joindre un fichier..."
#: ../src/phone.c:2884 #: ../src/phone.c:2887
#, c-format #, c-format
msgid "%d message%s, %d/%d characters" msgid "%d message%s, %d/%d characters"
msgstr "%d message%s, %d/%d caractères" msgstr "%d message%s, %d/%d caractères"
#: ../src/phone.c:2885 #: ../src/phone.c:2888
msgid "s" msgid "s"
msgstr "s" msgstr "s"
#: ../src/phone.c:2949 #: ../src/phone.c:2952
msgid "Sending message..." msgid "Sending message..."
msgstr "Envoi du message..." msgstr "Envoi du message..."
#: ../src/phone.c:2978 #: ../src/phone.c:2981
msgid "Outgoing" msgid "Outgoing"
msgstr "Sortant" msgstr "Sortant"
#: ../src/phone.c:3164 #: ../src/phone.c:3167
msgid "Operation in progress..." msgid "Operation in progress..."
msgstr "Opération en cours..." msgstr "Opération en cours..."
#: ../src/phone.c:3202 ../src/phone.c:3206 #: ../src/phone.c:3205 ../src/phone.c:3209
msgid "Question" msgid "Question"
msgstr "Question" msgstr "Question"
#: ../src/phone.c:3226 ../src/phone.c:3230 #: ../src/phone.c:3229 ../src/phone.c:3233
msgid "Error" msgid "Error"
msgstr "Erreur" msgstr "Erreur"
#: ../src/phone.c:3456 #: ../src/phone.c:3459
msgid "Name: " msgid "Name: "
msgstr "Nom: " msgstr "Nom: "
#: ../src/phone.c:3465 #: ../src/phone.c:3468
msgid "Number: " msgid "Number: "
msgstr "Numéro: " msgstr "Numéro: "
#: ../src/phone.c:3481 #: ../src/phone.c:3484
msgid "New contact" msgid "New contact"
msgstr "Nouveau contact" msgstr "Nouveau contact"
#: ../src/phone.c:3483 #: ../src/phone.c:3486
msgid "Edit contact: " msgid "Edit contact: "
msgstr "Modifier contact: " msgstr "Modifier contact: "
#: ../src/phone.c:3510 #: ../src/phone.c:3513
msgid "The name cannot be empty" msgid "The name cannot be empty"
msgstr "Le nom ne peut être vide" msgstr "Le nom ne peut être vide"
#: ../src/phone.c:3515 #: ../src/phone.c:3518
msgid "The number cannot be empty" msgid "The number cannot be empty"
msgstr "Le numéro ne peut être vide" msgstr "Le numéro ne peut être vide"
#: ../src/phone.c:3646 #: ../src/phone.c:3653
msgid "Message sent" msgid "Message sent"
msgstr "Message envoyé" msgstr "Message envoyé"
#: ../src/phone.c:3682 #: ../src/phone.c:3689
#, c-format #, c-format
msgid "Wrong %s" msgid "Wrong %s"
msgstr "Mauvais %s" msgstr "Mauvais %s"
#: ../src/phone.c:3689 #: ../src/phone.c:3696
#, c-format #, c-format
msgid "%s is valid" msgid "%s is valid"
msgstr "%s valide" msgstr "%s valide"
#: ../src/phone.c:3752 #: ../src/phone.c:3759
msgid "Raw data (not shown)" msgid "Raw data (not shown)"
msgstr "Données brutes (non affichées)" msgstr "Données brutes (non affichées)"
#: ../src/phone.c:3792
msgid "Message deleted"
msgstr "Message effacé"
#: ../src/phonectl.c:44 #: ../src/phonectl.c:44
msgid "" msgid ""
"Usage: phonectl -C\n" "Usage: phonectl -C\n"

View File

@ -208,6 +208,7 @@ int modem_request_type(Modem * modem, ModemRequestType type, ...)
request.contact_delete.id = va_arg(ap, unsigned int); request.contact_delete.id = va_arg(ap, unsigned int);
break; break;
case MODEM_REQUEST_MESSAGE: case MODEM_REQUEST_MESSAGE:
case MODEM_REQUEST_MESSAGE_DELETE:
request.message.id = va_arg(ap, unsigned int); request.message.id = va_arg(ap, unsigned int);
break; break;
case MODEM_REQUEST_MESSAGE_SEND: case MODEM_REQUEST_MESSAGE_SEND:

View File

@ -48,6 +48,7 @@ static int _debug_init(ModemPlugin * modem);
static int _debug_destroy(ModemPlugin * modem); static int _debug_destroy(ModemPlugin * modem);
static int _debug_start(ModemPlugin * modem, unsigned int retry); static int _debug_start(ModemPlugin * modem, unsigned int retry);
static int _debug_stop(ModemPlugin * modem); static int _debug_stop(ModemPlugin * modem);
static int _debug_request(ModemPlugin * modem, ModemRequest * request);
/* accessors */ /* accessors */
static void _debug_set_status(ModemPlugin * modem, char const * status); static void _debug_set_status(ModemPlugin * modem, char const * status);
@ -69,7 +70,7 @@ ModemPlugin plugin =
_debug_destroy, _debug_destroy,
_debug_start, _debug_start,
_debug_stop, _debug_stop,
NULL, _debug_request,
NULL, NULL,
NULL NULL
}; };
@ -126,7 +127,7 @@ static int _debug_init(ModemPlugin * modem)
debug->folder = gtk_combo_box_new_text(); debug->folder = gtk_combo_box_new_text();
gtk_combo_box_append_text(GTK_COMBO_BOX(debug->folder), "Unknown"); gtk_combo_box_append_text(GTK_COMBO_BOX(debug->folder), "Unknown");
gtk_combo_box_append_text(GTK_COMBO_BOX(debug->folder), "Inbox"); gtk_combo_box_append_text(GTK_COMBO_BOX(debug->folder), "Inbox");
gtk_combo_box_append_text(GTK_COMBO_BOX(debug->folder), "Outbox"); gtk_combo_box_append_text(GTK_COMBO_BOX(debug->folder), "Sent");
gtk_combo_box_append_text(GTK_COMBO_BOX(debug->folder), "Drafts"); gtk_combo_box_append_text(GTK_COMBO_BOX(debug->folder), "Drafts");
gtk_combo_box_append_text(GTK_COMBO_BOX(debug->folder), "Trash"); gtk_combo_box_append_text(GTK_COMBO_BOX(debug->folder), "Trash");
gtk_combo_box_set_active(GTK_COMBO_BOX(debug->folder), 1); gtk_combo_box_set_active(GTK_COMBO_BOX(debug->folder), 1);
@ -215,6 +216,28 @@ static gboolean _stop_on_idle(gpointer data)
} }
/* debug_request */
static int _debug_request(ModemPlugin * modem, ModemRequest * request)
{
ModemEvent event;
if(request == NULL)
return -1;
memset(&event, 0, sizeof(event));
switch(request->type)
{
case MODEM_REQUEST_MESSAGE_DELETE:
event.type = MODEM_EVENT_TYPE_MESSAGE_DELETED;
event.message_deleted.id = request->message_delete.id;
modem->helper->event(modem->helper->modem, &event);
break;
default:
break;
}
return 0;
}
/* accessors */ /* accessors */
/* debug_set_status */ /* debug_set_status */
static void _debug_set_status(ModemPlugin * modem, char const * status) static void _debug_set_status(ModemPlugin * modem, char const * status)

View File

@ -281,6 +281,8 @@ static HayesCommandStatus _on_request_generic(HayesCommand * command,
HayesCommandStatus status, void * priv); HayesCommandStatus status, void * priv);
static HayesCommandStatus _on_request_message(HayesCommand * command, static HayesCommandStatus _on_request_message(HayesCommand * command,
HayesCommandStatus status, void * priv); HayesCommandStatus status, void * priv);
static HayesCommandStatus _on_request_message_delete(HayesCommand * command,
HayesCommandStatus status, void * priv);
static HayesCommandStatus _on_request_message_list(HayesCommand * command, static HayesCommandStatus _on_request_message_list(HayesCommand * command,
HayesCommandStatus status, void * priv); HayesCommandStatus status, void * priv);
static HayesCommandStatus _on_request_message_send(HayesCommand * command, static HayesCommandStatus _on_request_message_send(HayesCommand * command,
@ -494,6 +496,8 @@ static HayesRequestHandler _hayes_request_handlers[] =
_on_request_contact_list }, _on_request_contact_list },
{ MODEM_REQUEST_MESSAGE, NULL, { MODEM_REQUEST_MESSAGE, NULL,
_on_request_message }, _on_request_message },
{ MODEM_REQUEST_MESSAGE_DELETE, NULL,
_on_request_message_delete },
{ MODEM_REQUEST_MESSAGE_LIST, "AT+CMGL=4", { MODEM_REQUEST_MESSAGE_LIST, "AT+CMGL=4",
_on_request_message_list }, _on_request_message_list },
{ MODEM_REQUEST_MESSAGE_SEND, NULL, { MODEM_REQUEST_MESSAGE_SEND, NULL,
@ -609,6 +613,8 @@ static char * _request_attention_contact_list(ModemRequest * request);
static char * _request_attention_gprs(ModemPlugin * modem, static char * _request_attention_gprs(ModemPlugin * modem,
char const * username, char const * password); char const * username, char const * password);
static char * _request_attention_message(ModemPlugin * modem, unsigned int id); static char * _request_attention_message(ModemPlugin * modem, unsigned int id);
static char * _request_attention_message_delete(ModemPlugin * modem,
unsigned int id);
static char * _request_attention_message_send(ModemPlugin * modem, static char * _request_attention_message_send(ModemPlugin * modem,
char const * number, ModemMessageEncoding encoding, char const * number, ModemMessageEncoding encoding,
size_t length, char const * content); size_t length, char const * content);
@ -697,6 +703,9 @@ static char * _request_attention(ModemPlugin * modem, ModemRequest * request)
case MODEM_REQUEST_MESSAGE: case MODEM_REQUEST_MESSAGE:
return _request_attention_message(modem, return _request_attention_message(modem,
request->message.id); request->message.id);
case MODEM_REQUEST_MESSAGE_DELETE:
return _request_attention_message_delete(modem,
request->message.id);
case MODEM_REQUEST_MESSAGE_SEND: case MODEM_REQUEST_MESSAGE_SEND:
return _request_attention_message_send(modem, return _request_attention_message_send(modem,
request->message_send.number, request->message_send.number,
@ -818,6 +827,19 @@ static char * _request_attention_message(ModemPlugin * modem, unsigned int id)
return strdup(buf); return strdup(buf);
} }
static char * _request_attention_message_delete(ModemPlugin * modem,
unsigned int id)
{
Hayes * hayes = modem->priv;
char const cmd[] = "AT+CMGD=";
char buf[32];
/* FIXME store in the command itself */
hayes->events[MODEM_EVENT_TYPE_MESSAGE_DELETED].message_deleted.id = id;
snprintf(buf, sizeof(buf), "%s%u", cmd, id);
return strdup(buf);
}
static char * _request_attention_message_send(ModemPlugin * modem, static char * _request_attention_message_send(ModemPlugin * modem,
char const * number, ModemMessageEncoding encoding, char const * number, ModemMessageEncoding encoding,
size_t length, char const * content) size_t length, char const * content)
@ -1049,6 +1071,7 @@ static int _hayes_trigger(ModemPlugin * modem, ModemEventType event)
break; break;
case MODEM_EVENT_TYPE_ERROR: /* do not make sense */ case MODEM_EVENT_TYPE_ERROR: /* do not make sense */
case MODEM_EVENT_TYPE_MESSAGE: case MODEM_EVENT_TYPE_MESSAGE:
case MODEM_EVENT_TYPE_MESSAGE_DELETED:
case MODEM_EVENT_TYPE_MESSAGE_SENT: case MODEM_EVENT_TYPE_MESSAGE_SENT:
ret = -1; ret = -1;
break; break;
@ -2332,6 +2355,21 @@ static HayesCommandStatus _on_request_message(HayesCommand * command,
} }
/* on_request_message_delete */
static HayesCommandStatus _on_request_message_delete(HayesCommand * command,
HayesCommandStatus status, void * priv)
{
ModemPlugin * modem = priv;
Hayes * hayes = modem->priv;
ModemEvent * event = &hayes->events[MODEM_EVENT_TYPE_MESSAGE_DELETED];
if((status = _on_request_generic(command, status, priv)) != HCS_SUCCESS)
return status;
modem->helper->event(modem->helper->modem, event);
return status;
}
/* on_request_message_list */ /* on_request_message_list */
static HayesCommandStatus _on_request_message_list(HayesCommand * command, static HayesCommandStatus _on_request_message_list(HayesCommand * command,
HayesCommandStatus status, void * priv) HayesCommandStatus status, void * priv)
@ -3130,6 +3168,7 @@ static void _on_trigger_cpbr(ModemPlugin * modem, char const * answer)
free(hayes->contact_name); free(hayes->contact_name);
hayes->contact_name = strdup(name); hayes->contact_name = strdup(name);
event->contact.name = hayes->contact_name; event->contact.name = hayes->contact_name;
event->contact.status = MODEM_CONTACT_STATUS_OFFLINE;
/* send event */ /* send event */
modem->helper->event(modem->helper->modem, event); modem->helper->event(modem->helper->modem, event);
} }

View File

@ -132,6 +132,7 @@ typedef enum _PhoneSettingsColumn
typedef enum _PhoneTrack typedef enum _PhoneTrack
{ {
PHONE_TRACK_CODE_ENTERED = 0, PHONE_TRACK_CODE_ENTERED = 0,
PHONE_TRACK_MESSAGE_DELETED,
PHONE_TRACK_MESSAGE_LIST, PHONE_TRACK_MESSAGE_LIST,
PHONE_TRACK_MESSAGE_SENT PHONE_TRACK_MESSAGE_SENT
} PhoneTrack; } PhoneTrack;
@ -1034,6 +1035,7 @@ void phone_messages_delete_selected(Phone * phone)
phone_show_read(phone, FALSE); phone_show_read(phone, FALSE);
phone->me_progress = _phone_create_progress(phone->me_window, phone->me_progress = _phone_create_progress(phone->me_window,
_("Deleting message...")); _("Deleting message..."));
_phone_track(phone, PHONE_TRACK_MESSAGE_DELETED, TRUE);
modem_request_type(phone->modem, MODEM_REQUEST_MESSAGE_DELETE, index); modem_request_type(phone->modem, MODEM_REQUEST_MESSAGE_DELETE, index);
} }
@ -1198,6 +1200,7 @@ void phone_read_delete(Phone * phone)
phone_show_read(phone, FALSE); phone_show_read(phone, FALSE);
phone->me_progress = _phone_create_progress(phone->me_window, phone->me_progress = _phone_create_progress(phone->me_window,
_("Deleting message...")); _("Deleting message..."));
_phone_track(phone, PHONE_TRACK_MESSAGE_DELETED, TRUE);
modem_request_type(phone->modem, MODEM_REQUEST_MESSAGE_DELETE, modem_request_type(phone->modem, MODEM_REQUEST_MESSAGE_DELETE,
phone->re_index); phone->re_index);
} }
@ -3610,6 +3613,7 @@ static void _modem_event_authentication(Phone * phone, ModemEvent * event);
static void _modem_event_call(Phone * phone, ModemEvent * event); static void _modem_event_call(Phone * phone, ModemEvent * event);
static void _modem_event_error(Phone * phone, ModemEvent * event); static void _modem_event_error(Phone * phone, ModemEvent * event);
static void _modem_event_message(Phone * phone, ModemEvent * event); static void _modem_event_message(Phone * phone, ModemEvent * event);
static void _modem_event_message_deleted(Phone * phone, ModemEvent * event);
static void _phone_modem_event(void * priv, ModemEvent * event) static void _phone_modem_event(void * priv, ModemEvent * event)
{ {
@ -3639,6 +3643,9 @@ static void _phone_modem_event(void * priv, ModemEvent * event)
case MODEM_EVENT_TYPE_MESSAGE: case MODEM_EVENT_TYPE_MESSAGE:
_modem_event_message(phone, event); _modem_event_message(phone, event);
break; break;
case MODEM_EVENT_TYPE_MESSAGE_DELETED:
_modem_event_message_deleted(phone, event);
break;
case MODEM_EVENT_TYPE_MESSAGE_SENT: case MODEM_EVENT_TYPE_MESSAGE_SENT:
_phone_track(phone, PHONE_TRACK_MESSAGE_SENT, FALSE); _phone_track(phone, PHONE_TRACK_MESSAGE_SENT, FALSE);
phone->wr_progress = _phone_progress_delete( phone->wr_progress = _phone_progress_delete(
@ -3762,6 +3769,29 @@ static void _modem_event_message(Phone * phone, ModemEvent * event)
phone_show_status(phone, TRUE, 0, 1); phone_show_status(phone, TRUE, 0, 1);
} }
static void _modem_event_message_deleted(Phone * phone, ModemEvent * event)
{
GtkTreeModel * model = GTK_TREE_MODEL(phone->me_store);
GtkTreeIter iter;
gboolean valid;
unsigned int id;
for(valid = gtk_tree_model_get_iter_first(model, &iter); valid == TRUE;
valid = gtk_tree_model_iter_next(model, &iter))
{
gtk_tree_model_get(model, &iter, PHONE_MESSAGE_COLUMN_ID, &id,
-1);
if(id == event->message_deleted.id)
{
gtk_list_store_remove(phone->me_store, &iter);
break;
}
}
_phone_track(phone, PHONE_TRACK_MESSAGE_DELETED, FALSE);
phone->me_progress = _phone_progress_delete(phone->me_progress);
_phone_info(phone, phone->me_window, _("Message deleted"), NULL);
}
/* phone_modem_event_authentication */ /* phone_modem_event_authentication */
static void _phone_modem_event_authentication(GtkWidget * widget, gint response, static void _phone_modem_event_authentication(GtkWidget * widget, gint response,
@ -3781,6 +3811,8 @@ static gboolean _phone_timeout_track(gpointer data)
if(phone->tracks[PHONE_TRACK_CODE_ENTERED]) if(phone->tracks[PHONE_TRACK_CODE_ENTERED])
_phone_progress_pulse(phone->en_progress); _phone_progress_pulse(phone->en_progress);
if(phone->tracks[PHONE_TRACK_MESSAGE_DELETED])
_phone_progress_pulse(phone->me_progress);
if(phone->tracks[PHONE_TRACK_MESSAGE_LIST]) if(phone->tracks[PHONE_TRACK_MESSAGE_LIST])
{ {
_phone_track(phone, PHONE_TRACK_MESSAGE_LIST, FALSE); _phone_track(phone, PHONE_TRACK_MESSAGE_LIST, FALSE);