31 #define BIBLIOTEQ_GUEST_ACCOUNT "xbook_guest"
32 #define BIBLIOTEQ_VERSION "2023.07.20"
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_misc_functions.h"
45 #include "biblioteq_myqstring.h"
46 #include "biblioteq_numeric_table_item.h"
47 #include "biblioteq_photographcollection.h"
48 #include "biblioteq_videogame.h"
49 #include "ui_biblioteq_adminsetup.h"
50 #include "ui_biblioteq_allinfo.h"
51 #include "ui_biblioteq_branch_s.h"
52 #include "ui_biblioteq_errordiag.h"
53 #include "ui_biblioteq_history.h"
54 #include "ui_biblioteq_mainwindow.h"
55 #include "ui_biblioteq_members_browser.h"
56 #include "ui_biblioteq_password.h"
57 #include "ui_biblioteq_userinfo.h"
59 #include <QMessageBox>
75 m_userinfo.setupUi(
this);
76 connect(m_userinfo.expirationdatefuture,
77 SIGNAL(clicked(
void)),
78 m_userinfo.expirationdatefuture,
79 SLOT(showMenu(
void)));
80 m_userinfo.expirationdatefuture->setMenu(
new QMenu(
this));
82 (m_userinfo.expirationdatefuture->menu()->addAction(tr(
"Year's End")),
83 SIGNAL(triggered(
void)),
85 SLOT(slotExpirationDate(
void)));
87 (m_userinfo.expirationdatefuture->menu()->addAction(tr(
"Year's End + 1")),
88 SIGNAL(triggered(
void)),
90 SLOT(slotExpirationDate(
void)));
92 (m_userinfo.expirationdatefuture->menu()->addAction(tr(
"Year's End + 2")),
93 SIGNAL(triggered(
void)),
95 SLOT(slotExpirationDate(
void)));
97 (m_userinfo.expirationdatefuture->menu()->addAction(tr(
"Year's End + 3")),
98 SIGNAL(triggered(
void)),
100 SLOT(slotExpirationDate(
void)));
102 (m_userinfo.expirationdatefuture->menu()->addAction(tr(
"Year's End + 4")),
103 SIGNAL(triggered(
void)),
105 SLOT(slotExpirationDate(
void)));
107 (m_userinfo.expirationdatefuture->menu()->addAction(tr(
"Year's End + 5")),
108 SIGNAL(triggered(
void)),
110 SLOT(slotExpirationDate(
void)));
114 foreach(
auto action, m_userinfo.expirationdatefuture->menu()->actions())
116 action->setData(i++);
123 QHash<QString, QString> m_memberProperties;
124 Ui_UserInfo m_userinfo;
126 bool haveMemberChanges(QString &str)
130 if(m_memberProperties.value(
"city") != m_userinfo.city->text().trimmed())
133 if(m_memberProperties.value(
"comments") !=
134 m_userinfo.comments->toPlainText().
138 if(m_memberProperties.value(
"dob") !=
139 m_userinfo.dob->date().toString(Qt::ISODate))
142 if(m_memberProperties.value(
"email") != m_userinfo.email->text())
145 if(m_memberProperties.value(
"expiration_date") !=
146 m_userinfo.expirationdate->date().toString(Qt::ISODate))
147 list <<
"expiration_date";
149 if(m_memberProperties.value(
"first_name") != m_userinfo.firstName->text().
151 list <<
"first_name";
153 if(m_memberProperties.value(
"general_registration_number") !=
154 m_userinfo.generalregistrationnumber->text().trimmed())
155 list <<
"general_registration_number";
157 if(m_memberProperties.value(
"last_name") != m_userinfo.lastName->text().
161 if(m_memberProperties.value(
"maximum_reserved_books") !=
162 m_userinfo.maximum_reserved_books->text())
163 list <<
"maximum_reserved_books";
165 if(m_memberProperties.value(
"memberclass") !=
166 m_userinfo.memberclass->text().trimmed())
167 list <<
"memberclass";
169 if(m_memberProperties.value(
"membership_fees") !=
170 m_userinfo.membershipfees->text())
171 list <<
"membership_fees";
173 if(m_memberProperties.value(
"membersince") !=
174 m_userinfo.membersince->date().toString(Qt::ISODate))
175 list <<
"membersince";
177 if(m_memberProperties.value(
"middle_init") != m_userinfo.middle->text().
179 list <<
"middle_init";
181 if(m_memberProperties.value(
"overdue_fees") !=
182 m_userinfo.overduefees->text())
183 list <<
"overdue_fees";
185 if(m_memberProperties.value(
"sex") != m_userinfo.sex->currentText())
188 if(m_memberProperties.value(
"state_abbr") !=
189 m_userinfo.state->currentText())
190 list <<
"state_abbr";
192 if(m_memberProperties.value(
"street") !=
193 m_userinfo.street->text().trimmed())
196 if(m_memberProperties.value(
"telephone_num") !=
197 m_userinfo.telephoneNumber->text())
198 list <<
"telephone_num";
200 if(m_memberProperties.value(
"zip") != m_userinfo.zip->text())
203 std::sort(list.begin(), list.end());
205 for(
int i = 0; i < list.size(); i++)
206 str += list.at(i) +
", ";
211 str = str.mid(0, str.length() - 2);
215 return !str.isEmpty();
219 void changeEvent(QEvent *event)
222 switch(event->type())
224 case QEvent::LanguageChange:
226 m_userinfo.retranslateUi(
this);
235 QDialog::changeEvent(event);
239 void done(
int result)
243 if(haveMemberChanges(str))
246 tr(
"BiblioteQ: Question"),
247 tr(
"Your changes have not been saved. Continue "
248 "closing?\n%1").arg(str),
249 QMessageBox::No | QMessageBox::Yes,
250 QMessageBox::No) == QMessageBox::No)
252 QApplication::processEvents();
256 QDialog::done(result);
259 void slotExpirationDate(
void)
261 auto action = qobject_cast<QAction *> (sender());
266 auto date(QDate::currentDate());
268 date.setDate(date.year(), 12, 31);
269 m_userinfo.expirationdate->setDate(date.addYears(action->data().toInt()));
280 FAVORITES_LENGTH = 1024,
284 static QString s_databaseDateFormat;
285 static QString s_locale;
286 static QString s_unknown;
287 static QTranslator *s_appTranslator;
288 static QTranslator *s_qtTranslator;
289 static const int CUSTOM_QUERY = 0;
290 static const int EDITABLE = 0;
291 static const int MAXIMUM_DEVICES_CONFIRMATION = 5;
292 static const int NEW_PAGE = 0;
293 static const int NEXT_PAGE = 1;
294 static const int POPULATE_ALL = 1;
295 static const int POPULATE_SEARCH = 2;
296 static const int POPULATE_SEARCH_BASIC = 3;
297 static const int PREVIOUS_PAGE = 2;
298 static const int VIEW_ONLY = 1;
301 QHash<QAction *, QPointer<biblioteq_documentationwindow> > m_documentation;
302 QHash<QAction *, QPointer<biblioteq_documentationwindow> > m_releaseNotes;
303 QPointer<QMenu> m_configToolMenu;
304 QPointer<biblioteq_documentationwindow> m_contributors;
306 QColor availabilityColor(
const QString &itemType)
const;
307 QColor itemMandatoryFieldColor(
void)
const;
308 QColor itemQueryResultColor(
void)
const;
309 QHash<QString, QString> getAmazonHash(
void)
const;
310 QHash<QString, QString> getOpenLibraryImagesHash(
void)
const;
311 QHash<QString, QString> getOpenLibraryItemsHash(
void)
const;
312 QHash<QString, QString> getSRUHash(
const QString &name)
const;
313 QHash<QString, QString> getZ3950Hash(
const QString &name)
const;
314 QHash<QString, QString> otherImagesHash(
void)
const;
315 QMainWindow *getMembersBrowser(
void)
const;
316 QMap<QString, QKeySequence> shortcuts(
void)
const;
317 QSqlDatabase getDB(
void)
const;
318 QString formattedISBN10(
const QString &str)
const;
319 QString formattedISBN13(
const QString &str)
const;
320 QString getAdminID(
void)
const;
321 QString getPreferredSRUSite(
void)
const;
322 QString getPreferredZ3950Site(
void)
const;
323 QString getRoles(
void)
const;
324 QString getTypeFilterString(
void)
const;
325 QString publicationDateFormat(
const QString &itemType)
const;
326 QString unaccent(
void)
const;
327 QStringList getSRUNames(
void)
const;
328 QStringList getZ3950Names(
void)
const;
329 QVariant setting(
const QString &name)
const;
330 QVector<QString> getBBColumnIndexes(
void)
const;
331 Ui_mainWindow getUI(
void)
const;
332 Ui_membersBrowser getBB(
void)
const;
333 bool availabilityColors(
void)
const;
334 bool canAccessDatabaseEnumerations(
void)
const;
335 bool isGuest(
void)
const;
336 bool isPatron(
void)
const;
337 bool showBookReadStatus(
void)
const;
338 bool showMainTableImages(
void)
const;
339 int pageLimit(
void)
const;
340 int populateTable(QSqlQuery *query,
341 const QString &typefilter,
342 const int pagingType,
343 const int searchType);
344 int populateTable(
const int search_type_arg,
345 const QString &typefilter,
346 const QString &searchstrArg,
347 const int pagingType = NEW_PAGE);
348 static QString homePath(
void);
349 static void quit(
const char *msg,
const char *file,
const int line);
350 static void quit(
void);
351 void addError(
const QString &type,
352 const QString &summary,
353 const QString &error =
"",
354 const char *file =
"",
356 void bookSearch(
const QString &field,
const QString &value);
357 void cdSearch(
const QString &field,
const QString &value);
358 void dvdSearch(
const QString &field,
const QString &value);
359 void executeCustomQuery(QWidget *widget,
const QString &text);
360 void greyLiteratureSearch(
const QString &field,
const QString &value);
361 void journSearch(
const QString &field,
const QString &value);
362 void magSearch(
const QString &field,
const QString &value);
363 void pcSearch(
const QString &field,
const QString &value);
364 void populateFavorites(
void);
365 void prepareCustomQueryFavoriteShortcut(
void);
380 void replacePhotographCollection(
const QString &
id,
383 void setGlobalFonts(
const QFont &font);
384 void setSummaryImages(
const QImage &back,
const QImage &front);
386 void updateItemWindows(
void);
387 void updateMembersBrowser(
const QString &memberid);
388 void updateMembersBrowser(
void);
389 void updateReservationHistoryBrowser(
const QString &memberid,
391 const QString ©id,
392 const QString &itemType,
393 const QString &returnedDate);
395 (
const QString &oid,
const QTableWidgetItem *item,
const QString &it);
396 void updateSceneItem(
const QString &oid,
398 const QImage &image);
399 void vgSearch(
const QString &field,
const QString &value);
402 void slotDisplaySummary(
void);
403 void slotResizeColumns(
void);
406 enum AdminSetupColumns
415 enum ErrorDialogColumns
420 FULL_DESCRIPTION = 3,
425 enum GenericSearchTypes
427 ACCESSION_NUMBER_GENERIC_SEARCH_TYPE = 0,
428 CATEGORY_GENERIC_SEARCH_TYPE = 1,
429 ID_GENERIC_SEARCH_TYPE = 2,
430 KEYWORD_GENERIC_SEARCH_TYPE = 3,
431 TITLE_GENERIC_SEARCH_TYPE = 4
444 RESERVATION_DATE = 7,
450 enum RequestActionItems
452 CANCEL_REQUESTED = 0,
458 QActionGroup *m_menuCategoryActionGroup;
459 QDialog *m_branch_diag;
460 QDialog *m_pass_diag;
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 QLabel *m_connected_bar_label;
467 QLabel *m_status_bar_label;
468 QList<QTableWidgetItem *> m_findList;
469 QMainWindow *m_admin_diag;
470 QMainWindow *m_all_diag;
471 QMainWindow *m_error_diag;
472 QMainWindow *m_history_diag;
473 QMainWindow *m_members_diag;
474 QMap<QString, QHash<QString, QString> > m_branches;
475 QMap<QString, QHash<QString, QString> > m_sruMaps;
476 QMap<QString, char> m_specialExecutables;
477 QMessageBox *m_about;
478 QMultiMap<QString, QHash<QString, QString> > m_z3950Maps;
479 QPair<QColor, QColor> m_aboutColors;
480 QPointer<QMenu> m_menu;
481 QPointer<biblioteq_dbenumerations> db_enumerations;
482 QPointer<biblioteq_sqlite_merge_databases> m_sqliteMergeDatabases;
484 QSqlQuery *m_searchQuery;
485 QString m_engUserinfoTitle;
486 QString m_lastCategory;
487 QString m_lastSearchStr;
488 QString m_previousTypeFilter;
490 QStringList m_deletedAdmins;
491 QTextBrowser *m_printPreview;
493 QToolButton *m_error_bar_label;
494 QVector<QString> m_abColumnHeaderIndexes;
495 QVector<QString> m_bbColumnHeaderIndexes;
496 QVector<QString> m_historyColumnHeaderIndexes;
501 Ui_historyDialog history;
503 Ui_membersBrowser bb;
509 bool m_allSearchShown;
510 bool m_membersWasRefreshed;
511 int m_lastSearchType;
513 qint64 m_queryOffset;
517 QString dbUserName(
void)
const;
518 QString reservationHistoryHtml(
void)
const;
519 QString viewHtml(
void)
const;
520 QWidget *widgetForAction(QAction *action)
const;
521 bool emptyContainers(
void);
522 bool isCurrentItemAPhotograph(
void)
const;
523 void addConfigOptions(
const QString &typefilter);
524 void adminSetup(
void);
525 void changeEvent(QEvent *event);
527 void closeEvent(QCloseEvent *event);
528 void createConfigToolMenu(
void);
529 void createSqliteMenuActions(
void);
530 void deleteItem(
const QString &oid,
const QString &itemType);
531 void exportAsCSV(QTableWidget *table, QWidget *parent,
const QString &title);
532 void initialUpdate(
void);
533 void prepareContextMenus(
void);
534 void prepareExternalApplicationsMenu(
void);
535 void prepareFilter(
void);
536 void preparePhotographsPerPageMenu(
void);
537 void prepareRequestToolButton(
const QString &typefilter);
538 void prepareReservationHistoryMenu(
void);
539 void prepareTearOffMenus(
void);
540 void prepareUpgradeNotification(
void);
541 void readConfig(
void);
542 void readGlobalSetup(
void);
543 void resetAdminBrowser(
void);
544 void resetMembersBrowser(
void);
547 void slotAbout(
void);
548 void slotAddAdmin(
void);
549 void slotAddBorrower(
void);
550 void slotAdminCheckBoxClicked(
int state);
551 void slotAdminContextMenu(
const QPoint &point);
552 void slotAllGo(
void);
553 void slotAllowAnyUserEmail(
bool state);
554 void slotAnimateAbout(
void);
555 void slotAutoPopOnFilter(QAction *action);
556 void slotBookSearch(
void);
557 void slotBranchChanged(
void);
558 void slotCDSearch(
void);
559 void slotCancelAddUser(
void);
560 void slotChangeView(
bool checked);
561 void slotCheckout(
void);
562 void slotClearSqliteMenu(
bool state);
563 void slotCloseMembersBrowser(
void);
564 void slotClosePasswordDialog(
void);
565 void slotConnectDB(
void);
566 void slotContextMenu(
const QPoint &point);
567 void slotContributors(
void);
568 void slotCopyError(
void);
569 void slotCustomQuery(
void);
570 void slotDVDSearch(
void);
571 void slotDelete(
void);
572 void slotDeleteAdmin(
void);
573 void slotDisconnect(
void);
574 void slotDisplayNewSqliteDialog(
void);
575 void slotDuplicate(
void);
577 void slotExportAsCSV(
void);
578 void slotExportAsPNG(
void);
579 void slotExportMembersAsCSV(
void);
580 void slotExportMembersHistoryAsCSV(
void);
581 void slotGeneralSearchPublicationDateEnabled(
bool state);
582 void slotGenerateAndCopyMemberLetter(
void);
583 void slotGrantPrivileges(
void);
584 void slotGraphicsSceneDeleteKeyPressed(
void);
585 void slotGraphicsSceneEnterKeyPressed(
void);
586 void slotGreyLiteratureSearch(
void);
587 void slotInsertBook(
void);
588 void slotInsertCD(
void);
589 void slotInsertDVD(
void);
590 void slotInsertGreyLiterature(
void);
591 void slotInsertJourn(
void);
592 void slotInsertMag(
void);
593 void slotInsertPhotograph(
void);
594 void slotInsertVideoGame(
void);
595 void slotItemChanged(QTableWidgetItem *item);
596 void slotJournSearch(
void);
597 void slotLanguageChanged(
void);
598 void slotLastWindowClosed(
void);
599 void slotLaunchEmailSoftware(
void);
600 void slotListOverdueItems(
void);
601 void slotListReservedItems(
const QString &);
602 void slotListReservedItems(
void);
603 void slotMagSearch(
void);
604 void slotMainTableDeleteKeyPressed(
void);
605 void slotMainTableEnterKeyPressed(
void);
606 void slotMainWindowCanvasBackgroundColorChanged(
const QColor &color);
607 void slotMembersContextMenu(
const QPoint &point);
608 void slotMembersPagesChanged(
int value);
609 void slotMergeSQLiteDatabases(
void);
610 void slotModify(
void);
611 void slotModifyBorrower(
void);
612 void slotNextPage(
void);
613 void slotOpenOnlineDocumentation(
void);
614 void slotOpenPDFFiles(
void);
615 void slotOtherOptionsSaved(
void);
616 void slotPageClicked(
const QString &link);
617 void slotPhotographSearch(
void);
618 void slotPhotographsPerPageChanged(
void);
619 void slotPopulateMembersBrowser(
void);
620 void slotPreviewCanvasBackgroundColor(
const QColor &color);
621 void slotPreviousPage(
void);
622 void slotPrintIconsView(
void);
623 void slotPrintPreview(QPrinter *printer);
624 void slotPrintReservationHistory(
void);
625 void slotPrintReservationHistoryPreview(
void);
626 void slotPrintReserved(
void);
627 void slotPrintView(
void);
628 void slotPrintViewPreview(
void);
629 void slotRefresh(
void);
630 void slotRefreshAdminList(
void);
631 void slotReloadBiblioteqConf(
void);
632 void slotRemoveMember(
void);
633 void slotRequest(
void);
634 void slotReserveCopy(
void);
635 void slotReset(
void);
636 void slotResetAllSearch(
void);
637 void slotResetErrorLog(
void);
638 void slotResetLoginDialog(
void);
639 void slotResizeColumnsAfterSort(
void);
640 void slotRoleChanged(
int index);
641 void slotSaveAdministrators(
void);
642 void slotSaveConfig(
void);
643 void slotSaveDnt(
bool state);
644 void slotSaveGeneralSearchCaseSensitivity(
bool state);
645 void slotSavePassword(
void);
646 void slotSaveUser(
void);
647 void slotSceneSelectionChanged(
void);
648 void slotSearch(
void);
649 void slotSearchBasic(
void);
650 void slotSectionResized(
int logicalIndex,
int oldSize,
int newSize);
651 void slotSelectDatabaseFile(
void);
652 void slotSetColumns(
void);
653 void slotSetFonts(
void);
654 void slotSetMembershipFees(
void);
655 void slotShowAdminDialog(
void);
656 void slotShowBatchActivitiesBrowser(
void);
657 void slotShowChangePassword(
void);
658 void slotShowConnectionDB(
void);
659 void slotShowCustomQuery(
void);
660 void slotShowDbEnumerations(
void);
661 void slotShowDocumentation(
void);
662 void slotShowErrorDialog(
void);
663 void slotShowFiles(
void);
664 void slotShowGrid(
void);
665 void slotShowHistory(
void);
666 void slotShowImport(
void);
667 void slotShowMembersBrowser(
void);
668 void slotShowMenu(
void);
669 void slotShowNext(
void);
670 void slotShowOtherOptions(
void);
671 void slotShowPassword(
bool state);
672 void slotShowPrev(
void);
673 void slotShowReleaseNotes(
void);
674 void slotSpecialApplication(
void);
675 void slotSqliteFileSelected(
bool state);
676 void slotSwifty(
void);
677 void slotTableFindNext(
void);
678 void slotTableFindTextCleared(
const QString &text);
679 void slotTearOffMenus(
void);
680 void slotUpdateIndicesAfterSort(
int column);
681 void slotUpgradeSqliteScheme(
void);
682 void slotVacuum(
void);
683 void slotVideoGameSearch(
void);
684 void slotViewDetails(
void);
685 void slotViewFullOrNormalScreen(
void);
688 void favoritesChanged(
void);
689 void fontChanged(
const QFont &font);
690 void newFavorite(
void);
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:133
Definition: biblioteq_magazine.h:41
Definition: biblioteq_otheroptions.h:233
Definition: biblioteq_photographcollection.h:38
Definition: biblioteq_sqlite_merge_databases.h:36
Definition: biblioteq_videogame.h:35
Definition: biblioteq.h:274
Definition: biblioteq_swifty.h:36
Definition: biblioteq.h:69