aboutsummaryrefslogtreecommitdiffstats
path: root/src/base/UPathUtils.pas
diff options
context:
space:
mode:
Diffstat (limited to 'src/base/UPathUtils.pas')
-rw-r--r--src/base/UPathUtils.pas196
1 files changed, 0 insertions, 196 deletions
diff --git a/src/base/UPathUtils.pas b/src/base/UPathUtils.pas
deleted file mode 100644
index c2bcdd4b..00000000
--- a/src/base/UPathUtils.pas
+++ /dev/null
@@ -1,196 +0,0 @@
-{* UltraStar Deluxe - Karaoke Game
- *
- * UltraStar Deluxe is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- *
- * $URL$
- * $Id$
- *}
-
-unit UPathUtils;
-
-interface
-
-{$IFDEF FPC}
- {$MODE Delphi}
-{$ENDIF}
-
-{$I switches.inc}
-
-uses
- SysUtils,
- Classes,
- UPath;
-
-var
- // Absolute Paths
- GamePath: IPath;
- SoundPath: IPath;
- SongPaths: IInterfaceList;
- LogPath: IPath;
- ThemePath: IPath;
- SkinsPath: IPath;
- ScreenshotsPath: IPath;
- CoverPaths: IInterfaceList;
- LanguagesPath: IPath;
- PluginPath: IPath;
- VisualsPath: IPath;
- FontPath: IPath;
- ResourcesPath: IPath;
- PlaylistPath: IPath;
-
-function FindPath(out PathResult: IPath; const RequestedPath: IPath; NeedsWritePermission: boolean): boolean;
-procedure InitializePaths;
-procedure AddSongPath(const Path: IPath);
-
-implementation
-
-uses
- StrUtils,
- UPlatform,
- UCommandLine,
- ULog;
-
-procedure AddSpecialPath(var PathList: IInterfaceList; const Path: IPath);
-var
- Index: integer;
- PathAbs, PathTmp: IPath;
- OldPath, OldPathAbs, OldPathTmp: IPath;
-begin
- if (PathList = nil) then
- PathList := TInterfaceList.Create;
-
- if Path.Equals(PATH_NONE) or not Path.CreateDirectory(true) then
- Exit;
-
- PathTmp := Path.GetAbsolutePath();
- PathAbs := PathTmp.AppendPathDelim();
-
- // check if path or a part of the path was already added
- for Index := 0 to PathList.Count-1 do
- begin
- OldPath := PathList[Index] as IPath;
- OldPathTmp := OldPath.GetAbsolutePath();
- OldPathAbs := OldPathTmp.AppendPathDelim();
-
- // check if the new directory is a sub-directory of a previously added one.
- // This is also true, if both paths point to the same directories.
- if (OldPathAbs.IsChildOf(PathAbs, false) or OldPathAbs.Equals(PathAbs)) then
- begin
- // ignore the new path
- Exit;
- end;
-
- // check if a previously added directory is a sub-directory of the new one.
- if (PathAbs.IsChildOf(OldPathAbs, false)) then
- begin
- // replace the old with the new one.
- PathList[Index] := PathAbs;
- Exit;
- end;
- end;
-
- PathList.Add(PathAbs);
-end;
-
-procedure AddSongPath(const Path: IPath);
-begin
- AddSpecialPath(SongPaths, Path);
-end;
-
-procedure AddCoverPath(const Path: IPath);
-begin
- AddSpecialPath(CoverPaths, Path);
-end;
-
-(**
- * Initialize a path variable
- * After setting paths, make sure that paths exist
- *)
-function FindPath(
- out PathResult: IPath;
- const RequestedPath: IPath;
- NeedsWritePermission: boolean): boolean;
-begin
- Result := false;
-
- if (RequestedPath.Equals(PATH_NONE)) then
- Exit;
-
- // Make sure the directory exists
- if (not RequestedPath.CreateDirectory(true)) then
- begin
- PathResult := PATH_NONE;
- Exit;
- end;
-
- PathResult := RequestedPath.AppendPathDelim();
-
- if (NeedsWritePermission) and RequestedPath.IsReadOnly() then
- Exit;
-
- Result := true;
-end;
-
-(**
- * Function sets all absolute paths e.g. song path and makes sure the directorys exist
- *)
-procedure InitializePaths;
-var
- SharedPath, UserPath: IPath;
-begin
- // Log directory (must be writable)
- if (not FindPath(LogPath, Platform.GetLogPath, true)) then
- begin
- Log.FileOutputEnabled := false;
- Log.LogWarn('Log directory "'+ Platform.GetLogPath.ToNative +'" not available', 'InitializePaths');
- end;
-
- SharedPath := Platform.GetGameSharedPath;
- UserPath := Platform.GetGameUserPath;
-
- FindPath(SoundPath, SharedPath.Append('sounds'), false);
- FindPath(ThemePath, SharedPath.Append('themes'), false);
- FindPath(SkinsPath, SharedPath.Append('themes'), false);
- FindPath(LanguagesPath, SharedPath.Append('languages'), false);
- FindPath(PluginPath, SharedPath.Append('plugins'), false);
- FindPath(VisualsPath, SharedPath.Append('visuals'), false);
- FindPath(FontPath, SharedPath.Append('fonts'), false);
- FindPath(ResourcesPath, SharedPath.Append('resources'), false);
-
- // Playlists are not shared as we need one directory to write too
- FindPath(PlaylistPath, UserPath.Append('playlists'), true);
-
- // Screenshot directory (must be writable)
- if (not FindPath(ScreenshotsPath, UserPath.Append('screenshots'), true)) then
- begin
- Log.LogWarn('Screenshot directory "'+ UserPath.ToNative +'" not available', 'InitializePaths');
- end;
-
- // Add song paths
- AddSongPath(Params.SongPath);
- AddSongPath(SharedPath.Append('songs'));
- AddSongPath(UserPath.Append('songs'));
-
- // Add category cover paths
- AddCoverPath(SharedPath.Append('covers'));
- AddCoverPath(UserPath.Append('covers'));
-end;
-
-end.