VSDXFieldList.h
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* libvisio
3  * Version: MPL 1.1 / GPLv2+ / LGPLv2+
4  *
5  * The contents of this file are subject to the Mozilla Public License Version
6  * 1.1 (the "License"); you may not use this file except in compliance with
7  * the License or as specified alternatively below. You may obtain a copy of
8  * the License at http://www.mozilla.org/MPL/
9  *
10  * Software distributed under the License is distributed on an "AS IS" basis,
11  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
12  * for the specific language governing rights and limitations under the
13  * License.
14  *
15  * Major Contributor(s):
16  * Copyright (C) 2011 Fridrich Strba <fridrich.strba@bluewin.ch>
17  * Copyright (C) 2011 Eilidh McAdam <tibbylickle@gmail.com>
18  *
19  *
20  * All Rights Reserved.
21  *
22  * For minor contributions see the git repository.
23  *
24  * Alternatively, the contents of this file may be used under the terms of
25  * either the GNU General Public License Version 2 or later (the "GPLv2+"), or
26  * the GNU Lesser General Public License Version 2 or later (the "LGPLv2+"),
27  * in which case the provisions of the GPLv2+ or the LGPLv2+ are applicable
28  * instead of those above.
29  */
30 
31 #ifndef __VSDXFIELDLIST_H__
32 #define __VSDXFIELDLIST_H__
33 
34 #include <vector>
35 #include <map>
36 #include <libwpd/libwpd.h>
37 #include "VSDXDocumentStructure.h"
38 #include "VSDXTypes.h"
39 
40 namespace libvisio
41 {
42 
43 class VSDXCollector;
44 
46 {
47 public:
49  virtual ~VSDXFieldListElement() {}
50  virtual void handle(VSDXCollector *collector) = 0;
51  virtual VSDXFieldListElement *clone() = 0;
52  virtual WPXString getString(const std::map<unsigned, WPXString>&) = 0;
53  virtual void setNameId(int) = 0;
54  virtual void setFormat(unsigned short) = 0;
55  virtual void setValue(double) = 0;
56 };
57 
59 {
60 public:
61  VSDXTextField(unsigned id, unsigned level, int nameId, int formatStringId)
62  : m_id(id),
63  m_level(level),
64  m_nameId(nameId),
65  m_formatStringId(formatStringId) {}
67  void handle(VSDXCollector *collector);
69  WPXString getString(const std::map<unsigned, WPXString> &strVec);
70  void setNameId(int nameId);
71  void setFormat(unsigned short) {}
72  void setValue(double) {}
73 private:
74  unsigned m_id, m_level;
76 };
77 
79 {
80 public:
81  VSDXNumericField(unsigned id, unsigned level, unsigned short format, double number, int formatStringId)
82  : m_id(id),
83  m_level(level),
84  m_format(format),
85  m_number(number),
86  m_formatStringId(formatStringId) {}
88  void handle(VSDXCollector *collector);
90  WPXString getString(const std::map<unsigned, WPXString> &);
91  void setNameId(int) {}
92  void setFormat(unsigned short format);
93  void setValue(double number);
94 private:
95  WPXString datetimeToString(const char *format, double datetime);
96  unsigned m_id, m_level;
97  unsigned short m_format;
98  double m_number;
100 };
101 
103 {
104 public:
105  VSDXFieldList();
106  VSDXFieldList(const VSDXFieldList &fieldList);
107  ~VSDXFieldList();
108  VSDXFieldList &operator=(const VSDXFieldList &fieldList);
109  void setElementsOrder(const std::vector<unsigned> &m_elementsOrder);
110  void addFieldList(unsigned id, unsigned level);
111  void addTextField(unsigned id, unsigned level, int nameId, int formatStringId);
112  void addNumericField(unsigned id, unsigned level, unsigned short format, double number, int formatStringId);
113  void addClonedField(unsigned id);
114  void handle(VSDXCollector *collector);
115  void clear();
116  unsigned long size() const
117  {
118  return (unsigned long)m_elements.size();
119  }
120  bool empty() const
121  {
122  return (m_elements.empty());
123  }
124  VSDXFieldListElement *getElement(unsigned index);
125 private:
126  std::map<unsigned, VSDXFieldListElement *> m_elements;
127  std::vector<unsigned> m_elementsOrder;
128  unsigned m_id, m_level;
129 };
130 
131 } // namespace libvisio
132 
133 #endif // __VSDXFIELDLIST_H__
134 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */

Generated for libvisio by doxygen 1.8.1