VSDFieldList.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 __VSDFIELDLIST_H__
32 #define __VSDFIELDLIST_H__
33 
34 #include <vector>
35 #include <map>
36 #include <libwpd/libwpd.h>
37 #include "VSDDocumentStructure.h"
38 #include "VSDTypes.h"
39 
40 namespace libvisio
41 {
42 
43 class VSDCollector;
44 
46 {
47 public:
49  virtual ~VSDFieldListElement() {}
50  virtual void handle(VSDCollector *collector) const = 0;
51  virtual VSDFieldListElement *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  VSDTextField(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(VSDCollector *collector) const;
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  VSDNumericField(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(VSDCollector *collector) const;
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  VSDFieldList();
106  VSDFieldList(const VSDFieldList &fieldList);
107  ~VSDFieldList();
108  VSDFieldList &operator=(const VSDFieldList &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(VSDCollector *collector) const;
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  VSDFieldListElement *getElement(unsigned index);
125 private:
126  std::map<unsigned, VSDFieldListElement *> m_elements;
127  std::vector<unsigned> m_elementsOrder;
128  unsigned m_id, m_level;
129 };
130 
131 } // namespace libvisio
132 
133 #endif // __VSDFIELDLIST_H__
134 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */
void addFieldList(unsigned id, unsigned level)
Definition: VSDFieldList.cpp:232
unsigned m_level
Definition: VSDFieldList.h:74
~VSDNumericField()
Definition: VSDFieldList.h:87
void addTextField(unsigned id, unsigned level, int nameId, int formatStringId)
Definition: VSDFieldList.cpp:238
void handle(VSDCollector *collector) const
Definition: VSDFieldList.cpp:248
virtual void setValue(double)=0
unsigned m_id
Definition: VSDFieldList.h:128
virtual void setFormat(unsigned short)=0
VSDFieldListElement()
Definition: VSDFieldList.h:48
void addNumericField(unsigned id, unsigned level, unsigned short format, double number, int formatStringId)
Definition: VSDFieldList.cpp:243
~VSDFieldList()
Definition: VSDFieldList.cpp:220
Definition: VSDFieldList.h:45
VSDFieldListElement * clone()
Definition: VSDFieldList.cpp:65
WPXString getString(const std::map< unsigned, WPXString > &)
Definition: VSDFieldList.cpp:86
VSDFieldListElement * getElement(unsigned index)
Definition: VSDFieldList.cpp:279
void setNameId(int nameId)
Definition: VSDFieldList.cpp:54
VSDFieldListElement * clone()
Definition: VSDFieldList.cpp:40
VSDTextField(unsigned id, unsigned level, int nameId, int formatStringId)
Definition: VSDFieldList.h:61
WPXString datetimeToString(const char *format, double datetime)
Definition: VSDFieldList.cpp:72
void handle(VSDCollector *collector) const
Definition: VSDFieldList.cpp:35
VSDFieldList & operator=(const VSDFieldList &fieldList)
Definition: VSDFieldList.cpp:205
unsigned short m_format
Definition: VSDFieldList.h:97
void addClonedField(unsigned id)
void setFormat(unsigned short format)
Definition: VSDFieldList.cpp:176
int m_formatStringId
Definition: VSDFieldList.h:99
Definition: VSDCollector.h:41
Definition: VSDFieldList.h:102
virtual void setNameId(int)=0
virtual void handle(VSDCollector *collector) const =0
void setFormat(unsigned short)
Definition: VSDFieldList.h:71
int m_nameId
Definition: VSDFieldList.h:75
VSDNumericField(unsigned id, unsigned level, unsigned short format, double number, int formatStringId)
Definition: VSDFieldList.h:81
virtual WPXString getString(const std::map< unsigned, WPXString > &)=0
Definition: VSDFieldList.h:58
double m_number
Definition: VSDFieldList.h:98
void clear()
Definition: VSDFieldList.cpp:271
virtual VSDFieldListElement * clone()=0
WPXString getString(const std::map< unsigned, WPXString > &strVec)
Definition: VSDFieldList.cpp:45
void setNameId(int)
Definition: VSDFieldList.h:91
unsigned m_level
Definition: VSDFieldList.h:96
bool empty() const
Definition: VSDFieldList.h:120
unsigned long size() const
Definition: VSDFieldList.h:116
int m_formatStringId
Definition: VSDFieldList.h:75
void setValue(double number)
Definition: VSDFieldList.cpp:180
void handle(VSDCollector *collector) const
Definition: VSDFieldList.cpp:60
VSDFieldList()
Definition: VSDFieldList.cpp:186
Definition: VSDFieldList.h:78
unsigned m_id
Definition: VSDFieldList.h:96
void setElementsOrder(const std::vector< unsigned > &m_elementsOrder)
Definition: VSDFieldList.cpp:225
void setValue(double)
Definition: VSDFieldList.h:72
unsigned m_id
Definition: VSDFieldList.h:74
virtual ~VSDFieldListElement()
Definition: VSDFieldList.h:49
~VSDTextField()
Definition: VSDFieldList.h:66
std::map< unsigned, VSDFieldListElement * > m_elements
Definition: VSDFieldList.h:126
unsigned m_level
Definition: VSDFieldList.h:128
std::vector< unsigned > m_elementsOrder
Definition: VSDFieldList.h:127

Generated for libvisio by doxygen 1.8.5