31 #define BIBLIOTEQ_GUEST_ACCOUNT "xbook_guest"
32 #define BIBLIOTEQ_VERSION "2024.03.25"
34 #include "biblioteq_batch_activities.h"
35 #include "biblioteq_book.h"
36 #include "biblioteq_callnum_table_item.h"
37 #include "biblioteq_cd.h"
38 #include "biblioteq_dbenumerations.h"
39 #include "biblioteq_dvd.h"
40 #include "biblioteq_generic_thread.h"
41 #include "biblioteq_grey_literature.h"
42 #include "biblioteq_import.h"
43 #include "biblioteq_magazine.h"
44 #include "biblioteq_magic.h"
45 #include "biblioteq_misc_functions.h"
46 #include "biblioteq_myqstring.h"
47 #include "biblioteq_numeric_table_item.h"
48 #include "biblioteq_photographcollection.h"
49 #include "biblioteq_videogame.h"
50 #include "ui_biblioteq_adminsetup.h"
51 #include "ui_biblioteq_allinfo.h"
52 #include "ui_biblioteq_branch_s.h"
53 #include "ui_biblioteq_errordiag.h"
54 #include "ui_biblioteq_history.h"
55 #include "ui_biblioteq_mainwindow.h"
56 #include "ui_biblioteq_members_browser.h"
57 #include "ui_biblioteq_password.h"
58 #include "ui_biblioteq_userinfo.h"
60 #include <QMessageBox>
77 m_userinfo.setupUi(
this);
78 connect(m_userinfo.expirationdatefuture,
79 SIGNAL(clicked(
void)),
80 m_userinfo.expirationdatefuture,
81 SLOT(showMenu(
void)));
82 m_userinfo.expirationdatefuture->setMenu(
new QMenu(
this));
84 (m_userinfo.expirationdatefuture->menu()->addAction(tr(
"Year's End")),
85 SIGNAL(triggered(
void)),
87 SLOT(slotExpirationDate(
void)));
89 (m_userinfo.expirationdatefuture->menu()->addAction(tr(
"Year's End + 1")),
90 SIGNAL(triggered(
void)),
92 SLOT(slotExpirationDate(
void)));
94 (m_userinfo.expirationdatefuture->menu()->addAction(tr(
"Year's End + 2")),
95 SIGNAL(triggered(
void)),
97 SLOT(slotExpirationDate(
void)));
99 (m_userinfo.expirationdatefuture->menu()->addAction(tr(
"Year's End + 3")),
100 SIGNAL(triggered(
void)),
102 SLOT(slotExpirationDate(
void)));
104 (m_userinfo.expirationdatefuture->menu()->addAction(tr(
"Year's End + 4")),
105 SIGNAL(triggered(
void)),
107 SLOT(slotExpirationDate(
void)));
109 (m_userinfo.expirationdatefuture->menu()->addAction(tr(
"Year's End + 5")),
110 SIGNAL(triggered(
void)),
112 SLOT(slotExpirationDate(
void)));
116 foreach(
auto action, m_userinfo.expirationdatefuture->menu()->actions())
118 action->setData(i++);
125 QHash<QString, QString> m_memberProperties;
126 Ui_UserInfo m_userinfo;
128 bool haveMemberChanges(QString &str)
132 if(m_memberProperties.value(
"city") != m_userinfo.city->text().trimmed())
135 if(m_memberProperties.value(
"comments") !=
136 m_userinfo.comments->toPlainText().
140 if(m_memberProperties.value(
"dob") !=
141 m_userinfo.dob->date().toString(Qt::ISODate))
144 if(m_memberProperties.value(
"email") != m_userinfo.email->text())
147 if(m_memberProperties.value(
"expiration_date") !=
148 m_userinfo.expirationdate->date().toString(Qt::ISODate))
149 list <<
"expiration_date";
151 if(m_memberProperties.value(
"first_name") != m_userinfo.firstName->text().
153 list <<
"first_name";
155 if(m_memberProperties.value(
"general_registration_number") !=
156 m_userinfo.generalregistrationnumber->text().trimmed())
157 list <<
"general_registration_number";
159 if(m_memberProperties.value(
"last_name") != m_userinfo.lastName->text().
163 if(m_memberProperties.value(
"maximum_reserved_books") !=
164 m_userinfo.maximum_reserved_books->text())
165 list <<
"maximum_reserved_books";
167 if(m_memberProperties.value(
"memberclass") !=
168 m_userinfo.memberclass->text().trimmed())
169 list <<
"memberclass";
171 if(m_memberProperties.value(
"membership_fees") !=
172 m_userinfo.membershipfees->text())
173 list <<
"membership_fees";
175 if(m_memberProperties.value(
"membersince") !=
176 m_userinfo.membersince->date().toString(Qt::ISODate))
177 list <<
"membersince";
179 if(m_memberProperties.value(
"middle_init") != m_userinfo.middle->text().
181 list <<
"middle_init";
183 if(m_memberProperties.value(
"overdue_fees") !=
184 m_userinfo.overduefees->text())
185 list <<
"overdue_fees";
187 if(m_memberProperties.value(
"sex") != m_userinfo.sex->currentText())
190 if(m_memberProperties.value(
"state_abbr") !=
191 m_userinfo.state->currentText())
192 list <<
"state_abbr";
194 if(m_memberProperties.value(
"street") !=
195 m_userinfo.street->text().trimmed())
198 if(m_memberProperties.value(
"telephone_num") !=
199 m_userinfo.telephoneNumber->text())
200 list <<
"telephone_num";
202 if(m_memberProperties.value(
"zip") != m_userinfo.zip->text())
205 std::sort(list.begin(), list.end());
207 for(
int i = 0; i < list.size(); i++)
208 str += list.at(i) +
", ";
213 str = str.mid(0, str.length() - 2);
217 return !str.isEmpty();
221 void changeEvent(QEvent *event)
224 switch(event->type())
226 case QEvent::LanguageChange:
228 m_userinfo.retranslateUi(
this);
237 QDialog::changeEvent(event);
241 void done(
int result)
245 if(haveMemberChanges(str))
248 tr(
"BiblioteQ: Question"),
249 tr(
"Your changes have not been saved. Continue "
250 "closing?\n%1").arg(str),
251 QMessageBox::No | QMessageBox::Yes,
252 QMessageBox::No) == QMessageBox::No)
254 QApplication::processEvents();
258 QDialog::done(result);
261 void slotExpirationDate(
void)
263 auto action = qobject_cast<QAction *> (sender());
268 auto date(QDate::currentDate());
270 date.setDate(date.year(), 12, 31);
271 m_userinfo.expirationdate->setDate(date.addYears(action->data().toInt()));
282 FAVORITES_LENGTH = 1024,
286 static QString s_databaseDateFormat;
287 static QString s_locale;
288 static QString s_unknown;
289 static QTranslator *s_appTranslator;
290 static QTranslator *s_qtTranslator;
291 static const int CUSTOM_QUERY = 0;
292 static const int EDITABLE = 0;
293 static const int MAXIMUM_DEVICES_CONFIRMATION = 5;
294 static const int NEW_PAGE = 0;
295 static const int NEXT_PAGE = 1;
296 static const int POPULATE_ALL = 1;
297 static const int POPULATE_SEARCH = 2;
298 static const int POPULATE_SEARCH_BASIC = 3;
299 static const int PREVIOUS_PAGE = 2;
300 static const int VIEW_ONLY = 1;
303 QColor availabilityColor(
const QString &itemType)
const;
304 QColor itemMandatoryFieldColor(
void)
const;
305 QColor itemQueryResultColor(
void)
const;
306 QHash<QString, QString> getAmazonHash(
void)
const;
307 QHash<QString, QString> getOpenLibraryImagesHash(
void)
const;
308 QHash<QString, QString> getOpenLibraryItemsHash(
void)
const;
309 QHash<QString, QString> getSRUHash(
const QString &name)
const;
310 QHash<QString, QString> getZ3950Hash(
const QString &name)
const;
311 QHash<QString, QString> otherImagesHash(
void)
const;
312 QMainWindow *getMembersBrowser(
void)
const;
313 QMap<QString, QKeySequence> shortcuts(
void)
const;
314 QSqlDatabase getDB(
void)
const;
315 QString formattedISBN10(
const QString &str)
const;
316 QString formattedISBN13(
const QString &str)
const;
317 QString getAdminID(
void)
const;
318 QString getPreferredSRUSite(
void)
const;
319 QString getPreferredZ3950Site(
void)
const;
320 QString getRoles(
void)
const;
321 QString getTypeFilterString(
void)
const;
322 QString publicationDateFormat(
const QString &itemType)
const;
323 QString unaccent(
void)
const;
324 QStringList getSRUNames(
void)
const;
325 QStringList getZ3950Names(
void)
const;
326 QStringList selectedISBN10s(
void)
const;
327 QVariant setting(
const QString &name)
const;
328 QVector<QString> getBBColumnIndexes(
void)
const;
329 Ui_mainWindow getUI(
void)
const;
330 Ui_membersBrowser getBB(
void)
const;
331 bool availabilityColors(
void)
const;
332 bool canAccessDatabaseEnumerations(
void)
const;
333 bool isGuest(
void)
const;
334 bool isPatron(
void)
const;
335 bool showBookReadStatus(
void)
const;
336 bool showMainTableImages(
void)
const;
337 int pageLimit(
void)
const;
338 int populateTable(QSqlQuery *query,
339 const QString &typefilter,
340 const int pagingType,
341 const int searchType);
342 int populateTable(
const int search_type_arg,
343 const QString &typefilter,
344 const QString &searchstrArg,
345 const int pagingType = NEW_PAGE);
346 static QString homePath(
void);
347 static void quit(
const char *msg,
const char *file,
const int line);
348 static void quit(
void);
349 void addError(
const QString &type,
350 const QString &summary,
351 const QString &error =
"",
352 const char *file =
"",
354 void bookSearch(
const QString &field,
const QString &value);
355 void cdSearch(
const QString &field,
const QString &value);
356 void dvdSearch(
const QString &field,
const QString &value);
357 void executeCustomQuery(QWidget *widget,
const QString &text);
358 void greyLiteratureSearch(
const QString &field,
const QString &value);
359 void journSearch(
const QString &field,
const QString &value);
360 void magSearch(
const QString &field,
const QString &value);
361 void pcSearch(
const QString &field,
const QString &value);
362 void populateFavorites(
void);
363 void prepareCustomQueryFavoriteShortcut(
void);
378 void replacePhotographCollection(
const QString &
id,
381 void setGlobalFonts(
const QFont &font);
382 void setSummaryImages(
const QImage &back,
const QImage &front);
384 void updateItemWindows(
void);
385 void updateMembersBrowser(
const QString &memberid);
386 void updateMembersBrowser(
void);
387 void updateReservationHistoryBrowser(
const QString &memberid,
389 const QString ©id,
390 const QString &itemType,
391 const QString &returnedDate);
393 (
const QString &oid,
const QTableWidgetItem *item,
const QString &it);
394 void updateSceneItem(
const QString &oid,
396 const QImage &image);
397 void vgSearch(
const QString &field,
const QString &value);
400 void slotDisplaySummary(
void);
401 void slotResizeColumns(
void);
404 enum AdminSetupColumns
413 enum ErrorDialogColumns
418 FULL_DESCRIPTION = 3,
423 enum GenericSearchTypes
425 ACCESSION_NUMBER_GENERIC_SEARCH_TYPE = 0,
426 CATEGORY_GENERIC_SEARCH_TYPE = 1,
427 ID_GENERIC_SEARCH_TYPE = 2,
428 KEYWORD_GENERIC_SEARCH_TYPE = 3,
429 TITLE_GENERIC_SEARCH_TYPE = 4
442 RESERVATION_DATE = 7,
448 enum RequestActionItems
450 CANCEL_REQUESTED = 0,
456 QActionGroup *m_menuCategoryActionGroup;
457 QDialog *m_branch_diag;
458 QDialog *m_pass_diag;
459 QHash<QAction *, QPointer<biblioteq_documentationwindow> > m_documentation;
460 QHash<QAction *, QPointer<biblioteq_documentationwindow> > m_releaseNotes;
461 QHash<QString, QString> m_amazonImages;
462 QHash<QString, QString> m_openLibraryImages;
463 QHash<QString, QString> m_openLibraryItems;
464 QHash<QString, QString> m_otherImages;
465 QHash<QString, QString> m_selectedBranch;
466 QList<QTableWidgetItem *> m_findList;
467 QMainWindow *m_admin_diag;
468 QMainWindow *m_all_diag;
469 QMainWindow *m_error_diag;
470 QMainWindow *m_history_diag;
471 QMainWindow *m_members_diag;
472 QMap<QString, QHash<QString, QString> > m_branches;
473 QMap<QString, QHash<QString, QString> > m_sruMaps;
474 QMap<QString, char> m_specialExecutables;
475 QMessageBox *m_about;
476 QMultiMap<QString, QHash<QString, QString> > m_z3950Maps;
477 QPair<QColor, QColor> m_aboutColors;
478 QPointer<QLabel> m_connected_bar_label;
479 QPointer<QLabel> m_status_bar_label;
480 QPointer<QMenu> m_configToolMenu;
481 QPointer<QMenu> m_menu;
482 QPointer<QToolButton> m_error_bar_label;
483 QPointer<biblioteq_dbenumerations> db_enumerations;
484 QPointer<biblioteq_documentationwindow> m_contributors;
485 QPointer<biblioteq_query_history> m_queryHistory;
486 QPointer<biblioteq_sqlite_merge_databases> m_sqliteMergeDatabases;
488 QSqlQuery *m_searchQuery;
489 QString m_engUserinfoTitle;
490 QString m_lastCategory;
491 QString m_lastSearchStr;
492 QString m_previousTypeFilter;
495 QStringList m_deletedAdmins;
496 QStringList m_specialExecutablesIcons;
497 QTextBrowser *m_printPreview;
499 QVector<QString> m_abColumnHeaderIndexes;
500 QVector<QString> m_bbColumnHeaderIndexes;
501 QVector<QString> m_historyColumnHeaderIndexes;
506 Ui_historyDialog history;
508 Ui_membersBrowser bb;
515 bool m_allSearchShown;
516 bool m_membersWasRefreshed;
517 int m_lastSearchType;
519 qint64 m_queryOffset;
523 QString dbUserName(
void)
const;
524 QString reservationHistoryHtml(
void)
const;
525 QString viewHtml(
void)
const;
526 QWidget *widgetForAction(QAction *action)
const;
527 bool emptyContainers(
void);
528 bool isCurrentItemAPhotograph(
void)
const;
529 void addConfigOptions(
const QString &typefilter);
530 void adminSetup(
void);
531 void changeEvent(QEvent *event);
533 void closeEvent(QCloseEvent *event);
534 void createConfigToolMenu(
void);
535 void createSqliteMenuActions(
void);
536 void deleteItem(
const QString &oid,
const QString &itemType);
537 void exportAsCSV(QTableWidget *table, QWidget *parent,
const QString &title);
538 void initialUpdate(
void);
539 void prepareContextMenus(
void);
540 void prepareExternalApplicationsMenu(
void);
541 void prepareFilter(
void);
542 void prepareIcons(
void);
543 void preparePhotographsPerPageMenu(
void);
544 void prepareRequestToolButton(
const QString &typefilter);
545 void prepareReservationHistoryMenu(
void);
546 void prepareStatusBarIcons(
void);
547 void prepareTearOffMenus(
void);
548 void prepareUpgradeNotification(
void);
549 void readConfigurationFile(
void);
550 void readGlobalConfiguration(
void);
551 void resetAdminBrowser(
void);
552 void resetMembersBrowser(
void);
555 void slotAbout(
void);
556 void slotAddAdmin(
void);
557 void slotAddBorrower(
void);
558 void slotAdminCheckBoxClicked(
int state);
559 void slotAdminContextMenu(
const QPoint &point);
560 void slotAllGo(
void);
561 void slotAllowAnyUserEmail(
bool state);
562 void slotAnimateAbout(
void);
563 void slotAutoPopOnFilter(QAction *action);
564 void slotBookSearch(
void);
565 void slotBranchChanged(
void);
566 void slotCDSearch(
void);
567 void slotCancelAddUser(
void);
568 void slotChangeView(
bool checked);
569 void slotCheckout(
void);
570 void slotClearSqliteMenu(
bool state);
571 void slotCloseMembersBrowser(
void);
572 void slotClosePasswordDialog(
void);
573 void slotConnectDB(
void);
574 void slotContextMenu(
const QPoint &point);
575 void slotContributors(
void);
576 void slotCopyError(
void);
577 void slotCustomQuery(
void);
578 void slotDVDSearch(
void);
579 void slotDelete(
void);
580 void slotDeleteAdmin(
void);
581 void slotDisconnect(
void);
582 void slotDisplayNewSqliteDialog(
void);
583 void slotDuplicate(
void);
584 void slotExecuteQuery(
const QString &text);
586 void slotExportAsCSV(
void);
587 void slotExportAsPNG(
void);
588 void slotExportMembersAsCSV(
void);
589 void slotExportMembersHistoryAsCSV(
void);
590 void slotGeneralSearchPublicationDateEnabled(
bool state);
591 void slotGenerateAndCopyMemberLetter(
void);
592 void slotGrantPrivileges(
void);
593 void slotGraphicsSceneDeleteKeyPressed(
void);
594 void slotGraphicsSceneEnterKeyPressed(
void);
595 void slotGreyLiteratureSearch(
void);
596 void slotInsertBook(
void);
597 void slotInsertCD(
void);
598 void slotInsertDVD(
void);
599 void slotInsertGreyLiterature(
void);
600 void slotInsertJourn(
void);
601 void slotInsertMag(
void);
602 void slotInsertPhotograph(
void);
603 void slotInsertVideoGame(
void);
604 void slotItemChanged(QTableWidgetItem *item);
605 void slotJournSearch(
void);
606 void slotLanguageChanged(
void);
607 void slotLastWindowClosed(
void);
608 void slotLaunchEmailSoftware(
void);
609 void slotListOverdueItems(
void);
610 void slotListReservedItems(
const QString &);
611 void slotListReservedItems(
void);
612 void slotMagSearch(
void);
613 void slotMainTableDeleteKeyPressed(
void);
614 void slotMainTableEnterKeyPressed(
void);
615 void slotMainWindowCanvasBackgroundColorChanged(
const QColor &color);
616 void slotMembersContextMenu(
const QPoint &point);
617 void slotMembersPagesChanged(
int value);
618 void slotMergeSQLiteDatabases(
void);
619 void slotModify(
void);
620 void slotModifyBorrower(
void);
621 void slotNextPage(
void);
622 void slotOpenOnlineDocumentation(
void);
623 void slotOpenPDFFiles(
void);
624 void slotOtherOptionsSaved(
void);
625 void slotPageClicked(
const QString &link);
626 void slotPhotographSearch(
void);
627 void slotPhotographsPerPageChanged(
void);
628 void slotPopulateMembersBrowser(
void);
629 void slotPreviewCanvasBackgroundColor(
const QColor &color);
630 void slotPreviousPage(
void);
631 void slotPrintIconsView(
void);
632 void slotPrintPreview(QPrinter *printer);
633 void slotPrintReservationHistory(
void);
634 void slotPrintReservationHistoryPreview(
void);
635 void slotPrintReserved(
void);
636 void slotPrintView(
void);
637 void slotPrintViewPreview(
void);
638 void slotRefresh(
void);
639 void slotRefreshAdminList(
void);
640 void slotReloadBiblioteqConf(
void);
641 void slotRemoveMember(
void);
642 void slotRequest(
void);
643 void slotReserveCopy(
void);
644 void slotReset(
void);
645 void slotResetAllSearch(
void);
646 void slotResetErrorLog(
void);
647 void slotResetLoginDialog(
void);
648 void slotResizeColumnsAfterSort(
void);
649 void slotRoleChanged(
int index);
650 void slotSaveAdministrators(
void);
651 void slotSaveConfig(
void);
652 void slotSaveDnt(
bool state);
653 void slotSaveGeneralSearchCaseSensitivity(
bool state);
654 void slotSavePassword(
void);
655 void slotSaveUser(
void);
656 void slotSceneSelectionChanged(
void);
657 void slotSearch(
void);
658 void slotSearchBasic(
void);
659 void slotSectionResized(
int logicalIndex,
int oldSize,
int newSize);
660 void slotSelectDatabaseFile(
void);
661 void slotSetColumns(
void);
662 void slotSetFonts(
void);
663 void slotSetMembershipFees(
void);
664 void slotShowAdminDialog(
void);
665 void slotShowBatchActivitiesBrowser(
void);
666 void slotShowChangePassword(
void);
667 void slotShowConnectionDB(
void);
668 void slotShowCustomQuery(
void);
669 void slotShowDbEnumerations(
void);
670 void slotShowDocumentation(
void);
671 void slotShowErrorDialog(
void);
672 void slotShowFiles(
void);
673 void slotShowGrid(
void);
674 void slotShowHistory(
void);
675 void slotShowImport(
void);
676 void slotShowMagic(
void);
677 void slotShowMembersBrowser(
void);
678 void slotShowMenu(
void);
679 void slotShowNext(
void);
680 void slotShowOtherOptions(
void);
681 void slotShowPassword(
bool state);
682 void slotShowPrev(
void);
683 void slotShowQueryHistory(
void);
684 void slotShowReleaseNotes(
void);
685 void slotSpecialApplication(
void);
686 void slotSqliteFileSelected(
bool state);
687 void slotSwifty(
void);
688 void slotTableFindNext(
void);
689 void slotTableFindTextCleared(
const QString &text);
690 void slotTearOffMenus(
void);
691 void slotUpdateIndicesAfterSort(
int column);
692 void slotUpgradeSqliteScheme(
void);
693 void slotVacuum(
void);
694 void slotVideoGameSearch(
void);
695 void slotViewDetails(
void);
696 void slotViewFullOrNormalScreen(
void);
699 void favoritesChanged(
void);
700 void fontChanged(
const QFont &font);
701 void newFavorite(
void);
702 void otherOptionsSaved(
void);
703 void queryCompleted(
const QString &text);
Definition: biblioteq_batch_activities.h:44
Definition: biblioteq_book.h:43
Definition: biblioteq_cd.h:36
Definition: biblioteq_documentationwindow.h:36
Definition: biblioteq_dvd.h:35
Definition: biblioteq_files.h:38
Definition: biblioteq_grey_literature.h:35
Definition: biblioteq_import.h:37
Definition: biblioteq_magazine.h:135
Definition: biblioteq_magazine.h:41
Definition: biblioteq_magic.h:36
Definition: biblioteq_otheroptions.h:233
Definition: biblioteq_photographcollection.h:39
Definition: biblioteq_query_history.h:38
Definition: biblioteq_sqlite_merge_databases.h:36
Definition: biblioteq_videogame.h:35
Definition: biblioteq.h:276
Definition: biblioteq_swifty.h:36
Definition: biblioteq.h:71