├── Program ├── Units │ ├── unit_MHL_xml.pas │ ├── unit_Logger.pas │ ├── unit_ColorTabs.pas │ ├── unit_Messages.pas │ ├── unit_Events.pas │ ├── unit_MHL_strings.pas │ ├── unit_PrevInst.pas │ └── unit_SearchUtils.pas ├── MyhomeLib.dres ├── MyhomeLib.res ├── MyhomeLib.todo ├── SQL │ ├── по автору.SQL │ └── по автору.sqm ├── MHL_prjgroup.tvsconfig ├── MyhomeLib_Icon.ico ├── Resources │ ├── home-lib.ico │ └── Images │ │ ├── 16x16 │ │ ├── clear.bmp │ │ ├── help.png │ │ ├── list.png │ │ ├── read.png │ │ ├── toXml.png │ │ ├── fromXml.png │ │ ├── tools1.png │ │ ├── tools2.png │ │ ├── download.png │ │ ├── editBook.png │ │ ├── epub_icon.png │ │ ├── file_txt.png │ │ ├── local-read.png │ │ ├── mobi_icon.png │ │ ├── runScript.png │ │ ├── selectAll.png │ │ ├── settings.png │ │ ├── star_small.png │ │ ├── statistic.png │ │ ├── toDevice.png │ │ ├── listRefresh.png │ │ ├── local-review.png │ │ ├── local-unread.png │ │ ├── remote-read.png │ │ ├── toFavorites1.png │ │ ├── toFavorites2.png │ │ ├── toFavorites3.png │ │ ├── book_finished.png │ │ ├── fromFavorites1.png │ │ ├── fromFavorites2.png │ │ ├── fromFavorites3.png │ │ ├── locateAuthor1.png │ │ ├── locateAuthor2.png │ │ ├── locateAuthor3.png │ │ ├── locateAuthor4.png │ │ ├── refreshLibList.png │ │ ├── remote-review.png │ │ ├── local-read-review.png │ │ ├── refreshGenresList.png │ │ ├── removeCollection.png │ │ ├── selectCollection.png │ │ ├── star_small_empty.png │ │ ├── collectionSettings1.png │ │ ├── collectionSettings2.png │ │ ├── collectionSettings3.png │ │ ├── collectionSettings4.png │ │ ├── remote-read-review.png │ │ ├── copyBookToCollection1.png │ │ └── copyBookToCollection2.png │ │ ├── 32x32 │ │ ├── en1.png │ │ ├── en2.png │ │ ├── en3.png │ │ ├── en4.png │ │ ├── en5.png │ │ ├── en6.png │ │ ├── en7.png │ │ ├── en8.png │ │ ├── help.png │ │ ├── read1.png │ │ ├── read2.png │ │ ├── read3.png │ │ ├── read4.png │ │ ├── read5.png │ │ ├── ru1.png │ │ ├── ru10.png │ │ ├── ru2.png │ │ ├── ru3.png │ │ ├── ru4.png │ │ ├── ru5.png │ │ ├── ru6.png │ │ ├── ru7.png │ │ ├── ru9.png │ │ ├── newCol.png │ │ ├── search.png │ │ ├── bookList1.png │ │ ├── chekAll1.png │ │ ├── chekAll2.png │ │ ├── chekAll4.png │ │ ├── download.png │ │ ├── download_2.png │ │ ├── infoPanel1.png │ │ ├── infoPanel2.png │ │ ├── infoPanel3.png │ │ ├── infopanel5.png │ │ ├── settings1.png │ │ ├── settings12.png │ │ ├── settings2.png │ │ ├── settings3.png │ │ ├── settings4.png │ │ ├── settings6.png │ │ ├── settings7.png │ │ ├── settings8.png │ │ ├── tableView1.png │ │ ├── treeView1.png │ │ ├── disabled │ │ │ ├── en1.png │ │ │ ├── en2.png │ │ │ ├── en3.png │ │ │ ├── en4.png │ │ │ ├── en5.png │ │ │ ├── en6.png │ │ │ ├── en7.png │ │ │ ├── ru1.png │ │ │ ├── ru2.png │ │ │ ├── ru3.png │ │ │ ├── ru4.png │ │ │ ├── ru5.png │ │ │ ├── ru6.png │ │ │ ├── ru7.png │ │ │ ├── ru9.png │ │ │ ├── newCol.png │ │ │ ├── read1.png │ │ │ ├── read2.png │ │ │ ├── read3.png │ │ │ ├── read4.png │ │ │ ├── read5.png │ │ │ ├── search.png │ │ │ ├── chekAll1.png │ │ │ ├── chekAll2.png │ │ │ ├── chekAll4.png │ │ │ ├── dis_read.png │ │ │ ├── download.png │ │ │ ├── bookList1.png │ │ │ ├── download_2.png │ │ │ ├── infoPanel1.png │ │ │ ├── infoPanel2.png │ │ │ ├── infoPanel3.png │ │ │ ├── infopanel5.png │ │ │ ├── local_files.png │ │ │ ├── settings1.png │ │ │ ├── settings12.png │ │ │ ├── settings2.png │ │ │ ├── settings3.png │ │ │ ├── settings4.png │ │ │ ├── settings6.png │ │ │ ├── settings7.png │ │ │ ├── settings8.png │ │ │ ├── tableView1.png │ │ │ ├── treeView1.png │ │ │ ├── deletedBooks1.png │ │ │ ├── deletedBooks2.png │ │ │ ├── deletedBooks3.png │ │ │ ├── downloaded_2.png │ │ │ ├── downloaded_3.png │ │ │ ├── downloaded_4.png │ │ │ ├── refreshList1.png │ │ │ ├── refreshList2.png │ │ │ ├── sndToDevice1.png │ │ │ ├── sndToDevice2.png │ │ │ ├── toFavorites1.png │ │ │ ├── toFavorites2.png │ │ │ ├── toFavorites3.png │ │ │ ├── fromFavorites1.png │ │ │ ├── fromFavorites2.png │ │ │ ├── fromFavorites3.png │ │ │ ├── fromFavorites4.png │ │ │ ├── fromFavorites5.png │ │ │ ├── fromFavorites6.png │ │ │ ├── sndToDevice_fb2.png │ │ │ ├── sndToDevice_lrf.png │ │ │ ├── sndToDevice_txt.png │ │ │ ├── sndToDevice_zip.png │ │ │ ├── toDownloadList.png │ │ │ ├── selectCollection1.png │ │ │ ├── newCollectionWizard1.png │ │ │ └── newCollectionWizard2.png │ │ ├── downloaded_2.png │ │ ├── downloaded_3.png │ │ ├── downloaded_4.png │ │ ├── local_files.png │ │ ├── refreshList1.png │ │ ├── refreshList2.png │ │ ├── sndToDevice1.png │ │ ├── sndToDevice2.png │ │ ├── toFavorites1.png │ │ ├── toFavorites2.png │ │ ├── toFavorites3.png │ │ ├── deletedBooks1.png │ │ ├── deletedBooks2.png │ │ ├── deletedBooks3.png │ │ ├── fromDownloads.png │ │ ├── fromFavorites1.png │ │ ├── fromFavorites2.png │ │ ├── fromFavorites3.png │ │ ├── fromFavorites4.png │ │ ├── fromFavorites5.png │ │ ├── fromFavorites6.png │ │ ├── sndToDevice_fb2.png │ │ ├── sndToDevice_lrf.png │ │ ├── sndToDevice_pdf.png │ │ ├── sndToDevice_txt.png │ │ ├── sndToDevice_zip.png │ │ ├── toDownloadList.png │ │ ├── selectCollection1.png │ │ ├── sndToDevice_epub.png │ │ ├── newCollectionWizard1.png │ │ ├── newCollectionWizard2.png │ │ └── update_collections.png │ │ └── splashScreen9.png ├── Wizards │ ├── Base │ │ ├── frame_WizardPageBase.dfm │ │ ├── frame_InteriorPageBase.dfm │ │ ├── frame_DecorativePageBase.pas │ │ ├── frm_MHLWizardBase.dfm │ │ ├── frame_InteriorPageBase.pas │ │ ├── frame_WizardPageBase.pas │ │ └── frame_DecorativePageBase.dfm │ └── NewCollection │ │ ├── frm_NewCollectionWizard.dfm │ │ ├── frame_NCWWelcom.dfm │ │ ├── frame_NCWFinish.dfm │ │ ├── frame_NCWWelcom.pas │ │ ├── frame_NCWFinish.pas │ │ ├── unit_NCWParams.pas │ │ ├── frame_NCWDownload.dfm │ │ ├── frame_NCWOperation.dfm │ │ ├── frame_NCWCollectionFileTypes.dfm │ │ └── frame_NCWOperation.pas ├── MyhomeLib.stat ├── MHL.groupproj.local ├── ImportImpl │ ├── frm_BaseProgressForm.dfm │ ├── frm_ExportProgressForm.dfm │ ├── frm_ExportProgressForm.pas │ ├── frm_ImportProgressForm.dfm │ ├── unit_Export.pas │ ├── frm_ImportProgressFormEx.dfm │ ├── unit_CollectionWorkerThread.pas │ ├── unit_Import.pas │ └── frm_ImportProgressForm.pas ├── UtilsImpl │ ├── frm_SyncOnLineProgressForm.pas │ ├── frm_SyncOnLineProgressForm.dfm │ ├── frm_ExportToDeviceProgressForm.pas │ ├── frm_ExportToDeviceProgressForm.dfm │ ├── unit_SyncOnLineThread.pas │ └── unit_ExportToDevice.pas ├── MyhomeLib.dproj.local ├── Forms │ ├── frm_info_popup.dfm │ ├── frm_info_popup.pas │ ├── frm_splash.pas │ ├── frm_search.dfm │ ├── Editors │ │ ├── frm_EditAuthorEx.pas │ │ ├── frm_EditAuthorEx.dfm │ │ ├── frm_EditGroup.dfm │ │ ├── frm_EditGroup.pas │ │ ├── frm_edit_author.dfm │ │ ├── frm_edit_reader.dfm │ │ ├── frm_edit_reader.pas │ │ ├── frm_edit_author.pas │ │ ├── frm_edit_script.dfm │ │ └── frm_edit_script.pas │ ├── frm_author_list.pas │ ├── frm_statistic.pas │ ├── frm_about.pas │ ├── frm_search.pas │ ├── frm_genre_tree.dfm │ ├── frm_author_list.dfm │ └── frm_statistic.dfm ├── MyhomeLibResource.rc ├── MHL.groupproj ├── DwnldImpl │ └── frm_DownloadProgressForm.dfm ├── DAO │ └── SQLite │ │ ├── Lib │ │ └── SQLite3UDF.pas │ │ └── unit_SQLiteUtils.pas └── DataModules │ └── dm_user.pas ├── Components └── MHLComponents │ ├── MHLButtonedEdit.rc │ ├── MHLComponents.dproj.local │ ├── MHLComponents.res │ ├── MHLButtonedEdit.RES │ ├── MHLComponents.otares │ ├── MHLSimplePanel.pas │ ├── MHLComponents_Icon.ico │ ├── MHLComponents_Icon1.ico │ ├── Resources │ └── blue-document-code.png │ ├── MHLComponents.stat │ ├── MHLComponents_Register.pas │ ├── MHLComponents.dpk │ ├── files_list.pas │ └── unit_AutoCompleteEdit.pas ├── Installer ├── Images │ ├── Setup.ico │ ├── SetupModern20.bmp │ └── SetupModernSmall20.bmp ├── Setup_Script_MyHomeLib.iss └── Setup_Script_MyHomeLib_x64.iss ├── .gitignore ├── Utils ├── MHLSQLiteConsole │ ├── MHLSQLiteConsole.res │ └── MHLSQLiteConsole.dpr └── MHLSQLiteExt │ ├── MHLSQLiteExt.sln │ ├── stdafx.h │ ├── stdafx.cpp │ ├── ReadMe.txt │ └── dllmain.cpp ├── README.md └── LICENSE /Program/Units/unit_MHL_xml.pas: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Program/MyhomeLib.dres: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/MyhomeLib.dres -------------------------------------------------------------------------------- /Program/MyhomeLib.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/MyhomeLib.res -------------------------------------------------------------------------------- /Program/MyhomeLib.todo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/MyhomeLib.todo -------------------------------------------------------------------------------- /Components/MHLComponents/MHLButtonedEdit.rc: -------------------------------------------------------------------------------- 1 | CODE_EDITOR RCData "Resources\\blue-document-code.png" 2 | -------------------------------------------------------------------------------- /Program/SQL/по автору.SQL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/SQL/по автору.SQL -------------------------------------------------------------------------------- /Program/SQL/по автору.sqm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/SQL/по автору.sqm -------------------------------------------------------------------------------- /Installer/Images/Setup.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Installer/Images/Setup.ico -------------------------------------------------------------------------------- /Program/MHL_prjgroup.tvsconfig: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /Program/MyhomeLib_Icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/MyhomeLib_Icon.ico -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.dcu 2 | Out 3 | /Program/*.dsk 4 | __history 5 | *.~pas 6 | Common 7 | x64 8 | /Installer/x86 9 | -------------------------------------------------------------------------------- /Program/Resources/home-lib.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/home-lib.ico -------------------------------------------------------------------------------- /Program/Units/unit_Logger.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Units/unit_Logger.pas -------------------------------------------------------------------------------- /Components/MHLComponents/MHLComponents.dproj.local: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /Installer/Images/SetupModern20.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Installer/Images/SetupModern20.bmp -------------------------------------------------------------------------------- /Installer/Images/SetupModernSmall20.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Installer/Images/SetupModernSmall20.bmp -------------------------------------------------------------------------------- /Program/Resources/Images/16x16/clear.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/16x16/clear.bmp -------------------------------------------------------------------------------- /Program/Resources/Images/16x16/help.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/16x16/help.png -------------------------------------------------------------------------------- /Program/Resources/Images/16x16/list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/16x16/list.png -------------------------------------------------------------------------------- /Program/Resources/Images/16x16/read.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/16x16/read.png -------------------------------------------------------------------------------- /Program/Resources/Images/16x16/toXml.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/16x16/toXml.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/en1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/en1.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/en2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/en2.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/en3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/en3.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/en4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/en4.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/en5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/en5.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/en6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/en6.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/en7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/en7.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/en8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/en8.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/help.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/help.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/read1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/read1.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/read2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/read2.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/read3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/read3.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/read4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/read4.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/read5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/read5.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/ru1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/ru1.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/ru10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/ru10.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/ru2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/ru2.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/ru3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/ru3.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/ru4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/ru4.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/ru5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/ru5.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/ru6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/ru6.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/ru7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/ru7.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/ru9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/ru9.png -------------------------------------------------------------------------------- /Components/MHLComponents/MHLComponents.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Components/MHLComponents/MHLComponents.res -------------------------------------------------------------------------------- /Program/Resources/Images/16x16/fromXml.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/16x16/fromXml.png -------------------------------------------------------------------------------- /Program/Resources/Images/16x16/tools1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/16x16/tools1.png -------------------------------------------------------------------------------- /Program/Resources/Images/16x16/tools2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/16x16/tools2.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/newCol.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/newCol.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/search.png -------------------------------------------------------------------------------- /Program/Resources/Images/splashScreen9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/splashScreen9.png -------------------------------------------------------------------------------- /Components/MHLComponents/MHLButtonedEdit.RES: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Components/MHLComponents/MHLButtonedEdit.RES -------------------------------------------------------------------------------- /Components/MHLComponents/MHLComponents.otares: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Components/MHLComponents/MHLComponents.otares -------------------------------------------------------------------------------- /Components/MHLComponents/MHLSimplePanel.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Components/MHLComponents/MHLSimplePanel.pas -------------------------------------------------------------------------------- /Program/Resources/Images/16x16/download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/16x16/download.png -------------------------------------------------------------------------------- /Program/Resources/Images/16x16/editBook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/16x16/editBook.png -------------------------------------------------------------------------------- /Program/Resources/Images/16x16/epub_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/16x16/epub_icon.png -------------------------------------------------------------------------------- /Program/Resources/Images/16x16/file_txt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/16x16/file_txt.png -------------------------------------------------------------------------------- /Program/Resources/Images/16x16/local-read.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/16x16/local-read.png -------------------------------------------------------------------------------- /Program/Resources/Images/16x16/mobi_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/16x16/mobi_icon.png -------------------------------------------------------------------------------- /Program/Resources/Images/16x16/runScript.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/16x16/runScript.png -------------------------------------------------------------------------------- /Program/Resources/Images/16x16/selectAll.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/16x16/selectAll.png -------------------------------------------------------------------------------- /Program/Resources/Images/16x16/settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/16x16/settings.png -------------------------------------------------------------------------------- /Program/Resources/Images/16x16/star_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/16x16/star_small.png -------------------------------------------------------------------------------- /Program/Resources/Images/16x16/statistic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/16x16/statistic.png -------------------------------------------------------------------------------- /Program/Resources/Images/16x16/toDevice.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/16x16/toDevice.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/bookList1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/bookList1.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/chekAll1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/chekAll1.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/chekAll2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/chekAll2.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/chekAll4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/chekAll4.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/download.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/download_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/download_2.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/infoPanel1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/infoPanel1.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/infoPanel2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/infoPanel2.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/infoPanel3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/infoPanel3.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/infopanel5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/infopanel5.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/settings1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/settings1.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/settings12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/settings12.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/settings2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/settings2.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/settings3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/settings3.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/settings4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/settings4.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/settings6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/settings6.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/settings7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/settings7.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/settings8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/settings8.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/tableView1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/tableView1.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/treeView1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/treeView1.png -------------------------------------------------------------------------------- /Utils/MHLSQLiteConsole/MHLSQLiteConsole.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Utils/MHLSQLiteConsole/MHLSQLiteConsole.res -------------------------------------------------------------------------------- /Components/MHLComponents/MHLComponents_Icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Components/MHLComponents/MHLComponents_Icon.ico -------------------------------------------------------------------------------- /Program/Resources/Images/16x16/listRefresh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/16x16/listRefresh.png -------------------------------------------------------------------------------- /Program/Resources/Images/16x16/local-review.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/16x16/local-review.png -------------------------------------------------------------------------------- /Program/Resources/Images/16x16/local-unread.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/16x16/local-unread.png -------------------------------------------------------------------------------- /Program/Resources/Images/16x16/remote-read.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/16x16/remote-read.png -------------------------------------------------------------------------------- /Program/Resources/Images/16x16/toFavorites1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/16x16/toFavorites1.png -------------------------------------------------------------------------------- /Program/Resources/Images/16x16/toFavorites2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/16x16/toFavorites2.png -------------------------------------------------------------------------------- /Program/Resources/Images/16x16/toFavorites3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/16x16/toFavorites3.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/en1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/en1.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/en2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/en2.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/en3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/en3.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/en4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/en4.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/en5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/en5.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/en6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/en6.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/en7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/en7.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/ru1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/ru1.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/ru2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/ru2.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/ru3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/ru3.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/ru4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/ru4.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/ru5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/ru5.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/ru6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/ru6.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/ru7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/ru7.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/ru9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/ru9.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/downloaded_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/downloaded_2.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/downloaded_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/downloaded_3.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/downloaded_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/downloaded_4.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/local_files.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/local_files.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/refreshList1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/refreshList1.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/refreshList2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/refreshList2.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/sndToDevice1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/sndToDevice1.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/sndToDevice2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/sndToDevice2.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/toFavorites1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/toFavorites1.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/toFavorites2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/toFavorites2.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/toFavorites3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/toFavorites3.png -------------------------------------------------------------------------------- /Components/MHLComponents/MHLComponents_Icon1.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Components/MHLComponents/MHLComponents_Icon1.ico -------------------------------------------------------------------------------- /Program/Resources/Images/16x16/book_finished.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/16x16/book_finished.png -------------------------------------------------------------------------------- /Program/Resources/Images/16x16/fromFavorites1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/16x16/fromFavorites1.png -------------------------------------------------------------------------------- /Program/Resources/Images/16x16/fromFavorites2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/16x16/fromFavorites2.png -------------------------------------------------------------------------------- /Program/Resources/Images/16x16/fromFavorites3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/16x16/fromFavorites3.png -------------------------------------------------------------------------------- /Program/Resources/Images/16x16/locateAuthor1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/16x16/locateAuthor1.png -------------------------------------------------------------------------------- /Program/Resources/Images/16x16/locateAuthor2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/16x16/locateAuthor2.png -------------------------------------------------------------------------------- /Program/Resources/Images/16x16/locateAuthor3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/16x16/locateAuthor3.png -------------------------------------------------------------------------------- /Program/Resources/Images/16x16/locateAuthor4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/16x16/locateAuthor4.png -------------------------------------------------------------------------------- /Program/Resources/Images/16x16/refreshLibList.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/16x16/refreshLibList.png -------------------------------------------------------------------------------- /Program/Resources/Images/16x16/remote-review.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/16x16/remote-review.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/deletedBooks1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/deletedBooks1.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/deletedBooks2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/deletedBooks2.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/deletedBooks3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/deletedBooks3.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/newCol.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/newCol.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/read1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/read1.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/read2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/read2.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/read3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/read3.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/read4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/read4.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/read5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/read5.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/search.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/fromDownloads.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/fromDownloads.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/fromFavorites1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/fromFavorites1.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/fromFavorites2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/fromFavorites2.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/fromFavorites3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/fromFavorites3.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/fromFavorites4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/fromFavorites4.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/fromFavorites5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/fromFavorites5.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/fromFavorites6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/fromFavorites6.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/sndToDevice_fb2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/sndToDevice_fb2.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/sndToDevice_lrf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/sndToDevice_lrf.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/sndToDevice_pdf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/sndToDevice_pdf.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/sndToDevice_txt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/sndToDevice_txt.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/sndToDevice_zip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/sndToDevice_zip.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/toDownloadList.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/toDownloadList.png -------------------------------------------------------------------------------- /Program/Resources/Images/16x16/local-read-review.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/16x16/local-read-review.png -------------------------------------------------------------------------------- /Program/Resources/Images/16x16/refreshGenresList.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/16x16/refreshGenresList.png -------------------------------------------------------------------------------- /Program/Resources/Images/16x16/removeCollection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/16x16/removeCollection.png -------------------------------------------------------------------------------- /Program/Resources/Images/16x16/selectCollection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/16x16/selectCollection.png -------------------------------------------------------------------------------- /Program/Resources/Images/16x16/star_small_empty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/16x16/star_small_empty.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/chekAll1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/chekAll1.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/chekAll2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/chekAll2.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/chekAll4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/chekAll4.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/dis_read.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/dis_read.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/download.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/selectCollection1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/selectCollection1.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/sndToDevice_epub.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/sndToDevice_epub.png -------------------------------------------------------------------------------- /Program/Resources/Images/16x16/collectionSettings1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/16x16/collectionSettings1.png -------------------------------------------------------------------------------- /Program/Resources/Images/16x16/collectionSettings2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/16x16/collectionSettings2.png -------------------------------------------------------------------------------- /Program/Resources/Images/16x16/collectionSettings3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/16x16/collectionSettings3.png -------------------------------------------------------------------------------- /Program/Resources/Images/16x16/collectionSettings4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/16x16/collectionSettings4.png -------------------------------------------------------------------------------- /Program/Resources/Images/16x16/remote-read-review.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/16x16/remote-read-review.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/bookList1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/bookList1.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/download_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/download_2.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/infoPanel1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/infoPanel1.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/infoPanel2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/infoPanel2.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/infoPanel3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/infoPanel3.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/infopanel5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/infopanel5.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/local_files.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/local_files.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/settings1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/settings1.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/settings12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/settings12.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/settings2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/settings2.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/settings3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/settings3.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/settings4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/settings4.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/settings6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/settings6.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/settings7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/settings7.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/settings8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/settings8.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/tableView1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/tableView1.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/treeView1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/treeView1.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/newCollectionWizard1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/newCollectionWizard1.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/newCollectionWizard2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/newCollectionWizard2.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/update_collections.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/update_collections.png -------------------------------------------------------------------------------- /Components/MHLComponents/Resources/blue-document-code.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Components/MHLComponents/Resources/blue-document-code.png -------------------------------------------------------------------------------- /Program/Resources/Images/16x16/copyBookToCollection1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/16x16/copyBookToCollection1.png -------------------------------------------------------------------------------- /Program/Resources/Images/16x16/copyBookToCollection2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/16x16/copyBookToCollection2.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/deletedBooks1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/deletedBooks1.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/deletedBooks2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/deletedBooks2.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/deletedBooks3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/deletedBooks3.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/downloaded_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/downloaded_2.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/downloaded_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/downloaded_3.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/downloaded_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/downloaded_4.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/refreshList1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/refreshList1.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/refreshList2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/refreshList2.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/sndToDevice1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/sndToDevice1.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/sndToDevice2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/sndToDevice2.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/toFavorites1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/toFavorites1.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/toFavorites2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/toFavorites2.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/toFavorites3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/toFavorites3.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/fromFavorites1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/fromFavorites1.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/fromFavorites2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/fromFavorites2.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/fromFavorites3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/fromFavorites3.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/fromFavorites4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/fromFavorites4.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/fromFavorites5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/fromFavorites5.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/fromFavorites6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/fromFavorites6.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/sndToDevice_fb2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/sndToDevice_fb2.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/sndToDevice_lrf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/sndToDevice_lrf.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/sndToDevice_txt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/sndToDevice_txt.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/sndToDevice_zip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/sndToDevice_zip.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/toDownloadList.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/toDownloadList.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/selectCollection1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/selectCollection1.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/newCollectionWizard1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/newCollectionWizard1.png -------------------------------------------------------------------------------- /Program/Resources/Images/32x32/disabled/newCollectionWizard2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dicur3x/MyHomeLib/HEAD/Program/Resources/Images/32x32/disabled/newCollectionWizard2.png -------------------------------------------------------------------------------- /Program/Wizards/Base/frame_WizardPageBase.dfm: -------------------------------------------------------------------------------- 1 | object WizardPageBase: TWizardPageBase 2 | Left = 0 3 | Top = 0 4 | Width = 320 5 | Height = 240 6 | Enabled = False 7 | TabOrder = 0 8 | end 9 | -------------------------------------------------------------------------------- /Program/MyhomeLib.stat: -------------------------------------------------------------------------------- 1 | [Stats] 2 | EditorSecs=2819 3 | DesignerSecs=328 4 | InspectorSecs=117 5 | CompileSecs=297239 6 | OtherSecs=1171 7 | StartTime=3/11/2019 2:00:41 PM 8 | RealKeys=0 9 | EffectiveKeys=0 10 | DebugSecs=11654 11 | -------------------------------------------------------------------------------- /Components/MHLComponents/MHLComponents.stat: -------------------------------------------------------------------------------- 1 | [Stats] 2 | EditorSecs=289 3 | DesignerSecs=1 4 | InspectorSecs=1 5 | CompileSecs=90613 6 | OtherSecs=726 7 | StartTime=1/3/2019 12:51:59 PM 8 | RealKeys=0 9 | EffectiveKeys=0 10 | DebugSecs=1 11 | -------------------------------------------------------------------------------- /Program/MHL.groupproj.local: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Program/ImportImpl/frm_BaseProgressForm.dfm: -------------------------------------------------------------------------------- 1 | object ProgressFormBase: TProgressFormBase 2 | Left = 0 3 | Top = 0 4 | Caption = 'ProgressFormBase' 5 | ClientHeight = 283 6 | ClientWidth = 414 7 | Color = clBtnFace 8 | Font.Charset = DEFAULT_CHARSET 9 | Font.Color = clWindowText 10 | Font.Height = -11 11 | Font.Name = 'Tahoma' 12 | Font.Style = [] 13 | OnCloseQuery = FormCloseQuery 14 | OnShow = FormShow 15 | TextHeight = 13 16 | end 17 | -------------------------------------------------------------------------------- /Program/UtilsImpl/frm_SyncOnLineProgressForm.pas: -------------------------------------------------------------------------------- 1 | unit frm_SyncOnLineProgressForm; 2 | 3 | interface 4 | 5 | uses 6 | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 7 | Dialogs, frm_ImportProgressForm, StdCtrls, ComCtrls; 8 | 9 | type 10 | TSyncOnLineProgressForm = class(TImportProgressForm) 11 | private 12 | public 13 | end; 14 | 15 | var 16 | SyncOnLineProgressForm: TSyncOnLineProgressForm; 17 | 18 | implementation 19 | 20 | {$R *.dfm} 21 | 22 | end. 23 | -------------------------------------------------------------------------------- /Program/ImportImpl/frm_ExportProgressForm.dfm: -------------------------------------------------------------------------------- 1 | inherited ExportProgressForm: TExportProgressForm 2 | Caption = #1069#1082#1089#1087#1086#1088#1090 3 | StyleElements = [seFont, seClient, seBorder] 4 | TextHeight = 13 5 | inherited txtComment: TLabel 6 | Caption = #1069#1082#1089#1087#1086#1088#1090#1080#1088#1091#1077#1084'...' 7 | StyleElements = [seFont, seClient, seBorder] 8 | end 9 | inherited btnCancel: TButton 10 | Left = 261 11 | Caption = #1054#1090#1084#1077#1085#1072 12 | end 13 | end 14 | -------------------------------------------------------------------------------- /Utils/MHLSQLiteConsole/MHLSQLiteConsole.dpr: -------------------------------------------------------------------------------- 1 | program MHLSQLiteConsole; 2 | 3 | uses 4 | Forms, 5 | MainForm in 'MainForm.pas' {frmMain}, 6 | SQLite3 in '..\..\Program\DAO\SQLite\Lib\SQLite3.pas', 7 | SQLiteWrap in '..\..\Program\DAO\SQLite\Lib\SQLiteWrap.pas', 8 | SQLite3UDF in '..\..\Program\DAO\SQLite\Lib\SQLite3UDF.pas'; 9 | 10 | {$R *.res} 11 | 12 | begin 13 | Application.Initialize; 14 | Application.MainFormOnTaskbar := True; 15 | Application.CreateForm(TfrmMain, frmMain); 16 | Application.Run; 17 | end. 18 | -------------------------------------------------------------------------------- /Program/UtilsImpl/frm_SyncOnLineProgressForm.dfm: -------------------------------------------------------------------------------- 1 | inherited SyncOnLineProgressForm: TSyncOnLineProgressForm 2 | Caption = #1057#1080#1085#1093#1088#1086#1085#1080#1079#1072#1094#1080#1103' '#1082#1086#1083#1083#1077#1082#1094#1080#1080 3 | StyleElements = [seFont, seClient, seBorder] 4 | TextHeight = 13 5 | inherited txtComment: TLabel 6 | Caption = #1057#1082#1072#1085#1080#1088#1091#1077#1084'...' 7 | StyleElements = [seFont, seClient, seBorder] 8 | end 9 | inherited btnCancel: TButton 10 | Left = 265 11 | ExplicitLeft = 265 12 | end 13 | end 14 | -------------------------------------------------------------------------------- /Program/UtilsImpl/frm_ExportToDeviceProgressForm.pas: -------------------------------------------------------------------------------- 1 | unit frm_ExportToDeviceProgressForm; 2 | 3 | interface 4 | 5 | uses 6 | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 7 | Dialogs, frm_ImportProgressForm, StdCtrls, ComCtrls; 8 | 9 | type 10 | TExportToDeviceProgressForm = class(TImportProgressForm) 11 | private 12 | { Private declarations } 13 | public 14 | { Public declarations } 15 | end; 16 | 17 | var 18 | ExportToDeviceProgressForm: TExportToDeviceProgressForm; 19 | 20 | implementation 21 | 22 | {$R *.dfm} 23 | 24 | end. 25 | -------------------------------------------------------------------------------- /Program/MyhomeLib.dproj.local: -------------------------------------------------------------------------------- 1 | 2 | 3 | Debug 4 | 5 | 1899.12.30 00:00:00.000.701,C:\Users\cloud\IdeaProjects\MyHomeLib\Program\DwnldImpl\unit_DownloadManagerThread.pas= 6 | 1899.12.30 00:00:00.000.753,C:\Users\cloud\IdeaProjects\MyHomeLib\Program\UtilsImpl\unit_libupdateThread.pas= 7 | 1899.12.30 00:00:00.000.459,C:\Users\cloud\IdeaProjects\MyHomeLib\Program\DwnldImpl\unit_Downloader.pas= 8 | 9 | 10 | -------------------------------------------------------------------------------- /Program/Wizards/NewCollection/frm_NewCollectionWizard.dfm: -------------------------------------------------------------------------------- 1 | inherited NewCollectionWizard: TNewCollectionWizard 2 | Caption = 'MyHomeLib - '#1052#1072#1089#1090#1077#1088' '#1089#1086#1079#1076#1072#1085#1080#1103' '#1082#1086#1083#1083#1077#1082#1094#1080#1080 3 | ClientWidth = 524 4 | ExplicitWidth = 536 5 | TextHeight = 13 6 | inherited pnButtons: TPanel 7 | Width = 524 8 | ExplicitWidth = 520 9 | inherited btnCancel: TButton 10 | Left = 439 11 | ExplicitLeft = 439 12 | end 13 | inherited btnForward: TButton 14 | Left = 322 15 | ExplicitLeft = 318 16 | end 17 | inherited btnBackward: TButton 18 | Left = 241 19 | ExplicitLeft = 237 20 | end 21 | end 22 | end 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # MyHomeLib 2 | MyHomeLib-компьютерная программа для управления домашней библиотекой электронных книг. 3 | MyHomeLib может использоваться не только для каталогизации коллекции файлов 4 | с электронными книгами, но и как клиент для работы с библиотекой Либрусек 5 | и другими библиотеками на движке Либрусек (Флибуста и другими подобными). 6 | 7 | Build: 8 | 1. Delphi Free Community Edition (i used 12 first). 9 | 2. FastMM5: https://github.com/pleriche/FastMM5 10 | 3. VirtualTreeView (from GetIt Package Manager, it's in IDE tools) 11 | 12 | Todo: 13 | 1. Open Program/MHL.groupproj 14 | 2. Build and install MHL components 15 | 3. Project -> preferences -> Delphi Compiler -> Path -> 16 | Add paths to FastMM5\ folder and %project%\Components\MHLComponents\ 17 | 4. Build Myhomelib.exe -------------------------------------------------------------------------------- /Program/Forms/frm_info_popup.dfm: -------------------------------------------------------------------------------- 1 | object frmInfoPopup: TfrmInfoPopup 2 | Left = 0 3 | Top = 0 4 | BorderStyle = bsNone 5 | Caption = 'MyHomeLib' 6 | ClientHeight = 62 7 | ClientWidth = 294 8 | Color = clBtnFace 9 | Font.Charset = DEFAULT_CHARSET 10 | Font.Color = clWindowText 11 | Font.Height = -11 12 | Font.Name = 'Tahoma' 13 | Font.Style = [] 14 | Position = poMainFormCenter 15 | TextHeight = 13 16 | object lblText: TLabel 17 | Left = 0 18 | Top = 0 19 | Width = 294 20 | Height = 62 21 | Align = alClient 22 | Alignment = taCenter 23 | Caption = #1087#1088#1086#1074#1077#1088#1082#1072' '#1086#1073#1085#1086#1074#1083#1077#1085#1080#1081 24 | Layout = tlCenter 25 | ExplicitWidth = 111 26 | ExplicitHeight = 13 27 | end 28 | end 29 | -------------------------------------------------------------------------------- /Program/UtilsImpl/frm_ExportToDeviceProgressForm.dfm: -------------------------------------------------------------------------------- 1 | inherited ExportToDeviceProgressForm: TExportToDeviceProgressForm 2 | Caption = #1069#1082#1089#1087#1086#1088#1090' '#1085#1072' '#1091#1089#1090#1088#1086#1081#1089#1090#1074#1086 3 | ClientHeight = 87 4 | ClientWidth = 370 5 | StyleElements = [seFont, seClient, seBorder] 6 | ExplicitWidth = 386 7 | ExplicitHeight = 126 8 | TextHeight = 13 9 | inherited txtComment: TLabel 10 | Width = 344 11 | Caption = #1069#1082#1089#1087#1086#1088#1090#1080#1088#1091#1077#1084'...' 12 | StyleElements = [seFont, seClient, seBorder] 13 | ExplicitWidth = 344 14 | end 15 | inherited ProgressBar: TProgressBar 16 | Width = 350 17 | ExplicitWidth = 350 18 | end 19 | inherited btnCancel: TButton 20 | Top = 52 21 | ExplicitTop = 52 22 | end 23 | end 24 | -------------------------------------------------------------------------------- /Program/MyhomeLibResource.rc: -------------------------------------------------------------------------------- 1 | smallStar RCData "Resources\\Images\\16x16\\star_small.png" 2 | smallStarEmpty RCData "Resources\\Images\\16x16\\star_small_empty.png" 3 | CreateCollectionDB_SQLite RCData "DAO\\SQLite\\Resources\\CreateCollectionDB_SQLite.sql" 4 | CreateSystemDB_SQLite RCData "DAO\\SQLite\\Resources\\CreateSystemDB_SQLite.sql" 5 | bookRemoteReview RCData "Resources\\Images\\16x16\\remote-review.png" 6 | bookLocalRead RCData "Resources\\Images\\16x16\\local-read.png" 7 | bookLocalReadReview RCData "Resources\\Images\\16x16\\local-read-review.png" 8 | bookLocalReview RCData "Resources\\Images\\16x16\\local-review.png" 9 | bookRemoteRead RCData "Resources\\Images\\16x16\\remote-read.png" 10 | bookRemoteReadReview RCData "Resources\\Images\\16x16\\remote-read-review.png" 11 | bookLocalUnread RCData "Resources\\Images\\16x16\\local-unread.png" 12 | RecreateCollectionTables RCDATA "DAO\\SQLite\\Resources\\RecreateCollectionTables_SQLite.sql" 13 | -------------------------------------------------------------------------------- /Utils/MHLSQLiteExt/MHLSQLiteExt.sln: -------------------------------------------------------------------------------- 1 | 2 | Microsoft Visual Studio Solution File, Format Version 11.00 3 | # Visual C++ Express 2010 4 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MHLSQLiteExt", "MHLSQLiteExt.vcxproj", "{E4B23721-9550-4116-B5D1-450E61D6967C}" 5 | EndProject 6 | Global 7 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 8 | Debug|Win32 = Debug|Win32 9 | Release|Win32 = Release|Win32 10 | EndGlobalSection 11 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 12 | {E4B23721-9550-4116-B5D1-450E61D6967C}.Debug|Win32.ActiveCfg = Debug|Win32 13 | {E4B23721-9550-4116-B5D1-450E61D6967C}.Debug|Win32.Build.0 = Debug|Win32 14 | {E4B23721-9550-4116-B5D1-450E61D6967C}.Release|Win32.ActiveCfg = Release|Win32 15 | {E4B23721-9550-4116-B5D1-450E61D6967C}.Release|Win32.Build.0 = Release|Win32 16 | EndGlobalSection 17 | GlobalSection(SolutionProperties) = preSolution 18 | HideSolutionNode = FALSE 19 | EndGlobalSection 20 | EndGlobal 21 | -------------------------------------------------------------------------------- /Program/Forms/frm_info_popup.pas: -------------------------------------------------------------------------------- 1 | (* ***************************************************************************** 2 | * 3 | * MyHomeLib 4 | * 5 | * Copyright (C) 2008-2023 Oleksiy Penkov (aka Koreec) 6 | * 7 | * Authors Oleksiy Penkov oleksiy.penkov@gmail.com 8 | * Nick Rymanov nrymanov@gmail.com 9 | * Created 20.08.2008 10 | * Description 11 | * 12 | * $Id: frm_info_popup.pas 543 2010-07-29 06:34:09Z nrymanov@gmail.com $ 13 | * 14 | * History 15 | * 16 | ****************************************************************************** *) 17 | 18 | unit frm_info_popup; 19 | 20 | interface 21 | 22 | uses 23 | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 24 | Dialogs, StdCtrls, ExtCtrls; 25 | 26 | type 27 | TfrmInfoPopup = class(TForm) 28 | lblText: TLabel; 29 | private 30 | 31 | public 32 | 33 | end; 34 | 35 | var 36 | frmInfoPopup: TfrmInfoPopup; 37 | 38 | implementation 39 | 40 | {$R *.dfm} 41 | 42 | end. 43 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 Oleksiy Penkov 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Program/ImportImpl/frm_ExportProgressForm.pas: -------------------------------------------------------------------------------- 1 | (* ***************************************************************************** 2 | * 3 | * MyHomeLib 4 | * 5 | * Copyright (C) 2008-2023 Oleksiy Penkov (aka Koreec) 6 | * 7 | * Author(s) Oleksiy Penkov oleksiy.penkov@gmail.com 8 | * Nick Rymanov nrymanov@gmail.com 9 | * Created 10 | * Description 11 | * 12 | * $Id: frm_ExportProgressForm.pas 543 2010-07-29 06:34:09Z nrymanov@gmail.com $ 13 | * 14 | * History 15 | * 16 | ****************************************************************************** *) 17 | 18 | unit frm_ExportProgressForm; 19 | 20 | interface 21 | 22 | uses 23 | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 24 | Dialogs, frm_ImportProgressForm, StdCtrls, ComCtrls; 25 | 26 | type 27 | TExportProgressForm = class(TImportProgressForm) 28 | private 29 | { Private declarations } 30 | public 31 | { Public declarations } 32 | end; 33 | 34 | var 35 | ExportProgressForm: TExportProgressForm; 36 | 37 | implementation 38 | 39 | {$R *.dfm} 40 | 41 | end. 42 | 43 | -------------------------------------------------------------------------------- /Program/Units/unit_ColorTabs.pas: -------------------------------------------------------------------------------- 1 | unit unit_ColorTabs; 2 | interface 3 | 4 | uses ComCtrls, StdCtrls, Classes, Graphics, Messages, Windows; 5 | 6 | type 7 | TTabSheet = class(ComCtrls.TTabSheet) 8 | private 9 | FColor: TColor; 10 | procedure SetColor(Value: TColor); 11 | procedure WMEraseBkGnd(var Msg: TWMEraseBkGnd); 12 | message WM_ERASEBKGND; 13 | public 14 | constructor Create(aOwner: TComponent); override; 15 | property Color: TColor read FColor write SetColor; 16 | end; 17 | 18 | {...} 19 | implementation 20 | {...} 21 | 22 | constructor TTabSheet.Create(aOwner: TComponent); 23 | begin 24 | inherited; 25 | FColor := clBtnFace; 26 | end; 27 | 28 | procedure TTabSheet.SetColor(Value: TColor); 29 | begin 30 | if FColor <> Value then 31 | begin 32 | FColor := Value; 33 | Invalidate; 34 | end; 35 | end; 36 | 37 | procedure TTabSheet.WMEraseBkGnd(var Msg: TWMEraseBkGnd); 38 | begin 39 | if FColor = clBtnFace then 40 | inherited 41 | else 42 | begin 43 | Brush.Color := FColor; 44 | Windows.FillRect(Msg.dc, ClientRect, Brush.Handle); 45 | Msg.Result := 1; 46 | end; 47 | end; 48 | 49 | end. 50 | -------------------------------------------------------------------------------- /Installer/Setup_Script_MyHomeLib.iss: -------------------------------------------------------------------------------- 1 | ; **************************************************************************** 2 | ; 3 | ; InnoSetup script for MyHomeLib 4 | ; 5 | ; Copyright: ©2023 Oleksiy Penkov (aka Koreec) 6 | ; 7 | ; Author: Oleksiy Penkov oleksiy.penkov@gmail.com 8 | ; 9 | ; Created 22.05.2023 10 | ; Description 11 | ; 12 | ; 13 | ;***************************************************************************** 14 | 15 | [Setup] 16 | #define SourceFolder = '..\Program\Out\Bin\' 17 | #define AppURL = 'https://github.com/OleksiyPenkov/MyHomeLib' 18 | #define protected Major 19 | #define protected Minor 20 | #define protected Revision 21 | #define protected Build 22 | #define protected MyAppName = 'MyHomeLib' 23 | #define protected AppExeName = MyAppName + '.exe' 24 | #define protected FullSourcePath = SourceFolder + AppExeName 25 | 26 | #define AppVersion GetVersionComponents(FullSourcePath, Major, Minor, Revision, Build) 27 | #define protected ShortVersion = Str(Major) +'.' + Str(Minor) +'.' + Str(Revision) 28 | #define LibFolder = 'x86\' 29 | 30 | OutputBaseFilename = {#'Setup_' + MyAppName + '_' + ShortVersion} 31 | 32 | 33 | #include "common.iss" 34 | -------------------------------------------------------------------------------- /Installer/Setup_Script_MyHomeLib_x64.iss: -------------------------------------------------------------------------------- 1 | ; **************************************************************************** 2 | ; 3 | ; InnoSetup script for MyHomeLib 4 | ; 5 | ; Copyright: ©2023 Oleksiy Penkov (aka Koreec) 6 | ; 7 | ; Author: Oleksiy Penkov oleksiy.penkov@gmail.com 8 | ; 9 | ; Created 22.05.2023 10 | ; Description 11 | ; 12 | ; 13 | ;***************************************************************************** 14 | [Setup] 15 | #define SourceFolder = '..\Program\Out\Bin64\' 16 | #define AppURL = 'https://github.com/OleksiyPenkov/' 17 | #define protected Major 18 | #define protected Minor 19 | #define protected Revision 20 | #define protected Build 21 | #define protected MyAppName = 'MyHomeLib' 22 | #define protected AppExeName = MyAppName + '.exe' 23 | #define protected FullSourcePath = SourceFolder + AppExeName 24 | 25 | #define AppVersion GetVersionComponents(FullSourcePath, Major, Minor, Revision, Build) 26 | #define protected ShortVersion = Str(Major) +'.' + Str(Minor) +'.' + Str(Revision) 27 | #define LibFolder = 'x64\' 28 | 29 | OutputBaseFilename = {#'Setup_' + MyAppName + '_' + ShortVersion + '_x64'} 30 | ArchitecturesInstallIn64BitMode = x64 31 | 32 | #include "common.iss" 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /Program/Forms/frm_splash.pas: -------------------------------------------------------------------------------- 1 | (* ***************************************************************************** 2 | * 3 | * MyHomeLib 4 | * 5 | * Copyright (C) 2008-2023 Oleksiy Penkov (aka Koreec) 6 | * 7 | * Authors Oleksiy Penkov oleksiy.penkov@gmail.com 8 | * Nick Rymanov nrymanov@gmail.com 9 | * Created 20.08.2008 10 | * Description 11 | * 12 | * $Id: frm_splash.pas 916 2010-11-17 08:19:10Z koreec $ 13 | * 14 | * History 15 | * 16 | ****************************************************************************** *) 17 | 18 | unit frm_splash; 19 | 20 | interface 21 | 22 | uses 23 | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 24 | Dialogs, ExtCtrls, StdCtrls, jpeg, pngimage; 25 | 26 | type 27 | TfrmSplash = class(TForm) 28 | Image1: TImage; 29 | lblState: TLabel; 30 | lblVersion: TLabel; 31 | procedure FormCreate(Sender: TObject); 32 | private 33 | public 34 | end; 35 | 36 | var 37 | frmSplash: TfrmSplash; 38 | 39 | implementation 40 | 41 | {$R *.dfm} 42 | 43 | procedure TfrmSplash.FormCreate(Sender: TObject); 44 | begin 45 | {$IFDEF WIN64} 46 | lblVersion.Caption := lblVersion.Caption + ' x64'; 47 | {$ENDIF} 48 | end; 49 | 50 | end. 51 | -------------------------------------------------------------------------------- /Program/ImportImpl/frm_ImportProgressForm.dfm: -------------------------------------------------------------------------------- 1 | inherited ImportProgressForm: TImportProgressForm 2 | BorderStyle = bsDialog 3 | Caption = #1048#1084#1087#1086#1088#1090 4 | ClientHeight = 85 5 | ClientWidth = 362 6 | Padding.Left = 10 7 | Padding.Top = 10 8 | Padding.Right = 10 9 | Padding.Bottom = 10 10 | Position = poMainFormCenter 11 | StyleElements = [seFont, seClient, seBorder] 12 | ExplicitWidth = 378 13 | ExplicitHeight = 124 14 | DesignSize = ( 15 | 362 16 | 85) 17 | TextHeight = 13 18 | object txtComment: TLabel 19 | AlignWithMargins = True 20 | Left = 13 21 | Top = 13 22 | Width = 336 23 | Height = 13 24 | Align = alTop 25 | AutoSize = False 26 | Caption = #1048#1084#1087#1086#1088#1090#1080#1088#1091#1077#1084'...' 27 | EllipsisPosition = epEndEllipsis 28 | ExplicitLeft = 10 29 | ExplicitTop = 10 30 | ExplicitWidth = 79 31 | end 32 | object ProgressBar: TProgressBar 33 | Left = 10 34 | Top = 29 35 | Width = 342 36 | Height = 17 37 | Align = alTop 38 | TabOrder = 0 39 | end 40 | object btnCancel: TButton 41 | Left = 257 42 | Top = 50 43 | Width = 75 44 | Height = 25 45 | Anchors = [akRight, akBottom] 46 | Cancel = True 47 | Caption = #1054#1090#1084#1077#1085#1072 48 | Default = True 49 | TabOrder = 1 50 | OnClick = btnCancelClick 51 | end 52 | end 53 | -------------------------------------------------------------------------------- /Utils/MHLSQLiteExt/stdafx.h: -------------------------------------------------------------------------------- 1 | /* ***************************************************************************** 2 | * 3 | * MyHomeLib SQLite extension library 4 | * 5 | * Copyright (C) 2010 Nick Rymanov (nrymanov@gmail.com) 6 | * 7 | * Author(s) Nick Rymanov (nrymanov@gmail.com) 8 | * Created 14.09.2010 9 | * 10 | * This program is free software: you can redistribute it and/or modify 11 | * it under the terms of the GNU General Public License as published by 12 | * the Free Software Foundation, either version 3 of the License, or 13 | * (at your option) any later version. 14 | * 15 | * This program is distributed in the hope that it will be useful, 16 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 | * GNU General Public License for more details. 19 | * 20 | * You should have received a copy of the GNU General Public License 21 | * along with this program. If not, see . 22 | * 23 | * $Id: stdafx.h 757 2010-09-15 05:22:46Z nrymanov@gmail.com $ 24 | * 25 | * History 26 | * 27 | ****************************************************************************** */ 28 | 29 | #pragma once 30 | 31 | #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers 32 | #include 33 | 34 | #include 35 | -------------------------------------------------------------------------------- /Program/Wizards/NewCollection/frame_NCWWelcom.dfm: -------------------------------------------------------------------------------- 1 | inherited frameNCWWelcom: TframeNCWWelcom 2 | inherited Panel8: TPanel 3 | StyleElements = [seFont, seClient, seBorder] 4 | end 5 | inherited Panel9: TPanel 6 | StyleElements = [seFont, seClient, seBorder] 7 | inherited lblTitle: TLabel 8 | Width = 293 9 | Caption = #1044#1086#1073#1088#1086' '#1087#1086#1078#1072#1083#1086#1074#1072#1090#1100' '#1074' '#1084#1072#1089#1090#1077#1088' '#1089#1086#1079#1076#1072#1085#1080#1103' '#13#10#1082#1086#1083#1083#1077#1082#1094#1080#1080' MyHomeLib!' 10 | StyleElements = [seFont, seClient, seBorder] 11 | ExplicitWidth = 264 12 | end 13 | inherited lblSubTitle: TLabel 14 | Width = 286 15 | Height = 30 16 | Caption = 17 | #1069#1090#1086#1090' '#1084#1072#1089#1090#1077#1088' '#1087#1086#1084#1086#1078#1077#1090' '#1074#1072#1084' '#1089#1086#1079#1076#1072#1090#1100' '#1085#1086#1074#1091#1102' '#1080#1083#1080#13#10#1087#1086#1076#1082#1083#1102#1095#1080#1090#1100' '#1089#1091#1097#1077#1089#1090#1074#1091#1102#1097 + 18 | #1091#1102' '#1082#1086#1083#1083#1077#1082#1094#1080#1102'.' 19 | StyleElements = [seFont, seClient, seBorder] 20 | ExplicitTop = 62 21 | ExplicitWidth = 250 22 | ExplicitHeight = 30 23 | end 24 | inherited lblPageHint: TLabel 25 | Width = 286 26 | StyleElements = [seFont, seClient, seBorder] 27 | end 28 | end 29 | end 30 | -------------------------------------------------------------------------------- /Components/MHLComponents/MHLComponents_Register.pas: -------------------------------------------------------------------------------- 1 | (* ***************************************************************************** 2 | * 3 | * MyHomeLib 4 | * 5 | * Copyright (C) 2008-2023 Oleksiy Penkov (aka Koreec) 6 | * 7 | * Author(s) Nick Rymanov (nrymanov@gmail.com) 8 | * Created 15.04.2010 9 | * Description 10 | * 11 | * $Id: MHLComponents_Register.pas 818 2010-09-28 10:23:48Z nrymanov@gmail.com $ 12 | * 13 | * History 14 | * 15 | ****************************************************************************** *) 16 | 17 | unit MHLComponents_Register; 18 | 19 | interface 20 | 21 | uses 22 | Classes; 23 | 24 | procedure Register; 25 | 26 | implementation 27 | 28 | uses 29 | files_list, 30 | unit_StaticTip, 31 | unit_AutoCompleteEdit, 32 | MHLLinkLabel, 33 | MHLSplitter, 34 | BookTreeView, 35 | BookInfoPanel, 36 | MHLSimplePanel, 37 | MHLButtonedEdit, 38 | FBDAuthorTable, 39 | FBDDocument; 40 | 41 | const 42 | PAGE_NAME = 'MHLComponents'; 43 | 44 | procedure Register; 45 | begin 46 | RegisterComponents( 47 | PAGE_NAME, 48 | [ 49 | TFilesList, 50 | TMHLStaticTip, 51 | TMHLAutoCompleteEdit, 52 | TMHLLinkLabel, 53 | TMHLSplitter, 54 | TMHLSimplePanel, 55 | TBookTree, 56 | TInfoPanel, 57 | TMHLButtonedEdit, 58 | TFBDAuthorTable, 59 | TFBDDocument 60 | ] 61 | ); 62 | end; 63 | 64 | end. 65 | 66 | -------------------------------------------------------------------------------- /Program/Wizards/Base/frame_InteriorPageBase.dfm: -------------------------------------------------------------------------------- 1 | inherited InteriorPageBase: TInteriorPageBase 2 | object pnTitle: TPanel 3 | Left = 0 4 | Top = 0 5 | Width = 320 6 | Height = 56 7 | Align = alTop 8 | AutoSize = True 9 | BevelEdges = [beBottom] 10 | BevelKind = bkTile 11 | BevelOuter = bvNone 12 | Color = clWhite 13 | ParentBackground = False 14 | TabOrder = 0 15 | object lblTitle: TLabel 16 | AlignWithMargins = True 17 | Left = 14 18 | Top = 7 19 | Width = 141 20 | Height = 13 21 | Margins.Left = 14 22 | Margins.Top = 7 23 | Margins.Right = 14 24 | Margins.Bottom = 0 25 | Align = alTop 26 | Caption = '<'#1047#1072#1075#1086#1083#1086#1074#1086#1082' '#1089#1090#1088#1072#1085#1080#1094#1099'>' 27 | Font.Charset = DEFAULT_CHARSET 28 | Font.Color = clWindowText 29 | Font.Height = -11 30 | Font.Name = 'Tahoma' 31 | Font.Style = [fsBold] 32 | ParentFont = False 33 | end 34 | object lblSubTitle: TLabel 35 | AlignWithMargins = True 36 | Left = 28 37 | Top = 27 38 | Width = 151 39 | Height = 15 40 | Margins.Left = 28 41 | Margins.Top = 7 42 | Margins.Right = 7 43 | Margins.Bottom = 14 44 | Align = alTop 45 | Caption = '<'#1055#1086#1076#1079#1072#1075#1086#1083#1086#1074#1086#1082' '#1089#1090#1088#1072#1085#1080#1094#1099'>' 46 | end 47 | end 48 | end 49 | -------------------------------------------------------------------------------- /Program/Forms/frm_search.dfm: -------------------------------------------------------------------------------- 1 | object frmBookSearch: TfrmBookSearch 2 | Left = 0 3 | Top = 0 4 | AlphaBlend = True 5 | AlphaBlendValue = 200 6 | BorderStyle = bsNone 7 | Caption = 'frmBookSearch' 8 | ClientHeight = 58 9 | ClientWidth = 258 10 | Color = clBtnFace 11 | CustomTitleBar.Height = 5 12 | Font.Charset = DEFAULT_CHARSET 13 | Font.Color = clWindowText 14 | Font.Height = -11 15 | Font.Name = 'Tahoma' 16 | Font.Style = [] 17 | GlassFrame.Left = 5 18 | GlassFrame.Top = 5 19 | GlassFrame.Right = 5 20 | GlassFrame.Bottom = 5 21 | KeyPreview = True 22 | Position = poMainFormCenter 23 | OnCreate = FormCreate 24 | OnKeyDown = FormKeyDown 25 | TextHeight = 13 26 | object RzPanel1: TMHLSimplePanel 27 | Left = 0 28 | Top = 0 29 | Width = 258 30 | Height = 58 31 | Align = alClient 32 | BorderWidth = 5 33 | TabOrder = 0 34 | object Label1: TLabel 35 | AlignWithMargins = True 36 | Left = 8 37 | Top = 8 38 | Width = 242 39 | Height = 13 40 | Align = alTop 41 | Caption = #1055#1086#1080#1089#1082' '#1087#1086' '#1085#1072#1079#1074#1072#1085#1080#1102 42 | ExplicitWidth = 98 43 | end 44 | object edText: TEdit 45 | AlignWithMargins = True 46 | Left = 8 47 | Top = 27 48 | Width = 242 49 | Height = 21 50 | Align = alTop 51 | TabOrder = 0 52 | OnChange = edTextChange 53 | OnKeyDown = edTextKeyDown 54 | end 55 | end 56 | end 57 | -------------------------------------------------------------------------------- /Program/Wizards/Base/frame_DecorativePageBase.pas: -------------------------------------------------------------------------------- 1 | {******************************************************************************} 2 | { } 3 | { MyHomeLib } 4 | { } 5 | { Version 0.9 } 6 | { 20.08.2008 } 7 | { Copyright (c) Oleksiy Penkov oleksiy.penkov@gmail.com } 8 | { } 9 | { @author Nick Rymanov nrymanov@gmail.com } 10 | { } 11 | {******************************************************************************} 12 | 13 | unit frame_DecorativePageBase; 14 | 15 | interface 16 | 17 | uses 18 | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 19 | Dialogs, StdCtrls, ExtCtrls, frame_WizardPageBase; 20 | 21 | type 22 | TDecorativePageBase = class(TWizardPageBase) 23 | Panel8: TPanel; 24 | Panel9: TPanel; 25 | lblTitle: TLabel; 26 | lblSubTitle: TLabel; 27 | lblPageHint: TLabel; 28 | private 29 | public 30 | end; 31 | 32 | implementation 33 | 34 | {$R *.dfm} 35 | 36 | { TDecorativePageBase } 37 | 38 | end. 39 | 40 | -------------------------------------------------------------------------------- /Program/Wizards/NewCollection/frame_NCWFinish.dfm: -------------------------------------------------------------------------------- 1 | inherited frameNCWFinish: TframeNCWFinish 2 | inherited Panel8: TPanel 3 | StyleElements = [seFont, seClient, seBorder] 4 | end 5 | inherited Panel9: TPanel 6 | StyleElements = [seFont, seClient, seBorder] 7 | inherited lblTitle: TLabel 8 | Width = 293 9 | Caption = #1052#1072#1089#1090#1077#1088' '#1089#1086#1079#1076#1072#1085#1080#1103' '#1082#1086#1083#1083#1077#1082#1094#1080#1081' '#1091#1089#1087#1077#1096#1085#1086' '#1079#1072#1074#1077#1088#1096#1080#1083' '#1088#1072#1073#1086#1090#1091'.' 10 | StyleElements = [seFont, seClient, seBorder] 11 | ExplicitWidth = 258 12 | end 13 | inherited lblSubTitle: TLabel 14 | Width = 286 15 | Height = 30 16 | Caption = 17 | #1042#1099' '#1084#1086#1078#1077#1090#1077' '#1085#1072#1095#1072#1090#1100' '#1080#1089#1087#1086#1083#1100#1079#1086#1074#1072#1090#1100' '#1085#1086#1074#1091#1102' '#1082#1086#1083#1083#1077#1082#1094#1080#1102' '#1089#1088#1072#1079#1091' '#1087#1086#1089#1083#1077' '#1079#1072#1082#1088#1099#1090 + 18 | #1080#1103' '#1101#1090#1086#1075#1086' '#1084#1072#1089#1090#1077#1088#1072'.' 19 | StyleElements = [seFont, seClient, seBorder] 20 | ExplicitTop = 62 21 | ExplicitWidth = 284 22 | ExplicitHeight = 30 23 | end 24 | inherited lblPageHint: TLabel 25 | Width = 286 26 | Caption = '' 27 | StyleElements = [seFont, seClient, seBorder] 28 | ExplicitWidth = 3 29 | end 30 | end 31 | end 32 | -------------------------------------------------------------------------------- /Program/ImportImpl/unit_Export.pas: -------------------------------------------------------------------------------- 1 | (* ***************************************************************************** 2 | * 3 | * MyHomeLib 4 | * 5 | * Copyright (C) 2008-2023 Oleksiy Penkov (aka Koreec) 6 | * 7 | * Author(s) Nick Rymanov nrymanov@gmail.com 8 | * Oleksiy Penkov oleksiy.penkov@gmail.com 9 | * Created 22.02.2010 10 | * Description 11 | * 12 | * $Id: unit_Export.pas 821 2010-09-29 05:46:48Z nrymanov@gmail.com $ 13 | * 14 | * History 15 | * NickR 02.03.2010 Код переформатирован 16 | * NickR 08.04.2010 Убраны ненужные зависимости 17 | * 18 | ****************************************************************************** *) 19 | 20 | unit unit_Export; 21 | 22 | interface 23 | 24 | procedure Export2INPX(const CollectionID: Integer; const FileName: string); 25 | 26 | implementation 27 | 28 | uses 29 | Forms, 30 | unit_ExportINPXThread, 31 | frm_ExportProgressForm; 32 | 33 | procedure Export2INPX(const CollectionID: Integer; const FileName: string); 34 | var 35 | worker: TExport2INPXThread; 36 | frmProgress: TExportProgressForm; 37 | begin 38 | worker := TExport2INPXThread.Create(CollectionID, FileName); 39 | try 40 | frmProgress := TExportProgressForm.Create(Application); 41 | try 42 | frmProgress.WorkerThread := worker; 43 | frmProgress.ShowModal; 44 | finally 45 | frmProgress.Free; 46 | end; 47 | finally 48 | worker.Free; 49 | end; 50 | end; 51 | 52 | end. 53 | 54 | -------------------------------------------------------------------------------- /Utils/MHLSQLiteExt/stdafx.cpp: -------------------------------------------------------------------------------- 1 | /* ***************************************************************************** 2 | * 3 | * MyHomeLib SQLite extension library 4 | * 5 | * Copyright (C) 2010 Nick Rymanov (nrymanov@gmail.com) 6 | * 7 | * Author(s) Nick Rymanov (nrymanov@gmail.com) 8 | * Created 14.09.2010 9 | * 10 | * This program is free software: you can redistribute it and/or modify 11 | * it under the terms of the GNU General Public License as published by 12 | * the Free Software Foundation, either version 3 of the License, or 13 | * (at your option) any later version. 14 | * 15 | * This program is distributed in the hope that it will be useful, 16 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 | * GNU General Public License for more details. 19 | * 20 | * You should have received a copy of the GNU General Public License 21 | * along with this program. If not, see . 22 | * 23 | * $Id: stdafx.cpp 757 2010-09-15 05:22:46Z nrymanov@gmail.com $ 24 | * 25 | * History 26 | * 27 | ****************************************************************************** */ 28 | 29 | // stdafx.cpp : source file that includes just the standard includes 30 | // MHLSQLiteExt.pch will be the pre-compiled header 31 | // stdafx.obj will contain the pre-compiled type information 32 | 33 | #include "stdafx.h" 34 | 35 | // TODO: reference any additional headers you need in STDAFX.H 36 | // and not in this file 37 | -------------------------------------------------------------------------------- /Program/Forms/Editors/frm_EditAuthorEx.pas: -------------------------------------------------------------------------------- 1 | (* ***************************************************************************** 2 | * 3 | * MyHomeLib 4 | * 5 | * Copyright (C) 2008-2023 Oleksiy Penkov (aka Koreec) 6 | * 7 | * Authors Oleksiy Penkov oleksiy.penkov@gmail.com 8 | * Nick Rymanov nrymanov@gmail.com 9 | * Created 20.08.2008 10 | * Description 11 | * 12 | * $Id: frm_EditAuthorEx.pas 1029 2011-05-30 07:31:14Z koreec $ 13 | * 14 | * History 15 | * 16 | ****************************************************************************** *) 17 | 18 | unit frm_EditAuthorEx; 19 | 20 | interface 21 | 22 | uses 23 | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 24 | Dialogs, frm_edit_author, StdCtrls, ExtCtrls; 25 | 26 | type 27 | TfrmEditAuthorDataEx = class(TfrmEditAuthorData) 28 | gbAddNew: TGroupBox; 29 | cbAddNew: TCheckBox; 30 | cbSaveLinks: TCheckBox; 31 | private 32 | function GetAddNewState: Boolean; 33 | function GetSaveLinks: Boolean; 34 | public 35 | property AddNew: Boolean read GetAddNewState; 36 | property SaveLinks: Boolean read GetSaveLinks; 37 | end; 38 | 39 | var 40 | frmEditAuthorDataEx: TfrmEditAuthorDataEx; 41 | 42 | implementation 43 | 44 | {$R *.dfm} 45 | 46 | function TfrmEditAuthorDataEx.GetAddNewState: boolean; 47 | begin 48 | Result := cbAddNew.Checked; 49 | end; 50 | 51 | function TfrmEditAuthorDataEx.GetSaveLinks: boolean; 52 | begin 53 | Result := cbSaveLinks.Checked; 54 | end; 55 | 56 | end. 57 | -------------------------------------------------------------------------------- /Utils/MHLSQLiteExt/ReadMe.txt: -------------------------------------------------------------------------------- 1 | /* ***************************************************************************** 2 | * 3 | * MyHomeLib SQLite extension library 4 | * 5 | * Copyright (C) 2010 Nick Rymanov (nrymanov@gmail.com) 6 | * 7 | * Author(s) Nick Rymanov (nrymanov@gmail.com) 8 | * Created 14.09.2010 9 | * 10 | * This program is free software: you can redistribute it and/or modify 11 | * it under the terms of the GNU General Public License as published by 12 | * the Free Software Foundation, either version 3 of the License, or 13 | * (at your option) any later version. 14 | * 15 | * This program is distributed in the hope that it will be useful, 16 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 | * GNU General Public License for more details. 19 | * 20 | * You should have received a copy of the GNU General Public License 21 | * along with this program. If not, see . 22 | * 23 | * $Id: ReadMe.txt 757 2010-09-15 05:22:46Z nrymanov@gmail.com $ 24 | * 25 | * History 26 | * 27 | ****************************************************************************** */ 28 | 29 | Как собрать проект. 30 | 31 | 1. Для сборки проекта используется Microsoft Visual C++ 2010 (Express). 32 | 2. Предварительно скачайте исходные тексты SQLite (http://www.sqlite.org/download.html) в произвольную папку. 33 | 3. Переменная среды SQLITEDIR должна содержать путь к этой папке (set SQLITEDIR=C:\SQLite3\Source). 34 | 4. Откройте проект, установите желаемую конфигурацию и собирайте. 35 | -------------------------------------------------------------------------------- /Program/Wizards/NewCollection/frame_NCWWelcom.pas: -------------------------------------------------------------------------------- 1 | {******************************************************************************} 2 | { } 3 | { MyHomeLib } 4 | { } 5 | { Version 0.9 } 6 | { 20.08.2008 } 7 | { Copyright (c) Oleksiy Penkov oleksiy.penkov@gmail.com } 8 | { } 9 | { @author Nick Rymanov nrymanov@gmail.com } 10 | { } 11 | {******************************************************************************} 12 | 13 | unit frame_NCWWelcom; 14 | 15 | interface 16 | 17 | uses 18 | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 19 | Dialogs, frame_WizardPageBase, frame_DecorativePageBase, StdCtrls, ExtCtrls; 20 | 21 | type 22 | TframeNCWWelcom = class(TDecorativePageBase) 23 | private 24 | { Private declarations } 25 | public 26 | function PageButtons: TWizardButtons; override; 27 | end; 28 | 29 | var 30 | frameNCWWelcom: TframeNCWWelcom; 31 | 32 | implementation 33 | 34 | {$R *.dfm} 35 | 36 | { TframeNCWelcom } 37 | 38 | function TframeNCWWelcom.PageButtons: TWizardButtons; 39 | begin 40 | Result := [wbGoNext, wbCancel]; 41 | end; 42 | 43 | end. 44 | 45 | -------------------------------------------------------------------------------- /Utils/MHLSQLiteExt/dllmain.cpp: -------------------------------------------------------------------------------- 1 | /* ***************************************************************************** 2 | * 3 | * MyHomeLib SQLite extension library 4 | * 5 | * Copyright (C) 2010 Nick Rymanov (nrymanov@gmail.com) 6 | * 7 | * Author(s) Nick Rymanov (nrymanov@gmail.com) 8 | * Created 14.09.2010 9 | * 10 | * This program is free software: you can redistribute it and/or modify 11 | * it under the terms of the GNU General Public License as published by 12 | * the Free Software Foundation, either version 3 of the License, or 13 | * (at your option) any later version. 14 | * 15 | * This program is distributed in the hope that it will be useful, 16 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 | * GNU General Public License for more details. 19 | * 20 | * You should have received a copy of the GNU General Public License 21 | * along with this program. If not, see . 22 | * 23 | * $Id: dllmain.cpp 757 2010-09-15 05:22:46Z nrymanov@gmail.com $ 24 | * 25 | * History 26 | * 27 | ****************************************************************************** */ 28 | 29 | #include "stdafx.h" 30 | 31 | BOOL 32 | APIENTRY 33 | DllMain( 34 | HMODULE hModule, 35 | DWORD ul_reason_for_call, 36 | LPVOID lpReserved 37 | ) 38 | { 39 | switch (ul_reason_for_call) 40 | { 41 | case DLL_PROCESS_ATTACH: 42 | case DLL_THREAD_ATTACH: 43 | case DLL_THREAD_DETACH: 44 | case DLL_PROCESS_DETACH: 45 | break; 46 | } 47 | return TRUE; 48 | } 49 | 50 | -------------------------------------------------------------------------------- /Program/Wizards/NewCollection/frame_NCWFinish.pas: -------------------------------------------------------------------------------- 1 | {******************************************************************************} 2 | { } 3 | { MyHomeLib } 4 | { } 5 | { Version 0.9 } 6 | { 20.08.2008 } 7 | { Copyright (c) Oleksiy Penkov oleksiy.penkov@gmail.com } 8 | { } 9 | { @author Nick Rymanov nrymanov@gmail.com } 10 | { } 11 | {******************************************************************************} 12 | 13 | unit frame_NCWFinish; 14 | 15 | interface 16 | 17 | uses 18 | Windows, 19 | Messages, 20 | Variants, 21 | Classes, 22 | Graphics, 23 | Controls, 24 | Forms, 25 | Dialogs, 26 | frame_WizardPageBase, 27 | frame_DecorativePageBase, 28 | StdCtrls, ExtCtrls; 29 | 30 | type 31 | TframeNCWFinish = class(TDecorativePageBase) 32 | private 33 | { Private declarations } 34 | public 35 | function PageButtons: TWizardButtons; override; 36 | end; 37 | 38 | var 39 | frameNCWFinish: TframeNCWFinish; 40 | 41 | implementation 42 | 43 | {$R *.dfm} 44 | 45 | { TframeNCWFinish } 46 | 47 | function TframeNCWFinish.PageButtons: TWizardButtons; 48 | begin 49 | Result := [wbFinish]; 50 | end; 51 | 52 | end. 53 | 54 | -------------------------------------------------------------------------------- /Program/Units/unit_Messages.pas: -------------------------------------------------------------------------------- 1 | (* ***************************************************************************** 2 | * 3 | * MyHomeLib 4 | * 5 | * Copyright (C) 2008-2023 Oleksiy Penkov (aka Koreec) 6 | * 7 | * Author(s) Nick Rymanov (nrymanov@gmail.com) 8 | * Created 12.02.2010 9 | * Description 10 | * 11 | * $Id: unit_Messages.pas 588 2010-08-20 01:15:40Z eg_ $ 12 | * 13 | * History 14 | * NickR 15.02.2010 Код переформатирован 15 | * 16 | ****************************************************************************** *) 17 | 18 | unit unit_Messages; 19 | 20 | interface 21 | 22 | uses 23 | Windows, 24 | Messages, 25 | unit_Globals; 26 | 27 | const 28 | WM_MHL_BASE = WM_APP + $0500; 29 | 30 | WM_MHL_CHANGELOCALSTATUS = WM_MHL_BASE + 0; 31 | 32 | type 33 | PBookLocalStatus = ^TBookLocalStatus; 34 | TBookLocalStatus = record 35 | BookKey: TBookKey; 36 | LocalStatus: Boolean; 37 | end; 38 | 39 | TLocalStatusChangedMessage = packed record 40 | Msg: Cardinal; 41 | Unused: WPARAM; 42 | Params: PBookLocalStatus; 43 | Result: Longint; 44 | end; 45 | 46 | procedure BookLocalStatusChanged( 47 | const BookKey: TBookKey; 48 | LocalStatus: Boolean 49 | ); 50 | 51 | implementation 52 | 53 | uses 54 | Forms; 55 | 56 | procedure BookLocalStatusChanged( 57 | const BookKey: TBookKey; 58 | LocalStatus: Boolean 59 | ); 60 | var 61 | Param: PBookLocalStatus; 62 | begin 63 | New(Param); 64 | Param^.BookKey := BookKey; 65 | Param^.LocalStatus := LocalStatus; 66 | 67 | PostMessage( 68 | Application.MainFormHandle, 69 | WM_MHL_CHANGELOCALSTATUS, 70 | 0, 71 | LPARAM(Param) 72 | ); 73 | end; 74 | 75 | end. 76 | -------------------------------------------------------------------------------- /Program/Wizards/Base/frm_MHLWizardBase.dfm: -------------------------------------------------------------------------------- 1 | object MHLWizardBase: TMHLWizardBase 2 | Left = 0 3 | Top = 0 4 | HelpContext = 136 5 | BorderStyle = bsDialog 6 | Caption = 'MyHomeLib - '#1052#1072#1089#1090#1077#1088 7 | ClientHeight = 394 8 | ClientWidth = 520 9 | Color = clBtnFace 10 | Font.Charset = DEFAULT_CHARSET 11 | Font.Color = clWindowText 12 | Font.Height = -11 13 | Font.Name = 'Tahoma' 14 | Font.Style = [] 15 | Position = poMainFormCenter 16 | Scaled = False 17 | OnCloseQuery = FormCloseQuery 18 | OnCreate = FormCreate 19 | TextHeight = 13 20 | object pnButtons: TPanel 21 | Left = 0 22 | Top = 353 23 | Width = 520 24 | Height = 41 25 | Align = alBottom 26 | BevelEdges = [beTop] 27 | BevelKind = bkTile 28 | BevelOuter = bvNone 29 | TabOrder = 0 30 | DesignSize = ( 31 | 520 32 | 39) 33 | object btnCancel: TButton 34 | Left = 428 35 | Top = 8 36 | Width = 75 37 | Height = 25 38 | Anchors = [akTop, akRight] 39 | Cancel = True 40 | Caption = #1054#1090#1084#1077#1085#1072 41 | TabOrder = 0 42 | OnClick = OnCancel 43 | end 44 | object btnForward: TButton 45 | Left = 334 46 | Top = 8 47 | Width = 75 48 | Height = 25 49 | Anchors = [akTop, akRight] 50 | Caption = #1042#1087#1077#1088#1105#1076' >' 51 | TabOrder = 1 52 | OnClick = DoChangePage 53 | end 54 | object btnBackward: TButton 55 | Left = 253 56 | Top = 8 57 | Width = 75 58 | Height = 25 59 | Anchors = [akTop, akRight] 60 | Caption = '< '#1053#1072#1079#1072#1076 61 | TabOrder = 2 62 | OnClick = DoChangePage 63 | end 64 | end 65 | end 66 | -------------------------------------------------------------------------------- /Components/MHLComponents/MHLComponents.dpk: -------------------------------------------------------------------------------- 1 | package MHLComponents; 2 | 3 | {$R *.res} 4 | {$IFDEF IMPLICITBUILDING This IFDEF should not be used by users} 5 | {$ALIGN 8} 6 | {$ASSERTIONS ON} 7 | {$BOOLEVAL OFF} 8 | {$DEBUGINFO OFF} 9 | {$EXTENDEDSYNTAX ON} 10 | {$IMPORTEDDATA ON} 11 | {$IOCHECKS ON} 12 | {$LOCALSYMBOLS OFF} 13 | {$LONGSTRINGS ON} 14 | {$OPENSTRINGS ON} 15 | {$OPTIMIZATION ON} 16 | {$OVERFLOWCHECKS OFF} 17 | {$RANGECHECKS OFF} 18 | {$REFERENCEINFO OFF} 19 | {$SAFEDIVIDE OFF} 20 | {$STACKFRAMES OFF} 21 | {$TYPEDADDRESS OFF} 22 | {$VARSTRINGCHECKS ON} 23 | {$WRITEABLECONST OFF} 24 | {$MINENUMSIZE 1} 25 | {$IMAGEBASE $400000} 26 | {$DEFINE RELEASE} 27 | {$ENDIF IMPLICITBUILDING} 28 | {$IMPLICITBUILD ON} 29 | 30 | requires 31 | rtl, 32 | vcl, 33 | xmlrtl, 34 | vclx, 35 | vclimg, 36 | IndyCore, 37 | IndySystem, 38 | IndyProtocols, 39 | soaprtl, 40 | {$IFDEF WIN32} 41 | VirtualTreesDD; 42 | {$ELSE} 43 | VirtualTreesDR; 44 | {$ENDIF} 45 | 46 | contains 47 | unit_StaticTip in 'unit_StaticTip.pas', 48 | files_list in 'files_list.pas', 49 | MHLComponents_Register in 'MHLComponents_Register.pas', 50 | unit_AutoCompleteEdit in 'unit_AutoCompleteEdit.pas', 51 | unit_MHLHelpers in 'unit_MHLHelpers.pas', 52 | fictionbook_21 in 'fictionbook_21.pas', 53 | unit_FB2Utils in 'unit_FB2Utils.pas', 54 | BookInfoPanel in 'BookInfoPanel.pas', 55 | MHLLinkLabel in 'MHLLinkLabel.pas', 56 | MHLSplitter in 'MHLSplitter.pas', 57 | BookTreeView in 'BookTreeView.pas', 58 | MHLSimplePanel in 'MHLSimplePanel.pas', 59 | MHLButtonedEdit in 'MHLButtonedEdit.pas', 60 | FBDDocument in 'FBDDocument.pas', 61 | fbd_xml in 'fbd_xml.pas', 62 | FBDAuthorTable in 'FBDAuthorTable.pas' {frmEditAuthorFull}, 63 | unit_MHLArchiveHelpers in 'unit_MHLArchiveHelpers.pas'; 64 | 65 | end. 66 | -------------------------------------------------------------------------------- /Program/ImportImpl/frm_ImportProgressFormEx.dfm: -------------------------------------------------------------------------------- 1 | inherited ImportProgressFormEx: TImportProgressFormEx 2 | BorderIcons = [biSystemMenu, biMaximize] 3 | BorderStyle = bsSizeable 4 | ClientHeight = 371 5 | ClientWidth = 442 6 | Constraints.MinHeight = 200 7 | Constraints.MinWidth = 300 8 | StyleElements = [seFont, seClient, seBorder] 9 | OnCreate = FormCreate 10 | OnDestroy = FormDestroy 11 | ExplicitWidth = 458 12 | ExplicitHeight = 410 13 | TextHeight = 13 14 | inherited txtComment: TLabel 15 | Width = 416 16 | StyleElements = [seFont, seClient, seBorder] 17 | ExplicitWidth = 416 18 | end 19 | inherited ProgressBar: TProgressBar 20 | Width = 422 21 | TabOrder = 1 22 | ExplicitWidth = 422 23 | end 24 | inherited btnCancel: TButton 25 | Left = 346 26 | Top = 333 27 | TabOrder = 0 28 | ExplicitLeft = 346 29 | ExplicitTop = 333 30 | end 31 | object errorLog: TListView 32 | Left = 10 33 | Top = 52 34 | Width = 414 35 | Height = 275 36 | Anchors = [akLeft, akTop, akRight, akBottom] 37 | Columns = < 38 | item 39 | Width = 20 40 | end 41 | item 42 | AutoSize = True 43 | end> 44 | ColumnClick = False 45 | HoverTime = 65535 46 | RowSelect = True 47 | TabOrder = 2 48 | ViewStyle = vsReport 49 | end 50 | object btnSaveLog: TButton 51 | Left = 10 52 | Top = 333 53 | Width = 75 54 | Height = 25 55 | Anchors = [akLeft, akBottom] 56 | Caption = #1057#1086#1093#1088#1072#1085#1080#1090#1100 57 | TabOrder = 3 58 | Visible = False 59 | OnClick = btnSaveLogClick 60 | end 61 | object Timer: TTimer 62 | Enabled = False 63 | Interval = 10000 64 | OnTimer = TimerTimer 65 | Left = 216 66 | Top = 336 67 | end 68 | end 69 | -------------------------------------------------------------------------------- /Program/Units/unit_Events.pas: -------------------------------------------------------------------------------- 1 | (* ***************************************************************************** 2 | * 3 | * MyHomeLib 4 | * 5 | * Copyright (C) 2008-2023 Oleksiy Penkov (aka Koreec) 6 | * 7 | * Author(s) eg 8 | * Created 08.10.2010 9 | * Description 10 | * 11 | * $Id: unit_Events.pas 1100 2012-01-22 02:59:38Z koreec $ 12 | * 13 | * History 14 | * 15 | ****************************************************************************** *) 16 | 17 | unit unit_Events; 18 | 19 | interface 20 | 21 | uses 22 | Windows, 23 | ComCtrls, 24 | unit_Globals; 25 | 26 | type 27 | TBookEvent = procedure(const BookRecord: TBookRecord) of object; 28 | TSelectBookEvent = procedure(MoveForward: Boolean) of object; 29 | TGetBookEvent = procedure(var BookRecord: TBookRecord) of object; 30 | TChangeStateEvent = procedure(State: Boolean) of object; 31 | TOnLocateBookEvent = procedure(const Text: string; MoveForward: Boolean) of object; 32 | TOnHelpEvent = function(Command: Word; Data: NativeInt; var CallHelp: Boolean): Boolean of object; 33 | 34 | TProgressOpenEvent = procedure of object; 35 | TProgressHintEvent = procedure (Style: TProgressBarStyle; State: TProgressBarState) of object; 36 | TProgressEvent = procedure (Percent: Integer) of object; 37 | TProgressCloseEvent = procedure of object; 38 | TProgressTeletypeEvent = procedure (const Msg: string; Severity: TTeletypeSeverity) of object; 39 | TProgressSetCommentEvent = procedure (const Msg: string) of object; 40 | TProgressShowMessageEvent = function (const Text: string; Flags: Longint = MB_OK): Integer of object; 41 | 42 | TProgressEvent2 = procedure(Current, Total: Integer) of object; 43 | TProgressSetCommentEvent2 = procedure(const Current, Total: string) of object; 44 | 45 | implementation 46 | 47 | end. 48 | -------------------------------------------------------------------------------- /Program/Units/unit_MHL_strings.pas: -------------------------------------------------------------------------------- 1 | (* ***************************************************************************** 2 | * 3 | * MyHomeLib 4 | * 5 | * Copyright (C) 2008-2023 Oleksiy Penkov (aka Koreec) 6 | * 7 | * Author(s) Nick Rymanov (nrymanov@gmail.com) 8 | * Created 12.02.2010 9 | * Description 10 | * 11 | * $Id: unit_MHL_strings.pas 748 2010-09-14 07:02:22Z nrymanov@gmail.com $ 12 | * 13 | * History 14 | * NickR 15.02.2010 Код переформатирован 15 | * 16 | ****************************************************************************** *) 17 | 18 | unit unit_MHL_strings; 19 | 20 | interface 21 | 22 | resourcestring 23 | rstrMainUnableToCopy = 'Копирование книг из избранного невозможно.'; 24 | rstrMainConnectToDb = 'Подключение БД...'; 25 | rstrMainLoadingCollection = 'Загрузка коллекции...'; 26 | rstrMainCheckUpdates = 'Проверка обновлений...'; 27 | 28 | rstrCancelOperationWarningMsg = 'Вы действительно хотите прервать операцию?'; 29 | 30 | rstrReadyMessage = 'Готово'; 31 | 32 | // 33 | // Названия коллекций по-умолчанию 34 | // 35 | rstrLocalLibRusEcDefName = 'Локальная коллекция Либрусек'; 36 | rstrOnlineLibRusEcDefName = 'Онлайн коллекция Либрусек'; 37 | rstrOnlineGenesisDefName = 'Онлайн коллекция Genesis'; 38 | 39 | rstrLocalLibRusEcDefLocation = 'librusec_local'; 40 | rstrOnlineLibRusEcDefLocation = 'librusec_online'; 41 | rstrOnlineGenesisDefLocation = 'genesis_online'; 42 | 43 | // 44 | // 45 | // 46 | rstrBookProcessedMsg1 = 'Обработано книг: %u'; 47 | rstrBookProcessedMsg2 = 'Обработано книг: %u из %u'; 48 | 49 | // 50 | // Форма редактирования/создания FBD и пунк меню в главной форме 51 | // 52 | rstrEditFBD = 'Редактировать FBD'; 53 | rstrConvert2FBD = 'Преобразовать FBD'; 54 | 55 | implementation 56 | 57 | end. 58 | -------------------------------------------------------------------------------- /Program/Forms/Editors/frm_EditAuthorEx.dfm: -------------------------------------------------------------------------------- 1 | inherited frmEditAuthorDataEx: TfrmEditAuthorDataEx 2 | ClientHeight = 195 3 | StyleElements = [seFont, seClient, seBorder] 4 | ExplicitHeight = 234 5 | TextHeight = 13 6 | inherited Label1: TLabel 7 | StyleElements = [seFont, seClient, seBorder] 8 | end 9 | inherited Label2: TLabel 10 | StyleElements = [seFont, seClient, seBorder] 11 | end 12 | inherited Label3: TLabel 13 | Width = 49 14 | Caption = #1054#1090#1095#1077#1089#1090#1074#1086 15 | StyleElements = [seFont, seClient, seBorder] 16 | ExplicitWidth = 49 17 | end 18 | inherited pnButtons: TPanel 19 | Top = 154 20 | TabOrder = 4 21 | StyleElements = [seFont, seClient, seBorder] 22 | ExplicitTop = 154 23 | inherited btnOk: TButton 24 | Left = 186 25 | ExplicitLeft = 186 26 | end 27 | inherited btnCancel: TButton 28 | Left = 267 29 | ExplicitLeft = 267 30 | end 31 | end 32 | object gbAddNew: TGroupBox [4] 33 | AlignWithMargins = True 34 | Left = 8 35 | Top = 91 36 | Width = 342 37 | Height = 61 38 | Caption = #1054#1087#1094#1080#1080 39 | TabOrder = 3 40 | object cbAddNew: TCheckBox 41 | Left = 17 42 | Top = 28 43 | Width = 85 44 | Height = 15 45 | Caption = '&'#1053#1086#1074#1099#1081' '#1072#1074#1090#1086#1088 46 | TabOrder = 0 47 | end 48 | object cbSaveLinks: TCheckBox 49 | Left = 158 50 | Top = 28 51 | Width = 108 52 | Height = 15 53 | Caption = #1057#1086#1093#1088#1072#1085#1080#1090#1100' '#1089#1074#1103#1079#1080 54 | TabOrder = 1 55 | end 56 | end 57 | inherited edFirstName: TEdit 58 | StyleElements = [seFont, seClient, seBorder] 59 | end 60 | inherited edLastName: TEdit 61 | StyleElements = [seFont, seClient, seBorder] 62 | end 63 | inherited edMiddleName: TEdit 64 | StyleElements = [seFont, seClient, seBorder] 65 | end 66 | end 67 | -------------------------------------------------------------------------------- /Program/MHL.groupproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | {03FBE2DA-0E6E-4A56-9500-1147B87C3C24} 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | Default.Personality.12 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /Program/ImportImpl/unit_CollectionWorkerThread.pas: -------------------------------------------------------------------------------- 1 | (* ***************************************************************************** 2 | * 3 | * MyHomeLib 4 | * 5 | * Copyright (C) 2008-2023 Oleksiy Penkov (aka Koreec) 6 | * 7 | * Author(s) Nick Rymanov (nrymanov@gmail.com) 8 | * Created 20.08.2008 9 | * Description 10 | * 11 | * $Id: unit_CollectionWorkerThread.pas 840 2010-10-06 07:37:58Z nrymanov@gmail.com $ 12 | * 13 | * History 14 | * 15 | ****************************************************************************** *) 16 | 17 | unit unit_CollectionWorkerThread; 18 | 19 | interface 20 | 21 | uses 22 | unit_WorkerThread, 23 | unit_Interfaces; 24 | 25 | type 26 | TCollectionWorker = class(TWorker) 27 | protected 28 | FCollectionID: Integer; 29 | 30 | protected 31 | // 32 | // эти поля будут инициализированы только в рабочем потоке 33 | // 34 | FSystemData: ISystemData; 35 | FCollection: IBookCollection; 36 | FCollectionRoot: string; 37 | 38 | procedure Initialize; override; 39 | procedure Uninitialize; override; 40 | 41 | public 42 | constructor Create(const CollectionID: Integer); 43 | end; 44 | 45 | implementation 46 | 47 | uses 48 | unit_Consts, 49 | dm_user; 50 | 51 | { TCollectionWorker } 52 | 53 | constructor TCollectionWorker.Create(const CollectionID: Integer); 54 | begin 55 | inherited Create; 56 | FCollectionID := CollectionID; 57 | end; 58 | 59 | procedure TCollectionWorker.Initialize; 60 | begin 61 | inherited Initialize; 62 | 63 | FSystemData := DMUser.GetSystemDBConnection; 64 | Assert(Assigned(FSystemData)); 65 | 66 | if FCollectionID <> MHL_INVALID_ID then 67 | begin 68 | FCollection := FSystemData.GetCollection(FCollectionID); 69 | Assert(Assigned(FCollection)); 70 | FCollectionRoot := FCollection.GetProperty(PROP_ROOTFOLDER); 71 | end; 72 | end; 73 | 74 | procedure TCollectionWorker.Uninitialize; 75 | begin 76 | FSystemData.ClearCollectionCache; 77 | inherited Uninitialize; 78 | end; 79 | 80 | end. 81 | -------------------------------------------------------------------------------- /Program/Forms/Editors/frm_EditGroup.dfm: -------------------------------------------------------------------------------- 1 | object frmEditGroup: TfrmEditGroup 2 | Left = 0 3 | Top = 0 4 | AutoSize = True 5 | BorderStyle = bsDialog 6 | Caption = #1053#1086#1074#1072#1103' '#1075#1088#1091#1087#1087#1072 7 | ClientHeight = 94 8 | ClientWidth = 312 9 | Color = clBtnFace 10 | Font.Charset = DEFAULT_CHARSET 11 | Font.Color = clWindowText 12 | Font.Height = -11 13 | Font.Name = 'Tahoma' 14 | Font.Style = [] 15 | Position = poMainFormCenter 16 | OnShow = FormShow 17 | TextHeight = 13 18 | object Label1: TLabel 19 | AlignWithMargins = True 20 | Left = 8 21 | Top = 10 22 | Width = 296 23 | Height = 13 24 | Margins.Left = 8 25 | Margins.Top = 10 26 | Margins.Right = 8 27 | Align = alTop 28 | Caption = #1053#1072#1079#1074#1072#1085#1080#1077' '#1075#1088#1091#1087#1087#1099':' 29 | ExplicitWidth = 92 30 | end 31 | object pnButtons: TPanel 32 | Left = 0 33 | Top = 53 34 | Width = 312 35 | Height = 41 36 | Align = alTop 37 | BevelOuter = bvNone 38 | Caption = 'pnButtons' 39 | ShowCaption = False 40 | TabOrder = 1 41 | DesignSize = ( 42 | 312 43 | 41) 44 | object btnOk: TButton 45 | Left = 148 46 | Top = 10 47 | Width = 75 48 | Height = 25 49 | Anchors = [akTop, akRight] 50 | Caption = '&'#1057#1086#1093#1088#1072#1085#1080#1090#1100 51 | Default = True 52 | ModalResult = 1 53 | TabOrder = 0 54 | end 55 | object btnCancel: TButton 56 | Left = 229 57 | Top = 10 58 | Width = 75 59 | Height = 25 60 | Anchors = [akTop, akRight] 61 | Cancel = True 62 | Caption = '&'#1059#1076#1072#1083#1080#1090#1100 63 | ModalResult = 2 64 | TabOrder = 1 65 | end 66 | end 67 | object edGroupName: TEdit 68 | AlignWithMargins = True 69 | Left = 8 70 | Top = 29 71 | Width = 296 72 | Height = 21 73 | Margins.Left = 8 74 | Margins.Right = 8 75 | Align = alTop 76 | MaxLength = 255 77 | TabOrder = 0 78 | OnChange = edGroupNameChange 79 | end 80 | end 81 | -------------------------------------------------------------------------------- /Program/DwnldImpl/frm_DownloadProgressForm.dfm: -------------------------------------------------------------------------------- 1 | inherited DownloadProgressForm: TDownloadProgressForm 2 | BorderStyle = bsDialog 3 | Caption = #1047#1072#1075#1088#1091#1079#1082#1072 4 | ClientHeight = 135 5 | ClientWidth = 428 6 | Position = poMainFormCenter 7 | StyleElements = [seFont, seClient, seBorder] 8 | ExplicitWidth = 444 9 | ExplicitHeight = 174 10 | TextHeight = 13 11 | object lblCurrent: TLabel 12 | AlignWithMargins = True 13 | Left = 15 14 | Top = 10 15 | Width = 398 16 | Height = 13 17 | Margins.Left = 15 18 | Margins.Top = 10 19 | Margins.Right = 15 20 | Align = alTop 21 | Caption = 'lblCurrent' 22 | Font.Charset = DEFAULT_CHARSET 23 | Font.Color = 8542779 24 | Font.Height = -11 25 | Font.Name = 'Tahoma' 26 | Font.Style = [] 27 | ParentFont = False 28 | ExplicitWidth = 47 29 | end 30 | object lblTotal: TLabel 31 | AlignWithMargins = True 32 | Left = 15 33 | Top = 51 34 | Width = 398 35 | Height = 13 36 | Margins.Left = 15 37 | Margins.Right = 15 38 | Align = alTop 39 | Caption = 'lblCurrent' 40 | Font.Charset = DEFAULT_CHARSET 41 | Font.Color = 8542779 42 | Font.Height = -11 43 | Font.Name = 'Tahoma' 44 | Font.Style = [] 45 | ParentFont = False 46 | ExplicitWidth = 47 47 | end 48 | object pbCurrent: TProgressBar 49 | AlignWithMargins = True 50 | Left = 15 51 | Top = 29 52 | Width = 398 53 | Height = 16 54 | Margins.Left = 15 55 | Margins.Right = 15 56 | Align = alTop 57 | TabOrder = 0 58 | end 59 | object pbTotal: TProgressBar 60 | AlignWithMargins = True 61 | Left = 15 62 | Top = 70 63 | Width = 398 64 | Height = 16 65 | Margins.Left = 15 66 | Margins.Right = 15 67 | Align = alTop 68 | TabOrder = 1 69 | end 70 | object btnCancel: TButton 71 | Left = 338 72 | Top = 98 73 | Width = 75 74 | Height = 25 75 | Caption = #1054#1090#1084#1077#1085#1072 76 | DoubleBuffered = True 77 | ParentDoubleBuffered = False 78 | TabOrder = 2 79 | OnClick = btnCancelClick 80 | end 81 | end 82 | -------------------------------------------------------------------------------- /Program/Forms/frm_author_list.pas: -------------------------------------------------------------------------------- 1 | (* ***************************************************************************** 2 | * 3 | * MyHomeLib 4 | * 5 | * Copyright (C) 2008-2023 Oleksiy Penkov (aka Koreec) 6 | * 7 | * Authors Oleksiy Penkov oleksiy.penkov@gmail.com 8 | * Nick Rymanov nrymanov@gmail.com 9 | * 10 | * $Id: frm_author_list.pas 543 2010-07-29 06:34:09Z nrymanov@gmail.com $ 11 | * 12 | * History 13 | * 14 | ****************************************************************************** *) 15 | 16 | unit frm_author_list; 17 | 18 | interface 19 | 20 | uses 21 | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 22 | Dialogs, VirtualTrees, ExtCtrls, StdCtrls; 23 | 24 | type 25 | TfrmAuthorList = class(TForm) 26 | tvAuthorList: TVirtualStringTree; 27 | pnButtons: TPanel; 28 | btnOk: TButton; 29 | btnCancel: TButton; 30 | procedure tvAuthorListGetText(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; 31 | TextType: TVSTTextType; var CellText: string); 32 | procedure tvAuthorListGetNodeDataSize(Sender: TBaseVirtualTree; var NodeDataSize: Integer); 33 | procedure tvAuthorListFreeNode(Sender: TBaseVirtualTree; Node: PVirtualNode); 34 | private 35 | 36 | public 37 | 38 | end; 39 | 40 | var 41 | frmAuthorList: TfrmAuthorList; 42 | 43 | implementation 44 | 45 | uses 46 | unit_Globals; 47 | 48 | {$R *.dfm} 49 | 50 | procedure TfrmAuthorList.tvAuthorListFreeNode(Sender: TBaseVirtualTree; Node: PVirtualNode); 51 | var 52 | Data: PAuthorData; 53 | begin 54 | Data := Sender.GetNodeData(Node); 55 | if Assigned(Data) then 56 | Finalize(Data^); 57 | end; 58 | 59 | procedure TfrmAuthorList.tvAuthorListGetNodeDataSize(Sender: TBaseVirtualTree; var NodeDataSize: Integer); 60 | begin 61 | NodeDataSize := SizeOf(TAuthorData); 62 | end; 63 | 64 | procedure TfrmAuthorList.tvAuthorListGetText(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType; var CellText: string); 65 | var 66 | Data: PAuthorData; 67 | begin 68 | Data := tvAuthorList.GetNodeData(Node); 69 | CellText := Data^.GetFullName; 70 | end; 71 | 72 | end. 73 | -------------------------------------------------------------------------------- /Program/Wizards/Base/frame_InteriorPageBase.pas: -------------------------------------------------------------------------------- 1 | {******************************************************************************} 2 | { } 3 | { MyHomeLib } 4 | { } 5 | { Version 0.9 } 6 | { 20.08.2008 } 7 | { Copyright (c) Oleksiy Penkov oleksiy.penkov@gmail.com } 8 | { } 9 | { @author Nick Rymanov nrymanov@gmail.com } 10 | { } 11 | {******************************************************************************} 12 | 13 | unit frame_InteriorPageBase; 14 | 15 | interface 16 | 17 | uses 18 | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 19 | Dialogs, StdCtrls, ExtCtrls, frame_WizardPageBase; 20 | 21 | type 22 | TInteriorPageBase = class(TWizardPageBase) 23 | pnTitle: TPanel; 24 | lblTitle: TLabel; 25 | lblSubTitle: TLabel; 26 | private 27 | function GetSubTitle: string; 28 | function GetTitle: string; 29 | procedure SetSubTitle(const Value: string); 30 | procedure SetTitle(const Value: string); 31 | 32 | public 33 | 34 | property Title: string read GetTitle write SetTitle; 35 | property SubTitle: string read GetSubTitle write SetSubTitle; 36 | end; 37 | 38 | implementation 39 | 40 | {$R *.dfm} 41 | 42 | { TframeInteriorPageBase } 43 | 44 | function TInteriorPageBase.GetTitle: string; 45 | begin 46 | Result := lblTitle.Caption; 47 | end; 48 | 49 | procedure TInteriorPageBase.SetTitle(const Value: string); 50 | begin 51 | lblTitle.Caption := Value; 52 | end; 53 | 54 | function TInteriorPageBase.GetSubTitle: string; 55 | begin 56 | Result := lblSubTitle.Caption; 57 | end; 58 | 59 | procedure TInteriorPageBase.SetSubTitle(const Value: string); 60 | begin 61 | lblSubTitle.Caption := Value; 62 | end; 63 | 64 | end. 65 | 66 | -------------------------------------------------------------------------------- /Program/Wizards/Base/frame_WizardPageBase.pas: -------------------------------------------------------------------------------- 1 | {******************************************************************************} 2 | { } 3 | { MyHomeLib } 4 | { } 5 | { Version 0.9 } 6 | { 20.08.2008 } 7 | { Copyright (c) Oleksiy Penkov oleksiy.penkov@gmail.com } 8 | { } 9 | { @author Nick Rymanov nrymanov@gmail.com } 10 | { } 11 | {******************************************************************************} 12 | 13 | unit frame_WizardPageBase; 14 | 15 | interface 16 | 17 | uses 18 | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 19 | Dialogs, unit_NCWParams; 20 | 21 | type 22 | TWizardButton = (wbGoPrev, wbGoNext, wbCancel, wbFinish); 23 | TWizardButtons = set of TWizardButton; 24 | 25 | TWizardPageBase = class(TFrame) 26 | protected 27 | FPParams: PNCWParams; 28 | 29 | public 30 | procedure Initialize(PParams: PNCWParams); virtual; 31 | function Activate(LoadData: Boolean): Boolean; virtual; 32 | function Deactivate(CheckData: Boolean): Boolean; virtual; 33 | 34 | function PageButtons: TWizardButtons; virtual; 35 | end; 36 | 37 | TWizardPageClass = class of TWizardPageBase; 38 | 39 | implementation 40 | 41 | {$R *.dfm} 42 | 43 | procedure TWizardPageBase.Initialize(PParams: PNCWParams); 44 | begin 45 | Assert(Assigned(PParams)); 46 | FPParams := PParams; 47 | end; 48 | 49 | function TWizardPageBase.PageButtons: TWizardButtons; 50 | begin 51 | Result := [wbGoPrev, wbGoNext, wbCancel]; 52 | end; 53 | 54 | function TWizardPageBase.Activate(LoadData: Boolean): Boolean; 55 | begin 56 | Result := True; 57 | end; 58 | 59 | function TWizardPageBase.Deactivate(CheckData: Boolean): Boolean; 60 | begin 61 | Result := True; 62 | end; 63 | 64 | end. 65 | 66 | -------------------------------------------------------------------------------- /Program/ImportImpl/unit_Import.pas: -------------------------------------------------------------------------------- 1 | (* ***************************************************************************** 2 | * 3 | * MyHomeLib 4 | * 5 | * Copyright (C) 2008-2023 Oleksiy Penkov (aka Koreec) 6 | * 7 | * Author(s) Nick Rymanov nrymanov@gmail.com 8 | * Oleksiy Penkov oleksiy.penkov@gmail.com 9 | * Created 22.02.2010 10 | * Description 11 | * 12 | * $Id: unit_Import.pas 1105 2012-02-02 08:24:58Z koreec $ 13 | * 14 | * History 15 | * NickR 02.03.2010 Код переформатирован 16 | * NickR 08.04.2010 Убраны ненужные зависимости 17 | * 18 | ****************************************************************************** *) 19 | 20 | unit unit_Import; 21 | 22 | interface 23 | 24 | uses 25 | unit_Globals, 26 | unit_Interfaces, 27 | unit_MHLArchiveHelpers; 28 | 29 | procedure ImportFB2(const CollectionID: Integer; const ArchiveFormat: TArchiveFormat); 30 | 31 | procedure ImportFBD(const CollectionID: Integer); 32 | 33 | implementation 34 | 35 | uses 36 | Forms, 37 | unit_ImportFB2Thread, 38 | unit_ImportFBDThread, 39 | frm_ImportProgressForm, 40 | frm_ImportProgressFormEx, 41 | unit_Consts; 42 | 43 | procedure ImportFB2; 44 | var 45 | worker: TImportFB2Thread; 46 | frmProgress: TImportProgressFormEx; 47 | begin 48 | worker := TImportFB2Thread.Create(CollectionID, ArchiveFormat); 49 | try 50 | frmProgress := TImportProgressFormEx.Create(Application); 51 | try 52 | frmProgress.WorkerThread := worker; 53 | frmProgress.btnSaveLog.Visible := True; 54 | frmProgress.ShowModal; 55 | finally 56 | frmProgress.Free; 57 | end; 58 | finally 59 | worker.Free; 60 | end; 61 | end; 62 | 63 | 64 | 65 | procedure ImportFBD(const CollectionID: Integer); 66 | var 67 | worker: TImportFBDThread; 68 | frmProgress: TImportProgressFormEx; 69 | begin 70 | worker := TImportFBDThread.Create(CollectionID); 71 | try 72 | frmProgress := TImportProgressFormEx.Create(Application); 73 | try 74 | frmProgress.WorkerThread := worker; 75 | frmProgress.btnSaveLog.Visible := True; 76 | frmProgress.ShowModal; 77 | finally 78 | frmProgress.Free; 79 | end; 80 | finally 81 | worker.Free; 82 | end; 83 | end; 84 | 85 | end. 86 | 87 | -------------------------------------------------------------------------------- /Program/Units/unit_PrevInst.pas: -------------------------------------------------------------------------------- 1 | (* ***************************************************************************** 2 | * 3 | * MyHomeLib 4 | * 5 | * Copyright (C) 2008-2023 Oleksiy Penkov (aka Koreec) 6 | * 7 | * Author(s) Oleksiy Penkov oleksiy.penkov@gmail.com 8 | * Created 12.02.2010 9 | * Description 10 | * 11 | * $Id: unit_PrevInst.pas 543 2010-07-29 06:34:09Z nrymanov@gmail.com $ 12 | * 13 | * History 14 | * NickR 15.02.2010 Код переформатирован 15 | * 16 | ****************************************************************************** *) 17 | 18 | unit unit_PrevInst; 19 | 20 | interface 21 | 22 | uses 23 | Windows, 24 | Forms, 25 | StrUtils, 26 | SysUtils; 27 | 28 | function FirstHinstanceRunning(RunMode: Integer = 0): boolean; 29 | 30 | implementation 31 | 32 | function FirstHinstanceRunning(RunMode: Integer = 0): boolean; 33 | const 34 | MemFileSize = 127; 35 | 36 | var 37 | MemHnd: HWND; 38 | MemFileName: string; 39 | lpBaseAddress: ^HWND; 40 | FirstAppHandle: HWND; 41 | 42 | begin 43 | Result := False; 44 | MemFileName := Application.ExeName; 45 | case RunMode of 46 | 0: MemFileName := AnsiReplaceText(MemFileName, '\', '/'); 47 | 1: MemFileName := ExtractFileName(MemFileName); 48 | else 49 | Exit; 50 | end; 51 | 52 | // если FileMapping есть - то происходит OpenFileMapping 53 | MemHnd := CreateFileMapping(HWND($FFFFFFFF), nil, PAGE_READWRITE, 0, MemFileSize, PChar(MemFileName)); 54 | if GetLastError <> ERROR_ALREADY_EXISTS then 55 | begin 56 | if MemHnd <> 0 then 57 | begin 58 | lpBaseAddress := MapViewOfFile(MemHnd, FILE_MAP_WRITE, 0, 0, 0); 59 | if lpBaseAddress <> nil then 60 | lpBaseAddress^ := Application.Handle; 61 | end; 62 | end 63 | else 64 | begin 65 | // MemFileHnd := OpenFileMapping(FILE_MAP_READ, False, PChar(MemFileName)); 66 | Result := True; 67 | if MemHnd <> 0 then 68 | begin 69 | lpBaseAddress := MapViewOfFile(MemHnd, FILE_MAP_READ, 0, 0, 0); 70 | if lpBaseAddress <> nil then 71 | begin 72 | FirstAppHandle := lpBaseAddress^; 73 | ShowWindow(FirstAppHandle, SW_RESTORE); 74 | SetForegroundWindow(FirstAppHandle); 75 | end; 76 | end; 77 | end; 78 | 79 | if lpBaseAddress <> nil then 80 | UnMapViewOfFile(lpBaseAddress); 81 | end; 82 | 83 | end. 84 | -------------------------------------------------------------------------------- /Program/Forms/frm_statistic.pas: -------------------------------------------------------------------------------- 1 | (* ***************************************************************************** 2 | * 3 | * MyHomeLib 4 | * 5 | * Copyright (C) 2008-2023 Oleksiy Penkov (aka Koreec) 6 | * 7 | * Authors Oleksiy Penkov oleksiy.penkov@gmail.com 8 | * Nick Rymanov nrymanov@gmail.com 9 | * Created 20.08.2008 10 | * Description 11 | * 12 | * $Id: frm_statistic.pas 840 2010-10-06 07:37:58Z nrymanov@gmail.com $ 13 | * 14 | * History 15 | * 16 | ****************************************************************************** *) 17 | 18 | unit frm_statistic; 19 | 20 | interface 21 | 22 | uses 23 | Classes, 24 | Controls, 25 | Forms, 26 | ComCtrls, 27 | StdCtrls, 28 | unit_Interfaces; 29 | 30 | type 31 | TfrmStat = class(TForm) 32 | btnClose: TButton; 33 | lvInfo: TListView; 34 | 35 | public 36 | procedure LoadCollectionInfo(const Collection: IBookCollection); 37 | end; 38 | 39 | var 40 | frmStat: TfrmStat; 41 | 42 | implementation 43 | 44 | uses 45 | Variants, 46 | SysUtils, 47 | unit_Consts, 48 | unit_Helpers; 49 | 50 | resourcestring 51 | rstrUnknown = 'unknown'; 52 | 53 | {$R *.dfm} 54 | 55 | procedure TfrmStat.LoadCollectionInfo(const Collection: IBookCollection); 56 | var 57 | vVersion: Variant; 58 | DataVersion: string; 59 | AuthorsCount: Integer; 60 | BooksCount: Integer; 61 | SeriesCount: Integer; 62 | begin 63 | Assert(Assigned(Collection)); 64 | 65 | Collection.GetStatistics(AuthorsCount, BooksCount, SeriesCount); 66 | 67 | vVersion := Collection.GetProperty(PROP_DATAVERSION); 68 | if VarIsEmpty(vVersion) then 69 | DataVersion := rstrUnknown 70 | else 71 | DataVersion := IntToStr(vVersion); 72 | 73 | // 74 | // Заполним данные 75 | // 76 | lvInfo.Items[0].SubItems[0] := Collection.GetProperty(PROP_DISPLAYNAME); 77 | lvInfo.Items[1].SubItems[0] := DateToStr(Collection.GetProperty(PROP_CREATIONDATE)); 78 | lvInfo.Items[2].SubItems[0] := DataVersion; 79 | lvInfo.Items[3].SubItems[0] := Collection.GetProperty(PROP_NOTES); 80 | 81 | lvInfo.Items[4].SubItems[0] := IntToStr(AuthorsCount); 82 | lvInfo.Items[5].SubItems[0] := IntToStr(BooksCount); 83 | lvInfo.Items[6].SubItems[0] := IntToStr(SeriesCount); 84 | 85 | lvInfo.AutosizeColumn(0); 86 | lvInfo.AutosizeColumn(1); 87 | end; 88 | 89 | end. 90 | -------------------------------------------------------------------------------- /Program/ImportImpl/frm_ImportProgressForm.pas: -------------------------------------------------------------------------------- 1 | (* ***************************************************************************** 2 | * 3 | * MyHomeLib 4 | * 5 | * Copyright (C) 2008-2023 Oleksiy Penkov (aka Koreec) 6 | * 7 | * Author(s) Nick Rymanov nrymanov@gmail.com 8 | * Created 20.08.2008 9 | * Description 10 | * 11 | * $Id: frm_ImportProgressForm.pas 875 2010-10-25 09:10:20Z nrymanov@gmail.com $ 12 | * 13 | * History 14 | * 15 | ****************************************************************************** *) 16 | 17 | unit frm_ImportProgressForm; 18 | 19 | interface 20 | 21 | uses 22 | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 23 | Dialogs, unit_WorkerThread, frm_BaseProgressForm, StdCtrls, ComCtrls, unit_Globals; 24 | 25 | type 26 | TImportProgressForm = class(TProgressFormBase) 27 | txtComment: TLabel; 28 | ProgressBar: TProgressBar; 29 | btnCancel: TButton; 30 | procedure btnCancelClick(Sender: TObject); 31 | private 32 | protected 33 | procedure OpenProgress; override; 34 | procedure SetProgressHint(Style: TProgressBarStyle; State: TProgressBarState); override; 35 | procedure ShowProgress(Percent: Integer); override; 36 | procedure ShowTeletype(const Msg: string; Severity: TTeletypeSeverity); override; 37 | procedure SetComment(const Comment: string); override; 38 | public 39 | end; 40 | 41 | var 42 | ImportProgressForm: TImportProgressForm; 43 | 44 | implementation 45 | 46 | {$R *.dfm} 47 | 48 | { TImportProgressForm } 49 | 50 | procedure TImportProgressForm.btnCancelClick(Sender: TObject); 51 | begin 52 | CancelWorker; 53 | end; 54 | 55 | procedure TImportProgressForm.OpenProgress; 56 | begin 57 | ProgressBar.Position := 0; 58 | end; 59 | 60 | procedure TImportProgressForm.SetProgressHint(Style: TProgressBarStyle; State: TProgressBarState); 61 | begin 62 | ProgressBar.Style := Style; 63 | ProgressBar.State := State; 64 | end; 65 | 66 | procedure TImportProgressForm.SetComment(const Comment: string); 67 | begin 68 | txtComment.Caption := Comment; 69 | end; 70 | 71 | procedure TImportProgressForm.ShowProgress(Percent: Integer); 72 | begin 73 | ProgressBar.Position := Percent; 74 | end; 75 | 76 | procedure TImportProgressForm.ShowTeletype(const Msg: string; Severity: TTeletypeSeverity); 77 | begin 78 | // ничего не делаем 79 | end; 80 | 81 | end. 82 | 83 | -------------------------------------------------------------------------------- /Program/DAO/SQLite/Lib/SQLite3UDF.pas: -------------------------------------------------------------------------------- 1 | (* ***************************************************************************** 2 | * 3 | * MyHomeLib 4 | * 5 | * Copyright (C) 2008-2023 Oleksiy Penkov (aka Koreec) 6 | * 7 | * Author(s) Nick Rymanov nrymanov@gmail.com 8 | * Created 07.09.2010 9 | * Description 10 | * 11 | * $Id: SQLite3UDF.pas 783 2010-09-17 07:43:25Z nrymanov@gmail.com $ 12 | * 13 | * History 14 | * 15 | ****************************************************************************** *) 16 | 17 | unit SQLite3UDF; 18 | 19 | interface 20 | 21 | uses 22 | SQLite3; 23 | 24 | function SystemCollate(Userdta: Pointer; Buf1Len: Integer; Buf1: Pointer; Buf2Len: Integer; Buf2: Pointer): Integer; cdecl; 25 | function SystemCollateNoCase(Userdta: Pointer; Buf1Len: Integer; Buf1: Pointer; Buf2Len: Integer; Buf2: Pointer): Integer; cdecl; 26 | procedure SystemUpperString(pCtx: TSQLite3Context; nArgs: Integer; Args: TSQLite3Value); cdecl; 27 | procedure SystemLowerString(pCtx: TSQLite3Context; nArgs: Integer; Args: TSQLite3Value); cdecl; 28 | 29 | implementation 30 | 31 | uses 32 | Windows, 33 | Character; 34 | 35 | function SystemCollate(Userdta: Pointer; Buf1Len: Integer; Buf1: Pointer; Buf2Len: Integer; Buf2: Pointer): Integer; cdecl; 36 | begin 37 | Result := CompareStringW( 38 | LOCALE_USER_DEFAULT, 39 | 0, 40 | PWideChar(Buf1), Buf1Len div SizeOf(WideChar), 41 | PWideChar(Buf2), Buf2Len div SizeOf(WideChar) 42 | ) - CSTR_EQUAL; 43 | end; 44 | 45 | function SystemCollateNoCase(Userdta: Pointer; Buf1Len: Integer; Buf1: Pointer; Buf2Len: Integer; Buf2: Pointer): Integer; cdecl; 46 | begin 47 | Result := CompareStringW( 48 | LOCALE_USER_DEFAULT, 49 | NORM_IGNORECASE, 50 | PWideChar(Buf1), Buf1Len div SizeOf(WideChar), 51 | PWideChar(Buf2), Buf2Len div SizeOf(WideChar) 52 | ) - CSTR_EQUAL; 53 | end; 54 | 55 | procedure SystemUpperString(pCtx: TSQLite3Context; nArgs: Integer; Args: TSQLite3Value); cdecl; 56 | var 57 | s: string; 58 | begin 59 | s := SQLite3_Value_text16(Args^); 60 | SQLite3_Result_Text16(pCtx, PWideChar(TCharacter.ToUpper(s)), -1, SQLITE_TRANSIENT); 61 | end; 62 | 63 | procedure SystemLowerString(pCtx: TSQLite3Context; nArgs: Integer; Args: TSQLite3Value); cdecl; 64 | var 65 | s: string; 66 | begin 67 | s := SQLite3_Value_text16(Args^); 68 | SQLite3_Result_Text16(pCtx, PWideChar(TCharacter.ToLower(s)), -1, SQLITE_TRANSIENT); 69 | end; 70 | 71 | end. 72 | -------------------------------------------------------------------------------- /Program/Forms/frm_about.pas: -------------------------------------------------------------------------------- 1 | (* ***************************************************************************** 2 | * 3 | * MyHomeLib 4 | * 5 | * Copyright (C) 2008-2023 Oleksiy Penkov (aka Koreec) 6 | * 7 | * Authors Oleksiy Penkov oleksiy.penkov@gmail.com 8 | * Nick Rymanov nrymanov@gmail.com 9 | * 10 | * $Id: frm_about.pas 1186 2015-05-14 05:20:24Z koreec $ 11 | * 12 | * History 13 | * 14 | ****************************************************************************** *) 15 | 16 | unit frm_about; 17 | 18 | interface 19 | 20 | uses 21 | Windows, 22 | Classes, 23 | Controls, 24 | Forms, 25 | StdCtrls, 26 | ExtCtrls, 27 | unit_MHLHelpers, 28 | MHLSimplePanel, 29 | MHLLinkLabel; 30 | 31 | type 32 | TfrmAbout = class(TForm) 33 | RzPanel1: TMHLSimplePanel; 34 | RzURLLabel: TMHLLinkLabel; 35 | RzBitBtn1: TButton; 36 | versionInfoLabel: TLabel; 37 | RzLabel1: TLabel; 38 | RzLabel2: TLabel; 39 | RzLabel3: TLabel; 40 | RzLabel6: TLabel; 41 | RzLabel7: TLabel; 42 | RzLabel8: TLabel; 43 | Label1: TLabel; 44 | RzLabel4: TLabel; 45 | Label2: TLabel; 46 | Label3: TLabel; 47 | procedure FormCreate(Sender: TObject); 48 | procedure RzURLLabelLinkClick(Sender: TObject; const Link: string; LinkType: TSysLinkType); 49 | procedure FormShow(Sender: TObject); 50 | private 51 | { Private declarations } 52 | public 53 | { Public declarations } 54 | end; 55 | 56 | var 57 | frmAbout: TfrmAbout; 58 | 59 | implementation 60 | 61 | uses 62 | SysUtils, 63 | unit_Helpers, 64 | unit_Consts; 65 | 66 | resourcestring 67 | rstrAppVersionInfo = 'Версия: %s'; 68 | rstrAppVersionInfo64 = 'Версия: %s x64'; 69 | 70 | {$R *.dfm} 71 | 72 | procedure TfrmAbout.FormCreate(Sender: TObject); 73 | begin 74 | {$IFDEF WIN64} 75 | versionInfoLabel.Caption := Format(rstrAppVersionInfo64, [unit_MHLHelpers.GetFileVersion(Application.ExeName)]); 76 | {$ELSE} 77 | versionInfoLabel.Caption := Format(rstrAppVersionInfo, [unit_MHLHelpers.GetFileVersion(Application.ExeName)]); 78 | {$ENDIF} 79 | end; 80 | 81 | procedure TfrmAbout.FormShow(Sender: TObject); 82 | begin 83 | RzURLLabel.Caption := Format('%s', [PROGRAM_HOMEPAGE, PROGRAM_HOMEPAGE]); 84 | end; 85 | 86 | procedure TfrmAbout.RzURLLabelLinkClick(Sender: TObject; const Link: string; LinkType: TSysLinkType); 87 | begin 88 | SimpleShellExecute(Handle, Link); 89 | end; 90 | 91 | end. 92 | -------------------------------------------------------------------------------- /Program/Forms/Editors/frm_EditGroup.pas: -------------------------------------------------------------------------------- 1 | unit frm_EditGroup; 2 | 3 | interface 4 | 5 | uses 6 | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 7 | Dialogs, StdCtrls, ExtCtrls; 8 | 9 | type 10 | TfrmEditGroup = class(TForm) 11 | pnButtons: TPanel; 12 | btnOk: TButton; 13 | btnCancel: TButton; 14 | Label1: TLabel; 15 | edGroupName: TEdit; 16 | procedure edGroupNameChange(Sender: TObject); 17 | procedure FormShow(Sender: TObject); 18 | private 19 | function GetGroupName: string; 20 | procedure SetGroupName(const Value: string); 21 | 22 | property GroupName: string read GetGroupName write SetGroupName; 23 | public 24 | { Public declarations } 25 | end; 26 | 27 | var 28 | frmEditGroup: TfrmEditGroup; 29 | 30 | function NewGroup(var groupName: string): Boolean; 31 | 32 | function EditGroup(var groupName: string): Boolean; 33 | 34 | 35 | implementation 36 | 37 | resourcestring 38 | rstrNewGroup = 'Новая группа'; 39 | rstrEditGroup = 'Редактирование группы'; 40 | 41 | {$R *.dfm} 42 | 43 | procedure TfrmEditGroup.FormShow(Sender: TObject); 44 | begin 45 | edGroupNameChange(nil); 46 | end; 47 | 48 | function TfrmEditGroup.GetGroupName: string; 49 | begin 50 | Result := Trim(edGroupName.Text); 51 | end; 52 | 53 | procedure TfrmEditGroup.SetGroupName(const Value: string); 54 | begin 55 | edGroupName.Text := Value; 56 | end; 57 | 58 | procedure TfrmEditGroup.edGroupNameChange(Sender: TObject); 59 | begin 60 | btnOk.Enabled := GroupName <> ''; 61 | end; 62 | 63 | function InternalEditGroup(createNew: Boolean; var groupName: string): Boolean; 64 | var 65 | frmEditGroup: TfrmEditGroup; 66 | begin 67 | frmEditGroup := TfrmEditGroup.Create(Application); 68 | try 69 | if createNew then 70 | begin 71 | frmEditGroup.Caption := rstrNewGroup; 72 | end 73 | else 74 | begin 75 | frmEditGroup.Caption := rstrEditGroup; 76 | frmEditGroup.GroupName := groupName; 77 | end; 78 | 79 | Result := (frmEditGroup.ShowModal = mrOk); 80 | 81 | if Result then 82 | groupName := frmEditGroup.GroupName; 83 | finally 84 | frmEditGroup.Free; 85 | end; 86 | end; 87 | 88 | function NewGroup(var groupName: string): Boolean; 89 | begin 90 | Result := InternalEditGroup(True, groupName); 91 | end; 92 | 93 | function EditGroup(var groupName: string): Boolean; 94 | begin 95 | Result := InternalEditGroup(False, groupName); 96 | end; 97 | 98 | end. 99 | -------------------------------------------------------------------------------- /Program/Forms/Editors/frm_edit_author.dfm: -------------------------------------------------------------------------------- 1 | object frmEditAuthorData: TfrmEditAuthorData 2 | Left = 0 3 | Top = 0 4 | HelpContext = 117 5 | BorderStyle = bsDialog 6 | Caption = #1048#1085#1092#1086#1088#1084#1072#1094#1080#1103' '#1086#1073' '#1072#1074#1090#1086#1088#1077 7 | ClientHeight = 133 8 | ClientWidth = 358 9 | Color = clBtnFace 10 | Font.Charset = DEFAULT_CHARSET 11 | Font.Color = clWindowText 12 | Font.Height = -11 13 | Font.Name = 'Tahoma' 14 | Font.Style = [] 15 | Position = poOwnerFormCenter 16 | TextHeight = 13 17 | object Label1: TLabel 18 | Left = 8 19 | Top = 13 20 | Width = 48 21 | Height = 13 22 | Caption = '&'#1060#1072#1084#1080#1083#1080#1103':' 23 | FocusControl = edLastName 24 | end 25 | object Label2: TLabel 26 | Left = 8 27 | Top = 40 28 | Width = 23 29 | Height = 13 30 | Caption = '&'#1048#1084#1103':' 31 | FocusControl = edFirstName 32 | end 33 | object Label3: TLabel 34 | Left = 8 35 | Top = 67 36 | Width = 53 37 | Height = 13 38 | Caption = #1054#1090#1095#1077#1089#1090#1074#1086':' 39 | FocusControl = edMiddleName 40 | end 41 | object pnButtons: TPanel 42 | Left = 0 43 | Top = 92 44 | Width = 358 45 | Height = 41 46 | Align = alBottom 47 | BevelOuter = bvNone 48 | Caption = 'pnButtons' 49 | ShowCaption = False 50 | TabOrder = 3 51 | DesignSize = ( 52 | 358 53 | 41) 54 | object btnOk: TButton 55 | Left = 190 56 | Top = 10 57 | Width = 75 58 | Height = 25 59 | Anchors = [akTop, akRight] 60 | Caption = '&'#1057#1086#1093#1088#1072#1085#1080#1090#1100 61 | Default = True 62 | ModalResult = 1 63 | TabOrder = 0 64 | end 65 | object btnCancel: TButton 66 | Left = 271 67 | Top = 10 68 | Width = 75 69 | Height = 25 70 | Anchors = [akTop, akRight] 71 | Cancel = True 72 | Caption = '&'#1054#1090#1084#1077#1085#1072 73 | ModalResult = 2 74 | TabOrder = 1 75 | end 76 | end 77 | object edFirstName: TEdit 78 | Left = 72 79 | Top = 37 80 | Width = 278 81 | Height = 21 82 | TabOrder = 1 83 | end 84 | object edLastName: TEdit 85 | Left = 72 86 | Top = 10 87 | Width = 278 88 | Height = 21 89 | TabOrder = 0 90 | end 91 | object edMiddleName: TEdit 92 | Left = 72 93 | Top = 64 94 | Width = 278 95 | Height = 21 96 | TabOrder = 2 97 | end 98 | end 99 | -------------------------------------------------------------------------------- /Program/Wizards/Base/frame_DecorativePageBase.dfm: -------------------------------------------------------------------------------- 1 | inherited DecorativePageBase: TDecorativePageBase 2 | Width = 476 3 | Height = 346 4 | ExplicitWidth = 476 5 | ExplicitHeight = 346 6 | object Panel8: TPanel 7 | Left = 0 8 | Top = 0 9 | Width = 169 10 | Height = 346 11 | Align = alLeft 12 | BevelOuter = bvNone 13 | Color = clNavy 14 | ParentBackground = False 15 | TabOrder = 0 16 | end 17 | object Panel9: TPanel 18 | Left = 169 19 | Top = 0 20 | Width = 307 21 | Height = 346 22 | Align = alClient 23 | BevelOuter = bvNone 24 | Color = clWhite 25 | ParentBackground = False 26 | TabOrder = 1 27 | object lblTitle: TLabel 28 | AlignWithMargins = True 29 | Left = 7 30 | Top = 7 31 | Width = 293 32 | Height = 32 33 | Margins.Left = 7 34 | Margins.Top = 7 35 | Margins.Right = 7 36 | Margins.Bottom = 0 37 | Align = alTop 38 | Caption = #1044#1086#1073#1088#1086' '#1087#1086#1078#1072#1083#1086#1074#1072#1090#1100' '#1074' <'#1053#1072#1079#1074#1072#1085#1080#1077' '#1084#1072#1089#1090#1077#1088#1072'>!' 39 | Font.Charset = DEFAULT_CHARSET 40 | Font.Color = clWindowText 41 | Font.Height = -13 42 | Font.Name = 'Tahoma' 43 | Font.Style = [fsBold] 44 | ParentFont = False 45 | WordWrap = True 46 | ExplicitWidth = 224 47 | end 48 | object lblSubTitle: TLabel 49 | AlignWithMargins = True 50 | Left = 14 51 | Top = 46 52 | Width = 286 53 | Height = 15 54 | Margins.Left = 14 55 | Margins.Top = 7 56 | Margins.Right = 7 57 | Margins.Bottom = 0 58 | Align = alTop 59 | Caption = #1069#1090#1086#1090' '#1084#1072#1089#1090#1077#1088' '#1087#1086#1084#1086#1078#1077#1090' '#1074#1072#1084' <'#1085#1072#1079#1085#1072#1095#1077#1085#1080#1077' '#1084#1072#1089#1090#1077#1088#1072'>' 60 | WordWrap = True 61 | ExplicitTop = 30 62 | ExplicitWidth = 274 63 | end 64 | object lblPageHint: TLabel 65 | AlignWithMargins = True 66 | Left = 14 67 | Top = 324 68 | Width = 286 69 | Height = 15 70 | Margins.Left = 14 71 | Margins.Top = 0 72 | Margins.Right = 7 73 | Margins.Bottom = 7 74 | Align = alBottom 75 | Caption = #1063#1090#1086#1073#1099' '#1087#1088#1086#1076#1086#1083#1078#1080#1090#1100', '#1085#1072#1078#1084#1080#1090#1077' '#1042#1087#1077#1088#1105#1076 76 | ExplicitWidth = 204 77 | end 78 | end 79 | end 80 | -------------------------------------------------------------------------------- /Program/Forms/Editors/frm_edit_reader.dfm: -------------------------------------------------------------------------------- 1 | object frmEditReader: TfrmEditReader 2 | Left = 0 3 | Top = 0 4 | BorderStyle = bsDialog 5 | Caption = #1044#1086#1073#1072#1074#1083#1077#1085#1080#1077' '#1090#1080#1087#1072' '#1092#1072#1081#1083#1086#1074 6 | ClientHeight = 101 7 | ClientWidth = 415 8 | Color = clBtnFace 9 | Font.Charset = DEFAULT_CHARSET 10 | Font.Color = clWindowText 11 | Font.Height = -11 12 | Font.Name = 'Tahoma' 13 | Font.Style = [] 14 | Position = poMainFormCenter 15 | TextHeight = 13 16 | object Label1: TLabel 17 | Left = 8 18 | Top = 11 19 | Width = 22 20 | Height = 13 21 | Caption = '&'#1058#1080#1087':' 22 | FocusControl = edExt 23 | end 24 | object Label2: TLabel 25 | Left = 8 26 | Top = 38 27 | Width = 29 28 | Height = 13 29 | Caption = '&'#1055#1091#1090#1100':' 30 | FocusControl = edPath 31 | end 32 | object pnButtons: TPanel 33 | Left = 0 34 | Top = 60 35 | Width = 415 36 | Height = 41 37 | Align = alBottom 38 | BevelOuter = bvNone 39 | Caption = 'pnButtons' 40 | ShowCaption = False 41 | TabOrder = 3 42 | DesignSize = ( 43 | 415 44 | 41) 45 | object btnOk: TButton 46 | Left = 247 47 | Top = 10 48 | Width = 75 49 | Height = 25 50 | Anchors = [akTop, akRight] 51 | Caption = '&'#1057#1086#1093#1088#1072#1085#1080#1090#1100 52 | Default = True 53 | ModalResult = 1 54 | TabOrder = 0 55 | OnClick = btnSaveClick 56 | end 57 | object btnCancel: TButton 58 | Left = 328 59 | Top = 10 60 | Width = 75 61 | Height = 25 62 | Anchors = [akTop, akRight] 63 | Cancel = True 64 | Caption = '&'#1054#1090#1084#1077#1085#1072 65 | ModalResult = 2 66 | TabOrder = 1 67 | end 68 | end 69 | object edExt: TEdit 70 | Left = 56 71 | Top = 8 72 | Width = 121 73 | Height = 21 74 | TabOrder = 0 75 | TextHint = #1056#1072#1089#1096#1080#1088#1077#1085#1080#1077' '#1092#1072#1081#1083#1072 76 | end 77 | object edPath: TMHLAutoCompleteEdit 78 | Left = 56 79 | Top = 35 80 | Width = 270 81 | Height = 21 82 | TabOrder = 1 83 | TextHint = #1055#1091#1090#1100' '#1082' '#1087#1088#1086#1075#1088#1072#1084#1084#1077' '#1087#1088#1086#1089#1084#1086#1090#1088#1072 84 | end 85 | object btnBrowse: TButton 86 | Left = 332 87 | Top = 33 88 | Width = 75 89 | Height = 25 90 | Caption = #1054#1073#1079#1086#1088'...' 91 | TabOrder = 2 92 | OnClick = edPathButtonClick 93 | end 94 | end 95 | -------------------------------------------------------------------------------- /Program/UtilsImpl/unit_SyncOnLineThread.pas: -------------------------------------------------------------------------------- 1 | (* ***************************************************************************** 2 | * 3 | * MyHomeLib 4 | * 5 | * Copyright (C) 2008-2023 Oleksiy Penkov (aka Koreec) 6 | * 7 | * Author(s) Nick Rymanov (nrymanov@gmail.com) 8 | * Created 20.08.2008 9 | * Description 10 | * 11 | * $Id: unit_SyncOnLineThread.pas 840 2010-10-06 07:37:58Z nrymanov@gmail.com $ 12 | * 13 | * History 14 | * 15 | ****************************************************************************** *) 16 | 17 | unit unit_SyncOnLineThread; 18 | 19 | interface 20 | 21 | uses 22 | Windows, 23 | Classes, 24 | SysUtils, 25 | unit_WorkerThread, 26 | unit_CollectionWorkerThread; 27 | 28 | type 29 | TSyncOnLineThread = class(TCollectionWorker) 30 | protected 31 | procedure WorkFunction; override; 32 | end; 33 | 34 | implementation 35 | 36 | uses 37 | IOUtils, 38 | unit_Consts, 39 | unit_Globals, 40 | dm_user, 41 | unit_MHL_strings, 42 | unit_Messages, 43 | unit_Interfaces; 44 | 45 | { TImportXMLThread } 46 | 47 | procedure TSyncOnLineThread.WorkFunction; 48 | var 49 | BookIterator: IBookIterator; 50 | 51 | BookFile: string; 52 | 53 | IsLocal: Boolean; 54 | BookRecord: TBookRecord; 55 | begin 56 | Assert(Assigned(FSystemData)); 57 | Assert(Assigned(FCollection)); 58 | BookIterator := FCollection.GetBookIterator(bmAll, True); 59 | 60 | FProgressEngine.BeginOperation(BookIterator.RecordCount, rstrBookProcessedMsg1, rstrBookProcessedMsg2); 61 | try 62 | while BookIterator.Next(BookRecord) do 63 | begin 64 | if Canceled then 65 | Exit; 66 | 67 | try 68 | // 69 | // Проверяем был ли файл закачан ранее и ставим отметку в базу 70 | // 71 | BookFile := BookRecord.GetBookFileName; 72 | IsLocal := TFile.Exists(BookFile); 73 | 74 | if Settings.DeleteDeleted and IsLocal and (bpIsDeleted in BookRecord.BookProps) then 75 | begin 76 | TFile.Delete(BookFile); 77 | IsLocal := False; 78 | end; 79 | 80 | if (bpIsLocal in BookRecord.BookProps) <> IsLocal then 81 | begin 82 | FCollection.SetLocal(BookRecord.BookKey, IsLocal); 83 | unit_Messages.BookLocalStatusChanged(BookRecord.BookKey, IsLocal); 84 | end; 85 | except 86 | on E: Exception do 87 | Teletype(e.Message, tsError); 88 | end; 89 | 90 | FProgressEngine.AddProgress; 91 | end; 92 | finally 93 | FProgressEngine.EndOperation; 94 | end; 95 | end; 96 | 97 | end. 98 | 99 | -------------------------------------------------------------------------------- /Program/Wizards/NewCollection/unit_NCWParams.pas: -------------------------------------------------------------------------------- 1 | (* ***************************************************************************** 2 | * 3 | * MyHomeLib 4 | * 5 | * Copyright (C) 2008-2023 Oleksiy Penkov (aka Koreec) 6 | * 7 | * Authors Nick Rymanov nrymanov@gmail.com 8 | * Created 20.08.2008 9 | * Description 10 | * 11 | * $Id: unit_NCWParams.pas 1104 2012-01-27 04:43:24Z koreec $ 12 | * 13 | * History 14 | * 15 | ****************************************************************************** *) 16 | 17 | unit unit_NCWParams; 18 | 19 | interface 20 | 21 | uses unit_globals; 22 | 23 | type 24 | TNCWOperation = ( 25 | otNew, // создать новую пользовательскую коллекцию 26 | otExisting, // подключить существующую коллекцию 27 | otInpx, // создать коллекцию из INPX 28 | otInpxDownload // создать коллекцию из предварительно скачанного INPX 29 | ); 30 | 31 | TNCWCollectionType = ( 32 | ltUser, // нова¤ пользовательска¤ коллекци¤. тип книг определ¤етс¤ TNCWFileTypes 33 | ltUserFB, // пользовательска¤ коллекци¤ FB2 книг из INPX 34 | ltUserAny, // пользовательска¤ коллекци¤ не-FB2 книг из INPX 35 | ltExternalLocalFB, // внешн¤¤ локальна¤ коллекци¤ FB2 книг из INPX 36 | ltExternalOnlineFB, // внешн¤¤ онлайн коллекци¤ FB2 книг из INPX 37 | ltExternalLocalAny, // внешн¤¤ локальна¤ коллекци¤ не-FB2 книг из INPX 38 | ltExternalOnlineAny // внешн¤¤ онлайн коллекци¤ не-FB2 книг из INPX 39 | ); 40 | 41 | TNCWFileTypes = ( 42 | ftFB2, // в коллекции хран¤тс¤ файлы в формате FB2 43 | ftAny // в коллекции хран¤тс¤ файлы в произвольном формате 44 | ); 45 | 46 | PNCWParams = ^TNCWParams; 47 | TNCWParams = record 48 | Operation: TNCWOperation; 49 | CollectionType: TNCWCollectionType; 50 | FileTypes: TNCWFileTypes; 51 | DefaultGenres: Boolean; 52 | GenreFile: string; 53 | 54 | DisplayName: string; 55 | CollectionFile: string; 56 | CollectionRoot: string; 57 | 58 | INPXFile: string; 59 | 60 | AutoImport: boolean; 61 | 62 | // 63 | // необходимо перенести загрузку и установку этих значений в TImportInpxThread 64 | // 65 | //Notes: string; 66 | //URL: string; 67 | //Script: string; 68 | INPXUrl: string; 69 | 70 | // 71 | // реальный тип коллекции 72 | // 73 | CollectionCode: COLLECTION_TYPE; 74 | 75 | // 76 | // ID новой коллекции (созданной или подключенной) 77 | // 78 | CollectionID: Integer; 79 | end; 80 | 81 | implementation 82 | 83 | end. 84 | 85 | -------------------------------------------------------------------------------- /Program/Forms/Editors/frm_edit_reader.pas: -------------------------------------------------------------------------------- 1 | (* ***************************************************************************** 2 | * 3 | * MyHomeLib 4 | * 5 | * Copyright (C) 2008-2023 Oleksiy Penkov (aka Koreec) 6 | * 7 | * Authors Oleksiy Penkov oleksiy.penkov@gmail.com 8 | * Nick Rymanov nrymanov@gmail.com 9 | * Created 20.08.2008 10 | * Description 11 | * 12 | * $Id: frm_edit_reader.pas 549 2010-08-13 08:02:58Z eg_ $ 13 | * 14 | * History 15 | * 16 | ****************************************************************************** *) 17 | 18 | unit frm_edit_reader; 19 | 20 | interface 21 | 22 | uses 23 | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 24 | Dialogs, StdCtrls, Mask, ExtCtrls, unit_AutoCompleteEdit; 25 | 26 | type 27 | TfrmEditReader = class(TForm) 28 | edExt: TEdit; 29 | Label1: TLabel; 30 | edPath: TMHLAutoCompleteEdit; 31 | Label2: TLabel; 32 | pnButtons: TPanel; 33 | btnOk: TButton; 34 | btnCancel: TButton; 35 | btnBrowse: TButton; 36 | procedure edPathButtonClick(Sender: TObject); 37 | procedure btnSaveClick(Sender: TObject); 38 | private 39 | function GetExtension: string; 40 | function GetPath: string; 41 | procedure SetExtension(const Value: string); 42 | procedure SetPath(const Value: string); 43 | public 44 | property Extension: string read GetExtension write SetExtension; 45 | property Path: string read GetPath write SetPath; 46 | end; 47 | 48 | var 49 | frmEditReader: TfrmEditReader; 50 | 51 | implementation 52 | 53 | uses 54 | unit_Helpers; 55 | 56 | resourcestring 57 | rstrMissingFileType = 'Тип файла не указан!'; 58 | 59 | {$R *.dfm} 60 | 61 | procedure TfrmEditReader.edPathButtonClick(Sender: TObject); 62 | var 63 | AFileName: string; 64 | begin 65 | if GetFileName(fnSelectReader, AFileName) then 66 | edPath.Text := AFileName; 67 | end; 68 | 69 | function TfrmEditReader.GetExtension: string; 70 | begin 71 | Result := AnsiLowerCase(Trim(edExt.Text)); 72 | end; 73 | 74 | function TfrmEditReader.GetPath: string; 75 | begin 76 | Result := Trim(edPath.Text); 77 | end; 78 | 79 | procedure TfrmEditReader.SetExtension(const Value: string); 80 | begin 81 | edExt.Text := Value; 82 | end; 83 | 84 | procedure TfrmEditReader.SetPath(const Value: string); 85 | begin 86 | edPath.Text := Value; 87 | end; 88 | 89 | procedure TfrmEditReader.btnSaveClick(Sender: TObject); 90 | begin 91 | if Extension = '' then 92 | MessageDlg(rstrMissingFileType, mtError, [mbOk], 0) 93 | else 94 | ModalResult := mrOk; 95 | end; 96 | 97 | end. 98 | -------------------------------------------------------------------------------- /Program/Forms/frm_search.pas: -------------------------------------------------------------------------------- 1 | (* ***************************************************************************** 2 | * 3 | * MyHomeLib 4 | * 5 | * Copyright (C) 2008-2023 Oleksiy Penkov (aka Koreec) 6 | * 7 | * Authors Oleksiy Penkov oleksiy.penkov@gmail.com 8 | * Nick Rymanov nrymanov@gmail.com 9 | * Created 20.08.2008 10 | * Description 11 | * 12 | * $Id: frm_search.pas 854 2010-10-08 13:43:19Z eg_ $ 13 | * 14 | * History 15 | * 16 | ****************************************************************************** *) 17 | 18 | unit frm_search; 19 | 20 | interface 21 | 22 | uses 23 | Windows, 24 | Messages, 25 | SysUtils, 26 | Variants, 27 | Classes, 28 | Graphics, 29 | Controls, 30 | Forms, 31 | Dialogs, 32 | StdCtrls, 33 | Mask, 34 | ExtCtrls, 35 | MHLSimplePanel, 36 | unit_Globals, 37 | unit_Events; 38 | 39 | type 40 | TfrmBookSearch = class(TForm) 41 | RzPanel1: TMHLSimplePanel; 42 | Label1: TLabel; 43 | edText: TEdit; 44 | procedure FormCreate(Sender: TObject); 45 | procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); 46 | procedure edTextChange(Sender: TObject); 47 | procedure edTextKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); 48 | 49 | private 50 | FBusy: boolean; 51 | FOnLocateBook: TOnLocateBookEvent; 52 | 53 | public 54 | property OnLocateBook: TOnLocateBookEvent read FOnLocateBook write FOnLocateBook; 55 | 56 | end; 57 | 58 | implementation 59 | 60 | {$R *.dfm} 61 | 62 | procedure TfrmBookSearch.FormCreate(Sender: TObject); 63 | begin 64 | FBusy := False; 65 | end; 66 | 67 | procedure TfrmBookSearch.edTextChange(Sender: TObject); 68 | begin 69 | if not FBusy then 70 | begin 71 | FBusy := True; 72 | try 73 | Assert(Assigned(FOnLocateBook)); 74 | FOnLocateBook(edText.Text, False) 75 | finally 76 | FBusy := False; 77 | end; 78 | end; 79 | end; 80 | 81 | procedure TfrmBookSearch.edTextKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); 82 | begin 83 | if (Key = VK_RIGHT) and not FBusy then 84 | begin 85 | FBusy := True; 86 | try 87 | Assert(Assigned(FOnLocateBook)); 88 | FOnLocateBook(edText.Text, True) 89 | finally 90 | FBusy := False; 91 | end; 92 | end; 93 | end; 94 | 95 | procedure TfrmBookSearch.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); 96 | begin 97 | if (Key = VK_RETURN) or (Key = VK_ESCAPE) then 98 | Close; 99 | end; 100 | 101 | end. 102 | -------------------------------------------------------------------------------- /Program/Forms/Editors/frm_edit_author.pas: -------------------------------------------------------------------------------- 1 | (* ***************************************************************************** 2 | * 3 | * MyHomeLib 4 | * 5 | * Copyright (C) 2008-2023 Oleksiy Penkov (aka Koreec) 6 | * 7 | * Authors Oleksiy Penkov oleksiy.penkov@gmail.com 8 | * Nick Rymanov nrymanov@gmail.com 9 | * Created 20.08.2008 10 | * Description 11 | * 12 | * $Id: frm_edit_author.pas 543 2010-07-29 06:34:09Z nrymanov@gmail.com $ 13 | * 14 | * ¬Ќ»ћјЌ»≈!!! Ёта форма ¤вл¤етс¤ базовой дл¤ TfrmEditAuthorDataEx. 15 | * Ћюбые изменени¤, сделанные в этой форме, будут вли¤ть и на производную. 16 | * 17 | * History 18 | * 19 | ****************************************************************************** *) 20 | 21 | unit frm_edit_author; 22 | 23 | interface 24 | 25 | uses 26 | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 27 | Dialogs, StdCtrls, Mask, ExtCtrls; 28 | 29 | type 30 | TfrmEditAuthorData = class(TForm) 31 | Label1: TLabel; 32 | Label2: TLabel; 33 | Label3: TLabel; 34 | edLastName: TEdit; 35 | edFirstName: TEdit; 36 | edMiddleName: TEdit; 37 | pnButtons: TPanel; 38 | btnOk: TButton; 39 | btnCancel: TButton; 40 | 41 | private 42 | function GetFirstName: string; 43 | function GetLastName: string; 44 | function GetMidName: string; 45 | procedure SetFirstName(const Value: string); 46 | procedure SetLastName(const Value: string); 47 | procedure SetMidName(const Value: string); 48 | 49 | public 50 | property LastName: string read GetLastName write SetLastName; 51 | property FirstName: string read GetFirstName write SetFirstName; 52 | property MidName: string read GetMidName write SetMidName; 53 | end; 54 | 55 | var 56 | frmEditAuthorData: TfrmEditAuthorData; 57 | 58 | implementation 59 | 60 | {$R *.dfm} 61 | 62 | { TfrmEditAuthorData } 63 | 64 | function TfrmEditAuthorData.GetFirstName: string; 65 | begin 66 | Result := Trim(edFirstName.Text); 67 | end; 68 | 69 | function TfrmEditAuthorData.GetLastName: string; 70 | begin 71 | Result := Trim(edLastName.Text); 72 | end; 73 | 74 | function TfrmEditAuthorData.GetMidName: string; 75 | begin 76 | Result := Trim(edMiddleName.Text); 77 | end; 78 | 79 | procedure TfrmEditAuthorData.SetFirstName(const Value: string); 80 | begin 81 | edFirstName.Text := Value; 82 | end; 83 | 84 | procedure TfrmEditAuthorData.SetLastName(const Value: string); 85 | begin 86 | edLastName.Text := Value; 87 | end; 88 | 89 | procedure TfrmEditAuthorData.SetMidName(const Value: string); 90 | begin 91 | edMiddleName.Text := Value; 92 | end; 93 | 94 | end. 95 | -------------------------------------------------------------------------------- /Program/UtilsImpl/unit_ExportToDevice.pas: -------------------------------------------------------------------------------- 1 | (* ***************************************************************************** 2 | * 3 | * MyHomeLib 4 | * 5 | * Copyright (C) 2008-2023 Oleksiy Penkov (aka Koreec) 6 | * 7 | * Authors Oleksiy Penkov oleksiy.penkov@gmail.com 8 | * Nick Rymanov nrymanov@gmail.com 9 | * 10 | ****************************************************************************** *) 11 | 12 | unit unit_ExportToDevice; 13 | 14 | interface 15 | 16 | uses 17 | Controls, 18 | Forms, 19 | Dialogs, 20 | Windows, 21 | unit_Globals; 22 | 23 | procedure ExportToDevice( 24 | const DeviceDir: string; 25 | const IdList: TBookIdList; 26 | const Mode: TExportMode; 27 | const ExtractOnly: Boolean; 28 | out ProcessedFiles:string 29 | ); 30 | 31 | procedure DownloadBooks(const IdList: TBookIdList); 32 | 33 | implementation 34 | 35 | uses 36 | unit_ExportToDeviceThread, 37 | frm_ExportToDeviceProgressForm, 38 | unit_DownloadBooksThread, 39 | frm_DownloadProgressForm; 40 | 41 | resourcestring 42 | rstrSendToDevice = 'Отправить на устройство'; 43 | rstrDownloadingBooks = 'Скачивание книг'; 44 | 45 | procedure ExportToDevice( 46 | const DeviceDir: string; 47 | const IdList: TBookIdList; 48 | const Mode: TExportMode; 49 | const ExtractOnly: Boolean; 50 | out ProcessedFiles: string 51 | ); 52 | var 53 | worker: TExportToDeviceThread; 54 | frmProgress: TExportToDeviceProgressForm; 55 | begin 56 | worker := TExportToDeviceThread.Create; 57 | try 58 | worker.DeviceDir := DeviceDir; 59 | worker.BookIdList := IdList; 60 | worker.ExportMode := Mode; 61 | worker.ExtractOnly := ExtractOnly; 62 | frmProgress := TExportToDeviceProgressForm.Create(Application); 63 | try 64 | frmProgress.Caption := rstrSendToDevice; 65 | frmProgress.WorkerThread := worker; 66 | frmProgress.ShowModal; 67 | ProcessedFiles := worker.ProcessedFiles; 68 | finally 69 | frmProgress.Free; 70 | end; 71 | finally 72 | worker.Free; 73 | end; 74 | end; 75 | 76 | procedure DownloadBooks(const IdList: TBookIdList); 77 | var 78 | worker: TDownloadBooksThread; 79 | frmProgress: TDownloadProgressForm; 80 | begin 81 | worker := TDownloadBooksThread.Create; 82 | try 83 | worker.BookIdList := IdList; 84 | frmProgress := TDownloadProgressForm.Create(Application); 85 | try 86 | frmProgress.Caption := rstrDownloadingBooks; 87 | frmProgress.WorkerThread := worker; 88 | frmProgress.ShowModal; 89 | finally 90 | frmProgress.Free; 91 | end; 92 | finally 93 | worker.Free; 94 | end; 95 | end; 96 | 97 | 98 | end. 99 | 100 | -------------------------------------------------------------------------------- /Program/Wizards/NewCollection/frame_NCWDownload.dfm: -------------------------------------------------------------------------------- 1 | inherited frameNCWDownload: TframeNCWDownload 2 | Height = 160 3 | Constraints.MinHeight = 160 4 | Constraints.MinWidth = 320 5 | ExplicitHeight = 160 6 | object lblStatus: TLabel [0] 7 | AlignWithMargins = True 8 | Left = 14 9 | Top = 65 10 | Width = 292 11 | Height = 15 12 | Margins.Left = 14 13 | Margins.Top = 7 14 | Margins.Right = 14 15 | Margins.Bottom = 0 16 | Align = alTop 17 | Caption = #1055#1086#1076#1082#1083#1102#1095#1077#1085#1080#1077'...' 18 | ExplicitWidth = 87 19 | end 20 | object Bar: TProgressBar [1] 21 | AlignWithMargins = True 22 | Left = 14 23 | Top = 87 24 | Width = 292 25 | Height = 17 26 | Margins.Left = 14 27 | Margins.Top = 7 28 | Margins.Right = 14 29 | Margins.Bottom = 0 30 | Align = alTop 31 | TabOrder = 1 32 | ExplicitTop = 85 33 | end 34 | inherited pnTitle: TPanel 35 | Height = 58 36 | StyleElements = [seFont, seClient, seBorder] 37 | ExplicitHeight = 58 38 | inherited lblTitle: TLabel 39 | Width = 292 40 | Caption = #1047#1072#1075#1088#1091#1079#1082#1072' '#1092#1072#1081#1083#1072' INPX' 41 | StyleElements = [seFont, seClient, seBorder] 42 | ExplicitWidth = 122 43 | end 44 | inherited lblSubTitle: TLabel 45 | Width = 285 46 | Caption = #1055#1086#1076#1086#1078#1076#1080#1090#1077', '#1087#1086#1082#1072' '#1092#1072#1081#1083' '#1073#1091#1076#1077#1090' '#1079#1072#1075#1088#1091#1078#1077#1085' '#1089' '#1089#1077#1088#1074#1077#1088#1072 47 | StyleElements = [seFont, seClient, seBorder] 48 | ExplicitWidth = 269 49 | end 50 | end 51 | object HTTP: TIdHTTP 52 | OnWork = HTTPWork 53 | OnWorkBegin = HTTPWorkBegin 54 | OnWorkEnd = HTTPWorkEnd 55 | HandleRedirects = True 56 | ProxyParams.BasicAuthentication = False 57 | ProxyParams.ProxyPort = 0 58 | Request.ContentLength = -1 59 | Request.ContentRangeEnd = -1 60 | Request.ContentRangeStart = -1 61 | Request.ContentRangeInstanceLength = -1 62 | Request.Accept = 'text/html, */*' 63 | Request.BasicAuthentication = False 64 | Request.UserAgent = 'Mozilla/3.0 (compatible; Indy Library)' 65 | Request.Ranges.Units = 'bytes' 66 | Request.Ranges = <> 67 | HTTPOptions = [hoForceEncodeParams] 68 | Left = 16 69 | Top = 112 70 | end 71 | object IdSSLIOHandlerSocketOpenSSL: TIdSSLIOHandlerSocketOpenSSL 72 | MaxLineAction = maException 73 | Port = 0 74 | DefaultPort = 0 75 | SSLOptions.Mode = sslmUnassigned 76 | SSLOptions.VerifyMode = [] 77 | SSLOptions.VerifyDepth = 0 78 | Left = 192 79 | Top = 112 80 | end 81 | object IdSocksInfo: TIdSocksInfo 82 | Left = 72 83 | Top = 112 84 | end 85 | end 86 | -------------------------------------------------------------------------------- /Program/Forms/Editors/frm_edit_script.dfm: -------------------------------------------------------------------------------- 1 | object frmEditScript: TfrmEditScript 2 | Left = 0 3 | Top = 0 4 | BorderStyle = bsDialog 5 | Caption = #1055#1072#1088#1072#1084#1077#1090#1088#1099' '#1089#1082#1088#1080#1087#1090#1072 6 | ClientHeight = 189 7 | ClientWidth = 346 8 | Color = clBtnFace 9 | Font.Charset = DEFAULT_CHARSET 10 | Font.Color = clWindowText 11 | Font.Height = -11 12 | Font.Name = 'Tahoma' 13 | Font.Style = [] 14 | Position = poMainFormCenter 15 | TextHeight = 13 16 | object Label1: TLabel 17 | Left = 8 18 | Top = 8 19 | Width = 52 20 | Height = 13 21 | Caption = '&'#1053#1072#1079#1074#1072#1085#1080#1077':' 22 | FocusControl = edTitle 23 | end 24 | object Label2: TLabel 25 | Left = 8 26 | Top = 54 27 | Width = 29 28 | Height = 13 29 | Caption = '&'#1055#1091#1090#1100':' 30 | FocusControl = edPath 31 | end 32 | object Label3: TLabel 33 | Left = 8 34 | Top = 100 35 | Width = 61 36 | Height = 13 37 | Caption = #1055#1072#1088#1072#1084#1077#1090#1088#1099':' 38 | FocusControl = edParams 39 | end 40 | object pnButtons: TPanel 41 | Left = 0 42 | Top = 148 43 | Width = 346 44 | Height = 41 45 | Align = alBottom 46 | BevelOuter = bvNone 47 | Caption = 'pnButtons' 48 | ShowCaption = False 49 | TabOrder = 4 50 | DesignSize = ( 51 | 346 52 | 41) 53 | object btnOk: TButton 54 | Left = 178 55 | Top = 10 56 | Width = 75 57 | Height = 25 58 | Anchors = [akTop, akRight] 59 | Caption = '&'#1057#1086#1093#1088#1072#1085#1080#1090#1100 60 | Default = True 61 | ModalResult = 1 62 | TabOrder = 0 63 | OnClick = btnSaveClick 64 | end 65 | object btnCancel: TButton 66 | Left = 259 67 | Top = 10 68 | Width = 75 69 | Height = 25 70 | Anchors = [akTop, akRight] 71 | Cancel = True 72 | Caption = '&'#1054#1090#1084#1077#1085#1072 73 | ModalResult = 2 74 | TabOrder = 1 75 | end 76 | end 77 | object edParams: TEdit 78 | Left = 8 79 | Top = 119 80 | Width = 330 81 | Height = 21 82 | TabOrder = 3 83 | end 84 | object edPath: TMHLAutoCompleteEdit 85 | Left = 8 86 | Top = 73 87 | Width = 249 88 | Height = 21 89 | TabOrder = 1 90 | end 91 | object edTitle: TEdit 92 | Left = 8 93 | Top = 27 94 | Width = 330 95 | Height = 21 96 | TabOrder = 0 97 | end 98 | object btnBrowse: TButton 99 | Left = 263 100 | Top = 71 101 | Width = 75 102 | Height = 25 103 | Caption = #1054#1073#1079#1086#1088'...' 104 | TabOrder = 2 105 | OnClick = edPathButtonClick 106 | end 107 | end 108 | -------------------------------------------------------------------------------- /Program/DAO/SQLite/unit_SQLiteUtils.pas: -------------------------------------------------------------------------------- 1 | (* ***************************************************************************** 2 | * 3 | * MyHomeLib 4 | * 5 | * Copyright (C) 2008-2023 Oleksiy Penkov (aka Koreec) 6 | * 7 | * Author(s) eg 8 | * Nick Rymanov nrymanov@gmail.com 9 | * Created 04.09.2010 10 | * Description 11 | * 12 | * $Id: unit_SQLiteUtils.pas 774 2010-09-16 06:38:23Z nrymanov@gmail.com $ 13 | * 14 | * History 15 | * 16 | ****************************************************************************** *) 17 | 18 | unit unit_SQLiteUtils; 19 | 20 | interface 21 | 22 | uses 23 | Classes; 24 | 25 | function ReadResourceAsStringList(const ResourceName: string): TStringList; 26 | 27 | implementation 28 | 29 | uses 30 | Windows, 31 | unit_Consts, 32 | SysUtils, 33 | StrUtils; 34 | 35 | const 36 | SQL_COMMENT = '--'; 37 | SCRIPT_NEXT = SQL_COMMENT + '@@'; 38 | 39 | // 40 | // Read provided resource file as a string list (split by '--@@') 41 | // This is done as ExecSQL works with only one statement at a time 42 | // 43 | function ReadResourceAsStringList(const ResourceName: string): TStringList; 44 | var 45 | rStream: TStream; 46 | rScript: TStringList; 47 | i: Integer; 48 | strStatement: string; 49 | begin 50 | Result := TStringList.Create; 51 | try 52 | rStream := TResourceStream.Create(HInstance, ResourceName, RT_RCDATA); 53 | try 54 | rScript := TStringList.Create; 55 | try 56 | rScript.LoadFromStream(rStream); 57 | 58 | strStatement := ''; 59 | for i := 0 to rScript.Count - 1 do 60 | begin 61 | // 62 | // Пропустим пустые строки 63 | // 64 | if Trim(rScript[i]) = '' then 65 | Continue; 66 | 67 | // 68 | // Нашли конец команды. Запомним и начнем следующий цикл. 69 | // 70 | if StartsText(SCRIPT_NEXT, rScript[i]) then 71 | begin 72 | if strStatement <> '' then 73 | Result.Add(strStatement); 74 | strStatement := ''; 75 | Continue; 76 | end; 77 | 78 | // 79 | // Пропустим коментарии 80 | // 81 | if StartsText(SQL_COMMENT, TrimLeft(rScript[i])) then 82 | Continue; 83 | 84 | strStatement := strStatement + rScript[i] + CRLF; 85 | end; 86 | 87 | // 88 | // Последняя команда может не иметь маркера завершения. 89 | // 90 | if strStatement <> '' then 91 | Result.Add(strStatement); 92 | finally 93 | rScript.Free; 94 | end; 95 | finally 96 | rStream.Free; 97 | end; 98 | except 99 | FreeAndNil(Result); 100 | raise; 101 | end; 102 | end; 103 | 104 | 105 | end. 106 | -------------------------------------------------------------------------------- /Program/Wizards/NewCollection/frame_NCWOperation.dfm: -------------------------------------------------------------------------------- 1 | inherited frameNCWOperation: TframeNCWOperation 2 | Width = 330 3 | Height = 210 4 | Constraints.MinHeight = 210 5 | Constraints.MinWidth = 330 6 | ExplicitWidth = 330 7 | ExplicitHeight = 210 8 | object pageHint: TMHLStaticTip [0] 9 | AlignWithMargins = True 10 | Left = 14 11 | Top = 142 12 | Width = 302 13 | Height = 58 14 | Margins.Left = 14 15 | Margins.Right = 14 16 | Images = DMUser.SeverityImagesBig 17 | ImageIndex = 0 18 | Align = alTop 19 | ExplicitTop = 245 20 | end 21 | inherited pnTitle: TPanel 22 | Width = 330 23 | Height = 58 24 | StyleElements = [seFont, seClient, seBorder] 25 | ExplicitWidth = 330 26 | ExplicitHeight = 58 27 | inherited lblTitle: TLabel 28 | Width = 302 29 | Caption = #1058#1080#1087' '#1082#1086#1083#1083#1077#1082#1094#1080#1080 30 | StyleElements = [seFont, seClient, seBorder] 31 | ExplicitWidth = 85 32 | end 33 | inherited lblSubTitle: TLabel 34 | Width = 295 35 | Caption = #1059#1082#1072#1078#1080#1090#1077' '#1090#1080#1087' '#1085#1086#1074#1086#1081' '#1082#1086#1083#1083#1077#1082#1094#1080#1080 36 | StyleElements = [seFont, seClient, seBorder] 37 | ExplicitWidth = 168 38 | end 39 | end 40 | object Panel1: TPanel 41 | Left = 0 42 | Top = 58 43 | Width = 330 44 | Height = 81 45 | Align = alTop 46 | BevelOuter = bvNone 47 | TabOrder = 1 48 | object rbNew: TRadioButton 49 | AlignWithMargins = True 50 | Left = 14 51 | Top = 14 52 | Width = 195 53 | Height = 17 54 | Margins.Left = 14 55 | Margins.Top = 7 56 | Margins.Right = 7 57 | Margins.Bottom = 0 58 | Caption = #1053#1086#1074#1072#1103' '#1087#1091#1089#1090#1072#1103' '#1082#1086#1083#1083#1077#1082#1094#1080#1103 59 | Checked = True 60 | TabOrder = 0 61 | TabStop = True 62 | OnClick = OnSetCollectionType 63 | end 64 | object rbExisting: TRadioButton 65 | AlignWithMargins = True 66 | Left = 14 67 | Top = 38 68 | Width = 203 69 | Height = 17 70 | Margins.Left = 14 71 | Margins.Top = 7 72 | Margins.Right = 7 73 | Margins.Bottom = 0 74 | Caption = #1057#1091#1097#1077#1089#1090#1074#1091#1102#1097#1072#1103' '#1082#1086#1083#1083#1077#1082#1094#1080#1103' (hlc2)' 75 | TabOrder = 1 76 | OnClick = OnSetCollectionType 77 | end 78 | object rbInpx: TRadioButton 79 | AlignWithMargins = True 80 | Left = 14 81 | Top = 62 82 | Width = 306 83 | Height = 17 84 | Margins.Left = 7 85 | Margins.Top = 7 86 | Margins.Right = 7 87 | Margins.Bottom = 0 88 | Caption = #1050#1086#1083#1083#1077#1082#1094#1080#1103' '#1080#1079' '#1092#1072#1081#1083#1072' inpx' 89 | TabOrder = 2 90 | OnClick = OnSetCollectionType 91 | end 92 | end 93 | end 94 | -------------------------------------------------------------------------------- /Program/Forms/frm_genre_tree.dfm: -------------------------------------------------------------------------------- 1 | object frmGenreTree: TfrmGenreTree 2 | Left = 0 3 | Top = 0 4 | BorderStyle = bsDialog 5 | Caption = #1057#1087#1080#1089#1086#1082' '#1078#1072#1085#1088#1086#1074 6 | ClientHeight = 482 7 | ClientWidth = 313 8 | Color = clBtnFace 9 | Font.Charset = DEFAULT_CHARSET 10 | Font.Color = clWindowText 11 | Font.Height = -11 12 | Font.Name = 'Tahoma' 13 | Font.Style = [] 14 | Position = poMainFormCenter 15 | TextHeight = 13 16 | object pnButtons: TPanel 17 | Left = 0 18 | Top = 441 19 | Width = 313 20 | Height = 41 21 | Align = alBottom 22 | BevelOuter = bvNone 23 | Caption = 'pnButtons' 24 | ShowCaption = False 25 | TabOrder = 1 26 | DesignSize = ( 27 | 313 28 | 41) 29 | object btnOk: TButton 30 | Left = 145 31 | Top = 10 32 | Width = 75 33 | Height = 25 34 | Anchors = [akTop, akRight] 35 | Caption = '&'#1057#1086#1093#1088#1072#1085#1080#1090#1100 36 | Default = True 37 | ModalResult = 1 38 | TabOrder = 0 39 | end 40 | object btnCancel: TButton 41 | Left = 226 42 | Top = 10 43 | Width = 75 44 | Height = 25 45 | Anchors = [akTop, akRight] 46 | Cancel = True 47 | Caption = '&'#1054#1090#1084#1077#1085#1072 48 | ModalResult = 2 49 | TabOrder = 1 50 | end 51 | end 52 | object tvGenresTree: TVirtualStringTree 53 | AlignWithMargins = True 54 | Left = 3 55 | Top = 3 56 | Width = 307 57 | Height = 435 58 | Align = alClient 59 | Colors.BorderColor = 15987699 60 | Colors.DisabledColor = clGray 61 | Colors.DropMarkColor = 15385233 62 | Colors.DropTargetColor = 15385233 63 | Colors.DropTargetBorderColor = 15385233 64 | Colors.FocusedSelectionColor = 15385233 65 | Colors.FocusedSelectionBorderColor = 15385233 66 | Colors.GridLineColor = 15987699 67 | Colors.HeaderHotColor = clBlack 68 | Colors.HotColor = clBlack 69 | Colors.SelectionRectangleBlendColor = 15385233 70 | Colors.SelectionRectangleBorderColor = 15385233 71 | Colors.SelectionTextColor = clBlack 72 | Colors.TreeLineColor = 9471874 73 | Colors.UnfocusedColor = clGray 74 | Colors.UnfocusedSelectionColor = clWhite 75 | Colors.UnfocusedSelectionBorderColor = clWhite 76 | Header.AutoSizeIndex = 0 77 | Header.DefaultHeight = 17 78 | Header.Height = 17 79 | Header.MainColumn = -1 80 | Header.Options = [hoColumnResize, hoDrag] 81 | TabOrder = 0 82 | TreeOptions.SelectionOptions = [toFullRowSelect, toMultiSelect, toRightClickSelect] 83 | OnFreeNode = tvGenresTreeFreeNode 84 | OnGetText = tvGenresTreeGetText 85 | OnGetNodeDataSize = tvGenresTreeGetNodeDataSize 86 | Touch.InteractiveGestures = [igPan, igPressAndTap] 87 | Touch.InteractiveGestureOptions = [igoPanSingleFingerHorizontal, igoPanSingleFingerVertical, igoPanInertia, igoPanGutter, igoParentPassthrough] 88 | Columns = <> 89 | end 90 | end 91 | -------------------------------------------------------------------------------- /Program/Forms/frm_author_list.dfm: -------------------------------------------------------------------------------- 1 | object frmAuthorList: TfrmAuthorList 2 | Left = 0 3 | Top = 0 4 | BorderStyle = bsDialog 5 | Caption = #1057#1087#1080#1089#1086#1082' '#1072#1074#1090#1086#1088#1086#1074 6 | ClientHeight = 424 7 | ClientWidth = 327 8 | Color = clBtnFace 9 | Font.Charset = DEFAULT_CHARSET 10 | Font.Color = clWindowText 11 | Font.Height = -11 12 | Font.Name = 'Tahoma' 13 | Font.Style = [] 14 | Position = poMainFormCenter 15 | TextHeight = 13 16 | object tvAuthorList: TVirtualStringTree 17 | AlignWithMargins = True 18 | Left = 3 19 | Top = 3 20 | Width = 321 21 | Height = 377 22 | Align = alClient 23 | Colors.BorderColor = 15987699 24 | Colors.DisabledColor = clGray 25 | Colors.DropMarkColor = 15385233 26 | Colors.DropTargetColor = 15385233 27 | Colors.DropTargetBorderColor = 15385233 28 | Colors.FocusedSelectionColor = 15385233 29 | Colors.FocusedSelectionBorderColor = 15385233 30 | Colors.GridLineColor = 15987699 31 | Colors.HeaderHotColor = clBlack 32 | Colors.HotColor = clBlack 33 | Colors.SelectionRectangleBlendColor = 15385233 34 | Colors.SelectionRectangleBorderColor = 15385233 35 | Colors.SelectionTextColor = clBlack 36 | Colors.TreeLineColor = 9471874 37 | Colors.UnfocusedColor = clGray 38 | Colors.UnfocusedSelectionColor = clWhite 39 | Colors.UnfocusedSelectionBorderColor = clWhite 40 | Header.AutoSizeIndex = 0 41 | Header.DefaultHeight = 17 42 | Header.Height = 17 43 | Header.MainColumn = -1 44 | Header.Options = [hoColumnResize, hoDrag] 45 | TabOrder = 0 46 | TreeOptions.SelectionOptions = [toFullRowSelect, toMultiSelect, toRightClickSelect] 47 | OnFreeNode = tvAuthorListFreeNode 48 | OnGetText = tvAuthorListGetText 49 | OnGetNodeDataSize = tvAuthorListGetNodeDataSize 50 | Touch.InteractiveGestures = [igPan, igPressAndTap] 51 | Touch.InteractiveGestureOptions = [igoPanSingleFingerHorizontal, igoPanSingleFingerVertical, igoPanInertia, igoPanGutter, igoParentPassthrough] 52 | Columns = <> 53 | end 54 | object pnButtons: TPanel 55 | Left = 0 56 | Top = 383 57 | Width = 327 58 | Height = 41 59 | Align = alBottom 60 | BevelOuter = bvNone 61 | Caption = 'pnButtons' 62 | ShowCaption = False 63 | TabOrder = 1 64 | DesignSize = ( 65 | 327 66 | 41) 67 | object btnOk: TButton 68 | Left = 159 69 | Top = 10 70 | Width = 75 71 | Height = 25 72 | Anchors = [akTop, akRight] 73 | Caption = '&'#1057#1086#1093#1088#1072#1085#1080#1090#1100 74 | Default = True 75 | ModalResult = 1 76 | TabOrder = 0 77 | end 78 | object btnCancel: TButton 79 | Left = 240 80 | Top = 10 81 | Width = 75 82 | Height = 25 83 | Anchors = [akTop, akRight] 84 | Cancel = True 85 | Caption = '&'#1054#1090#1084#1077#1085#1072 86 | ModalResult = 2 87 | TabOrder = 1 88 | end 89 | end 90 | end 91 | -------------------------------------------------------------------------------- /Components/MHLComponents/files_list.pas: -------------------------------------------------------------------------------- 1 | (* ***************************************************************************** 2 | * 3 | * MyHomeLib 4 | * 5 | * Copyright (C) 2008-2023 Oleksiy Penkov (aka Koreec) 6 | * 7 | * Authors Oleksiy Penkov oleksiy.penkov@gmail.com 8 | * Nick Rymanov nrymanov@gmail.com 9 | * Created 20.08.2008 10 | * Description 11 | * 12 | * $Id: files_list.pas 1181 2015-04-01 02:06:36Z koreec $ 13 | * 14 | * History 15 | * 16 | ****************************************************************************** *) 17 | 18 | unit files_list; 19 | 20 | interface 21 | 22 | uses 23 | WinApi.Windows, 24 | WinApi.Messages, 25 | SysUtils, 26 | Classes; 27 | 28 | type 29 | TOnDirectoryEvent = procedure(Sender: TObject; const Dir: string) of object; 30 | TOnFileEvent = procedure(Sender: TObject; const F: TSearchRec) of object; 31 | 32 | type 33 | TFilesList = class(TComponent) 34 | private 35 | FTargetPath: string; 36 | FLastDir: string; 37 | 38 | FOnDirectory: TOnDirectoryEvent; 39 | FOnFile: TOnFileEvent; 40 | FTerminate: boolean; 41 | FMask : string; 42 | 43 | procedure SetTargetPath(const S: string); 44 | 45 | procedure Recurs(const S: string; Level: Integer); 46 | public 47 | procedure Process; 48 | procedure Stop; 49 | published 50 | property TargetPath: string read FTargetPath write SetTargetPath; 51 | property LastDir: string read FLastDir; 52 | 53 | property OnDirectory: TOnDirectoryEvent read FOnDirectory write FOnDirectory; 54 | property OnFile: TOnFileEvent read FOnFile write FOnFile; 55 | property Terminate: boolean read FTerminate; 56 | property Mask: string write FMask; 57 | end; 58 | 59 | implementation 60 | 61 | procedure TFilesList.SetTargetPath(const S: string); 62 | begin 63 | FTargetPath := IncludeTrailingPathDelimiter(S); 64 | end; 65 | 66 | procedure TFilesList.Stop; 67 | begin 68 | FTerminate := True; 69 | end; 70 | 71 | procedure TFilesList.Process; 72 | begin 73 | FTerminate := False; 74 | if FMask = '' then FMask := '*.*'; 75 | Recurs(FTargetPath, 0); 76 | end; 77 | 78 | procedure TFilesList.Recurs(const S: string; Level: Integer); 79 | var 80 | F: TSearchRec; 81 | begin 82 | if (Level > 512) then 83 | Exit; 84 | 85 | if Assigned(FOnDirectory) then 86 | FOnDirectory(Self, S); 87 | 88 | if FindFirst(S + FMask, faAnyFile, F) = 0 then 89 | begin 90 | repeat 91 | if FTerminate then Break; 92 | 93 | FLastDir := S; 94 | if Assigned(FOnFile) then 95 | FOnFile(Self, F); 96 | 97 | if (F.Attr and faDirectory = faDirectory) and (F.Name <> '.') and (F.Name <> '..') then 98 | Recurs(IncludeTrailingPathDelimiter(S + F.Name), Level + 1); 99 | until FindNext(F) <> 0; 100 | 101 | FindClose(F); 102 | end; 103 | end; 104 | 105 | end. 106 | -------------------------------------------------------------------------------- /Program/Forms/frm_statistic.dfm: -------------------------------------------------------------------------------- 1 | object frmStat: TfrmStat 2 | Left = 0 3 | Top = 0 4 | BorderStyle = bsDialog 5 | Caption = #1057#1090#1072#1090#1080#1089#1090#1080#1082#1072' '#1082#1086#1083#1083#1077#1082#1094#1080#1080 6 | ClientHeight = 244 7 | ClientWidth = 473 8 | Color = clBtnFace 9 | Font.Charset = DEFAULT_CHARSET 10 | Font.Color = clWindowText 11 | Font.Height = -11 12 | Font.Name = 'Tahoma' 13 | Font.Style = [] 14 | Position = poScreenCenter 15 | DesignSize = ( 16 | 473 17 | 244) 18 | TextHeight = 13 19 | object btnClose: TButton 20 | Left = 386 21 | Top = 211 22 | Width = 75 23 | Height = 25 24 | Anchors = [akRight, akBottom] 25 | Cancel = True 26 | Caption = #1047#1072#1082#1088#1099#1090#1100 27 | Default = True 28 | ModalResult = 1 29 | TabOrder = 0 30 | end 31 | object lvInfo: TListView 32 | Left = 8 33 | Top = 8 34 | Width = 453 35 | Height = 197 36 | Anchors = [akLeft, akTop, akRight, akBottom] 37 | Columns = < 38 | item 39 | Caption = 'Prop' 40 | Width = 100 41 | end 42 | item 43 | Caption = 'Value' 44 | Width = 350 45 | end> 46 | ColumnClick = False 47 | Groups = < 48 | item 49 | Header = #1054#1073#1097#1072#1103' '#1080#1085#1092#1086#1088#1084#1072#1094#1080#1103 50 | GroupID = 0 51 | State = [lgsNormal] 52 | HeaderAlign = taLeftJustify 53 | FooterAlign = taLeftJustify 54 | TitleImage = -1 55 | end 56 | item 57 | Header = #1057#1090#1072#1090#1080#1089#1090#1080#1082#1072 58 | GroupID = 2 59 | State = [lgsNormal] 60 | HeaderAlign = taLeftJustify 61 | FooterAlign = taLeftJustify 62 | TitleImage = -1 63 | end> 64 | Items.ItemData = { 65 | 05CB0100000700000000000000FFFFFFFFFFFFFFFF0100000000000000000000 66 | 00091D0430043704320430043D04380435043A00087300750062002000690074 67 | 0065006D00885BBF3A00000000FFFFFFFFFFFFFFFF0100000000000000000000 68 | 000E1404300442043004200041043E043704340430043D0438044F043A000873 69 | 007500620020006900740065006D00A040BF3A00000000FFFFFFFFFFFFFFFF01 70 | 000000000000000000000007120435044004410438044F043A00087300750062 71 | 0020006900740065006D009849BF3A00000000FFFFFFFFFFFFFFFF0100000000 72 | 00000000000000091E043F043804410430043D04380435043A00087300750062 73 | 0020006900740065006D00D87FBF3A00000000FFFFFFFFFFFFFFFF0100000002 74 | 00000000000000081004320442043E0440043E0432043A000873007500620020 75 | 006900740065006D009067BF3A00000000FFFFFFFFFFFFFFFF01000000020000 76 | 0000000000051A043D04380433043A000873007500620020006900740065006D 77 | 00607ABF3A00000000FFFFFFFFFFFFFFFF010000000200000000000000062104 78 | 35044004380439043A000873007500620020006900740065006D00C077BF3AFF 79 | FFFFFFFFFFFFFFFFFFFFFFFFFF} 80 | GroupView = True 81 | ReadOnly = True 82 | RowSelect = True 83 | ShowColumnHeaders = False 84 | TabOrder = 1 85 | ViewStyle = vsReport 86 | end 87 | end 88 | -------------------------------------------------------------------------------- /Program/Forms/Editors/frm_edit_script.pas: -------------------------------------------------------------------------------- 1 | (* ***************************************************************************** 2 | * 3 | * MyHomeLib 4 | * 5 | * Copyright (C) 2008-2023 Oleksiy Penkov (aka Koreec) 6 | * 7 | * Authors Oleksiy Penkov oleksiy.penkov@gmail.com 8 | * Nick Rymanov nrymanov@gmail.com 9 | * Created 20.08.2008 10 | * Description 11 | * 12 | * $Id: frm_edit_script.pas 549 2010-08-13 08:02:58Z eg_ $ 13 | * 14 | * History 15 | * 16 | ****************************************************************************** *) 17 | 18 | unit frm_edit_script; 19 | 20 | interface 21 | 22 | uses 23 | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 24 | Dialogs, StdCtrls, Mask, ExtCtrls, unit_AutoCompleteEdit; 25 | 26 | type 27 | TfrmEditScript = class(TForm) 28 | Label1: TLabel; 29 | Label2: TLabel; 30 | edTitle: TEdit; 31 | edPath: TMHLAutoCompleteEdit; 32 | edParams: TEdit; 33 | Label3: TLabel; 34 | pnButtons: TPanel; 35 | btnOk: TButton; 36 | btnCancel: TButton; 37 | btnBrowse: TButton; 38 | procedure btnSaveClick(Sender: TObject); 39 | procedure edPathButtonClick(Sender: TObject); 40 | private 41 | procedure SetParams(const Value: string); 42 | procedure SetPath(const Value: string); 43 | procedure SetTitle(const Value: string); 44 | function GetParams: string; 45 | function GetPath: string; 46 | function GetTitle: string; 47 | public 48 | property Title: string read GetTitle write SetTitle; 49 | property Path: string read GetPath write SetPath; 50 | property Params: string read GetParams write SetParams; 51 | end; 52 | 53 | var 54 | frmEditScript: TfrmEditScript; 55 | 56 | implementation 57 | 58 | uses 59 | unit_Helpers; 60 | 61 | resourcestring 62 | rstrProvideNameAndPath = '”кажите название и путь!'; 63 | 64 | {$R *.dfm} 65 | 66 | procedure TfrmEditScript.edPathButtonClick(Sender: TObject); 67 | var 68 | AFileName: string; 69 | begin 70 | if GetFileName(fnSelectScript, AFileName) then 71 | edPath.Text := AFileName; 72 | end; 73 | 74 | function TfrmEditScript.GetParams: string; 75 | begin 76 | Result := Trim(edParams.Text); 77 | end; 78 | 79 | function TfrmEditScript.GetPath: string; 80 | begin 81 | Result := Trim(edPath.Text); 82 | end; 83 | 84 | function TfrmEditScript.GetTitle: string; 85 | begin 86 | Result := Trim(edTitle.Text); 87 | end; 88 | 89 | procedure TfrmEditScript.SetParams(const Value: string); 90 | begin 91 | edParams.Text := Value; 92 | end; 93 | 94 | procedure TfrmEditScript.SetPath(const Value: string); 95 | begin 96 | edPath.Text := Value; 97 | end; 98 | 99 | procedure TfrmEditScript.SetTitle(const Value: string); 100 | begin 101 | edTitle.Text := Value; 102 | end; 103 | 104 | procedure TfrmEditScript.btnSaveClick(Sender: TObject); 105 | begin 106 | if (Title = '') or (Path = '') then 107 | MessageDlg(rstrProvideNameAndPath, mtError, [mbOk], 0) 108 | else 109 | ModalResult := mrOk; 110 | end; 111 | 112 | end. 113 | -------------------------------------------------------------------------------- /Program/Wizards/NewCollection/frame_NCWCollectionFileTypes.dfm: -------------------------------------------------------------------------------- 1 | inherited frameNCWCollectionFileTypes: TframeNCWCollectionFileTypes 2 | Width = 460 3 | Height = 216 4 | Constraints.MinHeight = 200 5 | Constraints.MinWidth = 460 6 | ExplicitWidth = 460 7 | ExplicitHeight = 216 8 | object pageHint: TMHLStaticTip [0] 9 | AlignWithMargins = True 10 | Left = 14 11 | Top = 150 12 | Width = 432 13 | Height = 59 14 | Margins.Left = 14 15 | Margins.Right = 14 16 | ImageIndex = 0 17 | Align = alTop 18 | ExplicitTop = 126 19 | end 20 | inherited pnTitle: TPanel 21 | Width = 460 22 | Height = 58 23 | StyleElements = [seFont, seClient, seBorder] 24 | ExplicitWidth = 460 25 | ExplicitHeight = 58 26 | inherited lblTitle: TLabel 27 | Width = 432 28 | Caption = #1060#1086#1088#1084#1072#1090' '#1092#1072#1081#1083#1086#1074 29 | StyleElements = [seFont, seClient, seBorder] 30 | ExplicitWidth = 91 31 | end 32 | inherited lblSubTitle: TLabel 33 | Width = 425 34 | Caption = #1059#1082#1072#1078#1080#1090#1077' '#1082#1085#1080#1075#1080' '#1074' '#1082#1072#1082#1086#1084' '#1092#1086#1088#1084#1072#1090#1077' '#1074#1099' '#1087#1083#1072#1085#1080#1088#1091#1077#1090#1077' '#1093#1088#1072#1085#1080#1090#1100' '#1074' '#1082#1086#1083#1083#1077#1082#1094#1080#1080 35 | StyleElements = [seFont, seClient, seBorder] 36 | ExplicitWidth = 383 37 | end 38 | end 39 | object Panel3: TPanel 40 | Left = 0 41 | Top = 58 42 | Width = 460 43 | Height = 89 44 | Margins.Left = 7 45 | Margins.Top = 7 46 | Margins.Right = 7 47 | Margins.Bottom = 0 48 | Align = alTop 49 | BevelOuter = bvNone 50 | Constraints.MinWidth = 460 51 | TabOrder = 1 52 | object rbSoreAnyFiles: TRadioButton 53 | AlignWithMargins = True 54 | Left = 14 55 | Top = 38 56 | Width = 439 57 | Height = 17 58 | Margins.Left = 14 59 | Margins.Top = 7 60 | Margins.Right = 7 61 | Margins.Bottom = 0 62 | Align = alTop 63 | Caption = #1050#1085#1080#1075#1080' '#1074' '#1076#1088#1091#1075#1080#1093' '#1092#1086#1088#1084#1072#1090#1072#1093' (fbd, pdf, djvu)' 64 | TabOrder = 0 65 | OnClick = OnSetFileType 66 | end 67 | object rbSoreFB2Files: TRadioButton 68 | AlignWithMargins = True 69 | Left = 14 70 | Top = 14 71 | Width = 439 72 | Height = 17 73 | Margins.Left = 14 74 | Margins.Top = 14 75 | Margins.Right = 7 76 | Margins.Bottom = 0 77 | Align = alTop 78 | Caption = #1050#1085#1080#1075#1080' '#1074' '#1092#1086#1088#1084#1072#1090#1077' FictionBook' 79 | Checked = True 80 | TabOrder = 1 81 | TabStop = True 82 | OnClick = OnSetFileType 83 | end 84 | object cbAutoImport: TCheckBox 85 | Left = 14 86 | Top = 66 87 | Width = 403 88 | Height = 17 89 | Caption = #1053#1072#1095#1072#1090#1100' '#1080#1084#1087#1086#1088#1090' '#1082#1085#1080#1075' '#1087#1086#1089#1083#1077' '#1089#1086#1079#1076#1072#1085#1080#1103' '#1082#1086#1083#1083#1077#1082#1094#1080#1080 90 | Checked = True 91 | State = cbChecked 92 | TabOrder = 2 93 | end 94 | end 95 | end 96 | -------------------------------------------------------------------------------- /Program/Units/unit_SearchUtils.pas: -------------------------------------------------------------------------------- 1 | (* ***************************************************************************** 2 | * 3 | * MyHomeLib 4 | * 5 | * Copyright (C) 2008-2023 Oleksiy Penkov (aka Koreec) 6 | * 7 | * Created 12.02.2010 8 | * Description 9 | * Author(s) Oleksiy Penkov oleksiy.penkov@gmail.com 10 | * 11 | * $Id: unit_SearchUtils.pas 642 2010-08-26 13:04:37Z eg_ $ 12 | * 13 | * History 14 | * NickR 15.02.2010 Код переформатирован 15 | * 16 | ****************************************************************************** *) 17 | 18 | unit unit_SearchUtils; 19 | 20 | interface 21 | 22 | procedure AddToFilter(const Field: string; Value: string; UP: Boolean; var FilterString: string); 23 | function PrepareQuery(S: string; UP: Boolean; ConverToFull: Boolean = True): string; 24 | 25 | procedure AddToWhere(var Where: string; const Filter: string); 26 | 27 | implementation 28 | 29 | uses 30 | StrUtils, 31 | SysUtils, 32 | unit_Globals, 33 | unit_Consts; 34 | 35 | procedure AddToFilter(const Field: string; Value: string; UP: Boolean; var FilterString: string); 36 | var 37 | FixedField: string; 38 | begin 39 | if Value = '' then 40 | Exit; 41 | 42 | if UP then 43 | FixedField := 'UPPER(' + Field + ')' 44 | else 45 | FixedField := Field; 46 | 47 | Value := ' ' + Value; // this way the search for ' LIKE' and such is possible for the first expression as well 48 | StrReplace(CRLF, ' ', Value); 49 | StrReplace(LF, ' ', Value); 50 | StrReplace(' LIKE ', ' ' + FixedField + #7 + 'LIKE ', Value); 51 | StrReplace('(LIKE ', ' (' + FixedField + #7 + 'LIKE ', Value); 52 | StrReplace(' =', ' ' + FixedField + #7 + '=', Value); 53 | StrReplace(' <>', ' ' + FixedField + #7 + '<>', Value); 54 | StrReplace(' <', ' ' + FixedField + #7 + '<', Value); 55 | StrReplace(' >', ' ' + FixedField + #7 + '>', Value); 56 | StrReplace(#7, ' ', Value); 57 | 58 | if FilterString <> '' then 59 | FilterString := FilterString + ' AND (' + Value + ')' 60 | else 61 | FilterString := '(' + Value + ')'; 62 | end; 63 | 64 | function Clear(const S: string): string; inline; 65 | begin 66 | Result := S; 67 | StrReplace(CRLF, ' ', Result); 68 | Trim(Result); 69 | end; 70 | 71 | // проверяем запрос, если нативный - преобразовываем в SQL 72 | function PrepareQuery(S: string; UP: Boolean; ConverToFull: Boolean = True): string; 73 | begin 74 | if UP then 75 | S := Trim(AnsiUpperCase(S)); 76 | 77 | if S = '' then 78 | begin 79 | Result := ''; 80 | Exit; 81 | end; 82 | 83 | if ConverToFull and (Pos('%', S) = 0) and (Pos('=', S) = 0) and (Pos('"', S) = 0) and (Pos('LIKE', S) = 0) then 84 | S := Format('%%%s%%', [S]); 85 | 86 | if (Pos('=', S) = 0) and (Pos('LIKE', S) = 0) and (Pos('"', S) = 0) then 87 | begin 88 | if Pos('%', S) = 0 then 89 | S := '="' + S + '"' 90 | else 91 | S := 'LIKE "' + S + '"'; 92 | end; 93 | 94 | Result := Clear(S); 95 | end; 96 | 97 | procedure AddToWhere(var Where: string; const Filter: string); 98 | begin 99 | if Where = '' then 100 | Where := ' WHERE ' 101 | else 102 | Where := Where + ' AND '; 103 | Where := Where + Filter; 104 | end; 105 | 106 | end. 107 | -------------------------------------------------------------------------------- /Program/DataModules/dm_user.pas: -------------------------------------------------------------------------------- 1 | (* ***************************************************************************** 2 | * 3 | * MyHomeLib 4 | * 5 | * Copyright (C) 2008-2023 Oleksiy Penkov (aka Koreec) 6 | * 7 | * Authors Oleksiy Penkov oleksiy.penkov@gmail.com 8 | * Nick Rymanov nrymanov@gmail.com 9 | * Created 10 | * Description 11 | * 12 | * $Id: dm_user.pas 845 2010-10-06 11:03:28Z nrymanov@gmail.com $ 13 | * 14 | * History 15 | * NickR 02.03.2010 Код переформатирован 16 | * 17 | ****************************************************************************** *) 18 | 19 | unit dm_user; 20 | 21 | interface 22 | 23 | uses 24 | ImgList, 25 | Classes, 26 | Controls, 27 | unit_Settings, 28 | unit_Interfaces, System.ImageList; 29 | 30 | type 31 | TDMUser = class(TDataModule) 32 | SeverityImages: TImageList; 33 | SeverityImagesBig: TImageList; 34 | 35 | private 36 | FSettings: TMHLSettings; 37 | FSystemDB: ISystemData; 38 | 39 | function InternalGetSystemDB(const FileName: string): ISystemData; inline; 40 | 41 | public const 42 | iiInfo = 0; 43 | iiWarning = 1; 44 | iiError = 2; 45 | 46 | public 47 | constructor Create(AOwner: TComponent); override; 48 | destructor Destroy; override; 49 | 50 | procedure Init; 51 | 52 | function GetSystemDBConnection: ISystemData; 53 | 54 | property Settings: TMHLSettings read FSettings; 55 | property SystemDB: ISystemData read FSystemDB; 56 | end; 57 | 58 | var 59 | DMUser: TDMUser; 60 | 61 | function Settings: TMHLSettings; inline; 62 | function SystemDB: ISystemData; inline; 63 | 64 | implementation 65 | 66 | {$R *.dfm} 67 | 68 | uses 69 | SysUtils, 70 | IOUtils, 71 | unit_SystemDatabase_SQLite; 72 | 73 | function Settings: TMHLSettings; inline; 74 | begin 75 | Assert(Assigned(DMUser)); 76 | Assert(Assigned(DMUser.FSettings)); 77 | Result := DMUser.Settings; 78 | end; 79 | 80 | function SystemDB: ISystemData; inline; 81 | begin 82 | Assert(Assigned(DMUser)); 83 | Assert(Assigned(DMUser.SystemDB)); 84 | Result := DMUser.SystemDB; 85 | end; 86 | 87 | { TDMUser } 88 | 89 | constructor TDMUser.Create(AOwner: TComponent); 90 | begin 91 | inherited Create(AOwner); 92 | FSettings := TMHLSettings.Create; 93 | end; 94 | 95 | destructor TDMUser.Destroy; 96 | begin 97 | if Assigned(FSystemDB) then 98 | begin 99 | FSystemDB.ClearCollectionCache; 100 | FSystemDB := nil; 101 | end; 102 | FreeAndNil(FSettings); 103 | inherited Destroy; 104 | end; 105 | 106 | function TDMUser.InternalGetSystemDB(const FileName: string): ISystemData; 107 | begin 108 | Result := TSystemData_SQLite.Create(FileName); 109 | end; 110 | 111 | procedure TDMUser.Init; 112 | var 113 | SysDBFileName: string; 114 | begin 115 | FSettings.LoadSettings; 116 | TDirectory.CreateDirectory(FSettings.TempDir); 117 | TDirectory.CreateDirectory(FSettings.DataDir); 118 | 119 | SysDBFileName := FSettings.SystemFileName[sfSystemDB]; 120 | if not FileExists(SysDBFileName) then 121 | TSystemData_SQLite.CreateSystemTables(SysDBFileName); 122 | 123 | FSystemDB := InternalGetSystemDB(SysDBFileName); 124 | end; 125 | 126 | function TDMUser.GetSystemDBConnection: ISystemData; 127 | begin 128 | Result := InternalGetSystemDB(FSettings.SystemFileName[sfSystemDB]); 129 | end; 130 | 131 | end. 132 | -------------------------------------------------------------------------------- /Program/Wizards/NewCollection/frame_NCWOperation.pas: -------------------------------------------------------------------------------- 1 | {******************************************************************************} 2 | { } 3 | { MyHomeLib } 4 | { } 5 | { Version 0.9 } 6 | { 20.08.2008 } 7 | { Copyright (c) Oleksiy Penkov oleksiy.penkov@gmail.com } 8 | { } 9 | { @author Nick Rymanov nrymanov@gmail.com } 10 | { } 11 | {******************************************************************************} 12 | 13 | unit frame_NCWOperation; 14 | 15 | interface 16 | 17 | uses 18 | Windows, 19 | Messages, 20 | SysUtils, 21 | Variants, 22 | Classes, 23 | Graphics, 24 | Controls, 25 | Forms, 26 | Dialogs, 27 | frame_InteriorPageBase, 28 | StdCtrls, 29 | ExtCtrls, 30 | unit_StaticTip, 31 | unit_NCWParams; 32 | 33 | type 34 | TframeNCWOperation = class(TInteriorPageBase) 35 | Panel1: TPanel; 36 | rbNew: TRadioButton; 37 | rbExisting: TRadioButton; 38 | pageHint: TMHLStaticTip; 39 | rbInpx: TRadioButton; 40 | procedure OnSetCollectionType(Sender: TObject); 41 | private 42 | 43 | public 44 | function Activate(LoadData: Boolean): Boolean; override; 45 | function Deactivate(CheckData: Boolean): Boolean; override; 46 | end; 47 | 48 | var 49 | frameNCWOperation: TframeNCWOperation; 50 | 51 | implementation 52 | 53 | resourcestring 54 | rstrCreateNew = 'Выберите этот пункт для создания пустых коллекций'; 55 | rstrAddExists = 'Подключить ранее созданную коллекцию. Требуется файл коллекции *.hlc'; 56 | rstrInpxBased = 'Создать коллекцию из имеющегося файла inpx (коллекции lib.rus.ec, Flibusta, Traum)'; 57 | 58 | {$R *.dfm} 59 | 60 | procedure TframeNCWOperation.OnSetCollectionType(Sender: TObject); 61 | begin 62 | if Sender = rbNew then 63 | pageHint.Caption := rstrCreateNew 64 | else if Sender = rbExisting then 65 | pageHint.Caption := rstrAddExists 66 | else if Sender = rbInpx then 67 | pageHint.Caption := rstrInpxBased 68 | end; 69 | 70 | function TframeNCWOperation.Activate(LoadData: Boolean): Boolean; 71 | var 72 | rb: TRadioButton; 73 | begin 74 | if LoadData then 75 | begin 76 | case FPParams^.Operation of 77 | otNew: rb := rbNew; 78 | otExisting: rb := rbExisting; 79 | otInpx: rb := rbInpx; 80 | else 81 | Assert(False); 82 | Result := False; 83 | Exit; 84 | end; 85 | 86 | Assert(Assigned(rb)); 87 | 88 | rb.Checked := True; 89 | OnSetCollectionType(rb); 90 | end; 91 | 92 | Result := True; 93 | end; 94 | 95 | function TframeNCWOperation.Deactivate(CheckData: Boolean): Boolean; 96 | begin 97 | if rbNew.Checked then 98 | begin 99 | FPParams^.Operation := otNew; 100 | FPParams^.CollectionType := ltUser; 101 | end 102 | else if rbExisting.Checked then 103 | FPParams^.Operation := otExisting 104 | else 105 | FPParams^.Operation := otInpx; 106 | 107 | Result := True; 108 | end; 109 | 110 | end. 111 | 112 | -------------------------------------------------------------------------------- /Components/MHLComponents/unit_AutoCompleteEdit.pas: -------------------------------------------------------------------------------- 1 | (* ***************************************************************************** 2 | * 3 | * MyHomeLib 4 | * 5 | * Copyright (C) 2008-2023 Oleksiy Penkov (aka Koreec) 6 | * 7 | * Author(s) Nick Rymanov nrymanov@gmail.com 8 | * Created 9 | * Description Строка редактирования с поддержкой автокомплита 10 | * 11 | * $Id: unit_AutoCompleteEdit.pas 785 2010-09-17 09:06:06Z nrymanov@gmail.com $ 12 | * 13 | * History 14 | * 15 | ****************************************************************************** *) 16 | 17 | unit unit_AutoCompleteEdit; 18 | 19 | interface 20 | 21 | uses 22 | Windows, SysUtils, Classes, Controls, StdCtrls, ComObj, ShLwApi; 23 | 24 | type 25 | TAutoCompleteOption = ( 26 | acoFileSystem, 27 | acoURLHistory, 28 | acoURLMRU, 29 | acoUseTab, 30 | acoFileSysOnly, 31 | acoAutoSuggestForceOn, 32 | acoAutoSuggestForceOff, 33 | acoAutoAppendForceOn, 34 | acoAutoAppendForceOff 35 | ); 36 | 37 | TAutoCompleteOptions = set of TAutoCompleteOption; 38 | 39 | TMHLAutoCompleteEdit = class(TEdit) 40 | private 41 | FAutoComplete: Boolean; 42 | FAutoCompleteOptions: TAutoCompleteOptions; 43 | procedure SetAutoComplete(const Value: Boolean); 44 | procedure SetAutoCompleteOptions(const Value: TAutoCompleteOptions); 45 | 46 | function GetACFlags: DWORD; 47 | 48 | protected 49 | procedure CreateWnd; override; 50 | 51 | public 52 | constructor Create(AOwner: TComponent); override; 53 | 54 | published 55 | property AutoComplete: Boolean read FAutoComplete write SetAutoComplete default True; 56 | property AutoCompleteOption: TAutoCompleteOptions read FAutoCompleteOptions write SetAutoCompleteOptions default []; 57 | end; 58 | 59 | implementation 60 | 61 | { TMHLAutoCompleteEdit } 62 | 63 | constructor TMHLAutoCompleteEdit.Create(AOwner: TComponent); 64 | begin 65 | inherited; 66 | FAutoComplete := True; 67 | FAutoCompleteOptions := []; 68 | end; 69 | 70 | function TMHLAutoCompleteEdit.GetACFlags: DWORD; 71 | const 72 | ACOptions: array [TAutoCompleteOption] of DWORD = ( 73 | SHACF_FILESYSTEM, 74 | SHACF_URLHISTORY, 75 | SHACF_URLMRU, 76 | SHACF_USETAB, 77 | SHACF_FILESYS_ONLY, 78 | SHACF_AUTOSUGGEST_FORCE_ON, 79 | SHACF_AUTOSUGGEST_FORCE_OFF, 80 | SHACF_AUTOAPPEND_FORCE_ON, 81 | SHACF_AUTOAPPEND_FORCE_OFF 82 | ); 83 | var 84 | Option: TAutoCompleteOption; 85 | begin 86 | if FAutoCompleteOptions = [] then 87 | begin 88 | Result := SHACF_DEFAULT; 89 | Exit; 90 | end; 91 | 92 | Result := 0; 93 | for Option := Low(Option) to High(Option) do 94 | if Option in FAutoCompleteOptions then 95 | Result := Result or ACOptions[Option]; 96 | end; 97 | 98 | procedure TMHLAutoCompleteEdit.CreateWnd; 99 | begin 100 | inherited; 101 | 102 | if FAutoComplete then 103 | begin 104 | SHAutoComplete(Handle, GetACFlags); 105 | end; 106 | end; 107 | 108 | procedure TMHLAutoCompleteEdit.SetAutoComplete(const Value: Boolean); 109 | begin 110 | if FAutoComplete <> Value then 111 | begin 112 | FAutoComplete := Value; 113 | RecreateWnd; 114 | end; 115 | end; 116 | 117 | procedure TMHLAutoCompleteEdit.SetAutoCompleteOptions(const Value: TAutoCompleteOptions); 118 | begin 119 | if FAutoCompleteOptions <> Value then 120 | begin 121 | FAutoCompleteOptions := Value; 122 | RecreateWnd; 123 | end; 124 | end; 125 | 126 | end. 127 | 128 | --------------------------------------------------------------------------------