void dlgWeatherShowModal() { WndForm *wf = LoadDialog(nullptr, UIGlobals::GetMainWindow(), _T("IDR_XML_WEATHER")); if (wf == NULL) return; WndProperty* wp; wp = (WndProperty*)wf->FindByName(_T("prpTime")); assert(wp != nullptr); DataFieldEnum *dfe = (DataFieldEnum *)wp->GetDataField(); dfe->addEnumText(_("Now")); for (unsigned i = 1; i < RasterWeather::MAX_WEATHER_TIMES; i++) { if (RASP.isWeatherAvailable(i)) { TCHAR timetext[10]; _stprintf(timetext, _T("%04d"), RASP.IndexToTime(i)); dfe->addEnumText(timetext, i); } } dfe->Set(RASP.GetTime()); wp->RefreshDisplay(); wp = (WndProperty *)wf->FindByName(_T("prpDisplayItem")); assert(wp != nullptr); dfe = (DataFieldEnum *)wp->GetDataField(); dfe->EnableItemHelp(true); dfe->addEnumText(_("Terrain")); for (int i = 1; i <= 15; i++) { const TCHAR *label = RASP.ItemLabel(i); if (label != NULL) dfe->AddChoice(i, label, nullptr, RASP.ItemHelp(i)); } dfe->Set(RASP.GetParameter()); wp->RefreshDisplay(); wf->ShowModal(); wp = (WndProperty *)wf->FindByName(_T("prpTime")); assert(wp != nullptr); dfe = (DataFieldEnum *)wp->GetDataField(); RASP.SetTime(dfe->GetValue()); wp = (WndProperty *)wf->FindByName(_T("prpDisplayItem")); assert(wp != nullptr); dfe = (DataFieldEnum *)wp->GetDataField(); RASP.SetParameter(dfe->GetValue()); delete wf; }
inline void RASPSettingsPanel::OnTimeModified(const DataFieldEnum &df) { const int value = df.GetValue(); time = value >= 0 ? BrokenTime::FromMinuteOfDay(value) : BrokenTime::Invalid(); }
/** * @return true if the value has changed */ static bool FinishPortField(DeviceConfig &config, const DataFieldEnum &df) { unsigned value = df.GetValue(); /* decode the port type from the upper 16 bits of the id; we don't need the rest, because that's just some serial we don't care about */ const DeviceConfig::PortType new_type = (DeviceConfig::PortType)(value >> 16); switch (new_type) { case DeviceConfig::PortType::DISABLED: case DeviceConfig::PortType::AUTO: case DeviceConfig::PortType::INTERNAL: case DeviceConfig::PortType::DROIDSOAR_V2: case DeviceConfig::PortType::NUNCHUCK: case DeviceConfig::PortType::I2CPRESSURESENSOR: case DeviceConfig::PortType::IOIOVOLTAGE: case DeviceConfig::PortType::TCP_CLIENT: case DeviceConfig::PortType::TCP_LISTENER: case DeviceConfig::PortType::UDP_LISTENER: case DeviceConfig::PortType::RFCOMM_SERVER: if (new_type == config.port_type) return false; config.port_type = new_type; return true; case DeviceConfig::PortType::SERIAL: case DeviceConfig::PortType::PTY: /* Serial Port */ if (new_type == config.port_type && StringIsEqual(config.path, df.GetAsString())) return false; config.port_type = new_type; config.path = df.GetAsString(); return true; case DeviceConfig::PortType::RFCOMM: /* Bluetooth */ if (new_type == config.port_type && StringIsEqual(config.bluetooth_mac, df.GetAsString())) return false; config.port_type = new_type; config.bluetooth_mac = df.GetAsString(); return true; case DeviceConfig::PortType::IOIOUART: /* IOIO UART */ if (new_type == config.port_type && config.ioio_uart_id == (unsigned)ParseUnsigned(df.GetAsString())) return false; config.port_type = new_type; config.ioio_uart_id = (unsigned)ParseUnsigned(df.GetAsString()); return true; } gcc_unreachable(); assert(false); return false; }