3
* This file is part of BibleTime's source code, http://www.bibletime.info/.
5
* Copyright 1999-2006 by the BibleTime developers.
6
* The BibleTime source code is licensed under the GNU General Public License version 2.0.
13
#include "chtmlreaddisplay.h"
14
#include "cplainwritedisplay.h"
15
#include "chtmlwritedisplay.h"
17
#include "backend/creferencemanager.h"
19
#include "util/ctoolclass.h"
23
#include <qclipboard.h>
24
#include <qpopupmenu.h>
28
#include <kapplication.h>
29
#include <kfiledialog.h>
33
CDisplayConnections::CDisplayConnections( CDisplay* display ) : m_display(display) {}
35
void CDisplayConnections::selectAll() {
36
m_display->selectAll();
39
void CDisplayConnections::saveAsHTML() {
40
m_display->save(CDisplay::HTMLText, CDisplay::Document);
43
void CDisplayConnections::saveAsPlain() {
44
m_display->save(CDisplay::PlainText, CDisplay::Document);
47
/** Emits the signal. */
48
void CDisplayConnections::emitReferenceClicked( const QString& module, const QString& key) {
49
emit referenceClicked( module, key );
52
/** Emits the signal. */
53
void CDisplayConnections::emitReferenceDropped( const QString& key) {
54
emit referenceDropped(key);
57
/** Emits the signal. */
58
void CDisplayConnections::emitTextChanged() {
62
void CDisplayConnections::copyAll() {
63
m_display->copy(CDisplay::PlainText, CDisplay::Document);
66
/** No descriptions */
67
void CDisplayConnections::copySelection() {
68
qWarning("copyign the selected text");
69
m_display->copy(CDisplay::PlainText, CDisplay::SelectedText);
72
void CDisplayConnections::printAll(CSwordBackend::DisplayOptions displayOptions, CSwordBackend::FilterOptions filterOptions) {
73
m_display->print(CDisplay::Document, displayOptions, filterOptions);
76
void CDisplayConnections::printAnchorWithText(CSwordBackend::DisplayOptions displayOptions, CSwordBackend::FilterOptions filterOptions) {
77
m_display->print(CDisplay::AnchorWithText, displayOptions, filterOptions);
80
void CDisplayConnections::copyAnchorOnly() {
81
m_display->copy(CDisplay::PlainText, CDisplay::AnchorOnly);
84
void CDisplayConnections::copyAnchorTextOnly() {
85
m_display->copy(CDisplay::PlainText, CDisplay::AnchorTextOnly);
88
void CDisplayConnections::copyAnchorWithText() {
89
m_display->copy(CDisplay::PlainText, CDisplay::AnchorWithText);
92
void CDisplayConnections::saveAnchorWithText() {
93
m_display->save(CDisplay::PlainText, CDisplay::AnchorWithText);
96
void CDisplayConnections::clear() {
97
m_display->setText(QString::null);
100
void CDisplayConnections::zoomIn() {
104
void CDisplayConnections::zoomOut() {
105
m_display->zoomOut();
108
void CDisplayConnections::openFindTextDialog() {
109
m_display->openFindTextDialog();
113
/*----------------------*/
115
CReadDisplay* CDisplay::createReadInstance( CReadWindow* readWindow, QWidget* parent ) {
116
return new CHTMLReadDisplay(readWindow, parent);
119
CWriteDisplay* CDisplay::createWriteInstance( CWriteWindow* writeWindow, const CWriteDisplay::WriteDisplayType& type, QWidget* parent ) {
120
// qWarning("CDisplay::createWriteInstance");
121
if (type == PlainTextDisplay) {
122
return new CPlainWriteDisplay(writeWindow, parent);
125
return new CHTMLWriteDisplay(writeWindow, parent);
130
CDisplay::CDisplay(CDisplayWindow* parent) :
131
m_parentWindow(parent),
132
m_connections( new CDisplayConnections( this ) ),
135
CDisplay::~CDisplay() {
136
delete m_connections;
139
const bool CDisplay::copy( const CDisplay::TextType format, const CDisplay::TextPart part ) {
140
const QString content = text(format, part);
142
QClipboard* cb = KApplication::clipboard();
143
cb->setText(content);
147
const bool CDisplay::save( const CDisplay::TextType format, const CDisplay::TextPart part ) {
148
// qWarning("CDisplay::save( const CDisplay::TextType format, const CDisplay::TextPart part )");
149
const QString content = text(format, part);
150
QString filter = QString::null;
154
filter = QString("*.html *.htm | ") + i18n("HTML files") + QString("\n *.* | All files (*.*)");
157
filter = QString("*.txt | ") + i18n("Text files") + QString("\n *.* | All files (*.*)");
161
const QString filename = KFileDialog::getSaveFileName(QString::null, filter, 0, i18n("Save document ..."));
163
if (!filename.isEmpty()) {
164
CToolClass::savePlainFile(filename, content);
169
/** Emits the signal which used when a reference was clicked. */
170
void CDisplay::emitReferenceClicked( const QString& reference ) {
171
qWarning("reference clicked %s", reference.latin1());
174
CReferenceManager::Type type;
176
CReferenceManager::decodeHyperlink(reference, module, key, type);
177
if (module.isEmpty()) {
178
module = CReferenceManager::preferredModule( type );
180
m_connections->emitReferenceClicked(module, key);
183
/** Used when a reference was dropped onto the widget. */
184
void CDisplay::emitReferenceDropped( const QString& reference ) {
187
CReferenceManager::Type type;
189
CReferenceManager::decodeHyperlink(reference, module, key, type);
190
// if (module.isEmpty()) {
191
// module = CReferenceManager::preferredModule( type );
194
m_connections->emitReferenceDropped(key);
197
/** Returns the connections obect used for signas and slots. */
198
CDisplayConnections* const CDisplay::connectionsProxy() const {
199
return m_connections;
202
CDisplayWindow* const CDisplay::parentWindow() const {
203
return m_parentWindow;
206
/** Installs the popup which should be opened when the right mouse button was pressed. */
207
void CDisplay::installPopup( QPopupMenu* popup ) {
211
/** Returns the popup menu which was set by installPopupMenu() */
212
QPopupMenu* const CDisplay::installedPopup() {