55
66namespace MataSharp
77{
8- public class MessageList < Message > : IEnumerable < Message > where Message : MagisterMessage
8+ public partial class MagisterMessageFolder : IEnumerable < MagisterMessage >
99 {
10- private MagisterMessageFolder Sender { get ; set ; }
11-
12- public MessageList ( ) { throw new Exception ( "MessageLists are only able to be internally created." ) ; }
13-
14- internal MessageList ( MagisterMessageFolder Sender )
15- {
16- this . Sender = Sender ;
17- }
18-
1910 /// <summary>
2011 /// Gets the item on the given index.
2112 /// </summary>
2213 /// <param name="index">The zero-based index of the item to get.</param>
2314 /// <returns>The item on the given index.</returns>
24- public Message this [ int index ] { get { return this . GetSpecificEnumerator ( ) . GetAt ( index ) ; } }
15+ public MagisterMessage this [ int index ] { get { return this . GetSpecificEnumerator ( ) . GetAt ( index ) ; } }
2516
26- public IEnumerator < Message > GetEnumerator ( )
17+ public IEnumerator < MagisterMessage > GetEnumerator ( )
2718 {
28- return new Enumerator < Message > ( this . Sender . Mata , this . Sender ) ;
19+ return new Enumerator < MagisterMessage > ( this ) ;
2920 }
3021
3122 System . Collections . IEnumerator System . Collections . IEnumerable . GetEnumerator ( )
3223 {
3324 return GetEnumerator ( ) ;
3425 }
3526
36- private Enumerator < Message > GetSpecificEnumerator ( )
27+ private Enumerator < MagisterMessage > GetSpecificEnumerator ( )
3728 {
38- return new Enumerator < Message > ( this . Sender . Mata , this . Sender ) ;
29+ return new Enumerator < MagisterMessage > ( this ) ;
3930 }
4031
41- public Message ElementAt ( int index )
32+ public MagisterMessage ElementAt ( int index )
4233 {
4334 return this [ index ] ;
4435 }
4536
46- public List < Message > Take ( int count )
37+ public List < MagisterMessage > Take ( int count )
4738 {
4839 return this . GetRange ( 0 , count ) ;
4940 }
@@ -54,7 +45,7 @@ public List<Message> Take(int count)
5445 /// <param name="Ammount">Ammount to ask for on the server.</param>
5546 /// <param name="Skip">Ammount of messages to skip | Default = 0</param>
5647 /// <returns>List of unread MagisterMessages.</returns>
57- public List < Message > WhereUnread ( uint Ammount , uint Skip = 0 )
48+ public List < MagisterMessage > WhereUnread ( uint Ammount , uint Skip = 0 )
5849 {
5950 return this . GetSpecificEnumerator ( ) . GetUnread ( Ammount , Skip ) ;
6051 }
@@ -63,7 +54,7 @@ public List<Message> WhereUnread(uint Ammount, uint Skip = 0)
6354 /// Gets ALL the new messages on the parent's mata server.
6455 /// </summary>
6556 /// <returns>List of unread MagisterMessages.</returns>
66- public List < Message > WhereUnread ( )
57+ public List < MagisterMessage > WhereUnread ( )
6758 {
6859 return this . GetSpecificEnumerator ( ) . GetUnread ( ) ;
6960 }
@@ -93,7 +84,7 @@ public void RemoveRange(int index, int count)
9384 /// <param name="index">The zero-based index at which the range starts.</param>
9485 /// <param name="count">The number of elements in the range.</param>
9586 /// <returns>The given range of MagisterMessages as a List</returns>
96- public List < Message > GetRange ( int index , int count )
87+ public List < MagisterMessage > GetRange ( int index , int count )
9788 {
9889 return this . GetSpecificEnumerator ( ) . GetRange ( count , index ) ;
9990 }
@@ -103,10 +94,10 @@ public List<Message> GetRange(int index, int count)
10394 /// </summary>
10495 /// <param name="item">The item to get its position from.</param>
10596 /// <returns>A zero-based index of the position of the given item.</returns>
106- public int IndexOf ( Message item )
97+ public int IndexOf ( MagisterMessage item )
10798 {
10899 var enumerator = this . GetSpecificEnumerator ( ) ;
109- Message currentItem = null ;
100+ MagisterMessage currentItem = null ;
110101 int pos = - 1 ;
111102 do
112103 {
@@ -122,7 +113,7 @@ public int IndexOf(Message item)
122113 /// </summary>
123114 /// <param name="max">The ammount of messages to check for on the server.</param>
124115 /// <param name="predicate">The predicate the messages must match to.</param>
125- public void RemoveAll ( int max , Predicate < Message > predicate )
116+ public void RemoveAll ( int max , Predicate < MagisterMessage > predicate )
126117 {
127118 this . GetSpecificEnumerator ( ) . GetRange ( max , 0 ) . Where ( m => predicate ( m ) ) . ToList ( ) . ForEach ( m => m . Delete ( ) ) ;
128119 }
@@ -133,7 +124,7 @@ public void RemoveAll(int max, Predicate<Message> predicate)
133124 /// <param name="max">The max value to check for on the server.</param>
134125 /// <param name="predicate">The predicate the messages must match</param>
135126 /// <returns>A List containing the messages that matched the predicate.</returns>
136- public List < Message > Where ( int max , Func < Message , bool > predicate )
127+ public List < MagisterMessage > Where ( int max , Func < MagisterMessage , bool > predicate )
137128 {
138129 return this . GetSpecificEnumerator ( ) . GetRange ( max , 0 ) . Where ( m => predicate ( m ) ) . ToList ( ) ;
139130 }
@@ -144,7 +135,7 @@ public List<Message> Where(int max, Func<Message,bool> predicate)
144135 /// <param name="max">The max value to check for on the server.</param>
145136 /// <param name="predicate">The predicate the message must match.</param>
146137 /// <returns>The first message on the server that matches the predicate.</returns>
147- public Message First ( int max , Func < Message , bool > predicate )
138+ public MagisterMessage First ( int max , Func < MagisterMessage , bool > predicate )
148139 {
149140 var enumerator = this . GetSpecificEnumerator ( ) ;
150141 for ( int i = 0 ; i < max ; i ++ )
@@ -161,7 +152,7 @@ public Message First(int max, Func<Message,bool> predicate)
161152 /// <param name="max">The max value to check for on the server.</param>
162153 /// <param name="predicate">The predicate the message must match.</param>
163154 /// <returns>The last message on the server that matches the predicate.</returns>
164- public Message Last ( int max , Func < Message , bool > predicate )
155+ public MagisterMessage Last ( int max , Func < MagisterMessage , bool > predicate )
165156 {
166157 return this . GetSpecificEnumerator ( ) . GetRange ( max , 0 ) . Last ( m => predicate ( m ) ) ;
167158 }
@@ -172,15 +163,15 @@ public Message Last(int max, Func<Message,bool> predicate)
172163 /// <param name="max">The max value to check for on the server.</param>
173164 /// <param name="predicate">The predicate the message must match.</param>
174165 /// <returns>The first message on the server that matches the predicate.</returns>
175- public Message FirstOrDefault ( int max , Func < Message , bool > predicate )
166+ public MagisterMessage FirstOrDefault ( int max , Func < MagisterMessage , bool > predicate )
176167 {
177168 var enumerator = this . GetSpecificEnumerator ( ) ;
178169 for ( int i = 0 ; i < max ; i ++ )
179170 {
180171 var msg = enumerator . GetAt ( i ) ;
181172 if ( predicate ( msg ) ) return msg ;
182- }
183- return default ( Message ) ;
173+ }
174+ return default ( MagisterMessage ) ;
184175 }
185176
186177 /// <summary>
@@ -189,17 +180,17 @@ public Message FirstOrDefault(int max, Func<Message, bool> predicate)
189180 /// <param name="max">The max value to check for on the server.</param>
190181 /// <param name="predicate">The predicate the message must match.</param>
191182 /// <returns>The last message on the server that matches the predicate.</returns>
192- public Message LastOrDefault ( int max , Func < Message , bool > predicate )
183+ public MagisterMessage LastOrDefault ( int max , Func < MagisterMessage , bool > predicate )
193184 {
194185 var enumerator = this . GetSpecificEnumerator ( ) ;
195- Message msg = null ;
186+ MagisterMessage msg = null ;
196187 for ( int i = 0 ; i < max ; i ++ )
197188 {
198189 var tmpMsg = enumerator . GetAt ( i ) ;
199190 if ( predicate ( tmpMsg ) ) msg = tmpMsg ;
200191 }
201192 if ( msg != null ) return msg ;
202- else return default ( Message ) ;
193+ else return default ( MagisterMessage ) ;
203194 }
204195
205196 /// <summary>
@@ -208,7 +199,7 @@ public Message LastOrDefault(int max, Func<Message, bool> predicate)
208199 /// <param name="max">The max value to check for on the server.</param>
209200 /// <param name="predicate">The predicate the message must match.</param>
210201 /// <returns>A boolean value that tells if there is a message matching the given predicate.</returns>
211- public bool Any ( int max , Func < Message , bool > predicate )
202+ public bool Any ( int max , Func < MagisterMessage , bool > predicate )
212203 {
213204 var enumerator = this . GetSpecificEnumerator ( ) ;
214205 for ( int i = 0 ; i < max ; i ++ )
@@ -225,10 +216,10 @@ public bool Any(int max, Func<Message, bool> predicate)
225216 /// <param name="predicate">The predicate that the message must match to.</param>
226217 /// <param name="max">The max ammount of messages to get from the server.</param>
227218 /// <returns>A single MagisterMessage matching the given predicate.</returns>
228- public Message Single ( int max , Func < Message , bool > predicate )
219+ public MagisterMessage Single ( int max , Func < MagisterMessage , bool > predicate )
229220 {
230221 var enumerator = this . GetSpecificEnumerator ( ) ;
231- Message msg = null ;
222+ MagisterMessage msg = null ;
232223 for ( int i = 0 ; i <= max ; i ++ )
233224 {
234225 var tmpMsg = enumerator . GetAt ( i ) ;
@@ -249,10 +240,10 @@ public Message Single(int max, Func<Message, bool> predicate)
249240 /// <param name="max">The max ammount of messages to get from the server.</param>
250241 /// <param name="predicate">The predicate that the message must match to.</param>
251242 /// <returns>A single MagisterMessage matching the given predicate.</returns>
252- public Message SingleOrDefault ( int max , Func < Message , bool > predicate )
243+ public MagisterMessage SingleOrDefault ( int max , Func < MagisterMessage , bool > predicate )
253244 {
254245 var enumerator = this . GetSpecificEnumerator ( ) ;
255- Message msg = null ;
246+ MagisterMessage msg = null ;
256247 for ( int i = 0 ; i <= max ; i ++ )
257248 {
258249 var tmpMsg = enumerator . GetAt ( i ) ;
@@ -263,30 +254,29 @@ public Message SingleOrDefault(int max, Func<Message, bool> predicate)
263254 }
264255 }
265256 if ( msg != null ) return msg ;
266- else return default ( Message ) ;
257+ else return default ( MagisterMessage ) ;
267258 }
268259
269260 /// <summary>
270261 /// Checks if the given messages exist on the servers.
271262 /// </summary>
272263 /// <param name="item">The item to check if it exists.</param>
273264 /// <returns>A boolean value telling if the given message exists.</returns>
274- public bool Contains ( Message item )
265+ public bool Contains ( MagisterMessage item )
275266 {
276- return ( ! item . Deleted && this . Sender . FolderType == item . Folder ) ;
267+ return ( ! item . Deleted && this . FolderType == item . Folder ) ;
277268 }
278269
279- private class Enumerator < T > : IEnumerator < T > , IDisposable where T : Message
270+ private class Enumerator < T > : IEnumerator < T > , IDisposable where T : MagisterMessage
280271 {
281272 private int Next = 0 ;
282273 private int Skip = - 1 ;
283- private Mata Mata { get ; set ; }
274+ private Mata Mata { get { return this . Sender . Mata ; } }
284275 private MagisterMessageFolder Sender { get ; set ; }
285276 private const int MaxMessages = 750 ;
286277
287- public Enumerator ( Mata Mata , MagisterMessageFolder Sender )
278+ public Enumerator ( MagisterMessageFolder Sender )
288279 {
289- this . Mata = Mata ;
290280 this . Sender = Sender ;
291281 }
292282
@@ -401,7 +391,6 @@ public void Reset()
401391 public void Dispose ( )
402392 {
403393 this . Reset ( ) ;
404- this . Mata = null ;
405394 this . Sender = null ;
406395 GC . Collect ( ) ;
407396 }
0 commit comments