Version 7.6.3.2-android, tag libreoffice-7.6.3.2-android
[LibreOffice.git] / sc / source / ui / app / uiitems.cxx
blobca3062c9fe30a774fb3ab9ffefeab37637417df6
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
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>
23 #include <dpsave.hxx>
24 #include <queryparam.hxx>
26 #include <osl/diagnose.h>
27 #include <editeng/editobj.hxx>
28 #include <utility>
30 /**
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 ),
39 aEndPos ( rEndPos ),
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
84 /**
85 * Adapt Views when inserting/deleting a table
87 ScTablesHint::ScTablesHint(sal_uInt16 nNewId, SCTAB nTable1, SCTAB nTable2) :
88 nId( nNewId ),
89 nTab1( nTable1 ),
90 nTab2( nTable2 )
94 ScTablesHint::~ScTablesHint()
98 ScIndexHint::ScIndexHint(SfxHintId nNewId, sal_uInt16 nIdx) :
99 SfxHint( nNewId ),
100 nIndex( 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();
160 return true;
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 )
173 if (pQueryData)
174 mpQueryData.reset(new ScQueryParam(*pQueryData));
175 else
176 mpQueryData.reset(new ScQueryParam);
179 ScQueryItem::ScQueryItem( sal_uInt16 nWhichP,
180 const ScQueryParam* pQueryData ) :
181 SfxPoolItem ( nWhichP ),
182 pViewData ( nullptr ),
183 bIsAdvanced ( false )
185 if (pQueryData)
186 mpQueryData.reset(new ScQueryParam(*pQueryData));
187 else
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)
206 if (pSource)
208 aAdvSource = *pSource;
209 bIsAdvanced = true;
211 else
212 bIsAdvanced = false;
215 const ScQueryParam& ScQueryItem::GetQueryData() const
217 return *mpQueryData;
220 bool ScQueryItem::GetAdvancedQuerySource(ScRange& rSource) const
222 rSource = aAdvSource;
223 return bIsAdvanced;
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();
274 return true;
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);
301 bool bEqual = false;
303 if ( !pUserList || !r.pUserList )
304 bEqual = ( !pUserList && !r.pUserList );
305 else
306 bEqual = ( *pUserList == *(r.pUserList) );
308 return bEqual;
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(
325 sal_uInt16 nWhichP,
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
354 if ( pData )
355 pSaveData.reset( new ScDPSaveData(*pData) );
356 else
357 pSaveData.reset( new ScDPSaveData );
358 if ( pRange ) aDestRange = *pRange;
359 bNewSheet = bNew;
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: */