1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2000, 2010 Oracle and/or its affiliates.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * This file is part of OpenOffice.org.
10  *
11  * OpenOffice.org is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * OpenOffice.org is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License version 3 for more details
19  * (a copy is included in the LICENSE file that accompanied this code).
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * version 3 along with OpenOffice.org.  If not, see
23  * <http://www.openoffice.org/license.html>
24  * for a copy of the LGPLv3 License.
25  *
26  ************************************************************************/
27 #include "precompiled_reportdesign.hxx"
28 #include "GroupExchange.hxx"
29 #include <sot/formats.hxx>
30 #include <sot/storage.hxx>
31 
32 namespace rptui
33 {
34 	using namespace ::com::sun::star;
35 	using namespace ::com::sun::star::uno;
36 	using namespace ::com::sun::star::beans;
37 
38     sal_uInt32 OGroupExchange::getReportGroupId()
39     {
40         static sal_uInt32 s_nReportFormat = (sal_uInt32)-1;
41 		if ( (sal_uInt32)-1 == s_nReportFormat )
42 		{
43 			s_nReportFormat = SotExchange::RegisterFormatName(String::CreateFromAscii("application/x-openoffice;windows_formatname=\"reportdesign.GroupFormat\"" ));
44 			OSL_ENSURE((sal_uInt32)-1 != s_nReportFormat, "Bad exchange id!");
45         }
46         return s_nReportFormat;
47     }
48 	OGroupExchange::OGroupExchange(const uno::Sequence< uno::Any >& _aGroupRow)
49 		: m_aGroupRow(_aGroupRow)
50 	{
51 	}
52 	// -----------------------------------------------------------------------------
53 	void OGroupExchange::AddSupportedFormats()
54 	{
55 		if ( m_aGroupRow.getLength() )
56         {
57 			AddFormat(OGroupExchange::getReportGroupId());
58         }
59 	}
60 	// -----------------------------------------------------------------------------
61 	sal_Bool OGroupExchange::GetData( const ::com::sun::star::datatransfer::DataFlavor& rFlavor )
62 	{
63 		sal_uLong nFormat = SotExchange::GetFormat(rFlavor);
64 		if(nFormat == OGroupExchange::getReportGroupId() )
65 		{
66 			return SetAny(uno::makeAny(m_aGroupRow),rFlavor);
67 		}
68 		return sal_False;
69 	}
70 	// -----------------------------------------------------------------------------
71 	void OGroupExchange::ObjectReleased()
72 	{
73 		m_aGroupRow.realloc(0);
74 	}
75 	// -----------------------------------------------------------------------------
76 }
77