+public:
+
+ KDMEmailPage (wxSize panel_size, int border)
+#ifdef DCPOMATIC_OSX
+ /* We have to force both width and height of this one */
+ : StandardPage (wxSize (480, 128), border)
+#else
+ : StandardPage (panel_size, border)
+#endif
+ {}
+
+ wxString GetName () const
+ {
+ return _("KDM Email");
+ }
+
+#ifdef DCPOMATIC_OSX
+ wxBitmap GetLargeIcon () const
+ {
+ return wxBitmap ("kdm_email", wxBITMAP_TYPE_PNG_RESOURCE);
+ }
+#endif
+
+private:
+ void setup ()
+ {
+ wxFlexGridSizer* table = new wxFlexGridSizer (2, DCPOMATIC_SIZER_X_GAP, DCPOMATIC_SIZER_Y_GAP);
+ table->AddGrowableCol (1, 1);
+ _panel->GetSizer()->Add (table, 1, wxEXPAND | wxALL, _border);
+
+ add_label_to_sizer (table, _panel, _("Outgoing mail server"), true);
+ {
+ wxBoxSizer* s = new wxBoxSizer (wxHORIZONTAL);
+ _mail_server = new wxTextCtrl (_panel, wxID_ANY);
+ s->Add (_mail_server, 1, wxEXPAND | wxALL);
+ add_label_to_sizer (s, _panel, _("port"), false);
+ _mail_port = new wxSpinCtrl (_panel, wxID_ANY);
+ _mail_port->SetRange (0, 65535);
+ s->Add (_mail_port);
+ table->Add (s, 1, wxEXPAND | wxALL);
+ }
+
+ add_label_to_sizer (table, _panel, _("Mail user name"), true);
+ _mail_user = new wxTextCtrl (_panel, wxID_ANY);
+ table->Add (_mail_user, 1, wxEXPAND | wxALL);
+
+ add_label_to_sizer (table, _panel, _("Mail password"), true);
+ _mail_password = new wxTextCtrl (_panel, wxID_ANY);
+ table->Add (_mail_password, 1, wxEXPAND | wxALL);
+
+ add_label_to_sizer (table, _panel, _("Subject"), true);
+ _kdm_subject = new wxTextCtrl (_panel, wxID_ANY);
+ table->Add (_kdm_subject, 1, wxEXPAND | wxALL);
+
+ add_label_to_sizer (table, _panel, _("From address"), true);
+ _kdm_from = new wxTextCtrl (_panel, wxID_ANY);
+ table->Add (_kdm_from, 1, wxEXPAND | wxALL);
+
+ add_label_to_sizer (table, _panel, _("CC address"), true);
+ _kdm_cc = new wxTextCtrl (_panel, wxID_ANY);
+ table->Add (_kdm_cc, 1, wxEXPAND | wxALL);
+
+ add_label_to_sizer (table, _panel, _("BCC address"), true);
+ _kdm_bcc = new wxTextCtrl (_panel, wxID_ANY);
+ table->Add (_kdm_bcc, 1, wxEXPAND | wxALL);
+
+ _kdm_email = new wxTextCtrl (_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize (480, 128), wxTE_MULTILINE);
+ _panel->GetSizer()->Add (_kdm_email, 1, wxEXPAND | wxALL, _border);
+
+ _reset_kdm_email = new wxButton (_panel, wxID_ANY, _("Reset to default text"));
+ _panel->GetSizer()->Add (_reset_kdm_email, 0, wxEXPAND | wxALL, _border);
+
+ _mail_server->Bind (wxEVT_COMMAND_TEXT_UPDATED, boost::bind (&KDMEmailPage::mail_server_changed, this));
+ _mail_port->Bind (wxEVT_COMMAND_SPINCTRL_UPDATED, boost::bind (&KDMEmailPage::mail_port_changed, this));
+ _mail_user->Bind (wxEVT_COMMAND_TEXT_UPDATED, boost::bind (&KDMEmailPage::mail_user_changed, this));
+ _mail_password->Bind (wxEVT_COMMAND_TEXT_UPDATED, boost::bind (&KDMEmailPage::mail_password_changed, this));
+ _kdm_subject->Bind (wxEVT_COMMAND_TEXT_UPDATED, boost::bind (&KDMEmailPage::kdm_subject_changed, this));
+ _kdm_from->Bind (wxEVT_COMMAND_TEXT_UPDATED, boost::bind (&KDMEmailPage::kdm_from_changed, this));
+ _kdm_cc->Bind (wxEVT_COMMAND_TEXT_UPDATED, boost::bind (&KDMEmailPage::kdm_cc_changed, this));
+ _kdm_bcc->Bind (wxEVT_COMMAND_TEXT_UPDATED, boost::bind (&KDMEmailPage::kdm_bcc_changed, this));
+ _kdm_email->Bind (wxEVT_COMMAND_TEXT_UPDATED, boost::bind (&KDMEmailPage::kdm_email_changed, this));
+ _reset_kdm_email->Bind (wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&KDMEmailPage::reset_kdm_email, this));
+ }
+
+ void config_changed ()
+ {
+ Config* config = Config::instance ();
+
+ checked_set (_mail_server, config->mail_server ());
+ checked_set (_mail_port, config->mail_port ());
+ checked_set (_mail_user, config->mail_user ());
+ checked_set (_mail_password, config->mail_password ());
+ checked_set (_kdm_subject, config->kdm_subject ());
+ checked_set (_kdm_from, config->kdm_from ());
+ checked_set (_kdm_cc, config->kdm_cc ());
+ checked_set (_kdm_bcc, config->kdm_bcc ());
+ checked_set (_kdm_email, Config::instance()->kdm_email ());
+ }
+
+ void mail_server_changed ()
+ {
+ Config::instance()->set_mail_server (wx_to_std (_mail_server->GetValue ()));
+ }
+
+ void mail_port_changed ()
+ {
+ Config::instance()->set_mail_port (_mail_port->GetValue ());
+ }
+
+ void mail_user_changed ()
+ {
+ Config::instance()->set_mail_user (wx_to_std (_mail_user->GetValue ()));
+ }
+
+ void mail_password_changed ()
+ {
+ Config::instance()->set_mail_password (wx_to_std (_mail_password->GetValue ()));
+ }
+
+ void kdm_subject_changed ()
+ {
+ Config::instance()->set_kdm_subject (wx_to_std (_kdm_subject->GetValue ()));
+ }
+
+ void kdm_from_changed ()
+ {
+ Config::instance()->set_kdm_from (wx_to_std (_kdm_from->GetValue ()));
+ }
+
+ void kdm_cc_changed ()
+ {
+ Config::instance()->set_kdm_cc (wx_to_std (_kdm_cc->GetValue ()));
+ }
+
+ void kdm_bcc_changed ()
+ {
+ Config::instance()->set_kdm_bcc (wx_to_std (_kdm_bcc->GetValue ()));
+ }
+
+ void kdm_email_changed ()
+ {
+ if (_kdm_email->GetValue().IsEmpty ()) {
+ /* Sometimes we get sent an erroneous notification that the email
+ is empty; I don't know why.
+ */
+ return;
+ }
+ Config::instance()->set_kdm_email (wx_to_std (_kdm_email->GetValue ()));
+ }