1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
3 * This file is part of the LibreOffice project.
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/.
9 * This file incorporates work covered by the following license notice:
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 .
20 #include <uiitems.hxx>
22 #include <userlist.hxx>
24 #include <queryparam.hxx>
26 #include <osl/diagnose.h>
27 #include <editeng/editobj.hxx>
31 * Status update for entry field
33 ScInputStatusItem::ScInputStatusItem(
34 sal_uInt16 nWhichP
, const ScAddress
& rCurPos
, const ScAddress
& rStartPos
,
35 const ScAddress
& rEndPos
, OUString _aString
, const EditTextObject
* pData
) :
36 SfxPoolItem ( nWhichP
),
37 aCursorPos ( rCurPos
),
38 aStartPos ( rStartPos
),
40 aString (std::move( _aString
)),
41 pEditData ( pData
? pData
->Clone() : nullptr ),
42 mpMisspellRanges(nullptr)
46 ScInputStatusItem::ScInputStatusItem( const ScInputStatusItem
& rItem
) :
47 SfxPoolItem ( rItem
),
48 aCursorPos ( rItem
.aCursorPos
),
49 aStartPos ( rItem
.aStartPos
),
50 aEndPos ( rItem
.aEndPos
),
51 aString ( rItem
.aString
),
52 pEditData ( rItem
.pEditData
? rItem
.pEditData
->Clone() : nullptr ),
53 mpMisspellRanges(rItem
.mpMisspellRanges
)
57 ScInputStatusItem::~ScInputStatusItem()
61 bool ScInputStatusItem::operator==( const SfxPoolItem
& rItem
) const
63 assert(SfxPoolItem::operator==(rItem
));
65 return (aStartPos
== static_cast<const ScInputStatusItem
&>(rItem
).aStartPos
)
66 && (aEndPos
== static_cast<const ScInputStatusItem
&>(rItem
).aEndPos
)
67 && (aCursorPos
== static_cast<const ScInputStatusItem
&>(rItem
).aCursorPos
)
68 && (aString
== static_cast<const ScInputStatusItem
&>(rItem
).aString
);
69 //TODO: Compare Edit data!
72 ScInputStatusItem
* ScInputStatusItem::Clone( SfxItemPool
* ) const
74 return new ScInputStatusItem( *this );
77 void ScInputStatusItem::SetMisspellRanges( const std::vector
<editeng::MisspellRanges
>* pRanges
)
79 mpMisspellRanges
= pRanges
;
82 // ScPaintHint was moved to hints.cxx
85 * Adapt Views when inserting/deleting a table
87 ScTablesHint::ScTablesHint(sal_uInt16 nNewId
, SCTAB nTable1
, SCTAB nTable2
) :
94 ScTablesHint::~ScTablesHint()
98 ScIndexHint::ScIndexHint(SfxHintId nNewId
, sal_uInt16 nIdx
) :
104 ScIndexHint::~ScIndexHint()
109 * Create new EditView for Cursorposition
111 ScEditViewHint::ScEditViewHint( ScEditEngineDefaulter
* pEngine
, const ScAddress
& rCurPos
) :
112 pEditEngine( pEngine
),
113 aCursorPos( rCurPos
)
117 ScEditViewHint::~ScEditViewHint()
122 * Data for the sorting dialog
124 ScSortItem::ScSortItem( sal_uInt16 nWhichP
,
125 ScViewData
* ptrViewData
,
126 const ScSortParam
* pSortData
) :
127 SfxPoolItem ( nWhichP
),
128 pViewData ( ptrViewData
)
130 if ( pSortData
) theSortData
= *pSortData
;
133 ScSortItem::ScSortItem( sal_uInt16 nWhichP
,
134 const ScSortParam
* pSortData
) :
135 SfxPoolItem ( nWhichP
),
136 pViewData ( nullptr )
138 if ( pSortData
) theSortData
= *pSortData
;
141 bool ScSortItem::operator==( const SfxPoolItem
& rItem
) const
143 assert(SfxPoolItem::operator==(rItem
));
145 const ScSortItem
& rOther
= static_cast<const ScSortItem
&>(rItem
);
147 return ( (pViewData
== rOther
.pViewData
)
148 && (theSortData
== rOther
.theSortData
) );
151 ScSortItem
* ScSortItem::Clone( SfxItemPool
* ) const
153 return new ScSortItem( *this );
156 bool ScSortItem::QueryValue( css::uno::Any
& rVal
, sal_uInt8
/* nMemberUd */ ) const
158 // Return empty value as there is no useful conversion
159 rVal
= css::uno::Any();
164 * Data for the Filter dialog
166 ScQueryItem::ScQueryItem( sal_uInt16 nWhichP
,
167 ScViewData
* ptrViewData
,
168 const ScQueryParam
* pQueryData
) :
169 SfxPoolItem ( nWhichP
),
170 pViewData ( ptrViewData
),
171 bIsAdvanced ( false )
174 mpQueryData
.reset(new ScQueryParam(*pQueryData
));
176 mpQueryData
.reset(new ScQueryParam
);
179 ScQueryItem::ScQueryItem( sal_uInt16 nWhichP
,
180 const ScQueryParam
* pQueryData
) :
181 SfxPoolItem ( nWhichP
),
182 pViewData ( nullptr ),
183 bIsAdvanced ( false )
186 mpQueryData
.reset(new ScQueryParam(*pQueryData
));
188 mpQueryData
.reset(new ScQueryParam
);
191 ScQueryItem::ScQueryItem( const ScQueryItem
& rItem
) :
192 SfxPoolItem ( rItem
),
193 mpQueryData(new ScQueryParam(*rItem
.mpQueryData
)),
194 pViewData ( rItem
.pViewData
),
195 aAdvSource ( rItem
.aAdvSource
),
196 bIsAdvanced ( rItem
.bIsAdvanced
)
200 ScQueryItem::~ScQueryItem()
204 void ScQueryItem::SetAdvancedQuerySource(const ScRange
* pSource
)
208 aAdvSource
= *pSource
;
215 const ScQueryParam
& ScQueryItem::GetQueryData() const
220 bool ScQueryItem::GetAdvancedQuerySource(ScRange
& rSource
) const
222 rSource
= aAdvSource
;
226 bool ScQueryItem::operator==( const SfxPoolItem
& rItem
) const
228 assert(SfxPoolItem::operator==(rItem
));
230 const ScQueryItem
& rQueryItem
= static_cast<const ScQueryItem
&>(rItem
);
232 return ( (pViewData
== rQueryItem
.pViewData
)
233 && (bIsAdvanced
== rQueryItem
.bIsAdvanced
)
234 && (aAdvSource
== rQueryItem
.aAdvSource
)
235 && (*mpQueryData
== *rQueryItem
.mpQueryData
) );
238 ScQueryItem
* ScQueryItem::Clone( SfxItemPool
* ) const
240 return new ScQueryItem( *this );
244 * Data for the SubTotal dialog
246 ScSubTotalItem::ScSubTotalItem( sal_uInt16 nWhichP
,
247 ScViewData
* ptrViewData
,
248 const ScSubTotalParam
* pSubTotalData
) :
249 SfxPoolItem ( nWhichP
),
250 pViewData ( ptrViewData
)
252 if ( pSubTotalData
) theSubTotalData
= *pSubTotalData
;
255 bool ScSubTotalItem::operator==( const SfxPoolItem
& rItem
) const
257 assert(SfxPoolItem::operator==(rItem
));
259 const ScSubTotalItem
& rSTItem
= static_cast<const ScSubTotalItem
&>(rItem
);
261 return ( (pViewData
== rSTItem
.pViewData
)
262 && (theSubTotalData
== rSTItem
.theSubTotalData
) );
265 ScSubTotalItem
* ScSubTotalItem::Clone( SfxItemPool
* ) const
267 return new ScSubTotalItem( *this );
270 bool ScSubTotalItem::QueryValue( css::uno::Any
& rVal
, sal_uInt8
/* nMemberUd */ ) const
272 // Return empty value as there is no useful conversion
273 rVal
= css::uno::Any();
278 * Transporter for the UserLIst dialog
280 ScUserListItem::ScUserListItem( sal_uInt16 nWhichP
)
281 : SfxPoolItem ( nWhichP
)
285 ScUserListItem::ScUserListItem( const ScUserListItem
& rItem
)
286 : SfxPoolItem ( rItem
)
288 if ( rItem
.pUserList
)
289 pUserList
.reset( new ScUserList( *(rItem
.pUserList
) ) );
292 ScUserListItem::~ScUserListItem()
296 bool ScUserListItem::operator==( const SfxPoolItem
& rItem
) const
298 assert(SfxPoolItem::operator==(rItem
));
300 const ScUserListItem
& r
= static_cast<const ScUserListItem
&>(rItem
);
303 if ( !pUserList
|| !r
.pUserList
)
304 bEqual
= ( !pUserList
&& !r
.pUserList
);
306 bEqual
= ( *pUserList
== *(r
.pUserList
) );
311 ScUserListItem
* ScUserListItem::Clone( SfxItemPool
* ) const
313 return new ScUserListItem( *this );
316 void ScUserListItem::SetUserList( const ScUserList
& rUserList
)
318 pUserList
.reset( new ScUserList( rUserList
) );
322 * Data for the Consolidate dialog
324 ScConsolidateItem::ScConsolidateItem(
326 const ScConsolidateParam
* pConsolidateData
) :
327 SfxPoolItem ( nWhichP
)
329 if ( pConsolidateData
) theConsData
= *pConsolidateData
;
332 bool ScConsolidateItem::operator==( const SfxPoolItem
& rItem
) const
334 assert(SfxPoolItem::operator==(rItem
));
336 const ScConsolidateItem
& rCItem
= static_cast<const ScConsolidateItem
&>(rItem
);
338 return ( theConsData
== rCItem
.theConsData
);
341 ScConsolidateItem
* ScConsolidateItem::Clone( SfxItemPool
* ) const
343 return new ScConsolidateItem( *this );
347 * Data for the Pivot dialog
349 ScPivotItem::ScPivotItem( sal_uInt16 nWhichP
, const ScDPSaveData
* pData
,
350 const ScRange
* pRange
, bool bNew
) :
351 SfxPoolItem ( nWhichP
)
353 // pSaveData must always exist
355 pSaveData
.reset( new ScDPSaveData(*pData
) );
357 pSaveData
.reset( new ScDPSaveData
);
358 if ( pRange
) aDestRange
= *pRange
;
362 ScPivotItem::ScPivotItem( const ScPivotItem
& rItem
) :
363 SfxPoolItem ( rItem
),
364 aDestRange ( rItem
.aDestRange
),
365 bNewSheet ( rItem
.bNewSheet
)
367 assert(rItem
.pSaveData
&& "pSaveData");
368 pSaveData
.reset( new ScDPSaveData(*rItem
.pSaveData
) );
371 ScPivotItem::~ScPivotItem()
375 bool ScPivotItem::operator==( const SfxPoolItem
& rItem
) const
377 assert(SfxPoolItem::operator==(rItem
));
379 const ScPivotItem
& rPItem
= static_cast<const ScPivotItem
&>(rItem
);
380 OSL_ENSURE( pSaveData
&& rPItem
.pSaveData
, "pSaveData" );
381 return ( *pSaveData
== *rPItem
.pSaveData
&&
382 aDestRange
== rPItem
.aDestRange
&&
383 bNewSheet
== rPItem
.bNewSheet
);
386 ScPivotItem
* ScPivotItem::Clone( SfxItemPool
* ) const
388 return new ScPivotItem( *this );
392 * Data for the Solver dialog
394 ScSolveItem::ScSolveItem( sal_uInt16 nWhichP
,
395 const ScSolveParam
* pSolveData
)
396 : SfxPoolItem ( nWhichP
)
398 if ( pSolveData
) theSolveData
= *pSolveData
;
401 bool ScSolveItem::operator==( const SfxPoolItem
& rItem
) const
403 assert(SfxPoolItem::operator==(rItem
));
405 const ScSolveItem
& rPItem
= static_cast<const ScSolveItem
&>(rItem
);
407 return ( theSolveData
== rPItem
.theSolveData
);
410 ScSolveItem
* ScSolveItem::Clone( SfxItemPool
* ) const
412 return new ScSolveItem( *this );
416 * Data for the TabOp dialog
418 ScTabOpItem::ScTabOpItem( sal_uInt16 nWhichP
,
419 const ScTabOpParam
* pTabOpData
)
420 : SfxPoolItem ( nWhichP
)
422 if ( pTabOpData
) theTabOpData
= *pTabOpData
;
425 bool ScTabOpItem::operator==( const SfxPoolItem
& rItem
) const
427 assert(SfxPoolItem::operator==(rItem
));
429 const ScTabOpItem
& rPItem
= static_cast<const ScTabOpItem
&>(rItem
);
431 return ( theTabOpData
== rPItem
.theTabOpData
);
434 ScTabOpItem
* ScTabOpItem::Clone( SfxItemPool
* ) const
436 return new ScTabOpItem( *this );
439 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */