1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 23 24 // MARKER(update_precomp.py): autogen include statement, do not remove 25 #include "precompiled_ucb.hxx" 26 27 /************************************************************************** 28 TODO 29 ************************************************************************** 30 31 *************************************************************************/ 32 #include <com/sun/star/beans/Property.hpp> 33 #include <com/sun/star/beans/PropertyAttribute.hpp> 34 #include <com/sun/star/beans/PropertyValue.hpp> 35 #include <com/sun/star/ucb/CommandInfo.hpp> 36 #include <com/sun/star/ucb/InsertCommandArgument.hpp> 37 #include <com/sun/star/ucb/OpenCommandArgument2.hpp> 38 #include <com/sun/star/uno/Sequence.hxx> 39 #include <com/sun/star/util/DateTime.hpp> 40 #include <com/sun/star/ucb/TransferInfo.hpp> 41 #include "odma_content.hxx" 42 43 using namespace com::sun::star; 44 using namespace odma; 45 46 //========================================================================= 47 // 48 // Content implementation. 49 // 50 //========================================================================= 51 52 //========================================================================= 53 // 54 // IMPORTENT: If any property data ( name / type / ... ) are changed, then 55 // Content::getPropertyValues(...) must be adapted too! 56 // 57 //========================================================================= 58 59 // virtual 60 uno::Sequence< beans::Property > Content::getProperties( 61 const uno::Reference< ucb::XCommandEnvironment > & /*xEnv*/ ) 62 { 63 // @@@ Add additional properties... 64 65 // @@@ Note: If your data source supports adding/removing properties, 66 // you should implement the interface XPropertyContainer 67 // by yourself and supply your own logic here. The base class 68 // uses the service "com.sun.star.ucb.Store" to maintain 69 // Additional Core properties. But using server functionality 70 // is preferred! In fact you should return a table conatining 71 // even that dynamicly added properties. 72 73 // osl::Guard< osl::Mutex > aGuard( m_aMutex ); 74 75 //================================================================= 76 // 77 // Supported properties 78 // 79 //================================================================= 80 81 #define PROPERTY_COUNT 10 82 83 static beans::Property aPropertyInfoTable[] = 84 { 85 /////////////////////////////////////////////////////////////// 86 // Required properties 87 /////////////////////////////////////////////////////////////// 88 beans::Property( 89 rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "ContentType" ) ), 90 -1, 91 getCppuType( static_cast< const rtl::OUString * >( 0 ) ), 92 beans::PropertyAttribute::BOUND | beans::PropertyAttribute::READONLY 93 ), 94 beans::Property( 95 rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "IsDocument" ) ), 96 -1, 97 getCppuBooleanType(), 98 beans::PropertyAttribute::BOUND | beans::PropertyAttribute::READONLY 99 ), 100 beans::Property( 101 rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "IsFolder" ) ), 102 -1, 103 getCppuBooleanType(), 104 beans::PropertyAttribute::BOUND | beans::PropertyAttribute::READONLY 105 ), 106 beans::Property( 107 rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Title" ) ), 108 -1, 109 getCppuType( static_cast< const rtl::OUString * >( 0 ) ), 110 beans::PropertyAttribute::BOUND 111 ), 112 /////////////////////////////////////////////////////////////// 113 // Optional standard properties 114 /////////////////////////////////////////////////////////////// 115 beans::Property( 116 rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "DateCreated" ) ), 117 -1, 118 getCppuType(static_cast< const util::DateTime * >( 0 ) ), 119 beans::PropertyAttribute::BOUND | beans::PropertyAttribute::READONLY 120 ), 121 beans::Property( 122 rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "DateModified" ) ), 123 -1, 124 getCppuType(static_cast< const util::DateTime * >( 0 ) ), 125 beans::PropertyAttribute::BOUND | beans::PropertyAttribute::READONLY 126 ), 127 beans::Property( 128 rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "IsReadOnly" ) ), 129 -1, 130 getCppuBooleanType(), 131 beans::PropertyAttribute::BOUND | beans::PropertyAttribute::READONLY 132 ), 133 /////////////////////////////////////////////////////////////// 134 // New properties 135 /////////////////////////////////////////////////////////////// 136 beans::Property( 137 rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Author" ) ), 138 -1, 139 getCppuType( static_cast< const rtl::OUString * >( 0 ) ), 140 beans::PropertyAttribute::BOUND 141 ), 142 beans::Property( 143 rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Subject" ) ), 144 -1, 145 getCppuType( static_cast< const rtl::OUString * >( 0 ) ), 146 beans::PropertyAttribute::BOUND 147 ), 148 beans::Property( 149 rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Keywords" ) ), 150 -1, 151 getCppuType( static_cast< const rtl::OUString * >( 0 ) ), 152 beans::PropertyAttribute::BOUND 153 ) 154 }; 155 return uno::Sequence< 156 beans::Property >( aPropertyInfoTable, PROPERTY_COUNT ); 157 } 158 159 //========================================================================= 160 // virtual 161 uno::Sequence< ucb::CommandInfo > Content::getCommands( 162 const uno::Reference< ucb::XCommandEnvironment > & /*xEnv*/ ) 163 { 164 // @@@ Add additional commands... 165 166 // osl::Guard< osl::Mutex > aGuard( m_aMutex ); 167 168 //================================================================= 169 // 170 // Supported commands 171 // 172 //================================================================= 173 174 #define COMMAND_COUNT 8 175 176 static ucb::CommandInfo aCommandInfoTable[] = 177 { 178 /////////////////////////////////////////////////////////////// 179 // Required commands 180 /////////////////////////////////////////////////////////////// 181 ucb::CommandInfo( 182 rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "getCommandInfo" ) ), 183 -1, 184 getCppuVoidType() 185 ), 186 ucb::CommandInfo( 187 rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "getPropertySetInfo" ) ), 188 -1, 189 getCppuVoidType() 190 ), 191 ucb::CommandInfo( 192 rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "getPropertyValues" ) ), 193 -1, 194 getCppuType( 195 static_cast< uno::Sequence< beans::Property > * >( 0 ) ) 196 ), 197 ucb::CommandInfo( 198 rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "setPropertyValues" ) ), 199 -1, 200 getCppuType( 201 static_cast< uno::Sequence< beans::PropertyValue > * >( 0 ) ) 202 ), 203 /////////////////////////////////////////////////////////////// 204 // Optional standard commands 205 /////////////////////////////////////////////////////////////// 206 /* 207 ucb::CommandInfo( 208 rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "delete" ) ), 209 -1, 210 getCppuBooleanType() 211 ), 212 */ 213 ucb::CommandInfo( 214 rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "insert" ) ), 215 -1, 216 getCppuType( 217 static_cast< ucb::InsertCommandArgument * >( 0 ) ) 218 ), 219 ucb::CommandInfo( 220 rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "open" ) ), 221 -1, 222 getCppuType( static_cast< ucb::OpenCommandArgument2 * >( 0 ) ) 223 ), 224 ucb::CommandInfo( 225 rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "close" ) ), 226 -1, 227 getCppuVoidType( ) 228 ), 229 ucb::CommandInfo( 230 rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "transfer" ) ), 231 -1, 232 getCppuType( static_cast< ucb::TransferInfo * >( 0 ) ) 233 ) 234 235 /////////////////////////////////////////////////////////////// 236 // New commands 237 /////////////////////////////////////////////////////////////// 238 }; 239 240 return uno::Sequence< 241 ucb::CommandInfo >( aCommandInfoTable, COMMAND_COUNT ); 242 } 243 244