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
[email protected]
http://lists.ofono.org/listinfo/ofono