diff options
author | krzys-h <krzys_h@interia.pl> | 2013-12-27 22:28:25 +0100 |
---|---|---|
committer | krzys-h <krzys_h@interia.pl> | 2013-12-27 22:28:25 +0100 |
commit | 0ff7e55b3343fbca959fb11236a009fb3790b652 (patch) | |
tree | 196b9cec76ac2dea901c680af10bc306841f6b1f /src | |
parent | 1b7389367897b858781790f2ada63203b4035ada (diff) | |
download | colobot-0ff7e55b3343fbca959fb11236a009fb3790b652.tar.gz colobot-0ff7e55b3343fbca959fb11236a009fb3790b652.tar.bz2 colobot-0ff7e55b3343fbca959fb11236a009fb3790b652.zip |
Fix for #177 - save list sorting
Diffstat (limited to 'src')
-rw-r--r-- | src/common/misc.cpp | 17 | ||||
-rw-r--r-- | src/common/misc.h | 1 | ||||
-rw-r--r-- | src/ui/maindialog.cpp | 17 |
3 files changed, 28 insertions, 7 deletions
diff --git a/src/common/misc.cpp b/src/common/misc.cpp index b96abca..65689e6 100644 --- a/src/common/misc.cpp +++ b/src/common/misc.cpp @@ -230,6 +230,23 @@ void TimeToAscii(time_t time, char *buffer) #endif*/ } +// Converting time to string. + +void TimeToAsciiClean(time_t time, char *buffer) +{ + struct tm when; + int year; + + when = *localtime(&time); + year = when.tm_year+1900; + if ( year < 2000 ) year -= 1900; + else year -= 2000; + + sprintf(buffer, "%.2d%.2d%.2d%.2d%.2d", + year, when.tm_mon+1, when.tm_mday, + when.tm_hour, when.tm_min); +} + // Copy a list of numbered files into the temporary folder. bool CopyFileListToTemp(char* filename, int* list, int total) diff --git a/src/common/misc.h b/src/common/misc.h index bcebf76..3c147b1 100644 --- a/src/common/misc.h +++ b/src/common/misc.h @@ -28,6 +28,7 @@ extern char GetToUpper(char letter); extern char GetToLower(char letter); extern void TimeToAscii(time_t time, char *buffer); +extern void TimeToAsciiClean(time_t time, char *buffer); extern bool CopyFileListToTemp(char* filename, int* list, int total); extern void AddExt(char* filename, const char* ext); diff --git a/src/ui/maindialog.cpp b/src/ui/maindialog.cpp index 4726933..f3eca3a 100644 --- a/src/ui/maindialog.cpp +++ b/src/ui/maindialog.cpp @@ -53,6 +53,7 @@ #include <string.h> #include <sstream> #include <iomanip> +#include <vector> #include <boost/filesystem.hpp> #include <boost/foreach.hpp> @@ -4332,8 +4333,8 @@ void CMainDialog::IOReadName() } time(&now); - TimeToAscii(now, line); - sprintf(name, "%s %d - %s", resume, m_sel[m_index]+1, line); + TimeToAsciiClean(now, line); + sprintf(name, "%s - %s %d", line, resume, m_sel[m_index]+1); pe->SetText(name); pe->SetCursor(strlen(name), 0); pe->SetFocus(true); @@ -4349,7 +4350,7 @@ void CMainDialog::IOReadList() char line[500]; char name[100]; int i; - fs::directory_iterator end_iter; + std::vector<fs::path> v; pw = static_cast<CWindow*>(m_interface->SearchControl(EVENT_WINDOW5)); if ( pw == 0 ) return; @@ -4363,12 +4364,14 @@ void CMainDialog::IOReadList() if (fs::exists(saveDir) && fs::is_directory(saveDir)) { - for( fs::directory_iterator dir_iter(saveDir) ; dir_iter != end_iter ; ++dir_iter) + copy(fs::directory_iterator(saveDir), fs::directory_iterator(), back_inserter(v)); + std::sort(v.begin(), v.end()); + for( std::vector<fs::path>::iterator iter = v.begin(); iter != v.end(); ++iter) { - if ( fs::is_directory(dir_iter->status()) && fs::exists(dir_iter->path() / "data.sav") ) + if ( fs::is_directory(*iter) && fs::exists(*iter / "data.sav") ) { - file = fopen((dir_iter->path() / "data.sav").make_preferred().string().c_str(), "r"); + file = fopen((*iter / "data.sav").make_preferred().string().c_str(), "r"); if ( file == NULL ) continue; while ( fgets(line, 500, file) != NULL ) @@ -4392,7 +4395,7 @@ void CMainDialog::IOReadList() fclose(file); pl->SetItemName(m_saveList.size(), name); - m_saveList.push_back(dir_iter->path()); + m_saveList.push_back(*iter); } } } |