📄 tools.cs
字号:
/// <summary>
/// Gets the available Themes.
/// </summary>
public static string[] AvailableThemes {
get {
string[] dirs = Directory.GetDirectories(Settings.ThemesDirectory);
string[] res = new string[dirs.Length];
for(int i = 0; i < dirs.Length; i++) {
if(dirs[i].EndsWith("\\")) dirs[i] = dirs[i].Substring(0, dirs[i].Length - 1);
res[i] = dirs[i].Substring(dirs[i].LastIndexOf("\\") + 1);
}
return res;
}
}
/// <summary>
/// Gets the available Cultures.
/// </summary>
public static string[] AvailableCultures {
get {
List<string> c = new List<string>();
c.Add("it-IT|Italiano (Italian)");
c.Add("de-DE|Deutsch (German)");
c.Add("fr-FR|Français (French)");
c.Add("es-ES|Español (Spanish)");
c.Add("ru-RU|Русский (Russian)");
c.Add("pt-BR|Português, Brasil (Brazilian Portuguese)");
c.Add("zh-CN|Chinese");
c.Add("cs-CZ|Česky (Czech)");
c.Add("sk-SK|Slovenčina (Slovak)");
return c.ToArray();
}
}
/// <summary>
/// Aligns a Date and Time with the User's preferences (if any).
/// </summary>
/// <param name="dt">The Date and Time.</param>
/// <param name="sh">The time shift in minutes respect to the Greenwich time.</param>
/// <returns>The aligned Date and Time.</returns>
public static DateTime AlignWithPreferences(DateTime dt, string sh) {
int shift;
if(sh== null || sh.Length == 0) {
shift = int.Parse(Settings.DefaultTimezone);
}
else {
shift = int.Parse(sh);
}
return dt.ToUniversalTime().AddMinutes(shift + (dt.IsDaylightSavingTime() ? 60 : 0));
}
/// <summary>
/// Computes the Hash of a Username, mixing it with other data, in order to avoid illegal Account activations.
/// </summary>
/// <param name="username">The Username.</param>
/// <returns>The secured Hash of the Username.</returns>
public static string ComputeSecuredUsernameHash(string username) {
return Hash.ComputeSecuredUsernameHash(username, Settings.MasterPassword);
}
/// <summary>
/// Escapes bad characters in a string (pipes and \n).
/// </summary>
/// <param name="input">The input string.</param>
/// <returns>The escaped string.</returns>
public static string EscapeString(string input) {
StringBuilder sb = new StringBuilder(input);
sb.Replace("\r", "");
sb.Replace("\n", "%0A");
sb.Replace("|", "%7C");
return sb.ToString();
}
/// <summary>
/// Unescapes bad characters in a string (pipes and \n).
/// </summary>
/// <param name="input">The input string.</param>
/// <returns>The unescaped string.</returns>
public static string UnescapeString(string input) {
StringBuilder sb = new StringBuilder(input);
sb.Replace("%7C", "|");
sb.Replace("%0A", "\n");
return sb.ToString();
}
/// <summary>
/// Generates a random 10-char Password.
/// </summary>
/// <returns>The Password.</returns>
public static string GenerateRandomPassword() {
Random r = new Random();
string password = "";
for(int i = 0; i < 10; i++) {
if(i % 2 == 0)
password += ((char)r.Next(65, 91)).ToString(); // Uppercase letter
else password += ((char)r.Next(97, 123)).ToString(); // Lowercase letter
}
return password;
}
//private static bool negative = false;
//private static int count = 0;
/// <summary>
/// Gets the System Uptime.
/// </summary>
public static TimeSpan SystemUptime {
get {
/*if(GetCurrentPermissionLevel() == AspNetHostingPermissionLevel.Unrestricted) {
try {
ManagementObjectSearcher q = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_OperatingSystem");
foreach(ManagementObject result in q.Get()) {
string s = Convert.ToString(result["LastBootUpTime"]);
s = s.Substring(0, s.IndexOf("."));
return DateTime.Now.Subtract(DateTime.ParseExact(s, "yyyyMMddHHmmss", CultureInfo.InvariantCulture));
}
}
catch { }
return new TimeSpan(0);
}
else {*/
// Cannot use WMI because of unsufficient permissions
// This code is experimental: TickCount counts up to 25 days, then goes to -25 and counts to 0, then restarts
int t = Environment.TickCount;
if(t < 0) t = t + int.MaxValue;
//t = t + (count * int.MaxValue);
t = t / 1000;
return TimeSpan.FromSeconds(t);
//}
}
}
/*private static AspNetHostingPermissionLevel CurrentPermissionLevel = AspNetHostingPermissionLevel.None;
private static AspNetHostingPermissionLevel GetCurrentPermissionLevel() {
if(CurrentPermissionLevel == AspNetHostingPermissionLevel.None) {
AspNetHostingPermissionLevel[] levels = new AspNetHostingPermissionLevel[] {
AspNetHostingPermissionLevel.Unrestricted,
AspNetHostingPermissionLevel.High,
AspNetHostingPermissionLevel.Medium,
AspNetHostingPermissionLevel.Low,
AspNetHostingPermissionLevel.Minimal };
for(int i = 0; i < levels.Length; i++) {
try {
new AspNetHostingPermission(levels[i]).Demand();
}
catch {
continue;
}
return levels[i];
}
return AspNetHostingPermissionLevel.None;
}
else return CurrentPermissionLevel;
}*/
/// <summary>
/// Converts a Time Span to string.
/// </summary>
/// <param name="span">The Time Span.</param>
/// <returns>The string.</returns>
public static string TimeSpanToString(TimeSpan span) {
string result = span.Days.ToString() + "d ";
result += span.Hours.ToString() + "h ";
result += span.Minutes.ToString() + "m ";
result += span.Seconds.ToString() + "s";
return result;
}
/// <summary>
/// Generates the Hash of an Image name.
/// </summary>
/// <param name="name">The image name.</param>
/// <param name="big">True if the image is big.</param>
/// <returns>The Hash.</returns>
public static string GenerateImageNameHash(string name, bool big) {
name = "Thumb-" + name.Replace("\\", "/").ToLower() + (big ? "-Big" : "");
return Hash.Compute(name);
}
/// <summary>
/// Clears all the thumbnails (if any) of a file.
/// </summary>
/// <param name="name">The File Name.</param>
public static void DeleteThumbnails(string name) {
string n1 = GenerateImageNameHash(name, false) + ".jpg";
string n2 = GenerateImageNameHash(name, true) + ".jpg";
try {
File.Delete(Settings.TempDirectory + n1);
}
catch { }
try {
File.Delete(Settings.TempDirectory + n2);
}
catch { }
}
/// <summary>
/// Executes URL-encoding, avoiding to use '+' for spaces.
/// </summary>
/// <remarks>This method uses internally Server.UrlEncode.</remarks>
/// <param name="input">The input string.</param>
/// <returns>The encoded string.</returns>
public static string UrlEncode(string input) {
return HttpContext.Current.Server.UrlEncode(input).Replace("+", "%20");
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -