client/src/Iri.Modernisation.Controls/ViewModel/NavigationBar/ConsultMenuVM.cs
author Matthieu Totet
Wed, 18 Nov 2009 15:30:31 +0100
changeset 0 249d70e7b32d
child 25 a9c815025a1b
permissions -rw-r--r--
Create Directories & Project
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
     1
using System;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
     2
using System.Net;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
     3
using System.Windows;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
     4
using System.Windows.Controls;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
     5
using System.Windows.Documents;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
     6
using System.Windows.Ink;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
     7
using System.Windows.Input;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
     8
using System.Windows.Media;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
     9
using System.Windows.Media.Animation;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    10
using System.Windows.Shapes;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    11
using SLExtensions.Input;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    12
using Iri.Modernisation.BaseMVVM.Commands;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    13
using Iri.Modernisation.BaseMVVM.ViewModel;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    14
using Iri.Modernisation.Data.Models;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    15
using System.Collections.Generic;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    16
using System.Linq;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    17
namespace Iri.Modernisation.Controls.ViewModel
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    18
{
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    19
    public class ConsultMenuVM : BaseMVVM.ViewModel.ViewModel
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    20
    {
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    21
      private List<VideoBook> _videoBooks = new List<VideoBook>();
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    22
      private List<VideoBook> list = new List<VideoBook>();
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    23
      public List<VideoBook> VideoBooks
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    24
      {
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    25
          get 
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    26
          {
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    27
              _videoBooks.Sort(new VideoBookComparer());
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    28
              if (SearchWord != String.Empty)
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    29
              {
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    30
                  return list;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    31
              }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    32
              else
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    33
              {
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    34
                  return _videoBooks;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    35
              }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    36
          
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    37
          }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    38
          set
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    39
          {
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    40
              list = value;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    41
              OnPropertyChanged("VideoBooks");
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    42
          }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    43
      }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    44
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    45
      public bool SearchAuthor { get; set; }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    46
      public bool SearchContributer { get; set; }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    47
      public bool SearchTag { get; set; }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    48
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    49
      private String _searchWord= "";
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    50
      public String SearchWord 
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    51
      { 
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    52
          get
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    53
          {
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    54
              return _searchWord;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    55
          }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    56
          
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    57
          set 
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    58
          {
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    59
              _searchWord = value;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    60
              OnPropertyChanged("SearchWord");
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    61
          } 
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    62
      }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    63
     
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    64
        public ConsultMenuVM()
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    65
        {
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    66
            SearchAuthor = true;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    67
          InitializeCommands();
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    68
        }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    69
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    70
        private void InitializeCommands()
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    71
        {
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    72
           Commands.ConsultMenu.GetBook.Executed += new EventHandler<ExecutedEventArgs>(GetBook_Executed);
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    73
         }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    74
        public ConsultMenuVM(List<VideoBook> argList)
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    75
        {
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    76
            _videoBooks = argList;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    77
            SearchAuthor = true;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    78
            InitializeCommands();
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    79
        }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    80
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    81
        
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    82
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    83
        void GetBook_Executed(object sender, ExecutedEventArgs e)
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    84
        {
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    85
           
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    86
           if (SearchAuthor)
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    87
            {
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    88
                var query = from c in _videoBooks
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    89
                            where c.Author.UserName.Contains(_searchWord)
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    90
                            select c;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    91
                VideoBooks = query.ToList();
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    92
            }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    93
            if (SearchContributer)
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    94
            {
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    95
                List<VideoBook> temp = new List<VideoBook>();
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    96
                foreach (VideoBook Book in _videoBooks)
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    97
                {
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    98
                    foreach (VideoChapter Chapter in Book.Chapters)
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
    99
                    {
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   100
                        foreach (Annotation Annotation in Chapter.Annotations)
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   101
                        {
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   102
                            if ( Annotation.Contributer.UserName.Contains(_searchWord))
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   103
                            {
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   104
                                temp.Add(Book);
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   105
                            }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   106
                        }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   107
                    }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   108
                }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   109
                VideoBooks = temp;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   110
            }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   111
            if(SearchTag)
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   112
            {
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   113
                List<VideoBook> temp = new List<VideoBook>();
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   114
                foreach (VideoBook Book in _videoBooks)
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   115
                {
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   116
                    foreach (VideoChapter Chapter in Book.Chapters)
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   117
                    {
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   118
                        foreach (Annotation Annotation in Chapter.Annotations)
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   119
                        {
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   120
                            if (Annotation.Tags.Contains(_searchWord))
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   121
                            {
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   122
                                temp.Add(Book);
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   123
                            }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   124
                        }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   125
                        foreach (SegmentIndex Segment in Chapter.Index)
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   126
                        {
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   127
                            if (Segment.Tags.Contains(_searchWord))
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   128
                            {
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   129
                                temp.Add(Book);
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   130
                            }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   131
                        }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   132
                    }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   133
                }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   134
                VideoBooks = temp;
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   135
            }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   136
        }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   137
       
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   138
    }
249d70e7b32d Create Directories & Project
Matthieu Totet
parents:
diff changeset
   139
}