From ea4c7120ff50969e24f7d5f28d64d65b0a028c78 Mon Sep 17 00:00:00 2001 From: Jay Nabonne Date: Mon, 28 Jan 2019 15:22:01 +0000 Subject: [PATCH] Fixed up and cleaned up Qt variant of wxDataFormat. Kept "mime type" and "id" conceptually separate in the interface in case they need to diverge later. Got rid of the odd "wxChar *" variants and the QString one. Implemented unimplemented "type" functions. Implemented "!=" in terms of "==", to keep from having two places to keep in sync. --- include/wx/qt/dataform.h | 36 +++++++------- src/qt/clipbrd.cpp | 8 +-- src/qt/dataobj.cpp | 102 +++++++++++++++++++-------------------- 3 files changed, 72 insertions(+), 74 deletions(-) diff --git a/include/wx/qt/dataform.h b/include/wx/qt/dataform.h index b6f5c307bf..55932a5815 100644 --- a/include/wx/qt/dataform.h +++ b/include/wx/qt/dataform.h @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: wx/qt/toolbar.h +// Name: wx/qt/dataform.h // Author: Sean D'Epagnier // Copyright: (c) Sean D'Epagnier 2014 // Licence: wxWindows licence @@ -8,34 +8,34 @@ #ifndef _WX_QT_DATAFORM_H_ #define _WX_QT_DATAFORM_H_ -class QString; - class WXDLLIMPEXP_CORE wxDataFormat { public: - wxDataFormat(); - wxDataFormat( wxDataFormatId formatId ); + wxDataFormat(wxDataFormatId formatId = wxDF_INVALID); wxDataFormat(const wxString &id); - wxDataFormat(const QString &id); - wxDataFormat(const wxChar *id); - void SetId( const wxChar *id ); - + // Standard methods + const wxString& GetId() const; + void SetId(const wxString& id); + + wxDataFormatId GetType() const; + void SetType(wxDataFormatId type); + bool operator==(wxDataFormatId format) const; bool operator!=(wxDataFormatId format) const; bool operator==(const wxDataFormat& format) const; bool operator!=(const wxDataFormat& format) const; - // string ids are used for custom types - this SetId() must be used for - // application-specific formats - wxString GetId() const; - void SetId( const wxString& id ); + // Direct access to the underlying mime type. + // Equivalent to "id", except "id" is supposed to be + // invalid for standard types, whereas this should + // always be valid (if meaningful). + const wxString& GetMimeType() const; + void SetMimeType(const wxString& mimeType); - // implementation - wxDataFormatId GetType() const; - void SetType( wxDataFormatId type ); - - wxString m_MimeType; +private: + wxString m_mimeType; + wxDataFormatId m_formatId; }; #endif // _WX_QT_DATAFORM_H_ diff --git a/src/qt/clipbrd.cpp b/src/qt/clipbrd.cpp index 5479fe3109..8f92c947ed 100644 --- a/src/qt/clipbrd.cpp +++ b/src/qt/clipbrd.cpp @@ -109,7 +109,7 @@ bool wxClipboard::AddData( wxDataObject *data ) QByteArray bytearray(size, 0); data->GetDataHere(format, bytearray.data()); - MimeData->setData(wxQtConvertString(format.m_MimeType), bytearray); + MimeData->setData(wxQtConvertString(format.GetMimeType()), bytearray); } delete data; @@ -144,7 +144,7 @@ bool wxClipboard::GetData( wxDataObject& data ) const wxDataFormat format(formats[i]); // is this format supported by clipboard ? - if( !MimeData->hasFormat(wxQtConvertString(format.m_MimeType)) ) + if( !MimeData->hasFormat(wxQtConvertString(format.GetMimeType())) ) continue; wxTextDataObject *textdata = dynamic_cast(&data); @@ -152,7 +152,7 @@ bool wxClipboard::GetData( wxDataObject& data ) textdata->SetText(wxQtConvertString(MimeData->text())); else { - QByteArray bytearray = MimeData->data( wxQtConvertString(format.m_MimeType) ).data(); + QByteArray bytearray = MimeData->data( wxQtConvertString(format.GetMimeType()) ).data(); data.SetData(format, bytearray.size(), bytearray.constData()); } @@ -170,7 +170,7 @@ void wxClipboard::Clear() bool wxClipboard::IsSupported( const wxDataFormat& format ) { const QMimeData *data = QtClipboard->mimeData( (QClipboard::Mode)Mode() ); - return data->hasFormat(wxQtConvertString(format.m_MimeType)); + return data->hasFormat(wxQtConvertString(format.GetMimeType())); } bool wxClipboard::IsSupportedAsync(wxEvtHandler *sink) diff --git a/src/qt/dataobj.cpp b/src/qt/dataobj.cpp index 27108b1a46..2840e735a8 100644 --- a/src/qt/dataobj.cpp +++ b/src/qt/dataobj.cpp @@ -18,102 +18,100 @@ #include -wxDataFormat::wxDataFormat() +namespace { -} - -static wxString DataFormatIdToMimeType( wxDataFormatId formatId ) -{ - switch(formatId) { - case wxDF_TEXT: return "text/plain"; - case wxDF_BITMAP: return "image/bmp"; - case wxDF_TIFF: return "image/tiff"; - case wxDF_WAVE: return "audio/x-wav"; - case wxDF_UNICODETEXT: return "text/plain"; - case wxDF_HTML: return "text/html"; - case wxDF_METAFILE: - case wxDF_SYLK: - case wxDF_DIF: - case wxDF_OEMTEXT: - case wxDF_DIB: - case wxDF_PALETTE: - case wxDF_PENDATA: - case wxDF_RIFF: - case wxDF_ENHMETAFILE: - case wxDF_FILENAME: - case wxDF_LOCALE: - case wxDF_PRIVATE: - case wxDF_INVALID: - case wxDF_MAX: - break; + wxString DataFormatIdToMimeType(wxDataFormatId formatId) + { + switch ( formatId ) + { + case wxDF_TEXT: return "text/plain"; + case wxDF_BITMAP: return "image/bmp"; + case wxDF_TIFF: return "image/tiff"; + case wxDF_WAVE: return "audio/x-wav"; + case wxDF_UNICODETEXT: return "text/plain"; + case wxDF_HTML: return "text/html"; + case wxDF_METAFILE: + case wxDF_SYLK: + case wxDF_DIF: + case wxDF_OEMTEXT: + case wxDF_DIB: + case wxDF_PALETTE: + case wxDF_PENDATA: + case wxDF_RIFF: + case wxDF_ENHMETAFILE: + case wxDF_FILENAME: + case wxDF_LOCALE: + case wxDF_PRIVATE: + case wxDF_INVALID: + case wxDF_MAX: + default: + return ""; + } } - return ""; } -wxDataFormat::wxDataFormat( wxDataFormatId formatId ) +wxDataFormat::wxDataFormat(wxDataFormatId formatId) { - m_MimeType = DataFormatIdToMimeType(formatId); + SetType(formatId); } wxDataFormat::wxDataFormat(const wxString &id) { - m_MimeType = id; + SetId(id); } -wxDataFormat::wxDataFormat(const wxChar *id) +const wxString& wxDataFormat::GetMimeType() const { - m_MimeType = id; + return m_mimeType; } -wxDataFormat::wxDataFormat(const QString &id) +void wxDataFormat::SetMimeType(const wxString& mimeType) { - m_MimeType = wxQtConvertString(id); + m_mimeType = mimeType; + m_formatId = wxDF_INVALID; } -void wxDataFormat::SetId( const wxChar *id ) +void wxDataFormat::SetId(const wxString& id) { - m_MimeType = id; + SetMimeType(id); } -void wxDataFormat::SetId( const wxString& id ) +const wxString& wxDataFormat::GetId() const { - m_MimeType = id; -} - -wxString wxDataFormat::GetId() const -{ - return m_MimeType; + return m_mimeType; } wxDataFormatId wxDataFormat::GetType() const { - wxMISSING_IMPLEMENTATION( "wxDataFormat GetType" ); - return wxDataFormatId(); + return m_formatId; } -void wxDataFormat::SetType( wxDataFormatId WXUNUSED(type) ) +void wxDataFormat::SetType(wxDataFormatId formatId) { - wxMISSING_IMPLEMENTATION( "wxDataFormat SetType" ); + m_mimeType = DataFormatIdToMimeType(formatId); + m_formatId = formatId; } bool wxDataFormat::operator==(wxDataFormatId format) const { - return m_MimeType == DataFormatIdToMimeType(format); + return m_mimeType == DataFormatIdToMimeType(format) + && m_formatId == format; } bool wxDataFormat::operator!=(wxDataFormatId format) const { - return m_MimeType != DataFormatIdToMimeType(format); + return !operator==(format); } bool wxDataFormat::operator==(const wxDataFormat& format) const { - return m_MimeType == format.m_MimeType; + return m_mimeType == format.m_mimeType + && m_formatId == format.m_formatId; } bool wxDataFormat::operator!=(const wxDataFormat& format) const { - return m_MimeType != format.m_MimeType; + return !operator==(format); } //#############################################################################