update dev300-m58
[ooovba.git] / shell / source / win32 / shlxthandler / propsheets / document_statistic.hxx
blob6ef3bfbd67831e11e7d070ce6d9fc47297d0eaa9
1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * Copyright 2008 by Sun Microsystems, Inc.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * $RCSfile: document_statistic.hxx,v $
10 * $Revision: 1.5 $
12 * This file is part of OpenOffice.org.
14 * OpenOffice.org is free software: you can redistribute it and/or modify
15 * it under the terms of the GNU Lesser General Public License version 3
16 * only, as published by the Free Software Foundation.
18 * OpenOffice.org is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU Lesser General Public License version 3 for more details
22 * (a copy is included in the LICENSE file that accompanied this code).
24 * You should have received a copy of the GNU Lesser General Public License
25 * version 3 along with OpenOffice.org. If not, see
26 * <http://www.openoffice.org/license.html>
27 * for a copy of the LGPLv3 License.
29 ************************************************************************/
31 #ifndef DOCUMENT_STATISTIC_HXX_INCLUDED
32 #define DOCUMENT_STATISTIC_HXX_INCLUDED
34 #include <utility>
35 #include <string>
36 #include <vector>
37 #include "internal/metainforeader.hxx"
40 //------------------------------------
42 //------------------------------------
44 struct statistic_item
46 statistic_item();
48 statistic_item(
49 const std::wstring& title,
50 const std::wstring& value,
51 bool editable) :
52 title_(title),
53 value_(value),
54 editable_(editable)
57 std::wstring title_;
58 std::wstring value_;
59 bool editable_;
62 //------------------------------------
64 //------------------------------------
66 typedef std::vector<statistic_item> statistic_item_list_t;
67 typedef std::pair<std::wstring, statistic_item_list_t> statistic_group_t;
68 typedef std::vector<statistic_group_t> statistic_group_list_t;
70 //------------------------------------
72 //------------------------------------
74 class document_statistic_reader;
75 typedef std::auto_ptr<document_statistic_reader> document_statistic_reader_ptr;
77 document_statistic_reader_ptr create_document_statistic_reader(const std::string& document_name, CMetaInfoReader* meta_info_accessor);
79 //------------------------------------
81 //------------------------------------
83 class document_statistic_reader
85 public:
86 virtual ~document_statistic_reader();
88 void read(statistic_group_list_t* group_list);
90 std::string get_document_name() const;
92 protected:
93 document_statistic_reader(const std::string& document_name, CMetaInfoReader* meta_info_accessor);
95 virtual void fill_description_section(CMetaInfoReader *meta_info_accessor,statistic_group_list_t* group_list) = 0;
97 virtual void fill_origin_section( CMetaInfoReader *meta_info_accessor,statistic_group_list_t* group_list);
99 private:
100 std::string document_name_;
101 CMetaInfoReader* meta_info_accessor_;
103 friend document_statistic_reader_ptr create_document_statistic_reader(
104 const std::string& document_name, CMetaInfoReader* meta_info_accessor);
107 //------------------------------------
109 //------------------------------------
111 class writer_document_statistic_reader : public document_statistic_reader
113 protected:
114 writer_document_statistic_reader(const std::string& document_name, CMetaInfoReader* meta_info_accessor);
116 virtual void fill_description_section(CMetaInfoReader *meta_info_accessor, statistic_group_list_t* group_list);
118 friend document_statistic_reader_ptr create_document_statistic_reader(
119 const std::string& document_name, CMetaInfoReader* meta_info_accessor);
122 //------------------------------------
124 //------------------------------------
126 class calc_document_statistic_reader : public document_statistic_reader
128 protected:
129 calc_document_statistic_reader(const std::string& document_name, CMetaInfoReader* meta_info_accessor);
131 virtual void fill_description_section( CMetaInfoReader *meta_info_accessor,statistic_group_list_t* group_list);
133 friend document_statistic_reader_ptr create_document_statistic_reader(
134 const std::string& document_name, CMetaInfoReader* meta_info_accessor);
137 //------------------------------------
139 //------------------------------------
141 class draw_impress_math_document_statistic_reader : public document_statistic_reader
143 protected:
144 draw_impress_math_document_statistic_reader(const std::string& document_name, CMetaInfoReader* meta_info_accessor);
146 virtual void fill_description_section(CMetaInfoReader *meta_info_accessor, statistic_group_list_t* group_list);
148 friend document_statistic_reader_ptr create_document_statistic_reader(
149 const std::string& document_name, CMetaInfoReader* meta_info_accessor);
152 #endif