[Amis-vcs] SF.net SVN: amis: [2170] branches/amis3
Brought to you by:
julienq,
marisademeglio
From: <mar...@us...> - 2007-09-25 15:45:36
|
Revision: 2170 http://amis.svn.sourceforge.net/amis/?rev=2170&view=rev Author: marisademeglio Date: 2007-09-25 08:45:36 -0700 (Tue, 25 Sep 2007) Log Message: ----------- Started re-adding protected book support. The compiler gives a nonsense error in Dtb.cpp and I was in the middle of removing all new stuff (only 3 functions) and testing bit by bit. However, it's the end of the day, so this stuff will wait 'til tomorrow. Modified Paths: -------------- branches/amis3/AmisCore/include/dtb/Dtb.h branches/amis3/AmisCore/src/dtb/Dtb.cpp branches/amis3/AmisCore/src/dtb/DtbFileSet.cpp branches/amis3/AmisGuiMFC2/AmisGuiMFC2.vcproj branches/amis3/AmisGuiMFC2/include/DtbWithHooks.h branches/amis3/AmisGuiMFC2/src/DtbWithHooks.cpp branches/amis3/AmisGuiMFC2/src/gui/AmisGuiMFC2.cpp branches/amis3/AmisGuiMFC2/src/gui/MmView.cpp branches/amis3/AmisGuiMFC2/src/gui/TextRenderBrain.cpp branches/amis3/AmisGuiMFC2/src/gui/dialogs/AmisFileDialog.cpp Modified: branches/amis3/AmisCore/include/dtb/Dtb.h =================================================================== --- branches/amis3/AmisCore/include/dtb/Dtb.h 2007-09-25 12:58:13 UTC (rev 2169) +++ branches/amis3/AmisCore/include/dtb/Dtb.h 2007-09-25 15:45:36 UTC (rev 2170) @@ -69,6 +69,7 @@ ambulant::net::url calculateUriOfData(amis::dtb::smil::SmilMediaGroup*); int getDaisyVersion(); + //bool isProtected(); private: bool processNcc(const ambulant::net::url*); @@ -80,6 +81,8 @@ void cleanUpObjects(); void setNewLastmark(amis::dtb::smil::SmilMediaGroup*); string searchFullTextRelative(int); + //bool registerBookKeyFile(const ambulant::net::url*); + //bool checkForCopyProtection(amis::dtb::Metadata*); private: amis::dtb::Metadata* mpMetadata; @@ -97,6 +100,9 @@ string mLastSearchResult; string mLastSearchedTextFile; int mDaisyVersion; + //bool mbIsProtected; + //ambulant::net::url mBookKeyFile; + //ambulant::net::url mNccPdtbFile; }; } Modified: branches/amis3/AmisCore/src/dtb/Dtb.cpp =================================================================== --- branches/amis3/AmisCore/src/dtb/Dtb.cpp 2007-09-25 12:58:13 UTC (rev 2169) +++ branches/amis3/AmisCore/src/dtb/Dtb.cpp 2007-09-25 15:45:36 UTC (rev 2170) @@ -28,7 +28,13 @@ #include "io/TextSearch.h" #include "io/OpfFileReader.h" #include "io/NcxFileReader.h" + +#if defined(AMIS_COMPILER_MSVC) +//windows header containing charset conversion macros +#include <afxpriv.h> +#endif +//#include "ambulant/common/plugin_engine.h" //constructor amis::dtb::Dtb::Dtb() @@ -55,6 +61,8 @@ //delete objects void amis::dtb::Dtb::cleanUpObjects() { + mbIsProtected = false; + if (mpFiles != NULL) delete mpFiles; if (mpSmilTree != NULL) @@ -208,6 +216,23 @@ mpMetadata = ncc_file_reader.getMetadata(); mpCustomTests = ncc_file_reader.getCustomTests(); + //if this NCC file turned out to be a protected book, then we need to get custom tests and a nav model + //from an encrypted file + if (1)// (checkForCopyProtection(mpMetadata)) + { + /* mbIsProtected = true; + if (mpNavModel) delete mpNavModel; + if (mpCustomTests) delete mpCustomTests; + + //register key file with ambulant + this->registerBookKeyFile(&mBookKeyFile); + //reparse the ncc.pdtb file + if (!ncc_file_reader.readFromFile(&mNccPdtbFile)) return false; + + mpNavModel = ncc_file_reader.getNavModel(); + mpCustomTests = ncc_file_reader.getCustomTests();*/ + } + mpSpine = spine_visitor.getSpine(mpNavModel, this->getFileSet()->getBookDirectory()); mUid = getUid(); @@ -586,3 +611,57 @@ return p_bmk; } +//set the book key in the ambulant plugin engine +/* +bool amis::dtb::Dtb::registerBookKeyFile(const ambulant::net::url* key) +{ + // Check whether the plugin is available. + /*ambulant::common::plugin_engine *pe = ambulant::common::plugin_engine::get_plugin_engine(); + assert(pe); + pdtb_plugin_interface *pdata = (pdtb_plugin_interface *)pe->get_extra_data("pdtb_plugin"); + if (!pdata) return false; //TODO give error message + return pdata->set_key(mURL, key); + return false; +}*/ + +//this function looks at the metadata and decides if the book is a protected book +//if so, the book key and "real" ncc file path are saved +/* +bool amis::dtb::Dtb::checkForCopyProtection(amis::dtb::Metadata* pMetadata) +{ +#if defined(AMIS_COMPILER_MSVC) + //windows utility for converting wstring to string + USES_CONVERSION; +#endif + + if (!pMetadata) return false; + + //metadata uses wide strings + std::wstring w_version = pMetadata->getMetadata("prod:pdtb-version"); + std::wstring w_key = pMetadata->getMetadata("prod:pdtb-bookKey"); + std::wstring w_ncc = pMetadata->getMetadata("prod:pdtb-nccFile"); + +#if defined(AMIS_COMPILER_MSVC) + std::string s_version = T2A(w_version.c_str()); + std::string s_key = T2A(w_key.c_str()); + std::string s_ncc = T2A(w_ncc.c_str()); +#else + //TODO convert the strings on other platforms +#endif + + if (s_version == "1.0.0" && s_key != "" && s_ncc != "") + { + ambulant::net::url keyfile = ambulant::net::url::from_filename(s_key); + ambulant::net::url ncc = ambulant::net::url::from_filename(s_ncc); + mBookKeyFile = keyfile.join_to_base(*getFileSet()->getBookDirectory()); + mNccPdtbFile = ncc.join_to_base(*getFileSet()->getBookDirectory()); + return true; + } + else return false; +} +*/ +//just in case this info is useful to anyone +/*bool amis::dtb::Dtb::isProtected() +{ + return mbIsProtected; +}*/ \ No newline at end of file Modified: branches/amis3/AmisCore/src/dtb/DtbFileSet.cpp =================================================================== --- branches/amis3/AmisCore/src/dtb/DtbFileSet.cpp 2007-09-25 12:58:13 UTC (rev 2169) +++ branches/amis3/AmisCore/src/dtb/DtbFileSet.cpp 2007-09-25 15:45:36 UTC (rev 2170) @@ -150,7 +150,8 @@ //convert the string to lower case before doing a comparison std::transform(file_name.begin(), file_name.end(), file_name.begin(), (int(*)(int))tolower); - if (file_name.compare("ncc.html") == 0) + if (file_name.compare("ncc.html") == 0 || + file_name.compare("ncc.pdtb") == 0) return true; else return false; Modified: branches/amis3/AmisGuiMFC2/AmisGuiMFC2.vcproj =================================================================== --- branches/amis3/AmisGuiMFC2/AmisGuiMFC2.vcproj 2007-09-25 12:58:13 UTC (rev 2169) +++ branches/amis3/AmisGuiMFC2/AmisGuiMFC2.vcproj 2007-09-25 15:45:36 UTC (rev 2170) @@ -20,7 +20,7 @@ <Tool Name="VCCLCompilerTool" Optimization="0" - AdditionalIncludeDirectories="include;../../../../ambulant/include/;"../../../../ambulant-private/pdtbplugin";"../../../../ambulant-private/pdtbplugin/PdtbIePlugin";../AmisCore/include;"../../../../xerces-c-src/src";../3rdPartyAudio;../mffmTimeCode;"C:\Program Files\Visual Leak Detector"" + AdditionalIncludeDirectories="include;../../../../ambulant/include/;"../../../../ambulant-private/pdtbplugin";"../../../../ambulant-private/pdtbplugin/PdtbIePlugin";../AmisCore/include;"../../../../xerces-c-src/src";../3rdPartyAudio;../mffmTimeCode" PreprocessorDefinitions="WIN32;_WINDOWS;_DEBUG" MinimalRebuild="TRUE" BasicRuntimeChecks="3" @@ -37,7 +37,7 @@ Name="VCLinkerTool" AdditionalDependencies="AmisCoreD.lib xerces-c_2D.lib libambulant_shwin32_D.lib AmisAudioD.lib vorbisfile_static.lib vorbisenc_static.lib vorbis_static.lib ogg_static.lib libmad.lib stlib.lib fftw3.lib audiere.lib" LinkIncremental="2" - AdditionalLibraryDirectories="../lib;../../../../ambulant/lib/win32;"$(VSInstallDir)\..\Microsoft Speech SDK 5.1\Lib\i386";"C:\Program Files\Visual Leak Detector"" + AdditionalLibraryDirectories="../lib;../../../../ambulant/lib/win32;"$(VSInstallDir)\..\Microsoft Speech SDK 5.1\Lib\i386"" IgnoreDefaultLibraryNames="uafxcwd.lib;uafxcw.lib;LIBCD.lib;LIBC.lib;msvcrt.lib;libcmt.lib" GenerateDebugInformation="TRUE" SubSystem="2" @@ -133,6 +133,9 @@ RelativePath=".\include\DtbWithHooks.h"> </File> <File + RelativePath=".\include\pdtb.h"> + </File> + <File RelativePath=".\include\Preferences.h"> </File> <File @@ -268,6 +271,9 @@ </FileConfiguration> </File> <File + RelativePath=".\src\pdtb.cpp"> + </File> + <File RelativePath=".\src\Preferences.cpp"> </File> <File Modified: branches/amis3/AmisGuiMFC2/include/DtbWithHooks.h =================================================================== --- branches/amis3/AmisGuiMFC2/include/DtbWithHooks.h 2007-09-25 12:58:13 UTC (rev 2169) +++ branches/amis3/AmisGuiMFC2/include/DtbWithHooks.h 2007-09-25 15:45:36 UTC (rev 2170) @@ -55,7 +55,7 @@ amis::dtb::Bookmark* addBookmark(); void loadBookmark(int); amis::dtb::smil::SmilMediaGroup* loadSmilFromUrl(const ambulant::net::url*); - + private: void addToRecentBooks(); void makeAllNavContainerLabelsHumanReadable(); Modified: branches/amis3/AmisGuiMFC2/src/DtbWithHooks.cpp =================================================================== --- branches/amis3/AmisGuiMFC2/src/DtbWithHooks.cpp 2007-09-25 12:58:13 UTC (rev 2169) +++ branches/amis3/AmisGuiMFC2/src/DtbWithHooks.cpp 2007-09-25 15:45:36 UTC (rev 2170) @@ -332,4 +332,5 @@ amis::gui::MainWndParts::Instance()->mpMmDoc->OnOpenDocument(A2T(full_path.get_url().c_str())); } return NULL; -} \ No newline at end of file +} + Modified: branches/amis3/AmisGuiMFC2/src/gui/AmisGuiMFC2.cpp =================================================================== --- branches/amis3/AmisGuiMFC2/src/gui/AmisGuiMFC2.cpp 2007-09-25 12:58:13 UTC (rev 2169) +++ branches/amis3/AmisGuiMFC2/src/gui/AmisGuiMFC2.cpp 2007-09-25 15:45:36 UTC (rev 2170) @@ -23,12 +23,8 @@ #include "stdafx.h" #include "../resource.h" +#include "pdtb.h" -//visual leak detector -//http://dmoulding.googlepages.com/vld -#include "vld.h" - - #include "dtb/nav/NavModel.h" #include "DtbWithHooks.h" @@ -175,6 +171,9 @@ pFrame->ShowWindow(SW_SHOWMAXIMIZED); pFrame->UpdateWindow(); + //load user keys into the ambulant plugin engine + addUserKeysToAmbulantPluginEngine(); + return TRUE; } @@ -252,19 +251,29 @@ { amis::gui::dialogs::AmisFileDialog* p_dlg = new amis::gui::dialogs::AmisFileDialog(amis::gui::dialogs::AmisFileDialog::getFileOpenFilter()); string filename = p_dlg->showOpen(); - ambulant::net::url filename_url = ambulant::net::url::from_filename(filename); + + //the user is able to open UAK files through AMIS + if (isUakFile(filename)) + { + importUakIntoRegistry(filename); + } - if (!filename_url.is_empty_path()) + //else it's a book + else { - if (amis::dtb::DtbWithHooks::Instance()->open(&filename_url, &very_temporary_bookmarks_dir)) + ambulant::net::url filename_url = ambulant::net::url::from_filename(filename); + if (!filename_url.is_empty_path()) { - mbBookIsOpen = true; - amis::dtb::DtbWithHooks::Instance()->startReading(true); + if (amis::dtb::DtbWithHooks::Instance()->open(&filename_url, &very_temporary_bookmarks_dir)) + { + mbBookIsOpen = true; + amis::dtb::DtbWithHooks::Instance()->startReading(true); + } + else + { + //TODO give an error that book could not be opened + } } - else - { - //TODO give an error that book could not be opened - } } } Modified: branches/amis3/AmisGuiMFC2/src/gui/MmView.cpp =================================================================== --- branches/amis3/AmisGuiMFC2/src/gui/MmView.cpp 2007-09-25 12:58:13 UTC (rev 2169) +++ branches/amis3/AmisGuiMFC2/src/gui/MmView.cpp 2007-09-25 15:45:36 UTC (rev 2170) @@ -251,7 +251,7 @@ { topView = NULL; MainWndParts::Instance()->mpMmView = NULL; - gui::dx::dx_player::cleanup(); + ambulant::gui::dx::dx_player::cleanup(); } BOOL MmView::PreCreateWindow(CREATESTRUCT& cs) Modified: branches/amis3/AmisGuiMFC2/src/gui/TextRenderBrain.cpp =================================================================== --- branches/amis3/AmisGuiMFC2/src/gui/TextRenderBrain.cpp 2007-09-25 12:58:13 UTC (rev 2169) +++ branches/amis3/AmisGuiMFC2/src/gui/TextRenderBrain.cpp 2007-09-25 15:45:36 UTC (rev 2170) @@ -196,6 +196,7 @@ LPCTSTR tmp; tmp = (LPCTSTR)temp_cstr; mCurrentElmText.assign ((LPCTSTR)temp_cstr); + SysFreeString(attr_val.bstrVal); } else { @@ -207,6 +208,7 @@ LPCTSTR tmp; tmp = (LPCTSTR)temp_cstr; mCurrentElmText.assign ((LPCTSTR)temp_cstr); + SysFreeString(inner_text); } } Modified: branches/amis3/AmisGuiMFC2/src/gui/dialogs/AmisFileDialog.cpp =================================================================== --- branches/amis3/AmisGuiMFC2/src/gui/dialogs/AmisFileDialog.cpp 2007-09-25 12:58:13 UTC (rev 2169) +++ branches/amis3/AmisGuiMFC2/src/gui/dialogs/AmisFileDialog.cpp 2007-09-25 15:45:36 UTC (rev 2170) @@ -60,9 +60,7 @@ filter += _T("ncc.*; *.opf"); filter += _T(")|"); filter += _T("ncc.*; *.opf"); -#ifdef WITH_DAISY_PDTB filter += _T("|DAISY Pdtb Keys (*.uak)|*.uak"); -#endif filter += _T("||"); return filter; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |