[Mediaportal-svn] SF.net SVN: mediaportal: [17239] trunk/MP-II
Turn your PC into a very advanced MediaCenter/HTPC
Brought to you by:
gereonheitmann,
morpheus_xx
From: <ya...@us...> - 2008-01-31 14:52:38
|
Revision: 17239 http://mediaportal.svn.sourceforge.net/mediaportal/?rev=17239&view=rev Author: yamp Date: 2008-01-31 06:52:35 -0800 (Thu, 31 Jan 2008) Log Message: ----------- Modified Paths: -------------- trunk/MP-II/MediaPortal.Base/skin/default/XamlStyle.xml trunk/MP-II/MediaPortal.Base/skin/default/sharesAdd.xaml trunk/MP-II/skinengine/Controls/Panels/Grid.cs trunk/MP-II/skinengine/Controls/Panels/GridLength.cs trunk/MP-II/skinengine/Controls/Panels/Panel.cs trunk/MP-II/skinengine/Controls/Visual/Control.cs trunk/MP-II/skinengine/Controls/Visual/HeaderedItemsControl.cs trunk/MP-II/skinengine/Controls/Visual/ItemsControl.cs trunk/MP-II/skinengine/Controls/Visual/ItemsPresenter.cs trunk/MP-II/skinengine/Controls/Visual/Shapes/Path.cs trunk/MP-II/skinengine/Controls/Visual/Styles/Style.cs trunk/MP-II/skinengine/Controls/Visual/TreeViewItem.cs trunk/MP-II/skinengine/Controls/Visual/Treeview.cs trunk/MP-II/skinengine/WindowManagement/WindowManager.cs trunk/MP-II/skinengine/skinengine.csproj Added Paths: ----------- trunk/MP-II/skinengine/Controls/Visual/ListViewItem.cs Modified: trunk/MP-II/MediaPortal.Base/skin/default/XamlStyle.xml =================================================================== --- trunk/MP-II/MediaPortal.Base/skin/default/XamlStyle.xml 2008-01-31 12:28:19 UTC (rev 17238) +++ trunk/MP-II/MediaPortal.Base/skin/default/XamlStyle.xml 2008-01-31 14:52:35 UTC (rev 17239) @@ -1901,7 +1901,9 @@ <Style Key="itemListContainerStyle"> <Setter Property="Template"> <Setter.Value> - <Button Height="46" Style="{StaticResource MpButton}"/> + <ControlTemplate> + <Button Height="46" Style="{StaticResource MpButton}"/> + </ControlTemplate> </Setter.Value> </Setter> </Style> @@ -1971,11 +1973,13 @@ <Style Key="itemPlayListContainerStyle"> <Setter Property="Template"> <Setter.Value> - <StackPanel Orientation="Horizontal"> - <Button Style="{StaticResource MpButton}" Height="46" Width="360"/> - <Button Style="{StaticResource MpArrowButtonDown}" Command="{Binding PlayList:PlayList.MoveDown}" Height="46" Width="46" /> - <Button Style="{StaticResource MpArrowButtonUp}" Command="{Binding PlayList:PlayList.MoveUp}" Height="46" Width="46" /> - </StackPanel> + <ControlTemplate> + <StackPanel Orientation="Horizontal"> + <Button Style="{StaticResource MpButton}" Height="46" Width="360"/> + <Button Style="{StaticResource MpArrowButtonDown}" Command="{Binding PlayList:PlayList.MoveDown}" Height="46" Width="46" /> + <Button Style="{StaticResource MpArrowButtonUp}" Command="{Binding PlayList:PlayList.MoveUp}" Height="46" Width="46" /> + </StackPanel> + </ControlTemplate> </Setter.Value> </Setter> </Style> @@ -2044,7 +2048,9 @@ <Style Key="itemMenuContainerStyle"> <Setter Property="Template"> <Setter.Value> - <Button Height="32" Style="{StaticResource MpButton}"/> + <ControlTemplate> + <Button Height="32" Style="{StaticResource MpButton}"/> + </ControlTemplate> </Setter.Value> </Setter> </Style> @@ -2053,6 +2059,7 @@ <Label Name="lbl1" Margin="10,4,0,0" Text="{Binding Name}" Font="font13"/> </Grid> </DataTemplate> + <Style Key="MpListViewMenu" TargetType="ListBox"> <Setter Property="SnapsToDevicePixels" Value="true"/> <Setter Property="OverridesDefaultStyle" Value="true"/> @@ -2091,7 +2098,7 @@ <!-- data template for a dialog menu item in list mode--> <DataTemplate Key="TreeItemTemplate" DataType="{Type local:DialogMenuItem}"> <Grid Background="Orange"> - <Label Name="lbl11" Height="32" Text="hallodaar" Font="font13"/> + <Label Name="lbl11" Height="32" Text="{Binding Name}" Font="font13"/> <Grid.Triggers> <Trigger Property="HasFocus" Value="True"> <Setter TargetName="lbl11" Property="Scroll" Value="True" /> @@ -2102,20 +2109,23 @@ <Style Key="TreeItemContainerStyle" TargetType="{Type TreeViewItem}"> <Setter Property="Template"> <Setter.Value> - <Grid Background="Red" > - <Grid.ColumnDefinitions> - <ColumnDefinition Width="32"/> - <ColumnDefinition Width="32"/> - <ColumnDefinition Width="Auto"/> - </Grid.ColumnDefinitions> - <Grid.RowDefinitions> - <RowDefinition Height="32"/> - <RowDefinition Height="Auto"/> - </Grid.RowDefinitions> - <CheckBox Grid.Column="0" Grid.Row="0" Style="{StaticResource MpPlusMinButton}" Background="White"/> - <CheckBox Grid.Column="1" Grid.Row="0" Style="{StaticResource MpCheckBox}"/> - <ContentPresenter Grid.Column="2" Grid.Row="1" /> - </Grid> + <ControlTemplate TargetType="TreeViewItem"> + <Grid Background="Red" HorizontalAlignment="Left" VerticalAlignment="Top"> + <Grid.ColumnDefinitions> + <ColumnDefinition Width="32"/> + <ColumnDefinition Width="32"/> + <ColumnDefinition Width="Auto"/> + </Grid.ColumnDefinitions> + <Grid.RowDefinitions> + <RowDefinition Height="32"/> + <RowDefinition Height="Auto"/> + </Grid.RowDefinitions> + <CheckBox Name="Expander" Grid.Column="0" Grid.Row="0" Style="{StaticResource MpPlusMinButton}" Background="White" VerticalAlignment="Top"/> + <CheckBox Grid.Column="1" Grid.Row="0" Style="{StaticResource MpCheckBox}" VerticalAlignment="Top"/> + <ContentPresenter Grid.Column="2" Grid.Row="0" HorizontalAlignment="Left" VerticalAlignment="Top"/> + <ItemsPresenter Name="ItemsHost" Grid.Column="2" Grid.Row="1" HorizontalAlignment="Left" VerticalAlignment="Top"/> + </Grid> + </ControlTemplate> </Setter.Value> </Setter> </Style> @@ -2139,14 +2149,19 @@ <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="TreeView" Background="Green"> - <ScrollViewer> - <ItemsPresenter/> - <StackPanel IsItemsHost="True" VerticalAlignment="Top" Background="Yellow"> - </StackPanel> + <ScrollViewer Style="{StaticResource DefaultScrollViewerStyle}"> + <ItemsPresenter HorizontalAlignment="Left" VerticalAlignment="Top"/> </ScrollViewer> </ControlTemplate> </Setter.Value> </Setter> + <Setter Property="ItemsPanel"> + <Setter.Value> + <ItemsPanelTemplate TargetType="TreeView"> + <StackPanel IsItemsHost="True" HorizontalAlignment="Left" VerticalAlignment="Top"/> + </ItemsPanelTemplate> + </Setter.Value> + </Setter> </Style> </ResourceDictionary> </MyXaml> \ No newline at end of file Modified: trunk/MP-II/MediaPortal.Base/skin/default/sharesAdd.xaml =================================================================== --- trunk/MP-II/MediaPortal.Base/skin/default/sharesAdd.xaml 2008-01-31 12:28:19 UTC (rev 17238) +++ trunk/MP-II/MediaPortal.Base/skin/default/sharesAdd.xaml 2008-01-31 14:52:35 UTC (rev 17239) @@ -25,7 +25,7 @@ <ListView Name="mainMenu" Height="300" Width="200" Style="{StaticResource MpListViewMenu}" ItemsSource="{Binding SharesAddMainMenu}" /> <Button Style="{StaticResource buttonVideoWindow}" IsVisible="{Binding Players.OSD.IsVideo}" Width="160" Height="120" VerticalAlignment="Bottom" Command="{Binding Path=WindowManager.ShowWindow}" CommandParameter="fullscreenvideo"/> </StackPanel> - <TreeView Width="480" Height="476" Margin="10,0,10,0" ItemsSource="model.Folders" Style="{StaticResource MpTreeView}"/> + <TreeView Background="Yellow" Width="480" Height="476" Margin="10,0,10,0" ItemsSource="{Binding Folders}" Style="{StaticResource MpTreeView}" Command="{Binding GetSubItems}" CommandParameter="{Binding Path=this.CurrentItem}"/> </DockPanel> </Canvas> </MyXaml> \ No newline at end of file Modified: trunk/MP-II/skinengine/Controls/Panels/Grid.cs =================================================================== --- trunk/MP-II/skinengine/Controls/Panels/Grid.cs 2008-01-31 12:28:19 UTC (rev 17238) +++ trunk/MP-II/skinengine/Controls/Panels/Grid.cs 2008-01-31 14:52:35 UTC (rev 17239) @@ -170,8 +170,8 @@ if (col < 0) col = 0; if (row >= RowDefinitions.Count) row = RowDefinitions.Count - 1; if (row < 0) row = 0; - double widthPerCell = ((ColumnDefinition)(ColumnDefinitions[col])).Width.GetLength(w, ColumnDefinitions.Count, SkinContext.Zoom.Width); - double heightPerCell = ((RowDefinition)(RowDefinitions[row])).Height.GetLength(h, RowDefinitions.Count, SkinContext.Zoom.Height); + double widthPerCell = ((ColumnDefinition)(ColumnDefinitions[col])).Width.GetLength(w, ColumnDefinitions, SkinContext.Zoom.Width); + double heightPerCell = ((RowDefinition)(RowDefinitions[row])).Height.GetLength(h, RowDefinitions, SkinContext.Zoom.Height); widthPerCell *= child.ColumnSpan; heightPerCell *= child.RowSpan; @@ -223,7 +223,7 @@ _desiredSize.Height = (float)totalHeight; if (Width > 0) _desiredSize.Width = (float)Width * SkinContext.Zoom.Width; - if (Height > 0) _desiredSize.Height = (float)Height* SkinContext.Zoom.Height; + if (Height > 0) _desiredSize.Height = (float)Height * SkinContext.Zoom.Height; if (LayoutTransform != null) @@ -277,13 +277,13 @@ if (row >= RowDefinitions.Count) row = RowDefinitions.Count - 1; if (row < 0) row = 0; PointF p = new PointF((float)(this.ActualPosition.X + _colOffset[col]), (float)(this.ActualPosition.Y + _rowOffset[row])); - if (child.Name == "lbl11") + if (child is Visuals.CheckBox) { } float ww = (float)_colWidth[col]; - if (ww < w) ww = w; + //if (ww < w) ww = w; float hh = (float)_rowHeight[row]; - if (hh < h) hh = h; + //if (hh < h) hh = h; ArrangeChild(child, ref p, (ww * child.ColumnSpan), (hh * child.RowSpan)); child.Arrange(new RectangleF(p, child.DesiredSize)); Modified: trunk/MP-II/skinengine/Controls/Panels/GridLength.cs =================================================================== --- trunk/MP-II/skinengine/Controls/Panels/GridLength.cs 2008-01-31 12:28:19 UTC (rev 17238) +++ trunk/MP-II/skinengine/Controls/Panels/GridLength.cs 2008-01-31 14:52:35 UTC (rev 17239) @@ -124,11 +124,51 @@ /// </summary> /// <param name="totalLength">The total length.</param> /// <returns></returns> - public double GetLength(double totalLength, int maxItems, float scale) + public double GetLength(double totalLength, ColumnDefinitionsCollection collection, float scale) { if (IsAbsolute) return _value * scale; if (IsStar) return ((_value / 100.0) * totalLength); - return totalLength / maxItems; + double lenLeft=totalLength; + int countLeft=0; + for (int i = 0; i < collection.Count; ++i) + { + ColumnDefinition def = (ColumnDefinition)collection[i]; + if (def.Width.IsAbsolute) + { + lenLeft -= (def.Width.Value * scale); + } + else if (def.Width.IsStar) + { + lenLeft -= ((_value / 100.0) * totalLength); + } + else countLeft++; + } + if (lenLeft <= 0) return 0.0; + return (lenLeft/ ((double)countLeft)); } + + + public double GetLength(double totalLength, RowDefinitionsCollection collection, float scale) + { + if (IsAbsolute) return _value * scale; + if (IsStar) return ((_value / 100.0) * totalLength); + double lenLeft=totalLength; + int countLeft=0; + for (int i = 0; i < collection.Count; ++i) + { + RowDefinition def = (RowDefinition)collection[i]; + if (def.Height.IsAbsolute) + { + lenLeft -= (def.Height.Value * scale); + } + else if (def.Height.IsStar) + { + lenLeft -= ((_value / 100.0) * totalLength); + } + else countLeft++; + } + if (lenLeft <= 0) return 0.0; + return (lenLeft/ ((double)countLeft)); + } } } Modified: trunk/MP-II/skinengine/Controls/Panels/Panel.cs =================================================================== --- trunk/MP-II/skinengine/Controls/Panels/Panel.cs 2008-01-31 12:28:19 UTC (rev 17238) +++ trunk/MP-II/skinengine/Controls/Panels/Panel.cs 2008-01-31 14:52:35 UTC (rev 17239) @@ -289,7 +289,8 @@ System.Drawing.SizeF rectSize = new System.Drawing.SizeF((float)w, (float)h); ExtendedMatrix m = new ExtendedMatrix(); - m.Matrix *= _finalLayoutTransform.Matrix; + if (_finalLayoutTransform != null) + m.Matrix *= _finalLayoutTransform.Matrix; if (LayoutTransform != null) { ExtendedMatrix em; @@ -443,15 +444,15 @@ public override bool ReplaceElementType(Type t, UIElement newElement) { - for (int i=0; i < Children.Count;++i) + for (int i = 0; i < Children.Count; ++i) { if (Children[i].GetType() == t) { Children[i] = newElement; Children[i].VisualParent = this; - return true ; + return true; } - } + } foreach (UIElement element in Children) { if (element.ReplaceElementType(t, newElement)) return true; Modified: trunk/MP-II/skinengine/Controls/Visual/Control.cs =================================================================== --- trunk/MP-II/skinengine/Controls/Visual/Control.cs 2008-01-31 12:28:19 UTC (rev 17238) +++ trunk/MP-II/skinengine/Controls/Visual/Control.cs 2008-01-31 14:52:35 UTC (rev 17239) @@ -112,6 +112,7 @@ { element.VisualParent = this; _templateControl = element; + _templateControl.Context = this.Context; this.Resources.Merge(Template.Resources); this.Triggers.Merge(Template.Triggers); } @@ -435,7 +436,7 @@ public override void Arrange(System.Drawing.RectangleF finalRect) { //Trace.WriteLine(String.Format("Button.arrange :{0} {1},{2} {3}x{4}", this.Name, (int)finalRect.X, (int)finalRect.Y, (int)finalRect.Width, (int)finalRect.Height)); - + System.Drawing.RectangleF layoutRect = new System.Drawing.RectangleF(finalRect.X, finalRect.Y, finalRect.Width, finalRect.Height); layoutRect.X += (float)(Margin.X * SkinContext.Zoom.Width); @@ -648,7 +649,8 @@ SizeF rectSize = new SizeF((float)w, (float)h); ExtendedMatrix m = new ExtendedMatrix(); - m.Matrix *= _finalLayoutTransform.Matrix; + if (_finalLayoutTransform != null) + m.Matrix *= _finalLayoutTransform.Matrix; if (LayoutTransform != null) { ExtendedMatrix em; @@ -709,7 +711,8 @@ mPath.CloseFigure(); System.Drawing.Drawing2D.Matrix m = new System.Drawing.Drawing2D.Matrix(); m.Translate(-baseRect.X, -baseRect.Y, MatrixOrder.Append); - m.Multiply(_finalLayoutTransform.Get2dMatrix(), MatrixOrder.Append); + if (_finalLayoutTransform != null) + m.Multiply(_finalLayoutTransform.Get2dMatrix(), MatrixOrder.Append); if (LayoutTransform != null) { ExtendedMatrix em; @@ -763,7 +766,8 @@ path.CloseFigure(); System.Drawing.Drawing2D.Matrix mtx = new System.Drawing.Drawing2D.Matrix(); mtx.Translate(-baseRect.X, -baseRect.Y, MatrixOrder.Append); - mtx.Multiply(_finalLayoutTransform.Get2dMatrix(), MatrixOrder.Append); + if (_finalLayoutTransform != null) + mtx.Multiply(_finalLayoutTransform.Get2dMatrix(), MatrixOrder.Append); if (LayoutTransform != null) { ExtendedMatrix em; @@ -825,7 +829,8 @@ } System.Drawing.Drawing2D.Matrix mtx = new System.Drawing.Drawing2D.Matrix(); mtx.Translate(-baseRect.X, -baseRect.Y, MatrixOrder.Append); - mtx.Multiply(_finalLayoutTransform.Get2dMatrix(), MatrixOrder.Append); + if (_finalLayoutTransform != null) + mtx.Multiply(_finalLayoutTransform.Get2dMatrix(), MatrixOrder.Append); if (LayoutTransform != null) { ExtendedMatrix em; Modified: trunk/MP-II/skinengine/Controls/Visual/HeaderedItemsControl.cs =================================================================== --- trunk/MP-II/skinengine/Controls/Visual/HeaderedItemsControl.cs 2008-01-31 12:28:19 UTC (rev 17238) +++ trunk/MP-II/skinengine/Controls/Visual/HeaderedItemsControl.cs 2008-01-31 14:52:35 UTC (rev 17239) @@ -46,7 +46,8 @@ private Property _headerProperty; private Property _headerTemplateProperty; private Property _headerTemplateSelectorProperty; - bool _isExpanded; + SizeF _baseDesiredSize; + bool _wasExpanded = false; public HeaderedItemsControl() { @@ -193,12 +194,24 @@ { get { - return _isExpanded; + if (Header == null) + { + _wasExpanded = false; + return false; + } + CheckBox expander = Header.FindElement("Expander") as CheckBox; + if (Header == null) + { + _wasExpanded = false; + return false; + } + if (_wasExpanded != expander.IsChecked) + { + Invalidate(); + } + _wasExpanded = expander.IsChecked; + return _wasExpanded; } - set - { - _isExpanded = value; - } } /// <summary> @@ -213,14 +226,19 @@ if (!IsExpanded) { _desiredSize = Header.DesiredSize; + _originalSize = _desiredSize; + _availableSize = new System.Drawing.SizeF(availableSize.Width, availableSize.Height); return; } } base.Measure(availableSize); + _baseDesiredSize = _desiredSize; if (Header != null) { _desiredSize.Height += Header.DesiredSize.Height; } + _originalSize = _desiredSize; + _availableSize = new System.Drawing.SizeF(availableSize.Width, availableSize.Height); } /// <summary> /// Arranges the UI element @@ -229,23 +247,42 @@ /// <param name="finalRect">The final size that the parent computes for the child element</param> public override void Arrange(System.Drawing.RectangleF finalRect) { - System.Drawing.RectangleF layoutRect = new System.Drawing.RectangleF((float)ActualPosition.X, (float)ActualPosition.Y, (float)ActualWidth, (float)ActualHeight); - + RectangleF layoutRect = new RectangleF(finalRect.X, finalRect.Y, finalRect.Width, finalRect.Height); layoutRect.X += (float)(Margin.X * SkinContext.Zoom.Width); layoutRect.Y += (float)(Margin.Y * SkinContext.Zoom.Height); layoutRect.Width -= (float)((Margin.X + Margin.W) * SkinContext.Zoom.Width); layoutRect.Height -= (float)((Margin.Y + Margin.Z) * SkinContext.Zoom.Height); + ActualPosition = new SlimDX.Vector3(layoutRect.Location.X, layoutRect.Location.Y, 1.0f); ; + ActualWidth = layoutRect.Width; + ActualHeight = layoutRect.Height; PointF p = layoutRect.Location; if (Header != null) { //ArrangeChild(Header, ref p, layoutRect.Width, layoutRect.Height); Header.Arrange(new RectangleF(p, Header.DesiredSize)); + if (!IsExpanded) + { + + _finalLayoutTransform = SkinContext.FinalLayoutTransform; + IsArrangeValid = true; + InitializeBindings(); + InitializeTriggers(); + _isLayoutInvalid = false; + if (!finalRect.IsEmpty) + { + if (_finalRect.Width != finalRect.Width || _finalRect.Height != _finalRect.Height) + _performLayout = true; + _finalRect = new System.Drawing.RectangleF(finalRect.Location, finalRect.Size); + } + return; + } p.Y += Header.DesiredSize.Height; + } if (IsExpanded) { - base.Arrange(new RectangleF(p, base.DesiredSize)); + base.Arrange(new RectangleF(p, _baseDesiredSize)); } } protected void ArrangeChild(FrameworkElement child, ref System.Drawing.PointF p, double widthPerCell, double heightPerCell) @@ -281,7 +318,7 @@ ExtendedMatrix em = new ExtendedMatrix(this.Opacity); SkinContext.AddTransform(em); Header.DoRender(); - + SkinContext.RemoveTransform(); } if (IsExpanded) @@ -394,7 +431,6 @@ /// <returns></returns> public override UIElement FindFocusedItem() { - if (HasFocus) return this; if (Header != null) { @@ -402,8 +438,9 @@ if (found != null) return found; } if (!IsExpanded) return null; - return base.FindFocusedItem(); + return base.FindFocusedItem(); } + public override void Reset() { if (Header != null) Modified: trunk/MP-II/skinengine/Controls/Visual/ItemsControl.cs =================================================================== --- trunk/MP-II/skinengine/Controls/Visual/ItemsControl.cs 2008-01-31 12:28:19 UTC (rev 17238) +++ trunk/MP-II/skinengine/Controls/Visual/ItemsControl.cs 2008-01-31 14:52:35 UTC (rev 17239) @@ -409,40 +409,73 @@ break; } } + if (this is TreeViewItem) + { + } - int index = 0; - FrameworkElement focusedContainer=null; + FrameworkElement focusedContainer = null; UIElementCollection children = new UIElementCollection(null); IEnumerator enumer = ItemsSource.GetEnumerator(); while (enumer.MoveNext()) { - FrameworkElement container = ItemContainerStyle.Get(); - container.VisualParent = _itemsHostPanel; - container.Name = String.Format("ItemsControl.{0} #{1}", container, index++); - FrameworkElement newItem = (FrameworkElement)ItemTemplate.LoadContent(); - newItem.VisualParent = container; - newItem.Context = enumer.Current; - container.Context = enumer.Current; - if (enumer.Current is ListItem) + if (this is ListView) { - if (((ListItem)enumer.Current).Selected) + ListViewItem container = new ListViewItem(); + container.Context = enumer.Current; + container.Style = ItemContainerStyle; + container.ContentTemplate = ItemTemplate; + container.ContentTemplateSelector = ItemTemplateSelector; + container.Content = (FrameworkElement) ItemTemplate.LoadContent(); + container.VisualParent = _itemsHostPanel; + container.Name = String.Format("ItemsControl.{0} #{1}", container, index++); + if (enumer.Current is ListItem) { - focusedContainer = container; + if (((ListItem)enumer.Current).Selected) + { + focusedContainer = container; + } } + children.Add(container); } - ContentPresenter cpresenter = container.FindElementType(typeof(ContentPresenter)) as ContentPresenter; - if (cpresenter != null) + else { - cpresenter.Content = newItem; + TreeViewItem container = new TreeViewItem(); + container.Context = enumer.Current; + container.Style = ItemContainerStyle; + container.ItemContainerStyle = ItemContainerStyle; + container.ItemContainerStyleSelector = ItemContainerStyleSelector; + container.ItemTemplate = ItemTemplate; + container.ItemTemplateSelector = ItemTemplateSelector; + container.ItemsPanel = ItemsPanel; + if (enumer.Current is ListItem) + { + ListItem listItem = (ListItem)enumer.Current; + container.ItemsSource = listItem.SubItems; + } + FrameworkElement element= ItemContainerStyle.Get(); + element.Context = enumer.Current; + ContentPresenter headerContentPresenter = element.FindElementType(typeof(ContentPresenter)) as ContentPresenter; + headerContentPresenter.Content = (FrameworkElement)ItemTemplate.LoadContent(); + container.Header = (FrameworkElement)element; + container.Name = String.Format("ItemsControl.{0} #{1}", container, index++); + //if (index > 2) break; + + if (enumer.Current is ListItem) + { + if (((ListItem)enumer.Current).Selected) + { + focusedContainer = container; + } + } + children.Add(container); } - children.Add(container); } children.SetParent(_itemsHostPanel); _itemsHostPanel.SetChildren(children); _itemsHostPanel.Invalidate(); - + if (focusedItem != null) { IScrollInfo info = _itemsHostPanel as IScrollInfo; @@ -469,7 +502,7 @@ else if (focusedContainer != null) { _itemsHostPanel.UpdateLayout(); - focusedContainer.HasFocus = true; + focusedContainer.OnMouseMove((float)focusedContainer.ActualPosition.X,(float)focusedContainer.ActualPosition.Y); } return true; Modified: trunk/MP-II/skinengine/Controls/Visual/ItemsPresenter.cs =================================================================== --- trunk/MP-II/skinengine/Controls/Visual/ItemsPresenter.cs 2008-01-31 12:28:19 UTC (rev 17238) +++ trunk/MP-II/skinengine/Controls/Visual/ItemsPresenter.cs 2008-01-31 14:52:35 UTC (rev 17239) @@ -34,7 +34,6 @@ using SkinEngine; using SkinEngine.Controls.Panels; using SkinEngine.Controls.Bindings; -using SkinEngine.Controls.Visuals.Styles; namespace SkinEngine.Controls.Visuals { @@ -45,6 +44,7 @@ /// </summary> public class ItemsPresenter : Control { + public ItemsPresenter() { } @@ -63,5 +63,12 @@ ct.AddChild(template.LoadContent()); this.Template = ct; } + public void SetControlTemplate(ControlTemplate template) + { + } + public override void Measure(System.Drawing.SizeF availableSize) + { + base.Measure(availableSize); + } } } Added: trunk/MP-II/skinengine/Controls/Visual/ListViewItem.cs =================================================================== --- trunk/MP-II/skinengine/Controls/Visual/ListViewItem.cs (rev 0) +++ trunk/MP-II/skinengine/Controls/Visual/ListViewItem.cs 2008-01-31 14:52:35 UTC (rev 17239) @@ -0,0 +1,68 @@ +#region Copyright (C) 2007-2008 Team MediaPortal + +/* + Copyright (C) 2007-2008 Team MediaPortal + http://www.team-mediaportal.com + + This file is part of MediaPortal II + + MediaPortal II is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + MediaPortal II is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with MediaPortal II. If not, see <http://www.gnu.org/licenses/>. +*/ + +#endregion +using System; +using System.Reflection; +using System.Diagnostics; +using System.Collections; +using System.Collections.Generic; +using System.Text; +using MediaPortal.Core.Properties; +using SkinEngine.Controls.Visuals.Styles; +using MediaPortal.Core.InputManager; + +using SkinEngine; +using SkinEngine.Controls.Panels; +using SkinEngine.Controls.Bindings; + +namespace SkinEngine.Controls.Visuals +{ + public class ListViewItem : ContentControl + { + #region ctor + public ListViewItem() + { + Init(); + } + + public ListViewItem(ListViewItem b) + : base(b) + { + Init(); + } + + public override object Clone() + { + return new ListViewItem(this); + } + + void Init() + { + } + #endregion + public override void DoRender() + { + base.DoRender(); + } + } +} Modified: trunk/MP-II/skinengine/Controls/Visual/Shapes/Path.cs =================================================================== --- trunk/MP-II/skinengine/Controls/Visual/Shapes/Path.cs 2008-01-31 12:28:19 UTC (rev 17238) +++ trunk/MP-II/skinengine/Controls/Visual/Shapes/Path.cs 2008-01-31 14:52:35 UTC (rev 17239) @@ -155,7 +155,8 @@ SizeF rectSize = new SizeF((float)w, (float)h); ExtendedMatrix m = new ExtendedMatrix(); - m.Matrix *= _finalLayoutTransform.Matrix; + if (_finalLayoutTransform != null) + m.Matrix *= _finalLayoutTransform.Matrix; if (LayoutTransform != null) { ExtendedMatrix em; @@ -207,7 +208,7 @@ if (direction == PolygonDirection.Count_Clockwise) mode = WidthMode.LeftHanded; if (_fillDisabled) - _vertexBufferBorder = ConvertPathToTriangleStrip(path, (float)(StrokeThickness/2.0), isClosed, out verts); + _vertexBufferBorder = ConvertPathToTriangleStrip(path, (float)(StrokeThickness / 2.0), isClosed, out verts); else _vertexBufferBorder = CalculateLinePoints(path, (float)StrokeThickness, false, mode, out verts); if (_vertexBufferBorder != null) Modified: trunk/MP-II/skinengine/Controls/Visual/Styles/Style.cs =================================================================== --- trunk/MP-II/skinengine/Controls/Visual/Styles/Style.cs 2008-01-31 12:28:19 UTC (rev 17238) +++ trunk/MP-II/skinengine/Controls/Visual/Styles/Style.cs 2008-01-31 14:52:35 UTC (rev 17239) @@ -210,7 +210,13 @@ { if (setter.Property == "Template") { - FrameworkElement source = (FrameworkElement)setter.Value; + FrameworkElement source; + if (setter.Value is FrameworkTemplate) + { + source = (FrameworkElement)((FrameworkTemplate)setter.Value).LoadContent(); + } + else + source = (FrameworkElement)setter.Value; FrameworkElement element = (FrameworkElement)source.Clone(); foreach (Setter setter2 in _setters) Modified: trunk/MP-II/skinengine/Controls/Visual/TreeViewItem.cs =================================================================== --- trunk/MP-II/skinengine/Controls/Visual/TreeViewItem.cs 2008-01-31 12:28:19 UTC (rev 17238) +++ trunk/MP-II/skinengine/Controls/Visual/TreeViewItem.cs 2008-01-31 14:52:35 UTC (rev 17239) @@ -43,9 +43,6 @@ { public class TreeViewItem : HeaderedItemsControl { - private Property _headerProperty; - private Property _headerTemplateProperty; - private Property _headerTemplateSelectorProperty; public TreeViewItem() { Init(); @@ -55,15 +52,6 @@ : base(c) { Init(); - if (c.Header != null) - { - Header = (FrameworkElement)c.Header.Clone(); - Header.VisualParent = this; - } - if (c.HeaderTemplate != null) - HeaderTemplate = (DataTemplate)c.HeaderTemplate.Clone(); - if (c.HeaderTemplateSelector != null) - HeaderTemplateSelector = c.HeaderTemplateSelector; } public override object Clone() @@ -74,433 +62,10 @@ void Init() { - _headerProperty = new Property(null); - _headerTemplateProperty = new Property(null); - _headerTemplateSelectorProperty = new Property(null); - _headerProperty.Attach(new PropertyChangedHandler(OnContentChanged)); } - - void OnContentChanged(Property property) - { - Header.VisualParent = this; - } - - /// <summary> - /// Gets or sets the content property. - /// </summary> - /// <value>The content property.</value> - public Property ContentProperty - { - get - { - return _headerProperty; - } - set - { - _headerProperty = value; - } - } - - /// <summary> - /// Gets or sets the content. - /// </summary> - /// <value>The content.</value> - public FrameworkElement Header - { - get - { - return _headerProperty.GetValue() as FrameworkElement; - } - set - { - _headerProperty.SetValue(value); - } - } - - /// <summary> - /// Gets or sets the content template property. - /// </summary> - /// <value>The content template property.</value> - public Property ContentTemplateProperty - { - get - { - return _headerTemplateProperty; - } - set - { - _headerTemplateProperty = value; - } - } - - /// <summary> - /// Gets or sets the content template. - /// </summary> - /// <value>The content template.</value> - public DataTemplate HeaderTemplate - { - get - { - return _headerTemplateProperty.GetValue() as DataTemplate; - } - set - { - _headerTemplateProperty.SetValue(value); - } - } - - - /// <summary> - /// Gets or sets the content template selector property. - /// </summary> - /// <value>The content template selector property.</value> - public Property ContentTemplateSelectorProperty - { - get - { - return _headerTemplateSelectorProperty; - } - set - { - _headerTemplateSelectorProperty = value; - } - } - - /// <summary> - /// Gets or sets the content template selector. - /// </summary> - /// <value>The content template selector.</value> - public DataTemplateSelector HeaderTemplateSelector - { - get - { - return _headerTemplateSelectorProperty.GetValue() as DataTemplateSelector; - } - set - { - _headerTemplateSelectorProperty.SetValue(value); - } - } - - /// <summary> - /// measures the size in layout required for child elements and determines a size for the FrameworkElement-derived class. - /// </summary> - /// <param name="availableSize">The available size that this element can give to child elements.</param> - public override void Measure(SizeF availableSize) - { - base.Measure(_desiredSize); - if (Header != null) - { - Header.Measure(_desiredSize); - //_desiredSize = Header.DesiredSize; - } - } - - /// <summary> - /// Arranges the UI element - /// and positions it in the finalrect - /// </summary> - /// <param name="finalRect">The final size that the parent computes for the child element</param> - public override void Arrange(System.Drawing.RectangleF finalRect) - { - base.Arrange(finalRect); - if (Header != null) - { - System.Drawing.RectangleF layoutRect = new System.Drawing.RectangleF((float)ActualPosition.X, (float)ActualPosition.Y, (float)ActualWidth, (float)ActualHeight); - - layoutRect.X += (float)(Margin.X * SkinContext.Zoom.Width); - layoutRect.Y += (float)(Margin.Y * SkinContext.Zoom.Height); - layoutRect.Width -= (float)((Margin.X + Margin.W) * SkinContext.Zoom.Width); - layoutRect.Height -= (float)((Margin.Y + Margin.Z) * SkinContext.Zoom.Height); - - - PointF p = layoutRect.Location; - ArrangeChild(Header, ref p, layoutRect.Width, layoutRect.Height); - Header.Arrange(new RectangleF(p, Header.DesiredSize)); - } - } - protected void ArrangeChild(FrameworkElement child, ref System.Drawing.PointF p, double widthPerCell, double heightPerCell) - { - if (VisualParent == null) return; - - if (child.HorizontalAlignment == HorizontalAlignmentEnum.Center) - { - - p.X += (float)((widthPerCell - child.DesiredSize.Width) / 2); - } - else if (child.HorizontalAlignment == HorizontalAlignmentEnum.Right) - { - p.X += (float)(widthPerCell - child.DesiredSize.Width); - } - if (child.VerticalAlignment == VerticalAlignmentEnum.Center) - { - p.Y += (float)((heightPerCell - child.DesiredSize.Height) / 2); - } - else if (child.VerticalAlignment == VerticalAlignmentEnum.Bottom) - { - p.Y += (float)(heightPerCell - child.DesiredSize.Height); - } - } - /// <summary> - /// Renders the visual - /// </summary> public override void DoRender() { base.DoRender(); - if (Header != null) - { - ExtendedMatrix em = new ExtendedMatrix(this.Opacity); - SkinContext.AddTransform(em); - Header.DoRender(); - SkinContext.RemoveTransform(); - } - } - - /// <summary> - /// Called when [mouse move]. - /// </summary> - /// <param name="x">The x.</param> - /// <param name="y">The y.</param> - public override void OnMouseMove(float x, float y) - { - if (!IsFocusScope) return; - if (Header != null) - { - Header.OnMouseMove(x, y); - } - base.OnMouseMove(x, y); - } - /// <summary> - /// Animates any timelines for this uielement. - /// </summary> - public override void Animate() - { - base.Animate(); - if (Header != null) - { - Header.Animate(); - } - } - - - /// <summary> - /// Handles keypresses - /// </summary> - /// <param name="key">The key.</param> - public override void OnKeyPressed(ref MediaPortal.Core.InputManager.Key key) - { - if (Header != null) - { - Header.OnKeyPressed(ref key); - } - } - /// <summary> - /// Find the element with name - /// </summary> - /// <param name="name">The name.</param> - /// <returns></returns> - public override UIElement FindElement(string name) - { - if (Header != null) - { - UIElement found = Header.FindElement(name); - if (found != null) return found; - } - return base.FindElement(name); - } - /// <summary> - /// Finds the element of type t. - /// </summary> - /// <param name="t">The t.</param> - /// <returns></returns> - public override UIElement FindElementType(Type t) - { - if (Header != null) - { - UIElement found = Header.FindElementType(t); - if (found != null) return found; - } - return base.FindElementType(t); - } - - /// <summary> - /// Finds the the element which is a ItemsHost - /// </summary> - /// <returns></returns> - public override UIElement FindItemsHost() - { - if (Header != null) - { - UIElement found = Header.FindItemsHost(); - if (found != null) return found; - } - return base.FindItemsHost(); - } - - /// <summary> - /// Finds the focused item. - /// </summary> - /// <returns></returns> - public override UIElement FindFocusedItem() - { - if (HasFocus) return this; - - if (Header != null) - { - UIElement found = Header.FindFocusedItem(); - if (found != null) return found; - } - return null; - } - public override void Reset() - { - base.Reset(); - if (Header != null) - Header.Reset(); - } - - #region focus prediction - - /// <summary> - /// Predicts the next FrameworkElement which is position above this FrameworkElement - /// </summary> - /// <param name="focusedFrameworkElement">The current focused FrameworkElement.</param> - /// <param name="key">The key.</param> - /// <returns></returns> - public override FrameworkElement PredictFocusUp(FrameworkElement focusedFrameworkElement, ref Key key, bool strict) - { - return ((FrameworkElement)Header).PredictFocusUp(focusedFrameworkElement, ref key, strict); - } - - /// <summary> - /// Predicts the next FrameworkElement which is position below this FrameworkElement - /// </summary> - /// <param name="focusedFrameworkElement">The current focused FrameworkElement.</param> - /// <param name="key">The MediaPortal.Core.InputManager.Key.</param> - /// <returns></returns> - public override FrameworkElement PredictFocusDown(FrameworkElement focusedFrameworkElement, ref Key key, bool strict) - { - return ((FrameworkElement)Header).PredictFocusDown(focusedFrameworkElement, ref key, strict); - } - - /// <summary> - /// Predicts the next FrameworkElement which is position left of this FrameworkElement - /// </summary> - /// <param name="focusedFrameworkElement">The current focused FrameworkElement.</param> - /// <param name="key">The MediaPortal.Core.InputManager.Key.</param> - /// <returns></returns> - public override FrameworkElement PredictFocusLeft(FrameworkElement focusedFrameworkElement, ref Key key, bool strict) - { - return ((FrameworkElement)Header).PredictFocusLeft(focusedFrameworkElement, ref key, strict); - } - - /// <summary> - /// Predicts the next FrameworkElement which is position right of this FrameworkElement - /// </summary> - /// <param name="focusedFrameworkElement">The current focused FrameworkElement.</param> - /// <param name="key">The MediaPortal.Core.InputManager.Key.</param> - /// <returns></returns> - public override FrameworkElement PredictFocusRight(FrameworkElement focusedFrameworkElement, ref Key key, bool strict) - { - return ((FrameworkElement)Header).PredictFocusRight(focusedFrameworkElement, ref key, strict); - } - - - #endregion - - #region IList Members - - public int Add(object value) - { - Header = (FrameworkElement)value; - return 1; - } - - public void Clear() - { - } - - public bool Contains(object value) - { - throw new Exception("The method or operation is not implemented."); - } - - public int IndexOf(object value) - { - throw new Exception("The method or operation is not implemented."); - } - - public void Insert(int index, object value) - { - throw new Exception("The method or operation is not implemented."); - } - - public bool IsFixedSize - { - get { throw new Exception("The method or operation is not implemented."); } - } - - public bool IsReadOnly - { - get { throw new Exception("The method or operation is not implemented."); } - } - - public void Remove(object value) - { - throw new Exception("The method or operation is not implemented."); - } - - public void RemoveAt(int index) - { - throw new Exception("The method or operation is not implemented."); - } - - public object this[int index] - { - get - { - throw new Exception("The method or operation is not implemented."); - } - set - { - throw new Exception("The method or operation is not implemented."); - } - } - - #endregion - - #region ICollection Members - - public void CopyTo(Array array, int index) - { - throw new Exception("The method or operation is not implemented."); - } - - public int Count - { - get { throw new Exception("The method or operation is not implemented."); } - } - - public bool IsSynchronized - { - get { throw new Exception("The method or operation is not implemented."); } - } - - public object SyncRoot - { - get { throw new Exception("The method or operation is not implemented."); } - } - - #endregion - - #region IEnumerable Members - - public IEnumerator GetEnumerator() - { - throw new Exception("The method or operation is not implemented."); - } - - #endregion } } Modified: trunk/MP-II/skinengine/Controls/Visual/Treeview.cs =================================================================== --- trunk/MP-II/skinengine/Controls/Visual/Treeview.cs 2008-01-31 12:28:19 UTC (rev 17238) +++ trunk/MP-II/skinengine/Controls/Visual/Treeview.cs 2008-01-31 14:52:35 UTC (rev 17239) @@ -39,7 +39,6 @@ { public class TreeView : ItemsControl { - Property _templateProperty; Property _commandParameter; Command _command; Property _commands; @@ -57,8 +56,6 @@ { Init(); - if (c.Template != null) - Template = (UIElement)c.Template.Clone(); Command = c.Command; CommandParameter = c._commandParameter; SelectionChanged = c.SelectionChanged; @@ -66,11 +63,6 @@ ContextMenuCommand = c.ContextMenuCommand; ContextMenuCommandParameter = c.ContextMenuCommandParameter; Commands = (CommandGroup)c.Commands.Clone(); - if (c.Style != null) - { - Style = c.Style; - OnStyleChanged(StyleProperty); - } } public override object Clone() @@ -80,7 +72,6 @@ void Init() { - _templateProperty = new Property(null); _commandParameter = new Property(null); _commands = new Property(new CommandGroup()); _command = null; @@ -89,22 +80,7 @@ } - protected override void OnStyleChanged(Property property) - { - if (_templateProperty == null) - return; - Style.Set(this); - this.Template.VisualParent = this; - ArrayList l = new ArrayList(); - l.Add(new TreeViewItem()); - l.Add(new TreeViewItem()); - l.Add(new TreeViewItem()); - l.Add(new TreeViewItem()); - l.Add(new TreeViewItem()); - ItemsSource = l; - Invalidate(); - } - + #region events public Command SelectionChanged { get @@ -116,39 +92,10 @@ _selectionChanged = value; } } + #endregion - /// <summary> - /// Gets or sets the control template property. - /// </summary> - /// <value>The control template property.</value> - public Property TemplateProperty - { - get - { - return _templateProperty; - } - set - { - _templateProperty = value; - } - } + #region properties - /// <summary> - /// Gets or sets the control template. - /// </summary> - /// <value>The control template.</value> - public UIElement Template - { - get - { - return _templateProperty.GetValue() as UIElement; - } - set - { - _templateProperty.SetValue(value); - } - } - public Property CommandsProperty { get @@ -269,161 +216,10 @@ _contextMenuCommandParameterProperty.SetValue(value); } } + #endregion - + #region input handling /// <summary> - /// measures the size in layout required for child elements and determines a size for the FrameworkElement-derived class. - /// </summary> - /// <param name="availableSize">The available size that this element can give to child elements.</param> - public override void Measure(System.Drawing.SizeF availableSize) - { - float marginWidth = (float)((Margin.X + Margin.W) * SkinContext.Zoom.Width); - float marginHeight = (float)((Margin.Y + Margin.Z) * SkinContext.Zoom.Height); - _desiredSize = new System.Drawing.SizeF((float)Width * SkinContext.Zoom.Width, (float)Height * SkinContext.Zoom.Height); - if (Width <= 0) - _desiredSize.Width = (float)(availableSize.Width - marginWidth); - if (Height <= 0) - _desiredSize.Height = (float)(availableSize.Height - marginHeight); - - if (_desiredSize.Width == 0) _desiredSize.Width = 200; - if (_desiredSize.Height == 0) _desiredSize.Height = 200; - if (Width > 0) _desiredSize.Width = (float)Width * SkinContext.Zoom.Width; - if (Height > 0) _desiredSize.Height = (float)Height * SkinContext.Zoom.Height; - if (LayoutTransform != null) - { - ExtendedMatrix m = new ExtendedMatrix(); - LayoutTransform.GetTransform(out m); - SkinContext.AddLayoutTransform(m); - } - SkinContext.FinalLayoutTransform.TransformSize(ref _desiredSize); - - if (LayoutTransform != null) - { - SkinContext.RemoveLayoutTransform(); - } - if (Template != null) - { - Template.Measure(_desiredSize); - } - _desiredSize.Width += marginWidth; - _desiredSize.Height += marginHeight; - _originalSize = _desiredSize; - - - _availableSize = new System.Drawing.SizeF(availableSize.Width, availableSize.Height); - } - - /// <summary> - /// Arranges the UI element - /// and positions it in the finalrect - /// </summary> - /// <param name="finalRect">The final size that the parent computes for the child element</param> - public override void Arrange(System.Drawing.RectangleF finalRect) - { - _finalRect = new System.Drawing.RectangleF(finalRect.Location, finalRect.Size); - System.Drawing.RectangleF layoutRect = new System.Drawing.RectangleF(finalRect.X, finalRect.Y, finalRect.Width, finalRect.Height); - - layoutRect.X += (float)(Margin.X * SkinContext.Zoom.Width); - layoutRect.Y += (float)(Margin.Y * SkinContext.Zoom.Height); - layoutRect.Width -= (float)((Margin.X + Margin.W) * SkinContext.Zoom.Width); - layoutRect.Height -= (float)((Margin.Y + Margin.Z) * SkinContext.Zoom.Height); - - ActualPosition = new SlimDX.Vector3(layoutRect.Location.X, layoutRect.Location.Y, 1.0f); ; - ActualWidth = layoutRect.Width; - ActualHeight = layoutRect.Height; - if (LayoutTransform != null) - { - ExtendedMatrix m = new ExtendedMatrix(); - LayoutTransform.GetTransform(out m); - SkinContext.AddLayoutTransform(m); - } - if (LayoutTransform != null) - { - SkinContext.RemoveLayoutTransform(); - } - _finalLayoutTransform = SkinContext.FinalLayoutTransform; - IsArrangeValid = true; - InitializeBindings(); - InitializeTriggers(); - if (Template != null) - { - layoutRect = new System.Drawing.RectangleF((float)ActualPosition.X, (float)ActualPosition.Y, (float)ActualWidth, (float)ActualHeight); - - layoutRect.X += (float)(Margin.X * SkinContext.Zoom.Width); - layoutRect.Y += (float)(Margin.Y * SkinContext.Zoom.Height); - layoutRect.Width -= (float)((Margin.X + Margin.W) * SkinContext.Zoom.Width); - layoutRect.Height -= (float)((Margin.Y + Margin.Z) * SkinContext.Zoom.Height); - - - System.Drawing.PointF p = layoutRect.Location; - ArrangeChild((FrameworkElement)Template, ref p, layoutRect.Width, layoutRect.Height); - Template.Arrange(new System.Drawing.RectangleF(p, Template.DesiredSize)); - Template.Arrange(layoutRect); - } - - _isLayoutInvalid = false; - } - protected void ArrangeChild(FrameworkElement child, ref System.Drawing.PointF p, double widthPerCell, double heightPerCell) - { - if (VisualParent == null) return; - - if (child.HorizontalAlignment == HorizontalAlignmentEnum.Center) - { - - p.X += (float)((widthPerCell - child.DesiredSize.Width) / 2); - } - else if (child.HorizontalAlignment == HorizontalAlignmentEnum.Right) - { - p.X += (float)(widthPerCell - child.DesiredSize.Width); - } - if (child.VerticalAlignment == VerticalAlignmentEnum.Center) - { - p.Y += (float)((heightPerCell - child.DesiredSize.Height) / 2); - } - else if (child.VerticalAlignment == VerticalAlignmentEnum.Bottom) - { - p.Y += (float)(heightPerCell - child.DesiredSize.Height); - } - } - - /// <summary> - /// Renders the visual - /// </summary> - public override void DoRender() - { - if (DoUpdateItems()) - { - Invalidate(); - } - base.DoRender(); - if (Template != null) - { - ExtendedMatrix m = new ExtendedMatrix(this.Opacity); - SkinContext.AddTransform(m); - Template.DoRender(); - SkinContext.RemoveTransform(); - } - } - public override void Reset() - { - base.Reset(); - if (Template != null) - Template.Reset(); - } - - /// <summary> - /// Animates any timelines for this uielement. - /// </summary> - public override void Animate() - { - base.Animate(); - if (Template != null) - { - Template.Animate(); - } - } - - /// <summary> /// Called when [mouse move]. /// </summary> /// <param name="x">The x.</param> @@ -431,10 +227,6 @@ public override void OnMouseMove(float x, float y) { base.OnMouseMove(x, y); - if (Template != null) - { - Template.OnMouseMove(x, y); - } UpdateCurrentItem(); } @@ -444,14 +236,11 @@ /// <param name="key">The key.</param> public override void OnKeyPressed(ref Key key) { + UpdateCurrentItem(); bool executeCmd = (CurrentItem != null && key == MediaPortal.Core.InputManager.Key.Enter); bool executeContextCmd = (CurrentItem != null && key == MediaPortal.Core.InputManager.Key.ContextMenu); base.OnKeyPressed(ref key); - if (Template != null) - { - Template.OnKeyPressed(ref key); - } - UpdateCurrentItem(); + if (executeCmd) { if (Command != null) @@ -475,96 +264,24 @@ /// </summary> void UpdateCurrentItem() { - if (Template != null) + UIElement element = FindFocusedItem(); + if (element == null) { - UIElement element = Template.FindFocusedItem(); - if (element == null) - { - CurrentItem = null; - } - else - { - while (element.Context == null && element.VisualParent != null) - element = element.VisualParent; - CurrentItem = element.Context; - } - if (SelectionChanged != null) - { - SelectionChanged.Execute(CurrentItem, true); - } + CurrentItem = null; } - } - - public override bool HasFocus - { - get + else { - if (Template != null) - { - UIElement element = Template.FindFocusedItem(); - return (element != null); - } - return base.HasFocus; + while (element.Context == null && element.VisualParent != null) + element = element.VisualParent; + CurrentItem = element.Context; } - set + if (SelectionChanged != null) { - /* - if (ItemsPanel.Children.Count > 0) - { - ItemsPanel.Children[0].OnMouseMove((float)ItemsPanel.Children[0].ActualPosition.X, (float)ItemsPanel.Children[0].ActualPosition.Y); - return; - }*/ - base.HasFocus = value; + SelectionChanged.Execute(CurrentItem, true); } - } - #region focus prediction - - /// <summary> - /// Predicts the next FrameworkElement which is position above this FrameworkElement - /// </summary> - /// <param name="focusedFrameworkElement">The current focused FrameworkElement.</param> - /// <param name="key">The key.</param> - /// <returns></returns> - public override FrameworkElement PredictFocusUp(FrameworkElement focusedFrameworkElement, ref Key key, bool strict) - { - return ((FrameworkElement)Template).PredictFocusUp(focusedFrameworkElement, ref key, strict); } - /// <summary> - /// Predicts the next FrameworkElement which is position below this FrameworkElement - /// </summary> - /// <param name="focusedFrameworkElement">The current focused FrameworkElement.</param> - /// <param name="key">The MediaPortal.Core.InputManager.Key.</param> - /// <returns></returns> - public override FrameworkElement PredictFocusDown(FrameworkElement focusedFrameworkElement, ref Key key, bool strict) - { - return ((FrameworkElement)Template).PredictFocusDown(focusedFrameworkElement, ref key, strict); - } - - /// <summary> - /// Predicts the next FrameworkElement which is position left of this FrameworkElement - /// </summary> - /// <param name="focusedFrameworkElement">The current focused FrameworkElement.</param> - /// <param name="key">The MediaPortal.Core.InputManager.Key.</param> - /// <returns></returns> - public override FrameworkElement PredictFocusLeft(FrameworkElement focusedFrameworkElement, ref Key key, bool strict) - { - return ((FrameworkElement)Template).PredictFocusLeft(focusedFrameworkElement, ref key, strict); - } - - /// <summary> - /// Predicts the next FrameworkElement which is position right of this FrameworkElement - /// </summary> - /// <param name="focusedFrameworkElement">The current focused FrameworkElement.</param> - /// <param name="key">The MediaPortal.Core.InputManager.Key.</param> - /// <returns></returns> - public override FrameworkElement PredictFocusRight(FrameworkElement focusedFrameworkElement, ref Key key, bool strict) - { - return ((FrameworkElement)Template).PredictFocusRight(focusedFrameworkElement, ref key, strict); - } - - #endregion } } Modified: trunk/MP-II/skinengine/WindowManagement/WindowManager.cs =================================================================== --- trunk/MP-II/skinengine/WindowManagement/WindowManager.cs 2008-01-31 12:28:19 UTC (rev 17238) +++ trunk/MP-II/skinengine/WindowManagement/WindowManager.cs 2008-01-31 14:52:35 UTC (rev 17239) @@ -121,6 +121,7 @@ SkinContext.ThemeName = settings.Theme; #if TESTXAML ShowWindow("homevista"); + //ShowWindow("sharesAdd"); #else PrepareWindow("homevista"); Modified: trunk/MP-II/skinengine/skinengine.csproj =================================================================== --- trunk/MP-II/skinengine/skinengine.csproj 2008-01-31 12:28:19 UTC (rev 17238) +++ trunk/MP-II/skinengine/skinengine.csproj 2008-01-31 14:52:35 UTC (rev 17239) @@ -197,6 +197,7 @@ <Compile Include="Controls\Visual\KeyBinding.cs" /> <Compile Include="Controls\Visual\Label.cs" /> <Compile Include="Controls\Visual\ListView.cs" /> + <Compile Include="Controls\Visual\ListViewItem.cs" /> <Compile Include="Controls\Visual\ProgressBar.cs" /> <Compile Include="Controls\Visual\ResourceDictionary.cs" /> <Compile Include="Controls\Visual\ScrollContentPresenter.cs" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |