Hi Philippe,

On 06/27/2012 10:10 AM, Philippe Nunes wrote:
---
  src/control.cpp             |    9 +++----
  src/hardwaremanipulator.cpp |   61 ++++++++++++++++++++++---------------------
  src/hardwaremanipulator.h   |    6 +++--
  3 files changed, 38 insertions(+), 38 deletions(-)


<snip>

@@ -91,43 +90,45 @@ QString HardwareManipulator::constructCBMessage(const 
QString&messageCode, int
          warning(tr("Invalid Channel,"),
                  tr("Channel  must be 4 hex digits long "
                     "and no larger than FFFF"));
-        return "";
+        return;
      }

-    //scheme is currently hardcoded to QSMS8_BitCodingScheme
-    //uint sch = convertString(scheme, NIBBLE_MAX, ONE_CHAR,HEX_BASE,&ok);
-    //if ( !ok )
-    //    return "";
-
      QCBSMessage::Language lang = (QCBSMessage::Language)language;

-    uint npag = convertString(numPages, NIBBLE_MAX,ONE_CHAR,HEX_BASE,&ok);
-    if ( !ok ) {
-        warning(tr("Invalid number of pages,"),
-                tr("Number of pages  must be 1 hex digit long "
-                   "and no larger than F"));
-        return "";
-    }
-
-    uint pag = convertString(page, NIBBLE_MAX,ONE_CHAR,HEX_BASE,&ok);
-    if ( !ok ) {
-        warning(tr("Invalid page number,"),
-                tr("Page number  must be 1 hex digit long "
-                   "and no larger than F"));
-        return "";
-    }
-
      QCBSMessage m;
      m.setMessageCode(mc);
      m.setScope(gs);
      m.setUpdateNumber(un);
      m.setChannel(ch);
      m.setLanguage(lang);
-    m.setNumPages(npag);
-    m.setPage(pag);
+    m.setPage(1);
      m.setText(content);
+    m.setDataCodingScheme(m.bestScheme());
+
+    if ( m.dataCodingScheme() == QSMS_DefaultAlphabet&&
+                content.length()>  (15*93)) {
+        warning(tr("Text too long"),
+        tr("The maximum number of pages (15) "
+                          "is reached - text is truncated"));
+        m.setText(content.mid( 0, 15*93 ));
+    } else if (content.length()>  (15*40)) {
+        warning(tr("Text too long"),
+        tr("The maximum number of pages (15) "
+                           "is reached - text is truncated"));
+        m.setText(content.mid( 0, 15*40 ));
+    }

Why are you adding these checks when computeSize can already tell you the number of pages required? Also, this really belongs in the follow-on patch since that deals with multiple pages. It sounds like bestScheme / dataCodingScheme need some more thought.

+
+    uint nbPages, spaceLeftInLast;
+    m.computeSize( nbPages, spaceLeftInLast );
+    m.setNumPages(nbPages);

The split() operation should really be setting the number of pages.

Regards,
-Denis
_______________________________________________
ofono mailing list
ofono@ofono.org
http://lists.ofono.org/listinfo/ofono

Reply via email to