bool Control::WriteAllStringData(const std::vector< std::string >& strs, bool preview) { StringDataBinding* dataBinding = CastDataBinding<StringDataBinding, DataBindingTypes::String>( m_DataBinding ); if (dataBinding) { std::vector< std::string > currentValues; dataBinding->GetAll( currentValues ); if ( strs == currentValues ) { return true; } AutoPtr< Reflect::Translator > translator( Reflect::AllocateTranslator< std::vector< std::string > >() ); if ( !PreWrite( Reflect::Data( Reflect::Pointer( ¤tValues ), translator.Ptr() ), preview ) ) { Read(); return false; } m_IsWriting = true; bool result = dataBinding->SetAll( strs ); m_IsWriting = false; if (result) { PostWrite(); return true; } } HELIUM_BREAK(); // you should not call this, your control is using custom data return false; }
bool Control::ReadAllStringData(std::vector< tstring >& strs) const { StringDataBinding* data = CastDataBinding<StringDataBinding, DataBindingTypes::String>( m_DataBinding ); if ( data ) { strs.clear(); data->GetAll( strs ); return true; } HELIUM_BREAK(); // you should not call this, your control is using custom data return false; }
bool Control::WriteAllStringData(const std::vector< tstring >& strs, bool preview) { StringDataBinding* dataBinding = CastDataBinding<StringDataBinding, DataBindingTypes::String>( m_DataBinding ); if (dataBinding) { std::vector< tstring > currentValues; dataBinding->GetAll( currentValues ); if ( strs == currentValues ) { return true; } Reflect::DataPtr data = Reflect::AssertCast< Reflect::Data >( Reflect::Data::Create< std::vector< tstring > >() ); data->ConnectData( const_cast< std::vector< tstring >* >( &strs ) ); if ( !PreWrite( data, preview ) ) { Read(); return false; } m_IsWriting = true; bool result = dataBinding->SetAll( strs ); m_IsWriting = false; if (result) { PostWrite(); return true; } } HELIUM_BREAK(); // you should not call this, your control is using custom data return false; }