diff options
| author | Choupom <andycootlapin@hotmail.fr> | 2010-09-03 20:05:22 +0200 |
|---|---|---|
| committer | oy <Tom_Adams@web.de> | 2010-09-05 17:40:51 +0200 |
| commit | fcfaa8389f968bc89fbd4afbfc70ea7c3815c7bb (patch) | |
| tree | 1633fe299e51715b94a07bc14637399ccd356dae | |
| parent | 2800832e12684b5961bbef5291922d11e23b032a (diff) | |
| download | zcatch-fcfaa8389f968bc89fbd4afbfc70ea7c3815c7bb.tar.gz zcatch-fcfaa8389f968bc89fbd4afbfc70ea7c3815c7bb.zip | |
added Remove button in demos browser (#66)
| -rw-r--r-- | src/engine/shared/storage.cpp | 13 | ||||
| -rw-r--r-- | src/engine/storage.h | 1 | ||||
| -rw-r--r-- | src/game/client/components/menus.cpp | 14 | ||||
| -rw-r--r-- | src/game/client/components/menus.h | 1 | ||||
| -rw-r--r-- | src/game/client/components/menus_demo.cpp | 19 |
5 files changed, 41 insertions, 7 deletions
diff --git a/src/engine/shared/storage.cpp b/src/engine/shared/storage.cpp index e8b0f8bb..74f7cd3f 100644 --- a/src/engine/shared/storage.cpp +++ b/src/engine/shared/storage.cpp @@ -1,4 +1,5 @@ // copyright (c) 2007 magnus auvinen, see licence.txt for more info +#include <stdio.h> //remove() #include <base/system.h> #include <engine/storage.h> #include "engine.h" @@ -193,6 +194,18 @@ public: pBuffer[0] = 0; return 0; } + + virtual bool RemoveFile(const char *pFilename) + { + char aBuffer[1024]; + str_format(aBuffer, sizeof(aBuffer), "%s/%s", m_aApplicationSavePath, pFilename); + bool Fail = remove(aBuffer); + + if(Fail) + Fail = remove(pFilename); + + return !Fail; + } static IStorage *Create(const char *pApplicationName, int NumArgs, const char **ppArguments) { diff --git a/src/engine/storage.h b/src/engine/storage.h index 4c80446e..c79f16a8 100644 --- a/src/engine/storage.h +++ b/src/engine/storage.h @@ -17,6 +17,7 @@ public: virtual void ListDirectory(int Types, const char *pPath, FS_LISTDIR_CALLBACK pfnCallback, void *pUser) = 0; virtual IOHANDLE OpenFile(const char *pFilename, int Flags, char *pBuffer = 0, int BufferSize = 0) = 0; + virtual bool RemoveFile(const char *pFilename) = 0; }; extern IStorage *CreateStorage(const char *pApplicationName, int NumArgs, const char **ppArguments); diff --git a/src/game/client/components/menus.cpp b/src/game/client/components/menus.cpp index 42f68978..f1250914 100644 --- a/src/game/client/components/menus.cpp +++ b/src/game/client/components/menus.cpp @@ -91,6 +91,7 @@ CMenus::CMenus() m_EscapePressed = false; m_EnterPressed = false; + m_DeletePressed = false; m_NumInputEvents = 0; m_LastInput = time_get(); @@ -1029,9 +1030,14 @@ bool CMenus::OnInput(IInput::CEvent e) if(IsActive()) { - // special for popups - if(e.m_Flags&IInput::FLAG_PRESS && e.m_Key == KEY_RETURN) - m_EnterPressed = true; + if(e.m_Flags&IInput::FLAG_PRESS) + { + // special for popups + if(e.m_Key == KEY_RETURN) + m_EnterPressed = true; + else if(e.m_Key == KEY_DELETE) + m_DeletePressed = true; + } if(m_NumInputEvents < MAX_INPUTEVENTS) m_aInputEvents[m_NumInputEvents++] = e; @@ -1116,6 +1122,7 @@ void CMenus::OnRender() { m_EscapePressed = false; m_EnterPressed = false; + m_DeletePressed = false; m_NumInputEvents = 0; return; } @@ -1183,6 +1190,7 @@ void CMenus::OnRender() m_EscapePressed = false; m_EnterPressed = false; + m_DeletePressed = false; m_NumInputEvents = 0; } diff --git a/src/game/client/components/menus.h b/src/game/client/components/menus.h index de711a1e..ec2ff264 100644 --- a/src/game/client/components/menus.h +++ b/src/game/client/components/menus.h @@ -146,6 +146,7 @@ class CMenus : public CComponent // bool m_EscapePressed; bool m_EnterPressed; + bool m_DeletePressed; // for call vote int m_CallvoteSelectedOption; diff --git a/src/game/client/components/menus_demo.cpp b/src/game/client/components/menus_demo.cpp index ae4873c1..5321b087 100644 --- a/src/game/client/components/menus_demo.cpp +++ b/src/game/client/components/menus_demo.cpp @@ -4,6 +4,7 @@ #include <engine/demo.h> #include <engine/keys.h> #include <engine/graphics.h> +#include <engine/storage.h> #include <game/client/render.h> #include <game/client/gameclient.h> @@ -472,10 +473,11 @@ void CMenus::RenderDemoList(CUIRect MainView) bool Activated = false; s_SelectedItem = UiDoListboxEnd(&s_ScrollValue, &Activated); - CUIRect RefreshRect, PlayRect; - ButtonBar.VSplitRight(250.0f, &ButtonBar, &RefreshRect); - RefreshRect.VSplitRight(130.0f, &RefreshRect, &PlayRect); - PlayRect.VSplitRight(120.0f, 0x0, &PlayRect); + CUIRect RefreshRect, PlayRect, DeleteRect; + ButtonBar.VSplitRight(130.0f, &ButtonBar, &PlayRect); + ButtonBar.VSplitLeft(130.0f, &RefreshRect, &ButtonBar); + ButtonBar.VSplitLeft(10.0f, &DeleteRect, &ButtonBar); + ButtonBar.VSplitLeft(120.0f, &DeleteRect, &ButtonBar); bool IsDir = false; if(s_SelectedItem >= 0 && s_SelectedItem < m_lDemos.size()) @@ -524,6 +526,15 @@ void CMenus::RenderDemoList(CUIRect MainView) } } + static int s_DeleteButton = 0; + if(DoButton_Menu(&s_DeleteButton, Localize("Delete"), 0, &DeleteRect) || m_DeletePressed) + { + if(s_SelectedItem >= 0 && s_SelectedItem < m_lDemos.size() && !IsDir) + { + Storage()->RemoveFile(m_lDemos[s_SelectedItem].m_aFilename); + DemolistPopulate(); + } + } } void CMenus::DemoSetParentDirectory() |