From 7fae9ff2505901421c0c6bafd44fa59974b0cef6 Mon Sep 17 00:00:00 2001 From: Nikolay Pultsin Date: Fri, 11 May 2012 20:17:09 +0100 Subject: [PATCH] file aliases (for reference shortening), not used yet --- TODO.1.5 | 11 ++++++---- .../src/formats/xhtml/XHTMLReader.cpp | 20 +++++++++++++++++++ .../fbreader/src/formats/xhtml/XHTMLReader.h | 4 ++++ 3 files changed, 31 insertions(+), 4 deletions(-) diff --git a/TODO.1.5 b/TODO.1.5 index d89667118..2dc554f81 100644 --- a/TODO.1.5 +++ b/TODO.1.5 @@ -5,8 +5,9 @@ Larger icon on the site litres: top/hot lists (what's happen?) litres: author photos -* Empty pages at start of the SJ book (in emulator) -* Hyperlinks in the SJ book +* the SJ book: + ** empty pages at start (in emulator) + ** hyperlinks (including button image) * Network library initialization in ProcessHyperlinkAction :( * "Use embedded fonts" option * "Scan hidden directories" option @@ -61,10 +62,12 @@ DONE encodings list for native plugins * Better file name for shared file * java fb2 plugin: use Base64InputStream technique * - namespaceMapChangedHandler -* rtf: underline & strikethrough +* rtf: + ** underline & strikethrough + ** cover? + ** footnotes? * zip: support unicode file names (both java & cpp) * native code: send URL instead of ZLFileImage -* rtf: cover? * better brightness setting: no black screen, brightness "lower than system" (decrease color brightness) * author choose/edit dialog * rtf: embedded fonts? diff --git a/jni/NativeFormats/fbreader/src/formats/xhtml/XHTMLReader.cpp b/jni/NativeFormats/fbreader/src/formats/xhtml/XHTMLReader.cpp index 908c68746..7d5d99bba 100644 --- a/jni/NativeFormats/fbreader/src/formats/xhtml/XHTMLReader.cpp +++ b/jni/NativeFormats/fbreader/src/formats/xhtml/XHTMLReader.cpp @@ -680,3 +680,23 @@ const std::vector &XHTMLReader::externalDTDs() const { bool XHTMLReader::processNamespaces() const { return true; } + +const std::string &XHTMLReader::fileAlias(const std::string &fileName) const { + std::map::const_iterator it = myFileNumbers.find(fileName); + if (it != myFileNumbers.end()) { + return it->second; + } + + const std::string correctedFileName = + ZLFileUtil::normalizeUnixPath(MiscUtil::decodeHtmlURL(fileName)); + it = myFileNumbers.find(correctedFileName); + if (it != myFileNumbers.end()) { + return it->second; + } + + std::string num; + ZLStringUtil::appendNumber(num, myFileNumbers.size()); + myFileNumbers.insert(std::make_pair(correctedFileName, num)); + it = myFileNumbers.find(correctedFileName); + return it->second; +} diff --git a/jni/NativeFormats/fbreader/src/formats/xhtml/XHTMLReader.h b/jni/NativeFormats/fbreader/src/formats/xhtml/XHTMLReader.h index 717d8356e..6a7814059 100644 --- a/jni/NativeFormats/fbreader/src/formats/xhtml/XHTMLReader.h +++ b/jni/NativeFormats/fbreader/src/formats/xhtml/XHTMLReader.h @@ -63,6 +63,8 @@ public: bool readFile(const ZLFile &file, const std::string &referenceName); private: + const std::string &fileAlias(const std::string &fileName) const; + void startElementHandler(const char *tag, const char **attributes); void endElementHandler(const char *tag); void characterDataHandler(const char *text, size_t len); @@ -76,6 +78,8 @@ private: bool addStyleEntry(const std::string tag, const std::string aClass); private: + mutable std::map myFileNumbers; + BookReader &myModelReader; std::string myPathPrefix; std::string myReferenceName;