BiblioteQ
biblioteq.h
1 #ifndef _BIBLIOTEQ_H_
2 #define _BIBLIOTEQ_H_
3 
4 #define BIBLIOTEQ_VERSION "2020.01.01"
5 
6 #include "biblioteq_book.h"
7 #include "biblioteq_callnum_table_item.h"
8 #include "biblioteq_cd.h"
9 #include "biblioteq_dbenumerations.h"
10 #include "biblioteq_dvd.h"
11 #include "biblioteq_generic_thread.h"
12 #include "biblioteq_grey_literature.h"
13 #include "biblioteq_import.h"
14 #include "biblioteq_magazine.h"
15 #include "biblioteq_misc_functions.h"
16 #include "biblioteq_myqstring.h"
17 #include "biblioteq_numeric_table_item.h"
18 #include "biblioteq_photographcollection.h"
19 #include "biblioteq_videogame.h"
20 #include "ui_biblioteq_adminsetup.h"
21 #include "ui_biblioteq_allinfo.h"
22 #include "ui_biblioteq_branch_s.h"
23 #include "ui_biblioteq_customquery.h"
24 #include "ui_biblioteq_errordiag.h"
25 #include "ui_biblioteq_history.h"
26 #include "ui_biblioteq_mainwindow.h"
27 #include "ui_biblioteq_members_browser.h"
28 #include "ui_biblioteq_password.h"
29 #include "ui_biblioteq_userinfo.h"
30 
31 #include <QMessageBox>
32 
34 
35 class userinfo_diag_class: public QDialog
36 {
37  Q_OBJECT
38 
39  public:
40  userinfo_diag_class(QMainWindow *parent):QDialog(parent)
41  {
42  m_userinfo.setupUi(this);
43  }
44 
46  {
47  }
48 
49  QHash<QString, QString> m_memberProperties;
50  Ui_UserInfo m_userinfo;
51 
52  bool haveMemberChanges(QString &str)
53  {
54  QStringList list;
55 
56  if(m_memberProperties.value("membersince") !=
57  m_userinfo.membersince->date().toString(Qt::ISODate))
58  list << "membersince";
59 
60  if(m_memberProperties.value("dob") !=
61  m_userinfo.dob->date().toString(Qt::ISODate))
62  list << "dob";
63 
64  if(m_memberProperties.value("sex") != m_userinfo.sex->currentText())
65  list << "sex";
66 
67  if(m_memberProperties.value("first_name") != m_userinfo.firstName->text().
68  trimmed())
69  list << "first_name";
70 
71  if(m_memberProperties.value("middle_init") != m_userinfo.middle->text().
72  trimmed())
73  list << "middle_init";
74 
75  if(m_memberProperties.value("last_name") != m_userinfo.lastName->text().
76  trimmed())
77  list << "last_name";
78 
79  if(m_memberProperties.value("telephone_num") !=
80  m_userinfo.telephoneNumber->text())
81  list << "telephone_num";
82 
83  if(m_memberProperties.value("street") !=
84  m_userinfo.street->text().trimmed())
85  list << "street";
86 
87  if(m_memberProperties.value("city") != m_userinfo.city->text().trimmed())
88  list << "city";
89 
90  if(m_memberProperties.value("state_abbr") !=
91  m_userinfo.state->currentText())
92  list << "state_abbr";
93 
94  if(m_memberProperties.value("zip") != m_userinfo.zip->text())
95  list << "zip";
96 
97  if(m_memberProperties.value("email") != m_userinfo.email->text())
98  list << "email";
99 
100  if(m_memberProperties.value("expiration_date") !=
101  m_userinfo.expirationdate->date().toString(Qt::ISODate))
102  list << "expiration_date";
103 
104  if(m_memberProperties.value("overdue_fees") !=
105  m_userinfo.overduefees->text())
106  list << "overdue_fees";
107 
108  if(m_memberProperties.value("comments") !=
109  m_userinfo.comments->toPlainText().
110  trimmed())
111  list << "comments";
112 
113  if(m_memberProperties.value("general_registration_number") !=
114  m_userinfo.generalregistrationnumber->text().trimmed())
115  list << "general_registration_number";
116 
117  if(m_memberProperties.value("memberclass") !=
118  m_userinfo.memberclass->text().trimmed())
119  list << "memberclass";
120 
121  for(int i = 0; i < list.size(); i++)
122  str += list.at(i) + ", ";
123 
124  if(!str.isEmpty())
125  {
126  str.prepend("(");
127  str = str.mid(0, str.length() - 2);
128  str.append(")");
129  }
130 
131  return !str.isEmpty();
132  }
133 
134  private:
135  void changeEvent(QEvent *event)
136  {
137  if(event)
138  switch(event->type())
139  {
140  case QEvent::LanguageChange:
141  {
142  m_userinfo.retranslateUi(this);
143  break;
144  }
145  default:
146  break;
147  }
148 
149  QDialog::changeEvent(event);
150  }
151 
152  private slots:
153  void done(int r)
154  {
155  QString str("");
156 
157  if(haveMemberChanges(str))
158  if(QMessageBox::
159  question(this, tr("BiblioteQ: Question"),
160  tr("Your changes have not been saved. Continue "
161  "closing?\n%1").arg(str),
162  QMessageBox::Yes | QMessageBox::No,
163  QMessageBox::No) == QMessageBox::No)
164  {
165  QApplication::processEvents();
166  return;
167  }
168 
169  QDialog::done(r);
170  }
171 };
172 
173 class biblioteq: public QMainWindow
174 {
175  Q_OBJECT
176 
177  public:
178  static QString s_locale;
179  static QTranslator *s_appTranslator;
180  static QTranslator *s_qtTranslator;
181  static const int CUSTOM_QUERY = 0;
182  static const int EDITABLE = 0;
183  static const int NEW_PAGE = 0;
184  static const int NEXT_PAGE = 1;
185  static const int POPULATE_ALL = 1;
186  static const int POPULATE_SEARCH = 2;
187  static const int POPULATE_SEARCH_BASIC = 3;
188  static const int PREVIOUS_PAGE = 2;
189  static const int VIEW_ONLY = 1;
190  biblioteq(void);
191  ~biblioteq();
192  QMenu *m_configToolMenu;
193  QString m_unaccent;
194  QHash<QString, QString> getAmazonHash(void) const;
195  QHash<QString, QString> getOpenLibraryHash(void) const;
196  QHash<QString, QString> getSRUHash(const QString &name) const;
197  QHash<QString, QString> getZ3950Hash(const QString &name) const;
198  QMainWindow *getMembersBrowser(void) const;
199  QSqlDatabase getDB(void) const;
200  QString getAdminID(void) const;
201  QString getPreferredSRUSite(void) const;
202  QString getPreferredZ3950Site(void) const;
203  QString getRoles(void) const;
204  QString getTypeFilterString(void) const;
205  QString publicationDateFormat(const QString &itemType) const;
206  QString unaccent(void) const;
207  QStringList getSRUNames(void) const;
208  QStringList getZ3950Names(void) const;
209  QVariant setting(const QString &name) const;
210  QVector<QString> getBBColumnIndexes(void) const;
211  Ui_mainWindow getUI(void) const;
212  Ui_membersBrowser getBB(void) const;
213  bool isGuest(void) const;
214  int pageLimit(void) const;
215  int populateTable(const QSqlQuery &query,
216  const QString &typefilter,
217  const int pagingType,
218  const int searchType);
219  int populateTable(const int search_type_arg,
220  const QString &typefilter,
221  const QString &searchstrArg,
222  const int pagingType = NEW_PAGE);
223  static QString homePath(void);
224  static void quit(const char *msg, const char *file, const int line);
225  static void quit(void);
226  void addError(const QString &type,
227  const QString &summary,
228  const QString &error = "",
229  const char *file = "",
230  const int line = 0);
231  void bookSearch(const QString &field, const QString &value);
232  void cdSearch(const QString &field, const QString &value);
233  void dvdSearch(const QString &field, const QString &value);
234  void greyLiteratureSearch(const QString &field, const QString &value);
235  void journSearch(const QString &field, const QString &value);
236  void magSearch(const QString &field, const QString &value);
237  void pcSearch(const QString &field, const QString &value);
238  void removeBook(biblioteq_book *book);
239  void removeCD(biblioteq_cd *cd);
240  void removeDVD(biblioteq_dvd *dvd);
241  void removeGreyLiterature(biblioteq_grey_literature *gl);
242  void removeJournal(biblioteq_journal *journal);
243  void removeMagazine(biblioteq_magazine *magazine);
244  void removePhotographCollection(biblioteq_photographcollection *pc);
245  void removeVideoGame(biblioteq_videogame *videogame);
246  void replaceBook(const QString &id, biblioteq_book *book);
247  void replaceCD(const QString &id, biblioteq_cd *cd);
248  void replaceDVD(const QString &id, biblioteq_dvd *dvd);
249  void replaceGreyLiterature(const QString &id, biblioteq_grey_literature *gl);
250  void replaceJournal(const QString &id, biblioteq_journal *journal);
251  void replaceMagazine(const QString &id, biblioteq_magazine *magazine);
252  void replacePhotographCollection(const QString &id,
254  void replaceVideoGame(const QString &id, biblioteq_videogame *videogame);
255  void setGlobalFonts(const QFont &font);
256  void setSummaryImages(const QImage &back, const QImage &front);
257  void showMain(void);
258  void updateItemWindows(void);
259  void updateMembersBrowser(const QString &memberid);
260  void updateMembersBrowser(void);
261  void updateReservationHistoryBrowser(const QString &memberid,
262  const QString &ioid,
263  const QString &copyid,
264  const QString &itemType,
265  const QString &returnedDate);
266  void updateRows(const QString &oid, const int row, const QString &it);
267  void updateSceneItem(const QString &oid,
268  const QString &type,
269  const QImage &image);
270  void vgSearch(const QString &field, const QString &value);
271 
272  public slots:
273  void slotDisplaySummary(void);
274  void slotResizeColumns(void);
275 
276  private:
277  QActionGroup *m_menuCategoryActionGroup;
278  QDialog *m_branch_diag;
279  QDialog *m_pass_diag;
280  QHash<QString, QString> m_amazonImages;
281  QHash<QString, QString> m_openLibraryImages;
282  QHash<QString, QString> m_selectedBranch;
283  QLabel *m_connected_bar_label;
284  QLabel *m_status_bar_label;
285  QMainWindow *m_admin_diag;
286  QMainWindow *m_all_diag;
287  QMainWindow *m_customquery_diag;
288  QMainWindow *m_error_diag;
289  QMainWindow *m_history_diag;
290  QMainWindow *m_members_diag;
291  QMap<QString, QHash<QString, QString> > m_branches;
292  QMap<QString, QHash<QString, QString> > m_sruMaps;
293  QMap<QString, QHash<QString, QString> > m_z3950Maps;
294  QSqlDatabase m_db;
295  QSqlQuery m_searchQuery;
296  QString m_engUserinfoTitle;
297  QString m_lastCategory;
298  QString m_lastSearchStr;
299  QString m_previousTypeFilter;
300  QString m_roles;
301  QStringList m_deletedAdmins;
302  QToolButton *m_error_bar_label;
303  QVector<QString> m_abColumnHeaderIndexes;
304  QVector<QString> m_bbColumnHeaderIndexes;
305  QVector<QString> m_historyColumnHeaderIndexes;
306  Ui_adminBrowser ab;
307  Ui_allDialog al;
308  Ui_branchSelect br;
309  Ui_customquery cq;
310  Ui_errordialog er;
311  Ui_historyDialog history;
312  Ui_mainWindow ui;
313  Ui_membersBrowser bb;
314  Ui_passSelect pass;
315  biblioteq_dbenumerations *db_enumerations;
316  biblioteq_import *m_import;
317  biblioteq_otheroptions *m_otheroptions;
318  int m_lastSearchType;
319  qint64 m_pages;
320  qint64 m_queryOffset;
321  quint64 m_idCt;
322  userinfo_diag_class *userinfo_diag;
323  QString dbUserName(void) const;
324  bool emptyContainers(void);
325  void addConfigOptions(const QString &typefilter);
326  void adminSetup(void);
327  void changeEvent(QEvent *event);
328  void cleanup(void);
329  void closeEvent(QCloseEvent *event);
330  void createSqliteMenuActions(void);
331  void deleteItem(const QString &oid, const QString &itemType);
332  void exportAsCSV(QTableWidget *table, const QString &title);
333  void initialUpdate(void);
334  void prepareFilter(void);
335  void preparePhotographsPerPageMenu(void);
336  void prepareRequestToolButton(const QString &typefilter);
337  void readConfig(void);
338  void readGlobalSetup(void);
339  void resetAdminBrowser(void);
340  void resetMembersBrowser(void);
341 
342  private slots:
343  void slotAbout(void);
344  void slotAddAdmin(void);
345  void slotAddBorrower(void);
346  void slotAdminCheckBoxClicked(int state);
347  void slotAllGo(void);
348  void slotAllowAnyUserEmail(bool state);
349  void slotAutoPopOnFilter(QAction *action);
350  void slotBookSearch(void);
351  void slotBranchChanged(void);
352  void slotCDSearch(void);
353  void slotCancelAddUser(void);
354  void slotChangeView(bool checked);
355  void slotCheckout(void);
356  void slotClearSqliteMenu(bool state);
357  void slotCloseCustomQueryDialog(void);
358  void slotCloseMembersBrowser(void);
359  void slotClosePasswordDialog(void);
360  void slotConnectDB(void);
361  void slotCopyError(void);
362  void slotDVDSearch(void);
363  void slotDelete(void);
364  void slotDeleteAdmin(void);
365  void slotDisconnect(void);
366  void slotDisplayNewSqliteDialog(void);
367  void slotDuplicate(void);
368  void slotExecuteCustomQuery(void);
369  void slotExit(void);
370  void slotExportAsCSV(void);
371  void slotExportMembersAsCSV(void);
372  void slotGeneralSearchPublicationDateEnabled(bool state);
373  void slotGrantPrivileges(void);
374  void slotGreyLiteratureSearch(void);
375  void slotInsertBook(void);
376  void slotInsertCD(void);
377  void slotInsertDVD(void);
378  void slotInsertGreyLiterature(void);
379  void slotInsertJourn(void);
380  void slotInsertMag(void);
381  void slotInsertPhotograph(void);
382  void slotInsertVideoGame(void);
383  void slotJournSearch(void);
384  void slotLanguageChanged(void);
385  void slotLastWindowClosed(void);
386  void slotListOverdueItems(void);
387  void slotListReservedItems(void);
388  void slotMagSearch(void);
389  void slotMainWindowCanvasBackgroundColorChanged(const QColor &color);
390  void slotModify(void);
391  void slotModifyBorrower(void);
392  void slotNextPage(void);
393  void slotOpenOnlineDocumentation(void);
394  void slotOpenPDFFile(void);
395  void slotOtherOptionsSaved(void);
396  void slotPageClicked(const QString &link);
397  void slotPhotographSearch(void);
398  void slotPhotographsPerPageChanged(void);
399  void slotPopulateMembersBrowser(void);
400  void slotPreviewCanvasBackgroundColor(const QColor &color);
401  void slotPreviousPage(void);
402  void slotPrintReservationHistory(void);
403  void slotPrintReserved(void);
404  void slotPrintView(void);
405  void slotRefresh(void);
406  void slotRefreshAdminList(void);
407  void slotRefreshCustomQuery(void);
408  void slotReloadBiblioteqConf(void);
409  void slotRemoveMember(void);
410  void slotRequest(void);
411  void slotReserveCopy(void);
412  void slotReset(void);
413  void slotResetAllSearch(void);
414  void slotResetErrorLog(void);
415  void slotResetLoginDialog(void);
416  void slotResizeColumnsAfterSort(void);
417  void slotRoleChanged(int index);
418  void slotSaveAdministrators(void);
419  void slotSaveConfig(void);
420  void slotSaveDnt(bool state);
421  void slotSavePassword(void);
422  void slotSaveUser(void);
423  void slotSceneSelectionChanged(void);
424  void slotSearch(void);
425  void slotSearchBasic(void);
426  void slotSectionResized(int logicalIndex, int oldSize, int newSize);
427  void slotSelectDatabaseFile(void);
428  void slotSetColumns(void);
429  void slotSetFonts(void);
430  void slotShowAdminDialog(void);
431  void slotShowChangePassword(void);
432  void slotShowConnectionDB(void);
433  void slotShowCustomQuery(void);
434  void slotShowDbEnumerations(void);
435  void slotShowErrorDialog(void);
436  void slotShowGrid(void);
437  void slotShowHistory(void);
438  void slotShowImport(void);
439  void slotShowMembersBrowser(void);
440  void slotShowMenu(void);
441  void slotShowNext(void);
442  void slotShowOtherOptions(void);
443  void slotShowPrev(void);
444  void slotSqliteFileSelected(bool state);
445  void slotUpdateIndicesAfterSort(int column);
446  void slotUpgradeSqliteScheme(void);
447  void slotVideoGameSearch(void);
448  void slotViewDetails(void);
449  void slotViewFullOrNormalScreen(void);
450 };
451 
452 #endif
Definition: biblioteq_videogame.h:7
Definition: biblioteq_import.h:9
Definition: biblioteq_photographcollection.h:10
Definition: biblioteq_magazine.h:13
Definition: biblioteq_dbenumerations.h:8
Definition: biblioteq.h:35
Definition: biblioteq_book.h:14
Definition: biblioteq_otheroptions.h:8
Definition: biblioteq_cd.h:8
Definition: biblioteq_dvd.h:7
Definition: biblioteq_magazine.h:89
Definition: biblioteq_grey_literature.h:7
Definition: biblioteq.h:173