Jamba C++ API 7.5.0
Loading...
Searching...
No Matches
SwitchViewContainer.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2019 pongasoft
3 *
4 * Licensed under the Apache License, Version 2.0 or the MIT license,
5 * at your option. You may not use this file except in compliance with
6 * one of these licenses. You may obtain copies of the licenses at:
7 *
8 * https://www.apache.org/licenses/LICENSE-2.0
9 * https://opensource.org/licenses/MIT
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14 * License for the specific language governing permissions and limitations under
15 * the License.
16 *
17 * @author Yan Pujante
18 */
19#pragma once
20
21#include "CustomView.h"
22
24
47class SwitchViewContainer : public CustomViewAdapter<CViewContainer>, ViewContainerListenerAdapter
48{
49public:
50 // Lifecycle
51 explicit SwitchViewContainer(const CRect &iSize);
52 ~SwitchViewContainer() override;
53
55 virtual void setSwitchControlTag (ParamID iTag) { fSwitchControlTag = iTag; };
56
60 ParamID getSwitchControlTag () const { return fSwitchControlTag; }
61
67 const std::vector<std::string> &getTemplateNames() const { return fTemplateNames; }
68 void setTemplateNames(const std::vector<std::string> &iNames) { fTemplateNames = iNames; switchCurrentView(); }
69
70 // registerParameters
71 void registerParameters() override;
72
73 // afterCreate
74 virtual void afterCreate(IUIDescription const *iDescription, IController *iController);
75
76 // onParameterChange
77 void onParameterChange(ParamID iParamID) override;
78
79protected:
85 void viewContainerViewAdded(CViewContainer *container, CView *view) override;
86
89 virtual void switchCurrentView();
90
95 virtual void setCurrentView(CView *iCurrentView);
96
100 virtual std::string computeTemplateName(int iIndex);
101
102protected:
103 IUIDescription const *fUIDescription{};
104 IController *fUIController{};
105
108
109 std::vector<std::string> fTemplateNames;
110
111 CView *fCurrentView{};
112 std::string fCurrentTemplateName{};
113
114public:
115 class Creator : public CustomViewCreator<SwitchViewContainer, CustomViewAdapter<CViewContainer>>
116 {
117 public:
118 explicit Creator(char const *iViewName = nullptr, char const *iDisplayName = nullptr) :
119 CustomViewCreator(iViewName, iDisplayName, VSTGUI::UIViewCreator::kCViewContainer)
120 {
123 }
124 };
125};
126
131template<>
133 const UIAttributes &iAttributes,
134 const IUIDescription *iDescription);
135
136}
Represents an optional parameter (Jmb, Vst or no param at all).
Definition GUIOptionalParam.h:50
CustomViewAdapter(const CRect &iSize, Args &&...args)
Definition CustomView.h:344
CustomViewCreator(char const *iViewName=nullptr, char const *iDisplayName=nullptr, char const *iBaseViewName=VSTGUI::UIViewCreator::kCView)
Definition CustomViewCreator.h:1318
Creator(char const *iViewName=nullptr, char const *iDisplayName=nullptr)
Definition SwitchViewContainer.h:118
This view offers dynamic switching between multiple views.
Definition SwitchViewContainer.h:48
IUIDescription const * fUIDescription
Definition SwitchViewContainer.h:103
void registerParameters() override
Subclasses should override this method to register each parameter.
Definition SwitchViewContainer.cpp:55
void onParameterChange(ParamID iParamID) override
Callback when a parameter changes.
Definition SwitchViewContainer.cpp:88
const std::vector< std::string > & getTemplateNames() const
A comma separated list of template names.
Definition SwitchViewContainer.h:67
virtual void switchCurrentView()
Called whenever something has changed to switch to a new current view.
Definition SwitchViewContainer.cpp:70
void viewContainerViewAdded(CViewContainer *container, CView *view) override
The only purpose of this callback (from IViewContainerListenerAdapter) is to catch the unavoidable ca...
Definition SwitchViewContainer.cpp:118
SwitchViewContainer(const CRect &iSize)
Definition SwitchViewContainer.cpp:27
GUIOptionalParam< int32 > fControlSwitch
Definition SwitchViewContainer.h:107
virtual void setSwitchControlTag(ParamID iTag)
Attribute switch-control-tag.
Definition SwitchViewContainer.h:55
virtual void afterCreate(IUIDescription const *iDescription, IController *iController)
Definition SwitchViewContainer.cpp:44
virtual std::string computeTemplateName(int iIndex)
Lookup the name of the template in the vector.
Definition SwitchViewContainer.cpp:130
ParamID getSwitchControlTag() const
id for the parameter tied to switching.
Definition SwitchViewContainer.h:60
~SwitchViewContainer() override
Definition SwitchViewContainer.cpp:35
ParamID fSwitchControlTag
Definition SwitchViewContainer.h:106
CView * fCurrentView
Definition SwitchViewContainer.h:111
void setTemplateNames(const std::vector< std::string > &iNames)
Definition SwitchViewContainer.h:68
std::string fCurrentTemplateName
Definition SwitchViewContainer.h:112
virtual void setCurrentView(CView *iCurrentView)
Sets the current view to the one provided (remove previous view from container children and add this ...
Definition SwitchViewContainer.cpp:97
std::vector< std::string > fTemplateNames
Definition SwitchViewContainer.h:109
IController * fUIController
Definition SwitchViewContainer.h:104
void registerVectorStringAttribute(std::string const &iName, typename VectorStringAttribute::Getter iGetter, typename VectorStringAttribute::Setter iSetter, char iDelimiter=',', bool iSkipEmptyEntries=false)
Definition CustomViewCreator.h:1012
void registerTagAttribute(std::string const &iName, typename TagAttribute::Getter iGetter, typename TagAttribute::Setter iSetter)
Definition CustomViewCreator.h:1049
Definition Types.h:30
Definition CustomController.h:25
SwitchViewContainer * createCustomView< SwitchViewContainer >(CRect const &iSize, const UIAttributes &iAttributes, const IUIDescription *iDescription)
This specialization is required to inject the IUIDescription object used to dynamically create a view...
Definition SwitchViewContainer.cpp:143
constexpr ParamID UNDEFINED_PARAM_ID
Constant used throughout the code to test whether the ParamID represents a valid id or an undefined o...
Definition Types.h:48