A game framework written with osu! in mind.
at master 68 lines 2.4 kB view raw
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}