您最多选择25个主题
主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
179 行
4.9 KiB
179 行
4.9 KiB
/*********
|
|
*
|
|
* This file is part of BibleTime's source code, http://www.bibletime.info/.
|
|
*
|
|
* Copyright 1999-2006 by the BibleTime developers.
|
|
* The BibleTime source code is licensed under the GNU General Public License version 2.0.
|
|
*
|
|
**********/
|
|
|
|
|
|
|
|
#include "cwritewindow.h"
|
|
|
|
#include "backend/cswordmoduleinfo.h"
|
|
|
|
#include "frontend/keychooser/ckeychooser.h"
|
|
#include "frontend/cprofilewindow.h"
|
|
|
|
//KDE includes
|
|
#include <tdemessagebox.h>
|
|
#include <tdelocale.h>
|
|
|
|
using namespace Profile;
|
|
|
|
CWriteWindow::CWriteWindow(ListCSwordModuleInfo modules, CMDIArea* parent, const char *name )
|
|
: CDisplayWindow(modules, parent,name), m_writeDisplay(0) {}
|
|
|
|
CWriteWindow::~CWriteWindow() {}
|
|
|
|
|
|
// void CWriteWindow::insertKeyboardActions( TDEAccel* const /*a*/ ) {
|
|
//
|
|
// };
|
|
void CWriteWindow::insertKeyboardActions( TDEActionCollection* const ) {
|
|
/* new TDEAction(
|
|
i18n("Next book"), CResMgr::displaywindows::bibleWindow::nextBook::accel,
|
|
a, "nextBook"
|
|
);*/
|
|
}
|
|
|
|
void CWriteWindow::initConnections() {
|
|
// tqWarning("CWriteWindow::initConnections()");
|
|
Q_ASSERT(keyChooser());
|
|
|
|
connect(keyChooser(), TQT_SIGNAL(beforeKeyChange(const TQString&)),
|
|
this, TQT_SLOT(beforeKeyChange(const TQString&))
|
|
);
|
|
};
|
|
|
|
void CWriteWindow::initActions() {}
|
|
;
|
|
|
|
void CWriteWindow::storeProfileSettings(CProfileWindow * const settings) {
|
|
|
|
settings->setWriteWindowType( writeWindowType() );
|
|
|
|
TQRect rect;
|
|
rect.setX(parentWidget()->x());
|
|
rect.setY(parentWidget()->y());
|
|
rect.setWidth(width());
|
|
rect.setHeight(height());
|
|
settings->setGeometry(rect);
|
|
|
|
// settings->setScrollbarPositions( m_htmlWidget->view()->horizontalScrollBar()->value(), m_htmlWidget->view()->verticalScrollBar()->value() );
|
|
settings->setType(modules().first()->type());
|
|
settings->setMaximized(isMaximized() || parentWidget()->isMaximized());
|
|
|
|
if (key()) {
|
|
sword::VerseKey* vk = dynamic_cast<sword::VerseKey*>(key());
|
|
TQString oldLang;
|
|
if (vk) {
|
|
oldLang = TQString::fromLatin1(vk->getLocale());
|
|
vk->setLocale("en"); //save english locale names as default!
|
|
}
|
|
settings->setKey( key()->key() );
|
|
if (vk) {
|
|
vk->setLocale(oldLang.latin1());
|
|
}
|
|
}
|
|
|
|
TQStringList mods;
|
|
ListCSwordModuleInfo allMods = modules();
|
|
// for (CSwordModuleInfo* m = modules().first(); m; m = modules().next()) {
|
|
ListCSwordModuleInfo::iterator end_it = allMods.end();
|
|
for (ListCSwordModuleInfo::iterator it(allMods.begin()); it != end_it; ++it) {
|
|
mods.append((*it)->name());
|
|
}
|
|
settings->setModules(mods);
|
|
};
|
|
|
|
void CWriteWindow::applyProfileSettings(CProfileWindow * const settings) {
|
|
setUpdatesEnabled(false);
|
|
|
|
if (settings->maximized()) {
|
|
parentWidget()->showMaximized();
|
|
}
|
|
else {
|
|
const TQRect rect = settings->geometry();
|
|
resize(rect.width(), rect.height());
|
|
parentWidget()->move(rect.x(), rect.y());
|
|
//setGeometry( settings->geometry() );
|
|
}
|
|
// displayWidget()->view()->horizontalScrollBar()->setValue( settings->scrollbarPositions().horizontal );
|
|
// m_htmlWidget->view()->verticalScrollBar()->setValue( settings->scrollbarPositions().vertical );
|
|
|
|
setUpdatesEnabled(true);
|
|
};
|
|
|
|
/** Sets the write display-widget for this write display window. */
|
|
void CWriteWindow::setDisplayWidget( CWriteDisplay* display ) {
|
|
CDisplayWindow::setDisplayWidget(display);
|
|
m_writeDisplay = display;
|
|
}
|
|
|
|
/** Look up the given key and display the text. In our case we offer to edit the text. */
|
|
void CWriteWindow::lookup( CSwordKey* newKey ) {
|
|
//set the raw text to the display widget
|
|
if (!newKey)
|
|
return;
|
|
|
|
if (key() != newKey) { //set passage of newKey to key() if they're different, otherwise we'd get mixed up if we look up newkey which may have a different module set
|
|
key()->key(newKey->key());
|
|
}
|
|
|
|
if ( modules().count() ) {
|
|
displayWidget()->setText( key()->rawText() );
|
|
}
|
|
setCaption( windowCaption() );
|
|
}
|
|
|
|
/** Returns the write display widget used by this window. */
|
|
CWriteDisplay* const CWriteWindow::displayWidget() {
|
|
return m_writeDisplay;
|
|
}
|
|
|
|
/** Saves settings */
|
|
bool CWriteWindow::queryClose() {
|
|
// tqWarning("queryClose called!");
|
|
//save the text if it has changed
|
|
if (m_writeDisplay->isModified()) {
|
|
switch (KMessageBox::warningYesNoCancel( this, i18n("Save text before closing?")) ) {
|
|
case KMessageBox::Yes: { //save and close
|
|
saveCurrentText();
|
|
m_writeDisplay->setModified( false );
|
|
return true;
|
|
}
|
|
case KMessageBox::No: //don't save and close
|
|
return true;
|
|
default: // cancel, don't close
|
|
return false;
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
void CWriteWindow::beforeKeyChange(const TQString& key) {
|
|
Q_ASSERT(displayWidget());
|
|
Q_ASSERT(keyChooser());
|
|
if (!isReady()) {
|
|
return;
|
|
}
|
|
|
|
//If the text changed and we'd do a lookup ask the user if the text should be saved
|
|
if (modules().first() && displayWidget()->isModified()) {
|
|
switch (KMessageBox::warningYesNo( this, i18n("Save changed text?")) ) {
|
|
case KMessageBox::Yes: { //save the changes
|
|
saveCurrentText( key );
|
|
break;
|
|
}
|
|
default: {// set modified to false so it won't ask again
|
|
displayWidget()->setModified(false);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
#include "cwritewindow.moc"
|