ZRCola/ZRCola/zrcolachrreq.cpp

102 lines
3.1 KiB
C++

/*
Copyright 2015-2016 Amebis
This file is part of ZRCola.
ZRCola is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
ZRCola is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with ZRCola. If not, see <http://www.gnu.org/licenses/>.
*/
#include "stdafx.h"
//////////////////////////////////////////////////////////////////////////
// wxZRColaCharRequest
//////////////////////////////////////////////////////////////////////////
wxZRColaCharRequest::wxZRColaCharRequest(wxWindow* parent) : wxZRColaCharRequestBase(parent)
{
m_character->PushEventHandler(new wxZRColaKeyHandler());
m_context->PushEventHandler(new wxZRColaKeyHandler());
}
wxZRColaCharRequest::~wxZRColaCharRequest()
{
m_context->PopEventHandler(true);
m_character->PopEventHandler(true);
}
void wxZRColaCharRequest::OnOKButtonClick(wxCommandEvent& event)
{
event.Skip();
const wxString chr = m_character->GetValue();
const wxString ctx = m_context->GetValue();
wxString body;
body += _("Character") + wxT(": ");
for (size_t i = 0, i_end = chr.Length(); i < i_end; i++) {
if (chr[i] < 0x7f)
body += chr[i];
else
body += wxString::Format(wxT("(U+%04X)"), chr[i]);
}
body += wxT('\n');
if (!ctx.IsEmpty()) {
body += _("Context") + wxT(": ");
body += ctx;
body += wxT('\n');
}
wxLaunchDefaultBrowser(wxString::Format(wxT("mailto:janos.jezovnik@zrc-sazu.si&subject=%s&body=%s"),
wxURLEncode(wxString((wxString(wxT("[ZRCola] ")) + _("Request a New Character")).ToUTF8())),
wxURLEncode(body.ToUTF8())
));
}
//////////////////////////////////////////////////////////////////////////
// wxPersistentZRColaCharRequest
//////////////////////////////////////////////////////////////////////////
wxPersistentZRColaCharRequest::wxPersistentZRColaCharRequest(wxZRColaCharRequest *wnd) : wxPersistentDialog(wnd)
{
}
void wxPersistentZRColaCharRequest::Save() const
{
wxPersistentDialog::Save();
const wxZRColaCharRequest * const wnd = static_cast<const wxZRColaCharRequest*>(GetWindow());
SaveValue(wxT("character"), wnd->m_character->GetValue());
SaveValue(wxT("context"), wnd->m_context->GetValue());
}
bool wxPersistentZRColaCharRequest::Restore()
{
wxZRColaCharRequest * const wnd = static_cast<wxZRColaCharRequest*>(GetWindow());
wxString str;
if (RestoreValue(wxT("character"), &str))
wnd->m_character->SetValue(str);
if (RestoreValue(wxT("context"), &str))
wnd->m_context->SetValue(str);
return wxPersistentDialog::Restore();
}