├── .editorconfig
├── .gitattributes
├── .github
└── ISSUE_TEMPLATE
│ ├── bug_report.md
│ └── feature_request.md
├── .gitignore
├── CHANGELOG.md
├── FileExplorer.sln
├── FileExplorer
├── App.xaml
├── App.xaml.cs
├── Assets
│ ├── LockScreenLogo.scale-200.png
│ ├── SplashScreen.scale-200.png
│ ├── Square150x150Logo.scale-200.png
│ ├── Square44x44Logo.scale-200.png
│ ├── Square44x44Logo.targetsize-24_altform-unplated.png
│ ├── StoreLogo.png
│ └── Wide310x150Logo.scale-200.png
├── Converters
│ ├── ThumbnailToImageConverter.cs
│ ├── VisibleOnExistsConverter.cs
│ └── VisibleOnNullConverter.cs
├── FileExplorer.csproj
├── MainPage.xaml
├── MainPage.xaml.cs
├── Models
│ ├── FileItem.cs
│ └── MenuFolderItem.cs
├── Package.appxmanifest
├── Properties
│ ├── AssemblyInfo.cs
│ └── Default.rd.xml
└── Strings
│ ├── de-DE
│ └── Resources.resw
│ └── en-US
│ └── Resources.resw
├── LICENSE
└── README.md
/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | indent_style = tab
5 | end_of_line = crlf
6 | charset = utf-8
7 | trim_trailing_whitespace = true
8 | insert_final_newline = true
9 | max_line_length = 120
10 |
11 | [*.md]
12 | trim_trailing_whitespace = false
13 | max_line_length = off
14 |
15 | [*.cs]
16 | dotnet_sort_system_directives_first = true
17 | dotnet_style_coalesce_expression = true : warning
18 | dotnet_style_collection_initializer = true : suggestion
19 | dotnet_style_explicit_tuple_names = true : suggestion
20 | dotnet_style_null_propagation = true : suggestion
21 | dotnet_style_object_initializer = true : suggestion
22 | dotnet_style_predefined_type_for_locals_parameters_members = true : warning
23 | dotnet_style_predefined_type_for_member_access = true : warning
24 | dotnet_style_qualification_for_event = true : warning
25 | dotnet_style_qualification_for_field = true : warning
26 | dotnet_style_qualification_for_method = true : warning
27 | dotnet_style_qualification_for_property = true : warning
28 | csharp_style_conditional_delegate_call = true : suggestion
29 | csharp_style_expression_bodied_accessors = true : suggestion
30 | csharp_style_expression_bodied_constructors = false : warning
31 | csharp_style_expression_bodied_indexers = true : suggestion
32 | csharp_style_expression_bodied_methods = false : warning
33 | csharp_style_expression_bodied_operators = true : suggestion
34 | csharp_style_expression_bodied_properties = false : warning
35 | csharp_style_inlined_variable_declaration = true : suggestion
36 | csharp_style_pattern_matching_over_as_with_null_check = true : warning
37 | csharp_style_pattern_matching_over_is_with_cast_check = true : warning
38 | csharp_style_throw_expression = true : warning
39 | csharp_style_var_elsewhere = false : none
40 | csharp_style_var_for_built_in_types = true : warning
41 | csharp_style_var_when_type_is_apparent = true : warning
42 | csharp_prefer_simple_default_expression = true
43 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | ###############################################################################
2 | # Set default behavior to automatically normalize line endings.
3 | ###############################################################################
4 | * text=auto
5 |
6 | ###############################################################################
7 | # Set default behavior for command prompt diff.
8 | #
9 | # This is need for earlier builds of msysgit that does not have it on by
10 | # default for csharp files.
11 | # Note: This is only used by command line
12 | ###############################################################################
13 | #*.cs diff=csharp
14 |
15 | ###############################################################################
16 | # Set the merge driver for project and solution files
17 | #
18 | # Merging from the command prompt will add diff markers to the files if there
19 | # are conflicts (Merging from VS is not affected by the settings below, in VS
20 | # the diff markers are never inserted). Diff markers may cause the following
21 | # file extensions to fail to load in VS. An alternative would be to treat
22 | # these files as binary and thus will always conflict and require user
23 | # intervention with every merge. To do so, just uncomment the entries below
24 | ###############################################################################
25 | #*.sln merge=binary
26 | #*.csproj merge=binary
27 | #*.vbproj merge=binary
28 | #*.vcxproj merge=binary
29 | #*.vcproj merge=binary
30 | #*.dbproj merge=binary
31 | #*.fsproj merge=binary
32 | #*.lsproj merge=binary
33 | #*.wixproj merge=binary
34 | #*.modelproj merge=binary
35 | #*.sqlproj merge=binary
36 | #*.wwaproj merge=binary
37 |
38 | ###############################################################################
39 | # behavior for image files
40 | #
41 | # image files are treated as binary by default.
42 | ###############################################################################
43 | #*.jpg binary
44 | #*.png binary
45 | #*.gif binary
46 |
47 | ###############################################################################
48 | # diff behavior for common document formats
49 | #
50 | # Convert binary document formats to text before diffing them. This feature
51 | # is only available from the command line. Turn it on by uncommenting the
52 | # entries below.
53 | ###############################################################################
54 | #*.doc diff=astextplain
55 | #*.DOC diff=astextplain
56 | #*.docx diff=astextplain
57 | #*.DOCX diff=astextplain
58 | #*.dot diff=astextplain
59 | #*.DOT diff=astextplain
60 | #*.pdf diff=astextplain
61 | #*.PDF diff=astextplain
62 | #*.rtf diff=astextplain
63 | #*.RTF diff=astextplain
64 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug_report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug report
3 | about: Create a report to help us improve
4 |
5 | ---
6 |
7 | ## Describe the bug
8 | A clear and concise description of what the bug is.
9 |
10 | ## To Reproduce
11 | Steps to reproduce the behavior:
12 | 1. Go to '...'
13 | 2. Click on '....'
14 | 3. Scroll down to '....'
15 | 4. See error
16 |
17 | ## Expected behavior
18 | A clear and concise description of what you expected to happen.
19 |
20 | ## Screenshots
21 | If applicable, add screenshots to help explain your problem.
22 |
23 | ## Environment:
24 | - Windows Version: [e.g. 17134.81]
25 |
26 | ## Additional context
27 | Add any other context about the problem here.
28 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature request
3 | about: Suggest an idea for this project
4 |
5 | ---
6 |
7 | ## Description
8 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
9 |
10 | ## Possible Implementation
11 | A clear and concise description of what you want to happen.
12 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | ## Ignore Visual Studio temporary files, build results, and
2 | ## files generated by popular Visual Studio add-ons.
3 |
4 | # User-specific files
5 | *.suo
6 | *.user
7 | *.userosscache
8 | *.sln.docstates
9 |
10 | # User-specific files (MonoDevelop/Xamarin Studio)
11 | *.userprefs
12 |
13 | # Build results
14 | [Dd]ebug/
15 | [Dd]ebugPublic/
16 | [Rr]elease/
17 | [Rr]eleases/
18 | x64/
19 | x86/
20 | bld/
21 | [Bb]in/
22 | [Oo]bj/
23 | [Ll]og/
24 |
25 | # Visual Studio 2015 cache/options directory
26 | .vs/
27 | # Uncomment if you have tasks that create the project's static files in wwwroot
28 | #wwwroot/
29 |
30 | # MSTest test Results
31 | [Tt]est[Rr]esult*/
32 | [Bb]uild[Ll]og.*
33 |
34 | # NUNIT
35 | *.VisualState.xml
36 | TestResult.xml
37 |
38 | # Build Results of an ATL Project
39 | [Dd]ebugPS/
40 | [Rr]eleasePS/
41 | dlldata.c
42 |
43 | # DNX
44 | project.lock.json
45 | project.fragment.lock.json
46 | artifacts/
47 |
48 | *_i.c
49 | *_p.c
50 | *_i.h
51 | *.ilk
52 | *.meta
53 | *.obj
54 | *.pch
55 | *.pdb
56 | *.pgc
57 | *.pgd
58 | *.rsp
59 | *.sbr
60 | *.tlb
61 | *.tli
62 | *.tlh
63 | *.tmp
64 | *.tmp_proj
65 | *.log
66 | *.vspscc
67 | *.vssscc
68 | .builds
69 | *.pidb
70 | *.svclog
71 | *.scc
72 |
73 | # Chutzpah Test files
74 | _Chutzpah*
75 |
76 | # Visual C++ cache files
77 | ipch/
78 | *.aps
79 | *.ncb
80 | *.opendb
81 | *.opensdf
82 | *.sdf
83 | *.cachefile
84 | *.VC.db
85 | *.VC.VC.opendb
86 |
87 | # Visual Studio profiler
88 | *.psess
89 | *.vsp
90 | *.vspx
91 | *.sap
92 |
93 | # TFS 2012 Local Workspace
94 | $tf/
95 |
96 | # Guidance Automation Toolkit
97 | *.gpState
98 |
99 | # ReSharper is a .NET coding add-in
100 | _ReSharper*/
101 | *.[Rr]e[Ss]harper
102 | *.DotSettings.user
103 |
104 | # JustCode is a .NET coding add-in
105 | .JustCode
106 |
107 | # TeamCity is a build add-in
108 | _TeamCity*
109 |
110 | # DotCover is a Code Coverage Tool
111 | *.dotCover
112 |
113 | # NCrunch
114 | _NCrunch_*
115 | .*crunch*.local.xml
116 | nCrunchTemp_*
117 |
118 | # MightyMoose
119 | *.mm.*
120 | AutoTest.Net/
121 |
122 | # Web workbench (sass)
123 | .sass-cache/
124 |
125 | # Installshield output folder
126 | [Ee]xpress/
127 |
128 | # DocProject is a documentation generator add-in
129 | DocProject/buildhelp/
130 | DocProject/Help/*.HxT
131 | DocProject/Help/*.HxC
132 | DocProject/Help/*.hhc
133 | DocProject/Help/*.hhk
134 | DocProject/Help/*.hhp
135 | DocProject/Help/Html2
136 | DocProject/Help/html
137 |
138 | # Click-Once directory
139 | publish/
140 |
141 | # Publish Web Output
142 | *.[Pp]ublish.xml
143 | *.azurePubxml
144 | # TODO: Comment the next line if you want to checkin your web deploy settings
145 | # but database connection strings (with potential passwords) will be unencrypted
146 | #*.pubxml
147 | *.publishproj
148 |
149 | # Microsoft Azure Web App publish settings. Comment the next line if you want to
150 | # checkin your Azure Web App publish settings, but sensitive information contained
151 | # in these scripts will be unencrypted
152 | PublishScripts/
153 |
154 | # NuGet Packages
155 | *.nupkg
156 | # The packages folder can be ignored because of Package Restore
157 | **/packages/*
158 | # except build/, which is used as an MSBuild target.
159 | !**/packages/build/
160 | # Uncomment if necessary however generally it will be regenerated when needed
161 | #!**/packages/repositories.config
162 | # NuGet v3's project.json files produces more ignoreable files
163 | *.nuget.props
164 | *.nuget.targets
165 |
166 | # Microsoft Azure Build Output
167 | csx/
168 | *.build.csdef
169 |
170 | # Microsoft Azure Emulator
171 | ecf/
172 | rcf/
173 |
174 | # Windows Store app package directories and files
175 | AppPackages/
176 | BundleArtifacts/
177 | Package.StoreAssociation.xml
178 | _pkginfo.txt
179 |
180 | # Visual Studio cache files
181 | # files ending in .cache can be ignored
182 | *.[Cc]ache
183 | # but keep track of directories ending in .cache
184 | !*.[Cc]ache/
185 |
186 | # Others
187 | ClientBin/
188 | ~$*
189 | *~
190 | *.dbmdl
191 | *.dbproj.schemaview
192 | *.jfm
193 | *.pfx
194 | *.publishsettings
195 | node_modules/
196 | orleans.codegen.cs
197 |
198 | # Since there are multiple workflows, uncomment next line to ignore bower_components
199 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
200 | #bower_components/
201 |
202 | # RIA/Silverlight projects
203 | Generated_Code/
204 |
205 | # Backup & report files from converting an old project file
206 | # to a newer Visual Studio version. Backup files are not needed,
207 | # because we have git ;-)
208 | _UpgradeReport_Files/
209 | Backup*/
210 | UpgradeLog*.XML
211 | UpgradeLog*.htm
212 |
213 | # SQL Server files
214 | *.mdf
215 | *.ldf
216 |
217 | # Business Intelligence projects
218 | *.rdl.data
219 | *.bim.layout
220 | *.bim_*.settings
221 |
222 | # Microsoft Fakes
223 | FakesAssemblies/
224 |
225 | # GhostDoc plugin setting file
226 | *.GhostDoc.xml
227 |
228 | # Node.js Tools for Visual Studio
229 | .ntvs_analysis.dat
230 |
231 | # Visual Studio 6 build log
232 | *.plg
233 |
234 | # Visual Studio 6 workspace options file
235 | *.opt
236 |
237 | # Visual Studio LightSwitch build output
238 | **/*.HTMLClient/GeneratedArtifacts
239 | **/*.DesktopClient/GeneratedArtifacts
240 | **/*.DesktopClient/ModelManifest.xml
241 | **/*.Server/GeneratedArtifacts
242 | **/*.Server/ModelManifest.xml
243 | _Pvt_Extensions
244 |
245 | # Paket dependency manager
246 | .paket/paket.exe
247 | paket-files/
248 |
249 | # FAKE - F# Make
250 | .fake/
251 |
252 | # JetBrains Rider
253 | .idea/
254 | *.sln.iml
255 |
256 | # CodeRush
257 | .cr/
258 |
259 | # Python Tools for Visual Studio (PTVS)
260 | __pycache__/
261 | *.pyc
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 |
2 | # [0.15.18162.3](https://github.com/Shinigami92/Clickami/compare/v0.15.16276.2...v0.15.18162.3) (2018-06-11)
3 |
4 |
5 |
6 | # [0.15.16276.2](https://github.com/Shinigami92/Clickami/compare/v0.15.16276.2...v0.15.16276.2) (2016-10-02)
7 |
8 | - Initial Version
9 |
--------------------------------------------------------------------------------
/FileExplorer.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio 15
4 | VisualStudioVersion = 15.0.27703.2026
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FileExplorer", "FileExplorer\FileExplorer.csproj", "{2D9E5278-23FE-4A1A-A842-69C04BE69915}"
7 | EndProject
8 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{470DDF88-F00A-492A-B2D4-61793F914D46}"
9 | ProjectSection(SolutionItems) = preProject
10 | .editorconfig = .editorconfig
11 | EndProjectSection
12 | EndProject
13 | Global
14 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
15 | Debug|ARM = Debug|ARM
16 | Debug|x64 = Debug|x64
17 | Debug|x86 = Debug|x86
18 | Release|ARM = Release|ARM
19 | Release|x64 = Release|x64
20 | Release|x86 = Release|x86
21 | EndGlobalSection
22 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
23 | {2D9E5278-23FE-4A1A-A842-69C04BE69915}.Debug|ARM.ActiveCfg = Debug|ARM
24 | {2D9E5278-23FE-4A1A-A842-69C04BE69915}.Debug|ARM.Build.0 = Debug|ARM
25 | {2D9E5278-23FE-4A1A-A842-69C04BE69915}.Debug|ARM.Deploy.0 = Debug|ARM
26 | {2D9E5278-23FE-4A1A-A842-69C04BE69915}.Debug|x64.ActiveCfg = Debug|x64
27 | {2D9E5278-23FE-4A1A-A842-69C04BE69915}.Debug|x64.Build.0 = Debug|x64
28 | {2D9E5278-23FE-4A1A-A842-69C04BE69915}.Debug|x64.Deploy.0 = Debug|x64
29 | {2D9E5278-23FE-4A1A-A842-69C04BE69915}.Debug|x86.ActiveCfg = Debug|x86
30 | {2D9E5278-23FE-4A1A-A842-69C04BE69915}.Debug|x86.Build.0 = Debug|x86
31 | {2D9E5278-23FE-4A1A-A842-69C04BE69915}.Debug|x86.Deploy.0 = Debug|x86
32 | {2D9E5278-23FE-4A1A-A842-69C04BE69915}.Release|ARM.ActiveCfg = Release|ARM
33 | {2D9E5278-23FE-4A1A-A842-69C04BE69915}.Release|ARM.Build.0 = Release|ARM
34 | {2D9E5278-23FE-4A1A-A842-69C04BE69915}.Release|ARM.Deploy.0 = Release|ARM
35 | {2D9E5278-23FE-4A1A-A842-69C04BE69915}.Release|x64.ActiveCfg = Release|x64
36 | {2D9E5278-23FE-4A1A-A842-69C04BE69915}.Release|x64.Build.0 = Release|x64
37 | {2D9E5278-23FE-4A1A-A842-69C04BE69915}.Release|x64.Deploy.0 = Release|x64
38 | {2D9E5278-23FE-4A1A-A842-69C04BE69915}.Release|x86.ActiveCfg = Release|x86
39 | {2D9E5278-23FE-4A1A-A842-69C04BE69915}.Release|x86.Build.0 = Release|x86
40 | {2D9E5278-23FE-4A1A-A842-69C04BE69915}.Release|x86.Deploy.0 = Release|x86
41 | EndGlobalSection
42 | GlobalSection(SolutionProperties) = preSolution
43 | HideSolutionNode = FALSE
44 | EndGlobalSection
45 | GlobalSection(ExtensibilityGlobals) = postSolution
46 | SolutionGuid = {A63A3F18-2D58-4F26-84DE-6B69B4A19CDB}
47 | EndGlobalSection
48 | EndGlobal
49 |
--------------------------------------------------------------------------------
/FileExplorer/App.xaml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/FileExplorer/App.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Windows.ApplicationModel;
3 | using Windows.ApplicationModel.Activation;
4 | using Windows.UI.Xaml;
5 | using Windows.UI.Xaml.Controls;
6 | using Windows.UI.Xaml.Navigation;
7 |
8 | namespace FileExplorer
9 | {
10 | ///
11 | /// Provides application-specific behavior to supplement the default Application class.
12 | ///
13 | sealed partial class App : Application
14 | {
15 | ///
16 | /// Initializes the singleton application object. This is the first line of authored code
17 | /// executed, and as such is the logical equivalent of main() or WinMain().
18 | ///
19 | public App()
20 | {
21 | this.InitializeComponent();
22 | this.Suspending += this.OnSuspending;
23 | }
24 |
25 | ///
26 | /// Invoked when the application is launched normally by the end user. Other entry points
27 | /// will be used such as when the application is launched to open a specific file.
28 | ///
29 | /// Details about the launch request and process.
30 | protected override void OnLaunched(LaunchActivatedEventArgs e)
31 | {
32 | // Do not repeat app initialization when the Window already has content,
33 | // just ensure that the window is active
34 | if (!(Window.Current.Content is Frame rootFrame))
35 | {
36 | // Create a Frame to act as the navigation context and navigate to the first page
37 | rootFrame = new Frame();
38 |
39 | rootFrame.NavigationFailed += this.OnNavigationFailed;
40 |
41 | if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)
42 | {
43 | //TODO: Load state from previously suspended application
44 | }
45 |
46 | // Place the frame in the current Window
47 | Window.Current.Content = rootFrame;
48 | }
49 |
50 | if (e.PrelaunchActivated == false)
51 | {
52 | if (rootFrame.Content == null)
53 | {
54 | // When the navigation stack isn't restored navigate to the first page,
55 | // configuring the new page by passing required information as a navigation
56 | // parameter
57 | rootFrame.Navigate(typeof(MainPage), e.Arguments);
58 | }
59 | // Ensure the current window is active
60 | Window.Current.Activate();
61 | }
62 | }
63 |
64 | ///
65 | /// Invoked when Navigation to a certain page fails
66 | ///
67 | /// The Frame which failed navigation
68 | /// Details about the navigation failure
69 | private void OnNavigationFailed(object sender, NavigationFailedEventArgs e)
70 | {
71 | throw new Exception($"Failed to load Page ${e.SourcePageType.FullName}");
72 | }
73 |
74 | ///
75 | /// Invoked when application execution is being suspended. Application state is saved
76 | /// without knowing whether the application will be terminated or resumed with the contents
77 | /// of memory still intact.
78 | ///
79 | /// The source of the suspend request.
80 | /// Details about the suspend request.
81 | private void OnSuspending(object sender, SuspendingEventArgs e)
82 | {
83 | var deferral = e.SuspendingOperation.GetDeferral();
84 | //TODO: Save application state and stop any background activity
85 | deferral.Complete();
86 | }
87 | }
88 | }
89 |
--------------------------------------------------------------------------------
/FileExplorer/Assets/LockScreenLogo.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Shinigami92/FileExplorer/eb78d5ef4b80a0d43fce40aacd5b6c0ba225ed0e/FileExplorer/Assets/LockScreenLogo.scale-200.png
--------------------------------------------------------------------------------
/FileExplorer/Assets/SplashScreen.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Shinigami92/FileExplorer/eb78d5ef4b80a0d43fce40aacd5b6c0ba225ed0e/FileExplorer/Assets/SplashScreen.scale-200.png
--------------------------------------------------------------------------------
/FileExplorer/Assets/Square150x150Logo.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Shinigami92/FileExplorer/eb78d5ef4b80a0d43fce40aacd5b6c0ba225ed0e/FileExplorer/Assets/Square150x150Logo.scale-200.png
--------------------------------------------------------------------------------
/FileExplorer/Assets/Square44x44Logo.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Shinigami92/FileExplorer/eb78d5ef4b80a0d43fce40aacd5b6c0ba225ed0e/FileExplorer/Assets/Square44x44Logo.scale-200.png
--------------------------------------------------------------------------------
/FileExplorer/Assets/Square44x44Logo.targetsize-24_altform-unplated.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Shinigami92/FileExplorer/eb78d5ef4b80a0d43fce40aacd5b6c0ba225ed0e/FileExplorer/Assets/Square44x44Logo.targetsize-24_altform-unplated.png
--------------------------------------------------------------------------------
/FileExplorer/Assets/StoreLogo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Shinigami92/FileExplorer/eb78d5ef4b80a0d43fce40aacd5b6c0ba225ed0e/FileExplorer/Assets/StoreLogo.png
--------------------------------------------------------------------------------
/FileExplorer/Assets/Wide310x150Logo.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Shinigami92/FileExplorer/eb78d5ef4b80a0d43fce40aacd5b6c0ba225ed0e/FileExplorer/Assets/Wide310x150Logo.scale-200.png
--------------------------------------------------------------------------------
/FileExplorer/Converters/ThumbnailToImageConverter.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Windows.Storage.FileProperties;
3 | using Windows.UI.Xaml.Data;
4 | using Windows.UI.Xaml.Media;
5 | using Windows.UI.Xaml.Media.Imaging;
6 |
7 | namespace FileExplorer.Converters
8 | {
9 | public class ThumbnailToImageConverter : IValueConverter
10 | {
11 | public object Convert(object value, Type targetType, object parameter, string language)
12 | {
13 | if (value != null)
14 | {
15 | if (value.GetType() != typeof(StorageItemThumbnail))
16 | {
17 | throw new ArgumentException("Expected a thumbnail");
18 | }
19 | else if (targetType != typeof(ImageSource))
20 | {
21 | throw new ArgumentException("What are you trying to convert to here?");
22 | }
23 | var thumbnail = value as StorageItemThumbnail;
24 | thumbnail.Seek(0);
25 | var image = new BitmapImage();
26 | image.SetSource(thumbnail);
27 | return image;
28 | }
29 | return null;
30 | }
31 |
32 | public object ConvertBack(object value, Type targetType, object parameter, string language)
33 | {
34 | throw new NotImplementedException();
35 | }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/FileExplorer/Converters/VisibleOnExistsConverter.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Windows.UI.Xaml;
3 | using Windows.UI.Xaml.Data;
4 |
5 | namespace FileExplorer.Converters
6 | {
7 | public class VisibleOnExistsConverter : IValueConverter
8 | {
9 | public object Convert(object value, Type targetType, object parameter, string language)
10 | {
11 | if (value != null)
12 | {
13 | if (value.GetType() == typeof(bool) && (bool)value == false)
14 | {
15 | return Visibility.Collapsed;
16 | }
17 | return Visibility.Visible;
18 | }
19 | return Visibility.Collapsed;
20 | }
21 |
22 | public object ConvertBack(object value, Type targetType, object parameter, string language)
23 | {
24 | throw new NotImplementedException();
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/FileExplorer/Converters/VisibleOnNullConverter.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Windows.UI.Xaml;
3 | using Windows.UI.Xaml.Data;
4 |
5 | namespace FileExplorer.Converters
6 | {
7 | public class VisibleOnNullConverter : IValueConverter
8 | {
9 | public object Convert(object value, Type targetType, object parameter, string language)
10 | {
11 | if (value != null)
12 | {
13 | if (value.GetType() == typeof(bool) && (bool)value == false)
14 | {
15 | return Visibility.Visible;
16 | }
17 | return Visibility.Collapsed;
18 | }
19 | return Visibility.Visible;
20 | }
21 |
22 | public object ConvertBack(object value, Type targetType, object parameter, string language)
23 | {
24 | throw new NotImplementedException();
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/FileExplorer/FileExplorer.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | x86
7 | {2D9E5278-23FE-4A1A-A842-69C04BE69915}
8 | AppContainerExe
9 | Properties
10 | FileExplorer
11 | FileExplorer
12 | en-US
13 | UAP
14 | 10.0.17134.0
15 | 10.0.17134.0
16 | 14
17 | 512
18 | {A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
19 | true
20 | FileExplorer_TemporaryKey.pfx
21 |
22 |
23 | true
24 | bin\x86\Debug\
25 | DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP
26 | ;2008
27 | full
28 | x86
29 | false
30 | prompt
31 | true
32 |
33 |
34 | bin\x86\Release\
35 | TRACE;NETFX_CORE;WINDOWS_UWP
36 | true
37 | ;2008
38 | pdbonly
39 | x86
40 | false
41 | prompt
42 | true
43 | true
44 |
45 |
46 | true
47 | bin\ARM\Debug\
48 | DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP
49 | ;2008
50 | full
51 | ARM
52 | false
53 | prompt
54 | true
55 |
56 |
57 | bin\ARM\Release\
58 | TRACE;NETFX_CORE;WINDOWS_UWP
59 | true
60 | ;2008
61 | pdbonly
62 | ARM
63 | false
64 | prompt
65 | true
66 | true
67 |
68 |
69 | true
70 | bin\x64\Debug\
71 | DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP
72 | ;2008
73 | full
74 | x64
75 | false
76 | prompt
77 | true
78 | AllRules.ruleset
79 | false
80 | false
81 |
82 |
83 | bin\x64\Release\
84 | TRACE;NETFX_CORE;WINDOWS_UWP
85 | true
86 | ;2008
87 | pdbonly
88 | x64
89 | false
90 | prompt
91 | true
92 | true
93 |
94 |
95 | PackageReference
96 |
97 |
98 |
99 | App.xaml
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 | MainPage.xaml
108 |
109 |
110 |
111 |
112 |
113 | Designer
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 | MSBuild:Compile
132 | Designer
133 |
134 |
135 | MSBuild:Compile
136 | Designer
137 |
138 |
139 |
140 |
141 | 6.1.5
142 |
143 |
144 |
145 | 14.0
146 |
147 |
148 |
155 |
--------------------------------------------------------------------------------
/FileExplorer/MainPage.xaml:
--------------------------------------------------------------------------------
1 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
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 |
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 |
148 |
150 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 |
173 |
--------------------------------------------------------------------------------
/FileExplorer/MainPage.xaml.cs:
--------------------------------------------------------------------------------
1 | using FileExplorer.Models;
2 | using System;
3 | using System.Collections.Generic;
4 | using System.Collections.ObjectModel;
5 | using System.Diagnostics;
6 | using System.Linq;
7 | using System.Threading.Tasks;
8 | using Windows.Storage;
9 | using Windows.Storage.AccessCache;
10 | using Windows.Storage.Pickers;
11 | using Windows.System;
12 | using Windows.UI;
13 | using Windows.UI.Text;
14 | using Windows.UI.Xaml;
15 | using Windows.UI.Xaml.Controls;
16 | using Windows.UI.Xaml.Media;
17 |
18 | // The Blank Page item template is documented at https://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409
19 |
20 | namespace FileExplorer
21 | {
22 | ///
23 | /// An empty page that can be used on its own or navigated to within a Frame.
24 | ///
25 | public sealed partial class MainPage : Page
26 | {
27 | private StorageFolder currentFolder = null;
28 | private ObservableCollection MenuFolderItems = new ObservableCollection();
29 | private ObservableCollection FileItems = new ObservableCollection();
30 |
31 | public MainPage()
32 | {
33 | this.InitializeComponent();
34 | StorageApplicationPermissions.FutureAccessList.Entries.ToList().ForEach(e => Debug.WriteLine($"Metadata: {e.Metadata} Token: {e.Token}"));
35 | //StorageApplicationPermissions.FutureAccessList.Clear();
36 | }
37 |
38 | private void MenuButtonMainLeft_Click(object sender, RoutedEventArgs e)
39 | {
40 | this.MenuSplitViewMainLeft.IsPaneOpen = !this.MenuSplitViewMainLeft.IsPaneOpen;
41 | }
42 |
43 | private async void FileListView_ItemClick(object sender, ItemClickEventArgs e)
44 | {
45 | var fi = e.ClickedItem as FileItem;
46 | var storageItem = fi.StorageItem;
47 | Debug.WriteLine($"Clicked on: {fi.Name}");
48 | Debug.WriteLine(fi.ToolTipText);
49 | if (fi.IsFolder)
50 | {
51 | await NavigateToFolder(storageItem as StorageFolder);
52 | }
53 | }
54 |
55 | private async void MenuButtonMainAddFolder_ItemClick(object sender, ItemClickEventArgs e)
56 | {
57 | var folderPicker = new FolderPicker();
58 | folderPicker.FileTypeFilter.Add("*");
59 | folderPicker.SuggestedStartLocation = PickerLocationId.ComputerFolder;
60 | folderPicker.ViewMode = PickerViewMode.List;
61 | var folder = await folderPicker.PickSingleFolderAsync();
62 | if (folder != null)
63 | {
64 | StorageApplicationPermissions.FutureAccessList.Add(folder, folder.Path);
65 | Debug.WriteLine($"Opened the folder: {folder.DisplayName}");
66 | this.MenuFolderItems.Add(new MenuFolderItem(folder));
67 | }
68 | this.MenuButtonMainAddFolder.SelectedIndex = -1;
69 | }
70 |
71 | private void MenuListViewItemRemove_Click(object sender, RoutedEventArgs e)
72 | {
73 | var source = e.OriginalSource as MenuFlyoutItem;
74 | Debug.WriteLine($"source.Tag: {source.Tag}");
75 | var storageFolder = source.Tag as StorageFolder;
76 | var f = this.MenuFolderItems.ToList().Find(item => item.Folder == storageFolder);
77 | var entry = StorageApplicationPermissions.FutureAccessList.Entries.ToList().Find(item => item.Metadata == f.Folder.Path);
78 | StorageApplicationPermissions.FutureAccessList.Remove(entry.Token);
79 | this.MenuFolderItems.Remove(f);
80 | Debug.WriteLine($"Removed FolderItem with Name: {entry.Metadata} Token: {entry.Token}");
81 | }
82 |
83 | private async void MenuListViewFolders_Loaded(object sender, RoutedEventArgs e)
84 | {
85 | foreach (var entry in StorageApplicationPermissions.FutureAccessList.Entries.OrderBy(item => item.Metadata))
86 | {
87 | var folder = await StorageFolder.GetFolderFromPathAsync(entry.Metadata);
88 | StorageApplicationPermissions.FutureAccessList.Add(folder, folder.Path);
89 | Debug.WriteLine($"Opened the folder: {folder.DisplayName}");
90 | this.MenuFolderItems.Add(new MenuFolderItem(folder));
91 | }
92 | }
93 |
94 | private async void MenuListViewFolders_ItemClick(object sender, ItemClickEventArgs e)
95 | {
96 | var f = e.ClickedItem as MenuFolderItem;
97 | Debug.WriteLine($"Clicked on: {f.DisplayName}");
98 | await NavigateToFolder(f.Folder);
99 | }
100 |
101 | private async void FolderUpButton_Click(object sender, RoutedEventArgs e)
102 | {
103 | if (this.currentFolder != null)
104 | {
105 | var parentFolder = await this.currentFolder.GetParentAsync();
106 | await NavigateToFolder(parentFolder);
107 | }
108 | else
109 | {
110 | Debug.WriteLine("There was no currentFolder");
111 | }
112 | }
113 |
114 | private async void UpdateCurrentFolderPathPanel()
115 | {
116 | if (this.currentFolder != null)
117 | {
118 | this.CurrentFolderPathPanel.Children.Clear();
119 |
120 | var folder = this.currentFolder;
121 | var parts = new List { folder };
122 |
123 | try
124 | {
125 | while ((folder = await folder.GetParentAsync()) != null)
126 | {
127 | parts.Add(folder);
128 | }
129 | }
130 | catch (Exception)
131 | {
132 | Debug.WriteLine("You don't have access permissions to this parent folder!");
133 | }
134 |
135 | parts.Reverse();
136 | this.CurrentFolderPathPanel.Children.Add(BuildCurrentFolderPathButton(parts.ElementAt(0)));
137 | for (var i = 1; i < parts.Count; i++)
138 | {
139 | this.CurrentFolderPathPanel.Children.Add(BuildCurrentFolderPathSeperator());
140 | this.CurrentFolderPathPanel.Children.Add(BuildCurrentFolderPathButton(parts.ElementAt(i)));
141 | }
142 | }
143 | }
144 |
145 | private Button BuildCurrentFolderPathButton(StorageFolder folder)
146 | {
147 | var btn = new Button
148 | {
149 | Content = folder.Name.TrimEnd('\\'),
150 | Tag = folder,
151 | FontSize = 20,
152 | FontWeight = FontWeights.SemiBold,
153 | Background = new SolidColorBrush(Colors.Transparent),
154 | VerticalAlignment = VerticalAlignment.Stretch,
155 | BorderThickness = new Thickness()
156 | };
157 | btn.Click += this.NavigateTo_Click;
158 | return btn;
159 | }
160 |
161 | private async void NavigateTo_Click(object sender, RoutedEventArgs e)
162 | {
163 | await NavigateToFolder((e.OriginalSource as Button).Tag as StorageFolder);
164 | }
165 |
166 | private TextBlock BuildCurrentFolderPathSeperator()
167 | {
168 | var tb = new TextBlock
169 | {
170 | FontFamily = new FontFamily("Segoe MDL2 Assets"),
171 | Text = "\xE937",
172 | FontSize = 12,
173 | Padding = new Thickness(4, 4, 0, 0),
174 | VerticalAlignment = VerticalAlignment.Center
175 | };
176 | return tb;
177 | }
178 |
179 | private void CommandBar_Opening(object sender, object e)
180 | {
181 | this.FolderUpButton.LabelPosition = CommandBarLabelPosition.Default;
182 | }
183 |
184 | private void CommandBar_Closing(object sender, object e)
185 | {
186 | this.FolderUpButton.LabelPosition = CommandBarLabelPosition.Collapsed;
187 | }
188 |
189 | private void MenuSplitViewMainLeft_SizeChanged(object sender, SizeChangedEventArgs e)
190 | {
191 | if (e.NewSize.Width <= 640)
192 | {
193 | this.MenuSplitViewMainLeft.DisplayMode = SplitViewDisplayMode.CompactOverlay;
194 | }
195 | else
196 | {
197 | this.MenuSplitViewMainLeft.DisplayMode = SplitViewDisplayMode.CompactInline;
198 | }
199 | }
200 |
201 | private async void RefreshFolderButton_Click(object sender, RoutedEventArgs e)
202 | {
203 | await NavigateToFolder(this.currentFolder);
204 | }
205 |
206 | private async Task NavigateToFolder(StorageFolder folder)
207 | {
208 | this.FileItems.Clear();
209 | if (folder != null)
210 | {
211 | var folderItems = await folder.GetItemsAsync();
212 | foreach (var folderItem in folderItems)
213 | {
214 | var fileItem = new FileItem(folderItem);
215 | await fileItem.FetchProperties();
216 | this.FileItems.Add(fileItem);
217 | }
218 | }
219 | else
220 | {
221 | Debug.WriteLine("folder was null");
222 | }
223 | this.currentFolder = folder;
224 | UpdateCurrentFolderPathPanel();
225 | }
226 |
227 | private void ToggleViewButton_Click(object sender, RoutedEventArgs e)
228 | {
229 | if (this.FileItemsListView.Visibility == Visibility.Visible)
230 | {
231 | this.ToggleViewButton.Icon = new SymbolIcon(Symbol.List);
232 | this.FileItemsListView.Visibility = Visibility.Collapsed;
233 | this.FileItemsGridView.Visibility = Visibility.Visible;
234 | }
235 | else
236 | {
237 | this.ToggleViewButton.Icon = new SymbolIcon(Symbol.ViewAll);
238 | this.FileItemsListView.Visibility = Visibility.Visible;
239 | this.FileItemsGridView.Visibility = Visibility.Collapsed;
240 | }
241 | }
242 |
243 | private static readonly LauncherOptions OpenWithLaucherOptions = new LauncherOptions() { DisplayApplicationPicker = true };
244 | private async void FileItemOpen_Click(object sender, RoutedEventArgs e)
245 | {
246 | var source = e.OriginalSource as MenuFlyoutItem;
247 | var storageItem = source.Tag as IStorageItem;
248 | Debug.WriteLine($"storageItem = {storageItem}");
249 | if (storageItem.IsOfType(StorageItemTypes.File))
250 | {
251 | var storageFile = storageItem as StorageFile;
252 | var success = await Launcher.LaunchFileAsync(storageFile);
253 | if (!success)
254 | {
255 | success = await Launcher.LaunchFileAsync(storageFile, OpenWithLaucherOptions);
256 | }
257 | Debug.WriteLineIf(!success, "Launching the file failed");
258 | }
259 | else
260 | {
261 | await NavigateToFolder(storageItem as StorageFolder);
262 | }
263 | }
264 | }
265 | }
266 |
--------------------------------------------------------------------------------
/FileExplorer/Models/FileItem.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Diagnostics;
4 | using System.Linq;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 | using Windows.ApplicationModel.Resources;
8 | using Windows.Storage;
9 | using Windows.Storage.FileProperties;
10 |
11 | namespace FileExplorer.Models
12 | {
13 | public class FileItem
14 | {
15 | private static readonly IReadOnlyList SizeEndings = new List() { "B", "KB", "MB", "GB", "TB", "PB", "EB" };
16 | private static readonly IReadOnlyList ImageFileTypes = new List() { ".jpg", ".png", ".gif", ".bmp" };
17 |
18 | public IStorageItem StorageItem { get; set; }
19 | public bool IsFolder { get => this.StorageItem.IsOfType(StorageItemTypes.Folder); }
20 | public bool IsFile { get => this.StorageItem.IsOfType(StorageItemTypes.File); }
21 | public string Name { get => this.StorageItem.Name; }
22 | public string Icon { get => this.IsFolder ? "\xE8B7" : "\xE7C3"; }
23 | public string DateCreated { get => this.StorageItem.DateCreated.ToString(); }
24 | public string DateModified { get; private set; }
25 | public ulong Size { get; private set; }
26 | public StorageItemThumbnail Thumbnail { get; private set; }
27 | public string ToolTipText
28 | {
29 | get
30 | {
31 | var loader = ResourceLoader.GetForCurrentView();
32 | var result = $"{this.Name}\n{loader.GetString("FileItem_Created")}: {this.DateCreated}\n{loader.GetString("FileItem_Modified")}: {this.DateModified}";
33 | if (this.Size != 0)
34 | {
35 | result += $"\n{loader.GetString("FileItem_Size")}: ";
36 | double tmpSize = this.Size;
37 | var i = 0;
38 | while (tmpSize > 1024)
39 | {
40 | tmpSize /= 1024;
41 | i++;
42 | }
43 | result += $"{tmpSize.ToString("0.00")} {SizeEndings.ElementAt(i)}";
44 | }
45 | return result;
46 | }
47 | }
48 |
49 | public FileItem(IStorageItem storageItem)
50 | {
51 | this.StorageItem = storageItem;
52 | }
53 |
54 | public async Task FetchProperties()
55 | {
56 | var properties = await this.StorageItem.GetBasicPropertiesAsync();
57 | this.DateModified = properties.DateModified.ToString();
58 | this.Size = properties.Size;
59 | if (this.IsFile)
60 | {
61 | var storageFile = this.StorageItem as StorageFile;
62 | var fileType = storageFile.FileType.ToLower();
63 | Debug.WriteLine(fileType);
64 | if (ImageFileTypes.Contains(fileType))
65 | {
66 | this.Thumbnail = await storageFile.GetThumbnailAsync(ThumbnailMode.PicturesView, 110, ThumbnailOptions.UseCurrentScale);
67 | }
68 | }
69 | }
70 | }
71 | }
72 |
--------------------------------------------------------------------------------
/FileExplorer/Models/MenuFolderItem.cs:
--------------------------------------------------------------------------------
1 | using Windows.Storage;
2 |
3 | namespace FileExplorer.Models
4 | {
5 | public class MenuFolderItem
6 | {
7 | public StorageFolder Folder { get; set; }
8 | public string DisplayName { get => this.Folder.DisplayName; }
9 | public string Icon { get => this.Folder.Path.Length <= 3 ? "\xEDA2" : "\xE8B7"; }
10 |
11 | public MenuFolderItem(StorageFolder folder)
12 | {
13 | this.Folder = folder;
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/FileExplorer/Package.appxmanifest:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | FileExplorer
7 | Shinigami
8 | Assets\StoreLogo.png
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/FileExplorer/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.InteropServices;
3 |
4 | // General Information about an assembly is controlled through the following
5 | // set of attributes. Change these attribute values to modify the information
6 | // associated with an assembly.
7 | [assembly: AssemblyTitle("FileExplorer")]
8 | [assembly: AssemblyDescription("")]
9 | [assembly: AssemblyConfiguration("")]
10 | [assembly: AssemblyCompany("")]
11 | [assembly: AssemblyProduct("FileExplorer")]
12 | [assembly: AssemblyCopyright("Copyright © 2016-2018")]
13 | [assembly: AssemblyTrademark("")]
14 | [assembly: AssemblyCulture("")]
15 |
16 | // Version information for an assembly consists of the following four values:
17 | //
18 | // Major Version
19 | // Minor Version
20 | // Build Number
21 | // Revision
22 | //
23 | // You can specify all the values or you can default the Build and Revision Numbers
24 | // by using the '*' as shown below:
25 | // [assembly: AssemblyVersion("1.0.*")]
26 | [assembly: AssemblyVersion("0.15.*")]
27 | [assembly: AssemblyFileVersion("0.15.18162.3")]
28 | [assembly: AssemblyInformationalVersion("0.15 Alpha")]
29 | [assembly: ComVisible(false)]
30 |
--------------------------------------------------------------------------------
/FileExplorer/Properties/Default.rd.xml:
--------------------------------------------------------------------------------
1 |
17 |
18 |
19 |
20 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/FileExplorer/Strings/de-DE/Resources.resw:
--------------------------------------------------------------------------------
1 |
2 |
3 |
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 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 | Erstelldatum
122 |
123 |
124 | Name
125 |
126 |
127 | Erstellt
128 |
129 |
130 | Geändert
131 |
132 |
133 | Größe
134 |
135 |
136 | Ordner hoch
137 |
138 |
139 | Ordner hoch
140 |
141 |
142 | Ordner hinzufügen...
143 |
144 |
145 | aktualisieren
146 |
147 |
148 | aktualisieren
149 |
150 |
151 | Ansicht umschalten
152 |
153 |
154 | Ansicht umschalten
155 |
156 |
--------------------------------------------------------------------------------
/FileExplorer/Strings/en-US/Resources.resw:
--------------------------------------------------------------------------------
1 |
2 |
3 |
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 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 | Date Created
122 |
123 |
124 | Name
125 |
126 |
127 | Created
128 |
129 |
130 | Modified
131 |
132 |
133 | Size
134 |
135 |
136 | Folder Up
137 |
138 |
139 | Folder Up
140 |
141 |
142 | Add Folder...
143 |
144 |
145 | Refresh
146 |
147 |
148 | Refresh
149 |
150 |
151 | Toggle View
152 |
153 |
154 | Toggle View
155 |
156 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright © 2016 - 2018 Christopher Quadflieg
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # FileExplorer
2 |
3 | This FileExplorer was built by Christopher Quadflieg aka Shinigami.
4 | It was completly inspired by [Metroversal's Windows 10 - Dark Theme](https://metroversal.deviantart.com/art/Windows-10-Dark-Theme-515479771)
5 |
6 | ## Metroversal's Windows 10 - Dark Theme
7 | 
8 |
9 | ## Screenshot of the real program
10 | 
11 |
12 | ## Changelog
13 |
14 | [Learn about the latest improvements](CHANGELOG.md).
15 |
--------------------------------------------------------------------------------