public async Task LateUpdate() { while (true) { await Task.Delay(500); CheckFileUpdates(); //SetBottom(this); if (isLoading == false) { if (Height != fixedLastHeight) { fixedLastHeight = (Int32)this.Height; ConfigClass config = Config.GetConfig(); if (config != null) { foreach (var window in config.Windows) { if (window.Name == name) { if (!isHidded) { window.Height = (int)this.Height; } } } if (isFullyInitalized) { bool result = Config.SetConfig(config); if (result == false) { ErrorHandler.Error(); } } else { isFullyInitalized = true; } } } } CheckWindowWidth(); } }
private void RemoverowBtn_Click(object sender, RoutedEventArgs e) { if (ScrollFilesList.Height > 80) { ScrollFilesList.Height -= 80; this.Height -= 80; ConfigClass config = Config.GetConfig(); foreach (var window in config.Windows) { if (window.Name == name) { window.Height++; } } bool result = Config.SetConfig(config); if (result == false) { ErrorHandler.Error(); } } }
private void TileLoaded(object sender, RoutedEventArgs e) { try { _ = LateUpdate(); _ = Update(); ConfigClass config = Config.GetConfig(); //updateTimer.Interval = new TimeSpan(!config.SpecialEffects ? 400 : 2); //Disable Alt-Tab WindowInteropHelper wndHelper = new WindowInteropHelper(this); int exStyle = (int)GetWindowLong(wndHelper.Handle, (int)GetWindowLongFields.GWL_EXSTYLE); exStyle |= (int)ExtendedWindowStyles.WS_EX_TOOLWINDOW; SetWindowLong(wndHelper.Handle, (int)GetWindowLongFields.GWL_EXSTYLE, (IntPtr)exStyle); Util.EnableBlur(this); //SetBottom(this); MainGrid.Background = new SolidColorBrush((Color)ColorConverter.ConvertFromString(config.Color)); //Set text color by theme folderNameTB.Foreground = config.Theme == 0 ? Brushes.Black : Brushes.White; hideBtn.Foreground = config.Theme == 0 ? Brushes.Black : Brushes.White; editBtn.Foreground = config.Theme == 0 ? Brushes.Black : Brushes.White; rotateBtn.Foreground = config.Theme == 0 ? Brushes.Black : Brushes.White; editBox.Text = name; if (folderNameTB.Text.Length >= 36) { folderNameTB.Text = folderNameTB.Text.Remove(folderNameTB.Text.Length - (folderNameTB.Text.Length - 36)) + "..."; } } catch (Exception ex) { File.AppendAllText(config_path + "\\Error.log", "\r\n[Error: " + DateTime.Now + "] " + ex.ToString()); } }
public static bool SetConfig(ConfigClass config) { test++; ErrorHandler.Info(" Configuration saved: +" + test); try { string json = JsonConvert.SerializeObject(config, Formatting.Indented); if (Directory.Exists(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + "\\Tiels")) { File.WriteAllText(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + "\\Tiels\\config.json", json); } else { return(false); } return(true); } catch { return(true); } }
private void CheckWindowWidth() { bool isChanged = false; ConfigClass config = Config.GetConfig(); if (isLoading == false) { foreach (var window in config.Windows) { if (window.Name == name) { if (window.Width != (int)this.Width) { window.Width = (int)this.Width; isChanged = true; } } } if (isChanged) { bool result = Config.SetConfig(config); if (result == false) { ErrorHandler.Error(); } } } int floor = (int)Math.Floor(this.Width / 120); if (floor != collumns) { collumns = floor; int floor1 = (int)Math.Floor(this.Height / 80); ReadElements(floor, floor1); } }
private void MoveActionStop(object sender, MouseButtonEventArgs e) { isMoving = false; ReleaseMouseCapture(); //Saving window position ConfigClass config = Config.GetConfig(); foreach (var window in config.Windows) { if (window.Name == name) { window.Position = new WindowPosition { X = this.Left, Y = this.Top }; } } bool result = Config.SetConfig(config); if (result == false) { Util.Reconfigurate(); } }
public static ConfigClass GetConfig() { try { string json_out = File.ReadAllText(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + "\\Tiels\\config.json"); if (json_out != "") { ConfigClass config = JsonConvert.DeserializeObject <ConfigClass>(json_out); if (config == null) { ErrorHandler.Error(); } return(config); } else { ErrorHandler.Error(); return(null); } } catch (FileNotFoundException fex) { ErrorHandler.Error(); return(null); } catch (Exception ex) { File.AppendAllText(config_path + "\\Error.log", "\r\n[Error: " + DateTime.Now + "] " + ex.ToString()); ErrorWindow ew = new ErrorWindow(); ew.ExceptionReason = ex; ew.ShowDialog(); return(null); } }
public async void Load() { _ = fu.UpdateEntryTask(); isLoading = true; if (File.ReadAllText(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + "\\Tiels\\config.json") == "") { main.Navigate(new Uri("pack://application:,,,/Tiels;component/Pages/ErrorPage.xaml")); loadingMessage.Text = "Tiels Error!"; return; } ConfigClass config = Config.GetConfig(); if (config == null) { ErrorHandler.Log(new FileLoadException(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + "\\Tiels\\config.json was empty of corrupted.")); main.Navigate(new Uri("pack://application:,,,/Tiels;component/Pages/ErrorPage.xaml")); loadingMessage.Text = "Tiels Error!"; return; } else { if (config.HideAfterStart) { ni.Visible = true; this.Hide(); } } loadingPage.Rename("Loading Config..."); this.main.NavigationService.Navigate(loadingPage); //main.Navigate(new Uri("pack://application:,,,/Tiels;component/Pages/LoadingPage.xaml")); await Task.Delay(200); try { string[] tiles = Directory.EnumerateDirectories(path).ToArray(); //Check config version if (App.Version != config.Version) { //Update version and add default values try { if (int.Parse(config.Version.Substring(3, 1)) < 4) { if (MessageBox.Show("Config version is too old.\r\nReconfiguration required!\r\nReconfiguration can delete current appearance settings.\r\nProceed?", "Warning!", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.Yes) { ErrorHandler.Error(); } else { //this.Close(); } } } catch (Exception ex) { ErrorHandler.Error(); } } if (!config.SpecialEffects) { shadoweffect.Effect = null; } if (tiles.Length != 0) { config = Config.GetConfig(); for (int i = 0; i <= tiles.Length - 1; i++) { tiles[i] = tiles[i].Replace(path + "\\", ""); //Creating tile TileWindow tile = new TileWindow(); tile.folderNameTB.Text = tiles[i]; tile.name = tiles[i]; tilesw.Add(tile); bool windowexist = false; //Search for tile in config foreach (var window in config.Windows) { if (window.Name == tiles[i]) { loadingPage.Rename("Reading data from " + window.Name + "..."); //Tile exists? windowexist = true; //Setting tile rosition tile.Left = window.Position.X; tile.Top = window.Position.Y; //Rotating tile if (!window.EditBar) { tile.rd.Height = new GridLength(1, GridUnitType.Star); tile.trd.Height = new GridLength(28); Grid.SetRow(tile.ActionGrid, 1); Grid.SetRow(tile.ScrollFilesList, 0); } else { tile.rd.Height = new GridLength(28); tile.trd.Height = new GridLength(1, GridUnitType.Star); Grid.SetRow(tile.ActionGrid, 0); Grid.SetRow(tile.ScrollFilesList, 1); } if (window.Height > 0) { tile.Height = window.Height; tile.ScrollFilesList.Height = window.Height; } else { window.Height = 0; } tile.Width = window.Width; } } //If tile not exists create default values if (!windowexist) { loadingPage.Rename("Creating " + tiles[i] + "..."); JsonWindow jsonwindow = new JsonWindow(); jsonwindow.Name = tiles[i]; jsonwindow.Position = new WindowPosition { X = 0, Y = 0 }; jsonwindow.Height = 0; jsonwindow.Width = 0; jsonwindow.EditBar = false; jsonwindow.Id = i; config.Windows.Add(jsonwindow); } //If Config File not Exists bool result = Config.SetConfig(config); if (result == false) { ErrorHandler.Error(); } _ = asyncShowTile(tile); } } loadingPage.Rename("Loading..."); bool isTilesLoading = true; while (isTilesLoading) { await Task.Delay(200); isTilesLoading = false; foreach (TileWindow tileWindow in tilesw) { if (tileWindow.isLoading == true) { isTilesLoading = true; } } } //Load MainPage isLoading = false; main.Navigate(new Uri("pack://application:,,,/Tiels;component/Pages/MainPage.xaml")); loadingMessage.Text = "Tile Loaded Successfully!"; } catch (Exception ex) { ErrorHandler.Log(ex); main.Navigate(new Uri("pack://application:,,,/Tiels;component/Pages/ErrorPage.xaml")); loadingMessage.Text = "Tiels Error!"; return; } }
public void ConfigureFirstRun() { main.Navigate(new Uri("pack://application:,,,/Tiels;component/Pages/LoadingPage.xaml")); //Starting Tiels Console that generate Main App Directory and temp //Process.Start("TielsConsole.exe","createlostandfound"); ErrorHandler.Info("Creating lostandfound directory..."); try { if (!Directory.Exists(App.config_path)) { Directory.CreateDirectory(App.config_path); } if (!Directory.Exists(App.config_path + "\\" + "temp")) { Directory.CreateDirectory(App.config_path + "\\" + "temp"); } ErrorHandler.Info("Succesfully created lostandfound directory!"); } catch (Exception ex) { File.AppendAllText(App.config_path + "\\Error.log", "\r\n[Error: " + DateTime.Now + "] " + ex.ToString()); try { ProcessStartInfo info = new ProcessStartInfo { Arguments = "createlostandfounda", Verb = "runas" }; ErrorHandler.Info(ex.ToString()); } catch (Exception iex) { File.AppendAllText(App.config_path + "\\Error.log", "\r\n[Error: " + DateTime.Now + "] " + iex.ToString()); Application.Current.Shutdown(); } } try { main.Navigate(new Uri("pack://application:,,,/Tiels;component/Pages/ConfigurePage.xaml")); loadingMessage.Text = "Configuration."; //Creating config and creating example tile WindowPosition pos0 = new WindowPosition(); WindowPosition pos1 = new WindowPosition(); WindowPosition[] positions = new WindowPosition[] { pos0, pos1 }; JsonWindow jwindow = new JsonWindow(); List <JsonWindow> jwindows = new List <JsonWindow>(); jwindows.Add(jwindow); ConfigClass config = new ConfigClass { Version = App.Version, FirstRun = true, Blur = true, Theme = 1, Color = "#19000000", HideAfterStart = false, SpecialEffects = true, Windows = jwindows }; //Creating directory and config file string json = JsonConvert.SerializeObject(config, Formatting.Indented); if (Directory.Exists(App.config_path)) { File.WriteAllText(App.config_path + "\\config.json", json); } ErrorHandler.Info(json); if (!Directory.Exists(path + "\\Example")) { Directory.CreateDirectory(path + "\\Example"); } string icoPath = "pack://application:,,,/Tiels;component/Assets/TielsDirectory.ico"; StreamResourceInfo icoInfo = System.Windows.Application.GetResourceStream(new Uri(icoPath)); byte[] bytes = Util.ReadFully(icoInfo.Stream); File.WriteAllBytes(App.config_path + "\\directoryicon.ico", bytes); //Creating example text file in tile File.WriteAllText(path + "\\Example\\ExampleContent.txt", "Example Text."); File.WriteAllText(path + "\\Example\\desktop.ini", "[.ShellClassInfo]\r\nIconResource=" + App.config_path + "\\directoryicon.ico,0"); } catch (Exception ex) { ErrorHandler.Log(ex); main.Navigate(new Uri("pack://application:,,,/Tiels;component/Pages/ErrorPage.xaml")); loadingMessage.Text = "Tiels Error!"; return; } }
public async Task ReadElements(int collumCount = 4, int rowCount = 1) { try { isLoading = true; ConfigClass config = Config.GetConfig(); double tmp_height; double tmp_max_height; JsonWindow window = null; foreach (var in_window in config.Windows) { if (in_window.Name == name) { window = in_window; } } if (window.Hidden) { isHidded = true; this.Height = 28; } FilesList.Visibility = Visibility.Hidden; loadinginfo.Visibility = Visibility.Visible; await Task.Delay(100); FilesList.Children.Clear(); FilesList.ColumnDefinitions.Clear(); FilesList.RowDefinitions.Clear(); rows = rowCount; //Set default values RowDefinition mainrow = new RowDefinition { Height = new GridLength(1, GridUnitType.Star) }; FilesList.RowDefinitions.Add(mainrow); FilesList.Height = 80; tmp_max_height = rowCount * 80 + 28; tmp_height = rowCount * 80 + 28; //Creating file and directory with paths to icons if (!Directory.Exists(App.config_path + "\\Cache")) { Directory.CreateDirectory(App.config_path + "\\Cache"); } if (!File.Exists(App.config_path + "\\Cache\\iconcache.db")) { File.WriteAllText(App.config_path + "\\Cache\\iconcache.db", ""); } //Read icon paths string[] tmp_iconcache = File.ReadAllLines(App.config_path + "\\Cache\\iconcache.db"); Dictionary <string, string> iconcache = new Dictionary <string, string>(); string[] elements = Directory.EnumerateFiles(path + "\\" + name).ToArray(); string[] directories = Directory.EnumerateDirectories(path + "\\" + name).ToArray(); foreach (var cache in tmp_iconcache) { iconcache.Add(cache.Split('*')[0], cache.Split('*')[1]); } int skipframe = 0; //Pseudo-random icon id int ri = new Random().Next(0, 1000000); int j = 0; int n = 0; int m = 0; for (int i = 0; i < elements.Length; i++) { //await Task.Delay(5); string num = ""; if (!iconcache.ContainsKey(elements[i])) { num = FileUpdates.GenerateIcons(elements[i], App.config_path, ri, i); } else { num = iconcache[elements[i]]; } if (File.GetAttributes(elements[i]) != FileAttributes.Hidden) { // TODO: Look at headers instead of file extension //Util.ResizeImage(Util.BitmapFromSource((BitmapSource)bitmap), (int)bitmap.Width <= 128 ? (int)bitmap.Width : ((int)bitmap.Width/10), (int)bitmap.Height <= 128 ? (int)bitmap.Height : (int)bitmap.Height/10); Image image = new Image { Width = 44, Height = 44, HorizontalAlignment = HorizontalAlignment.Center, Margin = new Thickness(0, 1, 0, 19), Source = Util.BitmapFromUri(new Uri(App.config_path + num)) //Source = elements[i].ToLower().Contains(".png") || elements[i].ToLower().Contains(".jpg") || elements[i].ToLower().Contains(".jpeg") ? Util.ImageSourceFromBitmap(bitmap2) : Util.BitmapFromUri(new Uri(path + num)) // ICON }; string filetext = elements[i].Replace(path + "\\" + name + "\\", "").Replace(".lnk", "").Replace(".url", ""); TextBlock filename = new TextBlock { VerticalAlignment = VerticalAlignment.Bottom, HorizontalAlignment = HorizontalAlignment.Center, Foreground = config.Theme == 0 ? Brushes.Black : Brushes.White, Text = filetext.Length > 14 ? filetext.Remove(filetext.Length - (filetext.Length - 14)) + "..." : filetext }; Grid button_content = new Grid(); button_content.Children.Add(image); button_content.Children.Add(filename); Button button = new Button { Content = button_content, Background = Brushes.Transparent, BorderBrush = Brushes.Transparent, Name = "elementButton_" + i, Tag = elements[i], ToolTip = elements[i].Replace(path + "\\" + name + "\\", "").Replace(".lnk", " - Shortcut").Replace(".url", " - Internet Shortcut") }; button.Click += ElementClicked; button.MouseRightButtonUp += (sender, e) => { ShellContextMenu menu = new ShellContextMenu(); FileInfo[] arrFI = new FileInfo[1]; arrFI[0] = new FileInfo((string)((Button)sender).Tag); menu.ShowContextMenu(arrFI, System.Windows.Forms.Control.MousePosition); }; SortGrid(collumCount, i, button, ref j, ref n, ref m); } } #region Old (Needs Refactor) //TODO: REFACTOR THIS if (directories.Length != 0) { for (int i = 0; i < directories.Length; i++) { TextBlock image = new TextBlock { FontSize = 44, FontFamily = new FontFamily("Segoe MDL2 Assets"), Width = 44, Height = 44, Foreground = config.Theme == 0 ? Brushes.Black : Brushes.White, HorizontalAlignment = HorizontalAlignment.Center, Margin = new Thickness(0, 1, 0, 19), Text = "" }; string filetext = directories[i].Replace(path + "\\" + name + "\\", ""); TextBlock filename = new TextBlock { VerticalAlignment = VerticalAlignment.Bottom, HorizontalAlignment = HorizontalAlignment.Center, Foreground = config.Theme == 0 ? Brushes.Black : Brushes.White, Text = filetext.Length <= 14 ? filetext : filetext.Remove(filetext.Length - (filetext.Length - 14)) + "..." }; Grid button_content = new Grid(); button_content.Children.Add(image); button_content.Children.Add(filename); Button button = new Button { Content = button_content, Background = Brushes.Transparent, BorderBrush = Brushes.Transparent, Name = "elementButton_" + i, Tag = directories[i], ToolTip = directories[i].Replace(path + "\\" + name + "\\", "") + " - Directory" }; button.Click += ElementClicked; SortGrid(collumCount, i, button, ref j, ref n, ref m); } } #endregion tmp_max_height = System.Windows.SystemParameters.PrimaryScreenHeight / 1.025; tmp_height = rows * 80 + 28; this.ScrollFilesList.Height += rows * 80; id = window.Id; if (window.Height > 0) { tmp_height = window.Height; this.ScrollFilesList.Height = window.Height; } if (window.Hidden) { tmp_height = 28; this.lastHeight = window.Height; this.hideBtn.Content = ""; this.chromewindow.ResizeBorderThickness = new Thickness(0); } if (tmp_height >= System.Windows.SystemParameters.PrimaryScreenHeight - 20) { tmp_height = System.Windows.SystemParameters.PrimaryScreenHeight / 2; this.ScrollFilesList.Height = System.Windows.SystemParameters.PrimaryScreenHeight / 2; } this.MaxHeight = tmp_max_height; this.Height = tmp_height; } catch (FileNotFoundException fnfex) { File.AppendAllText(App.config_path + "\\Error.log", "\r\n[Error: " + DateTime.Now + "] " + fnfex.ToString()); tries++; ResetIconCache(); if (tries == 1) { ReadElements(); } else { throw fnfex; } } loadinginfo.Visibility = Visibility.Collapsed; FilesList.Visibility = Visibility.Visible; this.Show(); this.Visibility = Visibility.Visible; isLoading = false; tries = 0; GC.Collect(); //filedata.Clear(); }