@@ -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_, ®ular_, & 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
400410void 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 == ®ular_) {
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+
430466void CurrentPatchDisplay::toggleHide ()
431467{
432468 if (currentPatch_ && currentPatch_->patch ()) {
0 commit comments