webengine/widgetengine/src/MenuItem.cpp
changeset 13 10e98eab6f85
parent 0 dd21522fd290
equal deleted inserted replaced
8:7c90e6132015 13:10e98eab6f85
    22 #include <eikamnt.h>
    22 #include <eikamnt.h>
    23 
    23 
    24 #include "MenuItem.h"
    24 #include "MenuItem.h"
    25 #include "MenuItemFuncs.h"
    25 #include "MenuItemFuncs.h"
    26 #include "MenuItemCallbacks.h"
    26 #include "MenuItemCallbacks.h"
       
    27 #include "WidgetJSObjectProtector.h"
    27 
    28 
    28 using namespace KJS;
    29 using namespace KJS;
    29 
    30 
    30 // ----------------------------------------------------------------------------
    31 // ----------------------------------------------------------------------------
    31 // JSMenuItemConstructor::JSMenuItemConstructor
    32 // JSMenuItemConstructor::JSMenuItemConstructor
    32 // Default constructor
    33 // Default constructor
    33 //
    34 //
    34 //
    35 //
    35 // ----------------------------------------------------------------------------
    36 // ----------------------------------------------------------------------------
    36 JSMenuItemConstructor::JSMenuItemConstructor(MJSMenuItemCallbacks* callbacks)
    37 JSMenuItemConstructor::JSMenuItemConstructor(MJSMenuItemCallbacks* callbacks, MJSObjectProtector* protector)
    37     : JSObject(), 
    38     : JSObject(),
    38     m_callbacks(callbacks),
    39 	d(new MenuItemConstructorPrivate(callbacks, protector, 0))
    39     m_internalId(0)
    40 {
    40 {
    41 }
    41 }
    42 
    42 
    43 JSMenuItemConstructor::~JSMenuItemConstructor()
       
    44 {
       
    45 	delete d;
       
    46 }
    43 
    47 
    44 // ----------------------------------------------------------------------------
    48 // ----------------------------------------------------------------------------
    45 // JSMenuItemConstructor::implementsConstruct
    49 // JSMenuItemConstructor::implementsConstruct
    46 // returns true if this object implements the construct() method, otherwise
    50 // returns true if this object implements the construct() method, otherwise
    47 // returns false
    51 // returns false
    81             int textlen = (text.size() > CEikAutoMenuTitle::ENominalTextLength) ?
    85             int textlen = (text.size() > CEikAutoMenuTitle::ENominalTextLength) ?
    82                         CEikAutoMenuTitle::ENominalTextLength : text.size(); 
    86                         CEikAutoMenuTitle::ENominalTextLength : text.size(); 
    83 
    87 
    84             TPtrC tptrc((const unsigned short*)(text.data()), textlen);
    88             TPtrC tptrc((const unsigned short*)(text.data()), textlen);
    85 
    89 
    86             JSMenuItem* mi = new JSMenuItem(exec, m_callbacks, tptrc, cmdId, m_internalId );
    90             JSMenuItem* mi = new JSMenuItem(exec, d->m_callbacks, d->m_protector, tptrc, cmdId, d->m_internalId, 0);
    87             KJS::Collector::protect(mi); 
    91 			
    88             m_callbacks->createOptionsMenuItem( tptrc, cmdId, m_internalId++, (void*) mi );
    92             d->m_callbacks->createOptionsMenuItem( tptrc, cmdId, d->m_internalId++, (void*) mi );
    89            
    93            
    90             return static_cast<KJS::JSObject*>(mi);
    94             return static_cast<KJS::JSObject*>(mi);
    91         }
    95         }
    92     }
    96     }
    93 
    97 
   117 //
   121 //
   118 // ----------------------------------------------------------------------------
   122 // ----------------------------------------------------------------------------
   119 JSMenuItem::JSMenuItem(  
   123 JSMenuItem::JSMenuItem(  
   120     ExecState* exec,   
   124     ExecState* exec,   
   121     MJSMenuItemCallbacks* callbacks,
   125     MJSMenuItemCallbacks* callbacks,
       
   126 	MJSObjectProtector* protector,
   122     TDesC& text,
   127     TDesC& text,
   123     int cmdId, 
   128     int cmdId, 
   124     int internalId,
   129     int internalId,
   125     WidgetEventHandler* onSelectCallback )
   130     WidgetEventHandler* onSelectCallback )
   126     : JSObject(exec->lexicalInterpreter()->builtinObjectPrototype()),      
   131     : JSObject(exec->lexicalInterpreter()->builtinObjectPrototype()),      
   127       d(new MenuItemPrivate(callbacks,cmdId,internalId,onSelectCallback))  
   132       d(new MenuItemPrivate(callbacks, protector, cmdId, internalId, onSelectCallback))  
   128     {
   133     {
       
   134 		d->m_protector->Protect(this);
   129     }
   135     }
   130     
   136     
   131 // ----------------------------------------------------------------------------
   137 // ----------------------------------------------------------------------------
   132 // JSMenuItem::~JSMenuItem
   138 // JSMenuItem::~JSMenuItem
   133 // Destructor
   139 // Destructor
   197 //
   203 //
   198 //
   204 //
   199 // ----------------------------------------------------------------------------
   205 // ----------------------------------------------------------------------------
   200 void JSMenuItem::DeleteMenuItem()
   206 void JSMenuItem::DeleteMenuItem()
   201 {
   207 {
   202     d->m_callbacks->deleteMenuItem( d->m_internalId );    
   208     d->m_callbacks->deleteMenuItem( d->m_internalId );
       
   209     d->m_protector->Unprotect(this);
   203 }
   210 }
   204 
   211 
   205 // ----------------------------------------------------------------------------
   212 // ----------------------------------------------------------------------------
   206 // JSMenuItem::toString
   213 // JSMenuItem::toString
   207 // Returns string representation of the object
   214 // Returns string representation of the object
   240         // changes the properties of the Menu element
   247         // changes the properties of the Menu element
   241         switch ( entry->value ) {
   248         switch ( entry->value ) {
   242             case OnSelect: {
   249             case OnSelect: {
   243                 delete d->m_onSelectCallback;
   250                 delete d->m_onSelectCallback;
   244                 d->m_onSelectCallback = NULL;
   251                 d->m_onSelectCallback = NULL;
   245                 d->m_onSelectCallback = new WidgetEventHandler ( value, exec->lexicalInterpreter()->globalExec() );
   252                 d->m_onSelectCallback = new WidgetEventHandler(value, exec->lexicalInterpreter()->globalExec(), d->m_protector);
   246                 d->m_callbacks->setMenuItemObserver( d->m_internalId, d->m_onSelectCallback );
   253                 d->m_callbacks->setMenuItemObserver( d->m_internalId, d->m_onSelectCallback );
   247                 break;
   254                 break;
   248             }
   255             }
   249             default:
   256             default:
   250                 break;
   257                 break;