mirror of
https://github.com/coderkei/akmenu-next.git
synced 2025-06-19 01:15:32 -04:00
136 lines
3.0 KiB
C++
136 lines
3.0 KiB
C++
/*
|
|
mainlist.h
|
|
Copyright (C) 2007 Acekard, www.acekard.com
|
|
Copyright (C) 2007-2009 somebody
|
|
Copyright (C) 2009 yellow wood goblin
|
|
|
|
This program is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <nds.h>
|
|
#include "dsrom.h"
|
|
#include "keymessage.h"
|
|
#include "listview.h"
|
|
#include "sigslot.h"
|
|
#include "touchmessage.h"
|
|
#include "zoomingicon.h"
|
|
|
|
#define SD_ROOT_0 "fat:"
|
|
#define SD_ROOT SD_ROOT_0 "/"
|
|
|
|
// 显示游戏列表,文件列表等等
|
|
class cMainList : public akui::cListView {
|
|
public:
|
|
enum VIEW_MODE { VM_LIST = 0, VM_ICON, VM_INTERNAL };
|
|
|
|
enum // COLUMN_LIST
|
|
{
|
|
ICON_COLUMN = 0,
|
|
SHOWNAME_COLUMN = 1,
|
|
INTERNALNAME_COLUMN = 2,
|
|
REALNAME_COLUMN = 3,
|
|
SAVETYPE_COLUMN = 4,
|
|
FILESIZE_COLUMN = 5
|
|
};
|
|
|
|
public:
|
|
cMainList(s32 x, s32 y, u32 w, u32 h, cWindow* parent, const std::string& text);
|
|
|
|
~cMainList();
|
|
|
|
public:
|
|
int init();
|
|
|
|
bool enterDir(const std::string& dirName);
|
|
|
|
void backParentDir();
|
|
|
|
void refresh();
|
|
|
|
std::string getCurrentDir();
|
|
|
|
bool getRomInfo(u32 rowIndex, DSRomInfo& info) const;
|
|
|
|
void setRomInfo(u32 rowIndex, const DSRomInfo& info);
|
|
|
|
void setViewMode(VIEW_MODE mode);
|
|
|
|
std::string getSelectedFullPath();
|
|
|
|
std::string getSelectedShowName();
|
|
|
|
VIEW_MODE getViewMode() { return _viewMode; }
|
|
|
|
void arrangeIcons();
|
|
|
|
akui::Signal1<u32> selectedRowHeadClicked;
|
|
|
|
akui::Signal0 directoryChanged;
|
|
|
|
akui::Signal1<bool&> animateIcons;
|
|
|
|
public:
|
|
bool IsFavorites(void);
|
|
|
|
void SwitchShowAllFiles(void);
|
|
|
|
const std::vector<std::string>* Saves(void);
|
|
|
|
protected:
|
|
void draw();
|
|
|
|
void drawIcons(); // 直接画家算法画 icons
|
|
|
|
enum { POSITION = 0, CONTENT = 1 };
|
|
|
|
void updateActiveIcon(bool updateContent); // 更新活动图标的坐标等等
|
|
|
|
void updateInternalNames(void);
|
|
|
|
protected:
|
|
void onSelectedRowClicked(u32 index);
|
|
|
|
void onSelectChanged(u32 index);
|
|
|
|
void onScrolled(u32 index);
|
|
|
|
protected:
|
|
VIEW_MODE _viewMode;
|
|
|
|
std::string _currentDir;
|
|
|
|
std::vector<std::string> _extnameFilter;
|
|
|
|
std::vector<DSRomInfo> _romInfoList;
|
|
|
|
cZoomingIcon _activeIcon;
|
|
|
|
float _activeIconScale;
|
|
|
|
bool _showAllFiles;
|
|
|
|
std::vector<std::string> _saves;
|
|
|
|
protected:
|
|
u32 _topCount;
|
|
u32 _topuSD;
|
|
u32 _topSlot2;
|
|
u32 _topFavorites;
|
|
|
|
public:
|
|
u32 Slot2(void) { return _topSlot2; }
|
|
};
|