void SearchDialog::AddAnimeToList(int anime_id) { auto anime_item = AnimeDatabase.FindItem(anime_id); if (anime_item) { int i = list_.GetItemCount(); list_.InsertItem(i, anime_item->IsInList() ? 1 : 0, StatusToIcon(anime_item->GetAiringStatus()), 0, nullptr, anime_item->GetTitle().c_str(), static_cast<LPARAM>(anime_item->GetId())); list_.SetItem(i, 1, anime::TranslateType(anime_item->GetType()).c_str()); list_.SetItem(i, 2, anime::TranslateNumber(anime_item->GetEpisodeCount()).c_str()); list_.SetItem(i, 3, anime::TranslateScore(anime_item->GetScore()).c_str()); list_.SetItem(i, 4, anime::TranslateDateToSeasonString(anime_item->GetDateStart()).c_str()); } }
void TorrentDialog::RefreshList() { if (!IsWindow()) return; Feed* feed = Aggregator.Get(kFeedCategoryLink); if (!feed) return; // Disable drawing list_.SetRedraw(FALSE); // Clear list list_.DeleteAllItems(); // Add items for (auto it = feed->items.begin(); it != feed->items.end(); ++it) { // Skip item if it was discarded and hidden if (it->state == kFeedItemDiscardedHidden) continue; std::wstring title, number, video; int group = kTorrentCategoryAnime; int icon = StatusToIcon(anime::kUnknownStatus); if (it->category == L"Batch" || InStr(it->title, L"Vol.") > -1) { group = kTorrentCategoryBatch; } if (!IsNumeric(it->episode_data.number)) { if (it->episode_data.format.empty() || anime::IsEpisodeRange(it->episode_data.number)) { group = kTorrentCategoryBatch; } else { group = kTorrentCategoryOther; } } auto anime_item = AnimeDatabase.FindItem(it->episode_data.anime_id); if (anime_item) { icon = StatusToIcon(anime_item->GetAiringStatus()); title = anime_item->GetTitle(); } else if (!it->episode_data.title.empty()) { title = it->episode_data.title; } else { group = kTorrentCategoryOther; title = it->title; } std::vector<int> numbers; anime::SplitEpisodeNumbers(it->episode_data.number, numbers); number = anime::JoinEpisodeNumbers(numbers); if (!it->episode_data.version.empty()) { number += L"v" + it->episode_data.version; } video = it->episode_data.video_type; if (!it->episode_data.resolution.empty()) { if (!video.empty()) video += L" "; video += it->episode_data.resolution; } int index = list_.InsertItem(it - feed->items.begin(), group, icon, 0, NULL, title.c_str(), reinterpret_cast<LPARAM>(&(*it))); list_.SetItem(index, 1, number.c_str()); list_.SetItem(index, 2, it->episode_data.group.c_str()); list_.SetItem(index, 3, it->episode_data.file_size.c_str()); list_.SetItem(index, 4, video.c_str()); list_.SetItem(index, 5, it->description.c_str()); list_.SetItem(index, 6, it->episode_data.file.c_str()); list_.SetCheckState(index, it->state == kFeedItemSelected); } // Redraw list_.SetRedraw(TRUE); list_.RedrawWindow(nullptr, nullptr, RDW_ERASE | RDW_FRAME | RDW_INVALIDATE | RDW_ALLCHILDREN); }
void TorrentDialog::RefreshList() { if (!IsWindow()) return; Feed* feed = Aggregator.Get(FEED_CATEGORY_LINK); if (!feed) return; // Hide list to avoid visual defects and gain performance list_.Hide(); list_.DeleteAllItems(); // Add items for (auto it = feed->items.begin(); it != feed->items.end(); ++it) { // Skip item if it was discarded and hidden if (it->state == FEEDITEM_DISCARDED_HIDDEN) continue; wstring title, number, video; int group = TORRENT_ANIME, icon = StatusToIcon(0); if (it->category == L"Batch" || InStr(it->title, L"Vol.") > -1) { group = TORRENT_BATCH; } if (!IsNumeric(it->episode_data.number)) { if (it->episode_data.format.empty() || IsEpisodeRange(it->episode_data.number)) { group = TORRENT_BATCH; } else { group = TORRENT_OTHER; } } auto anime_item = AnimeDatabase.FindItem(it->episode_data.anime_id); if (anime_item) { icon = StatusToIcon(anime_item->GetAiringStatus()); title = anime_item->GetTitle(); } else if (!it->episode_data.title.empty()) { title = it->episode_data.title; } else { group = TORRENT_OTHER; title = it->title; } vector<int> numbers; SplitEpisodeNumbers(it->episode_data.number, numbers); number = JoinEpisodeNumbers(numbers); if (!it->episode_data.version.empty()) { number += L"v" + it->episode_data.version; } video = it->episode_data.video_type; if (!it->episode_data.resolution.empty()) { if (!video.empty()) video += L" "; video += it->episode_data.resolution; } int index = list_.InsertItem(it - feed->items.begin(), group, icon, 0, NULL, title.c_str(), reinterpret_cast<LPARAM>(&(*it))); list_.SetItem(index, 1, number.c_str()); list_.SetItem(index, 2, it->episode_data.group.c_str()); list_.SetItem(index, 3, it->episode_data.file_size.c_str()); list_.SetItem(index, 4, video.c_str()); list_.SetItem(index, 5, it->description.c_str()); list_.SetItem(index, 6, it->episode_data.file.c_str()); list_.SetCheckState(index, it->state == FEEDITEM_SELECTED); } // Show again list_.Show(); // Set title wstring title = L"Torrents"; if (!feed->title.empty()) { title = feed->title; } else if (!feed->link.empty()) { win32::Url url(feed->link); title += L" (" + url.Host + L")"; } if (!feed->description.empty()) { title += L" - " + feed->description; } SetText(title.c_str()); }