From 5588e1ec8caff39e2a21ce6d9d7c13c5f4d603f1 Mon Sep 17 00:00:00 2001 From: oy Date: Sun, 5 Sep 2010 17:53:31 +0200 Subject: fixed selected index when deleting a demo and added a popup to confirm the deletion --- src/game/client/components/menus_demo.cpp | 36 ++++++++++++++++++++----------- 1 file changed, 24 insertions(+), 12 deletions(-) (limited to 'src/game/client/components/menus_demo.cpp') diff --git a/src/game/client/components/menus_demo.cpp b/src/game/client/components/menus_demo.cpp index 5321b087..859dedc4 100644 --- a/src/game/client/components/menus_demo.cpp +++ b/src/game/client/components/menus_demo.cpp @@ -450,6 +450,25 @@ void CMenus::RenderDemoList(CUIRect MainView) if(m_lDemos.size() > 0) s_SelectedItem = 0; } + + bool IsDir = false; + if(s_SelectedItem >= 0 && s_SelectedItem < m_lDemos.size()) + { + if(str_comp(m_lDemos[s_SelectedItem].m_aName, "..") == 0 || fs_is_dir(m_lDemos[s_SelectedItem].m_aFilename)) + IsDir = true; + } + + // delete demo + if(m_DemolistDelEntry) + { + if(s_SelectedItem >= 0 && s_SelectedItem < m_lDemos.size() && !IsDir) + { + Storage()->RemoveFile(m_lDemos[s_SelectedItem].m_aFilename); + DemolistPopulate(); + s_SelectedItem = s_SelectedItem-1 < 0 ? m_lDemos.size() > 0 ? 0 : -1 : s_SelectedItem-1; + } + m_DemolistDelEntry = false; + } // render background RenderTools()->DrawUIRect(&MainView, ms_ColorTabbarActive, CUI::CORNER_ALL, 10.0f); @@ -479,13 +498,6 @@ void CMenus::RenderDemoList(CUIRect MainView) ButtonBar.VSplitLeft(10.0f, &DeleteRect, &ButtonBar); ButtonBar.VSplitLeft(120.0f, &DeleteRect, &ButtonBar); - bool IsDir = false; - if(s_SelectedItem >= 0 && s_SelectedItem < m_lDemos.size()) - { - if(str_comp(m_lDemos[s_SelectedItem].m_aName, "..") == 0 || fs_is_dir(m_lDemos[s_SelectedItem].m_aFilename)) - IsDir = true; - } - static int s_RefreshButton = 0; if(DoButton_Menu(&s_RefreshButton, Localize("Refresh"), 0, &RefreshRect)) { @@ -526,13 +538,13 @@ void CMenus::RenderDemoList(CUIRect MainView) } } - static int s_DeleteButton = 0; - if(DoButton_Menu(&s_DeleteButton, Localize("Delete"), 0, &DeleteRect) || m_DeletePressed) + if(!IsDir) { - if(s_SelectedItem >= 0 && s_SelectedItem < m_lDemos.size() && !IsDir) + static int s_DeleteButton = 0; + if(DoButton_Menu(&s_DeleteButton, Localize("Delete"), 0, &DeleteRect) || m_DeletePressed) { - Storage()->RemoveFile(m_lDemos[s_SelectedItem].m_aFilename); - DemolistPopulate(); + if(s_SelectedItem >= 0 && s_SelectedItem < m_lDemos.size()) + m_Popup = POPUP_DELETE_DEMO; } } } -- cgit 1.4.1