Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members

newsms.cpp

00001 /*! 00002 @class NewSms 00003 @brief Zeigt einen "NewSms" Dialog an. 00004 @author Thomas Gemperli, <bluephone@gemperli.net> 00005 @version 1.0 00006 @date 2004-08-07 00007 @par This program is free software; you can redistribute it and/or 00008 modify it under the terms of the GNU General Public License. 00009 @file newsms.cpp 00010 */ 00011 00012 00013 #include "newsms.h" 00014 00015 #include <qlineedit.h> 00016 #include <qtextedit.h> 00017 00018 00019 /** 00020 * Erstellt einen NewSmsDlg. 00021 * Falle eine Antwort geschickt wird, erwartet der Konstruktor die Daten der selektierten Message. 00022 * Meine Parameter: QString Mode, Receiver, Message 00023 */ 00024 NewSms::NewSms(QWidget* parent, const char* name, bool modal, WFlags fl, 00025 const QString& Mode, const QString& Receiver, const QString& Message) 00026 : FormNewSmsDlg(parent,name, modal,fl) 00027 { 00028 /* wird ein neues SMS geschickt oder ein erhaltenes beantwortet oder ein neues aus der Kontaktliste erstellt? */ 00029 if ( Mode == "new" ) 00030 { 00031 /* setze den Titel des Dialoges */ 00032 setCaption("New SMS"); 00033 } 00034 else if ( Mode == "reply" ) 00035 { 00036 /* Parameter in die privaten Variablen abspeichern. */ 00037 m_phoneSmsNumber = Receiver; 00038 m_phoneSmsMessage = Message; 00039 00040 m_phoneSmsMessage.prepend("\nYou wrote: \n"); 00041 00042 /* fuelle die Werte in den NewSmsDlg ab. */ 00043 lineEditNewSmsNumber->setText(m_phoneSmsNumber); 00044 textEditNewSmsMessage->setText(m_phoneSmsMessage); 00045 00046 /* setze den Titel des Dialoges */ 00047 setCaption("Reply SMS"); 00048 } 00049 else if ( Mode == "fromcontact" ) 00050 { 00051 /* Parameter in die private Variable abspeichern. */ 00052 m_phoneSmsNumber = Receiver; 00053 00054 /* fuelle den Wert in den NewSmsDlg ab. */ 00055 lineEditNewSmsNumber->setText(m_phoneSmsNumber); 00056 00057 /* setze den Titel des Dialoges */ 00058 setCaption("New SMS"); 00059 } 00060 } 00061 00062 00063 /** 00064 * NewSms Destruktor 00065 */ 00066 NewSms::~NewSms() 00067 { 00068 } 00069 00070 00071 /** 00072 * Dieser Slot liest die Eingabefelder des Dialoges ein und sendet das Resultat via transmitSms an Bluephone. 00073 */ 00074 void NewSms::readSms() 00075 { 00076 /* lese die Eingabefelder ein */ 00077 m_phoneSmsNumber = lineEditNewSmsNumber->text(); 00078 m_phoneSmsMessage = textEditNewSmsMessage->text(); 00079 00080 /* ermittle die Laenge der Message */ 00081 m_charCount = m_phoneSmsMessage.length(); 00082 00083 /* Je nach Anzahl Zeichen der Message, muessen ein, zwei oder noch mehr SMS erstellt werden. */ 00084 if ( m_charCount < 160 ) 00085 { 00086 m_smsCount = 1; 00087 } 00088 else 00089 { 00090 m_smsCount = m_charCount / 153; 00091 } 00092 00093 if ( m_charCount % 153 && m_charCount > 160 ) 00094 { 00095 m_smsCount++; 00096 } 00097 00098 /* Erstelle eine Random Inteter fuer die Message ID. 00099 Ist fuer das Telephon. Es verweiget die Annahme einer Nachricht, 00100 wenn es pro Session die selbe ID zweimal bekommt. Der eigentliche Wert der ID ist aber egal. */ 00101 m_id=(int) (256.0*rand()/(RAND_MAX+1.0)); 00102 00103 00104 /* sende das Resultat an Bluephone. Bei ueberlangen SMS wird dies mehrfach ausgeloest. */ 00105 for (m_index = 1; m_index <= m_smsCount; m_index++) 00106 { 00107 emit transmitSms(m_phoneSmsNumber, m_phoneSmsMessage, m_index, m_id); 00108 } 00109 00110 /* Setzte die LED auf gruen zurueck */ 00111 emit transmitLedStateGreen(); 00112 00113 this->close(); 00114 } 00115 00116 00117 /** 00118 * Dieser Slot updated die Felder lineEditNewSmsCharsLeft und lineEditNewSmsCount, 00119 * wenn in textEditNewSmsMessage eine Aenderung geschieht. 00120 */ 00121 void NewSms::updateCharsLeft() 00122 { 00123 /* hole die Anzahl Zeichen im Textfeld */ 00124 m_charsInMessage = textEditNewSmsMessage->text().length(); 00125 00126 /* Berechne die benoetigte Anzahl SMS und die restlichen Zeichen im aktuellen SMS. */ 00127 m_smsCounter = m_charsInMessage / 160; 00128 m_charsLeft = m_charsInMessage - (m_smsCounter * 160); 00129 m_charsLeft = 160 - m_charsLeft; 00130 m_smsCounter = 1 + m_smsCounter; 00131 00132 /* Wandle die Resultate in Strings um. */ 00133 m_charsLeftStr.setNum(m_charsLeft); 00134 m_smsCounterStr.setNum(m_smsCounter); 00135 00136 /* fuelle die Werte in den NewSmsDlg ab. */ 00137 lineEditNewSmsCharsLeft->setText(m_charsLeftStr); 00138 lineEditNewSmsCount->setText(m_smsCounterStr); 00139 } 00140 00141 00142 /** 00143 * Dieser Slot schliesst den Dialog. 00144 */ 00145 void NewSms::closeDialog() 00146 { 00147 /* Setzte die LED auf gruen zurueck */ 00148 emit transmitLedStateGreen(); 00149 00150 this->close(); 00151 } 00152 00153 00154 #include "newsms.moc" 00155 00156

Generated on Tue Aug 17 14:42:28 2004 for BluePhone by doxygen 1.3.7