SaveID Message after saving a save to the server (like the old tpt did). TODO: Put a similar button in the save preview instead of the two we have now.

This commit is contained in:
jacob1 2013-06-09 00:01:53 -04:00
parent 16cb95de64
commit e13fb83ee0
3 changed files with 140 additions and 0 deletions

View File

@ -0,0 +1,124 @@
#include "gui/Style.h"
#include "SaveIDMessage.h"
#include "gui/interface/Button.h"
#include "gui/interface/Label.h"
#include "PowderToy.h"
class CopyTextButton : public ui::Button
{
ui::Label *copyTextLabel;
public:
CopyTextButton(ui::Point position, ui::Point size, std::string buttonText, ui::Label *copyTextLabel_):
Button(position, size, buttonText)
{
copyTextLabel = copyTextLabel_;
}
virtual void OnMouseClick(int x, int y, unsigned int button)
{
ui::Button::OnMouseClick(x, y, button);
ClipboardPush((char*)ButtonText.c_str());
int textWidth = Graphics::textwidth("Copied!");
copyTextLabel->SetText("Copied!");
copyTextLabel->Position = ui::Point(Position.X+(Size.X-textWidth)/2-4, copyTextLabel->Position.Y);
copyTextLabel->Size = ui::Point(textWidth+20, 16);
Appearance.TextInactive = ui::Colour(180, 230, 180);
Appearance.TextHover = ui::Colour(180, 230, 180);
Appearance.BorderInactive = ui::Colour(180, 230, 180);
Appearance.BorderHover = ui::Colour(180, 230, 180);
//Appearance.TextActive = ui::Colour(230, 255, 230);
//Appearance.BorderActive = ui::Colour(230, 255, 230);
}
virtual void OnMouseEnter(int x, int y)
{
ui::Button::OnMouseEnter(x, y);
copyTextLabel->SetTextColour(ui::Colour(230, 230, 230));
}
virtual void OnMouseLeave(int x, int y)
{
ui::Button::OnMouseLeave(x, y);
copyTextLabel->SetTextColour(ui::Colour(150, 150, 150));
}
};
SaveIDMessage::SaveIDMessage(int id):
ui::Window(ui::Point((XRES-244)/2, (YRES-90)/2), ui::Point(244, 90))
{
int textWidth = Graphics::textwidth("Save ID");
ui::Label * titleLabel = new ui::Label(ui::Point(4, 5), ui::Point(textWidth+20, 16), "Save ID");
titleLabel->SetTextColour(style::Colour::InformationTitle);
titleLabel->Appearance.HorizontalAlign = ui::Appearance::AlignLeft;
titleLabel->Appearance.VerticalAlign = ui::Appearance::AlignMiddle;
AddComponent(titleLabel);
textWidth = Graphics::textwidth("Saved Successfully!");
ui::Label * messageLabel = new ui::Label(ui::Point(4, 24), ui::Point(textWidth+20, 16), "Saved Successfully!");
messageLabel->Appearance.HorizontalAlign = ui::Appearance::AlignLeft;
messageLabel->Appearance.VerticalAlign = ui::Appearance::AlignTop;
AddComponent(messageLabel);
textWidth = Graphics::textwidth("Click the box below to copy the save ID");
ui::Label * copyTextLabel = new ui::Label(ui::Point((Size.X-textWidth-20)/2, 35), ui::Point(textWidth+20, 16), "Click the box below to copy the save id");
copyTextLabel->SetTextColour(ui::Colour(150, 150, 150));
copyTextLabel->Appearance.HorizontalAlign = ui::Appearance::AlignLeft;
copyTextLabel->Appearance.VerticalAlign = ui::Appearance::AlignMiddle;
AddComponent(copyTextLabel);
std::stringstream saveID;
saveID << id;
textWidth = Graphics::textwidth(saveID.str().c_str());
CopyTextButton * copyTextButton = new CopyTextButton(ui::Point((Size.X-textWidth-10)/2, 50), ui::Point(textWidth+8, 18), saveID.str(), copyTextLabel);
copyTextButton->Appearance.HorizontalAlign = ui::Appearance::AlignLeft;
copyTextButton->Appearance.VerticalAlign = ui::Appearance::AlignMiddle;
copyTextButton->Appearance.TextInactive = ui::Colour(150, 150, 150);
copyTextButton->Appearance.TextActive = ui::Colour(230, 255, 230);
copyTextButton->Appearance.BorderActive = ui::Colour(230, 255, 230);
copyTextButton->Appearance.BackgroundActive = style::Colour::InactiveBackground;
AddComponent(copyTextButton);
class DismissAction: public ui::ButtonAction
{
SaveIDMessage * message;
public:
DismissAction(SaveIDMessage * message_) { message = message_; }
void ActionCallback(ui::Button * sender)
{
ui::Engine::Ref().CloseWindow();
message->SelfDestruct();
}
};
ui::Button * okayButton = new ui::Button(ui::Point(0, Size.Y-16), ui::Point(Size.X, 16), "OK");
okayButton->Appearance.HorizontalAlign = ui::Appearance::AlignLeft;
okayButton->Appearance.VerticalAlign = ui::Appearance::AlignMiddle;
okayButton->SetActionCallback(new DismissAction(this));
AddComponent(okayButton);
SetCancelButton(okayButton);
ui::Engine::Ref().ShowWindow(this);
}
void SaveIDMessage::OnDraw()
{
Graphics * g = ui::Engine::Ref().g;
g->clearrect(Position.X-2, Position.Y-2, Size.X+3, Size.Y+3);
g->drawrect(Position.X, Position.Y, Size.X, Size.Y, 200, 200, 200, 255);
}
void SaveIDMessage::OnTryExit(ExitMethod method)
{
ui::Engine::Ref().CloseWindow();
SelfDestruct();
}
SaveIDMessage::~SaveIDMessage()
{
}

View File

@ -0,0 +1,14 @@
#ifndef SAVEIDMESSAGE_H
#define SAVEIDMESSAGE_H
#include "gui/interface/Window.h"
class SaveIDMessage: public ui::Window {
public:
SaveIDMessage(int id);
virtual void OnDraw();
virtual void OnTryExit(ExitMethod method);
virtual ~SaveIDMessage();
};
#endif /* ERRORMESSAGE_H_ */

View File

@ -5,6 +5,7 @@
#include "gui/interface/Checkbox.h"
#include "client/requestbroker/RequestBroker.h"
#include "gui/dialogues/ErrorMessage.h"
#include "gui/dialogues/SaveIDMessage.h"
#include "gui/dialogues/ConfirmPrompt.h"
#include "gui/dialogues/InformationMessage.h"
#include "client/Client.h"
@ -255,6 +256,7 @@ void ServerSaveActivity::saveUpload()
}
else if(callback)
{
new SaveIDMessage(save.GetID());
callback->SaveUploaded(save);
}
}