Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion muse
Submodule muse updated 57 files
+2 −0 framework/audio/engine/internal/iexecoperation.h
+2 −0 framework/cloud/internal/abstractcloudservice.cpp
+1 −0 framework/cloud/musescorecom/musescorecomservice.cpp
+2 −2 framework/dockwindow/internal/dockseparator.cpp
+2 −2 framework/dockwindow/qml/Muse/Dock/docktoolbarview.h
+2 −2 framework/dockwindow_v2/qml/Muse/Dock/docktoolbarview.h
+1 −0 framework/draw/internal/qpainterprovider.cpp
+96 −1 framework/draw/types/brush.h
+2 −1 framework/draw/types/drawtypes.h
+2 −0 framework/extensions/qml/Muse/Extensions/CMakeLists.txt
+11 −3 framework/extensions/qml/Muse/Extensions/internal/ExtensionsListView.qml
+1 −1 framework/global/CMakeLists.txt
+1 −0 framework/global/api/apiutils.h
+2 −2 framework/global/io/internal/filesystem.h
+1 −0 framework/interactive/api/interactiveapi.cpp
+1 −0 framework/interactive/internal/iinteractiveprovider.h
+1 −0 framework/interactive/internal/interactive.cpp
+1 −0 framework/interactive/qml/Muse/Interactive/interactiveprovidermodel.h
+0 −1 framework/learn/qml/Muse/Learn/LearnPage.qml
+2 −0 framework/multiwindows/CMakeLists.txt
+2 −0 framework/multiwindows/internal/singleprocess/singleprocessprovider.cpp
+2 −0 framework/multiwindows/qml/Muse/MultiWindows/multiinstancesdevmodel.cpp
+1 −0 framework/multiwindows/qml/Muse/MultiWindows/multiinstancesdevmodel.h
+2 −0 framework/rcontrol/CMakeLists.txt
+0 −1 framework/shortcuts/qml/Muse/Shortcuts/internal/ShortcutsList.qml
+0 −1 framework/shortcuts_v2/qml/Muse/Shortcuts/internal/ShortcutsList.qml
+16 −0 framework/toast/internal/toastprovider.cpp
+3 −0 framework/toast/internal/toastprovider.h
+3 −0 framework/toast/itoastprovider.h
+60 −0 framework/toast/qml/Muse/Toast/ToastItem.qml
+41 −0 framework/toast/qml/Muse/Toast/ToastProvider.qml
+86 −36 framework/toast/qml/Muse/Toast/toastlistmodel.cpp
+12 −0 framework/toast/qml/Muse/Toast/toastlistmodel.h
+2 −0 framework/tours/CMakeLists.txt
+2 −0 framework/tours/qml/Muse/Tours/CMakeLists.txt
+2 −0 framework/ui/api/themeapi.cpp
+1 −0 framework/ui/inavigationcontroller.h
+128 −12 framework/ui/internal/navigationcontroller.cpp
+9 −0 framework/ui/internal/navigationcontroller.h
+2 −0 framework/ui/qml/Muse/Ui/initialletternavigation.cpp
+1 −0 framework/ui/qml/Muse/Ui/initialletternavigation.h
+7 −0 framework/ui/qml/Muse/Ui/navigationsection.cpp
+2 −0 framework/ui/qml/Muse/Ui/navigationsection.h
+1 −0 framework/ui/tests/mocks/navigationmocks.h
+389 −0 framework/ui/tests/navigationcontroller_tests.cpp
+2 −1 framework/ui/uimodule.h
+2 −0 framework/ui/view/qmldataformatter.cpp
+1 −0 framework/ui/view/widgetstyle.cpp
+2 −0 framework/uicomponents/qml/Muse/UiComponents/CMakeLists.txt
+1 −0 framework/uicomponents/qml/Muse/UiComponents/abstracttableviewmodel.cpp
+1 −0 framework/uicomponents/qml/Muse/UiComponents/filteredflyoutmodel.h
+52 −58 framework/uicomponents/qml/Muse/UiComponents/fuzzyfilter.cpp
+2 −7 framework/uicomponents/qml/Muse/UiComponents/fuzzyfilter.h
+54 −4 framework/uicomponents/qml/Muse/UiComponents/fuzzyscoresorter.cpp
+3 −1 framework/uicomponents/qml/Muse/UiComponents/polylineplot.cpp
+2 −0 framework/update/CMakeLists.txt
+2 −2 framework/update/internal/appupdatescenario.cpp
41 changes: 0 additions & 41 deletions src/palette/internal/palettemodel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1109,44 +1109,3 @@ bool FilterPaletteTreeModel::filterAcceptsRow(int sourceRow, const QModelIndex&
}
return cellFilter->accept(*cell);
}

//---------------------------------------------------------
// PaletteCellFilterProxyModel::PaletteCellFilterProxyModel
//---------------------------------------------------------

PaletteCellFilterProxyModel::PaletteCellFilterProxyModel(QObject* parent)
: QSortFilterProxyModel(parent)
{
setFilterRole(Qt::ToolTipRole); // palette cells have no data for DisplayRole
}

//---------------------------------------------------------
// PaletteCellFilterProxyModel::filterAcceptsRow
//---------------------------------------------------------

bool PaletteCellFilterProxyModel::filterAcceptsRow(int sourceRow, const QModelIndex& sourceParent) const
{
const QAbstractItemModel* model = sourceModel();
const QModelIndex rowIndex = model->index(sourceRow, 0, sourceParent);
const int rowCount = model->rowCount(rowIndex);

if (rowCount == 0) {
if (QSortFilterProxyModel::filterAcceptsRow(sourceRow, sourceParent)) {
return true;
}
// accept row if its parent is accepted by filter: necessary to be able to search by palette name
if (sourceParent.isValid()
&& QSortFilterProxyModel::filterAcceptsRow(sourceParent.row(), sourceParent.parent())) {
return true;
}
return false;
}

for (int i = 0; i < rowCount; ++i) {
if (filterAcceptsRow(i, rowIndex)) {
return true;
}
}

return false;
}
13 changes: 0 additions & 13 deletions src/palette/internal/palettemodel.h
Original file line number Diff line number Diff line change
Expand Up @@ -225,19 +225,6 @@ private slots:
public:
FilterPaletteTreeModel(PaletteCellFilter* filter, PaletteTreeModel* model, QObject* parent = nullptr);
};

//---------------------------------------------------------
// PaletteCellFilterProxyModel
//---------------------------------------------------------

class PaletteCellFilterProxyModel : public QSortFilterProxyModel
{
Q_OBJECT
public:
PaletteCellFilterProxyModel(QObject* parent = nullptr);

bool filterAcceptsRow(int sourceRow, const QModelIndex& sourceParent) const override;
};
}

#endif
37 changes: 29 additions & 8 deletions src/palette/internal/paletteprovider.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,20 +29,24 @@
#include <QMimeData>
#include <QStandardPaths>

#include "global/translation.h"
#include "global/io/path.h"
#include "global/types/uri.h"

#include "uicomponents/qml/Muse/UiComponents/fuzzyfilter.h"
#include "uicomponents/qml/Muse/UiComponents/fuzzyscoresorter.h"
#include "uicomponents/qml/Muse/UiComponents/sortfilterproxymodel.h"

#include "engraving/dom/mscore.h"

#include "notation/inotation.h"
#include "notation/inotationinteraction.h" // IWYU pragma: keep

#include "palettecreator.h"

#include "io/path.h"

#include "translation.h"
#include "types/uri.h"

#include "app_config.h"

using namespace Qt::StringLiterals;
using namespace muse;
using namespace mu::palette;
using namespace mu::engraving;
Expand Down Expand Up @@ -607,8 +611,25 @@ void PaletteProvider::init()

m_masterPaletteModel = new PaletteTreeModel(PaletteCreator(iocContext()).newMasterPaletteTree(), iocContext(), this);

m_searchFilterModel = new PaletteCellFilterProxyModel(this);
m_searchFilterModel->setFilterCaseSensitivity(Qt::CaseInsensitive);
{
m_fuzzyFilter = new uicomponents::FuzzyFilter(this);
m_fuzzyFilter->setRoleName(u"toolTip"_s);

auto* sorter = new uicomponents::FuzzyScoreSorter(this);
sorter->setFuzzyFilter(m_fuzzyFilter);
sorter->setEnabled(true);

auto* searchFilterModel = new uicomponents::SortFilterProxyModel(this);
QQmlListProperty<uicomponents::Filter> filters = searchFilterModel->filters();
filters.append(&filters, m_fuzzyFilter);
QQmlListProperty<uicomponents::Sorter> sorters = searchFilterModel->sorters();
sorters.append(&sorters, sorter);
searchFilterModel->setRecursiveFilteringEnabled(true);
// accept row if its parent is accepted by filter: necessary to be able to search by palette name
searchFilterModel->setAutoAcceptChildRows(true);

m_searchFilterModel = searchFilterModel;
}

m_visibilityFilterModel = new QSortFilterProxyModel(this);
m_visibilityFilterModel->setFilterRole(PaletteTreeModel::VisibleRole);
Expand Down Expand Up @@ -637,7 +658,7 @@ void PaletteProvider::setFilter(const QString& filter)
// speed up the search in certain other scenarios,
// e.g. when deleting search characters (going from fewer to more search results).
m_searchFilterModel->setSourceModel(nullptr);
m_searchFilterModel->setFilterFixedString(filter);
m_fuzzyFilter->setFuzzyPattern(filter);
if (!filter.isEmpty()) {
m_searchFilterModel->setSourceModel(m_masterPaletteModel);
}
Expand Down
5 changes: 5 additions & 0 deletions src/palette/internal/paletteprovider.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,10 @@
#include "ipaletteprovider.h"
#include "palettemodel.h"

namespace muse::uicomponents {
class FuzzyFilter;
}

namespace mu::palette {
class AbstractPaletteController;
class PaletteProvider;
Expand Down Expand Up @@ -315,6 +319,7 @@ private slots:

QSortFilterProxyModel* m_visibilityFilterModel = nullptr;
QSortFilterProxyModel* m_searchFilterModel = nullptr;
muse::uicomponents::FuzzyFilter* m_fuzzyFilter = nullptr;

QAbstractItemModel* m_mainPalette = nullptr; // visible userPalette entries
// PaletteTreeModel* poolPalette; // masterPalette entries not yet added to mainPalette
Expand Down
Loading