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); } //#############################################################################