/*
+ $Id$
+
X G N O K I I
A Linux/Unix GUI for Nokia mobile phones.
Released under the terms of the GNU GPL, see file COPYING for more details.
- Last modification: Sun Apr 30 2000
- Modified by Jan Derfinak
-
*/
#include <unistd.h>
#include <locale.h>
{
GSM_SMSMessage *data = (GSM_SMSMessage *) d;
MessagePointers *msgPtrs;
- GSM_DateTime *dt;
+ SMS_DateTime *dt;
- if (data->Type == GST_MT || data->Type == GST_DR)
+ if (data->Type == SMS_Deliver || data->Type == SMS_Delivery_Report)
{
/* if (data->Type == GST_MT && data->UDHType == GSM_ConcatenatedMessages)
{
{
gchar *row[4];
- if (data->Type == GST_DR)
+ if (data->Type == SMS_Delivery_Report)
{
row[0] = g_strdup (_("report"));
dt = &(data->SMSCTime);
dt->Day, dt->Month, dt->Year,
dt->Hour, dt->Minute, dt->Second);
- row[2] = GUI_GetName (data->Sender);
+ row[2] = GUI_GetName (data->RemoteNumber.number);
if (row[2] == NULL)
- row[2] = data->Sender;
+ row[2] = data->RemoteNumber.number;
row[3] = data->MessageText;
gtk_clist_append (GTK_CLIST (SMS.smsClist), row);
msgPtrs = (MessagePointers *) g_malloc (sizeof (MessagePointers));
msgPtrs->count = msgPtrs->number = 1;
- msgPtrs->validity = data->Validity;
- msgPtrs->class = data->Class;
- strcpy (msgPtrs->sender, data->Sender);
+ msgPtrs->validity = data->Validity.u.Relative;
+ // msgPtrs->class = data->Class;
+ strcpy (msgPtrs->sender, data->RemoteNumber.number);
msgPtrs->msgPtr = (gint *) g_malloc (sizeof (gint));
- *(msgPtrs->msgPtr) = data->MessageNumber;
+ *(msgPtrs->msgPtr) = (int)data->Number;
gtk_clist_set_row_data_full (GTK_CLIST (SMS.smsClist), SMS.row_i++,
msgPtrs, DestroyMsgPtrs);
g_free (row[0]);
GSM_SMSMessage *data = (GSM_SMSMessage *) d;
MessagePointers *msgPtrs;
- if (data->Type == GST_MO)
+ if (data->Type == SMS_Submit)
{
gchar *row[4];
gtk_clist_append( GTK_CLIST (SMS.smsClist), row);
msgPtrs = (MessagePointers *) g_malloc (sizeof (MessagePointers));
msgPtrs->count = msgPtrs->number = 1;
- msgPtrs->validity = data->Validity;
- msgPtrs->class = data->Class;
- strcpy (msgPtrs->sender, data->Sender);
+ msgPtrs->validity = data->Validity.u.Relative;
+ // msgPtrs->class = data->Class;
+ strcpy (msgPtrs->sender, data->RemoteNumber.number);
msgPtrs->msgPtr = (gint *) g_malloc (sizeof (gint));
- *(msgPtrs->msgPtr) = data->MessageNumber;
+ *(msgPtrs->msgPtr) = (int)data->Number;
gtk_clist_set_row_data_full (GTK_CLIST (SMS.smsClist), SMS.row_i++,
msgPtrs, DestroyMsgPtrs);
g_free (row[0]);
sel = sel->next;
for (count = 0; count < ((MessagePointers *) gtk_clist_get_row_data (GTK_CLIST (SMS.smsClist), row))->count; count++)
{
+ int number;
message = (GSM_SMSMessage *) g_malloc (sizeof (GSM_SMSMessage));
- message->Location = *(((MessagePointers *) gtk_clist_get_row_data (GTK_CLIST (SMS.smsClist), row))->msgPtr + count);
- if (message->Location == -1)
+ number = *(((MessagePointers *) gtk_clist_get_row_data (GTK_CLIST (SMS.smsClist), row))->msgPtr + count);
+ if (number == -1)
{
g_free (message);
continue;
}
+ message->Number = number;
message->MemoryType = GMT_SM;
e = (PhoneEvent *) g_malloc (sizeof (PhoneEvent));
#ifdef XDEBUG
g_print ("Address: %s\nText: %s\nDelivery report: %d\nSMS Center: %d\n",
- sms->Destination,
+ sms->RemoteNumber.number,
sms->MessageText,
GTK_TOGGLE_BUTTON (sendSMS.report)->active,
sendSMS.center);
if (error != GE_SMSSENDOK)
{
gchar *buf = g_strdup_printf (_("SMS send to %s failed\n(error=%d)"),
- sms->Destination, error);
+ sms->RemoteNumber.number, error);
gtk_label_set_text (GTK_LABEL(errorDialog.text), buf);
gtk_widget_show (errorDialog.dialog);
g_free (buf);
}
else
- g_print ("Message sent to: %s\n", sms->Destination);
+ g_print ("Message sent to: %s\n", sms->RemoteNumber.number);
return (error);
}
{
GSM_SMSMessage sms;
AddressPar aps;
- char udh[GSM_MAX_USER_DATA_HEADER_LENGTH];
+ char udh[256];
GSList *r;
gchar *text, *number;
gchar **addresses;
sms.MessageCenter.No = 0;
if (GTK_TOGGLE_BUTTON (sendSMS.report)->active)
- sms.Type = GST_DR;
+ sms.Report = true;
else
- sms.Type = GST_MO;
+ sms.Report = false;
+ sms.Type = SMS_Submit;
- sms.Class = -1;
- sms.Compression = false;
- sms.EightBit = false;
- sms.Validity = sms.MessageCenter.Validity;
+ sms.DCS.Type = SMS_GeneralDataCoding;
+ sms.DCS.u.General.Compressed = false;
+ sms.DCS.u.General.Alphabet = SMS_DefaultAlphabet;
+ sms.DCS.u.General.Class = 0;
+ sms.MessageCenter.No = 1;
+ sms.Validity.VPF = SMS_RelativeFormat;
+ sms.Validity.u.Relative = sms.MessageCenter.Validity; /* 4320 minutes == 72 hours */
+ sms.UDH_No = 0;
- strncpy (sms.Destination, number, GSM_MAX_DESTINATION_LENGTH + 1);
- sms.Destination[GSM_MAX_DESTINATION_LENGTH] = '\0';
+ strncpy (sms.RemoteNumber.number, number, GSM_MAX_DESTINATION_LENGTH + 1);
+ sms.RemoteNumber.number[GSM_MAX_DESTINATION_LENGTH] = '\0';
if (l > GSM_MAX_SMS_LENGTH)
{
if (longSMS)
{
- sms.UDHType = GSM_ConcatenatedMessages;
+ sms.UDH[0].Type = SMS_ConcatenatedMessages;
nr_msg = ((l - 1) / 153) + 1;
udh[0] = 0x05; // UDH length
udh[1] = 0x00; // concatenated messages (IEI)
{
udh[5] = j + 1;
- memcpy(sms.UDH,udh,offset);
- strncpy (sms.MessageText, text + (j * 153), 153);
+ memcpy(sms.MessageText,udh,offset);
+ strncpy (sms.MessageText+offset, text + (j * 153), 153);
sms.MessageText[153] = '\0';
buf = g_strdup_printf (_("Sending SMS to %s (%d/%d) ...\n"),
- sms.Destination, j + 1, nr_msg);
+ sms.RemoteNumber.number, j + 1, nr_msg);
gtk_label_set_text (GTK_LABEL (infoDialog.text), buf);
gtk_widget_show_now (infoDialog.dialog);
g_free (buf);
}
else
{
- sms.UDHType = GSM_NoUDH;
+ sms.UDH_Length = 0;
nr_msg = ((l - 1) / 153) + 1;
if (nr_msg > 99) // We have place only for 99 messages in header.
nr_msg = 99;
sms.MessageText[160] = '\0';
buf = g_strdup_printf (_("Sending SMS to %s (%d/%d) ...\n"),
- sms.Destination, j + 1, nr_msg);
+ sms.RemoteNumber.number, j + 1, nr_msg);
gtk_label_set_text (GTK_LABEL (infoDialog.text), buf);
gtk_widget_show_now (infoDialog.dialog);
g_free (buf);
}
else
{
- sms.UDHType = GSM_NoUDH;
+ sms.UDH_Length = 0;
strncpy (sms.MessageText, text, GSM_MAX_SMS_LENGTH + 1);
sms.MessageText[GSM_MAX_SMS_LENGTH] = '\0';
- buf = g_strdup_printf (_("Sending SMS to %s ...\n"), sms.Destination);
+ buf = g_strdup_printf (_("Sending SMS to %s ...\n"), sms.RemoteNumber.number);
gtk_label_set_text (GTK_LABEL (infoDialog.text), buf);
gtk_widget_show_now (infoDialog.dialog);
g_free (buf);
/*
static inline gint CompareSMSMessageLocation (gconstpointer a, gconstpointer b)
{
- return !(((GSM_SMSMessage *) a)->Location == ((GSM_SMSMessage *) b)->Location);
+ return !(((GSM_SMSMessage *) a)->Number == ((GSM_SMSMessage *) b)->Number);
}
*/
gtk_text_thaw (GTK_TEXT (sendSMS.smsSendText));
- //msg.Location = *(((MessagePointers *) gtk_clist_get_row_data(GTK_CLIST (SMS.smsClist),
+ //msg.Number = *(((MessagePointers *) gtk_clist_get_row_data(GTK_CLIST (SMS.smsClist),
// GPOINTER_TO_INT (GTK_CLIST (SMS.smsClist)->selection->data)))->msgPtr);
//r = g_slist_find_custom (SMS.messages, &msg, CompareSMSMessageLocation);