Ejemplo n.º 1
0
 public void Unload()
 {
     if (tileObject != null)
     {
         tileObject.CaptionChanged     -= new TileLib.BaseTile.CaptionChangedEventHandler(TileObject_CaptionChanged);
         tileObject.IconChanged        -= new TileLib.BaseTile.IconChangedEventHandler(TileObject_IconChanged);
         tileObject.ShowOptionsEvent   -= new TileLib.BaseTile.ShowOptionsEventHandler(TileObject_ShowOptionsEvent);
         tileObject.ShowFlyoutEvent    -= new TileLib.BaseTile.ShowFlyoutEventHandler(TileObject_ShowFlyoutEvent);
         tileObject.HeightChangedEvent -= new TileLib.BaseTile.HeightChangedEventHandler(tileObject_HeightChangedEvent);
         tileObject.Unload();
         tileObject = null;
     }
     TileContentGrid.Children.Clear();
     this.BeginAnimation(HeightProperty, (DoubleAnimation)this.Resources["UnLoadHeightAnim"]);
     isLoaded = false;
 }
Ejemplo n.º 2
0
        public void Load(AppBarSide side, double height)
        {
            this.side = side;

            ////////////////////////////////////
            if (!System.IO.File.Exists(this.File))
            {
                return;
            }
            tileAssembly  = Assembly.LoadFrom(this.File);
            tileModelType = GetTileModelType(tileAssembly);
            switch ((ModelType)tileModelType)
            {
            case ModelType.LongBar:
                foreach (Type type in tileAssembly.GetTypes())
                {
                    if (type.BaseType == typeof(TileLib.BaseTile))
                    {
                        TileType = type;
                    }
                }
                foreach (Attribute attr in tileAssembly.GetCustomAttributes(false))
                {
                    if (attr.GetType() == typeof(TileLib.TileInfo))
                    {
                        Info = (TileLib.TileInfo)attr;
                        this.TitleTextBlock.Text = Info.Name;
                    }
                }
                break;

            case ModelType.KarlsSidebar:
                foreach (Type type in tileAssembly.GetTypes())
                {
                    if (type.BaseType != null && type.BaseType.ToString() == "Applications.Sidebar.BaseTile")
                    {
                        TileType = type;
                    }
                }
                foreach (Attribute attr in tileAssembly.GetCustomAttributes(false))
                {
                    if (attr.GetType().ToString() == "Applications.Sidebar.SidebarTileInfo")
                    {
                        Info = new TileLib.TileInfo(((SidebarTileInfo)attr).Title, false, false);
                        this.TitleTextBlock.Text = Info.Name;
                        if (System.IO.File.Exists(System.IO.Path.GetDirectoryName(this.File) + @"\Icon.png"))
                        {
                            this.TitleIcon.Source = new BitmapImage(new Uri(System.IO.Path.GetDirectoryName(this.File) + @"\Icon.png"));
                        }
                    }
                }
                break;
            }
            this.Unloaded    += new RoutedEventHandler(Tile_Unloaded);
            this.SizeChanged += new SizeChangedEventHandler(Tile_SizeChanged);
            if (Info == null)
            {
                hasErrors = true;
            }
            ////////////////////////////

            try
            {
                switch (tileModelType)
                {
                case ModelType.LongBar:
                    tileObject = (TileLib.BaseTile)TileType.InvokeMember(null, flags | BindingFlags.CreateInstance, null, null, null);
                    tileObject.CaptionChanged     += new TileLib.BaseTile.CaptionChangedEventHandler(TileObject_CaptionChanged);
                    tileObject.IconChanged        += new TileLib.BaseTile.IconChangedEventHandler(TileObject_IconChanged);
                    tileObject.ShowOptionsEvent   += new TileLib.BaseTile.ShowOptionsEventHandler(TileObject_ShowOptionsEvent);
                    tileObject.ShowFlyoutEvent    += new TileLib.BaseTile.ShowFlyoutEventHandler(TileObject_ShowFlyoutEvent);
                    tileObject.HeightChangedEvent += new TileLib.BaseTile.HeightChangedEventHandler(tileObject_HeightChangedEvent);
                    tileObject._path = SidebarWindow.sett.path;

                    control = tileObject.Load();

                    control.MouseLeftButtonDown += new MouseButtonEventHandler(TileContentGrid_MouseLeftButtonDown);
                    break;

                case ModelType.KarlsSidebar:
                    tileKObject = (Applications.Sidebar.Tile)TileType.InvokeMember(null, flags | BindingFlags.CreateInstance, null, null, null);
                    control     = tileKObject.SidebarContent;
                    Info        = new TileLib.TileInfo(Info.Name, tileKObject.hasFlyout, tileKObject.hasConfigWindow);
                    break;
                }
            }
            catch (Exception ex)
            {
                if (SidebarWindow.sett.showErrors)
                {
                    TaskDialogs.ErrorDialog.ShowDialog("An error occured while loading tile. Please send feedback.", String.Format("Error: {0}\nTile: {1}\nSee log for detailed info.", ex.Message, Info.Name), ex);
                }
                if (!System.IO.Directory.Exists(SidebarWindow.sett.path + @"\Logs"))
                {
                    System.IO.Directory.CreateDirectory(SidebarWindow.sett.path + @"\Logs");
                }
                string logFile = string.Format(@"{0}\Logs\{1}.{2}.{3}.log", SidebarWindow.sett.path, DateTime.Now.Day, DateTime.Now.Month, DateTime.Now.Year);
                try
                {
                    System.IO.File.AppendAllText(logFile, String.Format("{0}\r\n{1}\r\n--------------------------------------------------------------------------------------\r\n",
                                                                        DateTime.UtcNow.ToString(), ex));
                }
                catch (Exception ex1)
                {
                    MessageBox.Show("Can't write to log. Reason: " + ex1.Message, null, MessageBoxButton.OK, MessageBoxImage.Error);
                }
                hasErrors = true;
                return;
            }

            DoubleAnimation LoadHeightAnim  = (DoubleAnimation)FindResource("LoadHeightAnim");
            DoubleAnimation LoadOpacityAnim = (DoubleAnimation)FindResource("LoadOpacityAnim");

            LoadHeightAnim.Completed  += new EventHandler(LoadHeightAnim_Completed);
            LoadOpacityAnim.Completed += new EventHandler(LoadOpacityAnim_Completed);

            if (!double.IsNaN(height))
            {
                LoadHeightAnim.To = height;
            }
            else if (double.IsNaN(control.Height))
            {
                LoadHeightAnim.To = 125;
            }
            else if (!double.IsNaN(Header.Height) && (DockPanel.GetDock(Header) == Dock.Top || DockPanel.GetDock(Header) == Dock.Bottom))
            {
                LoadHeightAnim.To = control.Height + this.Header.Height + 5;
            }
            else
            {
                LoadHeightAnim.To = control.Height + 5;
            }
            RemoveItem.Header    = string.Format((string)TryFindResource("Remove"), Info.Name);
            CustomizeItem.Header = string.Format((string)TryFindResource("Properties"), Info.Name);

            MinimizedItem.IsChecked = false;

            TileContentGrid.Children.Clear();
            TileContentGrid.Children.Add(control);


            if (minimized)
            {
                normalHeight = height;
                this.MinimizedItem.IsChecked = true;
            }


            ChangeTheme(SidebarWindow.sett.theme);
            ChangeLocale(SidebarWindow.sett.locale);

            isLoaded = true;
            this.BeginAnimation(HeightProperty, LoadHeightAnim);
            TileContentGrid.BeginAnimation(OpacityProperty, LoadOpacityAnim);
        }