Напевно у кожного на вінчестері накопичується величезна кількість всіляких книжок, записів, нотаток і так далі. Звичайно ж, все це в різних форматах fb2, pdf, doc, а може бути, що до одного логічного запису відноситься кілька файлів або серія книг. Як все це зберігати?
Одним прекрасним ранком переді мною виникло саме таке питання, оскільки я вже не міг нормально орієнтуватися по масивах директорій і файлів. Вирішивши для себе якось упорядкувати хаос я встановив менеджер електронних книг (назву давати не буду, варіантів багато, всім на допомогу гугл).
На жаль менеджер мене не влаштував, оскільки при формуванні бібліотек менеджер оперує шляхами до файлів. Здається нічого критичного в цьому немає, але якщо ми переміщуємо/копіюємо/видаляємо файл, то відповідно сконфігурована бібліотека летить до всіх рис. Ах так, плюс до всього, вам доводилося копіювати 100500 + файлів на знімний носій? Щоб уникнути цього задоволення, доводитися все складати в архів, що також займає час.
Довелося вигадувати велосипед під себе. По-перше, було вирішено, що всі файли будуть зберігатися в базі даних, а по-друге, що буде використовуватися вбудована база даних FireBird 2.5. Ну і звичайно все це на православному C + +/Qt 5.3.0
Через кілька днів я отримав найпростіший менеджер бібліотек, який зберігає файли в базі даних і здійснює пошук за фільтрами.
Запис можна додати або з меню, або Ctrl + N, або перетягуванням файлів на головне вікно. Спочатку необхідно вибрати один або декілька файлів, які будуть співвідноситися з записом. Далі необхідно заповнити кілька полів: «назва», «автор», «тема», «теги» і «опис». Причому якщо поля «назва», «автор» і «опис» завжди доведеться заповнювати руками, то поля тема і опис вибираються з довідника бази, якщо значення для заповнення не знаходиться, то додається нове. За бажанням можна ще докинути файли в запис кнопкою "+ файли" ". Файли при додаванні тиснуть методом qCompress, з рівнем 6.
Кнопка «Знайти» заповнює грид відповідно до вибраних фільтрів. Подвійне натискання запису або з меню відкриває директорію з усіма присутніми файлами. Якщо подвійне клацання на рядку з інформацією про файл призведе до розпакую та відкриття відповідного файлу. Файли розпаковуються в temp директорію ELibrary, після закриття каталогу з усіма файлами вилучається.
Ну ось і все, пост не претендує на вихід в топ, але сподіваюся кому-небудь стане в нагоді. А якщо зацікавить можу і продовжити розширювати функціонал.
Ах да посилання на GitHub
src - директорія з вихідцями і «чистою» базою ELIBRARY_clean.FDB
build_mingw_win32 - директорія з білдом під вінду. У файлі settings зберігаються параметри з'єднання з ПД.