diff --git a/Import/GacUI.cpp b/Import/GacUI.cpp index 4fb4ed54..db14c40a 100644 --- a/Import/GacUI.cpp +++ b/Import/GacUI.cpp @@ -4672,8 +4672,8 @@ GuiBindableTextList::ItemSource GuiBindableTextList ***********************************************************************/ - GuiBindableTextList::GuiBindableTextList(IStyleProvider* _styleProvider, list::TextItemStyleProvider::ITextItemStyleProvider* _itemStyleProvider, Ptr _itemSource) - :GuiVirtualTextList(_styleProvider, _itemStyleProvider, new ItemSource(_itemSource)) + GuiBindableTextList::GuiBindableTextList(IStyleProvider* _styleProvider, list::TextItemStyleProvider::IBulletFactory* _bulletFactory, Ptr _itemSource) + :GuiVirtualTextList(_styleProvider, _bulletFactory, new ItemSource(_itemSource)) { itemSource = dynamic_cast(GetItemProvider()); @@ -12272,19 +12272,21 @@ TextItemStyleProvider::TextItemStyleController ,textElement(0) ,textItemStyleProvider(provider) { - backgroundButton=new GuiSelectableButton(textItemStyleProvider->textItemStyleProvider->CreateBackgroundStyleController()); + auto styleProvider = textItemStyleProvider->listControl->GetTextListStyleProvider(); + + backgroundButton=new GuiSelectableButton(styleProvider->CreateItemBackground()); backgroundButton->SetAutoSelection(false); textElement=GuiSolidLabelElement::Create(); textElement->SetAlignments(Alignment::Left, Alignment::Center); textElement->SetFont(backgroundButton->GetFont()); - textElement->SetColor(textItemStyleProvider->textItemStyleProvider->GetTextColor()); + textElement->SetColor(styleProvider->GetTextColor()); GuiBoundsComposition* textComposition=new GuiBoundsComposition; textComposition->SetOwnedElement(textElement); textComposition->SetMinSizeLimitation(GuiGraphicsComposition::LimitToElement); - GuiSelectableButton::IStyleController* bulletStyleController=textItemStyleProvider->textItemStyleProvider->CreateBulletStyleController(); + GuiSelectableButton::IStyleController* bulletStyleController=textItemStyleProvider->bulletFactory->CreateBulletStyleController(); if(bulletStyleController) { bulletButton=new GuiSelectableButton(bulletStyleController); @@ -12374,8 +12376,8 @@ TextItemStyleProvider } } - TextItemStyleProvider::TextItemStyleProvider(ITextItemStyleProvider* _textItemStyleProvider) - :textItemStyleProvider(_textItemStyleProvider) + TextItemStyleProvider::TextItemStyleProvider(IBulletFactory* _bulletFactory) + :bulletFactory(_bulletFactory) ,textItemView(0) ,listControl(0) { @@ -12579,12 +12581,13 @@ TextItemProvider GuiTextList ***********************************************************************/ - GuiVirtualTextList::GuiVirtualTextList(IStyleProvider* _styleProvider, list::TextItemStyleProvider::ITextItemStyleProvider* _itemStyleProvider, GuiListControl::IItemProvider* _itemProvider) + GuiVirtualTextList::GuiVirtualTextList(IStyleProvider* _styleProvider, list::TextItemStyleProvider::IBulletFactory* _bulletFactory, GuiListControl::IItemProvider* _itemProvider) :GuiSelectableListControl(_styleProvider, _itemProvider) { ItemChecked.SetAssociatedComposition(boundsComposition); - ChangeItemStyle(_itemStyleProvider); + styleProvider = dynamic_cast(styleController->GetStyleProvider()); + ChangeItemStyle(_bulletFactory); SetArranger(new list::FixedHeightItemArranger); } @@ -12592,11 +12595,16 @@ GuiTextList { } - Ptr GuiVirtualTextList::ChangeItemStyle(list::TextItemStyleProvider::ITextItemStyleProvider* itemStyleProvider) + GuiVirtualTextList::IStyleProvider* GuiVirtualTextList::GetTextListStyleProvider() { - if(itemStyleProvider) + return styleProvider; + } + + Ptr GuiVirtualTextList::ChangeItemStyle(list::TextItemStyleProvider::IBulletFactory* bulletFactory) + { + if(bulletFactory) { - return SetStyleProvider(new list::TextItemStyleProvider(itemStyleProvider)); + return SetStyleProvider(new list::TextItemStyleProvider(bulletFactory)); } else { @@ -12608,8 +12616,8 @@ GuiTextList GuiTextList ***********************************************************************/ - GuiTextList::GuiTextList(IStyleProvider* _styleProvider, list::TextItemStyleProvider::ITextItemStyleProvider* _itemStyleProvider) - :GuiVirtualTextList(_styleProvider, _itemStyleProvider, new list::TextItemProvider) + GuiTextList::GuiTextList(IStyleProvider* _styleProvider, list::TextItemStyleProvider::IBulletFactory* _bulletFactory) + :GuiVirtualTextList(_styleProvider, _bulletFactory, new list::TextItemProvider) { items=dynamic_cast(itemProvider.Obj()); items->listControl=this; @@ -15139,24 +15147,24 @@ Win7Theme return Win7TrackStyle::HandleLong; } - controls::GuiScrollView::IStyleProvider* Win7Theme::CreateTextListStyle() - { - return new Win7MultilineTextBoxProvider; - } - - controls::list::TextItemStyleProvider::ITextItemStyleProvider* Win7Theme::CreateTextListItemStyle() + controls::GuiVirtualTextList::IStyleProvider* Win7Theme::CreateTextListStyle() { return new Win7TextListProvider; } - controls::list::TextItemStyleProvider::ITextItemStyleProvider* Win7Theme::CreateCheckTextListItemStyle() + controls::list::TextItemStyleProvider::IBulletFactory* Win7Theme::CreateTextListItemStyle() { - return new Win7CheckTextListProvider; + return new Win7TextListItemProvider; } - controls::list::TextItemStyleProvider::ITextItemStyleProvider* Win7Theme::CreateRadioTextListItemStyle() + controls::list::TextItemStyleProvider::IBulletFactory* Win7Theme::CreateCheckTextListItemStyle() { - return new Win7RadioTextListProvider; + return new Win7CheckTextListItemProvider; + } + + controls::list::TextItemStyleProvider::IBulletFactory* Win7Theme::CreateRadioTextListItemStyle() + { + return new Win7RadioTextListItemProvider; } } } @@ -15384,24 +15392,24 @@ Win8Theme return Win8TrackStyle::HandleLong; } - controls::GuiScrollView::IStyleProvider* Win8Theme::CreateTextListStyle() - { - return new Win8MultilineTextBoxProvider; - } - - controls::list::TextItemStyleProvider::ITextItemStyleProvider* Win8Theme::CreateTextListItemStyle() + controls::GuiVirtualTextList::IStyleProvider* Win8Theme::CreateTextListStyle() { return new Win8TextListProvider; } - controls::list::TextItemStyleProvider::ITextItemStyleProvider* Win8Theme::CreateCheckTextListItemStyle() + controls::list::TextItemStyleProvider::IBulletFactory* Win8Theme::CreateTextListItemStyle() { - return new Win8CheckTextListProvider; + return new Win8TextListItemProvider; } - controls::list::TextItemStyleProvider::ITextItemStyleProvider* Win8Theme::CreateRadioTextListItemStyle() + controls::list::TextItemStyleProvider::IBulletFactory* Win8Theme::CreateCheckTextListItemStyle() { - return new Win8RadioTextListProvider; + return new Win8CheckTextListItemProvider; + } + + controls::list::TextItemStyleProvider::IBulletFactory* Win8Theme::CreateRadioTextListItemStyle() + { + return new Win8RadioTextListItemProvider; } } } @@ -16096,7 +16104,7 @@ Win7DatePickerStyle controls::GuiTextList* Win7DatePickerStyle::CreateTextList() { - return new GuiTextList(new Win7MultilineTextBoxProvider, new Win7TextListProvider); + return new GuiTextList(new Win7TextListProvider, new Win7TextListItemProvider); } controls::GuiComboBoxListControl::IStyleController* Win7DatePickerStyle::CreateComboBoxStyle() @@ -16776,9 +16784,60 @@ Win7DropDownComboBoxStyle } /*********************************************************************** -Win7TextListProvider +Win7TextListItemProvider ***********************************************************************/ + Win7TextListItemProvider::Win7TextListItemProvider() + { + } + + Win7TextListItemProvider::~Win7TextListItemProvider() + { + } + + controls::GuiSelectableButton::IStyleController* Win7TextListItemProvider::CreateBulletStyleController() + { + return 0; + } + +/*********************************************************************** +Win7CheckTextListItemProvider +***********************************************************************/ + + Win7CheckTextListItemProvider::Win7CheckTextListItemProvider() + { + } + + Win7CheckTextListItemProvider::~Win7CheckTextListItemProvider() + { + } + + controls::GuiSelectableButton::IStyleController* Win7CheckTextListItemProvider::CreateBulletStyleController() + { + return new Win7CheckBoxStyle(Win7CheckBoxStyle::CheckBox, false); + } + +/*********************************************************************** +Win7RadioTextListItemProvider +***********************************************************************/ + + Win7RadioTextListItemProvider::Win7RadioTextListItemProvider() + { + } + + Win7RadioTextListItemProvider::~Win7RadioTextListItemProvider() + { + } + + controls::GuiSelectableButton::IStyleController* Win7RadioTextListItemProvider::CreateBulletStyleController() + { + return new Win7CheckBoxStyle(Win7CheckBoxStyle::RadioButton, false); + } + +/*********************************************************************** +Win7TextListProvider +***********************************************************************/ + Win7TextListProvider::Win7TextListProvider() { } @@ -16787,55 +16846,16 @@ Win7TextListProvider { } - controls::GuiSelectableButton::IStyleController* Win7TextListProvider::CreateBackgroundStyleController() + controls::GuiSelectableButton::IStyleController* Win7TextListProvider::CreateItemBackground() { return new Win7SelectableItemStyle; } - controls::GuiSelectableButton::IStyleController* Win7TextListProvider::CreateBulletStyleController() - { - return 0; - } - Color Win7TextListProvider::GetTextColor() { return Win7GetSystemTextColor(true); } -/*********************************************************************** -Win7CheckTextListProvider -***********************************************************************/ - - Win7CheckTextListProvider::Win7CheckTextListProvider() - { - } - - Win7CheckTextListProvider::~Win7CheckTextListProvider() - { - } - - controls::GuiSelectableButton::IStyleController* Win7CheckTextListProvider::CreateBulletStyleController() - { - return new Win7CheckBoxStyle(Win7CheckBoxStyle::CheckBox, false); - } - -/*********************************************************************** -Win7RadioTextListProvider -***********************************************************************/ - - Win7RadioTextListProvider::Win7RadioTextListProvider() - { - } - - Win7RadioTextListProvider::~Win7RadioTextListProvider() - { - } - - controls::GuiSelectableButton::IStyleController* Win7RadioTextListProvider::CreateBulletStyleController() - { - return new Win7CheckBoxStyle(Win7CheckBoxStyle::RadioButton, false); - } - /*********************************************************************** Win7ListViewProvider ***********************************************************************/ @@ -20699,7 +20719,7 @@ Win8DatePickerStyle controls::GuiTextList* Win8DatePickerStyle::CreateTextList() { - return new GuiTextList(new Win8MultilineTextBoxProvider, new Win8TextListProvider); + return new GuiTextList(new Win8TextListProvider, new Win8TextListItemProvider); } controls::GuiComboBoxListControl::IStyleController* Win8DatePickerStyle::CreateComboBoxStyle() @@ -20924,9 +20944,60 @@ Win8DropDownComboBoxStyle } /*********************************************************************** -Win8TextListProvider +Win8TextListItemProvider ***********************************************************************/ + Win8TextListItemProvider::Win8TextListItemProvider() + { + } + + Win8TextListItemProvider::~Win8TextListItemProvider() + { + } + + controls::GuiSelectableButton::IStyleController* Win8TextListItemProvider::CreateBulletStyleController() + { + return 0; + } + +/*********************************************************************** +Win8CheckTextListItemProvider +***********************************************************************/ + + Win8CheckTextListItemProvider::Win8CheckTextListItemProvider() + { + } + + Win8CheckTextListItemProvider::~Win8CheckTextListItemProvider() + { + } + + controls::GuiSelectableButton::IStyleController* Win8CheckTextListItemProvider::CreateBulletStyleController() + { + return new Win8CheckBoxStyle(Win8CheckBoxStyle::CheckBox, false); + } + +/*********************************************************************** +Win8RadioTextListItemProvider +***********************************************************************/ + + Win8RadioTextListItemProvider::Win8RadioTextListItemProvider() + { + } + + Win8RadioTextListItemProvider::~Win8RadioTextListItemProvider() + { + } + + controls::GuiSelectableButton::IStyleController* Win8RadioTextListItemProvider::CreateBulletStyleController() + { + return new Win8CheckBoxStyle(Win8CheckBoxStyle::RadioButton, false); + } + +/*********************************************************************** +Win8TextListProvider +***********************************************************************/ + Win8TextListProvider::Win8TextListProvider() { } @@ -20935,55 +21006,16 @@ Win8TextListProvider { } - controls::GuiSelectableButton::IStyleController* Win8TextListProvider::CreateBackgroundStyleController() + controls::GuiSelectableButton::IStyleController* Win8TextListProvider::CreateItemBackground() { return new Win8SelectableItemStyle; } - controls::GuiSelectableButton::IStyleController* Win8TextListProvider::CreateBulletStyleController() - { - return 0; - } - Color Win8TextListProvider::GetTextColor() { return Win8GetSystemTextColor(true); } -/*********************************************************************** -Win8CheckTextListProvider -***********************************************************************/ - - Win8CheckTextListProvider::Win8CheckTextListProvider() - { - } - - Win8CheckTextListProvider::~Win8CheckTextListProvider() - { - } - - controls::GuiSelectableButton::IStyleController* Win8CheckTextListProvider::CreateBulletStyleController() - { - return new Win8CheckBoxStyle(Win8CheckBoxStyle::CheckBox, false); - } - -/*********************************************************************** -Win8RadioTextListProvider -***********************************************************************/ - - Win8RadioTextListProvider::Win8RadioTextListProvider() - { - } - - Win8RadioTextListProvider::~Win8RadioTextListProvider() - { - } - - controls::GuiSelectableButton::IStyleController* Win8RadioTextListProvider::CreateBulletStyleController() - { - return new Win8CheckBoxStyle(Win8CheckBoxStyle::RadioButton, false); - } - /*********************************************************************** Win8ListViewProvider ***********************************************************************/ @@ -24213,7 +24245,6 @@ GuiTabTemplate GuiTabTemplate::~GuiTabTemplate() { - FinalizeAggregation(); } /*********************************************************************** @@ -24234,6 +24265,22 @@ GuiListItemTemplate FinalizeAggregation(); } +/*********************************************************************** +GuiTextListItemTemplate +***********************************************************************/ + + GuiTextListItemTemplate_PROPERTIES(GUI_TEMPLATE_PROPERTY_IMPL) + + GuiTextListItemTemplate::GuiTextListItemTemplate() + { + GuiTextListItemTemplate_PROPERTIES(GUI_TEMPLATE_PROPERTY_EVENT_INIT) + } + + GuiTextListItemTemplate::~GuiTextListItemTemplate() + { + FinalizeAggregation(); + } + /*********************************************************************** GuiTreeItemTemplate ***********************************************************************/ @@ -24980,21 +25027,11 @@ GuiTextListTemplate_StyleProvider::ItemStyleProvider { } - controls::GuiSelectableButton::IStyleController* GuiTextListTemplate_StyleProvider::ItemStyleProvider::CreateBackgroundStyleController() - { - return styleProvider->CreateBackgroundStyle(); - } - controls::GuiSelectableButton::IStyleController* GuiTextListTemplate_StyleProvider::ItemStyleProvider::CreateBulletStyleController() { return styleProvider->CreateBulletStyle(); } - Color GuiTextListTemplate_StyleProvider::ItemStyleProvider::GetTextColor() - { - return styleProvider->controlTemplate->GetTextColor(); - } - /*********************************************************************** GuiTextListTemplate_StyleProvider ***********************************************************************/ @@ -25014,16 +25051,21 @@ GuiTextListTemplate_StyleProvider { } - controls::list::TextItemStyleProvider::ITextItemStyleProvider* GuiTextListTemplate_StyleProvider::CreateArgument() - { - return new ItemStyleProvider(this); - } - - controls::GuiSelectableButton::IStyleController* GuiTextListTemplate_StyleProvider::CreateBackgroundStyle() + controls::GuiSelectableButton::IStyleController* GuiTextListTemplate_StyleProvider::CreateItemBackground() { GET_FACTORY_FROM_TEMPLATE(GuiSelectableButtonTemplate, backgroundTemplateFactory, BackgroundTemplate); } + Color GuiTextListTemplate_StyleProvider::GetTextColor() + { + return controlTemplate->GetTextColor(); + } + + controls::list::TextItemStyleProvider::IBulletFactory* GuiTextListTemplate_StyleProvider::CreateArgument() + { + return new ItemStyleProvider(this); + } + controls::GuiSelectableButton::IStyleController* GuiTextListTemplate_StyleProvider::CreateBulletStyle() { GET_FACTORY_FROM_TEMPLATE_OPT(GuiSelectableButtonTemplate, bulletTemplateFactory, BulletTemplate); @@ -25392,27 +25434,27 @@ GuiControlTemplate_ItemStyleProvider } /*********************************************************************** -GuiListItemTemplate_ItemStyleProvider +GuiTextListItemTemplate_ItemStyleProvider ***********************************************************************/ - GuiListItemTemplate_ItemStyleProvider::GuiListItemTemplate_ItemStyleProvider(Ptr _factory) + GuiTextListItemTemplate_ItemStyleProvider::GuiTextListItemTemplate_ItemStyleProvider(Ptr _factory) :factory(_factory) , listControl(0) , bindingView(0) { } - GuiListItemTemplate_ItemStyleProvider::~GuiListItemTemplate_ItemStyleProvider() + GuiTextListItemTemplate_ItemStyleProvider::~GuiTextListItemTemplate_ItemStyleProvider() { } - void GuiListItemTemplate_ItemStyleProvider::AttachListControl(controls::GuiListControl* value) + void GuiTextListItemTemplate_ItemStyleProvider::AttachListControl(controls::GuiListControl* value) { - listControl = value; + listControl = dynamic_cast(value); bindingView = dynamic_cast(listControl->GetItemProvider()->RequestView(GuiListControl::IItemBindingView::Identifier)); } - void GuiListItemTemplate_ItemStyleProvider::DetachListControl() + void GuiTextListItemTemplate_ItemStyleProvider::DetachListControl() { if (listControl && bindingView) { @@ -25422,24 +25464,24 @@ GuiListItemTemplate_ItemStyleProvider bindingView = 0; } - vint GuiListItemTemplate_ItemStyleProvider::GetItemStyleId(vint itemIndex) + vint GuiTextListItemTemplate_ItemStyleProvider::GetItemStyleId(vint itemIndex) { return 0; } - controls::GuiListControl::IItemStyleController* GuiListItemTemplate_ItemStyleProvider::CreateItemStyle(vint styleId) + controls::GuiListControl::IItemStyleController* GuiTextListItemTemplate_ItemStyleProvider::CreateItemStyle(vint styleId) { - return new GuiListItemTemplate_ItemStyleController(this); + return new GuiTextListItemTemplate_ItemStyleController(this); } - void GuiListItemTemplate_ItemStyleProvider::DestroyItemStyle(controls::GuiListControl::IItemStyleController* style) + void GuiTextListItemTemplate_ItemStyleProvider::DestroyItemStyle(controls::GuiListControl::IItemStyleController* style) { delete style; } - void GuiListItemTemplate_ItemStyleProvider::Install(controls::GuiListControl::IItemStyleController* style, vint itemIndex) + void GuiTextListItemTemplate_ItemStyleProvider::Install(controls::GuiListControl::IItemStyleController* style, vint itemIndex) { - if (auto controller = dynamic_cast(style)) + if (auto controller = dynamic_cast(style)) { Value viewModel; if (bindingView) @@ -25448,10 +25490,11 @@ GuiListItemTemplate_ItemStyleProvider } GuiTemplate* itemTemplate = factory->CreateTemplate(viewModel); - if (auto listItemTemplate = dynamic_cast(itemTemplate)) + if (auto listItemTemplate = dynamic_cast(itemTemplate)) { listItemTemplate->SetFont(listControl->GetFont()); listItemTemplate->SetIndex(itemIndex); + listItemTemplate->SetTextColor(listControl->GetTextListStyleProvider()->GetTextColor()); controller->SetTemplate(listItemTemplate); } else @@ -25461,9 +25504,9 @@ GuiListItemTemplate_ItemStyleProvider } } - void GuiListItemTemplate_ItemStyleProvider::SetStyleIndex(controls::GuiListControl::IItemStyleController* style, vint value) + void GuiTextListItemTemplate_ItemStyleProvider::SetStyleIndex(controls::GuiListControl::IItemStyleController* style, vint value) { - if (auto controller = dynamic_cast(style)) + if (auto controller = dynamic_cast(style)) { if (auto itemTemplate = controller->GetTemplate()) { @@ -25472,10 +25515,11 @@ GuiListItemTemplate_ItemStyleProvider } } - void GuiListItemTemplate_ItemStyleProvider::SetStyleSelected(controls::GuiListControl::IItemStyleController* style, bool value) + void GuiTextListItemTemplate_ItemStyleProvider::SetStyleSelected(controls::GuiListControl::IItemStyleController* style, bool value) { - if (auto controller = dynamic_cast(style)) + if (auto controller = dynamic_cast(style)) { + controller->backgroundButton->SetSelected(value); if (auto itemTemplate = controller->GetTemplate()) { itemTemplate->SetSelected(value); @@ -25484,64 +25528,68 @@ GuiListItemTemplate_ItemStyleProvider } /*********************************************************************** -GuiListItemTemplate_ItemStyleController +GuiTextListItemTemplate_ItemStyleController ***********************************************************************/ - GuiListItemTemplate_ItemStyleController::GuiListItemTemplate_ItemStyleController(GuiListItemTemplate_ItemStyleProvider* _itemStyleProvider) + GuiTextListItemTemplate_ItemStyleController::GuiTextListItemTemplate_ItemStyleController(GuiTextListItemTemplate_ItemStyleProvider* _itemStyleProvider) :itemStyleProvider(_itemStyleProvider) , itemTemplate(0) , installed(false) + , backgroundButton(0) { - + backgroundButton = new GuiSelectableButton(itemStyleProvider->listControl->GetTextListStyleProvider()->CreateItemBackground()); + backgroundButton->SetAutoSelection(false); } - GuiListItemTemplate_ItemStyleController::~GuiListItemTemplate_ItemStyleController() + GuiTextListItemTemplate_ItemStyleController::~GuiTextListItemTemplate_ItemStyleController() { - SafeDeleteComposition(itemTemplate); + SafeDeleteControl(backgroundButton); } - GuiListItemTemplate* GuiListItemTemplate_ItemStyleController::GetTemplate() + GuiTextListItemTemplate* GuiTextListItemTemplate_ItemStyleController::GetTemplate() { return itemTemplate; } - void GuiListItemTemplate_ItemStyleController::SetTemplate(GuiListItemTemplate* _itemTemplate) + void GuiTextListItemTemplate_ItemStyleController::SetTemplate(GuiTextListItemTemplate* _itemTemplate) { SafeDeleteComposition(itemTemplate); itemTemplate = _itemTemplate; + itemTemplate->SetAlignmentToParent(Margin(0, 0, 0, 0)); + backgroundButton->GetContainerComposition()->AddChild(itemTemplate); } - controls::GuiListControl::IItemStyleProvider* GuiListItemTemplate_ItemStyleController::GetStyleProvider() + controls::GuiListControl::IItemStyleProvider* GuiTextListItemTemplate_ItemStyleController::GetStyleProvider() { return itemStyleProvider; } - vint GuiListItemTemplate_ItemStyleController::GetItemStyleId() + vint GuiTextListItemTemplate_ItemStyleController::GetItemStyleId() { return 0; } - compositions::GuiBoundsComposition* GuiListItemTemplate_ItemStyleController::GetBoundsComposition() + compositions::GuiBoundsComposition* GuiTextListItemTemplate_ItemStyleController::GetBoundsComposition() { - return itemTemplate; + return backgroundButton->GetBoundsComposition(); } - bool GuiListItemTemplate_ItemStyleController::IsCacheable() + bool GuiTextListItemTemplate_ItemStyleController::IsCacheable() { return false; } - bool GuiListItemTemplate_ItemStyleController::IsInstalled() + bool GuiTextListItemTemplate_ItemStyleController::IsInstalled() { return installed; } - void GuiListItemTemplate_ItemStyleController::OnInstalled() + void GuiTextListItemTemplate_ItemStyleController::OnInstalled() { installed = true; } - void GuiListItemTemplate_ItemStyleController::OnUninstalled() + void GuiTextListItemTemplate_ItemStyleController::OnUninstalled() { installed = false; } @@ -25704,15 +25752,25 @@ GuiTreeItemTemplate_ItemStyleController ***********************************************************************/ GuiTreeItemTemplate_ItemStyleController::GuiTreeItemTemplate_ItemStyleController(GuiTreeItemTemplate_ItemStyleProvider* _nodeStyleProvider) - :GuiListItemTemplate_ItemStyleController(0) - , nodeStyleProvider(_nodeStyleProvider) + :nodeStyleProvider(_nodeStyleProvider) + , itemTemplate(0) + , installed(false) { - } GuiTreeItemTemplate_ItemStyleController::~GuiTreeItemTemplate_ItemStyleController() { + } + GuiTreeItemTemplate* GuiTreeItemTemplate_ItemStyleController::GetTemplate() + { + return itemTemplate; + } + + void GuiTreeItemTemplate_ItemStyleController::SetTemplate(GuiTreeItemTemplate* _itemTemplate) + { + SafeDeleteComposition(itemTemplate); + itemTemplate = _itemTemplate; } controls::GuiListControl::IItemStyleProvider* GuiTreeItemTemplate_ItemStyleController::GetStyleProvider() @@ -25720,6 +25778,36 @@ GuiTreeItemTemplate_ItemStyleController return nodeStyleProvider->GetBindedItemStyleProvider(); } + vint GuiTreeItemTemplate_ItemStyleController::GetItemStyleId() + { + return 0; + } + + compositions::GuiBoundsComposition* GuiTreeItemTemplate_ItemStyleController::GetBoundsComposition() + { + return itemTemplate; + } + + bool GuiTreeItemTemplate_ItemStyleController::IsCacheable() + { + return false; + } + + bool GuiTreeItemTemplate_ItemStyleController::IsInstalled() + { + return installed; + } + + void GuiTreeItemTemplate_ItemStyleController::OnInstalled() + { + installed = true; + } + + void GuiTreeItemTemplate_ItemStyleController::OnUninstalled() + { + installed = false; + } + controls::tree::INodeItemStyleProvider* GuiTreeItemTemplate_ItemStyleController::GetNodeStyleProvider() { return nodeStyleProvider; diff --git a/Import/GacUI.h b/Import/GacUI.h index c105d2b6..1ba9cf47 100644 --- a/Import/GacUI.h +++ b/Import/GacUI.h @@ -11010,18 +11010,12 @@ TextList Style Provider { public: /// Style provider for . - class ITextItemStyleProvider : public virtual IDescriptable, public Description + class IBulletFactory : public virtual IDescriptable, public Description { public: - /// Create the background style controller for an text item. The button selection state represents the text item selection state. - /// The created background style controller. - virtual GuiSelectableButton::IStyleController* CreateBackgroundStyleController()=0; /// Create the bullet style controller for an text item. The button selection state represents the text item check state. /// The created bullet style controller. virtual GuiSelectableButton::IStyleController* CreateBulletStyleController()=0; - /// Get the text color. - /// The text color. - virtual Color GetTextColor()=0; }; /// The required view for . @@ -11045,6 +11039,7 @@ TextList Style Provider virtual void SetCheckedSilently(vint itemIndex, bool value)=0; }; + protected: /// The item style controller for . class TextItemStyleController : public ItemStyleControllerBase, public Description { @@ -11082,7 +11077,7 @@ TextList Style Provider }; protected: - Ptr textItemStyleProvider; + Ptr bulletFactory; ITextItemView* textItemView; GuiVirtualTextList* listControl; @@ -11090,7 +11085,7 @@ TextList Style Provider public: /// Create a item style provider with a specified item style provider callback. /// The item style provider callback. - TextItemStyleProvider(ITextItemStyleProvider* _textItemStyleProvider); + TextItemStyleProvider(IBulletFactory* _bulletFactory); ~TextItemStyleProvider(); void AttachListControl(GuiListControl* value)override; @@ -11182,42 +11177,59 @@ TextList Control /// Text list control in virtual mode. class GuiVirtualTextList : public GuiSelectableListControl, public Description { + public: + /// Style provider interface for . + class IStyleProvider : public virtual GuiSelectableListControl::IStyleProvider, public Description + { + public: + /// Create a style controller for an item background. The selection state is used to render the selection state of a node. + /// The created style controller for an item background. + virtual GuiSelectableButton::IStyleController* CreateItemBackground()=0; + /// Get the text color. + /// The text color. + virtual Color GetTextColor()=0; + }; + protected: + IStyleProvider* styleProvider; public: /// Create a Text list control in virtual mode. /// The style provider for this control. /// The item style provider callback for this control. /// The item provider for this control. - GuiVirtualTextList(IStyleProvider* _styleProvider, list::TextItemStyleProvider::ITextItemStyleProvider* _itemStyleProvider, GuiListControl::IItemProvider* _itemProvider); + GuiVirtualTextList(IStyleProvider* _styleProvider, list::TextItemStyleProvider::IBulletFactory* _bulletFactory, GuiListControl::IItemProvider* _itemProvider); ~GuiVirtualTextList(); /// Item checked changed event. - compositions::GuiItemNotifyEvent ItemChecked; + compositions::GuiItemNotifyEvent ItemChecked; + /// Get the style provider for this control. + /// The style provider for this control. + IStyleProvider* GetTextListStyleProvider(); /// Set the item style provider. /// The old item style provider. /// The new item style provider. - Ptr ChangeItemStyle(list::TextItemStyleProvider::ITextItemStyleProvider* itemStyleProvider); + Ptr ChangeItemStyle(list::TextItemStyleProvider::IBulletFactory* bulletFactory); }; /// Text list control. class GuiTextList : public GuiVirtualTextList, public Description { protected: - list::TextItemProvider* items; + list::TextItemProvider* items; public: /// Create a Text list control. /// The style provider for this control. /// The item style provider callback for this control. - GuiTextList(IStyleProvider* _styleProvider, list::TextItemStyleProvider::ITextItemStyleProvider* _itemStyleProvider); + GuiTextList(IStyleProvider* _styleProvider, list::TextItemStyleProvider::IBulletFactory* _bulletFactory); ~GuiTextList(); /// Get all text items. /// All text items. - list::TextItemProvider& GetItems(); + list::TextItemProvider& GetItems(); /// Get the selected item. /// Returns the selected item. If there are multiple selected items, or there is no selected item, null will be returned. - Ptr GetSelectedItem(); + Ptr GetSelectedItem(); }; } } @@ -13225,10 +13237,10 @@ ComboBox with GuiListControl class IItemStyleProvider : public virtual IDescriptable, public Description { public: - /// Called when an item style provider in installed to a . + /// Called when an item style provider in installed to a . /// The list control. virtual void AttachComboBox(GuiComboBoxListControl* value)=0; - /// Called when an item style provider in uninstalled from a . + /// Called when an item style provider in uninstalled from a . virtual void DetachComboBox()=0; /// Create an item style controller from an item. /// The created item style controller. @@ -16581,7 +16593,7 @@ GuiBindableTextList /// The style provider for this control. /// The item style provider callback for this control. /// The item source. - GuiBindableTextList(IStyleProvider* _styleProvider, list::TextItemStyleProvider::ITextItemStyleProvider* _itemStyleProvider, Ptr _itemSource); + GuiBindableTextList(IStyleProvider* _styleProvider, list::TextItemStyleProvider::IBulletFactory* _bulletFactory, Ptr _itemSource); ~GuiBindableTextList(); /// Text property name changed event. @@ -17528,16 +17540,16 @@ namespace vl /// Create a style for text list. /// The created style. - virtual controls::GuiScrollView::IStyleProvider* CreateTextListStyle()=0; + virtual controls::GuiVirtualTextList::IStyleProvider* CreateTextListStyle()=0; /// Create a style for text list item. /// The created style. - virtual controls::list::TextItemStyleProvider::ITextItemStyleProvider* CreateTextListItemStyle()=0; + virtual controls::list::TextItemStyleProvider::IBulletFactory* CreateTextListItemStyle()=0; /// Create a style for check text list item. /// The created style. - virtual controls::list::TextItemStyleProvider::ITextItemStyleProvider* CreateCheckTextListItemStyle()=0; + virtual controls::list::TextItemStyleProvider::IBulletFactory* CreateCheckTextListItemStyle()=0; /// Create a style for radio text list item. /// The created style. - virtual controls::list::TextItemStyleProvider::ITextItemStyleProvider* CreateRadioTextListItemStyle()=0; + virtual controls::list::TextItemStyleProvider::IBulletFactory* CreateRadioTextListItemStyle()=0; }; /// Get the current theme style factory object. The default theme is [T:vl.presentation.win7.Win7Theme]. Call [M:vl.presentation.theme.SetCurrentTheme] to change the default theme. @@ -17765,10 +17777,10 @@ Theme vint GetScrollDefaultSize()override; vint GetTrackerDefaultSize()override; - controls::GuiScrollView::IStyleProvider* CreateTextListStyle()override; - controls::list::TextItemStyleProvider::ITextItemStyleProvider* CreateTextListItemStyle()override; - controls::list::TextItemStyleProvider::ITextItemStyleProvider* CreateCheckTextListItemStyle()override; - controls::list::TextItemStyleProvider::ITextItemStyleProvider* CreateRadioTextListItemStyle()override; + controls::GuiVirtualTextList::IStyleProvider* CreateTextListStyle()override; + controls::list::TextItemStyleProvider::IBulletFactory* CreateTextListItemStyle()override; + controls::list::TextItemStyleProvider::IBulletFactory* CreateCheckTextListItemStyle()override; + controls::list::TextItemStyleProvider::IBulletFactory* CreateRadioTextListItemStyle()override; }; } } @@ -17853,10 +17865,10 @@ Theme vint GetScrollDefaultSize()override; vint GetTrackerDefaultSize()override; - controls::GuiScrollView::IStyleProvider* CreateTextListStyle()override; - controls::list::TextItemStyleProvider::ITextItemStyleProvider* CreateTextListItemStyle()override; - controls::list::TextItemStyleProvider::ITextItemStyleProvider* CreateCheckTextListItemStyle()override; - controls::list::TextItemStyleProvider::ITextItemStyleProvider* CreateRadioTextListItemStyle()override; + controls::GuiVirtualTextList::IStyleProvider* CreateTextListStyle()override; + controls::list::TextItemStyleProvider::IBulletFactory* CreateTextListItemStyle()override; + controls::list::TextItemStyleProvider::IBulletFactory* CreateCheckTextListItemStyle()override; + controls::list::TextItemStyleProvider::IBulletFactory* CreateRadioTextListItemStyle()override; }; } } @@ -18249,7 +18261,7 @@ Control Template Item Template ***********************************************************************/ - class GuiListItemTemplate : public GuiTemplate, public AggregatableDescription + class GuiListItemTemplate : public GuiTemplate, public Description { public: GuiListItemTemplate(); @@ -18262,7 +18274,19 @@ Item Template GuiListItemTemplate_PROPERTIES(GUI_TEMPLATE_PROPERTY_DECL) }; - class GuiTreeItemTemplate : public GuiListItemTemplate, public AggregatableDescription + class GuiTextListItemTemplate : public GuiListItemTemplate, public AggregatableDescription + { + public: + GuiTextListItemTemplate(); + ~GuiTextListItemTemplate(); + +#define GuiTextListItemTemplate_PROPERTIES(F)\ + F(GuiTextListItemTemplate, Color, TextColor)\ + + GuiTextListItemTemplate_PROPERTIES(GUI_TEMPLATE_PROPERTY_DECL) + }; + + class GuiTreeItemTemplate : public GuiTextListItemTemplate, public AggregatableDescription { public: GuiTreeItemTemplate(); @@ -18642,7 +18666,7 @@ Control Template class GuiTextListTemplate_StyleProvider : public GuiScrollViewTemplate_StyleProvider - , public virtual controls::GuiScrollView::IStyleProvider + , public virtual controls::GuiVirtualTextList::IStyleProvider , public Description { protected: @@ -18652,7 +18676,7 @@ Control Template class ItemStyleProvider : public Object - , public virtual controls::list::TextItemStyleProvider::ITextItemStyleProvider + , public virtual controls::list::TextItemStyleProvider::IBulletFactory { protected: GuiTextListTemplate_StyleProvider* styleProvider; @@ -18661,16 +18685,16 @@ Control Template ItemStyleProvider(GuiTextListTemplate_StyleProvider* _styleProvider); ~ItemStyleProvider(); - controls::GuiSelectableButton::IStyleController* CreateBackgroundStyleController()override; controls::GuiSelectableButton::IStyleController* CreateBulletStyleController()override; - Color GetTextColor()override; }; public: GuiTextListTemplate_StyleProvider(Ptr factory); ~GuiTextListTemplate_StyleProvider(); - controls::list::TextItemStyleProvider::ITextItemStyleProvider* CreateArgument(); - controls::GuiSelectableButton::IStyleController* CreateBackgroundStyle(); + controls::GuiSelectableButton::IStyleController* CreateItemBackground()override; + Color GetTextColor()override; + + controls::list::TextItemStyleProvider::IBulletFactory* CreateArgument(); controls::GuiSelectableButton::IStyleController* CreateBulletStyle(); }; @@ -18788,22 +18812,25 @@ Item Template (GuiControlTemplate) }; /*********************************************************************** -Item Template (GuiListItemTemplate) +Item Template (GuiTextListItemTemplate) ***********************************************************************/ - class GuiListItemTemplate_ItemStyleProvider + class GuiTextListItemTemplate_ItemStyleController; + + class GuiTextListItemTemplate_ItemStyleProvider : public Object , public virtual controls::GuiSelectableListControl::IItemStyleProvider - , public Description + , public Description { + friend class GuiTextListItemTemplate_ItemStyleController; protected: Ptr factory; - controls::GuiListControl* listControl; + controls::GuiVirtualTextList* listControl; controls::GuiListControl::IItemBindingView* bindingView; public: - GuiListItemTemplate_ItemStyleProvider(Ptr _factory); - ~GuiListItemTemplate_ItemStyleProvider(); + GuiTextListItemTemplate_ItemStyleProvider(Ptr _factory); + ~GuiTextListItemTemplate_ItemStyleProvider(); void AttachListControl(controls::GuiListControl* value)override; void DetachListControl()override; @@ -18815,22 +18842,24 @@ Item Template (GuiListItemTemplate) void SetStyleSelected(controls::GuiListControl::IItemStyleController* style, bool value)override; }; - class GuiListItemTemplate_ItemStyleController + class GuiTextListItemTemplate_ItemStyleController : public Object , public virtual controls::GuiListControl::IItemStyleController - , public Description + , public Description { + friend class GuiTextListItemTemplate_ItemStyleProvider; protected: - GuiListItemTemplate_ItemStyleProvider* itemStyleProvider; - GuiListItemTemplate* itemTemplate; + GuiTextListItemTemplate_ItemStyleProvider* itemStyleProvider; + GuiTextListItemTemplate* itemTemplate; bool installed; + controls::GuiSelectableButton* backgroundButton; public: - GuiListItemTemplate_ItemStyleController(GuiListItemTemplate_ItemStyleProvider* _itemStyleProvider); - ~GuiListItemTemplate_ItemStyleController(); + GuiTextListItemTemplate_ItemStyleController(GuiTextListItemTemplate_ItemStyleProvider* _itemStyleProvider); + ~GuiTextListItemTemplate_ItemStyleController(); - GuiListItemTemplate* GetTemplate(); - void SetTemplate(GuiListItemTemplate* _itemTemplate); + GuiTextListItemTemplate* GetTemplate(); + void SetTemplate(GuiTextListItemTemplate* _itemTemplate); controls::GuiListControl::IItemStyleProvider* GetStyleProvider()override; vint GetItemStyleId()override; @@ -18845,12 +18874,15 @@ Item Template (GuiListItemTemplate) Item Template (GuiTreeItemTemplate) ***********************************************************************/ + class GuiTreeItemTemplate_ItemStyleController; + class GuiTreeItemTemplate_ItemStyleProvider : public Object , public virtual controls::tree::INodeItemStyleProvider , protected virtual controls::tree::INodeProviderCallback , public Description { + friend class GuiTreeItemTemplate_ItemStyleController; protected: Ptr factory; controls::GuiVirtualTreeListControl* treeListControl; @@ -18881,18 +18913,30 @@ Item Template (GuiTreeItemTemplate) }; class GuiTreeItemTemplate_ItemStyleController - : public GuiListItemTemplate_ItemStyleController + : public Object , public virtual controls::tree::INodeItemStyleController , public Description { + friend class GuiTreeItemTemplate_ItemStyleProvider; protected: GuiTreeItemTemplate_ItemStyleProvider* nodeStyleProvider; + GuiTreeItemTemplate* itemTemplate; + bool installed; public: GuiTreeItemTemplate_ItemStyleController(GuiTreeItemTemplate_ItemStyleProvider* _nodeStyleProvider); ~GuiTreeItemTemplate_ItemStyleController(); + + GuiTreeItemTemplate* GetTemplate(); + void SetTemplate(GuiTreeItemTemplate* _itemTemplate); controls::GuiListControl::IItemStyleProvider* GetStyleProvider()override; + vint GetItemStyleId()override; + compositions::GuiBoundsComposition* GetBoundsComposition()override; + bool IsCacheable()override; + bool IsInstalled()override; + void OnInstalled()override; + void OnUninstalled()override; controls::tree::INodeItemStyleProvider* GetNodeStyleProvider()override; }; @@ -20451,6 +20495,7 @@ TextBox #pragma warning(push) #pragma warning(disable:4250) + /// Document viewer style (Windows 7). class Win7DocumentViewerStyle : public Win7MultilineTextBoxProvider, public virtual controls::GuiDocumentViewer::IStyleProvider, public Description { @@ -22314,42 +22359,53 @@ List ***********************************************************************/ /// Text list style (Windows 7). - class Win7TextListProvider : public Object, public virtual controls::list::TextItemStyleProvider::ITextItemStyleProvider, public Description + class Win7TextListItemProvider : public Object, public virtual controls::list::TextItemStyleProvider::IBulletFactory, public Description { public: /// Create the style. - Win7TextListProvider(); - ~Win7TextListProvider(); + Win7TextListItemProvider(); + ~Win7TextListItemProvider(); - controls::GuiSelectableButton::IStyleController* CreateBackgroundStyleController()override; controls::GuiSelectableButton::IStyleController* CreateBulletStyleController()override; - Color GetTextColor()override; }; /// Check box text list style (Windows 7). - class Win7CheckTextListProvider : public Win7TextListProvider, public Description + class Win7CheckTextListItemProvider : public Win7TextListItemProvider, public Description { public: /// Create the style. - Win7CheckTextListProvider(); - ~Win7CheckTextListProvider(); + Win7CheckTextListItemProvider(); + ~Win7CheckTextListItemProvider(); controls::GuiSelectableButton::IStyleController* CreateBulletStyleController()override; }; /// Radio button text list style (Windows 7). - class Win7RadioTextListProvider : public Win7TextListProvider, public Description + class Win7RadioTextListItemProvider : public Win7TextListItemProvider, public Description { public: /// Create the style. - Win7RadioTextListProvider(); - ~Win7RadioTextListProvider(); + Win7RadioTextListItemProvider(); + ~Win7RadioTextListItemProvider(); controls::GuiSelectableButton::IStyleController* CreateBulletStyleController()override; }; #pragma warning(push) #pragma warning(disable:4250) + + /// Multiline text box style (Windows 7). + class Win7TextListProvider : public Win7MultilineTextBoxProvider, public virtual controls::GuiVirtualTextList::IStyleProvider, public Description + { + public: + /// Create the style. + Win7TextListProvider(); + ~Win7TextListProvider(); + + virtual controls::GuiSelectableButton::IStyleController* CreateItemBackground()override; + virtual Color GetTextColor()override; + }; + /// List view style (Windows 7). class Win7ListViewProvider : public Win7MultilineTextBoxProvider, public virtual controls::GuiListView::IStyleProvider, public Description { @@ -22671,42 +22727,53 @@ List ***********************************************************************/ /// Text list style (Windows 8). - class Win8TextListProvider : public Object, public virtual controls::list::TextItemStyleProvider::ITextItemStyleProvider, public Description + class Win8TextListItemProvider : public Object, public virtual controls::list::TextItemStyleProvider::IBulletFactory, public Description { public: /// Create the style. - Win8TextListProvider(); - ~Win8TextListProvider(); + Win8TextListItemProvider(); + ~Win8TextListItemProvider(); - controls::GuiSelectableButton::IStyleController* CreateBackgroundStyleController()override; controls::GuiSelectableButton::IStyleController* CreateBulletStyleController()override; - Color GetTextColor()override; }; /// Check box text list style (Windows 8). - class Win8CheckTextListProvider : public Win8TextListProvider, public Description + class Win8CheckTextListItemProvider : public Win8TextListItemProvider, public Description { public: /// Create the style. - Win8CheckTextListProvider(); - ~Win8CheckTextListProvider(); + Win8CheckTextListItemProvider(); + ~Win8CheckTextListItemProvider(); controls::GuiSelectableButton::IStyleController* CreateBulletStyleController()override; }; /// Radio button text list style (Windows 8). - class Win8RadioTextListProvider : public Win8TextListProvider, public Description + class Win8RadioTextListItemProvider : public Win8TextListItemProvider, public Description { public: /// Create the style. - Win8RadioTextListProvider(); - ~Win8RadioTextListProvider(); + Win8RadioTextListItemProvider(); + ~Win8RadioTextListItemProvider(); controls::GuiSelectableButton::IStyleController* CreateBulletStyleController()override; }; #pragma warning(push) #pragma warning(disable:4250) + + /// Multiline text box style (Windows 7). + class Win8TextListProvider : public Win8MultilineTextBoxProvider, public virtual controls::GuiVirtualTextList::IStyleProvider, public Description + { + public: + /// Create the style. + Win8TextListProvider(); + ~Win8TextListProvider(); + + virtual controls::GuiSelectableButton::IStyleController* CreateItemBackground()override; + virtual Color GetTextColor()override; + }; + /// List view style (Windows 8). class Win8ListViewProvider : public Win8MultilineTextBoxProvider, public virtual controls::GuiListView::IStyleProvider, public Description { diff --git a/Import/GacUICompiler.cpp b/Import/GacUICompiler.cpp index 75180de8..1e0ded9a 100644 --- a/Import/GacUICompiler.cpp +++ b/Import/GacUICompiler.cpp @@ -3828,7 +3828,7 @@ GuiSelectableListControlInstanceLoader const auto& values = arguments.GetByIndex(index); if (prop == GlobalStringKey::_ItemTemplate) { - if (auto stat = CreateSetControlTemplateStyle(variableName, arguments.GetByIndex(index)[0].expression, typeInfo, L"StyleProvider", errors)) + if (auto stat = CreateSetControlTemplateStyle(variableName, arguments.GetByIndex(index)[0].expression, typeInfo, L"StyleProvider", errors)) { block->statements.Add(stat); } diff --git a/Import/GacUIReflection.cpp b/Import/GacUIReflection.cpp index c31da9be..eebc274a 100644 --- a/Import/GacUIReflection.cpp +++ b/Import/GacUIReflection.cpp @@ -2043,14 +2043,12 @@ Type Declaration BEGIN_CLASS_MEMBER(TextItemStyleProvider) CLASS_MEMBER_BASE(GuiSelectableListControl::IItemStyleProvider) - CLASS_MEMBER_CONSTRUCTOR(Ptr(TextItemStyleProvider::ITextItemStyleProvider*), {L"textItemStyleProvider"}) + CLASS_MEMBER_CONSTRUCTOR(Ptr(TextItemStyleProvider::IBulletFactory*), {L"bulletFactory"}) END_CLASS_MEMBER(TextItemStyleProvider) - BEGIN_INTERFACE_MEMBER(TextItemStyleProvider::ITextItemStyleProvider) - CLASS_MEMBER_METHOD(CreateBackgroundStyleController, NO_PARAMETER) + BEGIN_INTERFACE_MEMBER(TextItemStyleProvider::IBulletFactory) CLASS_MEMBER_METHOD(CreateBulletStyleController, NO_PARAMETER) - CLASS_MEMBER_PROPERTY_READONLY_FAST(TextColor) - END_INTERFACE_MEMBER(TextItemStyleProvider::ITextItemStyleProvider) + END_INTERFACE_MEMBER(TextItemStyleProvider::IBulletFactory) BEGIN_INTERFACE_MEMBER(TextItemStyleProvider::ITextItemView) CLASS_MEMBER_BASE(GuiListControl::IItemPrimaryTextView) @@ -2061,15 +2059,6 @@ Type Declaration CLASS_MEMBER_METHOD(SetCheckedSilently, {L"itemIndex" _ L"value"}) END_INTERFACE_MEMBER(TextItemStyleProvider::ITextItemView) - BEGIN_CLASS_MEMBER(TextItemStyleProvider::TextItemStyleController) - CLASS_MEMBER_BASE(ItemStyleControllerBase) - CLASS_MEMBER_CONSTRUCTOR(TextItemStyleProvider::TextItemStyleController*(TextItemStyleProvider*), {L"provider"}) - - CLASS_MEMBER_PROPERTY_FAST(Selected) - CLASS_MEMBER_PROPERTY_FAST(Checked) - CLASS_MEMBER_PROPERTY_FAST(Text) - END_CLASS_MEMBER(TextItemStyleProvider::TextItemStyleController) - BEGIN_CLASS_MEMBER(TextItem) CLASS_MEMBER_CONSTRUCTOR(Ptr(), NO_PARAMETER) CLASS_MEMBER_CONSTRUCTOR(Ptr(const WString&), {L"text"}) @@ -2081,16 +2070,24 @@ Type Declaration BEGIN_CLASS_MEMBER(GuiVirtualTextList) CLASS_MEMBER_BASE(GuiSelectableListControl) - CLASS_MEMBER_CONSTRUCTOR(GuiVirtualTextList*(GuiSelectableListControl::IStyleProvider* _ TextItemStyleProvider::ITextItemStyleProvider* _ GuiListControl::IItemProvider*), {L"styleProvider" _ L"itemStyleProvider" _ L"itemProvider"}) + CLASS_MEMBER_CONSTRUCTOR(GuiVirtualTextList*(GuiVirtualTextList::IStyleProvider* _ TextItemStyleProvider::IBulletFactory* _ GuiListControl::IItemProvider*), {L"styleProvider" _ L"bulletFactory" _ L"itemProvider"}) CLASS_MEMBER_GUIEVENT(ItemChecked) - - CLASS_MEMBER_METHOD(ChangeItemStyle, {L"itemStyleProvider"}) + CLASS_MEMBER_PROPERTY_READONLY_FAST(TextListStyleProvider) + CLASS_MEMBER_METHOD(ChangeItemStyle, {L"bulletFactory"}) END_CLASS_MEMBER(GuiVirtualTextList) + BEGIN_INTERFACE_MEMBER(GuiVirtualTextList::IStyleProvider) + CLASS_MEMBER_BASE(GuiSelectableListControl::IStyleProvider) + + CLASS_MEMBER_PROPERTY_READONLY_FAST(TextColor) + + CLASS_MEMBER_METHOD(CreateItemBackground, NO_PARAMETER) + END_INTERFACE_MEMBER(GuiVirtualTextList::IStyleProvider) + BEGIN_CLASS_MEMBER(GuiTextList) CLASS_MEMBER_BASE(GuiVirtualTextList) - CLASS_MEMBER_CONSTRUCTOR(GuiTextList*(GuiSelectableListControl::IStyleProvider* _ TextItemStyleProvider::ITextItemStyleProvider*), {L"styleProvider" _ L"itemStyleProvider"}) + CLASS_MEMBER_CONSTRUCTOR(GuiTextList*(GuiVirtualTextList::IStyleProvider* _ TextItemStyleProvider::IBulletFactory*), {L"styleProvider" _ L"bulletFactory"}) CLASS_MEMBER_PROPERTY_READONLY_FAST(Items) CLASS_MEMBER_PROPERTY_EVENT_READONLY_FAST(SelectedItem, SelectionChanged) @@ -3156,7 +3153,7 @@ Type Declaration BEGIN_CLASS_MEMBER(GuiBindableTextList) CLASS_MEMBER_BASE(GuiVirtualTextList) - CLASS_MEMBER_CONSTRUCTOR(GuiBindableTextList*(GuiBindableTextList::IStyleProvider*, list::TextItemStyleProvider::ITextItemStyleProvider*, Ptr), {L"styleProvider" _ L"itemStyleProvider" _ L"itemSource"}) + CLASS_MEMBER_CONSTRUCTOR(GuiBindableTextList*(GuiBindableTextList::IStyleProvider*, list::TextItemStyleProvider::IBulletFactory*, Ptr), {L"styleProvider" _ L"bulletFactory" _ L"itemSource"}) CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(TextProperty) CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(CheckedProperty) @@ -3935,8 +3932,15 @@ Type Declaration GuiListItemTemplate_PROPERTIES(GUI_TEMPLATE_PROPERTY_REFLECTION) END_CLASS_MEMBER(GuiListItemTemplate) - BEGIN_CLASS_MEMBER(GuiTreeItemTemplate) + BEGIN_CLASS_MEMBER(GuiTextListItemTemplate) CLASS_MEMBER_BASE(GuiListItemTemplate) + CLASS_MEMBER_CONSTRUCTOR(GuiTextListItemTemplate*(), NO_PARAMETER) + + GuiTextListItemTemplate_PROPERTIES(GUI_TEMPLATE_PROPERTY_REFLECTION) + END_CLASS_MEMBER(GuiTextListItemTemplate) + + BEGIN_CLASS_MEMBER(GuiTreeItemTemplate) + CLASS_MEMBER_BASE(GuiTextListItemTemplate) CLASS_MEMBER_CONSTRUCTOR(GuiTreeItemTemplate*(), NO_PARAMETER) GuiTreeItemTemplate_PROPERTIES(GUI_TEMPLATE_PROPERTY_REFLECTION) @@ -4076,7 +4080,7 @@ Type Declaration BEGIN_CLASS_MEMBER(GuiTextListTemplate_StyleProvider) CLASS_MEMBER_BASE(GuiScrollViewTemplate_StyleProvider) - CLASS_MEMBER_BASE(GuiScrollView::IStyleProvider) + CLASS_MEMBER_BASE(GuiVirtualTextList::IStyleProvider) CLASS_MEMBER_CONSTRUCTOR(GuiTextListTemplate_StyleProvider*(Ptr), { L"factory" }) CLASS_MEMBER_METHOD(CreateArgument, NO_PARAMETER) @@ -4109,17 +4113,11 @@ Type Declaration CLASS_MEMBER_CONSTRUCTOR(Ptr(Ptr), { L"factory" }) END_CLASS_MEMBER(GuiControlTemplate_ItemStyleProvider) - BEGIN_CLASS_MEMBER(GuiListItemTemplate_ItemStyleController) - CLASS_MEMBER_BASE(GuiListControl::IItemStyleController) - - CLASS_MEMBER_CONSTRUCTOR(GuiListItemTemplate_ItemStyleController*(GuiListItemTemplate_ItemStyleProvider*), { L"itemStyleProvider" }) - END_CLASS_MEMBER(GuiListItemTemplate_ItemStyleController) - - BEGIN_CLASS_MEMBER(GuiListItemTemplate_ItemStyleProvider) + BEGIN_CLASS_MEMBER(GuiTextListItemTemplate_ItemStyleProvider) CLASS_MEMBER_BASE(GuiSelectableListControl::IItemStyleProvider) - CLASS_MEMBER_CONSTRUCTOR(Ptr(Ptr), { L"factory" }) - END_CLASS_MEMBER(GuiListItemTemplate_ItemStyleProvider) + CLASS_MEMBER_CONSTRUCTOR(Ptr(Ptr), { L"factory" }) + END_CLASS_MEMBER(GuiTextListItemTemplate_ItemStyleProvider) BEGIN_CLASS_MEMBER(GuiTreeItemTemplate_ItemStyleProvider) CLASS_MEMBER_BASE(tree::INodeItemStyleProvider) diff --git a/Import/GacUIReflection.h b/Import/GacUIReflection.h index d4ecfff4..49920f65 100644 --- a/Import/GacUIReflection.h +++ b/Import/GacUIReflection.h @@ -534,11 +534,11 @@ Type List F(presentation::controls::list::FixedHeightMultiColumnItemArranger)\ F(presentation::controls::list::ItemStyleControllerBase)\ F(presentation::controls::list::TextItemStyleProvider)\ - F(presentation::controls::list::TextItemStyleProvider::ITextItemStyleProvider)\ + F(presentation::controls::list::TextItemStyleProvider::IBulletFactory)\ F(presentation::controls::list::TextItemStyleProvider::ITextItemView)\ - F(presentation::controls::list::TextItemStyleProvider::TextItemStyleController)\ F(presentation::controls::list::TextItem)\ F(presentation::controls::GuiVirtualTextList)\ + F(presentation::controls::GuiVirtualTextList::IStyleProvider)\ F(presentation::controls::GuiTextList)\ F(presentation::controls::list::ListViewItemStyleProviderBase)\ F(presentation::controls::list::ListViewItemStyleProviderBase::ListViewItemStyleController)\ @@ -1105,23 +1105,13 @@ Interface Proxy } END_INTERFACE_PROXY(presentation::controls::GuiSelectableListControl::IItemStyleProvider) - BEGIN_INTERFACE_PROXY_NOPARENT_RAWPTR(presentation::controls::list::TextItemStyleProvider::ITextItemStyleProvider) - - presentation::controls::GuiSelectableButton::IStyleController* CreateBackgroundStyleController()override - { - INVOKEGET_INTERFACE_PROXY_NOPARAMS(CreateBackgroundStyleController); - } + BEGIN_INTERFACE_PROXY_NOPARENT_RAWPTR(presentation::controls::list::TextItemStyleProvider::IBulletFactory) presentation::controls::GuiSelectableButton::IStyleController* CreateBulletStyleController()override { INVOKEGET_INTERFACE_PROXY_NOPARAMS(CreateBulletStyleController); } - - presentation::Color GetTextColor()override - { - INVOKEGET_INTERFACE_PROXY_NOPARAMS(GetTextColor); - } - END_INTERFACE_PROXY(presentation::controls::list::TextItemStyleProvider::ITextItemStyleProvider) + END_INTERFACE_PROXY(presentation::controls::list::TextItemStyleProvider::IBulletFactory) BEGIN_INTERFACE_PROXY_SHAREDPTR(presentation::controls::list::TextItemStyleProvider::ITextItemView, presentation::controls::GuiListControl::IItemPrimaryTextView @@ -1143,6 +1133,21 @@ Interface Proxy } END_INTERFACE_PROXY(presentation::controls::list::TextItemStyleProvider::ITextItemView) + BEGIN_INTERFACE_PROXY_RAWPTR(presentation::controls::GuiVirtualTextList::IStyleProvider, + presentation::controls::GuiSelectableListControl::IStyleProvider + ) + + presentation::controls::GuiSelectableButton::IStyleController* CreateItemBackground()override + { + INVOKEGET_INTERFACE_PROXY_NOPARAMS(CreateItemBackground); + } + + presentation::Color GetTextColor()override + { + INVOKEGET_INTERFACE_PROXY_NOPARAMS(GetTextColor); + } + END_INTERFACE_PROXY(presentation::controls::GuiVirtualTreeView::IStyleProvider) + BEGIN_INTERFACE_PROXY_RAWPTR(presentation::controls::GuiListViewBase::IStyleProvider, presentation::controls::GuiScrollView::IStyleProvider ) @@ -2048,6 +2053,7 @@ Type List F(presentation::templates::GuiTreeViewTemplate)\ F(presentation::templates::GuiTabTemplate)\ F(presentation::templates::GuiListItemTemplate)\ + F(presentation::templates::GuiTextListItemTemplate)\ F(presentation::templates::GuiTreeItemTemplate)\ F(presentation::templates::GuiGridVisualizerTemplate)\ F(presentation::templates::GuiGridEditorTemplate)\ @@ -2073,8 +2079,7 @@ Type List F(presentation::templates::GuiTreeViewTemplate_StyleProvider)\ F(presentation::templates::GuiTabTemplate_StyleProvider)\ F(presentation::templates::GuiControlTemplate_ItemStyleProvider)\ - F(presentation::templates::GuiListItemTemplate_ItemStyleController)\ - F(presentation::templates::GuiListItemTemplate_ItemStyleProvider)\ + F(presentation::templates::GuiTextListItemTemplate_ItemStyleProvider)\ F(presentation::templates::GuiTreeItemTemplate_ItemStyleProvider)\ F(presentation::templates::GuiBindableDataVisualizer)\ F(presentation::templates::GuiBindableDataVisualizer::Factory)\ diff --git a/Tools/GacGen.exe b/Tools/GacGen.exe index a37f12ba..728f0cca 100644 Binary files a/Tools/GacGen.exe and b/Tools/GacGen.exe differ diff --git a/Tools/ParserGen.exe b/Tools/ParserGen.exe index 410f70af..a9e1bda2 100644 Binary files a/Tools/ParserGen.exe and b/Tools/ParserGen.exe differ diff --git a/Tutorial/GacUI_ControlTemplate/UIRes/BlackSkin.bin b/Tutorial/GacUI_ControlTemplate/UIRes/BlackSkin.bin index 00125e99..56e510c1 100644 Binary files a/Tutorial/GacUI_ControlTemplate/UIRes/BlackSkin.bin and b/Tutorial/GacUI_ControlTemplate/UIRes/BlackSkin.bin differ diff --git a/Tutorial/GacUI_Controls/UIRes/ContainersAndButtons.bin b/Tutorial/GacUI_Controls/UIRes/ContainersAndButtons.bin index e241b6e2..21e42040 100644 Binary files a/Tutorial/GacUI_Controls/UIRes/ContainersAndButtons.bin and b/Tutorial/GacUI_Controls/UIRes/ContainersAndButtons.bin differ diff --git a/Tutorial/GacUI_Controls/UIRes/TextEditor.bin b/Tutorial/GacUI_Controls/UIRes/TextEditor.bin index 913dbee7..3702761d 100644 Binary files a/Tutorial/GacUI_Controls/UIRes/TextEditor.bin and b/Tutorial/GacUI_Controls/UIRes/TextEditor.bin differ diff --git a/Tutorial/GacUI_HelloWorlds/UIRes/CppXml.bin b/Tutorial/GacUI_HelloWorlds/UIRes/CppXml.bin index 99cbfee0..bb49d002 100644 Binary files a/Tutorial/GacUI_HelloWorlds/UIRes/CppXml.bin and b/Tutorial/GacUI_HelloWorlds/UIRes/CppXml.bin differ diff --git a/Tutorial/GacUI_HelloWorlds/UIRes/MVVM.bin b/Tutorial/GacUI_HelloWorlds/UIRes/MVVM.bin index 602777a4..bcdfa684 100644 Binary files a/Tutorial/GacUI_HelloWorlds/UIRes/MVVM.bin and b/Tutorial/GacUI_HelloWorlds/UIRes/MVVM.bin differ diff --git a/Tutorial/GacUI_HelloWorlds/UIRes/Xml.bin b/Tutorial/GacUI_HelloWorlds/UIRes/Xml.bin index f02f8945..bc937a51 100644 Binary files a/Tutorial/GacUI_HelloWorlds/UIRes/Xml.bin and b/Tutorial/GacUI_HelloWorlds/UIRes/Xml.bin differ diff --git a/Tutorial/GacUI_Layout/UIRes/Alignment.bin b/Tutorial/GacUI_Layout/UIRes/Alignment.bin index 00828d21..11d99707 100644 Binary files a/Tutorial/GacUI_Layout/UIRes/Alignment.bin and b/Tutorial/GacUI_Layout/UIRes/Alignment.bin differ diff --git a/Tutorial/GacUI_Layout/UIRes/Flow.bin b/Tutorial/GacUI_Layout/UIRes/Flow.bin index f75a8c73..037ac449 100644 Binary files a/Tutorial/GacUI_Layout/UIRes/Flow.bin and b/Tutorial/GacUI_Layout/UIRes/Flow.bin differ diff --git a/Tutorial/GacUI_Layout/UIRes/RichTextEmbedding.bin b/Tutorial/GacUI_Layout/UIRes/RichTextEmbedding.bin index e1c211fc..876c5fd9 100644 Binary files a/Tutorial/GacUI_Layout/UIRes/RichTextEmbedding.bin and b/Tutorial/GacUI_Layout/UIRes/RichTextEmbedding.bin differ diff --git a/Tutorial/GacUI_Layout/UIRes/Stack.bin b/Tutorial/GacUI_Layout/UIRes/Stack.bin index fc8f7db0..6e393382 100644 Binary files a/Tutorial/GacUI_Layout/UIRes/Stack.bin and b/Tutorial/GacUI_Layout/UIRes/Stack.bin differ diff --git a/Tutorial/GacUI_Layout/UIRes/Table.bin b/Tutorial/GacUI_Layout/UIRes/Table.bin index e8389f5f..ec789b96 100644 Binary files a/Tutorial/GacUI_Layout/UIRes/Table.bin and b/Tutorial/GacUI_Layout/UIRes/Table.bin differ diff --git a/Tutorial/GacUI_Xml/UIRes/Binding_Bind.bin b/Tutorial/GacUI_Xml/UIRes/Binding_Bind.bin index b3f2e4c3..4a415f63 100644 Binary files a/Tutorial/GacUI_Xml/UIRes/Binding_Bind.bin and b/Tutorial/GacUI_Xml/UIRes/Binding_Bind.bin differ diff --git a/Tutorial/GacUI_Xml/UIRes/Binding_Eval.bin b/Tutorial/GacUI_Xml/UIRes/Binding_Eval.bin index ec9a700c..1f9a6bfb 100644 Binary files a/Tutorial/GacUI_Xml/UIRes/Binding_Eval.bin and b/Tutorial/GacUI_Xml/UIRes/Binding_Eval.bin differ diff --git a/Tutorial/GacUI_Xml/UIRes/Binding_Format.bin b/Tutorial/GacUI_Xml/UIRes/Binding_Format.bin index 6e5dad70..41c993a8 100644 Binary files a/Tutorial/GacUI_Xml/UIRes/Binding_Format.bin and b/Tutorial/GacUI_Xml/UIRes/Binding_Format.bin differ diff --git a/Tutorial/GacUI_Xml/UIRes/Binding_Uri.bin b/Tutorial/GacUI_Xml/UIRes/Binding_Uri.bin index 4fe9196a..45b291b9 100644 Binary files a/Tutorial/GacUI_Xml/UIRes/Binding_Uri.bin and b/Tutorial/GacUI_Xml/UIRes/Binding_Uri.bin differ diff --git a/Tutorial/GacUI_Xml/UIRes/Binding_ViewModel.bin b/Tutorial/GacUI_Xml/UIRes/Binding_ViewModel.bin index b35fe5c9..3a1e5922 100644 Binary files a/Tutorial/GacUI_Xml/UIRes/Binding_ViewModel.bin and b/Tutorial/GacUI_Xml/UIRes/Binding_ViewModel.bin differ diff --git a/Tutorial/GacUI_Xml/UIRes/Event_Cpp.bin b/Tutorial/GacUI_Xml/UIRes/Event_Cpp.bin index a19b572b..b0687b3b 100644 Binary files a/Tutorial/GacUI_Xml/UIRes/Event_Cpp.bin and b/Tutorial/GacUI_Xml/UIRes/Event_Cpp.bin differ diff --git a/Tutorial/GacUI_Xml/UIRes/Event_Script.bin b/Tutorial/GacUI_Xml/UIRes/Event_Script.bin index a890aedd..b66b5f9c 100644 Binary files a/Tutorial/GacUI_Xml/UIRes/Event_Script.bin and b/Tutorial/GacUI_Xml/UIRes/Event_Script.bin differ diff --git a/Tutorial/GacUI_Xml/UIRes/Event_ViewModel.bin b/Tutorial/GacUI_Xml/UIRes/Event_ViewModel.bin index ba8d9d96..6c2b7bb0 100644 Binary files a/Tutorial/GacUI_Xml/UIRes/Event_ViewModel.bin and b/Tutorial/GacUI_Xml/UIRes/Event_ViewModel.bin differ diff --git a/Tutorial/GacUI_Xml/UIRes/Instance_Control.bin b/Tutorial/GacUI_Xml/UIRes/Instance_Control.bin index 7c807271..1676c3ce 100644 Binary files a/Tutorial/GacUI_Xml/UIRes/Instance_Control.bin and b/Tutorial/GacUI_Xml/UIRes/Instance_Control.bin differ diff --git a/Tutorial/GacUI_Xml/UIRes/Instance_MultipleWindows.bin b/Tutorial/GacUI_Xml/UIRes/Instance_MultipleWindows.bin index 8302519f..3346e2f9 100644 Binary files a/Tutorial/GacUI_Xml/UIRes/Instance_MultipleWindows.bin and b/Tutorial/GacUI_Xml/UIRes/Instance_MultipleWindows.bin differ diff --git a/Tutorial/GacUI_Xml/UIRes/Instance_Window.bin b/Tutorial/GacUI_Xml/UIRes/Instance_Window.bin index 8987a97c..30f48913 100644 Binary files a/Tutorial/GacUI_Xml/UIRes/Instance_Window.bin and b/Tutorial/GacUI_Xml/UIRes/Instance_Window.bin differ diff --git a/Tutorial/GacUI_Xml/UIRes/Member_Field.bin b/Tutorial/GacUI_Xml/UIRes/Member_Field.bin index e6f7558d..8b3da732 100644 Binary files a/Tutorial/GacUI_Xml/UIRes/Member_Field.bin and b/Tutorial/GacUI_Xml/UIRes/Member_Field.bin differ diff --git a/Tutorial/GacUI_Xml/UIRes/Member_Parameter.bin b/Tutorial/GacUI_Xml/UIRes/Member_Parameter.bin index 9ded8673..471bfbac 100644 Binary files a/Tutorial/GacUI_Xml/UIRes/Member_Parameter.bin and b/Tutorial/GacUI_Xml/UIRes/Member_Parameter.bin differ diff --git a/Tutorial/GacUI_Xml/UIRes/Member_Property.bin b/Tutorial/GacUI_Xml/UIRes/Member_Property.bin index 8f64a0e8..f7ecac61 100644 Binary files a/Tutorial/GacUI_Xml/UIRes/Member_Property.bin and b/Tutorial/GacUI_Xml/UIRes/Member_Property.bin differ