Diffstat (limited to 'noncore/apps/opie-reader/QTReaderApp.cpp') (more/less context) (show whitespace changes)
-rw-r--r-- | noncore/apps/opie-reader/QTReaderApp.cpp | 1902 |
1 files changed, 1323 insertions, 579 deletions
diff --git a/noncore/apps/opie-reader/QTReaderApp.cpp b/noncore/apps/opie-reader/QTReaderApp.cpp index f18cb59..63d1fb0 100644 --- a/noncore/apps/opie-reader/QTReaderApp.cpp +++ b/noncore/apps/opie-reader/QTReaderApp.cpp @@ -14,100 +14,115 @@ ** 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 "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 "QTReaderApp.h" -#include "CDrawBuffer.h" -#include "Filedata.h" -#include "opie.h" -#include "names.h" -#include "CEncoding_tables.h" -#include "CloseDialog.h" - -/* OPIE */ -#include <opie2/odebug.h> -#ifdef USEQPE -#include <qpe/menubutton.h> -#include <qpe/fontdatabase.h> -#include <qpe/global.h> -#include <qpe/applnk.h> -#include <qpe/config.h> -#include <qpe/qcopenvelope_qws.h> -#endif - -/* QT */ -#ifdef USEQPE -#include <qmenubar.h> -#include <qtoolbar.h> -#endif #include <qregexp.h> #include <qclipboard.h> #include <qwidgetstack.h> +#ifdef USEQPE
+#include <qpe/qpemenubar.h>
+#include <qpe/qpetoolbar.h>
+#endif
#include <qmenubar.h> #include <qtoolbar.h> +#ifdef USEQPE
+#include <qpe/menubutton.h>
+#endif
#include <qcombobox.h> #include <qpopupmenu.h> #include <qaction.h> #include <qapplication.h> #include <qlineedit.h> #include <qtoolbutton.h> #include <qspinbox.h> #include <qobjectlist.h> +#include <qstatusbar.h>
+#ifdef USEQPE
+#include <qpe/global.h>
+#include <qpe/applnk.h>
+#endif
#include <qfileinfo.h> +#include <stdlib.h> //getenv
#include <qprogressbar.h> +#ifdef USEQPE
+#include <qpe/config.h>
+#endif
#include <qbuttongroup.h> #include <qradiobutton.h> - -/* STD */ -#include <stdlib.h> //getenv - - +#ifdef USEQPE
+#include <qpe/qcopenvelope_qws.h>
+#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 "util.h"
+#include <qfontdatabase.h>
+#include "opie.h"
#ifdef USEQPE #include <qpe/resource.h> -#include <qpe/qpeapplication.h> +#ifdef OPIE
+//#include <qpe/applnk.h>
+#include <opie2/ofiledialog.h>
+using namespace Opie::Ui;
+#else
#include "fileBrowser.h" +#endif
#else #include "qfiledialog.h" #endif +#include "QTReaderApp.h"
+#include "CDrawBuffer.h"
+#include "Filedata.h"
+#include "useqpe.h"
+#include "names.h"
+#include "CEncoding_tables.h"
+#include "CloseDialog.h"
+
+#include "ButtonPrefs.h"
+
bool CheckVersion(int&, int&, char&); #ifdef _WINDOWS #define PICDIR "c:\\uqtreader\\pics\\" #else #ifdef USEQPE +#define USEMSGS
#define PICDIR "opie-reader/" #else -#define PICDIR "/home/tim/uqtreader/pics/" +//#define PICDIR "/home/tim/uqtreader/pics/"
+QString picdir()
+{
+ QString hd(getenv("READERDIR"));
+ return hd + "/pics";
+}
+#define PICDIR picdir()
#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 geticon(iconname) QPixmap(PICDIR iconname ".png")
+#define geticon(iconname) QPixmap(PICDIR +"/"+iconname+".png")
#define getmyicon(iconname) geticon(iconname) //#define geticon(iconname) QIconSet( QPixmap(PICDIR iconname) ) #endif #ifndef _WINDOWS #include <unistd.h> @@ -123,13 +138,13 @@ void QTReaderApp::listBkmkFiles() bkmkselector->setText("Cancel"); #ifndef USEQPE int cnt = 0; QDir d = QDir::home(); // "/" if ( !d.cd(APPDIR) ) { // "/tmp" - owarn << "Cannot find the \"~/" APPDIR "\" directory" << oendl; + qWarning( "Cannot find the \"~/" APPDIR "\" directory" );
d = QDir::home(); d.mkdir(APPDIR); d.cd(APPDIR); } @@ -144,13 +159,13 @@ void QTReaderApp::listBkmkFiles() while ( (fi=it.current()) ) { // for each file... bkmkselector->insertItem(fi->fileName()); cnt++; - //odebug << "" << fi->size() << " " << fi->fileName().data() << "" << oendl; + //qDebug( "%10li %s", fi->size(), fi->fileName().data() );
++it; // goto next list element } #else /* USEQPE */ int cnt = 0; DIR *d; @@ -172,23 +187,33 @@ void QTReaderApp::listBkmkFiles() 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() { + if (m_scrollbar != NULL) m_scrollbar->hide();
+ if (m_prog != NULL) m_prog->hide();
+
+#ifdef USEQPE
menubar->hide(); +#endif
+
+ if (m_scrollbar != NULL) m_scrollbar->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) @@ -205,21 +230,50 @@ void QTReaderApp::hidetoolbars() #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) + : QMainWindow( parent, name, f ), m_dontSave(false),
+ fileBar(NULL), navBar(NULL), viewBar(NULL), markBar(NULL), m_scrollbar(NULL), m_localscroll(2), m_hidebars(false), m_kmapchanged(false)
{ + {
+ setKeyCompression ( true );
+#ifndef USEQPE
+ QDir d = QDir::home(); // "/"
+ d.cd(APPDIR);
+ QFileInfo fi(d, ".keymap");
+ FILE* f = fopen((const char *)fi.absFilePath(), "r");
+#else /* USEQPE */
+ FILE* f = fopen((const char *)Global::applicationFileName(APPDIR,".keymap"), "r");
+#endif /* USEQPE */
+ if (f != NULL)
+ {
+ uint cnt;
+ if ((fread(&cnt, sizeof(cnt), 1, f) != 0) && (cnt == KEYMAPVERSION))
+ {
+ if (fread(&cnt, sizeof(cnt), 1, f) == 0) cnt = 0;
+ for (uint i = 0; i != cnt; i++)
+ {
+ orKey key;
+ int data;
+ fread(&key, sizeof(key), 1, f);
+ fread(&data, sizeof(data), 1, f);
+ kmap[key] = data;
+ }
+ }
+ fclose(f);
+ }
+ }
+
m_url_clipboard = false; m_url_localfile = false; m_url_globalfile = false; ftime(&m_lastkeytime); -//// odebug << "Application directory = " << (const tchar *)QPEApplication::documentDir() << "" << oendl; -//// odebug << "Application directory = " << (const tchar *)Global::applicationFileName("uqtreader" << "" << oendl; +//// 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; @@ -241,61 +295,63 @@ QTReaderApp::QTReaderApp( QWidget *parent, const char *name, WFlags f ) } else if (rot.contains("Rot270")) { m_rot = 270; } -// odebug << "Initial Rotation(" << m_rot << "):" << rot << "" << oendl; +// 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") ); + setIcon( QPixmap (PICDIR + "/uqtreader.png") );
#endif /* USEQPE */ -// QToolBar *bar = new QToolBar( this ); -// menubar = new QToolBar( this ); +// QPEToolBar *bar = new QPEToolBar( this );
+// menubar = new QPEToolBar( this );
#ifdef USEQPE Config config( APPDIR ); #else QDir d = QDir::home(); // "/" if ( !d.cd(APPDIR) ) { // "/tmp" - owarn << "Cannot find the \"~/" APPDIR "\" directory" << oendl; + qWarning( "Cannot find the \"~/" APPDIR "\" directory" );
d = QDir::home(); d.mkdir(APPDIR); d.cd(APPDIR); } QFileInfo fi(d, INIFILE); -// odebug << "Path:" << fi.absFilePath() << "" << oendl; +// 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); + m_qtscroll = config.readNumEntry("QTScrollBar", false);
+ m_localscroll = config.readNumEntry("LocalScrollBar", false);
// 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 ); + menubar = new QToolBar("Menus", this, m_tbposition);
+ mb = new QPEMenuBar( menubar );
#else - mb = new QMenuBar( menubar ); + mb = new QMenuBar( this );
#endif -//#ifdef USEQPE +#ifdef USEQPE
QPopupMenu* tmp = new QPopupMenu(mb); mb->insertItem( geticon( "AppsIcon" ), tmp ); -//#else -// QMenuBar* tmp = mb; -//#endif +#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 ); @@ -317,20 +373,32 @@ QTReaderApp::QTReaderApp( QWidget *parent, const char *name, WFlags f ) /* 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 ); */ + QWidget* widge = new QWidget(this);
+ setCentralWidget( widge );
+ QVBoxLayout* vlayout = new QVBoxLayout(widge);
+ m_layout = new QBoxLayout(QBoxLayout::LeftToRight);
+ m_prog = new QLabel(widge);
+ vlayout->addLayout(m_layout, 1);
+ vlayout->addWidget(m_prog);
- editorStack = new QWidgetStack( this ); - setCentralWidget( editorStack ); + editorStack = new QWidgetStack( widge );
+ // setCentralWidget( editorStack );
searchVisible = FALSE; regVisible = FALSE; m_fontVisible = false; + m_buttonprefs = new CButtonPrefs(&kmap, this);
+ editorStack->addWidget(m_buttonprefs, get_unique_id());
+ connect( m_buttonprefs, SIGNAL( Closed() ), this, SLOT( infoClose() ) );
+
+
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); @@ -354,63 +422,93 @@ QTReaderApp::QTReaderApp( QWidget *parent, const char *name, WFlags f ) editorStack->addWidget( importSelector, get_unique_id() ); // don't need the close visible, it is redundant... importSelector->setCloseVisible( FALSE ); */ -// odebug << "Reading file list" << oendl; +// qDebug("Reading file list");
readfilelist(); reader = new QTReader( editorStack ); - reader->bDoUpdates = false; + reader->setDoUpdates(false);
#ifdef USEQPE ((QPEApplication*)qApp)->setStylusOperation(reader, QPEApplication::RightOnHold); #endif -// odebug << "Reading config" << oendl; +// qDebug("Reading config");
// Config config( APPDIR ); config.setGroup( "View" ); m_debounce = config.readNumEntry("Debounce", 0); + m_buttonprefs->Debounce(m_debounce);
#ifdef USEQPE m_bFloatingDialog = config.readBoolEntry("FloatDialogs", false); #else m_bFloatingDialog = config.readBoolEntry("FloatDialogs", true); #endif - reader->bstripcr = config.readBoolEntry( "StripCr", true ); + reader->setStripCR(config.readBoolEntry( "StripCr", true ));
reader->bfulljust = config.readBoolEntry( "FullJust", false ); + /*
+ bool btmp = config.readBoolEntry("Negative", false);
+ if (btmp) reader->setNegative();
+ */
+ reader->bInverse = config.readBoolEntry("Inverse", false);
+ reader->m_fontControl.FixGraphics(config.readBoolEntry( "FixGraphics", 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->m_reparastring = config.readEntry( "ReparaString", "\\n{[\\n \\t]}");
+ m_bgtype = (bground)config.readNumEntry( "BackgroundType" , 0 );
+ m_themename = config.readEntry("Theme", QString::null );
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_scrollstep = config.readNumEntry( "ScrollStep", 1);
+
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_rotated = config.readBoolEntry( "IsRotated", false );
+ reader->m_scrolltype = config.readNumEntry( "ScrollType", 0 );
+ m_statusstring = config.readEntry("StatusContent", "%P%% Doc:%d/%D %p%% %z%%");
+ m_statusishidden = config.readBoolEntry("StatusHidden", false);
+ m_background = config.readNumEntry( "Background", 0 );
+ reader->setBackground(getcolour(m_background));
+ m_foreground = config.readNumEntry( "Foreground", 1 );
+ reader->setForeground(getcolour(m_foreground));
+ m_scrollcolor = config.readNumEntry( "ScrollColour", 5 );
+ setscrollcolour();
+ m_scrollbarcolor = config.readNumEntry( "ScrollBarColour", 5 );
+ setscrollbarcolour();
+ reader->hyphenate = config.readBoolEntry( "Hyphenate", 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->m_abstopmargin = config.readNumEntry( "Top Margin", 100 );
+ reader->m_absbottommargin = config.readNumEntry( "Bottom Margin", 100 );
+ reader->m_absleft_border = config.readNumEntry( "Left Margin", 100 );
+ reader->m_absright_border = config.readNumEntry( "Right Margin", 100 );
+
+ m_scrollishidden = config.readBoolEntry( "HideScrollBar", false );
+
+ reader->brepalm = config.readBoolEntry( "Repalm", false );
+ reader->bkern = config.readBoolEntry( "Kern", false );
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 @@ -418,47 +516,55 @@ QTReaderApp::QTReaderApp( QWidget *parent, const char *name, WFlags f ) 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->setHyphenThreshold(config.readNumEntry( "HyphenThreshold", 50 ));
+ // reader->buffdoc.setCustomHyphen(config.readBoolEntry( "CustomHyphen", false ));
#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 )); +#else
+ m_grabkeyboard = config.readBoolEntry( "GrabKeyboard", false);
#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&) ) ); + connect( reader, SIGNAL( OnWordSelected(const QString&, size_t, size_t, const QString&) ), this, SLOT( OnWordSelected(const QString&, size_t, size_t, const QString&) ) );
+ connect( reader, SIGNAL( OnURLSelected(const QString&, const size_t) ), this, SLOT( OnURLSelected(const QString&, const size_t) ) );
+ connect( reader, SIGNAL( NewFileRequest(const QString&) ), this, SLOT( forceopen(const QString&) ) );
+ connect( reader, SIGNAL( HandleKeyRequest(QKeyEvent*) ), this, SLOT( handlekey(QKeyEvent*) ) );
+ connect( reader, SIGNAL( SetScrollState(bool) ), this, SLOT( setScrollState(bool) ) );
+ connect( reader, SIGNAL(RefreshBitmap()), this, SLOT(setBackgroundBitmap()));
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 ); @@ -476,12 +582,31 @@ QTReaderApp::QTReaderApp( QWidget *parent, const char *name, WFlags f ) 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_buttonprefs_action = new QAction( tr( "Buttons" ), QString::null, 0, this, NULL);
+ connect( m_buttonprefs_action, SIGNAL( activated() ), this, SLOT( showbuttonprefs() ) );
+ m_buttonprefs_action->addTo( settings );
+
+ m_loadtheme_action = new QAction( tr( "Load Theme" ), QString::null, 0, this, NULL);
+ connect( m_loadtheme_action, SIGNAL( activated() ), this, SLOT( LoadTheme() ) );
+ m_loadtheme_action->addTo( settings );
+
+ m_repara_action = new QAction( tr( "EOP Marker" ), QString::null, 0, this, NULL);
+ connect( m_repara_action, SIGNAL( activated() ), this, SLOT( reparastring() ) );
+ m_repara_action->addTo(settings);
+
+#ifdef USEQPE
+ m_grab_action = new QAction( tr( "Grab Buttons" ), QString::null, 0, this, NULL, true );
+ connect( m_grab_action, SIGNAL( toggled(bool) ), this, SLOT( setgrab(bool) ) );
+ m_grab_action->setOn(m_grabkeyboard);
+ m_grab_action->addTo( settings );
+#endif
+
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() ) ); @@ -613,12 +738,22 @@ QTReaderApp::QTReaderApp( QWidget *parent, const char *name, WFlags f ) 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 ); + m_rotate_action = new QAction( tr( "Rotate" ), geticon( "repeat" ), QString::null, 0, this, NULL, true );
+ connect( m_rotate_action, SIGNAL( toggled(bool) ), this, SLOT( setrotated(bool) ) );
+ m_rotate_action->setOn(reader->m_rotated);
+ m_rotate_action->addTo( view );
+
+ m_inverse_action = new QAction( tr( "Invert" ), getmyicon( "invert" ), QString::null, 0, this, NULL, true );
+ connect( m_inverse_action, SIGNAL( toggled(bool) ), this, SLOT( setinverted(bool) ) );
+ m_inverse_action->setOn(reader->bInverse);
+ m_inverse_action->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 ); @@ -767,21 +902,17 @@ QTReaderApp::QTReaderApp( QWidget *parent, const char *name, WFlags f ) regBar->hide(); m_fontBar = new QToolBar( "Autogen", this, QMainWindow::Top, TRUE ); m_fontBar->setHorizontalStretchable( TRUE ); -// odebug << "Font selector" << oendl; +// 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) { @@ -799,23 +930,59 @@ QTReaderApp::QTReaderApp( QWidget *parent, const char *name, WFlags f ) m_fontBar->hide(); m_fontVisible = false; #ifdef USEMSGS connect(qApp, SIGNAL( appMessage(const QCString&,const QByteArray&) ), this, SLOT( msgHandler(const QCString&,const QByteArray&) ) ); #endif -// odebug << "Initing" << oendl; +// qDebug("Initing");
+
+ m_layout->addWidget(editorStack);
+ if (m_qtscroll != 0)
+ {
+ /*
+ m_scrollbar = new QToolBar( "Autogen", this, (m_localscrollbar) ? QMainWindow::Left : QMainWindow::Right, TRUE );
+
+ m_scrollbar->setVerticalStretchable( TRUE );
+ */
+ scrollbar = m_scrollbar = new QScrollBar(QScrollBar::Vertical, widge);
+ m_layout->addWidget(scrollbar);
+ scrollbar->setTracking(false);
+ // connect(scrollbar, SIGNAL(sliderMoved(int)), this, SLOT(actionscroll(int)) );
+ // m_scrollbar->setStretchableWidget( scrollbar );
+ if (m_scrollishidden)
+ {
+ m_scrollbar->hide();
+ }
+ else
+ {
+ m_scrollbar->show();
+ }
+
+ setrotated(reader->m_rotated);
+ }
+ else
+ {
+ m_scrollbar = NULL;
+ }
+ setBackgroundBitmap();
+ m_inverse_action->setOn(reader->bInverse);
reader->init(); -// odebug << "Inited" << oendl; +
+// qDebug("Inited");
// m_buttonAction[m_spaceTarget]->setOn(true); -// odebug << "fonting" << oendl; +// qDebug("fonting");
do_setfont(reader->m_fontname); + // qDebug("fonted");
+ QFont progfont(reader->m_fontname, reader->m_fontControl.getsize(0));
+ m_prog->setFont( progfont );
+ if (m_statusishidden) m_prog->hide();
if (!reader->m_lastfile.isEmpty()) { -// odebug << "doclnk" << oendl; +// qDebug("doclnk");
// doc = new DocLnk(reader->m_lastfile); -// odebug << "doclnk done" << oendl; +// qDebug("doclnk done");
if (pOpenlist != NULL) { /* int ind = 0; Bkmk* p = (*pOpenlist)[ind]; @@ -829,60 +996,82 @@ QTReaderApp::QTReaderApp( QWidget *parent, const char *name, WFlags f ) { p = iter.pContent(); if (toQString(CFiledata(p->anno()).name()) == reader->m_lastfile) { break; } -// odebug << "Item:" << toQString(CFiledata(p->anno()).name()) << "" << oendl; +// qDebug("Item:%s", (const char*)toQString(CFiledata(p->anno()).name()));
p = NULL; } if (p != NULL) { -// odebug << "openfrombkmk" << oendl; if (!openfrombkmk(p)) + {
showEditTools(); } + }
else { -// odebug << "openfile" << oendl; openFile( reader->m_lastfile ); } } else { -// odebug << "Openfile 2" << oendl; if (!reader->m_lastfile.isEmpty()) + {
openFile( reader->m_lastfile ); } } + }
else { showEditTools(); } // qApp->processEvents(); + if (m_scrollbar == NULL || m_scrollbar->isHidden())
+ {
+ reader->m_scrollpos = m_localscroll;
+ }
+ else
+ {
+ reader->m_scrollpos = (m_qtscroll == 0) ? m_localscroll : 0;
+ }
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); } -// odebug << "finished update" << oendl; +// qDebug("finished update");
+ if (kmap.isEmpty())
+ {
+ QMessageBox::warning(this, PROGNAME, "You haven't mapped any keys yet!\n\nYou will be taken to the key\nmapping dialog.\nA few defaults are provided\nbut you can change then to\nsuit yourself.\n\nYou can change the key\nmapping at any time by\nselecting the Settings/Button\noption on the menu.");
+
+ m_buttonprefs->mapkey(Qt::NoButton, Key_Up, cesPageUp);
+ m_buttonprefs->mapkey(Qt::NoButton, Key_Down, cesPageDown);
+
+ m_buttonprefs->mapkey(Qt::NoButton, Key_Right, cesZoomIn);
+ m_buttonprefs->mapkey(Qt::NoButton, Key_Left, cesZoomOut);
+
+ showbuttonprefs();
+ }
} void QTReaderApp::addtoolbars(Config* config) { config->setGroup("Toolbar"); if (fileBar != NULL) { +#ifdef USEQPE
if (fileBar != menubar) { fileBar->clear(); } else { @@ -890,24 +1079,31 @@ void QTReaderApp::addtoolbars(Config* config) 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() ); } +#else
+ fileBar->clear();
+#endif
} 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) { +#ifdef USEQPE
if ((navBar == fileBar) && (fileBar == menubar)) +#else
+ if (navBar == fileBar)
+#endif
{ m_scrollButton->removeFrom( navbar() ); m_start_action->removeFrom( navbar() ); m_end_action->removeFrom( navbar() ); m_jump_action->removeFrom( navbar() ); m_pageline_action->removeFrom( navbar() ); @@ -936,15 +1132,21 @@ void QTReaderApp::addtoolbars(Config* config) addnavbar(config, "Back", m_back_action); addnavbar(config, "Home", m_home_action); addnavbar(config, "Forward", m_forward_action); if (viewBar != NULL) { +#ifdef USEQPE
if ((viewBar == fileBar) && (fileBar == menubar)) +#else
+ if (viewBar == fileBar)
+#endif
{ m_actFullscreen->removeFrom( filebar() ); + m_rotate_action->removeFrom( viewbar() );
+ m_inverse_action->removeFrom( viewbar() );
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() ); } @@ -952,21 +1154,27 @@ void QTReaderApp::addtoolbars(Config* config) { viewBar->clear(); } } addviewbar(config, "Fullscreen", m_actFullscreen); + addviewbar(config, "Rotate", m_rotate_action);
+ addviewbar(config, "Invert Action", m_inverse_action);
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) { +#ifdef USEQPE
if ((markBar == fileBar) && (fileBar == menubar)) +#else
+ if (markBar == fileBar)
+#endif
{ 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() ); @@ -1025,21 +1233,23 @@ bool QTReaderApp::checkbar(Config* _config, const QString& key) QToolBar* QTReaderApp::filebar() { if (fileBar == NULL) { switch (m_tbpol) { +#ifdef USEQPE
case cesSingle: -// odebug << "Setting filebar to menubar" << oendl; +// qDebug("Setting filebar to menubar");
fileBar = menubar; break; +#endif
default: - odebug << "Incorrect toolbar policy set" << oendl; + qDebug("Incorrect toolbar policy set");
case cesMenuTool: case cesMultiple: -// odebug << "Creating new file bar" << oendl; +// qDebug("Creating new file bar");
fileBar = new QToolBar("File", this, m_tbposition); break; } // fileBar->setHorizontalStretchable( true ); } return fileBar; @@ -1051,14 +1261,16 @@ QToolBar* QTReaderApp::viewbar() switch (m_tbpol) { case cesMultiple: viewBar = new QToolBar("View", this, m_tbposition); break; default: - odebug << "Incorrect toolbar policy set" << oendl; + qDebug("Incorrect toolbar policy set");
+#ifdef USEQPE
case cesSingle: +#endif
case cesMenuTool: viewBar = fileBar; break; } } return viewBar; @@ -1067,21 +1279,23 @@ QToolBar* QTReaderApp::navbar() { if (navBar == NULL) { switch (m_tbpol) { case cesMultiple: -// odebug << "Creating new nav bar" << oendl; +// qDebug("Creating new nav bar");
navBar = new QToolBar("Navigation", this, m_tbposition); break; default: - odebug << "Incorrect toolbar policy set" << oendl; + qDebug("Incorrect toolbar policy set");
+#ifdef USEQPE
case cesSingle: +#endif
case cesMenuTool: navBar = fileBar; -// odebug << "Setting navbar to filebar" << oendl; +// qDebug("Setting navbar to filebar");
break; } } return navBar; } QToolBar* QTReaderApp::markbar() @@ -1091,14 +1305,16 @@ QToolBar* QTReaderApp::markbar() switch (m_tbpol) { case cesMultiple: markBar = new QToolBar("Marks", this, m_tbposition); break; default: - odebug << "Incorrect toolbar policy set" << oendl; + qDebug("Incorrect toolbar policy set");
+#ifdef USEQPE
case cesSingle: +#endif
case cesMenuTool: markBar = fileBar; break; } } return markBar; @@ -1120,19 +1336,29 @@ 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) { +#ifndef USEMSGS
+ return;
+#else
QString msg = QString::fromUtf8(_msg); -//// odebug << "Received:" << msg << "" << oendl; - + qDebug("Received:%s", (const char*)msg);
+ QDataStream stream( _data, IO_ReadOnly );
+ if ( msg == "suspend()" )
+ {
+ qDebug("Suspending");
+ suspend();
+ qDebug("Suspendedb");
+ }
+ return;
+ /*
QDataStream stream( _data, IO_ReadOnly ); if ( msg == "info(QString)" ) { QString info; stream >> info; QMessageBox::information(this, PROGNAME, info); @@ -1375,20 +1601,18 @@ void QTReaderApp::msgHandler(const QCString& _msg, const QByteArray& _data) 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); } @@ -1456,39 +1680,101 @@ void QTReaderApp::msgHandler(const QCString& _msg, const QByteArray& _data) 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::setinverted(bool sfs)
+{
+ reader->setInverse(sfs);
+ reader->setfilter(reader->getfilter());
+ reader->refresh();
+}
+
+void QTReaderApp::setrotated(bool sfs)
+{
+ reader->setrotated(sfs);
+ if (sfs)
+ {
+ m_layout->setDirection( (m_qtscroll == 2) ? QBoxLayout::BottomToTop : QBoxLayout::TopToBottom );
+ if (m_scrollbar != NULL)
+ {
+ scrollbar->disconnect();
+ m_scrollbar->setOrientation(Qt::Horizontal);
+ connect(scrollbar, SIGNAL(nextLine()), reader, SLOT(lineUp()) );
+ connect(scrollbar, SIGNAL(prevLine()), reader, SLOT(lineDown()) );
+ connect(scrollbar, SIGNAL(nextPage()), reader, SLOT(dopageup()) );
+ connect(scrollbar, SIGNAL(prevPage()), reader, SLOT(dopagedn()) );
+ connect(scrollbar, SIGNAL(sliderMoved(int)), this, SLOT(actionscroll(int)) );
+ }
+ // reader->repaint(0, reader->m_left_border, reader->width(), reader->height()-2*reader->m_border);
+ reader->repaint();
+ }
+ else
+ {
+ m_layout->setDirection( (m_qtscroll == 2) ? QBoxLayout::RightToLeft : QBoxLayout::LeftToRight );
+ if (m_scrollbar != NULL)
+ {
+ scrollbar->disconnect();
+ m_scrollbar->setOrientation(Qt::Vertical);
+ connect(scrollbar, SIGNAL(nextLine()), reader, SLOT(lineDown()) );
+ connect(scrollbar, SIGNAL(prevLine()), reader, SLOT(lineUp()) );
+ connect(scrollbar, SIGNAL(nextPage()), reader, SLOT(dopagedn()) );
+ connect(scrollbar, SIGNAL(prevPage()), reader, SLOT(dopageup()) );
+ connect(scrollbar, SIGNAL(sliderMoved(int)), this, SLOT(actionscroll(int)) );
+ }
+ // reader->repaint(reader->m_border, 0, reader->width()-2*reader->m_border, reader->height());
+ reader->repaint();
+ }
+ // reader->update();
+}
+
+void QTReaderApp::setgrab(bool sfs)
+{
+#ifdef USEQPE
+ m_grabkeyboard = sfs;
+ if (m_grabkeyboard)
+ {
+ ((QPEApplication*)qApp)->grabKeyboard();
+ }
+ else
+ {
+ ((QPEApplication*)qApp)->ungrabKeyboard();
+ }
+#endif
+}
+
void QTReaderApp::setfullscreen(bool sfs) { reader->bDoUpdates = false; m_fullscreen = sfs; showEditTools(); // qApp->processEvents(); reader->bDoUpdates = true; reader->update(); } - +/*
void QTReaderApp::buttonActionSelected(QAction* _a) { -//// odebug << "es:" << _a << " : " << (const char *)(_a->text()) << " (" << ActNameToInt(_a->text()) << ")" << oendl; +//// 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) { @@ -1496,24 +1782,29 @@ void QTReaderApp::autoScroll(bool _b) setScrollState(reader->m_autoScroll); } void QTReaderApp::zoomin() { reader->zoomin(); + QFont f(reader->m_fontname, reader->m_fontControl.getsize(0));
+ m_prog->setFont( f );
} void QTReaderApp::zoomout() { reader->zoomout(); + QFont f(reader->m_fontname, reader->m_fontControl.getsize(0));
+ m_prog->setFont( f );
} void QTReaderApp::clearBkmkList() { delete pBkmklist; - pBkmklist = NULL; + reader->pBkmklist = pBkmklist = NULL;
m_fBkmksChanged = false; + reader->refresh(true);
} void QTReaderApp::fileClose() { CCloseDialog* cd = new CCloseDialog(reader->m_string, false, this); if (cd->exec()) @@ -1561,13 +1852,13 @@ void QTReaderApp::fileClose() 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); -// odebug << "Lastfile:" << fl << "" << oendl; +// qDebug("Lastfile:%x", fl);
bool notadded = true; if (pOpenlist == NULL) pOpenlist = new CList<Bkmk>; else { for (CList<Bkmk>::iterator iter = pOpenlist->begin(); iter != pOpenlist->end(); iter++) { @@ -1575,32 +1866,32 @@ void QTReaderApp::updatefileinfo() { iter->value(reader->pagelocate()); unsigned short dlen; unsigned char* data; CFiledata fd(iter->anno()); reader->setSaveData(data, dlen, fd.content(), fd.length()); -// odebug << "Filedata(1):" << fd.length() << ", " << dlen << "" << oendl; +// qDebug("Filedata(1):%u, %u", fd.length(), dlen);
// getstate(data, dlen); iter->setAnno(data, dlen); notadded = false; delete [] data; break; } } } -// odebug << "Added?:" << notadded << "" << oendl; +// 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())); -// odebug << "Filedata(2):" << fd.length() << ", " << dlen << "" << oendl; +// qDebug("Filedata(2):%u, %u", fd.length(), dlen);
delete [] data; } delete [] nm; delete [] fl; } @@ -1609,13 +1900,13 @@ void QTReaderApp::fileOpen() /* menu->hide(); fileBar->hide(); if (regVisible) regBar->hide(); if (searchVisible) searchBar->hide(); */ -// odebug << "fileOpen" << oendl; +// qDebug("fileOpen");
// if (!reader->m_lastfile.isEmpty()) updatefileinfo(); fileOpen2(); } void QTReaderApp::fileOpen2() @@ -1625,13 +1916,13 @@ void QTReaderApp::fileOpen2() if (m_fBkmksChanged) { if (QMessageBox::warning(this, PROGNAME, "Save bookmarks?", "Save", "Don't bother") == 0) savebkmks(); } delete pBkmklist; - pBkmklist = NULL; + reader->pBkmklist = pBkmklist = NULL;
m_fBkmksChanged = false; } reader->disableAutoscroll(); /* editorStack->raiseWidget( fileSelector ); fileSelector->reread(); @@ -1650,67 +1941,103 @@ void QTReaderApp::fileOpen2() { openFile(fn); } reader->setFocus(); } // reader->refresh(); -// odebug << "HEIGHT:" << reader->m_lastheight << "" << oendl; +// qDebug("HEIGHT:%d", reader->m_lastheight);
} QString QTReaderApp::usefilebrowser() { #ifndef USEQPE QString s( QFileDialog::getOpenFileName( reader->m_lastfile, QString::null, this ) ); return s; #else + QString fn;
+#ifdef OPIE
+ QMap<QString, QStringList> mimeTypes;
+ QStringList etypes;
+ etypes << "etext/*";
+ mimeTypes.insert( tr("eText"), etypes );
+ QStringList types;
+ types << "text/*";
+ mimeTypes.insert( tr("Text"), types );
+ mimeTypes.insert( tr("All"), "*/*" );
+ fn = OFileDialog::getOpenFileName(OFileSelector::EXTENDED_ALL, QFileInfo(reader->m_lastfile).dirPath(true), QString::null, mimeTypes, 0, "OpieReader");
+#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(); } -// odebug << "Selected " << fn << "" << oendl; +// qDebug("Selected %s", (const char*)fn);
delete fb; +#endif
showEditTools(); return fn; #endif } void QTReaderApp::showgraphic(QImage& pm) { - QPixmap pc; - pc.convertFromImage(pm); - m_graphicwin->setPixmap(pc); + m_graphicwin->setImage(pm);
editorStack->raiseWidget( m_graphicwin ); + hidetoolbars();
m_graphicwin->setFocus(); } +void QTReaderApp::showbuttonprefs()
+{
+ editorStack->raiseWidget( m_buttonprefs );
+ hidetoolbars();
+ m_buttonprefs->setFocus();
+ m_kmapchanged = true;
+}
void QTReaderApp::showprefs() { - CPrefs* prefwin = new CPrefs(!m_bFloatingDialog, this); - + CPrefs* prefwin = new CPrefs(reader->width(), !m_bFloatingDialog, this);
+
+ // prefwin->Debounce(m_debounce);
+ prefwin->bgtype(m_bgtype);
+ prefwin->repalm(reader->brepalm);
+ prefwin->kern(reader->bkern);
+ prefwin->hyphenate(reader->hyphenate);
+ // prefwin->customhyphen(reader->buffdoc.getCustomHyphen());
+ prefwin->scrolltype(reader->m_scrolltype);
+ prefwin->scrollstep(reader->m_scrollstep);
+ prefwin->scrollcolor(m_scrollcolor);
+ prefwin->minibarcol(m_scrollbarcolor);
+ prefwin->foreground(m_foreground);
+ prefwin->background(m_background);
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->Inverse(reader->bInverse);
+ // prefwin->Negative(reader->bNegative);
+ prefwin->FixGraphics(reader->m_fontControl.FixGraphics());
prefwin->ParaLead(reader->getextraspace()); prefwin->LineLead(reader->getlead()); - prefwin->Margin(reader->m_border); + prefwin->TopMargin(reader->m_abstopmargin);
+ prefwin->BottomMargin(reader->m_absbottommargin);
+ prefwin->LeftMargin(reader->m_absleft_border);
+ prefwin->RightMargin(reader->m_absright_border);
prefwin->Indent(reader->bindenter); if (reader->bautofmt) { prefwin->Markup(0); } else if (reader->btextfmt) @@ -1733,24 +2060,18 @@ void QTReaderApp::showprefs() 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); @@ -1766,12 +2087,27 @@ void QTReaderApp::showprefs() prefwin->encoding(reader->m_encd); prefwin->ideogramwidth(reader->m_charpc); if (prefwin->exec()) { + // m_debounce = prefwin->Debounce();
+ reader->brepalm = prefwin->repalm();
+ reader->bkern = prefwin->kern();
+ reader->hyphenate = prefwin->hyphenate();
+ // reader->buffdoc.setCustomHyphen(prefwin->customhyphen());
+ reader->m_scrolltype = prefwin->scrolltype();
+ reader->m_scrollstep = prefwin->scrollstep();
+ m_scrollcolor = prefwin->scrollcolor();
+ setscrollcolour();
+ m_scrollbarcolor = prefwin->minibarcol();
+ setscrollbarcolour();
+ m_foreground = prefwin->foreground();
+ reader->setForeground(getcolour(m_foreground));
+ m_background = prefwin->background();
+ reader->setBackground(getcolour(m_background));
m_twoTouch = prefwin->twotouch(); reader->setTwoTouch(m_twoTouch); m_touch_action->setOn(m_twoTouch); reader->bstripcr = prefwin->StripCR(); reader->bdehyphen = prefwin->Dehyphen(); @@ -1779,15 +2115,22 @@ void QTReaderApp::showprefs() reader->bunindent = prefwin->Unindent(); reader->brepara = prefwin->Reparagraph(); reader->bdblspce = prefwin->DoubleSpace(); reader->bremap = prefwin->Remap(); reader->bmakebold = prefwin->Embolden(); reader->bfulljust = prefwin->FullJustify(); + // if (reader->bInverse != prefwin->Inverse()) reader->setInverse(prefwin->Inverse());
+ // if (reader->bNegative != prefwin->Negative()) reader->setNegative();
+ reader->m_fontControl.FixGraphics(prefwin->FixGraphics());
+
reader->setextraspace(prefwin->ParaLead()); reader->setlead(prefwin->LineLead()); - reader->m_border = prefwin->Margin(); + reader->m_abstopmargin = prefwin->TopMargin();
+ reader->m_absbottommargin = prefwin->BottomMargin();
+ reader->m_absleft_border = prefwin->LeftMargin();
+ reader->m_absright_border = prefwin->RightMargin();
reader->bindenter = prefwin->Indent(); reader->bautofmt = reader->btextfmt = reader->bstriphtml = reader->bpeanut = false; switch (prefwin->Markup()) { case 0: reader->bautofmt = true; @@ -1801,30 +2144,24 @@ void QTReaderApp::showprefs() reader->bstriphtml = true; break; case 4: reader->bpeanut = true; break; default: - odebug << "Format out of range" << oendl; + 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(); @@ -1841,16 +2178,20 @@ void QTReaderApp::showprefs() || m_propogatefontchange != prefwin->propfontchange()) { m_propogatefontchange = prefwin->propfontchange(); setfontHelper(prefwin->Font()); } + if (m_bgtype != (bground)prefwin->bgtype())
+ {
+ m_bgtype = (bground)prefwin->bgtype();
+ setBackgroundBitmap();
+ }
delete prefwin; reader->setfilter(reader->getfilter()); reader->refresh(); - } else { delete prefwin; } } @@ -1861,50 +2202,70 @@ void QTReaderApp::showtoolbarprefs() CBarPrefs* prefwin = new CBarPrefs(APPDIR, !m_bFloatingDialog, this); #else QFileInfo fi; QDir d = QDir::home(); // "/" if ( !d.cd(APPDIR) ) { // "/tmp" - owarn << "Cannot find the \"~/" << APPDIR << "\" directory" << oendl; + 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); + prefwin->qtscroll(m_qtscroll);
+ prefwin->localscroll(m_localscroll);
if (prefwin->exec()) { m_bFloatingDialog = prefwin->floating(); if ( m_tbpolsave != (ToolbarPolicy)prefwin->tbpolicy() || m_tbposition != (ToolBarDock)(prefwin->tbposition()+2) || m_tbmovesave != prefwin->tbmovable() + ||
+ m_qtscroll != prefwin->qtscroll()
+ // ||
+ // m_localscrollbar != prefwin->scrollonleft()
) { 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(); + reader->m_scrollpos = m_localscroll = prefwin->localscroll();
+ if (m_qtscroll != prefwin->qtscroll())
+ {
+ m_qtscroll = prefwin->qtscroll();
+ setrotated(reader->m_rotated);
+ }
+ if (m_scrollbar == NULL || m_scrollbar->isHidden())
+ {
+ reader->m_scrollpos = m_localscroll;
+ }
+ else
+ {
+ reader->m_scrollpos = (m_qtscroll == 0) ? m_localscroll : 0;
+ }
bool isChanged = prefwin->isChanged(); delete prefwin; #ifdef USEQPE Config config( APPDIR ); #else QFileInfo fi; QDir d = QDir::home(); // "/" if ( !d.cd(APPDIR) ) { // "/tmp" - owarn << "Cannot find the \"~/" << APPDIR << "\" directory" << oendl; + qWarning( "Cannot find the \"~/%s\" directory", APPDIR );
d = QDir::home(); d.mkdir(APPDIR); d.cd(APPDIR); } fi.setFile(d, INIFILE); Config config( fi.absFilePath() ); @@ -1916,34 +2277,42 @@ void QTReaderApp::showtoolbarprefs() delete prefwin; } } void QTReaderApp::showinfo() { - unsigned long fs, ts, pl; + unsigned long ds, fs, ts, pl, dl;
if (reader->empty()) { QMessageBox::information(this, PROGNAME, "No file loaded", 1); } else { reader->sizes(fs,ts); + ds = reader->buffdoc.endSection() - reader->buffdoc.startSection();
pl = reader->pagelocate(); + dl = pl - reader->buffdoc.startSection();
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); + m_infoWin->setDocSize(ds);
+ m_infoWin->setDocLocation(dl);
+ m_infoWin->setDocRead((100*dl + (ds >> 1))/ds);
+ m_infoWin->setZoom(reader->m_fontControl.currentsize()*10);
+ m_infoWin->setAbout(QString("\nApplication (c) Tim Wentford\n")+reader->about());
editorStack->raiseWidget( m_infoWin ); + hidetoolbars();
m_infoWin->setFocus(); } } -void QTReaderApp::addAnno(const QString& name, const QString& text, size_t posn) +void QTReaderApp::addAnno(const QString& name, const QString& text, size_t posn, size_t posn2)
{ - if (pBkmklist == NULL) pBkmklist = new CList<Bkmk>; + if (pBkmklist == NULL) reader->pBkmklist = pBkmklist = new CList<Bkmk>;
#ifdef _UNICODE CBuffer buff(name.length()+1); int i; for (i = 0; i < name.length(); i++) { buff[i] = name[i].unicode(); @@ -1952,13 +2321,20 @@ void QTReaderApp::addAnno(const QString& name, const QString& text, size_t posn) 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)); + Bkmk b(buff.data(), buff2.data(), posn, posn2);
+ QColor c = m_annoWin->getColor();
+ int red,green,blue;
+ c.rgb(&red, &green, &blue);
+ b.red(red);
+ b.green(green);
+ b.blue(blue);
+ pBkmklist->push_front(b);
#else pBkmklist->push_front(Bkmk((const tchar*)text,posn)); #endif m_fBkmksChanged = true; pBkmklist->sort(); } @@ -1970,13 +2346,13 @@ void QTReaderApp::addAnno(const QString& name, const QString& text) if (name.isEmpty()) { QMessageBox::information(this, PROGNAME, "Need a name for the bookmark\nPlease try again", 1); } else { - addAnno(name, text, m_annoWin->getPosn()); + addAnno(name, text, m_annoWin->getPosn(), m_annoWin->getPosn2());
} showEditTools(); } else { if (m_annoWin->edited()) @@ -1988,17 +2364,24 @@ void QTReaderApp::addAnno(const QString& name, const QString& text) buff[i] = text[i].unicode(); } buff[i] = 0; m_fBkmksChanged = true; m_anno->setAnno(buff.data()); } + QColor c = m_annoWin->getColor();
+ int red,green,blue;
+ c.rgb(&red, &green, &blue);
+ m_anno->red(red);
+ m_anno->green(green);
+ m_anno->blue(blue);
bool found = findNextBookmark(m_anno->value()+1); if (found) { m_annoWin->setName(toQString(m_anno->name())); m_annoWin->setAnno(toQString(m_anno->anno())); + m_annoWin->setColor(QColor(m_anno->red(), m_anno->green(), m_anno->blue()));
} else { showEditTools(); } } @@ -2032,21 +2415,51 @@ void QTReaderApp::addanno() { m_annoWin->setName(""); m_annoWin->setAnno(""); m_annoWin->setPosn(reader->pagelocate()); m_annoIsEditing = true; editorStack->raiseWidget( m_annoWin ); + hidetoolbars();
#ifdef USEQPE Global::showInputMethod(); #endif m_annoWin->setFocus(); } } void QTReaderApp::infoClose() { + m_debounce = m_buttonprefs->Debounce();
+ if (m_kmapchanged)
+ {
+ m_kmapchanged = false;
+#ifndef USEQPE
+ QDir d = QDir::home(); // "/"
+ d.cd(APPDIR);
+ QFileInfo fi(d, ".keymap");
+ FILE* f = fopen((const char *)fi.absFilePath(), "w");
+#else /* USEQPE */
+ FILE* f = fopen((const char *)Global::applicationFileName(APPDIR,".keymap"), "w");
+#endif /* USEQPE */
+ if (f != NULL)
+ {
+ uint cnt = KEYMAPVERSION;
+ fwrite(&cnt, sizeof(cnt), 1, f);
+ cnt = kmap.count();
+ fwrite(&cnt, sizeof(cnt), 1, f);
+ for (QMap<orKey,int>::Iterator i = kmap.begin(); i != kmap.end(); i++)
+ {
+ orKey key = i.key();
+ int data = i.data();
+ fwrite(&key, sizeof(key), 1, f);
+ fwrite(&data, sizeof(data), 1, f);
+ qDebug("Saved %s as %u", (const char*)key.text(), data);
+ }
+ fclose(f);
+ }
+ }
showEditTools(); } /* void QTReaderApp::fileRevert() { @@ -2173,13 +2586,13 @@ void QTReaderApp::editFind() searchStack->push(new searchrecord("",reader->pagelocate())); #endif } void QTReaderApp::findNext() { -// // odebug << "findNext called\n" << oendl; +// // qDebug("findNext called\n");
#ifdef __ISEARCH QString arg = searchEdit->text(); #else QRegExp arg = searchEdit->text(); #endif CDrawBuffer test(&(reader->m_fontControl)); @@ -2269,18 +2682,18 @@ bool QTReaderApp::dosearch(size_t start, CDrawBuffer& test, const QRegExp& arg) findClose(); pbar->hide(); reader->locate(pos); return false; } } -// odebug << "Found it at " << pos << ":" << offset << "" << oendl; +// qDebug("Found it at %u:%u", pos, offset);
pbar->hide(); -// odebug << "Hid" << oendl; +// qDebug("Hid");
reader->locate(pos+offset); -// odebug << "Loacted" << oendl; -// odebug << "page up" << oendl; +// qDebug("Loacted");
+// qDebug("page up");
ret = true; } else { if (QMessageBox::warning(this, "Can't find", searchEdit->text(), 1, 2) == 2) pos = searchStart; @@ -2331,13 +2744,13 @@ void QTReaderApp::search() findNext(); } #endif void QTReaderApp::openFile( const QString &f ) { -// odebug << "File:" << f << "" << oendl; +// qDebug("File:%s", (const char*)f);
// openFile(DocLnk(f)); //} // //void QTReaderApp::openFile( const DocLnk &f ) //{ clear(); @@ -2352,22 +2765,26 @@ void QTReaderApp::openFile( const QString &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); + m_loadedconfig = readconfig(APPDIR "/configs", reader->m_string, false);
+ qDebug("Showing tools");
showEditTools(); + qDebug("Shown tools");
readbkmks(); + qDebug("read markss");
m_savedpos = 0xffffffff; } else { - QMessageBox::information(this, PROGNAME, "File does not exist"); + QString msg = f;
+ msg += "\nFile does not exist";
+ QMessageBox::information(this, PROGNAME, msg);
reader->m_lastfile = QString::null; } } /* void QTReaderApp::resizeEvent(QResizeEvent* e) @@ -2378,25 +2795,24 @@ void QTReaderApp::resizeEvent(QResizeEvent* e) showFullScreen(); } } */ void QTReaderApp::handlekey(QKeyEvent* e) { -// odebug << "Keypress event" << oendl; +// 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: -// odebug << "escape event" << oendl; +// qDebug("escape event");
if (m_disableesckey) { m_disableesckey = false; } else { @@ -2405,122 +2821,177 @@ void QTReaderApp::handlekey(QKeyEvent* e) { m_actFullscreen->setOn(false); e->accept(); } else { -// odebug << "escape action" << oendl; - doAction(m_escapeTarget, e); +// qDebug("escape action");
+ doAction(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) + if (reader->m_autoScroll)
{ reader->reduceScroll(); } else { - doAction(m_leftTarget, e); + doAction(e);
} } break; case Key_Right: { - if (reader->m_autoScroll && m_rightScroll) + if (reader->m_autoScroll)
{ reader->increaseScroll(); } else { - doAction(m_rightTarget, e); + doAction(e);
} } break; case Key_Up: { - if (reader->m_autoScroll && m_upScroll) + if (reader->m_autoScroll)
{ reader->increaseScroll(); } else { - doAction(m_upTarget, e); + doAction(e);
} } break; case Key_Down: { - if (reader->m_autoScroll && m_downScroll) + if (reader->m_autoScroll)
{ reader->reduceScroll(); } else { - doAction(m_downTarget, e); + doAction(e);
} } break; + */
default: { - e->ignore(); + doAction(e);
} /* QString msg("Key press was:"); QString key; msg += key.setNum(e->key()); QMessageBox::information(this, PROGNAME, msg); */ } + ftime(&m_lastkeytime);
+}
+
+#ifdef NEWFULLSCREEN
+void QTReaderApp::enableFullscreen()
+{
+ setFixedSize(qApp->desktop()->size());
+ showNormal();
+ reparent(0, WStyle_Customize | WStyle_NoBorder, QPoint(0,0));
+ showFullScreen();
} +void QTReaderApp::resizeEvent(QResizeEvent *)
+{
+ if (m_fullscreen && (size() != qApp->desktop()->size()))
+ {
+ enableFullscreen();
+ }
+}
+
+void QTReaderApp::focusInEvent(QFocusEvent*)
+{
+ if (m_fullscreen)
+ {
+ enableFullscreen();
+ raise();
+ }
+}
+#endif
+
void QTReaderApp::showEditTools() { // if ( !doc ) // close(); if (m_fullscreen) { +#ifdef USEQPE
if (menubar != NULL) menubar->hide(); +#endif
if (fileBar != NULL) fileBar->hide(); if (viewBar != NULL) viewBar->hide(); if (navBar != NULL) navBar->hide(); if (markBar != NULL) markBar->hide(); + if (m_prog != NULL)
+ {
+ // qDebug("Hiding status");
+ m_prog->hide();
+ }
searchBar->hide(); regBar->hide(); #ifdef USEQPE Global::hideInputMethod(); #endif + if (m_scrollbar != NULL) m_scrollbar->hide();
m_fontBar->hide(); // showNormal(); +#ifdef NEWFULLSCREEN
+ enableFullscreen();
+#else
showFullScreen(); +#endif
} else { -// odebug << "him" << oendl; +// qDebug("him");
#ifdef USEQPE Global::hideInputMethod(); #endif -// odebug << "eb" << oendl; +// qDebug("eb");
+ if (m_scrollbar != NULL)
+ {
+ if (m_scrollishidden)
+ {
+ m_scrollbar->hide();
+ }
+ else
+ {
+ m_scrollbar->show();
+ }
+ }
+ if (!m_hidebars)
+ {
+#ifdef USEQPE
menubar->show(); +#endif
if (fileBar != NULL) fileBar->show(); if (viewBar != NULL) viewBar->show(); if (navBar != NULL) navBar->show(); if (markBar != NULL) markBar->show(); + if (m_prog != NULL && !m_statusishidden)
+ {
+ // qDebug("Showing status");
+ m_prog->show();
+ // qDebug("Shown status");
+ }
+ // qDebug("Showing mb");
mb->show(); + }
if ( searchVisible ) { #ifdef USEQPE Global::showInputMethod(); #endif searchBar->show(); @@ -2530,28 +3001,30 @@ void QTReaderApp::showEditTools() #ifdef USEQPE Global::showInputMethod(); #endif regBar->show(); } if (m_fontVisible) m_fontBar->show(); -// odebug << "sn" << oendl; +// qDebug("sn");
showNormal(); -// odebug << "sm" << oendl; +// qDebug("sm");
#ifdef USEQPE showMaximized(); #endif // setCentralWidget(reader); } -// odebug << "uc" << oendl; + // qDebug("uc");
updateCaption(); -// odebug << "rw" << oendl; + // qDebug("rw");
editorStack->raiseWidget( reader ); -// odebug << "sf" << oendl; + // qDebug("sf");
reader->setFocus(); - reader->refresh(); + // qDebug("ref");
+ reader->refresh(true);
+ // qDebug("done");
} /* void QTReaderApp::save() { if ( !doc ) return; @@ -2598,81 +3071,88 @@ 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") ); + setCaption( reader->m_string + " - " + tr(SHORTPROGNAME) );
// } } void QTReaderApp::setDocument(const QString& fileref) { - bFromDocView = TRUE; //QMessageBox::information(0, "setDocument", fileref); openFile(fileref); // showEditTools(); } void QTReaderApp::closeEvent( QCloseEvent *e ) { -// odebug << "Close event" << oendl; +// qDebug("Close event");
if (m_fullscreen) { m_fullscreen = false; showEditTools(); - e->accept(); + e->ignore();
+ }
+ else if (editorStack->visibleWidget() == m_buttonprefs)
+ {
+ m_buttonprefs->mapkey(Qt::NoButton, Key_Escape);
+ e->ignore();
} else if (m_dontSave) { e->accept(); } else { if (editorStack->visibleWidget() == reader) { - if ((m_escapeTarget != cesNone) && m_bcloseDisabled) + if ((kmap.find(orKey(Qt::NoButton,Key_Escape,false)) != kmap.end()) && m_bcloseDisabled)
{ -// odebug << "Close disabled" << oendl; +// qDebug("Close disabled");
m_bcloseDisabled = false; e->ignore(); } else { if (m_fontVisible) { m_fontBar->hide(); m_fontVisible = false; + e->ignore();
+ return;
} if (regVisible) { regBar->hide(); #ifdef USEQPE Global::hideInputMethod(); #endif regVisible = false; + e->ignore();
return; } if (searchVisible) { searchBar->hide(); #ifdef USEQPE Global::hideInputMethod(); #endif searchVisible = false; + e->ignore();
return; } if (m_fBkmksChanged && pBkmklist != NULL) { if (QMessageBox::warning(this, PROGNAME, "Save bookmarks?", "Save", "Don't bother") == 0) savebkmks(); delete pBkmklist; - pBkmklist = NULL; + reader->pBkmklist = pBkmklist = NULL;
m_fBkmksChanged = false; } - bFromDocView = FALSE; updatefileinfo(); saveprefs(); e->accept(); } } else @@ -2707,13 +3187,13 @@ bool QTReaderApp::listbkmk(CList<Bkmk>* plist, const QString& _lab) int cnt = 0; if (plist != NULL) { for (CList<Bkmk>::iterator i = plist->begin(); i != plist->end(); i++) { #ifdef _UNICODE -// odebug << "Item:" << toQString(i->name()) << "" << oendl; +// qDebug("Item:%s", (const char*)toQString(i->name()));
bkmkselector->insertItem(toQString(i->name())); #else bkmkselector->insertItem(i->name()); #endif cnt++; } @@ -2736,15 +3216,15 @@ void QTReaderApp::do_autogen() } void QTReaderApp::do_regedit() { // fileBar->hide(); reader->bDoUpdates = false; -// odebug << "Showing regbar" << oendl; +// qDebug("Showing regbar");
regBar->show(); -// odebug << "Showing kbd" << oendl; +// qDebug("Showing kbd");
#ifdef USEQPE Global::showInputMethod(); #endif regVisible = true; regEdit->setFocus(); // qApp->processEvents(); @@ -2754,16 +3234,16 @@ void QTReaderApp::do_regedit() bool QTReaderApp::openfrombkmk(Bkmk* bk) { QString fn = toQString( CFiledata(bk->anno()).name() ); -// odebug << "fileinfo" << oendl; +// qDebug("fileinfo");
if (!fn.isEmpty() && QFileInfo(fn).isFile()) { -// odebug << "Opening" << oendl; +// qDebug("Opening");
openFile(fn); struct stat fnstat; stat((const char *)reader->m_lastfile, &fnstat); if (CFiledata(bk->anno()).date() != fnstat.st_mtime) @@ -2779,13 +3259,13 @@ bool QTReaderApp::openfrombkmk(Bkmk* bk) reader->putSaveData(svdata, svlen); // setstate(svdata, svlen); if (svlen != 0) { QMessageBox::warning(this, PROGNAME, "Not all file data used\nNew version?"); } -// odebug << "updating" << oendl; +// qDebug("updating");
// showEditTools(); reader->locate(bk->value()); } return true; } else @@ -2793,12 +3273,13 @@ bool QTReaderApp::openfrombkmk(Bkmk* bk) return false; } } void QTReaderApp::gotobkmk(int ind) { + qDebug("gbkmk");
showEditTools(); switch (m_nBkmkAction) { case cOpenFile: { // qApp->processEvents(); @@ -2807,18 +3288,20 @@ void QTReaderApp::gotobkmk(int ind) pOpenlist->erase(ind); QMessageBox::information(this, PROGNAME, "Can't find file"); } } break; case cGotoBkmk: + reader->buffdoc.saveposn(reader->m_lastfile, reader->pagelocate());
reader->locate((*pBkmklist)[ind]->value()); break; case cDelBkmk: -//// odebug << "Deleting:" << (*pBkmklist)[ind]->name() << "\n" << oendl; +//// qDebug("Deleting:%s\n",(*pBkmklist)[ind]->name());
pBkmklist->erase(ind); m_fBkmksChanged = true; + reader->refresh(true);
// pBkmklist->sort(); break; case cRmBkmkFile: { #ifndef USEQPE QDir d = QDir::home(); // "/" @@ -2827,13 +3310,18 @@ void QTReaderApp::gotobkmk(int ind) #else /* USEQPE */ unlink((const char *)Global::applicationFileName(APPDIR,bkmkselector->text(ind))); #endif /* USEQPE */ } break; case cLdConfig: - readconfig(bkmkselector->text(ind), false); + readconfig(APPDIR "/configs", bkmkselector->text(ind), false);
+ break;
+ case cLdTheme:
+ m_themename = bkmkselector->text(ind);
+ readconfig(QString(APPDIR "/Themes/")+m_themename , "config", false);
+ setBackgroundBitmap();
break; case cRmConfig: { #ifndef USEQPE QDir d = QDir::home(); // "/" d.cd(APPDIR "/configs"); @@ -2878,12 +3366,35 @@ void QTReaderApp::gotobkmk(int ind) } #else /* USEQPE */ FILE* fin = fopen((const char *)Global::applicationFileName(APPDIR "/urls",bkmkselector->text(ind)), "r"); if (fin != NULL) { bool allok = false; +#ifdef OPIE
+ QString outfile = OFileDialog::getSaveFileName(OFileSelector::EXTENDED_ALL, QString::null, QString::null, MimeTypes(), 0, "OpieReader");
+ if (!outfile.isEmpty())
+ {
+ FILE* fout = fopen((const char *)outfile, "w");
+ if (fout != NULL)
+ {
+ fprintf(fout, "<html><body>\n");
+ int ch = 0;
+ while ((ch = fgetc(fin)) != EOF)
+ {
+ fputc(ch, fout);
+ }
+ fprintf(fout, "</html></body>\n");
+ fclose(fout);
+ allok = true;
+ }
+ else
+ QMessageBox::information(this, PROGNAME, "Couldn't open output");
+ }
+ fclose(fin);
+ if (allok) unlink((const char *)Global::applicationFileName(APPDIR "/urls",bkmkselector->text(ind)));
+#else
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) @@ -2901,22 +3412,23 @@ void QTReaderApp::gotobkmk(int ind) 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))); +#endif
} 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(); - odebug << "Return:" << ret << "" << oendl; + 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 = "<html><body>\n"; @@ -2930,17 +3442,17 @@ void QTReaderApp::gotobkmk(int ind) if ( doc->name().isEmpty() ) { doc->setName(bkmkselector->text(ind)); } FileManager fm; fm.saveFile( *doc, rt ); - odebug << "YES" << oendl; + qDebug("YES");
} else { - odebug << "NO" << oendl; + qDebug("NO");
} delete f; */ #endif /* USEQPE */ } @@ -2955,29 +3467,72 @@ void QTReaderApp::cancelbkmk() QString fn = usefilebrowser(); if (!fn.isEmpty() && QFileInfo(fn).isFile()) openFile(fn); } showEditTools(); } +void QTReaderApp::reparastring()
+{
+ m_nRegAction = cRepara;
+ regEdit->setText(reader->m_reparastring);
+ do_regedit();
+}
+
+void QTReaderApp::do_reparastring(const QString& _lcn)
+{
+ reader->m_reparastring = _lcn;
+ if (reader->brepara)
+ {
+ reader->bDoUpdates = true;
+ reader->setfilter(reader->getfilter());
+ }
+}
+
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) +void QTReaderApp::do_jump(const QString& _lcn)
{ bool ok; + QString lcn = _lcn.stripWhiteSpace();
unsigned long ulcn = lcn.toULong(&ok); + if (!ok)
+ {
+ double pc = 0.0;
+#ifdef _WINDOWS
+ if (lcn.at(lcn.length()-1) == '%')
+#else
+ if (lcn[lcn.length()-1] == '%')
+#endif
+ {
+ lcn = lcn.left(lcn.length()-1);
+ pc = lcn.toDouble(&ok);
+ }
+ else
+ {
+ pc = lcn.toDouble(&ok);
+ }
+ if (ok && 0 <= pc && pc <= 100)
+ {
+ ulcn = (pc*(reader->buffdoc.endSection()-reader->buffdoc.startSection()))/100 + reader->buffdoc.startSection();
+ }
+ else
+ {
+ ok = false;
+ }
+ }
if (ok) reader->locate(ulcn); else - QMessageBox::information(this, PROGNAME, "Must be a number"); + QMessageBox::information(this, PROGNAME, "Must be a number\nor a percentage");
} void QTReaderApp::do_regaction() { reader->bDoUpdates = false; regBar->hide(); @@ -2990,12 +3545,15 @@ void QTReaderApp::do_regaction() case cAutoGen: do_autogen(regEdit->text()); break; case cAddBkmk: do_addbkmk(regEdit->text()); break; + case cRepara:
+ do_reparastring(regEdit->text());
+ break;
case cJump: do_jump(regEdit->text()); break; /* case cMonoSpace: do_mono(regEdit->text()); @@ -3007,13 +3565,13 @@ void QTReaderApp::do_regaction() #ifdef _SCROLLPIPE case cSetPipeTarget: do_setpipetarget(regEdit->text()); break; #endif case cSetConfigName: -// odebug << "Saving config" << oendl; +// qDebug("Saving config");
do_saveconfig(regEdit->text(), false); break; } // reader->restore(); // fileBar->show(); reader->setFocus(); @@ -3057,17 +3615,13 @@ void QTReaderApp::chooseencoding() } 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++) { @@ -3099,50 +3653,50 @@ void QTReaderApp::setfontHelper(const QString& lcn, int size) reader->ChangeFont(size); } } void QTReaderApp::do_setencoding(int i) { -// odebug << "setencoding:" << i << "" << oendl; + qDebug("setencoding:%d", i);
if (m_fontAction == cChooseEncoding) { reader->setencoding(i); } reader->refresh(); m_fontBar->hide(); m_fontVisible = false; -// odebug << "showedit" << oendl; +// qDebug("showedit");
if (reader->isVisible()) showEditTools(); -// odebug << "showeditdone" << oendl; +// qDebug("showeditdone");
} void QTReaderApp::do_setfont(const QString& lcn) { if (m_fontAction == cChooseFont) { setfontHelper(lcn); } reader->refresh(); m_fontBar->hide(); m_fontVisible = false; -// odebug << "showedit" << oendl; + // qDebug("setfont");
//if (reader->isVisible()) showEditTools(); -// odebug << "showeditdone" << oendl; +// qDebug("showeditdone");
} void QTReaderApp::do_autogen(const QString& regText) { unsigned long fs, ts; reader->sizes(fs,ts); -// // odebug << "Reg:" << (const tchar*)(regEdit->text()) << "\n" << oendl; +// // qDebug("Reg:%s\n", (const tchar*)(regEdit->text()));
m_autogenstr = regText; QRegExp re(regText); CBuffer buff; if (pBkmklist != NULL) delete pBkmklist; - pBkmklist = new CList<Bkmk>; + reader->pBkmklist = pBkmklist = new CList<Bkmk>;
m_fBkmksChanged = true; pbar->setGeometry(regBar->x(),regBar->y(),regBar->width(), regBar->height()); pbar->show(); pbar->raise(); pbar->reset(); @@ -3178,98 +3732,24 @@ void QTReaderApp::do_autogen(const QString& regText) pbar->hide(); reader->refresh(); } void QTReaderApp::saveprefs() { -// odebug << "saveprefs" << oendl; -// 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() { -// odebug << "oldFile called" << oendl; +// qDebug("oldFile called");
reader->setText(true); -// odebug << "settext called" << oendl; +// qDebug("settext called");
showEditTools(); -// odebug << "showedit called" << oendl; +// qDebug("showedit called");
} */ /* void info_cb(Fl_Widget* o, void* _data) { @@ -3320,50 +3800,50 @@ 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); + BkmkFile bf((const char *)fi.absFilePath(), true, true);
#else /* USEQPE */ - BkmkFile bf((const char *)Global::applicationFileName(APPDIR,reader->m_string), true); + BkmkFile bf((const char *)Global::applicationFileName(APPDIR,reader->m_string), true, 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()); + BkmkFile bf((const char *)fi.absFilePath(), false, false);
#else /* USEQPE */ - BkmkFile bf((const char *)Global::applicationFileName(APPDIR,".openfiles")); + BkmkFile bf((const char *)Global::applicationFileName(APPDIR,".openfiles"), false, false);
#endif /* USEQPE */ -// odebug << "Reading open files" << oendl; +// qDebug("Reading open files");
pOpenlist = bf.readall(); -// if (pOpenlist != NULL) odebug << "...with success" << oendl; -// else odebug << "...without success!" << oendl; +// 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); + BkmkFile bf((const char *)fi.absFilePath(), true, false);
#else /* USEQPE */ - BkmkFile bf((const char *)Global::applicationFileName(APPDIR,".openfiles"), true); + BkmkFile bf((const char *)Global::applicationFileName(APPDIR,".openfiles"), true, false);
#endif /* USEQPE */ -// odebug << "Writing open files" << oendl; +// qDebug("Writing open files");
bf.write(*pOpenlist); } } void QTReaderApp::readbkmks() { @@ -3396,22 +3876,22 @@ void QTReaderApp::readbkmks() unlink((const char *)Global::applicationFileName(APPDIR,reader->m_string)); #endif /* USEQPE */ } } #ifndef USEQPE - BkmkFile bf((const char *)fi.absFilePath()); + BkmkFile bf((const char *)fi.absFilePath(), false, true);
#else /* USEQPE */ - BkmkFile bf((const char *)Global::applicationFileName(APPDIR,reader->m_string)); + BkmkFile bf((const char *)Global::applicationFileName(APPDIR,reader->m_string), false, true);
#endif /* USEQPE */ - pBkmklist = bf.readall(); + reader->pBkmklist = pBkmklist = bf.readall();
m_fBkmksChanged = bf.upgraded(); if (pBkmklist == NULL) { - pBkmklist = reader->getbkmklist(); + reader->pBkmklist = pBkmklist = reader->getbkmklist();
} if (pBkmklist != NULL) pBkmklist->sort(); } void QTReaderApp::addbkmk() @@ -3426,13 +3906,13 @@ 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<Bkmk>; + if (pBkmklist == NULL) reader->pBkmklist = pBkmklist = new CList<Bkmk>;
#ifdef _UNICODE CBuffer buff; int i = 0; for (i = 0; i < text.length(); i++) { buff[i] = text[i].unicode(); @@ -3441,39 +3921,122 @@ void QTReaderApp::do_addbkmk(const QString& text) 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(); + reader->refresh(true);
} } +void QTReaderApp::UpdateStatus()
+{
+ QString status;
+ for (int i = 0; i < m_statusstring.length(); i++)
+ {
+ if (m_statusstring[i].unicode() == '%')
+ {
+ i++;
+ if (i < m_statusstring.length())
+ {
+ switch (m_statusstring[i].unicode())
+ {
+ case 'F':
+ {
+ unsigned long fs,ts;
+ reader->sizes(fs,ts);
+ status += filesize(ts);
+ }
+ break;
+ case 'f':
+ {
+ status += filesize(reader->pagelocate());
+ }
+ break;
+ case 'D':
+ {
+ status += filesize(reader->buffdoc.endSection()-reader->buffdoc.startSection());
+ }
+ break;
+ case 'd':
+ {
+ status += filesize(reader->pagelocate()-reader->buffdoc.startSection());
+ }
+ break;
+ case 'P':
+ {
+ unsigned long fs,ts;
+ reader->sizes(fs,ts);
+ status += percent(reader->pagelocate(),ts);
+ }
+ break;
+ case 'p':
+ {
+ status += percent(reader->pagelocate()-reader->buffdoc.startSection(),reader->buffdoc.endSection()-reader->buffdoc.startSection());
+ }
+ break;
+ case 'z':
+ {
+ // qDebug("case d");
+ status += QString().setNum(reader->m_fontControl.currentsize()*10);
+ }
+ break;
+ default:
+ status += m_statusstring[i];
+ }
+ }
+ }
+ else
+ {
+ status += m_statusstring[i];
+ }
+ }
+ m_prog->setText(status);
+}
+
void QTReaderApp::OnRedraw() { if ((pBkmklist != NULL) && (m_bkmkAvail != NULL)) { bool found = findNextBookmark(reader->pagelocate()); m_bkmkAvail->setEnabled(found); } + if (m_scrollbar != NULL)
+ {
+ //qDebug("OnRedraw:[%u, %u]", reader->buffdoc.startSection(), reader->buffdoc.endSection());
+ scrollbar->setRange(reader->buffdoc.startSection(), reader->buffdoc.endSection()-1);
+ scrollbar->setPageStep(reader->locate()-reader->pagelocate());
+ scrollbar->setValue((reader->m_rotated) ?
+ (reader->buffdoc.endSection() - reader->locate()+reader->buffdoc.startSection()) :
+ reader->pagelocate());
+ }
+ if (m_prog->isVisible())
+ {
+ // qDebug("updating status");
+ UpdateStatus();
+ // qDebug("updated status");
+ }
} void QTReaderApp::showAnnotation() { m_annoWin->setName(toQString(m_anno->name())); m_annoWin->setAnno(toQString(m_anno->anno())); + m_annoWin->setColor(QColor(m_anno->red(), m_anno->green(), m_anno->blue()));
m_annoIsEditing = false; #ifdef USEQPE Global::showInputMethod(); #endif editorStack->raiseWidget( m_annoWin ); + hidetoolbars();
m_annoWin->setFocus(); } -void QTReaderApp::OnWordSelected(const QString& wrd, size_t posn, const QString& line) +void QTReaderApp::OnWordSelected(const QString& wrd, size_t posn, size_t posn2, const QString& line)
{ -//// odebug << "OnWordSelected(" << posn << "):" << wrd << "" << oendl; +//// qDebug("OnWordSelected(%u):%s", posn, (const char*)wrd);
if (m_doClipboard) { QClipboard* cb = QApplication::clipboard(); cb->setText(wrd); #ifdef USEQPE @@ -3490,17 +4053,19 @@ void QTReaderApp::OnWordSelected(const QString& wrd, size_t posn, const QString& 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_annoWin->setPosn2(posn2);
m_annoIsEditing = true; #ifdef USEQPE Global::showInputMethod(); #endif editorStack->raiseWidget( m_annoWin ); + hidetoolbars();
} #ifdef USEQPE if (m_doDictionary) { if (!m_targetapp.isEmpty() && !m_targetmsg.isEmpty()) { @@ -3508,26 +4073,111 @@ void QTReaderApp::OnWordSelected(const QString& wrd, size_t posn, const QString& e << wrd; } } #endif } -void QTReaderApp::doAction(ActionTypes a, QKeyEvent* e) +void QTReaderApp::doAction(QKeyEvent* e)
+{
+ QMap<orKey,int>::Iterator f = kmap.end();
+
+ if (reader->m_autoScroll)
{ - if (a == 0) + f = kmap.find(orKey(e->state(), e->key(), true));
+ }
+ if (f == kmap.end())
+ {
+ f = kmap.find(orKey(e->state(), e->key(), false));
+ }
+
+ if (f == kmap.end())
{ + qDebug("doaction (no action) : %d %d %d", e->key(), e->state(), f.data());
e->ignore(); } else { + qDebug("doaction (some action) : %d %d %d", e->key(), e->state(), f.data());
+ ActionTypes a = (ActionTypes)f.data();
e->accept(); -// odebug << "Accepted" << oendl; +// qDebug("Accepted");
switch (a) { + case cesGotoLink:
+ {
+ reader->gotoLink();
+ }
+ break;
+ case cesNextLink:
+ {
+ reader->getNextLink();
+ }
+ break;
+ case cesInvertColours:
+ m_inverse_action->setOn(!reader->bInverse);
+ break;
+ case cesToggleBars:
+ m_hidebars = !m_hidebars;
+ if (m_hidebars)
+ {
+#ifdef USEQPE
+ menubar->hide();
+#endif
+ if (fileBar != NULL) fileBar->hide();
+ if (viewBar != NULL) viewBar->hide();
+ if (navBar != NULL) navBar->hide();
+ if (markBar != NULL) markBar->hide();
+ mb->hide();
+ }
+ else
+ {
+#ifdef USEQPE
+ menubar->show();
+#endif
+ if (fileBar != NULL) fileBar->show();
+ if (viewBar != NULL) viewBar->show();
+ if (navBar != NULL) navBar->show();
+ if (markBar != NULL) markBar->show();
+ mb->show();
+ }
+ break;
+ case cesToggleScrollBar:
+ if (m_scrollbar != NULL)
+ {
+ if (m_scrollbar->isHidden())
+ {
+ m_scrollishidden = false;
+ m_scrollbar->show();
+ reader->m_scrollpos = (m_qtscroll == 0) ? m_localscroll : 0;
+ }
+ else
+ {
+ m_scrollishidden = true;
+ m_scrollbar->hide();
+ reader->m_scrollpos = m_localscroll;
+ }
+ }
+ break;
+ case cesToggleStatusBar:
+ if (m_prog != NULL)
+ {
+ if (m_prog->isHidden())
+ {
+ m_statusishidden = false;
+ m_prog->show();
+ }
+ else
+ {
+ m_statusishidden = true;
+ m_prog->hide();
+ }
+ }
+ break;
case cesOpenFile: { + qDebug("Open file");
fileOpen(); } break; case cesAutoScroll: { reader->setautoscroll(!reader->m_autoScroll); @@ -3541,12 +4191,17 @@ void QTReaderApp::doAction(ActionTypes a, QKeyEvent* e) break; case cesFullScreen: { m_actFullscreen->setOn(!m_fullscreen); } break; + case cesRotate:
+ {
+ m_rotate_action->setOn(!reader->m_rotated);
+ }
+ break;
case cesActionAnno: { addanno(); } break; case cesZoomIn: @@ -3563,15 +4218,36 @@ void QTReaderApp::doAction(ActionTypes a, QKeyEvent* e) break; case cesHome: reader->goHome(); break; case cesPageUp: reader->dopageup(); + /*
+ ftime(&m_lastkeytime);
+ m_fndelay = m_debounce;
+ //
+ {
+ timeb now;
+ ftime(&now);
+ m_fndelay = (1000*(now.time - m_lastkeytime.time) + now.millitm)-m_lastkeytime.millitm+100;
+ }
+ */
break; case cesPageDown: reader->dopagedn(); + /*
+ ftime(&m_lastkeytime);
+ m_fndelay = m_debounce;
+ //
+ if (m_debounce != 0)
+ {
+ timeb now;
+ ftime(&now);
+ m_fndelay = (1000*(now.time - m_lastkeytime.time) + now.millitm)-m_lastkeytime.millitm+10;
+ }
+ */
break; case cesLineUp: reader->lineUp(); break; case cesLineDown: reader->lineDown(); @@ -3579,14 +4255,20 @@ void QTReaderApp::doAction(ActionTypes a, QKeyEvent* e) case cesStartDoc: gotoStart(); break; case cesEndDoc: gotoEnd(); break; + case cesScrollMore:
+ reader->increaseScroll();
+ break;
+ case cesScrollLess:
+ reader->reduceScroll();
+ break;
default: - odebug << "Unknown ActionType:" << a << "" << oendl; + qDebug("Unknown ActionType:%u", a);
break; } } } void QTReaderApp::setTwoTouch(bool _b) { reader->setTwoTouch(_b); } @@ -3598,13 +4280,13 @@ void QTReaderApp::SaveConfig() regEdit->setText(reader->m_string); do_regedit(); } void QTReaderApp::do_saveconfig(const QString& _txt, bool full) { -// odebug << "do_saveconfig:" << _txt << "" << oendl; +// qDebug("do_saveconfig:%s", (const char*)_txt);
#ifdef USEQPE QString configname; Config::Domain dom; if (full) { @@ -3621,44 +4303,44 @@ void QTReaderApp::do_saveconfig(const QString& _txt, bool full) config.setGroup( "View" ); #else QFileInfo fi; if (full) { -// odebug << "full:" << _txt << "" << oendl; +// qDebug("full:%s", (const char*)_txt);
QDir d = QDir::home(); // "/" if ( !d.cd(_txt) ) { // "/tmp" - owarn << "Cannot find the \"~/" << _txt << "\" directory" << oendl; + 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" - owarn << "Cannot find the \"~/" APPDIR "\" directory" << oendl; + qWarning( "Cannot find the \"~/" APPDIR "\" directory" );
d = QDir::home(); d.mkdir(APPDIR); d.cd(APPDIR); } if ( !d.cd("configs") ) { // "/tmp" - owarn << "Cannot find the \"~/" APPDIR "/configs\" directory" << oendl; + qWarning( "Cannot find the \"~/" APPDIR "/configs\" directory" );
d = QDir::home(); d.cd(APPDIR); d.mkdir("configs"); d.cd("configs"); } fi.setFile(d, _txt); } -// odebug << "Path:" << fi.absFilePath() << "" << oendl; +// qDebug("Path:%s", (const char*)fi.absFilePath());
Config config(fi.absFilePath()); #endif config.writeEntry( "StripCr", reader->bstripcr ); config.writeEntry( "AutoFmt", reader->bautofmt ); @@ -3667,223 +4349,111 @@ void QTReaderApp::do_saveconfig(const QString& _txt, bool full) 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( "ReparaString", reader->m_reparastring);
+ config.writeEntry( "BackgroundType" , (int)m_bgtype );
+ config.writeEntry( "Theme", m_themename );
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( "ScrollStep", reader->m_scrollstep);
+ config.writeEntry( "ScrollType", reader->m_scrolltype );
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( "IsRotated", reader->m_rotated );
+ config.writeEntry("StatusContent", m_statusstring);
+ config.writeEntry("StatusHidden", m_statusishidden);
+ config.writeEntry( "Background", m_background );
+ config.writeEntry( "Foreground", m_foreground );
+ config.writeEntry( "ScrollColour", m_scrollcolor );
+ config.writeEntry( "ScrollBarColour", m_scrollbarcolor );
+ config.writeEntry( "Hyphenate", reader->hyphenate );
+ // config.writeEntry( "CustomHyphen", reader->buffdoc.getCustomHyphen() );
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( "Top Margin", (int)reader->m_abstopmargin );
+ config.writeEntry( "Bottom Margin", (int)reader->m_absbottommargin );
+ config.writeEntry( "Left Margin", (int)reader->m_absleft_border );
+ config.writeEntry( "Right Margin", (int)reader->m_absright_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( "HideScrollBar", m_scrollishidden );
+ config.writeEntry( "Kern", reader->bkern );
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( "Negative", reader->bNegative );
+ config.writeEntry( "Inverse", reader->bInverse );
+ config.writeEntry( "FixGraphics", reader->m_fontControl.FixGraphics());
config.writeEntry( "ExtraSpace", reader->getextraspace() ); config.writeEntry( "ExtraLead", reader->getlead() ); config.writeEntry( "Basesize", (int)reader->getBaseSize()); config.writeEntry( "RequestorFontChange", m_propogatefontchange); +#ifdef USEQPE
+ config.writeEntry( "GrabKeyboard", m_grabkeyboard );
+#endif
if (full) { config.setGroup( "Toolbar" ); + config.writeEntry("QTScrollBar", m_qtscroll);
+ config.writeEntry("LocalScrollBar", m_localscroll);
config.writeEntry("Movable", m_tbmovesave); config.writeEntry("Policy", m_tbpolsave); config.writeEntry("Position", m_tbposition); #ifndef USEQPE + if (!isMaximized() && !isMinimized())
+ {
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); @@ -3903,145 +4473,133 @@ void QTReaderApp::setpause(bool sfs) void QTReaderApp::monospace(bool _b) { reader->setmono(_b); } -bool QTReaderApp::readconfig(const QString& _txt, bool full=false) +bool QTReaderApp::readconfig(const QString& dirname, 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); + configname = Global::applicationFileName(dirname, _txt);
QFileInfo fm(configname); if ( !fm.exists() ) return false; dom = Config::File; } Config config(configname, dom); config.setGroup( "View" ); #else - QFileInfo fi; + QString fullname;
if (full) { - QDir d = QDir::home(); // "/" - if ( !d.cd(_txt) ) - { // "/tmp" - owarn << "Cannot find the \"~/" << _txt << "\" directory" << oendl; - d = QDir::home(); - d.mkdir(_txt); - d.cd(_txt); - } - fi.setFile(d, INIFILE); + fullname = QDir::homeDirPath() + "/" + _txt + "/" + INIFILE;
} else { - QDir d = QDir::home(); // "/" - if ( !d.cd(APPDIR) ) - { // "/tmp" - owarn << "Cannot find the \"~/" APPDIR "\" directory" << oendl; - d = QDir::home(); - d.mkdir(APPDIR); - d.cd(APPDIR); + fullname = QDir::homeDirPath() + "/" + dirname + "/" + _txt;
} - if ( !d.cd("configs") ) - { // "/tmp" - owarn << "Cannot find the \"~/" APPDIR "/configs\" directory" << oendl; - 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()); + if (!QFile::exists(fullname)) return false;
+
+ Config config(fullname);
#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); + m_tbmovesave = m_tbmove = config.readBoolEntry("Movable", m_tbmovesave);
+ m_tbpolsave = m_tbpol = (ToolbarPolicy)config.readNumEntry("Policy", m_tbpolsave);
+ m_tbposition = (ToolBarDock)config.readNumEntry("Position", m_tbposition);
} 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); + m_bFloatingDialog = config.readBoolEntry("FloatDialogs", m_bFloatingDialog);
+ reader->bstripcr = config.readBoolEntry( "StripCr", reader->bstripcr );
+ reader->bfulljust = config.readBoolEntry( "FullJust", reader->bfulljust );
+ reader->bInverse = config.readBoolEntry( "Inverse", reader->bInverse );
+ // reader->bNegative = config.readBoolEntry( "Negative", false );
+ reader->m_fontControl.FixGraphics(config.readBoolEntry( "FixGraphics", reader->m_fontControl.FixGraphics() ));
+ reader->setextraspace(config.readNumEntry( "ExtraSpace", reader->getextraspace() ));
+ reader->setlead(config.readNumEntry( "ExtraLead", reader->getlead() ));
+ reader->btextfmt = config.readBoolEntry( "TextFmt", reader->btextfmt );
+ reader->bautofmt = config.readBoolEntry( "AutoFmt", reader->bautofmt );
+ reader->bstriphtml = config.readBoolEntry( "StripHtml", reader->bstriphtml );
+ reader->bpeanut = config.readBoolEntry( "Peanut", reader->bpeanut );
+ reader->bdehyphen = config.readBoolEntry( "Dehyphen", reader->bdehyphen );
+ reader->bdepluck = config.readBoolEntry( "Depluck", reader->bdepluck );
+ reader->bdejpluck = config.readBoolEntry( "Dejpluck", reader->bdejpluck );
+ reader->bonespace = config.readBoolEntry( "OneSpace", reader->bonespace );
+ reader->bunindent = config.readBoolEntry( "Unindent", reader->bunindent );
+ reader->brepara = config.readBoolEntry( "Repara", reader->brepara );
+ reader->m_reparastring = config.readEntry( "ReparaString", reader->m_reparastring);
+ m_bgtype = (bground)config.readNumEntry( "BackgroundType" , m_bgtype );
+ m_themename = config.readEntry("Theme", m_themename );
+ reader->bdblspce = config.readBoolEntry( "DoubleSpace", reader->bdblspce );
+ reader->bindenter = config.readNumEntry( "Indent", reader->bindenter );
+ reader->m_textsize = config.readNumEntry( "FontSize", reader->m_textsize );
+ reader->m_delay = config.readNumEntry( "ScrollDelay", reader->m_delay);
+ reader->m_scrollstep = config.readNumEntry( "ScrollStep", reader->m_scrollstep);
+ reader->m_scrolltype = config.readNumEntry( "ScrollType", reader->m_scrolltype);
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 ); + reader->m_lastfile = config.readEntry( "LastFile", reader->m_lastfile );
+ reader->m_lastposn = config.readNumEntry( "LastPosn", reader->m_lastposn );
+ }
+ reader->m_bpagemode = config.readBoolEntry( "PageMode", reader->m_bpagemode );
+ reader->m_bMonoSpaced = config.readBoolEntry( "MonoSpaced", reader->m_bMonoSpaced);
+ reader->m_rotated = config.readBoolEntry( "IsRotated", reader->m_rotated );
+ m_statusstring = config.readEntry("StatusContent", m_statusstring);
+ m_statusishidden = config.readBoolEntry("StatusHidden", m_statusishidden);
+ m_background = config.readNumEntry( "Background", m_background );
+ reader->setBackground(getcolour(m_background));
+ m_foreground = config.readNumEntry( "Foreground", m_foreground );
+ reader->setForeground(getcolour(m_foreground));
+ m_scrollcolor = config.readNumEntry( "ScrollColour", m_scrollcolor);
+ setscrollcolour();
+ m_scrollbarcolor = config.readNumEntry( "ScrollBarColour", m_scrollbarcolor);
+ setscrollbarcolour();
+ reader->hyphenate = config.readBoolEntry( "Hyphenate", reader->hyphenate );
+ // reader->buffdoc.setCustomHyphen(config.readBoolEntry( "CustomHyphen", false ));
+ reader->m_swapmouse = config.readBoolEntry( "SwapMouse", reader->m_swapmouse);
+ reader->m_fontname = config.readEntry( "Fontname", reader->m_fontname );
+ reader->m_encd = config.readNumEntry( "Encoding", reader->m_encd );
+ reader->m_charpc = config.readNumEntry( "CharSpacing", reader->m_charpc );
+ reader->m_overlap = config.readNumEntry( "Overlap", reader->m_overlap );
+ reader->m_abstopmargin = config.readNumEntry( "Top Margin", reader->m_abstopmargin );
+ reader->m_absbottommargin = config.readNumEntry( "Bottom Margin", reader->m_absbottommargin );
+ reader->m_absleft_border = config.readNumEntry( "Left Margin", reader->m_absleft_border );
+ reader->m_absright_border = config.readNumEntry( "Right Margin", reader->m_absright_border );
+ m_scrollishidden = config.readBoolEntry( "HideScrollBar", m_scrollishidden );
+ reader->brepalm = config.readBoolEntry( "Repalm", reader->brepalm );
+ reader->bkern = config.readBoolEntry( "Kern", reader->bkern );
+ reader->bremap = config.readBoolEntry( "Remap", reader->bremap );
+ reader->bmakebold = config.readBoolEntry( "MakeBold", reader->bmakebold );
+ reader->setContinuous(config.readBoolEntry( "Continuous", reader->m_continuousDocument ));
+ m_targetapp = config.readEntry( "TargetApp", m_targetapp );
+ m_targetmsg = config.readEntry( "TargetMsg", m_targetmsg );
#ifdef _SCROLLPIPE - reader->m_pipetarget = config.readEntry( "PipeTarget", QString::null ); - reader->m_pauseAfterEachPara = config.readBoolEntry( "PauseAfterPara", true ); + reader->m_pipetarget = config.readEntry( "PipeTarget", reader->m_pipetarget );
+ reader->m_pauseAfterEachPara = config.readBoolEntry( "PauseAfterPara", reader->m_pauseAfterEachPara );
#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 )); + m_twoTouch = config.readBoolEntry( "TwoTouch", m_twoTouch);
+ m_doAnnotation = config.readBoolEntry( "Annotation", m_doAnnotation);
+ m_doDictionary = config.readBoolEntry( "Dictionary", m_doDictionary);
+ m_doClipboard = config.readBoolEntry( "Clipboard", m_doClipboard);
+#ifdef USEQPE
+ m_grabkeyboard = config.readBoolEntry( "GrabKeyboard", m_grabkeyboard);
+#endif
+ m_propogatefontchange = config.readBoolEntry( "RequestorFontChange", m_propogatefontchange);
+ reader->setBaseSize(config.readNumEntry( "Basesize", reader->getBaseSize() ));
reader->setTwoTouch(m_twoTouch); m_touch_action->setOn(m_twoTouch); m_setmono_action->setOn(reader->m_bMonoSpaced); setfontHelper(reader->m_fontname); if (full) @@ -4050,45 +4608,45 @@ bool QTReaderApp::readconfig(const QString& _txt, bool full=false) } reader->setfilter(reader->getfilter()); reader->refresh(); return true; } -bool QTReaderApp::PopulateConfig(const char* tgtdir) +bool QTReaderApp::PopulateConfig(const char* tgtdir, bool usedirs)
{ bkmkselector->clear(); bkmkselector->setText("Cancel"); #ifndef USEQPE int cnt = 0; QDir d = QDir::home(); // "/" if ( !d.cd(APPDIR) ) { // "/tmp" - owarn << "Cannot find the \"~/" APPDIR "\" directory" << oendl; + qWarning( "Cannot find the \"~/" APPDIR "\" directory" );
d = QDir::home(); d.mkdir(APPDIR); d.cd(APPDIR); } if ( !d.cd(tgtdir) ) { // "/tmp" - owarn << "Cannot find the \"~/" APPDIR "/" << tgtdir << "\" directory" << oendl; + qWarning( "Cannot find the \"~/" APPDIR "/%s\" directory", tgtdir );
d = QDir::home(); d.mkdir(tgtdir); d.cd(tgtdir); } - d.setFilter( QDir::Files | QDir::NoSymLinks ); + d.setFilter( ((usedirs) ? QDir::Dirs : 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++; - //odebug << "" << fi->size() << " " << fi->fileName().data() << "" << oendl; + //qDebug( "%10li %s", fi->size(), fi->fileName().data() );
++it; // goto next list element } #else /* USEQPE */ int cnt = 0; DIR *d; @@ -4103,24 +4661,36 @@ bool QTReaderApp::PopulateConfig(const char* tgtdir) { 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)) + if (lstat((const char *)Global::applicationFileName(finaldir,de->d_name),&buf) == 0 && ((usedirs && S_ISDIR(buf.st_mode)) || (!usedirs && S_ISREG(buf.st_mode))))
{ bkmkselector->insertItem(de->d_name); cnt++; } } delete [] finaldir; closedir(d); #endif return (cnt > 0); } +void QTReaderApp::LoadTheme()
+{
+ if (PopulateConfig("Themes", true))
+ {
+ editorStack->raiseWidget( bkmkselector );
+ hidetoolbars();
+ m_nBkmkAction = cLdTheme;
+ }
+ else
+ QMessageBox::information(this, PROGNAME, "No config files");
+}
+
void QTReaderApp::LoadConfig() { if (PopulateConfig("configs")) { editorStack->raiseWidget( bkmkselector ); hidetoolbars(); @@ -4151,13 +4721,32 @@ void QTReaderApp::ExportLinks() m_nBkmkAction = cExportLinks; } else QMessageBox::information(this, PROGNAME, "No url files"); } -void QTReaderApp::OnURLSelected(const QString& href) +void QTReaderApp::OnURLSelected(const QString& href, const size_t tgt)
+{
+#ifndef USEQPE
+ qDebug("URL:%s", (const char*)href);
+ int col = href.find(':');
+ if (col > 0)
+ {
+ QString type = href.left(col);
+ qDebug("Type:%s", (const char*)type);
+ }
+ else
+ {
+ qDebug("No type");
+ }
+#else
+ if (href.isEmpty())
+ {
+ QMessageBox::information(this, PROGNAME, "No URL information supplied");
+ }
+ else
{ 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()) @@ -4166,44 +4755,46 @@ void QTReaderApp::OnURLSelected(const QString& href) m_url_localfile = urld->localfile(); m_url_globalfile = urld->globalfile(); if (m_url_clipboard) { QClipboard* cb = QApplication::clipboard(); cb->setText(href); - odebug << "<a href=\"" << href << "\">" << href << "</a>" << oendl; + qDebug("<a href=\"%s\">%s</a>", (const char*)href, (const char*)href);
} if (m_url_localfile) { writeUrl(reader->m_string, href); } if (m_url_globalfile) { writeUrl("GlobalURLFile", href); } } delete urld; } +#endif
+}
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" - owarn << "Cannot find the \"~/" APPDIR "\" directory" << oendl; + qWarning( "Cannot find the \"~/" APPDIR "\" directory" );
d = QDir::home(); d.mkdir(APPDIR); d.cd(APPDIR); } if ( !d.cd("urls") ) { // "/tmp" - owarn << "Cannot find the \"~/" APPDIR "/urls\" directory" << oendl; + qWarning( "Cannot find the \"~/" APPDIR "/urls\" directory" );
d = QDir::home(); d.cd(APPDIR); d.mkdir("urls"); d.cd("urls"); } fi.setFile(d, file); @@ -4217,6 +4808,159 @@ void QTReaderApp::writeUrl(const QString& file, const QString& href) } else { QMessageBox::warning(this, PROGNAME, "Problem with writing URL"); } } +
+QColor QTReaderApp::getcolour(int _c)
+{
+ QColor c = white;
+ switch (_c)
+ {
+ case 0:
+ c = white;
+ break;
+ case 1:
+ c = black;
+ break;
+ case 2:
+ c = darkGray;
+ break;
+ case 3:
+ c = gray;
+ break;
+ case 4:
+ c = lightGray;
+ break;
+ case 5:
+ c = red;
+ break;
+ case 6:
+ c = green;
+ break;
+ case 7:
+ c = blue;
+ break;
+ case 8:
+ c = cyan;
+ break;
+ case 9:
+ c = magenta;
+ break;
+ case 10:
+ c = yellow;
+ break;
+ case 11:
+ c = darkRed;
+ break;
+ case 12:
+ c = darkGreen;
+ break;
+ case 13:
+ c = darkBlue;
+ break;
+ case 14:
+ c = darkCyan;
+ break;
+ case 15:
+ c = darkMagenta;
+ break;
+ case 16:
+ c = darkYellow;
+ break;
+ default:
+ c = lightGray;
+ break;
+ }
+ return c;
+}
+
+void QTReaderApp::setscrollcolour()
+{
+ /*
+ QColor xc = getcolour(m_scrollcolor);
+ int r,g,b;
+ xc.rgb(&r,&g,&b);
+ reader->m_scrollcolor.setRgb(255^r, 255^g, 255^b);
+ */
+ reader->m_scrollcolor = getcolour(m_scrollcolor);
+}
+
+void QTReaderApp::setscrollbarcolour()
+{
+ /*
+ QColor xc = getcolour(m_scrollcolor);
+ int r,g,b;
+ xc.rgb(&r,&g,&b);
+ reader->m_scrollcolor.setRgb(255^r, 255^g, 255^b);
+ */
+ reader->m_scrollbarcolor = getcolour(m_scrollbarcolor);
+}
+
+void QTReaderApp::forceopen(const QString& filename)
+{
+ /*
+ QFileInfo fi(reader->m_lastfile);
+ fi = QFileInfo(filename);
+ QString flnm = fi.absFilePath();
+ */
+ if (!filename.isEmpty())
+ {
+ updatefileinfo();
+ if (pBkmklist != NULL)
+ {
+ if (m_fBkmksChanged)
+ {
+ savebkmks();
+ }
+ delete pBkmklist;
+ pBkmklist = NULL;
+ m_fBkmksChanged = false;
+ }
+ reader->disableAutoscroll();
+ openFile(filename);
+ reader->setFocus();
+ }
+}
+
+void QTReaderApp::actionscroll(int v)
+{
+ if (reader->m_rotated)
+ {
+ reader->dopageup(reader->buffdoc.startSection()+reader->buffdoc.endSection()-v);
+ }
+ else
+ {
+ /*
+ if (reader->pagelocate() < v)
+ {
+ while (reader->pagelocate() < v) reader->lineDown();
+ }
+ else
+ */
+ reader->locate(v);
+ }
+}
+
+void QTReaderApp::setBackgroundBitmap()
+{
+#ifdef USEQPE
+ QString file = APPDIR "/Themes/";
+ file += m_themename;
+ QString tgt = Global::applicationFileName(file,"background");
+#else
+ QString tgt(QDir::homeDirPath());
+ tgt += QString("/" APPDIR "/Themes/") + m_themename + "/background";
+#endif
+ qDebug("Trying to load %s", (const char *)tgt);
+ QPixmap pm(tgt);
+ reader->setBackgroundBitmap(pm, m_bgtype);
+}
+
+/*
+
+ myChannel = new QCopChannel( "QPE/FooBar", this );
+ connect( myChannel, SIGNAL(received(const QCString &, const QByteArray &)),
+ this, SLOT(fooBarMessage( const QCString &, const QByteArray &)) );
+
+*/
|