summaryrefslogtreecommitdiff
path: root/noncore/apps/opie-reader/CHM.cpp
Unidiff
Diffstat (limited to 'noncore/apps/opie-reader/CHM.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/apps/opie-reader/CHM.cpp35
1 files changed, 23 insertions, 12 deletions
diff --git a/noncore/apps/opie-reader/CHM.cpp b/noncore/apps/opie-reader/CHM.cpp
index 88d53bf..ace5abc 100644
--- a/noncore/apps/opie-reader/CHM.cpp
+++ b/noncore/apps/opie-reader/CHM.cpp
@@ -5,6 +5,9 @@
5#include <stdio.h> 5#include <stdio.h>
6#include <qimage.h> 6#include <qimage.h>
7#include <qpixmap.h> 7#include <qpixmap.h>
8#ifdef USEQPE
9#include <qpe/global.h>
10#endif
8 11
9#ifndef __STATIC 12#ifndef __STATIC
10extern "C" 13extern "C"
@@ -49,26 +52,30 @@ CHM::~CHM() {
49 chm_close(chmFile); 52 chm_close(chmFile);
50} 53}
51 54
52void CHM::suspend() { 55void CHM::suspend() {
53#ifdef USEQPE 56#ifdef USEQPE
54 bSuspended = true; 57 bSuspended = true;
55 //suspos = gztell(file); 58 //suspos = gztell(file);
56 chm_close(chmFile); 59 chm_close(chmFile);
57 chmFile = NULL; 60 chmFile = NULL;
58 sustime = time(NULL); 61 sustime = time(NULL);
59#endif 62#endif
60} 63}
61 64
62void CHM::unsuspend() { 65void CHM::unsuspend() {
63#ifdef USEQPE 66#ifdef USEQPE
64 if (bSuspended) 67 if (bSuspended)
65 { 68 {
66 bSuspended = false; 69 bSuspended = false;
67 int delay = time(NULL) - sustime; 70 int delay = time(NULL) - sustime;
68 if (delay < 10) 71 if (delay < 10)
69 sleep(10-delay); 72 {
73 Global::statusMessage("Stalling");
74 sleep(10-delay);
75 }
70 chmFile = chm_open(fname); 76 chmFile = chm_open(fname);
71 for (int i = 0; chmFile == NULL && i < 5; i++) { 77 for (int i = 0; chmFile == NULL && i < 5; i++) {
78 Global::statusMessage("Stalling");
72 sleep(5); 79 sleep(5);
73 chmFile = chm_open(fname); 80 chmFile = chm_open(fname);
74 } 81 }
@@ -77,7 +84,7 @@ void CHM::unsuspend() {
77 exit(0); 84 exit(0);
78 } 85 }
79 //suspos = gzseek(file, suspos, SEEK_SET); 86 //suspos = gzseek(file, suspos, SEEK_SET);
80 } 87 }
81#endif 88#endif
82} 89}
83 90
@@ -86,6 +93,7 @@ void CHM::addContent(QString content) {
86} 93}
87 94
88void CHM::FillHomeContent() { 95void CHM::FillHomeContent() {
96unsuspend();
89 if (chmHHCPath != "") { 97 if (chmHHCPath != "") {
90 const char *ext; 98 const char *ext;
91 char buffer[65536]; 99 char buffer[65536];
@@ -162,6 +170,7 @@ void CHM::FillHomeContent() {
162 170
163bool CHM::FillBuffer() 171bool CHM::FillBuffer()
164{ 172{
173unsuspend();
165 bool bRetVal = false; 174 bool bRetVal = false;
166 char buffer[65536]; 175 char buffer[65536];
167 int swath, offset; 176 int swath, offset;
@@ -196,6 +205,7 @@ bool CHM::FillBuffer()
196} 205}
197 206
198bool CHM::FillContent() { 207bool CHM::FillContent() {
208unsuspend();
199 bool bRetVal = false; 209 bool bRetVal = false;
200 if (chmPath != "") { 210 if (chmPath != "") {
201 /* try to find the file */ 211 /* try to find the file */
@@ -239,7 +249,8 @@ bool CHM::FillContent() {
239 return bRetVal; 249 return bRetVal;
240} 250}
241 251
242bool CHM::getFile(const QString& href) { 252bool CHM::getFile(const QString& _href, const QString& ) {
253 QString href = "/" + _href;
243 qDebug("Got:%s", (const char*)href); 254 qDebug("Got:%s", (const char*)href);
244 bool bRetVal = false; 255 bool bRetVal = false;
245 QString temp = chmPath; 256 QString temp = chmPath;
@@ -319,11 +330,11 @@ int CHM::OpenFile(const char *src) {
319int CHM::getch() { 330int CHM::getch() {
320 if ( (bufpos+1) >= chmBuffer.length() ) 331 if ( (bufpos+1) >= chmBuffer.length() )
321 return EOF; 332 return EOF;
322#ifdef _WINDOWS 333#ifdef _WINDOWS
323 QChar letter = chmBuffer.at(bufpos++); 334 QChar letter = chmBuffer.at(bufpos++);
324#else 335#else
325 QChar letter = chmBuffer[bufpos++]; 336 QChar letter = chmBuffer[bufpos++];
326#endif 337#endif
327 return (int)(char)letter; 338 return (int)(char)letter;
328} 339}
329 340