Turn application state into enum

The application state was encoded in a QByteArray. Thus, there was
no compile-time checking. Typos would lead to silent failures.

Turn the application state into an enum. Use the enum-class construct,
so that the values don't polute the global namespace. Moreover,
this makes them strongly typed, i.e. they don't auto-convert to
integers.

A disadvantage is that the enums now have to be cast to int
explicitly when used to index an array.

Replace two hash-maps in MainWindow to arrays of fixed sizes.

Move the application-state details into their own files.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2019-05-10 19:51:43 +02:00 committed by Dirk Hohndel
parent 114b3d9d47
commit 75767c456a
11 changed files with 100 additions and 75 deletions

View file

@ -181,7 +181,7 @@ void LocationInformationWidget::acceptChanges()
{
MainWindow::instance()->diveList->setEnabled(true);
MainWindow::instance()->setEnabledToolbar(true);
MainWindow::instance()->setApplicationState("Default");
MainWindow::instance()->setApplicationState(ApplicationState::Default);
MapWidget::instance()->repopulateLabels();
MultiFilterSortModel::instance()->stopFilterDiveSites();
}