Skip to content

Commit

Permalink
Merge pull request #10230 from unknownbrackets/savedata-new
Browse files Browse the repository at this point in the history
Savedata: Show icon for new saves more often
  • Loading branch information
hrydgard authored Dec 6, 2017
2 parents e11f67e + d2be5be commit 9a732fe
Show file tree
Hide file tree
Showing 4 changed files with 72 additions and 60 deletions.
116 changes: 64 additions & 52 deletions Core/Dialog/PSPSaveDialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -459,59 +459,71 @@ void PSPSaveDialog::DisplaySaveDataInfo1()
}
}

void PSPSaveDialog::DisplaySaveDataInfo2()
{
void PSPSaveDialog::DisplaySaveDataInfo2(bool showNewData) {
std::lock_guard<std::mutex> guard(paramLock);
if (param.GetFileInfo(currentSelectedSave).size == 0) {

tm modif_time;
const char *save_title;
u32 data_size;

if (showNewData || param.GetFileInfo(currentSelectedSave).size == 0) {
time_t t;
time(&t);
localtime_r(&t, &modif_time);
save_title = param.GetPspParam()->sfoParam.savedataTitle;
// TODO: Account for icon, etc., etc.
data_size = param.GetPspParam()->dataSize;
} else {
char txt[1024];
char date[256];
char am_pm[] = "AM";
char hour_time[10] ;
int hour = param.GetFileInfo(currentSelectedSave).modif_time.tm_hour;
int min = param.GetFileInfo(currentSelectedSave).modif_time.tm_min;
switch (g_Config.iTimeFormat) {
case 1:
if (hour > 12) {
strcpy(am_pm, "PM");
hour -= 12;
}
snprintf(hour_time,10,"%02d:%02d %s", hour, min, am_pm);
break;
case 2:
snprintf(hour_time,10,"%02d:%02d", hour, min);
break;
default:
if (hour > 12) {
strcpy(am_pm, "PM");
hour -= 12;
}
snprintf(hour_time,10,"%02d:%02d %s", hour, min, am_pm);
}
modif_time = param.GetFileInfo(currentSelectedSave).modif_time;
save_title = param.GetFileInfo(currentSelectedSave).saveTitle;
data_size = param.GetFileInfo(currentSelectedSave).size;
}

const char *saveTitle = param.GetFileInfo(currentSelectedSave).saveTitle;
int day = param.GetFileInfo(currentSelectedSave).modif_time.tm_mday;
int month = param.GetFileInfo(currentSelectedSave).modif_time.tm_mon + 1;
int year = param.GetFileInfo(currentSelectedSave).modif_time.tm_year + 1900;
s64 sizeK = param.GetFileInfo(currentSelectedSave).size / 1024;
switch (g_Config.iDateFormat) {
case 1:
snprintf(date, 256, "%d/%02d/%02d", year, month, day);
break;
case 2:
snprintf(date, 256, "%02d/%02d/%d", month, day, year);
break;
case 3:
snprintf(date, 256, "%02d/%02d/%d", day, month, year);
break;
default:
snprintf(date, 256, "%d/%02d/%02d", year, month, day);
char date[256];
char am_pm[] = "AM";
char hour_time[10] ;
int hour = modif_time.tm_hour;
int min = modif_time.tm_min;
switch (g_Config.iTimeFormat) {
case 1:
if (hour > 12) {
strcpy(am_pm, "PM");
hour -= 12;
}
snprintf(hour_time, 10, "%02d:%02d %s", hour, min, am_pm);
break;
case 2:
snprintf(hour_time, 10, "%02d:%02d", hour, min);
break;
default:
if (hour > 12) {
strcpy(am_pm, "PM");
hour -= 12;
}
snprintf(txt, 1024, "%s\n%s %s\n%lld KB", saveTitle, date, hour_time, sizeK);
std::string saveinfoTxt = txt;
PPGeDrawText(saveinfoTxt.c_str(), 9, 202, PPGE_ALIGN_LEFT, 0.5f, CalcFadedColor(0x80000000));
PPGeDrawText(saveinfoTxt.c_str(), 8, 200, PPGE_ALIGN_LEFT, 0.5f, CalcFadedColor(0xFFFFFFFF));
snprintf(hour_time, 10, "%02d:%02d %s", hour, min, am_pm);
}

int day = modif_time.tm_mday;
int month = modif_time.tm_mon + 1;
int year = modif_time.tm_year + 1900;
s64 sizeK = data_size / 1024;
switch (g_Config.iDateFormat) {
case 1:
snprintf(date, 256, "%d/%02d/%02d", year, month, day);
break;
case 2:
snprintf(date, 256, "%02d/%02d/%d", month, day, year);
break;
case 3:
snprintf(date, 256, "%02d/%02d/%d", day, month, year);
break;
default:
snprintf(date, 256, "%d/%02d/%02d", year, month, day);
}

std::string saveinfoTxt = StringFromFormat("%.128s\n%s %s\n%lld KB", save_title, date, hour_time, sizeK);
PPGeDrawText(saveinfoTxt.c_str(), 9, 202, PPGE_ALIGN_LEFT, 0.5f, CalcFadedColor(0x80000000));
PPGeDrawText(saveinfoTxt.c_str(), 8, 200, PPGE_ALIGN_LEFT, 0.5f, CalcFadedColor(0xFFFFFFFF));
}

void PSPSaveDialog::DisplayMessage(std::string text, bool hasYesNo)
Expand Down Expand Up @@ -637,7 +649,7 @@ int PSPSaveDialog::Update(int animSpeed)
StartDraw();

DisplaySaveIcon();
DisplaySaveDataInfo2();
DisplaySaveDataInfo2(true);

DisplayMessage(di->T("Confirm Save", "Do you want to save this data?"), true);

Expand Down Expand Up @@ -687,7 +699,7 @@ int PSPSaveDialog::Update(int animSpeed)
StartDraw();

DisplaySaveIcon();
DisplaySaveDataInfo2();
DisplaySaveDataInfo2(true);

DisplayMessage(di->T("Saving","Saving\nPlease Wait..."));

Expand All @@ -700,7 +712,7 @@ int PSPSaveDialog::Update(int animSpeed)
StartDraw();

DisplaySaveIcon();
DisplaySaveDataInfo2();
DisplaySaveDataInfo2(true);

DisplayMessage(di->T("SavingFailed", "Unable to save data."));

Expand All @@ -727,7 +739,7 @@ int PSPSaveDialog::Update(int animSpeed)
StartDraw();

DisplaySaveIcon();
DisplaySaveDataInfo2();
DisplaySaveDataInfo2(true);

DisplayMessage(di->T("Save completed"));

Expand Down
2 changes: 1 addition & 1 deletion Core/Dialog/PSPSaveDialog.h
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ class PSPSaveDialog: public PSPDialog {
void DisplaySaveList(bool canMove = true);
void DisplaySaveIcon();
void DisplaySaveDataInfo1();
void DisplaySaveDataInfo2();
void DisplaySaveDataInfo2(bool showNewData = false);
void DisplayMessage(std::string text, bool hasYesNo = false);
const std::string GetSelectedSaveDirName() const;

Expand Down
12 changes: 6 additions & 6 deletions Core/Dialog/SavedataParam.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1456,8 +1456,7 @@ void SavedataParam::SetFileInfo(int idx, PSPFileInfo &info, std::string saveName
saveDataList[idx].idx = idx;
}

void SavedataParam::ClearFileInfo(SaveFileInfo &saveInfo, std::string saveName)
{
void SavedataParam::ClearFileInfo(SaveFileInfo &saveInfo, const std::string &saveName) {
saveInfo.size = 0;
saveInfo.saveName = saveName;
saveInfo.idx = 0;
Expand All @@ -1468,16 +1467,17 @@ void SavedataParam::ClearFileInfo(SaveFileInfo &saveInfo, std::string saveName)
saveInfo.texture = NULL;
}

if (GetPspParam()->newData.IsValid() && GetPspParam()->newData->buf.IsValid())
{
if (GetPspParam()->newData.IsValid() && GetPspParam()->newData->buf.IsValid()) {
// We have a png to show
if (!noSaveIcon)
{
if (!noSaveIcon) {
noSaveIcon = new SaveFileInfo();
PspUtilitySavedataFileData *newData = GetPspParam()->newData;
noSaveIcon->texture = new PPGeImage(newData->buf.ptr, (SceSize)newData->size);
}
saveInfo.texture = noSaveIcon->texture;
} else if ((u32)GetPspParam()->mode == SCE_UTILITY_SAVEDATA_TYPE_SAVE && GetPspParam()->icon0FileData.buf.IsValid()) {
const PspUtilitySavedataFileData &icon0FileData = GetPspParam()->icon0FileData;
saveInfo.texture = new PPGeImage(icon0FileData.buf.ptr, (SceSize)icon0FileData.size);
}
}

Expand Down
2 changes: 1 addition & 1 deletion Core/Dialog/SavedataParam.h
Original file line number Diff line number Diff line change
Expand Up @@ -352,7 +352,7 @@ class SavedataParam
void Clear();
void SetFileInfo(int idx, PSPFileInfo &info, std::string saveName);
void SetFileInfo(SaveFileInfo &saveInfo, PSPFileInfo &info, std::string saveName);
void ClearFileInfo(SaveFileInfo &saveInfo, std::string saveName);
void ClearFileInfo(SaveFileInfo &saveInfo, const std::string &saveName);

bool LoadSaveData(SceUtilitySavedataParam *param, const std::string &saveDirName, const std::string& dirPath, bool secureMode);
void LoadCryptedSave(SceUtilitySavedataParam *param, u8 *data, u8 *saveData, int &saveSize, int prevCryptMode, bool &saveDone);
Expand Down

0 comments on commit 9a732fe

Please sign in to comment.