Do not need to remove user data when resetting preferences

This commit is contained in:
Eism 2022-03-03 15:27:15 +02:00
parent 70fb02a853
commit f9bff89903
17 changed files with 83 additions and 4 deletions

View file

@ -33,6 +33,10 @@ PreferencesPage {
return page.apply()
}
function reset() {
page.reset()
}
MidiDeviceMappingPage {
id: page

View file

@ -146,6 +146,14 @@ StyledDialogView {
navigation.order: 100000
onRevertFactorySettingsRequested: {
var pages = preferencesModel.availablePages()
for (var i in pages) {
var page = pages[i]
var obj = root.prv.pagesObjects[page.id]
obj.reset()
}
preferencesModel.resetFactorySettings()
}

View file

@ -49,6 +49,9 @@ Rectangle {
return true
}
function reset() {
}
function ensureContentVisibleRequested(contentRect) {
if (flickable.contentY + flickable.height < contentRect.y + contentRect.height) {
flickable.contentY += contentRect.y + contentRect.height - (flickable.contentY + flickable.height)

View file

@ -36,6 +36,10 @@ PreferencesPage {
return page.apply()
}
function reset() {
page.reset()
}
ShortcutsPage {
id: page

View file

@ -197,7 +197,8 @@ void PreferencesModel::load(const QString& currentPageId)
void PreferencesModel::resetFactorySettings()
{
configuration()->revertToFactorySettings();
static constexpr bool KEEP_DEFAULT_SETTINGS = true;
configuration()->revertToFactorySettings(KEEP_DEFAULT_SETTINGS);
configuration()->startEditSettings();
}

View file

@ -36,6 +36,8 @@ public:
virtual const MidiMappingList& midiMappings() const = 0;
virtual Ret setMidiMappings(const MidiMappingList& midiMappings) = 0;
virtual void resetMidiMappings() = 0;
virtual async::Notification midiMappinsChanged() const = 0;
// Setting
virtual void setIsSettingMode(bool arg) = 0;

View file

@ -68,11 +68,26 @@ mu::Ret MidiRemote::setMidiMappings(const MidiMappingList& midiMappings)
if (ok) {
m_midiMappings = midiMappings;
m_midiMappingsChanged.notify();
}
return ok;
}
void MidiRemote::resetMidiMappings()
{
mi::WriteResourceLockGuard resource_guard(multiInstancesProvider(), MIDI_MAPPING_RESOURCE_NAME);
fileSystem()->remove(configuration()->midiMappingUserAppDataPath());
m_midiMappings = {};
m_midiMappingsChanged.notify();
}
mu::async::Notification MidiRemote::midiMappinsChanged() const
{
return m_midiMappingsChanged;
}
void MidiRemote::setIsSettingMode(bool arg)
{
m_isSettingMode = arg;

View file

@ -25,9 +25,11 @@
#include "async/asyncable.h"
#include "modularity/ioc.h"
#include "system/ifilesystem.h"
#include "actions/iactionsdispatcher.h"
#include "multiinstances/imultiinstancesprovider.h"
#include "ishortcutsconfiguration.h"
#include "shortcutstypes.h"
#include "../imidiremote.h"
@ -39,9 +41,10 @@ class XmlWriter;
namespace mu::shortcuts {
class MidiRemote : public IMidiRemote, public async::Asyncable
{
INJECT(shortcuts, IShortcutsConfiguration, configuration)
INJECT(shortcuts, actions::IActionsDispatcher, dispatcher)
INJECT(shortcuts, system::IFileSystem, fileSystem)
INJECT(shortcuts, mi::IMultiInstancesProvider, multiInstancesProvider)
INJECT(shortcuts, actions::IActionsDispatcher, dispatcher)
INJECT(shortcuts, IShortcutsConfiguration, configuration)
public:
MidiRemote() = default;
@ -50,6 +53,8 @@ public:
const MidiMappingList& midiMappings() const override;
Ret setMidiMappings(const MidiMappingList& midiMappings) override;
void resetMidiMappings() override;
async::Notification midiMappinsChanged() const override;
// Setting
void setIsSettingMode(bool arg) override;
@ -74,6 +79,7 @@ private:
bool m_isSettingMode = false;
MidiMappingList m_midiMappings;
async::Notification m_midiMappingsChanged;
};
}

View file

@ -318,6 +318,14 @@ mu::Ret ShortcutsRegister::setShortcuts(const ShortcutList& shortcuts)
return ok;
}
void ShortcutsRegister::resetShortcuts()
{
mi::WriteResourceLockGuard(multiInstancesProvider(), SHORTCUTS_RESOURCE_NAME);
fileSystem()->remove(configuration()->shortcutsUserAppDataPath());
reload();
}
bool ShortcutsRegister::writeToFile(const ShortcutList& shortcuts, const io::path& path) const
{
TRACEFUNC;

View file

@ -50,6 +50,7 @@ public:
const ShortcutList& shortcuts() const override;
Ret setShortcuts(const ShortcutList& shortcuts) override;
void resetShortcuts() override;
async::Notification shortcutsChanged() const override;
Ret setAdditionalShortcuts(const std::string& context, const ShortcutList& shortcuts) override;

View file

@ -39,6 +39,7 @@ public:
virtual const ShortcutList& shortcuts() const = 0;
virtual Ret setShortcuts(const ShortcutList& shortcuts) = 0;
virtual void resetShortcuts() = 0;
virtual async::Notification shortcutsChanged() const = 0;
virtual Ret setAdditionalShortcuts(const std::string& context, const ShortcutList& shortcuts) = 0;

View file

@ -38,6 +38,10 @@ Item {
return mappingsModel.apply()
}
function reset() {
mappingsModel.reset()
}
EditMidiMappingDialog {
id: editMappingDialog

View file

@ -47,6 +47,10 @@ Item {
return shortcutsModel.apply()
}
function reset() {
shortcutsModel.reset()
}
Component.onCompleted: {
shortcutsModel.load()

View file

@ -148,6 +148,10 @@ void MidiDeviceMappingModel::load()
}
}
midiRemote()->midiMappinsChanged().onNotify(this, [this](){
load();
});
endResetModel();
}
@ -166,6 +170,11 @@ bool MidiDeviceMappingModel::apply()
return ret;
}
void MidiDeviceMappingModel::reset()
{
midiRemote()->resetMidiMappings();
}
bool MidiDeviceMappingModel::useRemoteControl() const
{
return midiConfiguration()->useRemoteControl();

View file

@ -26,6 +26,8 @@
#include <QAbstractListModel>
#include <QItemSelection>
#include "async/asyncable.h"
#include "modularity/ioc.h"
#include "midi/miditypes.h"
#include "midi/imidiconfiguration.h"
@ -36,7 +38,7 @@
#include "ui/uitypes.h"
namespace mu::shortcuts {
class MidiDeviceMappingModel : public QAbstractListModel
class MidiDeviceMappingModel : public QAbstractListModel, public async::Asyncable
{
Q_OBJECT
@ -63,6 +65,7 @@ public:
Q_INVOKABLE void load();
Q_INVOKABLE bool apply();
Q_INVOKABLE void reset();
Q_INVOKABLE void clearSelectedActions();
Q_INVOKABLE void clearAllActions();

View file

@ -129,6 +129,11 @@ bool ShortcutsModel::apply()
return ret;
}
void ShortcutsModel::reset()
{
shortcutsRegister()->resetShortcuts();
}
QItemSelection ShortcutsModel::selection() const
{
return m_selection;

View file

@ -62,6 +62,7 @@ public:
Q_INVOKABLE void load();
Q_INVOKABLE bool apply();
Q_INVOKABLE void reset();
Q_INVOKABLE void importShortcutsFromFile();
Q_INVOKABLE void exportShortcutsToFile();