Ejemplo n.º 1
0
Archivo: Button.C Proyecto: juddy/edcde
void Button::CreateButton(MotifUI *parent, char *name, char * /*category*/,
	       ButtonType button_type, ButtonCallback callback,
	       void * callback_data, char *mnemonic,
	       char *acceleratorText, char *accelerator, char *iconFile)
{
   int IsArrow = false;
   XmString xm_string = StringCreate(name);
   Widget parentW;
   Widget super_node = NULL;

   _iconFile = NULL;
   _button_type = button_type;

   if (parent->UIClass() == DIALOG)
      parentW = parent->BaseWidget();
   else if (parent->UIClass() == ICON)
    {
      parentW = XtParent(parent->InnerWidget());
      super_node = parent->InnerWidget();
    }
   else
      parentW = parent->InnerWidget();
   if (button_type == PUSH_BUTTON)
      _w = XtVaCreateManagedWidget("button", xmPushButtonWidgetClass, parentW, 
                                   XmNlabelString, xm_string,
		                   XmNaccelerator, accelerator,
				   XmNmultiClick, XmMULTICLICK_DISCARD,
                                   GuiNsuperNode, super_node, NULL);
   else if (button_type == TOGGLE_BUTTON)
      _w = XtVaCreateManagedWidget("toggle", xmToggleButtonWidgetClass, parentW,
				   XmNlabelString, xm_string,
		                   XmNaccelerator, accelerator,
				   XmNmultiClick, XmMULTICLICK_DISCARD,
                                   GuiNsuperNode, super_node, NULL);
   else
    {
      int dir;

      switch (button_type)
       {
	case UP_ARROW_BUTTON: dir = XmARROW_UP;
	case DOWN_ARROW_BUTTON: dir = XmARROW_DOWN;
        case LEFT_ARROW_BUTTON: dir = XmARROW_LEFT;
        case RIGHT_ARROW_BUTTON: dir = XmARROW_RIGHT;
       }
      _w = XtVaCreateManagedWidget("arrow", xmArrowButtonWidgetClass, parentW, 
				   XmNmultiClick, XmMULTICLICK_DISCARD,
				   XmNarrowDirection, dir, NULL);
      IsArrow = true;
    }
   StringFree(xm_string);
   if (!IsArrow)
    {
      if (mnemonic)
         XtVaSetValues(_w, XmNmnemonic, XStringToKeysym(mnemonic), NULL);
      if (acceleratorText)
       {
         xm_string = StringCreate(acceleratorText);
         XtVaSetValues(_w, XmNacceleratorText, xm_string, NULL);
         StringFree(xm_string);
       }
    }
   _callback = callback;
   _callback_data = callback_data;

   if (button_type == TOGGLE_BUTTON)
      XtAddCallback(_w, XmNvalueChangedCallback, &Button::ActivateCB, 
                    (XtPointer) this);
   else
      XtAddCallback(_w, XmNactivateCallback, &Button::ActivateCB, 
                    (XtPointer) this);
   InstallHelpCB();
   IconFile(iconFile);
}
Ejemplo n.º 2
0
/*
-----------------------------------------------------------------------------

-----------------------------------------------------------------------------
*/
CDesCArray* CMainContainer::GetProfilesArrayL(CArrayPtr<CGulIcon>* aIcon,const TSize& aIconsize)
{
	aIcon->AppendL(GetMyOwnIconL(aIconsize));
	
	TFindFile MyIconFile(CCoeEnv::Static()->FsSession());
	if(KErrNone == MyIconFile.FindByDir(KtxIconFileName, KNullDesC))
	{
		AddIconL(aIcon,aIconsize,MyIconFile.File(),0,1);
	}
	else
	{
		aIcon->AppendL(GetMyOwnIconL(aIconsize));
	}
	
	
	CDesCArrayFlat* MyArray = new(ELeave)CDesCArrayFlat(1);
	CleanupStack::PushL(MyArray);
	
	TFileName AddBuffer;			
	
	if(iEcomHandler)
	{
		RPointerArray<CHandlerItem> Handlers = iEcomHandler->HandlerArray();
		for(TInt i=0; i < Handlers.Count(); i++)
		{
			if(Handlers[i])
			{
				TInt IconNum(0);
				
				if(Handlers[i]->iIconfile)
				{
					TFindFile IconFile(CCoeEnv::Static()->FsSession());
					if(KErrNone == IconFile.FindByDir(*Handlers[i]->iIconfile, KNullDesC))
					{
						TInt Img(0),ImgMask(1);
						
						if(Handlers[i]->iServerName)
						{
							if(IsServerOn(*Handlers[i]->iServerName))
							{
								Img = 2;
								ImgMask = 3;
							}
						}
						
						AddIconL(aIcon,aIconsize,IconFile.File(),Img,ImgMask);
					
						IconNum = (aIcon->Count() - 1);
					}
				}
				
				AddBuffer.Num(IconNum);
				AddBuffer.Append(_L("\t"));
				if(Handlers[i]->iName)
				{
					AddBuffer.Append(*Handlers[i]->iName);
				}
				
				MyArray->AppendL(AddBuffer);			
			}
		}
	}
	
	CleanupStack::Pop(MyArray);
	return MyArray;
}