UnicodeString TCopyParamType::ValidLocalPath(const UnicodeString & APath) const { UnicodeString Result; UnicodeString Path = APath; while (!Path.IsEmpty()) { if (!Result.IsEmpty()) { Result += L"\\"; } Result += ValidLocalFileName(CutToChar(Path, L'\\', false)); } return Result; }
UnicodeString TCopyParamType::ChangeFileName(const UnicodeString & AFileName, TOperationSide Side, bool FirstLevel) const { UnicodeString FileName = AFileName; if (FirstLevel) { FileName = MaskFileName(FileName, GetFileMask()); } switch (GetFileNameCase()) { case ncUpperCase: FileName = FileName.UpperCase(); break; case ncLowerCase: FileName = FileName.LowerCase(); break; case ncFirstUpperCase: FileName = FileName.SubString(1, 1).UpperCase() + FileName.SubString(2, FileName.Length() - 1).LowerCase(); break; case ncLowerCaseShort: if ((FileName.Length() <= 12) && (FileName.Pos(L".") <= 9) && (FileName == FileName.UpperCase())) { FileName = FileName.LowerCase(); } break; case ncNoChange: default: /*nothing*/ break; } if (Side == osRemote) { FileName = ValidLocalFileName(FileName); } else { FileName = RestoreChars(FileName); } return FileName; }
//--------------------------------------------------------------------------- IShellLink * __fastcall CreateDesktopSessionShortCut( const UnicodeString & SessionName, UnicodeString Name, const UnicodeString & AdditionalParams, int SpecialFolder, int IconIndex, bool Return) { bool DefaultsOnly; UnicodeString InfoTip; bool IsFolder = StoredSessions->IsFolder(SessionName); bool IsWorkspace = StoredSessions->IsWorkspace(SessionName); if (IsFolder || IsWorkspace) { InfoTip = FMTLOAD( (IsFolder ? SHORTCUT_INFO_TIP_FOLDER : SHORTCUT_INFO_TIP_WORKSPACE), (SessionName)); if (Name.IsEmpty()) { // no slashes in filename Name = UnixExtractFileName(SessionName); } } else { TSessionData * SessionData = StoredSessions->ParseUrl(SessionName, NULL, DefaultsOnly); InfoTip = FMTLOAD(SHORTCUT_INFO_TIP, (SessionName, SessionData->InfoTip)); if (Name.IsEmpty()) { // no slashes in filename Name = SessionData->LocalName; } delete SessionData; } return CreateDesktopShortCut(ValidLocalFileName(Name), Application->ExeName, FORMAT(L"\"%s\"%s%s", (SessionName, (AdditionalParams.IsEmpty() ? L"" : L" "), AdditionalParams)), InfoTip, SpecialFolder, IconIndex, Return); }