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