P-140 Electronic Logbook Update 2
This week, I implemeted a a “search tag” system in the program, which allows the user to tag a post with a list of key words and phrases, which are then searchable using the search function. I am also putting in a custom tag system, where users will be allowed to specify a field, either in the new Journal screen, or in the post entry screen. These custom tags are searchable, and can be used to customise a journal according to project specific needs, for example, a “supervisor” tag could be added, or a “Final Release Date” tag could be used. These tags can be modified per post, or per journal.
I also began work on a predictive text system for these tags, where the user will be able to quickly choose a tag by typing it letter by letter, and having a list of compatible tags appear to the right of the text input screen.
I am experimenting with various different methods of searching and displaying information in this project, and predictive text is something I have never done before, so it will be interesting to see how it turns out.
I spent the majority of my time, however, working on the encryption system for this project. After some research, I chose to use crypto++. This is an open source, (Under the Boost Software Licence version 1.0) well-supported and fully-featured encryption library for C++.
However, I ran into some irritating issues implementing this in Qt. I was having a lot of linking issues, caused by the build setting being different from Visual Studio, where I compiled the crypto++ library, to Qt, where I am developing my program. There are several ways to use crypto++, static linking dynamic linking, debug, release, etc etc. I had to try a number of different linking, additional dependencies, and build setting before I could finally get it to work, but eventually, I did, and I now have a working encryption solution.
I am not sure if I will be able to implement full data verification and integrity checking like I spoke about in a previous post (preventing the user from altering their own files), but at least I will be able to offer solid, easy to use, encryption for data security.
Next week, in addition to fully implementing encryption and some other minor things, I will have to start working on some kind of client/server sync system to allow the user to use multiple versions of the program on multiple machines without having to have a dedicated server set up to sync both files.




