diff options
Diffstat (limited to 'src/localbrowser')
| -rw-r--r-- | src/localbrowser/LocalBrowserController.cpp | 30 | ||||
| -rw-r--r-- | src/localbrowser/LocalBrowserController.h | 2 | ||||
| -rw-r--r-- | src/localbrowser/LocalBrowserModel.cpp | 5 | ||||
| -rw-r--r-- | src/localbrowser/LocalBrowserModel.h | 1 | ||||
| -rw-r--r-- | src/localbrowser/LocalBrowserView.cpp | 15 | ||||
| -rw-r--r-- | src/localbrowser/LocalBrowserView.h | 1 |
6 files changed, 51 insertions, 3 deletions
diff --git a/src/localbrowser/LocalBrowserController.cpp b/src/localbrowser/LocalBrowserController.cpp index 9565759..0f6ec76 100644 --- a/src/localbrowser/LocalBrowserController.cpp +++ b/src/localbrowser/LocalBrowserController.cpp @@ -53,10 +53,10 @@ void LocalBrowserController::RemoveSelected() }; std::stringstream desc; - desc << "Are you sure you want to delete " << browserModel->GetSelected().size() << " saves"; + desc << "Are you sure you want to delete " << browserModel->GetSelected().size() << " stamp"; if(browserModel->GetSelected().size()>1) desc << "s"; - new ConfirmPrompt("Delete saves", desc.str(), new RemoveSelectedConfirmation(this)); + new ConfirmPrompt("Delete stamps", desc.str(), new RemoveSelectedConfirmation(this)); } void LocalBrowserController::removeSelectedC() @@ -72,7 +72,7 @@ void LocalBrowserController::removeSelectedC() for(int i = 0; i < saves.size(); i++) { std::stringstream saveName; - saveName << "Deleting save [" << saves[i] << "] ..."; + saveName << "Deleting stamp [" << saves[i] << "] ..."; notifyStatus(saveName.str()); Client::Ref().DeleteStamp(saves[i]); notifyProgress((float(i+1)/float(saves.size())*100)); @@ -89,6 +89,30 @@ void LocalBrowserController::removeSelectedC() new TaskWindow("Removing saves", new RemoveSavesTask(this, selected)); } +void LocalBrowserController::RescanStamps() +{ + class RescanConfirmation: public ConfirmDialogueCallback { + public: + LocalBrowserController * c; + RescanConfirmation(LocalBrowserController * c_) { c = c_; } + virtual void ConfirmCallback(ConfirmPrompt::DialogueResult result) { + if (result == ConfirmPrompt::ResultOkay) + c->rescanStampsC(); + } + virtual ~RescanConfirmation() { } + }; + + std::stringstream desc; + desc << "Rescanning the stamps folder can find stamps added to the stamps folder or recover stamps when the stamps.def file has been lost or damaged. However, be warned that this may mess up the current sorting order"; + new ConfirmPrompt("Rescan", desc.str(), new RescanConfirmation(this)); +} + +void LocalBrowserController::rescanStampsC() +{ + browserModel->RescanStamps(); + browserModel->UpdateSavesList(browserModel->GetPageNum()); +} + void LocalBrowserController::RefreshSavesList() { ClearSelection(); diff --git a/src/localbrowser/LocalBrowserController.h b/src/localbrowser/LocalBrowserController.h index 1f81ab6..efa9c93 100644 --- a/src/localbrowser/LocalBrowserController.h +++ b/src/localbrowser/LocalBrowserController.h @@ -27,6 +27,8 @@ public: void removeSelectedC(); void ClearSelection(); void Selected(std::string stampID, bool selected); + void RescanStamps(); + void rescanStampsC(); void RefreshSavesList(); void OpenSave(SaveFile * stamp); void SetStamp(); diff --git a/src/localbrowser/LocalBrowserModel.cpp b/src/localbrowser/LocalBrowserModel.cpp index a38ca1f..9e869cc 100644 --- a/src/localbrowser/LocalBrowserModel.cpp +++ b/src/localbrowser/LocalBrowserModel.cpp @@ -87,6 +87,11 @@ void LocalBrowserModel::UpdateSavesList(int pageNumber) notifySavesListChanged(); } +void LocalBrowserModel::RescanStamps() +{ + Client::Ref().RescanStamps(); +} + int LocalBrowserModel::GetPageCount() { return std::max(1, (int)(std::ceil(float(Client::Ref().GetStampsCount())/20.0f))); diff --git a/src/localbrowser/LocalBrowserModel.h b/src/localbrowser/LocalBrowserModel.h index e6b6905..c2a6f9b 100644 --- a/src/localbrowser/LocalBrowserModel.h +++ b/src/localbrowser/LocalBrowserModel.h @@ -32,6 +32,7 @@ public: void AddObserver(LocalBrowserView * observer); std::vector<SaveFile *> GetSavesList(); void UpdateSavesList(int pageNumber); + void RescanStamps(); SaveFile * GetSave(); void SetSave(SaveFile * newStamp); std::vector<std::string> GetSelected() { return selected; } diff --git a/src/localbrowser/LocalBrowserView.cpp b/src/localbrowser/LocalBrowserView.cpp index cbb98bf..a6efc4c 100644 --- a/src/localbrowser/LocalBrowserView.cpp +++ b/src/localbrowser/LocalBrowserView.cpp @@ -16,6 +16,7 @@ #include "interface/Keys.h" #include "dialogues/ErrorMessage.h" +#include "dialogues/ConfirmPrompt.h" #include "LocalBrowserController.h" #include "LocalBrowserModel.h" #include "LocalBrowserModelException.h" @@ -25,10 +26,12 @@ LocalBrowserView::LocalBrowserView(): { nextButton = new ui::Button(ui::Point(XRES+BARSIZE-52, YRES+MENUSIZE-18), ui::Point(50, 16), "Next \x95"); previousButton = new ui::Button(ui::Point(1, YRES+MENUSIZE-18), ui::Point(50, 16), "\x96 Prev"); + undeleteButton = new ui::Button(ui::Point(XRES+BARSIZE-122, YRES+MENUSIZE-18), ui::Point(60, 16), "Rescan"); infoLabel = new ui::Label(ui::Point(51, YRES+MENUSIZE-18), ui::Point(XRES+BARSIZE-102, 16), "Loading..."); AddComponent(infoLabel); AddComponent(nextButton); AddComponent(previousButton); + AddComponent(undeleteButton); class NextPageAction : public ui::ButtonAction { @@ -58,6 +61,18 @@ LocalBrowserView::LocalBrowserView(): previousButton->Appearance.HorizontalAlign = ui::Appearance::AlignLeft; previousButton->Appearance.VerticalAlign = ui::Appearance::AlignMiddle; + class UndeleteAction : public ui::ButtonAction + { + LocalBrowserView * v; + public: + UndeleteAction(LocalBrowserView * _v) { v = _v; } + void ActionCallback(ui::Button * sender) + { + v->c->RescanStamps(); + } + }; + undeleteButton->SetActionCallback(new UndeleteAction(this)); + class RemoveSelectedAction : public ui::ButtonAction { LocalBrowserView * v; diff --git a/src/localbrowser/LocalBrowserView.h b/src/localbrowser/LocalBrowserView.h index 71c20ee..7a8c813 100644 --- a/src/localbrowser/LocalBrowserView.h +++ b/src/localbrowser/LocalBrowserView.h @@ -23,6 +23,7 @@ class LocalBrowserModel; class LocalBrowserView: public ui::Window { LocalBrowserController * c; std::vector<ui::SaveButton*> stampButtons; + ui::Button * undeleteButton; ui::Button * previousButton; ui::Button * nextButton; ui::Label * infoLabel; |
