uifw/EikStd/coctlsrc/smileymanager.cpp
branchRCL_3
changeset 38 c52421ed5f07
parent 29 a8834a2e9a96
child 55 aecbbf00d063
equal deleted inserted replaced
29:a8834a2e9a96 38:c52421ed5f07
   113         TInt index( iModel->TryFindMatchNode( aText, i ) );
   113         TInt index( iModel->TryFindMatchNode( aText, i ) );
   114         if ( iModel->IsFinalNode( index ) )
   114         if ( iModel->IsFinalNode( index ) )
   115             {
   115             {
   116             TInt smileyLength( iModel->SmileyStringLength( index ) );
   116             TInt smileyLength( iModel->SmileyStringLength( index ) );
   117             TInt docPos( aStart + i );
   117             TInt docPos( aStart + i );
   118             CSmileyIcon* icon( iIconRecord->SmileyIconAtPos( docPos ) );
   118             
   119             if ( !icon || ( icon && !icon->IsDisabled() ) )
   119             if( iModel->IsSmileyBySemanticAnalysis( aText.Left( docPos + smileyLength ), 
       
   120 				smileyLength ) )
   120                 {
   121                 {
   121                 if ( !icon )
   122                 TText smileyCode( iModel->SmileyCode( index ) );
       
   123                 CSmileyIcon* icon( iIconRecord->SmileyIconAtPos( docPos ) );
       
   124                 // If icon is existed but smiley codes are different, it means smiely 
       
   125 				// string has been changed and editor doesn't know it, so delete old icon 
       
   126 				// and create a new one. Otherwise, nothing needs to do since the icon is 
       
   127 				// already existed.
       
   128                 if ( icon && icon->Code() != smileyCode )
   122                     {
   129                     {
   123                     TText smileyCode( iModel->SmileyCode( index ) );
   130                     iIconRecord->DeleteIconAtPos( docPos );
   124                     AddSmileyToRecordL( aText.Mid( i, smileyLength ), docPos, 
   131                     icon = NULL;
   125                         smileyCode );
       
   126                     }
   132                     }
   127                 iModel->ReplaceTextWithCodes( aText, i, index );
   133                 if ( !icon || ( icon && !icon->IsDisabled() ) )
   128                 ret = ETrue;
   134                     {
       
   135                     if ( !icon )
       
   136                         {                    
       
   137                         AddSmileyToRecordL( aText.Mid( i, smileyLength ), docPos, 
       
   138                             smileyCode );
       
   139                         }
       
   140                     iModel->ReplaceTextWithCodes( aText, i, index );
       
   141                     ret = ETrue;
       
   142                     }
   129                 }
   143                 }
       
   144 
   130             i += smileyLength;
   145             i += smileyLength;
   131             }
   146             }
   132         else
   147         else
   133             {
   148             {
   134             i++;
   149             i++;
   277 // ---------------------------------------------------------------------------
   292 // ---------------------------------------------------------------------------
   278 //
   293 //
   279 TInt CSmileyManager::SmileyLength( TInt aDocPos )
   294 TInt CSmileyManager::SmileyLength( TInt aDocPos )
   280     {
   295     {
   281     CSmileyIcon* icon( iIconRecord->SmileyIconAtPos( aDocPos ) );
   296     CSmileyIcon* icon( iIconRecord->SmileyIconAtPos( aDocPos ) );
   282     if ( icon )
   297     if ( icon && !icon->IsDisabled() )
   283         {
   298         {
   284         return icon->SmileyLength();
   299         return icon->SmileyLength();
   285         }
   300         }
   286     return 0;
   301     return 0;
   287     }
   302     }