Update dialog layout fixes.
[dcpomatic.git] / src / wx / christie_certificate_panel.cc
index fa91cc2b594ae2f79deb7ded0687634686bfca10..ab131e015cf0ba95135cef0693e38e2b2b743634 100644 (file)
 
 using std::string;
 using boost::optional;
+using boost::bind;
+#if BOOST_VERSION >= 106100
+using namespace boost::placeholders;
+#endif
 
 ChristieCertificatePanel::ChristieCertificatePanel (DownloadCertificateDialog* dialog)
-       : DownloadCertificatePanel (dialog)
+       : CredentialsDownloadCertificatePanel (
+                       dialog,
+                       bind(&Config::christie_username, Config::instance()),
+                       bind(&Config::set_christie_username, Config::instance(), _1),
+                       bind(&Config::unset_christie_username, Config::instance()),
+                       bind(&Config::christie_password, Config::instance()),
+                       bind(&Config::set_christie_password, Config::instance(), _1),
+                       bind(&Config::unset_christie_password, Config::instance())
+                       )
+
 {
 
 }
@@ -37,13 +50,6 @@ ChristieCertificatePanel::ChristieCertificatePanel (DownloadCertificateDialog* d
 void
 ChristieCertificatePanel::do_download ()
 {
-       Config* config = Config::instance ();
-       if (!config->christie_username() || !config->christie_password()) {
-               _dialog->message()->SetLabel(wxT(""));
-               error_dialog (this, _("No Christie username/password configured.  Add your account details to the Accounts page in Preferences."));
-               return;
-       }
-
        string const prefix = String::compose(
                "ftp://%1:%2@certificates.christiedigital.com/Certificates/",
                Config::instance()->christie_username().get(),
@@ -56,25 +62,27 @@ ChristieCertificatePanel::do_download ()
        string const url = String::compose ("%1F-IMB/F-IMB_%2_sha256.pem", prefix, serial);
 
        optional<string> all_errors;
+       bool ok = true;
 
-       optional<string> error = get_from_url (url, true, boost::bind (&DownloadCertificatePanel::load, this, _1));
+       optional<string> error = get_from_url (url, true, false, boost::bind(&DownloadCertificatePanel::load_certificate_from_chain, this, _1));
        if (error) {
                all_errors = *error;
 
                string const url = String::compose ("%1IMB-S2/IMB-S2_%2_sha256.pem", prefix, serial);
 
-               error = get_from_url (url, true, boost::bind (&DownloadCertificatePanel::load, this, _1));
+               error = get_from_url (url, true, false, boost::bind(&DownloadCertificatePanel::load_certificate_from_chain, this, _1));
                if (error) {
                        *all_errors += "\n" + *error;
+                       ok = false;
                }
        }
 
-       if (all_errors) {
-               _dialog->message()->SetLabel(wxT(""));
-               error_dialog (this, std_to_wx(*all_errors));
-       } else {
+       if (ok) {
                _dialog->message()->SetLabel (_("Certificate downloaded"));
                _dialog->setup_sensitivity ();
+       } else {
+               _dialog->message()->SetLabel(wxT(""));
+               error_dialog (this, std_to_wx(*all_errors));
        }
 }