About fonts



There are 3 fonts: generalFont, m_labelFont, m_fixedFont. Of them, generalFont isn't read by other classes, so it's
just a local variable that gets initialized based on m_strGenFontName and m_nGenFontSize in CommonData::setFontInfo()
and then used as param to QApplication::setFont(), which sets the default font for the app.

OTOH, m_labelFont and m_fixedFont are used when specific parts of text need to be displayed with a different font,
which is not very common:
    - m_fixedFont is used in several columns for streams and notes in the main window
    - m_labelFont is based on generalFont, but it may be smaller; it is used for the note headers and for the
        row labels for frames in Main Window/Tag Details and in the Tag editor

Then there are the global variables CELL_WIDTH and CELL_HEIGHT. CELL_WIDTH is actually a minimum that cells should
have, computed using generalFont, such that a note label (2 letters) should fit there.

CELL_HEIGHT is for the height of cells, such that single-row text is shown properly

Global variable MIN_FILE_WIDTH is for the minimum size a cell showing file names should take. It is based on generalFont

Then there is decreaseRowHeaderFont(), which was introduced because Qt5 on Windows added some padding causing
header text to no longer fit.

Finally, NoCropHeaderView is used in some grids, and it takes its font from getCommonData(), ignoring whatever was set
for the grid. This happens in TagReadPanel, which also uses decreaseRowHeaderFont(), and, as a result, the call
to decreaseRowHeaderFont() changes the space the header takes but not the font.

DoubleList uses decreaseRowHeaderFont().

===================

About grids

The value of the vertical headers is given in 2 ways, depending on the actual grid widget:
    - Via QTableView's model, in QAbstractTableModel::headerData(), e.g. in NotesModel::headerData(), where there is
        a "nSection+1" (or in CurrentFileModel::headerData(), where there's a string)
    - Via QTableWidget::setVerticalHeaderLabels(), like in TagReadPanel

The width of the vertical headers is generally computed via getNumVertHdrSize(), for reasons explained there. In short,
the issue seems to be that the rows change dynamically but Qt keeps using whatever it found first; apparently this
doesn't matter for m_pFilesG (files and notes in the main window) due to the way data is refreshed there.

Alignment:
    - For regular cells: myOption.displayAlignment |= Qt::AlignRight;
    - For headers: verticalHeader()->setDefaultAlignment(Qt::AlignRight | Qt::AlignVCenter);

Some sizeHint() functions don't get called or don't matter, like FilesGDelegate::sizeHint(). This needs to be reviewed

For the "current file" grid in the tag editor, the right thing to do is to fix CurrentFileDelegate::sizeHint(),
but a hack is used instead

In Windows, as of 2023.12.19 the headers and the cells are both white and there's no line between header and body, so
things are confusing. As such, function setHeaderColor() was added. Its relation with decreaseRowHeaderFont() and
is not clear, as documented in DoubleList::DoubleList(), where order is essential (not 100% sure the same is true
everywhere).

====================

HTTPS

OpenSSL is needed. In Linux, it is probably installed by default. On Windows, it isn't. There's a variant that comes
with Qt, but it only works with the latest Qt (i.e. Qt 6.x), while the Qt tool allows the installation of Qt 5.x.

In main, there's a call to sslLibraryBuildVersionString(), which can be used to figure out what Qt actually wants,
which can then be installed from https://slproweb.com/products/Win32OpenSSL.html

There is a short program for tests at cpp/TestHttps01
