From 019fad8bdbda5599e5f19bc50cd8ebac6be899e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?John=20Ankarstr=C3=B6m?= Date: Sat, 30 Jul 2022 19:13:22 +0200 Subject: Simplify EpisodeListView::UpdateItem, remove m_lviFocus. --- c/episodelistview.cpp | 44 ++++++++++++++++++-------------------------- c/episodelistview.h | 3 +-- c/main.cpp | 4 ++-- 3 files changed, 21 insertions(+), 30 deletions(-) diff --git a/c/episodelistview.cpp b/c/episodelistview.cpp index 132941c..0c8c60d 100644 --- a/c/episodelistview.cpp +++ b/c/episodelistview.cpp @@ -51,9 +51,7 @@ LRESULT EpisodeListView::HandleNotify(const LPARAM lParam) if ((pNmLv->uChanged & LVIF_STATE) && (pNmLv->uNewState & LVIS_FOCUSED)) { extern DataListView* const g_pDlv; - m_lviFocus.iItem = pNmLv->iItem; - m_lviFocus.lParam = pNmLv->lParam; - UpdateItem(&m_lviFocus); + UpdateItem(pNmLv->iItem, pNmLv->lParam); g_pDlv->ShowEpisode(pNmLv->lParam); } break; @@ -100,23 +98,19 @@ LRESULT EpisodeListView::HandleNotify(const LPARAM lParam) } case NM_DBLCLK: /* Open clicked episode. */ { - if (!Pl("local_episodes","open_episode_locally", - m_lviFocus.lParam)) - Pl("local_episodes","open_episode_online", - m_lviFocus.lParam); + LVITEM lvi = {LVIF_PARAM, -1}; + if (FindNextItem(&lvi, LVNI_FOCUSED)) + Pl("local_episodes","open_episode_locally",lvi.lParam) + || Pl("local_episodes","open_episode_online",lvi.lParam); break; } case NM_RETURN: /* Open all selected episodes. */ { LVITEM lvi = {LVIF_PARAM, -1}; - while (FindNextItem(&lvi, LVNI_SELECTED)) { - if (!ListView_GetItem(hWnd, &lvi)) goto b; - if (!Pl("local_episodes","open_episode_locally", - lvi.lParam)) - Pl("local_episodes","open_episode_online", - lvi.lParam); - } - b: break; + while (FindNextItem(&lvi, LVNI_SELECTED)) + Pl("local_episodes","open_episode_locally",lvi.lParam) + || Pl("local_episodes","open_episode_online",lvi.lParam); + break; } case NM_RCLICK: { @@ -176,9 +170,7 @@ s: ListView_SetItemState(hWnd, -1, LVIF_STATE, LVIS_SELECTED); SetTop(iItem > 5? iItem-5: 0); ListView_SetItemState(hWnd, iItem, LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED); - m_lviFocus.iItem = iItem; - m_lviFocus.lParam = iEpisode; - UpdateItem(&m_lviFocus); + UpdateItem(iItem, iEpisode); g_pDlv->ShowEpisode(iEpisode); } @@ -353,7 +345,7 @@ void EpisodeListView::Update() lviEpisode.pszText = wszEpisode; lviEpisode.lParam = iEp; ListView_InsertItem(hWnd, &lviEpisode); - UpdateItem(&lviEpisode); + UpdateItem(lviEpisode.iItem, lviEpisode.lParam); } } @@ -410,24 +402,24 @@ void EpisodeListView::Update() } /* Update episode name and rating. */ -void EpisodeListView::UpdateItem(const LVITEM* const pLvi) +void EpisodeListView::UpdateItem(const int iItem, const LPARAM lParam) { wstring_owner wsoName; - if (!Pl("episode_data","episode_title",pLvi->lParam,&wsoName)) { + if (!Pl("episode_data","episode_title",lParam,&wsoName)) { if (!Pl("episode_data","update_episode_data")) goto r; - if (!Pl("episode_data","episode_title",pLvi->lParam,&wsoName)) goto r; + if (!Pl("episode_data","episode_title",lParam,&wsoName)) goto r; } - ListView_SetItemText(hWnd, pLvi->iItem, ELVSITITLE, wsoName.p); + ListView_SetItemText(hWnd, iItem, ELVSITITLE, wsoName.p); r: int iRating; - if (!Pl("episode_data","episode_rating",pLvi->lParam,&iRating)) { - ListView_SetItemText(hWnd, pLvi->iItem, ELVSIRATING, (wchar_t*)L""); + if (!Pl("episode_data","episode_rating",lParam,&iRating)) { + ListView_SetItemText(hWnd, iItem, ELVSIRATING, (wchar_t*)L""); return; } wchar_t wszRating[3]; swprintf_s(wszRating, sizeof(wszRating)/sizeof(*wszRating), L"%d", iRating); - ListView_SetItemText(hWnd, pLvi->iItem, ELVSIRATING, wszRating); + ListView_SetItemText(hWnd, iItem, ELVSIRATING, wszRating); } LRESULT CALLBACK EpisodeListView::WndProc(const HWND hWnd, const UINT uMsg, diff --git a/c/episodelistview.h b/c/episodelistview.h index 8747f6b..8a96096 100644 --- a/c/episodelistview.h +++ b/c/episodelistview.h @@ -24,11 +24,10 @@ struct EpisodeListView : public ListView void ShowFocus(); void Sort(); void Update(); - void UpdateItem(const LVITEM* pLvi); + void UpdateItem(int iItem, LPARAM lParam); LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) override; private: int m_iSort; - LVITEM m_lviFocus; static int CALLBACK SortProc(LPARAM lParam1, LPARAM lParam2, LPARAM lExtra); }; diff --git a/c/main.cpp b/c/main.cpp index 984eb6b..144d151 100644 --- a/c/main.cpp +++ b/c/main.cpp @@ -420,7 +420,7 @@ void WndProcContextMenu(const HWND, unsigned short wCommand) /* Process rate commands. */ if (ID_SUBGROUP(wCommand) == IDG_CTX_RATE) { Pl("episode_data","rate_episode",lvi.lParam,ID_RATING(wCommand)); - g_pElv->UpdateItem(&lvi); + g_pElv->UpdateItem(lvi.iItem, lvi.lParam); continue; } @@ -442,7 +442,7 @@ void WndProcContextMenu(const HWND, unsigned short wCommand) break; case IDM_LOOKUP: Pl("episode_data","retract_episode",lvi.lParam); - g_pElv->UpdateItem(&lvi); + g_pElv->UpdateItem(lvi.iItem, lvi.lParam); g_pDlv->ShowEpisode(lvi.lParam); break; case IDM_WIKI: -- cgit v1.2.3