23#include <osl/file.hxx>
27#include <rtl/strbuf.hxx>
33#include <com/sun/star/uno/Sequence.hxx>
34#include <com/sun/star/ucb/SimpleFileAccess.hpp>
35#include <com/sun/star/ucb/UniversalContentBroker.hpp>
36#include <com/sun/star/io/XInputStream.hpp>
37#include <com/sun/star/io/XOutputStream.hpp>
38#include <com/sun/star/io/XStream.hpp>
39#include <com/sun/star/io/XSeekable.hpp>
53 std::unique_ptr<weld::Entry>
m_xInput;
54 std::unique_ptr<weld::Button> m_xOk;
55 std::unique_ptr<weld::Button> m_xCancel;
56 std::unique_ptr<weld::Label> m_xPromptText;
62 const OUString& GetInput()
const {
return m_aText; }
67SbiInputDialog::SbiInputDialog(
weld::Window* pParent,
const OUString& rPrompt)
68 : GenericDialogController(pParent,
"svt/ui/inputbox.ui",
"InputBox")
69 ,
m_xInput(m_xBuilder->weld_entry(
"entry"))
70 , m_xOk(m_xBuilder->weld_button(
"ok"))
71 , m_xCancel(m_xBuilder->weld_button(
"cancel"))
72 , m_xPromptText(m_xBuilder->weld_label(
"prompt"))
75 m_xPromptText->set_label(rPrompt);
76 m_xOk->connect_clicked(
LINK(
this, SbiInputDialog, Ok ) );
77 m_xCancel->connect_clicked(
LINK(
this, SbiInputDialog, Cancel ) );
135 static const bool bRetVal = [] {
146 if ( !( xManager->queryContentProvider(
"file:///" ).is() ) )
164 OslStream(
const OUString& rName,
StreamMode nStrmMode );
165 virtual ~OslStream()
override;
166 virtual std::size_t
GetData(
void* pData, std::size_t nSize)
override;
167 virtual std::size_t
PutData(
const void* pData, std::size_t nSize)
override;
168 virtual sal_uInt64
SeekPos( sal_uInt64 nPos )
override;
170 virtual void SetSize( sal_uInt64 nSize)
override;
175OslStream::OslStream(
const OUString& rName,
StreamMode nStrmMode )
180 if( (nStrmMode & (StreamMode::READ | StreamMode::WRITE)) == (StreamMode::READ | StreamMode::WRITE) )
182 nFlags = osl_File_OpenFlag_Read | osl_File_OpenFlag_Write;
184 else if( nStrmMode & StreamMode::WRITE )
186 nFlags = osl_File_OpenFlag_Write;
190 nFlags = osl_File_OpenFlag_Read;
193 osl::FileBase::RC nRet = maFile.open( nFlags );
194 if( nRet == osl::FileBase::E_NOENT && nFlags != osl_File_OpenFlag_Read )
196 nFlags |= osl_File_OpenFlag_Create;
197 nRet = maFile.open( nFlags );
200 if( nRet != osl::FileBase::E_None )
207OslStream::~OslStream()
212std::size_t OslStream::GetData(
void* pData, std::size_t nSize)
214 sal_uInt64 nBytesRead = nSize;
215 maFile.read( pData, nBytesRead, nBytesRead );
219std::size_t OslStream::PutData(
const void* pData, std::size_t nSize)
221 sal_uInt64 nBytesWritten;
222 maFile.write( pData, nSize, nBytesWritten );
223 return nBytesWritten;
226sal_uInt64 OslStream::SeekPos( sal_uInt64 nPos )
228 ::osl::FileBase::RC rc = ::osl::FileBase::E_None;
230 assert(nPos != SAL_MAX_UINT32);
231 if( nPos == STREAM_SEEK_TO_END )
233 rc = maFile.setPos( osl_Pos_End, 0 );
237 rc = maFile.setPos( osl_Pos_Absolut, nPos );
239 OSL_VERIFY(rc == ::osl::FileBase::E_None);
240 sal_uInt64 nRealPos(0);
241 rc = maFile.getPos( nRealPos );
242 OSL_VERIFY(rc == ::osl::FileBase::E_None);
246void OslStream::FlushData()
250void OslStream::SetSize( sal_uInt64 nSize )
252 maFile.setSize( nSize );
265 virtual ~UCBStream()
override;
266 virtual std::size_t
GetData(
void* pData, std::size_t nSize )
override;
267 virtual std::size_t
PutData(
const void* pData, std::size_t nSize )
override;
268 virtual sal_uInt64
SeekPos( sal_uInt64 nPos )
override;
270 virtual void SetSize( sal_uInt64 nSize )
override;
277 , xSeek( rStm, UNO_QUERY )
283 , xSeek( rStm, UNO_QUERY )
288UCBStream::~UCBStream()
305 catch(
const Exception & )
311std::size_t UCBStream::GetData(
void* pData, std::size_t nSize)
319 nSize = xIS->readBytes( aData, nSize );
320 memcpy( pData,
aData.getConstArray(), nSize );
323 else if( xS.is() && (xISFromS = xS->getInputStream()).is() )
326 nSize = xISFromS->readBytes( aData, nSize );
327 memcpy(pData,
aData.getConstArray(), nSize );
335 catch(
const Exception & )
342std::size_t UCBStream::PutData(
const void* pData, std::size_t nSize)
347 if( xS.is() && (xOSFromS = xS->getOutputStream()).is() )
350 xOSFromS->writeBytes( aData );
358 catch(
const Exception & )
365sal_uInt64 UCBStream::SeekPos( sal_uInt64 nPos )
371 sal_uInt64 nLen =
static_cast<sal_uInt64
>( xSeek->getLength() );
384 catch(
const Exception & )
391void UCBStream::FlushData()
396 if( xS.is() && (xOSFromS = xS->getOutputStream()).is() )
405 catch(
const Exception & )
411void UCBStream::SetSize( sal_uInt64 )
413 SAL_WARN(
"basic",
"UCBStream::SetSize not allowed to call from basic" );
425 if( ( nStrmMode & ( StreamMode::READ|StreamMode::WRITE ) ) == StreamMode::READ )
427 nStrmMode |= StreamMode::NOCREATE;
429 OUString
aStr(OStringToOUString(rName, osl_getThreadTextEncoding()));
440 xSFI->exists( aNameStr ) && !xSFI->isFolder( aNameStr ) )
442 xSFI->kill( aNameStr );
445 if( (nStrmMode & (StreamMode::READ | StreamMode::WRITE)) == (StreamMode::READ | StreamMode::WRITE) )
448 pStrm.reset(
new UCBStream( xIS ) );
450 else if( nStrmMode & StreamMode::WRITE )
453 pStrm.reset(
new UCBStream( xIS ) );
458 pStrm.reset(
new UCBStream( xIS ) );
470 pStrm.reset(
new OslStream( aNameStr, nStrmMode ) );
497 if( !bForceReadingPerByte &&
IsText() )
499 pStrm->ReadLine(rBuf);
514 sal_Int32 nRequested = sal::static_int_cast<sal_Int32>(
n);
516 rBuf =
aBuffer.makeStringAndClear();
550 pStrm->WriteChar( 0 );
562 void WriteLines(
SvStream &rStream,
const OString& rStr)
582 sal_Int32 nLineLen =
aLine.getLength();
583 if (nLineLen &&
aLine[--nLineLen] == 0x0A)
586 if (nLineLen &&
aLine[--nLineLen] == 0x0D)
636 else if(
pChan[ nCh ] )
647 pChan[ nCh ] =
nullptr;
691 if( !
aOut.isEmpty() )
694 VclButtonsType::Ok,
aOut));
762 if( nChannel >= 0 && nChannel <
CHANNELS )
764 pRet =
pChan[ nChannel ];
788 OUString aPromptStr(OStringToOUString(
aPrompt, osl_getThreadTextEncoding()));
789 SbiInputDialog aDlg(
nullptr, aPromptStr);
806 sal_Int32
n1 =
aOut.indexOf(
'\n');
807 sal_Int32
n2 =
aOut.indexOf(
'\r');
808 if(
n1 == -1 &&
n2 == -1 )
823 OUString s(
aOut.copy(0,
n1));
825 while ( !
aOut.isEmpty() && (
aOut[0] ==
'\n' ||
aOut[0] ==
'\r') )
833 VclButtonsType::OkCancel, s));
834 xBox->set_default_response(
RET_OK);
Reference< XExecutableDialog > m_xDialog
static weld::MessageDialog * CreateMessageDialog(weld::Widget *pParent, VclMessageType eMessageType, VclButtonsType eButtonType, const OUString &rPrimaryMessage, const ILibreOfficeKitNotifier *pNotifier=nullptr)
static weld::Window * GetDefDialogParent()
~SbiIoSystem() COVERITY_NOEXCEPT_FALSE
void Write(std::u16string_view)
SbiStream * GetStream(short nChannel) const
void WriteCon(std::u16string_view)
void Open(short, std::string_view, StreamMode, SbiStreamFlags, short)
SbiStream * pChan[CHANNELS]
sal_uInt64 nExpandOnWriteTo
ErrCode const & Open(std::string_view, StreamMode, SbiStreamFlags, short)
ErrCode Read(OString &, sal_uInt16=0, bool bForceReadingPerByte=false)
ErrCode Write(const OString &)
std::unique_ptr< SvStream > pStrm
virtual sal_uInt64 SeekPos(sal_uInt64 nPos)
virtual void SetSize(sal_uInt64 nSize)
LineEnd GetLineDelimiter() const
virtual std::size_t GetData(void *pData, std::size_t nSize)
virtual std::size_t PutData(const void *pData, std::size_t nSize)
DECL_LINK(CheckNameHdl, SvxNameDialog &, bool)
#define SVSTREAM_TOO_MANY_OPEN_FILES
#define SVSTREAM_OUTOFMEMORY
#define SVSTREAM_ACCESS_DENIED
#define SVSTREAM_INVALID_PARAMETER
#define SVSTREAM_PATH_NOT_FOUND
#define ERRCODE_IO_GENERAL
#define SVSTREAM_FILE_NOT_FOUND
IMPL_LINK_NOARG(SbiInputDialog, Ok, weld::Button &, void)
TOOLS_DLLPUBLIC OString convertLineEnd(const OString &rIn, LineEnd eLineEnd)
#define LINK(Instance, Class, Member)
#define SAL_WARN(area, stream)
constexpr OUStringLiteral aData
OStringBuffer & padToLength(OStringBuffer &rBuffer, sal_Int32 nLength, char cFill='\0')
Reference< XComponentContext > getProcessComponentContext()
OString OUStringToOString(std::u16string_view str, ConnectionSettings const *settings)
Reference< XInputStream > m_xInput
OUString getFullPath(const OUString &aRelPath)
#define ERRCODE_BASIC_USER_ABORT
#define ERRCODE_BASIC_TOO_MANY_FILES
#define ERRCODE_BASIC_ACCESS_DENIED
#define ERRCODE_BASIC_FILE_NOT_FOUND
#define ERRCODE_BASIC_PATH_NOT_FOUND
#define ERRCODE_BASIC_NO_MEMORY
#define ERRCODE_BASIC_BAD_ARGUMENT
#define ERRCODE_BASIC_READ_PAST_EOF
#define ERRCODE_BASIC_FILE_ALREADY_OPEN
#define ERRCODE_BASIC_IO_ERROR
#define ERRCODE_BASIC_BAD_RECORD_LENGTH
#define ERRCODE_BASIC_BAD_CHANNEL
TOOLS_DLLPUBLIC OString read_uInt8s_ToOString(SvStream &rStrm, std::size_t nUnits)
#define STREAM_SEEK_TO_END
std::size_t write_uInt8s_FromOString(SvStream &rStrm, std::string_view rStr, std::size_t nUnits)
TOOLS_DLLPUBLIC SvStream & endl(SvStream &rStr)
std::unique_ptr< char[]> aBuffer