webengine/wmlengine/src/fbox/src/FBOXImageButtonBox.cpp
changeset 74 91031d3aab7d
parent 68 92a765b5b3e7
child 85 e358f2276d3f
--- a/webengine/wmlengine/src/fbox/src/FBOXImageButtonBox.cpp	Mon May 03 13:32:15 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,430 +0,0 @@
-/*
-* Copyright (c) 2000 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the License "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: 
-*
-*/
-
-
-#include "nw_fbox_imagebuttonboxi.h"
-
-#include "nwx_string.h"
-#include "nw_evt_activateevent.h"
-#include "nw_fbox_imagebuttonboxskin.h"
-#include "nw_evt_focusevent.h"
-#include "nw_evt_accesskeyevent.h"
-#include "nw_lmgr_rootbox.h"
-#include "GDIDevicecontext.h"
-#include "nw_image_virtualimage.h"
-#include "BrsrStatusCodes.h"
-
-/* ------------------------------------------------------------------------- *
-   static data
- * ------------------------------------------------------------------------- */
-
-/* ------------------------------------------------------------------------- */
-const
-NW_FBox_ImageButtonBox_Class_t  NW_FBox_ImageButtonBox_Class = {
-  { /* NW_Object_Core        */
-    /* super                 */ &NW_FBox_FormBox_Class,
-    /* queryInterface        */ _NW_Object_Base_QueryInterface
-  },
-  { /* NW_Object_Base        */
-    /* secondaryList         */ _NW_FBox_ImageButtonBox_SecondaryList
-  },
-  { /* NW_Object_Dynamic     */
-    /* instanceSize          */ sizeof (NW_FBox_ImageButtonBox_t),
-    /* construct             */ _NW_FBox_ImageButtonBox_Construct,
-    /* destruct              */ _NW_FBox_ImageButtonBox_Destruct,
-  },
-  { /* NW_LMgr_Box           */
-    /* split                 */ _NW_FBox_ImageButtonBox_Split,
-    /* resize                */ _NW_FBox_FormBox_Resize,
-    /* postResize                */ _NW_LMgr_Box_PostResize,
-    /* getMinimumContentSize */ _NW_FBox_FormBox_GetMinimumContentSize,
-    /* hasFixedContentSize   */ _NW_FBox_FormBox_HasFixedContentSize,
-    /* constrain             */ _NW_LMgr_Box_Constrain,
-    /* draw                  */ _NW_FBox_ImageButtonBox_Draw,
-    /* render                */ _NW_LMgr_Box_Render,
-    /* getBaseline           */ _NW_FBox_ImageButtonBox_GetBaseline,
-    /* shift                 */ _NW_LMgr_Box_Shift,
-    /* clone                 */ _NW_LMgr_Box_Clone
-    
-  },
-  { /* NW_LMgr_ActiveBox     */
-    /* unused                */ NW_Object_Unused
-  },
-  { /* NW_FBox_FormBox       */
-    /* initSkin              */ _NW_FBox_ImageButtonBox_InitSkin,
-    /* initInteractor        */ _NW_FBox_ImageButtonBox_InitInteractor,
-    /* reset                 */ _NW_FBox_FormBox_Reset
-  },
-  { /* NW_FBox_ImageButtonBox*/
-    /* unused                */ NW_Object_Unused     
-  }
-};
-
-/* ------------------------------------------------------------------------- */
-const NW_Object_Class_t* const _NW_FBox_ImageButtonBox_SecondaryList[] = {
-  &_NW_FBox_ImageButtonBox_IEventListener_Class,
-  &_NW_LMgr_AnimatedImageButtonBoxAggregate_Class,
-  NULL
-};
-
-/* ------------------------------------------------------------------------- */
-const
-NW_LMgr_IEventListener_Class_t _NW_FBox_ImageButtonBox_IEventListener_Class = {
-  { /* NW_Object_Core         */
-    /* super                  */ &NW_LMgr_IEventListener_Class,
-    /* queryInterface         */ _NW_Object_Interface_QueryInterface
-  },
-  { /* NW_Object_Interface    */
-    /* offset                 */ offsetof (NW_LMgr_ActiveBox_t, NW_LMgr_IEventListener)
-  },
-  { /* NW_LMgr_IEventListener */
-    /* processEvent           */ _NW_FBox_ImageButtonBox_IEventListener_ProcessEvent
-  }
-};
-
-/* ------------------------------------------------------------------------- */
-const NW_LMgr_AnimatedImageAggregate_Class_t _NW_LMgr_AnimatedImageButtonBoxAggregate_Class = {
-  { /* NW_Object_Core                */
-    /* super                         */ &NW_LMgr_AnimatedImageAggregate_Class,
-    /* querySecondary                */ _NW_Object_Core_QuerySecondary
-  },
-  { /* NW_Object_Secondary           */
-    /* offset                        */ offsetof (NW_FBox_ImageButtonBox_t, NW_LMgr_AnimatedImageAggregate)
-  },
-  { /* NW_Object_Aggregate           */
-    /* secondaryList                 */ NULL,
-    /* construct                     */ NULL,
-    /* destruct                      */ NULL
-  },
-  { /* NW_LMgr_AnimatedImageAggregate*/
-    /* animate                       */ _NW_LMgr_AnimatedImageAggregate_Animate,
-    /* getImage                      */ _NW_FBox_ImageButtonBox_AnimatedImageAggregate_GetImage
-  }
-};
-
-/* ------------------------------------------------------------------------- *
-   NW_Object_Dynamic
- * ------------------------------------------------------------------------- */
-
-TBrowserStatusCode
-_NW_FBox_ImageButtonBox_Construct (NW_Object_Dynamic_t* dynamicObject,
-                                  va_list* argp)
-{
-  NW_FBox_ImageButtonBox_t* thisObj;
-  TBrowserStatusCode status;
-  NW_Text_UCS2_t* label;
-  static const NW_Ucs2 noText[] = {'\0'};
-
-  /* for convenience */
-  thisObj = NW_FBox_ImageButtonBoxOf (dynamicObject);
-
-  /* invoke our superclass constructor */
-  status = _NW_FBox_FormBox_Construct (dynamicObject, argp);
-  if (status != KBrsrSuccess) {
-    return status;
-  }
-
-  /* initialize the member variables */
-
-  thisObj->value = va_arg (*argp, NW_Text_t*);
-  thisObj->image = va_arg (*argp, NW_Image_AbstractImage_t*);
-  
-
-  if (thisObj->value == NULL) {  
-    label = NULL;
-    label = NW_Text_UCS2_New((NW_Ucs2*) noText, NW_Str_Strlen(noText), 0);  
-    thisObj->value = NW_TextOf(label);
-  }
-  else
-  {
-    NW_Ucs2* storage = NULL;
-    NW_Bool freeNeeded = NW_FALSE;
-    NW_Uint16 flags = 0;
-    NW_Text_Length_t len = 0;
-
-    /* compress whitespaces */
-    flags = NW_Text_Flags_Aligned | NW_Text_Flags_Copy | NW_Text_Flags_NullTerminated;
-    flags |= NW_Text_Flags_CompressWhitespace;
-    storage = NW_Text_GetUCS2Buffer (thisObj->value, flags, &len, &freeNeeded);
-    if (storage == NULL){
-      return KBrsrOutOfMemory;
-    }
-    status = NW_Text_SetStorage(thisObj->value, storage, len, freeNeeded);
-  }
-  
-  return status;
-}
-
-/* --------------------------------------------------------------------------*/
-void
-_NW_FBox_ImageButtonBox_Destruct (NW_Object_Dynamic_t* dynamicObject)
-{
-  NW_FBox_ImageButtonBox_t* thisObj;
-
-  /* for convenience */
-  thisObj = NW_FBox_ImageButtonBoxOf (dynamicObject);
-  
-  /* Destroy our text object */
-  if(thisObj->value != NULL)
-    {
-    NW_Object_Delete(thisObj->value);
-  }
-  // destroy virtual image -do not destroy canned image though
-  if( NW_Object_IsInstanceOf( thisObj->image, &NW_Image_Virtual_Class ) == NW_TRUE )
-    {
-    NW_Object_Delete( thisObj->image );
-    }
-}
-
-/* ------------------------------------------------------------------------- */
-/* NW_LMgr_Box           */
-/* ------------------------------------------------------------------------- */
-TBrowserStatusCode
-_NW_FBox_ImageButtonBox_Draw (NW_LMgr_Box_t* box,
-                        CGDIDeviceContext* deviceContext,
-                        NW_Uint8 hasFocus)
-{
-  NW_FBox_ImageButtonBox_t* thisObj;
-  NW_LMgr_AnimatedImageAggregate_t* AnimatedImageAggregate;
-  TBrowserStatusCode status;
-
-  thisObj = NW_FBox_ImageButtonBoxOf (box);
-
-  /* invoke our superclass draw method first */
-  status =  _NW_FBox_FormBox_Draw (box, deviceContext, hasFocus);
-  
-  /* support for animations. Note the method checks for animations also, i.e. 
-     ImageButtonBox need not be concerned wether the image is animated or not - vishy */
-
-  /* Get the aggregate object */
-  AnimatedImageAggregate = (NW_LMgr_AnimatedImageAggregate_t*)
-        NW_Object_QuerySecondary (thisObj, &NW_LMgr_AnimatedImageAggregate_Class);
-  status = NW_LMgr_AnimatedImageAggregate_Animate (AnimatedImageAggregate); 
-
-  return status;
-
-}
-
-/* ------------------------------------------------------------------------- */
-/* NW_FBox_FormBox       */
-/* ------------------------------------------------------------------------- */
-
-NW_FBox_Skin_t*
-_NW_FBox_ImageButtonBox_InitSkin(NW_FBox_FormBox_t* formBox)
-{
-  return (NW_FBox_Skin_t *)NW_FBox_ImageButtonBoxSkin_New(formBox);
-}
-
-/* --------------------------------------------------------------------------*/
-NW_FBox_Interactor_t*
-_NW_FBox_ImageButtonBox_InitInteractor(NW_FBox_FormBox_t* formBox)
-{
-  (void)formBox;
-  return NULL;
-}
-
-/* --------------------------------------------------------------------------*/
-
-NW_GDI_Metric_t
-_NW_FBox_ImageButtonBox_GetBaseline (NW_LMgr_Box_t* box)
-  {
-  CGDIFont* font;
-  TGDIFontInfo fontInfo;
-  NW_FBox_ImageButtonBox_t* thisObj;
-
-  /* parameter assertion block */
-  NW_ASSERT (box != NULL);
-  NW_ASSERT (NW_Object_IsInstanceOf (box, &NW_FBox_ImageButtonBox_Class));
-
-  /* for convenience */
-  thisObj = NW_FBox_ImageButtonBoxOf (box);
-
-  if ( thisObj->image )
-    {
-    return NW_LMgr_Box_GetFormatBounds(box).dimension.height;
-    }
-
-  /* Get the font info */
-  font = NW_LMgr_Box_GetFont (box);
-  if (font != NULL) 
-    {
-    NW_LMgr_FrameInfo_t padding;
-    NW_LMgr_FrameInfo_t borderWidth;
-
-    (void) font->GetFontInfo ( &fontInfo);
-
-    /* Get the padding and the border width */
-    NW_LMgr_Box_GetPadding(box, &padding, ELMgrFrameTop );
-    NW_LMgr_Box_GetBorderWidth(box, &borderWidth, ELMgrFrameTop );
-
-    return (NW_GDI_Metric_t)(fontInfo.baseline + borderWidth.top + padding.top); 
-  }
-
-  /* unable to get the FontInfo we return our height */
-  return NW_LMgr_Box_GetFormatBounds(box).dimension.height;
-}
-
-
-/* ------------------------------------------------------------------------- *
-   implemented interface/aggregate methods
- * ------------------------------------------------------------------------- */
-
-NW_Image_AbstractImage_t*
-_NW_FBox_ImageButtonBox_AnimatedImageAggregate_GetImage (NW_LMgr_AnimatedImageAggregate_t* AnimatedImageAggregate)
-{
-  NW_FBox_ImageButtonBox_t* thisObj;
-
-  /* obtain the implementer */
-  thisObj =  (NW_FBox_ImageButtonBox_t*) NW_Object_Interface_GetImplementer (AnimatedImageAggregate);
-  NW_ASSERT (NW_Object_IsInstanceOf (thisObj, &NW_FBox_ImageButtonBox_Class));
-
-  return thisObj->image;
-}
-
-
-/* --------------------------------------------------------------------------*/
-NW_Uint8
-_NW_FBox_ImageButtonBox_IEventListener_ProcessEvent (NW_LMgr_IEventListener_t* eventListener,
-                                                     NW_Evt_Event_t* event)
-  {
-  NW_FBox_ImageButtonBox_t* thisObj;
-  NW_FBox_FormLiaison_t* formLiason;
-  TBrowserStatusCode status = KBrsrSuccess;
-  
-  /* parameter assertion block */
-  NW_ASSERT (NW_Object_IsInstanceOf (eventListener,
-    &NW_LMgr_IEventListener_Class));
-  NW_ASSERT (NW_Object_IsInstanceOf (event, &NW_Evt_Event_Class));
-  
-  /* obtain the implementer */
-  thisObj = (NW_FBox_ImageButtonBox_t*) NW_Object_Interface_GetImplementer (eventListener);
-  NW_ASSERT (NW_Object_IsInstanceOf (thisObj, &NW_FBox_ImageButtonBox_Class));
-  
-  formLiason = NW_FBox_FormBox_GetFormLiaison( thisObj );
-
-  if ((NW_Object_Core_GetClass (event) == &NW_Evt_ActivateEvent_Class) ||
-    (NW_Object_Core_GetClass (event) == &NW_Evt_AccessKeyEvent_Class))
-    {    
-    // set the button active in order that we can send .x .y data
-    // at submit time
-    void* formControlId = NW_FBox_FormBox_GetFormCntrlID( thisObj );
-    
-    // "on" is the keyword
-    NW_Ucs2 onStr[] = { 'o', 'n', 0 };
-    NW_Text_t* onText = NW_Text_New( HTTP_iso_10646_ucs_2, onStr, 
-      NW_Str_Strlen( onStr ), NW_Text_Flags_Copy );
-    // cannot handle OOM properly
-    if( onText )
-      {
-      // SetStringValue takes onText's ownership, unless it fails.
-      if( NW_FBox_FormLiaison_SetStringValue( formLiason, formControlId, onText )
-          != KBrsrSuccess )
-        {
-        NW_Object_Delete( onText );
-        }
-      }
-    // notify of the click event, 
-    // if the ECMAScript is supported and  the element has OnClick attribute 
-    // then the submit and reset function calls are handled after executing OnClick script.
-    status = NW_FBox_FormLiaison_DelegateEcmaEvent( formLiason, formControlId, NW_Ecma_Evt_OnClick );
-    
-    if( status == KBrsrSuccess )
-      {
-      return NW_LMgr_EventAbsorbed;
-      }
-    
-    /* all submit on form liason */
-    (void)NW_FBox_FormLiaison_Submit( formLiason, NW_FBox_FormBox_GetFormCntrlID( thisObj ) );
-    return NW_LMgr_EventAbsorbed;   
-    }
-  else if(NW_Object_Core_GetClass(event) == &NW_Evt_FocusEvent_Class) {
-    return NW_LMgr_EventAbsorbed;
-    }
-  
-  return _NW_LMgr_ActiveBox_IEventListener_ProcessEvent (eventListener, event);
-  }
-
-/* --------------------------------------------------------------------------*/
-TBrowserStatusCode
-_NW_FBox_ImageButtonBox_Split(NW_LMgr_Box_t* box, 
-                              NW_GDI_Metric_t space, 
-                              NW_LMgr_Box_t* *splitBox,
-                              NW_Uint8 flags)
-{
-  NW_ASSERT(box != NULL);
-
-  *splitBox = NULL;
-  /* If box does not fit in the space and the box is not
-   on the new line the input box needs to be pushed on the new line */
-  NW_GDI_Rectangle_t boxBounds = NW_LMgr_Box_GetFormatBounds( box );
-  if ((boxBounds.dimension.width > space) && !(flags & NW_LMgr_Box_SplitFlags_AtNewLine))
-  {
-    return KBrsrLmgrNoSplit;
-  }
-
-  if(boxBounds.dimension.width <= space) 
-  {
-    return KBrsrSuccess;
-  }
-
-  /* we are more than space */
-
-  /* if width was specified we do not want to change it /
-  status = NW_LMgr_Box_GetPropertyValue(box, NW_CSS_Prop_width, NW_CSS_ValueType_Px, &sizeVal);
-  if (status == KBrsrSuccess){
-    return status;
-  }*/
-  boxBounds.dimension.width = space;
-  NW_LMgr_Box_SetFormatBounds( box, boxBounds );
-
-  return KBrsrSuccess;
-}
-
-
-/* --------------------------------------------------------------------------*/
-void
-NW_LMgr_ImageButtonBox_ReplaceBrokenImage( NW_LMgr_Box_t* box, NW_Image_AbstractImage_t* image )
-  {
-  NW_FBox_ImageButtonBox_t* thisObj;
-
-  NW_ASSERT( box != NULL );
-  NW_ASSERT( NW_Object_IsInstanceOf ( box, &NW_FBox_ImageButtonBox_Class ) );
-
-  thisObj = NW_FBox_ImageButtonBoxOf( box );
-
-  // dont free canned image
-  // but replace it
-  thisObj->image = image;  
-  }
-
-/* ------------------------------------------------------------------------- *
-   convenience methods
- * ------------------------------------------------------------------------- */
-
-/* --------------------------------------------------------------------------*/
-NW_FBox_ImageButtonBox_t*
-NW_FBox_ImageButtonBox_New (NW_ADT_Vector_Metric_t numProperties,
-                            NW_LMgr_EventHandler_t* eventHandler,
-                            void* formCntrlId,
-                            NW_FBox_FormLiaison_t* formLiaison,
-                            NW_Text_t* value,
-                            NW_Image_AbstractImage_t* image)
-{
-  return (NW_FBox_ImageButtonBox_t*)
-    NW_Object_New (&NW_FBox_ImageButtonBox_Class, numProperties, eventHandler, 
-                       formCntrlId, formLiaison,value, image);
-}