equal
deleted
inserted
replaced
20 #include "mussettings.h" |
20 #include "mussettings.h" |
21 #include "muslogger.h" |
21 #include "muslogger.h" |
22 |
22 |
23 #include <uri8.h> |
23 #include <uri8.h> |
24 #include <charconv.h> |
24 #include <charconv.h> |
25 //#include <f32file.h> |
|
26 #include <utf.h> |
25 #include <utf.h> |
27 #include <collate.h> |
26 #include <collate.h> |
28 |
27 |
29 |
28 |
30 // ============================ MEMBER FUNCTIONS =============================== |
29 // ============================ MEMBER FUNCTIONS =============================== |
32 |
31 |
33 // ----------------------------------------------------------------------------- |
32 // ----------------------------------------------------------------------------- |
34 // UTF7 is not working, since it converts + as +- |
33 // UTF7 is not working, since it converts + as +- |
35 // ----------------------------------------------------------------------------- |
34 // ----------------------------------------------------------------------------- |
36 // |
35 // |
37 EXPORT_C TMusEngUriParser::TMusEngUriParser( const TDesC16& aUri ) |
36 TMusEngUriParser::TMusEngUriParser( const TDesC16& aUri ) |
38 :iUriType( ENotParsed ) |
37 :iUriType( ENotParsed ) |
39 { |
38 { |
40 TBuf8<KMaxUriLength> buf; |
39 TBuf8<KMaxUriLength> buf; |
41 |
40 |
42 if ( CnvUtfConverter::ConvertFromUnicodeToUtf8( buf, aUri ) == 0 ) |
41 if ( CnvUtfConverter::ConvertFromUnicodeToUtf8( buf, aUri ) == 0 ) |
47 { |
46 { |
48 iUri = KNullDesC8(); |
47 iUri = KNullDesC8(); |
49 } |
48 } |
50 } |
49 } |
51 |
50 |
52 |
51 // ----------------------------------------------------------------------------- |
53 // ----------------------------------------------------------------------------- |
52 // |
54 // |
53 // ----------------------------------------------------------------------------- |
55 // ----------------------------------------------------------------------------- |
54 // |
56 // |
55 TMusEngUriParser::TMusEngUriType TMusEngUriParser::UriType() |
57 EXPORT_C TMusEngUriParser::TMusEngUriType TMusEngUriParser::UriType() |
|
58 { |
56 { |
59 return iUriType; |
57 return iUriType; |
60 } |
58 } |
61 |
59 |
62 |
60 // ----------------------------------------------------------------------------- |
63 // ----------------------------------------------------------------------------- |
61 // |
64 // |
62 // ----------------------------------------------------------------------------- |
65 // ----------------------------------------------------------------------------- |
63 // |
66 // |
64 HBufC8* TMusEngUriParser::GetUri8L() |
67 EXPORT_C HBufC8* TMusEngUriParser::GetUri8L() |
|
68 { |
65 { |
69 MUS_LOG( "mus: [ENGINE] -> TMusEngUriParser::GetUri8L()" ) |
66 MUS_LOG( "mus: [ENGINE] -> TMusEngUriParser::GetUri8L()" ) |
70 |
67 |
71 __ASSERT_ALWAYS( UriType() != TMusEngUriParser::ENotParsed, |
68 __ASSERT_ALWAYS( UriType() != TMusEngUriParser::ENotParsed, |
72 User::Leave( KErrNotReady ) ); |
69 User::Leave( KErrNotReady ) ); |
74 HBufC8* uri8 = iUri.AllocL(); |
71 HBufC8* uri8 = iUri.AllocL(); |
75 |
72 |
76 MUS_LOG( "mus: [ENGINE] <- TMusEngUriParser::GetUri8L()" ) |
73 MUS_LOG( "mus: [ENGINE] <- TMusEngUriParser::GetUri8L()" ) |
77 |
74 |
78 return uri8; |
75 return uri8; |
79 |
76 } |
80 } |
|
81 |
|
82 |
77 |
83 // ----------------------------------------------------------------------------- |
78 // ----------------------------------------------------------------------------- |
84 // |
79 // |
85 // ----------------------------------------------------------------------------- |
80 // ----------------------------------------------------------------------------- |
86 // |
81 // |
87 EXPORT_C HBufC16* TMusEngUriParser::GetUri16L( TBool aPrefix ) |
82 HBufC16* TMusEngUriParser::GetUri16L( TBool aPrefix ) |
88 { |
83 { |
89 MUS_LOG( "mus: [ENGINE] -> TMusEngUriParser::GetUri16L()" ) |
84 MUS_LOG( "mus: [ENGINE] -> TMusEngUriParser::GetUri16L()" ) |
90 |
85 |
91 __ASSERT_ALWAYS( UriType() != TMusEngUriParser::ENotParsed, |
86 __ASSERT_ALWAYS( UriType() != TMusEngUriParser::ENotParsed, |
92 User::Leave( KErrNotReady ) ); |
87 User::Leave( KErrNotReady ) ); |
104 } |
99 } |
105 |
100 |
106 MUS_LOG( "mus: [ENGINE] <- TMusEngUriParser::GetUri16L()" ) |
101 MUS_LOG( "mus: [ENGINE] <- TMusEngUriParser::GetUri16L()" ) |
107 |
102 |
108 return uri16; |
103 return uri16; |
109 |
104 } |
110 } |
105 |
111 |
106 // ----------------------------------------------------------------------------- |
112 |
107 // |
113 // ----------------------------------------------------------------------------- |
108 // ----------------------------------------------------------------------------- |
114 // |
109 // |
115 // |
110 void TMusEngUriParser::ParseUriL() |
116 // ----------------------------------------------------------------------------- |
|
117 // |
|
118 EXPORT_C void TMusEngUriParser::ParseUriL() |
|
119 { |
111 { |
120 MUS_LOG( "mus: [ENGINE] -> TMusEngUriParser::ParseUriL()" ) |
112 MUS_LOG( "mus: [ENGINE] -> TMusEngUriParser::ParseUriL()" ) |
121 |
113 |
122 if ( iUri.Find( KMusEngAtSign ) >= 0 ) // Sip uri |
114 if ( iUri.Find( KMusEngAtSign ) >= 0 ) // Sip uri |
123 { |
115 { |
133 if ( MultimediaSharingSettings::OperatorVariantSettingL() |
125 if ( MultimediaSharingSettings::OperatorVariantSettingL() |
134 != MusSettingsKeys::EOperatorSpecific ) |
126 != MusSettingsKeys::EOperatorSpecific ) |
135 {// basic behaviour |
127 {// basic behaviour |
136 MUS_LOG( "mus: [ENGINE] -> TMusEngUriParser::ParseUriL() \ |
128 MUS_LOG( "mus: [ENGINE] -> TMusEngUriParser::ParseUriL() \ |
137 normal behaviour" ) |
129 normal behaviour" ) |
138 User::Leave( KErrCorrupt ); |
130 User::Leave( KErrArgument ); |
139 } |
131 } |
140 else |
132 else |
141 { // variant behaviour(local tel uri) |
133 { // variant behaviour(local tel uri) |
142 HandleLocalTelUriL(); |
134 HandleLocalTelUriL(); |
143 } |
135 } |
144 } |
136 } |
145 } |
137 } |
146 |
138 |
147 |
139 // ----------------------------------------------------------------------------- |
148 // ----------------------------------------------------------------------------- |
|
149 // |
|
150 // |
140 // |
151 // ----------------------------------------------------------------------------- |
141 // ----------------------------------------------------------------------------- |
152 // |
142 // |
153 void TMusEngUriParser::HandleSipUriL() |
143 void TMusEngUriParser::HandleSipUriL() |
154 { |
144 { |
187 |
177 |
188 User::LeaveIfError( parser.Validate() ); |
178 User::LeaveIfError( parser.Validate() ); |
189 |
179 |
190 iUriType = TMusEngUriParser::ESip; |
180 iUriType = TMusEngUriParser::ESip; |
191 } |
181 } |
192 |
|
193 |
182 |
194 |
183 // ----------------------------------------------------------------------------- |
195 |
|
196 // ----------------------------------------------------------------------------- |
|
197 // |
|
198 // |
184 // |
199 // ----------------------------------------------------------------------------- |
185 // ----------------------------------------------------------------------------- |
200 // |
186 // |
201 void TMusEngUriParser::HandleTelUriL() |
187 void TMusEngUriParser::HandleTelUriL() |
202 { |
188 { |
203 // Remove leading and trailing whitespaces |
|
204 iUri.TrimAll(); |
189 iUri.TrimAll(); |
205 if ( iUri.FindF( KMusEngTelPrefix() ) != 0 ) |
190 if ( iUri.FindF( KMusEngTelPrefix() ) != 0 ) |
206 { |
191 { |
207 // Tel uri without prefix |
192 // Tel uri without prefix |
208 if ( iUri.Length() + KMusEngTelPrefix().Length() <= |
193 if ( iUri.Length() + KMusEngTelPrefix().Length() <= |
221 iUri.Replace( 0, KMusEngTelPrefix().Length(), KMusEngTelPrefix() ); |
206 iUri.Replace( 0, KMusEngTelPrefix().Length(), KMusEngTelPrefix() ); |
222 } |
207 } |
223 |
208 |
224 TInt index = KMusEngTelPrefix().Length() + KMusEngPlusSign().Length(); |
209 TInt index = KMusEngTelPrefix().Length() + KMusEngPlusSign().Length(); |
225 |
210 |
226 // Remove whitespaces and extra chracters like parentheses. Check that the |
|
227 // rest characters are digits |
|
228 while ( index < iUri.Length() ) |
211 while ( index < iUri.Length() ) |
229 { |
212 { |
230 TChar character = iUri[ index ]; |
213 TChar character = iUri[ index ]; |
231 if ( character.IsAlpha() ) |
214 if ( character.IsAlpha() ) |
232 { |
215 { |
243 } |
226 } |
244 |
227 |
245 iUriType = TMusEngUriParser::ETel; |
228 iUriType = TMusEngUriParser::ETel; |
246 } |
229 } |
247 |
230 |
248 |
231 // ----------------------------------------------------------------------------- |
249 // ----------------------------------------------------------------------------- |
|
250 // |
|
251 // |
232 // |
252 // ----------------------------------------------------------------------------- |
233 // ----------------------------------------------------------------------------- |
253 // |
234 // |
254 void TMusEngUriParser::HandleLocalTelUriL() |
235 void TMusEngUriParser::HandleLocalTelUriL() |
255 { |
236 { |
256 MUS_LOG( "mus: [ENGINE] -> TMusEngUriParser::ParseUriL() \ |
237 MUS_LOG( "mus: [ENGINE] -> TMusEngUriParser::ParseUriL() \ |
257 variant behaviour" ) |
238 variant behaviour" ) |
258 if ( iUri.FindF( KMusEngTelPrefix() ) != 0 ) |
239 if ( iUri.FindF( KMusEngTelPrefix() ) != 0 ) |
259 { |
240 { |
260 // local tel uri without prefix |
241 // local tel uri without prefix |
261 if ( iUri.Length() + KMusEngTelPrefix().Length() <= |
242 if ( iUri.Length() + KMusEngTelPrefix().Length() <= KMaxUriLength ) |
262 KMaxUriLength ) |
|
263 { |
243 { |
264 iUri.Insert( 0, KMusEngTelPrefix() ); |
244 iUri.Insert( 0, KMusEngTelPrefix() ); |
265 } |
245 } |
266 else |
246 else |
267 { |
247 { |
269 } |
249 } |
270 } |
250 } |
271 else |
251 else |
272 { |
252 { |
273 //Tel uri with prefix |
253 //Tel uri with prefix |
274 iUri.Replace( |
254 iUri.Replace( 0, KMusEngTelPrefix().Length(), KMusEngTelPrefix() ); |
275 0, |
|
276 KMusEngTelPrefix().Length(), |
|
277 KMusEngTelPrefix() ); |
|
278 } |
255 } |
279 |
256 |
280 TInt index = KMusEngTelPrefix().Length(); |
257 TInt index = KMusEngTelPrefix().Length(); |
281 |
258 |
282 // check if all chars are digits |
259 // check if all chars are digits |
290 ++index; |
267 ++index; |
291 } |
268 } |
292 |
269 |
293 iUriType = TMusEngUriParser::ETel; |
270 iUriType = TMusEngUriParser::ETel; |
294 } |
271 } |
295 |
272 |
296 |
|
297 // End of file |
273 // End of file |