Example #1
0
void vWidgetSetTransparency(xWidget *pxW, bool bTransparent){
  if(!pxW)
    return;
  pxW->bTransparent = bTransparent;
  vWidgetInvalidate(pxW);
  if(bTransparent)
    pxW->bInvalidateParent = TRUE;
};
Example #2
0
int iModalDialogOpen(int iDlgId, char const * sBtns, char const * sHdr, char const* sMsg){
  xModalDialog * xDlg;
  xModalDialog * xDlgNext;

  /*/Проверка ограничения макс. количества открытых диалогов
  if(cDialogCount >= MODAL_DIALOG_MAX_COUNT){
    vInterfaceOpenWindow(WINDOW_MODAL);
    return -1;
  }*/

  //Если такой диалог уже активен - Сбросить его обработчики и конфигурацию.
  if((xDlg = prvDlgIsActive(iDlgId))){
    prvDlgRefresh(xDlg, sBtns, sHdr, sMsg);
    prvDlgShowActive();
    vInterfaceOpenWindow(WINDOW_MODAL);
    return -1;
  }

  //Диалог есть где-то в стеке, его надо поднять
  if((xDlg = prvDlgIsOpened(iDlgId, &xDlgNext))){
    prvDlgRefresh(xDlg, sBtns, sHdr, sMsg);
    prvDelDlgFromStack(xDlg, xDlgNext);
  }else{
    //Диалога в стеке нет, создаем новую структуру
    xDlg = pvMemoryMalloc(sizeof(xModalDialog), MEMORY_EXT);
    //cDialogCount ++;
    memcpy(xDlg->sDialogConfig, sBtns, MODAL_DIALOG_MAX_BUTTONS + 1);
    xDlg->sDialogConfig[MODAL_DIALOG_MAX_BUTTONS] = '\0';
    xDlg->sHdr = sHdr;
    xDlg->sMsg = sMsg;
    xDlg->cProgress = -1;
    xDlg->bCanClose = TRUE;
    xDlg->pxDefaultHandler = NULL;
    
    for(int c = 0; c < MODAL_DIALOG_MAX_BUTTONS; c++)
      xDlg->pxClickHandlers[c] = NULL;

    //Выставляем идентификатор диалога, по которому
    //будет возможность дальнейшей работы с этим диалогом.
    if(iDlgId != MODAL_AUTO)
      xDlg->usDlgID = iDlgId;
    else{
      xDlg->usDlgID = usDlgID;
      prvIncDlgId();
    }
  }
  
  //делаем диалог активным
  xDlg->pxPrev = xMDActive;
  xMDActive = xDlg;

  prvDlgShowActive();
  
  vInterfaceOpenWindow(WINDOW_MODAL);
  vWidgetInvalidate(xThisWnd);
  
  return xDlg->usDlgID;
}
Example #3
0
void vWidgetSetBgColor(xWidget *pxW, u16 usBgColor, bool bTransparent){
  if(!pxW)
    return;
  pxW->usBgColor = usBgColor;
  pxW->bTransparent = FALSE;
  
  //TODO: handle transparency color???
  vWidgetInvalidate(pxW);
};
Example #4
0
static void prvInvalidateChilds(xWidget *pxW){
  if(pxW->pxChild){
    xWidget *pxWidChild = pxW->pxChild;
    while(pxWidChild){
      vWidgetInvalidate(pxWidChild);
      pxWidChild = pxWidChild->pxNextSibling;
    }
  }
}
Example #5
0
bool bWidgetSetBgPicture(xWidget *pxW, unsigned short const* pusBgPicture){
  if(!pxW)
    return FALSE;
  bool bInvalidateParent = FALSE;
  
  if(usPictureGetW(pusBgPicture) < usWidgetGetW(pxW) || usPictureGetH(pusBgPicture) < usWidgetGetH(pxW))
    bInvalidateParent = TRUE;
  
  if(!bWidgetResize(pxW, usPictureGetW(pusBgPicture), usPictureGetH(pusBgPicture)))
    return FALSE;
  //do not invalidate if picture is not changed
  if(pxW->pusBgPicture != pusBgPicture){
    pxW->pusBgPicture = pusBgPicture;
    vWidgetInvalidate(pxW);
  }
  if(!pusBgPicture || bInvalidateParent)
    pxW->bInvalidateParent = TRUE;
  return TRUE;
};
Example #6
0
void vProgressBarSetProcExec(xWidget *pxW, u16 usExecProc){
  xProgressBarProps *xP;
  char pcText[strlen(pcBarText) + 5];

  if (!(xP = pxWidgetGetProps(pxW, WidgetProgressBar)))
    return ;

  if (usExecProc > 100)
    usExecProc = 100;
  
  if(xP->usExProc == usExecProc)
    return;

  sprintf(pcText, "%s %d%c", pcBarText, usExecProc, '%');
  pcLabelSetText(xP->pxBarLabel, pcText);
  xP->usExProc = usExecProc;
  
  vWidgetInvalidate(pxW);
}
Example #7
0
bool bPictureStackSelect(xWidget *pxW, char cItemNumber){
  xPictureStackProps *xP;
  
  if(!pxW)
    return FALSE;
  
  if(pxW->eType != WidgetPictureStack)
    return FALSE;
  
  xP = pxW->pvProp;
  
  if(cItemNumber >= xP->cItemCount)
    return FALSE;
  
  if(cItemNumber == xP->cItemNumber)
    return TRUE;
  
  xP->cItemNumber = cItemNumber;
  vWidgetInvalidate(pxW);
  
  return TRUE;
}
Example #8
0
void vWidgetSetVisible(xWidget *pxW, bool bVisible){
  if(!pxW)
    return;
  
  if(pxW->bVisible == bVisible)
    return;
  
  //TODO: add handling of return values
  if(bVisible && pxW->pxOnShow)
    pxW->pxOnShow(pxW);
  
  if(!bVisible && pxW->pxOnHide)
    pxW->pxOnHide(pxW);
  
  pxW->bVisible = bVisible;
  
  if(!bVisible)
    pxW->bInvalidateParent = TRUE;
  else
    vWidgetInvalidate(pxW);
  
  //For now we are unable to hide interface instance (and any that have no parent)
  //because there's no routine to clear the LCD in that case.
}