void ManagedFileListWidget::UpdateButtons() { #ifdef HAVE_DOWNLOAD_MANAGER if (Net::DownloadManager::IsAvailable()) { const unsigned current = GetList().GetCursorIndex(); download_button->SetEnabled(!items.empty() && CanDownload(repository, items[current].name)); cancel_button->SetEnabled(!items.empty() && items[current].downloading); } #endif }
bool dlgTaskPointType(OrderedTask &task, const unsigned index) { point_types.clear(); task.GetFactory().GetValidTypes(index) .CopyTo(std::back_inserter(point_types)); if (point_types.empty()) { assert(1); return false; } if (point_types.size() == 1) return SetPointType(task, index, point_types[0]); const auto &point = task.GetPoint(index); const auto current_type = task.GetFactory().GetType(point); unsigned initial_index = 0; const auto b = point_types.begin(), e = point_types.end(); auto i = std::find(b, e, current_type); if (i != e) initial_index = std::distance(b, i); MutateTaskPointRenderer item_renderer(current_type); int result = ListPicker(_("Task Point Type"), point_types.size(), initial_index, item_renderer.CalculateLayout(UIGlobals::GetDialogLook()), item_renderer, false, nullptr, TPTypeItemHelp); return result >= 0 && SetPointType(task, index, point_types[result]); }
bool dlgTaskPointType(OrderedTask** task, const unsigned index) { ordered_task = *task; active_index = index; point = &ordered_task->GetPoint(active_index); point_types.clear(); ordered_task->GetFactory().GetValidTypes(index) .CopyTo(std::back_inserter(point_types)); if (point_types.empty()) { assert(1); return false; } if (point_types.size() == 1) return SetPointType(point_types[0]); unsigned initial_index = 0; const auto b = point_types.begin(), e = point_types.end(); auto i = std::find(b, e, get_point_type()); if (i != e) initial_index = std::distance(b, i); FunctionListItemRenderer item_renderer(OnPointPaintListItem); int result = ListPicker(_("Task Point Type"), point_types.size(), initial_index, Layout::Scale(18), item_renderer, false, nullptr, TPTypeItemHelp); return result >= 0 && SetPointType(point_types[result]); }
void ManagedFileListWidget::Download() { #ifdef HAVE_DOWNLOAD_MANAGER assert(Net::DownloadManager::IsAvailable()); if (items.empty()) return; const unsigned current = GetList().GetCursorIndex(); assert(current < items.size()); const FileItem &item = items[current]; const AvailableFile *remote_file_p = FindRemoteFile(repository, item.name); if (remote_file_p == NULL) return; const AvailableFile &remote_file = *remote_file_p; ACPToWideConverter base(remote_file.GetName()); if (!base.IsValid()) return; Net::DownloadManager::Enqueue(remote_file.uri.c_str(), base); #endif }
void ManagedFileListWidget::Cancel() { #ifdef HAVE_DOWNLOAD_MANAGER assert(Net::DownloadManager::IsAvailable()); if (items.empty()) return; const unsigned current = GetList().GetCursorIndex(); assert(current < items.size()); const FileItem &item = items[current]; Net::DownloadManager::Cancel(item.name); #endif }
bool KRT2Device::DataReceived(const void *_data, size_t length, struct NMEAInfo &info) { assert(length > 0); const char *data = static_cast<const char *>(_data); const char *end = data + length; bool result = false; unsigned expected_size = 0; do { if (!input_buffer.empty()) { input_buffer.append(*data); if (!expected_size) expected_size = FrameSize(input_buffer[1]); if (input_buffer.size() == expected_size) { // frame complete result |= ParseFrame(info); input_buffer.clear(); } else if (input_buffer.full()) { // too much data (will never happen when buffer >= max(expected_size)) input_buffer.clear(); } } else if (*data == SYNC) { // reply to SYNC from radio port.Write(SYNC_ACK); } else if (*data == STX) { // found start of new frame input_buffer.append(*data); expected_size = 0; } else if (*data == ACK) { // previous command accepted } else if (*data == NAK) { // previous command rejected } } while (++data != end); return result; }
void NOAAListWidget::UpdateList() { stations.clear(); for (auto i = noaa_store->begin(), end = noaa_store->end(); i != end; ++i) { NOAAListItem item; item.code = i->GetCodeT(); item.iterator = i; stations.push_back(item); } std::sort(stations.begin(), stations.end()); ListControl &list = GetList(); list.SetLength(stations.size()); list.Invalidate(); const bool empty = stations.empty(), full = stations.full(); add_button->SetEnabled(!full); update_button->SetEnabled(!empty); remove_button->SetEnabled(!empty); details_button->SetEnabled(!empty); }
bool IsEmpty() const { return list.empty(); }
/** * Search for the last traffic in the ordered list. */ const FlarmTraffic *LastTraffic() const { return list.empty() ? NULL : list.end() - 1; }
/** * Search for the first traffic in the ordered list. */ const FlarmTraffic *FirstTraffic() const { return list.empty() ? NULL : list.begin(); }
inline void NOAAListWidget::DetailsClicked() { if (!stations.empty()) OpenDetails(GetList().GetCursorIndex()); }