Skip to content

Commit

Permalink
enh - filter backupSet menu
Browse files Browse the repository at this point in the history
  • Loading branch information
w3irDv committed Sep 11, 2024
1 parent 5774787 commit 98540cd
Show file tree
Hide file tree
Showing 18 changed files with 431 additions and 143 deletions.
62 changes: 34 additions & 28 deletions include/BackupSetList.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,32 +9,26 @@ class BSMetadataValues {
friend class BSMetadata;
friend class BackupSetList;
public:
class Year {
public:
std::set<std::string,std::greater<std::string>> range;
std::set<std::string>::iterator iterator;
};
class Month {
public:
std::set<std::string,std::greater<std::string>> range;
std::set<std::string>::iterator iterator;
};
class SerialId {
public:
std::set<std::string,std::less<std::string>> range;
std::set<std::string>::iterator iterator;
};
class Tag {

template <class T>
class attr {
public:
std::set<std::string,std::less<std::string>> range;
std::set<std::string,T> range;
std::set<std::string>::iterator iterator;
};
Year year;
Month month;
SerialId serialId;
Tag tag;
static void Right(auto & bsMetadataValuesAttr );
static void Left(auto & bsMetadataValuesAttr );
attr<std::greater<std::string>> year;
attr<std::greater<std::string>> month;
attr<std::less<std::string>> serialId;
attr<std::less<std::string>> tag;

template <typename T>
static void Right (T & metadataAttrValues);

template <typename T>
static void Left (T & metadataAttrValues);

void resetFilter();

};

class BSMetadata {
Expand Down Expand Up @@ -64,20 +58,33 @@ class BackupSetItem {
BSMetadata bsItemMetadata;
};

struct BackupSetItemView {
std::string entryPath;
std::string serialId;
std::string tag;
};


class BackupSetList {
public:
friend class BackupSetListState;
friend class BackupSetListFilterState;
BackupSetList() {};
BackupSetList(const char *backupSetListRoot);
static std::unique_ptr<BackupSetList> currentBackupSetList;

void sort(bool sortAscending = false);
static bool getSortAscending() { return sortAscending;};
std::string at(int i);
void add(std::string backupSet);
std::string serialIdAt(int i);
std::string serialIdStretchedAt(int i);
std::string tagAt(int i);
void add(std::string entryPath,std::string serialId,std::string tag);

int getLen() { return this->entries;};
int getEnhLen() { return this->enhEntries;};

void filter();
void filter(BSMetadata filterDef);
BSMetadataValues *getBSMetadataValues() {return &bsMetadataValues; };

Expand All @@ -91,17 +98,16 @@ class BackupSetList {
static void setBackupSetSubPathToRoot() { backupSetSubPath = "/"; }
static void saveBackupSetSubPath() { savedBackupSetSubPath = backupSetSubPath; }
static void restoreBackupSetSubPath() { backupSetSubPath = savedBackupSetSubPath; }
static void Right(auto & range, std::set<std::string>::iterator & iterator );
static void Left(auto & range, std::set<std::string>::iterator & iterator );


private:
static bool sortAscending;
std::vector<std::string> backupSets;
std::vector<BackupSetItemView> backupSets;
std::vector<BackupSetItem> backupSetsEnh;
std::vector<std::string> serialIds;
std::vector<std::string> tags;
BSMetadataValues bsMetadataValues;
int entries;
int enhEntries;
std::string backupSetListRoot;
static std::string backupSetSubPath;
static std::string backupSetEntry;
Expand Down
14 changes: 12 additions & 2 deletions include/Metadata.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,14 +26,24 @@ class Metadata {
serialId(this->unknownSerialId),
tag({}) { }

Metadata(std::string path) : storage({}),
// guess date from batchBackupRoot, to infer a savemiiMeta.json for <1.6.4 batchBackups
Metadata(const std::string & path) : storage({}),
serialId(this->unknownSerialId),
tag({}) {
Date = path.substr(path.length()-17,17);
if (Date.substr(0,2) != "20")
Date="";
this->path = path.append("/savemiiMeta.json");
this->path = path + ("/savemiiMeta.json");
}

Metadata(const std::string & datetime, const std::string & storage, const std::string & serialId,const std::string & tag ) :
Date(datetime),
storage(storage),
serialId(serialId),
tag(tag) {
path = getBatchBackupPathRoot(datetime)+"/savemiiMeta.json";
}


bool read();
bool write();
Expand Down
30 changes: 30 additions & 0 deletions include/menu/BackupSetListFilterState.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
#pragma once

#include <ApplicationState.h>
#include <memory>
#include <utils/InputUtils.h>
#include <BackupSetList.h>




class BackupSetListFilterState : public ApplicationState {
public:
BackupSetListFilterState(std::unique_ptr<BackupSetList> & backupSetList) :
backupSetList(backupSetList) {};
enum eState {
STATE_BACKUPSET_FILTER,
STATE_DO_SUBSTATE,
};

void render() override;
ApplicationState::eSubState update(Input *input) override;

private:
std::unique_ptr<ApplicationState> subState{};
eState state = STATE_BACKUPSET_FILTER;

std::unique_ptr<BackupSetList> & backupSetList;
int entrycount = 4;
int cursorPos = 0;
};
4 changes: 4 additions & 0 deletions include/menu/BackupSetListState.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ class BackupSetListState : public ApplicationState {
public:
BackupSetListState();
static void resetCursorPosition();
static void resetCursorAndScroll();
enum eState {
STATE_BACKUPSET_MENU,
STATE_DO_SUBSTATE,
Expand All @@ -24,6 +25,9 @@ class BackupSetListState : public ApplicationState {
eState state = STATE_BACKUPSET_MENU;

bool sortAscending;

static int cursorPos;
static int scroll;

std::string backupSetListRoot;
};
3 changes: 2 additions & 1 deletion include/menu/WiiUTitleListState.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,8 @@ class WiiUTitleListState : public ApplicationState {
LanguageUtils::gettext("Storage+Name")};

int titleSort = 1;
int scroll = 0;
static int scroll;
static int cursorPos;
bool sortAscending = true;
int targ = 0;

Expand Down
3 changes: 2 additions & 1 deletion include/menu/vWiiTitleListState.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,8 @@ class vWiiTitleListState : public ApplicationState {
LanguageUtils::gettext("Storage+Name")};

int titleSort = 1;
int scroll = 0;
static int scroll;
static int cursorPos;
bool sortAscending = true;
int targ = 0;

Expand Down
2 changes: 2 additions & 0 deletions include/savemng.h
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,7 @@ bool promptConfirm(Style st, const std::string &question);
void promptError(const char *message, ...);
std::string getDynamicBackupPath(uint32_t highID, uint32_t lowID, uint8_t slot);
std::string getBatchBackupPath(uint32_t highID, uint32_t lowID, uint8_t slot, std::string datetime);
std::string getBatchBackupPathRoot(std::string datetime);
void getAccountsWiiU();
void getAccountsSD(Title *title, uint8_t slot);
bool hasAccountSave(Title *title, bool inSD, bool iine, uint32_t user, uint8_t slot, int version);
Expand All @@ -124,6 +125,7 @@ std::string getNowDateForFolder() __attribute__((hot));
std::string getNowDate() __attribute__((hot));
void writeMetadata(uint32_t highID,uint32_t lowID,uint8_t slot,bool isUSB) __attribute__((hot));
void writeMetadata(uint32_t highID,uint32_t lowID,uint8_t slot,bool isUSB,const std::string &batchDatetime) __attribute__((hot));
void writeBackupAllMetadata(const std::string & Date);
void backupAllSave(Title *titles, int count, const std::string &batchDatetime) __attribute__((hot));
void backupSavedata(Title *title, uint8_t slot, int8_t wiiuuser, bool common) __attribute__((hot));
void restoreSavedata(Title *title, uint8_t slot, int8_t sduser, int8_t wiiuuser, bool common) __attribute__((hot));
Expand Down
24 changes: 22 additions & 2 deletions languages/english.json
Original file line number Diff line number Diff line change
Expand Up @@ -107,11 +107,31 @@
"Failed to delete slot %u.": "Failed to delete slot %u.",
"Error setting path. Aborting.": "Error setting path. Aborting.",
"Failed to delete backupSet %s.": "Failed to delete backupSet %s.",
"\ue000: Select BackupSet \ue046: Wipe BackupSet \ue001: Back": "\ue000: Select BackupSet \ue046: Wipe BackupSet \ue001: Back",
"\ue000: Backup \ue046 Delete Slot \ue001: Back": "\ue000: Backup \ue046 Delete Slot \ue001: Back",
"\ue003 Confirm - \ue001 Cancel": "\ue003 Confirm - \ue001 Cancel",
"Wipe BackupSet - Are you sure?": "Wipe BackupSet - Are you sure?",
"Wipe BackupSet - Hm, are you REALLY sure?": "Wipe BackupSet - Hm, are you REALLY sure?",
"Initializing BackupSets metadata.": "Initializing BackupSets metadata.",
"Please wait. First write to SD may be slow.": "Initializing BackupSets metadata."
"Please wait. First write to SD may be slow.": "Initializing BackupSets metadata.",
"Filter BackupSets": "Filter BackupSets",
"Show only BackupSets satisfying all these conditions:": "Show only BackupSets satisfying all these conditions:",
"Console: %s": "Console: %s",
"Tag: %s": "Tag: %s",
"Month: %s": "Month: %s",
"Year: %s": "Year: %s",
"\ue000: Apply Filter \uE002: Reset Filters \ue001: Back": "\ue000: Apply Filter \uE002: Reset Filters \ue001: Back",
"BackupSets": "BackupSets",
"BackupSets (filter applied)": "BackupSets (filter applied)",
"\ue000: Select BS \ue046: Wipe BS \ue003: Filter List \ue001: Back": "\ue000: Select BS \ue046: Wipe BS \ue002: Filter List \ue001: Back",
"\ue000: Select BackupSet \ue003: Filter List \ue001: Back": "\ue000: Select BackupSet \ue002: Filter List \ue001: Back",
"Batch Backup": "Batch Backup",
"Backup": "Backup",
"Restore": "Restore",
"Wipe": "Wipe",
"Import Loadiine": "Import Loadiine",
"Export Loadiine": "Export Loadiine",
"Copy to Other Device": "Copy to Other Device",
"Tasks": "Tasks",
"Initializing BackupSets metadata.": "Initializing BackupSets metadata.",
"Please wait. First write to SD may be slow.": "Please wait. First write to SD may be slow."
}
Loading

0 comments on commit 98540cd

Please sign in to comment.