~ubuntu-branches/ubuntu/intrepid/bibletime/intrepid

« back to all changes in this revision

Viewing changes to bibletime/backend/cswordtreekey.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Ralph Janke
  • Date: 2008-05-10 15:18:16 UTC
  • mfrom: (1.1.6 upstream) (3.1.1 lenny)
  • Revision ID: james.westby@ubuntu.com-20080510151816-bqp8y1to705zd0fm
Tags: 1.6.5.1-1
* New upstream version (Closes: #441161, #271502)
* fixes for new autotools and gcc 4.3 (Closes: #407291)
* added poxml to Build-Depends
* No DFSG necessary anymore since biblestudy howto has 
  now Commons Licence 
* Added libclucene-dev to dev-depends (Closes: #436677)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*********
 
2
*
 
3
* This file is part of BibleTime's source code, http://www.bibletime.info/.
 
4
*
 
5
* Copyright 1999-2007 by the BibleTime developers.
 
6
* The BibleTime source code is licensed under the GNU General Public License version 2.0.
 
7
*
 
8
**********/
 
9
 
 
10
 
 
11
 
 
12
#include "cswordtreekey.h"
 
13
#include "cswordbookmoduleinfo.h"
 
14
 
 
15
#include <qtextcodec.h>
 
16
 
 
17
CSwordTreeKey::CSwordTreeKey( const CSwordTreeKey& k ) : CSwordKey(k), TreeKeyIdx(k) {}
 
18
 
 
19
CSwordTreeKey::CSwordTreeKey( const TreeKeyIdx *k, CSwordModuleInfo* module ) : CSwordKey(module), TreeKeyIdx(*k) {}
 
20
 
 
21
CSwordTreeKey* CSwordTreeKey::copy() const {
 
22
        return new CSwordTreeKey(*this);
 
23
}
 
24
 
 
25
const QString CSwordTreeKey::getLocalNameUnicode() const
 
26
{
 
27
        Q_ASSERT(m_module);
 
28
        CSwordTreeKey* nonconst_this = const_cast<CSwordTreeKey*>(this);
 
29
        if (!m_module || m_module->isUnicode()) {
 
30
                return QString::fromUtf8(nonconst_this->getLocalName());
 
31
        } else {
 
32
                QTextCodec *codec = QTextCodec::codecForName("CP1252");
 
33
                return codec->toUnicode(nonconst_this->getLocalName());
 
34
        }
 
35
}
 
36
 
 
37
/** Returns the key of this instance */
 
38
const QString CSwordTreeKey::key() const {
 
39
        Q_ASSERT(m_module);
 
40
        if (!m_module || m_module->isUnicode()) {
 
41
                return QString::fromUtf8(getText());
 
42
        } else {
 
43
                QTextCodec *codec = QTextCodec::codecForName("CP1252");
 
44
                return codec->toUnicode(getText());
 
45
        }
 
46
}
 
47
 
 
48
/** Returns the raw key for use by Sword */
 
49
const char* CSwordTreeKey::rawKey() const {
 
50
        return getText();
 
51
}
 
52
 
 
53
const bool CSwordTreeKey::key( const QString& newKey ) {
 
54
        Q_ASSERT(m_module);
 
55
        if (!m_module || m_module->isUnicode()) {
 
56
                return key((const char*)newKey.utf8());
 
57
        } else {
 
58
                QTextCodec *codec = QTextCodec::codecForName("CP1252");
 
59
                return key((const char*)codec->fromUnicode(newKey));
 
60
        }
 
61
}
 
62
 
 
63
const bool CSwordTreeKey::key( const char* newKey ) {
 
64
        Q_ASSERT(newKey);
 
65
 
 
66
        if (newKey) {
 
67
                TreeKeyIdx::operator = (newKey);
 
68
        }
 
69
        else {
 
70
                root();
 
71
        }
 
72
 
 
73
        return !Error();
 
74
}
 
75
 
 
76
CSwordModuleInfo* const CSwordTreeKey::module( CSwordModuleInfo* const newModule ) {
 
77
        if (newModule && (newModule != m_module) && (newModule->type() == CSwordModuleInfo::GenericBook) ) {
 
78
                m_module = newModule;
 
79
 
 
80
                const QString oldKey = key();
 
81
 
 
82
                CSwordBookModuleInfo* newBook = dynamic_cast<CSwordBookModuleInfo*>(newModule);
 
83
                copyFrom( *(newBook->tree()) );
 
84
 
 
85
                key(oldKey); //try to restore our old key
 
86
 
 
87
                //set the key to the root node
 
88
                root();
 
89
                firstChild();
 
90
        }
 
91
 
 
92
        return m_module;
 
93
}
 
94
 
 
95
/** Assignment operator. */
 
96
CSwordTreeKey& CSwordTreeKey::operator = (const QString& keyname ) {
 
97
                        key(keyname);
 
98
                        return *this;
 
99
                }