Pull to refresh

Менеджер записей ELibrary

Reading time 2 min
Views 9.9K


Наверное у каждого на винчестере скапливается огромное количество всевозможных книжек, записей, заметок и так далее. Конечно же все это в различных форматах fb2, pdf, doc, а может быть, что к одной логической записи относится несколько файлов или серия книг. Как все это хранить?


Одним прекрасным утром передо мной возник именно такой вопрос, так как я уже не мог нормально ориентироваться по массивам директорий и файлов. Решив для себя как-то упорядочить хаос я установил менеджер электронных книг (название давать не буду, вариантов много, всем в помощь гугл).

К сожалению менеджер меня не устроил, так как при формировании библиотек менеджер оперирует путями до файлов. Кажется ничего критического в этом нет, но если мы перемещаем/копируем/удаляем файл, то соответственно сконфигурированная библиотека летит ко всем чертям. Ах да, плюс ко всему, вам приходилось копировать 100500+ файлов на съемный носитель? Во избежании данного удовольствия приходиться все складывать в архив, что также занимает время.

Пришлось выдумывать велосипед под себя. Во-первых, было решено, что все файлы будут храниться в базе данных, а во-вторых, что будет использоваться встраиваемая база данных FireBird 2.5. Ну и конечно все это на православном С++/Qt 5.3.0

Через несколько дней я заполучил простейший менеджер библиотек, который хранит файлы в базе данных и осуществляет поиск по фильтрам.



Запись можно добавить, либо из меню, либо Ctrl+N, либо перетаскиванием файлов на главное окно. Сначала необходимо выбрать один или несколько файлов, которые будут соотноситься с записью. Далее необходимо заполнить несколько полей: «название», «автор», «тема», «теги» и «описание». Причем если поля «название», «автор» и «описание» всегда придется заполнять руками, то поля тема и описание выбираются из справочника базы, если значение для заполнения не находится, то добавляется новое. По желанию можно еще докинуть файлов в запись кнопкой "+файлы". Файлы при добавлении жмутся методом qCompress, с уровнем 6.



Кнопкой «Найти» грид заполняется в соответствии с выбранными фильтрами. Двойным нажатием по записи или из меню открывается директория со всеми присутствующими в ней файлами. Если двойным щелчком клацнуть по строке с информацией по файлу, то распакуется и откроется соответствующий файл. Файлы распаковываются в temp директорию ELibrary, после закрытия директория со всеми файлами удаляется.

Ну вот и все, пост не претендует на выход в топ, но надеюсь кому-нибудь пригодится. А если заинтересует могу и продолжить расширять функционал.
Ах да ссылка на GitHub
src — директория с исходниками и «чистой» базой ELIBRARY_clean.FDB
build_mingw_win32 — директория с билдом под винду. В файле settings хранятся настройки подключения к БД.
Tags:
Hubs:
+13
Comments 20
Comments Comments 20

Articles