char * aclent_acltotext(aclent_t *aclp, int aclcnt, int flags) { dynaclstr_t *dstr; char *aclexport = NULL; int i; int error = 0; if (aclp == NULL) return (NULL); if ((dstr = malloc(sizeof (dynaclstr_t))) == NULL) return (NULL); dstr->d_bufsize = aclcnt * ACL_ENTRY_SIZE; if ((dstr->d_aclexport = malloc(dstr->d_bufsize)) == NULL) { free(dstr); return (NULL); } *dstr->d_aclexport = '\0'; dstr->d_pos = 0; for (i = 0; i < aclcnt; i++, aclp++) { if (error = aclent_type_txt(dstr, aclp, flags)) break; if (error = aclent_perm_txt(dstr, aclp->a_perm)) break; if ((flags & ACL_APPEND_ID) && ((aclp->a_type == USER) || (aclp->a_type == DEF_USER) || (aclp->a_type == GROUP) || (aclp->a_type == DEF_GROUP))) { char id[ID_STR_MAX], *idstr; if (error = str_append(dstr, ":")) break; id[ID_STR_MAX - 1] = '\0'; /* null terminate buffer */ idstr = lltostr(aclp->a_id, &id[ID_STR_MAX - 1]); if (error = str_append(dstr, idstr)) break; } if (i < aclcnt - 1) if (error = str_append(dstr, ",")) break; } if (error) { if (dstr->d_aclexport) free(dstr->d_aclexport); } else { aclexport = dstr->d_aclexport; } free(dstr); return (aclexport); }
static void DrawCursor(int xOnBase, int yOnBase, GUI_COLOR color) { double basex = screen_hcenter+(xOnBase-half_x)*Diff; double basey = screen_vcenter-(yOnBase-half_y)*Diff; GUI_SetLineStyle(GUI_LS_SOLID); GUI_SetColor(color); GUI_DrawPoint(basex, basey); GUI_DrawHLine(basey, basex - 10, basex - 2); GUI_DrawHLine(basey, basex + 2, basex + 10); GUI_DrawVLine(basex, basey - 10, basey - 2); GUI_DrawVLine(basex, basey + 2, basey + 10); GUI_SetFont(GUI_FONT_13_1); GUI_SetColor(pColor->textColor); sprintf(pStrBuf,"name:%s",pSnapLink->Boat.name); GUI_DispStringAt(pStrBuf, basex + 10, basey + 10); GUI_DispStringAt("N", basex + 10, basey + 10 + GUI_GetFontSizeY()); lltostr(pSnapLink->Boat.latitude, pStrBuf); GUI_DispStringAt(pStrBuf, basex + 23, basey+10+GUI_GetFontSizeY()); GUI_DispStringAt("E", basex + 10, basey + 10+GUI_GetFontSizeY()*2); lltostr(pSnapLink->Boat.longitude, pStrBuf); GUI_DispStringAt(pStrBuf, basex + 23, basey+10+GUI_GetFontSizeY()*2); GUI_DispStringAt("SOG:", basex + 10, basey +10+ GUI_GetFontSizeY()*3); sprintf(pStrBuf, "%2d.%d", pSnapLink->Boat.SOG/10, pSnapLink->Boat.SOG%10); GUI_DispStringAt(pStrBuf, basex + 45, basey +10+ GUI_GetFontSizeY()*3); GUI_DispStringAt("COG:", basex + 10, basey + 10+GUI_GetFontSizeY()*4); sprintf(pStrBuf, "%3d", pSnapLink->Boat.COG/10); pStrBuf[3] = 194; pStrBuf[4] = 176; pStrBuf[5] = '\0'; GUI_DispStringAt(pStrBuf, basex + 45, basey + 10+GUI_GetFontSizeY()*4); }
static char * ace_acltotext(acl_t *aceaclp, int flags) { ace_t *aclp = aceaclp->acl_aclp; int aclcnt = aceaclp->acl_cnt; int i; int error = 0; int isdir = (aceaclp->acl_flags & ACL_IS_DIR); dynaclstr_t *dstr; char *aclexport = NULL; char *rawsidp = NULL; if (aclp == NULL) return (NULL); if ((dstr = malloc(sizeof (dynaclstr_t))) == NULL) return (NULL); dstr->d_bufsize = aclcnt * ACL_ENTRY_SIZE; if ((dstr->d_aclexport = malloc(dstr->d_bufsize)) == NULL) { free(dstr); return (NULL); } *dstr->d_aclexport = '\0'; dstr->d_pos = 0; for (i = 0; i < aclcnt; i++, aclp++) { if (error = ace_type_txt(dstr, aclp, flags)) break; if (error = ace_perm_txt(dstr, aclp->a_access_mask, aclp->a_flags, isdir, flags)) break; if (error = ace_inherit_txt(dstr, aclp->a_flags, flags)) break; if (error = ace_access_txt(dstr, aclp->a_type)) break; if ((flags & ACL_APPEND_ID) && (((aclp->a_flags & ACE_TYPE_FLAGS) == 0) || ((aclp->a_flags & ACE_TYPE_FLAGS) == ACE_IDENTIFIER_GROUP))) { char id[ID_STR_MAX], *idstr; if (error = str_append(dstr, ":")) break; rawsidp = NULL; id[ID_STR_MAX -1] = '\0'; /* null terminate */ if (aclp->a_who > MAXUID && (flags & ACL_SID_FMT)) { error = getsidname(aclp->a_who, ((aclp->a_flags & ACE_TYPE_FLAGS) == 0) ? B_TRUE : B_FALSE, &idstr, 1); rawsidp = idstr; if (error) break; } else if (aclp->a_who > MAXUID && !(flags & ACL_NORESOLVE)) { idstr = lltostr(UID_NOBODY, &id[ID_STR_MAX - 1]); } else { idstr = lltostr(aclp->a_who, &id[ID_STR_MAX - 1]); } if (error = str_append(dstr, idstr)) break; if (rawsidp) { free(rawsidp); rawsidp = NULL; } } if (i < aclcnt - 1) { if (error = str_append(dstr, ",")) break; } } if (rawsidp) free(rawsidp); if (error) { if (dstr->d_aclexport) free(dstr->d_aclexport); } else { aclexport = dstr->d_aclexport; } free(dstr); return (aclexport); }
/********************************************************************* * * _cbDialog */ static void _cbDialog(WM_MESSAGE * pMsg) { WM_HWIN hItem; int NCode; int Id; // USER START (Optionally insert additional variables) // USER END switch (pMsg->MsgId) { case WM_INIT_DIALOG: // // Initialization of 'Window' // hItem = pMsg->hWin; WINDOW_SetBkColor(hItem, 0x00000080); // // Initialization of 'Listview' // hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTVIEW_0); WM_SetCallback(hItem, &myListViewListener); LISTVIEW_SetFont(hItem, &GUI_Font28); LISTVIEW_AddColumn(hItem, LV_MoniteList_Col_0_WIDTH, "Dis", GUI_TA_HCENTER | GUI_TA_VCENTER); LISTVIEW_AddColumn(hItem, LV_MoniteList_Col_1_WIDTH, "MMSI", GUI_TA_HCENTER | GUI_TA_VCENTER); LISTVIEW_AddColumn(hItem, LV_MoniteList_Col_2_WIDTH, "Ang", GUI_TA_HCENTER | GUI_TA_VCENTER); LISTVIEW_AddRow(hItem, NULL); LISTVIEW_SetGridVis(hItem, 1); LISTVIEW_SetHeaderHeight(hItem,LV_MoniteList_Header_HEIGHT); LISTVIEW_SetRowHeight(hItem,LV_MoniteList_Row_HEIGHT); LISTVIEW_SetFont(hItem, &GUI_Font24B_1); LISTVIEW_SetTextColor(hItem, LISTVIEW_CI_UNSEL,GUI_WHITE); LISTVIEW_SetBkColor(hItem, LISTVIEW_CI_UNSEL,DEEPBLUE); LISTVIEW_SetTextColor(hItem, LISTVIEW_CI_SELFOCUS,GUI_BLACK); LISTVIEW_SetBkColor(hItem, LISTVIEW_CI_SELFOCUS, GUI_WHITE); LISTVIEW_SetBkColor(hItem, LISTVIEW_CI_SEL, DEEPBLUE); updateListViewContent(hItem); // USER START (Optionally insert additional code for further widget initialization) // USER END break; case WM_PAINT: GUI_SetFont(&GUI_Font24_1); GUI_SetColor(GUI_YELLOW); GUI_SetTextMode(GUI_TM_TRANS); if( (index>=0) && (index<N_boat) ) { GUI_DispStringAt(boat_list_p[index]->name,LV_MoniteList_WIDTH+90,80); lltostr(boat_list_p[index]->latitude,pStrBuf); GUI_DispStringExAt(pStrBuf,LV_MoniteList_WIDTH+20,120); lltostr(boat_list_p[index]->longitude,pStrBuf); GUI_DispStringExAt(pStrBuf,LV_AllList_WIDTH,160); sprintf(pStrBuf, "%d", boat_list_p[index]->SOG); GUI_DispStringExAt(pStrBuf,LV_AllList_WIDTH+40,200); } break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); NCode = pMsg->Data.v; switch(Id) { case ID_LISTVIEW_0: // Notifications sent by 'Listview' switch(NCode) { case WM_NOTIFICATION_CLICKED: // USER START (Optionally insert code for reacting on notification message) // USER END break; case WM_NOTIFICATION_RELEASED: // USER START (Optionally insert code for reacting on notification message) // USER END break; case WM_NOTIFICATION_SEL_CHANGED: // USER START (Optionally insert code for reacting on notification message) // USER END break; // USER START (Optionally insert additional code for further notification handling) // USER END } break; // USER START (Optionally insert additional code for further Ids) // USER END } break; // USER START (Optionally insert additional message handling) // USER END default: WM_DefaultProc(pMsg); break; } }
/********************************************************************* * * _cbDialog */ static void _cbDialog(WM_MESSAGE * pMsg) { WM_HWIN hItem; int SelectedRow = -1; long SelectedMMSI = 0; int i; switch (pMsg->MsgId) { case USER_MSG_LV_UPDATE: updateListViewContent(WM_GetDialogItem(pMsg->hWin, ID_LISTVIEW_0)); break; case USER_MSG_SKIN: pSkin = &(lvWinSkins[pMsg->Data.v]); INFO("case skin:%s",pMsg->Data.v==SKIN_Day?"Day":"Night"); WINDOW_SetBkColor(pMsg->hWin,pSkin->bkColor); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_0); TEXT_SetTextColor(hItem, pSkin->ttl_Text); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_1); TEXT_SetTextColor(hItem, pSkin->ttl_Text); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_2); TEXT_SetTextColor(hItem, pSkin->inf_Label); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_3); TEXT_SetTextColor(hItem, pSkin->inf_Label); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_4); TEXT_SetTextColor(hItem, pSkin->inf_Label); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_5); TEXT_SetTextColor(hItem, pSkin->inf_Label); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_6); TEXT_SetTextColor(hItem, pSkin->inf_Label); hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTVIEW_0); LISTVIEW_SetBkColor(hItem, LISTVIEW_CI_UNSEL, pSkin->itm_bkUnsel); LISTVIEW_SetBkColor(hItem, LISTVIEW_CI_SEL, pSkin->itm_bkSel); LISTVIEW_SetBkColor(hItem, LISTVIEW_CI_SELFOCUS, pSkin->itm_bkFocus); LISTVIEW_SetTextColor(hItem,LISTVIEW_CI_UNSEL, pSkin->itm_txUnsel); LISTVIEW_SetTextColor(hItem,LISTVIEW_CI_SEL, pSkin->itm_txSel); LISTVIEW_SetTextColor(hItem,LISTVIEW_CI_SELFOCUS, pSkin->itm_txFocus); hItem = LISTVIEW_GetHeader(hItem); HEADER_SetBkColor(hItem,pSkin->Header_Bk); HEADER_SetTextColor(hItem,pSkin->Header_Text); break; case WM_INIT_DIALOG: pSkin = &(lvWinSkins[SysConf.Skin]); hItem = pMsg->hWin; WINDOW_SetBkColor(hItem, pSkin->bkColor); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_0); TEXT_SetTextColor(hItem, pSkin->ttl_Text); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_1); TEXT_SetTextColor(hItem, pSkin->ttl_Text); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_2); TEXT_SetTextColor(hItem, pSkin->inf_Label); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_3); TEXT_SetTextColor(hItem, pSkin->inf_Label); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_4); TEXT_SetTextColor(hItem, pSkin->inf_Label); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_5); TEXT_SetTextColor(hItem, pSkin->inf_Label); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_6); TEXT_SetTextColor(hItem, pSkin->inf_Label); hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTVIEW_0); WM_SetCallback(hItem, &myListViewListener); LISTVIEW_AddColumn(hItem, LV_AllList_Col_0_WIDTH, "距离", GUI_TA_HCENTER | GUI_TA_VCENTER); LISTVIEW_AddColumn(hItem, LV_AllList_Col_2_WIDTH, "MMSI", GUI_TA_HCENTER | GUI_TA_VCENTER); LISTVIEW_AddColumn(hItem, LV_AllList_Col_3_WIDTH, "状态", GUI_TA_HCENTER | GUI_TA_VCENTER); LISTVIEW_AddRow(hItem, NULL); LISTVIEW_SetGridVis(hItem, 1); LISTVIEW_SetHeaderHeight(hItem,LV_MoniteList_Header_HEIGHT); LISTVIEW_SetRowHeight(hItem,LV_MoniteList_Row_HEIGHT); LISTVIEW_SetFont(hItem,&GUI_Font30); LISTVIEW_SetBkColor(hItem, LISTVIEW_CI_UNSEL, pSkin->itm_bkUnsel); LISTVIEW_SetBkColor(hItem, LISTVIEW_CI_SEL, pSkin->itm_bkSel); LISTVIEW_SetBkColor(hItem, LISTVIEW_CI_SELFOCUS, pSkin->itm_bkFocus); LISTVIEW_SetTextColor(hItem,LISTVIEW_CI_UNSEL, pSkin->itm_txUnsel); LISTVIEW_SetTextColor(hItem,LISTVIEW_CI_SEL, pSkin->itm_txSel); LISTVIEW_SetTextColor(hItem,LISTVIEW_CI_SELFOCUS, pSkin->itm_txFocus); for(i=LV_PAGE_SIZE; i>0; i--) { LISTVIEW_AddRow(hItem, NULL); } LISTVIEW_SetSel(hItem, 0); hItem = LISTVIEW_GetHeader(hItem); HEADER_SetBkColor(hItem,pSkin->Header_Bk); HEADER_SetTextColor(hItem,pSkin->Header_Text); isSub2Inited = 1; break; case WM_PAINT: GUI_SetColor(pSkin->inf_bkColor); GUI_FillRectEx(&infoRect); GUI_SetTextMode(GUI_TM_TRANS); GUI_SetFont(&GUI_Font24); GUI_SetColor(pSkin->inf_Label); GUI_DispStringAt("按确定键选择或取消选择监控的网位仪", LV_AllList_WIDTH+20, LV_AllList_Y+240); GUI_SetFont(&GUI_Font24_1); GUI_SetColor(pSkin->inf_txColor); hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTVIEW_0); if(WM_HasFocus(hItem) == FALSE) { sprintf(pStrBuf, " 0/%3d", N_boat); GUI_DispStringAt(pStrBuf,LV_AllList_WIDTH-80,LV_AllList_Y-20); break; } // if( N_boat <= 0 ){ // sprintf(pStrBuf, " 0/ 0"); // GUI_DispStringAt(pStrBuf, LV_AllList_WIDTH-80, LV_AllList_Y-20); // break; // } SelectedRow = LISTVIEW_GetSel(hItem); LISTVIEW_GetItemText(WM_GetDialogItem(pMsg->hWin, ID_LISTVIEW_0), LV_AllList_Col_MMSI, SelectedRow, pStrBuf, 11); SelectedMMSI = strtoi(pStrBuf); if(SelectedMMSI <= 0) { sprintf(pStrBuf," 0/%3d", N_boat); GUI_DispStringAt(pStrBuf,LV_AllList_WIDTH-80,LV_AllList_Y-20); break; } for(i=0; i<N_boat ; i++) { if(SimpBerthes[i].pBerth->Boat.user_id == SelectedMMSI) { break; } } if(i<N_boat) { sprintf(pStrBuf,"%3d/%3d", i+1 ,N_boat); GUI_DispStringAt(pStrBuf,LV_AllList_WIDTH-80,LV_AllList_Y-20); GUI_DispStringAt(SimpBerthes[i].pBerth->Boat.name,LV_AllList_WIDTH+80,85); lltostr(SimpBerthes[i].latitude,pStrBuf); GUI_DispStringAt(pStrBuf,LV_AllList_WIDTH+80,125); lltostr(SimpBerthes[i].longitude,pStrBuf); GUI_DispStringAt(pStrBuf,LV_AllList_WIDTH+80,165); // if(SysConf.Unit == UNIT_km) // { // int sog = SimpBerthes[i].pBerth->Boat.SOG *18; // sprintf(pStrBuf, "%3d.%02dkm",sog/100, sog%100); // } // else // { // sprintf(pStrBuf, "%2d.%dkt", SimpBerthes[i].pBerth->Boat.SOG/10, // SimpBerthes[i].pBerth->Boat.SOG%10); // } sprintf(pStrBuf, "%2d.%dkt", SimpBerthes[i].pBerth->Boat.SOG/10, SimpBerthes[i].pBerth->Boat.SOG%10); GUI_DispStringAt(pStrBuf, LV_AllList_WIDTH+80,205); sprintf(pStrBuf, "%3d", SimpBerthes[i].pBerth->Boat.COG/10); pStrBuf[3] = 194; pStrBuf[4] = 176; pStrBuf[5] = '\0'; GUI_DispStringAt(pStrBuf,LV_AllList_WIDTH+80,245); } break; default: WM_DefaultProc(pMsg); break; } }