A game framework written with osu! in mind.
1// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
2// See the LICENCE file in the repository root for full licence text.
3
4using System.IO;
5using osu.Framework.Graphics.Containers;
6using osu.Framework.Graphics.Sprites;
7
8namespace osu.Framework.Graphics.UserInterface
9{
10 public class BasicFileSelector : FileSelector
11 {
12 protected override DirectorySelectorBreadcrumbDisplay CreateBreadcrumb() => new BasicDirectorySelectorBreadcrumbDisplay();
13
14 protected override DirectorySelectorDirectory CreateDirectoryItem(DirectoryInfo directory, string displayName = null) => new BasicDirectorySelectorDirectory(directory, displayName);
15
16 protected override DirectorySelectorDirectory CreateParentDirectoryItem(DirectoryInfo directory) => new BasicDirectorySelectorParentDirectory(directory);
17
18 protected override ScrollContainer<Drawable> CreateScrollContainer() => new BasicScrollContainer();
19
20 protected override DirectoryListingFile CreateFileItem(FileInfo file) => new BasicFilePiece(file);
21
22 protected override void NotifySelectionError()
23 {
24 this.FlashColour(Colour4.Red, 300);
25 }
26
27 private class BasicFilePiece : DirectoryListingFile
28 {
29 public BasicFilePiece(FileInfo file)
30 : base(file)
31 {
32 }
33
34 protected override IconUsage? Icon
35 {
36 get
37 {
38 switch (File.Extension)
39 {
40 case ".ogg":
41 case ".mp3":
42 case ".wav":
43 return FontAwesome.Regular.FileAudio;
44
45 case ".jpg":
46 case ".jpeg":
47 case ".png":
48 return FontAwesome.Regular.FileImage;
49
50 case ".mp4":
51 case ".avi":
52 case ".mov":
53 case ".flv":
54 return FontAwesome.Regular.FileVideo;
55
56 default:
57 return FontAwesome.Regular.File;
58 }
59 }
60 }
61
62 protected override SpriteText CreateSpriteText() => new SpriteText
63 {
64 Font = FrameworkFont.Regular.With(size: FONT_SIZE)
65 };
66 }
67 }
68}