1.1 --- a/epoc32/include/tuladdressstringtokenizer.h Tue Mar 16 16:12:26 2010 +0000
1.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
1.3 @@ -1,165 +0,0 @@
1.4 -/*
1.5 -* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
1.6 -* All rights reserved.
1.7 -* This component and the accompanying materials are made available
1.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
1.9 -* which accompanies this distribution, and is available
1.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
1.11 -*
1.12 -* Initial Contributors:
1.13 -* Nokia Corporation - initial contribution.
1.14 -*
1.15 -* Contributors:
1.16 -*
1.17 -* Description:
1.18 -*
1.19 -*/
1.20 -
1.21 -
1.22 -
1.23 -#ifndef __TULADDRESSSTRINGTOKENIZER_H__
1.24 -#define __TULADDRESSSTRINGTOKENIZER_H__
1.25 -
1.26 -#include <e32base.h>
1.27 -
1.28 -/**
1.29 -Address String Tokenizer API offers methods for parsing phone numbers and e-mail,
1.30 -URL and URI addresses from the given text. The API consists of the
1.31 -CTulAddressStringTokenizer class.
1.32 -
1.33 -Usage:
1.34 -
1.35 -@code
1.36 - #include <tuladdressstringtokenizer.h>
1.37 -
1.38 - // SFoundItem instance
1.39 - CTulAddressStringTokenizer::SFoundItem item;
1.40 -
1.41 - // Some text
1.42 - TBufC<256> strSomeText(_L("Mail to me@someplace.com or call 040 1234567.
1.43 - You can also tune in to audio feed at rtsp://someplace.com/somefeed.ra."));
1.44 -
1.45 - // First the user has to create an instance of CTulAddressStringTokenizer by using the
1.46 - // factory method NewL(). The method takes two parameters. The first
1.47 - // parameter defines the text to be searched from and the second parameter
1.48 - // tells what exactly is being looked for.
1.49 - CTulAddressStringTokenizer singleSearch = CTulAddressStringTokenizer::NewL(strSomeText,
1.50 - CTulAddressStringTokenizer::EFindItemSearchMailAddressBin);
1.51 -
1.52 - // The passed text is parsed in construction, and found items can be fetched
1.53 - // by using the ItemArray() method. It returns a constant array containing
1.54 - // all the found items. The interface also offers helper functions for
1.55 - // handling the item array by itself.
1.56 -
1.57 - // Get count of found items.
1.58 - TInt count(singleSearch->ItemCount());
1.59 -
1.60 - // Get currently selected item (me@someplace.com) to the result1 variable.
1.61 - singleSearch->Item(item);
1.62 - TPtrC16 result1(strSomeText.Mid(item.iStartPos, item.iLength));
1.63 -
1.64 - // Deallocate memory
1.65 - delete singleSearch;
1.66 -
1.67 - // Create an instance of CTulAddressStringTokenizer and look for all possible
1.68 - // things (cases work as binary mask).
1.69 - CTulAddressStringTokenizer* multiSearch = CTulAddressStringTokenizer::NewL(strSomeText,
1.70 - (CTulAddressStringTokenizer::EFindItemSearchPhoneNumberBin |
1.71 - CTulAddressStringTokenizer::EFindItemSearchURLBin |
1.72 - CTulAddressStringTokenizer::EFindItemSearchMailAddressBin |
1.73 - CTulAddressStringTokenizer::EFindItemSearchScheme));
1.74 -
1.75 - // Get count of found items.
1.76 - TInt count2(multiSearch->ItemCount());
1.77 -
1.78 - // Get currently selected item to the result2 variable.
1.79 - multiSearch->Item(item);
1.80 -
1.81 - // Debug print all items and their type.
1.82 - for( TInt i=0; i<count2; i++)
1.83 - {
1.84 - TPtrC16 result2(strSomeText.Mid(item.iStartPos, item.iLength));
1.85 - RDebug::Print(_L("Found type %d item:"), item.iItemType);
1.86 - RDebug::Print(_L("%S"), &result2);
1.87 - multiSearch->NextItem(item);
1.88 - }
1.89 -
1.90 - // Deallocate memory
1.91 - delete multiSearch;
1.92 -@endcode
1.93 -
1.94 -@publishedAll
1.95 -@released
1.96 -*/
1.97 -
1.98 -class CTulAddressStringTokenizer : public CBase
1.99 - {
1.100 -public:
1.101 -#define TFindItemSearchCase TTokenizerSearchCase // For source compatibility with S60 only
1.102 - /**
1.103 - Enumeration to define the search case.
1.104 - Multiple enumerations can be used as binary mask.
1.105 - */
1.106 - enum TTokenizerSearchCase
1.107 - {
1.108 - // Searches phone numbers.
1.109 - EFindItemSearchPhoneNumberBin = 4,
1.110 - // Searches mail addresses.
1.111 - EFindItemSearchMailAddressBin = 8,
1.112 - // Searches fixed start URLs ("http://", "https://", "rtsp://"), "www.", "wap." and IPv4 addresses.
1.113 - EFindItemSearchURLBin = 16,
1.114 - // Searches for all URIs containing a scheme.
1.115 - EFindItemSearchScheme = 32
1.116 - };
1.117 -
1.118 - // Struct to contain a found item.
1.119 - struct SFoundItem
1.120 - {
1.121 - TInt iStartPos; // Start position of the found item.
1.122 - TInt iLength; // Length of the found item (characters).
1.123 - TTokenizerSearchCase iItemType; // Search case of the found item
1.124 - };
1.125 -
1.126 -public: // Constructors and destructor
1.127 - IMPORT_C static CTulAddressStringTokenizer* NewL( const TDesC& aText, TInt aSearchCases );
1.128 - IMPORT_C static CTulAddressStringTokenizer* NewL( const TDesC& aText, TInt aSearchCases, TInt aMinNumbers );
1.129 - IMPORT_C ~CTulAddressStringTokenizer();
1.130 -public:
1.131 - IMPORT_C TInt ItemCount() const;
1.132 - IMPORT_C TBool Item( SFoundItem& aItem ) const;
1.133 - IMPORT_C TBool NextItem( SFoundItem& aItem );
1.134 - IMPORT_C TBool PrevItem( SFoundItem& aItem );
1.135 - IMPORT_C const CArrayFixFlat<SFoundItem>* ItemArray() const;
1.136 - IMPORT_C TInt Position() const;
1.137 - IMPORT_C void ResetPosition();
1.138 - IMPORT_C TInt DoNewSearchL( const TDesC& aText, TInt aSearchCases);
1.139 - IMPORT_C TInt DoNewSearchL( const TDesC& aText, TInt aSearchCases, TInt aMinNumbers );
1.140 -private:
1.141 - CTulAddressStringTokenizer();
1.142 - void AddItemL( TInt aStartPos, TInt aLength, TTokenizerSearchCase aType );
1.143 -
1.144 - TBool SearchPhoneNumberL( const TDesC& aText );
1.145 - TBool SearchMailAddressL( const TDesC& aText );
1.146 - TBool SearchGenericUriL( const TDesC& aText );
1.147 - TBool SearchUrlL( const TDesC& aText, TBool aFindFixedSchemas );
1.148 - TBool ParseUrlL( const TDesC& aType, const TPtrC& aTokenPtr, TInt aTextOffset );
1.149 -
1.150 - static TBool IsValidEmailChar(const TChar& charac); // Login part of the e-mail address
1.151 - static TBool IsValidEmailHostChar(const TChar& charac); // Host part of the e-mail address
1.152 - static TBool IsValidPhoneNumberChar(const TChar& charac); // Phone number
1.153 - static TBool IsValidUrlChar( const TChar& charac); // URL
1.154 -
1.155 - void ConstructL( const TDesC& aText, TInt aSearchCases, TInt aMinNumbers );
1.156 - void PerformSearchL( const TDesC& aText, TInt aSearchCases );
1.157 -
1.158 - CTulAddressStringTokenizer( const CTulAddressStringTokenizer& ); // Prohibit copy constructor
1.159 - CTulAddressStringTokenizer& operator= ( const CTulAddressStringTokenizer& ); // Prohibit assigment operator
1.160 -private:
1.161 - CArrayFixFlat<SFoundItem>* iFoundItems; // Array of all found items.
1.162 - TInt iPosition; // Engine's position in the iFoundItems.
1.163 - TInt iMinNumbers; // Minimum count of numbers in a phone number
1.164 - };
1.165 -
1.166 -
1.167 -#endif // __TULADDRESSSTRINGTOKENIZER_H__
1.168 -