20#include "kptwbsdefinition.h"
27#include <tqstringlist.h>
34WBSDefinition::WBSDefinition() {
35 m_levelsEnabled = false;
37 m_defaultDef.code = "Number";
38 m_defaultDef.separator = ".";
40 m_codeLists.append(qMakePair(TQString( "Number"), i18n( "Number")));
41 m_codeLists.append(qMakePair(TQString( "Roman, upper case"), i18n( "Roman, Upper Case")));
42 m_codeLists.append(qMakePair(TQString( "Roman, lower case"), i18n( "Roman, Lower Case")));
43 m_codeLists.append(qMakePair(TQString( "Letter, upper case"), i18n( "Letter, Upper Case")));
44 m_codeLists.append(qMakePair(TQString( "Letter, lower case"), i18n( "Letter, Lower Case")));
47WBSDefinition::~WBSDefinition() {
50void WBSDefinition::clear() {
55TQString WBSDefinition::wbs(uint index, int level) {
56 if (isLevelsDefEnabled()) {
57 CodeDef def = levelsDef(level);
59 return code(def, index) + def.separator;
62 return code(m_defaultDef, index) + m_defaultDef.separator;
66TQString WBSDefinition::code(uint index, int level) {
67 if (isLevelsDefEnabled()) {
68 CodeDef def = levelsDef(level);
70 return code(def, index);
73 return code(m_defaultDef, index);
76TQString WBSDefinition::separator( int level) {
77 if (isLevelsDefEnabled()) {
78 CodeDef def = levelsDef(level);
83 return m_defaultDef.separator;
86void WBSDefinition::setLevelsDef(TQMap<int, CodeDef> def) {
91WBSDefinition::CodeDef WBSDefinition::levelsDef( int level) const {
92 return m_levelsDef.contains(level) ? m_levelsDef[level] : CodeDef();
95void WBSDefinition::setLevelsDef( int level, CodeDef def) {
96 m_levelsDef.insert(level, def);
99void WBSDefinition::setLevelsDef( int level, TQString c, TQString s) {
100 m_levelsDef.insert(level, CodeDef(c, s));
103bool WBSDefinition::level0Enabled() {
104 return m_levelsEnabled && !levelsDef(0).isEmpty();
107const TQChar Letters[] = { '?', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' };
109TQString WBSDefinition::code(CodeDef &def, uint index) {
110 if (def.code == "Number") {
111 return TQString( "%1").arg(index);
113 if (def.code == "Roman, lower case") {
114 return TQString( "%1").arg(toRoman(index));
116 if (def.code == "Roman, upper case") {
117 return TQString( "%1").arg(toRoman(index, true));
119 if (def.code == "Letter, lower case") {
123 return TQString( "%1").arg(Letters[index]);
125 if (def.code == "Letter, upper case") {
129 return TQString( "%1").arg(Letters[index].upper());
135const TQCString RNUnits[] = { "", "i", "ii", "iii", "iv", "v", "vi", "vii", "viii", "ix"};
136const TQCString RNTens[] = { "", "x", "xx", "xxx", "xl", "l", "lx", "lxx", "lxxx", "xc"};
137const TQCString RNHundreds[] = { "", "c", "cc", "ccc", "cd", "d", "dc", "dcc", "dccc", "cm"};
138const TQCString RNThousands[] = { "", "m", "mm", "mmm"};
140TQString WBSDefinition::toRoman( int n, bool upper )
143 TQString s = TQString::fromLatin1( RNThousands[ ( n / 1000 ) ] +
144 RNHundreds[ ( n / 100 ) % 10 ] +
145 RNTens[ ( n / 10 ) % 10 ] +
146 RNUnits[ ( n ) % 10 ] );
147 return upper ? s.upper() : s;
150 kdWarning()<< k_funcinfo << " n=" << n << endl;
151 return TQString::number( n );
155TQStringList WBSDefinition::codeList() {
157 TQValueList<TQPair<TQString, TQString> >::Iterator it;
158 for (it = m_codeLists.begin(); it != m_codeLists.end(); ++it) {
159 cl.append((*it).second);
164int WBSDefinition::defaultCodeIndex() const {
165 TQValueList<TQPair<TQString, TQString> >::const_iterator it;
167 for(it = m_codeLists.begin(); it != m_codeLists.end(); ++it) {
169 if (m_defaultDef.code == (*it).first)
175bool WBSDefinition::setDefaultCode(uint index) {
176 TQValueList<TQPair<TQString, TQString> >::const_iterator it = m_codeLists.at(index);
177 if (it == m_codeLists.end()) {
180 m_defaultDef.code = (*it).first;
184void WBSDefinition::setDefaultSeparator(TQString s) {
185 m_defaultDef.separator = s;
|