21 setInterceptsMouseClicks(
true,
false);
26 void mouseEnter(
const MouseEvent& e)
override {
32 void mouseExit(
const MouseEvent& e)
override {
38 void mouseDown(
const MouseEvent& e)
override {
40 url.launchInDefaultBrowser();
48class AuthInitThread :
public Thread {
53 virtual ~AuthInitThread() { }
72 virtual ~Listener() =
default;
75 virtual void workOffline() = 0;
80 setInterceptsMouseClicks(
true,
false);
85 void mouseEnter(
const MouseEvent& e)
override {
91 void mouseExit(
const MouseEvent& e)
override {
97 void mouseDown(
const MouseEvent& e)
override {
98 for (Listener* listener: listeners_)
99 listener->workOffline();
104 void addListener(Listener* listener) {
105 listeners_.push_back(listener);
109 std::vector<Listener*> listeners_;
120 static constexpr int kWidth = 450;
121 static constexpr int kHeight = 398;
122 static constexpr int kY = 180;
123 static constexpr int kPadding = 20;
124 static constexpr int kTextHeight = 36;
125 static constexpr int kImageWidth = 128;
161 void timerCallback()
override;
165 void mouseUp(
const MouseEvent& e)
override;
169 void paintBackground(Graphics& g)
override { }
172 void resized()
override;
176 void setVisible(
bool should_be_visible)
override;
179 void visibilityChanged()
override;
182 void notifyLoggedIn();
186 void textEditorReturnKeyPressed(TextEditor& editor)
override {
192 void buttonClicked(Button* clicked_button)
override {
199 return signed_in_email_;
204 std::string getEmail() {
205 return signed_in_email_;
209 void workOffline()
override;
219 void setError(
const std::string& error) { error_text_->setText(error); }
224 void setButtonSettings(
bool enabled,
const std::string& text) {
225 sign_in_button_->setEnabled(enabled);
226 sign_in_button_->setText(text);
231 void addListener(Listener* listener) { listeners_.push_back(listener); }
241 std::vector<Listener*> listeners_;
243 std::string signed_in_email_;
247 std::unique_ptr<AppLogo> logo_;
248 std::unique_ptr<PlainTextComponent> sign_in_text_;
249 std::unique_ptr<PlainTextComponent> error_text_;
250 std::unique_ptr<OpenGlTextEditor> email_;
251 std::unique_ptr<OpenGlTextEditor> password_;
252 std::unique_ptr<OpenGlToggleButton> sign_in_button_;
253 std::unique_ptr<ForgotPasswordLink> forgot_password_;
254 std::unique_ptr<WorkOffline> work_offline_;
255 std::unique_ptr<AuthInitThread> auth_init_thread_;
A no-op stub implementation used when authentication is disabled.
Definition authentication.h:163
Definition authentication_section.h:265
virtual void loggedIn()=0
virtual ~Listener()=default
A stubbed-out AuthenticationSection for builds without authentication.
Definition authentication_section.h:263
AuthenticationSection(Authentication *auth)
Definition authentication_section.h:271
void setFocus()
Definition authentication_section.h:276
void addListener(Listener *listener)
Definition authentication_section.h:277
void signOut()
Definition authentication_section.h:274
std::string getSignedInName()
Definition authentication_section.h:273
void create()
Definition authentication_section.h:275
void setColor(Colour color)
Sets a color tint for the image.
Definition open_gl_image_component.h:101
A convenience class for a single quad rendered via OpenGL.
Definition open_gl_multi_quad.h:447
A SynthSection that displays an overlay with a background and optional listeners.
Definition overlay.h:180
A text component rendered into an OpenGlImageComponent with configurable font and justification.
Definition open_gl_image_component.h:301
@ kWidgetAccent1
Definition skin.h:171