1.   Allow the user to hide the main table's columns. (Done)
2.   Save major settings to a configuration file. (Done)
3.   Implement the Library of Congress query. (Done)
4.   Allow for image storage of front and back covers. (Done)
5.   Port to Windows XP. (Done) Test on FreeBSD (Done), Linux (Done),
     OS X (Done), and Solaris (Done).
6.   Allow searching of library members. This feature should only be
     available to administrators. (Done)
7.   Perform the database queries in threads. Not necessary. (Done)
8.   Create a configuration file to store values for various pull-down menus.
     (Done)
9.   Create a mechanism for determining the uniqueness of members. (Done)
10.  Provide support for:
        Books (Done)
	Cassette Tapes (TBD)
	DVDs (Done)
	Grey Literature (Done)
	Journals (Done)
	Magazines (Done)
	Music CDs (Done)
	Newspapers (Done) (Grey Literature)
	Photograph Collections (Done)
	Plants (TBD)
	VHS (TBD)
	Video Games (Done)
	Vinyl Records (TBD)
11.  Finish the availability column. (Done)
12.  Implement a generic search. (Done)
     Fields included:
	a. ID Number (ISBN, ISSN, Catalog Number, UPC, etc.)
	b. Title
	c. Publisher
	d. Publication Date
	e. Quantity
	f. Price
	g. Language
	h. Monetary Units
	i. Location
	j. Type (Removed)
	k. Availability
	l. Category
13.  Provide more detailed error messages. See #22. (Done)
14.  Process the configuration files with threads. (Done)
15.  Implement the lending of items. (Done)
16.  Implement the Copy Editor. (Done)
17.  Sort numeric columns. (Done)
18.  If selected, automatically resize column headers after sorting. (Done)
19.  Provide improved reset mechanisms. (Done)
20.  Set focus on appropriate widget after a widget reset. (Done)
21.  SQL queries must be compatible with PostgreSQL. (Done)
22.  Create a dialog that'll provide a complete record of
     a session's errors. (Done)
23.  Include the day in the publication date. (Done)
24.  Record an error, if one occurs, in the getAvailability() method. (Done)
25.  Separate the application into three tiers. Not necessary. (Done)
26.  Implement a close() slot for the Copy Editor. (Done)
27.  Provide a mechanism for displaying items that are overdue. (Done)
28.  Update the availability column after an item has been reserved and
     after it has been returned. (Done)
29.  Do not allow an administrator to delete a copy that has been
     reserved. (Done)
30.  Prevent the administrator from decreasing the quantity of an item
     if the action would delete copies that have been reserved. (Done)
31.  Complement the toolbar with menus. (Done)
32.  Add null default icons for pull-down menus and for buttons that
     lack icons. (Done)
33.  Pressing the Enter key on the Members Borrowers's Filter textfield
     should activate the Refresh slot. (Done)
34.  Preserve the display status of the main table's columns. (Done)
35.  Add the line number and the file where the error occurred
     to the error log. (Done)
36.  Escape special characters in search routines. (Done)
37.  Allow the user to copy the error dialog's contents to the copyboard
     buffer. (Done)
38.  Do not allow multiple identical barcodes for a particular item. (Done)
39.  The total runtime of a CD's tracks should equal the runtime specified
     for the CD. Provide the user with a mechanism to calculate the
     runtime based on the runtimes of the tracks. (Done)
40.  The uniqueness of a song should be determined by the CD's OID,
     album number, and song number. (Done)
41.  Do not allow an administrator to remove a member if that member has items
     reserved. (Done)
42.  Do not allow an administrator to modify barcodes of items that have been
     reserved. (Done)
43.  Provide a mechanism to list the items that have been reserved
     by a member. (Done)
44.  Allow an administrator to modify a copy's due date. (Done)
45.  Reorder the reset pull-down values so that they match the layout order
     of the widgets. (Done)
46.  Empty the members list after a disconnect from the database. (Done)
47.  Do not allow an item to be deleted if it has been reserved. (Done)
48.  Allow normal users to view an item's details. (Done)
49.  Class-ify the items. This will require an extensive overhaul. (Done)
50.  Add an item's ID to its window's title. (Done)
51.  Empty containers after a database disconnect. (Done)
52.  Update the items' windows after administrator authentication. (Done)
53.  Prevent the administrator from reserving a copy that no longer
     exists, has been reserved, or had its name changed.
     (Done)
54.  Perform an immediate status check of an item upon a reservation request.
     That is, verify that the copy is available by querying the database.
     (Done)
55.  Verify a copy's status via a database query prior to saving it. (Done)
56.  Only allow digits, or other applicable characters, in the ID
     (ISBN, etc.) fields. (Done)
57.  Replace all references of qtbook with biblioteq. (Done)
58.  Add "create" and "search" displays to appropriate containers. (Done)
59.  Remove modality from "create" and "search" displays. (Done)
60.  Update the Items Reserved column in the Members Browser after an
     item has been reserved or returned. (Done)
61.  If an item has been returned and the items list is displaying a member's
     reserved items that includes the returned item, update the Due Date
     to "Returned." (Done)
62.  Add an indicator to the main window's statusbar to inform the user if
     the error log contains entries. (Done)
63.  Provide per-item print support. (Done)
64.  Obtain the Library of Congress connection information from the
     biblioteq.conf file. (Done)
65.  The Library of Congress USMARC data fields for books are as
     follows: (Done)
	a. 010 LC Control Number
	b. 050 Call Number
	c. 082 Dewey Class Number
	d. 100 Author
	e. 245 Title
	f. 250 Edition
	g. 260 Publication Date
	h. 260 Publisher
	i. 300 Abstract (Description)
66.  Perform the Library of Congress queries in threads. (Done)
67.  Create an initial copy whenever a new item is created. Use the item's
     ID as the copy's Barcode. Refer to #77. (Done)
68.  Add notes sections to both the Copy Editor and individual items. (TBD)
     Retrieve the Notes section from the Library of Congress, if available.
69.  The Library of Congress USMARC data fields for journals and
     magazines are as follows: (Done)
	a. 010 LC Control Number
	b. 050 Call Number
	c. 082 Dewey Class Number
	d. 245 Title
	e. 260 Publication Date
	f. 260 Publisher
	g. 300 Abstract (Description)
70.  The ISSN is not unique. Use the Issue and Volume Number as part of
     the uniqueness key. Refer to #85. (Done)
71.  Prevent an administrator from launching multiple Z39.50 queries
     from the same item. (Done)
72.  Should an administrator be allowed to delete an item during a Z39.50
     query? No. (Done)
73.  Do not allow the administrator to set a member's "Member Since" date
     beyond the current date. (Done)
74.  Allow the user to set a global font. (Done)
75.  Change the font for the Administrator Browser, Borrowers Browser,
     Copy Editor, Custom Query Dialog, Error Log,
     Library of Congress Query Results, Member's Reservation History,
     and the Tracks Editor after a global font change. (Done)
76.  Save the selected global font to the user's configuration file. (Done)
77.  Create as many initial copies as necessary when a new item is created.
     The number of copies to create is to be determined by the quantity.
     Refer to #67. (Done)
78.  Read the saved global font from the user's configuration file during
     program initialization. (Done)
79.  Set focus on the widget that caused a completion-requirement error. (Done)
80.  Create a view of a restricted version of the borrower tables. (Done)
     See #114.
81.  Create an administrator table. (Done)
82.  Provide a mechanism for granting administrator privileges. (Done)
83.  Verify that all failed database queries are logged and, if necessary,
     the user is notified. (Done)
84.  Each type should have its own table. (Done)
85.  Create uniqueness keys for the magazine table based on the ISSN,
     Issue Number, and Volume Number. Refer to #70. (Done)
86.  Prompt the user if they wish to modify copy information
     after a quantity increase. (Done)
87.  Verify that modifying an item updates the main table correctly. (Done)
88.  Update the indices after a table sort. (Done)
89.  Create a borrowers table for each of the item types. (Done)
90.  Display the Member ID where appropriate. (Done)
91.  Notify the user that an item is unavailable before displaying
     the Members Browser. (Done)
92.  The Copy Due Date in the Borrowers Browser should reflect the actual
     date while also preventing the user from setting it to an invalid
     value. (Done)
93.  Allow SSL connections to the database server. (Done)
94.  Do not allow runtimes of 00:00:00. (Done)
95.  Implement roles: (Done)
	Role		Abilities
	Administrator	All
	Circulation	Reservation, Returns
	Standard	Browse
96.  Provide a mechanism that allows the user to print information
     from the main table. (Done)
97.  Simplify the branch-selection dialog. (Done)
     The user should be presented with the following fields:
	Userid
	Password
	Branch Name
98.  Allow editing of copy information during item creation. (Done)
99.  Create a statistics panel. (TBD)
100. Release a version for Windows XP. (Done)
101. Create a Journal category. The new class should inherit from the
     Magazine class. (Done)
102. Store information regarding anonymous connections in the
     biblioteq.conf file . This is no longer applicable. (Done)
103. Allow for custom queries. (Done)
104. The database searches should be case-insensitive. (Done)
105. Prepare the application for translations. (Done)
106. Provide a graphical representation of the database layout. (TBD)
107. Create an elegant display of a member's reserved items. (Done)
108. Update the Returned Date in the member_history table after an item
     has been returned. (Done)
109. Provide print support for the Member's Reservation History. (Done)
110. Display the application icon in the About dialog. (Done)
111. If necessary, update the Member's Reservation History panel
     whenever an item has been returned. (Done)
112. Verify the member's age prior to reserving an age-restricted item.
113. Implement OFFSYSTEM's Off-Link-URL. (Done)
114. Create a mechanism that allows members to log in. Members should
     also be allowed to view their reservation histories. (Done)
115. Create compact views for the borrower tables. See #80. (Done)
116. Drop the member's database account during member removal.
     Must first revoke all privileges. (Done)
117. Reload the image summary after an item has been updated. (Done)
118. Provide support for SQLite. (Done)
119. Allow for dropping of images from external applications. (Done)
120. Remove "green" informational dialogs. (Done)
121. Provide hyperlinks in text browsers. Once a link is clicked,
     the application should perform a query using the text that's referenced
     in the hyperlink. (Done)
122. Fix NULL QVariant bind values. (Done)
123. Notify the administrator to remind a new member of the default
     password. (Done)
124. Use the COALESCE function when injecting NULL values in WHERE clauses.
     (Done)
125. If an item has been deleted, remove its entry from the member history
     table. (Done)
126. Do not allow duplicate administrator ids. (Done)
127. Highlight required fields. (Done)
128. Properly reset highlighted fields to their original colors
     after a reset. (Done)
129. Fields should have their hyperlinks activated only after a successful
     save. (Done)
130. Devise an intelligent widget-centering algorithm. (Done)
131. Reset the Administrator Browser after a database disconnect. (Done)
132. Key fields should have non-empty default values. This currently applies
     to the Book category. (Done)
133. Provide a mechanism for generating unique ISBNs. (Done)
134. Non-administrators should not be presented with price and monetary
     units information. (Done)
135. Must support reservation requests. (Done)
136. Replace all borrower tables with one table that also contains item
     types. (Done)
137. Update an item's oldq variable whenever the copy data has been saved.
     (Done)
138. Remove the database disconnect confirmation question. (Done)
139. Allow generation of random ISBNs for PostgreSQL databases. (Done)
140. Do not allow requested items to be deleted. (Done)
141. Only members should me able to request items. Administrators
     should be able to view all requested items while members should only
     be allowed to view the items that they have requested. (Done)
142. SQLite databases do not require request systems. (Done)
143. Enable selection options based on privileges: (Done)
	Administrator / Circulation / Member
		All
		All Overdue
		All Requested
		All Reserved
		Items
	Librarian
		All
		Items
	Membership
		All
		Items
144. A request should be removed once it has been approved (reserved). (Done)
145. Notify administrators of requests? No. (Done)
146. Do not allow multiple requests of identical items. (Done)
147. Allow members to view their overdue items, requests, and reservations.
     (Done)
148. Canceling a custom query that references images is difficult.
     Must resolve. Inform the user of potential issue. (Done)
149. Remove requested items after a member has been deleted. (Done)
150. Drop image format columns from the various item tables. (Done)
151. The program should display a different icon for the request action
     when an administrator is logged on. (Done)
152. Create an OS X installation package. (Done)
153. Create a Journal table. (Done)
154. Allow for multiple categories (labels). (Done)
155. Download front cover images from Amazon. (Done)
156. Close HTTP sockets after an Amazon query. (Done)
157. Style sheets are not fully supported in OS X (Edition,
     Publication Date). (Done)
158. Resolve resource competition for Amazon and Z39.50 queries. (Done)
159. Provide documentation for administrator privileges. (Done)
160. Provide a status dialog for the Library of Congress query. (Done)
161. Allow the user to cancel an image download. (Done)
162. Integrate the administrator privileges documentation into the
     application. (Done)
163. Provide an option for downloading OFFSYSTEM files. (No)
164. Warn the user of unsaved changes in the Members Browser. (Done)
165. Implement the closeEvent for progress dialogs that must not be
     dismissed. (Done)
166. Allow members to cancel their reserved items. (Done)
167. Warn the user of unsaved changes for new items. (Done)
168. Add the Abstract information to the summary panel. (Done)
169. Add e-mail addresses to patron accounts. (Done)
170. Allow prices of 0.00. Search routines require review. (Done)
171. The UPC should be a 13-digit number. (Done)
172. Remove "Library of Congress" references. (Done)
173. The e-mail address format should be abc@def.xyz. (Done)
174. Investigate the privileges in misc_functions.cc. (Done)
175. Update the memberProperties container when a member's information
     has been saved. (Done)
176. Be consistent when enabling and / or hiding widgets. (Done)
177. Resolve "do not delete object" warnings that appear after
     various search dialogs are dismissed. (Done)
178. Investigate the widget-centering algorithm. (Done)
179. The "request" toolbutton's icon is incorrect under some
     circumstances. (Done)
180. Fix the incorrect question regarding changes when attempting to
     create a new member. (Done)
181. Regular members do not require access to the admin table. (Done)
182. The Membership account is unable to access the Members Browser. (Done)
183. Grant the createuser privilege to the Membership account correctly.
     Remove the privilege accordingly. (Done)
184. Fix the administrator privileges functionality. (Done)
185. Improve the misc_functions::updateColumn method. It should locate
     all appropriate matches. Functions correctly. (Done)
186. Removing an item via the database will not remove corresponding
     entries in the item_borrower table. Should item removal be prevented
     if an item is reserved? This is the current behavior of BiblioteQ,
     however, the database schema does not enforce this. Deleting an item
     will now delete reservation histories and statuses. (Done)
187. Add the Place of Publication to Video Games. (Done)
188. Video Games should have default values of N/A for some mandatory
     fields. (Done)
189. CDs and DVDs should have default values of N/A for some mandatory
     fields. (Done)
190. Review all source files for contains:
     borrowers_editor.cc (Done)
     copy_editor.cc (Done)
     image_drop_site.cc (Done)
     main_table.cc (Done)
     misc_functions.cc (Done)
     myqstring.cc (Done)
     qtbook_book.cc (Done)
     qtbook.cc (Done)
     qtbook_cd.cc (Done)
     qtbook_dvd.cc (Done)
     qtbook_journal.cc (Done)
     qtbook_magazine.cc (Done)
     qtbook_videogame.cc (Done)
191. Pressing the escape key on a QDialog window will not trigger a
     close event. As a result, "dirty data" warning may be displayed. (Done)
192. Remove OFFSYSTEM support. The project appears abandoned. (Done)
193. All QFileDialog instances should have their current directory set
     to the user's home directory. (Done)
194. Allow patrons to opt-out of reservation histories. (Done)
195. Dates should not be retrieved from local services.
     PostgreSQL only. (TBD)
196. Users should only be allowed to view their reservation histories.
     Create temporary views? No. Row-level privacy. (Done)
197. After an item has been added, the item's row must be updated. One
     issue with this requirement is that the item may not be listed
     in the main table. Thus, its row number will not be available.
     Item rows are updated on data retrieval. If an item is updated,
     its table / view representation is changed if the representation has
     the same OID as the item. (Done)
198. Bind values in SQL queries:
     biblioteq_a.cc (Done)
     biblioteq_b.cc (Done)
     biblioteq_book.cc (Done) (Searching, Done)
     biblioteq_borrowers_editor.cc (Done)
     biblioteq_cd.cc (Done) (Searching, Done)
     biblioteq_copy_editor.cc (Done)
     biblioteq_copy_editor_book.cc (Done)
     biblioteq_dbenumerations.cc (Done)
     biblioteq_dvd.cc (Done) (Searching, Done)
     biblioteq_grey_literature.cc (Done) (Searching, Done)
     biblioteq_magazine.cc (Done) (Searching, Done)
     biblioteq_misc_functions.cc (Done)
     biblioteq_photographcollection.cc (Done) (Searching, Done)
     biblioteq_videogame.cc (Done) (Searching, Done)
199. Settings panel, per Csanád Baksay. (TBD)
200. Remove OFFSET? No. (Done)
201. Deleting NULL pointers is redundant, save for deleteLater(). (Done)
202. SQL injections. See item #198. (Done)
203. Warn the user if there are stale photograph item data. (Done)
204. item_borrower and item_request privacy. PostgreSQL >= 9.5. (Done)
205. Can BiblioteQ benefit from EXISTS()? Replaced most COUNT()
     instances. (Done)
206. Include Poppler and YAZ version information in the About dialog. (Done)
207. biblioteq_misc_functions::getSqliteUniqueId() should return the
     lastInsertId() instead of using an additional query. (Done)
208. Retranslate the Language menu. (Done)
209. Tab-key navigation. (Done)
210. Anti-aliasing in scene widgets. (Done)
211. Redo / undo in large text editors. (Done)
212. Do not clear the fields of the General Search panel after
     a post-search reset is performed. (Done)
213. Context menus. (Done)
214. Improve PDF pagination. (Done)
215. Documentation. (Done)
216. Bar scanner. (TBD)
217. Database import of books. (Done)
218. Translation files are not properly generated on OS X. (Done)
219. Portuguese translation. (Done)
220. Update item icon in main table after item update. (Done)
221. ILIKE, or case-insensitive search. (Done)
222. UNACCENT(). (Done)
223. Save custom queries in a favorites system. (TBD)
224. Query Open Library for book cover images. (Done)
225. Query Open Library for journals / magazines cover images. (TBD)
226. Improve performance of Custom Query's refresh. Not a problem. (Done)
227. Query Open Library. (Done)
228. Format changes (sort members and methods):
	_a (Done)
	_b (Done)
	_book (Done)
	_c (Done)
	_cd (Done)
	_dvd (Done)
	_grey_literature (Done)
        _magazine (Done)
	_misc_functions (Done)
229. Review all included files and remove extraneous instances:
	*.cc (Done)
	*.h (Done)
230. Remove qmain singleton. (Done)
231. Review and remove Q_UNUSED. (Done)
232. Propagate qmain to biblioteq_hyperlinked_text_edit. (Done)
233. Best View in photographs. (Done)
234. Resize photograph on container resize. (Done)
235. Photograph rotations. (Done)
236. Display descriptions in photograph views. (TBD)
237. Display contact information in Members Browser. (Done)
238. Issue QApplication::processEvents() after dialogs are dismissed:
	Source/biblioteq_a.cc (Done)
	Source/biblioteq_b.cc (Done)
	Source/biblioteq_book.cc (Done)
	Source/biblioteq_borrowers_editor.cc (Done)
	Source/biblioteq_c.cc (Done)
	Source/biblioteq_cd.cc (Done)
	Source/biblioteq_copy_editor_book.cc (Done)
	Source/biblioteq_copy_editor.cc (Done)
	Source/biblioteq_dbenumerations.cc (Done)
	Source/biblioteq_dvd.cc (Done)
	Source/biblioteq_grey_literature.cc (Done)
	Source/biblioteq_item.cc (Done)
	Source/biblioteq_magazine.cc (Done)
	Source/biblioteq_misc_functions.cc (Done)
	Source/biblioteq_otheroptions.cc (Done)
	Source/biblioteq_pdfreader.cc (Done)
	Source/biblioteq_photographcollection.cc (Done)
	Source/biblioteq_sruResults.cc (Done)
	Source/biblioteq_videogame.cc (Done)
	Source/biblioteq_z3950results.cc (Done)
239. Google Books API: https://developers.google.com/books/docs/v1/using. (TBD)
240. Report import results. (Done)
241. Remove std::nothrow. (Done)
242. Replace first(). The file biblioteq_c.cc is fine. (Done)
243. Press Enter key on main table to access selected items. (Done)
244. Re-introduce MySQL. (TBD)
245. Press Enter key main scene to access selected items. (Done)
246. Do not show progress dialogs unless necessary. (Done)
247. C++2011. (Done)
248. Print previews. (Done)
249. Redesign reservation history print layout. (Done)
250. Parse MARC tags for books. (Done)
251. Parse MARC tags for journals and magazines. (Done)
252. Synchronize page selection in PDF reader. (Done)
253. Parameterize all SQL search queries:
	Source/biblioteq_book.cc (Done)
	Source/biblioteq_c.cc (Done)
	Source/biblioteq_cd.cc (Done)
	Source/biblioteq_dvd.cc (TBD)
	Source/biblioteq_grey_literature.cc (TBD)
	Source/biblioteq_magazine.cc (TBD)
	Source/biblioteq_photographcollection.cc (TBD)
	Source/biblioteq_videogame.cc (TBD)
254. Qt 5.15 LTS warnings. (Done)
255. Display all files in a separate container. (Done)
256. Compress attachments. (Done)
257. Foreign constraints are not enabled on SQLite. Remove child
     table entries upon item removal. (Done)
258. Enumerate database fields and table columns. (TBD)
259. Backup script for FreeBSD. (Done)
260. Replace Poppler with QtPDF. QtPDF requires a fee! (Done)
261. Read status for books. SQLite only. (Done)
262. Persian language. (TBD)
263. Highlight unavailable items: per-item color. (Done)
264. Optional YAZ. (Done)
265. Icons mode and read status. (TBD)
266. Qt 6.2 LTS:
     QNetworkReply (Done)
     QSqlQuery (TBD)
267. Qt 6.2 LTS regular expressions. (TBD)
268. Prepare Database Enumerations during an import. (TBD)
269. Embed translation files. (Done)
270. Android port:
     Configuration Menu (Done)
     Exit (Done)
     Menu Icons (Done)
     PostgreSQL (TBD)
271. Export/import patron information. (TBD)
