From 5f698069bca9dde2c8be9ff1bf863ee3a7a33cf0 Mon Sep 17 00:00:00 2001 From: ar Date: Sun, 08 Feb 2004 19:14:56 +0000 Subject: improve support for BigScreen --- diff --git a/noncore/apps/advancedfm/advancedfmMenu.cpp b/noncore/apps/advancedfm/advancedfmMenu.cpp index 26bc36d..78f9da2 100644 --- a/noncore/apps/advancedfm/advancedfmMenu.cpp +++ b/noncore/apps/advancedfm/advancedfmMenu.cpp @@ -1,854 +1,850 @@ -/*************************************************************************** - AdvancedFm.cpp - ------------------- - ** Created: Sat Mar 9 23:33:09 2002 - copyright : (C) 2002 by ljp - email : ljp@llornkcor.com - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - ***************************************************************************/ -#include "advancedfm.h" -#include "output.h" -#include "filePermissions.h" - -#include -#include - -#include -#include -#include -#include -#include -#include - -#include -#include - -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - - -void AdvancedFm::doDirChange() { - QString pathItem = CurrentView()->currentItem()->text(0); - if( pathItem == "../") { - ListClicked( CurrentView()->currentItem()); - } else { - if( pathItem.find(" -> ",0,TRUE) != -1) - pathItem = dealWithSymName((const QString&)pathItem)+"/"; -// qWarning(pathItem); - gotoDirectory( CurrentDir()->path()+"/"+pathItem.left( pathItem.length() - 1) ); - } -} - -void AdvancedFm::showMenuHidden() { - if (b) { - CurrentDir()->setFilter( QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All); - OtherDir()->setFilter( QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All); - fileMenu->setItemChecked( fileMenu->idAt(0),TRUE); - } else { - CurrentDir()->setFilter( QDir::Files | QDir::Dirs/* | QDir::Hidden*/ | QDir::All); - OtherDir()->setFilter( QDir::Files | QDir::Dirs/* | QDir::Hidden*/ | QDir::All); - fileMenu->setItemChecked( fileMenu->idAt(0),FALSE); - } - b = !b; - populateView(); -} - -void AdvancedFm::showHidden() { - if (b) { - CurrentDir()->setFilter( QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All); - OtherDir()->setFilter( QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All); - } else { - CurrentDir()->setFilter( QDir::Files | QDir::Dirs/* | QDir::Hidden*/ | QDir::All); - OtherDir()->setFilter( QDir::Files | QDir::Dirs/* | QDir::Hidden*/ | QDir::All); - } - populateView(); -} - -QString AdvancedFm::dealWithSymName(const QString &fileName) { - QString strItem = fileName; - return strItem.right( (strItem.length() - strItem.find("->",0,TRUE)) - 4); -} - -void AdvancedFm::runThis() { - if( !CurrentView()->currentItem()) return; - QString fs; - QDir *thisDir = CurrentDir(); - - QString curFile = CurrentView()->currentItem()->text(0); - QString path = thisDir->canonicalPath(); - - if( curFile.find("@",0,TRUE) !=-1 || curFile.find("->",0,TRUE) !=-1 ) //if symlink - - curFile = dealWithSymName((const QString&)curFile); - - if(curFile != "../") { - - fs = getFileSystemType((const QString &) path); - QFileInfo fileInfo( path + "/" + curFile); -// qDebug( fileInfo.owner()); - - if( (fileInfo.permission( QFileInfo::ExeUser) - | fileInfo.permission( QFileInfo::ExeGroup) - | fileInfo.permission( QFileInfo::ExeOther)) // & fs.find("vfat",0,TRUE) == -1) { - | fs == "vfat" && fileInfo.filePath().contains("/bin") ) { - QCopEnvelope e("QPE/System", "execute(QString)" ); - e << curFile; - } else { - curFile = path + "/" + curFile; - DocLnk nf(curFile); - QString execStr = nf.exec(); -// qDebug( execStr); - if( execStr.isEmpty() ) { - } else { - nf.execute(); - } - } - } -} - -void AdvancedFm::runText() { - if( !CurrentView()->currentItem()) return; - QString curFile = CurrentView()->currentItem()->text(0); - if(curFile != "../") { - if( curFile.find("@",0,TRUE) !=-1 || curFile.find("->",0,TRUE) !=-1 ) //if symlink - curFile = dealWithSymName((const QString&)curFile); - curFile = CurrentDir()->canonicalPath()+"/"+curFile; - QCopEnvelope e("QPE/Application/textedit", "setDocument(QString)" ); - e << curFile; - } -} - -void AdvancedFm::makeDir() { - InputDialog *fileDlg; - fileDlg = new InputDialog(this,tr("Make Directory"),TRUE, 0); - fileDlg->exec(); - if( fileDlg->result() == 1 ) { - QDir *thisDir = CurrentDir(); - QString filename = fileDlg->LineEdit1->text(); - thisDir->mkdir( thisDir->canonicalPath()+"/"+filename); - } - populateView(); -} - -void AdvancedFm::doDelete() { - QStringList curFileList = getPath(); - bool doMsg=true; - int count = curFileList.count(); - if( count > 0) { - if(count > 1 ) { - QString msg; - msg=tr("Really delete\n%1 files?").arg(count); - switch ( QMessageBox::warning(this,tr("Delete"),msg - ,tr("Yes"),tr("No"),0,0,1) ) - { - case 0: - doMsg=false; - break; - case 1: - return; - break; - }; - } - - QString myFile; - - for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) { - myFile = (*it); - if( myFile.find(" -> ",0,TRUE) != -1) - myFile = myFile.left( myFile.find(" -> ",0,TRUE)); - - QString f = CurrentDir()->canonicalPath(); - if(f.right(1).find("/",0,TRUE) == -1) - f += "/"; - f += myFile; - if(QDir(f).exists() && !QFileInfo(f).isSymLink() ) { - //if file is a directory - - switch ( QMessageBox::warning( this, tr("Delete Directory?"), - tr("Really delete %1\nand all it's contents ?" ).arg( f ) , - tr("Yes"), tr("No"), 0, 0, 1) ) { - case 0: - { - f=f.left(f.length()-1); - QString cmd="rm -rf "+f; - startProcess( (const QString)cmd.latin1() ); - populateView(); - } - break; - case 1: - // exit - break; - }; - - } else { - if(doMsg) { - switch ( QMessageBox::warning(this,tr("Delete"), - tr("Really delete\n%1?").arg( myFile ), - tr("Yes"), tr("No"), 0, 0, 1) ) { - case 1: - return; - break; - }; - } - - QString cmd="rm "+f; - QFile file(f); - QFileInfo fi(myFile); - if( fi.fileName().find("../",0,TRUE)==-1) { -// qDebug("remove link files "+myFile); - -// DocLnk lnk(f); - DocLnk *lnk; - lnk = new DocLnk(f); -// qDebug("Deleting doclnk " + lnk->linkFile()); - if(lnk->isValid()) - lnk->removeLinkFile(); - // delete lnk; - file.remove(); - } - } - } - } - populateView(); -} - -void AdvancedFm::filePerms() { - QStringList curFileList = getPath(); - QString filePath; - - filePath = CurrentDir()->canonicalPath()+"/"; - - for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) { - filePermissions *filePerm; - filePerm = new filePermissions(this, "Permissions",true,0,(const QString &)(filePath+*it)); - filePerm->showMaximized(); - filePerm->exec(); - if( filePerm) - delete filePerm; - } - populateView(); -} - -void AdvancedFm::doProperties() { -#if defined(QT_QWS_OPIE) - - QStringList curFileList = getPath(); - - QString filePath; - filePath = CurrentDir()->canonicalPath()+"/"; - -// qDebug("%d",curFileList.count()); - - for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) { -// qDebug((filePath+*it)); - DocLnk lnk( (filePath+*it)); - LnkProperties prop( &lnk ); - prop.showMaximized(); - prop.exec(); - } -#endif - -} - -void AdvancedFm::upDir() { - QDir *thisDir = CurrentDir(); - QString current = thisDir->canonicalPath(); - QDir dir(current); - dir.cdUp(); - current = dir.canonicalPath(); - chdir( current.latin1() ); - thisDir->cd( current, TRUE); - - populateView(); - update(); -} - -void AdvancedFm::copy() { - qApp->processEvents(); - QStringList curFileList = getPath(); - - QDir *thisDir = CurrentDir(); - QDir *thatDir = OtherDir(); - - bool doMsg=true; - int count=curFileList.count(); - if( count > 0) { - if(count > 1 ){ - QString msg; - msg=tr("Really copy\n%1 files?").arg(count); - switch ( QMessageBox::warning(this,tr("Copy"),msg - ,tr("Yes"),tr("No"),0,0,1) ) - { - case 0: - doMsg=false; - break; - case 1: - return; - break; - }; - } - - QString curFile, item, destFile; - for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) { - item=(*it); - if(item.find("->",0,TRUE)) //symlink - item = item.left(item.find("->",0,TRUE)); - - curFile = thisDir->canonicalPath()+"/"+ item; - destFile = thatDir->canonicalPath()+"/"+ item; - -// qDebug("Destination file is "+destFile); -// qDebug("CurrentFile file is " + curFile); - - QFile f(destFile); - if( f.exists()) { - if(doMsg) { - switch ( QMessageBox::warning(this,tr("File Exists!"), - tr("%1 exists. Ok to overwrite?").arg( item ), - tr("Yes"),tr("No"),0,0,1) ) { - case 1: - return; - break; - }; - } - f.remove(); - } - - if( !copyFile( curFile, destFile) ) { - QMessageBox::message("AdvancedFm", - tr( "Could not copy %1 to %2").arg( curFile ).arg( destFile ) ); - return; - } - } - setOtherTabCurrent(); - rePopulate(); - } -} - -void AdvancedFm::copyAs() { - qApp->processEvents(); - - QStringList curFileList = getPath(); - QString curFile, item; - InputDialog *fileDlg; - - QDir *thisDir = CurrentDir(); - QDir *thatDir = OtherDir(); - - for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) { - QString destFile; - item=(*it); - curFile = thisDir->canonicalPath()+"/"+(*it); - fileDlg = new InputDialog( this, tr("Copy "+curFile+" As"), TRUE, 0); - - fileDlg->setInputText((const QString &) destFile ); - fileDlg->exec(); - - if( fileDlg->result() == 1 ) { - QString filename = fileDlg->LineEdit1->text(); - destFile = thatDir->canonicalPath()+"/"+filename; - - QFile f( destFile); - if( f.exists()) { - switch (QMessageBox::warning(this,tr("File Exists!"), - item+tr("\nexists. Ok to overwrite?"), - tr("Yes"),tr("No"),0,0,1) ) { - case 0: - f.remove(); - break; - case 1: - return; - break; - }; - } - if( !copyFile( curFile, destFile) ) { - QMessageBox::message("AdvancedFm",tr("Could not copy\n") - +curFile +tr("to\n")+destFile); - return; - } - } - delete fileDlg; - - } - rePopulate(); - setOtherTabCurrent(); -} - -void AdvancedFm::copySameDir() { - qApp->processEvents(); - QStringList curFileList = getPath(); - QString curFile, item, destFile; - InputDialog *fileDlg; - - QDir *thisDir = CurrentDir(); - - for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) { - item=(*it); - curFile = thisDir->canonicalPath()+"/"+ item; - - fileDlg = new InputDialog(this,tr("Copy ")+curFile+tr(" As"),TRUE, 0); - fileDlg->setInputText((const QString &) destFile ); - fileDlg->exec(); - - if( fileDlg->result() == 1 ) { - - QString filename = fileDlg->LineEdit1->text(); - destFile = thisDir->canonicalPath()+"/"+filename; - - QFile f(destFile); - if( f.exists()) { - switch (QMessageBox::warning(this,tr("Delete"), - destFile+tr(" already exists.\nDo you really want to delete it?"), - tr("Yes"),tr("No"),0,0,1) ) { - case 0: - - f.remove(); - break; - case 1: - return; - break; - }; - } - if(!copyFile( curFile,destFile) ) { - QMessageBox::message("AdvancedFm",tr("Could not copy\n") - +curFile +tr("to\n")+destFile); - return; - } - -// qDebug("copy "+curFile+" as "+destFile); - } - delete fileDlg; - } - rePopulate(); -} - -void AdvancedFm::move() { - qApp->processEvents(); - - QStringList curFileList = getPath(); - if( curFileList.count() > 0) { - QString curFile, destFile, item; - - QDir *thisDir = CurrentDir(); - QDir *thatDir = OtherDir(); - for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) { - item=(*it); - QString destFile = thatDir->canonicalPath(); - - if(destFile.right(1).find("/",0,TRUE) == -1) - destFile+="/"; - destFile += item; -// qDebug("Destination file is "+destFile); - - curFile = thisDir->canonicalPath(); - if(curFile.right(1).find("/",0,TRUE) == -1) - curFile +="/"; - curFile+= item; -// qDebug("CurrentFile file is " + curFile); - - if(QFileInfo(curFile).isDir()) { - moveDirectory( curFile, destFile ); - rePopulate(); - return; - } - - QFile f( curFile); - if( f.exists()) { - if( !copyFile( curFile, destFile) ) { - QMessageBox::message(tr("Note"),tr("Could not move\n")+curFile); - return; - } else - QFile::remove(curFile); - } - } - - } - rePopulate(); - setOtherTabCurrent(); -} - -bool AdvancedFm::moveDirectory( const QString & src, const QString & dest ) { - int err = 0; - if( copyDirectory( src, dest ) ) { QString cmd = "rm -rf " + src; - err = system((const char*)cmd); - } else - err = -1; - - if(err!=0) { - QMessageBox::message(tr("Note"),tr("Could not move\n") + src); - return false; - } - return true; -} - -bool AdvancedFm::copyDirectory( const QString & src, const QString & dest ) { - - QString cmd = "/bin/cp -fpR " + src + " " + dest; - qWarning(cmd); - int err = system( (const char *) cmd ); - if ( err != 0 ) { - QMessageBox::message("AdvancedFm", - tr( "Could not copy \n%1 \nto \n%2").arg( src ).arg( dest ) ); - return false; - } - - return true; -} - - -bool AdvancedFm::copyFile( const QString & src, const QString & dest ) { - - - if(QFileInfo(src).isDir()) { - if( copyDirectory( src, dest )) { - setOtherTabCurrent(); - populateView(); - return true; - } - else - return false; - } - - - bool success = true; - struct stat status; - QFile srcFile(src); - QFile destFile(dest); - int err=0; - int read_fd=0; - int write_fd=0; - struct stat stat_buf; - off_t offset = 0; - if(!srcFile.open( IO_ReadOnly|IO_Raw)) { -// qWarning("open failed"); - return success = false; - } - read_fd = srcFile.handle(); - if(read_fd != -1) { - fstat (read_fd, &stat_buf); - if( !destFile.open( IO_WriteOnly|IO_Raw ) ) { -// qWarning("destfile open failed"); - return success = false; - } - write_fd = destFile.handle(); - if(write_fd != -1) { - err = sendfile(write_fd, read_fd, &offset, stat_buf.st_size); - if( err == -1) { - QString msg; - switch(err) { - case EBADF : msg = "The input file was not opened for reading or the output file was not opened for writing. "; - case EINVAL: msg = "Descriptor is not valid or locked. "; - case ENOMEM: msg = "Insufficient memory to read from in_fd."; - case EIO: msg = "Unspecified error while reading from in_fd."; - }; - success = false; -// qWarning(msg); - } - } else { - success = false; - } - } else { - success = false; - } - srcFile.close(); - destFile.close(); - // Set file permissions - if( stat( (const char *) src, &status ) == 0 ) { - chmod( (const char *) dest, status.st_mode ); - } - - return success; -} - -void AdvancedFm::runCommand() { - if( !CurrentView()->currentItem()) return; - QDir *thisDir = CurrentDir(); - - QString curFile; - curFile = thisDir->canonicalPath() +"/"+ CurrentView()->currentItem()->text(0); - - InputDialog *fileDlg; - fileDlg = new InputDialog(this,tr("Run Command"),TRUE, 0); - fileDlg->setInputText(curFile); - fileDlg->exec(); - //QString command; - - if( fileDlg->result() == 1 ) { -// qDebug(fileDlg->LineEdit1->text()); - QStringList command; - - command << "/bin/sh"; - command << "-c"; - command << fileDlg->LineEdit1->text(); - Output *outDlg; - outDlg = new Output( command, this, tr("AdvancedFm Output"), true); - outDlg->showMaximized(); - outDlg->exec(); - qApp->processEvents(); - - } -} - -void AdvancedFm::runCommandStd() { - if( !CurrentView()->currentItem()) return; - QString curFile; - QDir *thisDir = CurrentDir(); - QListView *thisView = CurrentView(); - if( thisView->currentItem()) - curFile = thisDir->canonicalPath() +"/"+ thisView->currentItem()->text(0); - - InputDialog *fileDlg; - fileDlg = new InputDialog(this,tr("Run Command"),TRUE, 0); - fileDlg->setInputText(curFile); - fileDlg->exec(); - - if( fileDlg->result() == 1 ) { - qApp->processEvents(); - startProcess( (const QString)fileDlg->LineEdit1->text().latin1()); - } -} - -void AdvancedFm::fileStatus() { - if( !CurrentView()->currentItem()) return; - QString curFile; - curFile = CurrentView()->currentItem()->text(0); - - QStringList command; - command << "/bin/sh"; - command << "-c"; - command << "stat -l "+ curFile; - - Output *outDlg; - outDlg = new Output( command, this, tr("AdvancedFm Output"), true); - outDlg->showMaximized(); - outDlg->exec(); - qApp->processEvents(); -} - - -void AdvancedFm::mkDir() { - makeDir(); -} - -void AdvancedFm::rn() { - renameIt(); -} - -void AdvancedFm::del() { - doDelete(); -} - -void AdvancedFm::mkSym() { - QString cmd; - QStringList curFileList = getPath(); - if( curFileList.count() > 0) { - QDir *thisDir = CurrentDir(); - QDir * thatDir = OtherDir(); - - for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) { - - QString destName = thatDir->canonicalPath()+"/"+(*it); - if(destName.right(1) == "/") { - destName = destName.left( destName.length() -1); - } - - QString curFile = thisDir->canonicalPath()+"/"+(*it); - - if( curFile.right(1) == "/") { - curFile = curFile.left( curFile.length() -1); - } - - cmd = "ln -s "+curFile+" "+destName; -// qDebug(cmd); - startProcess( (const QString)cmd ); - } - rePopulate(); - setOtherTabCurrent(); - } -} - -void AdvancedFm::doBeam() { - Ir ir; - if(!ir.supported()) { - } else { - QStringList curFileList = getPath(); - if( curFileList.count() > 0) { - for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) { - QString curFile = (*it); - QString curFilePath = CurrentDir()->canonicalPath()+"/"+curFile; - if( curFilePath.right(1) == "/") { - curFilePath = curFilePath.left( curFilePath.length() -1); - } - Ir *file = new Ir(this, "IR"); - connect(file, SIGNAL(done(Ir*)), this, SLOT( fileBeamFinished( Ir * ))); - file->send( curFilePath, curFile ); - } - } - } -} - -void AdvancedFm::fileBeamFinished( Ir *) { - QMessageBox::message( tr("Advancedfm Beam out"), tr("Ir sent.") ,tr("Ok") ); -} - -void AdvancedFm::selectAll() { - QListView *thisView = CurrentView(); - thisView->selectAll(true); - thisView->setSelected( thisView->firstChild(),false); -} - -void AdvancedFm::startProcess(const QString & cmd) { - QStringList command; - OProcess *process; - process = new OProcess(); - connect(process, SIGNAL(processExited(OProcess *)), - this, SLOT( processEnded(OProcess *))); - - connect(process, SIGNAL( receivedStderr(OProcess *, char *, int)), - this, SLOT( oprocessStderr(OProcess *, char *, int))); - - command << "/bin/sh"; - command << "-c"; - command << cmd.latin1(); - *process << command; - if(!process->start(OProcess::NotifyOnExit, OProcess::All) ) - qDebug("could not start process"); -} - -void AdvancedFm::processEnded(OProcess *) { - rePopulate(); -} - -void AdvancedFm::oprocessStderr(OProcess*, char *buffer, int ) { -// qWarning("received stderrt %d bytes", buflen); - - QString lineStr = buffer; - QMessageBox::warning( this, tr("Error"), lineStr ,tr("Ok") ); -} - -bool AdvancedFm::eventFilter( QObject * o, QEvent * e ) { - if ( o->inherits( "QLineEdit" ) ) { - if ( e->type() == QEvent::KeyPress ) { - QKeyEvent *ke = (QKeyEvent*)e; - if ( ke->key() == Key_Return || - ke->key() == Key_Enter ) { - okRename(); - return true; - } - else if ( ke->key() == Key_Escape ) { - cancelRename(); - return true; - } - } - else if ( e->type() == QEvent::FocusOut ) { - cancelRename(); - return true; - } - } - if ( o->inherits( "QListView" ) ) { - if ( e->type() == QEvent::FocusIn ) { - if( o == Local_View) { //keep track of which view - whichTab=1; - } - else { - whichTab=2; - } - } - OtherView()->setSelected( OtherView()->currentItem(), FALSE );//make sure there's correct selection - } - - return QWidget::eventFilter( o, e ); -} - - -void AdvancedFm::cancelRename() { -// qDebug("cancel rename"); - QListView * view; - view = CurrentView(); - - bool resetFocus = view->viewport()->focusProxy() == renameBox; - delete renameBox; - renameBox = 0; - if ( resetFocus ) { - view->viewport()->setFocusProxy( view); - view->setFocus(); - } -} - -void AdvancedFm::doRename(QListView * view) { - if( !CurrentView()->currentItem()) return; - - QRect r = view->itemRect( view->currentItem( )); - r = QRect( view->viewportToContents( r.topLeft() ), r.size() ); - r.setX( view->contentsX() ); - - if ( r.width() > view->visibleWidth() ) - r.setWidth( view->visibleWidth() ); - - renameBox = new QLineEdit( view->viewport(), "qt_renamebox" ); - renameBox->setFrame(true); - - renameBox->setText( view->currentItem()->text(0) ); - - renameBox->selectAll(); - renameBox->installEventFilter( this ); - - view->addChild( renameBox, r.x(), r.y() ); - - renameBox->resize( r.size() ); - - view->viewport()->setFocusProxy( renameBox ); - - renameBox->setFocus(); - renameBox->show(); -} - - -void AdvancedFm::renameIt() { - if( !CurrentView()->currentItem()) return; - - QListView *thisView = CurrentView(); - oldName = thisView->currentItem()->text(0); - doRename( thisView ); -} - -void AdvancedFm::okRename() { - if( !CurrentView()->currentItem()) return; - - QString newName = renameBox->text(); - cancelRename(); - QListView * view = CurrentView(); - QString path = CurrentDir()->canonicalPath() + "/"; - oldName = path + oldName; - newName = path + newName; - if( rename( oldName.latin1(), newName.latin1())== -1) - QMessageBox::message(tr("Note"),tr("Could not rename")); - else - oldName = ""; - view->takeItem( view->currentItem() ); - delete view->currentItem(); - rePopulate(); -} - -void AdvancedFm::openSearch() { - QMessageBox::message(tr("Note"),tr("Not Yet Implemented")); -} +/*************************************************************************** + AdvancedFm.cpp + ------------------- + ** Created: Sat Mar 9 23:33:09 2002 + copyright : (C) 2002 by ljp + email : ljp@llornkcor.com + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + ***************************************************************************/ +#include "advancedfm.h" +#include "output.h" +#include "filePermissions.h" + +#include +#include + +#include +#include +#include +#include +#include +#include + +#include +#include + +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + + +void AdvancedFm::doDirChange() { + QString pathItem = CurrentView()->currentItem()->text(0); + if( pathItem == "../") { + ListClicked( CurrentView()->currentItem()); + } else { + if( pathItem.find(" -> ",0,TRUE) != -1) + pathItem = dealWithSymName((const QString&)pathItem)+"/"; +// qWarning(pathItem); + gotoDirectory( CurrentDir()->path()+"/"+pathItem.left( pathItem.length() - 1) ); + } +} + +void AdvancedFm::showMenuHidden() { + if (b) { + CurrentDir()->setFilter( QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All); + OtherDir()->setFilter( QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All); + fileMenu->setItemChecked( fileMenu->idAt(0),TRUE); + } else { + CurrentDir()->setFilter( QDir::Files | QDir::Dirs/* | QDir::Hidden*/ | QDir::All); + OtherDir()->setFilter( QDir::Files | QDir::Dirs/* | QDir::Hidden*/ | QDir::All); + fileMenu->setItemChecked( fileMenu->idAt(0),FALSE); + } + b = !b; + populateView(); +} + +void AdvancedFm::showHidden() { + if (b) { + CurrentDir()->setFilter( QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All); + OtherDir()->setFilter( QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All); + } else { + CurrentDir()->setFilter( QDir::Files | QDir::Dirs/* | QDir::Hidden*/ | QDir::All); + OtherDir()->setFilter( QDir::Files | QDir::Dirs/* | QDir::Hidden*/ | QDir::All); + } + populateView(); +} + +QString AdvancedFm::dealWithSymName(const QString &fileName) { + QString strItem = fileName; + return strItem.right( (strItem.length() - strItem.find("->",0,TRUE)) - 4); +} + +void AdvancedFm::runThis() { + if( !CurrentView()->currentItem()) return; + QString fs; + QDir *thisDir = CurrentDir(); + + QString curFile = CurrentView()->currentItem()->text(0); + QString path = thisDir->canonicalPath(); + + if( curFile.find("@",0,TRUE) !=-1 || curFile.find("->",0,TRUE) !=-1 ) //if symlink + + curFile = dealWithSymName((const QString&)curFile); + + if(curFile != "../") { + + fs = getFileSystemType((const QString &) path); + QFileInfo fileInfo( path + "/" + curFile); +// qDebug( fileInfo.owner()); + + if( (fileInfo.permission( QFileInfo::ExeUser) + | fileInfo.permission( QFileInfo::ExeGroup) + | fileInfo.permission( QFileInfo::ExeOther)) // & fs.find("vfat",0,TRUE) == -1) { + | fs == "vfat" && fileInfo.filePath().contains("/bin") ) { + QCopEnvelope e("QPE/System", "execute(QString)" ); + e << curFile; + } else { + curFile = path + "/" + curFile; + DocLnk nf(curFile); + QString execStr = nf.exec(); +// qDebug( execStr); + if( execStr.isEmpty() ) { + } else { + nf.execute(); + } + } + } +} + +void AdvancedFm::runText() { + if( !CurrentView()->currentItem()) return; + QString curFile = CurrentView()->currentItem()->text(0); + if(curFile != "../") { + if( curFile.find("@",0,TRUE) !=-1 || curFile.find("->",0,TRUE) !=-1 ) //if symlink + curFile = dealWithSymName((const QString&)curFile); + curFile = CurrentDir()->canonicalPath()+"/"+curFile; + QCopEnvelope e("QPE/Application/textedit", "setDocument(QString)" ); + e << curFile; + } +} + +void AdvancedFm::makeDir() { + InputDialog *fileDlg; + fileDlg = new InputDialog(this,tr("Make Directory"),TRUE, 0); + fileDlg->exec(); + if( fileDlg->result() == 1 ) { + QDir *thisDir = CurrentDir(); + QString filename = fileDlg->LineEdit1->text(); + thisDir->mkdir( thisDir->canonicalPath()+"/"+filename); + } + populateView(); +} + +void AdvancedFm::doDelete() { + QStringList curFileList = getPath(); + bool doMsg=true; + int count = curFileList.count(); + if( count > 0) { + if(count > 1 ) { + QString msg; + msg=tr("Really delete\n%1 files?").arg(count); + switch ( QMessageBox::warning(this,tr("Delete"),msg + ,tr("Yes"),tr("No"),0,0,1) ) + { + case 0: + doMsg=false; + break; + case 1: + return; + break; + }; + } + + QString myFile; + + for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) { + myFile = (*it); + if( myFile.find(" -> ",0,TRUE) != -1) + myFile = myFile.left( myFile.find(" -> ",0,TRUE)); + + QString f = CurrentDir()->canonicalPath(); + if(f.right(1).find("/",0,TRUE) == -1) + f += "/"; + f += myFile; + if(QDir(f).exists() && !QFileInfo(f).isSymLink() ) { + //if file is a directory + + switch ( QMessageBox::warning( this, tr("Delete Directory?"), + tr("Really delete %1\nand all it's contents ?" ).arg( f ) , + tr("Yes"), tr("No"), 0, 0, 1) ) { + case 0: + { + f=f.left(f.length()-1); + QString cmd="rm -rf "+f; + startProcess( (const QString)cmd.latin1() ); + populateView(); + } + break; + case 1: + // exit + break; + }; + + } else { + if(doMsg) { + switch ( QMessageBox::warning(this,tr("Delete"), + tr("Really delete\n%1?").arg( myFile ), + tr("Yes"), tr("No"), 0, 0, 1) ) { + case 1: + return; + break; + }; + } + + QString cmd="rm "+f; + QFile file(f); + QFileInfo fi(myFile); + if( fi.fileName().find("../",0,TRUE)==-1) { +// qDebug("remove link files "+myFile); + +// DocLnk lnk(f); + DocLnk *lnk; + lnk = new DocLnk(f); +// qDebug("Deleting doclnk " + lnk->linkFile()); + if(lnk->isValid()) + lnk->removeLinkFile(); + // delete lnk; + file.remove(); + } + } + } + } + populateView(); +} + +void AdvancedFm::filePerms() { + QStringList curFileList = getPath(); + QString filePath; + + filePath = CurrentDir()->canonicalPath()+"/"; + + for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) { + filePermissions *filePerm; + filePerm = new filePermissions(this, "Permissions",true,0,(const QString &)(filePath+*it)); + QPEApplication::execDialog( filePerm ); + if( filePerm ) + delete filePerm; + } + populateView(); +} + +void AdvancedFm::doProperties() { +#if defined(QT_QWS_OPIE) + + QStringList curFileList = getPath(); + + QString filePath; + filePath = CurrentDir()->canonicalPath()+"/"; + +// qDebug("%d",curFileList.count()); + + for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) { +// qDebug((filePath+*it)); + DocLnk lnk( (filePath+*it)); + LnkProperties prop( &lnk ); + QPEApplication::execDialog( &prop ); + } +#endif + +} + +void AdvancedFm::upDir() { + QDir *thisDir = CurrentDir(); + QString current = thisDir->canonicalPath(); + QDir dir(current); + dir.cdUp(); + current = dir.canonicalPath(); + chdir( current.latin1() ); + thisDir->cd( current, TRUE); + + populateView(); + update(); +} + +void AdvancedFm::copy() { + qApp->processEvents(); + QStringList curFileList = getPath(); + + QDir *thisDir = CurrentDir(); + QDir *thatDir = OtherDir(); + + bool doMsg=true; + int count=curFileList.count(); + if( count > 0) { + if(count > 1 ){ + QString msg; + msg=tr("Really copy\n%1 files?").arg(count); + switch ( QMessageBox::warning(this,tr("Copy"),msg + ,tr("Yes"),tr("No"),0,0,1) ) + { + case 0: + doMsg=false; + break; + case 1: + return; + break; + }; + } + + QString curFile, item, destFile; + for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) { + item=(*it); + if(item.find("->",0,TRUE)) //symlink + item = item.left(item.find("->",0,TRUE)); + + curFile = thisDir->canonicalPath()+"/"+ item; + destFile = thatDir->canonicalPath()+"/"+ item; + +// qDebug("Destination file is "+destFile); +// qDebug("CurrentFile file is " + curFile); + + QFile f(destFile); + if( f.exists()) { + if(doMsg) { + switch ( QMessageBox::warning(this,tr("File Exists!"), + tr("%1 exists. Ok to overwrite?").arg( item ), + tr("Yes"),tr("No"),0,0,1) ) { + case 1: + return; + break; + }; + } + f.remove(); + } + + if( !copyFile( curFile, destFile) ) { + QMessageBox::message("AdvancedFm", + tr( "Could not copy %1 to %2").arg( curFile ).arg( destFile ) ); + return; + } + } + setOtherTabCurrent(); + rePopulate(); + } +} + +void AdvancedFm::copyAs() { + qApp->processEvents(); + + QStringList curFileList = getPath(); + QString curFile, item; + InputDialog *fileDlg; + + QDir *thisDir = CurrentDir(); + QDir *thatDir = OtherDir(); + + for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) { + QString destFile; + item=(*it); + curFile = thisDir->canonicalPath()+"/"+(*it); + fileDlg = new InputDialog( this, tr("Copy "+curFile+" As"), TRUE, 0); + + fileDlg->setInputText((const QString &) destFile ); + fileDlg->exec(); + + if( fileDlg->result() == 1 ) { + QString filename = fileDlg->LineEdit1->text(); + destFile = thatDir->canonicalPath()+"/"+filename; + + QFile f( destFile); + if( f.exists()) { + switch (QMessageBox::warning(this,tr("File Exists!"), + item+tr("\nexists. Ok to overwrite?"), + tr("Yes"),tr("No"),0,0,1) ) { + case 0: + f.remove(); + break; + case 1: + return; + break; + }; + } + if( !copyFile( curFile, destFile) ) { + QMessageBox::message("AdvancedFm",tr("Could not copy\n") + +curFile +tr("to\n")+destFile); + return; + } + } + delete fileDlg; + + } + rePopulate(); + setOtherTabCurrent(); +} + +void AdvancedFm::copySameDir() { + qApp->processEvents(); + QStringList curFileList = getPath(); + QString curFile, item, destFile; + InputDialog *fileDlg; + + QDir *thisDir = CurrentDir(); + + for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) { + item=(*it); + curFile = thisDir->canonicalPath()+"/"+ item; + + fileDlg = new InputDialog(this,tr("Copy ")+curFile+tr(" As"),TRUE, 0); + fileDlg->setInputText((const QString &) destFile ); + fileDlg->exec(); + + if( fileDlg->result() == 1 ) { + + QString filename = fileDlg->LineEdit1->text(); + destFile = thisDir->canonicalPath()+"/"+filename; + + QFile f(destFile); + if( f.exists()) { + switch (QMessageBox::warning(this,tr("Delete"), + destFile+tr(" already exists.\nDo you really want to delete it?"), + tr("Yes"),tr("No"),0,0,1) ) { + case 0: + + f.remove(); + break; + case 1: + return; + break; + }; + } + if(!copyFile( curFile,destFile) ) { + QMessageBox::message("AdvancedFm",tr("Could not copy\n") + +curFile +tr("to\n")+destFile); + return; + } + +// qDebug("copy "+curFile+" as "+destFile); + } + delete fileDlg; + } + rePopulate(); +} + +void AdvancedFm::move() { + qApp->processEvents(); + + QStringList curFileList = getPath(); + if( curFileList.count() > 0) { + QString curFile, destFile, item; + + QDir *thisDir = CurrentDir(); + QDir *thatDir = OtherDir(); + for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) { + item=(*it); + QString destFile = thatDir->canonicalPath(); + + if(destFile.right(1).find("/",0,TRUE) == -1) + destFile+="/"; + destFile += item; +// qDebug("Destination file is "+destFile); + + curFile = thisDir->canonicalPath(); + if(curFile.right(1).find("/",0,TRUE) == -1) + curFile +="/"; + curFile+= item; +// qDebug("CurrentFile file is " + curFile); + + if(QFileInfo(curFile).isDir()) { + moveDirectory( curFile, destFile ); + rePopulate(); + return; + } + + QFile f( curFile); + if( f.exists()) { + if( !copyFile( curFile, destFile) ) { + QMessageBox::message(tr("Note"),tr("Could not move\n")+curFile); + return; + } else + QFile::remove(curFile); + } + } + + } + rePopulate(); + setOtherTabCurrent(); +} + +bool AdvancedFm::moveDirectory( const QString & src, const QString & dest ) { + int err = 0; + if( copyDirectory( src, dest ) ) { QString cmd = "rm -rf " + src; + err = system((const char*)cmd); + } else + err = -1; + + if(err!=0) { + QMessageBox::message(tr("Note"),tr("Could not move\n") + src); + return false; + } + return true; +} + +bool AdvancedFm::copyDirectory( const QString & src, const QString & dest ) { + + QString cmd = "/bin/cp -fpR " + src + " " + dest; + qWarning(cmd); + int err = system( (const char *) cmd ); + if ( err != 0 ) { + QMessageBox::message("AdvancedFm", + tr( "Could not copy \n%1 \nto \n%2").arg( src ).arg( dest ) ); + return false; + } + + return true; +} + + +bool AdvancedFm::copyFile( const QString & src, const QString & dest ) { + + + if(QFileInfo(src).isDir()) { + if( copyDirectory( src, dest )) { + setOtherTabCurrent(); + populateView(); + return true; + } + else + return false; + } + + + bool success = true; + struct stat status; + QFile srcFile(src); + QFile destFile(dest); + int err=0; + int read_fd=0; + int write_fd=0; + struct stat stat_buf; + off_t offset = 0; + if(!srcFile.open( IO_ReadOnly|IO_Raw)) { +// qWarning("open failed"); + return success = false; + } + read_fd = srcFile.handle(); + if(read_fd != -1) { + fstat (read_fd, &stat_buf); + if( !destFile.open( IO_WriteOnly|IO_Raw ) ) { +// qWarning("destfile open failed"); + return success = false; + } + write_fd = destFile.handle(); + if(write_fd != -1) { + err = sendfile(write_fd, read_fd, &offset, stat_buf.st_size); + if( err == -1) { + QString msg; + switch(err) { + case EBADF : msg = "The input file was not opened for reading or the output file was not opened for writing. "; + case EINVAL: msg = "Descriptor is not valid or locked. "; + case ENOMEM: msg = "Insufficient memory to read from in_fd."; + case EIO: msg = "Unspecified error while reading from in_fd."; + }; + success = false; +// qWarning(msg); + } + } else { + success = false; + } + } else { + success = false; + } + srcFile.close(); + destFile.close(); + // Set file permissions + if( stat( (const char *) src, &status ) == 0 ) { + chmod( (const char *) dest, status.st_mode ); + } + + return success; +} + +void AdvancedFm::runCommand() { + if( !CurrentView()->currentItem()) return; + QDir *thisDir = CurrentDir(); + + QString curFile; + curFile = thisDir->canonicalPath() +"/"+ CurrentView()->currentItem()->text(0); + + InputDialog *fileDlg; + fileDlg = new InputDialog(this,tr("Run Command"),TRUE, 0); + fileDlg->setInputText(curFile); + fileDlg->exec(); + //QString command; + + if( fileDlg->result() == 1 ) { +// qDebug(fileDlg->LineEdit1->text()); + QStringList command; + + command << "/bin/sh"; + command << "-c"; + command << fileDlg->LineEdit1->text(); + Output *outDlg; + outDlg = new Output( command, this, tr("AdvancedFm Output"), true); + QPEApplication::execDialog( outDlg ); + qApp->processEvents(); + + } +} + +void AdvancedFm::runCommandStd() { + if( !CurrentView()->currentItem()) return; + QString curFile; + QDir *thisDir = CurrentDir(); + QListView *thisView = CurrentView(); + if( thisView->currentItem()) + curFile = thisDir->canonicalPath() +"/"+ thisView->currentItem()->text(0); + + InputDialog *fileDlg; + fileDlg = new InputDialog(this,tr("Run Command"),TRUE, 0); + fileDlg->setInputText(curFile); + fileDlg->exec(); + + if( fileDlg->result() == 1 ) { + qApp->processEvents(); + startProcess( (const QString)fileDlg->LineEdit1->text().latin1()); + } +} + +void AdvancedFm::fileStatus() { + if( !CurrentView()->currentItem()) return; + QString curFile; + curFile = CurrentView()->currentItem()->text(0); + + QStringList command; + command << "/bin/sh"; + command << "-c"; + command << "stat -l "+ curFile; + + Output *outDlg; + outDlg = new Output( command, this, tr("AdvancedFm Output"), true); + QPEApplication::execDialog( outDlg ); + qApp->processEvents(); +} + + +void AdvancedFm::mkDir() { + makeDir(); +} + +void AdvancedFm::rn() { + renameIt(); +} + +void AdvancedFm::del() { + doDelete(); +} + +void AdvancedFm::mkSym() { + QString cmd; + QStringList curFileList = getPath(); + if( curFileList.count() > 0) { + QDir *thisDir = CurrentDir(); + QDir * thatDir = OtherDir(); + + for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) { + + QString destName = thatDir->canonicalPath()+"/"+(*it); + if(destName.right(1) == "/") { + destName = destName.left( destName.length() -1); + } + + QString curFile = thisDir->canonicalPath()+"/"+(*it); + + if( curFile.right(1) == "/") { + curFile = curFile.left( curFile.length() -1); + } + + cmd = "ln -s "+curFile+" "+destName; +// qDebug(cmd); + startProcess( (const QString)cmd ); + } + rePopulate(); + setOtherTabCurrent(); + } +} + +void AdvancedFm::doBeam() { + Ir ir; + if(!ir.supported()) { + } else { + QStringList curFileList = getPath(); + if( curFileList.count() > 0) { + for ( QStringList::Iterator it = curFileList.begin(); it != curFileList.end(); ++it ) { + QString curFile = (*it); + QString curFilePath = CurrentDir()->canonicalPath()+"/"+curFile; + if( curFilePath.right(1) == "/") { + curFilePath = curFilePath.left( curFilePath.length() -1); + } + Ir *file = new Ir(this, "IR"); + connect(file, SIGNAL(done(Ir*)), this, SLOT( fileBeamFinished( Ir * ))); + file->send( curFilePath, curFile ); + } + } + } +} + +void AdvancedFm::fileBeamFinished( Ir *) { + QMessageBox::message( tr("Advancedfm Beam out"), tr("Ir sent.") ,tr("Ok") ); +} + +void AdvancedFm::selectAll() { + QListView *thisView = CurrentView(); + thisView->selectAll(true); + thisView->setSelected( thisView->firstChild(),false); +} + +void AdvancedFm::startProcess(const QString & cmd) { + QStringList command; + OProcess *process; + process = new OProcess(); + connect(process, SIGNAL(processExited(OProcess *)), + this, SLOT( processEnded(OProcess *))); + + connect(process, SIGNAL( receivedStderr(OProcess *, char *, int)), + this, SLOT( oprocessStderr(OProcess *, char *, int))); + + command << "/bin/sh"; + command << "-c"; + command << cmd.latin1(); + *process << command; + if(!process->start(OProcess::NotifyOnExit, OProcess::All) ) + qDebug("could not start process"); +} + +void AdvancedFm::processEnded(OProcess *) { + rePopulate(); +} + +void AdvancedFm::oprocessStderr(OProcess*, char *buffer, int ) { +// qWarning("received stderrt %d bytes", buflen); + + QString lineStr = buffer; + QMessageBox::warning( this, tr("Error"), lineStr ,tr("Ok") ); +} + +bool AdvancedFm::eventFilter( QObject * o, QEvent * e ) { + if ( o->inherits( "QLineEdit" ) ) { + if ( e->type() == QEvent::KeyPress ) { + QKeyEvent *ke = (QKeyEvent*)e; + if ( ke->key() == Key_Return || + ke->key() == Key_Enter ) { + okRename(); + return true; + } + else if ( ke->key() == Key_Escape ) { + cancelRename(); + return true; + } + } + else if ( e->type() == QEvent::FocusOut ) { + cancelRename(); + return true; + } + } + if ( o->inherits( "QListView" ) ) { + if ( e->type() == QEvent::FocusIn ) { + if( o == Local_View) { //keep track of which view + whichTab=1; + } + else { + whichTab=2; + } + } + OtherView()->setSelected( OtherView()->currentItem(), FALSE );//make sure there's correct selection + } + + return QWidget::eventFilter( o, e ); +} + + +void AdvancedFm::cancelRename() { +// qDebug("cancel rename"); + QListView * view; + view = CurrentView(); + + bool resetFocus = view->viewport()->focusProxy() == renameBox; + delete renameBox; + renameBox = 0; + if ( resetFocus ) { + view->viewport()->setFocusProxy( view); + view->setFocus(); + } +} + +void AdvancedFm::doRename(QListView * view) { + if( !CurrentView()->currentItem()) return; + + QRect r = view->itemRect( view->currentItem( )); + r = QRect( view->viewportToContents( r.topLeft() ), r.size() ); + r.setX( view->contentsX() ); + + if ( r.width() > view->visibleWidth() ) + r.setWidth( view->visibleWidth() ); + + renameBox = new QLineEdit( view->viewport(), "qt_renamebox" ); + renameBox->setFrame(true); + + renameBox->setText( view->currentItem()->text(0) ); + + renameBox->selectAll(); + renameBox->installEventFilter( this ); + + view->addChild( renameBox, r.x(), r.y() ); + + renameBox->resize( r.size() ); + + view->viewport()->setFocusProxy( renameBox ); + + renameBox->setFocus(); + renameBox->show(); +} + + +void AdvancedFm::renameIt() { + if( !CurrentView()->currentItem()) return; + + QListView *thisView = CurrentView(); + oldName = thisView->currentItem()->text(0); + doRename( thisView ); +} + +void AdvancedFm::okRename() { + if( !CurrentView()->currentItem()) return; + + QString newName = renameBox->text(); + cancelRename(); + QListView * view = CurrentView(); + QString path = CurrentDir()->canonicalPath() + "/"; + oldName = path + oldName; + newName = path + newName; + if( rename( oldName.latin1(), newName.latin1())== -1) + QMessageBox::message(tr("Note"),tr("Could not rename")); + else + oldName = ""; + view->takeItem( view->currentItem() ); + delete view->currentItem(); + rePopulate(); +} + +void AdvancedFm::openSearch() { + QMessageBox::message(tr("Note"),tr("Not Yet Implemented")); +} diff --git a/noncore/apps/checkbook/checkbook.cpp b/noncore/apps/checkbook/checkbook.cpp index a42c824..a5492e4 100644 --- a/noncore/apps/checkbook/checkbook.cpp +++ b/noncore/apps/checkbook/checkbook.cpp @@ -483,8 +483,7 @@ void Checkbook::slotNewTran() Transaction *currtran = new Transaction( this, true, info->name(), traninfo, _pCfg ); - currtran->showMaximized(); - if ( currtran->exec() == QDialog::Accepted ) + if ( QPEApplication::execDialog( currtran ) == QDialog::Accepted ) { // Add to transaction list info->addTransaction( traninfo ); @@ -530,8 +529,7 @@ void Checkbook::slotEditTran() Transaction *currtran = new Transaction( this, false, info->name(), traninfo, _pCfg ); - currtran->showMaximized(); - if ( currtran->exec() == QDialog::Accepted ) + if ( QPEApplication::execDialog( currtran ) == QDialog::Accepted ) { curritem->setText( COL_NUM, traninfo->number() ); curritem->setText( COL_SORTDATE, traninfo->datestr(false) ); diff --git a/noncore/apps/checkbook/mainwindow.cpp b/noncore/apps/checkbook/mainwindow.cpp index f29001a..60aea42 100644 --- a/noncore/apps/checkbook/mainwindow.cpp +++ b/noncore/apps/checkbook/mainwindow.cpp @@ -36,11 +36,11 @@ #include #include #include -#include #include #include #include +#include #include #include #include @@ -214,8 +214,7 @@ void MainWindow::slotNew() CBInfo *cb = new CBInfo(); Checkbook *currcb = new Checkbook( this, cb, &_cfg ); - currcb->showMaximized(); - if ( currcb->exec() == QDialog::Accepted ) + if ( QPEApplication::execDialog( currcb ) == QDialog::Accepted ) { // Save new checkbook buildFilename( cb->name() ); @@ -272,8 +271,7 @@ void MainWindow::openBook(QListViewItem *curritem) _cfg.setLastBook( currname ); Checkbook *currcb = new Checkbook( this, cb, &_cfg ); - currcb->showMaximized(); - if ( currcb->exec() == QDialog::Accepted ) + if ( QPEApplication::execDialog( currcb ) == QDialog::Accepted ) { QString newname = cb->name(); if ( currname != newname ) @@ -345,8 +343,7 @@ void MainWindow::slotDelete() void MainWindow::slotConfigure() { Configuration *cfgdlg = new Configuration( this, _cfg ); - cfgdlg->showMaximized(); - if ( cfgdlg->exec() == QDialog::Accepted ) + if ( QPEApplication::execDialog( cfgdlg ) == QDialog::Accepted ) { // read data from config dialog & save it cfgdlg->saveConfig( _cfg ); diff --git a/noncore/apps/odict/configdlg.cpp b/noncore/apps/odict/configdlg.cpp index 2103df9..b12a395 100644 --- a/noncore/apps/odict/configdlg.cpp +++ b/noncore/apps/odict/configdlg.cpp @@ -17,10 +17,11 @@ #include "configdlg.h" #include "searchmethoddlg.h" -#include +#include #include -#include +#include +#include #include #include #include @@ -35,7 +36,7 @@ ConfigDlg::ConfigDlg(QWidget *parent, const char *name, bool modal) : QDialog(pa QVBoxLayout *vbox_layout = new QVBoxLayout( this ); search_tab = new QWidget( this , "search_tab" ); QVBoxLayout *vbox_layout_searchtab = new QVBoxLayout( search_tab, 4 , 4 ,"blah" ); - + QHBox *hbox = new QHBox( search_tab ); list = new QListView( hbox ); list->addColumn( tr( "Searchmethod" ) ); @@ -53,7 +54,7 @@ ConfigDlg::ConfigDlg(QWidget *parent, const char *name, bool modal) : QDialog(pa vbox_layout->addWidget( search_tab ); - showMaximized(); + QPEApplication::execDialog( this ); } void ConfigDlg::slotNewMethod() diff --git a/noncore/apps/odict/searchmethoddlg.cpp b/noncore/apps/odict/searchmethoddlg.cpp index 99cd8db..8ed7152 100644 --- a/noncore/apps/odict/searchmethoddlg.cpp +++ b/noncore/apps/odict/searchmethoddlg.cpp @@ -16,10 +16,11 @@ **************************************************************************/ #include "searchmethoddlg.h" -#include #include -#include +#include +#include +#include #include #include #include @@ -55,7 +56,7 @@ SearchMethodDlg::SearchMethodDlg(QWidget *parent, const char *name, bool modal, lang2 = new QLineEdit( dummywidget ); trenner = new QLineEdit( dummywidget ); trenner->setText( "::" ); - + QGridLayout *grid = new QGridLayout( dummywidget, 2,3 ); grid->addWidget( lag1, 0,0 ); grid->addWidget( devider, 0,1 ); @@ -63,14 +64,14 @@ SearchMethodDlg::SearchMethodDlg(QWidget *parent, const char *name, bool modal, grid->addWidget( lang1, 1,0 ); grid->addWidget( trenner, 1,1 ); grid->addWidget( lang2, 1,2 ); - + vbox_layout->addWidget( vbox ); - showMaximized(); - + QPEApplication::execDialog ( this ); + if( !itemname ) setCaption( tr( "New Searchmethod" ) ); - else + else { setCaption( tr( "Change Searchmethod" ) ); itemName = itemname; diff --git a/noncore/apps/opie-bartender/bartender.cpp b/noncore/apps/opie-bartender/bartender.cpp index 8c4ee93..cd0a364 100644 --- a/noncore/apps/opie-bartender/bartender.cpp +++ b/noncore/apps/opie-bartender/bartender.cpp @@ -169,8 +169,7 @@ void Bartender::fileNew() { New_Drink *newDrinks; newDrinks = new New_Drink(this,"New Drink....", TRUE); QString newName, newIng; - newDrinks->showMaximized(); - newDrinks->exec(); + QPEApplication::execDialog( newDrinks ); newName = newDrinks->LineEdit1->text(); newIng= newDrinks->MultiLineEdit1->text(); @@ -226,8 +225,7 @@ void Bartender::showDrink( QListViewItem *item) { } } } - showDrinks->showMaximized(); - showDrinks->exec(); + QPEApplication::execDialog( showDrinks ); if(showDrinks ->result() ==0) { doEdit(); @@ -317,9 +315,8 @@ void Bartender::showSearchResult(QStringList &searchList) { searchList.sort(); searchDlg = new Search_Results(this, "Search Results", TRUE); - searchDlg->showMaximized(); searchDlg->ListBox1->insertStringList( searchList,-1); - searchDlg->exec(); + QPEApplication::execDialog( searchDlg ); if( searchDlg->result() == 1 ) { result= searchDlg->ListBox1->currentText(); @@ -346,9 +343,9 @@ void Bartender::doEdit() { New_Drink *newDrinks; newDrinks = new New_Drink(this,"Edit Drink....", TRUE); QString newName, newIng; - newDrinks->showMaximized(); + QPEApplication::showDialog( newDrinks ); QTextStream t( &dbFile); - + QString s, s2; while ( !t.eof()) { s = t.readLine(); @@ -401,8 +398,7 @@ void Bartender::clearList() { void Bartender::doBac() { BacDialog *bacDlg; bacDlg = new BacDialog(this,"BAC",TRUE); - bacDlg->showMaximized(); - bacDlg->exec(); + QPEApplication::execDialog( bacDlg ); delete bacDlg; } diff --git a/noncore/apps/opie-console/configdialog.cpp b/noncore/apps/opie-console/configdialog.cpp index b23f4d0..882cd3d 100644 --- a/noncore/apps/opie-console/configdialog.cpp +++ b/noncore/apps/opie-console/configdialog.cpp @@ -1,5 +1,7 @@ -#include +#include + +#include #include "configdialog.h" #include "profileeditordialog.h" @@ -73,8 +75,7 @@ void ConfigDialog::slotEdit() { ProfileEditorDialog dlg(m_fact, p); dlg.setCaption(tr("Edit Connection Profile")); - dlg.showMaximized(); - int ret = dlg.exec(); + int ret = QPEApplication::execDialog( &dlg ); if(ret == QDialog::Accepted) { @@ -92,8 +93,7 @@ void ConfigDialog::slotAdd() { ProfileEditorDialog dlg(m_fact); dlg.setCaption(tr("New Connection")); - dlg.showMaximized(); - int ret = dlg.exec(); + int ret = QPEApplication::execDialog( &dlg ); if(ret == QDialog::Accepted) { diff --git a/noncore/apps/opie-console/mainwindow.cpp b/noncore/apps/opie-console/mainwindow.cpp index 2673335..3fe9040 100644 --- a/noncore/apps/opie-console/mainwindow.cpp +++ b/noncore/apps/opie-console/mainwindow.cpp @@ -8,6 +8,7 @@ #include #include +#include #include @@ -310,9 +311,8 @@ QList MainWindow::sessions() { void MainWindow::slotNew() { ProfileEditorDialog dlg(factory() ); - dlg.showMaximized(); dlg.setCaption( tr("New Connection") ); - int ret = dlg.exec(); + int ret = QPEApplication::execDialog( &dlg ); if ( ret == QDialog::Accepted ) { create( dlg.profile() ); @@ -425,9 +425,8 @@ void MainWindow::slotQuickLaunch() { void MainWindow::slotConfigure() { ConfigDialog conf( manager()->all(), factory() ); - conf.showMaximized(); - int ret = conf.exec(); + int ret = QPEApplication::execDialog( &conf ); if ( QDialog::Accepted == ret ) { manager()->setProfiles( conf.list() ); diff --git a/noncore/apps/opie-console/modemconfigwidget.cpp b/noncore/apps/opie-console/modemconfigwidget.cpp index e552990..3466e3a 100644 --- a/noncore/apps/opie-console/modemconfigwidget.cpp +++ b/noncore/apps/opie-console/modemconfigwidget.cpp @@ -1,3 +1,6 @@ + +#include + #include #include #include @@ -237,8 +240,7 @@ void ModemConfigWidget::slotAT() { // but making it a TopLevel Dialog and ignoring // cancel is not fun either... // what to do? FIXME!!! -zecke - atConf->showMaximized(); - if ( atConf->exec() != QDialog::Accepted ) { + if ( QPEApplication::execDialog( atConf ) != QDialog::Accepted ) { // reload old settings } } @@ -248,8 +250,7 @@ void ModemConfigWidget::slotDial() { if(!m_telNumber->text().isEmpty()) { dial.setNumber(m_telNumber->text().replace(QRegExp("[\\-\\/\\ \\.\\,]"), "")); } - dial.showMaximized(); - if ( dial.exec() == QDialog::Accepted ) { + if ( QPEApplication::execDialog( &dial ) == QDialog::Accepted ) { m_telNumber->setText( dial.number() ); } } diff --git a/noncore/apps/opie-reader/CloseDialog.cpp b/noncore/apps/opie-reader/CloseDialog.cpp index 741fa67..d7c2652 100644 --- a/noncore/apps/opie-reader/CloseDialog.cpp +++ b/noncore/apps/opie-reader/CloseDialog.cpp @@ -1,6 +1,8 @@ #include "CloseDialog.h" #include "qlayout.h" +#include + CCloseDialog::CCloseDialog(const QString& fname, bool fs, QWidget* parent, const char* name) : QDialog(parent, name, true) { setCaption(tr("Tidy-up")); @@ -14,5 +16,6 @@ CCloseDialog::CCloseDialog(const QString& fname, bool fs, QWidget* parent, const file->setChecked(false); marks->setChecked(true); config->setChecked(true); - if (fs) showMaximized(); + if (fs) + QPEApplication::showDialog( this ); } diff --git a/noncore/apps/opie-reader/Prefs.cpp b/noncore/apps/opie-reader/Prefs.cpp index e5320d9..5150ca5 100644 --- a/noncore/apps/opie-reader/Prefs.cpp +++ b/noncore/apps/opie-reader/Prefs.cpp @@ -27,6 +27,8 @@ #include #endif +#include + CLayoutPrefs::CLayoutPrefs( QWidget* parent, const char* name, WFlags fl ) : QWidget( parent, name, fl ) { @@ -427,7 +429,8 @@ CPrefs::CPrefs(bool fs, QWidget* parent, const char* name) : QDialog(parent, nam QVBoxLayout* v = new QVBoxLayout(this); v->addWidget(td); - if (fs) showMaximized(); + if (fs) + QPEApplication::showDialog( this ); } diff --git a/noncore/apps/opie-reader/QTReaderApp.cpp b/noncore/apps/opie-reader/QTReaderApp.cpp index f10020a..07af597 100644 --- a/noncore/apps/opie-reader/QTReaderApp.cpp +++ b/noncore/apps/opie-reader/QTReaderApp.cpp @@ -1,4222 +1,4222 @@ -/********************************************************************** -** Copyright (C) 2000 Trolltech AS. Allrights reserved. -** -** This file is part of Qt Palmtop Environment. -** -** This file may be distributed and/or modified under the terms of the -** GNU General Public License version 2 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. -** -** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -** -** See http://www.trolltech.com/gpl/ for GPL licensing information. -** -** Contact info@trolltech.com if any conditions of this licensing are -** not clear to you. -** -**********************************************************************/ -#include "useqpe.h" -#include -#include -#include -#ifdef USEQPE -#include -#include -#endif -#include -#include -#ifdef USEQPE -#include -#include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#ifdef USEQPE -#include -#include -#endif -#include -#include //getenv -#include -#ifdef USEQPE -#include -#endif -#include -#include -#ifdef USEQPE -#include -#endif -#include "QTReader.h" -#include "GraphicWin.h" -#include "Bkmks.h" -#include "cbkmkselector.h" -#include "infowin.h" -#include "ToolbarPrefs.h" -#include "Prefs.h" -#include "CAnnoEdit.h" -#include "QFloatBar.h" -#include "FixedFont.h" -#include "URLDialog.h" -//#include - -#ifdef USEQPE -#include -#include -#include "fileBrowser.h" -#else -#include "qfiledialog.h" -#endif - -#include "QTReaderApp.h" -#include "CDrawBuffer.h" -#include "Filedata.h" -#include "opie.h" -#include "useqpe.h" -#include "names.h" -#include "CEncoding_tables.h" -#include "CloseDialog.h" - -bool CheckVersion(int&, int&, char&); - -#ifdef _WINDOWS -#define PICDIR "c:\\uqtreader\\pics\\" -#else -#ifdef USEQPE -#define PICDIR "opie-reader/" -#else -#define PICDIR "/home/tim/uqtreader/pics/" -#endif -#endif - -unsigned long QTReaderApp::m_uid = 0; - -void QTReaderApp::setScrollState(bool _b) { m_scrollButton->setOn(_b); } - -#ifdef USEQPE -#define geticon(iconname) Resource::loadPixmap( iconname ) -#define getmyicon(iconname) Resource::loadPixmap( PICDIR iconname ) -#else -#define geticon(iconname) QPixmap(PICDIR iconname ".png") -#define getmyicon(iconname) geticon(iconname) -//#define geticon(iconname) QIconSet( QPixmap(PICDIR iconname) ) -#endif - -#ifndef _WINDOWS -#include -#endif -#include -#ifndef _WINDOWS -#include -#endif - -void QTReaderApp::listBkmkFiles() -{ - bkmkselector->clear(); - bkmkselector->setText("Cancel"); -#ifndef USEQPE - int cnt = 0; - - QDir d = QDir::home(); // "/" - if ( !d.cd(APPDIR) ) { // "/tmp" - qWarning( "Cannot find the \"~/" APPDIR "\" directory" ); - d = QDir::home(); - d.mkdir(APPDIR); - d.cd(APPDIR); - } - - - - - d.setFilter( QDir::Files | QDir::NoSymLinks ); -// d.setSorting( QDir::Size | QDir::Reversed ); - - const QFileInfoList *list = d.entryInfoList(); - QFileInfoListIterator it( *list ); // create list iterator - QFileInfo *fi; // pointer for traversing - - while ( (fi=it.current()) ) { // for each file... - - bkmkselector->insertItem(fi->fileName()); - cnt++; - - //qDebug( "%10li %s", fi->size(), fi->fileName().data() ); - ++it; // goto next list element - } - -#else /* USEQPE */ - int cnt = 0; - DIR *d; - d = opendir((const char *)Global::applicationFileName(APPDIR,"")); - - while(1) - { - struct dirent* de; - struct stat buf; - de = readdir(d); - if (de == NULL) break; - - if (lstat((const char *)Global::applicationFileName(APPDIR,de->d_name),&buf) == 0 && S_ISREG(buf.st_mode)) - { - bkmkselector->insertItem(de->d_name); - cnt++; - } - } - - closedir(d); -#endif - if (cnt > 0) - { -//tjw menu->hide(); - editorStack->raiseWidget( bkmkselector ); - hidetoolbars(); - m_nBkmkAction = cRmBkmkFile; - } - else - QMessageBox::information(this, PROGNAME, "No bookmark files"); -} - -void QTReaderApp::hidetoolbars() -{ - menubar->hide(); - if (fileBar != NULL) fileBar->hide(); - if (viewBar != NULL) viewBar->hide(); - if (navBar != NULL) navBar->hide(); - if (markBar != NULL) markBar->hide(); - if (m_fontVisible) m_fontBar->hide(); - if (regVisible) - { -#ifdef USEQPE - Global::hideInputMethod(); -#endif - regBar->hide(); - } - if (searchVisible) - { -#ifdef USEQPE - Global::hideInputMethod(); -#endif - searchBar->hide(); - } -} - -QTReaderApp::QTReaderApp( QWidget *parent, const char *name, WFlags f ) - : QMainWindow( parent, name, f ), bFromDocView( FALSE ), m_dontSave(false), - fileBar(NULL), navBar(NULL), viewBar(NULL), markBar(NULL) -{ - m_url_clipboard = false; - m_url_localfile = false; - m_url_globalfile = false; - ftime(&m_lastkeytime); -//// qDebug("Application directory = %s", (const tchar *)QPEApplication::documentDir()); -//// qDebug("Application directory = %s", (const tchar *)Global::applicationFileName("uqtreader","bkmks.xml")); - - m_bcloseDisabled = true; - m_disableesckey = false; - pBkmklist = NULL; - pOpenlist = NULL; -// doc = 0; - - m_fBkmksChanged = false; - - QString lang = getenv( "LANG" ); - QString rot = getenv( "QWS_DISPLAY" ); - -/* - int m_rot = 0; - if (rot.contains("Rot90")) - { - m_rot = 90; - } - else if (rot.contains("Rot180")) - { - m_rot = 180; - } - else if (rot.contains("Rot270")) - { - m_rot = 270; - } - -// qDebug("Initial Rotation(%d):%s", m_rot, (const char*)rot); -*/ - m_autogenstr = "^ *[A-Z].*[a-z] *$"; - -#ifdef USEQPE - setIcon( Resource::loadPixmap( PICDIR "uqtreader") ); -#else - setIcon( QPixmap (PICDIR "uqtreader.png") ); -#endif /* USEQPE */ - -// QToolBar *bar = new QToolBar( this ); -// menubar = new QToolBar( this ); -#ifdef USEQPE - Config config( APPDIR ); -#else - QDir d = QDir::home(); // "/" - if ( !d.cd(APPDIR) ) { // "/tmp" - qWarning( "Cannot find the \"~/" APPDIR "\" directory" ); - d = QDir::home(); - d.mkdir(APPDIR); - d.cd(APPDIR); - } - QFileInfo fi(d, INIFILE); -// qDebug("Path:%s", (const char*)fi.absFilePath()); - Config config(fi.absFilePath()); -#endif - config.setGroup("Toolbar"); - m_tbmovesave = m_tbmove = config.readBoolEntry("Movable", false); - m_tbpolsave = m_tbpol = (ToolbarPolicy)config.readNumEntry("Policy", 1); - m_tbposition = (ToolBarDock)config.readNumEntry("Position", 2); - menubar = new QToolBar("Menus", this, m_tbposition); - -// fileBar = new QToolBar("File", this); -// QToolBar* viewBar = new QToolBar("File", this); -// QToolBar* navBar = new QToolBar("File", this); -// QToolBar* markBar = new QToolBar("File", this); - -#ifdef USEQPE - mb = new QMenuBar( menubar ); -#else - mb = new QMenuBar( menubar ); -#endif - -//#ifdef USEQPE - QPopupMenu* tmp = new QPopupMenu(mb); - mb->insertItem( geticon( "AppsIcon" ), tmp ); -//#else -// QMenuBar* tmp = mb; -//#endif - - QPopupMenu *file = new QPopupMenu( mb ); - tmp->insertItem( tr( "File" ), file ); - - QPopupMenu *navigation = new QPopupMenu(mb); - tmp->insertItem( tr( "Navigation" ), navigation ); - - QPopupMenu *view = new QPopupMenu( mb ); - tmp->insertItem( tr( "View" ), view ); - - QPopupMenu *marks = new QPopupMenu( this ); - tmp->insertItem( tr( "Marks" ), marks ); - - QPopupMenu *settings = new QPopupMenu( this ); - tmp->insertItem( tr( "Settings" ), settings ); - -// addToolBar(menubar, "Menus",QMainWindow::Top); -// addToolBar(fileBar, "Toolbar",QMainWindow::Top); - - // QPopupMenu *edit = new QPopupMenu( this ); - - /* - QAction *a = new QAction( tr( "New" ), Resource::loadPixmap( "new" ), QString::null, 0, this, 0 ); - connect( a, SIGNAL( activated() ), this, SLOT( fileNew() ) ); - a->addTo( bar ); - a->addTo( file ); - */ - - editorStack = new QWidgetStack( this ); - setCentralWidget( editorStack ); - - searchVisible = FALSE; - regVisible = FALSE; - m_fontVisible = false; - - m_annoWin = new CAnnoEdit(editorStack); - editorStack->addWidget(m_annoWin, get_unique_id()); - connect( m_annoWin, SIGNAL( finished(const QString&, const QString&) ), this, SLOT( addAnno(const QString&, const QString&) ) ); - connect( m_annoWin, SIGNAL( cancelled() ), this, SLOT( infoClose() ) ); - - m_infoWin = new infowin(editorStack); - editorStack->addWidget(m_infoWin, get_unique_id()); - connect( m_infoWin, SIGNAL( Close() ), this, SLOT( infoClose() ) ); - - m_graphicwin = new GraphicWin(editorStack); - editorStack->addWidget(m_graphicwin, get_unique_id()); - connect( m_graphicwin, SIGNAL( Closed() ), this, SLOT( infoClose() ) ); - -// bkmkselector = new QListBox(editorStack, "Bookmarks"); - bkmkselector = new CBkmkSelector(editorStack, "Bookmarks"); - // connect(bkmkselector, SIGNAL( selected(const QString&) ), this, SLOT( gotobkmk(const QString&) ) ); - connect(bkmkselector, SIGNAL( selected(int) ), this, SLOT( gotobkmk(int) ) ); - connect(bkmkselector, SIGNAL( cancelled() ), this, SLOT( cancelbkmk() ) ); - editorStack->addWidget( bkmkselector, get_unique_id() ); - -/* - importSelector = new FileSelector( "*", editorStack, "importselector", false ); - connect( importSelector, SIGNAL( fileSelected( const DocLnk &) ), this, SLOT( importFile( const DocLnk & ) ) ); - - editorStack->addWidget( importSelector, get_unique_id() ); - - // don't need the close visible, it is redundant... - importSelector->setCloseVisible( FALSE ); -*/ -// qDebug("Reading file list"); - readfilelist(); - - reader = new QTReader( editorStack ); - - reader->bDoUpdates = false; - -#ifdef USEQPE - ((QPEApplication*)qApp)->setStylusOperation(reader, QPEApplication::RightOnHold); -#endif - -// qDebug("Reading config"); -// Config config( APPDIR ); - config.setGroup( "View" ); - m_debounce = config.readNumEntry("Debounce", 0); -#ifdef USEQPE - m_bFloatingDialog = config.readBoolEntry("FloatDialogs", false); -#else - m_bFloatingDialog = config.readBoolEntry("FloatDialogs", true); -#endif - reader->bstripcr = config.readBoolEntry( "StripCr", true ); - reader->bfulljust = config.readBoolEntry( "FullJust", false ); - reader->setextraspace(config.readNumEntry( "ExtraSpace", 0 )); - reader->setlead(config.readNumEntry( "ExtraLead", 0 )); - reader->btextfmt = config.readBoolEntry( "TextFmt", false ); - reader->bautofmt = config.readBoolEntry( "AutoFmt", true ); - reader->bstriphtml = config.readBoolEntry( "StripHtml", false ); - reader->bpeanut = config.readBoolEntry( "Peanut", false ); - reader->bdehyphen = config.readBoolEntry( "Dehyphen", false ); - reader->bdepluck = config.readBoolEntry( "Depluck", false ); - reader->bdejpluck = config.readBoolEntry( "Dejpluck", false ); - reader->bonespace = config.readBoolEntry( "OneSpace", false ); - reader->bunindent = config.readBoolEntry( "Unindent", false ); - reader->brepara = config.readBoolEntry( "Repara", false ); - reader->bdblspce = config.readBoolEntry( "DoubleSpace", false ); - reader->bindenter = config.readNumEntry( "Indent", 0 ); - reader->m_textsize = config.readNumEntry( "FontSize", 12 ); - reader->m_delay = config.readNumEntry( "ScrollDelay", 5184); - reader->m_lastfile = config.readEntry( "LastFile", QString::null ); - reader->m_lastposn = config.readNumEntry( "LastPosn", 0 ); - reader->m_bpagemode = config.readBoolEntry( "PageMode", true ); - reader->m_bMonoSpaced = config.readBoolEntry( "MonoSpaced", false); - reader->m_swapmouse = config.readBoolEntry( "SwapMouse", false); - reader->m_fontname = config.readEntry( "Fontname", "helvetica" ); - reader->m_encd = config.readNumEntry( "Encoding", 0 ); - reader->m_charpc = config.readNumEntry( "CharSpacing", 100 ); - reader->m_overlap = config.readNumEntry( "Overlap", 0 ); - reader->m_border = config.readNumEntry( "Margin", 6 ); -#ifdef REPALM - reader->brepalm = config.readBoolEntry( "Repalm", true ); -#endif - reader->bremap = config.readBoolEntry( "Remap", true ); - reader->bmakebold = config.readBoolEntry( "MakeBold", false ); - reader->setContinuous(config.readBoolEntry( "Continuous", true )); - m_targetapp = config.readEntry( "TargetApp", QString::null ); - m_targetmsg = config.readEntry( "TargetMsg", QString::null ); -#ifdef _SCROLLPIPE - reader->m_pipetarget = config.readEntry( "PipeTarget", QString::null ); - reader->m_pauseAfterEachPara = config.readBoolEntry( "PauseAfterPara", true ); -#endif - m_twoTouch = config.readBoolEntry( "TwoTouch", false); - m_doAnnotation = config.readBoolEntry( "Annotation", false); - m_doDictionary = config.readBoolEntry( "Dictionary", false); - m_doClipboard = config.readBoolEntry( "Clipboard", false); - m_spaceTarget = (ActionTypes)config.readNumEntry("SpaceTarget", cesAutoScroll); - m_escapeTarget = (ActionTypes)config.readNumEntry("EscapeTarget", cesNone); - m_returnTarget = (ActionTypes)config.readNumEntry("ReturnTarget", cesFullScreen); - m_leftTarget = (ActionTypes)config.readNumEntry("LeftTarget", cesZoomOut); - m_rightTarget = (ActionTypes)config.readNumEntry("RightTarget", cesZoomIn); - m_upTarget = (ActionTypes)config.readNumEntry("UpTarget", cesPageUp); - m_downTarget = (ActionTypes)config.readNumEntry("DownTarget", cesPageDown); - - m_leftScroll = config.readBoolEntry("LeftScroll", false); - m_rightScroll = config.readBoolEntry("RightScroll", false); - m_upScroll = config.readBoolEntry("UpScroll", true); - m_downScroll = config.readBoolEntry("DownScroll", true); - - m_propogatefontchange = config.readBoolEntry( "RequestorFontChange", false); - reader->setBaseSize(config.readNumEntry( "Basesize", 10 )); - -#ifndef USEQPE - config.setGroup( "Geometry" ); - setGeometry(0,0, - config.readNumEntry( "width", QApplication::desktop()->width()/2 ), - config.readNumEntry( "height", QApplication::desktop()->height()/2 )); - move( - config.readNumEntry( "x", 20 ), - config.readNumEntry( "y", 20 )); -#endif - - - - setTwoTouch(m_twoTouch); - - connect( reader, SIGNAL( OnShowPicture(QImage&) ), this, SLOT( showgraphic(QImage&) ) ); - - connect( reader, SIGNAL( OnRedraw() ), this, SLOT( OnRedraw() ) ); - connect( reader, SIGNAL( OnWordSelected(const QString&, size_t, const QString&) ), this, SLOT( OnWordSelected(const QString&, size_t, const QString&) ) ); - connect( reader, SIGNAL( OnURLSelected(const QString&) ), this, SLOT( OnURLSelected(const QString&) ) ); - editorStack->addWidget( reader, get_unique_id() ); - - m_preferences_action = new QAction( tr( "Configuration" ), geticon( "SettingsIcon" ), QString::null, 0, this, NULL); - connect( m_preferences_action, SIGNAL( activated() ), this, SLOT( showprefs() ) ); - m_preferences_action->addTo( settings ); - - m_saveconfig_action = new QAction( tr( "Save Config" ), QString::null, 0, this, NULL); - connect( m_saveconfig_action, SIGNAL( activated() ), this, SLOT( SaveConfig() ) ); - m_saveconfig_action->addTo( settings ); - - m_loadconfig_action = new QAction( tr( "Load Config" ), QString::null, 0, this, NULL); - connect( m_loadconfig_action, SIGNAL( activated() ), this, SLOT( LoadConfig() ) ); - m_loadconfig_action->addTo( settings ); - - m_tidyconfig_action = new QAction( tr( "Delete Config" ), QString::null, 0, this, NULL); - connect( m_tidyconfig_action, SIGNAL( activated() ), this, SLOT( TidyConfig() ) ); - m_tidyconfig_action->addTo( settings ); - - settings->insertSeparator(); - m_toolbarprefs_action = new QAction( tr( "Toolbars" ), QString::null, 0, this, NULL); - connect( m_toolbarprefs_action, SIGNAL( activated() ), this, SLOT( showtoolbarprefs() ) ); - m_toolbarprefs_action->addTo( settings ); - - m_open_action = new QAction( tr( "Open" ), geticon( "fileopen" ), QString::null, 0, this, 0 ); - connect( m_open_action, SIGNAL( activated() ), this, SLOT( fileOpen() ) ); - m_open_action->addTo( file ); - - m_close_action = new QAction( tr( "Close" ), geticon( "close" ), QString::null, 0, this, 0 ); - connect( m_close_action, SIGNAL( activated() ), this, SLOT( fileClose() ) ); - m_close_action->addTo( file ); - -#ifdef _SCRIPT - a = new QAction( tr( "Run Script" ), QString::null, 0, this, NULL); - connect( a, SIGNAL( activated() ), this, SLOT( RunScript() ) ); - a->addTo( file ); -#endif - /* - a = new QAction( tr( "Revert" ), geticon( "close" ), QString::null, 0, this, 0 ); - connect( a, SIGNAL( activated() ), this, SLOT( fileRevert() ) ); - a->addTo( file ); - - a = new QAction( tr( "Cut" ), geticon( "cut" ), QString::null, 0, this, 0 ); - connect( a, SIGNAL( activated() ), this, SLOT( editCut() ) ); - a->addTo( filebar() ); - a->addTo( edit ); - */ - - m_info_action = new QAction( tr( "Info" ), geticon( "UtilsIcon" ), QString::null, 0, this, NULL); - connect( m_info_action, SIGNAL( activated() ), this, SLOT( showinfo() ) ); - m_info_action->addTo( file ); - - m_touch_action = new QAction( tr( "Two/One Touch" ), geticon( "1to1" ), QString::null, 0, this, NULL, true ); - connect( m_touch_action, SIGNAL( toggled(bool) ), this, SLOT( setTwoTouch(bool) ) ); - m_touch_action->setOn(m_twoTouch); - m_touch_action->addTo( file ); - - m_find_action = new QAction( tr( "Find..." ), geticon( "find" ), QString::null, 0, this, NULL); - connect( m_find_action, SIGNAL( activated() ), this, SLOT( editFind() ) ); - file->insertSeparator(); -// a->addTo( bar ); - m_find_action->addTo( file ); - - m_exportlinks_action = new QAction( tr( "Export Links" ), QString::null, 0, this, NULL); - connect( m_exportlinks_action, SIGNAL( activated() ), this, SLOT( ExportLinks() ) ); - m_exportlinks_action->addTo( file ); - - m_scrollButton = new QAction( tr( "Scroll" ), getmyicon( "panel-arrow-down" ), QString::null, 0, this, 0, true ); - connect( m_scrollButton, SIGNAL( toggled(bool) ), this, SLOT( autoScroll(bool) ) ); - m_scrollButton->addTo(navigation); - m_scrollButton->setOn(false); - - m_start_action = new QAction( tr( "Goto Start" ), geticon( "start" ), QString::null, 0, this, NULL); - connect( m_start_action, SIGNAL( activated() ), this, SLOT( gotoStart() ) ); - m_start_action->addTo(navigation); - - m_end_action = new QAction( tr( "Goto End" ), geticon( "finish" ), QString::null, 0, this, NULL); - connect( m_end_action, SIGNAL( activated() ), this, SLOT( gotoEnd() ) ); - m_end_action->addTo(navigation); - - m_jump_action = new QAction( tr( "Jump" ), geticon( "rotate" ), QString::null, 0, this, NULL); - connect( m_jump_action, SIGNAL( activated() ), this, SLOT( jump() ) ); - m_jump_action->addTo(navigation); - - m_pageline_action = new QAction( tr( "Page/Line Scroll" ), geticon( "pass" ), QString::null, 0, this, NULL, true ); - connect( m_pageline_action, SIGNAL( toggled(bool) ), this, SLOT( pagemode(bool) ) ); - m_pageline_action->addTo(navigation); - m_pageline_action->setOn(reader->m_bpagemode); - - m_pageup_action = new QAction( tr( "Up" ), geticon( "up" ), QString::null, 0, this, 0 ); - connect( m_pageup_action, SIGNAL( activated() ), this, SLOT( pageup() ) ); - m_pageup_action->addTo( navigation ); - - m_pagedn_action = new QAction( tr( "Down" ), geticon( "down" ), QString::null, 0, this, 0 ); - connect( m_pagedn_action, SIGNAL( activated() ), this, SLOT( pagedn() ) ); - m_pagedn_action->addTo( navigation ); - - m_back_action = new QAction( tr( "Back" ), geticon( "back" ), QString::null, 0, this, 0 ); - connect( m_back_action, SIGNAL( activated() ), reader, SLOT( goBack() ) ); - m_back_action->addTo( navigation ); - - m_home_action = new QAction( tr( "Home" ), geticon( "home" ), QString::null, 0, this, 0 ); - connect( m_home_action, SIGNAL( activated() ), reader, SLOT( goHome() ) ); - m_home_action->addTo( navigation ); - - m_forward_action = new QAction( tr( "Forward" ), geticon( "forward" ), QString::null, 0, this, 0 ); - connect( m_forward_action, SIGNAL( activated() ), reader, SLOT( goForward() ) ); - m_forward_action->addTo( navigation ); - - /* - a = new QAction( tr( "Find" ), QString::null, 0, this, NULL, true ); - // connect( a, SIGNAL( activated() ), this, SLOT( pagedn() ) ); - a->addTo( file ); - - a = new QAction( tr( "Find Again" ), QString::null, 0, this, NULL, true ); - // connect( a, SIGNAL( activated() ), this, SLOT( pagedn() ) ); - a->addTo( file ); - */ - -// file->insertSeparator(); - -#ifdef _SCROLLPIPE - - QActionGroup* ag = new QActionGroup(this); - ag->setExclusive(false); - spacemenu = new QPopupMenu(this); - file->insertItem( tr( "Scrolling" ), spacemenu ); - - a = new QAction( tr( "Set Target" ), QString::null, 0, ag, NULL); - connect( a, SIGNAL( activated() ), this, SLOT( setpipetarget() ) ); - - a = new QAction( tr( "Pause Paras" ), QString::null, 0, ag, NULL, true ); - connect( a, SIGNAL( toggled(bool) ), this, SLOT( setpause(bool) ) ); - a->setOn(reader->m_pauseAfterEachPara); - - ag->addTo(spacemenu); -// file->insertSeparator(); - -#endif - -/* - a = new QAction( tr( "Import" ), QString::null, 0, this, NULL ); - connect( a, SIGNAL( activated() ), this, SLOT( importFiles() ) ); - a->addTo( file ); -*/ - - /* - a = new QAction( tr( "Paste" ), geticon( "paste" ), QString::null, 0, this, 0 ); - connect( a, SIGNAL( activated() ), this, SLOT( editPaste() ) ); - a->addTo( fileBar ); - a->addTo( edit ); - */ - -// a = new QAction( tr( "Find..." ), geticon( "find" ), QString::null, 0, this, 0 ); - - m_fullscreen = false; - m_actFullscreen = new QAction( tr( "Fullscreen" ), geticon( "fullscreen" ), QString::null, 0, this, NULL, true ); - connect( m_actFullscreen, SIGNAL( toggled(bool) ), this, SLOT( setfullscreen(bool) ) ); - m_actFullscreen->setOn(m_fullscreen); - m_actFullscreen->addTo( view ); - - view->insertSeparator(); - - m_zoomin_action = new QAction( tr( "Zoom In" ), geticon( "zoom" ), QString::null, 0, this); - connect( m_zoomin_action, SIGNAL( activated() ), this, SLOT( zoomin() ) ); - m_zoomin_action->addTo( view ); - - m_zoomout_action = new QAction( tr( "Zoom Out" ), geticon( "mag" ), QString::null, 0, this); - connect( m_zoomout_action, SIGNAL( activated() ), this, SLOT( zoomout() ) ); - m_zoomout_action->addTo( view ); - - view->insertSeparator(); - m_setfont_action = new QAction( tr( "Set Font" ), getmyicon( "font" ), QString::null, 0, this); - connect( m_setfont_action, SIGNAL( activated() ), this, SLOT( setfont() ) ); - m_setfont_action->addTo( view ); - - view->insertSeparator(); - m_setenc_action = new QAction( tr( "Set Encoding" ), getmyicon( "charset" ), QString::null, 0, this); - connect( m_setenc_action, SIGNAL( activated() ), this, SLOT( chooseencoding() ) ); - m_setenc_action->addTo( view ); - - m_setmono_action = new QAction( tr( "Ideogram" ), getmyicon( "ideogram" ), QString::null, 0, this, NULL, true); - connect( m_setmono_action, SIGNAL( toggled(bool) ), this, SLOT( monospace(bool) ) ); - m_setmono_action->addTo( view ); - m_setmono_action->setOn(reader->m_bMonoSpaced); - - - // a = new QAction( tr( "Zoom" ), QString::null, 0, this, NULL, true ); - // a = new QAction( tr( "Zoom" ), geticon( "mag" ), QString::null, 0, this, 0 ); - - - - // a->addTo( filebar() ); -// view->insertSeparator(); - -/* - a = new QAction( tr( "Ideogram/Word" ), QString::null, 0, this, NULL, true ); - connect( a, SIGNAL( toggled(bool) ), this, SLOT( monospace(bool) ) ); - a->setOn(reader->m_bMonoSpaced); - a->addTo( view ); -*/ -/* - a = new QAction( tr( "Set Width" ), QString::null, 0, this, NULL); - connect( a, SIGNAL( activated() ), this, SLOT( setspacing() ) ); - a->addTo( view ); -*/ - - m_mark_action = new QAction( tr( "Bookmark" ), getmyicon( "bookmark" ), QString::null, 0, this, NULL); - connect( m_mark_action, SIGNAL( activated() ), this, SLOT( addbkmk() ) ); - m_mark_action->addTo( marks ); - - m_annotate_action = new QAction( tr( "Annotate" ), getmyicon( "annotate" ), QString::null, 0, this, NULL); - connect( m_annotate_action, SIGNAL( activated() ), this, SLOT( addanno() ) ); - m_annotate_action->addTo( marks ); - - m_goto_action = new QAction( tr( "Goto" ), getmyicon( "bookmark_goto" ), QString::null, 0, this, NULL, false ); - connect( m_goto_action, SIGNAL( activated() ), this, SLOT( do_gotomark() ) ); - m_goto_action->addTo( marks ); - - m_delete_action = new QAction( tr( "Delete" ), getmyicon( "bookmark_delete" ), QString::null, 0, this, NULL); - connect( m_delete_action, SIGNAL( activated() ), this, SLOT( do_delmark() ) ); - m_delete_action->addTo( marks ); - - m_autogen_action = new QAction( tr( "Autogen" ), geticon( "exec" ), QString::null, 0, this, NULL, false ); - connect( m_autogen_action, SIGNAL( activated() ), this, SLOT( do_autogen() ) ); - marks->insertSeparator(); - m_autogen_action->addTo( marks ); - - m_clear_action = new QAction( tr( "Clear" ), getmyicon( "bookmark_clear" ), QString::null, 0, this, NULL); - connect( m_clear_action, SIGNAL( activated() ), this, SLOT( clearBkmkList() ) ); - m_clear_action->addTo( marks ); - - m_save_action = new QAction( tr( "Save" ), getmyicon( "bookmark_save" ), QString::null, 0, this, NULL ); - connect( m_save_action, SIGNAL( activated() ), this, SLOT( savebkmks() ) ); - m_save_action->addTo( marks ); - - m_tidy_action = new QAction( tr( "Tidy" ), getmyicon( "bookmark_tidy" ), QString::null, 0, this, NULL); - connect( m_tidy_action, SIGNAL( activated() ), this, SLOT( listBkmkFiles() ) ); - marks->insertSeparator(); - m_tidy_action->addTo( marks ); - - m_startBlock_action = new QAction( tr( "Start Block" ), geticon( "new" ), QString::null, 0, this, NULL); - connect( m_startBlock_action, SIGNAL( activated() ), this, SLOT( editMark() ) ); - marks->insertSeparator(); - m_startBlock_action->addTo( marks ); - - m_endBlock_action = new QAction( tr( "Copy Block" ), geticon( "copy" ), QString::null, 0, this, NULL); - connect( m_endBlock_action, SIGNAL( activated() ), this, SLOT( editCopy() ) ); - m_endBlock_action->addTo( marks ); - - m_bkmkAvail = NULL; - - - setToolBarsMovable(m_tbmove); - addtoolbars(&config); - - pbar = new QProgressBar(this); - pbar->hide(); - - searchBar = new QFloatBar( "Search", this, QMainWindow::Top, TRUE ); - - searchBar->setHorizontalStretchable( TRUE ); - - connect(searchBar, SIGNAL( OnHide() ), this, SLOT( restoreFocus() )); - - searchEdit = new QLineEdit( searchBar, "searchEdit" ); -// QFont f("unifont", 16 /*, QFont::Bold*/); -// searchEdit->setFont( f ); - searchBar->setStretchableWidget( searchEdit ); - - -#ifdef __ISEARCH - connect( searchEdit, SIGNAL( textChanged( const QString & ) ), - this, SLOT( search( const QString& ) ) ); -#else - connect( searchEdit, SIGNAL( returnPressed( ) ), - this, SLOT( search( ) ) ); -#endif - QAction*a = new QAction( tr( "Find Next" ), geticon( "next" ), QString::null, 0, this, 0 ); - connect( a, SIGNAL( activated() ), this, SLOT( findNext() ) ); - a->addTo( searchBar ); - - a = new QAction( tr( "Close Find" ), geticon( "close" ), QString::null, 0, this, 0 ); - connect( a, SIGNAL( activated() ), this, SLOT( findClose() ) ); - a->addTo( searchBar ); - - searchBar->hide(); - - regBar = new QFloatBar( "Autogen", this, QMainWindow::Top, TRUE ); - connect(regBar, SIGNAL( OnHide() ), this, SLOT( restoreFocus() )); - - regBar->setHorizontalStretchable( TRUE ); - - regEdit = new QLineEdit( regBar, "regEdit" ); -// regEdit->setFont( f ); - - regBar->setStretchableWidget( regEdit ); - - connect( regEdit, SIGNAL( returnPressed( ) ), - this, SLOT( do_regaction() ) ); - - a = new QAction( tr( "Do Reg" ), geticon( "enter" ), QString::null, 0, this, 0 ); - connect( a, SIGNAL( activated() ), this, SLOT( do_regaction() ) ); - a->addTo( regBar ); - - a = new QAction( tr( "Close Edit" ), geticon( "close" ), QString::null, 0, this, 0 ); - connect( a, SIGNAL( activated() ), this, SLOT( regClose() ) ); - a->addTo( regBar ); - - regBar->hide(); - - m_fontBar = new QToolBar( "Autogen", this, QMainWindow::Top, TRUE ); - - m_fontBar->setHorizontalStretchable( TRUE ); - -// qDebug("Font selector"); - m_fontSelector = new QComboBox(false, m_fontBar); - m_fontBar->setStretchableWidget( m_fontSelector ); - { -#ifndef USEQPE - QFontDatabase f; -#else - FontDatabase f; -#endif - QStringList flist = f.families(); - bool realfont = false; - for (QStringList::Iterator nm = flist.begin(); nm != flist.end(); nm++) - { - if (reader->m_fontname == *nm) - { - realfont = true; - } - if ((*nm).contains(FIXEDFONT,false)) reader->m_fontControl.hasCourier(true, *nm); - } - if (!realfont) reader->m_fontname = flist[0]; - } // delete the FontDatabase!!! - connect( m_fontSelector, SIGNAL( activated(const QString& ) ), - this, SLOT( do_setfont(const QString&) ) ); - connect( m_fontSelector, SIGNAL( activated(int ) ), - this, SLOT( do_setencoding(int) ) ); - - m_fontBar->hide(); - m_fontVisible = false; -#ifdef USEMSGS - connect(qApp, SIGNAL( appMessage(const QCString&, const QByteArray& ) ), - this, SLOT( msgHandler(const QCString&, const QByteArray&) ) ); -#endif -// qDebug("Initing"); - reader->init(); -// qDebug("Inited"); -// m_buttonAction[m_spaceTarget]->setOn(true); -// qDebug("fonting"); - do_setfont(reader->m_fontname); - if (!reader->m_lastfile.isEmpty()) - { -// qDebug("doclnk"); -// doc = new DocLnk(reader->m_lastfile); -// qDebug("doclnk done"); - if (pOpenlist != NULL) - { - -/* - int ind = 0; - Bkmk* p = (*pOpenlist)[ind]; - while (p != NULL && toQString(CFiledata(p->anno()).name()) != reader->m_lastfile) - { - p = (*pOpenlist)[++ind]; - } -*/ - Bkmk* p = NULL; - for (CList::iterator iter = pOpenlist->begin(); iter != pOpenlist->end(); iter++) - { - p = iter.pContent(); - if (toQString(CFiledata(p->anno()).name()) == reader->m_lastfile) - { - break; - } -// qDebug("Item:%s", (const char*)toQString(CFiledata(p->anno()).name())); - p = NULL; - } - if (p != NULL) - { -// qDebug("openfrombkmk"); - if (!openfrombkmk(p)) - showEditTools(); - } - else - { -// qDebug("openfile"); - openFile( reader->m_lastfile ); - } - } - else - { -// qDebug("Openfile 2"); - if (!reader->m_lastfile.isEmpty()) - openFile( reader->m_lastfile ); - } - } - else - { - showEditTools(); - } -// qApp->processEvents(); - reader->bDoUpdates = true; - reader->update(); - config.setGroup("Version"); - int major = config.readNumEntry("Major", 0); - int bkmktype = config.readNumEntry("BkmkType", 0); - char minor = config.readNumEntry("Minor", 0); - if (CheckVersion(major, bkmktype, minor)) - { - config.writeEntry("Major", major); - config.writeEntry("BkmkType", bkmktype); - config.writeEntry("Minor", (int)minor); - } -// qDebug("finished update"); -} - -void QTReaderApp::addtoolbars(Config* config) -{ - config->setGroup("Toolbar"); - - if (fileBar != NULL) - { - if (fileBar != menubar) - { - fileBar->clear(); - } - else - { - m_preferences_action->removeFrom( filebar() ); - m_open_action->removeFrom( filebar() ); - m_close_action->removeFrom( filebar() ); - m_info_action->removeFrom( filebar() ); - m_touch_action->removeFrom( filebar() ); - m_find_action->removeFrom( filebar() ); - } - } - - m_preferences_action->addTo( filebar() ); - addfilebar(config, "Open", m_open_action); - addfilebar(config, "Close", m_close_action); - addfilebar(config, "Info", m_info_action); - addfilebar(config, "Two/One Touch", m_touch_action); - addfilebar(config, "Find", m_find_action); - - if (navBar != NULL) - { - if ((navBar == fileBar) && (fileBar == menubar)) - { - m_scrollButton->removeFrom( navbar() ); - m_start_action->removeFrom( navbar() ); - m_end_action->removeFrom( navbar() ); - m_jump_action->removeFrom( navbar() ); - m_pageline_action->removeFrom( navbar() ); - m_pageup_action->removeFrom( navbar() ); - m_pagedn_action->removeFrom( navbar() ); - m_back_action->removeFrom( navbar() ); - m_home_action->removeFrom( navbar() ); - m_forward_action->removeFrom( navbar() ); - } - else if (navBar != fileBar) - { - navBar->clear(); - } - } - - addnavbar(config, "Scroll", m_scrollButton); - addnavbar(config, "Goto Start", m_start_action); - addnavbar(config, "Goto End", m_end_action); - - addnavbar(config, "Jump", m_jump_action); - addnavbar(config, "Page/Line Scroll", m_pageline_action); - - addnavbar(config, "Page Up", m_pageup_action); - addnavbar(config, "Page Down", m_pagedn_action); - - addnavbar(config, "Back", m_back_action); - addnavbar(config, "Home", m_home_action); - addnavbar(config, "Forward", m_forward_action); - - if (viewBar != NULL) - { - if ((viewBar == fileBar) && (fileBar == menubar)) - { - m_actFullscreen->removeFrom( filebar() ); - m_zoomin_action->removeFrom( viewbar() ); - m_zoomout_action->removeFrom( viewbar() ); - m_setfont_action->removeFrom( viewbar() ); - m_setenc_action->removeFrom( viewbar() ); - m_setmono_action->removeFrom( viewbar() ); - } - else if (viewBar != fileBar) - { - viewBar->clear(); - } - } - - addviewbar(config, "Fullscreen", m_actFullscreen); - addviewbar(config, "Zoom In", m_zoomin_action); - addviewbar(config, "Zoom Out", m_zoomout_action); - addviewbar(config, "Set Font", m_setfont_action); - addviewbar(config, "Encoding Select", m_setenc_action); - addviewbar(config, "Ideogram Mode", m_setmono_action); - - if (markBar != NULL) - { - if ((markBar == fileBar) && (fileBar == menubar)) - { - m_mark_action->removeFrom( markbar() ); - m_annotate_action->removeFrom( markbar()); - m_goto_action->removeFrom( markbar() ); - m_delete_action->removeFrom( markbar() ); - m_autogen_action->removeFrom( markbar() ); - m_clear_action->removeFrom( markbar() ); - m_save_action->removeFrom( markbar() ); - m_tidy_action->removeFrom( markbar() ); - m_startBlock_action->removeFrom( markbar() ); - m_endBlock_action->removeFrom( markbar() ); - } - else if (markBar != fileBar) - { - markBar->clear(); - } - } - addmarkbar(config, "Mark", m_mark_action); - addmarkbar(config, "Annotate", m_annotate_action); - addmarkbar(config, "Goto", m_goto_action); - addmarkbar(config, "Delete", m_delete_action); - addmarkbar(config, "Autogen", m_autogen_action); - addmarkbar(config, "Clear", m_clear_action); - addmarkbar(config, "Save", m_save_action); - addmarkbar(config, "Tidy", m_tidy_action); - addmarkbar(config, "Start Block", m_startBlock_action); - addmarkbar(config, "Copy Block", m_endBlock_action); - if (checkbar(config, "Annotation indicator")) - { - if (m_bkmkAvail == NULL) - { - m_bkmkAvail = new QAction( tr( "Annotation" ), geticon( "find" ), QString::null, 0, this, 0 ); - connect( m_bkmkAvail, SIGNAL( activated() ), this, SLOT( showAnnotation() ) ); - - m_bkmkAvail->setEnabled(false); - } - QLabel *spacer = new QLabel(markBar, ""); - markbar()->setStretchableWidget(spacer); - m_bkmkAvail->removeFrom( markbar() ); - m_bkmkAvail->addTo( markbar() ); - } - else - { - if (m_bkmkAvail != NULL) - { - m_bkmkAvail->removeFrom( markbar() ); - delete m_bkmkAvail; - m_bkmkAvail = NULL; - } - } -} - -bool QTReaderApp::checkbar(Config* _config, const QString& key) -{ - return _config->readBoolEntry(key, false); -} - - -QToolBar* QTReaderApp::filebar() -{ - if (fileBar == NULL) - { - switch (m_tbpol) - { - case cesSingle: -// qDebug("Setting filebar to menubar"); - fileBar = menubar; - break; - default: - qDebug("Incorrect toolbar policy set"); - case cesMenuTool: - case cesMultiple: -// qDebug("Creating new file bar"); - fileBar = new QToolBar("File", this, m_tbposition); - break; - } -// fileBar->setHorizontalStretchable( true ); - } - return fileBar; -} -QToolBar* QTReaderApp::viewbar() -{ - if (viewBar == NULL) - { - switch (m_tbpol) - { - case cesMultiple: - viewBar = new QToolBar("View", this, m_tbposition); - break; - default: - qDebug("Incorrect toolbar policy set"); - case cesSingle: - case cesMenuTool: - viewBar = fileBar; - break; - } - } - return viewBar; -} -QToolBar* QTReaderApp::navbar() -{ - if (navBar == NULL) - { - switch (m_tbpol) - { - case cesMultiple: -// qDebug("Creating new nav bar"); - navBar = new QToolBar("Navigation", this, m_tbposition); - break; - default: - qDebug("Incorrect toolbar policy set"); - case cesSingle: - case cesMenuTool: - navBar = fileBar; -// qDebug("Setting navbar to filebar"); - break; - } - } - return navBar; -} -QToolBar* QTReaderApp::markbar() -{ - if (markBar == NULL) - { - switch (m_tbpol) - { - case cesMultiple: - markBar = new QToolBar("Marks", this, m_tbposition); - break; - default: - qDebug("Incorrect toolbar policy set"); - case cesSingle: - case cesMenuTool: - markBar = fileBar; - break; - } - } - return markBar; -} - -void QTReaderApp::addfilebar(Config* _config, const QString& key, QAction* a) -{ - if (_config->readBoolEntry(key, false)) a->addTo( filebar() ); -} -void QTReaderApp::addnavbar(Config* _config, const QString& key, QAction* a) -{ - if (_config->readBoolEntry(key, false)) a->addTo( navbar() ); -} -void QTReaderApp::addmarkbar(Config* _config, const QString& key, QAction* a) -{ - if (_config->readBoolEntry(key, false)) a->addTo( markbar() ); -} -void QTReaderApp::addviewbar(Config* _config, const QString& key, QAction* a) -{ - if (_config->readBoolEntry(key, false)) a->addTo( viewbar() ); -} - -void QTReaderApp::suspend() { reader->suspend(); } - -#ifdef USEMSGS -void QTReaderApp::msgHandler(const QCString& _msg, const QByteArray& _data) -{ - QString msg = QString::fromUtf8(_msg); - -//// qDebug("Received:%s", (const char*)msg); - - QDataStream stream( _data, IO_ReadOnly ); - if ( msg == "info(QString)" ) - { - QString info; - stream >> info; - QMessageBox::information(this, PROGNAME, info); - } - else if ( msg == "Update(int)" ) - { - int info; - stream >> info; - if (info) - { - reader->bDoUpdates = true; - reader->refresh(); - } - else - { - reader->bDoUpdates = false; - } - } - else if ( msg == "warn(QString)" ) - { - QString info; - stream >> info; - QMessageBox::warning(this, PROGNAME, info); - } - else if ( msg == "exit()" ) - { - m_dontSave = true; - close(); - } - else if ( msg == "pageDown()" ) - { - reader->dopagedn(); - } - else if ( msg == "pageUp()" ) - { - reader->dopageup(); - } - else if ( msg == "lineDown()" ) - { - reader->lineDown(); - } - else if ( msg == "lineUp()" ) - { - reader->lineUp(); - } - else if ( msg == "showText()" ) - { - showEditTools(); - } - else if ( msg == "home()" ) - { - reader->goHome(); - } - else if ( msg == "back()" ) - { - reader->goBack(); - } - else if ( msg == "forward()" ) - { - reader->goForward(); - } - else if ( msg == "File/Open(QString)" ) - { - QString info; - stream >> info; - openFile( info ); - } - else if ( msg == "File/Info()" ) - { - showinfo(); - } - else if ( msg == "File/Action(QString)" ) - { - QString info; - stream >> info; - m_spaceTarget = ActNameToInt(info); - } - else if ( msg == "Navigation/Scroll(int)" ) - { - int info; - stream >> info; - autoScroll(info); - } - - else if ( msg == "Navigation/GotoStart()" ) - { - gotoStart(); - } - else if ( msg == "Navigation/GotoEnd()" ) - { - gotoEnd(); - } - else if ( msg == "Navigation/Jump(int)" ) - { - int info; - stream >> info; - reader->locate(info); - } - else if ( msg == "Navigation/Page/LineScroll(int)" ) - { - int info; - stream >> info; - pagemode(info); - } - else if ( msg == "Navigation/SetOverlap(int)" ) - { - int info; - stream >> info; - reader->m_overlap = info; - } - else if ( msg == "Navigation/SetMargin(int)" ) - { - int info; - stream >> info; - do_margin(info); - } - else if ( msg == "File/SetDictionary(QString)" ) - { - QString info; - stream >> info; - do_settarget(info); - } -#ifdef _SCROLLPIPE - else if ( msg == "File/SetScrollTarget(QString)" ) - { - QString info; - stream >> info; - reader->m_pipetarget = info; - } -#endif - else if ( msg == "File/Two/OneTouch(int)" ) - { - int info; - stream >> info; - setTwoTouch(info); - } - else if ( msg == "Target/Annotation(int)" ) - { - int info; - stream >> info; - OnAnnotation(info); - } - else if ( msg == "Target/Dictionary(int)" ) - { - int info; - stream >> info; - OnDictionary(info); - } - else if ( msg == "Target/Clipboard(int)" ) - { - int info; - stream >> info; - OnClipboard(info); - } - else if ( msg == "File/Find(QString)" ) - { - QString info; - stream >> info; - QRegExp arg(info); - size_t pos = reader->pagelocate(); - size_t start = pos; - CDrawBuffer test(&(reader->m_fontControl)); - reader->getline(&test); - while (arg.match(toQString(test.data())) == -1) - { - pos = reader->locate(); - if (!reader->getline(&test)) - { - QMessageBox::information(this, PROGNAME, QString("Can't find\n")+info); - pos = start; - break; - } - } - reader->locate(pos); - } - else if ( msg == "File/Fullscreen(int)" ) - { - int info; - stream >> info; - setfullscreen(info); - } - else if ( msg == "File/Continuous(int)" ) - { - int info; - stream >> info; - setcontinuous(info); - } - else if ( msg == "Markup(QString)" ) - { - QString info; - stream >> info; - if (info == "Auto") - { - autofmt(true); - } - if (info == "None") - { - autofmt(false); - textfmt(false); - striphtml(false); - peanut(false); - } - if (info == "Text") - { - textfmt(true); - } - if (info == "HTML") - { - striphtml(true); - } - if (info == "Peanut/PML") - { - peanut(true); - } - } - else if ( msg == "Layout/StripCR(int)" ) - { - int info; - stream >> info; - stripcr(info); - } - else if ( msg == "Layout/Dehyphen(int)" ) - { - int info; - stream >> info; - dehyphen(info); - } - else if ( msg == "Layout/Depluck(int)" ) - { - int info; - stream >> info; - depluck(info); - } - else if ( msg == "Layout/Dejpluck(int)" ) - { - int info; - stream >> info; - dejpluck(info); - } - else if ( msg == "Layout/SingleSpace(int)" ) - { - int info; - stream >> info; - onespace(info); - } -#ifdef REPALM - else if ( msg == "Layout/Repalm(int)" ) - { - int info; - stream >> info; - repalm(info); - } -#endif - else if ( msg == "Layout/Unindent(int)" ) - { - int info; - stream >> info; - unindent(info); - } - else if ( msg == "Layout/Re-paragraph(int)" ) - { - int info; - stream >> info; - repara(info); - } - else if ( msg == "Layout/DoubleSpace(int)" ) - { - int info; - stream >> info; - dblspce(info); - } - else if ( msg == "Layout/Indent(int)" ) - { - int info; - stream >> info; - reader->bindenter = info; - reader->setfilter(reader->getfilter()); - } - else if ( msg == "Layout/Remap(int)" ) - { - int info; - stream >> info; - remap(info); - } - else if ( msg == "Layout/Embolden(int)" ) - { - int info; - stream >> info; - embolden(info); - } - else if ( msg == "Format/Ideogram/Word(int)" ) - { - int info; - stream >> info; - monospace(info); - } - else if ( msg == "Format/SetWidth(int)" ) - { - int info; - stream >> info; - reader->m_charpc = info; - reader->setfont(); - reader->refresh(); - } - else if ( msg == "Format/SetFont(QString,int)" ) - { - QString fontname; - int size; - stream >> fontname; - stream >> size; - setfontHelper(fontname, size); - } - else if ( msg == "Marks/Autogen(QString)" ) - { - QString info; - stream >> info; - do_autogen(info); - } - else if ( msg == "File/StartBlock()" ) - { - editMark(); - } - else if ( msg == "File/CopyBlock()" ) - { - editCopy(); - } -} -#endif -ActionTypes QTReaderApp::ActNameToInt(const QString& _enc) -{ - for (int i = 0; i < MAX_ACTIONS; i++) - { - if (m_buttonAction[i]->text() == _enc) return (ActionTypes)i; - } - return cesAutoScroll; -} - -void QTReaderApp::setfullscreen(bool sfs) -{ - reader->bDoUpdates = false; - m_fullscreen = sfs; - showEditTools(); -// qApp->processEvents(); - reader->bDoUpdates = true; - reader->update(); -} - -void QTReaderApp::buttonActionSelected(QAction* _a) -{ -//// qDebug("es:%x : %s (%u)", _a, (const char *)(_a->text()), ActNameToInt(_a->text())); - m_spaceTarget = ActNameToInt(_a->text()); -} - -QTReaderApp::~QTReaderApp() -{ -} - -void QTReaderApp::autoScroll(bool _b) -{ - reader->setautoscroll(_b); - setScrollState(reader->m_autoScroll); -} - -void QTReaderApp::zoomin() -{ - reader->zoomin(); -} - -void QTReaderApp::zoomout() -{ - reader->zoomout(); -} - -void QTReaderApp::clearBkmkList() -{ - delete pBkmklist; - pBkmklist = NULL; - m_fBkmksChanged = false; -} - -void QTReaderApp::fileClose() -{ - CCloseDialog* cd = new CCloseDialog(reader->m_string, false, this); - if (cd->exec()) - { - if (pOpenlist != NULL) - { - int ind = 0; - Bkmk* p = (*pOpenlist)[ind]; - while (p != NULL && toQString(CFiledata(p->anno()).name()) != reader->m_lastfile) - { - p = (*pOpenlist)[++ind]; - } - if (p != NULL) pOpenlist->erase(ind); - if (cd->delFile()) - { - unlink((const char*)reader->m_lastfile); - } - if (cd->delMarks()) - { -#ifndef USEQPE - QDir d = QDir::home(); // "/" - d.cd(APPDIR); - d.remove(reader->m_string); -#else /* USEQPE */ - unlink((const char *)Global::applicationFileName(APPDIR,reader->m_string)); -#endif /* USEQPE */ - } - if (cd->delConfig()) - { -#ifndef USEQPE - QDir d = QDir::home(); // "/" - d.cd(APPDIR "/configs"); - d.remove(reader->m_string); -#else /* USEQPE */ - unlink((const char *)Global::applicationFileName(APPDIR "/configs",reader->m_string)); -#endif /* USEQPE */ - } - } - - fileOpen2(); - } - delete cd; -} - -void QTReaderApp::updatefileinfo() -{ - if (reader->m_string.isEmpty()) return; - if (reader->m_lastfile.isEmpty()) return; - tchar* nm = fromQString(reader->m_string); - tchar* fl = fromQString(reader->m_lastfile); -// qDebug("Lastfile:%x", fl); - bool notadded = true; - if (pOpenlist == NULL) pOpenlist = new CList; - else - { - for (CList::iterator iter = pOpenlist->begin(); iter != pOpenlist->end(); iter++) - { - if (ustrcmp(CFiledata(iter->anno()).name(), fl) == 0) - { - iter->value(reader->pagelocate()); - unsigned short dlen; - unsigned char* data; - CFiledata fd(iter->anno()); - reader->setSaveData(data, dlen, fd.content(), fd.length()); -// qDebug("Filedata(1):%u, %u", fd.length(), dlen); -// getstate(data, dlen); - iter->setAnno(data, dlen); - notadded = false; - delete [] data; - break; - } - } - } -// qDebug("Added?:%x", notadded); - if (notadded) - { - struct stat fnstat; - stat((const char *)reader->m_lastfile, &fnstat); - CFiledata fd(fnstat.st_mtime, fl); - unsigned short dlen; - unsigned char* data; - reader->setSaveData(data, dlen, fd.content(), fd.length()); - pOpenlist->push_front(Bkmk(nm, data, dlen, reader->pagelocate())); -// qDebug("Filedata(2):%u, %u", fd.length(), dlen); - delete [] data; - } - delete [] nm; - delete [] fl; -} - -void QTReaderApp::fileOpen() -{ -/* - menu->hide(); - fileBar->hide(); - if (regVisible) regBar->hide(); - if (searchVisible) searchBar->hide(); -*/ -// qDebug("fileOpen"); -// if (!reader->m_lastfile.isEmpty()) - updatefileinfo(); - fileOpen2(); -} - -void QTReaderApp::fileOpen2() -{ - if (pBkmklist != NULL) - { - if (m_fBkmksChanged) - { - if (QMessageBox::warning(this, PROGNAME, "Save bookmarks?", "Save", "Don't bother") == 0) - savebkmks(); - } - delete pBkmklist; - pBkmklist = NULL; - m_fBkmksChanged = false; - } - reader->disableAutoscroll(); -/* - editorStack->raiseWidget( fileSelector ); - fileSelector->reread(); -*/ - bool usebrowser = true; - if (pOpenlist != NULL) - { - m_nBkmkAction = cOpenFile; - if (listbkmk(pOpenlist, "Browse")) usebrowser = false; - } - if (usebrowser) - { - QString fn = usefilebrowser(); -// qApp->processEvents(); - if (!fn.isEmpty() && QFileInfo(fn).isFile()) - { - openFile(fn); - } - reader->setFocus(); - } -// reader->refresh(); -// qDebug("HEIGHT:%d", reader->m_lastheight); -} - -QString QTReaderApp::usefilebrowser() -{ -#ifndef USEQPE - QString s( QFileDialog::getOpenFileName( reader->m_lastfile, QString::null, this ) ); - return s; -#else - fileBrowser* fb = new fileBrowser(false, this,"OpieReader",!m_bFloatingDialog, - 0, -// WStyle_Customize | WStyle_NoBorderEx, - "*", QFileInfo(reader->m_lastfile).dirPath(true)); - - - QString fn; - if (fb->exec()) - { - fn = fb->getCurrentFile(); - } -// qDebug("Selected %s", (const char*)fn); - delete fb; - showEditTools(); - return fn; -#endif -} - -void QTReaderApp::showgraphic(QImage& pm) -{ - QPixmap pc; - pc.convertFromImage(pm); - m_graphicwin->setPixmap(pc); - editorStack->raiseWidget( m_graphicwin ); - m_graphicwin->setFocus(); -} - - -void QTReaderApp::showprefs() -{ - CPrefs* prefwin = new CPrefs(!m_bFloatingDialog, this); - - prefwin->twotouch(m_twoTouch); - prefwin->propfontchange(m_propogatefontchange); - prefwin->StripCR(reader->bstripcr); - prefwin->Dehyphen(reader->bdehyphen); - prefwin->SingleSpace(reader->bonespace); - prefwin->Unindent(reader->bunindent); - prefwin->Reparagraph(reader->brepara); - prefwin->DoubleSpace(reader->bdblspce); - prefwin->Remap(reader->bremap); - prefwin->Embolden(reader->bmakebold); - prefwin->FullJustify(reader->bfulljust); - prefwin->ParaLead(reader->getextraspace()); - prefwin->LineLead(reader->getlead()); - prefwin->Margin(reader->m_border); - prefwin->Indent(reader->bindenter); - if (reader->bautofmt) - { - prefwin->Markup(0); - } - else if (reader->btextfmt) - { - prefwin->Markup(2); - } - else if (reader->bstriphtml) - { - prefwin->Markup(3); - } - else if (reader->bpeanut) - { - prefwin->Markup(4); - } - else - { - prefwin->Markup(1); - } - prefwin->Depluck(reader->bdepluck); - prefwin->Dejpluck(reader->bdejpluck); - prefwin->Continuous(reader->m_continuousDocument); - - prefwin->dictApplication(m_targetapp); - prefwin->dictMessage(m_targetmsg); - - prefwin->spaceAction(m_spaceTarget); - prefwin->escapeAction(m_escapeTarget); - prefwin->returnAction(m_returnTarget); - prefwin->leftAction(m_leftTarget); - prefwin->rightAction(m_rightTarget); - prefwin->upAction(m_upTarget); - prefwin->downAction(m_downTarget); - - prefwin->leftScroll(m_leftScroll); - prefwin->rightScroll(m_rightScroll); - prefwin->upScroll(m_upScroll); - prefwin->downScroll(m_downScroll); - - prefwin->miscannotation(m_doAnnotation); - prefwin->miscdictionary(m_doDictionary); - prefwin->miscclipboard(m_doClipboard); - - prefwin->SwapMouse(reader->m_swapmouse); - - prefwin->Font(reader->m_fontname); - - prefwin->gfxsize(reader->getBaseSize()); - - prefwin->pageoverlap(reader->m_overlap); - - prefwin->ideogram(reader->m_bMonoSpaced); - - prefwin->encoding(reader->m_encd); - - prefwin->ideogramwidth(reader->m_charpc); - - if (prefwin->exec()) - { - m_twoTouch = prefwin->twotouch(); - reader->setTwoTouch(m_twoTouch); - m_touch_action->setOn(m_twoTouch); - - reader->bstripcr = prefwin->StripCR(); - reader->bdehyphen = prefwin->Dehyphen(); - reader->bonespace = prefwin->SingleSpace(); - reader->bunindent = prefwin->Unindent(); - reader->brepara = prefwin->Reparagraph(); - reader->bdblspce = prefwin->DoubleSpace(); - reader->bremap = prefwin->Remap(); - reader->bmakebold = prefwin->Embolden(); - reader->bfulljust = prefwin->FullJustify(); - reader->setextraspace(prefwin->ParaLead()); - reader->setlead(prefwin->LineLead()); - reader->m_border = prefwin->Margin(); - reader->bindenter = prefwin->Indent(); - reader->bautofmt = reader->btextfmt = reader->bstriphtml = reader->bpeanut = false; - switch (prefwin->Markup()) - { - case 0: - reader->bautofmt = true; - break; - case 1: - break; - case 2: - reader->btextfmt = true; - break; - case 3: - reader->bstriphtml = true; - break; - case 4: - reader->bpeanut = true; - break; - default: - qDebug("Format out of range"); - } - reader->bdepluck = prefwin->Depluck(); - reader->bdejpluck = prefwin->Dejpluck(); - reader->setContinuous(prefwin->Continuous()); - - m_spaceTarget = (ActionTypes)prefwin->spaceAction(); - m_escapeTarget = (ActionTypes)prefwin->escapeAction(); - m_returnTarget = (ActionTypes)prefwin->returnAction(); - m_leftTarget = (ActionTypes)prefwin->leftAction(); - m_rightTarget = (ActionTypes)prefwin->rightAction(); - m_upTarget = (ActionTypes)prefwin->upAction(); - m_downTarget = (ActionTypes)prefwin->downAction(); - m_leftScroll = prefwin->leftScroll(); - m_rightScroll = prefwin->rightScroll(); - m_upScroll = prefwin->upScroll(); - m_downScroll = prefwin->downScroll(); - - m_targetapp = prefwin->dictApplication(); - m_targetmsg = prefwin->dictMessage(); - - m_doAnnotation = prefwin->miscannotation(); - m_doDictionary = prefwin->miscdictionary(); - m_doClipboard = prefwin->miscclipboard(); - reader->m_swapmouse = prefwin->SwapMouse(); - reader->setBaseSize(prefwin->gfxsize()); - reader->m_overlap = prefwin->pageoverlap(); - reader->m_bMonoSpaced = prefwin->ideogram(); - m_setmono_action->setOn(reader->m_bMonoSpaced); - reader->m_encd = prefwin->encoding(); - reader->m_charpc = prefwin->ideogramwidth(); - - if ( - reader->m_fontname != prefwin->Font() - || - m_propogatefontchange != prefwin->propfontchange()) - { - m_propogatefontchange = prefwin->propfontchange(); - setfontHelper(prefwin->Font()); - } - delete prefwin; - reader->setfilter(reader->getfilter()); - reader->refresh(); - - } - else - { - delete prefwin; - } -} - -void QTReaderApp::showtoolbarprefs() -{ -#ifdef USEQPE - CBarPrefs* prefwin = new CBarPrefs(APPDIR, !m_bFloatingDialog, this); -#else - QFileInfo fi; - QDir d = QDir::home(); // "/" - if ( !d.cd(APPDIR) ) - { // "/tmp" - qWarning( "Cannot find the \"~/%s\" directory", APPDIR ); - d = QDir::home(); - d.mkdir(APPDIR); - d.cd(APPDIR); - } - fi.setFile(d, INIFILE); - CBarPrefs* prefwin = new CBarPrefs(fi.absFilePath(), !m_bFloatingDialog, this); -#endif - prefwin->tbpolicy(m_tbpolsave); - prefwin->tbposition(m_tbposition-2); - prefwin->tbmovable(m_tbmovesave); - prefwin->floating(m_bFloatingDialog); - if (prefwin->exec()) - { - m_bFloatingDialog = prefwin->floating(); - if ( - m_tbpolsave != (ToolbarPolicy)prefwin->tbpolicy() - || - m_tbposition != (ToolBarDock)(prefwin->tbposition()+2) - || - m_tbmovesave != prefwin->tbmovable() - ) - { - QMessageBox::warning(this, PROGNAME, "Some changes won't take effect\nuntil the next time the\napplication is started"); - } - m_tbpolsave = (ToolbarPolicy)prefwin->tbpolicy(); - m_tbposition = (ToolBarDock)(prefwin->tbposition()+2); - m_tbmovesave = prefwin->tbmovable(); - bool isChanged = prefwin->isChanged(); - delete prefwin; -#ifdef USEQPE - Config config( APPDIR ); -#else - QFileInfo fi; - QDir d = QDir::home(); // "/" - if ( !d.cd(APPDIR) ) - { // "/tmp" - qWarning( "Cannot find the \"~/%s\" directory", APPDIR ); - d = QDir::home(); - d.mkdir(APPDIR); - d.cd(APPDIR); - } - fi.setFile(d, INIFILE); - Config config( fi.absFilePath() ); -#endif - if (isChanged) addtoolbars(&config); - } - else - { - delete prefwin; - } -} - -void QTReaderApp::showinfo() -{ - unsigned long fs, ts, pl; - if (reader->empty()) - { - QMessageBox::information(this, PROGNAME, "No file loaded", 1); - } - else - { - reader->sizes(fs,ts); - pl = reader->pagelocate(); - m_infoWin->setFileSize(fs); - m_infoWin->setTextSize(ts); - m_infoWin->setRatio(100-(100*fs + (ts >> 1))/ts); - m_infoWin->setLocation(pl); - m_infoWin->setRead((100*pl + (ts >> 1))/ts); - editorStack->raiseWidget( m_infoWin ); - m_infoWin->setFocus(); - } -} - -void QTReaderApp::addAnno(const QString& name, const QString& text, size_t posn) -{ - if (pBkmklist == NULL) pBkmklist = new CList; -#ifdef _UNICODE - CBuffer buff(name.length()+1); - int i; - for (i = 0; i < name.length(); i++) - { - buff[i] = name[i].unicode(); - } - buff[i] = 0; - CBuffer buff2(text.length()+1); - for (i = 0; i < text.length(); i++) - { - buff2[i] = text[i].unicode(); - } - buff2[i] = 0; - pBkmklist->push_front(Bkmk(buff.data(), buff2.data(), posn)); -#else - pBkmklist->push_front(Bkmk((const tchar*)text,posn)); -#endif - m_fBkmksChanged = true; - pBkmklist->sort(); -} - -void QTReaderApp::addAnno(const QString& name, const QString& text) -{ - if (m_annoIsEditing) - { - if (name.isEmpty()) - { - QMessageBox::information(this, PROGNAME, "Need a name for the bookmark\nPlease try again", 1); - } - else - { - addAnno(name, text, m_annoWin->getPosn()); - } - showEditTools(); - } - else - { - if (m_annoWin->edited()) - { - CBuffer buff(text.length()+1); - int i; - for (i = 0; i < text.length(); i++) - { - buff[i] = text[i].unicode(); - } - buff[i] = 0; - m_fBkmksChanged = true; - m_anno->setAnno(buff.data()); - } - bool found = findNextBookmark(m_anno->value()+1); - if (found) - { - m_annoWin->setName(toQString(m_anno->name())); - m_annoWin->setAnno(toQString(m_anno->anno())); - } - else - { - showEditTools(); - } - } -} - -bool QTReaderApp::findNextBookmark(size_t start) -{ - bool found = false; - for (CList::iterator iter = pBkmklist->begin(); iter != pBkmklist->end(); iter++) - { - if (iter->value() >= start) - { - if (iter->value() < reader->locate()) - { - found = true; - m_anno = iter.pContent(); - } - break; - } - } - return found; -} - -void QTReaderApp::addanno() -{ - if (reader->empty()) - { - QMessageBox::information(this, PROGNAME, "No file loaded", 1); - } - else - { - m_annoWin->setName(""); - m_annoWin->setAnno(""); - m_annoWin->setPosn(reader->pagelocate()); - m_annoIsEditing = true; - editorStack->raiseWidget( m_annoWin ); -#ifdef USEQPE - Global::showInputMethod(); -#endif - m_annoWin->setFocus(); - } -} - -void QTReaderApp::infoClose() -{ - showEditTools(); -} - -/* -void QTReaderApp::fileRevert() -{ - clear(); - fileOpen(); -} - -void QTReaderApp::editCut() -{ -#ifndef QT_NO_CLIPBOARD - editor->cut(); -#endif -} -*/ -void QTReaderApp::editMark() -{ - m_savedpos = reader->pagelocate(); -} - -void QTReaderApp::editCopy() -{ - QClipboard* cb = QApplication::clipboard(); - QString text; - int ch; - unsigned long currentpos = reader->pagelocate(); - unsigned long endpos = reader->locate(); - if (m_savedpos == 0xffffffff) - { - m_savedpos = currentpos; - } - reader->jumpto(m_savedpos); - while (reader->explocate() < endpos && (ch = reader->getch()) != UEOF) - { - text += ch; - } - cb->setText(text); - reader->locate(currentpos); - m_savedpos = 0xffffffff; -} - -void QTReaderApp::gotoStart() -{ - reader->locate(reader->buffdoc.startSection()); -} - -void QTReaderApp::gotoEnd() -{ - reader->dopageup(reader->buffdoc.endSection()); -} - -void QTReaderApp::pageup() -{ - reader->NavUp(); -} - -void QTReaderApp::pagedn() -{ - reader->NavDown(); -} - -void QTReaderApp::pagemode(bool _b) -{ - reader->setpagemode(_b); -} - -/* -void QTReaderApp::setspacing() -{ - m_nRegAction = cMonoSpace; - char lcn[20]; - sprintf(lcn, "%lu", reader->m_charpc); - regEdit->setText(lcn); - do_regedit(); -} -*/ -void QTReaderApp::settarget() -{ - m_nRegAction = cSetTarget; - QString text = ((m_targetapp.isEmpty()) ? QString("") : m_targetapp) - + "/" - + ((m_targetmsg.isEmpty()) ? QString("") : m_targetmsg); - regEdit->setText(text); - do_regedit(); -} - -/* -void QTReaderApp::do_mono(const QString& lcn) -{ - bool ok; - unsigned long ulcn = lcn.toULong(&ok); - if (ok) - { - reader->m_charpc = ulcn; - reader->setfont(); - reader->refresh(); -// reader->setmono(true); - } - else - QMessageBox::information(this, PROGNAME, "Must be a number"); -} -*/ -/* -void QTReaderApp::editPaste() -{ -#ifndef QT_NO_CLIPBOARD - editor->paste(); -#endif -} -*/ - -void QTReaderApp::editFind() -{ - searchStart = reader->pagelocate(); -#ifdef __ISEARCH - searchStack = new QStack; -#endif -#ifdef USEQPE - Global::showInputMethod(); -#endif - searchBar->show(); - searchVisible = TRUE; - searchEdit->setFocus(); -#ifdef __ISEARCH - searchStack->push(new searchrecord("",reader->pagelocate())); -#endif -} - -void QTReaderApp::findNext() -{ -// // qDebug("findNext called\n"); -#ifdef __ISEARCH - QString arg = searchEdit->text(); -#else - QRegExp arg = searchEdit->text(); -#endif - CDrawBuffer test(&(reader->m_fontControl)); - size_t start = reader->pagelocate(); - reader->jumpto(start); - reader->getline(&test); - dosearch(start, test, arg); -} - -void QTReaderApp::findClose() -{ - searchVisible = FALSE; - searchEdit->setText(""); -#ifdef USEQPE - Global::hideInputMethod(); -#endif - searchBar->hide(); -#ifdef __ISEARCH -// searchStack = new QStack; - while (!searchStack->isEmpty()) - { - delete searchStack->pop(); - } - delete searchStack; -#endif - reader->setFocus(); -} - -void QTReaderApp::regClose() -{ - regVisible = FALSE; - regEdit->setText(""); - regBar->hide(); -#ifdef USEQPE - Global::hideInputMethod(); -#endif - reader->setFocus(); -} - -#ifdef __ISEARCH -bool QTReaderApp::dosearch(size_t start, CDrawBuffer& test, const QString& arg) -#else -bool QTReaderApp::dosearch(size_t start, CDrawBuffer& test, const QRegExp& arg) -#endif -{ - bool ret = true; - unsigned long fs, ts; - reader->sizes(fs,ts); - size_t pos = reader->locate(); - pbar->setGeometry(searchBar->x(),searchBar->y(),searchBar->width(), searchBar->height()); - pbar->show(); - pbar->raise(); - pbar->reset(); - int offset; - int lastpc = (100*pos)/ts; - pbar->setProgress(lastpc); -// qApp->processEvents(); - if (reader->buffdoc.getpara(test) >= 0) - { - reader->setFocus(); -#ifdef __ISEARCH - while (strstr(test.data(),(const tchar*)arg) == NULL) -#else -#ifdef _UNICODE - while ((offset = arg.match(toQString(test.data()))) == -1) -#else - while (arg.match(test.data()) == -1) -#endif -#endif - { - pos = reader->locate(); - int pc = (100*pos)/ts; - if (pc != lastpc) - { - pbar->setProgress(pc); - qApp->processEvents(); - reader->setFocus(); - lastpc = pc; - } - - if (reader->buffdoc.getpara(test) < 0) - { - if (QMessageBox::warning(this, "Can't find", searchEdit->text(), 1, 2) == 2) - pos = searchStart; - else - pos = start; - findClose(); - pbar->hide(); - reader->locate(pos); - return false; - } - } -// qDebug("Found it at %u:%u", pos, offset); - pbar->hide(); -// qDebug("Hid"); - reader->locate(pos+offset); -// qDebug("Loacted"); -// qDebug("page up"); - ret = true; - } - else - { - if (QMessageBox::warning(this, "Can't find", searchEdit->text(), 1, 2) == 2) - pos = searchStart; - else - pos = start; - ret = false; - findClose(); - } - return ret; -} - -#ifdef __ISEARCH -void QTReaderApp::search(const QString & arg) -{ - searchrecord* ss = searchStack->top(); - CBuffer test; - size_t start = reader->pagelocate(); - bool haspopped = false; - while (arg.left(ss->s.length()) != ss->s) - { - haspopped = true; - start = ss->pos; -// reader->locate(start); - searchStack->pop(); - delete ss; - } - if (haspopped) reader->locate(start); -/* - if (arg.length() < ss->len) - { - start = ss->pos; - reader->locate(start); - searchStack->pop(); - delete ss; - } -*/ - else - { - start = reader->pagelocate(); - reader->jumpto(start); - searchStack->push(new searchrecord(arg,start)); - } - dosearch(start, test, arg); -} -#else -void QTReaderApp::search() -{ - findNext(); -} -#endif - -void QTReaderApp::openFile( const QString &f ) -{ -// qDebug("File:%s", (const char*)f); -// openFile(DocLnk(f)); -//} -// -//void QTReaderApp::openFile( const DocLnk &f ) -//{ - clear(); - QFileInfo fm(f); - if ( fm.exists() ) - { -// QMessageBox::information(0, "Progress", "Calling fileNew()"); -#ifdef USEQPE - if (fm.extension( FALSE ) == "desktop") - { - DocLnk d(f); - QFileInfo fnew(d.file()); - fm = fnew; - if (!fm.exists()) return; - } -#endif - clear(); - - reader->setText(fm.baseName(), fm.absFilePath()); - m_loadedconfig = readconfig(reader->m_string, false); - showEditTools(); - readbkmks(); - m_savedpos = 0xffffffff; - } - else - { - QMessageBox::information(this, PROGNAME, "File does not exist"); - reader->m_lastfile = QString::null; - } - -} -/* -void QTReaderApp::resizeEvent(QResizeEvent* e) -{ - if (m_fullscreen) - { - showNormal(); - showFullScreen(); - } -} -*/ -void QTReaderApp::handlekey(QKeyEvent* e) -{ -// qDebug("Keypress event"); - timeb now; - ftime(&now); - unsigned long etime = (1000*(now.time - m_lastkeytime.time) + now.millitm)-m_lastkeytime.millitm; - if (etime < m_debounce) - { - return; - } - m_lastkeytime = now; - switch(e->key()) - { - case Key_Escape: -// qDebug("escape event"); - if (m_disableesckey) - { - m_disableesckey = false; - } - else - { - m_bcloseDisabled = true; - if (m_fullscreen) - { - m_actFullscreen->setOn(false); - e->accept(); - } - else - { -// qDebug("escape action"); - doAction(m_escapeTarget, e); - } - } - break; - case Key_Space: - { - doAction(m_spaceTarget, e); - } - break; - case Key_Return: - { - doAction(m_returnTarget, e); - } - break; - case Key_Left: - { - if (reader->m_autoScroll && m_leftScroll) - { - reader->reduceScroll(); - } - else - { - doAction(m_leftTarget, e); - } - } - break; - case Key_Right: - { - if (reader->m_autoScroll && m_rightScroll) - { - reader->increaseScroll(); - } - else - { - doAction(m_rightTarget, e); - } - } - break; - case Key_Up: - { - if (reader->m_autoScroll && m_upScroll) - { - reader->increaseScroll(); - } - else - { - doAction(m_upTarget, e); - } - } - break; - case Key_Down: - { - if (reader->m_autoScroll && m_downScroll) - { - reader->reduceScroll(); - } - else - { - doAction(m_downTarget, e); - } - } - break; - default: - { - e->ignore(); - } - -/* - QString msg("Key press was:"); - QString key; - msg += key.setNum(e->key()); - QMessageBox::information(this, PROGNAME, msg); -*/ - } -} - -void QTReaderApp::showEditTools() -{ -// if ( !doc ) -// close(); - if (m_fullscreen) - { - if (menubar != NULL) menubar->hide(); - if (fileBar != NULL) fileBar->hide(); - if (viewBar != NULL) viewBar->hide(); - if (navBar != NULL) navBar->hide(); - if (markBar != NULL) markBar->hide(); - searchBar->hide(); - regBar->hide(); -#ifdef USEQPE - Global::hideInputMethod(); -#endif - m_fontBar->hide(); -// showNormal(); - showFullScreen(); - } - else - { -// qDebug("him"); -#ifdef USEQPE - Global::hideInputMethod(); -#endif -// qDebug("eb"); - menubar->show(); - if (fileBar != NULL) fileBar->show(); - if (viewBar != NULL) viewBar->show(); - if (navBar != NULL) navBar->show(); - if (markBar != NULL) markBar->show(); - mb->show(); - if ( searchVisible ) - { -#ifdef USEQPE - Global::showInputMethod(); -#endif - searchBar->show(); - } - if ( regVisible ) - { -#ifdef USEQPE - Global::showInputMethod(); -#endif - regBar->show(); - } - if (m_fontVisible) m_fontBar->show(); -// qDebug("sn"); - showNormal(); -// qDebug("sm"); -#ifdef USEQPE - showMaximized(); -#endif -// setCentralWidget(reader); - } - -// qDebug("uc"); - updateCaption(); -// qDebug("rw"); - editorStack->raiseWidget( reader ); -// qDebug("sf"); - reader->setFocus(); - reader->refresh(); -} -/* -void QTReaderApp::save() -{ - if ( !doc ) - return; - if ( !editor->edited() ) - return; - - QString rt = editor->text(); - QString pt = rt; - - if ( doc->name().isEmpty() ) { - unsigned ispace = pt.find( ' ' ); - unsigned ienter = pt.find( '\n' ); - int i = (ispace < ienter) ? ispace : ienter; - QString docname; - if ( i == -1 ) { - if ( pt.isEmpty() ) - docname = "Empty Text"; - else - docname = pt; - } else { - docname = pt.left( i ); - } - doc->setName(docname); - } - FileManager fm; - fm.saveFile( *doc, rt ); -} -*/ - -void QTReaderApp::clear() -{ -// if (doc != 0) -// { -// QMessageBox::information(this, PROGNAME, "Deleting doc", 1); -// delete doc; -// QMessageBox::information(this, PROGNAME, "Deleted doc", 1); -// doc = 0; - // } - reader->clear(); -} - -void QTReaderApp::updateCaption() -{ -// if ( !doc ) -// setCaption( tr("QTReader") ); -// else { -// QString s = doc->name(); -// if ( s.isEmpty() ) -// s = tr( "Unnamed" ); - setCaption( reader->m_string + " - " + tr("Reader") ); -// } -} - -void QTReaderApp::setDocument(const QString& fileref) -{ - bFromDocView = TRUE; -//QMessageBox::information(0, "setDocument", fileref); - openFile(fileref); -// showEditTools(); -} - -void QTReaderApp::closeEvent( QCloseEvent *e ) -{ -// qDebug("Close event"); - if (m_fullscreen) - { - m_fullscreen = false; - showEditTools(); - e->accept(); - } - else if (m_dontSave) - { - e->accept(); - } - else - { - if (editorStack->visibleWidget() == reader) - { - if ((m_escapeTarget != cesNone) && m_bcloseDisabled) - { -// qDebug("Close disabled"); - m_bcloseDisabled = false; - e->ignore(); - } - else - { - if (m_fontVisible) - { - m_fontBar->hide(); - m_fontVisible = false; - } - if (regVisible) - { - regBar->hide(); -#ifdef USEQPE - Global::hideInputMethod(); -#endif - regVisible = false; - return; - } - if (searchVisible) - { - searchBar->hide(); -#ifdef USEQPE - Global::hideInputMethod(); -#endif - searchVisible = false; - return; - } - if (m_fBkmksChanged && pBkmklist != NULL) - { - if (QMessageBox::warning(this, PROGNAME, "Save bookmarks?", "Save", "Don't bother") == 0) - savebkmks(); - delete pBkmklist; - pBkmklist = NULL; - m_fBkmksChanged = false; - } - bFromDocView = FALSE; - updatefileinfo(); - saveprefs(); - e->accept(); - } - } - else - { - showEditTools(); - m_disableesckey = true; - } - } -} - -void QTReaderApp::do_gotomark() -{ - m_nBkmkAction = cGotoBkmk; - if (!listbkmk(pBkmklist)) - QMessageBox::information(this, PROGNAME, "No bookmarks in memory"); -} - -void QTReaderApp::do_delmark() -{ - m_nBkmkAction = cDelBkmk; - if (!listbkmk(pBkmklist)) - QMessageBox::information(this, PROGNAME, "No bookmarks in memory"); -} - -bool QTReaderApp::listbkmk(CList* plist, const QString& _lab) -{ - bkmkselector->clear(); - if (_lab.isEmpty()) - bkmkselector->setText("Cancel"); - else - bkmkselector->setText(_lab); - int cnt = 0; - if (plist != NULL) - { - for (CList::iterator i = plist->begin(); i != plist->end(); i++) - { -#ifdef _UNICODE -// qDebug("Item:%s", (const char*)toQString(i->name())); - bkmkselector->insertItem(toQString(i->name())); -#else - bkmkselector->insertItem(i->name()); -#endif - cnt++; - } - } - if (cnt > 0) - { - hidetoolbars(); - editorStack->raiseWidget( bkmkselector ); - return true; - } - else - return false; -} - -void QTReaderApp::do_autogen() -{ - m_nRegAction = cAutoGen; - regEdit->setText(m_autogenstr); - do_regedit(); -} - -void QTReaderApp::do_regedit() -{ -// fileBar->hide(); - reader->bDoUpdates = false; -// qDebug("Showing regbar"); - regBar->show(); -// qDebug("Showing kbd"); -#ifdef USEQPE - Global::showInputMethod(); -#endif - regVisible = true; - regEdit->setFocus(); -// qApp->processEvents(); - reader->bDoUpdates = true; - reader->update(); -} - -bool QTReaderApp::openfrombkmk(Bkmk* bk) -{ - QString fn = toQString( - CFiledata(bk->anno()).name() - ); -// qDebug("fileinfo"); - if (!fn.isEmpty() && QFileInfo(fn).isFile()) - { -// qDebug("Opening"); - openFile(fn); - struct stat fnstat; - stat((const char *)reader->m_lastfile, &fnstat); - - if (CFiledata(bk->anno()).date() - != fnstat.st_mtime) - { - CFiledata fd(bk->anno()); - fd.setdate(fnstat.st_mtime); - bk->value(0); - } - else - { - unsigned short svlen = bk->filedatalen(); - unsigned char* svdata = bk->filedata(); - reader->putSaveData(svdata, svlen); -// setstate(svdata, svlen); - if (svlen != 0) - { - QMessageBox::warning(this, PROGNAME, "Not all file data used\nNew version?"); - } -// qDebug("updating"); -// showEditTools(); - reader->locate(bk->value()); - } - return true; - } - else - { - return false; - } -} - -void QTReaderApp::gotobkmk(int ind) -{ - showEditTools(); - switch (m_nBkmkAction) - { - case cOpenFile: - { -// qApp->processEvents(); - if (!openfrombkmk((*pOpenlist)[ind])) - { - pOpenlist->erase(ind); - QMessageBox::information(this, PROGNAME, "Can't find file"); - } - } - break; - case cGotoBkmk: - reader->locate((*pBkmklist)[ind]->value()); - break; - case cDelBkmk: -//// qDebug("Deleting:%s\n",(*pBkmklist)[ind]->name()); - pBkmklist->erase(ind); - m_fBkmksChanged = true; -// pBkmklist->sort(); - break; - case cRmBkmkFile: - { -#ifndef USEQPE - QDir d = QDir::home(); // "/" - d.cd(APPDIR); - d.remove(bkmkselector->text(ind)); -#else /* USEQPE */ - unlink((const char *)Global::applicationFileName(APPDIR,bkmkselector->text(ind))); -#endif /* USEQPE */ - } - break; - case cLdConfig: - readconfig(bkmkselector->text(ind), false); - break; - case cRmConfig: - { -#ifndef USEQPE - QDir d = QDir::home(); // "/" - d.cd(APPDIR "/configs"); - d.remove(bkmkselector->text(ind)); -#else /* USEQPE */ - unlink((const char *)Global::applicationFileName(APPDIR "/configs",bkmkselector->text(ind))); -#endif /* USEQPE */ - } - break; - case cExportLinks: - { -#ifndef USEQPE - QDir d = QDir::home(); // "/" - d.cd(APPDIR "/urls"); - QFileInfo fi(d, bkmkselector->text(ind)); - if (fi.exists()) - { - QString outfile( QFileDialog::getSaveFileName( QString::null, QString::null, this ) ); - if (!outfile.isEmpty()) - { - FILE* fout = fopen((const char *)outfile, "w"); - if (fout != NULL) - { - FILE* fin = fopen((const char *)fi.absFilePath(), "r"); - if (fin != NULL) - { - fprintf(fout, "\n"); - int ch = 0; - while ((ch = fgetc(fin)) != EOF) - { - fputc(ch, fout); - } - fclose(fin); - fprintf(fout, "\n"); - d.remove(bkmkselector->text(ind)); - } - fclose(fout); - } - else - QMessageBox::information(this, PROGNAME, "Couldn't open output"); - } - } -#else /* USEQPE */ - FILE* fin = fopen((const char *)Global::applicationFileName(APPDIR "/urls",bkmkselector->text(ind)), "r"); - if (fin != NULL) - { - bool allok = false; - fileBrowser* fb = new fileBrowser(true, this,"OpieReader",!m_bFloatingDialog, 0, "*", QString::null); - if (fb->exec()) - { - QString outfile = fb->getCurrentFile(); - FILE* fout = fopen((const char *)outfile, "w"); - if (fout != NULL) - { - fprintf(fout, "\n"); - int ch = 0; - while ((ch = fgetc(fin)) != EOF) - { - fputc(ch, fout); - } - fprintf(fout, "\n"); - fclose(fout); - allok = true; - } - else - QMessageBox::information(this, PROGNAME, "Couldn't open output"); - } - delete fb; - fclose(fin); - if (allok) unlink((const char *)Global::applicationFileName(APPDIR "/urls",bkmkselector->text(ind))); - } - else - { - QMessageBox::information(this, PROGNAME, "Couldn't open input"); - } - -/* - CFileSelector *f = new CFileSelector("text/html", this, NULL, !m_bFloatingDialog, TRUE, TRUE ); - int ret = f->exec(); - qDebug("Return:%d", ret); - DocLnk* doc = f->getDoc(); - if (doc != NULL) - { - FILE* fin = fopen((const char *)Global::applicationFileName(APPDIR "/urls",bkmkselector->text(ind)), "r"); - QString rt; - rt = "\n"; - int ch = 0; - while ((ch = fgetc(fin)) != EOF) - { - rt += (char)ch; - } - fclose(fin); - rt += "\n"; - if ( doc->name().isEmpty() ) - { - doc->setName(bkmkselector->text(ind)); - } - FileManager fm; - fm.saveFile( *doc, rt ); - qDebug("YES"); - } - else - { - qDebug("NO"); - } - delete f; -*/ - -#endif /* USEQPE */ - } - break; - } -} - -void QTReaderApp::cancelbkmk() -{ - if (m_nBkmkAction == cOpenFile) - { - QString fn = usefilebrowser(); - if (!fn.isEmpty() && QFileInfo(fn).isFile()) openFile(fn); - } - showEditTools(); -} - -void QTReaderApp::jump() -{ - m_nRegAction = cJump; - char lcn[20]; - sprintf(lcn, "%lu", reader->pagelocate()); - regEdit->setText(lcn); - do_regedit(); -} - -void QTReaderApp::do_jump(const QString& lcn) -{ - bool ok; - unsigned long ulcn = lcn.toULong(&ok); - if (ok) - reader->locate(ulcn); - else - QMessageBox::information(this, PROGNAME, "Must be a number"); -} - -void QTReaderApp::do_regaction() -{ - reader->bDoUpdates = false; - regBar->hide(); -#ifdef USEQPE - Global::hideInputMethod(); -#endif - regVisible = false; - switch(m_nRegAction) - { - case cAutoGen: - do_autogen(regEdit->text()); - break; - case cAddBkmk: - do_addbkmk(regEdit->text()); - break; - case cJump: - do_jump(regEdit->text()); - break; -/* - case cMonoSpace: - do_mono(regEdit->text()); - break; -*/ - case cSetTarget: - do_settarget(regEdit->text()); - break; -#ifdef _SCROLLPIPE - case cSetPipeTarget: - do_setpipetarget(regEdit->text()); - break; -#endif - case cSetConfigName: -// qDebug("Saving config"); - do_saveconfig(regEdit->text(), false); - break; - } -// reader->restore(); -// fileBar->show(); - reader->setFocus(); -// qApp->processEvents(); - reader->bDoUpdates = true; - reader->update(); -} - -void QTReaderApp::do_settarget(const QString& _txt) -{ - int ind = _txt.find('/'); - if (ind == -1) - { - m_targetapp = ""; - m_targetmsg = ""; - QMessageBox::information(this, PROGNAME, "Format is\nappname/messagename"); - } - else - { - m_targetapp = _txt.left(ind); - m_targetmsg = _txt.right(_txt.length()-ind-1); - } -} - -void QTReaderApp::chooseencoding() -{ - m_fontSelector->clear(); - m_fontSelector->insertItem("Ascii"); - m_fontSelector->insertItem("UTF-8"); - m_fontSelector->insertItem("UCS-2(BE)"); - m_fontSelector->insertItem("USC-2(LE)"); - m_fontSelector->insertItem("Palm"); - for (unicodetable::iterator iter = unicodetable::begin(); iter != unicodetable::end(); iter++) - { - m_fontSelector->insertItem(iter->mime); - } // delete the FontDatabase!!! - m_fontSelector->setCurrentItem (reader->m_encd); - m_fontAction = cChooseEncoding; - m_fontBar->show(); - m_fontVisible = true; -} - -void QTReaderApp::setfont() -{ - m_fontSelector->clear(); - { -#ifdef USEQPE - FontDatabase f; -#else - QFontDatabase f; -#endif - QStringList flist = f.families(); - m_fontSelector->insertStringList(flist); - } // delete the FontDatabase!!! - - for (int i = 1; i <= m_fontSelector->count(); i++) - { - if (m_fontSelector->text(i) == reader->m_fontname) - { - m_fontSelector->setCurrentItem(i); - break; - } - } - m_fontAction = cChooseFont; - m_fontBar->show(); - m_fontVisible = true; -} - -void QTReaderApp::setfontHelper(const QString& lcn, int size) -{ - if (size == 0) size = reader->m_fontControl.currentsize(); - if (m_propogatefontchange) - { - QFont f(lcn, 10); - bkmkselector->setFont( f ); - regEdit->setFont( f ); - searchEdit->setFont( f ); - m_annoWin->setFont( f ); - } - reader->m_fontname = lcn; - if (!reader->ChangeFont(size)) - { - reader->ChangeFont(size); - } -} - -void QTReaderApp::do_setencoding(int i) -{ -// qDebug("setencoding:%d", i); - if (m_fontAction == cChooseEncoding) - { - reader->setencoding(i); - } - reader->refresh(); - m_fontBar->hide(); - m_fontVisible = false; -// qDebug("showedit"); - if (reader->isVisible()) showEditTools(); -// qDebug("showeditdone"); -} - -void QTReaderApp::do_setfont(const QString& lcn) -{ - if (m_fontAction == cChooseFont) - { - setfontHelper(lcn); - } - reader->refresh(); - m_fontBar->hide(); - m_fontVisible = false; -// qDebug("showedit"); - //if (reader->isVisible()) - showEditTools(); -// qDebug("showeditdone"); -} - -void QTReaderApp::do_autogen(const QString& regText) -{ - unsigned long fs, ts; - reader->sizes(fs,ts); -// // qDebug("Reg:%s\n", (const tchar*)(regEdit->text())); - m_autogenstr = regText; - QRegExp re(regText); - CBuffer buff; - if (pBkmklist != NULL) delete pBkmklist; - pBkmklist = new CList; - m_fBkmksChanged = true; - - pbar->setGeometry(regBar->x(),regBar->y(),regBar->width(), regBar->height()); - pbar->show(); - pbar->raise(); - pbar->reset(); - reader->update(); - qApp->processEvents(); - reader->setFocus(); - reader->jumpto(0); - int lastpc = 0; - int i = 0; - while (i >= 0) - { - unsigned int lcn = reader->locate(); - int pc = (100*lcn)/ts; - if (pc != lastpc) - { - pbar->setProgress(pc); - qApp->processEvents(); - if (reader->locate() != lcn) reader->jumpto(lcn); - reader->setFocus(); - lastpc = pc; - } - i = reader->buffdoc.getpara(buff); -#ifdef _UNICODE - if (re.match(toQString(buff.data())) != -1) -#else - if (re.match(buff.data()) != -1) -#endif - pBkmklist->push_back(Bkmk(buff.data(), NULL, lcn)); - } - pBkmklist->sort(); - pbar->setProgress(100); - qApp->processEvents(); - pbar->hide(); - reader->refresh(); -} - -void QTReaderApp::saveprefs() -{ -// qDebug("saveprefs"); -// reader->saveprefs("uqtreader"); -// if (!m_loadedconfig) - do_saveconfig( APPDIR, true ); - -/* - Config config( APPDIR ); - config.setGroup( "View" ); - - reader->m_lastposn = reader->pagelocate(); - - config.writeEntry("FloatDialogs", m_bFloatingDialog); - config.writeEntry( "StripCr", reader->bstripcr ); - config.writeEntry( "AutoFmt", reader->bautofmt ); - config.writeEntry( "TextFmt", reader->btextfmt ); - config.writeEntry( "StripHtml", reader->bstriphtml ); - config.writeEntry( "Dehyphen", reader->bdehyphen ); - config.writeEntry( "Depluck", reader->bdepluck ); - config.writeEntry( "Dejpluck", reader->bdejpluck ); - config.writeEntry( "OneSpace", reader->bonespace ); - config.writeEntry( "Unindent", reader->bunindent ); - config.writeEntry( "Repara", reader->brepara ); - config.writeEntry( "DoubleSpace", reader->bdblspce ); - config.writeEntry( "Indent", reader->bindenter ); - config.writeEntry( "FontSize", (int)(reader->m_fontControl.currentsize()) ); - config.writeEntry( "ScrollDelay", reader->m_delay); - config.writeEntry( "LastFile", reader->m_lastfile ); - config.writeEntry( "LastPosn", (int)(reader->pagelocate()) ); - config.writeEntry( "PageMode", reader->m_bpagemode ); - config.writeEntry( "MonoSpaced", reader->m_bMonoSpaced ); - config.writeEntry( "SwapMouse", reader->m_swapmouse); - config.writeEntry( "Fontname", reader->m_fontname ); - config.writeEntry( "Encoding", reader->m_encd ); - config.writeEntry( "CharSpacing", reader->m_charpc ); - config.writeEntry( "Overlap", (int)(reader->m_overlap) ); - config.writeEntry( "Margin", (int)reader->m_border ); - config.writeEntry( "TargetApp", m_targetapp ); - config.writeEntry( "TargetMsg", m_targetmsg ); -#ifdef _SCROLLPIPE - config.writeEntry( "PipeTarget", reader->m_pipetarget ); - config.writeEntry( "PauseAfterPara", reader->m_pauseAfterEachPara ); -#endif - config.writeEntry( "TwoTouch", m_twoTouch ); - config.writeEntry( "Annotation", m_doAnnotation); - config.writeEntry( "Dictionary", m_doDictionary); - config.writeEntry( "Clipboard", m_doClipboard); - config.writeEntry( "SpaceTarget", m_spaceTarget); - config.writeEntry( "EscapeTarget", m_escapeTarget); - config.writeEntry( "ReturnTarget", m_returnTarget); - config.writeEntry( "LeftTarget", m_leftTarget); - config.writeEntry( "RightTarget", m_rightTarget); - config.writeEntry( "UpTarget", m_upTarget); - config.writeEntry( "DownTarget", m_downTarget); - config.writeEntry("LeftScroll", m_leftScroll); - config.writeEntry("RightScroll", m_rightScroll); - config.writeEntry("UpScroll", m_upScroll); - config.writeEntry("DownScroll", m_downScroll); -#ifdef REPALM - config.writeEntry( "Repalm", reader->brepalm ); -#endif - config.writeEntry( "Remap", reader->bremap ); - config.writeEntry( "Peanut", reader->bpeanut ); - config.writeEntry( "MakeBold", reader->bmakebold ); - config.writeEntry( "Continuous", reader->m_continuousDocument ); - config.writeEntry( "FullJust", reader->bfulljust ); - config.writeEntry( "ExtraSpace", reader->getextraspace() ); - config.writeEntry( "ExtraLead", reader->getlead() ); - config.writeEntry( "Basesize", (int)reader->getBaseSize()); - config.writeEntry( "RequestorFontChange", m_propogatefontchange); - - config.setGroup( "Toolbar" ); - config.writeEntry("Movable", m_tbmovesave); - config.writeEntry("Policy", m_tbpolsave); - config.writeEntry("Position", m_tbposition); -*/ - savefilelist(); -} - -/* -void QTReaderApp::oldFile() -{ -// qDebug("oldFile called"); - reader->setText(true); -// qDebug("settext called"); - showEditTools(); -// qDebug("showedit called"); -} -*/ - -/* -void info_cb(Fl_Widget* o, void* _data) -{ - - if (infowin == NULL) - { - - infowin = new Fl_Window(160,240); - filename = new Fl_Output(45,5,110,14,"Filename"); - filesize = new Fl_Output(45,25,110,14,"Filesize"); - textsize = new Fl_Output(45,45,110,14,"Textsize"); - comprat = new CBar(45,65,110,14,"Ratio %"); - posn = new Fl_Output(45,85,110,14,"Location"); - frcn = new CBar(45,105,110,14,"% Read"); - about = new Fl_Multiline_Output(5,125,150,90); - about->value("TWReader - $Name$\n\nA file reader program for the Agenda\n\nReads text, PalmDoc and ppms format files"); - Fl_Button *jump_accept = new Fl_Button(62,220,35,14,"Okay"); - infowin->set_modal(); - } - if (((reader_ui *)_data)->g_filename[0] != '\0') - { - unsigned long fs,ts; - tchar sz[20]; - ((reader_ui *)_data)->input->sizes(fs,ts); - unsigned long pl = ((reader_ui *)_data)->input->locate(); - - filename->value(((reader_ui *)_data)->g_filename); - - sprintf(sz,"%u",fs); - filesize->value(sz); - - sprintf(sz,"%u",ts); - textsize->value(sz); - - comprat->value(100-(100*fs + (ts >> 1))/ts); - - sprintf(sz,"%u",pl); - posn->value(sz); - - frcn->value((100*pl + (ts >> 1))/ts); - } - infowin->show(); -} -*/ - -void QTReaderApp::savebkmks() -{ - if (pBkmklist != NULL) - { -#ifndef USEQPE - QDir d = QDir::home(); // "/" - d.cd(APPDIR); - QFileInfo fi(d, reader->m_string); - BkmkFile bf((const char *)fi.absFilePath(), true); -#else /* USEQPE */ - BkmkFile bf((const char *)Global::applicationFileName(APPDIR,reader->m_string), true); -#endif /* USEQPE */ - bf.write(*pBkmklist); - } - m_fBkmksChanged = false; -} - -void QTReaderApp::readfilelist() -{ -#ifndef USEQPE - QDir d = QDir::home(); // "/" - d.cd(APPDIR); - QFileInfo fi(d, ".openfiles"); - BkmkFile bf((const char *)fi.absFilePath()); -#else /* USEQPE */ - BkmkFile bf((const char *)Global::applicationFileName(APPDIR,".openfiles")); -#endif /* USEQPE */ -// qDebug("Reading open files"); - pOpenlist = bf.readall(); -// if (pOpenlist != NULL) qDebug("...with success"); -// else qDebug("...without success!"); -} - -void QTReaderApp::savefilelist() -{ - if (pOpenlist != NULL) - { -#ifndef USEQPE - QDir d = QDir::home(); // "/" - d.cd(APPDIR); - QFileInfo fi(d, ".openfiles"); - BkmkFile bf((const char *)fi.absFilePath(), true); -#else /* USEQPE */ - BkmkFile bf((const char *)Global::applicationFileName(APPDIR,".openfiles"), true); -#endif /* USEQPE */ -// qDebug("Writing open files"); - bf.write(*pOpenlist); - } -} - -void QTReaderApp::readbkmks() -{ - if (pBkmklist != NULL) - { - delete pBkmklist; - } - struct stat fnstat; - struct stat bkstat; -#ifndef USEQPE - QDir d = QDir::home(); // "/" - d.cd(APPDIR); - QFileInfo fi(d, reader->m_string); -#endif /* ! USEQPE */ - if ( - stat((const char *)reader->m_lastfile, &fnstat) == 0 - && -#ifndef USEQPE - stat((const char *)fi.absFilePath(), &bkstat) == 0 -#else /* USEQPE */ - stat((const char *)Global::applicationFileName(APPDIR,reader->m_string), &bkstat) == 0 -#endif /* USEQPE */ - ) - { - if (bkstat.st_mtime < fnstat.st_mtime) - { -#ifndef USEQPE - unlink((const char *)fi.absFilePath()); -#else /* USEQPE */ - unlink((const char *)Global::applicationFileName(APPDIR,reader->m_string)); -#endif /* USEQPE */ - } - } - -#ifndef USEQPE - BkmkFile bf((const char *)fi.absFilePath()); -#else /* USEQPE */ - BkmkFile bf((const char *)Global::applicationFileName(APPDIR,reader->m_string)); -#endif /* USEQPE */ - - pBkmklist = bf.readall(); - m_fBkmksChanged = bf.upgraded(); - if (pBkmklist == NULL) - { - pBkmklist = reader->getbkmklist(); - } - if (pBkmklist != NULL) - pBkmklist->sort(); -} - -void QTReaderApp::addbkmk() -{ - m_nRegAction = cAddBkmk; - regEdit->setText(reader->firstword()); - do_regedit(); -} - -void QTReaderApp::do_addbkmk(const QString& text) -{ - if (text.isEmpty()) - { - QMessageBox::information(this, PROGNAME, "Need a name for the bookmark\nSelect add again", 1); - } - else - { - if (pBkmklist == NULL) pBkmklist = new CList; -#ifdef _UNICODE - CBuffer buff; - int i = 0; - for (i = 0; i < text.length(); i++) - { - buff[i] = text[i].unicode(); - } - buff[i] = 0; - pBkmklist->push_front(Bkmk(buff.data(), NULL, reader->pagelocate())); -#else - pBkmklist->push_front(Bkmk((const tchar*)text, reader->pagelocate())); -#endif - m_fBkmksChanged = true; - pBkmklist->sort(); - } -} - -void QTReaderApp::OnRedraw() -{ - if ((pBkmklist != NULL) && (m_bkmkAvail != NULL)) - { - bool found = findNextBookmark(reader->pagelocate()); - m_bkmkAvail->setEnabled(found); - } -} - -void QTReaderApp::showAnnotation() -{ - m_annoWin->setName(toQString(m_anno->name())); - m_annoWin->setAnno(toQString(m_anno->anno())); - m_annoIsEditing = false; -#ifdef USEQPE - Global::showInputMethod(); -#endif - editorStack->raiseWidget( m_annoWin ); - m_annoWin->setFocus(); -} - -void QTReaderApp::OnWordSelected(const QString& wrd, size_t posn, const QString& line) -{ -//// qDebug("OnWordSelected(%u):%s", posn, (const char*)wrd); - - if (m_doClipboard) - { - QClipboard* cb = QApplication::clipboard(); - cb->setText(wrd); -#ifdef USEQPE - if (wrd.length() > 10) - { - Global::statusMessage(wrd.left(8) + ".."); - } - else - { - Global::statusMessage(wrd); - } -#endif - } - if (m_doAnnotation) - { -// addAnno(wrd, "Need to be able to edit this", posn); - m_annoWin->setName(line); - m_annoWin->setAnno(""); - m_annoWin->setPosn(posn); - m_annoIsEditing = true; -#ifdef USEQPE - Global::showInputMethod(); -#endif - editorStack->raiseWidget( m_annoWin ); - } -#ifdef USEQPE - if (m_doDictionary) - { - if (!m_targetapp.isEmpty() && !m_targetmsg.isEmpty()) - { - QCopEnvelope e(("QPE/Application/"+m_targetapp).utf8(), (m_targetmsg+"(QString)").utf8()); - e << wrd; - } - } -#endif -} - -void QTReaderApp::doAction(ActionTypes a, QKeyEvent* e) -{ - if (a == 0) - { - e->ignore(); - } - else - { - e->accept(); -// qDebug("Accepted"); - switch (a) - { - case cesOpenFile: - { - fileOpen(); - } - break; - case cesAutoScroll: - { - reader->setautoscroll(!reader->m_autoScroll); - setScrollState(reader->m_autoScroll); - } - break; - case cesActionMark: - { - addbkmk(); - } - break; - case cesFullScreen: - { - m_actFullscreen->setOn(!m_fullscreen); - } - break; - case cesActionAnno: - { - addanno(); - } - break; - case cesZoomIn: - zoomin(); - break; - case cesZoomOut: - zoomout(); - break; - case cesBack: - reader->goBack(); - break; - case cesForward: - reader->goForward(); - break; - case cesHome: - reader->goHome(); - break; - case cesPageUp: - reader->dopageup(); - break; - case cesPageDown: - reader->dopagedn(); - break; - case cesLineUp: - reader->lineUp(); - break; - case cesLineDown: - reader->lineDown(); - break; - case cesStartDoc: - gotoStart(); - break; - case cesEndDoc: - gotoEnd(); - break; - default: - qDebug("Unknown ActionType:%u", a); - break; - } - } -} - -void QTReaderApp::setTwoTouch(bool _b) { reader->setTwoTouch(_b); } -void QTReaderApp::restoreFocus() { reader->setFocus(); } - -void QTReaderApp::SaveConfig() -{ - m_nRegAction = cSetConfigName; - regEdit->setText(reader->m_string); - do_regedit(); -} - -void QTReaderApp::do_saveconfig(const QString& _txt, bool full) -{ -// qDebug("do_saveconfig:%s", (const char*)_txt); -#ifdef USEQPE - QString configname; - Config::Domain dom; - - if (full) - { - configname = _txt; - dom = Config::User; - } - else - { - configname = Global::applicationFileName(APPDIR "/configs", _txt); - dom = Config::File; - } - - Config config(configname, dom); - config.setGroup( "View" ); - -#else - QFileInfo fi; - if (full) - { -// qDebug("full:%s", (const char*)_txt); - QDir d = QDir::home(); // "/" - if ( !d.cd(_txt) ) - { // "/tmp" - qWarning( "Cannot find the \"~/%s\" directory", (const char*)_txt ); - d = QDir::home(); - d.mkdir(_txt); - d.cd(_txt); - } - fi.setFile(d, INIFILE); - } - else - { - QDir d = QDir::home(); // "/" - if ( !d.cd(APPDIR) ) - { // "/tmp" - qWarning( "Cannot find the \"~/" APPDIR "\" directory" ); - d = QDir::home(); - d.mkdir(APPDIR); - d.cd(APPDIR); - } - if ( !d.cd("configs") ) - { // "/tmp" - qWarning( "Cannot find the \"~/" APPDIR "/configs\" directory" ); - d = QDir::home(); - d.cd(APPDIR); - d.mkdir("configs"); - d.cd("configs"); - } - fi.setFile(d, _txt); - } -// qDebug("Path:%s", (const char*)fi.absFilePath()); - Config config(fi.absFilePath()); -#endif - - - config.writeEntry( "StripCr", reader->bstripcr ); - config.writeEntry( "AutoFmt", reader->bautofmt ); - config.writeEntry( "TextFmt", reader->btextfmt ); - config.writeEntry( "StripHtml", reader->bstriphtml ); - config.writeEntry( "Dehyphen", reader->bdehyphen ); - config.writeEntry( "Depluck", reader->bdepluck ); - config.writeEntry( "Dejpluck", reader->bdejpluck ); - config.writeEntry( "OneSpace", reader->bonespace ); - config.writeEntry( "Unindent", reader->bunindent ); - config.writeEntry( "Repara", reader->brepara ); - config.writeEntry( "DoubleSpace", reader->bdblspce ); - config.writeEntry( "Indent", reader->bindenter ); - config.writeEntry( "FontSize", (int)(reader->m_fontControl.currentsize()) ); - config.writeEntry( "ScrollDelay", reader->m_delay); - if (full) - { - config.writeEntry("Debounce", m_debounce); - config.writeEntry("FloatDialogs", m_bFloatingDialog); - reader->m_lastposn = reader->pagelocate(); - config.writeEntry( "LastFile", reader->m_lastfile ); - config.writeEntry( "LastPosn", (int)(reader->pagelocate()) ); - } - config.writeEntry( "PageMode", reader->m_bpagemode ); - config.writeEntry( "MonoSpaced", reader->m_bMonoSpaced ); - config.writeEntry( "SwapMouse", reader->m_swapmouse); - config.writeEntry( "Fontname", reader->m_fontname ); - config.writeEntry( "Encoding", reader->m_encd ); - config.writeEntry( "CharSpacing", reader->m_charpc ); - config.writeEntry( "Overlap", (int)(reader->m_overlap) ); - config.writeEntry( "Margin", (int)reader->m_border ); - config.writeEntry( "TargetApp", m_targetapp ); - config.writeEntry( "TargetMsg", m_targetmsg ); -#ifdef _SCROLLPIPE - config.writeEntry( "PipeTarget", reader->m_pipetarget ); - config.writeEntry( "PauseAfterPara", reader->m_pauseAfterEachPara ); -#endif - config.writeEntry( "TwoTouch", m_twoTouch ); - config.writeEntry( "Annotation", m_doAnnotation); - config.writeEntry( "Dictionary", m_doDictionary); - config.writeEntry( "Clipboard", m_doClipboard); - config.writeEntry( "SpaceTarget", m_spaceTarget); - config.writeEntry( "EscapeTarget", m_escapeTarget); - config.writeEntry( "ReturnTarget", m_returnTarget); - config.writeEntry( "LeftTarget", m_leftTarget); - config.writeEntry( "RightTarget", m_rightTarget); - config.writeEntry( "UpTarget", m_upTarget); - config.writeEntry( "DownTarget", m_downTarget); - config.writeEntry("LeftScroll", m_leftScroll); - config.writeEntry("RightScroll", m_rightScroll); - config.writeEntry("UpScroll", m_upScroll); - config.writeEntry("DownScroll", m_downScroll); -#ifdef REPALM - config.writeEntry( "Repalm", reader->brepalm ); -#endif - config.writeEntry( "Remap", reader->bremap ); - config.writeEntry( "Peanut", reader->bpeanut ); - config.writeEntry( "MakeBold", reader->bmakebold ); - config.writeEntry( "Continuous", reader->m_continuousDocument ); - config.writeEntry( "FullJust", reader->bfulljust ); - config.writeEntry( "ExtraSpace", reader->getextraspace() ); - config.writeEntry( "ExtraLead", reader->getlead() ); - config.writeEntry( "Basesize", (int)reader->getBaseSize()); - config.writeEntry( "RequestorFontChange", m_propogatefontchange); - if (full) - { - config.setGroup( "Toolbar" ); - config.writeEntry("Movable", m_tbmovesave); - config.writeEntry("Policy", m_tbpolsave); - config.writeEntry("Position", m_tbposition); -#ifndef USEQPE - config.setGroup( "Geometry" ); - config.writeEntry( "x", x() ); - config.writeEntry( "y", y() ); - config.writeEntry( "width", width() ); - config.writeEntry( "height", height() ); -#endif - } -} - -/* -void QTReaderApp::setstate(unsigned char* _sd, unsigned short _sdlen) -{ - unsigned short sdlen; - memcpy(&sdlen, _sd, sizeof(sdlen)); - sdlen -= sizeof(sdlen); - _sd += sizeof(sdlen); - statedata* sd; - char* data; - if (sdlen < sizeof(statedata)+1) - { - sdlen = sizeof(statedata)+1; - } - data = new char[sdlen]; - sd = (statedata*)data; - memcpy(sd, _sd, sdlen); - data[sdlen] = 0; - reader->setstate(*sd); - delete [] data; -} - -void QTReaderApp::getstate(unsigned char*& data, unsigned short& len) -{ - unsigned char* olddata = data; - unsigned short oldlen = len; - len = oldlen+sizeof(unsigned short)+sizeof(statedata)+reader->m_fontname.length(); - data = new unsigned char[len]; - memcpy(data, olddata, oldlen); - delete [] olddata; - memcpy(data+oldlen, &len, sizeof(len)); - statedata* sd = (statedata*)(data+oldlen+sizeof(unsigned short)); - - sd->bstripcr = reader->bstripcr; - sd->btextfmt = reader->btextfmt; - sd->bautofmt = reader->bautofmt; - sd->bstriphtml = reader->bstriphtml; - sd->bpeanut = reader->bpeanut; - sd->bdehyphen = reader->bdehyphen; - sd->bdepluck = reader->bdepluck; - sd->bdejpluck = reader->bdejpluck; - sd->bonespace = reader->bonespace; - sd->bunindent = reader->bunindent; - sd->brepara = reader->brepara; - sd->bdblspce = reader->bdblspce; - sd->m_bpagemode = reader->m_bpagemode; - sd->m_bMonoSpaced = reader->m_bMonoSpaced; - sd->bremap = reader->bremap; - sd->bmakebold = reader->bmakebold; - sd->Continuous = reader->m_continuousDocument; -#ifdef REPALM - sd->brepalm = reader->brepalm; -#endif - sd->bindenter = reader->bindenter; - sd->m_textsize = reader->m_textsize; //reader->m_fontControl.currentsize() - sd->m_encd = reader->m_encd; - sd->m_charpc = reader->m_charpc; - strcpy(sd->m_fontname, reader->m_fontname.latin1()); -} -*/ -#ifdef _SCRIPT -void QTReaderApp::RunScript() -{ - fileBrowser* fb = new fileBrowser(this,"OpieReader",!m_bFloatingDialog, - 0, -// WStyle_Customize | WStyle_NoBorderEx, - "*", Global::applicationFileName(APPDIR "/scripts", "")); - - QString fn; - if (fb->exec()) - { - fn = fb->fileList[0]; - } - delete fb; - if ( !fn.isEmpty() && fork() == 0 ) - { - execlp((const char *)fn,(const char *)fn,NULL); - } -} - -void QTReaderApp::SaveScript(const char* sname) -{ - FILE* f = fopen(sname,"w"); - if (f != NULL) - { -#ifdef OPIE - fprintf(f, "#!/bin/sh\nmsg() {\n\tqcop QPE/Application/reader \"$1\" \"$2\" \"$3\"\n}\n"); -#else - fprintf(f, "#!/bin/bash\nmsg() {\n\tqcop QPE/Application/uqtreader \"$1\" \"$2\" \"$3\"\n}\n"); -#endif - fprintf(f, "msg \"Update(int)\" 0\n"); - fprintf(f, "msg \"Layout/StripCR(int)\" %d\n", (reader->bstripcr) ? 1:0); - if (reader->btextfmt) fprintf(f, "msg \"Markup(QString)\" \"Text\"\n"); - else if (reader->bautofmt) fprintf(f, "msg \"Markup(QString)\" \"Auto\"\n"); - else if (reader->bstriphtml) fprintf(f, "msg \"Markup(QString)\" \"HTML\"\n"); - else if (reader->bpeanut) fprintf(f, "msg \"Markup(QString)\" \"Peanut/PML\"\n"); - else fprintf(f, "msg \"Markup(QString)\" \"None\"\n"); - fprintf(f, "msg \"Layout/Dehyphen(int)\" %d\n", (reader->bdehyphen) ? 1:0); - fprintf(f, "msg \"Layout/Depluck(int)\" %d\n", (reader->bdepluck) ? 1:0); - fprintf(f, "msg \"Layout/Dejpluck(int)\" %d\n", (reader->bdejpluck) ? 1:0); - fprintf(f, "msg \"Layout/SingleSpace(int)\" %d\n", (reader->bonespace) ? 1:0); - fprintf(f, "msg \"Layout/Unindent(int)\" %d\n", (reader->bunindent) ? 1:0); - fprintf(f, "msg \"Layout/Re-paragraph(int)\" %d\n", (reader->brepara) ? 1:0); - fprintf(f, "msg \"Layout/DoubleSpace(int)\" %d\n", (reader->bdblspce) ? 1:0); - fprintf(f, "msg \"Layout/Indent(int)\" %d\n", reader->bindenter); - fprintf(f, "msg \"Format/SetFont(QString,int)\" \"%s\" %d\n", (const char*)reader->m_fontname, reader->m_textsize); - fprintf(f, "msg \"Navigation/Page/LineScroll(int)\" %d\n", (reader->m_bpagemode) ? 1:0); - fprintf(f, "msg \"Format/Ideogram/Word(int)\" %d\n", (reader->m_bMonoSpaced) ? 1:0); - fprintf(f, "msg \"Format/Encoding(QString)\" \"%s\"\n", (const char*)m_EncodingAction[reader->m_encd]->text()); - fprintf(f, "msg \"Format/SetWidth(int)\" %d\n", reader->m_charpc); - fprintf(f, "msg \"Navigation/SetOverlap(int)\" %d\n", reader->m_overlap); - fprintf(f, "msg \"Layout/Remap(int)\" %d\n", (reader->bremap) ? 1:0); - fprintf(f, "msg \"Layout/Embolden(int)\" %d\n", (reader->bmakebold) ? 1:0); - fprintf(f, "msg \"File/Continuous(int)\" %d\n", (reader->m_continuousDocument) ? 1:0); - fprintf(f, "msg \"File/SetDictionary(QString)\" \"%s/%s\"\n", (const char *)m_targetapp, (const char *)m_targetmsg); -#ifdef _SCROLLPIPE - fprintf(f, "msg \"File/SetScrollTarget(QString)\" \"%s\"\n", (const char *)reader->m_pipetarget); -#endif - fprintf(f, "msg \"File/Two/OneTouch(int)\" %d\n", (m_twoTouch) ? 1:0); - fprintf(f, "msg \"Target/Annotation(int)\" %d\n", (m_doAnnotation) ? 1:0); - fprintf(f, "msg \"Target/Dictionary(int)\" %d\n", (m_doDictionary) ? 1:0); - fprintf(f, "msg \"Target/Clipboard(int)\" %d\n", (m_doClipboard) ? 1:0); - fprintf(f, "msg \"File/Action(QString)\" \"%s\"\n", (const char *)m_buttonAction[m_spaceTarget]->text()); - fprintf(f, "msg \"Update(int)\" 1\n"); - fprintf(f, "msg \"info(QString)\" \"All Done\"\n"); - fclose(f); - chmod(sname, S_IXUSR | S_IXGRP | S_IXOTH); - } -} - -void QTReaderApp::SaveConfig() -{ - m_nRegAction = cSetConfigName; - regEdit->setText(""); - do_regedit(); -} - -void QTReaderApp::do_saveconfig(const QString& _txt) -{ - SaveScript(Global::applicationFileName(APPDIR "/scripts", _txt)); -} -#endif - -#ifdef _SCROLLPIPE -void QTReaderApp::setpipetarget() -{ - m_nRegAction = cSetPipeTarget; - QString text = (reader->m_pipetarget.isEmpty()) ? QString("") : reader->m_pipetarget; - regEdit->setText(text); - do_regedit(); -} - -void QTReaderApp::do_setpipetarget(const QString& _txt) -{ - reader->m_pipetarget = _txt; -} - -void QTReaderApp::setpause(bool sfs) -{ - reader->m_pauseAfterEachPara = sfs; -} -#endif - -void QTReaderApp::monospace(bool _b) -{ - reader->setmono(_b); -} - -bool QTReaderApp::readconfig(const QString& _txt, bool full=false) -{ -#ifdef USEQPE - QString configname; - Config::Domain dom; - - if (full) - { - configname = _txt; - dom = Config::User; - } - else - { - configname = Global::applicationFileName(APPDIR "/configs", _txt); - QFileInfo fm(configname); - if ( !fm.exists() ) return false; - dom = Config::File; - } - - Config config(configname, dom); - config.setGroup( "View" ); - -#else - QFileInfo fi; - if (full) - { - QDir d = QDir::home(); // "/" - if ( !d.cd(_txt) ) - { // "/tmp" - qWarning( "Cannot find the \"~/%s\" directory", (const char*)_txt ); - d = QDir::home(); - d.mkdir(_txt); - d.cd(_txt); - } - fi.setFile(d, INIFILE); - } - else - { - QDir d = QDir::home(); // "/" - if ( !d.cd(APPDIR) ) - { // "/tmp" - qWarning( "Cannot find the \"~/" APPDIR "\" directory" ); - d = QDir::home(); - d.mkdir(APPDIR); - d.cd(APPDIR); - } - if ( !d.cd("configs") ) - { // "/tmp" - qWarning( "Cannot find the \"~/" APPDIR "/configs\" directory" ); - d = QDir::home(); - d.mkdir("configs"); - d.cd("configs"); - } - fi.setFile(d, _txt); - } -#ifdef _WINDOWS - struct stat fnstat; - if (stat((const char *)reader->m_lastfile, &fnstat) == 0) return false; // get round fileinfo bug on windows -#else - if (!fi.exists()) return false; -#endif - Config config(fi.absFilePath()); -#endif - if (full) - { - config.setGroup("Toolbar"); - m_tbmovesave = m_tbmove = config.readBoolEntry("Movable", false); - m_tbpolsave = m_tbpol = (ToolbarPolicy)config.readNumEntry("Policy", 1); - m_tbposition = (ToolBarDock)config.readNumEntry("Position", 2); - } - config.setGroup( "View" ); - m_bFloatingDialog = config.readBoolEntry("FloatDialogs", false); - reader->bstripcr = config.readBoolEntry( "StripCr", true ); - reader->bfulljust = config.readBoolEntry( "FullJust", false ); - reader->setextraspace(config.readNumEntry( "ExtraSpace", 0 )); - reader->setlead(config.readNumEntry( "ExtraLead", 0 )); - reader->btextfmt = config.readBoolEntry( "TextFmt", false ); - reader->bautofmt = config.readBoolEntry( "AutoFmt", true ); - reader->bstriphtml = config.readBoolEntry( "StripHtml", false ); - reader->bpeanut = config.readBoolEntry( "Peanut", false ); - reader->bdehyphen = config.readBoolEntry( "Dehyphen", false ); - reader->bdepluck = config.readBoolEntry( "Depluck", false ); - reader->bdejpluck = config.readBoolEntry( "Dejpluck", false ); - reader->bonespace = config.readBoolEntry( "OneSpace", false ); - reader->bunindent = config.readBoolEntry( "Unindent", false ); - reader->brepara = config.readBoolEntry( "Repara", false ); - reader->bdblspce = config.readBoolEntry( "DoubleSpace", false ); - reader->bindenter = config.readNumEntry( "Indent", 0 ); - reader->m_textsize = config.readNumEntry( "FontSize", 12 ); - reader->m_delay = config.readNumEntry( "ScrollDelay", 5184); - if (full) - { - reader->m_lastfile = config.readEntry( "LastFile", QString::null ); - reader->m_lastposn = config.readNumEntry( "LastPosn", 0 ); - } - reader->m_bpagemode = config.readBoolEntry( "PageMode", true ); - reader->m_bMonoSpaced = config.readBoolEntry( "MonoSpaced", false); - reader->m_swapmouse = config.readBoolEntry( "SwapMouse", false); - reader->m_fontname = config.readEntry( "Fontname", "helvetica" ); - reader->m_encd = config.readNumEntry( "Encoding", 0 ); - reader->m_charpc = config.readNumEntry( "CharSpacing", 100 ); - reader->m_overlap = config.readNumEntry( "Overlap", 0 ); - reader->m_border = config.readNumEntry( "Margin", 6 ); -#ifdef REPALM - reader->brepalm = config.readBoolEntry( "Repalm", true ); -#endif - reader->bremap = config.readBoolEntry( "Remap", true ); - reader->bmakebold = config.readBoolEntry( "MakeBold", false ); - reader->setContinuous(config.readBoolEntry( "Continuous", true )); - m_targetapp = config.readEntry( "TargetApp", QString::null ); - m_targetmsg = config.readEntry( "TargetMsg", QString::null ); -#ifdef _SCROLLPIPE - reader->m_pipetarget = config.readEntry( "PipeTarget", QString::null ); - reader->m_pauseAfterEachPara = config.readBoolEntry( "PauseAfterPara", true ); -#endif - m_twoTouch = config.readBoolEntry( "TwoTouch", false); - m_doAnnotation = config.readBoolEntry( "Annotation", false); - m_doDictionary = config.readBoolEntry( "Dictionary", false); - m_doClipboard = config.readBoolEntry( "Clipboard", false); - m_spaceTarget = (ActionTypes)config.readNumEntry("SpaceTarget", cesAutoScroll); - m_escapeTarget = (ActionTypes)config.readNumEntry("EscapeTarget", cesNone); - m_returnTarget = (ActionTypes)config.readNumEntry("ReturnTarget", cesFullScreen); - m_leftTarget = (ActionTypes)config.readNumEntry("LeftTarget", cesZoomOut); - m_rightTarget = (ActionTypes)config.readNumEntry("RightTarget", cesZoomIn); - m_upTarget = (ActionTypes)config.readNumEntry("UpTarget", cesPageUp); - m_downTarget = (ActionTypes)config.readNumEntry("DownTarget", cesPageDown); - - m_leftScroll = config.readBoolEntry("LeftScroll", false); - m_rightScroll = config.readBoolEntry("RightScroll", false); - m_upScroll = config.readBoolEntry("UpScroll", true); - m_downScroll = config.readBoolEntry("DownScroll", true); - m_propogatefontchange = config.readBoolEntry( "RequestorFontChange", false); - reader->setBaseSize(config.readNumEntry( "Basesize", 10 )); - reader->setTwoTouch(m_twoTouch); - - m_touch_action->setOn(m_twoTouch); - m_setmono_action->setOn(reader->m_bMonoSpaced); - setfontHelper(reader->m_fontname); - if (full) - { - addtoolbars(&config); - } - reader->setfilter(reader->getfilter()); - reader->refresh(); - return true; -} - -bool QTReaderApp::PopulateConfig(const char* tgtdir) -{ - bkmkselector->clear(); - bkmkselector->setText("Cancel"); -#ifndef USEQPE - int cnt = 0; - - QDir d = QDir::home(); // "/" - if ( !d.cd(APPDIR) ) { // "/tmp" - qWarning( "Cannot find the \"~/" APPDIR "\" directory" ); - d = QDir::home(); - d.mkdir(APPDIR); - d.cd(APPDIR); - } - if ( !d.cd(tgtdir) ) { // "/tmp" - qWarning( "Cannot find the \"~/" APPDIR "/%s\" directory", tgtdir ); - d = QDir::home(); - d.mkdir(tgtdir); - d.cd(tgtdir); - } - d.setFilter( QDir::Files | QDir::NoSymLinks ); -// d.setSorting( QDir::Size | QDir::Reversed ); - - const QFileInfoList *list = d.entryInfoList(); - QFileInfoListIterator it( *list ); // create list iterator - QFileInfo *fi; // pointer for traversing - - while ( (fi=it.current()) ) { // for each file... - - bkmkselector->insertItem(fi->fileName()); - cnt++; - - //qDebug( "%10li %s", fi->size(), fi->fileName().data() ); - ++it; // goto next list element - } - -#else /* USEQPE */ - int cnt = 0; - DIR *d; - char* finaldir; - finaldir = new char[strlen(APPDIR)+1+strlen(tgtdir)+1]; - strcpy(finaldir, APPDIR); - strcat(finaldir, "/"); - strcat(finaldir, tgtdir); - d = opendir((const char *)Global::applicationFileName(finaldir,"")); - - while(1) - { - struct dirent* de; - struct stat buf; - de = readdir(d); - if (de == NULL) break; - - if (lstat((const char *)Global::applicationFileName(finaldir,de->d_name),&buf) == 0 && S_ISREG(buf.st_mode)) - { - bkmkselector->insertItem(de->d_name); - cnt++; - } - } - delete [] finaldir; - closedir(d); -#endif - return (cnt > 0); -} - -void QTReaderApp::LoadConfig() -{ - if (PopulateConfig("configs")) - { - editorStack->raiseWidget( bkmkselector ); - hidetoolbars(); - m_nBkmkAction = cLdConfig; - } - else - QMessageBox::information(this, PROGNAME, "No config files"); -} - -void QTReaderApp::TidyConfig() -{ - if (PopulateConfig("configs")) - { - editorStack->raiseWidget( bkmkselector ); - hidetoolbars(); - m_nBkmkAction = cRmConfig; - } - else - QMessageBox::information(this, PROGNAME, "No config files"); -} - -void QTReaderApp::ExportLinks() -{ - if (PopulateConfig("urls")) - { - editorStack->raiseWidget( bkmkselector ); - hidetoolbars(); - m_nBkmkAction = cExportLinks; - } - else - QMessageBox::information(this, PROGNAME, "No url files"); -} - -void QTReaderApp::OnURLSelected(const QString& href) -{ - CURLDialog* urld = new CURLDialog(href, false, this); - urld->clipboard(m_url_clipboard); - urld->localfile(m_url_localfile); - urld->globalfile(m_url_globalfile); - if (urld->exec()) - { - m_url_clipboard = urld->clipboard(); - m_url_localfile = urld->localfile(); - m_url_globalfile = urld->globalfile(); - if (m_url_clipboard) - { - QClipboard* cb = QApplication::clipboard(); - cb->setText(href); - qDebug("%s", (const char*)href, (const char*)href); - } - if (m_url_localfile) - { - writeUrl(reader->m_string, href); - } - if (m_url_globalfile) - { - writeUrl("GlobalURLFile", href); - } - } - delete urld; -} - -void QTReaderApp::writeUrl(const QString& file, const QString& href) -{ - QString filename; -#ifdef USEQPE - filename = Global::applicationFileName(APPDIR "/urls", file); -#else - QFileInfo fi; - QDir d = QDir::home(); // "/" - if ( !d.cd(APPDIR) ) - { // "/tmp" - qWarning( "Cannot find the \"~/" APPDIR "\" directory" ); - d = QDir::home(); - d.mkdir(APPDIR); - d.cd(APPDIR); - } - if ( !d.cd("urls") ) - { // "/tmp" - qWarning( "Cannot find the \"~/" APPDIR "/urls\" directory" ); - d = QDir::home(); - d.cd(APPDIR); - d.mkdir("urls"); - d.cd("urls"); - } - fi.setFile(d, file); - filename = fi.absFilePath(); -#endif - FILE* fout = fopen(filename, "a"); - if (fout != NULL) - { - fprintf(fout, "

%s\n", (const char*)href, (const char*)href); - fclose(fout); - } - else - { - QMessageBox::warning(this, PROGNAME, "Problem with writing URL"); - } -} +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. Allrights reserved. +** +** This file is part of Qt Palmtop Environment. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ +#include "useqpe.h" +#include +#include +#include +#ifdef USEQPE +#include +#include +#endif +#include +#include +#ifdef USEQPE +#include +#include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#ifdef USEQPE +#include +#include +#endif +#include +#include //getenv +#include +#ifdef USEQPE +#include +#endif +#include +#include +#ifdef USEQPE +#include +#endif +#include "QTReader.h" +#include "GraphicWin.h" +#include "Bkmks.h" +#include "cbkmkselector.h" +#include "infowin.h" +#include "ToolbarPrefs.h" +#include "Prefs.h" +#include "CAnnoEdit.h" +#include "QFloatBar.h" +#include "FixedFont.h" +#include "URLDialog.h" +//#include + +#ifdef USEQPE +#include +#include +#include "fileBrowser.h" +#else +#include "qfiledialog.h" +#endif + +#include "QTReaderApp.h" +#include "CDrawBuffer.h" +#include "Filedata.h" +#include "opie.h" +#include "useqpe.h" +#include "names.h" +#include "CEncoding_tables.h" +#include "CloseDialog.h" + +bool CheckVersion(int&, int&, char&); + +#ifdef _WINDOWS +#define PICDIR "c:\\uqtreader\\pics\\" +#else +#ifdef USEQPE +#define PICDIR "opie-reader/" +#else +#define PICDIR "/home/tim/uqtreader/pics/" +#endif +#endif + +unsigned long QTReaderApp::m_uid = 0; + +void QTReaderApp::setScrollState(bool _b) { m_scrollButton->setOn(_b); } + +#ifdef USEQPE +#define geticon(iconname) Resource::loadPixmap( iconname ) +#define getmyicon(iconname) Resource::loadPixmap( PICDIR iconname ) +#else +#define geticon(iconname) QPixmap(PICDIR iconname ".png") +#define getmyicon(iconname) geticon(iconname) +//#define geticon(iconname) QIconSet( QPixmap(PICDIR iconname) ) +#endif + +#ifndef _WINDOWS +#include +#endif +#include +#ifndef _WINDOWS +#include +#endif + +void QTReaderApp::listBkmkFiles() +{ + bkmkselector->clear(); + bkmkselector->setText("Cancel"); +#ifndef USEQPE + int cnt = 0; + + QDir d = QDir::home(); // "/" + if ( !d.cd(APPDIR) ) { // "/tmp" + qWarning( "Cannot find the \"~/" APPDIR "\" directory" ); + d = QDir::home(); + d.mkdir(APPDIR); + d.cd(APPDIR); + } + + + + + d.setFilter( QDir::Files | QDir::NoSymLinks ); +// d.setSorting( QDir::Size | QDir::Reversed ); + + const QFileInfoList *list = d.entryInfoList(); + QFileInfoListIterator it( *list ); // create list iterator + QFileInfo *fi; // pointer for traversing + + while ( (fi=it.current()) ) { // for each file... + + bkmkselector->insertItem(fi->fileName()); + cnt++; + + //qDebug( "%10li %s", fi->size(), fi->fileName().data() ); + ++it; // goto next list element + } + +#else /* USEQPE */ + int cnt = 0; + DIR *d; + d = opendir((const char *)Global::applicationFileName(APPDIR,"")); + + while(1) + { + struct dirent* de; + struct stat buf; + de = readdir(d); + if (de == NULL) break; + + if (lstat((const char *)Global::applicationFileName(APPDIR,de->d_name),&buf) == 0 && S_ISREG(buf.st_mode)) + { + bkmkselector->insertItem(de->d_name); + cnt++; + } + } + + closedir(d); +#endif + if (cnt > 0) + { +//tjw menu->hide(); + editorStack->raiseWidget( bkmkselector ); + hidetoolbars(); + m_nBkmkAction = cRmBkmkFile; + } + else + QMessageBox::information(this, PROGNAME, "No bookmark files"); +} + +void QTReaderApp::hidetoolbars() +{ + menubar->hide(); + if (fileBar != NULL) fileBar->hide(); + if (viewBar != NULL) viewBar->hide(); + if (navBar != NULL) navBar->hide(); + if (markBar != NULL) markBar->hide(); + if (m_fontVisible) m_fontBar->hide(); + if (regVisible) + { +#ifdef USEQPE + Global::hideInputMethod(); +#endif + regBar->hide(); + } + if (searchVisible) + { +#ifdef USEQPE + Global::hideInputMethod(); +#endif + searchBar->hide(); + } +} + +QTReaderApp::QTReaderApp( QWidget *parent, const char *name, WFlags f ) + : QMainWindow( parent, name, f ), bFromDocView( FALSE ), m_dontSave(false), + fileBar(NULL), navBar(NULL), viewBar(NULL), markBar(NULL) +{ + m_url_clipboard = false; + m_url_localfile = false; + m_url_globalfile = false; + ftime(&m_lastkeytime); +//// qDebug("Application directory = %s", (const tchar *)QPEApplication::documentDir()); +//// qDebug("Application directory = %s", (const tchar *)Global::applicationFileName("uqtreader","bkmks.xml")); + + m_bcloseDisabled = true; + m_disableesckey = false; + pBkmklist = NULL; + pOpenlist = NULL; +// doc = 0; + + m_fBkmksChanged = false; + + QString lang = getenv( "LANG" ); + QString rot = getenv( "QWS_DISPLAY" ); + +/* + int m_rot = 0; + if (rot.contains("Rot90")) + { + m_rot = 90; + } + else if (rot.contains("Rot180")) + { + m_rot = 180; + } + else if (rot.contains("Rot270")) + { + m_rot = 270; + } + +// qDebug("Initial Rotation(%d):%s", m_rot, (const char*)rot); +*/ + m_autogenstr = "^ *[A-Z].*[a-z] *$"; + +#ifdef USEQPE + setIcon( Resource::loadPixmap( PICDIR "uqtreader") ); +#else + setIcon( QPixmap (PICDIR "uqtreader.png") ); +#endif /* USEQPE */ + +// QToolBar *bar = new QToolBar( this ); +// menubar = new QToolBar( this ); +#ifdef USEQPE + Config config( APPDIR ); +#else + QDir d = QDir::home(); // "/" + if ( !d.cd(APPDIR) ) { // "/tmp" + qWarning( "Cannot find the \"~/" APPDIR "\" directory" ); + d = QDir::home(); + d.mkdir(APPDIR); + d.cd(APPDIR); + } + QFileInfo fi(d, INIFILE); +// qDebug("Path:%s", (const char*)fi.absFilePath()); + Config config(fi.absFilePath()); +#endif + config.setGroup("Toolbar"); + m_tbmovesave = m_tbmove = config.readBoolEntry("Movable", false); + m_tbpolsave = m_tbpol = (ToolbarPolicy)config.readNumEntry("Policy", 1); + m_tbposition = (ToolBarDock)config.readNumEntry("Position", 2); + menubar = new QToolBar("Menus", this, m_tbposition); + +// fileBar = new QToolBar("File", this); +// QToolBar* viewBar = new QToolBar("File", this); +// QToolBar* navBar = new QToolBar("File", this); +// QToolBar* markBar = new QToolBar("File", this); + +#ifdef USEQPE + mb = new QMenuBar( menubar ); +#else + mb = new QMenuBar( menubar ); +#endif + +//#ifdef USEQPE + QPopupMenu* tmp = new QPopupMenu(mb); + mb->insertItem( geticon( "AppsIcon" ), tmp ); +//#else +// QMenuBar* tmp = mb; +//#endif + + QPopupMenu *file = new QPopupMenu( mb ); + tmp->insertItem( tr( "File" ), file ); + + QPopupMenu *navigation = new QPopupMenu(mb); + tmp->insertItem( tr( "Navigation" ), navigation ); + + QPopupMenu *view = new QPopupMenu( mb ); + tmp->insertItem( tr( "View" ), view ); + + QPopupMenu *marks = new QPopupMenu( this ); + tmp->insertItem( tr( "Marks" ), marks ); + + QPopupMenu *settings = new QPopupMenu( this ); + tmp->insertItem( tr( "Settings" ), settings ); + +// addToolBar(menubar, "Menus",QMainWindow::Top); +// addToolBar(fileBar, "Toolbar",QMainWindow::Top); + + // QPopupMenu *edit = new QPopupMenu( this ); + + /* + QAction *a = new QAction( tr( "New" ), Resource::loadPixmap( "new" ), QString::null, 0, this, 0 ); + connect( a, SIGNAL( activated() ), this, SLOT( fileNew() ) ); + a->addTo( bar ); + a->addTo( file ); + */ + + editorStack = new QWidgetStack( this ); + setCentralWidget( editorStack ); + + searchVisible = FALSE; + regVisible = FALSE; + m_fontVisible = false; + + m_annoWin = new CAnnoEdit(editorStack); + editorStack->addWidget(m_annoWin, get_unique_id()); + connect( m_annoWin, SIGNAL( finished(const QString&, const QString&) ), this, SLOT( addAnno(const QString&, const QString&) ) ); + connect( m_annoWin, SIGNAL( cancelled() ), this, SLOT( infoClose() ) ); + + m_infoWin = new infowin(editorStack); + editorStack->addWidget(m_infoWin, get_unique_id()); + connect( m_infoWin, SIGNAL( Close() ), this, SLOT( infoClose() ) ); + + m_graphicwin = new GraphicWin(editorStack); + editorStack->addWidget(m_graphicwin, get_unique_id()); + connect( m_graphicwin, SIGNAL( Closed() ), this, SLOT( infoClose() ) ); + +// bkmkselector = new QListBox(editorStack, "Bookmarks"); + bkmkselector = new CBkmkSelector(editorStack, "Bookmarks"); + // connect(bkmkselector, SIGNAL( selected(const QString&) ), this, SLOT( gotobkmk(const QString&) ) ); + connect(bkmkselector, SIGNAL( selected(int) ), this, SLOT( gotobkmk(int) ) ); + connect(bkmkselector, SIGNAL( cancelled() ), this, SLOT( cancelbkmk() ) ); + editorStack->addWidget( bkmkselector, get_unique_id() ); + +/* + importSelector = new FileSelector( "*", editorStack, "importselector", false ); + connect( importSelector, SIGNAL( fileSelected( const DocLnk &) ), this, SLOT( importFile( const DocLnk & ) ) ); + + editorStack->addWidget( importSelector, get_unique_id() ); + + // don't need the close visible, it is redundant... + importSelector->setCloseVisible( FALSE ); +*/ +// qDebug("Reading file list"); + readfilelist(); + + reader = new QTReader( editorStack ); + + reader->bDoUpdates = false; + +#ifdef USEQPE + ((QPEApplication*)qApp)->setStylusOperation(reader, QPEApplication::RightOnHold); +#endif + +// qDebug("Reading config"); +// Config config( APPDIR ); + config.setGroup( "View" ); + m_debounce = config.readNumEntry("Debounce", 0); +#ifdef USEQPE + m_bFloatingDialog = config.readBoolEntry("FloatDialogs", false); +#else + m_bFloatingDialog = config.readBoolEntry("FloatDialogs", true); +#endif + reader->bstripcr = config.readBoolEntry( "StripCr", true ); + reader->bfulljust = config.readBoolEntry( "FullJust", false ); + reader->setextraspace(config.readNumEntry( "ExtraSpace", 0 )); + reader->setlead(config.readNumEntry( "ExtraLead", 0 )); + reader->btextfmt = config.readBoolEntry( "TextFmt", false ); + reader->bautofmt = config.readBoolEntry( "AutoFmt", true ); + reader->bstriphtml = config.readBoolEntry( "StripHtml", false ); + reader->bpeanut = config.readBoolEntry( "Peanut", false ); + reader->bdehyphen = config.readBoolEntry( "Dehyphen", false ); + reader->bdepluck = config.readBoolEntry( "Depluck", false ); + reader->bdejpluck = config.readBoolEntry( "Dejpluck", false ); + reader->bonespace = config.readBoolEntry( "OneSpace", false ); + reader->bunindent = config.readBoolEntry( "Unindent", false ); + reader->brepara = config.readBoolEntry( "Repara", false ); + reader->bdblspce = config.readBoolEntry( "DoubleSpace", false ); + reader->bindenter = config.readNumEntry( "Indent", 0 ); + reader->m_textsize = config.readNumEntry( "FontSize", 12 ); + reader->m_delay = config.readNumEntry( "ScrollDelay", 5184); + reader->m_lastfile = config.readEntry( "LastFile", QString::null ); + reader->m_lastposn = config.readNumEntry( "LastPosn", 0 ); + reader->m_bpagemode = config.readBoolEntry( "PageMode", true ); + reader->m_bMonoSpaced = config.readBoolEntry( "MonoSpaced", false); + reader->m_swapmouse = config.readBoolEntry( "SwapMouse", false); + reader->m_fontname = config.readEntry( "Fontname", "helvetica" ); + reader->m_encd = config.readNumEntry( "Encoding", 0 ); + reader->m_charpc = config.readNumEntry( "CharSpacing", 100 ); + reader->m_overlap = config.readNumEntry( "Overlap", 0 ); + reader->m_border = config.readNumEntry( "Margin", 6 ); +#ifdef REPALM + reader->brepalm = config.readBoolEntry( "Repalm", true ); +#endif + reader->bremap = config.readBoolEntry( "Remap", true ); + reader->bmakebold = config.readBoolEntry( "MakeBold", false ); + reader->setContinuous(config.readBoolEntry( "Continuous", true )); + m_targetapp = config.readEntry( "TargetApp", QString::null ); + m_targetmsg = config.readEntry( "TargetMsg", QString::null ); +#ifdef _SCROLLPIPE + reader->m_pipetarget = config.readEntry( "PipeTarget", QString::null ); + reader->m_pauseAfterEachPara = config.readBoolEntry( "PauseAfterPara", true ); +#endif + m_twoTouch = config.readBoolEntry( "TwoTouch", false); + m_doAnnotation = config.readBoolEntry( "Annotation", false); + m_doDictionary = config.readBoolEntry( "Dictionary", false); + m_doClipboard = config.readBoolEntry( "Clipboard", false); + m_spaceTarget = (ActionTypes)config.readNumEntry("SpaceTarget", cesAutoScroll); + m_escapeTarget = (ActionTypes)config.readNumEntry("EscapeTarget", cesNone); + m_returnTarget = (ActionTypes)config.readNumEntry("ReturnTarget", cesFullScreen); + m_leftTarget = (ActionTypes)config.readNumEntry("LeftTarget", cesZoomOut); + m_rightTarget = (ActionTypes)config.readNumEntry("RightTarget", cesZoomIn); + m_upTarget = (ActionTypes)config.readNumEntry("UpTarget", cesPageUp); + m_downTarget = (ActionTypes)config.readNumEntry("DownTarget", cesPageDown); + + m_leftScroll = config.readBoolEntry("LeftScroll", false); + m_rightScroll = config.readBoolEntry("RightScroll", false); + m_upScroll = config.readBoolEntry("UpScroll", true); + m_downScroll = config.readBoolEntry("DownScroll", true); + + m_propogatefontchange = config.readBoolEntry( "RequestorFontChange", false); + reader->setBaseSize(config.readNumEntry( "Basesize", 10 )); + +#ifndef USEQPE + config.setGroup( "Geometry" ); + setGeometry(0,0, + config.readNumEntry( "width", QApplication::desktop()->width()/2 ), + config.readNumEntry( "height", QApplication::desktop()->height()/2 )); + move( + config.readNumEntry( "x", 20 ), + config.readNumEntry( "y", 20 )); +#endif + + + + setTwoTouch(m_twoTouch); + + connect( reader, SIGNAL( OnShowPicture(QImage&) ), this, SLOT( showgraphic(QImage&) ) ); + + connect( reader, SIGNAL( OnRedraw() ), this, SLOT( OnRedraw() ) ); + connect( reader, SIGNAL( OnWordSelected(const QString&, size_t, const QString&) ), this, SLOT( OnWordSelected(const QString&, size_t, const QString&) ) ); + connect( reader, SIGNAL( OnURLSelected(const QString&) ), this, SLOT( OnURLSelected(const QString&) ) ); + editorStack->addWidget( reader, get_unique_id() ); + + m_preferences_action = new QAction( tr( "Configuration" ), geticon( "SettingsIcon" ), QString::null, 0, this, NULL); + connect( m_preferences_action, SIGNAL( activated() ), this, SLOT( showprefs() ) ); + m_preferences_action->addTo( settings ); + + m_saveconfig_action = new QAction( tr( "Save Config" ), QString::null, 0, this, NULL); + connect( m_saveconfig_action, SIGNAL( activated() ), this, SLOT( SaveConfig() ) ); + m_saveconfig_action->addTo( settings ); + + m_loadconfig_action = new QAction( tr( "Load Config" ), QString::null, 0, this, NULL); + connect( m_loadconfig_action, SIGNAL( activated() ), this, SLOT( LoadConfig() ) ); + m_loadconfig_action->addTo( settings ); + + m_tidyconfig_action = new QAction( tr( "Delete Config" ), QString::null, 0, this, NULL); + connect( m_tidyconfig_action, SIGNAL( activated() ), this, SLOT( TidyConfig() ) ); + m_tidyconfig_action->addTo( settings ); + + settings->insertSeparator(); + m_toolbarprefs_action = new QAction( tr( "Toolbars" ), QString::null, 0, this, NULL); + connect( m_toolbarprefs_action, SIGNAL( activated() ), this, SLOT( showtoolbarprefs() ) ); + m_toolbarprefs_action->addTo( settings ); + + m_open_action = new QAction( tr( "Open" ), geticon( "fileopen" ), QString::null, 0, this, 0 ); + connect( m_open_action, SIGNAL( activated() ), this, SLOT( fileOpen() ) ); + m_open_action->addTo( file ); + + m_close_action = new QAction( tr( "Close" ), geticon( "close" ), QString::null, 0, this, 0 ); + connect( m_close_action, SIGNAL( activated() ), this, SLOT( fileClose() ) ); + m_close_action->addTo( file ); + +#ifdef _SCRIPT + a = new QAction( tr( "Run Script" ), QString::null, 0, this, NULL); + connect( a, SIGNAL( activated() ), this, SLOT( RunScript() ) ); + a->addTo( file ); +#endif + /* + a = new QAction( tr( "Revert" ), geticon( "close" ), QString::null, 0, this, 0 ); + connect( a, SIGNAL( activated() ), this, SLOT( fileRevert() ) ); + a->addTo( file ); + + a = new QAction( tr( "Cut" ), geticon( "cut" ), QString::null, 0, this, 0 ); + connect( a, SIGNAL( activated() ), this, SLOT( editCut() ) ); + a->addTo( filebar() ); + a->addTo( edit ); + */ + + m_info_action = new QAction( tr( "Info" ), geticon( "UtilsIcon" ), QString::null, 0, this, NULL); + connect( m_info_action, SIGNAL( activated() ), this, SLOT( showinfo() ) ); + m_info_action->addTo( file ); + + m_touch_action = new QAction( tr( "Two/One Touch" ), geticon( "1to1" ), QString::null, 0, this, NULL, true ); + connect( m_touch_action, SIGNAL( toggled(bool) ), this, SLOT( setTwoTouch(bool) ) ); + m_touch_action->setOn(m_twoTouch); + m_touch_action->addTo( file ); + + m_find_action = new QAction( tr( "Find..." ), geticon( "find" ), QString::null, 0, this, NULL); + connect( m_find_action, SIGNAL( activated() ), this, SLOT( editFind() ) ); + file->insertSeparator(); +// a->addTo( bar ); + m_find_action->addTo( file ); + + m_exportlinks_action = new QAction( tr( "Export Links" ), QString::null, 0, this, NULL); + connect( m_exportlinks_action, SIGNAL( activated() ), this, SLOT( ExportLinks() ) ); + m_exportlinks_action->addTo( file ); + + m_scrollButton = new QAction( tr( "Scroll" ), getmyicon( "panel-arrow-down" ), QString::null, 0, this, 0, true ); + connect( m_scrollButton, SIGNAL( toggled(bool) ), this, SLOT( autoScroll(bool) ) ); + m_scrollButton->addTo(navigation); + m_scrollButton->setOn(false); + + m_start_action = new QAction( tr( "Goto Start" ), geticon( "start" ), QString::null, 0, this, NULL); + connect( m_start_action, SIGNAL( activated() ), this, SLOT( gotoStart() ) ); + m_start_action->addTo(navigation); + + m_end_action = new QAction( tr( "Goto End" ), geticon( "finish" ), QString::null, 0, this, NULL); + connect( m_end_action, SIGNAL( activated() ), this, SLOT( gotoEnd() ) ); + m_end_action->addTo(navigation); + + m_jump_action = new QAction( tr( "Jump" ), geticon( "rotate" ), QString::null, 0, this, NULL); + connect( m_jump_action, SIGNAL( activated() ), this, SLOT( jump() ) ); + m_jump_action->addTo(navigation); + + m_pageline_action = new QAction( tr( "Page/Line Scroll" ), geticon( "pass" ), QString::null, 0, this, NULL, true ); + connect( m_pageline_action, SIGNAL( toggled(bool) ), this, SLOT( pagemode(bool) ) ); + m_pageline_action->addTo(navigation); + m_pageline_action->setOn(reader->m_bpagemode); + + m_pageup_action = new QAction( tr( "Up" ), geticon( "up" ), QString::null, 0, this, 0 ); + connect( m_pageup_action, SIGNAL( activated() ), this, SLOT( pageup() ) ); + m_pageup_action->addTo( navigation ); + + m_pagedn_action = new QAction( tr( "Down" ), geticon( "down" ), QString::null, 0, this, 0 ); + connect( m_pagedn_action, SIGNAL( activated() ), this, SLOT( pagedn() ) ); + m_pagedn_action->addTo( navigation ); + + m_back_action = new QAction( tr( "Back" ), geticon( "back" ), QString::null, 0, this, 0 ); + connect( m_back_action, SIGNAL( activated() ), reader, SLOT( goBack() ) ); + m_back_action->addTo( navigation ); + + m_home_action = new QAction( tr( "Home" ), geticon( "home" ), QString::null, 0, this, 0 ); + connect( m_home_action, SIGNAL( activated() ), reader, SLOT( goHome() ) ); + m_home_action->addTo( navigation ); + + m_forward_action = new QAction( tr( "Forward" ), geticon( "forward" ), QString::null, 0, this, 0 ); + connect( m_forward_action, SIGNAL( activated() ), reader, SLOT( goForward() ) ); + m_forward_action->addTo( navigation ); + + /* + a = new QAction( tr( "Find" ), QString::null, 0, this, NULL, true ); + // connect( a, SIGNAL( activated() ), this, SLOT( pagedn() ) ); + a->addTo( file ); + + a = new QAction( tr( "Find Again" ), QString::null, 0, this, NULL, true ); + // connect( a, SIGNAL( activated() ), this, SLOT( pagedn() ) ); + a->addTo( file ); + */ + +// file->insertSeparator(); + +#ifdef _SCROLLPIPE + + QActionGroup* ag = new QActionGroup(this); + ag->setExclusive(false); + spacemenu = new QPopupMenu(this); + file->insertItem( tr( "Scrolling" ), spacemenu ); + + a = new QAction( tr( "Set Target" ), QString::null, 0, ag, NULL); + connect( a, SIGNAL( activated() ), this, SLOT( setpipetarget() ) ); + + a = new QAction( tr( "Pause Paras" ), QString::null, 0, ag, NULL, true ); + connect( a, SIGNAL( toggled(bool) ), this, SLOT( setpause(bool) ) ); + a->setOn(reader->m_pauseAfterEachPara); + + ag->addTo(spacemenu); +// file->insertSeparator(); + +#endif + +/* + a = new QAction( tr( "Import" ), QString::null, 0, this, NULL ); + connect( a, SIGNAL( activated() ), this, SLOT( importFiles() ) ); + a->addTo( file ); +*/ + + /* + a = new QAction( tr( "Paste" ), geticon( "paste" ), QString::null, 0, this, 0 ); + connect( a, SIGNAL( activated() ), this, SLOT( editPaste() ) ); + a->addTo( fileBar ); + a->addTo( edit ); + */ + +// a = new QAction( tr( "Find..." ), geticon( "find" ), QString::null, 0, this, 0 ); + + m_fullscreen = false; + m_actFullscreen = new QAction( tr( "Fullscreen" ), geticon( "fullscreen" ), QString::null, 0, this, NULL, true ); + connect( m_actFullscreen, SIGNAL( toggled(bool) ), this, SLOT( setfullscreen(bool) ) ); + m_actFullscreen->setOn(m_fullscreen); + m_actFullscreen->addTo( view ); + + view->insertSeparator(); + + m_zoomin_action = new QAction( tr( "Zoom In" ), geticon( "zoom" ), QString::null, 0, this); + connect( m_zoomin_action, SIGNAL( activated() ), this, SLOT( zoomin() ) ); + m_zoomin_action->addTo( view ); + + m_zoomout_action = new QAction( tr( "Zoom Out" ), geticon( "mag" ), QString::null, 0, this); + connect( m_zoomout_action, SIGNAL( activated() ), this, SLOT( zoomout() ) ); + m_zoomout_action->addTo( view ); + + view->insertSeparator(); + m_setfont_action = new QAction( tr( "Set Font" ), getmyicon( "font" ), QString::null, 0, this); + connect( m_setfont_action, SIGNAL( activated() ), this, SLOT( setfont() ) ); + m_setfont_action->addTo( view ); + + view->insertSeparator(); + m_setenc_action = new QAction( tr( "Set Encoding" ), getmyicon( "charset" ), QString::null, 0, this); + connect( m_setenc_action, SIGNAL( activated() ), this, SLOT( chooseencoding() ) ); + m_setenc_action->addTo( view ); + + m_setmono_action = new QAction( tr( "Ideogram" ), getmyicon( "ideogram" ), QString::null, 0, this, NULL, true); + connect( m_setmono_action, SIGNAL( toggled(bool) ), this, SLOT( monospace(bool) ) ); + m_setmono_action->addTo( view ); + m_setmono_action->setOn(reader->m_bMonoSpaced); + + + // a = new QAction( tr( "Zoom" ), QString::null, 0, this, NULL, true ); + // a = new QAction( tr( "Zoom" ), geticon( "mag" ), QString::null, 0, this, 0 ); + + + + // a->addTo( filebar() ); +// view->insertSeparator(); + +/* + a = new QAction( tr( "Ideogram/Word" ), QString::null, 0, this, NULL, true ); + connect( a, SIGNAL( toggled(bool) ), this, SLOT( monospace(bool) ) ); + a->setOn(reader->m_bMonoSpaced); + a->addTo( view ); +*/ +/* + a = new QAction( tr( "Set Width" ), QString::null, 0, this, NULL); + connect( a, SIGNAL( activated() ), this, SLOT( setspacing() ) ); + a->addTo( view ); +*/ + + m_mark_action = new QAction( tr( "Bookmark" ), getmyicon( "bookmark" ), QString::null, 0, this, NULL); + connect( m_mark_action, SIGNAL( activated() ), this, SLOT( addbkmk() ) ); + m_mark_action->addTo( marks ); + + m_annotate_action = new QAction( tr( "Annotate" ), getmyicon( "annotate" ), QString::null, 0, this, NULL); + connect( m_annotate_action, SIGNAL( activated() ), this, SLOT( addanno() ) ); + m_annotate_action->addTo( marks ); + + m_goto_action = new QAction( tr( "Goto" ), getmyicon( "bookmark_goto" ), QString::null, 0, this, NULL, false ); + connect( m_goto_action, SIGNAL( activated() ), this, SLOT( do_gotomark() ) ); + m_goto_action->addTo( marks ); + + m_delete_action = new QAction( tr( "Delete" ), getmyicon( "bookmark_delete" ), QString::null, 0, this, NULL); + connect( m_delete_action, SIGNAL( activated() ), this, SLOT( do_delmark() ) ); + m_delete_action->addTo( marks ); + + m_autogen_action = new QAction( tr( "Autogen" ), geticon( "exec" ), QString::null, 0, this, NULL, false ); + connect( m_autogen_action, SIGNAL( activated() ), this, SLOT( do_autogen() ) ); + marks->insertSeparator(); + m_autogen_action->addTo( marks ); + + m_clear_action = new QAction( tr( "Clear" ), getmyicon( "bookmark_clear" ), QString::null, 0, this, NULL); + connect( m_clear_action, SIGNAL( activated() ), this, SLOT( clearBkmkList() ) ); + m_clear_action->addTo( marks ); + + m_save_action = new QAction( tr( "Save" ), getmyicon( "bookmark_save" ), QString::null, 0, this, NULL ); + connect( m_save_action, SIGNAL( activated() ), this, SLOT( savebkmks() ) ); + m_save_action->addTo( marks ); + + m_tidy_action = new QAction( tr( "Tidy" ), getmyicon( "bookmark_tidy" ), QString::null, 0, this, NULL); + connect( m_tidy_action, SIGNAL( activated() ), this, SLOT( listBkmkFiles() ) ); + marks->insertSeparator(); + m_tidy_action->addTo( marks ); + + m_startBlock_action = new QAction( tr( "Start Block" ), geticon( "new" ), QString::null, 0, this, NULL); + connect( m_startBlock_action, SIGNAL( activated() ), this, SLOT( editMark() ) ); + marks->insertSeparator(); + m_startBlock_action->addTo( marks ); + + m_endBlock_action = new QAction( tr( "Copy Block" ), geticon( "copy" ), QString::null, 0, this, NULL); + connect( m_endBlock_action, SIGNAL( activated() ), this, SLOT( editCopy() ) ); + m_endBlock_action->addTo( marks ); + + m_bkmkAvail = NULL; + + + setToolBarsMovable(m_tbmove); + addtoolbars(&config); + + pbar = new QProgressBar(this); + pbar->hide(); + + searchBar = new QFloatBar( "Search", this, QMainWindow::Top, TRUE ); + + searchBar->setHorizontalStretchable( TRUE ); + + connect(searchBar, SIGNAL( OnHide() ), this, SLOT( restoreFocus() )); + + searchEdit = new QLineEdit( searchBar, "searchEdit" ); +// QFont f("unifont", 16 /*, QFont::Bold*/); +// searchEdit->setFont( f ); + searchBar->setStretchableWidget( searchEdit ); + + +#ifdef __ISEARCH + connect( searchEdit, SIGNAL( textChanged( const QString & ) ), + this, SLOT( search( const QString& ) ) ); +#else + connect( searchEdit, SIGNAL( returnPressed( ) ), + this, SLOT( search( ) ) ); +#endif + QAction*a = new QAction( tr( "Find Next" ), geticon( "next" ), QString::null, 0, this, 0 ); + connect( a, SIGNAL( activated() ), this, SLOT( findNext() ) ); + a->addTo( searchBar ); + + a = new QAction( tr( "Close Find" ), geticon( "close" ), QString::null, 0, this, 0 ); + connect( a, SIGNAL( activated() ), this, SLOT( findClose() ) ); + a->addTo( searchBar ); + + searchBar->hide(); + + regBar = new QFloatBar( "Autogen", this, QMainWindow::Top, TRUE ); + connect(regBar, SIGNAL( OnHide() ), this, SLOT( restoreFocus() )); + + regBar->setHorizontalStretchable( TRUE ); + + regEdit = new QLineEdit( regBar, "regEdit" ); +// regEdit->setFont( f ); + + regBar->setStretchableWidget( regEdit ); + + connect( regEdit, SIGNAL( returnPressed( ) ), + this, SLOT( do_regaction() ) ); + + a = new QAction( tr( "Do Reg" ), geticon( "enter" ), QString::null, 0, this, 0 ); + connect( a, SIGNAL( activated() ), this, SLOT( do_regaction() ) ); + a->addTo( regBar ); + + a = new QAction( tr( "Close Edit" ), geticon( "close" ), QString::null, 0, this, 0 ); + connect( a, SIGNAL( activated() ), this, SLOT( regClose() ) ); + a->addTo( regBar ); + + regBar->hide(); + + m_fontBar = new QToolBar( "Autogen", this, QMainWindow::Top, TRUE ); + + m_fontBar->setHorizontalStretchable( TRUE ); + +// qDebug("Font selector"); + m_fontSelector = new QComboBox(false, m_fontBar); + m_fontBar->setStretchableWidget( m_fontSelector ); + { +#ifndef USEQPE + QFontDatabase f; +#else + FontDatabase f; +#endif + QStringList flist = f.families(); + bool realfont = false; + for (QStringList::Iterator nm = flist.begin(); nm != flist.end(); nm++) + { + if (reader->m_fontname == *nm) + { + realfont = true; + } + if ((*nm).contains(FIXEDFONT,false)) reader->m_fontControl.hasCourier(true, *nm); + } + if (!realfont) reader->m_fontname = flist[0]; + } // delete the FontDatabase!!! + connect( m_fontSelector, SIGNAL( activated(const QString& ) ), + this, SLOT( do_setfont(const QString&) ) ); + connect( m_fontSelector, SIGNAL( activated(int ) ), + this, SLOT( do_setencoding(int) ) ); + + m_fontBar->hide(); + m_fontVisible = false; +#ifdef USEMSGS + connect(qApp, SIGNAL( appMessage(const QCString&, const QByteArray& ) ), + this, SLOT( msgHandler(const QCString&, const QByteArray&) ) ); +#endif +// qDebug("Initing"); + reader->init(); +// qDebug("Inited"); +// m_buttonAction[m_spaceTarget]->setOn(true); +// qDebug("fonting"); + do_setfont(reader->m_fontname); + if (!reader->m_lastfile.isEmpty()) + { +// qDebug("doclnk"); +// doc = new DocLnk(reader->m_lastfile); +// qDebug("doclnk done"); + if (pOpenlist != NULL) + { + +/* + int ind = 0; + Bkmk* p = (*pOpenlist)[ind]; + while (p != NULL && toQString(CFiledata(p->anno()).name()) != reader->m_lastfile) + { + p = (*pOpenlist)[++ind]; + } +*/ + Bkmk* p = NULL; + for (CList::iterator iter = pOpenlist->begin(); iter != pOpenlist->end(); iter++) + { + p = iter.pContent(); + if (toQString(CFiledata(p->anno()).name()) == reader->m_lastfile) + { + break; + } +// qDebug("Item:%s", (const char*)toQString(CFiledata(p->anno()).name())); + p = NULL; + } + if (p != NULL) + { +// qDebug("openfrombkmk"); + if (!openfrombkmk(p)) + showEditTools(); + } + else + { +// qDebug("openfile"); + openFile( reader->m_lastfile ); + } + } + else + { +// qDebug("Openfile 2"); + if (!reader->m_lastfile.isEmpty()) + openFile( reader->m_lastfile ); + } + } + else + { + showEditTools(); + } +// qApp->processEvents(); + reader->bDoUpdates = true; + reader->update(); + config.setGroup("Version"); + int major = config.readNumEntry("Major", 0); + int bkmktype = config.readNumEntry("BkmkType", 0); + char minor = config.readNumEntry("Minor", 0); + if (CheckVersion(major, bkmktype, minor)) + { + config.writeEntry("Major", major); + config.writeEntry("BkmkType", bkmktype); + config.writeEntry("Minor", (int)minor); + } +// qDebug("finished update"); +} + +void QTReaderApp::addtoolbars(Config* config) +{ + config->setGroup("Toolbar"); + + if (fileBar != NULL) + { + if (fileBar != menubar) + { + fileBar->clear(); + } + else + { + m_preferences_action->removeFrom( filebar() ); + m_open_action->removeFrom( filebar() ); + m_close_action->removeFrom( filebar() ); + m_info_action->removeFrom( filebar() ); + m_touch_action->removeFrom( filebar() ); + m_find_action->removeFrom( filebar() ); + } + } + + m_preferences_action->addTo( filebar() ); + addfilebar(config, "Open", m_open_action); + addfilebar(config, "Close", m_close_action); + addfilebar(config, "Info", m_info_action); + addfilebar(config, "Two/One Touch", m_touch_action); + addfilebar(config, "Find", m_find_action); + + if (navBar != NULL) + { + if ((navBar == fileBar) && (fileBar == menubar)) + { + m_scrollButton->removeFrom( navbar() ); + m_start_action->removeFrom( navbar() ); + m_end_action->removeFrom( navbar() ); + m_jump_action->removeFrom( navbar() ); + m_pageline_action->removeFrom( navbar() ); + m_pageup_action->removeFrom( navbar() ); + m_pagedn_action->removeFrom( navbar() ); + m_back_action->removeFrom( navbar() ); + m_home_action->removeFrom( navbar() ); + m_forward_action->removeFrom( navbar() ); + } + else if (navBar != fileBar) + { + navBar->clear(); + } + } + + addnavbar(config, "Scroll", m_scrollButton); + addnavbar(config, "Goto Start", m_start_action); + addnavbar(config, "Goto End", m_end_action); + + addnavbar(config, "Jump", m_jump_action); + addnavbar(config, "Page/Line Scroll", m_pageline_action); + + addnavbar(config, "Page Up", m_pageup_action); + addnavbar(config, "Page Down", m_pagedn_action); + + addnavbar(config, "Back", m_back_action); + addnavbar(config, "Home", m_home_action); + addnavbar(config, "Forward", m_forward_action); + + if (viewBar != NULL) + { + if ((viewBar == fileBar) && (fileBar == menubar)) + { + m_actFullscreen->removeFrom( filebar() ); + m_zoomin_action->removeFrom( viewbar() ); + m_zoomout_action->removeFrom( viewbar() ); + m_setfont_action->removeFrom( viewbar() ); + m_setenc_action->removeFrom( viewbar() ); + m_setmono_action->removeFrom( viewbar() ); + } + else if (viewBar != fileBar) + { + viewBar->clear(); + } + } + + addviewbar(config, "Fullscreen", m_actFullscreen); + addviewbar(config, "Zoom In", m_zoomin_action); + addviewbar(config, "Zoom Out", m_zoomout_action); + addviewbar(config, "Set Font", m_setfont_action); + addviewbar(config, "Encoding Select", m_setenc_action); + addviewbar(config, "Ideogram Mode", m_setmono_action); + + if (markBar != NULL) + { + if ((markBar == fileBar) && (fileBar == menubar)) + { + m_mark_action->removeFrom( markbar() ); + m_annotate_action->removeFrom( markbar()); + m_goto_action->removeFrom( markbar() ); + m_delete_action->removeFrom( markbar() ); + m_autogen_action->removeFrom( markbar() ); + m_clear_action->removeFrom( markbar() ); + m_save_action->removeFrom( markbar() ); + m_tidy_action->removeFrom( markbar() ); + m_startBlock_action->removeFrom( markbar() ); + m_endBlock_action->removeFrom( markbar() ); + } + else if (markBar != fileBar) + { + markBar->clear(); + } + } + addmarkbar(config, "Mark", m_mark_action); + addmarkbar(config, "Annotate", m_annotate_action); + addmarkbar(config, "Goto", m_goto_action); + addmarkbar(config, "Delete", m_delete_action); + addmarkbar(config, "Autogen", m_autogen_action); + addmarkbar(config, "Clear", m_clear_action); + addmarkbar(config, "Save", m_save_action); + addmarkbar(config, "Tidy", m_tidy_action); + addmarkbar(config, "Start Block", m_startBlock_action); + addmarkbar(config, "Copy Block", m_endBlock_action); + if (checkbar(config, "Annotation indicator")) + { + if (m_bkmkAvail == NULL) + { + m_bkmkAvail = new QAction( tr( "Annotation" ), geticon( "find" ), QString::null, 0, this, 0 ); + connect( m_bkmkAvail, SIGNAL( activated() ), this, SLOT( showAnnotation() ) ); + + m_bkmkAvail->setEnabled(false); + } + QLabel *spacer = new QLabel(markBar, ""); + markbar()->setStretchableWidget(spacer); + m_bkmkAvail->removeFrom( markbar() ); + m_bkmkAvail->addTo( markbar() ); + } + else + { + if (m_bkmkAvail != NULL) + { + m_bkmkAvail->removeFrom( markbar() ); + delete m_bkmkAvail; + m_bkmkAvail = NULL; + } + } +} + +bool QTReaderApp::checkbar(Config* _config, const QString& key) +{ + return _config->readBoolEntry(key, false); +} + + +QToolBar* QTReaderApp::filebar() +{ + if (fileBar == NULL) + { + switch (m_tbpol) + { + case cesSingle: +// qDebug("Setting filebar to menubar"); + fileBar = menubar; + break; + default: + qDebug("Incorrect toolbar policy set"); + case cesMenuTool: + case cesMultiple: +// qDebug("Creating new file bar"); + fileBar = new QToolBar("File", this, m_tbposition); + break; + } +// fileBar->setHorizontalStretchable( true ); + } + return fileBar; +} +QToolBar* QTReaderApp::viewbar() +{ + if (viewBar == NULL) + { + switch (m_tbpol) + { + case cesMultiple: + viewBar = new QToolBar("View", this, m_tbposition); + break; + default: + qDebug("Incorrect toolbar policy set"); + case cesSingle: + case cesMenuTool: + viewBar = fileBar; + break; + } + } + return viewBar; +} +QToolBar* QTReaderApp::navbar() +{ + if (navBar == NULL) + { + switch (m_tbpol) + { + case cesMultiple: +// qDebug("Creating new nav bar"); + navBar = new QToolBar("Navigation", this, m_tbposition); + break; + default: + qDebug("Incorrect toolbar policy set"); + case cesSingle: + case cesMenuTool: + navBar = fileBar; +// qDebug("Setting navbar to filebar"); + break; + } + } + return navBar; +} +QToolBar* QTReaderApp::markbar() +{ + if (markBar == NULL) + { + switch (m_tbpol) + { + case cesMultiple: + markBar = new QToolBar("Marks", this, m_tbposition); + break; + default: + qDebug("Incorrect toolbar policy set"); + case cesSingle: + case cesMenuTool: + markBar = fileBar; + break; + } + } + return markBar; +} + +void QTReaderApp::addfilebar(Config* _config, const QString& key, QAction* a) +{ + if (_config->readBoolEntry(key, false)) a->addTo( filebar() ); +} +void QTReaderApp::addnavbar(Config* _config, const QString& key, QAction* a) +{ + if (_config->readBoolEntry(key, false)) a->addTo( navbar() ); +} +void QTReaderApp::addmarkbar(Config* _config, const QString& key, QAction* a) +{ + if (_config->readBoolEntry(key, false)) a->addTo( markbar() ); +} +void QTReaderApp::addviewbar(Config* _config, const QString& key, QAction* a) +{ + if (_config->readBoolEntry(key, false)) a->addTo( viewbar() ); +} + +void QTReaderApp::suspend() { reader->suspend(); } + +#ifdef USEMSGS +void QTReaderApp::msgHandler(const QCString& _msg, const QByteArray& _data) +{ + QString msg = QString::fromUtf8(_msg); + +//// qDebug("Received:%s", (const char*)msg); + + QDataStream stream( _data, IO_ReadOnly ); + if ( msg == "info(QString)" ) + { + QString info; + stream >> info; + QMessageBox::information(this, PROGNAME, info); + } + else if ( msg == "Update(int)" ) + { + int info; + stream >> info; + if (info) + { + reader->bDoUpdates = true; + reader->refresh(); + } + else + { + reader->bDoUpdates = false; + } + } + else if ( msg == "warn(QString)" ) + { + QString info; + stream >> info; + QMessageBox::warning(this, PROGNAME, info); + } + else if ( msg == "exit()" ) + { + m_dontSave = true; + close(); + } + else if ( msg == "pageDown()" ) + { + reader->dopagedn(); + } + else if ( msg == "pageUp()" ) + { + reader->dopageup(); + } + else if ( msg == "lineDown()" ) + { + reader->lineDown(); + } + else if ( msg == "lineUp()" ) + { + reader->lineUp(); + } + else if ( msg == "showText()" ) + { + showEditTools(); + } + else if ( msg == "home()" ) + { + reader->goHome(); + } + else if ( msg == "back()" ) + { + reader->goBack(); + } + else if ( msg == "forward()" ) + { + reader->goForward(); + } + else if ( msg == "File/Open(QString)" ) + { + QString info; + stream >> info; + openFile( info ); + } + else if ( msg == "File/Info()" ) + { + showinfo(); + } + else if ( msg == "File/Action(QString)" ) + { + QString info; + stream >> info; + m_spaceTarget = ActNameToInt(info); + } + else if ( msg == "Navigation/Scroll(int)" ) + { + int info; + stream >> info; + autoScroll(info); + } + + else if ( msg == "Navigation/GotoStart()" ) + { + gotoStart(); + } + else if ( msg == "Navigation/GotoEnd()" ) + { + gotoEnd(); + } + else if ( msg == "Navigation/Jump(int)" ) + { + int info; + stream >> info; + reader->locate(info); + } + else if ( msg == "Navigation/Page/LineScroll(int)" ) + { + int info; + stream >> info; + pagemode(info); + } + else if ( msg == "Navigation/SetOverlap(int)" ) + { + int info; + stream >> info; + reader->m_overlap = info; + } + else if ( msg == "Navigation/SetMargin(int)" ) + { + int info; + stream >> info; + do_margin(info); + } + else if ( msg == "File/SetDictionary(QString)" ) + { + QString info; + stream >> info; + do_settarget(info); + } +#ifdef _SCROLLPIPE + else if ( msg == "File/SetScrollTarget(QString)" ) + { + QString info; + stream >> info; + reader->m_pipetarget = info; + } +#endif + else if ( msg == "File/Two/OneTouch(int)" ) + { + int info; + stream >> info; + setTwoTouch(info); + } + else if ( msg == "Target/Annotation(int)" ) + { + int info; + stream >> info; + OnAnnotation(info); + } + else if ( msg == "Target/Dictionary(int)" ) + { + int info; + stream >> info; + OnDictionary(info); + } + else if ( msg == "Target/Clipboard(int)" ) + { + int info; + stream >> info; + OnClipboard(info); + } + else if ( msg == "File/Find(QString)" ) + { + QString info; + stream >> info; + QRegExp arg(info); + size_t pos = reader->pagelocate(); + size_t start = pos; + CDrawBuffer test(&(reader->m_fontControl)); + reader->getline(&test); + while (arg.match(toQString(test.data())) == -1) + { + pos = reader->locate(); + if (!reader->getline(&test)) + { + QMessageBox::information(this, PROGNAME, QString("Can't find\n")+info); + pos = start; + break; + } + } + reader->locate(pos); + } + else if ( msg == "File/Fullscreen(int)" ) + { + int info; + stream >> info; + setfullscreen(info); + } + else if ( msg == "File/Continuous(int)" ) + { + int info; + stream >> info; + setcontinuous(info); + } + else if ( msg == "Markup(QString)" ) + { + QString info; + stream >> info; + if (info == "Auto") + { + autofmt(true); + } + if (info == "None") + { + autofmt(false); + textfmt(false); + striphtml(false); + peanut(false); + } + if (info == "Text") + { + textfmt(true); + } + if (info == "HTML") + { + striphtml(true); + } + if (info == "Peanut/PML") + { + peanut(true); + } + } + else if ( msg == "Layout/StripCR(int)" ) + { + int info; + stream >> info; + stripcr(info); + } + else if ( msg == "Layout/Dehyphen(int)" ) + { + int info; + stream >> info; + dehyphen(info); + } + else if ( msg == "Layout/Depluck(int)" ) + { + int info; + stream >> info; + depluck(info); + } + else if ( msg == "Layout/Dejpluck(int)" ) + { + int info; + stream >> info; + dejpluck(info); + } + else if ( msg == "Layout/SingleSpace(int)" ) + { + int info; + stream >> info; + onespace(info); + } +#ifdef REPALM + else if ( msg == "Layout/Repalm(int)" ) + { + int info; + stream >> info; + repalm(info); + } +#endif + else if ( msg == "Layout/Unindent(int)" ) + { + int info; + stream >> info; + unindent(info); + } + else if ( msg == "Layout/Re-paragraph(int)" ) + { + int info; + stream >> info; + repara(info); + } + else if ( msg == "Layout/DoubleSpace(int)" ) + { + int info; + stream >> info; + dblspce(info); + } + else if ( msg == "Layout/Indent(int)" ) + { + int info; + stream >> info; + reader->bindenter = info; + reader->setfilter(reader->getfilter()); + } + else if ( msg == "Layout/Remap(int)" ) + { + int info; + stream >> info; + remap(info); + } + else if ( msg == "Layout/Embolden(int)" ) + { + int info; + stream >> info; + embolden(info); + } + else if ( msg == "Format/Ideogram/Word(int)" ) + { + int info; + stream >> info; + monospace(info); + } + else if ( msg == "Format/SetWidth(int)" ) + { + int info; + stream >> info; + reader->m_charpc = info; + reader->setfont(); + reader->refresh(); + } + else if ( msg == "Format/SetFont(QString,int)" ) + { + QString fontname; + int size; + stream >> fontname; + stream >> size; + setfontHelper(fontname, size); + } + else if ( msg == "Marks/Autogen(QString)" ) + { + QString info; + stream >> info; + do_autogen(info); + } + else if ( msg == "File/StartBlock()" ) + { + editMark(); + } + else if ( msg == "File/CopyBlock()" ) + { + editCopy(); + } +} +#endif +ActionTypes QTReaderApp::ActNameToInt(const QString& _enc) +{ + for (int i = 0; i < MAX_ACTIONS; i++) + { + if (m_buttonAction[i]->text() == _enc) return (ActionTypes)i; + } + return cesAutoScroll; +} + +void QTReaderApp::setfullscreen(bool sfs) +{ + reader->bDoUpdates = false; + m_fullscreen = sfs; + showEditTools(); +// qApp->processEvents(); + reader->bDoUpdates = true; + reader->update(); +} + +void QTReaderApp::buttonActionSelected(QAction* _a) +{ +//// qDebug("es:%x : %s (%u)", _a, (const char *)(_a->text()), ActNameToInt(_a->text())); + m_spaceTarget = ActNameToInt(_a->text()); +} + +QTReaderApp::~QTReaderApp() +{ +} + +void QTReaderApp::autoScroll(bool _b) +{ + reader->setautoscroll(_b); + setScrollState(reader->m_autoScroll); +} + +void QTReaderApp::zoomin() +{ + reader->zoomin(); +} + +void QTReaderApp::zoomout() +{ + reader->zoomout(); +} + +void QTReaderApp::clearBkmkList() +{ + delete pBkmklist; + pBkmklist = NULL; + m_fBkmksChanged = false; +} + +void QTReaderApp::fileClose() +{ + CCloseDialog* cd = new CCloseDialog(reader->m_string, false, this); + if (cd->exec()) + { + if (pOpenlist != NULL) + { + int ind = 0; + Bkmk* p = (*pOpenlist)[ind]; + while (p != NULL && toQString(CFiledata(p->anno()).name()) != reader->m_lastfile) + { + p = (*pOpenlist)[++ind]; + } + if (p != NULL) pOpenlist->erase(ind); + if (cd->delFile()) + { + unlink((const char*)reader->m_lastfile); + } + if (cd->delMarks()) + { +#ifndef USEQPE + QDir d = QDir::home(); // "/" + d.cd(APPDIR); + d.remove(reader->m_string); +#else /* USEQPE */ + unlink((const char *)Global::applicationFileName(APPDIR,reader->m_string)); +#endif /* USEQPE */ + } + if (cd->delConfig()) + { +#ifndef USEQPE + QDir d = QDir::home(); // "/" + d.cd(APPDIR "/configs"); + d.remove(reader->m_string); +#else /* USEQPE */ + unlink((const char *)Global::applicationFileName(APPDIR "/configs",reader->m_string)); +#endif /* USEQPE */ + } + } + + fileOpen2(); + } + delete cd; +} + +void QTReaderApp::updatefileinfo() +{ + if (reader->m_string.isEmpty()) return; + if (reader->m_lastfile.isEmpty()) return; + tchar* nm = fromQString(reader->m_string); + tchar* fl = fromQString(reader->m_lastfile); +// qDebug("Lastfile:%x", fl); + bool notadded = true; + if (pOpenlist == NULL) pOpenlist = new CList; + else + { + for (CList::iterator iter = pOpenlist->begin(); iter != pOpenlist->end(); iter++) + { + if (ustrcmp(CFiledata(iter->anno()).name(), fl) == 0) + { + iter->value(reader->pagelocate()); + unsigned short dlen; + unsigned char* data; + CFiledata fd(iter->anno()); + reader->setSaveData(data, dlen, fd.content(), fd.length()); +// qDebug("Filedata(1):%u, %u", fd.length(), dlen); +// getstate(data, dlen); + iter->setAnno(data, dlen); + notadded = false; + delete [] data; + break; + } + } + } +// qDebug("Added?:%x", notadded); + if (notadded) + { + struct stat fnstat; + stat((const char *)reader->m_lastfile, &fnstat); + CFiledata fd(fnstat.st_mtime, fl); + unsigned short dlen; + unsigned char* data; + reader->setSaveData(data, dlen, fd.content(), fd.length()); + pOpenlist->push_front(Bkmk(nm, data, dlen, reader->pagelocate())); +// qDebug("Filedata(2):%u, %u", fd.length(), dlen); + delete [] data; + } + delete [] nm; + delete [] fl; +} + +void QTReaderApp::fileOpen() +{ +/* + menu->hide(); + fileBar->hide(); + if (regVisible) regBar->hide(); + if (searchVisible) searchBar->hide(); +*/ +// qDebug("fileOpen"); +// if (!reader->m_lastfile.isEmpty()) + updatefileinfo(); + fileOpen2(); +} + +void QTReaderApp::fileOpen2() +{ + if (pBkmklist != NULL) + { + if (m_fBkmksChanged) + { + if (QMessageBox::warning(this, PROGNAME, "Save bookmarks?", "Save", "Don't bother") == 0) + savebkmks(); + } + delete pBkmklist; + pBkmklist = NULL; + m_fBkmksChanged = false; + } + reader->disableAutoscroll(); +/* + editorStack->raiseWidget( fileSelector ); + fileSelector->reread(); +*/ + bool usebrowser = true; + if (pOpenlist != NULL) + { + m_nBkmkAction = cOpenFile; + if (listbkmk(pOpenlist, "Browse")) usebrowser = false; + } + if (usebrowser) + { + QString fn = usefilebrowser(); +// qApp->processEvents(); + if (!fn.isEmpty() && QFileInfo(fn).isFile()) + { + openFile(fn); + } + reader->setFocus(); + } +// reader->refresh(); +// qDebug("HEIGHT:%d", reader->m_lastheight); +} + +QString QTReaderApp::usefilebrowser() +{ +#ifndef USEQPE + QString s( QFileDialog::getOpenFileName( reader->m_lastfile, QString::null, this ) ); + return s; +#else + fileBrowser* fb = new fileBrowser(false, this,"OpieReader",!m_bFloatingDialog, + 0, +// WStyle_Customize | WStyle_NoBorderEx, + "*", QFileInfo(reader->m_lastfile).dirPath(true)); + + + QString fn; + if (fb->exec()) + { + fn = fb->getCurrentFile(); + } +// qDebug("Selected %s", (const char*)fn); + delete fb; + showEditTools(); + return fn; +#endif +} + +void QTReaderApp::showgraphic(QImage& pm) +{ + QPixmap pc; + pc.convertFromImage(pm); + m_graphicwin->setPixmap(pc); + editorStack->raiseWidget( m_graphicwin ); + m_graphicwin->setFocus(); +} + + +void QTReaderApp::showprefs() +{ + CPrefs* prefwin = new CPrefs(!m_bFloatingDialog, this); + + prefwin->twotouch(m_twoTouch); + prefwin->propfontchange(m_propogatefontchange); + prefwin->StripCR(reader->bstripcr); + prefwin->Dehyphen(reader->bdehyphen); + prefwin->SingleSpace(reader->bonespace); + prefwin->Unindent(reader->bunindent); + prefwin->Reparagraph(reader->brepara); + prefwin->DoubleSpace(reader->bdblspce); + prefwin->Remap(reader->bremap); + prefwin->Embolden(reader->bmakebold); + prefwin->FullJustify(reader->bfulljust); + prefwin->ParaLead(reader->getextraspace()); + prefwin->LineLead(reader->getlead()); + prefwin->Margin(reader->m_border); + prefwin->Indent(reader->bindenter); + if (reader->bautofmt) + { + prefwin->Markup(0); + } + else if (reader->btextfmt) + { + prefwin->Markup(2); + } + else if (reader->bstriphtml) + { + prefwin->Markup(3); + } + else if (reader->bpeanut) + { + prefwin->Markup(4); + } + else + { + prefwin->Markup(1); + } + prefwin->Depluck(reader->bdepluck); + prefwin->Dejpluck(reader->bdejpluck); + prefwin->Continuous(reader->m_continuousDocument); + + prefwin->dictApplication(m_targetapp); + prefwin->dictMessage(m_targetmsg); + + prefwin->spaceAction(m_spaceTarget); + prefwin->escapeAction(m_escapeTarget); + prefwin->returnAction(m_returnTarget); + prefwin->leftAction(m_leftTarget); + prefwin->rightAction(m_rightTarget); + prefwin->upAction(m_upTarget); + prefwin->downAction(m_downTarget); + + prefwin->leftScroll(m_leftScroll); + prefwin->rightScroll(m_rightScroll); + prefwin->upScroll(m_upScroll); + prefwin->downScroll(m_downScroll); + + prefwin->miscannotation(m_doAnnotation); + prefwin->miscdictionary(m_doDictionary); + prefwin->miscclipboard(m_doClipboard); + + prefwin->SwapMouse(reader->m_swapmouse); + + prefwin->Font(reader->m_fontname); + + prefwin->gfxsize(reader->getBaseSize()); + + prefwin->pageoverlap(reader->m_overlap); + + prefwin->ideogram(reader->m_bMonoSpaced); + + prefwin->encoding(reader->m_encd); + + prefwin->ideogramwidth(reader->m_charpc); + + if (prefwin->exec()) + { + m_twoTouch = prefwin->twotouch(); + reader->setTwoTouch(m_twoTouch); + m_touch_action->setOn(m_twoTouch); + + reader->bstripcr = prefwin->StripCR(); + reader->bdehyphen = prefwin->Dehyphen(); + reader->bonespace = prefwin->SingleSpace(); + reader->bunindent = prefwin->Unindent(); + reader->brepara = prefwin->Reparagraph(); + reader->bdblspce = prefwin->DoubleSpace(); + reader->bremap = prefwin->Remap(); + reader->bmakebold = prefwin->Embolden(); + reader->bfulljust = prefwin->FullJustify(); + reader->setextraspace(prefwin->ParaLead()); + reader->setlead(prefwin->LineLead()); + reader->m_border = prefwin->Margin(); + reader->bindenter = prefwin->Indent(); + reader->bautofmt = reader->btextfmt = reader->bstriphtml = reader->bpeanut = false; + switch (prefwin->Markup()) + { + case 0: + reader->bautofmt = true; + break; + case 1: + break; + case 2: + reader->btextfmt = true; + break; + case 3: + reader->bstriphtml = true; + break; + case 4: + reader->bpeanut = true; + break; + default: + qDebug("Format out of range"); + } + reader->bdepluck = prefwin->Depluck(); + reader->bdejpluck = prefwin->Dejpluck(); + reader->setContinuous(prefwin->Continuous()); + + m_spaceTarget = (ActionTypes)prefwin->spaceAction(); + m_escapeTarget = (ActionTypes)prefwin->escapeAction(); + m_returnTarget = (ActionTypes)prefwin->returnAction(); + m_leftTarget = (ActionTypes)prefwin->leftAction(); + m_rightTarget = (ActionTypes)prefwin->rightAction(); + m_upTarget = (ActionTypes)prefwin->upAction(); + m_downTarget = (ActionTypes)prefwin->downAction(); + m_leftScroll = prefwin->leftScroll(); + m_rightScroll = prefwin->rightScroll(); + m_upScroll = prefwin->upScroll(); + m_downScroll = prefwin->downScroll(); + + m_targetapp = prefwin->dictApplication(); + m_targetmsg = prefwin->dictMessage(); + + m_doAnnotation = prefwin->miscannotation(); + m_doDictionary = prefwin->miscdictionary(); + m_doClipboard = prefwin->miscclipboard(); + reader->m_swapmouse = prefwin->SwapMouse(); + reader->setBaseSize(prefwin->gfxsize()); + reader->m_overlap = prefwin->pageoverlap(); + reader->m_bMonoSpaced = prefwin->ideogram(); + m_setmono_action->setOn(reader->m_bMonoSpaced); + reader->m_encd = prefwin->encoding(); + reader->m_charpc = prefwin->ideogramwidth(); + + if ( + reader->m_fontname != prefwin->Font() + || + m_propogatefontchange != prefwin->propfontchange()) + { + m_propogatefontchange = prefwin->propfontchange(); + setfontHelper(prefwin->Font()); + } + delete prefwin; + reader->setfilter(reader->getfilter()); + reader->refresh(); + + } + else + { + delete prefwin; + } +} + +void QTReaderApp::showtoolbarprefs() +{ +#ifdef USEQPE + CBarPrefs* prefwin = new CBarPrefs(APPDIR, !m_bFloatingDialog, this); +#else + QFileInfo fi; + QDir d = QDir::home(); // "/" + if ( !d.cd(APPDIR) ) + { // "/tmp" + qWarning( "Cannot find the \"~/%s\" directory", APPDIR ); + d = QDir::home(); + d.mkdir(APPDIR); + d.cd(APPDIR); + } + fi.setFile(d, INIFILE); + CBarPrefs* prefwin = new CBarPrefs(fi.absFilePath(), !m_bFloatingDialog, this); +#endif + prefwin->tbpolicy(m_tbpolsave); + prefwin->tbposition(m_tbposition-2); + prefwin->tbmovable(m_tbmovesave); + prefwin->floating(m_bFloatingDialog); + if (prefwin->exec()) + { + m_bFloatingDialog = prefwin->floating(); + if ( + m_tbpolsave != (ToolbarPolicy)prefwin->tbpolicy() + || + m_tbposition != (ToolBarDock)(prefwin->tbposition()+2) + || + m_tbmovesave != prefwin->tbmovable() + ) + { + QMessageBox::warning(this, PROGNAME, "Some changes won't take effect\nuntil the next time the\napplication is started"); + } + m_tbpolsave = (ToolbarPolicy)prefwin->tbpolicy(); + m_tbposition = (ToolBarDock)(prefwin->tbposition()+2); + m_tbmovesave = prefwin->tbmovable(); + bool isChanged = prefwin->isChanged(); + delete prefwin; +#ifdef USEQPE + Config config( APPDIR ); +#else + QFileInfo fi; + QDir d = QDir::home(); // "/" + if ( !d.cd(APPDIR) ) + { // "/tmp" + qWarning( "Cannot find the \"~/%s\" directory", APPDIR ); + d = QDir::home(); + d.mkdir(APPDIR); + d.cd(APPDIR); + } + fi.setFile(d, INIFILE); + Config config( fi.absFilePath() ); +#endif + if (isChanged) addtoolbars(&config); + } + else + { + delete prefwin; + } +} + +void QTReaderApp::showinfo() +{ + unsigned long fs, ts, pl; + if (reader->empty()) + { + QMessageBox::information(this, PROGNAME, "No file loaded", 1); + } + else + { + reader->sizes(fs,ts); + pl = reader->pagelocate(); + m_infoWin->setFileSize(fs); + m_infoWin->setTextSize(ts); + m_infoWin->setRatio(100-(100*fs + (ts >> 1))/ts); + m_infoWin->setLocation(pl); + m_infoWin->setRead((100*pl + (ts >> 1))/ts); + editorStack->raiseWidget( m_infoWin ); + m_infoWin->setFocus(); + } +} + +void QTReaderApp::addAnno(const QString& name, const QString& text, size_t posn) +{ + if (pBkmklist == NULL) pBkmklist = new CList; +#ifdef _UNICODE + CBuffer buff(name.length()+1); + int i; + for (i = 0; i < name.length(); i++) + { + buff[i] = name[i].unicode(); + } + buff[i] = 0; + CBuffer buff2(text.length()+1); + for (i = 0; i < text.length(); i++) + { + buff2[i] = text[i].unicode(); + } + buff2[i] = 0; + pBkmklist->push_front(Bkmk(buff.data(), buff2.data(), posn)); +#else + pBkmklist->push_front(Bkmk((const tchar*)text,posn)); +#endif + m_fBkmksChanged = true; + pBkmklist->sort(); +} + +void QTReaderApp::addAnno(const QString& name, const QString& text) +{ + if (m_annoIsEditing) + { + if (name.isEmpty()) + { + QMessageBox::information(this, PROGNAME, "Need a name for the bookmark\nPlease try again", 1); + } + else + { + addAnno(name, text, m_annoWin->getPosn()); + } + showEditTools(); + } + else + { + if (m_annoWin->edited()) + { + CBuffer buff(text.length()+1); + int i; + for (i = 0; i < text.length(); i++) + { + buff[i] = text[i].unicode(); + } + buff[i] = 0; + m_fBkmksChanged = true; + m_anno->setAnno(buff.data()); + } + bool found = findNextBookmark(m_anno->value()+1); + if (found) + { + m_annoWin->setName(toQString(m_anno->name())); + m_annoWin->setAnno(toQString(m_anno->anno())); + } + else + { + showEditTools(); + } + } +} + +bool QTReaderApp::findNextBookmark(size_t start) +{ + bool found = false; + for (CList::iterator iter = pBkmklist->begin(); iter != pBkmklist->end(); iter++) + { + if (iter->value() >= start) + { + if (iter->value() < reader->locate()) + { + found = true; + m_anno = iter.pContent(); + } + break; + } + } + return found; +} + +void QTReaderApp::addanno() +{ + if (reader->empty()) + { + QMessageBox::information(this, PROGNAME, "No file loaded", 1); + } + else + { + m_annoWin->setName(""); + m_annoWin->setAnno(""); + m_annoWin->setPosn(reader->pagelocate()); + m_annoIsEditing = true; + editorStack->raiseWidget( m_annoWin ); +#ifdef USEQPE + Global::showInputMethod(); +#endif + m_annoWin->setFocus(); + } +} + +void QTReaderApp::infoClose() +{ + showEditTools(); +} + +/* +void QTReaderApp::fileRevert() +{ + clear(); + fileOpen(); +} + +void QTReaderApp::editCut() +{ +#ifndef QT_NO_CLIPBOARD + editor->cut(); +#endif +} +*/ +void QTReaderApp::editMark() +{ + m_savedpos = reader->pagelocate(); +} + +void QTReaderApp::editCopy() +{ + QClipboard* cb = QApplication::clipboard(); + QString text; + int ch; + unsigned long currentpos = reader->pagelocate(); + unsigned long endpos = reader->locate(); + if (m_savedpos == 0xffffffff) + { + m_savedpos = currentpos; + } + reader->jumpto(m_savedpos); + while (reader->explocate() < endpos && (ch = reader->getch()) != UEOF) + { + text += ch; + } + cb->setText(text); + reader->locate(currentpos); + m_savedpos = 0xffffffff; +} + +void QTReaderApp::gotoStart() +{ + reader->locate(reader->buffdoc.startSection()); +} + +void QTReaderApp::gotoEnd() +{ + reader->dopageup(reader->buffdoc.endSection()); +} + +void QTReaderApp::pageup() +{ + reader->NavUp(); +} + +void QTReaderApp::pagedn() +{ + reader->NavDown(); +} + +void QTReaderApp::pagemode(bool _b) +{ + reader->setpagemode(_b); +} + +/* +void QTReaderApp::setspacing() +{ + m_nRegAction = cMonoSpace; + char lcn[20]; + sprintf(lcn, "%lu", reader->m_charpc); + regEdit->setText(lcn); + do_regedit(); +} +*/ +void QTReaderApp::settarget() +{ + m_nRegAction = cSetTarget; + QString text = ((m_targetapp.isEmpty()) ? QString("") : m_targetapp) + + "/" + + ((m_targetmsg.isEmpty()) ? QString("") : m_targetmsg); + regEdit->setText(text); + do_regedit(); +} + +/* +void QTReaderApp::do_mono(const QString& lcn) +{ + bool ok; + unsigned long ulcn = lcn.toULong(&ok); + if (ok) + { + reader->m_charpc = ulcn; + reader->setfont(); + reader->refresh(); +// reader->setmono(true); + } + else + QMessageBox::information(this, PROGNAME, "Must be a number"); +} +*/ +/* +void QTReaderApp::editPaste() +{ +#ifndef QT_NO_CLIPBOARD + editor->paste(); +#endif +} +*/ + +void QTReaderApp::editFind() +{ + searchStart = reader->pagelocate(); +#ifdef __ISEARCH + searchStack = new QStack; +#endif +#ifdef USEQPE + Global::showInputMethod(); +#endif + searchBar->show(); + searchVisible = TRUE; + searchEdit->setFocus(); +#ifdef __ISEARCH + searchStack->push(new searchrecord("",reader->pagelocate())); +#endif +} + +void QTReaderApp::findNext() +{ +// // qDebug("findNext called\n"); +#ifdef __ISEARCH + QString arg = searchEdit->text(); +#else + QRegExp arg = searchEdit->text(); +#endif + CDrawBuffer test(&(reader->m_fontControl)); + size_t start = reader->pagelocate(); + reader->jumpto(start); + reader->getline(&test); + dosearch(start, test, arg); +} + +void QTReaderApp::findClose() +{ + searchVisible = FALSE; + searchEdit->setText(""); +#ifdef USEQPE + Global::hideInputMethod(); +#endif + searchBar->hide(); +#ifdef __ISEARCH +// searchStack = new QStack; + while (!searchStack->isEmpty()) + { + delete searchStack->pop(); + } + delete searchStack; +#endif + reader->setFocus(); +} + +void QTReaderApp::regClose() +{ + regVisible = FALSE; + regEdit->setText(""); + regBar->hide(); +#ifdef USEQPE + Global::hideInputMethod(); +#endif + reader->setFocus(); +} + +#ifdef __ISEARCH +bool QTReaderApp::dosearch(size_t start, CDrawBuffer& test, const QString& arg) +#else +bool QTReaderApp::dosearch(size_t start, CDrawBuffer& test, const QRegExp& arg) +#endif +{ + bool ret = true; + unsigned long fs, ts; + reader->sizes(fs,ts); + size_t pos = reader->locate(); + pbar->setGeometry(searchBar->x(),searchBar->y(),searchBar->width(), searchBar->height()); + pbar->show(); + pbar->raise(); + pbar->reset(); + int offset; + int lastpc = (100*pos)/ts; + pbar->setProgress(lastpc); +// qApp->processEvents(); + if (reader->buffdoc.getpara(test) >= 0) + { + reader->setFocus(); +#ifdef __ISEARCH + while (strstr(test.data(),(const tchar*)arg) == NULL) +#else +#ifdef _UNICODE + while ((offset = arg.match(toQString(test.data()))) == -1) +#else + while (arg.match(test.data()) == -1) +#endif +#endif + { + pos = reader->locate(); + int pc = (100*pos)/ts; + if (pc != lastpc) + { + pbar->setProgress(pc); + qApp->processEvents(); + reader->setFocus(); + lastpc = pc; + } + + if (reader->buffdoc.getpara(test) < 0) + { + if (QMessageBox::warning(this, "Can't find", searchEdit->text(), 1, 2) == 2) + pos = searchStart; + else + pos = start; + findClose(); + pbar->hide(); + reader->locate(pos); + return false; + } + } +// qDebug("Found it at %u:%u", pos, offset); + pbar->hide(); +// qDebug("Hid"); + reader->locate(pos+offset); +// qDebug("Loacted"); +// qDebug("page up"); + ret = true; + } + else + { + if (QMessageBox::warning(this, "Can't find", searchEdit->text(), 1, 2) == 2) + pos = searchStart; + else + pos = start; + ret = false; + findClose(); + } + return ret; +} + +#ifdef __ISEARCH +void QTReaderApp::search(const QString & arg) +{ + searchrecord* ss = searchStack->top(); + CBuffer test; + size_t start = reader->pagelocate(); + bool haspopped = false; + while (arg.left(ss->s.length()) != ss->s) + { + haspopped = true; + start = ss->pos; +// reader->locate(start); + searchStack->pop(); + delete ss; + } + if (haspopped) reader->locate(start); +/* + if (arg.length() < ss->len) + { + start = ss->pos; + reader->locate(start); + searchStack->pop(); + delete ss; + } +*/ + else + { + start = reader->pagelocate(); + reader->jumpto(start); + searchStack->push(new searchrecord(arg,start)); + } + dosearch(start, test, arg); +} +#else +void QTReaderApp::search() +{ + findNext(); +} +#endif + +void QTReaderApp::openFile( const QString &f ) +{ +// qDebug("File:%s", (const char*)f); +// openFile(DocLnk(f)); +//} +// +//void QTReaderApp::openFile( const DocLnk &f ) +//{ + clear(); + QFileInfo fm(f); + if ( fm.exists() ) + { +// QMessageBox::information(0, "Progress", "Calling fileNew()"); +#ifdef USEQPE + if (fm.extension( FALSE ) == "desktop") + { + DocLnk d(f); + QFileInfo fnew(d.file()); + fm = fnew; + if (!fm.exists()) return; + } +#endif + clear(); + + reader->setText(fm.baseName(), fm.absFilePath()); + m_loadedconfig = readconfig(reader->m_string, false); + showEditTools(); + readbkmks(); + m_savedpos = 0xffffffff; + } + else + { + QMessageBox::information(this, PROGNAME, "File does not exist"); + reader->m_lastfile = QString::null; + } + +} +/* +void QTReaderApp::resizeEvent(QResizeEvent* e) +{ + if (m_fullscreen) + { + showNormal(); + showFullScreen(); + } +} +*/ +void QTReaderApp::handlekey(QKeyEvent* e) +{ +// qDebug("Keypress event"); + timeb now; + ftime(&now); + unsigned long etime = (1000*(now.time - m_lastkeytime.time) + now.millitm)-m_lastkeytime.millitm; + if (etime < m_debounce) + { + return; + } + m_lastkeytime = now; + switch(e->key()) + { + case Key_Escape: +// qDebug("escape event"); + if (m_disableesckey) + { + m_disableesckey = false; + } + else + { + m_bcloseDisabled = true; + if (m_fullscreen) + { + m_actFullscreen->setOn(false); + e->accept(); + } + else + { +// qDebug("escape action"); + doAction(m_escapeTarget, e); + } + } + break; + case Key_Space: + { + doAction(m_spaceTarget, e); + } + break; + case Key_Return: + { + doAction(m_returnTarget, e); + } + break; + case Key_Left: + { + if (reader->m_autoScroll && m_leftScroll) + { + reader->reduceScroll(); + } + else + { + doAction(m_leftTarget, e); + } + } + break; + case Key_Right: + { + if (reader->m_autoScroll && m_rightScroll) + { + reader->increaseScroll(); + } + else + { + doAction(m_rightTarget, e); + } + } + break; + case Key_Up: + { + if (reader->m_autoScroll && m_upScroll) + { + reader->increaseScroll(); + } + else + { + doAction(m_upTarget, e); + } + } + break; + case Key_Down: + { + if (reader->m_autoScroll && m_downScroll) + { + reader->reduceScroll(); + } + else + { + doAction(m_downTarget, e); + } + } + break; + default: + { + e->ignore(); + } + +/* + QString msg("Key press was:"); + QString key; + msg += key.setNum(e->key()); + QMessageBox::information(this, PROGNAME, msg); +*/ + } +} + +void QTReaderApp::showEditTools() +{ +// if ( !doc ) +// close(); + if (m_fullscreen) + { + if (menubar != NULL) menubar->hide(); + if (fileBar != NULL) fileBar->hide(); + if (viewBar != NULL) viewBar->hide(); + if (navBar != NULL) navBar->hide(); + if (markBar != NULL) markBar->hide(); + searchBar->hide(); + regBar->hide(); +#ifdef USEQPE + Global::hideInputMethod(); +#endif + m_fontBar->hide(); +// showNormal(); + showFullScreen(); + } + else + { +// qDebug("him"); +#ifdef USEQPE + Global::hideInputMethod(); +#endif +// qDebug("eb"); + menubar->show(); + if (fileBar != NULL) fileBar->show(); + if (viewBar != NULL) viewBar->show(); + if (navBar != NULL) navBar->show(); + if (markBar != NULL) markBar->show(); + mb->show(); + if ( searchVisible ) + { +#ifdef USEQPE + Global::showInputMethod(); +#endif + searchBar->show(); + } + if ( regVisible ) + { +#ifdef USEQPE + Global::showInputMethod(); +#endif + regBar->show(); + } + if (m_fontVisible) m_fontBar->show(); +// qDebug("sn"); + showNormal(); +// qDebug("sm"); +#ifdef USEQPE + showMaximized(); +#endif +// setCentralWidget(reader); + } + +// qDebug("uc"); + updateCaption(); +// qDebug("rw"); + editorStack->raiseWidget( reader ); +// qDebug("sf"); + reader->setFocus(); + reader->refresh(); +} +/* +void QTReaderApp::save() +{ + if ( !doc ) + return; + if ( !editor->edited() ) + return; + + QString rt = editor->text(); + QString pt = rt; + + if ( doc->name().isEmpty() ) { + unsigned ispace = pt.find( ' ' ); + unsigned ienter = pt.find( '\n' ); + int i = (ispace < ienter) ? ispace : ienter; + QString docname; + if ( i == -1 ) { + if ( pt.isEmpty() ) + docname = "Empty Text"; + else + docname = pt; + } else { + docname = pt.left( i ); + } + doc->setName(docname); + } + FileManager fm; + fm.saveFile( *doc, rt ); +} +*/ + +void QTReaderApp::clear() +{ +// if (doc != 0) +// { +// QMessageBox::information(this, PROGNAME, "Deleting doc", 1); +// delete doc; +// QMessageBox::information(this, PROGNAME, "Deleted doc", 1); +// doc = 0; + // } + reader->clear(); +} + +void QTReaderApp::updateCaption() +{ +// if ( !doc ) +// setCaption( tr("QTReader") ); +// else { +// QString s = doc->name(); +// if ( s.isEmpty() ) +// s = tr( "Unnamed" ); + setCaption( reader->m_string + " - " + tr("Reader") ); +// } +} + +void QTReaderApp::setDocument(const QString& fileref) +{ + bFromDocView = TRUE; +//QMessageBox::information(0, "setDocument", fileref); + openFile(fileref); +// showEditTools(); +} + +void QTReaderApp::closeEvent( QCloseEvent *e ) +{ +// qDebug("Close event"); + if (m_fullscreen) + { + m_fullscreen = false; + showEditTools(); + e->accept(); + } + else if (m_dontSave) + { + e->accept(); + } + else + { + if (editorStack->visibleWidget() == reader) + { + if ((m_escapeTarget != cesNone) && m_bcloseDisabled) + { +// qDebug("Close disabled"); + m_bcloseDisabled = false; + e->ignore(); + } + else + { + if (m_fontVisible) + { + m_fontBar->hide(); + m_fontVisible = false; + } + if (regVisible) + { + regBar->hide(); +#ifdef USEQPE + Global::hideInputMethod(); +#endif + regVisible = false; + return; + } + if (searchVisible) + { + searchBar->hide(); +#ifdef USEQPE + Global::hideInputMethod(); +#endif + searchVisible = false; + return; + } + if (m_fBkmksChanged && pBkmklist != NULL) + { + if (QMessageBox::warning(this, PROGNAME, "Save bookmarks?", "Save", "Don't bother") == 0) + savebkmks(); + delete pBkmklist; + pBkmklist = NULL; + m_fBkmksChanged = false; + } + bFromDocView = FALSE; + updatefileinfo(); + saveprefs(); + e->accept(); + } + } + else + { + showEditTools(); + m_disableesckey = true; + } + } +} + +void QTReaderApp::do_gotomark() +{ + m_nBkmkAction = cGotoBkmk; + if (!listbkmk(pBkmklist)) + QMessageBox::information(this, PROGNAME, "No bookmarks in memory"); +} + +void QTReaderApp::do_delmark() +{ + m_nBkmkAction = cDelBkmk; + if (!listbkmk(pBkmklist)) + QMessageBox::information(this, PROGNAME, "No bookmarks in memory"); +} + +bool QTReaderApp::listbkmk(CList* plist, const QString& _lab) +{ + bkmkselector->clear(); + if (_lab.isEmpty()) + bkmkselector->setText("Cancel"); + else + bkmkselector->setText(_lab); + int cnt = 0; + if (plist != NULL) + { + for (CList::iterator i = plist->begin(); i != plist->end(); i++) + { +#ifdef _UNICODE +// qDebug("Item:%s", (const char*)toQString(i->name())); + bkmkselector->insertItem(toQString(i->name())); +#else + bkmkselector->insertItem(i->name()); +#endif + cnt++; + } + } + if (cnt > 0) + { + hidetoolbars(); + editorStack->raiseWidget( bkmkselector ); + return true; + } + else + return false; +} + +void QTReaderApp::do_autogen() +{ + m_nRegAction = cAutoGen; + regEdit->setText(m_autogenstr); + do_regedit(); +} + +void QTReaderApp::do_regedit() +{ +// fileBar->hide(); + reader->bDoUpdates = false; +// qDebug("Showing regbar"); + regBar->show(); +// qDebug("Showing kbd"); +#ifdef USEQPE + Global::showInputMethod(); +#endif + regVisible = true; + regEdit->setFocus(); +// qApp->processEvents(); + reader->bDoUpdates = true; + reader->update(); +} + +bool QTReaderApp::openfrombkmk(Bkmk* bk) +{ + QString fn = toQString( + CFiledata(bk->anno()).name() + ); +// qDebug("fileinfo"); + if (!fn.isEmpty() && QFileInfo(fn).isFile()) + { +// qDebug("Opening"); + openFile(fn); + struct stat fnstat; + stat((const char *)reader->m_lastfile, &fnstat); + + if (CFiledata(bk->anno()).date() + != fnstat.st_mtime) + { + CFiledata fd(bk->anno()); + fd.setdate(fnstat.st_mtime); + bk->value(0); + } + else + { + unsigned short svlen = bk->filedatalen(); + unsigned char* svdata = bk->filedata(); + reader->putSaveData(svdata, svlen); +// setstate(svdata, svlen); + if (svlen != 0) + { + QMessageBox::warning(this, PROGNAME, "Not all file data used\nNew version?"); + } +// qDebug("updating"); +// showEditTools(); + reader->locate(bk->value()); + } + return true; + } + else + { + return false; + } +} + +void QTReaderApp::gotobkmk(int ind) +{ + showEditTools(); + switch (m_nBkmkAction) + { + case cOpenFile: + { +// qApp->processEvents(); + if (!openfrombkmk((*pOpenlist)[ind])) + { + pOpenlist->erase(ind); + QMessageBox::information(this, PROGNAME, "Can't find file"); + } + } + break; + case cGotoBkmk: + reader->locate((*pBkmklist)[ind]->value()); + break; + case cDelBkmk: +//// qDebug("Deleting:%s\n",(*pBkmklist)[ind]->name()); + pBkmklist->erase(ind); + m_fBkmksChanged = true; +// pBkmklist->sort(); + break; + case cRmBkmkFile: + { +#ifndef USEQPE + QDir d = QDir::home(); // "/" + d.cd(APPDIR); + d.remove(bkmkselector->text(ind)); +#else /* USEQPE */ + unlink((const char *)Global::applicationFileName(APPDIR,bkmkselector->text(ind))); +#endif /* USEQPE */ + } + break; + case cLdConfig: + readconfig(bkmkselector->text(ind), false); + break; + case cRmConfig: + { +#ifndef USEQPE + QDir d = QDir::home(); // "/" + d.cd(APPDIR "/configs"); + d.remove(bkmkselector->text(ind)); +#else /* USEQPE */ + unlink((const char *)Global::applicationFileName(APPDIR "/configs",bkmkselector->text(ind))); +#endif /* USEQPE */ + } + break; + case cExportLinks: + { +#ifndef USEQPE + QDir d = QDir::home(); // "/" + d.cd(APPDIR "/urls"); + QFileInfo fi(d, bkmkselector->text(ind)); + if (fi.exists()) + { + QString outfile( QFileDialog::getSaveFileName( QString::null, QString::null, this ) ); + if (!outfile.isEmpty()) + { + FILE* fout = fopen((const char *)outfile, "w"); + if (fout != NULL) + { + FILE* fin = fopen((const char *)fi.absFilePath(), "r"); + if (fin != NULL) + { + fprintf(fout, "\n"); + int ch = 0; + while ((ch = fgetc(fin)) != EOF) + { + fputc(ch, fout); + } + fclose(fin); + fprintf(fout, "\n"); + d.remove(bkmkselector->text(ind)); + } + fclose(fout); + } + else + QMessageBox::information(this, PROGNAME, "Couldn't open output"); + } + } +#else /* USEQPE */ + FILE* fin = fopen((const char *)Global::applicationFileName(APPDIR "/urls",bkmkselector->text(ind)), "r"); + if (fin != NULL) + { + bool allok = false; + fileBrowser* fb = new fileBrowser(true, this,"OpieReader",!m_bFloatingDialog, 0, "*", QString::null); + if (fb->exec()) + { + QString outfile = fb->getCurrentFile(); + FILE* fout = fopen((const char *)outfile, "w"); + if (fout != NULL) + { + fprintf(fout, "\n"); + int ch = 0; + while ((ch = fgetc(fin)) != EOF) + { + fputc(ch, fout); + } + fprintf(fout, "\n"); + fclose(fout); + allok = true; + } + else + QMessageBox::information(this, PROGNAME, "Couldn't open output"); + } + delete fb; + fclose(fin); + if (allok) unlink((const char *)Global::applicationFileName(APPDIR "/urls",bkmkselector->text(ind))); + } + else + { + QMessageBox::information(this, PROGNAME, "Couldn't open input"); + } + +/* + CFileSelector *f = new CFileSelector("text/html", this, NULL, !m_bFloatingDialog, TRUE, TRUE ); + int ret = f->exec(); + qDebug("Return:%d", ret); + DocLnk* doc = f->getDoc(); + if (doc != NULL) + { + FILE* fin = fopen((const char *)Global::applicationFileName(APPDIR "/urls",bkmkselector->text(ind)), "r"); + QString rt; + rt = "\n"; + int ch = 0; + while ((ch = fgetc(fin)) != EOF) + { + rt += (char)ch; + } + fclose(fin); + rt += "\n"; + if ( doc->name().isEmpty() ) + { + doc->setName(bkmkselector->text(ind)); + } + FileManager fm; + fm.saveFile( *doc, rt ); + qDebug("YES"); + } + else + { + qDebug("NO"); + } + delete f; +*/ + +#endif /* USEQPE */ + } + break; + } +} + +void QTReaderApp::cancelbkmk() +{ + if (m_nBkmkAction == cOpenFile) + { + QString fn = usefilebrowser(); + if (!fn.isEmpty() && QFileInfo(fn).isFile()) openFile(fn); + } + showEditTools(); +} + +void QTReaderApp::jump() +{ + m_nRegAction = cJump; + char lcn[20]; + sprintf(lcn, "%lu", reader->pagelocate()); + regEdit->setText(lcn); + do_regedit(); +} + +void QTReaderApp::do_jump(const QString& lcn) +{ + bool ok; + unsigned long ulcn = lcn.toULong(&ok); + if (ok) + reader->locate(ulcn); + else + QMessageBox::information(this, PROGNAME, "Must be a number"); +} + +void QTReaderApp::do_regaction() +{ + reader->bDoUpdates = false; + regBar->hide(); +#ifdef USEQPE + Global::hideInputMethod(); +#endif + regVisible = false; + switch(m_nRegAction) + { + case cAutoGen: + do_autogen(regEdit->text()); + break; + case cAddBkmk: + do_addbkmk(regEdit->text()); + break; + case cJump: + do_jump(regEdit->text()); + break; +/* + case cMonoSpace: + do_mono(regEdit->text()); + break; +*/ + case cSetTarget: + do_settarget(regEdit->text()); + break; +#ifdef _SCROLLPIPE + case cSetPipeTarget: + do_setpipetarget(regEdit->text()); + break; +#endif + case cSetConfigName: +// qDebug("Saving config"); + do_saveconfig(regEdit->text(), false); + break; + } +// reader->restore(); +// fileBar->show(); + reader->setFocus(); +// qApp->processEvents(); + reader->bDoUpdates = true; + reader->update(); +} + +void QTReaderApp::do_settarget(const QString& _txt) +{ + int ind = _txt.find('/'); + if (ind == -1) + { + m_targetapp = ""; + m_targetmsg = ""; + QMessageBox::information(this, PROGNAME, "Format is\nappname/messagename"); + } + else + { + m_targetapp = _txt.left(ind); + m_targetmsg = _txt.right(_txt.length()-ind-1); + } +} + +void QTReaderApp::chooseencoding() +{ + m_fontSelector->clear(); + m_fontSelector->insertItem("Ascii"); + m_fontSelector->insertItem("UTF-8"); + m_fontSelector->insertItem("UCS-2(BE)"); + m_fontSelector->insertItem("USC-2(LE)"); + m_fontSelector->insertItem("Palm"); + for (unicodetable::iterator iter = unicodetable::begin(); iter != unicodetable::end(); iter++) + { + m_fontSelector->insertItem(iter->mime); + } // delete the FontDatabase!!! + m_fontSelector->setCurrentItem (reader->m_encd); + m_fontAction = cChooseEncoding; + m_fontBar->show(); + m_fontVisible = true; +} + +void QTReaderApp::setfont() +{ + m_fontSelector->clear(); + { +#ifdef USEQPE + FontDatabase f; +#else + QFontDatabase f; +#endif + QStringList flist = f.families(); + m_fontSelector->insertStringList(flist); + } // delete the FontDatabase!!! + + for (int i = 1; i <= m_fontSelector->count(); i++) + { + if (m_fontSelector->text(i) == reader->m_fontname) + { + m_fontSelector->setCurrentItem(i); + break; + } + } + m_fontAction = cChooseFont; + m_fontBar->show(); + m_fontVisible = true; +} + +void QTReaderApp::setfontHelper(const QString& lcn, int size) +{ + if (size == 0) size = reader->m_fontControl.currentsize(); + if (m_propogatefontchange) + { + QFont f(lcn, 10); + bkmkselector->setFont( f ); + regEdit->setFont( f ); + searchEdit->setFont( f ); + m_annoWin->setFont( f ); + } + reader->m_fontname = lcn; + if (!reader->ChangeFont(size)) + { + reader->ChangeFont(size); + } +} + +void QTReaderApp::do_setencoding(int i) +{ +// qDebug("setencoding:%d", i); + if (m_fontAction == cChooseEncoding) + { + reader->setencoding(i); + } + reader->refresh(); + m_fontBar->hide(); + m_fontVisible = false; +// qDebug("showedit"); + if (reader->isVisible()) showEditTools(); +// qDebug("showeditdone"); +} + +void QTReaderApp::do_setfont(const QString& lcn) +{ + if (m_fontAction == cChooseFont) + { + setfontHelper(lcn); + } + reader->refresh(); + m_fontBar->hide(); + m_fontVisible = false; +// qDebug("showedit"); + //if (reader->isVisible()) + showEditTools(); +// qDebug("showeditdone"); +} + +void QTReaderApp::do_autogen(const QString& regText) +{ + unsigned long fs, ts; + reader->sizes(fs,ts); +// // qDebug("Reg:%s\n", (const tchar*)(regEdit->text())); + m_autogenstr = regText; + QRegExp re(regText); + CBuffer buff; + if (pBkmklist != NULL) delete pBkmklist; + pBkmklist = new CList; + m_fBkmksChanged = true; + + pbar->setGeometry(regBar->x(),regBar->y(),regBar->width(), regBar->height()); + pbar->show(); + pbar->raise(); + pbar->reset(); + reader->update(); + qApp->processEvents(); + reader->setFocus(); + reader->jumpto(0); + int lastpc = 0; + int i = 0; + while (i >= 0) + { + unsigned int lcn = reader->locate(); + int pc = (100*lcn)/ts; + if (pc != lastpc) + { + pbar->setProgress(pc); + qApp->processEvents(); + if (reader->locate() != lcn) reader->jumpto(lcn); + reader->setFocus(); + lastpc = pc; + } + i = reader->buffdoc.getpara(buff); +#ifdef _UNICODE + if (re.match(toQString(buff.data())) != -1) +#else + if (re.match(buff.data()) != -1) +#endif + pBkmklist->push_back(Bkmk(buff.data(), NULL, lcn)); + } + pBkmklist->sort(); + pbar->setProgress(100); + qApp->processEvents(); + pbar->hide(); + reader->refresh(); +} + +void QTReaderApp::saveprefs() +{ +// qDebug("saveprefs"); +// reader->saveprefs("uqtreader"); +// if (!m_loadedconfig) + do_saveconfig( APPDIR, true ); + +/* + Config config( APPDIR ); + config.setGroup( "View" ); + + reader->m_lastposn = reader->pagelocate(); + + config.writeEntry("FloatDialogs", m_bFloatingDialog); + config.writeEntry( "StripCr", reader->bstripcr ); + config.writeEntry( "AutoFmt", reader->bautofmt ); + config.writeEntry( "TextFmt", reader->btextfmt ); + config.writeEntry( "StripHtml", reader->bstriphtml ); + config.writeEntry( "Dehyphen", reader->bdehyphen ); + config.writeEntry( "Depluck", reader->bdepluck ); + config.writeEntry( "Dejpluck", reader->bdejpluck ); + config.writeEntry( "OneSpace", reader->bonespace ); + config.writeEntry( "Unindent", reader->bunindent ); + config.writeEntry( "Repara", reader->brepara ); + config.writeEntry( "DoubleSpace", reader->bdblspce ); + config.writeEntry( "Indent", reader->bindenter ); + config.writeEntry( "FontSize", (int)(reader->m_fontControl.currentsize()) ); + config.writeEntry( "ScrollDelay", reader->m_delay); + config.writeEntry( "LastFile", reader->m_lastfile ); + config.writeEntry( "LastPosn", (int)(reader->pagelocate()) ); + config.writeEntry( "PageMode", reader->m_bpagemode ); + config.writeEntry( "MonoSpaced", reader->m_bMonoSpaced ); + config.writeEntry( "SwapMouse", reader->m_swapmouse); + config.writeEntry( "Fontname", reader->m_fontname ); + config.writeEntry( "Encoding", reader->m_encd ); + config.writeEntry( "CharSpacing", reader->m_charpc ); + config.writeEntry( "Overlap", (int)(reader->m_overlap) ); + config.writeEntry( "Margin", (int)reader->m_border ); + config.writeEntry( "TargetApp", m_targetapp ); + config.writeEntry( "TargetMsg", m_targetmsg ); +#ifdef _SCROLLPIPE + config.writeEntry( "PipeTarget", reader->m_pipetarget ); + config.writeEntry( "PauseAfterPara", reader->m_pauseAfterEachPara ); +#endif + config.writeEntry( "TwoTouch", m_twoTouch ); + config.writeEntry( "Annotation", m_doAnnotation); + config.writeEntry( "Dictionary", m_doDictionary); + config.writeEntry( "Clipboard", m_doClipboard); + config.writeEntry( "SpaceTarget", m_spaceTarget); + config.writeEntry( "EscapeTarget", m_escapeTarget); + config.writeEntry( "ReturnTarget", m_returnTarget); + config.writeEntry( "LeftTarget", m_leftTarget); + config.writeEntry( "RightTarget", m_rightTarget); + config.writeEntry( "UpTarget", m_upTarget); + config.writeEntry( "DownTarget", m_downTarget); + config.writeEntry("LeftScroll", m_leftScroll); + config.writeEntry("RightScroll", m_rightScroll); + config.writeEntry("UpScroll", m_upScroll); + config.writeEntry("DownScroll", m_downScroll); +#ifdef REPALM + config.writeEntry( "Repalm", reader->brepalm ); +#endif + config.writeEntry( "Remap", reader->bremap ); + config.writeEntry( "Peanut", reader->bpeanut ); + config.writeEntry( "MakeBold", reader->bmakebold ); + config.writeEntry( "Continuous", reader->m_continuousDocument ); + config.writeEntry( "FullJust", reader->bfulljust ); + config.writeEntry( "ExtraSpace", reader->getextraspace() ); + config.writeEntry( "ExtraLead", reader->getlead() ); + config.writeEntry( "Basesize", (int)reader->getBaseSize()); + config.writeEntry( "RequestorFontChange", m_propogatefontchange); + + config.setGroup( "Toolbar" ); + config.writeEntry("Movable", m_tbmovesave); + config.writeEntry("Policy", m_tbpolsave); + config.writeEntry("Position", m_tbposition); +*/ + savefilelist(); +} + +/* +void QTReaderApp::oldFile() +{ +// qDebug("oldFile called"); + reader->setText(true); +// qDebug("settext called"); + showEditTools(); +// qDebug("showedit called"); +} +*/ + +/* +void info_cb(Fl_Widget* o, void* _data) +{ + + if (infowin == NULL) + { + + infowin = new Fl_Window(160,240); + filename = new Fl_Output(45,5,110,14,"Filename"); + filesize = new Fl_Output(45,25,110,14,"Filesize"); + textsize = new Fl_Output(45,45,110,14,"Textsize"); + comprat = new CBar(45,65,110,14,"Ratio %"); + posn = new Fl_Output(45,85,110,14,"Location"); + frcn = new CBar(45,105,110,14,"% Read"); + about = new Fl_Multiline_Output(5,125,150,90); + about->value("TWReader - $Name$\n\nA file reader program for the Agenda\n\nReads text, PalmDoc and ppms format files"); + Fl_Button *jump_accept = new Fl_Button(62,220,35,14,"Okay"); + infowin->set_modal(); + } + if (((reader_ui *)_data)->g_filename[0] != '\0') + { + unsigned long fs,ts; + tchar sz[20]; + ((reader_ui *)_data)->input->sizes(fs,ts); + unsigned long pl = ((reader_ui *)_data)->input->locate(); + + filename->value(((reader_ui *)_data)->g_filename); + + sprintf(sz,"%u",fs); + filesize->value(sz); + + sprintf(sz,"%u",ts); + textsize->value(sz); + + comprat->value(100-(100*fs + (ts >> 1))/ts); + + sprintf(sz,"%u",pl); + posn->value(sz); + + frcn->value((100*pl + (ts >> 1))/ts); + } + infowin->show(); +} +*/ + +void QTReaderApp::savebkmks() +{ + if (pBkmklist != NULL) + { +#ifndef USEQPE + QDir d = QDir::home(); // "/" + d.cd(APPDIR); + QFileInfo fi(d, reader->m_string); + BkmkFile bf((const char *)fi.absFilePath(), true); +#else /* USEQPE */ + BkmkFile bf((const char *)Global::applicationFileName(APPDIR,reader->m_string), true); +#endif /* USEQPE */ + bf.write(*pBkmklist); + } + m_fBkmksChanged = false; +} + +void QTReaderApp::readfilelist() +{ +#ifndef USEQPE + QDir d = QDir::home(); // "/" + d.cd(APPDIR); + QFileInfo fi(d, ".openfiles"); + BkmkFile bf((const char *)fi.absFilePath()); +#else /* USEQPE */ + BkmkFile bf((const char *)Global::applicationFileName(APPDIR,".openfiles")); +#endif /* USEQPE */ +// qDebug("Reading open files"); + pOpenlist = bf.readall(); +// if (pOpenlist != NULL) qDebug("...with success"); +// else qDebug("...without success!"); +} + +void QTReaderApp::savefilelist() +{ + if (pOpenlist != NULL) + { +#ifndef USEQPE + QDir d = QDir::home(); // "/" + d.cd(APPDIR); + QFileInfo fi(d, ".openfiles"); + BkmkFile bf((const char *)fi.absFilePath(), true); +#else /* USEQPE */ + BkmkFile bf((const char *)Global::applicationFileName(APPDIR,".openfiles"), true); +#endif /* USEQPE */ +// qDebug("Writing open files"); + bf.write(*pOpenlist); + } +} + +void QTReaderApp::readbkmks() +{ + if (pBkmklist != NULL) + { + delete pBkmklist; + } + struct stat fnstat; + struct stat bkstat; +#ifndef USEQPE + QDir d = QDir::home(); // "/" + d.cd(APPDIR); + QFileInfo fi(d, reader->m_string); +#endif /* ! USEQPE */ + if ( + stat((const char *)reader->m_lastfile, &fnstat) == 0 + && +#ifndef USEQPE + stat((const char *)fi.absFilePath(), &bkstat) == 0 +#else /* USEQPE */ + stat((const char *)Global::applicationFileName(APPDIR,reader->m_string), &bkstat) == 0 +#endif /* USEQPE */ + ) + { + if (bkstat.st_mtime < fnstat.st_mtime) + { +#ifndef USEQPE + unlink((const char *)fi.absFilePath()); +#else /* USEQPE */ + unlink((const char *)Global::applicationFileName(APPDIR,reader->m_string)); +#endif /* USEQPE */ + } + } + +#ifndef USEQPE + BkmkFile bf((const char *)fi.absFilePath()); +#else /* USEQPE */ + BkmkFile bf((const char *)Global::applicationFileName(APPDIR,reader->m_string)); +#endif /* USEQPE */ + + pBkmklist = bf.readall(); + m_fBkmksChanged = bf.upgraded(); + if (pBkmklist == NULL) + { + pBkmklist = reader->getbkmklist(); + } + if (pBkmklist != NULL) + pBkmklist->sort(); +} + +void QTReaderApp::addbkmk() +{ + m_nRegAction = cAddBkmk; + regEdit->setText(reader->firstword()); + do_regedit(); +} + +void QTReaderApp::do_addbkmk(const QString& text) +{ + if (text.isEmpty()) + { + QMessageBox::information(this, PROGNAME, "Need a name for the bookmark\nSelect add again", 1); + } + else + { + if (pBkmklist == NULL) pBkmklist = new CList; +#ifdef _UNICODE + CBuffer buff; + int i = 0; + for (i = 0; i < text.length(); i++) + { + buff[i] = text[i].unicode(); + } + buff[i] = 0; + pBkmklist->push_front(Bkmk(buff.data(), NULL, reader->pagelocate())); +#else + pBkmklist->push_front(Bkmk((const tchar*)text, reader->pagelocate())); +#endif + m_fBkmksChanged = true; + pBkmklist->sort(); + } +} + +void QTReaderApp::OnRedraw() +{ + if ((pBkmklist != NULL) && (m_bkmkAvail != NULL)) + { + bool found = findNextBookmark(reader->pagelocate()); + m_bkmkAvail->setEnabled(found); + } +} + +void QTReaderApp::showAnnotation() +{ + m_annoWin->setName(toQString(m_anno->name())); + m_annoWin->setAnno(toQString(m_anno->anno())); + m_annoIsEditing = false; +#ifdef USEQPE + Global::showInputMethod(); +#endif + editorStack->raiseWidget( m_annoWin ); + m_annoWin->setFocus(); +} + +void QTReaderApp::OnWordSelected(const QString& wrd, size_t posn, const QString& line) +{ +//// qDebug("OnWordSelected(%u):%s", posn, (const char*)wrd); + + if (m_doClipboard) + { + QClipboard* cb = QApplication::clipboard(); + cb->setText(wrd); +#ifdef USEQPE + if (wrd.length() > 10) + { + Global::statusMessage(wrd.left(8) + ".."); + } + else + { + Global::statusMessage(wrd); + } +#endif + } + if (m_doAnnotation) + { +// addAnno(wrd, "Need to be able to edit this", posn); + m_annoWin->setName(line); + m_annoWin->setAnno(""); + m_annoWin->setPosn(posn); + m_annoIsEditing = true; +#ifdef USEQPE + Global::showInputMethod(); +#endif + editorStack->raiseWidget( m_annoWin ); + } +#ifdef USEQPE + if (m_doDictionary) + { + if (!m_targetapp.isEmpty() && !m_targetmsg.isEmpty()) + { + QCopEnvelope e(("QPE/Application/"+m_targetapp).utf8(), (m_targetmsg+"(QString)").utf8()); + e << wrd; + } + } +#endif +} + +void QTReaderApp::doAction(ActionTypes a, QKeyEvent* e) +{ + if (a == 0) + { + e->ignore(); + } + else + { + e->accept(); +// qDebug("Accepted"); + switch (a) + { + case cesOpenFile: + { + fileOpen(); + } + break; + case cesAutoScroll: + { + reader->setautoscroll(!reader->m_autoScroll); + setScrollState(reader->m_autoScroll); + } + break; + case cesActionMark: + { + addbkmk(); + } + break; + case cesFullScreen: + { + m_actFullscreen->setOn(!m_fullscreen); + } + break; + case cesActionAnno: + { + addanno(); + } + break; + case cesZoomIn: + zoomin(); + break; + case cesZoomOut: + zoomout(); + break; + case cesBack: + reader->goBack(); + break; + case cesForward: + reader->goForward(); + break; + case cesHome: + reader->goHome(); + break; + case cesPageUp: + reader->dopageup(); + break; + case cesPageDown: + reader->dopagedn(); + break; + case cesLineUp: + reader->lineUp(); + break; + case cesLineDown: + reader->lineDown(); + break; + case cesStartDoc: + gotoStart(); + break; + case cesEndDoc: + gotoEnd(); + break; + default: + qDebug("Unknown ActionType:%u", a); + break; + } + } +} + +void QTReaderApp::setTwoTouch(bool _b) { reader->setTwoTouch(_b); } +void QTReaderApp::restoreFocus() { reader->setFocus(); } + +void QTReaderApp::SaveConfig() +{ + m_nRegAction = cSetConfigName; + regEdit->setText(reader->m_string); + do_regedit(); +} + +void QTReaderApp::do_saveconfig(const QString& _txt, bool full) +{ +// qDebug("do_saveconfig:%s", (const char*)_txt); +#ifdef USEQPE + QString configname; + Config::Domain dom; + + if (full) + { + configname = _txt; + dom = Config::User; + } + else + { + configname = Global::applicationFileName(APPDIR "/configs", _txt); + dom = Config::File; + } + + Config config(configname, dom); + config.setGroup( "View" ); + +#else + QFileInfo fi; + if (full) + { +// qDebug("full:%s", (const char*)_txt); + QDir d = QDir::home(); // "/" + if ( !d.cd(_txt) ) + { // "/tmp" + qWarning( "Cannot find the \"~/%s\" directory", (const char*)_txt ); + d = QDir::home(); + d.mkdir(_txt); + d.cd(_txt); + } + fi.setFile(d, INIFILE); + } + else + { + QDir d = QDir::home(); // "/" + if ( !d.cd(APPDIR) ) + { // "/tmp" + qWarning( "Cannot find the \"~/" APPDIR "\" directory" ); + d = QDir::home(); + d.mkdir(APPDIR); + d.cd(APPDIR); + } + if ( !d.cd("configs") ) + { // "/tmp" + qWarning( "Cannot find the \"~/" APPDIR "/configs\" directory" ); + d = QDir::home(); + d.cd(APPDIR); + d.mkdir("configs"); + d.cd("configs"); + } + fi.setFile(d, _txt); + } +// qDebug("Path:%s", (const char*)fi.absFilePath()); + Config config(fi.absFilePath()); +#endif + + + config.writeEntry( "StripCr", reader->bstripcr ); + config.writeEntry( "AutoFmt", reader->bautofmt ); + config.writeEntry( "TextFmt", reader->btextfmt ); + config.writeEntry( "StripHtml", reader->bstriphtml ); + config.writeEntry( "Dehyphen", reader->bdehyphen ); + config.writeEntry( "Depluck", reader->bdepluck ); + config.writeEntry( "Dejpluck", reader->bdejpluck ); + config.writeEntry( "OneSpace", reader->bonespace ); + config.writeEntry( "Unindent", reader->bunindent ); + config.writeEntry( "Repara", reader->brepara ); + config.writeEntry( "DoubleSpace", reader->bdblspce ); + config.writeEntry( "Indent", reader->bindenter ); + config.writeEntry( "FontSize", (int)(reader->m_fontControl.currentsize()) ); + config.writeEntry( "ScrollDelay", reader->m_delay); + if (full) + { + config.writeEntry("Debounce", m_debounce); + config.writeEntry("FloatDialogs", m_bFloatingDialog); + reader->m_lastposn = reader->pagelocate(); + config.writeEntry( "LastFile", reader->m_lastfile ); + config.writeEntry( "LastPosn", (int)(reader->pagelocate()) ); + } + config.writeEntry( "PageMode", reader->m_bpagemode ); + config.writeEntry( "MonoSpaced", reader->m_bMonoSpaced ); + config.writeEntry( "SwapMouse", reader->m_swapmouse); + config.writeEntry( "Fontname", reader->m_fontname ); + config.writeEntry( "Encoding", reader->m_encd ); + config.writeEntry( "CharSpacing", reader->m_charpc ); + config.writeEntry( "Overlap", (int)(reader->m_overlap) ); + config.writeEntry( "Margin", (int)reader->m_border ); + config.writeEntry( "TargetApp", m_targetapp ); + config.writeEntry( "TargetMsg", m_targetmsg ); +#ifdef _SCROLLPIPE + config.writeEntry( "PipeTarget", reader->m_pipetarget ); + config.writeEntry( "PauseAfterPara", reader->m_pauseAfterEachPara ); +#endif + config.writeEntry( "TwoTouch", m_twoTouch ); + config.writeEntry( "Annotation", m_doAnnotation); + config.writeEntry( "Dictionary", m_doDictionary); + config.writeEntry( "Clipboard", m_doClipboard); + config.writeEntry( "SpaceTarget", m_spaceTarget); + config.writeEntry( "EscapeTarget", m_escapeTarget); + config.writeEntry( "ReturnTarget", m_returnTarget); + config.writeEntry( "LeftTarget", m_leftTarget); + config.writeEntry( "RightTarget", m_rightTarget); + config.writeEntry( "UpTarget", m_upTarget); + config.writeEntry( "DownTarget", m_downTarget); + config.writeEntry("LeftScroll", m_leftScroll); + config.writeEntry("RightScroll", m_rightScroll); + config.writeEntry("UpScroll", m_upScroll); + config.writeEntry("DownScroll", m_downScroll); +#ifdef REPALM + config.writeEntry( "Repalm", reader->brepalm ); +#endif + config.writeEntry( "Remap", reader->bremap ); + config.writeEntry( "Peanut", reader->bpeanut ); + config.writeEntry( "MakeBold", reader->bmakebold ); + config.writeEntry( "Continuous", reader->m_continuousDocument ); + config.writeEntry( "FullJust", reader->bfulljust ); + config.writeEntry( "ExtraSpace", reader->getextraspace() ); + config.writeEntry( "ExtraLead", reader->getlead() ); + config.writeEntry( "Basesize", (int)reader->getBaseSize()); + config.writeEntry( "RequestorFontChange", m_propogatefontchange); + if (full) + { + config.setGroup( "Toolbar" ); + config.writeEntry("Movable", m_tbmovesave); + config.writeEntry("Policy", m_tbpolsave); + config.writeEntry("Position", m_tbposition); +#ifndef USEQPE + config.setGroup( "Geometry" ); + config.writeEntry( "x", x() ); + config.writeEntry( "y", y() ); + config.writeEntry( "width", width() ); + config.writeEntry( "height", height() ); +#endif + } +} + +/* +void QTReaderApp::setstate(unsigned char* _sd, unsigned short _sdlen) +{ + unsigned short sdlen; + memcpy(&sdlen, _sd, sizeof(sdlen)); + sdlen -= sizeof(sdlen); + _sd += sizeof(sdlen); + statedata* sd; + char* data; + if (sdlen < sizeof(statedata)+1) + { + sdlen = sizeof(statedata)+1; + } + data = new char[sdlen]; + sd = (statedata*)data; + memcpy(sd, _sd, sdlen); + data[sdlen] = 0; + reader->setstate(*sd); + delete [] data; +} + +void QTReaderApp::getstate(unsigned char*& data, unsigned short& len) +{ + unsigned char* olddata = data; + unsigned short oldlen = len; + len = oldlen+sizeof(unsigned short)+sizeof(statedata)+reader->m_fontname.length(); + data = new unsigned char[len]; + memcpy(data, olddata, oldlen); + delete [] olddata; + memcpy(data+oldlen, &len, sizeof(len)); + statedata* sd = (statedata*)(data+oldlen+sizeof(unsigned short)); + + sd->bstripcr = reader->bstripcr; + sd->btextfmt = reader->btextfmt; + sd->bautofmt = reader->bautofmt; + sd->bstriphtml = reader->bstriphtml; + sd->bpeanut = reader->bpeanut; + sd->bdehyphen = reader->bdehyphen; + sd->bdepluck = reader->bdepluck; + sd->bdejpluck = reader->bdejpluck; + sd->bonespace = reader->bonespace; + sd->bunindent = reader->bunindent; + sd->brepara = reader->brepara; + sd->bdblspce = reader->bdblspce; + sd->m_bpagemode = reader->m_bpagemode; + sd->m_bMonoSpaced = reader->m_bMonoSpaced; + sd->bremap = reader->bremap; + sd->bmakebold = reader->bmakebold; + sd->Continuous = reader->m_continuousDocument; +#ifdef REPALM + sd->brepalm = reader->brepalm; +#endif + sd->bindenter = reader->bindenter; + sd->m_textsize = reader->m_textsize; //reader->m_fontControl.currentsize() + sd->m_encd = reader->m_encd; + sd->m_charpc = reader->m_charpc; + strcpy(sd->m_fontname, reader->m_fontname.latin1()); +} +*/ +#ifdef _SCRIPT +void QTReaderApp::RunScript() +{ + fileBrowser* fb = new fileBrowser(this,"OpieReader",!m_bFloatingDialog, + 0, +// WStyle_Customize | WStyle_NoBorderEx, + "*", Global::applicationFileName(APPDIR "/scripts", "")); + + QString fn; + if (fb->exec()) + { + fn = fb->fileList[0]; + } + delete fb; + if ( !fn.isEmpty() && fork() == 0 ) + { + execlp((const char *)fn,(const char *)fn,NULL); + } +} + +void QTReaderApp::SaveScript(const char* sname) +{ + FILE* f = fopen(sname,"w"); + if (f != NULL) + { +#ifdef OPIE + fprintf(f, "#!/bin/sh\nmsg() {\n\tqcop QPE/Application/reader \"$1\" \"$2\" \"$3\"\n}\n"); +#else + fprintf(f, "#!/bin/bash\nmsg() {\n\tqcop QPE/Application/uqtreader \"$1\" \"$2\" \"$3\"\n}\n"); +#endif + fprintf(f, "msg \"Update(int)\" 0\n"); + fprintf(f, "msg \"Layout/StripCR(int)\" %d\n", (reader->bstripcr) ? 1:0); + if (reader->btextfmt) fprintf(f, "msg \"Markup(QString)\" \"Text\"\n"); + else if (reader->bautofmt) fprintf(f, "msg \"Markup(QString)\" \"Auto\"\n"); + else if (reader->bstriphtml) fprintf(f, "msg \"Markup(QString)\" \"HTML\"\n"); + else if (reader->bpeanut) fprintf(f, "msg \"Markup(QString)\" \"Peanut/PML\"\n"); + else fprintf(f, "msg \"Markup(QString)\" \"None\"\n"); + fprintf(f, "msg \"Layout/Dehyphen(int)\" %d\n", (reader->bdehyphen) ? 1:0); + fprintf(f, "msg \"Layout/Depluck(int)\" %d\n", (reader->bdepluck) ? 1:0); + fprintf(f, "msg \"Layout/Dejpluck(int)\" %d\n", (reader->bdejpluck) ? 1:0); + fprintf(f, "msg \"Layout/SingleSpace(int)\" %d\n", (reader->bonespace) ? 1:0); + fprintf(f, "msg \"Layout/Unindent(int)\" %d\n", (reader->bunindent) ? 1:0); + fprintf(f, "msg \"Layout/Re-paragraph(int)\" %d\n", (reader->brepara) ? 1:0); + fprintf(f, "msg \"Layout/DoubleSpace(int)\" %d\n", (reader->bdblspce) ? 1:0); + fprintf(f, "msg \"Layout/Indent(int)\" %d\n", reader->bindenter); + fprintf(f, "msg \"Format/SetFont(QString,int)\" \"%s\" %d\n", (const char*)reader->m_fontname, reader->m_textsize); + fprintf(f, "msg \"Navigation/Page/LineScroll(int)\" %d\n", (reader->m_bpagemode) ? 1:0); + fprintf(f, "msg \"Format/Ideogram/Word(int)\" %d\n", (reader->m_bMonoSpaced) ? 1:0); + fprintf(f, "msg \"Format/Encoding(QString)\" \"%s\"\n", (const char*)m_EncodingAction[reader->m_encd]->text()); + fprintf(f, "msg \"Format/SetWidth(int)\" %d\n", reader->m_charpc); + fprintf(f, "msg \"Navigation/SetOverlap(int)\" %d\n", reader->m_overlap); + fprintf(f, "msg \"Layout/Remap(int)\" %d\n", (reader->bremap) ? 1:0); + fprintf(f, "msg \"Layout/Embolden(int)\" %d\n", (reader->bmakebold) ? 1:0); + fprintf(f, "msg \"File/Continuous(int)\" %d\n", (reader->m_continuousDocument) ? 1:0); + fprintf(f, "msg \"File/SetDictionary(QString)\" \"%s/%s\"\n", (const char *)m_targetapp, (const char *)m_targetmsg); +#ifdef _SCROLLPIPE + fprintf(f, "msg \"File/SetScrollTarget(QString)\" \"%s\"\n", (const char *)reader->m_pipetarget); +#endif + fprintf(f, "msg \"File/Two/OneTouch(int)\" %d\n", (m_twoTouch) ? 1:0); + fprintf(f, "msg \"Target/Annotation(int)\" %d\n", (m_doAnnotation) ? 1:0); + fprintf(f, "msg \"Target/Dictionary(int)\" %d\n", (m_doDictionary) ? 1:0); + fprintf(f, "msg \"Target/Clipboard(int)\" %d\n", (m_doClipboard) ? 1:0); + fprintf(f, "msg \"File/Action(QString)\" \"%s\"\n", (const char *)m_buttonAction[m_spaceTarget]->text()); + fprintf(f, "msg \"Update(int)\" 1\n"); + fprintf(f, "msg \"info(QString)\" \"All Done\"\n"); + fclose(f); + chmod(sname, S_IXUSR | S_IXGRP | S_IXOTH); + } +} + +void QTReaderApp::SaveConfig() +{ + m_nRegAction = cSetConfigName; + regEdit->setText(""); + do_regedit(); +} + +void QTReaderApp::do_saveconfig(const QString& _txt) +{ + SaveScript(Global::applicationFileName(APPDIR "/scripts", _txt)); +} +#endif + +#ifdef _SCROLLPIPE +void QTReaderApp::setpipetarget() +{ + m_nRegAction = cSetPipeTarget; + QString text = (reader->m_pipetarget.isEmpty()) ? QString("") : reader->m_pipetarget; + regEdit->setText(text); + do_regedit(); +} + +void QTReaderApp::do_setpipetarget(const QString& _txt) +{ + reader->m_pipetarget = _txt; +} + +void QTReaderApp::setpause(bool sfs) +{ + reader->m_pauseAfterEachPara = sfs; +} +#endif + +void QTReaderApp::monospace(bool _b) +{ + reader->setmono(_b); +} + +bool QTReaderApp::readconfig(const QString& _txt, bool full=false) +{ +#ifdef USEQPE + QString configname; + Config::Domain dom; + + if (full) + { + configname = _txt; + dom = Config::User; + } + else + { + configname = Global::applicationFileName(APPDIR "/configs", _txt); + QFileInfo fm(configname); + if ( !fm.exists() ) return false; + dom = Config::File; + } + + Config config(configname, dom); + config.setGroup( "View" ); + +#else + QFileInfo fi; + if (full) + { + QDir d = QDir::home(); // "/" + if ( !d.cd(_txt) ) + { // "/tmp" + qWarning( "Cannot find the \"~/%s\" directory", (const char*)_txt ); + d = QDir::home(); + d.mkdir(_txt); + d.cd(_txt); + } + fi.setFile(d, INIFILE); + } + else + { + QDir d = QDir::home(); // "/" + if ( !d.cd(APPDIR) ) + { // "/tmp" + qWarning( "Cannot find the \"~/" APPDIR "\" directory" ); + d = QDir::home(); + d.mkdir(APPDIR); + d.cd(APPDIR); + } + if ( !d.cd("configs") ) + { // "/tmp" + qWarning( "Cannot find the \"~/" APPDIR "/configs\" directory" ); + d = QDir::home(); + d.mkdir("configs"); + d.cd("configs"); + } + fi.setFile(d, _txt); + } +#ifdef _WINDOWS + struct stat fnstat; + if (stat((const char *)reader->m_lastfile, &fnstat) == 0) return false; // get round fileinfo bug on windows +#else + if (!fi.exists()) return false; +#endif + Config config(fi.absFilePath()); +#endif + if (full) + { + config.setGroup("Toolbar"); + m_tbmovesave = m_tbmove = config.readBoolEntry("Movable", false); + m_tbpolsave = m_tbpol = (ToolbarPolicy)config.readNumEntry("Policy", 1); + m_tbposition = (ToolBarDock)config.readNumEntry("Position", 2); + } + config.setGroup( "View" ); + m_bFloatingDialog = config.readBoolEntry("FloatDialogs", false); + reader->bstripcr = config.readBoolEntry( "StripCr", true ); + reader->bfulljust = config.readBoolEntry( "FullJust", false ); + reader->setextraspace(config.readNumEntry( "ExtraSpace", 0 )); + reader->setlead(config.readNumEntry( "ExtraLead", 0 )); + reader->btextfmt = config.readBoolEntry( "TextFmt", false ); + reader->bautofmt = config.readBoolEntry( "AutoFmt", true ); + reader->bstriphtml = config.readBoolEntry( "StripHtml", false ); + reader->bpeanut = config.readBoolEntry( "Peanut", false ); + reader->bdehyphen = config.readBoolEntry( "Dehyphen", false ); + reader->bdepluck = config.readBoolEntry( "Depluck", false ); + reader->bdejpluck = config.readBoolEntry( "Dejpluck", false ); + reader->bonespace = config.readBoolEntry( "OneSpace", false ); + reader->bunindent = config.readBoolEntry( "Unindent", false ); + reader->brepara = config.readBoolEntry( "Repara", false ); + reader->bdblspce = config.readBoolEntry( "DoubleSpace", false ); + reader->bindenter = config.readNumEntry( "Indent", 0 ); + reader->m_textsize = config.readNumEntry( "FontSize", 12 ); + reader->m_delay = config.readNumEntry( "ScrollDelay", 5184); + if (full) + { + reader->m_lastfile = config.readEntry( "LastFile", QString::null ); + reader->m_lastposn = config.readNumEntry( "LastPosn", 0 ); + } + reader->m_bpagemode = config.readBoolEntry( "PageMode", true ); + reader->m_bMonoSpaced = config.readBoolEntry( "MonoSpaced", false); + reader->m_swapmouse = config.readBoolEntry( "SwapMouse", false); + reader->m_fontname = config.readEntry( "Fontname", "helvetica" ); + reader->m_encd = config.readNumEntry( "Encoding", 0 ); + reader->m_charpc = config.readNumEntry( "CharSpacing", 100 ); + reader->m_overlap = config.readNumEntry( "Overlap", 0 ); + reader->m_border = config.readNumEntry( "Margin", 6 ); +#ifdef REPALM + reader->brepalm = config.readBoolEntry( "Repalm", true ); +#endif + reader->bremap = config.readBoolEntry( "Remap", true ); + reader->bmakebold = config.readBoolEntry( "MakeBold", false ); + reader->setContinuous(config.readBoolEntry( "Continuous", true )); + m_targetapp = config.readEntry( "TargetApp", QString::null ); + m_targetmsg = config.readEntry( "TargetMsg", QString::null ); +#ifdef _SCROLLPIPE + reader->m_pipetarget = config.readEntry( "PipeTarget", QString::null ); + reader->m_pauseAfterEachPara = config.readBoolEntry( "PauseAfterPara", true ); +#endif + m_twoTouch = config.readBoolEntry( "TwoTouch", false); + m_doAnnotation = config.readBoolEntry( "Annotation", false); + m_doDictionary = config.readBoolEntry( "Dictionary", false); + m_doClipboard = config.readBoolEntry( "Clipboard", false); + m_spaceTarget = (ActionTypes)config.readNumEntry("SpaceTarget", cesAutoScroll); + m_escapeTarget = (ActionTypes)config.readNumEntry("EscapeTarget", cesNone); + m_returnTarget = (ActionTypes)config.readNumEntry("ReturnTarget", cesFullScreen); + m_leftTarget = (ActionTypes)config.readNumEntry("LeftTarget", cesZoomOut); + m_rightTarget = (ActionTypes)config.readNumEntry("RightTarget", cesZoomIn); + m_upTarget = (ActionTypes)config.readNumEntry("UpTarget", cesPageUp); + m_downTarget = (ActionTypes)config.readNumEntry("DownTarget", cesPageDown); + + m_leftScroll = config.readBoolEntry("LeftScroll", false); + m_rightScroll = config.readBoolEntry("RightScroll", false); + m_upScroll = config.readBoolEntry("UpScroll", true); + m_downScroll = config.readBoolEntry("DownScroll", true); + m_propogatefontchange = config.readBoolEntry( "RequestorFontChange", false); + reader->setBaseSize(config.readNumEntry( "Basesize", 10 )); + reader->setTwoTouch(m_twoTouch); + + m_touch_action->setOn(m_twoTouch); + m_setmono_action->setOn(reader->m_bMonoSpaced); + setfontHelper(reader->m_fontname); + if (full) + { + addtoolbars(&config); + } + reader->setfilter(reader->getfilter()); + reader->refresh(); + return true; +} + +bool QTReaderApp::PopulateConfig(const char* tgtdir) +{ + bkmkselector->clear(); + bkmkselector->setText("Cancel"); +#ifndef USEQPE + int cnt = 0; + + QDir d = QDir::home(); // "/" + if ( !d.cd(APPDIR) ) { // "/tmp" + qWarning( "Cannot find the \"~/" APPDIR "\" directory" ); + d = QDir::home(); + d.mkdir(APPDIR); + d.cd(APPDIR); + } + if ( !d.cd(tgtdir) ) { // "/tmp" + qWarning( "Cannot find the \"~/" APPDIR "/%s\" directory", tgtdir ); + d = QDir::home(); + d.mkdir(tgtdir); + d.cd(tgtdir); + } + d.setFilter( QDir::Files | QDir::NoSymLinks ); +// d.setSorting( QDir::Size | QDir::Reversed ); + + const QFileInfoList *list = d.entryInfoList(); + QFileInfoListIterator it( *list ); // create list iterator + QFileInfo *fi; // pointer for traversing + + while ( (fi=it.current()) ) { // for each file... + + bkmkselector->insertItem(fi->fileName()); + cnt++; + + //qDebug( "%10li %s", fi->size(), fi->fileName().data() ); + ++it; // goto next list element + } + +#else /* USEQPE */ + int cnt = 0; + DIR *d; + char* finaldir; + finaldir = new char[strlen(APPDIR)+1+strlen(tgtdir)+1]; + strcpy(finaldir, APPDIR); + strcat(finaldir, "/"); + strcat(finaldir, tgtdir); + d = opendir((const char *)Global::applicationFileName(finaldir,"")); + + while(1) + { + struct dirent* de; + struct stat buf; + de = readdir(d); + if (de == NULL) break; + + if (lstat((const char *)Global::applicationFileName(finaldir,de->d_name),&buf) == 0 && S_ISREG(buf.st_mode)) + { + bkmkselector->insertItem(de->d_name); + cnt++; + } + } + delete [] finaldir; + closedir(d); +#endif + return (cnt > 0); +} + +void QTReaderApp::LoadConfig() +{ + if (PopulateConfig("configs")) + { + editorStack->raiseWidget( bkmkselector ); + hidetoolbars(); + m_nBkmkAction = cLdConfig; + } + else + QMessageBox::information(this, PROGNAME, "No config files"); +} + +void QTReaderApp::TidyConfig() +{ + if (PopulateConfig("configs")) + { + editorStack->raiseWidget( bkmkselector ); + hidetoolbars(); + m_nBkmkAction = cRmConfig; + } + else + QMessageBox::information(this, PROGNAME, "No config files"); +} + +void QTReaderApp::ExportLinks() +{ + if (PopulateConfig("urls")) + { + editorStack->raiseWidget( bkmkselector ); + hidetoolbars(); + m_nBkmkAction = cExportLinks; + } + else + QMessageBox::information(this, PROGNAME, "No url files"); +} + +void QTReaderApp::OnURLSelected(const QString& href) +{ + CURLDialog* urld = new CURLDialog(href, false, this); + urld->clipboard(m_url_clipboard); + urld->localfile(m_url_localfile); + urld->globalfile(m_url_globalfile); + if (urld->exec()) + { + m_url_clipboard = urld->clipboard(); + m_url_localfile = urld->localfile(); + m_url_globalfile = urld->globalfile(); + if (m_url_clipboard) + { + QClipboard* cb = QApplication::clipboard(); + cb->setText(href); + qDebug("%s", (const char*)href, (const char*)href); + } + if (m_url_localfile) + { + writeUrl(reader->m_string, href); + } + if (m_url_globalfile) + { + writeUrl("GlobalURLFile", href); + } + } + delete urld; +} + +void QTReaderApp::writeUrl(const QString& file, const QString& href) +{ + QString filename; +#ifdef USEQPE + filename = Global::applicationFileName(APPDIR "/urls", file); +#else + QFileInfo fi; + QDir d = QDir::home(); // "/" + if ( !d.cd(APPDIR) ) + { // "/tmp" + qWarning( "Cannot find the \"~/" APPDIR "\" directory" ); + d = QDir::home(); + d.mkdir(APPDIR); + d.cd(APPDIR); + } + if ( !d.cd("urls") ) + { // "/tmp" + qWarning( "Cannot find the \"~/" APPDIR "/urls\" directory" ); + d = QDir::home(); + d.cd(APPDIR); + d.mkdir("urls"); + d.cd("urls"); + } + fi.setFile(d, file); + filename = fi.absFilePath(); +#endif + FILE* fout = fopen(filename, "a"); + if (fout != NULL) + { + fprintf(fout, "

%s\n", (const char*)href, (const char*)href); + fclose(fout); + } + else + { + QMessageBox::warning(this, PROGNAME, "Problem with writing URL"); + } +} diff --git a/noncore/apps/opie-reader/ToolbarPrefs.cpp b/noncore/apps/opie-reader/ToolbarPrefs.cpp index 361bf97..d878829 100644 --- a/noncore/apps/opie-reader/ToolbarPrefs.cpp +++ b/noncore/apps/opie-reader/ToolbarPrefs.cpp @@ -6,7 +6,7 @@ ** ** WARNING! All changes made in this file will be lost! ****************************************************************************/ -#include "useqpe.h" +#include "useqpe.h" #include "ToolbarPrefs.h" #include @@ -20,9 +20,10 @@ #include #include #include -#ifdef USEQPE +#ifdef USEQPE #include -#endif +#endif +#include CBarPrefs::CBarPrefs(const QString& appdir, bool fs, QWidget* parent, const char* name) : QDialog(parent, name, true), config( appdir ) { @@ -43,7 +44,8 @@ CBarPrefs::CBarPrefs(const QString& appdir, bool fs, QWidget* parent, const char QVBoxLayout* v = new QVBoxLayout(this); v->addWidget(td); - if (fs) showMaximized(); + if (fs) + QPEApplication::showDialog( this ); } /* diff --git a/noncore/apps/opie-reader/URLDialog.cpp b/noncore/apps/opie-reader/URLDialog.cpp index dd4568b..e572c80 100644 --- a/noncore/apps/opie-reader/URLDialog.cpp +++ b/noncore/apps/opie-reader/URLDialog.cpp @@ -1,14 +1,17 @@ -#include "URLDialog.h" -#include "qlayout.h" - -CURLDialog::CURLDialog(const QString& fname, bool fs, QWidget* parent, const char* name) : QDialog(parent, name, true) -{ - setCaption(tr("Save URL")); - QVBoxLayout *tmp = new QVBoxLayout(this); - QVButtonGroup* vb = new QVButtonGroup(fname, this); - tmp->addWidget(vb); - m_clipboard = new QCheckBox(tr("Clipboard"), vb); - m_localfile = new QCheckBox(tr("Local file"), vb); - m_globalfile = new QCheckBox(tr("Global file"), vb); - if (fs) showMaximized(); -} +#include "URLDialog.h" +#include "qlayout.h" + +#include + +CURLDialog::CURLDialog(const QString& fname, bool fs, QWidget* parent, const char* name) : QDialog(parent, name, true) +{ + setCaption(tr("Save URL")); + QVBoxLayout *tmp = new QVBoxLayout(this); + QVButtonGroup* vb = new QVButtonGroup(fname, this); + tmp->addWidget(vb); + m_clipboard = new QCheckBox(tr("Clipboard"), vb); + m_localfile = new QCheckBox(tr("Local file"), vb); + m_globalfile = new QCheckBox(tr("Global file"), vb); + if (fs) + QPEApplication::showDialog( this ); +} diff --git a/noncore/apps/opie-reader/fileBrowser.cpp b/noncore/apps/opie-reader/fileBrowser.cpp index 9cd371d..05f2c31 100644 --- a/noncore/apps/opie-reader/fileBrowser.cpp +++ b/noncore/apps/opie-reader/fileBrowser.cpp @@ -22,6 +22,8 @@ Extensive modification by Tim Wentford to allow it to work in rotated mode #include #endif +#include + #include "opie.h" fileBrowser::fileBrowser( bool allownew, QWidget* parent, const char* name, bool modal, WFlags fl , const QString filter, const QString iPath ) @@ -115,7 +117,8 @@ fileBrowser::fileBrowser( bool allownew, QWidget* parent, const char* name, boo populateList(); - if (modal) showMaximized(); + if (modal) + QPEApplication::showDialog( this ); } void fileBrowser::resizeEvent(QResizeEvent* e) diff --git a/noncore/apps/opie-sheet/mainwindow.cpp b/noncore/apps/opie-sheet/mainwindow.cpp index bd98aca..3d3c688 100644 --- a/noncore/apps/opie-sheet/mainwindow.cpp +++ b/noncore/apps/opie-sheet/mainwindow.cpp @@ -17,10 +17,13 @@ #include #include #include +#include + #include #include #include #include + #include "cellformat.h" #include "numberdlg.h" #include "textdlg.h" @@ -747,7 +750,7 @@ void MainWindow::addFlyAction(const QString &text, const QString &menuText, cons void MainWindow::slotFormatCells() { CellFormat dialogCellFormat(this); - dialogCellFormat.showMaximized(); + QPEApplication::showDialog( &dialogCellFormat ); dialogCellFormat.exec(sheet); } @@ -967,7 +970,7 @@ void MainWindow::slotSheetRemove() void MainWindow::slotDataSort() { SortDialog dialogSort(this); - dialogSort.showMaximized(); + QPEApplication::showDialog( &dialogSort ); dialogSort.exec(sheet); } @@ -1003,6 +1006,6 @@ void MainWindow::slotInsertCells() void MainWindow::slotDataFindReplace() { FindDialog dialogFind(this); - dialogFind.showMaximized(); + QPEApplication::showDialog( &dialogFind ); dialogFind.exec(sheet); } diff --git a/noncore/apps/tableviewer/ui/tveditview.cpp b/noncore/apps/tableviewer/ui/tveditview.cpp index 23e2b42..20a24c8 100644 --- a/noncore/apps/tableviewer/ui/tveditview.cpp +++ b/noncore/apps/tableviewer/ui/tveditview.cpp @@ -40,14 +40,16 @@ #include #include -TVEditView::TVEditView(TableState *s, DataElem *d, QWidget* parent, +#include + +TVEditView::TVEditView(TableState *s, DataElem *d, QWidget* parent, const char *name, WFlags fl ) : QDialog(parent, name, true, fl) { if (!name) setName("TVEditView"); QVBoxLayout *layout = new QVBoxLayout(this, 0); /* only so that will resize - correctly in other + correctly in other widgets */ toggles = new QSignalMapper(this); @@ -64,7 +66,7 @@ TVEditView::TVEditView(TableState *s, DataElem *d, QWidget* parent, setData(s, d); #ifdef Q_WS_QWS - showMaximized(); + QPEApplication::showDialog( this ); #endif } diff --git a/noncore/apps/tableviewer/ui/tvfilterview.cpp b/noncore/apps/tableviewer/ui/tvfilterview.cpp index 0182127..b03e846 100644 --- a/noncore/apps/tableviewer/ui/tvfilterview.cpp +++ b/noncore/apps/tableviewer/ui/tvfilterview.cpp @@ -16,7 +16,7 @@ ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** -**********************************************************************/ +**********************************************************************/ #include "tvfilterview.h" #include #include @@ -26,7 +26,9 @@ #include #include -TVFilterView::TVFilterView(TableState *t, QWidget* parent, +#include + +TVFilterView::TVFilterView(TableState *t, QWidget* parent, const char *name, WFlags fl ) : QDialog(parent, name, TRUE, fl) { if ( !name ) @@ -95,7 +97,7 @@ TVFilterView::TVFilterView(TableState *t, QWidget* parent, do_filter = false; #ifdef Q_WS_QWS - showMaximized(); + QPEApplication::showDialog( this ); #endif } diff --git a/noncore/apps/tableviewer/ui/tvkeyedit.cpp b/noncore/apps/tableviewer/ui/tvkeyedit.cpp index 4849e87..c22ecd3 100644 --- a/noncore/apps/tableviewer/ui/tvkeyedit.cpp +++ b/noncore/apps/tableviewer/ui/tvkeyedit.cpp @@ -26,6 +26,8 @@ #include #include +#include + /* QList view item... ?? that can store and update the values that I will * be changing */ @@ -135,19 +137,19 @@ TVKeyEdit::TVKeyEdit(TableState *t, QWidget* parent, const char *name, display->setSorting(0); #ifdef Q_WS_QWS - showMaximized(); + QPEApplication::showDialog( this ); #endif } /*! - Destroys the TVKeyEdit widget + Destroys the TVKeyEdit widget */ TVKeyEdit::~TVKeyEdit() { } /* SLOTS */ -void TVKeyEdit::newTerm() +void TVKeyEdit::newTerm() { /* new item, make current Item */ int i; diff --git a/noncore/apps/tinykate/libkate/view/kateview.cpp b/noncore/apps/tinykate/libkate/view/kateview.cpp index af3b30d..794fbdb 100644 --- a/noncore/apps/tinykate/libkate/view/kateview.cpp +++ b/noncore/apps/tinykate/libkate/view/kateview.cpp @@ -84,6 +84,7 @@ #include "kateviewdialog.h" #include "kateundohistory.h" #include +#include KateViewInternal::KateViewInternal(KateView *view, KateDocument *doc) : QWidget(view) { @@ -2327,8 +2328,7 @@ void KateView::configDialog() (new QVBoxLayout(page))->setAutoAdd(true); hlPage = new HighlightDialogPage(hlManager, &defaultStyleList, &hlDataList, 0, page); - kd->showMaximized(); - if (kd->exec()) { + if ( QPEApplication::execDialog( kd )) { // color options colorConfig->getColors(colors); myDoc->setFont (fontConfig->getFont()); diff --git a/noncore/apps/zsafe/scqtfileedit.cpp b/noncore/apps/zsafe/scqtfileedit.cpp index effd86b..7a3d906 100644 --- a/noncore/apps/zsafe/scqtfileedit.cpp +++ b/noncore/apps/zsafe/scqtfileedit.cpp @@ -28,6 +28,8 @@ #include "scqtfileedit.h" +#include + // #define DEBUGFILEEDIT /* XPM */ @@ -158,7 +160,7 @@ ScQtFileEditDlg::ScQtFileEditDlg( QWidget *parent, const char *name, cdToParentIcon = new QPixmap( (const char **)cdtoparent_xpm); #ifdef QWS - showMaximized(); + QPEApplication::execDialog( this ); #endif mkdirflag = false; diff --git a/noncore/apps/zsafe/zsafe.cpp b/noncore/apps/zsafe/zsafe.cpp index ee1da77..bdd2aed 100644 --- a/noncore/apps/zsafe/zsafe.cpp +++ b/noncore/apps/zsafe/zsafe.cpp @@ -775,14 +775,8 @@ void ZSafe::editPwd() dialog->Field6->setText(selectedItem->text (5)); dialog->CommentField->insertLine(comment); dialog->CommentField->setCursorPosition(0,0); -#ifdef DESKTOP -#ifndef WIN32 - dialog->show(); -#endif -#else - dialog->showMaximized(); -#endif - DialogCode result = (DialogCode) dialog->exec(); + + DialogCode result = (DialogCode) QPEApplication::execDialog( dialog ); #ifdef DESKTOP result = Accepted; @@ -840,21 +834,15 @@ void ZSafe::newPwd() dialog->Field5Label->setText(getFieldLabel (selectedItem,"5", tr("Field 4"))); dialog->Field6Label->setText(getFieldLabel (selectedItem,"6", tr("Field 5"))); retype: -#ifdef DESKTOP -#ifndef WIN32 - dialog->show(); -#endif -#else - dialog->showMaximized(); -#endif - DialogCode result = (DialogCode) dialog->exec(); + + DialogCode result = (DialogCode) QPEApplication::execDialog( dialog ); #ifdef DESKTOP result = Accepted; #endif if (result == Accepted) { - + QString name = dialog->NameField->text(); if (cat == name) { @@ -1188,12 +1176,7 @@ void ZSafe::showInfo( QListViewItem *_item) infoForm->InfoText->setText(text); infoForm->hide(); -#ifdef DESKTOP - infoForm->show(); -#else - infoForm->showMaximized(); -#endif - + QPEApplication::showDialog( infoForm ); } } @@ -1203,7 +1186,7 @@ void ZSafe::listViewSelected( QListViewItem *_item) return; if (selectedItem != NULL) selectedItem->setSelected(FALSE); - + selectedItem = _item; #ifndef DESKTOP diff --git a/noncore/comm/keypebble/kvnc.cpp b/noncore/comm/keypebble/kvnc.cpp index 25c8919..2fa8d1f 100644 --- a/noncore/comm/keypebble/kvnc.cpp +++ b/noncore/comm/keypebble/kvnc.cpp @@ -127,8 +127,7 @@ void KVNC::newConnection() curServer=new KRFBServer; KVNCConnDlg dlg( curServer,this); - dlg.showMaximized(); - if ( dlg.exec()) { + if ( QPEApplication::execDialog( &dlg )) { if (!curServer->name.isEmpty()) bookmarkSelector->addBookmark(curServer); canvas->openConnection(*curServer); @@ -142,9 +141,7 @@ void KVNC::openConnection( QString name) if (curServer) { KVNCConnDlg dlg( curServer,this); - dlg.showMaximized(); - - if ( dlg.exec() ) { + if ( QPEApplication::execDialog( &dlg ) ) { canvas->openConnection(*curServer); bookmarkSelector->writeBookmarks(); } else -- cgit v0.9.0.2