summaryrefslogtreecommitdiff
path: root/noncore/apps/opie-reader/QTReaderApp.cpp
Unidiff
Diffstat (limited to 'noncore/apps/opie-reader/QTReaderApp.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/apps/opie-reader/QTReaderApp.cpp246
1 files changed, 176 insertions, 70 deletions
diff --git a/noncore/apps/opie-reader/QTReaderApp.cpp b/noncore/apps/opie-reader/QTReaderApp.cpp
index 876b65a..6753698 100644
--- a/noncore/apps/opie-reader/QTReaderApp.cpp
+++ b/noncore/apps/opie-reader/QTReaderApp.cpp
@@ -12,16 +12,17 @@
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20
20#include <qregexp.h> 21#include <qregexp.h>
21#include <qclipboard.h> 22#include <qclipboard.h>
22#include <qwidgetstack.h> 23#include <qwidgetstack.h>
23#ifdef USEQPE 24#ifdef USEQPE
24#include <qpe/qpemenubar.h> 25#include <qpe/qpemenubar.h>
25#include <qpe/qpetoolbar.h> 26#include <qpe/qpetoolbar.h>
26#endif 27#endif
27#include <qmenubar.h> 28#include <qmenubar.h>
@@ -61,39 +62,44 @@
61#include "ToolbarPrefs.h" 62#include "ToolbarPrefs.h"
62#include "Prefs.h" 63#include "Prefs.h"
63#include "CAnnoEdit.h" 64#include "CAnnoEdit.h"
64#include "QFloatBar.h" 65#include "QFloatBar.h"
65#include "FixedFont.h" 66#include "FixedFont.h"
66#include "URLDialog.h" 67#include "URLDialog.h"
67#include "util.h" 68#include "util.h"
68#include <qfontdatabase.h> 69#include <qfontdatabase.h>
70
69#ifdef USEQPE 71#ifdef USEQPE
70#include <qpe/resource.h> 72#include <qpe/resource.h>
71#ifdef OPIE 73#ifdef OPIE
72//#include <qpe/applnk.h> 74#if defined(OPIEFILEDIALOG)
75#include <qpe/applnk.h>
73#include <opie2/ofiledialog.h> 76#include <opie2/ofiledialog.h>
74using namespace Opie::Ui; 77using namespace Opie::Ui;
75#else 78#else
76#include "fileBrowser.h" 79#include "fileBrowser.h"
77#endif 80#endif
78#else 81#else
82#include "fileBrowser.h"
83#endif
84#else
79#include "qfiledialog.h" 85#include "qfiledialog.h"
80#endif 86#endif
81 87
82#include "QTReaderApp.h" 88#include "QTReaderApp.h"
83#include "CDrawBuffer.h" 89#include "CDrawBuffer.h"
84#include "Filedata.h" 90#include "Filedata.h"
85#include "names.h" 91#include "names.h"
86#include "CEncoding_tables.h" 92#include "CEncoding_tables.h"
87#include "CloseDialog.h" 93#include "CloseDialog.h"
88 94
89#include "ButtonPrefs.h" 95#include "ButtonPrefs.h"
90 96
91bool CheckVersion(int&, int&, char&); 97bool CheckVersion(int&, int&, char&, QWidget*);
92 98
93#ifdef _WINDOWS 99#ifdef _WINDOWS
94#define PICDIR "c:\\uqtreader\\pics\\" 100#define PICDIR "c:\\uqtreader\\pics\\"
95#else 101#else
96#ifdef USEQPE 102#ifdef USEQPE
97#define USEMSGS 103#define USEMSGS
98#define PICDIR "opie-reader/" 104#define PICDIR "opie-reader/"
99#else 105#else
@@ -148,21 +154,19 @@ void QTReaderApp::listBkmkFiles()
148 154
149 155
150 d.setFilter( QDir::Files | QDir::NoSymLinks ); 156 d.setFilter( QDir::Files | QDir::NoSymLinks );
151// d.setSorting( QDir::Size | QDir::Reversed ); 157// d.setSorting( QDir::Size | QDir::Reversed );
152 158
153 const QFileInfoList *list = d.entryInfoList(); 159 const QFileInfoList *list = d.entryInfoList();
154 QFileInfoListIterator it( *list ); // create list iterator 160 QFileInfoListIterator it( *list ); // create list iterator
155 QFileInfo *fi; // pointer for traversing 161 QFileInfo *fi; // pointer for traversing
156
157 while ( (fi=it.current()) ) { // for each file... 162 while ( (fi=it.current()) ) { // for each file...
158 163
159 bkmkselector->insertItem(fi->fileName()); 164 bkmkselector->insertItem(fi->fileName(), cnt++);
160 cnt++;
161 165
162 //qDebug( "%10li %s", fi->size(), fi->fileName().data() ); 166 //qDebug( "%10li %s", fi->size(), fi->fileName().data() );
163 ++it; // goto next list element 167 ++it; // goto next list element
164 } 168 }
165 169
166#else /* USEQPE */ 170#else /* USEQPE */
167 int cnt = 0; 171 int cnt = 0;
168 DIR *d; 172 DIR *d;
@@ -172,18 +176,17 @@ void QTReaderApp::listBkmkFiles()
172 { 176 {
173 struct dirent* de; 177 struct dirent* de;
174 struct stat buf; 178 struct stat buf;
175 de = readdir(d); 179 de = readdir(d);
176 if (de == NULL) break; 180 if (de == NULL) break;
177 181
178 if (lstat((const char *)Global::applicationFileName(APPDIR,de->d_name),&buf) == 0 && S_ISREG(buf.st_mode)) 182 if (lstat((const char *)Global::applicationFileName(APPDIR,de->d_name),&buf) == 0 && S_ISREG(buf.st_mode))
179 { 183 {
180 bkmkselector->insertItem(de->d_name); 184 bkmkselector->insertItem(de->d_name, cnt++);
181 cnt++;
182 } 185 }
183 } 186 }
184 187
185 closedir(d); 188 closedir(d);
186#endif 189#endif
187 if (cnt > 0) 190 if (cnt > 0)
188 { 191 {
189//tjw menu->hide(); 192//tjw menu->hide();
@@ -197,17 +200,17 @@ void QTReaderApp::listBkmkFiles()
197 QMessageBox::information(this, PROGNAME, "No bookmark files"); 200 QMessageBox::information(this, PROGNAME, "No bookmark files");
198} 201}
199 202
200void QTReaderApp::hidetoolbars() 203void QTReaderApp::hidetoolbars()
201{ 204{
202 if (m_scrollbar != NULL) m_scrollbar->hide(); 205 if (m_scrollbar != NULL) m_scrollbar->hide();
203 if (m_prog != NULL) m_prog->hide(); 206 if (m_prog != NULL) m_prog->hide();
204 207
205#ifdef USEQPE 208#if defined(USEQPE)
206 menubar->hide(); 209 menubar->hide();
207#endif 210#endif
208 211
209 if (m_scrollbar != NULL) m_scrollbar->hide(); 212 if (m_scrollbar != NULL) m_scrollbar->hide();
210 213
211 if (fileBar != NULL) fileBar->hide(); 214 if (fileBar != NULL) fileBar->hide();
212 if (viewBar != NULL) viewBar->hide(); 215 if (viewBar != NULL) viewBar->hide();
213 if (navBar != NULL) navBar->hide(); 216 if (navBar != NULL) navBar->hide();
@@ -328,24 +331,24 @@ QTReaderApp::QTReaderApp( QWidget *parent, const char *name, WFlags f )
328 m_qtscroll = config.readNumEntry("QTScrollBar", false); 331 m_qtscroll = config.readNumEntry("QTScrollBar", false);
329 m_localscroll = config.readNumEntry("LocalScrollBar", false); 332 m_localscroll = config.readNumEntry("LocalScrollBar", false);
330 333
331// fileBar = new QToolBar("File", this); 334// fileBar = new QToolBar("File", this);
332// QToolBar* viewBar = new QToolBar("File", this); 335// QToolBar* viewBar = new QToolBar("File", this);
333// QToolBar* navBar = new QToolBar("File", this); 336// QToolBar* navBar = new QToolBar("File", this);
334// QToolBar* markBar = new QToolBar("File", this); 337// QToolBar* markBar = new QToolBar("File", this);
335 338
336#ifdef USEQPE 339#if defined(USEQPE)
337 menubar = new QToolBar("Menus", this, m_tbposition); 340 menubar = new QToolBar("Menus", this, m_tbposition);
338 mb = new QPEMenuBar( menubar ); 341 mb = new QPEMenuBar( menubar );
339#else 342#else
340 mb = new QMenuBar( this ); 343 mb = new QMenuBar( this );
341#endif 344#endif
342 345
343#ifdef USEQPE 346#if defined(USEQPE)
344 QPopupMenu* tmp = new QPopupMenu(mb); 347 QPopupMenu* tmp = new QPopupMenu(mb);
345 mb->insertItem( geticon( "AppsIcon" ), tmp ); 348 mb->insertItem( geticon( "AppsIcon" ), tmp );
346#else 349#else
347 QMenuBar* tmp = mb; 350 QMenuBar* tmp = mb;
348#endif 351#endif
349 352
350 QPopupMenu *file = new QPopupMenu( mb ); 353 QPopupMenu *file = new QPopupMenu( mb );
351 tmp->insertItem( tr( "File" ), file ); 354 tmp->insertItem( tr( "File" ), file );
@@ -431,16 +434,19 @@ QTReaderApp::QTReaderApp( QWidget *parent, const char *name, WFlags f )
431 434
432#ifdef USEQPE 435#ifdef USEQPE
433 ((QPEApplication*)qApp)->setStylusOperation(reader, QPEApplication::RightOnHold); 436 ((QPEApplication*)qApp)->setStylusOperation(reader, QPEApplication::RightOnHold);
434#endif 437#endif
435 438
436// qDebug("Reading config"); 439// qDebug("Reading config");
437// Config config( APPDIR ); 440// Config config( APPDIR );
438 config.setGroup( "View" ); 441 config.setGroup( "View" );
442#if defined(USEQPE) && defined(USENEWFULLSCREEN)
443 m_usenewfullscreen = config.readBoolEntry("NewFullScreen", false);
444#endif
439 m_debounce = config.readNumEntry("Debounce", 0); 445 m_debounce = config.readNumEntry("Debounce", 0);
440 m_buttonprefs->Debounce(m_debounce); 446 m_buttonprefs->Debounce(m_debounce);
441#ifdef USEQPE 447#ifdef USEQPE
442 m_bFloatingDialog = config.readBoolEntry("FloatDialogs", false); 448 m_bFloatingDialog = config.readBoolEntry("FloatDialogs", false);
443#else 449#else
444 m_bFloatingDialog = config.readBoolEntry("FloatDialogs", true); 450 m_bFloatingDialog = config.readBoolEntry("FloatDialogs", true);
445#endif 451#endif
446 reader->setStripCR(config.readBoolEntry( "StripCr", true )); 452 reader->setStripCR(config.readBoolEntry( "StripCr", true ));
@@ -451,31 +457,34 @@ QTReaderApp::QTReaderApp( QWidget *parent, const char *name, WFlags f )
451 */ 457 */
452 reader->bInverse = config.readBoolEntry("Inverse", false); 458 reader->bInverse = config.readBoolEntry("Inverse", false);
453 reader->m_fontControl.FixGraphics(config.readBoolEntry( "FixGraphics", false )); 459 reader->m_fontControl.FixGraphics(config.readBoolEntry( "FixGraphics", false ));
454 reader->setextraspace(config.readNumEntry( "ExtraSpace", 0 )); 460 reader->setextraspace(config.readNumEntry( "ExtraSpace", 0 ));
455 reader->setlead(config.readNumEntry( "ExtraLead", 0 )); 461 reader->setlead(config.readNumEntry( "ExtraLead", 0 ));
456 reader->btextfmt = config.readBoolEntry( "TextFmt", false ); 462 reader->btextfmt = config.readBoolEntry( "TextFmt", false );
457 reader->bautofmt = config.readBoolEntry( "AutoFmt", true ); 463 reader->bautofmt = config.readBoolEntry( "AutoFmt", true );
458 reader->bstriphtml = config.readBoolEntry( "StripHtml", false ); 464 reader->bstriphtml = config.readBoolEntry( "StripHtml", false );
465 reader->bNoInlineTables = config.readBoolEntry( "NoInlineTables", false );
459 reader->bpeanut = config.readBoolEntry( "Peanut", false ); 466 reader->bpeanut = config.readBoolEntry( "Peanut", false );
460 reader->bdehyphen = config.readBoolEntry( "Dehyphen", false ); 467 reader->bdehyphen = config.readBoolEntry( "Dehyphen", false );
461 reader->bdepluck = config.readBoolEntry( "Depluck", false ); 468 reader->bdepluck = config.readBoolEntry( "Depluck", false );
462 reader->bdejpluck = config.readBoolEntry( "Dejpluck", false ); 469 reader->bdejpluck = config.readBoolEntry( "Dejpluck", false );
463 reader->bonespace = config.readBoolEntry( "OneSpace", false ); 470 reader->bonespace = config.readBoolEntry( "OneSpace", false );
464 reader->bunindent = config.readBoolEntry( "Unindent", false ); 471 reader->bunindent = config.readBoolEntry( "Unindent", false );
465 reader->brepara = config.readBoolEntry( "Repara", false ); 472 reader->brepara = config.readBoolEntry( "Repara", false );
466 reader->m_reparastring = config.readEntry( "ReparaString", "\\n{[\\n \\t]}"); 473 reader->m_reparastring = config.readEntry( "ReparaString", "\\n{[\\n \\t]}");
467 m_bgtype = (bground)config.readNumEntry( "BackgroundType" , 0 ); 474 m_bgtype = (bground)config.readNumEntry( "BackgroundType" , 0 );
468 m_themename = config.readEntry("Theme", QString::null ); 475 m_themename = config.readEntry("Theme", QString::null );
469 reader->bdblspce = config.readBoolEntry( "DoubleSpace", false ); 476 reader->bdblspce = config.readBoolEntry( "DoubleSpace", false );
470 reader->bindenter = config.readNumEntry( "Indent", 0 ); 477 reader->bindenter = config.readNumEntry( "Indent", 0 );
471 reader->m_textsize = config.readNumEntry( "FontSize", 12 ); 478 reader->m_textsize = config.readNumEntry( "FontSize", 12 );
472 reader->m_delay = config.readNumEntry( "ScrollDelay", 5184); 479 reader->m_delay = config.readNumEntry( "ScrollDelay", 5184);
473 reader->m_scrollstep = config.readNumEntry( "ScrollStep", 1); 480 reader->m_scrollstep = config.readNumEntry( "ScrollStep", 1);
481 reader->m_outputName = config.readEntry( "OutputCodec", "");
482
474 483
475 reader->m_lastfile = config.readEntry( "LastFile", QString::null ); 484 reader->m_lastfile = config.readEntry( "LastFile", QString::null );
476 reader->m_lastposn = config.readNumEntry( "LastPosn", 0 ); 485 reader->m_lastposn = config.readNumEntry( "LastPosn", 0 );
477 reader->m_bpagemode = config.readBoolEntry( "PageMode", true ); 486 reader->m_bpagemode = config.readBoolEntry( "PageMode", true );
478 reader->m_bMonoSpaced = config.readBoolEntry( "MonoSpaced", false); 487 reader->m_bMonoSpaced = config.readBoolEntry( "MonoSpaced", false);
479 reader->m_rotated = config.readBoolEntry( "IsRotated", false ); 488 reader->m_rotated = config.readBoolEntry( "IsRotated", false );
480 reader->m_scrolltype = config.readNumEntry( "ScrollType", 0 ); 489 reader->m_scrolltype = config.readNumEntry( "ScrollType", 0 );
481 m_statusstring = config.readEntry("StatusContent", "%P%% Doc:%d/%D %p%% %z%%"); 490 m_statusstring = config.readEntry("StatusContent", "%P%% Doc:%d/%D %p%% %z%%");
@@ -495,32 +504,36 @@ QTReaderApp::QTReaderApp( QWidget *parent, const char *name, WFlags f )
495 reader->m_charpc = config.readNumEntry( "CharSpacing", 100 ); 504 reader->m_charpc = config.readNumEntry( "CharSpacing", 100 );
496 reader->m_overlap = config.readNumEntry( "Overlap", 0 ); 505 reader->m_overlap = config.readNumEntry( "Overlap", 0 );
497 reader->m_abstopmargin = config.readNumEntry( "Top Margin", 100 ); 506 reader->m_abstopmargin = config.readNumEntry( "Top Margin", 100 );
498 reader->m_absbottommargin = config.readNumEntry( "Bottom Margin", 100 ); 507 reader->m_absbottommargin = config.readNumEntry( "Bottom Margin", 100 );
499 reader->m_absleft_border = config.readNumEntry( "Left Margin", 100 ); 508 reader->m_absleft_border = config.readNumEntry( "Left Margin", 100 );
500 reader->m_absright_border = config.readNumEntry( "Right Margin", 100 ); 509 reader->m_absright_border = config.readNumEntry( "Right Margin", 100 );
501 510
502 m_scrollishidden = config.readBoolEntry( "HideScrollBar", false ); 511 m_scrollishidden = config.readBoolEntry( "HideScrollBar", false );
512 m_hidebars = config.readBoolEntry( "HideToolBar", false );
503 513
504 reader->brepalm = config.readBoolEntry( "Repalm", false ); 514 reader->brepalm = config.readBoolEntry( "Repalm", false );
515 reader->bunderlineLink = config.readBoolEntry( "UnderlineLink", true );
505 reader->bkern = config.readBoolEntry( "Kern", false ); 516 reader->bkern = config.readBoolEntry( "Kern", false );
506 reader->bremap = config.readBoolEntry( "Remap", true ); 517 reader->bremap = config.readBoolEntry( "Remap", true );
507 reader->bmakebold = config.readBoolEntry( "MakeBold", false ); 518 reader->bmakebold = config.readBoolEntry( "MakeBold", false );
508 reader->setContinuous(config.readBoolEntry( "Continuous", true )); 519 reader->setContinuous(config.readBoolEntry( "Continuous", true ));
520 reader->setDoubleBuffer(config.readBoolEntry("DoubleBuffer", true));
509 m_targetapp = config.readEntry( "TargetApp", QString::null ); 521 m_targetapp = config.readEntry( "TargetApp", QString::null );
510 m_targetmsg = config.readEntry( "TargetMsg", QString::null ); 522 m_targetmsg = config.readEntry( "TargetMsg", QString::null );
511#ifdef _SCROLLPIPE 523#ifdef _SCROLLPIPE
512 reader->m_pipetarget = config.readEntry( "PipeTarget", QString::null ); 524 reader->m_pipetarget = config.readEntry( "PipeTarget", QString::null );
513 reader->m_pauseAfterEachPara = config.readBoolEntry( "PauseAfterPara", true ); 525 reader->m_pauseAfterEachPara = config.readBoolEntry( "PauseAfterPara", true );
514#endif 526#endif
515 m_twoTouch = config.readBoolEntry( "TwoTouch", false); 527 m_twoTouch = config.readBoolEntry( "TwoTouch", false);
516 m_doAnnotation = config.readBoolEntry( "Annotation", false); 528 m_doAnnotation = config.readBoolEntry( "Annotation", false);
517 m_doDictionary = config.readBoolEntry( "Dictionary", false); 529 m_doDictionary = config.readBoolEntry( "Dictionary", false);
518 m_doClipboard = config.readBoolEntry( "Clipboard", false); 530 m_doClipboard = config.readBoolEntry( "Clipboard", false);
531 m_doOutput = config.readBoolEntry( "OutputTgt", false);
519 /* 532 /*
520 m_spaceTarget = (ActionTypes)config.readNumEntry("SpaceTarget", cesAutoScroll); 533 m_spaceTarget = (ActionTypes)config.readNumEntry("SpaceTarget", cesAutoScroll);
521 m_escapeTarget = (ActionTypes)config.readNumEntry("EscapeTarget", cesNone); 534 m_escapeTarget = (ActionTypes)config.readNumEntry("EscapeTarget", cesNone);
522 m_returnTarget = (ActionTypes)config.readNumEntry("ReturnTarget", cesFullScreen); 535 m_returnTarget = (ActionTypes)config.readNumEntry("ReturnTarget", cesFullScreen);
523 m_leftTarget = (ActionTypes)config.readNumEntry("LeftTarget", cesZoomOut); 536 m_leftTarget = (ActionTypes)config.readNumEntry("LeftTarget", cesZoomOut);
524 m_rightTarget = (ActionTypes)config.readNumEntry("RightTarget", cesZoomIn); 537 m_rightTarget = (ActionTypes)config.readNumEntry("RightTarget", cesZoomIn);
525 m_upTarget = (ActionTypes)config.readNumEntry("UpTarget", cesPageUp); 538 m_upTarget = (ActionTypes)config.readNumEntry("UpTarget", cesPageUp);
526 m_downTarget = (ActionTypes)config.readNumEntry("DownTarget", cesPageDown); 539 m_downTarget = (ActionTypes)config.readNumEntry("DownTarget", cesPageDown);
@@ -837,16 +850,28 @@ QTReaderApp::QTReaderApp( QWidget *parent, const char *name, WFlags f )
837 connect( m_endBlock_action, SIGNAL( activated() ), this, SLOT( editCopy() ) ); 850 connect( m_endBlock_action, SIGNAL( activated() ), this, SLOT( editCopy() ) );
838 m_endBlock_action->addTo( marks ); 851 m_endBlock_action->addTo( marks );
839 852
840 m_bkmkAvail = NULL; 853 m_bkmkAvail = NULL;
841 854
842 855
843 setToolBarsMovable(m_tbmove); 856 setToolBarsMovable(m_tbmove);
844 addtoolbars(&config); 857 addtoolbars(&config);
858 if (m_hidebars)
859 {
860#if defined(USEQPE)
861 menubar->hide();
862#endif
863 if (fileBar != NULL) fileBar->hide();
864 if (viewBar != NULL) viewBar->hide();
865 if (navBar != NULL) navBar->hide();
866 if (markBar != NULL) markBar->hide();
867 mb->hide();
868 }
869
845 870
846 pbar = new QProgressBar(this); 871 pbar = new QProgressBar(this);
847 pbar->hide(); 872 pbar->hide();
848 873
849 searchBar = new QFloatBar( "Search", this, QMainWindow::Top, TRUE ); 874 searchBar = new QFloatBar( "Search", this, QMainWindow::Top, TRUE );
850 875
851 searchBar->setHorizontalStretchable( TRUE ); 876 searchBar->setHorizontalStretchable( TRUE );
852 877
@@ -967,16 +992,17 @@ QTReaderApp::QTReaderApp( QWidget *parent, const char *name, WFlags f )
967// qDebug("Inited"); 992// qDebug("Inited");
968// m_buttonAction[m_spaceTarget]->setOn(true); 993// m_buttonAction[m_spaceTarget]->setOn(true);
969// qDebug("fonting"); 994// qDebug("fonting");
970 do_setfont(reader->m_fontname); 995 do_setfont(reader->m_fontname);
971 // qDebug("fonted"); 996 // qDebug("fonted");
972 QFont progfont(reader->m_fontname, reader->m_fontControl.getsize(0)); 997 QFont progfont(reader->m_fontname, reader->m_fontControl.getsize(0));
973 m_prog->setFont( progfont ); 998 m_prog->setFont( progfont );
974 if (m_statusishidden) m_prog->hide(); 999 if (m_statusishidden) m_prog->hide();
1000 showEditTools();
975 if (!reader->m_lastfile.isEmpty()) 1001 if (!reader->m_lastfile.isEmpty())
976 { 1002 {
977 //qDebug("doclnk"); 1003 //qDebug("doclnk");
978 //doc = new DocLnk(reader->m_lastfile); 1004 //doc = new DocLnk(reader->m_lastfile);
979 //qDebug("doclnk done"); 1005 //qDebug("doclnk done");
980 if (pOpenlist != NULL) 1006 if (pOpenlist != NULL)
981 { 1007 {
982 1008
@@ -1027,23 +1053,23 @@ QTReaderApp::QTReaderApp( QWidget *parent, const char *name, WFlags f )
1027 if (m_scrollbar == NULL || m_scrollbar->isHidden()) 1053 if (m_scrollbar == NULL || m_scrollbar->isHidden())
1028 { 1054 {
1029 reader->m_scrollpos = m_localscroll; 1055 reader->m_scrollpos = m_localscroll;
1030 } 1056 }
1031 else 1057 else
1032 { 1058 {
1033 reader->m_scrollpos = (m_qtscroll == 0) ? m_localscroll : 0; 1059 reader->m_scrollpos = (m_qtscroll == 0) ? m_localscroll : 0;
1034 } 1060 }
1035 reader->bDoUpdates = true; 1061 // reader->bDoUpdates = true;
1036 reader->update(); 1062 // reader->update();
1037 config.setGroup("Version"); 1063 config.setGroup("Version");
1038 int major = config.readNumEntry("Major", 0); 1064 int major = config.readNumEntry("Major", 0);
1039 int bkmktype = config.readNumEntry("BkmkType", 0); 1065 int bkmktype = config.readNumEntry("BkmkType", 0);
1040 char minor = config.readNumEntry("Minor", 0); 1066 char minor = config.readNumEntry("Minor", 0);
1041 if (CheckVersion(major, bkmktype, minor)) 1067 if (CheckVersion(major, bkmktype, minor, this))
1042 { 1068 {
1043 config.writeEntry("Major", major); 1069 config.writeEntry("Major", major);
1044 config.writeEntry("BkmkType", bkmktype); 1070 config.writeEntry("BkmkType", bkmktype);
1045 config.writeEntry("Minor", (int)minor); 1071 config.writeEntry("Minor", (int)minor);
1046 } 1072 }
1047// qDebug("finished update"); 1073// qDebug("finished update");
1048 if (kmap.isEmpty()) 1074 if (kmap.isEmpty())
1049 { 1075 {
@@ -1060,17 +1086,17 @@ QTReaderApp::QTReaderApp( QWidget *parent, const char *name, WFlags f )
1060} 1086}
1061 1087
1062void QTReaderApp::addtoolbars(Config* config) 1088void QTReaderApp::addtoolbars(Config* config)
1063{ 1089{
1064 config->setGroup("Toolbar"); 1090 config->setGroup("Toolbar");
1065 1091
1066 if (fileBar != NULL) 1092 if (fileBar != NULL)
1067 { 1093 {
1068#ifdef USEQPE 1094#if defined(USEQPE)
1069 if (fileBar != menubar) 1095 if (fileBar != menubar)
1070 { 1096 {
1071 fileBar->clear(); 1097 fileBar->clear();
1072 } 1098 }
1073 else 1099 else
1074 { 1100 {
1075 m_preferences_action->removeFrom( filebar() ); 1101 m_preferences_action->removeFrom( filebar() );
1076 m_open_action->removeFrom( filebar() ); 1102 m_open_action->removeFrom( filebar() );
@@ -1088,17 +1114,17 @@ void QTReaderApp::addtoolbars(Config* config)
1088 addfilebar(config, "Open", m_open_action); 1114 addfilebar(config, "Open", m_open_action);
1089 addfilebar(config, "Close", m_close_action); 1115 addfilebar(config, "Close", m_close_action);
1090 addfilebar(config, "Info", m_info_action); 1116 addfilebar(config, "Info", m_info_action);
1091 addfilebar(config, "Two/One Touch", m_touch_action); 1117 addfilebar(config, "Two/One Touch", m_touch_action);
1092 addfilebar(config, "Find", m_find_action); 1118 addfilebar(config, "Find", m_find_action);
1093 1119
1094 if (navBar != NULL) 1120 if (navBar != NULL)
1095 { 1121 {
1096#ifdef USEQPE 1122#if defined(USEQPE)
1097 if ((navBar == fileBar) && (fileBar == menubar)) 1123 if ((navBar == fileBar) && (fileBar == menubar))
1098#else 1124#else
1099 if (navBar == fileBar) 1125 if (navBar == fileBar)
1100#endif 1126#endif
1101 { 1127 {
1102 m_scrollButton->removeFrom( navbar() ); 1128 m_scrollButton->removeFrom( navbar() );
1103 m_start_action->removeFrom( navbar() ); 1129 m_start_action->removeFrom( navbar() );
1104 m_end_action->removeFrom( navbar() ); 1130 m_end_action->removeFrom( navbar() );
@@ -1127,17 +1153,17 @@ void QTReaderApp::addtoolbars(Config* config)
1127 addnavbar(config, "Page Down", m_pagedn_action); 1153 addnavbar(config, "Page Down", m_pagedn_action);
1128 1154
1129 addnavbar(config, "Back", m_back_action); 1155 addnavbar(config, "Back", m_back_action);
1130 addnavbar(config, "Home", m_home_action); 1156 addnavbar(config, "Home", m_home_action);
1131 addnavbar(config, "Forward", m_forward_action); 1157 addnavbar(config, "Forward", m_forward_action);
1132 1158
1133 if (viewBar != NULL) 1159 if (viewBar != NULL)
1134 { 1160 {
1135#ifdef USEQPE 1161#if defined(USEQPE)
1136 if ((viewBar == fileBar) && (fileBar == menubar)) 1162 if ((viewBar == fileBar) && (fileBar == menubar))
1137#else 1163#else
1138 if (viewBar == fileBar) 1164 if (viewBar == fileBar)
1139#endif 1165#endif
1140 { 1166 {
1141 m_actFullscreen->removeFrom( filebar() ); 1167 m_actFullscreen->removeFrom( filebar() );
1142 m_rotate_action->removeFrom( viewbar() ); 1168 m_rotate_action->removeFrom( viewbar() );
1143 m_inverse_action->removeFrom( viewbar() ); 1169 m_inverse_action->removeFrom( viewbar() );
@@ -1159,17 +1185,17 @@ void QTReaderApp::addtoolbars(Config* config)
1159 addviewbar(config, "Zoom In", m_zoomin_action); 1185 addviewbar(config, "Zoom In", m_zoomin_action);
1160 addviewbar(config, "Zoom Out", m_zoomout_action); 1186 addviewbar(config, "Zoom Out", m_zoomout_action);
1161 addviewbar(config, "Set Font", m_setfont_action); 1187 addviewbar(config, "Set Font", m_setfont_action);
1162 addviewbar(config, "Encoding Select", m_setenc_action); 1188 addviewbar(config, "Encoding Select", m_setenc_action);
1163 addviewbar(config, "Ideogram Mode", m_setmono_action); 1189 addviewbar(config, "Ideogram Mode", m_setmono_action);
1164 1190
1165 if (markBar != NULL) 1191 if (markBar != NULL)
1166 { 1192 {
1167#ifdef USEQPE 1193#if defined(USEQPE)
1168 if ((markBar == fileBar) && (fileBar == menubar)) 1194 if ((markBar == fileBar) && (fileBar == menubar))
1169#else 1195#else
1170 if (markBar == fileBar) 1196 if (markBar == fileBar)
1171#endif 1197#endif
1172 { 1198 {
1173 m_mark_action->removeFrom( markbar() ); 1199 m_mark_action->removeFrom( markbar() );
1174 m_annotate_action->removeFrom( markbar()); 1200 m_annotate_action->removeFrom( markbar());
1175 m_goto_action->removeFrom( markbar() ); 1201 m_goto_action->removeFrom( markbar() );
@@ -1228,17 +1254,17 @@ bool QTReaderApp::checkbar(Config* _config, const QString& key)
1228 1254
1229 1255
1230QToolBar* QTReaderApp::filebar() 1256QToolBar* QTReaderApp::filebar()
1231{ 1257{
1232 if (fileBar == NULL) 1258 if (fileBar == NULL)
1233 { 1259 {
1234 switch (m_tbpol) 1260 switch (m_tbpol)
1235 { 1261 {
1236#ifdef USEQPE 1262#if defined(USEQPE)
1237 case cesSingle: 1263 case cesSingle:
1238 // qDebug("Setting filebar to menubar"); 1264 // qDebug("Setting filebar to menubar");
1239 fileBar = menubar; 1265 fileBar = menubar;
1240 break; 1266 break;
1241#endif 1267#endif
1242 default: 1268 default:
1243 qDebug("Incorrect toolbar policy set"); 1269 qDebug("Incorrect toolbar policy set");
1244 case cesMenuTool: 1270 case cesMenuTool:
@@ -1712,35 +1738,33 @@ void QTReaderApp::setrotated(bool sfs)
1712 m_scrollbar->setOrientation(Qt::Horizontal); 1738 m_scrollbar->setOrientation(Qt::Horizontal);
1713 connect(scrollbar, SIGNAL(nextLine()), reader, SLOT(lineUp()) ); 1739 connect(scrollbar, SIGNAL(nextLine()), reader, SLOT(lineUp()) );
1714 connect(scrollbar, SIGNAL(prevLine()), reader, SLOT(lineDown()) ); 1740 connect(scrollbar, SIGNAL(prevLine()), reader, SLOT(lineDown()) );
1715 connect(scrollbar, SIGNAL(nextPage()), reader, SLOT(dopageup()) ); 1741 connect(scrollbar, SIGNAL(nextPage()), reader, SLOT(dopageup()) );
1716 connect(scrollbar, SIGNAL(prevPage()), reader, SLOT(dopagedn()) ); 1742 connect(scrollbar, SIGNAL(prevPage()), reader, SLOT(dopagedn()) );
1717 connect(scrollbar, SIGNAL(sliderMoved(int)), this, SLOT(actionscroll(int)) ); 1743 connect(scrollbar, SIGNAL(sliderMoved(int)), this, SLOT(actionscroll(int)) );
1718 } 1744 }
1719 //reader->repaint(0, reader->m_left_border, reader->width(), reader->height()-2*reader->m_border); 1745 //reader->repaint(0, reader->m_left_border, reader->width(), reader->height()-2*reader->m_border);
1720 reader->repaint();
1721 } 1746 }
1722 else 1747 else
1723 { 1748 {
1724 m_layout->setDirection( (m_qtscroll == 2) ? QBoxLayout::RightToLeft : QBoxLayout::LeftToRight ); 1749 m_layout->setDirection( (m_qtscroll == 2) ? QBoxLayout::RightToLeft : QBoxLayout::LeftToRight );
1725 if (m_scrollbar != NULL) 1750 if (m_scrollbar != NULL)
1726 { 1751 {
1727 scrollbar->disconnect(); 1752 scrollbar->disconnect();
1728 m_scrollbar->setOrientation(Qt::Vertical); 1753 m_scrollbar->setOrientation(Qt::Vertical);
1729 connect(scrollbar, SIGNAL(nextLine()), reader, SLOT(lineDown()) ); 1754 connect(scrollbar, SIGNAL(nextLine()), reader, SLOT(lineDown()) );
1730 connect(scrollbar, SIGNAL(prevLine()), reader, SLOT(lineUp()) ); 1755 connect(scrollbar, SIGNAL(prevLine()), reader, SLOT(lineUp()) );
1731 connect(scrollbar, SIGNAL(nextPage()), reader, SLOT(dopagedn()) ); 1756 connect(scrollbar, SIGNAL(nextPage()), reader, SLOT(dopagedn()) );
1732 connect(scrollbar, SIGNAL(prevPage()), reader, SLOT(dopageup()) ); 1757 connect(scrollbar, SIGNAL(prevPage()), reader, SLOT(dopageup()) );
1733 connect(scrollbar, SIGNAL(sliderMoved(int)), this, SLOT(actionscroll(int)) ); 1758 connect(scrollbar, SIGNAL(sliderMoved(int)), this, SLOT(actionscroll(int)) );
1734 } 1759 }
1735 //reader->repaint(reader->m_border, 0, reader->width()-2*reader->m_border, reader->height()); 1760 //reader->repaint(reader->m_border, 0, reader->width()-2*reader->m_border, reader->height());
1736 reader->repaint();
1737 } 1761 }
1738 // reader->update(); 1762 reader->refresh();
1739} 1763}
1740 1764
1741void QTReaderApp::setgrab(bool sfs) 1765void QTReaderApp::setgrab(bool sfs)
1742{ 1766{
1743#ifdef USEQPE 1767#ifdef USEQPE
1744 m_grabkeyboard = sfs; 1768 m_grabkeyboard = sfs;
1745 if (m_grabkeyboard) 1769 if (m_grabkeyboard)
1746 { 1770 {
@@ -1923,17 +1947,17 @@ void QTReaderApp::fileOpen2()
1923/* 1947/*
1924 editorStack->raiseWidget( fileSelector ); 1948 editorStack->raiseWidget( fileSelector );
1925 fileSelector->reread(); 1949 fileSelector->reread();
1926*/ 1950*/
1927 bool usebrowser = true; 1951 bool usebrowser = true;
1928 if (pOpenlist != NULL) 1952 if (pOpenlist != NULL)
1929 { 1953 {
1930 m_nBkmkAction = cOpenFile; 1954 m_nBkmkAction = cOpenFile;
1931 if (listbkmk(pOpenlist, "Browse")) usebrowser = false; 1955 if (listbkmk(pOpenlist, "Browse", true)) usebrowser = false;
1932 } 1956 }
1933 if (usebrowser) 1957 if (usebrowser)
1934 { 1958 {
1935 QString fn = usefilebrowser(); 1959 QString fn = usefilebrowser();
1936 //qApp->processEvents(); 1960 //qApp->processEvents();
1937 if (!fn.isEmpty() && QFileInfo(fn).isFile()) 1961 if (!fn.isEmpty() && QFileInfo(fn).isFile())
1938 { 1962 {
1939 openFile(fn); 1963 openFile(fn);
@@ -1946,17 +1970,17 @@ void QTReaderApp::fileOpen2()
1946 1970
1947QString QTReaderApp::usefilebrowser() 1971QString QTReaderApp::usefilebrowser()
1948{ 1972{
1949#ifndef USEQPE 1973#ifndef USEQPE
1950 QString s( QFileDialog::getOpenFileName( reader->m_lastfile, QString::null, this ) ); 1974 QString s( QFileDialog::getOpenFileName( reader->m_lastfile, QString::null, this ) );
1951 return s; 1975 return s;
1952#else 1976#else
1953 QString fn; 1977 QString fn;
1954#ifdef OPIE 1978#if defined(OPIE) && defined(OPIEFILEDIALOG)
1955 QMap<QString, QStringList> mimeTypes; 1979 QMap<QString, QStringList> mimeTypes;
1956 QStringList etypes; 1980 QStringList etypes;
1957 etypes << "etext/*"; 1981 etypes << "etext/*";
1958 mimeTypes.insert( tr("eText"), etypes ); 1982 mimeTypes.insert( tr("eText"), etypes );
1959 QStringList types; 1983 QStringList types;
1960 types << "text/*"; 1984 types << "text/*";
1961 mimeTypes.insert( tr("Text"), types ); 1985 mimeTypes.insert( tr("Text"), types );
1962 mimeTypes.insert( tr("All"), "*/*" ); 1986 mimeTypes.insert( tr("All"), "*/*" );
@@ -1998,28 +2022,30 @@ void QTReaderApp::showbuttonprefs()
1998 2022
1999void QTReaderApp::showprefs() 2023void QTReaderApp::showprefs()
2000{ 2024{
2001 CPrefs* prefwin = new CPrefs(reader->width(), !m_bFloatingDialog, this); 2025 CPrefs* prefwin = new CPrefs(reader->width(), !m_bFloatingDialog, this);
2002 2026
2003 // prefwin->Debounce(m_debounce); 2027 // prefwin->Debounce(m_debounce);
2004 prefwin->bgtype(m_bgtype); 2028 prefwin->bgtype(m_bgtype);
2005 prefwin->repalm(reader->brepalm); 2029 prefwin->repalm(reader->brepalm);
2030 prefwin->UnderlineLink(reader->bunderlineLink);
2006 prefwin->kern(reader->bkern); 2031 prefwin->kern(reader->bkern);
2007 prefwin->hyphenate(reader->hyphenate); 2032 prefwin->hyphenate(reader->hyphenate);
2008 // prefwin->customhyphen(reader->buffdoc.getCustomHyphen()); 2033 // prefwin->customhyphen(reader->buffdoc.getCustomHyphen());
2009 prefwin->scrolltype(reader->m_scrolltype); 2034 prefwin->scrolltype(reader->m_scrolltype);
2010 prefwin->scrollstep(reader->m_scrollstep); 2035 prefwin->scrollstep(reader->m_scrollstep);
2011 prefwin->scrollcolor(m_scrollcolor); 2036 prefwin->scrollcolor(m_scrollcolor);
2012 prefwin->minibarcol(m_scrollbarcolor); 2037 prefwin->minibarcol(m_scrollbarcolor);
2013 prefwin->foreground(m_foreground); 2038 prefwin->foreground(m_foreground);
2014 prefwin->background(m_background); 2039 prefwin->background(m_background);
2015 prefwin->twotouch(m_twoTouch); 2040 prefwin->twotouch(m_twoTouch);
2016 prefwin->propfontchange(m_propogatefontchange); 2041 prefwin->propfontchange(m_propogatefontchange);
2017 prefwin->StripCR(reader->bstripcr); 2042 prefwin->StripCR(reader->bstripcr);
2043 prefwin->InlineTables(!reader->bNoInlineTables);
2018 prefwin->Dehyphen(reader->bdehyphen); 2044 prefwin->Dehyphen(reader->bdehyphen);
2019 prefwin->SingleSpace(reader->bonespace); 2045 prefwin->SingleSpace(reader->bonespace);
2020 prefwin->Unindent(reader->bunindent); 2046 prefwin->Unindent(reader->bunindent);
2021 prefwin->Reparagraph(reader->brepara); 2047 prefwin->Reparagraph(reader->brepara);
2022 prefwin->DoubleSpace(reader->bdblspce); 2048 prefwin->DoubleSpace(reader->bdblspce);
2023 prefwin->Remap(reader->bremap); 2049 prefwin->Remap(reader->bremap);
2024 prefwin->Embolden(reader->bmakebold); 2050 prefwin->Embolden(reader->bmakebold);
2025 prefwin->FullJustify(reader->bfulljust); 2051 prefwin->FullJustify(reader->bfulljust);
@@ -2051,49 +2077,55 @@ void QTReaderApp::showprefs()
2051 } 2077 }
2052 else 2078 else
2053 { 2079 {
2054 prefwin->Markup(1); 2080 prefwin->Markup(1);
2055 } 2081 }
2056 prefwin->Depluck(reader->bdepluck); 2082 prefwin->Depluck(reader->bdepluck);
2057 prefwin->Dejpluck(reader->bdejpluck); 2083 prefwin->Dejpluck(reader->bdejpluck);
2058 prefwin->Continuous(reader->m_continuousDocument); 2084 prefwin->Continuous(reader->m_continuousDocument);
2085 prefwin->DoubleBuffer(reader->m_doubleBuffered);
2059 2086
2060 prefwin->dictApplication(m_targetapp); 2087 prefwin->dictApplication(m_targetapp);
2061 prefwin->dictMessage(m_targetmsg); 2088 prefwin->dictMessage(m_targetmsg);
2062 2089
2063 /* 2090 /*
2064 prefwin->leftScroll(m_leftScroll); 2091 prefwin->leftScroll(m_leftScroll);
2065 prefwin->rightScroll(m_rightScroll); 2092 prefwin->rightScroll(m_rightScroll);
2066 prefwin->upScroll(m_upScroll); 2093 prefwin->upScroll(m_upScroll);
2067 prefwin->downScroll(m_downScroll); 2094 prefwin->downScroll(m_downScroll);
2068 */ 2095 */
2069 2096
2070 prefwin->miscannotation(m_doAnnotation); 2097 prefwin->miscannotation(m_doAnnotation);
2071 prefwin->miscdictionary(m_doDictionary); 2098 prefwin->miscdictionary(m_doDictionary);
2072 prefwin->miscclipboard(m_doClipboard); 2099 prefwin->miscclipboard(m_doClipboard);
2100 prefwin->miscoutput(m_doOutput);
2073 2101
2074 prefwin->SwapMouse(reader->m_swapmouse); 2102 prefwin->SwapMouse(reader->m_swapmouse);
2075 2103
2076 prefwin->Font(reader->m_fontname); 2104 prefwin->Font(reader->m_fontname);
2077 2105
2078 prefwin->gfxsize(reader->getBaseSize()); 2106 prefwin->gfxsize(reader->getBaseSize());
2079 2107
2080 prefwin->pageoverlap(reader->m_overlap); 2108 prefwin->pageoverlap(reader->m_overlap);
2081 2109
2082 prefwin->ideogram(reader->m_bMonoSpaced); 2110 prefwin->ideogram(reader->m_bMonoSpaced);
2083 2111
2084 prefwin->encoding(reader->m_encd); 2112 prefwin->encoding(reader->m_encd);
2085 2113
2086 prefwin->ideogramwidth(reader->m_charpc); 2114 prefwin->ideogramwidth(reader->m_charpc);
2087 2115
2116 prefwin->outcodec(reader->m_outputName);
2117
2088 if (prefwin->exec()) 2118 if (prefwin->exec())
2089 { 2119 {
2090 // m_debounce = prefwin->Debounce(); 2120 // m_debounce = prefwin->Debounce();
2091 reader->brepalm = prefwin->repalm(); 2121 reader->brepalm = prefwin->repalm();
2122 reader->bunderlineLink = prefwin->UnderlineLink();
2123
2092 reader->bkern = prefwin->kern(); 2124 reader->bkern = prefwin->kern();
2093 reader->hyphenate = prefwin->hyphenate(); 2125 reader->hyphenate = prefwin->hyphenate();
2094 // reader->buffdoc.setCustomHyphen(prefwin->customhyphen()); 2126 // reader->buffdoc.setCustomHyphen(prefwin->customhyphen());
2095 reader->m_scrolltype = prefwin->scrolltype(); 2127 reader->m_scrolltype = prefwin->scrolltype();
2096 reader->m_scrollstep = prefwin->scrollstep(); 2128 reader->m_scrollstep = prefwin->scrollstep();
2097 m_scrollcolor = prefwin->scrollcolor(); 2129 m_scrollcolor = prefwin->scrollcolor();
2098 setscrollcolour(); 2130 setscrollcolour();
2099 m_scrollbarcolor = prefwin->minibarcol(); 2131 m_scrollbarcolor = prefwin->minibarcol();
@@ -2102,16 +2134,17 @@ void QTReaderApp::showprefs()
2102 reader->setForeground(getcolour(m_foreground)); 2134 reader->setForeground(getcolour(m_foreground));
2103 m_background = prefwin->background(); 2135 m_background = prefwin->background();
2104 reader->setBackground(getcolour(m_background)); 2136 reader->setBackground(getcolour(m_background));
2105 m_twoTouch = prefwin->twotouch(); 2137 m_twoTouch = prefwin->twotouch();
2106 reader->setTwoTouch(m_twoTouch); 2138 reader->setTwoTouch(m_twoTouch);
2107 m_touch_action->setOn(m_twoTouch); 2139 m_touch_action->setOn(m_twoTouch);
2108 2140
2109 reader->bstripcr = prefwin->StripCR(); 2141 reader->bstripcr = prefwin->StripCR();
2142 reader->bNoInlineTables = !prefwin->InlineTables();
2110 reader->bdehyphen = prefwin->Dehyphen(); 2143 reader->bdehyphen = prefwin->Dehyphen();
2111 reader->bonespace = prefwin->SingleSpace(); 2144 reader->bonespace = prefwin->SingleSpace();
2112 reader->bunindent = prefwin->Unindent(); 2145 reader->bunindent = prefwin->Unindent();
2113 reader->brepara = prefwin->Reparagraph(); 2146 reader->brepara = prefwin->Reparagraph();
2114 reader->bdblspce = prefwin->DoubleSpace(); 2147 reader->bdblspce = prefwin->DoubleSpace();
2115 reader->bremap = prefwin->Remap(); 2148 reader->bremap = prefwin->Remap();
2116 reader->bmakebold = prefwin->Embolden(); 2149 reader->bmakebold = prefwin->Embolden();
2117 reader->bfulljust = prefwin->FullJustify(); 2150 reader->bfulljust = prefwin->FullJustify();
@@ -2144,29 +2177,31 @@ void QTReaderApp::showprefs()
2144 reader->bpeanut = true; 2177 reader->bpeanut = true;
2145 break; 2178 break;
2146 default: 2179 default:
2147 qDebug("Format out of range"); 2180 qDebug("Format out of range");
2148 } 2181 }
2149 reader->bdepluck = prefwin->Depluck(); 2182 reader->bdepluck = prefwin->Depluck();
2150 reader->bdejpluck = prefwin->Dejpluck(); 2183 reader->bdejpluck = prefwin->Dejpluck();
2151 reader->setContinuous(prefwin->Continuous()); 2184 reader->setContinuous(prefwin->Continuous());
2185 reader->setDoubleBuffer(prefwin->DoubleBuffer());
2152 2186
2153 /* 2187 /*
2154 m_leftScroll = prefwin->leftScroll(); 2188 m_leftScroll = prefwin->leftScroll();
2155 m_rightScroll = prefwin->rightScroll(); 2189 m_rightScroll = prefwin->rightScroll();
2156 m_upScroll = prefwin->upScroll(); 2190 m_upScroll = prefwin->upScroll();
2157 m_downScroll = prefwin->downScroll(); 2191 m_downScroll = prefwin->downScroll();
2158 */ 2192 */
2159 m_targetapp = prefwin->dictApplication(); 2193 m_targetapp = prefwin->dictApplication();
2160 m_targetmsg = prefwin->dictMessage(); 2194 m_targetmsg = prefwin->dictMessage();
2161 2195
2162 m_doAnnotation = prefwin->miscannotation(); 2196 m_doAnnotation = prefwin->miscannotation();
2163 m_doDictionary = prefwin->miscdictionary(); 2197 m_doDictionary = prefwin->miscdictionary();
2164 m_doClipboard = prefwin->miscclipboard(); 2198 m_doClipboard = prefwin->miscclipboard();
2199 m_doOutput = prefwin->miscoutput();
2165 reader->m_swapmouse = prefwin->SwapMouse(); 2200 reader->m_swapmouse = prefwin->SwapMouse();
2166 reader->setBaseSize(prefwin->gfxsize()); 2201 reader->setBaseSize(prefwin->gfxsize());
2167 reader->m_overlap = prefwin->pageoverlap(); 2202 reader->m_overlap = prefwin->pageoverlap();
2168 reader->m_bMonoSpaced = prefwin->ideogram(); 2203 reader->m_bMonoSpaced = prefwin->ideogram();
2169 m_setmono_action->setOn(reader->m_bMonoSpaced); 2204 m_setmono_action->setOn(reader->m_bMonoSpaced);
2170 reader->m_encd = prefwin->encoding(); 2205 reader->m_encd = prefwin->encoding();
2171 reader->m_charpc = prefwin->ideogramwidth(); 2206 reader->m_charpc = prefwin->ideogramwidth();
2172 2207
@@ -2178,16 +2213,25 @@ void QTReaderApp::showprefs()
2178 m_propogatefontchange = prefwin->propfontchange(); 2213 m_propogatefontchange = prefwin->propfontchange();
2179 setfontHelper(prefwin->Font()); 2214 setfontHelper(prefwin->Font());
2180 } 2215 }
2181 if (m_bgtype != (bground)prefwin->bgtype()) 2216 if (m_bgtype != (bground)prefwin->bgtype())
2182 { 2217 {
2183 m_bgtype = (bground)prefwin->bgtype(); 2218 m_bgtype = (bground)prefwin->bgtype();
2184 setBackgroundBitmap(); 2219 setBackgroundBitmap();
2185 } 2220 }
2221 qDebug("OutCodec:%s", (const char*)prefwin->outcodec());
2222 if (reader->m_outputName != prefwin->outcodec())
2223 {
2224 if (reader->m_output != NULL)
2225 {
2226 QMessageBox::warning(this, PROGNAME, "Change of output codec\nrequires a restart");
2227 }
2228 reader->m_outputName = prefwin->outcodec();
2229 }
2186 delete prefwin; 2230 delete prefwin;
2187 reader->setfilter(reader->getfilter()); 2231 reader->setfilter(reader->getfilter());
2188 reader->refresh(); 2232 reader->refresh();
2189 } 2233 }
2190 else 2234 else
2191 { 2235 {
2192 delete prefwin; 2236 delete prefwin;
2193 } 2237 }
@@ -2285,22 +2329,46 @@ void QTReaderApp::showinfo()
2285 else 2329 else
2286 { 2330 {
2287 reader->sizes(fs,ts); 2331 reader->sizes(fs,ts);
2288 ds = reader->buffdoc.endSection() - reader->buffdoc.startSection(); 2332 ds = reader->buffdoc.endSection() - reader->buffdoc.startSection();
2289 pl = reader->pagelocate(); 2333 pl = reader->pagelocate();
2290 dl = pl - reader->buffdoc.startSection(); 2334 dl = pl - reader->buffdoc.startSection();
2291 m_infoWin->setFileSize(fs); 2335 m_infoWin->setFileSize(fs);
2292 m_infoWin->setTextSize(ts); 2336 m_infoWin->setTextSize(ts);
2293 m_infoWin->setRatio(100-(100*fs + (ts >> 1))/ts); 2337 if (fs > UINT_MAX/100)
2338 {
2339 unsigned long t1 = (ts+50)/100;
2340 m_infoWin->setRatio(100-(fs + (t1 >> 1))/t1);
2341 }
2342 else
2343 {
2344 m_infoWin->setRatio(100-(100*fs + (ts >> 1))/ts);
2345 }
2294 m_infoWin->setLocation(pl); 2346 m_infoWin->setLocation(pl);
2295 m_infoWin->setRead((100*pl + (ts >> 1))/ts); 2347 if (pl > UINT_MAX/100)
2348 {
2349 unsigned long t1 = (ts+50)/100;
2350 m_infoWin->setRead((pl + (t1 >> 1))/t1);
2351 }
2352 else
2353 {
2354 m_infoWin->setRead((100*pl + (ts >> 1))/ts);
2355 }
2296 m_infoWin->setDocSize(ds); 2356 m_infoWin->setDocSize(ds);
2297 m_infoWin->setDocLocation(dl); 2357 m_infoWin->setDocLocation(dl);
2298 m_infoWin->setDocRead((100*dl + (ds >> 1))/ds); 2358 if (dl > UINT_MAX/100)
2359 {
2360 unsigned long d1 = (ds+50)/100;
2361 m_infoWin->setDocRead((dl + (d1 >> 1))/d1);
2362 }
2363 else
2364 {
2365 m_infoWin->setDocRead((100*dl + (ds >> 1))/ds);
2366 }
2299 m_infoWin->setZoom(reader->m_fontControl.currentsize()*10); 2367 m_infoWin->setZoom(reader->m_fontControl.currentsize()*10);
2300 m_infoWin->setAbout(QString("\nApplication (c) Tim Wentford\n")+reader->about()); 2368 m_infoWin->setAbout(QString("\nApplication (c) Tim Wentford\n")+reader->about());
2301 editorStack->raiseWidget( m_infoWin ); 2369 editorStack->raiseWidget( m_infoWin );
2302 hidetoolbars(); 2370 hidetoolbars();
2303 m_infoWin->setFocus(); 2371 m_infoWin->setFocus();
2304 } 2372 }
2305} 2373}
2306 2374
@@ -2737,17 +2805,17 @@ void QTReaderApp::search(const QString & arg)
2737} 2805}
2738#else 2806#else
2739void QTReaderApp::search() 2807void QTReaderApp::search()
2740{ 2808{
2741 findNext(); 2809 findNext();
2742} 2810}
2743#endif 2811#endif
2744 2812
2745void QTReaderApp::openFile( const QString &f ) 2813void QTReaderApp::openFile( const QString &f, unsigned int loc )
2746{ 2814{
2747// qDebug("File:%s", (const char*)f); 2815// qDebug("File:%s", (const char*)f);
2748// openFile(DocLnk(f)); 2816// openFile(DocLnk(f));
2749//} 2817//}
2750// 2818//
2751//void QTReaderApp::openFile( const DocLnk &f ) 2819//void QTReaderApp::openFile( const DocLnk &f )
2752//{ 2820//{
2753 clear(); 2821 clear();
@@ -2760,17 +2828,17 @@ void QTReaderApp::openFile( const QString &f )
2760 { 2828 {
2761 DocLnk d(f); 2829 DocLnk d(f);
2762 QFileInfo fnew(d.file()); 2830 QFileInfo fnew(d.file());
2763 fm = fnew; 2831 fm = fnew;
2764 if (!fm.exists()) return; 2832 if (!fm.exists()) return;
2765 } 2833 }
2766#endif 2834#endif
2767 clear(); 2835 clear();
2768 reader->setText(fm.baseName(), fm.absFilePath()); 2836 reader->setText(fm.baseName(), fm.absFilePath(), loc);
2769 m_loadedconfig = readconfig(APPDIR "/configs", reader->m_string, false); 2837 m_loadedconfig = readconfig(APPDIR "/configs", reader->m_string, false);
2770 qDebug("Showing tools"); 2838 qDebug("Showing tools");
2771 showEditTools(); 2839 showEditTools();
2772 qDebug("Shown tools"); 2840 qDebug("Shown tools");
2773 readbkmks(); 2841 readbkmks();
2774 qDebug("read markss"); 2842 qDebug("read markss");
2775 m_savedpos = 0xffffffff; 2843 m_savedpos = 0xffffffff;
2776 } 2844 }
@@ -2801,17 +2869,17 @@ void QTReaderApp::handlekey(QKeyEvent* e)
2801 unsigned long etime = (1000*(now.time - m_lastkeytime.time) + now.millitm)-m_lastkeytime.millitm; 2869 unsigned long etime = (1000*(now.time - m_lastkeytime.time) + now.millitm)-m_lastkeytime.millitm;
2802 if (etime < m_debounce) 2870 if (etime < m_debounce)
2803 { 2871 {
2804 return; 2872 return;
2805 } 2873 }
2806 switch(e->key()) 2874 switch(e->key())
2807 { 2875 {
2808 case Key_Escape: 2876 case Key_Escape:
2809 // qDebug("escape event"); 2877 qDebug("escape event");
2810 if (m_disableesckey) 2878 if (m_disableesckey)
2811 { 2879 {
2812 m_disableesckey = false; 2880 m_disableesckey = false;
2813 } 2881 }
2814 else 2882 else
2815 { 2883 {
2816 m_bcloseDisabled = true; 2884 m_bcloseDisabled = true;
2817 if (m_fullscreen) 2885 if (m_fullscreen)
@@ -2886,50 +2954,51 @@ void QTReaderApp::handlekey(QKeyEvent* e)
2886 QString key; 2954 QString key;
2887 msg += key.setNum(e->key()); 2955 msg += key.setNum(e->key());
2888 QMessageBox::information(this, PROGNAME, msg); 2956 QMessageBox::information(this, PROGNAME, msg);
2889*/ 2957*/
2890 } 2958 }
2891 ftime(&m_lastkeytime); 2959 ftime(&m_lastkeytime);
2892} 2960}
2893 2961
2894#ifdef NEWFULLSCREEN 2962#if defined(USEQPE) && defined(USENEWFULLSCREEN)
2895void QTReaderApp::enableFullscreen() 2963void QTReaderApp::focusInEvent(QFocusEvent *)
2896{
2897 setFixedSize(qApp->desktop()->size());
2898 showNormal();
2899 reparent(0, WStyle_Customize | WStyle_NoBorder, QPoint(0,0));
2900 showFullScreen();
2901}
2902
2903void QTReaderApp::resizeEvent(QResizeEvent *)
2904{ 2964{
2905 if (m_fullscreen && (size() != qApp->desktop()->size())) 2965 if (m_usenewfullscreen && m_fullscreen && (editorStack->visibleWidget() == reader))
2906 { 2966 {
2907 enableFullscreen(); 2967 m_usenewfullscreen = false;
2968 reader->bDoUpdates = false;
2969 showEditTools();
2970 reader->bDoUpdates = true;
2971 reader->update();
2972 m_usenewfullscreen = true;
2908 } 2973 }
2909} 2974}
2910 2975
2911void QTReaderApp::focusInEvent(QFocusEvent*) 2976void QTReaderApp::resizeEvent(QResizeEvent *)
2912{ 2977{
2913 if (m_fullscreen) 2978 if (m_usenewfullscreen && m_fullscreen && (editorStack->visibleWidget() == reader))
2914 { 2979 {
2915 enableFullscreen(); 2980 m_usenewfullscreen = false;
2916 raise(); 2981 reader->bDoUpdates = false;
2982 showEditTools();
2983 reader->bDoUpdates = true;
2984 reader->update();
2985 m_usenewfullscreen = true;
2917 } 2986 }
2918} 2987}
2919#endif 2988#endif
2920 2989
2921void QTReaderApp::showEditTools() 2990void QTReaderApp::showEditTools()
2922{ 2991{
2923// if ( !doc ) 2992// if ( !doc )
2924 //close(); 2993 //close();
2925 if (m_fullscreen) 2994 if (m_fullscreen)
2926 { 2995 {
2927#ifdef USEQPE 2996#if defined(USEQPE)
2928 if (menubar != NULL) menubar->hide(); 2997 if (menubar != NULL) menubar->hide();
2929#endif 2998#endif
2930 if (fileBar != NULL) fileBar->hide(); 2999 if (fileBar != NULL) fileBar->hide();
2931 if (viewBar != NULL) viewBar->hide(); 3000 if (viewBar != NULL) viewBar->hide();
2932 if (navBar != NULL) navBar->hide(); 3001 if (navBar != NULL) navBar->hide();
2933 if (markBar != NULL) markBar->hide(); 3002 if (markBar != NULL) markBar->hide();
2934 if (m_prog != NULL) 3003 if (m_prog != NULL)
2935 { 3004 {
@@ -2939,22 +3008,18 @@ void QTReaderApp::showEditTools()
2939 searchBar->hide(); 3008 searchBar->hide();
2940 regBar->hide(); 3009 regBar->hide();
2941#ifdef USEQPE 3010#ifdef USEQPE
2942 Global::hideInputMethod(); 3011 Global::hideInputMethod();
2943#endif 3012#endif
2944 if (m_scrollbar != NULL) m_scrollbar->hide(); 3013 if (m_scrollbar != NULL) m_scrollbar->hide();
2945 m_fontBar->hide(); 3014 m_fontBar->hide();
2946 //showNormal(); 3015 //showNormal();
2947#ifdef NEWFULLSCREEN
2948 enableFullscreen();
2949#else
2950 showFullScreen(); 3016 showFullScreen();
2951#endif 3017 }
2952 }
2953 else 3018 else
2954 { 3019 {
2955 //qDebug("him"); 3020 //qDebug("him");
2956#ifdef USEQPE 3021#ifdef USEQPE
2957 Global::hideInputMethod(); 3022 Global::hideInputMethod();
2958#endif 3023#endif
2959 //qDebug("eb"); 3024 //qDebug("eb");
2960 if (m_scrollbar != NULL) 3025 if (m_scrollbar != NULL)
@@ -2965,17 +3030,17 @@ void QTReaderApp::showEditTools()
2965 } 3030 }
2966 else 3031 else
2967 { 3032 {
2968 m_scrollbar->show(); 3033 m_scrollbar->show();
2969 } 3034 }
2970 } 3035 }
2971 if (!m_hidebars) 3036 if (!m_hidebars)
2972 { 3037 {
2973#ifdef USEQPE 3038#if defined(USEQPE)
2974 menubar->show(); 3039 menubar->show();
2975#endif 3040#endif
2976 if (fileBar != NULL) fileBar->show(); 3041 if (fileBar != NULL) fileBar->show();
2977 if (viewBar != NULL) viewBar->show(); 3042 if (viewBar != NULL) viewBar->show();
2978 if (navBar != NULL) navBar->show(); 3043 if (navBar != NULL) navBar->show();
2979 if (markBar != NULL) markBar->show(); 3044 if (markBar != NULL) markBar->show();
2980 if (m_prog != NULL && !m_statusishidden) 3045 if (m_prog != NULL && !m_statusishidden)
2981 { 3046 {
@@ -2999,30 +3064,30 @@ void QTReaderApp::showEditTools()
2999 Global::showInputMethod(); 3064 Global::showInputMethod();
3000#endif 3065#endif
3001 regBar->show(); 3066 regBar->show();
3002 } 3067 }
3003 if (m_fontVisible) m_fontBar->show(); 3068 if (m_fontVisible) m_fontBar->show();
3004 //qDebug("sn"); 3069 //qDebug("sn");
3005 showNormal(); 3070 showNormal();
3006 //qDebug("sm"); 3071 //qDebug("sm");
3007#ifdef USEQPE 3072#if defined(USEQPE) && !defined(SIMPAD)
3008 showMaximized(); 3073 showMaximized();
3009#endif 3074#endif
3010 //setCentralWidget(reader); 3075 //setCentralWidget(reader);
3011 } 3076 }
3012 3077
3013 // qDebug("uc"); 3078 // qDebug("uc");
3014 updateCaption(); 3079 updateCaption();
3015 // qDebug("rw"); 3080 // qDebug("rw");
3016 editorStack->raiseWidget( reader ); 3081 editorStack->raiseWidget( reader );
3017 // qDebug("sf"); 3082 // qDebug("sf");
3018 reader->setFocus(); 3083 reader->setFocus();
3019 // qDebug("ref"); 3084 // qDebug("ref");
3020 reader->refresh(true); 3085 //reader->refresh(true);
3021 // qDebug("done"); 3086 // qDebug("done");
3022} 3087}
3023/* 3088/*
3024void QTReaderApp::save() 3089void QTReaderApp::save()
3025{ 3090{
3026 if ( !doc ) 3091 if ( !doc )
3027 return; 3092 return;
3028 if ( !editor->edited() ) 3093 if ( !editor->edited() )
@@ -3169,41 +3234,51 @@ void QTReaderApp::do_gotomark()
3169 3234
3170void QTReaderApp::do_delmark() 3235void QTReaderApp::do_delmark()
3171{ 3236{
3172 m_nBkmkAction = cDelBkmk; 3237 m_nBkmkAction = cDelBkmk;
3173 if (!listbkmk(pBkmklist)) 3238 if (!listbkmk(pBkmklist))
3174 QMessageBox::information(this, PROGNAME, "No bookmarks in memory"); 3239 QMessageBox::information(this, PROGNAME, "No bookmarks in memory");
3175} 3240}
3176 3241
3177bool QTReaderApp::listbkmk(CList<Bkmk>* plist, const QString& _lab) 3242bool QTReaderApp::listbkmk(CList<Bkmk>* plist, const QString& _lab, bool presel)
3178{ 3243{
3179 bkmkselector->clear(); 3244 bkmkselector->clear();
3180 if (_lab.isEmpty()) 3245 if (_lab.isEmpty())
3181 bkmkselector->setText("Cancel"); 3246 bkmkselector->setText("Cancel");
3182 else 3247 else
3183 bkmkselector->setText(_lab); 3248 bkmkselector->setText(_lab);
3184 int cnt = 0; 3249 int cnt = 0;
3250 int slt = -1;
3185 if (plist != NULL) 3251 if (plist != NULL)
3186 { 3252 {
3187 for (CList<Bkmk>::iterator i = plist->begin(); i != plist->end(); i++) 3253 for (CList<Bkmk>::iterator i = plist->begin(); i != plist->end(); i++)
3188 { 3254 {
3255 if (presel)
3256 {
3257 Bkmk* p = i.pContent();
3258 if (toQString(CFiledata(p->anno()).name()) == reader->m_lastfile)
3259 {
3260 slt = cnt;
3261 }
3262 }
3189#ifdef _UNICODE 3263#ifdef _UNICODE
3190 // qDebug("Item:%s", (const char*)toQString(i->name())); 3264 // qDebug("Item:%s", (const char*)toQString(i->name()));
3191 bkmkselector->insertItem(toQString(i->name())); 3265 bkmkselector->insertItem(toQString(i->name()), cnt++);
3192#else 3266#else
3193 bkmkselector->insertItem(i->name()); 3267 bkmkselector->insertItem(i->name(), cnt++);
3194#endif 3268#endif
3195 cnt++; 3269
3196 } 3270 }
3197 } 3271 }
3198 if (cnt > 0) 3272 if (cnt > 0)
3199 { 3273 {
3200 hidetoolbars(); 3274 hidetoolbars();
3201 editorStack->raiseWidget( bkmkselector ); 3275 editorStack->raiseWidget( bkmkselector );
3276 if (slt != -1) bkmkselector->setCurrentItem(slt);
3202 return true; 3277 return true;
3203 } 3278 }
3204 else 3279 else
3205 return false; 3280 return false;
3206} 3281}
3207 3282
3208void QTReaderApp::do_autogen() 3283void QTReaderApp::do_autogen()
3209{ 3284{
@@ -3233,40 +3308,41 @@ bool QTReaderApp::openfrombkmk(Bkmk* bk)
3233{ 3308{
3234 QString fn = toQString( 3309 QString fn = toQString(
3235 CFiledata(bk->anno()).name() 3310 CFiledata(bk->anno()).name()
3236 ); 3311 );
3237 //qDebug("fileinfo"); 3312 //qDebug("fileinfo");
3238 if (!fn.isEmpty() && QFileInfo(fn).isFile()) 3313 if (!fn.isEmpty() && QFileInfo(fn).isFile())
3239 { 3314 {
3240 //qDebug("Opening"); 3315 //qDebug("Opening");
3241 openFile(fn);
3242 struct stat fnstat; 3316 struct stat fnstat;
3243 stat((const char *)reader->m_lastfile, &fnstat); 3317 stat((const char *)fn, &fnstat);
3244 3318
3245 if (CFiledata(bk->anno()).date() 3319 if (CFiledata(bk->anno()).date()
3246 != fnstat.st_mtime) 3320 != fnstat.st_mtime)
3247 { 3321 {
3248 CFiledata fd(bk->anno()); 3322 CFiledata fd(bk->anno());
3249 fd.setdate(fnstat.st_mtime); 3323 fd.setdate(fnstat.st_mtime);
3250 bk->value(0); 3324 bk->value(0);
3325 reader->m_lastposn = 0;
3326 openFile(fn);
3251 } 3327 }
3252 else 3328 else
3253 { 3329 {
3254 unsigned short svlen = bk->filedatalen(); 3330 unsigned short svlen = bk->filedatalen();
3255 unsigned char* svdata = bk->filedata(); 3331 unsigned char* svdata = bk->filedata();
3332 openFile(fn, bk->value());
3256 reader->putSaveData(svdata, svlen); 3333 reader->putSaveData(svdata, svlen);
3257 // setstate(svdata, svlen); 3334 // setstate(svdata, svlen);
3258 if (svlen != 0) 3335 if (svlen != 0)
3259 { 3336 {
3260 QMessageBox::warning(this, PROGNAME, "Not all file data used\nNew version?"); 3337 QMessageBox::warning(this, PROGNAME, "Not all file data used\nNew version?");
3261 } 3338 }
3262 // qDebug("updating"); 3339 // qDebug("updating");
3263 // showEditTools(); 3340 // showEditTools();
3264 reader->locate(bk->value());
3265 } 3341 }
3266 return true; 3342 return true;
3267 } 3343 }
3268 else 3344 else
3269 { 3345 {
3270 return false; 3346 return false;
3271 } 3347 }
3272} 3348}
@@ -3361,17 +3437,17 @@ void QTReaderApp::gotobkmk(int ind)
3361 QMessageBox::information(this, PROGNAME, "Couldn't open output"); 3437 QMessageBox::information(this, PROGNAME, "Couldn't open output");
3362 } 3438 }
3363 } 3439 }
3364#else /* USEQPE */ 3440#else /* USEQPE */
3365 FILE* fin = fopen((const char *)Global::applicationFileName(APPDIR "/urls",bkmkselector->text(ind)), "r"); 3441 FILE* fin = fopen((const char *)Global::applicationFileName(APPDIR "/urls",bkmkselector->text(ind)), "r");
3366 if (fin != NULL) 3442 if (fin != NULL)
3367 { 3443 {
3368 bool allok = false; 3444 bool allok = false;
3369#ifdef OPIE 3445#if defined(OPIE) && defined(OPIEFILEDIALOG)
3370 QString outfile = OFileDialog::getSaveFileName(OFileSelector::EXTENDED_ALL, QString::null, QString::null, MimeTypes(), 0, "OpieReader"); 3446 QString outfile = OFileDialog::getSaveFileName(OFileSelector::EXTENDED_ALL, QString::null, QString::null, MimeTypes(), 0, "OpieReader");
3371 if (!outfile.isEmpty()) 3447 if (!outfile.isEmpty())
3372 { 3448 {
3373 FILE* fout = fopen((const char *)outfile, "w"); 3449 FILE* fout = fopen((const char *)outfile, "w");
3374 if (fout != NULL) 3450 if (fout != NULL)
3375 { 3451 {
3376 fprintf(fout, "<html><body>\n"); 3452 fprintf(fout, "<html><body>\n");
3377 int ch = 0; 3453 int ch = 0;
@@ -3698,35 +3774,44 @@ void QTReaderApp::do_autogen(const QString& regText)
3698 pbar->raise(); 3774 pbar->raise();
3699 pbar->reset(); 3775 pbar->reset();
3700 reader->update(); 3776 reader->update();
3701 qApp->processEvents(); 3777 qApp->processEvents();
3702 reader->setFocus(); 3778 reader->setFocus();
3703 reader->jumpto(0); 3779 reader->jumpto(0);
3704 int lastpc = 0; 3780 int lastpc = 0;
3705 int i = 0; 3781 int i = 0;
3782 unsigned int llcn = reader->locate();
3706 while (i >= 0) 3783 while (i >= 0)
3707 { 3784 {
3708 unsigned int lcn = reader->locate(); 3785 unsigned int lcn = llcn;
3709 int pc = (100*lcn)/ts; 3786 int pc = (100*lcn)/ts;
3710 if (pc != lastpc) 3787 if (pc != lastpc)
3711 { 3788 {
3712 pbar->setProgress(pc); 3789 pbar->setProgress(pc);
3713 qApp->processEvents(); 3790 qApp->processEvents();
3714 if (reader->locate() != lcn) reader->jumpto(lcn); 3791 if (reader->locate() != lcn) reader->jumpto(lcn);
3715 reader->setFocus(); 3792 reader->setFocus();
3716 lastpc = pc; 3793 lastpc = pc;
3717 } 3794 }
3718 i = reader->buffdoc.getpara(buff); 3795 i = reader->buffdoc.getpara(buff);
3719#ifdef _UNICODE 3796#ifdef _UNICODE
3720 if (re.match(toQString(buff.data())) != -1) 3797 if (re.match(toQString(buff.data())) != -1)
3721#else 3798#else
3722 if (re.match(buff.data()) != -1) 3799 if (re.match(buff.data()) != -1)
3723#endif 3800#endif
3724 pBkmklist->push_back(Bkmk(buff.data(), NULL, lcn)); 3801 pBkmklist->push_back(Bkmk(buff.data(), NULL, lcn));
3802 /*
3803 llcn = reader->locate();
3804 if ((i == 0) && (llcn+1 < ts))
3805 {
3806 reader->jumpto(++llcn);
3807 i = 1;
3808 }
3809 */
3725 } 3810 }
3726 pBkmklist->sort(); 3811 pBkmklist->sort();
3727 pbar->setProgress(100); 3812 pbar->setProgress(100);
3728 qApp->processEvents(); 3813 qApp->processEvents();
3729 pbar->hide(); 3814 pbar->hide();
3730 reader->refresh(); 3815 reader->refresh();
3731} 3816}
3732 3817
@@ -4027,16 +4112,20 @@ void QTReaderApp::showAnnotation()
4027 hidetoolbars(); 4112 hidetoolbars();
4028 m_annoWin->setFocus(); 4113 m_annoWin->setFocus();
4029} 4114}
4030 4115
4031void QTReaderApp::OnWordSelected(const QString& wrd, size_t posn, size_t posn2, const QString& line) 4116void QTReaderApp::OnWordSelected(const QString& wrd, size_t posn, size_t posn2, const QString& line)
4032{ 4117{
4033//// qDebug("OnWordSelected(%u):%s", posn, (const char*)wrd); 4118//// qDebug("OnWordSelected(%u):%s", posn, (const char*)wrd);
4034 4119
4120 if (m_doOutput && reader->checkoutput())
4121 {
4122 reader->doOutput(wrd);
4123 }
4035 if (m_doClipboard) 4124 if (m_doClipboard)
4036 { 4125 {
4037 QClipboard* cb = QApplication::clipboard(); 4126 QClipboard* cb = QApplication::clipboard();
4038 cb->setText(wrd); 4127 cb->setText(wrd);
4039#ifdef USEQPE 4128#ifdef USEQPE
4040 if (wrd.length() > 10) 4129 if (wrd.length() > 10)
4041 { 4130 {
4042 Global::statusMessage(wrd.left(8) + ".."); 4131 Global::statusMessage(wrd.left(8) + "..");
@@ -4111,28 +4200,28 @@ void QTReaderApp::doAction(QKeyEvent* e)
4111 break; 4200 break;
4112 case cesInvertColours: 4201 case cesInvertColours:
4113 m_inverse_action->setOn(!reader->bInverse); 4202 m_inverse_action->setOn(!reader->bInverse);
4114 break; 4203 break;
4115 case cesToggleBars: 4204 case cesToggleBars:
4116 m_hidebars = !m_hidebars; 4205 m_hidebars = !m_hidebars;
4117 if (m_hidebars) 4206 if (m_hidebars)
4118 { 4207 {
4119#ifdef USEQPE 4208#if defined(USEQPE)
4120 menubar->hide(); 4209 menubar->hide();
4121#endif 4210#endif
4122 if (fileBar != NULL) fileBar->hide(); 4211 if (fileBar != NULL) fileBar->hide();
4123 if (viewBar != NULL) viewBar->hide(); 4212 if (viewBar != NULL) viewBar->hide();
4124 if (navBar != NULL) navBar->hide(); 4213 if (navBar != NULL) navBar->hide();
4125 if (markBar != NULL) markBar->hide(); 4214 if (markBar != NULL) markBar->hide();
4126 mb->hide(); 4215 mb->hide();
4127 } 4216 }
4128 else 4217 else
4129 { 4218 {
4130#ifdef USEQPE 4219#if defined(USEQPE)
4131 menubar->show(); 4220 menubar->show();
4132#endif 4221#endif
4133 if (fileBar != NULL) fileBar->show(); 4222 if (fileBar != NULL) fileBar->show();
4134 if (viewBar != NULL) viewBar->show(); 4223 if (viewBar != NULL) viewBar->show();
4135 if (navBar != NULL) navBar->show(); 4224 if (navBar != NULL) navBar->show();
4136 if (markBar != NULL) markBar->show(); 4225 if (markBar != NULL) markBar->show();
4137 mb->show(); 4226 mb->show();
4138 } 4227 }
@@ -4335,16 +4424,17 @@ void QTReaderApp::do_saveconfig(const QString& _txt, bool full)
4335 fi.setFile(d, _txt); 4424 fi.setFile(d, _txt);
4336 } 4425 }
4337 //qDebug("Path:%s", (const char*)fi.absFilePath()); 4426 //qDebug("Path:%s", (const char*)fi.absFilePath());
4338 Config config(fi.absFilePath()); 4427 Config config(fi.absFilePath());
4339#endif 4428#endif
4340 4429
4341 4430
4342 config.writeEntry( "StripCr", reader->bstripcr ); 4431 config.writeEntry( "StripCr", reader->bstripcr );
4432 config.writeEntry( "NoInlineTables", reader->bNoInlineTables );
4343 config.writeEntry( "AutoFmt", reader->bautofmt ); 4433 config.writeEntry( "AutoFmt", reader->bautofmt );
4344 config.writeEntry( "TextFmt", reader->btextfmt ); 4434 config.writeEntry( "TextFmt", reader->btextfmt );
4345 config.writeEntry( "StripHtml", reader->bstriphtml ); 4435 config.writeEntry( "StripHtml", reader->bstriphtml );
4346 config.writeEntry( "Dehyphen", reader->bdehyphen ); 4436 config.writeEntry( "Dehyphen", reader->bdehyphen );
4347 config.writeEntry( "Depluck", reader->bdepluck ); 4437 config.writeEntry( "Depluck", reader->bdepluck );
4348 config.writeEntry( "Dejpluck", reader->bdejpluck ); 4438 config.writeEntry( "Dejpluck", reader->bdejpluck );
4349 config.writeEntry( "OneSpace", reader->bonespace ); 4439 config.writeEntry( "OneSpace", reader->bonespace );
4350 config.writeEntry( "Unindent", reader->bunindent ); 4440 config.writeEntry( "Unindent", reader->bunindent );
@@ -4360,16 +4450,17 @@ void QTReaderApp::do_saveconfig(const QString& _txt, bool full)
4360 config.writeEntry( "ScrollType", reader->m_scrolltype ); 4450 config.writeEntry( "ScrollType", reader->m_scrolltype );
4361 if (full) 4451 if (full)
4362 { 4452 {
4363 config.writeEntry("Debounce", m_debounce); 4453 config.writeEntry("Debounce", m_debounce);
4364 config.writeEntry("FloatDialogs", m_bFloatingDialog); 4454 config.writeEntry("FloatDialogs", m_bFloatingDialog);
4365 reader->m_lastposn = reader->pagelocate(); 4455 reader->m_lastposn = reader->pagelocate();
4366 config.writeEntry( "LastFile", reader->m_lastfile ); 4456 config.writeEntry( "LastFile", reader->m_lastfile );
4367 config.writeEntry( "LastPosn", (int)(reader->pagelocate()) ); 4457 config.writeEntry( "LastPosn", (int)(reader->pagelocate()) );
4458 config.writeEntry( "OutputCodec", reader->m_outputName);
4368 } 4459 }
4369 config.writeEntry( "PageMode", reader->m_bpagemode ); 4460 config.writeEntry( "PageMode", reader->m_bpagemode );
4370 config.writeEntry( "MonoSpaced", reader->m_bMonoSpaced ); 4461 config.writeEntry( "MonoSpaced", reader->m_bMonoSpaced );
4371 config.writeEntry( "SwapMouse", reader->m_swapmouse); 4462 config.writeEntry( "SwapMouse", reader->m_swapmouse);
4372 config.writeEntry( "IsRotated", reader->m_rotated ); 4463 config.writeEntry( "IsRotated", reader->m_rotated );
4373 config.writeEntry("StatusContent", m_statusstring); 4464 config.writeEntry("StatusContent", m_statusstring);
4374 config.writeEntry("StatusHidden", m_statusishidden); 4465 config.writeEntry("StatusHidden", m_statusishidden);
4375 config.writeEntry( "Background", m_background ); 4466 config.writeEntry( "Background", m_background );
@@ -4391,36 +4482,40 @@ void QTReaderApp::do_saveconfig(const QString& _txt, bool full)
4391#ifdef _SCROLLPIPE 4482#ifdef _SCROLLPIPE
4392 config.writeEntry( "PipeTarget", reader->m_pipetarget ); 4483 config.writeEntry( "PipeTarget", reader->m_pipetarget );
4393 config.writeEntry( "PauseAfterPara", reader->m_pauseAfterEachPara ); 4484 config.writeEntry( "PauseAfterPara", reader->m_pauseAfterEachPara );
4394#endif 4485#endif
4395 config.writeEntry( "TwoTouch", m_twoTouch ); 4486 config.writeEntry( "TwoTouch", m_twoTouch );
4396 config.writeEntry( "Annotation", m_doAnnotation); 4487 config.writeEntry( "Annotation", m_doAnnotation);
4397 config.writeEntry( "Dictionary", m_doDictionary); 4488 config.writeEntry( "Dictionary", m_doDictionary);
4398 config.writeEntry( "Clipboard", m_doClipboard); 4489 config.writeEntry( "Clipboard", m_doClipboard);
4490 config.writeEntry( "OutputTgt", m_doOutput);
4399 /* 4491 /*
4400 config.writeEntry( "SpaceTarget", m_spaceTarget); 4492 config.writeEntry( "SpaceTarget", m_spaceTarget);
4401 config.writeEntry( "EscapeTarget", m_escapeTarget); 4493 config.writeEntry( "EscapeTarget", m_escapeTarget);
4402 config.writeEntry( "ReturnTarget", m_returnTarget); 4494 config.writeEntry( "ReturnTarget", m_returnTarget);
4403 config.writeEntry( "LeftTarget", m_leftTarget); 4495 config.writeEntry( "LeftTarget", m_leftTarget);
4404 config.writeEntry( "RightTarget", m_rightTarget); 4496 config.writeEntry( "RightTarget", m_rightTarget);
4405 config.writeEntry( "UpTarget", m_upTarget); 4497 config.writeEntry( "UpTarget", m_upTarget);
4406 config.writeEntry( "DownTarget", m_downTarget); 4498 config.writeEntry( "DownTarget", m_downTarget);
4407 config.writeEntry("LeftScroll", m_leftScroll); 4499 config.writeEntry("LeftScroll", m_leftScroll);
4408 config.writeEntry("RightScroll", m_rightScroll); 4500 config.writeEntry("RightScroll", m_rightScroll);
4409 config.writeEntry("UpScroll", m_upScroll); 4501 config.writeEntry("UpScroll", m_upScroll);
4410 config.writeEntry("DownScroll", m_downScroll); 4502 config.writeEntry("DownScroll", m_downScroll);
4411 */ 4503 */
4412 config.writeEntry( "Repalm", reader->brepalm ); 4504 config.writeEntry( "Repalm", reader->brepalm );
4505 config.writeEntry( "UnderlineLink", reader->bunderlineLink );
4413 config.writeEntry( "HideScrollBar", m_scrollishidden ); 4506 config.writeEntry( "HideScrollBar", m_scrollishidden );
4507 config.writeEntry( "HideToolBar", m_hidebars );
4414 config.writeEntry( "Kern", reader->bkern ); 4508 config.writeEntry( "Kern", reader->bkern );
4415 config.writeEntry( "Remap", reader->bremap ); 4509 config.writeEntry( "Remap", reader->bremap );
4416 config.writeEntry( "Peanut", reader->bpeanut ); 4510 config.writeEntry( "Peanut", reader->bpeanut );
4417 config.writeEntry( "MakeBold", reader->bmakebold ); 4511 config.writeEntry( "MakeBold", reader->bmakebold );
4418 config.writeEntry( "Continuous", reader->m_continuousDocument ); 4512 config.writeEntry( "Continuous", reader->m_continuousDocument );
4513 config.writeEntry( "DoubleBuffer", reader->m_doubleBuffered);
4419 config.writeEntry( "FullJust", reader->bfulljust ); 4514 config.writeEntry( "FullJust", reader->bfulljust );
4420 // config.writeEntry( "Negative", reader->bNegative ); 4515 // config.writeEntry( "Negative", reader->bNegative );
4421 config.writeEntry( "Inverse", reader->bInverse ); 4516 config.writeEntry( "Inverse", reader->bInverse );
4422 config.writeEntry( "FixGraphics", reader->m_fontControl.FixGraphics()); 4517 config.writeEntry( "FixGraphics", reader->m_fontControl.FixGraphics());
4423 config.writeEntry( "ExtraSpace", reader->getextraspace() ); 4518 config.writeEntry( "ExtraSpace", reader->getextraspace() );
4424 config.writeEntry( "ExtraLead", reader->getlead() ); 4519 config.writeEntry( "ExtraLead", reader->getlead() );
4425 config.writeEntry( "Basesize", (int)reader->getBaseSize()); 4520 config.writeEntry( "Basesize", (int)reader->getBaseSize());
4426 config.writeEntry( "RequestorFontChange", m_propogatefontchange); 4521 config.writeEntry( "RequestorFontChange", m_propogatefontchange);
@@ -4514,16 +4609,17 @@ bool QTReaderApp::readconfig(const QString& dirname, const QString& _txt, bool f
4514 config.setGroup("Toolbar"); 4609 config.setGroup("Toolbar");
4515 m_tbmovesave = m_tbmove = config.readBoolEntry("Movable", m_tbmovesave); 4610 m_tbmovesave = m_tbmove = config.readBoolEntry("Movable", m_tbmovesave);
4516 m_tbpolsave = m_tbpol = (ToolbarPolicy)config.readNumEntry("Policy", m_tbpolsave); 4611 m_tbpolsave = m_tbpol = (ToolbarPolicy)config.readNumEntry("Policy", m_tbpolsave);
4517 m_tbposition = (ToolBarDock)config.readNumEntry("Position", m_tbposition); 4612 m_tbposition = (ToolBarDock)config.readNumEntry("Position", m_tbposition);
4518 } 4613 }
4519 config.setGroup( "View" ); 4614 config.setGroup( "View" );
4520 m_bFloatingDialog = config.readBoolEntry("FloatDialogs", m_bFloatingDialog); 4615 m_bFloatingDialog = config.readBoolEntry("FloatDialogs", m_bFloatingDialog);
4521 reader->bstripcr = config.readBoolEntry( "StripCr", reader->bstripcr ); 4616 reader->bstripcr = config.readBoolEntry( "StripCr", reader->bstripcr );
4617 reader->bNoInlineTables = config.readBoolEntry( "NoInlineTables", reader->bNoInlineTables );
4522 reader->bfulljust = config.readBoolEntry( "FullJust", reader->bfulljust ); 4618 reader->bfulljust = config.readBoolEntry( "FullJust", reader->bfulljust );
4523 reader->bInverse = config.readBoolEntry( "Inverse", reader->bInverse ); 4619 reader->bInverse = config.readBoolEntry( "Inverse", reader->bInverse );
4524 // reader->bNegative = config.readBoolEntry( "Negative", false ); 4620 // reader->bNegative = config.readBoolEntry( "Negative", false );
4525 reader->m_fontControl.FixGraphics(config.readBoolEntry( "FixGraphics", reader->m_fontControl.FixGraphics() )); 4621 reader->m_fontControl.FixGraphics(config.readBoolEntry( "FixGraphics", reader->m_fontControl.FixGraphics() ));
4526 reader->setextraspace(config.readNumEntry( "ExtraSpace", reader->getextraspace() )); 4622 reader->setextraspace(config.readNumEntry( "ExtraSpace", reader->getextraspace() ));
4527 reader->setlead(config.readNumEntry( "ExtraLead", reader->getlead() )); 4623 reader->setlead(config.readNumEntry( "ExtraLead", reader->getlead() ));
4528 reader->btextfmt = config.readBoolEntry( "TextFmt", reader->btextfmt ); 4624 reader->btextfmt = config.readBoolEntry( "TextFmt", reader->btextfmt );
4529 reader->bautofmt = config.readBoolEntry( "AutoFmt", reader->bautofmt ); 4625 reader->bautofmt = config.readBoolEntry( "AutoFmt", reader->bautofmt );
@@ -4569,37 +4665,43 @@ bool QTReaderApp::readconfig(const QString& dirname, const QString& _txt, bool f
4569 reader->m_encd = config.readNumEntry( "Encoding", reader->m_encd ); 4665 reader->m_encd = config.readNumEntry( "Encoding", reader->m_encd );
4570 reader->m_charpc = config.readNumEntry( "CharSpacing", reader->m_charpc ); 4666 reader->m_charpc = config.readNumEntry( "CharSpacing", reader->m_charpc );
4571 reader->m_overlap = config.readNumEntry( "Overlap", reader->m_overlap ); 4667 reader->m_overlap = config.readNumEntry( "Overlap", reader->m_overlap );
4572 reader->m_abstopmargin = config.readNumEntry( "Top Margin", reader->m_abstopmargin ); 4668 reader->m_abstopmargin = config.readNumEntry( "Top Margin", reader->m_abstopmargin );
4573 reader->m_absbottommargin = config.readNumEntry( "Bottom Margin", reader->m_absbottommargin ); 4669 reader->m_absbottommargin = config.readNumEntry( "Bottom Margin", reader->m_absbottommargin );
4574 reader->m_absleft_border = config.readNumEntry( "Left Margin", reader->m_absleft_border ); 4670 reader->m_absleft_border = config.readNumEntry( "Left Margin", reader->m_absleft_border );
4575 reader->m_absright_border = config.readNumEntry( "Right Margin", reader->m_absright_border ); 4671 reader->m_absright_border = config.readNumEntry( "Right Margin", reader->m_absright_border );
4576 m_scrollishidden = config.readBoolEntry( "HideScrollBar", m_scrollishidden ); 4672 m_scrollishidden = config.readBoolEntry( "HideScrollBar", m_scrollishidden );
4673 m_hidebars = config.readBoolEntry( "HideToolBar", m_hidebars );
4577 reader->brepalm = config.readBoolEntry( "Repalm", reader->brepalm ); 4674 reader->brepalm = config.readBoolEntry( "Repalm", reader->brepalm );
4675 reader->bunderlineLink = config.readBoolEntry( "UnderlineLink", reader->bunderlineLink );
4578 reader->bkern = config.readBoolEntry( "Kern", reader->bkern ); 4676 reader->bkern = config.readBoolEntry( "Kern", reader->bkern );
4579 reader->bremap = config.readBoolEntry( "Remap", reader->bremap ); 4677 reader->bremap = config.readBoolEntry( "Remap", reader->bremap );
4580 reader->bmakebold = config.readBoolEntry( "MakeBold", reader->bmakebold ); 4678 reader->bmakebold = config.readBoolEntry( "MakeBold", reader->bmakebold );
4581 reader->setContinuous(config.readBoolEntry( "Continuous", reader->m_continuousDocument )); 4679 reader->setContinuous(config.readBoolEntry( "Continuous", reader->m_continuousDocument ));
4680 reader->setDoubleBuffer(config.readBoolEntry("DoubleBuffer", reader->m_doubleBuffered));
4582 m_targetapp = config.readEntry( "TargetApp", m_targetapp ); 4681 m_targetapp = config.readEntry( "TargetApp", m_targetapp );
4583 m_targetmsg = config.readEntry( "TargetMsg", m_targetmsg ); 4682 m_targetmsg = config.readEntry( "TargetMsg", m_targetmsg );
4584#ifdef _SCROLLPIPE 4683#ifdef _SCROLLPIPE
4585 reader->m_pipetarget = config.readEntry( "PipeTarget", reader->m_pipetarget ); 4684 reader->m_pipetarget = config.readEntry( "PipeTarget", reader->m_pipetarget );
4586 reader->m_pauseAfterEachPara = config.readBoolEntry( "PauseAfterPara", reader->m_pauseAfterEachPara ); 4685 reader->m_pauseAfterEachPara = config.readBoolEntry( "PauseAfterPara", reader->m_pauseAfterEachPara );
4587#endif 4686#endif
4588 m_twoTouch = config.readBoolEntry( "TwoTouch", m_twoTouch); 4687 m_twoTouch = config.readBoolEntry( "TwoTouch", m_twoTouch);
4589 m_doAnnotation = config.readBoolEntry( "Annotation", m_doAnnotation); 4688 m_doAnnotation = config.readBoolEntry( "Annotation", m_doAnnotation);
4590 m_doDictionary = config.readBoolEntry( "Dictionary", m_doDictionary); 4689 m_doDictionary = config.readBoolEntry( "Dictionary", m_doDictionary);
4591 m_doClipboard = config.readBoolEntry( "Clipboard", m_doClipboard); 4690 m_doClipboard = config.readBoolEntry( "Clipboard", m_doClipboard);
4691 m_doOutput = config.readBoolEntry( "OutputTgt", m_doOutput);
4592#ifdef USEQPE 4692#ifdef USEQPE
4593 m_grabkeyboard = config.readBoolEntry( "GrabKeyboard", m_grabkeyboard); 4693 m_grabkeyboard = config.readBoolEntry( "GrabKeyboard", m_grabkeyboard);
4594#endif 4694#endif
4595 m_propogatefontchange = config.readBoolEntry( "RequestorFontChange", m_propogatefontchange); 4695 m_propogatefontchange = config.readBoolEntry( "RequestorFontChange", m_propogatefontchange);
4596 reader->setBaseSize(config.readNumEntry( "Basesize", reader->getBaseSize() )); 4696 reader->setBaseSize(config.readNumEntry( "Basesize", reader->getBaseSize() ));
4597 reader->setTwoTouch(m_twoTouch); 4697 reader->setTwoTouch(m_twoTouch);
4698
4699 reader->m_outputName = config.readEntry( "OutputCodec", reader->m_outputName);
4598 4700
4599 m_touch_action->setOn(m_twoTouch); 4701 m_touch_action->setOn(m_twoTouch);
4600 m_setmono_action->setOn(reader->m_bMonoSpaced); 4702 m_setmono_action->setOn(reader->m_bMonoSpaced);
4601 setfontHelper(reader->m_fontname); 4703 setfontHelper(reader->m_fontname);
4602 if (full) 4704 if (full)
4603 { 4705 {
4604 addtoolbars(&config); 4706 addtoolbars(&config);
4605 } 4707 }
@@ -4632,18 +4734,17 @@ bool QTReaderApp::PopulateConfig(const char* tgtdir, bool usedirs)
4632// d.setSorting( QDir::Size | QDir::Reversed ); 4734// d.setSorting( QDir::Size | QDir::Reversed );
4633 4735
4634 const QFileInfoList *list = d.entryInfoList(); 4736 const QFileInfoList *list = d.entryInfoList();
4635 QFileInfoListIterator it( *list ); // create list iterator 4737 QFileInfoListIterator it( *list ); // create list iterator
4636 QFileInfo *fi; // pointer for traversing 4738 QFileInfo *fi; // pointer for traversing
4637 4739
4638 while ( (fi=it.current()) ) { // for each file... 4740 while ( (fi=it.current()) ) { // for each file...
4639 4741
4640 bkmkselector->insertItem(fi->fileName()); 4742 bkmkselector->insertItem(fi->fileName(), cnt++);
4641 cnt++;
4642 4743
4643 //qDebug( "%10li %s", fi->size(), fi->fileName().data() ); 4744 //qDebug( "%10li %s", fi->size(), fi->fileName().data() );
4644 ++it; // goto next list element 4745 ++it; // goto next list element
4645 } 4746 }
4646 4747
4647#else /* USEQPE */ 4748#else /* USEQPE */
4648 int cnt = 0; 4749 int cnt = 0;
4649 DIR *d; 4750 DIR *d;
@@ -4658,18 +4759,17 @@ bool QTReaderApp::PopulateConfig(const char* tgtdir, bool usedirs)
4658 { 4759 {
4659 struct dirent* de; 4760 struct dirent* de;
4660 struct stat buf; 4761 struct stat buf;
4661 de = readdir(d); 4762 de = readdir(d);
4662 if (de == NULL) break; 4763 if (de == NULL) break;
4663 4764
4664 if (lstat((const char *)Global::applicationFileName(finaldir,de->d_name),&buf) == 0 && ((usedirs && S_ISDIR(buf.st_mode)) || (!usedirs && S_ISREG(buf.st_mode)))) 4765 if (lstat((const char *)Global::applicationFileName(finaldir,de->d_name),&buf) == 0 && ((usedirs && S_ISDIR(buf.st_mode)) || (!usedirs && S_ISREG(buf.st_mode))))
4665 { 4766 {
4666 bkmkselector->insertItem(de->d_name); 4767 bkmkselector->insertItem(de->d_name, cnt++);
4667 cnt++;
4668 } 4768 }
4669 } 4769 }
4670 delete [] finaldir; 4770 delete [] finaldir;
4671 closedir(d); 4771 closedir(d);
4672#endif 4772#endif
4673 return (cnt > 0); 4773 return (cnt > 0);
4674} 4774}
4675 4775
@@ -4730,16 +4830,18 @@ void QTReaderApp::OnURLSelected(const QString& href, const size_t tgt)
4730 { 4830 {
4731 QString type = href.left(col); 4831 QString type = href.left(col);
4732 qDebug("Type:%s", (const char*)type); 4832 qDebug("Type:%s", (const char*)type);
4733 } 4833 }
4734 else 4834 else
4735 { 4835 {
4736 qDebug("No type"); 4836 qDebug("No type");
4737 } 4837 }
4838 QString msg = "External URL\n" + href;
4839 QMessageBox::information(this, PROGNAME, msg);
4738#else 4840#else
4739 if (href.isEmpty()) 4841 if (href.isEmpty())
4740 { 4842 {
4741 QMessageBox::information(this, PROGNAME, "No URL information supplied"); 4843 QMessageBox::information(this, PROGNAME, "No URL information supplied");
4742 } 4844 }
4743 else 4845 else
4744 { 4846 {
4745 CURLDialog* urld = new CURLDialog(href, false, this); 4847 CURLDialog* urld = new CURLDialog(href, false, this);
@@ -4896,33 +4998,37 @@ void QTReaderApp::setscrollbarcolour()
4896 4998
4897void QTReaderApp::forceopen(const QString& filename) 4999void QTReaderApp::forceopen(const QString& filename)
4898{ 5000{
4899 /* 5001 /*
4900 QFileInfo fi(reader->m_lastfile); 5002 QFileInfo fi(reader->m_lastfile);
4901 fi = QFileInfo(filename); 5003 fi = QFileInfo(filename);
4902 QString flnm = fi.absFilePath(); 5004 QString flnm = fi.absFilePath();
4903 */ 5005 */
4904 if (!filename.isEmpty()) 5006 if (!filename.isEmpty() && QFileInfo(filename).exists())
4905 { 5007 {
4906 updatefileinfo(); 5008 updatefileinfo();
4907 if (pBkmklist != NULL) 5009 if (pBkmklist != NULL)
4908 { 5010 {
4909 if (m_fBkmksChanged) 5011 if (m_fBkmksChanged)
4910 { 5012 {
4911 savebkmks(); 5013 savebkmks();
4912 } 5014 }
4913 delete pBkmklist; 5015 delete pBkmklist;
4914 pBkmklist = NULL; 5016 pBkmklist = NULL;
4915 m_fBkmksChanged = false; 5017 m_fBkmksChanged = false;
4916 } 5018 }
4917 reader->disableAutoscroll(); 5019 reader->disableAutoscroll();
4918 openFile(filename); 5020 openFile(filename);
4919 reader->setFocus(); 5021 reader->setFocus();
4920 } 5022 }
5023 else
5024 {
5025 OnURLSelected(filename, 0);
5026 }
4921} 5027}
4922 5028
4923void QTReaderApp::actionscroll(int v) 5029void QTReaderApp::actionscroll(int v)
4924{ 5030{
4925 if (reader->m_rotated) 5031 if (reader->m_rotated)
4926 { 5032 {
4927 reader->dopageup(reader->buffdoc.startSection()+reader->buffdoc.endSection()-v); 5033 reader->dopageup(reader->buffdoc.startSection()+reader->buffdoc.endSection()-v);
4928 } 5034 }