DDraceNetwork Documentation
Loading...
Searching...
No Matches
file_browser.h
Go to the documentation of this file.
1/* (c) Magnus Auvinen. See licence.txt in the root of the distribution for more information. */
2/* If you are missing that file, acquire a complete release at teeworlds.com. */
3#ifndef GAME_EDITOR_FILE_BROWSER_H
4#define GAME_EDITOR_FILE_BROWSER_H
5
6#include "component.h"
7
8#include <base/types.h>
9
10#include <game/client/ui.h>
12
13#include <optional>
14#include <vector>
15
17{
18public:
19 enum class EFileType
20 {
21 MAP,
22 IMAGE,
23 SOUND,
24 };
25 typedef bool (*FFileDialogOpenCallback)(const char *pFilename, int StorageType, void *pUser);
26
27 void ShowFileDialog(
28 int StorageType, EFileType FileType,
29 const char *pTitle, const char *pButtonText,
30 const char *pInitialPath, const char *pInitialFilename,
32 void OnRender(CUIRect _) override;
33 bool IsValidSaveFilename() const;
34
35 void OnEditorClose();
36 void OnDialogClose();
37
38private:
51 bool m_SaveAction = false;
55 bool m_MultipleStorages = false;
59 char m_aTitle[128] = "";
63 char m_aButtonText[64] = "";
71 void *m_pOpenCallbackUser = nullptr;
75 bool m_ShowingRoot = false;
108
109 // File list
120 std::vector<CFilelistItem> m_vCompleteFileList;
121 std::vector<const CFilelistItem *> m_vpFilteredFileList;
122 enum class ESortDirection
123 {
124 NEUTRAL,
125 ASCENDING,
127 };
130
131 // File preview
132 enum class EPreviewState
133 {
134 UNLOADED,
135 LOADED,
136 ERROR,
137 };
143
144 // UI elements
148 const char m_ButtonPlayPauseId = 0;
149 const char m_ButtonStopId = 0;
150 const char m_SeekBarId = 0;
151 const char m_ButtonOkId = 0;
152 const char m_ButtonCancelId = 0;
153 const char m_ButtonRefreshId = 0;
155 const char m_ButtonDeleteId = 0;
156 const char m_ButtonNewFolderId = 0;
157
158 bool CanPreviewFile() const;
159 void UpdateFilePreview();
161 const char *DetermineFileFontIcon(const CFilelistItem *pItem) const;
162 void UpdateFilenameInput();
163 void UpdateSelectedIndex(const char *pDisplayName);
166 void FilelistPopulate(int StorageType, bool KeepSelection);
167 static int DirectoryListingCallback(const CFsFileInfo *pInfo, int IsDir, int StorageType, void *pUser);
168 static std::optional<bool> CompareCommon(const CFilelistItem *pLhs, const CFilelistItem *pRhs);
173
186
188 {
189 public:
193 static CUi::EPopupMenuFunctionResult Render(void *pContext, CUIRect View, bool Active);
194
195 private:
196 const char m_ButtonCancelId = 0;
197 const char m_ButtonDeleteId = 0;
198 };
200
202 {
203 public:
206 static CUi::EPopupMenuFunctionResult Render(void *pContext, CUIRect View, bool Active);
207
208 private:
209 const char m_ButtonCancelId = 0;
210 const char m_ButtonOverwriteId = 0;
211 };
213};
214
215#endif
Definition component.h:13
Definition file_browser.h:111
bool m_IsLink
Definition file_browser.h:116
bool m_IsDir
Definition file_browser.h:115
time_t m_TimeModified
Definition file_browser.h:118
char m_aFilename[IO_MAX_PATH_LENGTH]
Definition file_browser.h:113
int m_StorageType
Definition file_browser.h:117
char m_aDisplayName[IO_MAX_PATH_LENGTH]
Definition file_browser.h:114
Definition file_browser.h:188
CFileBrowser * m_pFileBrowser
Definition file_browser.h:190
const char m_ButtonCancelId
Definition file_browser.h:196
bool m_IsDirectory
Definition file_browser.h:191
static CUi::EPopupMenuFunctionResult Render(void *pContext, CUIRect View, bool Active)
Definition file_browser.cpp:911
char m_aDeletePath[IO_MAX_PATH_LENGTH]
Definition file_browser.h:192
const char m_ButtonDeleteId
Definition file_browser.h:197
Definition file_browser.h:202
CFileBrowser * m_pFileBrowser
Definition file_browser.h:204
const char m_ButtonOverwriteId
Definition file_browser.h:210
char m_aOverwritePath[IO_MAX_PATH_LENGTH]
Definition file_browser.h:205
const char m_ButtonCancelId
Definition file_browser.h:209
static CUi::EPopupMenuFunctionResult Render(void *pContext, CUIRect View, bool Active)
Definition file_browser.cpp:968
Definition file_browser.h:175
const char m_ButtonCreateId
Definition file_browser.h:183
const char m_ButtonCancelId
Definition file_browser.h:182
static CUi::EPopupMenuFunctionResult Render(void *pContext, CUIRect View, bool Active)
Definition file_browser.cpp:857
CFileBrowser * m_pFileBrowser
Definition file_browser.h:177
CLineInputBuffered< IO_MAX_PATH_LENGTH > m_NewFolderNameInput
Definition file_browser.h:178
Definition file_browser.h:17
EFileType m_FileType
Definition file_browser.h:46
EPreviewState m_PreviewState
Definition file_browser.h:138
const char m_ButtonOkId
Definition file_browser.h:151
void RefreshFilteredFileList()
Definition file_browser.cpp:665
CListBox m_ListBox
Definition file_browser.h:145
bool(* FFileDialogOpenCallback)(const char *pFilename, int StorageType, void *pUser)
Definition file_browser.h:25
void * m_pOpenCallbackUser
Definition file_browser.h:71
char m_aSelectedFileDisplayName[IO_MAX_PATH_LENGTH]
Definition file_browser.h:107
static bool CompareTimeModifiedDescending(const CFilelistItem *pLhs, const CFilelistItem *pRhs)
Definition file_browser.cpp:852
bool IsValidSaveFilename() const
Definition file_browser.cpp:465
CLineInputBuffered< IO_MAX_PATH_LENGTH > m_FilterInput
Definition file_browser.h:99
const char m_ButtonNewFolderId
Definition file_browser.h:156
static bool CompareFilenameDescending(const CFilelistItem *pLhs, const CFilelistItem *pRhs)
Definition file_browser.cpp:842
char m_aTitle[128]
Definition file_browser.h:59
void OnEditorClose()
Definition file_browser.cpp:471
void OnRender(CUIRect _) override
Definition file_browser.cpp:79
int m_PreviewImageWidth
Definition file_browser.h:140
ESortDirection
Definition file_browser.h:123
static int DirectoryListingCallback(const CFsFileInfo *pInfo, int IsDir, int StorageType, void *pUser)
Definition file_browser.cpp:774
int m_StorageType
Definition file_browser.h:42
const char m_ButtonPlayPauseId
Definition file_browser.h:148
const char m_ButtonSortTimeModifiedId
Definition file_browser.h:146
char m_aCurrentFolder[IO_MAX_PATH_LENGTH]
Definition file_browser.h:83
CPopupConfirmOverwrite m_PopupConfirmOverwrite
Definition file_browser.h:212
const char * DetermineFileFontIcon(const CFilelistItem *pItem) const
Definition file_browser.cpp:584
static bool CompareTimeModifiedAscending(const CFilelistItem *pLhs, const CFilelistItem *pRhs)
Definition file_browser.cpp:847
char m_aInitialFolder[IO_MAX_PATH_LENGTH]
Definition file_browser.h:79
void OnDialogClose()
Definition file_browser.cpp:479
const char m_ButtonSortFilenameId
Definition file_browser.h:147
void SortFilteredFileList()
Definition file_browser.cpp:644
int m_SelectedFileIndex
Definition file_browser.h:103
char m_aButtonText[64]
Definition file_browser.h:63
std::vector< const CFilelistItem * > m_vpFilteredFileList
Definition file_browser.h:121
const char m_SeekBarId
Definition file_browser.h:150
const char m_ButtonStopId
Definition file_browser.h:149
const char m_ButtonDeleteId
Definition file_browser.h:155
std::vector< CFilelistItem > m_vCompleteFileList
Definition file_browser.h:120
int m_PreviewImageHeight
Definition file_browser.h:141
FFileDialogOpenCallback m_pfnOpenCallback
Definition file_browser.h:67
static bool CompareFilenameAscending(const CFilelistItem *pLhs, const CFilelistItem *pRhs)
Definition file_browser.cpp:837
static std::optional< bool > CompareCommon(const CFilelistItem *pLhs, const CFilelistItem *pRhs)
Definition file_browser.cpp:816
bool m_MultipleStorages
Definition file_browser.h:55
void ShowFileDialog(int StorageType, EFileType FileType, const char *pTitle, const char *pButtonText, const char *pInitialPath, const char *pInitialFilename, FFileDialogOpenCallback pfnOpenCallback, void *pOpenCallbackUser)
Definition file_browser.cpp:19
void UpdateFilePreview()
Definition file_browser.cpp:495
const char m_ButtonRefreshId
Definition file_browser.h:153
CPopupConfirmDelete m_PopupConfirmDelete
Definition file_browser.h:199
CLineInputBuffered< IO_MAX_PATH_LENGTH > m_FilenameInput
Definition file_browser.h:95
void UpdateSelectedIndex(const char *pDisplayName)
Definition file_browser.cpp:625
const char m_ButtonCancelId
Definition file_browser.h:152
void RenderFilePreview(CUIRect Preview)
Definition file_browser.cpp:531
ESortDirection m_SortByTimeModified
Definition file_browser.h:129
bool m_SaveAction
Definition file_browser.h:51
bool m_ShowingRoot
Definition file_browser.h:75
void UpdateFilenameInput()
Definition file_browser.cpp:611
char * m_pCurrentPath
Definition file_browser.h:91
bool CanPreviewFile() const
Definition file_browser.cpp:489
int m_PreviewSound
Definition file_browser.h:142
EFileType
Definition file_browser.h:20
CPopupNewFolder m_PopupNewFolder
Definition file_browser.h:185
char m_aCurrentLink[IO_MAX_PATH_LENGTH]
Definition file_browser.h:87
void FilelistPopulate(int StorageType, bool KeepSelection)
Definition file_browser.cpp:702
ESortDirection m_SortByFilename
Definition file_browser.h:128
IGraphics::CTextureHandle m_PreviewImage
Definition file_browser.h:139
const char m_ButtonShowDirectoryId
Definition file_browser.h:154
EPreviewState
Definition file_browser.h:133
Definition ui_listbox.h:17
Definition ui_rect.h:11
EPopupMenuFunctionResult
Definition ui.h:303
Definition graphics.h:205
Definition vmath.h:15
Definition types.h:31
Definition ui.h:286
constexpr auto IO_MAX_PATH_LENGTH
Definition types.h:49