1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
|
using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Entities;
using System;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;
namespace MediaBrowser.Controller.Entities
{
public interface IHasImages : IHasProviderIds
{
/// <summary>
/// Gets the name.
/// </summary>
/// <value>The name.</value>
string Name { get; set; }
/// <summary>
/// Gets the path.
/// </summary>
/// <value>The path.</value>
string Path { get; set; }
/// <summary>
/// Gets the file name without extension.
/// </summary>
/// <value>The file name without extension.</value>
string FileNameWithoutExtension { get; }
/// <summary>
/// Gets the identifier.
/// </summary>
/// <value>The identifier.</value>
Guid Id { get; }
/// <summary>
/// Gets the type of the location.
/// </summary>
/// <value>The type of the location.</value>
LocationType LocationType { get; }
/// <summary>
/// Gets the locked fields.
/// </summary>
/// <value>The locked fields.</value>
List<MetadataFields> LockedFields { get; }
/// <summary>
/// Gets the images.
/// </summary>
/// <param name="imageType">Type of the image.</param>
/// <returns>IEnumerable{ItemImageInfo}.</returns>
IEnumerable<ItemImageInfo> GetImages(ImageType imageType);
/// <summary>
/// Gets the image path.
/// </summary>
/// <param name="imageType">Type of the image.</param>
/// <param name="imageIndex">Index of the image.</param>
/// <returns>System.String.</returns>
string GetImagePath(ImageType imageType, int imageIndex);
/// <summary>
/// Gets the image information.
/// </summary>
/// <param name="imageType">Type of the image.</param>
/// <param name="imageIndex">Index of the image.</param>
/// <returns>ItemImageInfo.</returns>
ItemImageInfo GetImageInfo(ImageType imageType, int imageIndex);
/// <summary>
/// Sets the image.
/// </summary>
/// <param name="type">The type.</param>
/// <param name="index">The index.</param>
/// <param name="file">The file.</param>
void SetImagePath(ImageType type, int index, FileSystemInfo file);
/// <summary>
/// Determines whether the specified type has image.
/// </summary>
/// <param name="type">The type.</param>
/// <param name="imageIndex">Index of the image.</param>
/// <returns><c>true</c> if the specified type has image; otherwise, <c>false</c>.</returns>
bool HasImage(ImageType type, int imageIndex);
/// <summary>
/// Allowses the multiple images.
/// </summary>
/// <param name="type">The type.</param>
/// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>
bool AllowsMultipleImages(ImageType type);
/// <summary>
/// Swaps the images.
/// </summary>
/// <param name="type">The type.</param>
/// <param name="index1">The index1.</param>
/// <param name="index2">The index2.</param>
/// <returns>Task.</returns>
Task SwapImages(ImageType type, int index1, int index2);
/// <summary>
/// Gets the display type of the media.
/// </summary>
/// <value>The display type of the media.</value>
string DisplayMediaType { get; set; }
/// <summary>
/// Gets or sets the primary image path.
/// </summary>
/// <value>The primary image path.</value>
string PrimaryImagePath { get; }
/// <summary>
/// Gets the preferred metadata language.
/// </summary>
/// <returns>System.String.</returns>
string GetPreferredMetadataLanguage();
/// <summary>
/// Validates the images and returns true or false indicating if any were removed.
/// </summary>
bool ValidateImages(IDirectoryService directoryService);
/// <summary>
/// Gets a value indicating whether this instance is owned item.
/// </summary>
/// <value><c>true</c> if this instance is owned item; otherwise, <c>false</c>.</value>
bool IsOwnedItem { get; }
/// <summary>
/// Gets the containing folder path.
/// </summary>
/// <value>The containing folder path.</value>
string ContainingFolderPath { get; }
/// <summary>
/// Adds the images.
/// </summary>
/// <param name="imageType">Type of the image.</param>
/// <param name="images">The images.</param>
/// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>
bool AddImages(ImageType imageType, IEnumerable<FileSystemInfo> images);
/// <summary>
/// Determines whether [is save local metadata enabled].
/// </summary>
/// <returns><c>true</c> if [is save local metadata enabled]; otherwise, <c>false</c>.</returns>
bool IsSaveLocalMetadataEnabled();
/// <summary>
/// Gets a value indicating whether [supports local metadata].
/// </summary>
/// <value><c>true</c> if [supports local metadata]; otherwise, <c>false</c>.</value>
bool SupportsLocalMetadata { get; }
/// <summary>
/// Gets a value indicating whether this instance is in mixed folder.
/// </summary>
/// <value><c>true</c> if this instance is in mixed folder; otherwise, <c>false</c>.</value>
bool IsInMixedFolder { get; }
/// <summary>
/// Gets a value indicating whether this instance is locked.
/// </summary>
/// <value><c>true</c> if this instance is locked; otherwise, <c>false</c>.</value>
bool IsLocked { get; }
/// <summary>
/// Gets a value indicating whether [supports remote image downloading].
/// </summary>
/// <value><c>true</c> if [supports remote image downloading]; otherwise, <c>false</c>.</value>
bool SupportsRemoteImageDownloading { get; }
/// <summary>
/// Gets the internal metadata path.
/// </summary>
/// <returns>System.String.</returns>
string GetInternalMetadataPath();
/// <summary>
/// Gets a value indicating whether [always scan internal metadata path].
/// </summary>
/// <value><c>true</c> if [always scan internal metadata path]; otherwise, <c>false</c>.</value>
bool AlwaysScanInternalMetadataPath { get; }
}
public static class HasImagesExtensions
{
/// <summary>
/// Gets the image path.
/// </summary>
/// <param name="item">The item.</param>
/// <param name="imageType">Type of the image.</param>
/// <returns>System.String.</returns>
public static string GetImagePath(this IHasImages item, ImageType imageType)
{
return item.GetImagePath(imageType, 0);
}
public static bool HasImage(this IHasImages item, ImageType imageType)
{
return item.HasImage(imageType, 0);
}
/// <summary>
/// Sets the image path.
/// </summary>
/// <param name="item">The item.</param>
/// <param name="imageType">Type of the image.</param>
/// <param name="file">The file.</param>
public static void SetImagePath(this IHasImages item, ImageType imageType, FileSystemInfo file)
{
item.SetImagePath(imageType, 0, file);
}
/// <summary>
/// Sets the image path.
/// </summary>
/// <param name="item">The item.</param>
/// <param name="imageType">Type of the image.</param>
/// <param name="file">The file.</param>
public static void SetImagePath(this IHasImages item, ImageType imageType, string file)
{
item.SetImagePath(imageType, new FileInfo(file));
}
}
}
|