mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-13 07:35:41 +08:00
Ref T306, use settings for flightplan and view directories
This commit is contained in:
@@ -8,22 +8,23 @@
|
||||
*/
|
||||
|
||||
#include "blackgui/filters/aircraftmodelfilterdialog.h"
|
||||
#include "blackgui/guiapplication.h"
|
||||
#include "blackgui/guiutility.h"
|
||||
#include "blackgui/menus/menuaction.h"
|
||||
#include "blackgui/shortcut.h"
|
||||
#include "blackgui/views/aircraftmodelview.h"
|
||||
#include "blackgui/views/viewbase.h"
|
||||
#include "blackgui/menus/menuaction.h"
|
||||
#include "blackgui/guiapplication.h"
|
||||
#include "blackgui/guiutility.h"
|
||||
#include "blackgui/shortcut.h"
|
||||
#include "blackmisc/simulation/aircraftmodel.h"
|
||||
#include "blackmisc/simulation/distributorlist.h"
|
||||
#include "blackmisc/simulation/simulatorinfolist.h"
|
||||
#include "blackmisc/aviation/aircrafticaocode.h"
|
||||
#include "blackmisc/aviation/aircrafticaocodelist.h"
|
||||
#include "blackmisc/aviation/airlineicaocodelist.h"
|
||||
#include "blackmisc/aviation/livery.h"
|
||||
#include "blackmisc/aviation/liverylist.h"
|
||||
#include "blackmisc/icons.h"
|
||||
#include "blackmisc/simulation/aircraftmodel.h"
|
||||
#include "blackmisc/simulation/distributorlist.h"
|
||||
#include "blackmisc/simulation/simulatorinfolist.h"
|
||||
#include "blackmisc/directories.h"
|
||||
#include "blackmisc/statusmessagelist.h"
|
||||
#include "blackmisc/icons.h"
|
||||
#include "blackmisc/variant.h"
|
||||
|
||||
#include <QAction>
|
||||
@@ -49,6 +50,7 @@ namespace BlackGui
|
||||
{
|
||||
// default
|
||||
this->standardInit(new CAircraftModelListModel(CAircraftModelListModel::OwnAircraftModelClient, this));
|
||||
this->setSettingsDirectoryIndex(CDirectories::IndexDirLastModelJsonOrDefault);
|
||||
|
||||
// shortcut
|
||||
QShortcut *stashShortcut = new QShortcut(CShortcut::keyStash(), this);
|
||||
|
||||
@@ -30,7 +30,6 @@
|
||||
#include <Qt>
|
||||
|
||||
class QDropEvent;
|
||||
class QWidget;
|
||||
|
||||
namespace BlackMisc
|
||||
{
|
||||
|
||||
@@ -317,24 +317,21 @@ namespace BlackGui
|
||||
void CViewBaseNonTemplate::rememberLastJsonDirectory(const QString &selectedFileOrDir)
|
||||
{
|
||||
if (selectedFileOrDir.isEmpty()) { return; }
|
||||
const QFileInfo fi(selectedFileOrDir);
|
||||
if ((fi.isDir() && fi.exists()) || (fi.isFile() && fi.exists()))
|
||||
{
|
||||
// existing dir
|
||||
m_lastJsonDirectory = fi.absolutePath();
|
||||
}
|
||||
const QString dir = CDirectories::fileNameToDirectory(selectedFileOrDir);
|
||||
QDir d(dir);
|
||||
if (!d.exists()) { return; }
|
||||
|
||||
// existing dir
|
||||
CDirectories directories = m_dirSettings.get();
|
||||
directories.setPropertyByIndex(m_dirSettingsIndex, CVariant::fromValue(dir));
|
||||
const CStatusMessage msg = m_dirSettings.setAndSave(directories);
|
||||
CLogMessage::preformatted(msg);
|
||||
}
|
||||
|
||||
QString CViewBaseNonTemplate::getRememberedLastJsonDirectory() const
|
||||
{
|
||||
if (!m_lastJsonDirectory.isEmpty()) { return m_lastJsonDirectory; }
|
||||
QString dirCandidate = m_dirSettings.get();
|
||||
const QFileInfo fi(dirCandidate);
|
||||
if ((fi.isDir() && fi.exists()) || (fi.isFile() && fi.exists()))
|
||||
{
|
||||
return fi.absolutePath();
|
||||
}
|
||||
return QStringLiteral("");
|
||||
const CDirectories directories = m_dirSettings.get();
|
||||
return directories.propertyByIndex(m_dirSettingsIndex).toQString();
|
||||
}
|
||||
|
||||
void CViewBaseNonTemplate::customMenu(CMenuActions &menuActions)
|
||||
@@ -567,7 +564,7 @@ namespace BlackGui
|
||||
}
|
||||
|
||||
// Save file path
|
||||
const QString dir = m_dirSettings.get();
|
||||
const QString dir = m_dirSettings.get().propertyByIndex(m_dirSettingsIndex).toQString();
|
||||
QString name(m_saveFileName);
|
||||
if (name.isEmpty())
|
||||
{
|
||||
@@ -1538,8 +1535,6 @@ namespace BlackGui
|
||||
break;
|
||||
}
|
||||
|
||||
this->rememberLastJsonDirectory(fileName);
|
||||
|
||||
try
|
||||
{
|
||||
const bool allowCacheFormat = this->allowCacheFileFormatJson();
|
||||
@@ -1567,6 +1562,7 @@ namespace BlackGui
|
||||
this->updateContainerMaybeAsync(container);
|
||||
m = CStatusMessage(this, CStatusMessage::SeverityInfo, "Reading " + fileName + " completed", true);
|
||||
this->jsonLoadedAndModelUpdated(container);
|
||||
this->rememberLastJsonDirectory(fileName);
|
||||
}
|
||||
catch (const CJsonException &ex)
|
||||
{
|
||||
@@ -1598,16 +1594,9 @@ namespace BlackGui
|
||||
if (fileName.isEmpty()) { return CStatusMessage(this, CStatusMessage::SeverityDebug, "Save canceled", true); }
|
||||
const QString json(this->toJsonString()); // save as CVariant JSON
|
||||
|
||||
// keep directory for settings
|
||||
const QFileInfo file(fileName);
|
||||
const QDir fileDir(file.absoluteDir());
|
||||
if (fileDir.exists())
|
||||
{
|
||||
m_dirSettings.setAndSave(fileDir.absolutePath());
|
||||
}
|
||||
|
||||
// save file
|
||||
const bool ok = CFileUtils::writeStringToFileInBackground(json, fileName);
|
||||
if (ok) { this->rememberLastJsonDirectory(fileName); }
|
||||
return ok ?
|
||||
CStatusMessage(this, CStatusMessage::SeverityInfo, "Writing " + fileName + " in progress", true) :
|
||||
CStatusMessage(this, CStatusMessage::SeverityError, "Writing " + fileName + " failed", true);
|
||||
|
||||
@@ -16,14 +16,14 @@
|
||||
#include "blackgui/models/modelfilter.h"
|
||||
#include "blackgui/models/selectionmodel.h"
|
||||
#include "blackgui/settings/guisettings.h"
|
||||
#include "blackgui/settings/viewdirectorysettings.h"
|
||||
#include "blackgui/menus/menuaction.h"
|
||||
#include "blackgui/blackguiexport.h"
|
||||
#include "blackmisc/namevariantpairlist.h"
|
||||
#include "blackmisc/propertyindex.h"
|
||||
#include "blackmisc/propertyindexvariantmap.h"
|
||||
#include "blackmisc/directories.h"
|
||||
#include "blackmisc/statusmessage.h"
|
||||
#include "blackmisc/variant.h"
|
||||
#include "blackgui/blackguiexport.h"
|
||||
#include "blackmisc/propertyindexvariantmap.h"
|
||||
#include "blackmisc/propertyindex.h"
|
||||
|
||||
#include <QAbstractItemView>
|
||||
#include <QFlags>
|
||||
@@ -287,6 +287,9 @@ namespace BlackGui
|
||||
//! Workaround as of https://stackoverflow.com/q/3433664/356726
|
||||
void setForceColumnsToMaxSize(bool force) { m_forceColumnsToMaxSize = force; }
|
||||
|
||||
//! Index of the directory we "remember"
|
||||
void setSettingsDirectoryIndex(BlackMisc::CDirectories::ColumnIndex directoryIndex) { m_dirSettingsIndex = directoryIndex; }
|
||||
|
||||
signals:
|
||||
//! Ask for new data from currently loaded data
|
||||
void requestUpdate();
|
||||
@@ -498,8 +501,8 @@ namespace BlackGui
|
||||
CLoadIndicator *m_loadIndicator = nullptr; //!< load indicator if needed
|
||||
QMap<MenuFlag, Menus::CMenuActions> m_menuFlagActions; //!< initialized actions
|
||||
QString m_saveFileName; //!< save file name (JSON)
|
||||
QString m_lastJsonDirectory; //!< remember last JSON directory
|
||||
BlackMisc::CSetting<Settings::TViewDirectorySettings> m_dirSettings { this }; //!< directory for load/save
|
||||
BlackMisc::CDirectories::ColumnIndex m_dirSettingsIndex = BlackMisc::CDirectories::IndexDirLastViewJsonOrDefault; //!< allows to set more specialized directories //!< remember last JSON directory, having this member allows to have specific dir
|
||||
BlackMisc::CSetting<BlackMisc::Settings::TDirectorySettings> m_dirSettings { this }; //!< directory for load/save
|
||||
BlackMisc::CSettingReadOnly<Settings::TGeneralGui> m_guiSettings { this, &CViewBaseNonTemplate::settingsChanged }; //!< general GUI settings
|
||||
|
||||
protected slots:
|
||||
|
||||
Reference in New Issue
Block a user