namespace dlgBlueFlyConfig { WndForm *wfDlg; PDeviceDescriptor_t pDevice; bool Init = true; const TCHAR* lstPageName [] = { _T("1"), _T("2"), _T("3") }; typedef std::vector<WindowControl*> lstPageWnd_t; lstPageWnd_t lstPageWnd; unsigned CurrentPage = 0; typedef std::map<DataField*, std::tstring> DataField2Parameter_t; DataField2Parameter_t AssocFieldParam; void NextPage(int Step) { if( ((CurrentPage+Step) >= 0) && ((CurrentPage+Step) < lstPageWnd.size()) ) { lstPageWnd[CurrentPage]->Close(); CurrentPage+=Step; lstPageWnd[CurrentPage]->Show(); WindowControl * pWnd = wfDlg->FindByName(_T("cmdNext")); if(pWnd) { pWnd->SetVisible(CurrentPage<(lstPageWnd.size()-1)); } pWnd = wfDlg->FindByName(_T("cmdPrev")); if(pWnd) { pWnd->SetVisible(CurrentPage>0); } TCHAR szTmp[50] = {0}; _stprintf(szTmp, _T("BlueFlyVario %d/%d"), CurrentPage+1, lstPageWnd.size()); wfDlg->SetCaption(szTmp); } } void OnClose(WindowControl * Sender) { (void)Sender; wfDlg->SetModalResult(mrOK); } void OnNextClicked(WindowControl * Sender) { (void)Sender; NextPage(+1); } void OnPrevClicked(WindowControl * Sender) { (void)Sender; NextPage(-1); } void OnParamData(DataField *Sender, DataField::DataAccessKind_t Mode) { if(Init) { return; } DataField2Parameter_t::iterator It; switch(Mode){ case DataField::daGet: break; case DataField::daPut: case DataField::daChange: It = AssocFieldParam.find(Sender); if(It != AssocFieldParam.end()) { CHardwareParameters& Parameters = gHardwareParameters[pDevice]; CHardwareParameter& Param = Parameters.GetParameter(It->second); switch(Param.Type()) { case TYPE_BOOLEAN: Param = Sender->GetAsBoolean(); break; case TYPE_DOUBLE: Param = Sender->GetAsFloat(); break; case TYPE_INT: case TYPE_INTOFFSET: case TYPE_INTLIST: Param = Sender->GetAsInteger(); break; } if(pDevice && pDevice->Com) { Parameters.UpdateDevice(Param, pDevice->Com); } } break; case DataField::daInc: case DataField::daDec: case DataField::daSpecial: break; } } CallBackTableEntry_t CallBackTable[] = { ClickNotifyCallbackEntry(OnClose), ClickNotifyCallbackEntry(OnNextClicked), ClickNotifyCallbackEntry(OnPrevClicked), DataAccessCallbackEntry(OnParamData), EndCallBackEntry() }; void FillProperty(CHardwareParameters::value_type& Val) { if(!wfDlg) return; CHardwareParameter& Param = Val.second; WndProperty* pWnd = (WndProperty*)wfDlg->FindByName(Param.Code().c_str()); if(pWnd) { DataField* pData = pWnd->GetDataField(); if(pData) { AssocFieldParam[pData] = Param.Code(); switch(Param.Type()) { case TYPE_BOOLEAN: pData->Set(Param.ValueBool()); break; case TYPE_DOUBLE: pData->SetMax((double)Param.Max()); pData->SetMin((double)Param.Min()); pData->Set(Param.ValueDouble()); break; case TYPE_INT: case TYPE_INTOFFSET: pData->SetMax((int)Param.Max()); pData->SetMin((int)Param.Min()); pData->Set(Param.ValueInt()); break; case TYPE_INTLIST: pData->SetMax((int)Param.Max()); pData->SetMin((int)Param.Min()); pData->Set(Param.ValueInt()); break; } } pWnd->RefreshDisplay(); } } int Show(DeviceDescriptor_t *d) { int nRet = IdCancel; TCHAR filename[MAX_PATH]; const TCHAR *resName = NULL; pDevice = d; Init = true; if (ScreenLandscape) { LocalPathS(filename, TEXT("dlgBlueFlyConfig.xml")); resName = TEXT("IDR_XML_BLUEFLYCONFIG"); } else { LocalPathS(filename, TEXT("dlgBlueFlyConfig_L.xml")); resName = TEXT("IDR_XML_BLUEFLYCONFIG_L"); } wfDlg = dlgLoadFromXML(CallBackTable, filename, resName); if (wfDlg) { // build list of page WindowConrol* lstPageWnd.clear(); lstPageWnd.reserve(std::distance(std::begin(lstPageName), std::end(lstPageName))); std::transform(std::begin(lstPageName), std::end(lstPageName), std::inserter(lstPageWnd, lstPageWnd.begin()), std::bind(&WndForm::FindByName, wfDlg, _1)); if(!lstPageWnd.empty()) { // Show First Page CurrentPage=0; NextPage(0); // Hide All Next Page std::for_each(++lstPageWnd.begin(), lstPageWnd.end(), std::bind(&WindowControl::Close, _1)); } // Init Enum WndProperty WndProperty* pWnd = (WndProperty*)wfDlg->FindByName(_T("BOM")); if(pWnd) { DataFieldEnum* pData =(DataFieldEnum*)pWnd->GetDataField(); if(pData) { pData->addEnumText(_T("BlueFlyVario")); pData->addEnumText(_T("LK8EX1")); pData->addEnumText(_T("LX")); pData->addEnumText(_T("FlyNet")); } } // Set Value to all WndProperty CHardwareParameters& HardwareParameters = gHardwareParameters[pDevice]; AssocFieldParam.clear(); std::for_each(HardwareParameters.begin(), HardwareParameters.end(), std::ptr_fun(FillProperty)); Init = false; if (wfDlg->ShowModal(true)) { nRet = IdOk; } AssocFieldParam.clear(); lstPageWnd.clear(); delete wfDlg; wfDlg = NULL; pDevice = NULL; } return nRet; } };
case KEY_RIGHT: case '7': pBtn = pWnd->FindByName(TEXT("cmdNext")); NextPage(pWnd, +1); break;; } if (pBtn) { pBtn->SetFocus(); return true; } return false; } static CallBackTableEntry_t CallBackTable[]={ ClickNotifyCallbackEntry(OnNextClicked), ClickNotifyCallbackEntry(OnPrevClicked), OnPaintCallbackEntry(OnPaintDetailsListItem), OnListCallbackEntry(OnDetailsListInfo), EndCallBackEntry() }; void addChecklist(TCHAR* name, TCHAR* details) { if (nLists<MAXNOTES) { ChecklistTitle[nLists] = (TCHAR*)malloc((_tcslen(name)+1)*sizeof(TCHAR)); ChecklistText[nLists] = (TCHAR*)malloc((_tcslen(details)+1)*sizeof(TCHAR)); LKASSERT(ChecklistTitle[nLists]!=NULL); LKASSERT(ChecklistText[nLists]!=NULL); _tcscpy(ChecklistTitle[nLists], name); if (_tcslen(name)>=MAXNOTETITLE)
static void OnClear(WndButton* pWnd) { PlayResource(TEXT("IDR_WAV_CLICK")); ClearText(); } static void OnHelpClicked(WindowControl* Sender){ if(wKeyboardPopupWndProperty) { wKeyboardPopupWndProperty->OnHelp(); } } static CallBackTableEntry_t CallBackTable[]={ ClickNotifyCallbackEntry(OnKey), ClickNotifyCallbackEntry(OnClear), ClickNotifyCallbackEntry(OnOk), ClickNotifyCallbackEntry(OnDel), ClickNotifyCallbackEntry(OnDate), ClickNotifyCallbackEntry(OnTime), OnHelpCallbackEntry(OnHelpClicked), EndCallBackEntry() }; void dlgTextEntryKeyboardShowModal(TCHAR *text, int width, unsigned ResID) { wf = NULL; if (width==0) { width = MAX_TEXTENTRY; }
PlayResource(TEXT("IDR_WAV_CLICK")); } static void OnCloseClicked(WndButton* pWnd){ (void)pWnd; wf->SetModalResult(mrOK); } static bool OnTimer(){ SetValues(); return true; } static CallBackTableEntry_t CallBackTable[]={ ClickNotifyCallbackEntry(OnAcknowledgeClicked), ClickNotifyCallbackEntry(OnFlyClicked), ClickNotifyCallbackEntry(OnCloseClicked), ClickNotifyCallbackEntry(OnSelectClicked), OnPaintCallbackEntry(OnPaintAirspacePicto), EndCallBackEntry() }; static void SetValues(void) { WndProperty* wp; WndButton *wb; TCHAR buffer[80]; TCHAR buffer2[160]; // must contain buffer
RefreshTask(); /*******************/ const RECT rc = wPicto->GetClientRect(); MapWindow::DrawWaypointPictoBg(Surface, rc); MapWindow::DrawTaskPicto(Surface, twItemIndex, rc, 2000); } } static CallBackTableEntry_t CallBackTable[]={ ClickNotifyCallbackEntry(OnMoveClicked), ClickNotifyCallbackEntry(OnSelectClicked), ClickNotifyCallbackEntry(OnDetailsClicked), ClickNotifyCallbackEntry(OnRemoveClicked), ClickNotifyCallbackEntry(OnCloseClicked), ClickNotifyCallbackEntry(OnStartPointClicked), ClickNotifyCallbackEntry(OnMoveAfterClicked), ClickNotifyCallbackEntry(OnMoveBeforeClicked), DataAccessCallbackEntry(OnAATEnabled), ClickNotifyCallbackEntry(OnTaskRulesClicked), OnPaintCallbackEntry(OnTaskPointPicto), EndCallBackEntry() }; void dlgTaskWaypointShowModal(int itemindex, int tasktype, bool addonly, bool Moveallowed){
retStatus=2; wf->SetModalResult(mrOK); } static void OnDetailsClicked(WndButton* pWnd){ retStatus=1; wf->SetModalResult(mrOK); } static void OnTaskClicked(WndButton* pWnd){ retStatus=5; wf->SetModalResult(mrOK); } static CallBackTableEntry_t CallBackTable[]={ ClickNotifyCallbackEntry(OnGotoClicked), ClickNotifyCallbackEntry(OnSetAlt1Clicked), ClickNotifyCallbackEntry(OnSetAlt2Clicked), ClickNotifyCallbackEntry(OnTaskClicked), ClickNotifyCallbackEntry(OnCancelClicked), OnPaintCallbackEntry(OnPaintWaypointPicto), EndCallBackEntry() }; // Will return 0 if cancel or error, 1 if details needed, 2 if goto, 3 if alt1, 4 if alt2 short dlgWayQuickShowModal(void){ wf = NULL; TCHAR filename[MAX_PATH]; TCHAR sTmp[128];
} return; } } static void OnAdvancedClicked(WndButton* Sender){ showAdvanced = !showAdvanced; UpdateAdvanced(); } static CallBackTableEntry_t CallBackTable[]={ OnPaintCallbackEntry(OnTaskPaintListItem), OnListCallbackEntry(OnTaskListInfo), ClickNotifyCallbackEntry(OnDeclareClicked), ClickNotifyCallbackEntry(OnCalcClicked), ClickNotifyCallbackEntry(OnClearClicked), ClickNotifyCallbackEntry(OnCloseClicked), ClickNotifyCallbackEntry(OnAdvancedClicked), ClickNotifyCallbackEntry(OnSaveClicked), ClickNotifyCallbackEntry(OnLoadClicked), ClickNotifyCallbackEntry(OnDeleteClicked), ClickNotifyCallbackEntry(OnAnalysisClicked), ClickNotifyCallbackEntry(OnTimegatesClicked), EndCallBackEntry() };
if (TaskIndex >= 0) { if(Sender) { WndForm * pForm = Sender->GetParentWndForm(); if(pForm) { pForm->SetModalResult(mrOK); } } } } static CallBackTableEntry_t TaskCallBackTable[] = { OnPaintCallbackEntry(OnMultiSelectListPaintListItem), OnListCallbackEntry(OnMultiSelectListListInfo), ClickNotifyCallbackEntry(OnCloseClicked), ClickNotifyCallbackEntry(OnUpClicked), ClickNotifyCallbackEntry(OnEnterClicked), ClickNotifyCallbackEntry(OnDownClicked), EndCallBackEntry() }; int dlgTaskSelectListShowModal(void) { TaskIndex = -1; if (iNO_Tasks == 0) return mrCancel; wf = dlgLoadFromXML(TaskCallBackTable, ScreenLandscape ? IDR_XML_MULTISELECTLIST_L : IDR_XML_MULTISELECTLIST_P);
case DataField::daInc: case DataField::daDec: case DataField::daSpecial: break; } } static CallBackTableEntry_t CallBackTable[]={ DataAccessCallbackEntry(OnBugsData), DataAccessCallbackEntry(OnWingLoadingData), DataAccessCallbackEntry(OnTempData), DataAccessCallbackEntry(OnBallastData), DataAccessCallbackEntry(OnAltitudeData), DataAccessCallbackEntry(OnQnhData), ClickNotifyCallbackEntry(OnCloseClicked), ClickNotifyCallbackEntry(OnBallastDump), EndCallBackEntry() }; void dlgBasicSettingsShowModal(void){ WndProperty* wp = nullptr; wf = dlgLoadFromXML(CallBackTable, ScreenLandscape ? IDR_XML_BASICSETTINGS_L : IDR_XML_BASICSETTINGS_P); // BallastTimerActive = false; if (wf) {
namespace DlgIgcFile { WndForm *wfDlg = NULL; typedef std::vector<std::tstring> FileList_t; FileList_t FileList; size_t DrawListIndex = (~0); size_t ItemIndex = (~0); void ScanFile() { FileList.clear(); TCHAR szPath[MAX_PATH] = _T("\0"); TCHAR tmpPath[MAX_PATH]; LocalPath(szPath, _T(LKD_LOGS)); size_t nLen = _tcslen(szPath); if (szPath[nLen - 1] != _T('\\')) { _tcscat(szPath, _T(DIRSEP)); } _tcscpy(tmpPath,szPath); _tcscat(tmpPath, _T("*.igc")); for(lk::filesystem::directory_iterator It(tmpPath); It; ++It) { if(!It.isDirectory()) { FileList.push_back(It.getName()); } } _tcscpy(tmpPath,szPath); _tcscat(tmpPath, _T("*.IGC")); for(lk::filesystem::directory_iterator It(tmpPath); It; ++It) { if(!It.isDirectory()) { FileList.push_back(It.getName()); } } std::sort(FileList.rbegin(), FileList.rend()); // sort in desc order. } void OnClose(WndButton* pWnd) { wfDlg->SetModalResult(mrOK); } void OnSend(WndButton* pWnd) { if(ItemIndex < FileList.size()) { StartHourglassCursor(); //Start Bluetooth if needed... #ifdef UNDER_CE CObexPush Obex; if(Obex.Startup()) { StartupStore(_T("Startup OK \n")); size_t nDevice = Obex.LookupDevice(); StartupStore(_T("LookupDevice OK \n")); if(nDevice == 0) { StopHourglassCursor(); MessageBoxX(_T("No Device"), _T("Error"), mbOk); StartHourglassCursor(); } else { WndProperty* wp = (WndProperty*)wfDlg->FindByName(TEXT("prpDeviceList")); DataFieldEnum* dfe = NULL; if (wp) { dfe = (DataFieldEnum*)wp->GetDataField(); } if(dfe) { dfe->Clear(); dfe->addEnumText(_T("none")); } for(size_t i = 0; i < nDevice; ++i) { TCHAR szDeviceName[100] = {0}; if(!Obex.GetDeviceName(i, szDeviceName, array_size(szDeviceName))) { _stprintf(szDeviceName, _T("Unknown device <%d>"), i); } StartupStore(_T("GetDeviceName <%d><%s> \n"), i, szDeviceName); if(dfe) { dfe->addEnumText(szDeviceName); } } if(wp) { if(dfe) { dfe->SetAsInteger(0); } wp->SetReadOnly(false); wp->RefreshDisplay(); } StopHourglassCursor(); size_t DeviceIndex = 0; if(dfe && wp) { dlgComboPicker(wp); DeviceIndex = dfe->GetAsInteger(); } StartHourglassCursor(); if(DeviceIndex != 0) { DeviceIndex--; TCHAR szFileFullPath[MAX_PATH] = _T("\0"); LocalPath(szFileFullPath, _T(LKD_LOGS)); size_t nLen = _tcslen(szFileFullPath); if (szFileFullPath[nLen - 1] != _T('\\')) { _tcscat(szFileFullPath, _T("\\")); } FileList_t::const_iterator ItFileName = FileList.begin(); std::advance(ItFileName, ItemIndex); _tcscat(szFileFullPath, ItFileName->c_str()); if(!Obex.SendFile(DeviceIndex, szFileFullPath)) { StopHourglassCursor(); MessageBoxX(_T("Send Failed"), _T("Error"), mbOk); StartHourglassCursor(); } else { StopHourglassCursor(); MessageBoxX(_T("File sent!"), _T("Success"), mbOk); StartHourglassCursor(); } } } Obex.Shutdown(); } else { MessageBoxX(_T("Unsupported on this device"), _T("Error"), mbOk); } #else MessageBoxX(_T("Unsupported on this device"), _T("Error"), mbOk); #endif StopHourglassCursor(); } } void OnIgcFileListInfo(WindowControl * Sender, WndListFrame::ListInfo_t * ListInfo) { (void) Sender; ListInfo->ItemCount = FileList.size(); if (ListInfo->DrawIndex != -1) { DrawListIndex = ListInfo->DrawIndex + ListInfo->ScrollIndex; ItemIndex = ListInfo->ItemIndex + ListInfo->ScrollIndex; } } void OnPaintIgcFileListItem(WindowControl * Sender, LKSurface& Surface) { if (DrawListIndex < FileList.size()) { FileList_t::const_iterator ItFileName = FileList.begin(); std::advance(ItFileName, DrawListIndex); int w0 = Sender->GetWidth(); Surface.SetTextColor(RGB_BLACK); Surface.DrawTextClip(2 * ScreenScale, 2 * ScreenScale, ItFileName->c_str(), w0 - ScreenScale * 5); } } CallBackTableEntry_t CallBackTable[] = { ClickNotifyCallbackEntry(OnClose), ClickNotifyCallbackEntry(OnSend), OnListCallbackEntry(OnIgcFileListInfo), OnPaintCallbackEntry(OnPaintIgcFileListItem), EndCallBackEntry() }; }
devPutFreqActive(devA(), Ferquency, WayPointList[SelectedWaypoint].Name); devPutFreqActive(devB(), Ferquency, WayPointList[SelectedWaypoint].Name); _stprintf(szFreq,_T(" %6.3fMHz ") ,Ferquency); DoStatusMessage(_T(""), WayPointList[SelectedWaypoint].Name ); DoStatusMessage(_T("RADIO:"), szFreq ); retStatus=3; wf->SetModalResult(mrOK); #endif // RADIO_ACTIVE } static CallBackTableEntry_t CallBackTable[]={ ClickNotifyCallbackEntry(OnGotoClicked), ClickNotifyCallbackEntry(OnSetAlt1Clicked), ClickNotifyCallbackEntry(OnSetAlt2Clicked), ClickNotifyCallbackEntry(OnTaskClicked), ClickNotifyCallbackEntry(OnCancelClicked), ClickNotifyCallbackEntry(OnDetailsClicked), ClickNotifyCallbackEntry(OnRadioFrequencyClicked), OnPaintCallbackEntry(OnPaintWaypointPicto), EndCallBackEntry() }; // Will return 0 if cancel or error, 1 if details needed, 2 if goto, 3 if alt1, 4 if alt2 short dlgWayQuickShowModal(void){ TCHAR sTmp[128];
ChangeZoomTopology(1,1,4); setVariables(); //LKTOKEN _@M1223_ "Topology reset to default values" MessageBoxX ( gettext(TEXT("_@M1223_")), TEXT(""), mbOk); } static CallBackTableEntry_t CallBackTable[]={ DataAccessCallbackEntry(OnTopoActiveData), ClickNotifyCallbackEntry(OnResetTopologyClicked), ClickNotifyCallbackEntry(OnCloseClicked), EndCallBackEntry() }; void dlgTopologyShowModal(void){ if (LKTopo<1) { MessageBoxX ( // LKTOKEN _@M502_ = "Only LKMaps can be configured, sorry!" gettext(TEXT("_@M502_")), TEXT(""), mbOk); return; }
UpdateWind(false); break; case DataField::daChange: lastWind = Sender->GetAsFloat(); if (lastWind > 359) Sender->Set(0.0); break; default: break; } } static CallBackTableEntry_t CallBackTable[]={ DataAccessCallbackEntry(OnWindSpeedData), DataAccessCallbackEntry(OnWindDirectionData), ClickNotifyCallbackEntry(OnCancelClicked), ClickNotifyCallbackEntry(OnCloseClicked), EndCallBackEntry() }; void dlgWindSettingsShowModal(void){ TCHAR filename[MAX_PATH]; LocalPathS(filename, TEXT("dlgWindSettings.xml")); wf = dlgLoadFromXML(CallBackTable, filename, TEXT("IDR_XML_WINDSETTINGS")); if (wf) { WndProperty* wp;
case DataField::daDec: break; } } static void OnOptimiseClicked(WindowControl * Sender){ DoOptimise(); } static CallBackTableEntry_t CallBackTable[]={ DataAccessCallbackEntry(OnMacCreadyData), DataAccessCallbackEntry(OnRangeData), ClickNotifyCallbackEntry(OnOKClicked), ClickNotifyCallbackEntry(OnCancelClicked), ClickNotifyCallbackEntry(OnOptimiseClicked), ClickNotifyCallbackEntry(OnTargetClicked), DataAccessCallbackEntry(OnCruiseEfficiencyData), EndCallBackEntry() }; void dlgTaskCalculatorShowModal(void){ TCHAR filename[MAX_PATH]; LocalPathS(filename, TEXT("dlgTaskCalculator.xml")); wf = dlgLoadFromXML(CallBackTable, filename, TEXT("IDR_XML_TASKCALCULATOR"));
for (int i=0; i<MAXSTARTPOINTS; i++) { StartPoints[i].Index = -1; StartPoints[i].Active = false; } StartPoints[0].Index = Task[0].Index; StartPoints[0].Active = true; changed = true; UnlockTaskData(); UpdateList(); } static CallBackTableEntry_t CallBackTable[]= { OnPaintCallbackEntry(OnStartPointPaintListItem), OnListCallbackEntry(OnStartPointListInfo), ClickNotifyCallbackEntry(OnCloseClicked), ClickNotifyCallbackEntry(OnClearClicked), EndCallBackEntry() }; static void CheckStartPointInTask(void) { LockTaskData(); if (Task[0].Index != -1) { // ensure current start point is in task int index_last = 0; for (int i=MAXSTARTPOINTS-1; i>=0; i--) { if (StartPoints[i].Index == Task[0].Index) { index_last = -1; break; }
_stprintf(Tmp,_T("%7.3fMHz"),ASFrequency); devPutFreqActive(ASFrequency, (TCHAR*)airspace_copy.Name()); DoStatusMessage(_T(""), Tmp ); } } #endif // RADIO_ACTIVE if(pWnd) { WndForm * pForm = pWnd->GetParentWndForm(); if(pForm) { pForm->SetModalResult(mrOK); } } } static CallBackTableEntry_t CallBackTable[]={ ClickNotifyCallbackEntry(OnAcknowledgeClicked), ClickNotifyCallbackEntry(OnDetailsClicked), ClickNotifyCallbackEntry(OnFlyClicked), ClickNotifyCallbackEntry(OnCloseClicked), ClickNotifyCallbackEntry(OnSelectClicked), ClickNotifyCallbackEntry(OnSetFrequency), OnPaintCallbackEntry(OnPaintAirspacePicto), EndCallBackEntry() }; static void SetValues(WndForm* wf) { WndProperty* wp; WndButton *wb; TCHAR buffer[80];
namespace DlgBluetooth { WndForm *wfBth = NULL; size_t DrawListIndex = 0; size_t ItemIndex = 0; void OnClose(WndButton* pWnd) { wfBth->SetModalResult(mrOK); } void OnPair(WndButton* pWnd) { CBtHandler* pBtHandler = CBtHandler::Get(); if (pBtHandler) { CBtDevice * SelectedDevice = pBtHandler->GetDevice(ItemIndex); if (SelectedDevice && SelectedDevice->m_src == BDSRC_LOOKUP) { TCHAR szPin[20] = {0}; dlgTextEntryShowModal(szPin, 20, false); if (!pBtHandler->Pair(SelectedDevice->m_ba, SelectedDevice->GetName().c_str(), szPin)) { StartupStore(_T("Bluetooth pairing <%s> : Failed%s"), SelectedDevice->GetName().c_str(), NEWLINE); MessageBoxX(LKGetText(TEXT("_@M1835_")), TEXT("Bluetooth"), mbOk, false); } else { StartupStore(_T("Bluetooth pairing <%s> : success%s"), SelectedDevice->GetName().c_str(), NEWLINE); SelectedDevice->m_src |= BDSRC_REGNAV; } } WndListFrame* BthList = (WndListFrame*) wfBth->FindByName(TEXT("frmBthList")); if (BthList) { BthList->ResetList(); BthList->Redraw(); } } } void OnUnpair(WndButton* pWnd) { CBtHandler* pBtHandler = CBtHandler::Get(); if (pBtHandler) { CBtDevice * SelectedDevice = pBtHandler->GetDevice(ItemIndex); if (SelectedDevice && SelectedDevice->m_src != BDSRC_LOOKUP) { if (!pBtHandler->Unpair(SelectedDevice->m_ba)) { StartupStore(_T("%s[%s] : UnPairing Error%s"), SelectedDevice->GetName().c_str(), SelectedDevice->BTPortName().c_str(), NEWLINE); } else { pBtHandler->RemoveDevice(SelectedDevice->m_ba); } } WndListFrame* BthList = (WndListFrame*) wfBth->FindByName(TEXT("frmBthList")); if (BthList) { BthList->ResetList(); BthList->Redraw(); } } } void OnLookup(WndButton* pWnd) { StartHourglassCursor(); CBtHandler * pBtHandler = CBtHandler::Get(); if (pBtHandler && pBtHandler->StartHW() && pBtHandler->LookupDevices()) { WndListFrame* BthList = (WndListFrame*) wfBth->FindByName(TEXT("frmBthList")); if (BthList) { BthList->ResetList(); BthList->Redraw(); } } StopHourglassCursor(); } void OnPaintListItem(WindowControl * Sender, LKSurface& Surface) { CBtHandler* pBtHandler = CBtHandler::Get(); if (pBtHandler) { CBtDevice * bt = pBtHandler->GetDevice(DrawListIndex); if (bt) { int w1 = Surface.GetTextWidth(TEXT("PAIRED")); int w0 = Sender->GetWidth(); Surface.DrawTextClip(2 * ScreenScale, 2 * ScreenScale, bt->GetName().c_str(), w0 - w1 - ScreenScale * 5); if ((bt->m_src & (BDSRC_REGSVC | BDSRC_REGNAV | BDSRC_REGPIN))) { Surface.DrawTextClip(2 * ScreenScale + w0 - w1, 2 * ScreenScale, _T("Paired"), w1); } } } } void OnListInfo(WindowControl * Sender, WndListFrame::ListInfo_t * ListInfo) { (void) Sender; CBtHandler* pBtHandler = CBtHandler::Get(); if (pBtHandler) { ListInfo->ItemCount = pBtHandler->m_devices.size(); if (ListInfo->DrawIndex != -1) { DrawListIndex = ListInfo->DrawIndex + ListInfo->ScrollIndex; ItemIndex = ListInfo->ItemIndex + ListInfo->ScrollIndex; } } } CallBackTableEntry_t CallBackTable[] = { ClickNotifyCallbackEntry(OnClose), ClickNotifyCallbackEntry(OnPair), ClickNotifyCallbackEntry(OnUnpair), ClickNotifyCallbackEntry(OnLookup), OnPaintCallbackEntry(OnPaintListItem), OnListCallbackEntry(OnListInfo), EndCallBackEntry() }; void Show() { TCHAR filename[MAX_PATH]; const TCHAR *resName = NULL; if (!ScreenLandscape) { LocalPathS(filename, TEXT("dlgBluetooth_L.xml")); resName = TEXT("IDR_XML_BLUETOOTH_L"); } else { LocalPathS(filename, TEXT("dlgBluetooth.xml")); resName = TEXT("IDR_XML_BLUETOOTH"); } wfBth = dlgLoadFromXML(CallBackTable, filename, resName); if (wfBth) { WndListFrame* BthList = (WndListFrame*) wfBth->FindByName(TEXT("frmBthList")); if (BthList) { BthList->SetBorderKind(BORDERLEFT | BORDERTOP | BORDERRIGHT | BORDERBOTTOM); BthList->SetWidth(wfBth->GetWidth() - BthList->GetLeft() - IBLSCALE(4)); // Bug : we need ClientHeight, but Cleint Rect is Calculated by OnPaint // BthList->SetHeight(wfBth->GetHeight() - BthList->GetTop() - 2); if (BthList->ScrollbarWidth == -1) { BthList->ScrollbarWidth = (int) (SCROLLBARWIDTH_INITIAL * ScreenDScale); } WndOwnerDrawFrame* BthListEntry = (WndOwnerDrawFrame*) wfBth->FindByName(TEXT("frmBthListEntry")); if (BthListEntry) { BthListEntry->SetCanFocus(true); BthListEntry->SetWidth(BthList->GetWidth() - BthList->ScrollbarWidth - 5); } BthList->ResetList(); BthList->Redraw(); } if (wfBth->ShowModal()) { CBtHandler * pBtHandler = CBtHandler::Get(); if (pBtHandler) { pBtHandler->ClearDevices(); pBtHandler->FillDevices(); } RefreshComPortList(); } delete wfBth; wfBth = NULL; } } };
break; case DataField::daPut: case DataField::daChange: ReplayLogger::TimeScale = Sender->GetAsFloat(); break; case DataField::daInc: case DataField::daDec: case DataField::daSpecial: break; } } static CallBackTableEntry_t CallBackTable[]={ ClickNotifyCallbackEntry(OnStopClicked), ClickNotifyCallbackEntry(OnStartClicked), DataAccessCallbackEntry(OnRateData), ClickNotifyCallbackEntry(OnCloseClicked), EndCallBackEntry() }; void dlgLoggerReplayShowModal(void){ wf = dlgLoadFromXML(CallBackTable, IDR_XML_LOGGERREPLAY); WndProperty* wp; if (wf) {
VolMode = VOL; SqCnt = 0; OnUpdate(); } if (HoldOff >0) HoldOff--; else OnRemoteUpdate(); return 0; } static CallBackTableEntry_t CallBackTable[]={ ClickNotifyCallbackEntry(OnDualButton), ClickNotifyCallbackEntry(OnActiveButton), ClickNotifyCallbackEntry(OnActiveFreq), ClickNotifyCallbackEntry(OnPassiveFreq), ClickNotifyCallbackEntry(OnPassiveButton), ClickNotifyCallbackEntry(OnMuteButton), ClickNotifyCallbackEntry(OnCancelClicked), ClickNotifyCallbackEntry(OnCloseClicked), EndCallBackEntry() }; void dlgRadioSettingsShowModal(void){ SHOWTHREAD(_T("dlgRadioSettingsShowModal")); // WndProperty *wp;
pForm->SetModalResult(mrOK); } } } static void OnLookupClicked(WndButton* pWnd){ (void)pWnd; dlgAirspaceSelect(); } static CallBackTableEntry_t CallBackTable[]={ OnPaintCallbackEntry(OnAirspacePaintListItem), OnListCallbackEntry(OnAirspaceListInfo), ClickNotifyCallbackEntry(OnCloseClicked), ClickNotifyCallbackEntry(OnLookupClicked), EndCallBackEntry() }; bool dlgAirspaceShowModal(bool coloredit){ colormode = coloredit; WndForm *wf = dlgLoadFromXML(CallBackTable, ScreenLandscape ? IDR_XML_AIRSPACE_L : IDR_XML_AIRSPACE_P); if (!wf) return false; WndListFrame* wAirspaceList = (WndListFrame*)wf->FindByName(TEXT("frmAirspaceList")); LKASSERT(wAirspaceList!=NULL); wAirspaceList->SetBorderKind(BORDERLEFT);
dfe = (DataFieldEnum*)wp->GetDataField(); dfe->Set(1); wp->RefreshDisplay(); } wp = (WndProperty*)wf->FindByName(TEXT("prpRightBottom")); if (wp) { DataFieldEnum* dfe; dfe = (DataFieldEnum*)wp->GetDataField(); dfe->Set(1); wp->RefreshDisplay(); } } static CallBackTableEntry_t CallBackTable[]={ ClickNotifyCallbackEntry(OnCloseClicked), ClickNotifyCallbackEntry(OnResetClicked), EndCallBackEntry() }; void dlgOverlaysShowModal(void){ WndProperty *wp; TCHAR filename[MAX_PATH]; LocalPathS(filename, TEXT("dlgOverlays.xml")); wf = dlgLoadFromXML(CallBackTable, filename, TEXT("IDR_XML_OVERLAYS"));
RUN_MODE = RUN_EXIT; RestartToNickel = true; LKSound(_T("LK_SLIDE.WAV")); if(pWnd) { WndForm * pForm = pWnd->GetParentWndForm(); if(pForm) { pForm->SetModalResult(mrOK); } } } #endif static CallBackTableEntry_t CallBackTable[] = { OnPaintCallbackEntry(OnSplashPaint), ClickNotifyCallbackEntry(OnPILOTClicked), ClickNotifyCallbackEntry(OnDEVICEClicked), ClickNotifyCallbackEntry(OnAIRCRAFTClicked), ClickNotifyCallbackEntry(OnPROFILEClicked), ClickNotifyCallbackEntry(OnEXITClicked), ClickNotifyCallbackEntry(OnDUALPROFILEClicked), ClickNotifyCallbackEntry(OnFLYClicked), ClickNotifyCallbackEntry(OnSIMClicked), ClickNotifyCallbackEntry(OnCloseClicked), EndCallBackEntry() }; static WndForm* InitFlySim() { WndForm* pWndForm = dlgLoadFromXML(CallBackTable, ScreenLandscape ? IDR_XML_FLYSIM_L : IDR_XML_FLYSIM_P);