Skip to content

Commit 63672b7

Browse files
committed
New feature: we add a fourth state - we had fav, hidden, and neither (undecided), but we want to track that a patch has been revisited and is not fav. Calling this regular.
1 parent 2ec81f2 commit 63672b7

5 files changed

Lines changed: 55 additions & 9 deletions

File tree

The-Orm/CurrentPatchDisplay.cpp

Lines changed: 44 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ CurrentPatchDisplay::CurrentPatchDisplay(midikraft::PatchDatabase &database, std
8080
})
8181
, propertyEditor_(true)
8282
, favorite_("Fav!")
83+
, regular_("Regular")
8384
, hide_("Hide")
8485
, metaData_(categories, [this](CategoryButtons::Category categoryClicked, TouchButtonFunction f) {
8586
categoryUpdated(categoryClicked, f);
@@ -96,6 +97,11 @@ CurrentPatchDisplay::CurrentPatchDisplay(midikraft::PatchDatabase &database, std
9697
favorite_.setColour(TextButton::ColourIds::buttonOnColourId, Colour::fromString("ffffa500"));
9798
addAndMakeVisible(favorite_);
9899

100+
regular_.setClickingTogglesState(true);
101+
regular_.addListener(this);
102+
regular_.setColour(TextButton::ColourIds::buttonOnColourId, Colours::cornflowerblue);
103+
addAndMakeVisible(regular_);
104+
99105
hide_.setClickingTogglesState(true);
100106
hide_.addListener(this);
101107
hide_.setColour(TextButton::ColourIds::buttonOnColourId, Colours::indianred);
@@ -137,6 +143,7 @@ void CurrentPatchDisplay::setCurrentPatch(std::shared_ptr<midikraft::PatchHolder
137143
setupPatchProperties(patch);
138144
refreshNameButtonColour();
139145
favorite_.setToggleState(patch->isFavorite(), dontSendNotification);
146+
regular_.setToggleState(patch->isRegular(), dontSendNotification);
140147
hide_.setToggleState(patch->isHidden(), dontSendNotification);
141148

142149
refreshCategories();
@@ -334,6 +341,7 @@ void CurrentPatchDisplay::reset()
334341
metaDataValues_.clear();
335342
layerNameValues_.clear();
336343
favorite_.setToggleState(false, dontSendNotification);
344+
regular_.setToggleState(false, dontSendNotification);
337345
hide_.setToggleState(false, dontSendNotification);
338346
metaData_.setActive({});
339347
metaData_.setPatchText(nullptr);
@@ -361,8 +369,9 @@ void CurrentPatchDisplay::resized()
361369
fb.flexDirection = FlexBox::Direction::row;
362370
fb.justifyContent = FlexBox::JustifyContent::center;
363371
fb.items.add(FlexItem(favorite_).withMinHeight(LAYOUT_TOUCHBUTTON_HEIGHT).withMinWidth(LAYOUT_BUTTON_WIDTH_MIN));
372+
fb.items.add(FlexItem(regular_).withMinHeight(LAYOUT_TOUCHBUTTON_HEIGHT).withMinWidth(LAYOUT_BUTTON_WIDTH_MIN));
364373
fb.items.add(FlexItem(hide_).withMinHeight(LAYOUT_TOUCHBUTTON_HEIGHT).withMinWidth(LAYOUT_BUTTON_WIDTH_MIN));
365-
auto spaceNeeded = FlexBoxHelper::determineSizeForButtonLayout(this, this, { &favorite_, &hide_ }, nextRow);
374+
auto spaceNeeded = FlexBoxHelper::determineSizeForButtonLayout(this, this, { &favorite_, &regular_, &hide_ }, nextRow);
366375
fb.performLayout(spaceNeeded.toNearestInt());
367376
area.removeFromTop((int) spaceNeeded.getHeight());
368377

@@ -383,6 +392,7 @@ void CurrentPatchDisplay::resized()
383392

384393
// Right side - hide and favorite button
385394
hide_.setBounds(rightCorner.removeFromRight(100));
395+
regular_.setBounds(rightCorner.removeFromRight(100));
386396
favorite_.setBounds(rightCorner.removeFromRight(100));
387397

388398
//TODO - Need to setup property table
@@ -399,18 +409,37 @@ void CurrentPatchDisplay::resized()
399409

400410
void CurrentPatchDisplay::buttonClicked(Button *button)
401411
{
402-
if (currentPatch_) {
412+
if (currentPatch_ && currentPatch_->patch()) {
403413
if (button == &favorite_) {
404-
if (currentPatch_->patch()) {
405-
currentPatch_->setFavorite(midikraft::Favorite(button->getToggleState()));
406-
favoriteHandler_(currentPatch_);
414+
currentPatch_->setFavorite(midikraft::Favorite(favorite_.getToggleState()));
415+
if (favorite_.getToggleState() && regular_.getToggleState()) {
416+
regular_.setToggleState(false, dontSendNotification);
417+
currentPatch_->setRegular(false);
407418
}
419+
favoriteHandler_(currentPatch_);
408420
}
409421
else if (button == &hide_) {
410-
if (currentPatch_->patch()) {
411-
currentPatch_->setHidden(hide_.getToggleState());
412-
favoriteHandler_(currentPatch_);
422+
currentPatch_->setHidden(hide_.getToggleState());
423+
if (hide_.getToggleState() && regular_.getToggleState()) {
424+
regular_.setToggleState(false, dontSendNotification);
425+
currentPatch_->setRegular(false);
413426
}
427+
favoriteHandler_(currentPatch_);
428+
}
429+
else if (button == &regular_) {
430+
bool newState = regular_.getToggleState();
431+
currentPatch_->setRegular(newState);
432+
if (newState) {
433+
if (favorite_.getToggleState()) {
434+
favorite_.setToggleState(false, dontSendNotification);
435+
currentPatch_->setFavorite(midikraft::Favorite());
436+
}
437+
if (hide_.getToggleState()) {
438+
hide_.setToggleState(false, dontSendNotification);
439+
currentPatch_->setHidden(false);
440+
}
441+
}
442+
favoriteHandler_(currentPatch_);
414443
}
415444
}
416445
}
@@ -427,6 +456,13 @@ void CurrentPatchDisplay::toggleFavorite()
427456
}
428457
}
429458

459+
void CurrentPatchDisplay::toggleRegular()
460+
{
461+
if (currentPatch_ && currentPatch_->patch()) {
462+
regular_.setToggleState(!regular_.getToggleState(), sendNotificationAsync);
463+
}
464+
}
465+
430466
void CurrentPatchDisplay::toggleHide()
431467
{
432468
if (currentPatch_ && currentPatch_->patch()) {

The-Orm/CurrentPatchDisplay.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ class CurrentPatchDisplay : public Component,
6161
// For remote control via MidiKeyboard
6262
void toggleFavorite();
6363
void toggleHide();
64+
void toggleRegular();
6465

6566
// Override to allow custom colour
6667
virtual void paint(Graphics& g) override;
@@ -78,6 +79,7 @@ class CurrentPatchDisplay : public Component,
7879
PropertyEditor propertyEditor_;
7980
String lastOpenState_;
8081
TextButton favorite_;
82+
TextButton regular_;
8183
TextButton hide_;
8284
Viewport metaDataScroller_;
8385
MetaDataArea metaData_;

The-Orm/PatchSearchComponent.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,10 @@ PatchSearchComponent::PatchSearchComponent(PatchView* patchView, PatchButtonPane
108108
showHidden_.onClickMultifunction = [this](TouchButtonFunction f) { refreshWithFunction(f, showHidden_); };
109109
addAndMakeVisible(showHidden_);
110110

111+
showRegular_.setButtonText("Regular");
112+
showRegular_.onClickMultifunction = [this](TouchButtonFunction f) { refreshWithFunction(f, showRegular_); };
113+
addAndMakeVisible(showRegular_);
114+
111115
showUndecided_.setButtonText("Undecided");
112116
showUndecided_.onClickMultifunction = [this](TouchButtonFunction f) { refreshWithFunction(f, showUndecided_); };
113117
addAndMakeVisible(showUndecided_);
@@ -242,6 +246,7 @@ void PatchSearchComponent::resized()
242246
fb.alignContent = FlexBox::AlignContent::flexStart; // This is cross axis, up
243247
fb.items.add(createFlexButton(&onlyFaves_));
244248
fb.items.add(createFlexButton(&showHidden_));
249+
fb.items.add(createFlexButton(&showRegular_));
245250
fb.items.add(createFlexButton(&showUndecided_));
246251
fb.items.add(createFlexButton(&onlyUntagged_));
247252
fb.items.add(createFlexButton(&onlyDuplicates_));
@@ -282,6 +287,7 @@ void PatchSearchComponent::loadFilter(midikraft::PatchFilter filter) {
282287
onlyFaves_.setToggleState(filter.onlyFaves, dontSendNotification);
283288
onlyUntagged_.setToggleState(filter.onlyUntagged, dontSendNotification);
284289
showHidden_.setToggleState(filter.showHidden, dontSendNotification);
290+
showRegular_.setToggleState(filter.showRegular, dontSendNotification);
285291
showUndecided_.setToggleState(filter.showUndecided, dontSendNotification);
286292
onlyDuplicates_.setToggleState(filter.onlyDuplicateNames, dontSendNotification);
287293
andCategories_.setToggleState(filter.andCategories, dontSendNotification);
@@ -372,6 +378,7 @@ midikraft::PatchFilter PatchSearchComponent::buildFilter() const
372378
filter.onlySpecifcType = typeSelected;
373379
filter.typeID = filterType;
374380
filter.showHidden = showHidden_.getToggleState();
381+
filter.showRegular = showRegular_.getToggleState();
375382
filter.showUndecided = showUndecided_.getToggleState();
376383
filter.onlyUntagged = onlyUntagged_.getToggleState();
377384
filter.categories = catSelected;

The-Orm/PatchSearchComponent.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ class PatchSearchComponent : public Component, private ChangeListener
4949
CategoryButtons categoryFilters_;
5050
TouchToggleButton onlyFaves_;
5151
TouchToggleButton showHidden_;
52+
TouchToggleButton showRegular_;
5253
TouchToggleButton showUndecided_;
5354
TouchToggleButton onlyUntagged_;
5455
TouchToggleButton onlyDuplicates_;

0 commit comments

Comments
 (0)