void CManilla2DConfigTabsDlg::UpdateListControlFromNewWidgetVector() { m_bPopulatingListControl = true; int selectedIndex = GetSelectedItemIndex(); m_mainListControl.DeleteAllItems(); CHeaderCtrl* pListHeaderCtrl = m_mainListControl.GetHeaderCtrl(); if(pListHeaderCtrl != NULL) { int headerItemCount = pListHeaderCtrl->GetItemCount(); if(headerItemCount != 1) { // remove all items for(int i=headerItemCount; i > 0; i--) { pListHeaderCtrl->DeleteItem(i); } CRect lcRect; m_mainListControl.GetClientRect(&lcRect); m_mainListControl.InsertColumn(0, _T("Item Name"), LVCFMT_LEFT, lcRect.Width()); } } for(size_t i=0; i<m_newWidgetVector.size(); i++) { LPCTSTR p(m_newWidgetVector[i].name); m_mainListControl.InsertItem(i, p); m_mainListControl.SetCheck(i, m_newWidgetVector[i].enabled); } if((selectedIndex >= 0) && (selectedIndex < m_mainListControl.GetItemCount())) { m_mainListControl.SetItemState(selectedIndex, LVIS_SELECTED, LVIS_SELECTED); } OnNMClickMainListControl(NULL, NULL); m_mainListControl.SetFocus(); m_bPopulatingListControl = false; }
void CBlockProperties::OnClickList(NMHDR* pNMHDR, LRESULT* pResult) { float distance; char nodeName[NODES_ABBRNAME_LENGTH + 1]; long deadheadTime; int rcode2; int pos; POSITION position = pListCtrlLIST->GetFirstSelectedItemPosition(); // // Determine the selection(s) // if(position == NULL) { return; } // // Display the trip // LVCOLUMN LVC; int nItem = pListCtrlLIST->GetNextSelectedItem(position); int nI = pListCtrlLIST->GetItemData(nItem); // // Get the trip // TRIPSKey0.recordID = m_pRELIEFPOINTS[nI].TRIPSrecordID; btrieve(B_GETEQUAL, TMS_TRIPS, &TRIPS, &TRIPSKey0, 0); // // Show the route, service, direction, and pattern // char routeNumberAndName[ROUTES_NUMBER_LENGTH + 3 + ROUTES_NAME_LENGTH + 1]; char serviceName[SERVICES_NAME_LENGTH + 1]; char directionName[DIRECTIONS_LONGNAME_LENGTH + 1]; char patternName[PATTERNNAMES_NAME_LENGTH + 1]; ROUTESKey0.recordID = TRIPS.ROUTESrecordID; btrieve(B_GETEQUAL, TMS_ROUTES, &ROUTES, &ROUTESKey0, 0); strncpy(routeNumberAndName, ROUTES.number, ROUTES_NUMBER_LENGTH); trim(routeNumberAndName, ROUTES_NUMBER_LENGTH); strcat(routeNumberAndName, " - "); strncpy(tempString, ROUTES.name, ROUTES_NAME_LENGTH); trim(tempString, ROUTES_NAME_LENGTH); strcat(routeNumberAndName, tempString); SERVICESKey0.recordID = TRIPS.SERVICESrecordID; btrieve(B_GETEQUAL, TMS_SERVICES, &SERVICES, &SERVICESKey0, 0); strncpy(serviceName, SERVICES.name, SERVICES_NAME_LENGTH); trim(serviceName, SERVICES_NAME_LENGTH); DIRECTIONSKey0.recordID = ROUTES.DIRECTIONSrecordID[TRIPS.directionIndex]; btrieve(B_GETEQUAL, TMS_DIRECTIONS, &DIRECTIONS, &DIRECTIONSKey0, 0); strncpy(directionName, DIRECTIONS.longName, DIRECTIONS_LONGNAME_LENGTH); trim(directionName, DIRECTIONS_LONGNAME_LENGTH); PATTERNNAMESKey0.recordID = TRIPS.PATTERNNAMESrecordID; btrieve(B_GETEQUAL, TMS_PATTERNNAMES, &PATTERNNAMES, &PATTERNNAMESKey0, 0); strncpy(patternName, PATTERNNAMES.name, PATTERNNAMES_NAME_LENGTH); trim(patternName, PATTERNNAMES_NAME_LENGTH); sprintf(tempString, "Trip info: %s %s %s on pattern %s", serviceName, directionName, routeNumberAndName, patternName); pStaticTRIPINFO->SetWindowText(tempString); // // Clear out the previous ListCtrl // pListCtrlTRIPDATA->DeleteAllItems(); CHeaderCtrl* pCtrl = pListCtrlTRIPDATA->GetHeaderCtrl(); if(pCtrl != NULL) { int nCount = pCtrl->GetItemCount(); for(nI = 0; nI < nCount; nI++) { pCtrl->DeleteItem(0); } } // // Set up the list control // GenerateTripDef GTResults; GetConnectionTimeDef GCTData; int numNodes = GenerateTrip(TRIPS.ROUTESrecordID, TRIPS.SERVICESrecordID, TRIPS.directionIndex, TRIPS.PATTERNNAMESrecordID, TRIPS.timeAtMLP, GENERATETRIP_FLAG_DISPLAYERRORS, >Results); pos = 0; // // Is this a pullout? // long POTime = NO_TIME; if(TRIPS.standard.POGNODESrecordID != NO_RECORD) { GCTData.fromPATTERNNAMESrecordID = TRIPS.PATTERNNAMESrecordID; GCTData.toPATTERNNAMESrecordID = TRIPS.PATTERNNAMESrecordID; GCTData.fromROUTESrecordID = TRIPS.ROUTESrecordID; GCTData.fromSERVICESrecordID = TRIPS.SERVICESrecordID; GCTData.toROUTESrecordID = TRIPS.ROUTESrecordID; GCTData.toSERVICESrecordID = TRIPS.SERVICESrecordID; GCTData.fromNODESrecordID = TRIPS.standard.POGNODESrecordID; GCTData.toNODESrecordID = GTResults.firstNODESrecordID; GCTData.timeOfDay = GTResults.firstNodeTime; deadheadTime = GetConnectionTime(GCT_FLAG_DEADHEADTIME, &GCTData, &distance); distance = (float)fabs((double)distance); if(deadheadTime != NO_TIME) { POTime = GTResults.firstNodeTime - deadheadTime; NODESKey0.recordID = TRIPS.standard.POGNODESrecordID; btrieve(B_GETEQUAL, TMS_NODES, &NODES, &NODESKey0, 0); strncpy(nodeName, NODES.abbrName, NODES_ABBRNAME_LENGTH); trim(nodeName, NODES_ABBRNAME_LENGTH); LVC.mask = LVCF_FMT | LVCF_TEXT | LVCF_WIDTH; LVC.fmt = LVCFMT_LEFT; LVC.cx = 50; LVC.pszText = nodeName; pListCtrlTRIPDATA->InsertColumn(pos, &LVC); pos++; } } // // Set the header to the pattern of the trip // PATTERNSKey2.ROUTESrecordID = TRIPS.ROUTESrecordID; PATTERNSKey2.SERVICESrecordID = TRIPS.SERVICESrecordID; PATTERNSKey2.PATTERNNAMESrecordID = TRIPS.PATTERNNAMESrecordID; PATTERNSKey2.directionIndex = TRIPS.directionIndex; PATTERNSKey2.nodeSequence = NO_RECORD; rcode2 = btrieve(B_GETGREATER, TMS_PATTERNS, &PATTERNS, &PATTERNSKey2, 2); while(rcode2 == 0 && PATTERNS.ROUTESrecordID == TRIPS.ROUTESrecordID && PATTERNS.SERVICESrecordID == TRIPS.SERVICESrecordID && PATTERNS.PATTERNNAMESrecordID == TRIPS.PATTERNNAMESrecordID && PATTERNS.directionIndex == TRIPS.directionIndex) { if(!(PATTERNS.flags & PATTERNS_FLAG_BUSSTOP)) { NODESKey0.recordID = PATTERNS.NODESrecordID; btrieve(B_GETEQUAL, TMS_NODES, &NODES, &NODESKey0, 0); strncpy(nodeName, NODES.abbrName, NODES_ABBRNAME_LENGTH); trim(nodeName, NODES_ABBRNAME_LENGTH); LVC.mask = LVCF_FMT | LVCF_TEXT | LVCF_WIDTH; LVC.fmt = LVCFMT_LEFT; LVC.cx = 50; LVC.pszText = nodeName; pListCtrlTRIPDATA->InsertColumn(pos, &LVC); pos++; } rcode2 = btrieve(B_GETNEXT, TMS_PATTERNS, &PATTERNS, &PATTERNSKey2, 2); } // // Is this a pull-in? // long PITime = NO_TIME; if(TRIPS.standard.PIGNODESrecordID != NO_RECORD) { GCTData.fromPATTERNNAMESrecordID = TRIPS.PATTERNNAMESrecordID; GCTData.toPATTERNNAMESrecordID = TRIPS.PATTERNNAMESrecordID; GCTData.fromROUTESrecordID = TRIPS.ROUTESrecordID; GCTData.fromSERVICESrecordID = TRIPS.SERVICESrecordID; GCTData.toROUTESrecordID = TRIPS.ROUTESrecordID; GCTData.toSERVICESrecordID = TRIPS.SERVICESrecordID; GCTData.fromNODESrecordID = GTResults.lastNODESrecordID; GCTData.toNODESrecordID = TRIPS.standard.PIGNODESrecordID; GCTData.timeOfDay = GTResults.lastNodeTime; deadheadTime = GetConnectionTime(GCT_FLAG_DEADHEADTIME, &GCTData, &distance); distance = (float)fabs((double)distance); if(deadheadTime != NO_TIME) { PITime = GTResults.lastNodeTime + deadheadTime; NODESKey0.recordID = TRIPS.standard.PIGNODESrecordID; btrieve(B_GETEQUAL, TMS_NODES, &NODES, &NODESKey0, 0); strncpy(nodeName, NODES.abbrName, NODES_ABBRNAME_LENGTH); trim(nodeName, NODES_ABBRNAME_LENGTH); LVC.mask = LVCF_FMT | LVCF_TEXT | LVCF_WIDTH; LVC.fmt = LVCFMT_LEFT; LVC.cx = 50; LVC.pszText = nodeName; pListCtrlTRIPDATA->InsertColumn(pos, &LVC); } } // // Display the times // LVITEM LVI; LVI.iItem = 0; LVI.mask = LVIF_TEXT; pos = 0; // // POT? // if(POTime != NO_TIME) { LVI.iSubItem = pos; strcpy(tempString, Tchar(POTime)); LVI.pszText = tempString; pListCtrlTRIPDATA->InsertItem(&LVI); pos++; } // // Do the trip times // strcpy(tempString, Tchar(GTResults.tripTimes[0])); LVI.pszText = tempString; LVI.iSubItem = pos; if(pos == 0) pListCtrlTRIPDATA->InsertItem(&LVI); else { pListCtrlTRIPDATA->SetItem(&LVI); } pos++; for(nI = 1; nI < numNodes; nI++) { LVI.iSubItem = pos; strcpy(tempString, Tchar(GTResults.tripTimes[nI])); LVI.pszText = tempString; pListCtrlTRIPDATA->SetItem(&LVI); pos++; } // // PIT? // if(PITime != NO_TIME) { LVI.iSubItem = pos; strcpy(tempString, Tchar(PITime)); LVI.pszText = tempString; pListCtrlTRIPDATA->SetItem(&LVI); } *pResult = 0; }