From 7cc7dcee0dcd0a1308c614a65fcad4dbb183d1ee Mon Sep 17 00:00:00 2001 From: nasehim7 Date: Fri, 31 May 2024 18:46:18 +0100 Subject: [PATCH] Add: UI changes for ScoreAccessibility panel in the properties section & initial necessary settings model files --- src/inspector/CMakeLists.txt | 2 + src/inspector/models/abstractinspectormodel.h | 1 + src/inspector/models/inspectorlistmodel.cpp | 7 +- .../score/scoreaccessibilitysettingsmodel.cpp | 68 +++++++++++++++++++ .../score/scoreaccessibilitysettingsmodel.h | 55 +++++++++++++++ src/inspector/view/inspector_resources.qrc | 1 + .../Inspector/InspectorSectionDelegate.qml | 21 ++++++ .../score/ScoreAccessibilityInspectorView.qml | 64 +++++++++++++++++ 8 files changed, 218 insertions(+), 1 deletion(-) create mode 100644 src/inspector/models/score/scoreaccessibilitysettingsmodel.cpp create mode 100644 src/inspector/models/score/scoreaccessibilitysettingsmodel.h create mode 100644 src/inspector/view/qml/MuseScore/Inspector/score/ScoreAccessibilityInspectorView.qml diff --git a/src/inspector/CMakeLists.txt b/src/inspector/CMakeLists.txt index 9806b49e81d72..2e1eb52636362 100644 --- a/src/inspector/CMakeLists.txt +++ b/src/inspector/CMakeLists.txt @@ -86,6 +86,8 @@ set(MODULE_SRC ${CMAKE_CURRENT_LIST_DIR}/models/measures/measuressettingsmodel.h ${CMAKE_CURRENT_LIST_DIR}/models/score/scoreappearancesettingsmodel.cpp ${CMAKE_CURRENT_LIST_DIR}/models/score/scoreappearancesettingsmodel.h + ${CMAKE_CURRENT_LIST_DIR}/models/score/scoreaccessibilitysettingsmodel.cpp + ${CMAKE_CURRENT_LIST_DIR}/models/score/scoreaccessibilitysettingsmodel.h ${CMAKE_CURRENT_LIST_DIR}/models/score/scoredisplaysettingsmodel.cpp ${CMAKE_CURRENT_LIST_DIR}/models/score/scoredisplaysettingsmodel.h ${CMAKE_CURRENT_LIST_DIR}/models/score/internal/pagetypelistmodel.cpp diff --git a/src/inspector/models/abstractinspectormodel.h b/src/inspector/models/abstractinspectormodel.h index dcb3b3eda10ba..034e4e42af8df 100644 --- a/src/inspector/models/abstractinspectormodel.h +++ b/src/inspector/models/abstractinspectormodel.h @@ -65,6 +65,7 @@ class AbstractInspectorModel : public QObject, public muse::async::Asyncable SECTION_TEXT, SECTION_SCORE_DISPLAY, SECTION_SCORE_APPEARANCE, + SECTION_SCORE_ACCESSIBILITY, SECTION_PARTS, }; Q_ENUM(InspectorSectionType) diff --git a/src/inspector/models/inspectorlistmodel.cpp b/src/inspector/models/inspectorlistmodel.cpp index 212951ddb1f05..bae2afc954328 100644 --- a/src/inspector/models/inspectorlistmodel.cpp +++ b/src/inspector/models/inspectorlistmodel.cpp @@ -28,6 +28,7 @@ #include "text/textsettingsmodel.h" #include "score/scoredisplaysettingsmodel.h" #include "score/scoreappearancesettingsmodel.h" +#include "score/scoreaccessibilitysettingsmodel.h" #include "notation/inotationinteraction.h" #include "internal/services/elementrepositoryservice.h" @@ -73,7 +74,8 @@ void InspectorListModel::buildModelsForEmptySelection() static const InspectorSectionTypeSet persistentSections { InspectorSectionType::SECTION_SCORE_DISPLAY, - InspectorSectionType::SECTION_SCORE_APPEARANCE + InspectorSectionType::SECTION_SCORE_APPEARANCE, + InspectorSectionType::SECTION_SCORE_ACCESSIBILITY }; removeUnusedModels({}, false /*isRangeSelection*/, {}, persistentSections); @@ -195,6 +197,9 @@ void InspectorListModel::createModelsBySectionType(const InspectorSectionTypeSet case InspectorSectionType::SECTION_SCORE_APPEARANCE: newModel = new ScoreAppearanceSettingsModel(this, m_repository); break; + case InspectorSectionType::SECTION_SCORE_ACCESSIBILITY: + newModel = new ScoreAccessibilitySettingsModel(this, m_repository); + break; case InspectorSectionType::SECTION_PARTS: newModel = new PartsSettingsModel(this, m_repository); break; diff --git a/src/inspector/models/score/scoreaccessibilitysettingsmodel.cpp b/src/inspector/models/score/scoreaccessibilitysettingsmodel.cpp new file mode 100644 index 0000000000000..eca1e9803e11c --- /dev/null +++ b/src/inspector/models/score/scoreaccessibilitysettingsmodel.cpp @@ -0,0 +1,68 @@ +/* + * SPDX-License-Identifier: GPL-3.0-only + * MuseScore-Studio-CLA-applies + * + * MuseScore Studio + * Music Composition & Notation + * + * Copyright (C) 2021 MuseScore Limited + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 3 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "scoreaccessibilitysettingsmodel.h" + +#include "engraving/style/defaultstyle.h" +#include "translation.h" + +using namespace mu::inspector; +using namespace mu::notation; + +ScoreAccessibilitySettingsModel::ScoreAccessibilitySettingsModel(QObject* parent, IElementRepositoryService* repository) + : AbstractInspectorModel(parent, repository) +{ + setSectionType(InspectorSectionType::SECTION_SCORE_ACCESSIBILITY); + setTitle(muse::qtrc("inspector", "Accessibility")); +} + +PropertyItem* ScoreAccessibilitySettingsModel::scoreStylePreset() const +{ + return m_scoreStylePreset; +} + +void ScoreAccessibilitySettingsModel::setScoreStylePreset(PropertyItem* item) +{ + if (m_scoreStylePreset != item) { + m_scoreStylePreset = item; + emit scoreStylePresetChanged(); + } +} + +void ScoreAccessibilitySettingsModel::createProperties() +{ + // Placeholder +} + +void ScoreAccessibilitySettingsModel::requestElements() +{ + // Placeholder +} + +void ScoreAccessibilitySettingsModel::loadProperties() +{ + // Placeholder +} + +void ScoreAccessibilitySettingsModel::resetProperties() +{ + // Placeholder +} diff --git a/src/inspector/models/score/scoreaccessibilitysettingsmodel.h b/src/inspector/models/score/scoreaccessibilitysettingsmodel.h new file mode 100644 index 0000000000000..fb43823042956 --- /dev/null +++ b/src/inspector/models/score/scoreaccessibilitysettingsmodel.h @@ -0,0 +1,55 @@ +/* + * SPDX-License-Identifier: GPL-3.0-only + * MuseScore-Studio-CLA-applies + * + * MuseScore Studio + * Music Composition & Notation + * + * Copyright (C) 2021 MuseScore Limited + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 3 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#ifndef MU_INSPECTOR_SCOREACCESSIBILITYSETTINGSMODEL_H +#define MU_INSPECTOR_SCOREACCESSIBILITYSETTINGSMODEL_H + +#include "models/abstractinspectormodel.h" +#include "models/propertyitem.h" +#include "async/asyncable.h" + +namespace mu::inspector { +class ScoreAccessibilitySettingsModel : public AbstractInspectorModel +{ + Q_OBJECT + + Q_PROPERTY(PropertyItem * scoreStylePreset READ scoreStylePreset CONSTANT) + +public: + explicit ScoreAccessibilitySettingsModel(QObject* parent, IElementRepositoryService* repository); + + void createProperties() override; + void requestElements() override; + void loadProperties() override; + void resetProperties() override; + + PropertyItem* scoreStylePreset() const; + void setScoreStylePreset(PropertyItem* item); + +signals: + void scoreStylePresetChanged(); + +private: + PropertyItem* m_scoreStylePreset = nullptr; +}; +} + +#endif // MU_INSPECTOR_SCOREACCESSIBILITYSETTINGSMODEL_H diff --git a/src/inspector/view/inspector_resources.qrc b/src/inspector/view/inspector_resources.qrc index 72bec0e217055..1a9b7510e48ca 100644 --- a/src/inspector/view/inspector_resources.qrc +++ b/src/inspector/view/inspector_resources.qrc @@ -50,6 +50,7 @@ qml/MuseScore/Inspector/notation/fretdiagrams/internal/FretAdvancedSettingsTab.qml qml/MuseScore/Inspector/score/ScoreDisplayInspectorView.qml qml/MuseScore/Inspector/score/ScoreAppearanceInspectorView.qml + qml/MuseScore/Inspector/score/ScoreAccessibilityInspectorView.qml qml/MuseScore/Inspector/score/HideEmptyStavesSettings.qml qml/MuseScore/Inspector/common/InspectorPropertyView.qml qml/MuseScore/Inspector/common/TextSection.qml diff --git a/src/inspector/view/qml/MuseScore/Inspector/InspectorSectionDelegate.qml b/src/inspector/view/qml/MuseScore/Inspector/InspectorSectionDelegate.qml index 5455947ff5dd8..6ec434f4e9069 100644 --- a/src/inspector/view/qml/MuseScore/Inspector/InspectorSectionDelegate.qml +++ b/src/inspector/view/qml/MuseScore/Inspector/InspectorSectionDelegate.qml @@ -73,6 +73,7 @@ ExpandableBlank { } case Inspector.SECTION_SCORE_DISPLAY: return scoreSection case Inspector.SECTION_SCORE_APPEARANCE: return scoreAppearanceSection + case Inspector.SECTION_SCORE_ACCESSIBILITY: return scoreAccessibilitySection case Inspector.SECTION_PARTS: return partsSection } @@ -206,6 +207,26 @@ ExpandableBlank { } } + Component { + id: scoreAccessibilitySection + + ScoreAccessibilityInspectorView { + model: root.sectionModel + navigationPanel: root.navigationPanel + navigationRowStart: root.navigation.row + 1 + anchorItem: root.anchorItem + + onEnsureContentVisibleRequested: function(invisibleContentHeight) { + console.log("Ensure content visible requested with height: " + invisibleContentHeight) + root.ensureContentVisibleRequested(-invisibleContentHeight) + } + + onPopupOpened: { + root.popupOpened(openedPopup, control) + } + } + } + Component { id: partsSection diff --git a/src/inspector/view/qml/MuseScore/Inspector/score/ScoreAccessibilityInspectorView.qml b/src/inspector/view/qml/MuseScore/Inspector/score/ScoreAccessibilityInspectorView.qml new file mode 100644 index 0000000000000..decc466505704 --- /dev/null +++ b/src/inspector/view/qml/MuseScore/Inspector/score/ScoreAccessibilityInspectorView.qml @@ -0,0 +1,64 @@ +/* + * SPDX-License-Identifier: GPL-3.0-only + * MuseScore-Studio-CLA-applies + * + * MuseScore Studio + * Music Composition & Notation + * + * Copyright (C) 2021 MuseScore Limited + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 3 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +import QtQuick 2.15 +import QtQuick.Controls 2.15 +import QtQuick.Layouts 1.15 + +import MuseScore.Inspector 1.0 +import Muse.UiComponents 1.0 +import Muse.Ui 1.0 + +import "../common" + +InspectorSectionView { + id: root + implicitHeight: contentColumn.implicitHeight + + Column { + id: contentColumn + width: parent.width + spacing: 8 + + DropdownPropertyView { + id: scoreStylePreset + + titleText: qsTrc("inspector", "Score style preset") + propertyItem: null + visible: true + + model: [ + { text: qsTrc("inspector", "Default") }, + { text: qsTrc("inspector", "16mm MSN") }, + { text: qsTrc("inspector", "18mm MSN") }, + { text: qsTrc("inspector", "20mm MSN") }, + { text: qsTrc("inspector", "24mm MSN") }, + { text: qsTrc("inspector", "25mm MSN") } + ] + } + + FlatButton { + width: parent.width + text: qsTrc("inspector", "Customize shapes & colours") + onClicked: console.log("Customize shapes & colours button clicked") + } + } +}