summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorjacob1 <jfu614@gmail.com>2012-12-18 17:20:52 (GMT)
committer jacob1 <jfu614@gmail.com>2012-12-18 17:20:52 (GMT)
commitc06afff0a572c34ea4da8b87670e21c67b9c06b7 (patch)
tree95a251e1c2127a33f528a2194f451bfa5bfd30f1 /src
parent672c5ee9135fab6329f789c902f278329869b561 (diff)
downloadpowder-c06afff0a572c34ea4da8b87670e21c67b9c06b7.zip
powder-c06afff0a572c34ea4da8b87670e21c67b9c06b7.tar.gz
selecting a stamp moves it to the front of the list again (unless you hold ctrl)
attempted to do MVC right?
Diffstat (limited to 'src')
-rw-r--r--src/client/Client.cpp14
-rw-r--r--src/client/Client.h1
-rw-r--r--src/game/GameController.cpp2
-rw-r--r--src/localbrowser/LocalBrowserController.cpp10
-rw-r--r--src/localbrowser/LocalBrowserController.h3
-rw-r--r--src/localbrowser/LocalBrowserModel.cpp13
-rw-r--r--src/localbrowser/LocalBrowserModel.h3
-rw-r--r--src/localbrowser/LocalBrowserView.cpp6
8 files changed, 49 insertions, 3 deletions
diff --git a/src/client/Client.cpp b/src/client/Client.cpp
index 0f9de28..4c7ac43 100644
--- a/src/client/Client.cpp
+++ b/src/client/Client.cpp
@@ -909,6 +909,20 @@ RequestStatus Client::UploadSave(SaveInfo & save)
return RequestFailure;
}
+void Client::MoveStampToFront(std::string stampID)
+{
+ for (std::list<std::string>::iterator iterator = stampIDs.begin(), end = stampIDs.end(); iterator != end; ++iterator)
+ {
+ if((*iterator) == stampID)
+ {
+ stampIDs.erase(iterator);
+ break;
+ }
+ }
+ stampIDs.push_front(stampID);
+ updateStamps();
+}
+
SaveFile * Client::GetStamp(std::string stampID)
{
std::string stampFile = std::string(STAMPS_DIR PATH_SEP + stampID + ".stm");
diff --git a/src/client/Client.h b/src/client/Client.h
index bd33273..0b40012 100644
--- a/src/client/Client.h
+++ b/src/client/Client.h
@@ -121,6 +121,7 @@ public:
void RescanStamps();
int GetStampsCount();
SaveFile * GetFirstStamp();
+ void MoveStampToFront(std::string stampID);
RequestStatus AddComment(int saveID, std::string comment);
diff --git a/src/game/GameController.cpp b/src/game/GameController.cpp
index 07d2e63..f1e0541 100644
--- a/src/game/GameController.cpp
+++ b/src/game/GameController.cpp
@@ -118,6 +118,8 @@ public:
if(cc->localBrowser->GetSave())
{
cc->gameModel->SetStamp(cc->localBrowser->GetSave()->GetGameSave());
+ if (cc->localBrowser->GetMoveToFront())
+ Client::Ref().MoveStampToFront(cc->localBrowser->GetSave()->GetName());
cc->LoadStamp();
}
}
diff --git a/src/localbrowser/LocalBrowserController.cpp b/src/localbrowser/LocalBrowserController.cpp
index e932e72..4719bf1 100644
--- a/src/localbrowser/LocalBrowserController.cpp
+++ b/src/localbrowser/LocalBrowserController.cpp
@@ -152,6 +152,16 @@ void LocalBrowserController::Selected(std::string saveName, bool selected)
browserModel->DeselectSave(saveName);
}
+bool LocalBrowserController::GetMoveToFront()
+{
+ return browserModel->GetMoveToFront();
+}
+
+void LocalBrowserController::SetMoveToFront(bool move)
+{
+ browserModel->SetMoveToFront(move);
+}
+
void LocalBrowserController::Exit()
{
if(ui::Engine::Ref().GetWindow() == browserView)
diff --git a/src/localbrowser/LocalBrowserController.h b/src/localbrowser/LocalBrowserController.h
index efa9c93..236ac07 100644
--- a/src/localbrowser/LocalBrowserController.h
+++ b/src/localbrowser/LocalBrowserController.h
@@ -31,7 +31,8 @@ public:
void rescanStampsC();
void RefreshSavesList();
void OpenSave(SaveFile * stamp);
- void SetStamp();
+ bool GetMoveToFront();
+ void SetMoveToFront(bool move);
void NextPage();
void PrevPage();
void Update();
diff --git a/src/localbrowser/LocalBrowserModel.cpp b/src/localbrowser/LocalBrowserModel.cpp
index 9e869cc..42f1a65 100644
--- a/src/localbrowser/LocalBrowserModel.cpp
+++ b/src/localbrowser/LocalBrowserModel.cpp
@@ -13,7 +13,8 @@
LocalBrowserModel::LocalBrowserModel():
stamp(NULL),
- currentPage(1)
+ currentPage(1),
+ stampToFront(1)
{
// TODO Auto-generated constructor stub
//stampIDs = Client::Ref().GetStamps();
@@ -61,6 +62,16 @@ void LocalBrowserModel::SetSave(SaveFile * newStamp)
stamp = new SaveFile(*newStamp);
}
+bool LocalBrowserModel::GetMoveToFront()
+{
+ return stampToFront;
+}
+
+void LocalBrowserModel::SetMoveToFront(bool move)
+{
+ stampToFront = move;
+}
+
void LocalBrowserModel::UpdateSavesList(int pageNumber)
{
std::vector<SaveFile*> tempSavesList = savesList;
diff --git a/src/localbrowser/LocalBrowserModel.h b/src/localbrowser/LocalBrowserModel.h
index c2a6f9b..af88509 100644
--- a/src/localbrowser/LocalBrowserModel.h
+++ b/src/localbrowser/LocalBrowserModel.h
@@ -22,6 +22,7 @@ class LocalBrowserModel {
std::vector<SaveFile*> savesList;
std::vector<LocalBrowserView*> observers;
int currentPage;
+ bool stampToFront;
void notifySavesListChanged();
void notifyPageChanged();
void notifySelectedChanged();
@@ -35,6 +36,8 @@ public:
void RescanStamps();
SaveFile * GetSave();
void SetSave(SaveFile * newStamp);
+ bool GetMoveToFront();
+ void SetMoveToFront(bool move);
std::vector<std::string> GetSelected() { return selected; }
void ClearSelected() { selected.clear(); notifySelectedChanged(); }
void SelectSave(std::string stampID);
diff --git a/src/localbrowser/LocalBrowserView.cpp b/src/localbrowser/LocalBrowserView.cpp
index a6efc4c..aa75925 100644
--- a/src/localbrowser/LocalBrowserView.cpp
+++ b/src/localbrowser/LocalBrowserView.cpp
@@ -210,8 +210,12 @@ void LocalBrowserView::OnMouseWheel(int x, int y, int d)
}
void LocalBrowserView::OnKeyPress(int key, Uint16 character, bool shift, bool ctrl, bool alt)
{
- if(key==KEY_ESCAPE)
+ if(key == KEY_ESCAPE)
c->Exit();
+ if (key == KEY_CTRL)
+ c->SetMoveToFront(false);
+ else
+ c->SetMoveToFront(true);
}
LocalBrowserView::~LocalBrowserView() {