Branch data Line data Source code
1 : : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : : /*
3 : : * This file is part of the LibreOffice project.
4 : : *
5 : : * This Source Code Form is subject to the terms of the Mozilla Public
6 : : * License, v. 2.0. If a copy of the MPL was not distributed with this
7 : : * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 : : *
9 : : * This file incorporates work covered by the following license notice:
10 : : *
11 : : * Licensed to the Apache Software Foundation (ASF) under one or more
12 : : * contributor license agreements. See the NOTICE file distributed
13 : : * with this work for additional information regarding copyright
14 : : * ownership. The ASF licenses this file to you under the Apache
15 : : * License, Version 2.0 (the "License"); you may not use this file
16 : : * except in compliance with the License. You may obtain a copy of
17 : : * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 : : */
19 : :
20 : : #include "errobject.hxx"
21 : :
22 : : #include <cppuhelper/implbase2.hxx>
23 : : #include <com/sun/star/script/XDefaultProperty.hpp>
24 : : #include "sbintern.hxx"
25 : : #include "runtime.hxx"
26 : :
27 : : using namespace ::com::sun::star;
28 : : using namespace ::ooo;
29 : :
30 : : typedef ::cppu::WeakImplHelper2< vba::XErrObject, script::XDefaultProperty > ErrObjectImpl_BASE;
31 : :
32 : : class ErrObject : public ErrObjectImpl_BASE
33 : : {
34 : : rtl::OUString m_sHelpFile;
35 : : rtl::OUString m_sSource;
36 : : rtl::OUString m_sDescription;
37 : : sal_Int32 m_nNumber;
38 : : sal_Int32 m_nHelpContext;
39 : :
40 : : public:
41 : : ErrObject();
42 : : ~ErrObject();
43 : : // Attributes
44 : : virtual ::sal_Int32 SAL_CALL getNumber() throw (uno::RuntimeException);
45 : : virtual void SAL_CALL setNumber( ::sal_Int32 _number ) throw (uno::RuntimeException);
46 : : virtual ::sal_Int32 SAL_CALL getHelpContext() throw (uno::RuntimeException);
47 : : virtual void SAL_CALL setHelpContext( ::sal_Int32 _helpcontext ) throw (uno::RuntimeException);
48 : : virtual ::rtl::OUString SAL_CALL getHelpFile() throw (uno::RuntimeException);
49 : : virtual void SAL_CALL setHelpFile( const ::rtl::OUString& _helpfile ) throw (uno::RuntimeException);
50 : : virtual ::rtl::OUString SAL_CALL getDescription() throw (uno::RuntimeException);
51 : : virtual void SAL_CALL setDescription( const ::rtl::OUString& _description ) throw (uno::RuntimeException);
52 : : virtual ::rtl::OUString SAL_CALL getSource() throw (uno::RuntimeException);
53 : : virtual void SAL_CALL setSource( const ::rtl::OUString& _source ) throw (uno::RuntimeException);
54 : :
55 : : // Methods
56 : : virtual void SAL_CALL Clear( ) throw (uno::RuntimeException);
57 : : virtual void SAL_CALL Raise( const uno::Any& Number, const uno::Any& Source, const uno::Any& Description, const uno::Any& HelpFile, const uno::Any& HelpContext ) throw (uno::RuntimeException);
58 : : // XDefaultProperty
59 : : virtual ::rtl::OUString SAL_CALL getDefaultPropertyName( ) throw (uno::RuntimeException);
60 : :
61 : : // Helper method
62 : : void setData( const uno::Any& Number, const uno::Any& Source, const uno::Any& Description,
63 : : const uno::Any& HelpFile, const uno::Any& HelpContext ) throw (uno::RuntimeException);
64 : : };
65 : :
66 : :
67 : 4 : ErrObject::~ErrObject()
68 : : {
69 [ - + ]: 8 : }
70 : :
71 : 4 : ErrObject::ErrObject() : m_nNumber(0), m_nHelpContext(0)
72 : : {
73 : 4 : }
74 : :
75 : : sal_Int32 SAL_CALL
76 : 0 : ErrObject::getNumber() throw (uno::RuntimeException)
77 : : {
78 : 0 : return m_nNumber;
79 : : }
80 : :
81 : : void SAL_CALL
82 : 0 : ErrObject::setNumber( ::sal_Int32 _number ) throw (uno::RuntimeException)
83 : : {
84 [ # # ][ # # ]: 0 : GetSbData()->pInst->setErrorVB( _number, String() );
[ # # ][ # # ]
85 [ # # ][ # # ]: 0 : ::rtl::OUString _description = GetSbData()->pInst->GetErrorMsg();
[ # # ][ # # ]
86 [ # # ][ # # ]: 0 : setData( uno::makeAny( _number ), uno::Any(), uno::makeAny( _description ), uno::Any(), uno::Any() );
[ # # ]
87 : 0 : }
88 : :
89 : : ::sal_Int32 SAL_CALL
90 : 0 : ErrObject::getHelpContext() throw (uno::RuntimeException)
91 : : {
92 : 0 : return m_nHelpContext;
93 : : }
94 : : void SAL_CALL
95 : 0 : ErrObject::setHelpContext( ::sal_Int32 _helpcontext ) throw (uno::RuntimeException)
96 : : {
97 : 0 : m_nHelpContext = _helpcontext;
98 : 0 : }
99 : :
100 : : ::rtl::OUString SAL_CALL
101 : 0 : ErrObject::getHelpFile() throw (uno::RuntimeException)
102 : : {
103 : 0 : return m_sHelpFile;
104 : : }
105 : :
106 : : void SAL_CALL
107 : 0 : ErrObject::setHelpFile( const ::rtl::OUString& _helpfile ) throw (uno::RuntimeException)
108 : : {
109 : 0 : m_sHelpFile = _helpfile;
110 : 0 : }
111 : :
112 : : ::rtl::OUString SAL_CALL
113 : 0 : ErrObject::getDescription() throw (uno::RuntimeException)
114 : : {
115 : 0 : return m_sDescription;
116 : : }
117 : :
118 : : void SAL_CALL
119 : 0 : ErrObject::setDescription( const ::rtl::OUString& _description ) throw (uno::RuntimeException)
120 : : {
121 : 0 : m_sDescription = _description;
122 : 0 : }
123 : :
124 : : ::rtl::OUString SAL_CALL
125 : 0 : ErrObject::getSource() throw (uno::RuntimeException)
126 : : {
127 : 0 : return m_sSource;
128 : : }
129 : :
130 : : void SAL_CALL
131 : 0 : ErrObject::setSource( const ::rtl::OUString& _source ) throw (uno::RuntimeException)
132 : : {
133 : 0 : m_sSource = _source;
134 : 0 : }
135 : :
136 : : // Methods
137 : : void SAL_CALL
138 : 34 : ErrObject::Clear( ) throw (uno::RuntimeException)
139 : : {
140 : 34 : m_sHelpFile = rtl::OUString();
141 : 34 : m_sSource = m_sHelpFile;
142 : 34 : m_sDescription = m_sSource;
143 : 34 : m_nNumber = 0;
144 : 34 : m_nHelpContext = 0;
145 : 34 : }
146 : :
147 : : void SAL_CALL
148 : 0 : ErrObject::Raise( const uno::Any& Number, const uno::Any& Source, const uno::Any& Description, const uno::Any& HelpFile, const uno::Any& HelpContext ) throw (uno::RuntimeException)
149 : : {
150 : 0 : setData( Number, Source, Description, HelpFile, HelpContext );
151 [ # # ]: 0 : if ( m_nNumber )
152 [ # # ][ # # ]: 0 : GetSbData()->pInst->ErrorVB( m_nNumber, m_sDescription );
153 : 0 : }
154 : :
155 : : // XDefaultProperty
156 : : ::rtl::OUString SAL_CALL
157 : 4 : ErrObject::getDefaultPropertyName( ) throw (uno::RuntimeException)
158 : : {
159 [ + - ][ + - ]: 4 : static rtl::OUString sDfltPropName( "Number" );
160 : 4 : return sDfltPropName;
161 : : }
162 : :
163 : 4 : void ErrObject::setData( const uno::Any& Number, const uno::Any& Source, const uno::Any& Description, const uno::Any& HelpFile, const uno::Any& HelpContext )
164 : : throw (uno::RuntimeException)
165 : : {
166 [ - + ]: 4 : if ( !Number.hasValue() )
167 [ # # ]: 0 : throw uno::RuntimeException( rtl::OUString("Missing Required Paramater"), uno::Reference< uno::XInterface >() );
168 : 4 : Number >>= m_nNumber;
169 : 4 : Description >>= m_sDescription;
170 : 4 : Source >>= m_sSource;
171 : 4 : HelpFile >>= m_sHelpFile;
172 : 4 : HelpContext >>= m_nHelpContext;
173 : 4 : }
174 : :
175 : : // SbxErrObject
176 : 4 : SbxErrObject::SbxErrObject( const String& rName, const Any& rUnoObj )
177 : : : SbUnoObject( rName, rUnoObj )
178 [ + - ][ + - ]: 4 : , m_pErrObject( NULL )
[ # # ][ # # ]
179 : : {
180 : : OSL_TRACE("SbxErrObject::SbxErrObject ctor");
181 [ + - # # ]: 4 : rUnoObj >>= m_xErr;
182 [ + - ][ # # ]: 4 : if ( m_xErr.is() )
183 : : {
184 [ + - ][ + - ]: 4 : SetDfltProperty( uno::Reference< script::XDefaultProperty >( m_xErr, uno::UNO_QUERY_THROW )->getDefaultPropertyName() ) ;
[ + - ][ + - ]
[ + - ][ + - ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
185 [ + - ][ # # ]: 4 : m_pErrObject = static_cast< ErrObject* >( m_xErr.get() );
[ # # ][ + - ]
186 : : }
187 : 4 : }
188 : :
189 [ + - ][ # # ]: 8 : SbxErrObject::~SbxErrObject()
190 : : {
191 : : OSL_TRACE("SbxErrObject::~SbxErrObject dtor");
192 [ + - ][ - + ]: 12 : }
[ # # ][ # # ]
[ # # ][ # # ]
193 : :
194 : : uno::Reference< vba::XErrObject >
195 : 34 : SbxErrObject::getUnoErrObject()
196 : : {
197 : 34 : SbxVariable* pVar = getErrObject();
198 : 34 : SbxErrObject* pGlobErr = static_cast< SbxErrObject* >( pVar );
199 : 34 : return pGlobErr->m_xErr;
200 : : }
201 : :
202 : : SbxVariableRef
203 : 38 : SbxErrObject::getErrObject()
204 : : {
205 [ + + ][ + - ]: 38 : static SbxVariableRef pGlobErr = new SbxErrObject( String( RTL_CONSTASCII_USTRINGPARAM("Err")), uno::makeAny( uno::Reference< vba::XErrObject >( new ErrObject() ) ) );
[ + - ][ + - ]
[ + - ][ + - ]
[ + - ][ + - ]
[ + - ][ + - ]
[ # # ]
206 : 38 : return pGlobErr;
207 : : }
208 : :
209 : 4 : void SbxErrObject::setNumberAndDescription( ::sal_Int32 _number, const ::rtl::OUString& _description )
210 : : throw (uno::RuntimeException)
211 : : {
212 [ + - ]: 4 : if( m_pErrObject != NULL )
213 [ + - ][ + - ]: 4 : m_pErrObject->setData( uno::makeAny( _number ), uno::Any(), uno::makeAny( _description ), uno::Any(), uno::Any() );
[ + - ]
214 : 4 : }
215 : :
216 : : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|