// ----------------------------------------------------------------------------- // GetTeamworkMembers // // collect information of joined Teamwork members // ----------------------------------------------------------------------------- static GSErrCode GetTeamworkMembers (GS::HashTable<short, API_UserInfo>& userInfoTable, short& myUserId) { API_ProjectInfo projectInfo; BNZeroMemory (&projectInfo, sizeof (API_ProjectInfo)); GSErrCode err = ACAPI_Environment (APIEnv_ProjectID, &projectInfo); if (projectInfo.location != NULL) delete projectInfo.location; if (projectInfo.location_team != NULL) delete projectInfo.location_team; if (err != NoError) return err; myUserId = projectInfo.userId; API_SharingInfo sharingInfo; BNZeroMemory (&sharingInfo, sizeof (API_SharingInfo)); err = ACAPI_Environment (APIEnv_ProjectSharingID, &sharingInfo); if (err == NoError && sharingInfo.users != NULL) { for (Int32 i = 0; i < sharingInfo.nUsers; i++) userInfoTable.Add (((*sharingInfo.users)[i]).userId, (*sharingInfo.users)[i]); } if (sharingInfo.users != NULL) BMhKill (reinterpret_cast<GSHandle*>(&sharingInfo.users)); return err; } /* GetTeamworkMembers */
void highlightElementByID(){ GSErrCode err; API_NeigID neigID; API_Element element; elementidlist eleMsg; API_StoryCmdType storyCmd; char buffer[256]; readDelimitedFrom(getClientSocket(), &eleMsg); Int32 nItem = eleMsg.guid_size(); bool add = true; //Clear all selected elements err = ACAPI_Element_Select(NULL, 0, add); API_Neig** neigHdl = reinterpret_cast<API_Neig**> (BMAllocateHandle(nItem * sizeof(API_Neig), ALLOCATE_CLEAR, 0)); API_Neig neig; for (int i = 0; i < nItem; i++){ BNZeroMemory(&element, sizeof(API_Element)); element.header.guid = APIGuidFromString(eleMsg.guid(i).c_str()); err = ACAPI_Element_Get(&element); if (err != NoError) { sprintf(buffer, ErrID_To_Name(err)); ACAPI_WriteReport(buffer, true); return; } err = ACAPI_Goodies(APIAny_ElemTypeToNeigID, (void*)element.header.typeID, &neigID); (*neigHdl)[i].neigID = neigID; (*neigHdl)[i].guid = element.header.guid; (*neigHdl)[i].flags = API_NeigFlg_Normal; (*neigHdl)[i].elemPartType = APINeigElemPart_None; } //Add the current element to the selection err = ACAPI_Element_Select(neigHdl, nItem, add); if (err != NoError) { sprintf(buffer, ErrID_To_Name(err)); ACAPI_WriteReport(buffer, true); return; } BMhKill((GSHandle*)&neigHdl); /* * In order for the GUI update, we need to create an element, and then * delete it. * By doing this we can have the selected element highlighted */ API_Element wallElement; API_ElementMemo memo; BNZeroMemory(&memo, sizeof(API_ElementMemo)); BNZeroMemory(&wallElement, sizeof(API_Element)); wallElement.header.typeID = API_WallID; wallElement.header.layer = 1; err = ACAPI_Element_GetDefaults(&wallElement, &memo); if (err != NoError) { ErrorBeep("ACAPI_Element_GetMemo", err); return; } err = ACAPI_Element_Create(&wallElement, &memo); if (err != NoError){ ErrorBeep("ACAPI_Element_Create", err); sprintf(buffer, ErrID_To_Name(err)); ACAPI_WriteReport(buffer, true); } ACAPI_DisposeElemMemoHdls(&memo); API_Elem_Head* test; test = &wallElement.header; ACAPI_Element_Delete(&test, 1); }