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); }
/* ----------------------------------------------------------------------------- ----------------------------------------------------------------------------- */ 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; }