1
0
mirror of https://github.com/tumic0/GPXSee.git synced 2025-02-21 10:10:49 +01:00

Added the "Don't show again" checkbox also to map load error messages

This commit is contained in:
Martin Tůma 2023-08-30 20:43:29 +02:00
parent f60c08c57e
commit 903c925e2a
3 changed files with 51 additions and 23 deletions

View File

@ -94,7 +94,7 @@ int App::run()
for (int i = 1; i < args.count(); i++) { for (int i = 1; i < args.count(); i++) {
if (!_gui->openFile(args.at(i), false, silent)) { if (!_gui->openFile(args.at(i), false, silent)) {
MapAction *a; MapAction *a;
if (!_gui->loadMap(args.at(i), a, true)) if (!_gui->loadMap(args.at(i), a, silent))
_gui->openFile(args.at(i), true, showError); _gui->openFile(args.at(i), true, showError);
else { else {
if (a) if (a)
@ -145,7 +145,7 @@ bool App::event(QEvent *event)
if (!_gui->openFile(e->file(), false, silent)) { if (!_gui->openFile(e->file(), false, silent)) {
MapAction *a; MapAction *a;
if (!_gui->loadMap(e->file(), a, true)) if (!_gui->loadMap(e->file(), a, silent))
return _gui->openFile(e->file(), true, showError); return _gui->openFile(e->file(), true, showError);
else { else {
if (a) if (a)

View File

@ -1667,9 +1667,10 @@ void GUI::loadMap()
_mapDir, MapList::formats())); _mapDir, MapList::formats()));
#endif // Q_OS_ANDROID #endif // Q_OS_ANDROID
MapAction *a, *lastReady = 0; MapAction *a, *lastReady = 0;
int showError = (files.size() > 1) ? 2 : 1;
for (int i = 0; i < files.size(); i++) { for (int i = 0; i < files.size(); i++) {
if (loadMap(files.at(i), a) && a) if (loadMap(files.at(i), a, showError) && a)
lastReady = a; lastReady = a;
} }
if (!files.isEmpty()) if (!files.isEmpty())
@ -1691,14 +1692,15 @@ static MapAction *findMapAction(const QList<QAction*> &mapActions,
} }
bool GUI::loadMapNode(const TreeNode<Map*> &node, MapAction *&action, bool GUI::loadMapNode(const TreeNode<Map*> &node, MapAction *&action,
bool silent, const QList<QAction*> &existingActions) const QList<QAction*> &existingActions, int &showError)
{ {
bool valid = false; bool valid = false;
action = 0; action = 0;
for (int i = 0; i < node.childs().size(); i++) for (int i = 0; i < node.childs().size(); i++)
valid = loadMapNode(node.childs().at(i), action, silent, existingActions); valid = loadMapNode(node.childs().at(i), action, existingActions,
showError);
for (int i = 0; i < node.items().size(); i++) { for (int i = 0; i < node.items().size(); i++) {
Map *map = node.items().at(i); Map *map = node.items().at(i);
@ -1706,11 +1708,22 @@ bool GUI::loadMapNode(const TreeNode<Map*> &node, MapAction *&action,
if (!(a = findMapAction(existingActions, map))) { if (!(a = findMapAction(existingActions, map))) {
if (!map->isValid()) { if (!map->isValid()) {
if (!silent) if (showError) {
QMessageBox::critical(this, APP_NAME, QString error = tr("Error loading map:") + "\n"
tr("Error loading map:") + "\n" + Util::displayName(map->path()) + ": " + map->errorString();
+ Util::displayName(map->path()) + ": "
+ map->errorString()); if (showError > 1) {
QMessageBox message(QMessageBox::Critical, APP_NAME,
error, QMessageBox::Ok, this);
QCheckBox checkBox(tr("Don't show again"));
message.setCheckBox(&checkBox);
message.exec();
if (checkBox.isChecked())
showError = 0;
} else
QMessageBox::critical(this, APP_NAME, error);
}
delete map; delete map;
} else { } else {
valid = true; valid = true;
@ -1735,12 +1748,12 @@ bool GUI::loadMapNode(const TreeNode<Map*> &node, MapAction *&action,
return valid; return valid;
} }
bool GUI::loadMap(const QString &fileName, MapAction *&action, bool silent) bool GUI::loadMap(const QString &fileName, MapAction *&action, int &showError)
{ {
TreeNode<Map*> maps(MapList::loadMaps(fileName)); TreeNode<Map*> maps(MapList::loadMaps(fileName));
QList<QAction*> existingActions(_mapsActionGroup->actions()); QList<QAction*> existingActions(_mapsActionGroup->actions());
return loadMapNode(maps, action, silent, existingActions); return loadMapNode(maps, action, existingActions, showError);
} }
void GUI::mapLoaded() void GUI::mapLoaded()
@ -1780,12 +1793,13 @@ void GUI::mapLoadedDir()
} }
void GUI::loadMapDirNode(const TreeNode<Map *> &node, QList<MapAction*> &actions, void GUI::loadMapDirNode(const TreeNode<Map *> &node, QList<MapAction*> &actions,
QMenu *menu, const QList<QAction*> &existingActions) QMenu *menu, const QList<QAction*> &existingActions, int &showError)
{ {
for (int i = 0; i < node.childs().size(); i++) { for (int i = 0; i < node.childs().size(); i++) {
QMenu *cm = new QMenu(node.childs().at(i).name(), menu); QMenu *cm = new QMenu(node.childs().at(i).name(), menu);
menu->addMenu(cm); menu->addMenu(cm);
loadMapDirNode(node.childs().at(i), actions, cm, existingActions); loadMapDirNode(node.childs().at(i), actions, cm, existingActions,
showError);
} }
for (int i = 0; i < node.items().size(); i++) { for (int i = 0; i < node.items().size(); i++) {
@ -1794,9 +1808,22 @@ void GUI::loadMapDirNode(const TreeNode<Map *> &node, QList<MapAction*> &actions
if (!(a = findMapAction(existingActions, map))) { if (!(a = findMapAction(existingActions, map))) {
if (!map->isValid()) { if (!map->isValid()) {
QMessageBox::critical(this, APP_NAME, tr("Error loading map:") if (showError) {
+ "\n" + Util::displayName(map->path()) + ": " QString error = tr("Error loading map:") + "\n"
+ map->errorString()); + Util::displayName(map->path()) + ": " + map->errorString();
if (showError > 1) {
QMessageBox message(QMessageBox::Critical, APP_NAME,
error, QMessageBox::Ok, this);
QCheckBox checkBox(tr("Don't show again"));
message.setCheckBox(&checkBox);
message.exec();
if (checkBox.isChecked())
showError = 0;
} else
QMessageBox::critical(this, APP_NAME, error);
}
delete map; delete map;
} else { } else {
a = new MapAction(map, _mapsActionGroup); a = new MapAction(map, _mapsActionGroup);
@ -1831,8 +1858,10 @@ void GUI::loadMapDir()
QList<QAction*> existingActions(_mapsActionGroup->actions()); QList<QAction*> existingActions(_mapsActionGroup->actions());
QList<MapAction*> actions; QList<MapAction*> actions;
QMenu *menu = new QMenu(maps.name()); QMenu *menu = new QMenu(maps.name());
int showError = (maps.items().size() > 1 || !maps.childs().isEmpty())
? 2 : 1;
loadMapDirNode(maps, actions, menu, existingActions); loadMapDirNode(maps, actions, menu, existingActions, showError);
_mapView->loadMaps(actions); _mapView->loadMaps(actions);
@ -2229,7 +2258,7 @@ void GUI::dropEvent(QDropEvent *event)
if (!openFile(file, false, silent)) { if (!openFile(file, false, silent)) {
MapAction *a; MapAction *a;
if (!loadMap(file, a, true)) if (!loadMap(file, a, silent))
openFile(file, true, showError); openFile(file, true, showError);
else { else {
if (a) if (a)

View File

@ -45,8 +45,7 @@ public:
GUI(); GUI();
bool openFile(const QString &fileName, bool tryUnknown, int &showError); bool openFile(const QString &fileName, bool tryUnknown, int &showError);
bool loadMap(const QString &fileName, MapAction *&action, bool loadMap(const QString &fileName, MapAction *&action, int &showError);
bool silent = false);
void show(); void show();
void writeSettings(); void writeSettings();
@ -154,9 +153,9 @@ private:
bool loadFile(const QString &fileName, bool tryUnknown, int &showError); bool loadFile(const QString &fileName, bool tryUnknown, int &showError);
void loadData(const Data &data); void loadData(const Data &data);
bool loadMapNode(const TreeNode<Map*> &node, MapAction *&action, bool loadMapNode(const TreeNode<Map*> &node, MapAction *&action,
bool silent, const QList<QAction*> &existingActions); const QList<QAction*> &existingActions, int &showError);
void loadMapDirNode(const TreeNode<Map*> &node, QList<MapAction*> &actions, void loadMapDirNode(const TreeNode<Map*> &node, QList<MapAction*> &actions,
QMenu *menu, const QList<QAction*> &existingActions); QMenu *menu, const QList<QAction*> &existingActions, int &showError);
void updateStatusBarInfo(); void updateStatusBarInfo();
void updateWindowTitle(); void updateWindowTitle();
bool updateGraphTabs(); bool updateGraphTabs();