Diffstat (limited to 'noncore/apps/opie-reader/QTReaderApp.cpp') (more/less context) (show whitespace changes)
-rw-r--r-- | noncore/apps/opie-reader/QTReaderApp.cpp | 811 |
1 files changed, 694 insertions, 117 deletions
diff --git a/noncore/apps/opie-reader/QTReaderApp.cpp b/noncore/apps/opie-reader/QTReaderApp.cpp index 8726df7..2044b1d 100644 --- a/noncore/apps/opie-reader/QTReaderApp.cpp +++ b/noncore/apps/opie-reader/QTReaderApp.cpp @@ -20,9 +20,12 @@ #include <qclipboard.h> #include <qwidgetstack.h> #include <qpe/qpemenubar.h> -#include <qpe/qpetoolbar.h> +//#include <qpe/qpetoolbar.h> +#include <qmenubar.h> +#include <qtoolbar.h> +#include <qpe/menubutton.h> #include <qpe/fontdatabase.h> #include <qcombobox.h> #include <qpopupmenu.h> #include <qaction.h> @@ -41,8 +44,9 @@ #include <qradiobutton.h> #include <qpe/qcopenvelope_qws.h> #include "QTReader.h" +#include "GraphicWin.h" #include "Bkmks.h" #include "cbkmkselector.h" #include "infowin.h" #include "CAnnoEdit.h" @@ -54,8 +58,18 @@ #include "QTReaderApp.h" #include "fileBrowser.h" #include "CDrawBuffer.h" +#include "Filedata.h" +#include "opie.h" +#include "name.h" +#include "StateData.h" + +#ifdef OPIE +#define PICDIR "opie-reader/" +#else +#define PICDIR +#endif unsigned long QTReaderApp::m_uid = 0; @@ -67,20 +81,21 @@ void QTReaderApp::setScrollState(bool _b) { m_scrollButton->setOn(_b); } void QTReaderApp::listBkmkFiles() { bkmkselector->clear(); + bkmkselector->setText("Cancel"); int cnt = 0; DIR *d; - d = opendir((const char *)Global::applicationFileName("uqtreader","")); + d = opendir((const char *)Global::applicationFileName(APPDIR,"")); while(1) { struct dirent* de; struct stat buf; de = readdir(d); if (de == NULL) break; - if (lstat((const char *)Global::applicationFileName("uqtreader",de->d_name),&buf) == 0 && S_ISREG(buf.st_mode)) + if (lstat((const char *)Global::applicationFileName(APPDIR,de->d_name),&buf) == 0 && S_ISREG(buf.st_mode)) { bkmkselector->insertItem(de->d_name); cnt++; } @@ -92,15 +107,23 @@ void QTReaderApp::listBkmkFiles() { //tjw menu->hide(); editBar->hide(); if (m_fontVisible) m_fontBar->hide(); - if (regVisible) regBar->hide(); - if (searchVisible) searchBar->hide(); + if (regVisible) + { + Global::hideInputMethod(); + regBar->hide(); + } + if (searchVisible) + { + Global::hideInputMethod(); + searchBar->hide(); + } m_nRegAction = cRmBkmkFile; editorStack->raiseWidget( bkmkselector ); } else - QMessageBox::information(this, "OpieReader", "No bookmark files"); + QMessageBox::information(this, PROGNAME, "No bookmark files"); } QTReaderApp::QTReaderApp( QWidget *parent, const char *name, WFlags f ) : QMainWindow( parent, name, f ), bFromDocView( FALSE ), m_dontSave(false) @@ -108,25 +131,28 @@ QTReaderApp::QTReaderApp( QWidget *parent, const char *name, WFlags f ) // qDebug("Application directory = %s", (const tchar *)QPEApplication::documentDir()); // qDebug("Application directory = %s", (const tchar *)Global::applicationFileName("uqtreader","bkmks.xml")); pBkmklist = NULL; - doc = 0; + pOpenlist = NULL; +// doc = 0; m_fBkmksChanged = false; QString lang = getenv( "LANG" ); m_autogenstr = "^ *[A-Z].*[a-z] *$"; setToolBarsMovable( FALSE ); - setIcon( Resource::loadPixmap( "opie-reader/uqtreader" ) ); + setIcon( Resource::loadPixmap( "uqtreader" ) ); - QPEToolBar *bar = new QPEToolBar( this ); +// QPEToolBar *bar = new QPEToolBar( this ); + QToolBar *bar = new QToolBar( this ); bar->setHorizontalStretchable( TRUE ); addToolBar(bar, "tool",QMainWindow::Top, true); //tjw menu = bar; QPEMenuBar *mb = new QPEMenuBar( bar ); +// QMenuBar *mb = new QMenuBar( bar ); QPopupMenu *file = new QPopupMenu( this ); QPopupMenu *format = new QPopupMenu( this ); // QPopupMenu *edit = new QPopupMenu( this ); @@ -158,8 +184,12 @@ QTReaderApp::QTReaderApp( QWidget *parent, const char *name, WFlags f ) m_infoWin = new infowin(editorStack); editorStack->addWidget(m_infoWin, get_unique_id()); connect( m_infoWin, SIGNAL( Close() ), this, SLOT( infoClose() ) ); + m_graphicwin = new GraphicWin(editorStack); + editorStack->addWidget(m_graphicwin, get_unique_id()); + connect( m_graphicwin, SIGNAL( Closed() ), this, SLOT( infoClose() ) ); + // bkmkselector = new QListBox(editorStack, "Bookmarks"); bkmkselector = new CBkmkSelector(editorStack, "Bookmarks"); // connect(bkmkselector, SIGNAL( selected(const QString&) ), this, SLOT( gotobkmk(const QString&) ) ); connect(bkmkselector, SIGNAL( selected(int) ), this, SLOT( gotobkmk(int) ) ); @@ -174,22 +204,28 @@ QTReaderApp::QTReaderApp( QWidget *parent, const char *name, WFlags f ) // don't need the close visible, it is redundant... importSelector->setCloseVisible( FALSE ); */ + qDebug("Reading file list"); + readfilelist(); reader = new QTReader( editorStack ); + reader->bDoUpdates = false; + ((QPEApplication*)qApp)->setStylusOperation(reader, QPEApplication::RightOnHold); - Config config( "uqtreader" ); + qDebug("Reading config"); + Config config( APPDIR ); config.setGroup( "View" ); reader->bstripcr = config.readBoolEntry( "StripCr", true ); 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->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 ); @@ -197,15 +233,20 @@ QTReaderApp::QTReaderApp( QWidget *parent, const char *name, WFlags f ) reader->m_delay = config.readNumEntry( "ScrollDelay", 5184); reader->m_lastfile = config.readEntry( "LastFile", QString::null ); reader->m_lastposn = config.readNumEntry( "LastPosn", 0 ); reader->m_bpagemode = config.readBoolEntry( "PageMode", true ); + reader->m_navkeys = config.readBoolEntry( "CursorNavigation", false ); reader->m_bMonoSpaced = config.readBoolEntry( "MonoSpaced", 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 ); +#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 ); m_twoTouch = config.readBoolEntry( "TwoTouch", false); m_doAnnotation = config.readBoolEntry( "Annotation", false); @@ -214,8 +255,10 @@ QTReaderApp::QTReaderApp( QWidget *parent, const char *name, WFlags f ) m_spaceTarget = (ActionTypes)config.readNumEntry("SpaceTarget", cesAutoScroll); setTwoTouch(m_twoTouch); + connect( reader, SIGNAL( OnShowPicture(QPixmap&) ), this, SLOT( showgraphic(QPixmap&) ) ); + connect( reader, SIGNAL( OnRedraw() ), this, SLOT( OnRedraw() ) ); connect( reader, SIGNAL( OnActionPressed() ), this, SLOT( OnActionPressed() ) ); connect( reader, SIGNAL( OnWordSelected(const QString&, size_t, const QString&) ), this, SLOT( OnWordSelected(const QString&, size_t, const QString&) ) ); editorStack->addWidget( reader, get_unique_id() ); @@ -224,8 +267,13 @@ QTReaderApp::QTReaderApp( QWidget *parent, const char *name, WFlags f ) connect( a, SIGNAL( activated() ), this, SLOT( fileOpen() ) ); a->addTo( bar ); a->addTo( file ); + a = new QAction( tr( "Close" ), Resource::loadPixmap( "fileclose" ), QString::null, 0, this, 0 ); + connect( a, SIGNAL( activated() ), this, SLOT( fileClose() ) ); +// a->addTo( bar ); + a->addTo( file ); + /* a = new QAction( tr( "Revert" ), Resource::loadPixmap( "close" ), QString::null, 0, this, 0 ); connect( a, SIGNAL( activated() ), this, SLOT( fileRevert() ) ); a->addTo( file ); @@ -249,20 +297,42 @@ QTReaderApp::QTReaderApp( QWidget *parent, const char *name, WFlags f ) m_buttonAction[1] = new QAction( tr( "Autoscroll" ), QString::null, 0, ag, NULL, true ); m_buttonAction[2] = new QAction( tr( "Mark" ), QString::null, 0, ag, NULL, true ); + m_buttonAction[3] = new QAction( tr( "Fullscreen" ), QString::null, 0, ag, NULL, true ); + ag->addTo(spacemenu); connect(ag, SIGNAL( selected(QAction*) ), this, SLOT( buttonActionSelected(QAction*) ) ); + file->insertSeparator(); + + ag = new QActionGroup(this); + ag->setExclusive(false); + QPopupMenu *encoding = new QPopupMenu(this); + file->insertItem( tr( "Navigation" ), encoding ); + + a = m_scrollButton = new QAction( tr( "Scroll" ), Resource::loadPixmap( PICDIR "panel-arrow-down" ), QString::null, 0, ag, 0, true ); - a = m_scrollButton = new QAction( tr( "Scroll" ), Resource::loadPixmap( "opie-reader/panel-arrow-down" ), QString::null, 0, this, 0, true ); -// connect( a, SIGNAL( activated() ), this, SLOT( autoScroll() ) ); a->setOn(false); connect( a, SIGNAL( toggled(bool) ), this, SLOT( autoScroll(bool) ) ); - file->insertSeparator(); a->addTo( bar ); - a->addTo( file ); + + a = new QAction( tr( "Jump" ), QString::null, 0, ag, NULL); + connect( a, SIGNAL( activated() ), this, SLOT( jump() ) ); + + a = new QAction( tr( "Page/Line Scroll" ), QString::null, 0, ag, NULL, true ); + connect( a, SIGNAL( toggled(bool) ), this, SLOT( pagemode(bool) ) ); + a->setOn(reader->m_bpagemode); + + a = new QAction( tr( "Set Overlap" ), QString::null, 0, ag, NULL); + connect( a, SIGNAL( activated() ), this, SLOT( setoverlap() ) ); + + a = new QAction( tr( "Use Cursor" ), QString::null, 0, ag, NULL, true ); + connect( a, SIGNAL( toggled(bool) ), this, SLOT( navkeys(bool) ) ); + a->setOn(reader->m_navkeys); + + ag->addTo(encoding); /* a = new QAction( tr( "Find" ), QString::null, 0, this, NULL, true ); // connect( a, SIGNAL( activated() ), this, SLOT( pagedn() ) ); @@ -271,20 +341,8 @@ QTReaderApp::QTReaderApp( QWidget *parent, const char *name, WFlags f ) a = new QAction( tr( "Find Again" ), QString::null, 0, this, NULL, true ); // connect( a, SIGNAL( activated() ), this, SLOT( pagedn() ) ); a->addTo( file ); */ - a = new QAction( tr( "Jump" ), QString::null, 0, this, NULL); - connect( a, SIGNAL( activated() ), this, SLOT( jump() ) ); - a->addTo( file ); - - a = new QAction( tr( "Page/Line Scroll" ), QString::null, 0, this, NULL, true ); - connect( a, SIGNAL( toggled(bool) ), this, SLOT( pagemode(bool) ) ); - a->setOn(reader->m_bpagemode); - a->addTo( file ); - - a = new QAction( tr( "Set Overlap" ), QString::null, 0, this, NULL); - connect( a, SIGNAL( activated() ), this, SLOT( setoverlap() ) ); - a->addTo( file ); file->insertSeparator(); a = new QAction( tr( "Set Dictionary" ), QString::null, 0, this, NULL); @@ -297,9 +355,9 @@ QTReaderApp::QTReaderApp( QWidget *parent, const char *name, WFlags f ) a->addTo( file ); ag = new QActionGroup(this); ag->setExclusive(false); - QPopupMenu *encoding = new QPopupMenu(this); + encoding = new QPopupMenu(this); file->insertItem( tr( "Target" ), encoding ); a = new QAction( tr( "Annotation" ), QString::null, 0, ag, NULL, true ); connect( a, SIGNAL( toggled(bool) ), this, SLOT( OnAnnotation(bool) ) ); @@ -344,8 +402,19 @@ QTReaderApp::QTReaderApp( QWidget *parent, const char *name, WFlags f ) // a->addTo( bar ); a->addTo( file ); + m_fullscreen = false; + a = m_actFullscreen = new QAction( tr( "Fullscreen" ), QString::null, 0, this, NULL, true ); + connect( a, SIGNAL( toggled(bool) ), this, SLOT( setfullscreen(bool) ) ); + a->setOn(m_fullscreen); + a->addTo( file ); + + a = new QAction( tr( "Continuous" ), QString::null, 0, ag, NULL, true ); + connect( a, SIGNAL( toggled(bool) ), this, SLOT( setcontinuous(bool) ) ); + a->setOn(reader->m_continuousDocument); + a->addTo( file ); + a = m_bkmkAvail = new QAction( tr( "Annotation" ), Resource::loadPixmap( "find" ), QString::null, 0, this, 0 ); connect( a, SIGNAL( activated() ), this, SLOT( showAnnotation() ) ); a->addTo( bar ); @@ -394,8 +463,12 @@ QTReaderApp::QTReaderApp( QWidget *parent, const char *name, WFlags f ) a->setOn(reader->bdehyphen); connect( a, SIGNAL( toggled(bool) ), this, SLOT( dehyphen(bool) ) ); // a->addTo( format ); + a = new QAction( tr( "Single Space" ), QString::null, 0, ag, NULL, true ); + a->setOn(reader->bonespace); + connect( a, SIGNAL( toggled(bool) ), this, SLOT( onespace(bool) ) ); + a = new QAction( tr( "Unindent" ), QString::null, 0, ag, NULL, true ); connect( a, SIGNAL( toggled(bool) ), this, SLOT( unindent(bool) ) ); a->setOn(reader->bunindent); // a->addTo( format ); @@ -415,9 +488,13 @@ QTReaderApp::QTReaderApp( QWidget *parent, const char *name, WFlags f ) // a->addTo( format ); a = new QAction( tr( "Indent-" ), QString::null, 0, ag, NULL ); connect( a, SIGNAL( activated() ), this, SLOT( indentminus() ) ); - +#ifdef REPALM + a = new QAction( tr( "Repalm" ), QString::null, 0, ag, NULL, true ); + a->setOn(reader->brepalm); + connect( a, SIGNAL( toggled(bool) ), this, SLOT( repalm(bool) ) ); +#endif a = new QAction( tr( "Remap" ), QString::null, 0, ag, NULL, true ); connect( a, SIGNAL( toggled(bool) ), this, SLOT( remap(bool) ) ); a->setOn(reader->bremap); @@ -428,19 +505,22 @@ QTReaderApp::QTReaderApp( QWidget *parent, const char *name, WFlags f ) ag->addTo(encoding); // a = new QAction( tr( "Zoom" ), QString::null, 0, this, NULL, true ); // a = new QAction( tr( "Zoom" ), Resource::loadPixmap( "mag" ), QString::null, 0, this, 0 ); - a = new QAction( tr( "Zoom" ), QString::null, 0, this); - connect( a, SIGNAL( activated() ), this, SLOT( TBDzoom() ) ); format->insertSeparator(); + a = new QAction( tr( "Zoom In" ), QString::null, 0, this); + connect( a, SIGNAL( activated() ), this, SLOT( zoomin() ) ); + a->addTo( format ); + a = new QAction( tr( "Zoom Out" ), QString::null, 0, this); + connect( a, SIGNAL( activated() ), this, SLOT( zoomout() ) ); a->addTo( format ); // a->addTo( editBar ); + format->insertSeparator(); a = new QAction( tr( "Ideogram/Word" ), QString::null, 0, this, NULL, true ); connect( a, SIGNAL( toggled(bool) ), this, SLOT( monospace(bool) ) ); a->setOn(reader->m_bMonoSpaced); - format->insertSeparator(); a->addTo( format ); a = new QAction( tr( "Set width" ), QString::null, 0, this, NULL); connect( a, SIGNAL( activated() ), this, SLOT( setspacing() ) ); @@ -578,8 +658,9 @@ QTReaderApp::QTReaderApp( QWidget *parent, const char *name, WFlags f ) m_fontBar = new QToolBar( "Autogen", this, QMainWindow::Top, TRUE ); m_fontBar->setHorizontalStretchable( TRUE ); + qDebug("Font selector"); m_fontSelector = new QComboBox(false, m_fontBar); m_fontBar->setStretchableWidget( m_fontSelector ); { FontDatabase f; @@ -591,10 +672,10 @@ QTReaderApp::QTReaderApp( QWidget *parent, const char *name, WFlags f ) { if (reader->m_fontname == *nm) { realfont = true; - break; } + if (*nm == "courier") reader->m_fontControl.hasCourier(true); } if (!realfont) reader->m_fontname = flist[0]; } // delete the FontDatabase!!! @@ -606,19 +687,67 @@ QTReaderApp::QTReaderApp( QWidget *parent, const char *name, WFlags f ) connect(qApp, SIGNAL( appMessage(const QCString&, const QByteArray& ) ), this, SLOT( msgHandler(const QCString&, const QByteArray&) ) ); - + qDebug("Initing"); reader->init(); + qDebug("Inited"); + m_EncodingAction[reader->m_encd]->setOn(true); + m_buttonAction[m_spaceTarget]->setOn(true); + qDebug("fonting"); + do_setfont(reader->m_fontname); if (!reader->m_lastfile.isEmpty()) { + qDebug("doclnk"); +// doc = new DocLnk(reader->m_lastfile); + qDebug("doclnk done"); + if (pOpenlist != NULL) + { + +/* + int ind = 0; + Bkmk* p = (*pOpenlist)[ind]; + while (p != NULL && toQString(CFiledata(p->anno()).name()) != reader->m_lastfile) + { + p = (*pOpenlist)[++ind]; + } +*/ + Bkmk* p = NULL; + for (CList<Bkmk>::iterator iter = pOpenlist->begin(); iter != pOpenlist->end(); iter++) + { + p = iter.pContent(); + if (toQString(CFiledata(p->anno()).name()) == reader->m_lastfile) + { + break; + } + qDebug("Item:%s", (const char*)toQString(CFiledata(p->anno()).name())); + p = NULL; + } + if (p != NULL) + { + qDebug("openfrombkmk"); + openfrombkmk(p); + } + else + { + qDebug("openfile"); openFile( reader->m_lastfile ); - doc = new DocLnk(reader->m_lastfile); } - m_EncodingAction[reader->m_encd]->setOn(true); - m_buttonAction[m_spaceTarget]->setOn(true); - do_setfont(reader->m_fontname); } + else + { + qDebug("Openfile 2"); + if (!reader->m_lastfile.isNull()) + openFile( reader->m_lastfile ); + } + } + qApp->processEvents(); + reader->bDoUpdates = true; + reader->update(); + qDebug("finished update"); +} + +void QTReaderApp::suspend() { reader->suspend(); } void QTReaderApp::msgHandler(const QCString& _msg, const QByteArray& _data) { QString msg = QString::fromUtf8(_msg); @@ -629,15 +758,15 @@ void QTReaderApp::msgHandler(const QCString& _msg, const QByteArray& _data) if ( msg == "info(QString)" ) { QString info; stream >> info; - QMessageBox::information(this, "OpieReader", info); + QMessageBox::information(this, PROGNAME, info); } else if ( msg == "warn(QString)" ) { QString info; stream >> info; - QMessageBox::warning(this, "OpieReader", info); + QMessageBox::warning(this, PROGNAME, info); } else if ( msg == "exit()" ) @@ -750,9 +879,9 @@ void QTReaderApp::msgHandler(const QCString& _msg, const QByteArray& _data) { pos = reader->locate(); if (!reader->buffdoc.getline(&test,reader->width())) { - QMessageBox::information(this, "OpieReader", QString("Can't find\n")+info); + QMessageBox::information(this, PROGNAME, QString("Can't find\n")+info); pos = start; break; } } @@ -763,8 +892,22 @@ void QTReaderApp::msgHandler(const QCString& _msg, const QByteArray& _data) int info; stream >> info; stripcr(info); } + else if ( msg == "Layout/Single Space" ) + { + int info; + stream >> info; + onespace(info); + } +#ifdef REPALM + else if ( msg == "Layout/Repalm(int)" ) + { + int info; + stream >> info; + repalm(info); + } +#endif else if ( msg == "Markup/Auto(int)" ) { int info; stream >> info; @@ -875,8 +1018,24 @@ ActionTypes QTReaderApp::ActNameToInt(const QString& _enc) } return cesAutoScroll; } +void QTReaderApp::setfullscreen(bool sfs) +{ + reader->bDoUpdates = false; + m_fullscreen = sfs; + showEditTools(); + qApp->processEvents(); + reader->bDoUpdates = true; + reader->update(); +} + +void QTReaderApp::setcontinuous(bool sfs) +{ + reader->setContinuous(sfs); + reader->refresh(); +} + int QTReaderApp::EncNameToInt(const QString& _enc) { for (int i = 0; i < MAX_ENCODING; i++) { @@ -909,18 +1068,19 @@ QTReaderApp::~QTReaderApp() void QTReaderApp::autoScroll(bool _b) { reader->setautoscroll(_b); + setScrollState(reader->m_autoScroll); } -void QTReaderApp::TBD() +void QTReaderApp::zoomin() { - QMessageBox::information(this, "OpieReader", "Not yet implemented", 1); + reader->zoomin(); } -void QTReaderApp::TBDzoom() +void QTReaderApp::zoomout() { - QMessageBox::information(this, "OpieReader", "Zooming is done interactively\nTry left/right cursor keys", 1); + reader->zoomout(); } void QTReaderApp::clearBkmkList() { @@ -928,21 +1088,101 @@ void QTReaderApp::clearBkmkList() pBkmklist = NULL; m_fBkmksChanged = false; } +void QTReaderApp::fileClose() +{ + if (pOpenlist != NULL) + { + int ind = 0; + Bkmk* p = (*pOpenlist)[ind]; + while (p != NULL && toQString(CFiledata(p->anno()).name()) != reader->m_lastfile) + { + p = (*pOpenlist)[++ind]; + } + if (p != NULL) pOpenlist->erase(ind); + switch (QMessageBox::information ( this , PROGNAME, "What do you want to delete?", "Nothing", "Marks", "Marks\nFile", 1, 0 )) + { + case 0: + default: + break; + case 2: + unlink((const char*)reader->m_lastfile); + case 1: + unlink((const char *)Global::applicationFileName(APPDIR, reader->m_string)); + } + } + + fileOpen2(); +} + +void QTReaderApp::updatefileinfo() +{ + if (reader->m_string.isNull()) return; + if (reader->m_lastfile.isNull()) return; + tchar* nm = fromQString(reader->m_string); + tchar* fl = fromQString(reader->m_lastfile); + qDebug("Lastfile:%x", fl); + bool notadded = true; + if (pOpenlist == NULL) pOpenlist = new CList<Bkmk>; + else + { + for (CList<Bkmk>::iterator iter = pOpenlist->begin(); iter != pOpenlist->end(); iter++) + { + if (ustrcmp(CFiledata(iter->anno()).name(), fl) == 0) + { + iter->value(reader->pagelocate()); + unsigned short dlen; + unsigned char* data; + CFiledata fd(iter->anno()); + reader->setSaveData(data, dlen, fd.content(), fd.length()); + qDebug("Filedata(1):%u, %u", fd.length(), dlen); +// getstate(data, dlen); + iter->setAnno(data, dlen); + notadded = false; + delete [] data; + break; + } + } + } + qDebug("Added?:%x", notadded); + if (notadded) + { + struct stat fnstat; + stat((const char *)reader->m_lastfile, &fnstat); + CFiledata fd(fnstat.st_mtime, fl); + unsigned short dlen; + unsigned char* data; + reader->setSaveData(data, dlen, fd.content(), fd.length()); + pOpenlist->push_front(Bkmk(nm, data, dlen, reader->pagelocate())); + qDebug("Filedata(2):%u, %u", fd.length(), dlen); + delete [] data; + } + delete [] nm; + delete [] fl; +} + void QTReaderApp::fileOpen() { /* menu->hide(); editBar->hide(); if (regVisible) regBar->hide(); if (searchVisible) searchBar->hide(); */ + qDebug("fileOpen"); +// if (!reader->m_lastfile.isEmpty()) + updatefileinfo(); + fileOpen2(); +} + +void QTReaderApp::fileOpen2() +{ if (pBkmklist != NULL) { if (m_fBkmksChanged) { - if (QMessageBox::warning(this, "OpieReader", "Save bookmarks?", "Save", "Don't bother") == 0) + if (QMessageBox::warning(this, PROGNAME, "Save bookmarks?", "Save", "Don't bother") == 0) savebkmks(); } delete pBkmklist; pBkmklist = NULL; @@ -952,29 +1192,55 @@ void QTReaderApp::fileOpen() /* editorStack->raiseWidget( fileSelector ); fileSelector->reread(); */ - fileBrowser* fb = new fileBrowser(this,"OpieReader",TRUE, + if (pOpenlist != NULL) + { + m_nRegAction = cOpenFile; + listbkmk(pOpenlist, "Browse"); + } + else + { + QString fn = usefilebrowser(); + if (!fn.isEmpty() && QFileInfo(fn).isFile()) + { + openFile(fn); + } + reader->setFocus(); + } +} + +QString QTReaderApp::usefilebrowser() +{ + fileBrowser* fb = new fileBrowser(this,"QTReader",TRUE, 0, // WStyle_Customize | WStyle_NoBorderEx, "*", QFileInfo(reader->m_lastfile).dirPath(true)); + + QString fn; if (fb->exec()) { - QString fn(fb->fileList[0]); -// fb->populateList(); - if (!fn.isEmpty() && QFileInfo(fn).isFile()) openFile(fn); + fn = fb->fileList[0]; } + qDebug("Selected %s", (const char*)fn); delete fb; - reader->setFocus(); + return fn; +} + +void QTReaderApp::showgraphic(QPixmap& pm) +{ + m_graphicwin->setPixmap(pm); + editorStack->raiseWidget( m_graphicwin ); + m_graphicwin->setFocus(); } void QTReaderApp::showinfo() { unsigned long fs, ts, pl; if (reader->empty()) { - QMessageBox::information(this, "OpieReader", "No file loaded", 1); + QMessageBox::information(this, PROGNAME, "No file loaded", 1); } else { reader->sizes(fs,ts); @@ -1019,9 +1285,9 @@ void QTReaderApp::addAnno(const QString& name, const QString& text) if (m_annoIsEditing) { if (name.isEmpty()) { - QMessageBox::information(this, "OpieReader", "Need a name for the bookmark\nPlease try again", 1); + QMessageBox::information(this, PROGNAME, "Need a name for the bookmark\nPlease try again", 1); } else { addAnno(name, text, m_annoWin->getPosn()); @@ -1076,17 +1342,18 @@ bool QTReaderApp::findNextBookmark(size_t start) void QTReaderApp::addanno() { if (reader->empty()) { - QMessageBox::information(this, "OpieReader", "No file loaded", 1); + QMessageBox::information(this, PROGNAME, "No file loaded", 1); } else { m_annoWin->setName(""); m_annoWin->setAnno(""); m_annoWin->setPosn(reader->pagelocate()); m_annoIsEditing = true; editorStack->raiseWidget( m_annoWin ); + Global::showInputMethod(); m_annoWin->setFocus(); } } @@ -1131,20 +1398,30 @@ void QTReaderApp::editCopy() } void QTReaderApp::pageup() { - reader->goUp(); + reader->NavUp(); } void QTReaderApp::pagedn() { - reader->goDown(); + reader->NavDown(); } void QTReaderApp::stripcr(bool _b) { reader->setstripcr(_b); } +void QTReaderApp::onespace(bool _b) +{ + reader->setonespace(_b); +} +#ifdef REPALM +void QTReaderApp::repalm(bool _b) +{ + reader->setrepalm(_b); +} +#endif void QTReaderApp::remap(bool _b) { reader->setremap(_b); } @@ -1187,9 +1464,12 @@ void QTReaderApp::dblspce(bool _b) void QTReaderApp::pagemode(bool _b) { reader->setpagemode(_b); } - +void QTReaderApp::navkeys(bool _b) +{ + reader->m_navkeys = _b; +} void QTReaderApp::monospace(bool _b) { reader->setmono(_b); } @@ -1230,9 +1510,9 @@ void QTReaderApp::do_overlap(const QString& lcn) { reader->m_overlap = ulcn; } else - QMessageBox::information(this, "OpieReader", "Must be a number"); + QMessageBox::information(this, PROGNAME, "Must be a number"); } void QTReaderApp::do_mono(const QString& lcn) { @@ -1245,9 +1525,9 @@ void QTReaderApp::do_mono(const QString& lcn) reader->refresh(); // reader->setmono(true); } else - QMessageBox::information(this, "OpieReader", "Must be a number"); + QMessageBox::information(this, PROGNAME, "Must be a number"); } /* void QTReaderApp::editPaste() @@ -1263,8 +1543,9 @@ void QTReaderApp::editFind() searchStart = reader->pagelocate(); #ifdef __ISEARCH searchStack = new QStack<searchrecord>; #endif + Global::showInputMethod(); searchBar->show(); searchVisible = TRUE; searchEdit->setFocus(); #ifdef __ISEARCH @@ -1290,8 +1571,9 @@ void QTReaderApp::findNext() void QTReaderApp::findClose() { searchVisible = FALSE; searchEdit->setText(""); + Global::hideInputMethod(); searchBar->hide(); #ifdef __ISEARCH // searchStack = new QStack<searchrecord>; while (!searchStack->isEmpty()) @@ -1307,8 +1589,9 @@ void QTReaderApp::regClose() { regVisible = FALSE; regEdit->setText(""); regBar->hide(); + Global::hideInputMethod(); reader->setFocus(); } #ifdef __ISEARCH @@ -1317,10 +1600,19 @@ bool QTReaderApp::dosearch(size_t start, CDrawBuffer& test, const QString& arg) bool QTReaderApp::dosearch(size_t start, CDrawBuffer& test, const QRegExp& arg) #endif { bool ret = true; + unsigned long fs, ts; + reader->sizes(fs,ts); size_t pos = reader->locate(); reader->buffdoc.getline(&test,reader->width()); + pbar->show(); + pbar->resize(width(), editBar->height()); + pbar->reset(); + int lastpc = (100*pos)/ts; + pbar->setProgress(lastpc); + qApp->processEvents(); + reader->setFocus(); #ifdef __ISEARCH while (strstr(test.data(),(const tchar*)arg) == NULL) #else #ifdef _UNICODE @@ -1330,8 +1622,18 @@ bool QTReaderApp::dosearch(size_t start, CDrawBuffer& test, const QRegExp& arg) #endif #endif { pos = reader->locate(); + unsigned int lcn = reader->locate(); + int pc = (100*pos)/ts; + if (pc != lastpc) + { + pbar->setProgress(pc); + qApp->processEvents(); + reader->setFocus(); + lastpc = pc; + } + if (!reader->buffdoc.getline(&test,reader->width())) { if (QMessageBox::warning(this, "Can't find", searchEdit->text(), 1, 2) == 2) pos = searchStart; @@ -1341,8 +1643,9 @@ bool QTReaderApp::dosearch(size_t start, CDrawBuffer& test, const QRegExp& arg) findClose(); break; } } + pbar->hide(); reader->locate(pos); return ret; } @@ -1387,58 +1690,126 @@ void QTReaderApp::search() #endif void QTReaderApp::openFile( const QString &f ) { - openFile(DocLnk(f)); -} - -void QTReaderApp::openFile( const DocLnk &f ) -{ + qDebug("File:%s", (const char*)f); +// openFile(DocLnk(f)); +//} +// +//void QTReaderApp::openFile( const DocLnk &f ) +//{ clear(); - FileManager fm; - if ( fm.exists( f ) ) + QFileInfo fm(f); + if ( fm.exists() ) { // QMessageBox::information(0, "Progress", "Calling fileNew()"); - clear(); - - // editorStack->raiseWidget( reader ); - - // reader->setFocus(); + if (fm.extension( FALSE ) == "desktop") + { + DocLnk d(f); + QFileInfo fnew(d.file()); + fm = fnew; + if (!fm.exists()) return; + } - // QMessageBox::information(0, "DocLnk", "Begin"); - doc = new DocLnk(f); - // QMessageBox::information(0, "DocLnk done", doc->file()); - // QMessageBox::information(0, "Progress", "Calling setText()"); - // QMessageBox::information(0, "Progress", "Textset"); + clear(); - // updateCaption(); + reader->setText(fm.baseName(), fm.absFilePath()); showEditTools(); - reader->setText(doc->name(), doc->file()); readbkmks(); } else { - QMessageBox::information(this, "OpieReader", "File does not exist"); + QMessageBox::information(this, PROGNAME, "File does not exist"); } } +/* +void QTReaderApp::resizeEvent(QResizeEvent* e) +{ + if (m_fullscreen) + { + showNormal(); + showFullScreen(); + } +} +*/ +void QTReaderApp::keyPressEvent(QKeyEvent* e) +{ + if (m_fullscreen) + { + switch(e->key()) + { + case Key_Escape: + m_actFullscreen->setOn(false); + if (m_fullscreen) + { + qDebug("Fullscreen already set - remove this!"); + } + else + { + m_fullscreen = false; + reader->bDoUpdates = false; + showEditTools(); + qApp->processEvents(); + reader->bDoUpdates = true; + reader->update(); + } + e->accept(); + break; + default: + e->ignore(); + } + } + else + { + e->ignore(); + } +} void QTReaderApp::showEditTools() { - if ( !doc ) - close(); -// fileSelector->hide(); -//tjw menu->show(); +// if ( !doc ) +// close(); + if (m_fullscreen) + { + editBar->hide(); + searchBar->hide(); + regBar->hide(); + Global::hideInputMethod(); + m_fontBar->hide(); +// showNormal(); + showFullScreen(); + } + else + { + qDebug("him"); + Global::hideInputMethod(); + qDebug("eb"); editBar->show(); if ( searchVisible ) + { + Global::showInputMethod(); searchBar->show(); + } if ( regVisible ) + { + Global::showInputMethod(); regBar->show(); + } if (m_fontVisible) m_fontBar->show(); + qDebug("sn"); + showNormal(); + qDebug("sm"); + showMaximized(); +// setCentralWidget(reader); + } + qDebug("uc"); updateCaption(); + qDebug("rw"); editorStack->raiseWidget( reader ); + qDebug("sf"); reader->setFocus(); } /* void QTReaderApp::save() @@ -1472,41 +1843,47 @@ void QTReaderApp::save() */ void QTReaderApp::clear() { - if (doc != 0) - { -// QMessageBox::information(this, "QTReader", "Deleting doc", 1); - delete doc; -// QMessageBox::information(this, "QTReader", "Deleted doc", 1); - doc = 0; - } +// if (doc != 0) +// { +// QMessageBox::information(this, PROGNAME, "Deleting doc", 1); +// delete doc; +// QMessageBox::information(this, PROGNAME, "Deleted doc", 1); +// doc = 0; + // } reader->clear(); } void QTReaderApp::updateCaption() { - if ( !doc ) - setCaption( tr("OpieReader") ); - else { - QString s = doc->name(); - if ( s.isEmpty() ) - s = tr( "Unnamed" ); - setCaption( s + " - " + tr("OpieReader") ); - } +// if ( !doc ) +// setCaption( tr("QTReader") ); +// else { +// QString s = doc->name(); +// if ( s.isEmpty() ) +// s = tr( "Unnamed" ); + setCaption( reader->m_string + " - " + tr(SHORTPROGNAME) ); +// } } void QTReaderApp::setDocument(const QString& fileref) { bFromDocView = TRUE; //QMessageBox::information(0, "setDocument", fileref); - openFile(DocLnk(fileref)); + openFile(fileref); // showEditTools(); } void QTReaderApp::closeEvent( QCloseEvent *e ) { - if (m_dontSave) + if (m_fullscreen) + { + m_fullscreen = false; + showEditTools(); + e->accept(); + } + else if (m_dontSave) { e->accept(); } else @@ -1520,26 +1897,29 @@ void QTReaderApp::closeEvent( QCloseEvent *e ) } if (regVisible) { regBar->hide(); + Global::hideInputMethod(); regVisible = false; return; } if (searchVisible) { searchBar->hide(); + Global::hideInputMethod(); searchVisible = false; return; } if (m_fBkmksChanged && pBkmklist != NULL) { - if (QMessageBox::warning(this, "OpieReader", "Save bookmarks?", "Save", "Don't bother") == 0) + if (QMessageBox::warning(this, PROGNAME, "Save bookmarks?", "Save", "Don't bother") == 0) savebkmks(); delete pBkmklist; pBkmklist = NULL; m_fBkmksChanged = false; } bFromDocView = FALSE; + updatefileinfo(); saveprefs(); e->accept(); } else @@ -1551,26 +1931,31 @@ void QTReaderApp::closeEvent( QCloseEvent *e ) void QTReaderApp::do_gotomark() { m_nRegAction = cGotoBkmk; - listbkmk(); + listbkmk(pBkmklist); } void QTReaderApp::do_delmark() { m_nRegAction = cDelBkmk; - listbkmk(); + listbkmk(pBkmklist); } -void QTReaderApp::listbkmk() +void QTReaderApp::listbkmk(CList<Bkmk>* plist, const QString& _lab) { bkmkselector->clear(); + if (_lab.isNull()) + bkmkselector->setText("Cancel"); + else + bkmkselector->setText(_lab); int cnt = 0; - if (pBkmklist != NULL) + if (plist != NULL) { - for (CList<Bkmk>::iterator i = pBkmklist->begin(); i != pBkmklist->end(); i++) + for (CList<Bkmk>::iterator i = plist->begin(); i != plist->end(); i++) { #ifdef _UNICODE + qDebug("Item:%s", (const char*)toQString(i->name())); bkmkselector->insertItem(toQString(i->name())); #else bkmkselector->insertItem(i->name()); #endif @@ -1581,14 +1966,22 @@ void QTReaderApp::listbkmk() { //tjw menu->hide(); editBar->hide(); if (m_fontVisible) m_fontBar->hide(); - if (regVisible) regBar->hide(); - if (searchVisible) searchBar->hide(); + if (regVisible) + { + Global::hideInputMethod(); + regBar->hide(); + } + if (searchVisible) + { + Global::hideInputMethod(); + searchBar->hide(); + } editorStack->raiseWidget( bkmkselector ); } else - QMessageBox::information(this, "OpieReader", "No bookmarks in memory"); + QMessageBox::information(this, PROGNAME, "No bookmarks in memory"); } void QTReaderApp::do_autogen() { @@ -1599,17 +1992,74 @@ void QTReaderApp::do_autogen() void QTReaderApp::do_regedit() { // editBar->hide(); + reader->bDoUpdates = false; + qDebug("Showing regbar"); regBar->show(); + qDebug("Showing kbd"); + Global::showInputMethod(); regVisible = true; regEdit->setFocus(); + qApp->processEvents(); + reader->bDoUpdates = true; + reader->update(); +} + +bool QTReaderApp::openfrombkmk(Bkmk* bk) +{ + QString fn = toQString( + CFiledata(bk->anno()).name() + ); + qDebug("fileinfo"); + if (!fn.isEmpty() && QFileInfo(fn).isFile()) + { + qDebug("Opening"); + openFile(fn); + struct stat fnstat; + stat((const char *)reader->m_lastfile, &fnstat); + + if (CFiledata(bk->anno()).date() + != fnstat.st_mtime) + { + CFiledata fd(bk->anno()); + fd.setdate(fnstat.st_mtime); + bk->value(0); + } + else + { + unsigned short svlen = bk->filedatalen(); + unsigned char* svdata = bk->filedata(); + reader->putSaveData(svdata, svlen); +// setstate(svdata, svlen); + if (svlen != 0) + { + QMessageBox::warning(this, PROGNAME, "Not all file data used\nNew version?"); + } + qDebug("updating"); + reader->locate(bk->value()); + } + return true; + } + else + { + return false; + } } void QTReaderApp::gotobkmk(int ind) { switch (m_nRegAction) { + case cOpenFile: + { + if (!openfrombkmk((*pOpenlist)[ind])) + { + pOpenlist->erase(ind); + QMessageBox::information(this, PROGNAME, "Can't find file"); + } + } + break; case cGotoBkmk: reader->locate((*pBkmklist)[ind]->value()); break; case cDelBkmk: @@ -1618,16 +2068,21 @@ void QTReaderApp::gotobkmk(int ind) m_fBkmksChanged = true; // pBkmklist->sort(); break; case cRmBkmkFile: - unlink((const char *)Global::applicationFileName("uqtreader",bkmkselector->text(ind))); + unlink((const char *)Global::applicationFileName(APPDIR,bkmkselector->text(ind))); break; } showEditTools(); } void QTReaderApp::cancelbkmk() { + if (m_nRegAction == cOpenFile) + { + QString fn = usefilebrowser(); + if (!fn.isEmpty() && QFileInfo(fn).isFile()) openFile(fn); + } showEditTools(); } void QTReaderApp::jump() @@ -1645,14 +2100,16 @@ void QTReaderApp::do_jump(const QString& lcn) unsigned long ulcn = lcn.toULong(&ok); if (ok) reader->locate(ulcn); else - QMessageBox::information(this, "OpieReader", "Must be a number"); + QMessageBox::information(this, PROGNAME, "Must be a number"); } void QTReaderApp::do_regaction() { + reader->bDoUpdates = false; regBar->hide(); + Global::hideInputMethod(); regVisible = false; switch(m_nRegAction) { case cAutoGen: @@ -1676,8 +2133,11 @@ void QTReaderApp::do_regaction() } reader->restore(); // editBar->show(); reader->setFocus(); + qApp->processEvents(); + reader->bDoUpdates = true; + reader->update(); } void QTReaderApp::do_settarget(const QString& _txt) { @@ -1685,9 +2145,9 @@ void QTReaderApp::do_settarget(const QString& _txt) if (ind == -1) { m_targetapp = ""; m_targetmsg = ""; - QMessageBox::information(this, "OpieReader", "Format is\nappname/messagename"); + QMessageBox::information(this, PROGNAME, "Format is\nappname/messagename"); } else { m_targetapp = _txt.left(ind); @@ -1708,25 +2168,34 @@ void QTReaderApp::setfont() m_fontBar->show(); m_fontVisible = true; } -void QTReaderApp::setfontHelper(const QString& lcn, int size) +void QTReaderApp::setfontHelper(const QString& lcn, int size = 0) { if (size == 0) size = reader->m_fontControl.currentsize(); QFont f(lcn, 10 /*, QFont::Bold*/); + qDebug("bs"); bkmkselector->setFont( f ); + qDebug("re"); regEdit->setFont( f ); + qDebug("se"); searchEdit->setFont( f ); + qDebug("aw"); m_annoWin->setFont( f ); reader->m_fontname = lcn; + qDebug("cf1"); if (!reader->ChangeFont(size)) { + qDebug("cf2"); reader->ChangeFont(size); } + qDebug("ref"); reader->refresh(); m_fontBar->hide(); m_fontVisible = false; - showEditTools(); + qDebug("showedit"); + if (reader->isVisible()) showEditTools(); + qDebug("showeditdone"); } void QTReaderApp::do_setfont(const QString& lcn) { @@ -1780,9 +2249,9 @@ pbar->resize(width(), editBar->height()); void QTReaderApp::saveprefs() { // reader->saveprefs("uqtreader"); - Config config( "uqtreader" ); + Config config( APPDIR ); config.setGroup( "View" ); reader->m_lastposn = reader->pagelocate(); @@ -1790,8 +2259,9 @@ void QTReaderApp::saveprefs() config.writeEntry( "AutoFmt", reader->bautofmt ); config.writeEntry( "TextFmt", reader->btextfmt ); config.writeEntry( "StripHtml", reader->bstriphtml ); config.writeEntry( "Dehyphen", reader->bdehyphen ); + 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 ); @@ -1799,8 +2269,9 @@ void QTReaderApp::saveprefs() 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( "CursorNavigation", reader->m_navkeys ); config.writeEntry( "MonoSpaced", reader->m_bMonoSpaced ); config.writeEntry( "Fontname", reader->m_fontname ); config.writeEntry( "Encoding", reader->m_encd ); config.writeEntry( "CharSpacing", reader->m_charpc ); @@ -1811,11 +2282,17 @@ void QTReaderApp::saveprefs() config.writeEntry( "Annotation", m_doAnnotation); config.writeEntry( "Dictionary", m_doDictionary); config.writeEntry( "Clipboard", m_doClipboard); config.writeEntry( "SpaceTarget", m_spaceTarget); +#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 ); + + savefilelist(); } void QTReaderApp::indentplus() { @@ -1886,21 +2363,55 @@ void info_cb(Fl_Widget* o, void* _data) void QTReaderApp::savebkmks() { if (pBkmklist != NULL) { - BkmkFile bf((const char *)Global::applicationFileName("uqtreader",reader->m_string), true); + BkmkFile bf((const char *)Global::applicationFileName(APPDIR, reader->m_string), true); bf.write(*pBkmklist); } m_fBkmksChanged = false; } +void QTReaderApp::readfilelist() +{ + BkmkFile bf((const char *)Global::applicationFileName(APPDIR, ".openfiles")); + qDebug("Reading open files"); + pOpenlist = bf.readall(); + if (pOpenlist != NULL) qDebug("...with success"); + else qDebug("...without success!"); +} + +void QTReaderApp::savefilelist() +{ + if (pOpenlist != NULL) + { + BkmkFile bf((const char *)Global::applicationFileName(APPDIR, ".openfiles"), true); + qDebug("Writing open files"); + bf.write(*pOpenlist); + } +} + void QTReaderApp::readbkmks() { if (pBkmklist != NULL) { delete pBkmklist; } - BkmkFile bf((const char *)Global::applicationFileName("uqtreader",reader->m_string)); + struct stat fnstat; + struct stat bkstat; + if ( + stat((const char *)reader->m_lastfile, &fnstat) == 0 + && + stat((const char *)Global::applicationFileName(APPDIR, reader->m_string), &bkstat) == 0 + ) + { + if (bkstat.st_mtime < fnstat.st_mtime) + { + unlink((const char *)Global::applicationFileName(APPDIR, reader->m_string)); + } + } + + BkmkFile bf((const char *)Global::applicationFileName(APPDIR, reader->m_string)); + pBkmklist = bf.readall(); m_fBkmksChanged = bf.upgraded(); if (pBkmklist == NULL) { @@ -1920,9 +2431,9 @@ void QTReaderApp::addbkmk() void QTReaderApp::do_addbkmk(const QString& text) { if (text.isEmpty()) { - QMessageBox::information(this, "OpieReader", "Need a name for the bookmark\nSelect add again", 1); + QMessageBox::information(this, PROGNAME, "Need a name for the bookmark\nSelect add again", 1); } else { if (pBkmklist == NULL) pBkmklist = new CList<Bkmk>; @@ -1956,8 +2467,9 @@ void QTReaderApp::showAnnotation() { m_annoWin->setName(toQString(m_anno->name())); m_annoWin->setAnno(toQString(m_anno->anno())); m_annoIsEditing = false; + Global::showInputMethod(); editorStack->raiseWidget( m_annoWin ); m_annoWin->setFocus(); } @@ -1984,8 +2496,9 @@ void QTReaderApp::OnWordSelected(const QString& wrd, size_t posn, const QString& m_annoWin->setName(line); m_annoWin->setAnno(""); m_annoWin->setPosn(posn); m_annoIsEditing = true; + Global::showInputMethod(); editorStack->raiseWidget( m_annoWin ); } if (m_doDictionary) { @@ -2016,8 +2529,13 @@ void QTReaderApp::OnActionPressed() { addbkmk(); } break; + case cesFullScreen: + { + m_actFullscreen->setOn(true); + } + break; default: { qDebug("Unknown ActionType:%u", m_spaceTarget); } @@ -2026,4 +2544,63 @@ void QTReaderApp::OnActionPressed() } void QTReaderApp::setTwoTouch(bool _b) { reader->setTwoTouch(_b); } void QTReaderApp::restoreFocus() { reader->setFocus(); } + +/* +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->bonespace = reader->bonespace; + sd->bunindent = reader->bunindent; + sd->brepara = reader->brepara; + sd->bdblspce = reader->bdblspce; + sd->m_bpagemode = reader->m_bpagemode; + sd->m_navkeys = reader->m_navkeys; + 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()); +} +*/ |