Changeset 11935


Ignore:
Timestamp:
08/12/11 16:32:33 (8 years ago)
Author:
bayral
Message:

root category handled

Location:
extensions/PiwigoLib
Files:
16 edited

Legend:

Unmodified
Added
Removed
  • extensions/PiwigoLib/PiwigoLib/Service/PwgCategoriesService.cs

    r11850 r11935  
    4242                else 
    4343                { 
    44                     returnValue = ConvertProxyResponseToDTO(response); 
     44                    returnValue = ConvertProxyResponseToDTO(response, CatgeroryId); 
    4545                } 
    4646            } 
     
    7979                else 
    8080                { 
    81                     returnValue = ConvertProxyResponseToDTO(response); 
     81                    returnValue = ConvertProxyResponseToDTO(response, null); 
    8282                } 
    8383            } 
     
    346346        /// <param name="response"></param> 
    347347        /// <param name="session"></param> 
    348         internal static List<PwgCategory> ConvertProxyResponseToDTO(PwgCategoriesProxyResponse response) 
     348        internal static List<PwgCategory> ConvertProxyResponseToDTO(PwgCategoriesProxyResponse response, Int32? CatgeroryId) 
    349349        { 
    350350            List<PwgCategory> returnValue = new List<PwgCategory>(); 
     
    352352            foreach (PwgCategoryProxyResponse respCat in response.Categories) 
    353353            { 
    354                 returnValue.Add(ConvertProxyResponseToDTO(respCat)); 
     354                if ((!CatgeroryId.HasValue) || (CatgeroryId.Value != respCat.Id)) 
     355                { 
     356                    returnValue.Add(ConvertProxyResponseToDTO(respCat)); 
     357                } 
    355358            } 
    356359 
  • extensions/PiwigoLib/PiwigoWpf/App.xaml

    r11922 r11935  
    88        <ObjectDataProvider x:Name="ImagesODP" x:Key="Images" ObjectType="{x:Type piwigo:PwgImageListWPF}"/> <!--IsAsynchronous="True"--> 
    99        <ObjectDataProvider x:Name="SessionODP" x:Key="Session" ObjectType="{x:Type piwigo:PwgSessionWPF}" /> 
    10         <ObjectDataProvider x:Name="CategoriesODP" x:Key="Categories" ObjectType="{x:Type piwigo:PwgCategoryListWPF}"/> <!--IsAsynchronous="True"--> 
     10        <ObjectDataProvider x:Name="CategoriesODP" x:Key="Categories" ObjectType="{x:Type piwigo:PwgRootCategoryListWPF}"/> <!--IsAsynchronous="True"--> 
    1111        <!--IsAsynchronous="True"--> 
    1212        <ResourceDictionary  x:Key="VisualStyleApp" Source="VisualStyleApp.xaml"/> 
  • extensions/PiwigoLib/PiwigoWpf/App.xaml.cs

    r11911 r11935  
    33using Com.Piwigo.Lib.IService; 
    44using Com.Piwigo.Wpf.DTO; 
     5using Com.Piwigo.Wpf.DTO.Helper; 
    56 
    67namespace Com.Piwigo.Wpf 
     
    1516        { 
    1617 
     18            PwgModelManager.WPF_SynchronizationContext = System.Threading.SynchronizationContext.Current; 
     19 
    1720            PwgServiceProvider.Instance.PwgSetupService.Setup( "Com.Piwigo.Wpf.PiwigoWPF", null, null); 
    1821 
    1922             // Model object was created in the app.xaml, so we have to link to them 
    2023            PwgModelManager.Instance.Session = (PwgSessionWPF)(this.Resources["Session"] as ObjectDataProvider).Data; 
    21             PwgModelManager.Instance.CategoryList = (PwgCategoryListWPF)(this.Resources["Categories"] as ObjectDataProvider).Data; 
     24            PwgModelManager.Instance.CategoryList = (PwgRootCategoryListWPF)(this.Resources["Categories"] as ObjectDataProvider).Data; 
    2225            PwgModelManager.Instance.ImageList = (PwgImageListWPF)(this.Resources["Images"] as ObjectDataProvider).Data; 
     26            //PwgCategoryListWPFHelper.InitRootCategory(); 
    2327 
    2428            PwgModelManager.Instance.Session.ServeurName = global::Com.Piwigo.Wpf.Properties.Settings.Default.ServerNameData; 
  • extensions/PiwigoLib/PiwigoWpf/Command/PwgCmdConnect.cs

    r11922 r11935  
    3636                PwgSessionWPFHelper.AddPwgSessionInfoToPwgSessionWPF(sess, ref sesWPF); 
    3737 
    38                 List<PwgCategory> lstCat = PwgServiceProvider.Instance.PwgCategoriesService.GetListOfCategory(null, false, null); //(PwgModelManager.Instance.Session.Status == PwgSessionStatusEnum.Guest) 
    39                 PwgCategoryListWPF lstCatWPF = PwgModelManager.Instance.CategoryList; 
     38                PwgCategoryListWPFHelper.InitRootCategory(); 
    4039 
    41                 PwgCategoryListWPFHelper.ConvertPwgCategoryListToPwgCategoryListWPF(lstCat, ref lstCatWPF); 
     40                List<PwgCategory> lstCat = PwgServiceProvider.Instance.PwgCategoriesService.GetListOfCategory(null, null, null); //(PwgModelManager.Instance.Session.Status == PwgSessionStatusEnum.Guest) 
     41                PwgRootCategoryWPF aRootCatWPF = PwgModelManager.Instance.RootCategoryList; 
     42 
     43                PwgCategoryListWPFHelper.ConvertPwgCategoryListToPwgRootCategoryWPF(lstCat, ref aRootCatWPF); 
     44                aRootCatWPF.IsExpanded = true; 
    4245 
    4346                SendUiInfo("Setting up cache data ..."); 
  • extensions/PiwigoLib/PiwigoWpf/Command/PwgCmdDisconnect.cs

    r11922 r11935  
    3232                } 
    3333 
     34                if ((PwgModelManager.Instance.CategoryList != null) 
     35                    && (PwgModelManager.Instance.RootCategoryList != null)) 
     36                { 
     37                    PwgModelManager.Instance.RootCategoryList.Childrens.Clear(); 
     38                } 
     39 
    3440                if (PwgModelManager.Instance.CategoryList != null) 
    3541                { 
  • extensions/PiwigoLib/PiwigoWpf/Command/PwgCmdGetImageforCategory.cs

    r11922 r11935  
    2828                    PwgImageListWPF lstImgWPF = PwgModelManager.Instance.ImageList; 
    2929                    SendUiInfo("Removing image..."); 
     30                    PwgModelManager.Instance.ImageShown = null; 
    3031                    if (lstImgWPF != null) 
    3132                    { 
  • extensions/PiwigoLib/PiwigoWpf/Command/PwgCmdProvider.cs

    r11922 r11935  
    2424                    objICom = PwgCmdGetImageforCategory; 
    2525                    break; 
     26                case "PwgCmdGetSubCategorieforCategory": 
     27                    objICom = PwgCmdGetSubCategorieforCategory; 
     28                    break; 
    2629                default: 
    27                     objICom = null; 
    28                     break; 
     30                    throw new ArgumentException("AsyncCommand GetByType : Command Type unknow.", "Type"); 
    2931            } 
    3032 
     
    7072            } 
    7173        } 
     74 
     75        public static AsyncCommand _pwgCmdGetSubCategorieforCategory; 
     76        public static AsyncCommand PwgCmdGetSubCategorieforCategory 
     77        { 
     78            get 
     79            { 
     80                if (_pwgCmdGetSubCategorieforCategory == null) 
     81                { 
     82                    _pwgCmdGetSubCategorieforCategory = new PwgCmdGetSubCategorieforCategory(); 
     83                } 
     84                return _pwgCmdGetSubCategorieforCategory; 
     85            } 
     86        } 
     87 
    7288    } 
    7389} 
  • extensions/PiwigoLib/PiwigoWpf/DTO/AsyncObservableCollection.cs

    r11911 r11935  
    88{ 
    99    public class AsyncObservableCollection<T> : ObservableCollection<T> 
    10     { 
    11         private SynchronizationContext _synchronizationContext = SynchronizationContext.Current; 
     10    {         
    1211 
    1312        public AsyncObservableCollection() 
     
    2221        protected override void OnCollectionChanged(NotifyCollectionChangedEventArgs e) 
    2322        { 
    24             if (SynchronizationContext.Current == _synchronizationContext) 
     23            if (SynchronizationContext.Current == PwgModelManager.WPF_SynchronizationContext) 
    2524            { 
    2625                // Execute the CollectionChanged event on the current thread 
     
    3029            { 
    3130                // Send the CollectionChanged event on the creator thread 
    32                 _synchronizationContext.Send(RaiseCollectionChanged, e); 
     31                PwgModelManager.WPF_SynchronizationContext.Send(RaiseCollectionChanged, e); 
    3332            } 
    3433        } 
     
    4241        protected override void OnPropertyChanged(PropertyChangedEventArgs e) 
    4342        { 
    44             if (SynchronizationContext.Current == _synchronizationContext) 
     43            if (SynchronizationContext.Current == PwgModelManager.WPF_SynchronizationContext) 
    4544            { 
    4645                // Execute the PropertyChanged event on the current thread 
     
    4948            else 
    5049            { 
    51                 // Post the PropertyChanged event on the creator thread 
    52                 _synchronizationContext.Post(RaisePropertyChanged, e); 
     50                // Send the PropertyChanged event on the creator thread 
     51                PwgModelManager.WPF_SynchronizationContext.Send(RaisePropertyChanged, e); 
    5352            } 
    5453        } 
  • extensions/PiwigoLib/PiwigoWpf/DTO/Helper/PwgCategoryListWPFHelper.cs

    r11911 r11935  
    3434                    aPwgCategoryListWPF = new PwgCategoryListWPF(); 
    3535                } 
     36 
    3637                foreach (PwgCategory pwgCat in aPwgCategoryList) 
    3738                { 
     
    4041            } 
    4142        } 
     43 
     44        public static void ConvertPwgCategoryListToPwgRootCategoryWPF(List<PwgCategory> aPwgCategoryList, ref PwgRootCategoryWPF aPwgRootCategory) 
     45        { 
     46            if (aPwgCategoryList != null) 
     47            { 
     48                if ((aPwgRootCategory == null) 
     49                    || (aPwgRootCategory.Childrens == null)) 
     50                { 
     51                    throw new SystemException("The PwgCategoryListWPFHelper.InitRootCategory must be called before calling this."); 
     52                } 
     53 
     54                if (aPwgRootCategory.Childrens == null) 
     55                { 
     56                    aPwgRootCategory.Childrens = new PwgCategoryListWPF(); 
     57                } 
     58 
     59                PwgCategoryListWPF aPwgCategoryListWPF = aPwgRootCategory.Childrens; 
     60                foreach (PwgCategory pwgCat in aPwgCategoryList) 
     61                { 
     62                    AddPwgCategoryToList(pwgCat, ref aPwgCategoryListWPF); 
     63                } 
     64            } 
     65        } 
     66 
     67        public static void InitRootCategory () 
     68          { 
     69            if (PwgModelManager.Instance.CategoryList == null) 
     70            { 
     71                throw new SystemException("The PwgModelManager.Instance.CategoryList must be initialized from presentation tread before calling this."); 
     72            } 
     73            if (PwgModelManager.Instance.CategoryList.Count != 1) 
     74            { 
     75                PwgModelManager.Instance.CategoryList.Clear(); 
     76                PwgRootCategoryWPF aRootCategory = new PwgRootCategoryWPF(); 
     77                aRootCategory.Name = "Root"; 
     78                aRootCategory.Childrens = new PwgCategoryListWPF(); 
     79                PwgModelManager.Instance.CategoryList.Add(aRootCategory); 
     80                PwgModelManager.Instance.RootCategoryList = aRootCategory; 
     81            } 
     82 
     83            if (PwgModelManager.Instance.RootCategoryList == null) 
     84            { 
     85                PwgModelManager.Instance.RootCategoryList = PwgModelManager.Instance.CategoryList.ElementAtOrDefault(0); 
     86            } 
     87 
     88          } 
    4289    } 
    4390} 
  • extensions/PiwigoLib/PiwigoWpf/DTO/PwgCategoryListWPF.cs

    r11911 r11935  
    44using System.Text; 
    55using System.Collections.ObjectModel; 
     6using System.ComponentModel; 
    67 
    78namespace Com.Piwigo.Wpf.DTO 
    89{ 
    910    public class PwgCategoryListWPF : AsyncObservableCollection<PwgCategoryWPF>  
    10     { 
    11     } 
     11    {} 
     12 
     13    public class PwgRootCategoryListWPF : AsyncObservableCollection<PwgRootCategoryWPF> 
     14    { } 
     15 
    1216} 
  • extensions/PiwigoLib/PiwigoWpf/DTO/PwgCategoryWPF.cs

    r11926 r11935  
    99namespace Com.Piwigo.Wpf.DTO 
    1010{ 
    11  
    12     public class PwgCategoryWPF : INotifyPropertyChanged 
     11    public abstract class PwgTreeCategoryWPF : INotifyPropertyChanged 
    1312    { 
    14         private Int32 _id; 
    15         public Int32 Id 
     13        public abstract Int32 Id 
    1614        { 
    17             set { _id = value; OnPropertyChanged("Id"); } 
    18             get { return _id; } 
    19         } 
    20  
    21         private ObservableCollection<Int32> _upperCategoriesId; 
    22         public  ObservableCollection<Int32> UpperCategoriesId 
    23         { 
    24             set { _upperCategoriesId = value; OnPropertyChanged("UpperCategoriesId"); } 
    25             get { return _upperCategoriesId; } 
     15            get; 
     16            set; 
    2617        } 
    2718 
     
    3324        } 
    3425 
    35         private Uri _url; 
    36         public Uri Url 
    37         { 
    38             set { _url = value; OnPropertyChanged("Url"); } 
    39             get { return _url; } 
    40         } 
    41  
    42         private Int64 _imagesCount; 
    43         public Int64 ImagesCount 
    44         { 
    45             set { _imagesCount = value; OnPropertyChanged("ImagesCount"); } 
    46             get { return _imagesCount; } 
    47         } 
    48  
    49         private Int64 _deepImagesCount; 
    50         public Int64 DeepImagesCount 
    51         { 
    52             set { _deepImagesCount = value; OnPropertyChanged("DeepImagesCount"); } 
    53             get { return _deepImagesCount; } 
    54         } 
    55  
    56         private Int64 _subCategoriesCount; 
    57         public Int64 SubCategoriesCount 
    58         { 
    59             set { _subCategoriesCount = value; OnPropertyChanged("SubCategoriesCount"); } 
    60             get { return _subCategoriesCount; } 
    61         } 
    62  
    63         private DateTime _lastDate; 
    64         public  DateTime LastDate 
    65         { 
    66             set { _lastDate = value; OnPropertyChanged("LastDate"); } 
    67             get { return _lastDate; } 
    68         } 
    69  
    70  
    7126        public event PropertyChangedEventHandler PropertyChanged; 
    72         private void OnPropertyChanged(String info) 
     27        protected void OnPropertyChanged(String info) 
    7328        { 
    7429            if (PropertyChanged != null) 
    7530                PropertyChanged(this, new PropertyChangedEventArgs(info)); 
    7631        } 
    77  
    78         #region Presentation Members 
    7932 
    8033        #region IsExpanded 
     
    12679        #endregion // IsSelected 
    12780 
    128         #region Parent 
     81        #region Parents - Childs 
    12982        private PwgCategoryWPF _parent = null; 
    130         public PwgCategoryWPF Parent 
     83        public abstract PwgCategoryWPF Parent 
    13184        { 
    132             get { return _parent; } 
     85            get; 
     86            set; 
     87        } 
     88 
     89        private PwgCategoryListWPF _childrens = null; 
     90        public PwgCategoryListWPF Childrens 
     91        { 
     92            get { return _childrens; } 
     93            set { _childrens = value; this.OnPropertyChanged("Childrens"); } 
    13394        } 
    13495 
    13596        #endregion // Parent 
     97    } 
    13698 
    137         #endregion // Presentation Members         
     99    public class PwgRootCategoryWPF : PwgTreeCategoryWPF 
     100    { 
     101        private Int32 _id = Com.Piwigo.Lib.DTO.PwgCategory.RootCategoryId; 
     102        public override Int32 Id 
     103        { 
     104            set { throw new SystemException("Couldn't not set the Id for Root category"); } 
     105            get { return _id; } 
     106        } 
     107  
     108        private PwgCategoryWPF _parent = null; 
     109        public override PwgCategoryWPF Parent 
     110        { 
     111            get { return _parent; } 
     112            set { throw new SystemException("Couldn't not set Parent for Root category"); } 
     113        } 
     114    } 
     115 
     116    public class PwgCategoryWPF : PwgTreeCategoryWPF 
     117    { 
     118        private Int32 _id; 
     119        public override Int32 Id 
     120        { 
     121            set { _id = value; OnPropertyChanged("Id"); } 
     122            get { return _id; } 
     123        } 
     124 
     125        private ObservableCollection<Int32> _upperCategoriesId; 
     126        public  ObservableCollection<Int32> UpperCategoriesId 
     127        { 
     128            set { _upperCategoriesId = value; OnPropertyChanged("UpperCategoriesId"); } 
     129            get { return _upperCategoriesId; } 
     130        } 
     131 
     132        private Uri _url; 
     133        public Uri Url 
     134        { 
     135            set { _url = value; OnPropertyChanged("Url"); } 
     136            get { return _url; } 
     137        } 
     138 
     139        private Int64 _imagesCount; 
     140        public Int64 ImagesCount 
     141        { 
     142            set { _imagesCount = value; OnPropertyChanged("ImagesCount"); } 
     143            get { return _imagesCount; } 
     144        } 
     145 
     146        private Int64 _deepImagesCount; 
     147        public Int64 DeepImagesCount 
     148        { 
     149            set { _deepImagesCount = value; OnPropertyChanged("DeepImagesCount"); } 
     150            get { return _deepImagesCount; } 
     151        } 
     152 
     153        private Int64 _subCategoriesCount; 
     154        public Int64 SubCategoriesCount 
     155        { 
     156            set { _subCategoriesCount = value; OnPropertyChanged("SubCategoriesCount"); } 
     157            get { return _subCategoriesCount; } 
     158        } 
     159 
     160        private DateTime _lastDate; 
     161        public  DateTime LastDate 
     162        { 
     163            set { _lastDate = value; OnPropertyChanged("LastDate"); } 
     164            get { return _lastDate; } 
     165        } 
     166 
     167        #region Presentation Members 
     168 
     169        #region Parents - Childs 
     170        private PwgCategoryWPF _parent = null; 
     171        public override PwgCategoryWPF Parent 
     172        { 
     173            set { _parent = value; OnPropertyChanged("Parent"); } 
     174            get { return _parent; } 
     175        } 
     176        #endregion // Parents - Childs 
     177        #endregion // Presentation Members 
    138178    } 
    139179} 
  • extensions/PiwigoLib/PiwigoWpf/DTO/PwgModelManager.cs

    r11926 r11935  
    99    public sealed class PwgModelManager 
    1010    { 
     11        private static System.Threading.SynchronizationContext _synchronizationContext = System.Threading.SynchronizationContext.Current; 
     12 
     13        public static System.Threading.SynchronizationContext WPF_SynchronizationContext 
     14        { 
     15            get { 
     16                return _synchronizationContext; 
     17            } 
     18            set { 
     19                _synchronizationContext = value; 
     20            } 
     21        } 
     22 
    1123        static readonly PwgModelManagerBase _instance = new PwgModelManagerBase(); 
    1224 
     
    5567            } 
    5668 
    57             private PwgCategoryListWPF _categoryList; 
    58             public PwgCategoryListWPF CategoryList 
     69            private PwgRootCategoryListWPF _categoryList = new PwgRootCategoryListWPF(); 
     70            public PwgRootCategoryListWPF CategoryList 
    5971            { 
    6072                set { _categoryList = value; OnPropertyChanged("CategoryList"); } 
    6173                get { return _categoryList; } 
    6274            } 
     75 
     76            private PwgRootCategoryWPF _rootCategoryList; 
     77            public PwgRootCategoryWPF RootCategoryList 
     78            { 
     79                set { _rootCategoryList = value; OnPropertyChanged("RootCategoryList"); } 
     80                get { return _rootCategoryList; } 
     81            } 
     82 
    6383 
    6484            private PwgImageWPF _imageShown; 
  • extensions/PiwigoLib/PiwigoWpf/Helper/AppHelper.cs

    r11922 r11935  
    5555        { 
    5656            AsyncCommand cmd = PwgCmdProvider.GetByType<T>(); 
    57             if (cmd.CanExecute(parameter)) 
     57            if (cmd != null) 
    5858            { 
    59                 cmd.Execute(parameter); 
     59                if (cmd.CanExecute(parameter)) 
     60                { 
     61                    cmd.Execute(parameter); 
     62                } 
    6063            } 
    6164        } 
  • extensions/PiwigoLib/PiwigoWpf/MainWindow.xaml

    r11926 r11935  
    99        xmlns:pwghlp="clr-namespace:Com.Piwigo.Wpf.Helper" 
    1010        Title="PiwigoWpf" 
     11        Name="_this" 
    1112        WindowState="Maximized" 
    12         MinHeight="600" MinWidth="800"> 
     13        MinHeight="600" MinWidth="800" Background="AliceBlue"> 
    1314    <Window.Resources> 
    1415        <pwghlp:AdvBooltoVisibilityConverter x:Key="AdvBooltoVisibilityConverter"  Collapse="False" Reverse="False" /> 
    1516        <pwghlp:AdvBooltoVisibilityConverter x:Key="AdvBooltoVisibilityConverterReversal"  Collapse="False" Reverse="True" /> 
     17        <Style TargetType="GridSplitter"> 
     18            <Setter Property="Background"  Value="CadetBlue"/> 
     19            <Setter Property="Margin"  Value="0"/> 
     20            <Setter Property="HorizontalAlignment"  Value="Stretch"/> 
     21            <Setter Property="VerticalAlignment"  Value="Stretch"/> 
     22            <Setter Property="ShowsPreview"  Value="True" /> 
     23            <Setter Property="ResizeBehavior"  Value="PreviousAndNext"/> 
     24        </Style> 
     25        <ControlTemplate x:Key="loadingAnimation"> 
     26            <ControlTemplate.Triggers> 
     27                <Trigger Property="Visibility" Value="Visible"> 
     28                    <Trigger.EnterActions> 
     29                        <BeginStoryboard Name="animation"> 
     30                            <Storyboard Storyboard.DesiredFrameRate="25"> 
     31                                <DoubleAnimation From="0" To="359" Duration="0:0:5" RepeatBehavior="Forever" 
     32                                                 Storyboard.TargetName="angle" Storyboard.TargetProperty="Angle"/> 
     33                            </Storyboard> 
     34                        </BeginStoryboard> 
     35                    </Trigger.EnterActions> 
     36                    <Trigger.ExitActions> 
     37                        <StopStoryboard BeginStoryboardName="animation"/> 
     38                    </Trigger.ExitActions> 
     39                </Trigger> 
     40            </ControlTemplate.Triggers> 
     41            <Image Name="content" Opacity="0.4"> 
     42                <Image.Source> 
     43                    <DrawingImage> 
     44                        <DrawingImage.Drawing> 
     45                            <DrawingGroup> 
     46                                <GeometryDrawing Brush="Transparent"> 
     47                                    <GeometryDrawing.Geometry> 
     48                                        <RectangleGeometry Rect="0,0,1,1"/> 
     49                                    </GeometryDrawing.Geometry> 
     50                                </GeometryDrawing> 
     51                                <DrawingGroup> 
     52                                    <DrawingGroup.Transform> 
     53                                        <RotateTransform x:Name="angle" Angle="0" CenterX="0.5" CenterY="0.5"/> 
     54                                    </DrawingGroup.Transform> 
     55                                    <GeometryDrawing> 
     56                                        <GeometryDrawing.Pen> 
     57                                            <Pen Brush="Aquamarine" Thickness="0.08"/> 
     58                                        </GeometryDrawing.Pen> 
     59                                        <GeometryDrawing.Geometry> 
     60                                            <PathGeometry> 
     61                                                <PathFigure StartPoint="0.9,0.5"> 
     62                                                    <ArcSegment Point="0.5,0.1" RotationAngle="90" SweepDirection="Clockwise" IsLargeArc="True" Size="0.4,0.4"/> 
     63                                                </PathFigure> 
     64                                            </PathGeometry> 
     65                                        </GeometryDrawing.Geometry> 
     66                                    </GeometryDrawing> 
     67                                    <GeometryDrawing Brush="Aquamarine"> 
     68                                        <GeometryDrawing.Geometry> 
     69                                            <PathGeometry> 
     70                                                <PathFigure StartPoint="0.5,0"> 
     71                                                    <LineSegment Point="0.7,0.1" /> 
     72                                                    <LineSegment Point="0.5,0.2" /> 
     73                                                </PathFigure> 
     74                                            </PathGeometry> 
     75                                        </GeometryDrawing.Geometry> 
     76                                    </GeometryDrawing> 
     77                                </DrawingGroup> 
     78                            </DrawingGroup> 
     79                        </DrawingImage.Drawing> 
     80                    </DrawingImage> 
     81                </Image.Source> 
     82            </Image> 
     83        </ControlTemplate> 
    1684    </Window.Resources> 
    1785    <Grid> 
    1886        <Grid.ColumnDefinitions > 
    19             <ColumnDefinition Width="*"/> 
     87            <ColumnDefinition Width="Auto"/> 
    2088            <ColumnDefinition Width="Auto"/> 
    2189            <ColumnDefinition Width="*" MinWidth="600"/> 
    2290        </Grid.ColumnDefinitions> 
    2391        <Grid.RowDefinitions> 
    24             <RowDefinition Height="Auto" /> 
    25             <RowDefinition Height="*" /> 
    2692            <RowDefinition Height="Auto" /> 
    2793            <RowDefinition Height="*" /> 
     
    37103                   Source="pack://application:,,,/Pictures/PiwigoLogo.png"  
    38104                   ToolTip="www.piwigo.org" Stretch="None" HorizontalAlignment="Left" /> 
    39                 <Image Name="ImgGlobe" Margin="2"  
    40                    Visibility="{Binding Source={x:Static pwgdto:PwgModelManager.Instance}, Path=booCmdRunning, Converter={StaticResource AdvBooltoVisibilityConverter}}" 
     105                <Grid Name="OverLay" Visibility="{Binding Source={x:Static pwgdto:PwgModelManager.Instance}, Path=booCmdRunning, Converter={StaticResource AdvBooltoVisibilityConverter}}"> 
     106                <Image Name="ImgGlobe" Margin="2"                     
    41107                   Source="pack://application:,,,/Pictures/128x128/Globe.png"  
    42                    ToolTip="www.piwigo.org" Stretch="None" HorizontalAlignment="Right"/> 
     108                   ToolTip="www.piwigo.org" Stretch="None" HorizontalAlignment="Right"> 
     109                </Image> 
     110                <Control Name="loading" Grid.Column="4" Template="{StaticResource loadingAnimation}" 
     111                 Width="116" VerticalAlignment="Center" HorizontalAlignment="Center" /> 
     112                </Grid> 
    43113                <UniformGrid  Name="SessInfo" Margin="10" DataContext="{Binding Source={x:Static pwgdto:PwgModelManager.Instance}, Path=Session}" Columns="2" Rows="5"> 
    44114                    <Label Content="Status"/> 
     
    68138            </StackPanel> 
    69139        </StackPanel> 
    70         <TreeView Name="listViewCategory"   
     140        <TreeView Name="listViewCategory"  Background="{Binding ElementName=this}" 
    71141                Grid.Column="0" 
    72142                Grid.Row="1"   
    73                 Grid.RowSpan="3" 
    74                 MinWidth="100"  
     143                MinWidth="180"  
    75144                DataContext="{Binding Source={StaticResource Categories}}"  
    76                 ItemsSource="{Binding }" MouseDoubleClick="listViewCategory_MouseDoubleClick"> 
     145                ItemsSource="{Binding}"  MouseDoubleClick="listViewCategory_MouseDoubleClick" 
     146                HorizontalAlignment="Left" PreviewMouseDown="listViewCategory_PreviewMouseDown"> 
    77147            <TreeView.ItemContainerStyle> 
    78148                <!--  
     
    116186            <TreeView.Resources> 
    117187                <HierarchicalDataTemplate  
     188                DataType="{x:Type pwgdto:PwgTreeCategoryWPF}"  
     189                ItemsSource="{Binding Childrens}" 
     190                > 
     191                    <StackPanel Orientation="Horizontal" DataContext="{Binding}"  
     192                        VerticalAlignment="Center" HorizontalAlignment="Center"> 
     193                        <Image Source="pack://application:,,,/Pictures/22x22/folder_html.png" Margin="5" 
     194                        Stretch="None"> 
     195                        </Image> 
     196                        <TextBlock Text="{Binding Name}" /> 
     197                    </StackPanel> 
     198                </HierarchicalDataTemplate> 
     199                <HierarchicalDataTemplate  
    118200                DataType="{x:Type pwgdto:PwgCategoryWPF}"  
    119                 ItemsSource="{Binding Children}" 
     201                ItemsSource="{Binding Childrens}" 
    120202                > 
    121203                    <StackPanel Orientation="Horizontal" DataContext="{Binding}"  
     
    123205                        <Image Source="pack://application:,,,/Pictures/22x22/folder_images.png" Margin="5" 
    124206                        Stretch="None"> 
    125                             <Image.ToolTip> 
    126                                 <StackPanel Orientation="Vertical"> 
    127                                     <StackPanel Orientation="Horizontal"> 
    128                                         <TextBlock Text="{Binding Path=ImagesCount}"/> 
    129                                         <TextBlock Text=" images inside"/> 
    130                                     </StackPanel> 
    131                                     <StackPanel Orientation="Horizontal"> 
    132                                         <TextBlock Text="{Binding Path=SubCategoriesCount}"/> 
    133                                         <TextBlock Text=" categories inside"/> 
    134                                     </StackPanel> 
    135                                 </StackPanel> 
    136                             </Image.ToolTip> 
    137207                        </Image> 
    138208                        <TextBlock Text="{Binding Name}" /> 
     209                        <StackPanel.ToolTip> 
     210                            <UniformGrid> 
     211                                    <TextBlock Text="{Binding Path=ImagesCount}"/> 
     212                                    <TextBlock Text=" images inside"/> 
     213                                    <TextBlock Text="{Binding Path=SubCategoriesCount}"/> 
     214                                    <TextBlock Text=" categories inside"/> 
     215                            </UniformGrid> 
     216                        </StackPanel.ToolTip> 
    139217                    </StackPanel> 
    140218                </HierarchicalDataTemplate> 
    141219            </TreeView.Resources> 
    142220        </TreeView> 
    143         <GridSplitter   ResizeDirection="Columns" 
     221        <GridSplitter ResizeDirection="Columns" 
    144222                    Grid.Column="1" 
    145223                    Grid.Row="1"   
    146                     Grid.RowSpan="3" 
    147                     Width="10" Background="Azure" ShowsPreview="True" ResizeBehavior="PreviousAndNext"></GridSplitter> 
    148         <ListView Name="listViewImage"    
    149             Grid.Column="3" 
    150             Grid.Row="1"    
     224                    Width="5" Height="Auto"></GridSplitter> 
     225        <Grid Name="CatgeoryContent"  
     226                    Grid.Column="2" 
     227                    Grid.Row="1"  > 
     228            <Grid.ColumnDefinitions > 
     229                <ColumnDefinition Width="*"/> 
     230            </Grid.ColumnDefinitions> 
     231            <Grid.RowDefinitions> 
     232                <RowDefinition Height="*" /> 
     233                <RowDefinition Height="Auto"/> 
     234                <RowDefinition Height="*" /> 
     235            </Grid.RowDefinitions> 
     236            <ListView Name="listViewImage" Background="{Binding ElementName=this}" 
     237            Grid.Column="0" 
     238            Grid.Row="0"    
    151239            MinWidth="500" 
    152240            DataContext="{Binding Source={StaticResource Images}}"  
    153241            ItemsSource="{Binding }" SelectionMode="Single" IsSynchronizedWithCurrentItem="True" SelectionChanged="listViewImage_SelectionChanged"> 
    154             <ListView.ItemsPanel> 
    155                 <ItemsPanelTemplate> 
    156                     <UniformGrid/> 
    157                 </ItemsPanelTemplate> 
    158             </ListView.ItemsPanel> 
    159             <ListView.ItemContainerStyle> 
    160                 <Style TargetType="{x:Type ListViewItem}"> 
    161                     <Setter Property="FontWeight" Value="Normal" /> 
    162                     <Setter Property="MaxHeight" Value="75" /> 
    163                     <Setter Property="MinHeight" Value="75" /> 
    164                     <Setter Property="Opacity" Value=".75" /> 
    165                     <Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" /> 
    166                     <Style.Triggers> 
    167                         <EventTrigger RoutedEvent="Mouse.MouseEnter"> 
    168                             <EventTrigger.Actions> 
    169                                 <BeginStoryboard> 
    170                                     <Storyboard> 
    171                                         <DoubleAnimation  
     242                <ListView.ItemsPanel> 
     243                    <ItemsPanelTemplate> 
     244                        <UniformGrid/> 
     245                    </ItemsPanelTemplate> 
     246                </ListView.ItemsPanel> 
     247                <ListView.ItemContainerStyle> 
     248                    <Style TargetType="{x:Type ListViewItem}"> 
     249                        <Setter Property="FontWeight" Value="Normal" /> 
     250                        <Setter Property="MaxHeight" Value="75" /> 
     251                        <Setter Property="MinHeight" Value="75" /> 
     252                        <Setter Property="Opacity" Value=".75" /> 
     253                        <Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" /> 
     254                        <Style.Triggers> 
     255                            <EventTrigger RoutedEvent="Mouse.MouseEnter"> 
     256                                <EventTrigger.Actions> 
     257                                    <BeginStoryboard> 
     258                                        <Storyboard> 
     259                                            <DoubleAnimation  
    172260                                                                        Duration="0:0:0.2"  
    173261                                                                        Storyboard.TargetProperty="Opacity" 
    174262                                                                        To="1.0" /> 
    175                                     </Storyboard> 
    176                                 </BeginStoryboard> 
    177                             </EventTrigger.Actions> 
    178                         </EventTrigger> 
    179                         <EventTrigger RoutedEvent="Mouse.MouseLeave"> 
    180                             <EventTrigger.Actions> 
    181                                 <BeginStoryboard> 
    182                                     <Storyboard> 
    183                                         <DoubleAnimation 
     263                                        </Storyboard> 
     264                                    </BeginStoryboard> 
     265                                </EventTrigger.Actions> 
     266                            </EventTrigger> 
     267                            <EventTrigger RoutedEvent="Mouse.MouseLeave"> 
     268                                <EventTrigger.Actions> 
     269                                    <BeginStoryboard> 
     270                                        <Storyboard> 
     271                                            <DoubleAnimation 
    184272                                                                        Duration="0:0:0.2"  
    185273                                                                        Storyboard.TargetProperty="Opacity" /> 
    186                                     </Storyboard> 
    187                                 </BeginStoryboard> 
    188                             </EventTrigger.Actions> 
    189                         </EventTrigger> 
    190                         <Trigger Property="IsSelected" Value="True"> 
    191                             <Setter Property="FontWeight" Value="Bold" /> 
    192                         </Trigger> 
    193                     </Style.Triggers> 
    194                 </Style> 
    195             </ListView.ItemContainerStyle> 
    196             <ListView.Resources> 
    197                 <DataTemplate DataType="{x:Type pwgdto:PwgImageWPF}"> 
    198                     <Border VerticalAlignment="Center" HorizontalAlignment="Center" Padding="4" Margin="2" Background="Blue" 
     274                                        </Storyboard> 
     275                                    </BeginStoryboard> 
     276                                </EventTrigger.Actions> 
     277                            </EventTrigger> 
     278                            <Trigger Property="IsSelected" Value="True"> 
     279                                <Setter Property="FontWeight" Value="Bold" /> 
     280                            </Trigger> 
     281                        </Style.Triggers> 
     282                    </Style> 
     283                </ListView.ItemContainerStyle> 
     284                <ListView.Resources> 
     285                    <DataTemplate DataType="{x:Type pwgdto:PwgImageWPF}"> 
     286                        <Border VerticalAlignment="Center" HorizontalAlignment="Center" Padding="4" Margin="2" Background="Blue" 
    199287                    DataContext="{Binding}"> 
    200                         <!--Source="{Binding UrlElement}"--> 
    201                         <Image ToolTip="{Binding File}" > 
    202                             <Image.Source> 
    203                                 <Binding Path="ImgSourceThumb" /> 
    204                                 <!--Converter="{x:Static pwgsrv:ImageCacheManager.ImageUrlCachedConverter}"--> 
    205                             </Image.Source> 
    206                         </Image> 
    207                     </Border> 
    208                 </DataTemplate> 
    209             </ListView.Resources> 
    210         </ListView> 
    211         <GridSplitter   ResizeDirection="Rows" 
    212                     Grid.Column="3" 
    213                     Grid.Row="2"   
    214                     Height="3" Background="Azure" ShowsPreview="True" ResizeBehavior="PreviousAndNext"></GridSplitter> 
    215         <StackPanel Grid.Column="3" 
    216                     Grid.Row="3"  
    217                     MinHeight="150" MinWidth="200"  DataContext="{Binding Source={x:Static pwgdto:PwgModelManager.Instance}, Path=ImageShown}"> 
    218             <Image ToolTip="{Binding Path=File}" > 
    219                 <Image.Source> 
    220                     <Binding Path="ImgSource" /> 
    221                 </Image.Source> 
    222             </Image> 
    223         </StackPanel> 
     288                            <!--Source="{Binding UrlElement}"--> 
     289                            <Image ToolTip="{Binding File}" > 
     290                                <Image.Source> 
     291                                    <Binding Path="ImgSourceThumb" /> 
     292                                    <!--Converter="{x:Static pwgsrv:ImageCacheManager.ImageUrlCachedConverter}"--> 
     293                                </Image.Source> 
     294                            </Image> 
     295                        </Border> 
     296                    </DataTemplate> 
     297                </ListView.Resources> 
     298            </ListView> 
     299            <GridSplitter ResizeDirection="Rows" 
     300                    Grid.Column="0" 
     301                    Grid.Row="1"   
     302                    Width="Auto" 
     303                    Height="5" 
     304            ></GridSplitter> 
     305            <DockPanel Grid.Column="0" 
     306                    Grid.Row="2"  
     307                    DataContext="{Binding Source={x:Static pwgdto:PwgModelManager.Instance}, Path=ImageShown}" 
     308                    > 
     309                <Image ToolTip="{Binding Path=File}" MaxHeight="360" MaxWidth="480" MinHeight="120" MinWidth="160"> 
     310                    <Image.Source> 
     311                        <Binding Path="ImgSource" /> 
     312                    </Image.Source> 
     313                </Image> 
     314            </DockPanel> 
     315        </Grid> 
    224316        <Expander   
    225317            Grid.Column="0" 
    226318            Grid.ColumnSpan="3" 
    227             Grid.Row="4"  > 
     319            Grid.Row="3"  > 
    228320            <Expander.Header> 
    229321                <Button Height="18" Name="btnDeleteLog" Width="18"  
  • extensions/PiwigoLib/PiwigoWpf/MainWindow.xaml.cs

    r11926 r11935  
    1414using Com.Piwigo.Wpf.Helper; 
    1515using Com.Piwigo.Wpf.Command; 
     16using Com.Piwigo.Wpf.DTO; 
    1617 
    1718namespace Com.Piwigo.Wpf 
     
    4243        } 
    4344 
     45        private void listViewCategory_PreviewMouseDown(object sender, MouseButtonEventArgs e) 
     46        { 
     47            e.Handled = false; 
     48            DependencyObject dep = (DependencyObject)e.OriginalSource; 
     49            while ((dep != null) && !(dep is TreeViewItem)) 
     50            { 
     51                dep = VisualTreeHelper.GetParent(dep); 
     52            } 
     53            if (dep != null) 
     54            { 
     55                if (((TreeViewItem)dep).DataContext is PwgCategoryWPF) 
     56                { 
     57                    PwgCategoryWPF aCat = (PwgCategoryWPF)((TreeViewItem)dep).DataContext; 
     58 
     59                    if ((e.ChangedButton == MouseButton.Left) && (e.ClickCount == 1)) 
     60                    { 
     61                        // left single click event 
     62                        if (aCat.Childrens == null) 
     63                        { 
     64                            AppHelper.ExecuteCommand<PwgCmdGetSubCategorieforCategory>(aCat); 
     65                        } 
     66                    } 
     67                } 
     68            } 
     69        } 
     70 
    4471 
    4572    } 
  • extensions/PiwigoLib/PiwigoWpf/PiwigoWpf.csproj

    r11926 r11935  
    7777      <SubType>Designer</SubType> 
    7878    </ApplicationDefinition> 
     79    <Compile Include="Command\PwgCmdGetSubCategorieforCategory.cs" /> 
    7980    <Compile Include="Command\PwgCmdSelectImageInCategory.cs" /> 
    8081    <Compile Include="Command\DelegateCommand.cs" /> 
Note: See TracChangeset for help on using the changeset viewer.