diff options
| author | Tannin <sherb@gmx.net> | 2015-12-18 20:28:03 +0100 |
|---|---|---|
| committer | Tannin <sherb@gmx.net> | 2015-12-18 20:28:03 +0100 |
| commit | 4908affbfceee55d09426b7cab94d155d36d0d90 (patch) | |
| tree | 8eb32202458a57e0169b7a5f5161d8256c39d6a5 /src | |
| parent | 8dc51895e38eec26763ea8b964c23fbe2a348ffe (diff) | |
fixed display of savegame widget in case parsing fails
Diffstat (limited to 'src')
| -rw-r--r-- | src/savegame.h | 8 | ||||
| -rw-r--r-- | src/savegamegamebryo.cpp | 22 | ||||
| -rw-r--r-- | src/savegamegamebyro.h | 2 |
3 files changed, 24 insertions, 8 deletions
diff --git a/src/savegame.h b/src/savegame.h index d1bf4691..e7220fcc 100644 --- a/src/savegame.h +++ b/src/savegame.h @@ -106,10 +106,10 @@ public: protected:
QString m_FileName;
- QString m_PCName;
- unsigned short m_PCLevel;
- QString m_PCLocation;
- unsigned long m_SaveNumber;
+ QString m_PCName { "N/A" };
+ unsigned short m_PCLevel { 0 };
+ QString m_PCLocation { "N/A" };
+ unsigned long m_SaveNumber { 0 };
SYSTEMTIME m_CreationTime;
QImage m_Screenshot;
diff --git a/src/savegamegamebryo.cpp b/src/savegamegamebryo.cpp index 7aa6cdfc..3fc96bef 100644 --- a/src/savegamegamebryo.cpp +++ b/src/savegamegamebryo.cpp @@ -32,13 +32,29 @@ SaveGameGamebryo::SaveGameGamebryo(QObject *parent, const QString &fileName, IPl : SaveGame(parent, fileName, game)
, m_Plugins()
{
- SaveGameInfo const *info = game->feature<SaveGameInfo>();
+ // ensure creation time is set to a valid, preferrably even a reasonable value
+ memset(&m_CreationTime, 0, sizeof(SYSTEMTIME));
+ HANDLE fileHandle = CreateFileW(fileName.toStdWString().c_str(),
+ GENERIC_READ,
+ FILE_SHARE_READ | FILE_SHARE_WRITE,
+ nullptr,
+ OPEN_EXISTING,
+ FILE_ATTRIBUTE_NORMAL,
+ nullptr);
+ if (fileHandle != INVALID_HANDLE_VALUE) {
+ FILETIME creationTime;
+ if (GetFileTime(fileHandle, &creationTime, nullptr, nullptr)) {
+ FileTimeToSystemTime(&creationTime, &m_CreationTime);
+ }
+ }
+
+ const SaveGameInfo *info = game->feature<SaveGameInfo>();
if (info != nullptr) {
- ISaveGame const *save = info->getSaveGameInfo(fileName);
+ const ISaveGame *save = info->getSaveGameInfo(fileName);
m_Save = save;
//Kludgery
- GamebryoSaveGame const *s = dynamic_cast<GamebryoSaveGame const *>(save);
+ const GamebryoSaveGame *s = dynamic_cast<const GamebryoSaveGame *>(save);
m_PCName = s->getPCName();
m_PCLevel = s->getPCLevel();
m_PCLocation = s->getPCLocation();
diff --git a/src/savegamegamebyro.h b/src/savegamegamebyro.h index b7a5ba12..5ac62848 100644 --- a/src/savegamegamebyro.h +++ b/src/savegamegamebyro.h @@ -70,7 +70,7 @@ private: QStringList m_Plugins;
//Note: This isn't owned by us so safe to copy
- MOBase::ISaveGame const *m_Save;
+ const MOBase::ISaveGame *m_Save;
};
|
