Replaced the old content type filters with KiwixChoiceBox
Previously, the content type was a tri state checkbox having yes, no & no-filter values.
This changes that to add the values in the following format:
Pictures (_pictures:yes)
No Pictures (_pictures:no)
"no-filter" is simulated by not having any of the above 2 selected.
This removes the previous method of filtering books by category, which filtered using tags.
Now, we move to a more generic way (similar to library) using the category filter.
This change adds a new widget called KiwixChoiceBox
The design inspiration is taken from here: https://harvesthq.github.io/chosen/#multiple-select
setType() takes a string to put on the label
We can add possible choices using the setSelections() method
This change puts download directory in an always monitoring state.
For any files downloaded using kiwix downloader (and hence saved in download directory), this will automatically update the library if file is restored after deletion.
Earlier, we got the index from cursor's position this led to the close functionality to only work when cursor is hovered over tab title
We get the index straight from the stacked widget now.
Earlier, we used the Qt::Close key sequence but it's not following what other browswers do
On windows, Close button was mapped to Ctrl+f4 and ctrl+W
but on Gnome and KDE, it was only mapped to Ctrl+W
This change puts Ctrl+F4 and Ctrl+W explicitly as shortcuts to close tab.
Earlier, context menu showed "Open"/"Delete" options only in local library.
This doesn't make sense when browsing the remote library - already downloaded files should show "Open"/"Delete" instead of "Download book"
The category values are not static after this change.
If local library is displayed, we get the categories from local library
If remote library is displayed, we send a request to /catalog/v2/categories
Done necessary refactoring in OpdsRequestManager to allow different types of requests.
Added functions to provide languages and categories from an OPDS feed.
Splitted the views into RowNode and DescriptionNode for consistency
RowNode represents one row with thumbnail, name, data, size, etc.
DescriptionNode shows the description
created ContentManagerHeader, inherited from QHeaderView, to implement not showing the sort indicator for first column.
Changed sort indicator position to left of text