⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 _address_book_engine_8cpp-source.html

📁 symbian v9.1 下的地址本程序
💻 HTML
📖 第 1 页 / 共 5 页
字号:
<a name="l00250"></a>00250 <span class="comment">// gets the XML query based on the search parameter passed</span><a name="l00251"></a>00251 <span class="comment">// SAMPLE XML Request is </span><a name="l00252"></a>00252 <span class="comment">// </span><a name="l00253"></a>00253 <span class="comment">// &lt;ab:Query xmlns:ab=\"urn:nokia:test:addrbook:2004-09\"&gt;</span><a name="l00254"></a>00254 <span class="comment">//       &lt;ab:QueryItem&gt;</span><a name="l00255"></a>00255 <span class="comment">//              &lt;ab:Select&gt; </span><a name="l00256"></a>00256 <span class="comment">//                      ab:Card[contains(ab:N ab:FAMILY,"%S") or contains(ab:N ab:GIVEN, "%S") or contains(ab:TEL, "%S")]</span><a name="l00257"></a>00257 <span class="comment">//              &lt;/ab:Select&gt;</span><a name="l00258"></a>00258 <span class="comment">//       &lt;/ab:QueryItem&gt;</span><a name="l00259"></a>00259 <span class="comment">//       &lt;ab:ResourceID&gt;</span><a name="l00260"></a>00260 <span class="comment">//            XYZ</span><a name="l00261"></a>00261 <span class="comment">//       &lt;/ab:ResourceID&gt;</span><a name="l00262"></a>00262 <span class="comment">// &lt;/ab:Query&gt;</span><a name="l00263"></a>00263 <span class="comment">//</span><a name="l00264"></a>00264 <span class="comment">// The %S will be replaced with the value entered by user as search string</span><a name="l00265"></a>00265 <span class="comment">// ----------------------------------------------------------------------------</span><a name="l00266"></a>00266 <span class="comment">//</span><a name="l00267"></a><a class="code" href="class_c_address_book_engine.html#95d3e261b03f0a2bf7f648406a80904f">00267</a> HBufC8* <a class="code" href="class_c_address_book_engine.html#95d3e261b03f0a2bf7f648406a80904f">CAddressBookEngine::GenerateQueryRequestL</a>(<span class="keyword">const</span> TDesC&amp; aSearchPattern)<a name="l00268"></a>00268         {<a name="l00269"></a>00269         _LIT( KGenQueryReqL, <span class="stringliteral">"CAddressBookEngine::GenerateQueryRequestL(const TDesC&amp; aSearchPattern)"</span>);<a name="l00270"></a>00270         LOG( KGenQueryReqL);<a name="l00271"></a>00271  <a name="l00272"></a>00272         <span class="comment">// Create Query Tag</span><a name="l00273"></a>00273         _LIT8 (KElement, <span class="stringliteral">"Query"</span>);<a name="l00274"></a>00274     CSenElement* element = CSenBaseElement::NewL(KElement);<a name="l00275"></a>00275         CleanupStack::PushL(element);<a name="l00276"></a>00276         element-&gt;SetNamespaceL(KQueryNS, KPpContract);<a name="l00277"></a>00277         <a name="l00278"></a>00278         <span class="comment">// Create QueryItem element</span><a name="l00279"></a>00279         _LIT8 (KQueryItem, <span class="stringliteral">"ab:QueryItem"</span>);     <a name="l00280"></a>00280         CSenElement* queryItem = CSenBaseElement::NewL(KQueryItem);<a name="l00281"></a>00281         CleanupStack::PushL(queryItem);<a name="l00282"></a>00282         <a name="l00283"></a>00283         <span class="comment">// Create Select element</span><a name="l00284"></a>00284         _LIT8 (KSelectElement, <span class="stringliteral">"ab:Select"</span>);<a name="l00285"></a>00285         CSenBaseElement* selectElement=CSenBaseElement::NewL(KSelectElement);   <a name="l00286"></a>00286         CleanupStack::PushL(selectElement);<a name="l00287"></a>00287         <a name="l00288"></a>00288         <span class="comment">//Create temporary buffer and perform UTF8 conversion for parameter passed      </span><a name="l00289"></a>00289         HBufC8* tempBuffer = HBufC8::NewLC(512);        <a name="l00290"></a>00290         TPtr8 ptrSelectQuery = tempBuffer-&gt;Des();       <a name="l00291"></a>00291         HBufC8* pattern = SenXmlUtils::ToUtf8LC(aSearchPattern); <a name="l00292"></a>00292         <span class="comment">//Replace %S with pattern passed in parameter</span><a name="l00293"></a>00293         ptrSelectQuery.Format(KSelectQuery, pattern, pattern, pattern); <a name="l00294"></a>00294                 <a name="l00295"></a>00295         selectElement-&gt;SetContentL(ptrSelectQuery);     <a name="l00296"></a>00296         <span class="comment">// Add select element to QueryItem</span><a name="l00297"></a>00297         queryItem-&gt;AddElementL(*selectElement);<a name="l00298"></a>00298                 <a name="l00299"></a>00299         <span class="comment">//Add QueryItemto Query</span><a name="l00300"></a>00300         element-&gt;AddElementL(*queryItem);<a name="l00301"></a>00301 <a name="l00302"></a>00302         <span class="comment">// Next phase is to create and add ResourceID element into the query.</span><a name="l00303"></a>00303         CSenElement* resourceID = <a class="code" href="class_c_address_book_engine.html#14d7e3cddf3d688054a3b08f070919af">ResolveResourceIdL</a>();<a name="l00304"></a>00304         CSenBaseElement* resourceElement = NULL; <a name="l00305"></a>00305         <span class="keywordflow">if</span>(resourceID)<a name="l00306"></a>00306                 {<a name="l00307"></a>00307                 <span class="comment">// (Encrypted)Resource was successfully resolved. Now check</span><a name="l00308"></a>00308                 <span class="comment">// whether plain ResourceID or EncryptedResourceID is</span><a name="l00309"></a>00309                 <span class="comment">// available and create according element into the query.</span><a name="l00310"></a>00310                 <span class="keywordflow">if</span> (resourceID-&gt;Content().Find(KEncrypted()) != KErrNotFound) <a name="l00311"></a>00311                         {<a name="l00312"></a>00312                         _LIT( KEncResID, <span class="stringliteral">"EncryptedResourceID exists."</span>);<a name="l00313"></a>00313                         LOG(KEncResID);<a name="l00314"></a>00314                         _LIT8 (KResourceElement, <span class="stringliteral">"ab:EncryptedResourceID"</span>);<a name="l00315"></a>00315                         resourceElement = CSenBaseElement::NewL(KResourceElement);<a name="l00316"></a>00316                         CleanupStack::PushL(resourceElement);   <a name="l00317"></a>00317                         <span class="comment">// copy the actual resource id content</span><a name="l00318"></a>00318                         resourceElement-&gt;CopyFromL(*resourceID);<a name="l00319"></a>00319                         }<a name="l00320"></a>00320                 <span class="keywordflow">else</span><a name="l00321"></a>00321                         {<a name="l00322"></a>00322                         _LIT( KOnlyPlainResID, <span class="stringliteral">"Only plain ResourceID should be used (not encrypted)."</span>);<a name="l00323"></a>00323                         LOG( KOnlyPlainResID);<a name="l00324"></a>00324                         _LIT8 (KResourceElement, <span class="stringliteral">"ab:ResourceID"</span>);<a name="l00325"></a>00325                         resourceElement = CSenBaseElement::NewL(KResourceElement);<a name="l00326"></a>00326                         CleanupStack::PushL(resourceElement);   <a name="l00327"></a>00327                         <span class="comment">// Copy the actual resource id content</span><a name="l00328"></a>00328                         resourceElement-&gt;CopyFromL(*resourceID);<a name="l00329"></a>00329                         }<a name="l00330"></a>00330                 }<a name="l00331"></a>00331         <span class="keywordflow">else</span><a name="l00332"></a>00332                 {<a name="l00333"></a>00333                 _LIT( KErrResID, <span class="stringliteral">"Error: could not resolve ResourceID!"</span>);<a name="l00334"></a>00334                 LOG( KErrResID);<a name="l00335"></a>00335                 _LIT8 (KResourceElement, <span class="stringliteral">"ab:ResourceID"</span>);<a name="l00336"></a>00336                 resourceElement=CSenBaseElement::NewL(KResourceElement);        <a name="l00337"></a>00337                 CleanupStack::PushL(resourceElement);   <a name="l00338"></a>00338                 resourceElement-&gt;SetContentL(KResourceIDVal); <span class="comment">// example content</span><a name="l00339"></a>00339                 }<a name="l00340"></a>00340         element-&gt;AddElementL(*resourceElement);<a name="l00341"></a>00341         CleanupStack::Pop(resourceElement); <a name="l00342"></a>00342         <a name="l00343"></a>00343         <span class="comment">//Get the XML</span><a name="l00344"></a>00344         HBufC8* soapBuf = element-&gt;AsXmlL();<a name="l00345"></a>00345 <a name="l00346"></a>00346         <span class="comment">// Log the XML request</span><a name="l00347"></a>00347     _LIT( KGenQuery, <span class="stringliteral">"Generated Query:"</span>);<a name="l00348"></a>00348     LOG( KGenQuery);<a name="l00349"></a>00349         LOG_ALL(( soapBuf-&gt;Des() ));<a name="l00350"></a>00350         <a name="l00351"></a>00351         <span class="comment">//Destroy the objects pushed on cleanup stack</span><a name="l00352"></a>00352         CleanupStack::PopAndDestroy(pattern);<a name="l00353"></a>00353         CleanupStack::PopAndDestroy(tempBuffer);<a name="l00354"></a>00354         CleanupStack::Pop(selectElement);<a name="l00355"></a>00355         CleanupStack::Pop(queryItem);<a name="l00356"></a>00356         CleanupStack::PopAndDestroy(element);<a name="l00357"></a>00357         <span class="comment">//return Pointer to Soap Request Buffer;</span><a name="l00358"></a>00358         <span class="keywordflow">return</span> soapBuf;<a name="l00359"></a>00359         }<a name="l00360"></a>00360 <a name="l00361"></a>00361 <span class="comment">// ----------------------------------------------------------------------------</span><a name="l00362"></a>00362 <span class="comment">// CAddressBookEngine::SendSearchL(const TDesC&amp; aSearchPattern)</span><a name="l00363"></a>00363 <span class="comment">// function is called after an user has selected Search from the GUI </span><a name="l00364"></a>00364 <span class="comment">// and typed a request. Function creates a search pattern from the descriptor</span><a name="l00365"></a>00365 <span class="comment">// and send it to the WSP. The message from server is received through </span><a name="l00366"></a>00366 <span class="comment">// HandleMessageL() or an error is received through HandleErrorL().</span><a name="l00367"></a>00367 <span class="comment">// ----------------------------------------------------------------------------</span><a name="l00368"></a>00368 <span class="comment">//</span><a name="l00369"></a><a class="code" href="class_c_address_book_engine.html#747630896453ebd94401850077f9ce1e">00369</a> <span class="keywordtype">void</span> <a class="code" href="class_c_address_book_engine.html#747630896453ebd94401850077f9ce1e">CAddressBookEngine::SendSearchL</a>(<span class="keyword">const</span> TDesC&amp; aSearchPattern)<a name="l00370"></a>00370         {       <a name="l00371"></a>00371         _LIT( KSendSearchL, <span class="stringliteral">"CAddressBookEngine::SendSearchL()"</span>);<a name="l00372"></a>00372         LOG(KSendSearchL);<a name="l00373"></a>00373         <a class="code" href="class_c_address_book_engine.html#b07a7dadac01652ed3d4d68d40d79a15">iErrorState</a> = ENoError;<a name="l00374"></a>00374         <span class="keywordflow">if</span> (!<a class="code" href="class_c_address_book_engine.html#f702971f167e073a81134fd2876d0298">iConnection</a>)<a name="l00375"></a>00375                 {<a name="l00376"></a>00376                 _LIT( KConnNotReady, <span class="stringliteral">"Connection not ready."</span>);<a name="l00377"></a>00377                 LOG(KConnNotReady);<a name="l00378"></a>00378                 <a class="code" href="class_c_address_book_engine.html#5598d19cc10719afd28055422087a200">iObserver</a>.<a class="code" href="class_m_address_book_engine_observer.html#b3a39294ac41ecd9ba1eaae63fc36346">ErrorL</a>(EConnectionNotReady);<a name="l00379"></a>00379                 <span class="keywordflow">return</span>;<a name="l00380"></a>00380                 }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -