textinput/peninputgenericvkb/src/peninputgenericvkbwindow.cpp
branchRCL_3
changeset 10 6defe5d1bd39
parent 7 a47de9135b21
child 14 e6a39382bb9c
equal deleted inserted replaced
8:6ceef9a83b1a 10:6defe5d1bd39
   261             HandleVirtualKeyLatchedEvent(aEventType, aCtrl, aEventData);
   261             HandleVirtualKeyLatchedEvent(aEventType, aCtrl, aEventData);
   262             }
   262             }
   263             break;
   263             break;
   264         case EEventVirtualKeyUnLatched:
   264         case EEventVirtualKeyUnLatched:
   265             {
   265             {
   266             UiLayout()->SignalOwner(ESignalKeyEvent, iNewDeadKeyBuf);
   266             HBufC* newCharBuf = HBufC::New( 2*iNewDeadKeyBuf.Length() );
       
   267             if( newCharBuf )
       
   268                 {
       
   269                 CPeninputGenericVkbLayout* layout 
       
   270                         = static_cast<CPeninputGenericVkbLayout*>( UiLayout() );
       
   271                 if( layout->IsEnableITIOnFSQ() )
       
   272                     {
       
   273                     // If ITI is open, double same keys should be send for one dead key,
       
   274                     // core will handle them as one key.
       
   275                     newCharBuf->Des().Append( iNewDeadKeyBuf );
       
   276                     }
       
   277                 newCharBuf->Des().Append( iNewDeadKeyBuf );
       
   278                 }
       
   279             
       
   280             // Submit DeadKey
       
   281             UiLayout()->SignalOwner(ESignalKeyEvent, *newCharBuf);
       
   282             delete newCharBuf;
       
   283              
   267             TBool deadKeyChange = EFalse;
   284             TBool deadKeyChange = EFalse;
   268             iLayoutContext->SetData(EAkninputDataTypeLatchedSet, &deadKeyChange);
   285             iLayoutContext->SetData(EAkninputDataTypeLatchedSet, &deadKeyChange);
   269             iNewDeadKeyBuf = KNullDesC;
   286             iNewDeadKeyBuf = KNullDesC;
   270             }
   287             }
   271             break;
   288             break;
   290             {
   307             {
   291             TInt latchedFlag = CPeninputDataConverter::AnyToInt
   308             TInt latchedFlag = CPeninputDataConverter::AnyToInt
   292                                (iLayoutContext->RequestData(EAkninputDataTypeLatchedSet));
   309                                (iLayoutContext->RequestData(EAkninputDataTypeLatchedSet));
   293             if(latchedFlag)
   310             if(latchedFlag)
   294                 {
   311                 {
   295                 HBufC* newCharBuf = HBufC::New( aEventData.Length() + iNewDeadKeyBuf.Length() );
   312                 HBufC* newCharBuf = HBufC::New( aEventData.Length() + 2*iNewDeadKeyBuf.Length() );
   296                 if( newCharBuf )
   313                 if( newCharBuf )
   297                     {
   314                     {
       
   315                     CPeninputGenericVkbLayout* layout 
       
   316                              = static_cast<CPeninputGenericVkbLayout*>( UiLayout() );
       
   317                     if( layout->IsEnableITIOnFSQ() )
       
   318                         {
       
   319                         // If ITI is open, double same keys should be send for one dead key,
       
   320                         // core will handle them as one key.                    
       
   321                         newCharBuf->Des().Append( iNewDeadKeyBuf );
       
   322                         }
   298                     newCharBuf->Des().Append( iNewDeadKeyBuf );
   323                     newCharBuf->Des().Append( iNewDeadKeyBuf );
   299                     newCharBuf->Des().Append( aEventData );
   324                     newCharBuf->Des().Append( aEventData );
   300                     }                
   325                     }
   301                 
   326                 
   302                 UnLatchDeadKey(iNewDeadKeyBuf);
   327                 UnLatchDeadKey(iNewDeadKeyBuf);
   303 
   328 
   304                 TBool deadKeyChange = EFalse;
   329                 TBool deadKeyChange = EFalse;
   305                 iLayoutContext->SetData(EAkninputDataTypeLatchedSet, &deadKeyChange);
   330                 iLayoutContext->SetData(EAkninputDataTypeLatchedSet, &deadKeyChange);
   306                 
   331                 
   307                 // Submit DeadKey + Space or Enter at the same time
   332                 // Submit DeadKey + Space or Enter at the same time
   308                 UiLayout()->SignalOwner(ESignalKeyEvent,*newCharBuf);
   333                 
       
   334                 if( newCharBuf != NULL )
       
   335                     {
       
   336                     UiLayout()->SignalOwner(ESignalKeyEvent,*newCharBuf);
       
   337                     }
   309                 iNewDeadKeyBuf = KNullDesC;
   338                 iNewDeadKeyBuf = KNullDesC;
   310                 delete newCharBuf;
   339                 delete newCharBuf;
   311                 }
   340                 }
   312             }
   341             }
   313             break;
   342             break;
  1828     {
  1857     {
  1829     TBuf<16> deadKey(KNullDesC);
  1858     TBuf<16> deadKey(KNullDesC);
  1830     TKeyEvent* event = (TKeyEvent*) aEventData.Ptr();
  1859     TKeyEvent* event = (TKeyEvent*) aEventData.Ptr();
  1831     deadKey.Append(event->iCode);
  1860     deadKey.Append(event->iCode);
  1832 
  1861 
  1833     CPeninputGenericVkbLayout* layout 
       
  1834                                   = static_cast<CPeninputGenericVkbLayout*>( UiLayout() );                                  
       
  1835     TInt latchedFlag = CPeninputDataConverter::AnyToInt(
  1862     TInt latchedFlag = CPeninputDataConverter::AnyToInt(
  1836                        iLayoutContext->RequestData(EAkninputDataTypeLatchedSet));
  1863                        iLayoutContext->RequestData(EAkninputDataTypeLatchedSet));
  1837     if(latchedFlag)
  1864     if(latchedFlag)
  1838         {
  1865         {
  1839         // Update the new and old DeadKey buffer
  1866         // Update the new and old DeadKey buffer
  1840         iOldDeadKeyBuf = iNewDeadKeyBuf;
  1867         iOldDeadKeyBuf = iNewDeadKeyBuf;
  1841         iNewDeadKeyBuf = deadKey;
  1868         iNewDeadKeyBuf = deadKey;
  1842 
  1869 
  1843         // When type another DeadKey, submit the previous one.
  1870         HBufC* newCharBuf = HBufC::New( 2*iOldDeadKeyBuf.Length() );
  1844      	if ( layout->IsEnableITIOnFSQ() )
  1871         if( newCharBuf )
  1845      		{
  1872             {
  1846      		UiLayout()->SignalOwner( ESignalKeyEvent, iNewDeadKeyBuf );
  1873             CPeninputGenericVkbLayout* layout 
  1847      		}
  1874                     = static_cast<CPeninputGenericVkbLayout*>( UiLayout() );
  1848      	else
  1875             if( layout->IsEnableITIOnFSQ() )
  1849      		{
  1876                 {
  1850      		UiLayout()->SignalOwner( ESignalKeyEvent, iOldDeadKeyBuf );
  1877                 // If ITI is open, double same keys should be send for one dead key,
  1851      		}        
  1878                 // core will handle them as one key.
       
  1879                 newCharBuf->Des().Append( iOldDeadKeyBuf );
       
  1880                 }
       
  1881             newCharBuf->Des().Append( iOldDeadKeyBuf );
       
  1882             }
       
  1883         
       
  1884         // Submit old DeadKey
       
  1885         UiLayout()->SignalOwner(ESignalKeyEvent, *newCharBuf);
       
  1886         delete newCharBuf;                     
       
  1887      
  1852         // Unlatch the previous DeadKey
  1888         // Unlatch the previous DeadKey
  1853         UnLatchDeadKey(iOldDeadKeyBuf);
  1889         UnLatchDeadKey(iOldDeadKeyBuf);
  1854         
  1890         
  1855 
  1891 
  1856         }
  1892         }
  1859         iNewDeadKeyBuf = deadKey;
  1895         iNewDeadKeyBuf = deadKey;
  1860         
  1896         
  1861         // Set DeadKey state to latched
  1897         // Set DeadKey state to latched
  1862         TBool deadKeyChange = ETrue;
  1898         TBool deadKeyChange = ETrue;
  1863         iLayoutContext->SetData(EAkninputDataTypeLatchedSet, &deadKeyChange);
  1899         iLayoutContext->SetData(EAkninputDataTypeLatchedSet, &deadKeyChange);
  1864         
  1900         }
  1865      	if ( layout->IsEnableITIOnFSQ() )
       
  1866      		{
       
  1867      		UiLayout()->SignalOwner( ESignalKeyEvent, iNewDeadKeyBuf );
       
  1868      		}
       
  1869         }
       
  1870    
       
  1871     // Send the char to FEP
       
  1872     // Not submit the DeadKey when latch it.
       
  1873 //    UiLayout()->SignalOwner( ESignalKeyEvent, iNewDeadKeyBuf );
       
  1874     }
  1901     }
  1875 
  1902 
  1876 // ---------------------------------------------------------------------------
  1903 // ---------------------------------------------------------------------------
  1877 // CPeninputCommonLayout::HandleVirtualKeyUpEvent
  1904 // CPeninputCommonLayout::HandleVirtualKeyUpEvent
  1878 // (Handle virtual key up event).
  1905 // (Handle virtual key up event).
  1919                       = static_cast<CPeninputGenericVkbLayout*>( UiLayout() );
  1946                       = static_cast<CPeninputGenericVkbLayout*>( UiLayout() );
  1920  	if ( layout->IsEnableITIOnFSQ() )
  1947  	if ( layout->IsEnableITIOnFSQ() )
  1921  		{
  1948  		{
  1922  	    TBuf<KKeyCodeSize> buf;
  1949  	    TBuf<KKeyCodeSize> buf;
  1923  	    TKeyEvent* event = (TKeyEvent*) aEventData.Ptr();
  1950  	    TKeyEvent* event = (TKeyEvent*) aEventData.Ptr();
  1924  	    buf.Append(event->iCode); 	    
  1951  	    buf.Append(event->iCode);
  1925  		UiLayout()->SignalOwner( ESignalKeyEvent, buf );
  1952 
       
  1953 		HBufC* newCharBuf = HBufC::New( iNewDeadKeyBuf.Length() + buf.Length() );
       
  1954 		if( newCharBuf )
       
  1955 			{
       
  1956 			newCharBuf->Des().Append( iNewDeadKeyBuf );
       
  1957 			newCharBuf->Des().Append( buf );
       
  1958 			}
       
  1959  	    
       
  1960         // Submit DeadKey + Key at the same time
       
  1961         UiLayout()->SignalOwner(ESignalKeyEvent,*newCharBuf);
       
  1962 		
       
  1963         delete newCharBuf;
       
  1964  		
  1926  		return ETrue;
  1965  		return ETrue;
  1927  		}
  1966  		}
  1928  	
  1967  	
  1929     // Get the accent char
  1968     // Get the accent char
  1930     HBufC* newCharBuf = HBufC::NewL(1);
  1969     HBufC* newCharBuf = HBufC::NewL(1);