summaryrefslogtreecommitdiff
path: root/noncore/apps/opie-reader/CHM.cpp
Side-by-side diff
Diffstat (limited to 'noncore/apps/opie-reader/CHM.cpp') (more/less context) (show whitespace changes)
-rw-r--r--noncore/apps/opie-reader/CHM.cpp13
1 files changed, 12 insertions, 1 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
@@ -1,19 +1,22 @@
#include "CHM.h"
#include "chm_lib.h"
#include <qstring.h>
#include <qstringlist.h>
#include <stdio.h>
#include <qimage.h>
#include <qpixmap.h>
+#ifdef USEQPE
+#include <qpe/global.h>
+#endif
#ifndef __STATIC
extern "C"
{
CExpander* newcodec() { return new CHM; }
}
#endif
static int _print_ui_index(struct chmFile *h, struct chmUnitInfo *ui,
void *context)
{
CHM *chm = (CHM *)context;
@@ -57,44 +60,49 @@ void CHM::suspend() {
chmFile = NULL;
sustime = time(NULL);
#endif
}
void CHM::unsuspend() {
#ifdef USEQPE
if (bSuspended)
{
bSuspended = false;
int delay = time(NULL) - sustime;
if (delay < 10)
+ {
+ Global::statusMessage("Stalling");
sleep(10-delay);
+ }
chmFile = chm_open(fname);
for (int i = 0; chmFile == NULL && i < 5; i++) {
+ Global::statusMessage("Stalling");
sleep(5);
chmFile = chm_open(fname);
}
if (chmFile == NULL) {
QMessageBox::warning(NULL, PROGNAME, "Couldn't reopen file");
exit(0);
}
//suspos = gzseek(file, suspos, SEEK_SET);
}
#endif
}
void CHM::addContent(QString content) {
chmBuffer += content;
}
void CHM::FillHomeContent() {
+unsuspend();
if (chmHHCPath != "") {
const char *ext;
char buffer[65536];
unsigned int swath, offset;
QString tmp="";
QString HTML="";
/* try to find the file */
const char *filename = (const char *)chmHHCPath;
if (chm_resolve_object(chmFile, filename, &m_ui) != CHM_RESOLVE_SUCCESS)
{
chmBuffer = "HELP";
fsize = chmBuffer.length();
@@ -153,24 +161,25 @@ void CHM::FillHomeContent() {
HTML +="</BODY>\r\n";
HTML +="</HTML>\r\n";
chmHomeBuffer = HTML;
chmBuffer = HTML;
fsize = chmBuffer.length();
m_currentstart = m_ui.start;
m_currentend = m_currentstart+chmBuffer.length();
}
}
bool CHM::FillBuffer()
{
+unsuspend();
bool bRetVal = false;
char buffer[65536];
int swath, offset;
chmBuffer = "";
swath = 65536;
offset = 0;
fsize = m_ui.length;
while (offset < m_ui.length)
{
if ((m_ui.length - offset) < 65536)
swath = m_ui.length - offset;
else
@@ -187,24 +196,25 @@ bool CHM::FillBuffer()
chmBuffer = chmBuffer+"</HTML>";
}
fsize = chmBuffer.length();
bufpos = 0;
bRetVal = true;
m_currentstart = m_ui.start;
m_currentend = m_currentstart+chmBuffer.length();
return bRetVal;
}
bool CHM::FillContent() {
+unsuspend();
bool bRetVal = false;
if (chmPath != "") {
/* try to find the file */
const char *filename = (const char *)chmPath;
if (chm_resolve_object(chmFile, filename, &m_ui) != CHM_RESOLVE_SUCCESS)
{
fsize = chmBuffer.length();
return bRetVal;
}
char buffer[65536];
int swath, offset;
@@ -230,25 +240,26 @@ bool CHM::FillContent() {
chmBuffer = chmBuffer+"</HTML>";
}
fsize = chmBuffer.length();
bufpos = 0;
m_currentstart = m_ui.start;
m_currentend = m_currentstart+chmBuffer.length();
bRetVal = true;
}
return bRetVal;
}
-bool CHM::getFile(const QString& href) {
+bool CHM::getFile(const QString& _href, const QString& ) {
+ QString href = "/" + _href;
qDebug("Got:%s", (const char*)href);
bool bRetVal = false;
QString temp = chmPath;
chmPath = href;
if (FillContent()) {
qDebug("Got it");
bRetVal = true;
} else {
qDebug("Missed");
chmPath = temp;
FillContent();
}