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 <osl/diagnose.h>
21 #include <com/sun/star/uno/Sequence.hxx>
26 using namespace com::sun::star::uno
;
28 #define SEL_TYPE_TABLE_TEXT 0
29 #define SEL_TYPE_LIST_TEXT 1
30 #define SEL_TYPE_TABLE_LIST 2
31 #define SEL_TYPE_BEZIER 3
32 #define SEL_TYPE_GRAPHIC 4
34 SwToolbarConfigItem::SwToolbarConfigItem( bool bWeb
) :
35 ConfigItem(bWeb
? OUString("Office.WriterWeb/ObjectBar") : OUString("Office.Writer/ObjectBar"),
36 ConfigItemMode::ReleaseTree
)
38 for(int i
= 0; i
<= SEL_TYPE_GRAPHIC
; ++i
)
39 m_aTbxIdArray
[i
] = -1;
41 Sequence
<OUString
> aNames
= GetPropertyNames();
42 Sequence
<Any
> aValues
= GetProperties(aNames
);
43 const Any
* pValues
= aValues
.getConstArray();
44 OSL_ENSURE(aValues
.getLength() == aNames
.getLength(), "GetProperties failed");
45 if(aValues
.getLength() == aNames
.getLength())
47 for(int nProp
= 0; nProp
< aNames
.getLength(); nProp
++)
49 if(pValues
[nProp
].hasValue())
52 pValues
[nProp
] >>= nVal
;
53 m_aTbxIdArray
[nProp
] = nVal
;
59 SwToolbarConfigItem::~SwToolbarConfigItem()
63 static sal_Int32
lcl_getArrayIndex(SelectionType nSelType
)
66 if(nSelType
& SelectionType::NumberList
)
68 if(nSelType
& SelectionType::Table
)
69 nRet
= SEL_TYPE_TABLE_LIST
;
71 nRet
= SEL_TYPE_LIST_TEXT
;
73 else if(nSelType
& SelectionType::Table
)
74 nRet
= SEL_TYPE_TABLE_TEXT
;
75 else if(nSelType
& SelectionType::Ornament
)
76 nRet
= SEL_TYPE_BEZIER
;
77 else if(nSelType
& SelectionType::Graphic
)
78 nRet
= SEL_TYPE_GRAPHIC
;
82 void SwToolbarConfigItem::SetTopToolbar(SelectionType nSelType
, ToolbarId eBarId
)
84 sal_Int32 nProp
= lcl_getArrayIndex(nSelType
);
87 m_aTbxIdArray
[nProp
] = static_cast<sal_Int32
>(eBarId
);
92 Sequence
<OUString
> SwToolbarConfigItem::GetPropertyNames()
94 static const char* aPropNames
[] =
96 "Selection/Table", // SEL_TYPE_TABLE_TEXT
97 "Selection/NumberedList", // SEL_TYPE_LIST_TEXT
98 "Selection/NumberedList_InTable", // SEL_TYPE_TABLE_LIST
99 "Selection/BezierObject", // SEL_TYPE_BEZIER
100 "Selection/Graphic" //SEL_TYPE_GRAPHIC
102 const int nCount
= 5;
103 Sequence
<OUString
> aNames(nCount
);
104 OUString
* pNames
= aNames
.getArray();
105 for(int i
= 0; i
< nCount
; i
++)
106 pNames
[i
] = OUString::createFromAscii(aPropNames
[i
]);
110 void SwToolbarConfigItem::ImplCommit()
112 Sequence
<OUString
> aNames
= GetPropertyNames();
114 Sequence
<Any
> aValues(aNames
.getLength());
115 Any
* pValues
= aValues
.getArray();
117 for(int nProp
= 0; nProp
< aNames
.getLength(); nProp
++)
118 pValues
[nProp
] <<= m_aTbxIdArray
[nProp
];
119 PutProperties(aNames
, aValues
);
122 void SwToolbarConfigItem::Notify( const css::uno::Sequence
< OUString
>& ) {}
124 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */