Beispiel #1
0
        private static Icon LoadIcon(IconKind kind)
        {
            uint dpi = WindowsTaskbar.Dpi;

            switch (kind)
            {
            case IconKind.EarTrumpet:
                return(IconHelper.LoadIconForTaskbar((string)App.Current.Resources["EarTrumpetIconDark"], dpi));

            case IconKind.EarTrumpet_LightTheme:
                return(IconHelper.LoadIconForTaskbar((string)App.Current.Resources["EarTrumpetIconLight"], dpi));

            case IconKind.Muted:
                return(IconHelper.LoadIconForTaskbar(SndVolSSO.GetPath(SndVolSSO.IconId.Muted), dpi));

            case IconKind.NoDevice:
                return(IconHelper.LoadIconForTaskbar(SndVolSSO.GetPath(SndVolSSO.IconId.NoDevice), dpi));

            case IconKind.SpeakerZeroBars:
                return(IconHelper.LoadIconForTaskbar(SndVolSSO.GetPath(SndVolSSO.IconId.SpeakerZeroBars), dpi));

            case IconKind.SpeakerOneBar:
                return(IconHelper.LoadIconForTaskbar(SndVolSSO.GetPath(SndVolSSO.IconId.SpeakerOneBar), dpi));

            case IconKind.SpeakerTwoBars:
                return(IconHelper.LoadIconForTaskbar(SndVolSSO.GetPath(SndVolSSO.IconId.SpeakerTwoBars), dpi));

            case IconKind.SpeakerThreeBars:
                return(IconHelper.LoadIconForTaskbar(SndVolSSO.GetPath(SndVolSSO.IconId.SpeakerThreeBars), dpi));

            default: throw new NotImplementedException();
            }
        }
Beispiel #2
0
 public MenuItem(string tag, string name, IconKind icon, Action action)
 {
     this.tag    = tag;
     this.name   = name;
     this.icon   = icon;
     this.action = action;
 }
Beispiel #3
0
        internal static void ImportLegacyIcons(string platform, PlatformIconKind kind, PlatformIcon[] platformIcons)
        {
            if (!Enum.IsDefined(typeof(IconKind), kind.kind))
            {
                return;
            }

            IconKind iconKind = (IconKind)kind.kind;

            Texture2D[] legacyIcons       = GetIconsForPlatform(platform, iconKind);
            int[]       legacyIconWidths  = GetIconWidthsForPlatform(platform, iconKind);
            int[]       legacyIconHeights = GetIconHeightsForPlatform(platform, iconKind);

            for (var i = 0; i < legacyIcons.Length; i++)
            {
                List <PlatformIcon> selectedIcons = new List <PlatformIcon>();
                foreach (var icon in platformIcons)
                {
                    if (icon.width == legacyIconWidths[i] && icon.height == legacyIconHeights[i])
                    {
                        selectedIcons.Add(icon);
                    }
                }
                foreach (var selectedIcon in selectedIcons)
                {
                    selectedIcon.SetTextures(legacyIcons[i]);
                }
            }
        }
Beispiel #4
0
 private static Drawing GetDrawing(IconKind iconKind)
 {
     switch (iconKind)
     {
     case IconKind.SaveDocument:
         return(Combine(IconKind.Document, IconKind.Save));
     }
     return(null);
 }
Beispiel #5
0
 public ExpanderItemSelection(
     IconKind icon,
     string title,
     ViewModelBase viewModel,
     Swatch swatch)
 {
     Icon      = icon;
     Title     = title;
     ViewModel = viewModel;
     Swatch    = swatch;
 }
Beispiel #6
0
        public static Icon CreateAndResolveThroughBuiltInAddons(IconKind kind)
        {
            var args = new AddonTrayIconEventArgs {
                Kind = kind, Icon = Create(kind)
            };

            foreach (var addon in BuiltInItems.OrderBy(b => b.Priority))
            {
                addon.TrayIconChanging(args);
            }
            return(args.Icon);
        }
Beispiel #7
0
 public override int GetHashCode()
 {
     unchecked
     {
         var hashCode = Position;
         hashCode = (hashCode * 397) ^ (SearchText?.GetHashCode() ?? 0);
         hashCode = (hashCode * 397) ^ Filter.GetHashCode();
         hashCode = (hashCode * 397) ^ Highlight.GetHashCode();
         hashCode = (hashCode * 397) ^ UseRegex.GetHashCode();
         hashCode = (hashCode * 397) ^ IgnoreCase.GetHashCode();
         hashCode = (hashCode * 397) ^ (HighlightHue?.GetHashCode() ?? 0);
         hashCode = (hashCode * 397) ^ (IconKind?.GetHashCode() ?? 0);
         hashCode = (hashCode * 397) ^ IsGlobal.GetHashCode();
         hashCode = (hashCode * 397) ^ IsExclusion.GetHashCode();
         return(hashCode);
     }
 }
Beispiel #8
0
        public static Icon CreateAndResolveAll(IconKind kind)
        {
            var items = BuiltInItems.ToList();

            if (AddonItems != null)
            {
                items.AddRange(AddonItems);
            }
            items = items.OrderBy(b => b.Priority).ToList();
            var args = new AddonTrayIconEventArgs {
                Kind = kind, Icon = Create(kind)
            };

            foreach (var addon in items)
            {
                addon.TrayIconChanging(args);
            }
            return(args.Icon);
        }
Beispiel #9
0
        private Icon SelectAndLoadIcon(IconKind kind)
        {
            if (_settings.UseLegacyIcon)
            {
                kind = IconKind.EarTrumpet;
            }

            try
            {
                if (System.Windows.SystemParameters.HighContrast)
                {
                    using (var icon = LoadIcon(kind))
                    {
                        return(ColorIconForHighContrast(icon, kind, _isMouseOver));
                    }
                }
                else if (SystemSettings.IsSystemLightTheme)
                {
                    if (kind == IconKind.EarTrumpet)
                    {
                        return(LoadIcon(IconKind.EarTrumpet_LightTheme));
                    }
                    else
                    {
                        using (var icon = LoadIcon(kind))
                        {
                            return(ColorIconForLightTheme(icon, kind));
                        }
                    }
                }
                else
                {
                    return(LoadIcon(kind));
                }
            }
            // Legacy fallback if SndVolSSD.dll icons are unavailable.
            catch (Exception ex) when(kind != IconKind.EarTrumpet)
            {
                Trace.WriteLine($"TaskbarIconSource LoadIcon: {ex}");
                return(SelectAndLoadIcon(IconKind.EarTrumpet));
            }
        }
Beispiel #10
0
        // Returns a list of icon sizes for the specified platform of a specific kind.
        public static int[] GetIconSizesForTargetGroup(BuildTargetGroup platform, IconKind kind)
        {
            if (platform == BuildTargetGroup.iOS || platform == BuildTargetGroup.tvOS || platform == BuildTargetGroup.Android)
            {
                IPlatformIconProvider iconProvider = GetPlatformIconProvider(platform);

                if (iconProvider == null)
                {
                    return new int[] {}
                }
                ;

                PlatformIconKind platformIconKind = iconProvider.GetPlatformIconKindFromEnumValue(kind);

                return(GetPlatformIcons(platform, platformIconKind).Select(s => s.width).ToArray());
            }
            else
            {
                return(GetIconWidthsForPlatform(GetPlatformName(platform), kind));
            }
        }
Beispiel #11
0
        // Returns the list of assigned icons for the specified platform of a specific kind.
        public static Texture2D[] GetIconsForTargetGroup(BuildTargetGroup platform, IconKind kind)
        {
            if (platform == BuildTargetGroup.iOS || platform == BuildTargetGroup.tvOS || platform == BuildTargetGroup.Android)
            {
                IPlatformIconProvider iconProvider = GetPlatformIconProvider(platform);

                if (iconProvider == null)
                {
                    return new Texture2D[] {}
                }
                ;

                PlatformIconKind platformIconKind = iconProvider.GetPlatformIconKindFromEnumValue(kind);

                return(GetPlatformIcons(platform, platformIconKind).Select(t => t.GetTexture(0)).ToArray());
            }
            else
            {
                Texture2D[] icons = GetIconsForPlatform(GetPlatformName(platform), kind);
                return(icons);
            }
        }
Beispiel #12
0
        internal static Brush GetBrush(IconKind iconKind)
        {
            if (Brushes.ContainsKey(iconKind))
            {
                return(Brushes[iconKind]);
            }
            Drawing drawing = null;

            if (Instance.Contains(iconKind))
            {
                drawing = Instance[iconKind] as Drawing;
            }
            else
            {
                drawing = GetDrawing(iconKind);
            }
            var brush = new DrawingBrush(drawing);

            brush.Freeze();
            Brushes.Add(iconKind, brush);
            return(brush);
        }
Beispiel #13
0
        public static Icon Create(IconKind kind)
        {
            switch (kind)
            {
            case IconKind.Invalid: throw new InvalidOperationException("invalid icon");

            case IconKind.OriginalIcon: return(new Icon(Application.GetResourceStream(new Uri("pack://application:,,,/EarTrumpet;component/Assets/Tray.ico")).Stream));

            default:
                try
                {
                    return(IconUtils.GetIconFromFile(Interop.SndVolSSO.DllPath, (int)kind, WindowsTaskbar.Current.Dpi > 1));
                }
                catch (Exception ex)
                {
                    Trace.WriteLine($"Couldn't load icon: {ex}");
                    return(Create(IconKind.OriginalIcon));
                }
            }

            throw new NotImplementedException();
        }
Beispiel #14
0
        public static Icon ColorIcon(Icon originalIcon, IconKind kind, System.Windows.Media.Color newColor)
        {
            using (var bitmap = originalIcon.ToBitmap())
            {
                originalIcon.Dispose();

                for (int y = 0; y < bitmap.Height; y++)
                {
                    for (int x = 0; x < bitmap.Width * (kind == IconKind.NoDevice ? 0.4 : 1); x++)
                    {
                        var pixel = bitmap.GetPixel(x, y);

                        if (pixel.R > 220)
                        {
                            bitmap.SetPixel(x, y, System.Drawing.Color.FromArgb(pixel.A, newColor.R, newColor.G, newColor.B));
                        }
                    }
                }

                return(Icon.FromHandle(bitmap.GetHicon()));
            }
        }
 internal static extern int[] GetIconHeightsForPlatform(string platform, IconKind kind);
 internal static extern Texture2D GetIconForPlatformAtSize(string platform, int width, int height, IconKind kind);
 internal static extern void SetIconsForPlatform(string platform, Texture2D[] icons, IconKind kind);
 internal static extern int[] GetIconWidthsForPlatform(string platform, IconKind kind);
Beispiel #19
0
 public IconExtension(
     IconKind kind,
     double size) : this(kind)
 {
     Size = size;
 }
 internal static extern Texture2D[] GetIconsForPlatform(string platform, IconKind kind);
Beispiel #21
0
        private static Drawing Combine(IconKind middle, IconKind leftTop = IconKind.Default, IconKind rightTop = IconKind.Default, IconKind rightBottom = IconKind.Default, IconKind leftBottom = IconKind.Default)
        {
            double middleHeight = 1;
            double middleWidth  = 1;
            Point  middleCenter = new Point(8, 8);

            if ((leftTop | rightTop) != IconKind.Default)
            {
                middleHeight   -= 0.1;
                middleCenter.Y += 8;
            }
            if ((leftBottom | rightBottom) != IconKind.Default)
            {
                middleHeight   -= 0.1;
                middleCenter.Y -= 8;
            }
            if ((rightTop | rightBottom) != IconKind.Default)
            {
                middleWidth    -= 0.1;
                middleCenter.X -= 8;
            }
            if ((leftTop | leftBottom) != IconKind.Default)
            {
                middleWidth    -= 0.1;
                middleCenter.X += 8;
            }
            Contract.Assert(middleWidth != 1 || middleHeight != 1);
            DrawingGroup drawingGroup = new DrawingGroup();
            var          baseDrawing  = (Instance[middle] as DrawingGroup).Clone();

            baseDrawing.Transform = new ScaleTransform(middleWidth, middleHeight, middleCenter.X, middleCenter.Y);
            drawingGroup.Children.Add(baseDrawing);
            DrawingGroup modifier = null;

            if (leftTop != IconKind.Default)
            {
                modifier           = (Instance[leftTop] as DrawingGroup).Clone();
                modifier.Transform = new ScaleTransform(0.5, 0.5, 0, 0);
                drawingGroup.Children.Add(modifier);
            }
            if (rightTop != IconKind.Default)
            {
                modifier           = (Instance[rightTop] as DrawingGroup).Clone();
                modifier.Transform = new ScaleTransform(0.5, 0.5, 16, 0);
                drawingGroup.Children.Add(modifier);
            }
            if (rightBottom != IconKind.Default)
            {
                modifier           = (Instance[rightBottom] as DrawingGroup).Clone();
                modifier.Transform = new ScaleTransform(0.5, 0.5, 16, 16);
                drawingGroup.Children.Add(modifier);
            }
            if (leftBottom != IconKind.Default)
            {
                modifier           = (Instance[leftBottom] as DrawingGroup).Clone();
                modifier.Transform = new ScaleTransform(0.5, 0.5, 0, 16);
                drawingGroup.Children.Add(modifier);
            }
            drawingGroup.Freeze();
            return(drawingGroup);
        }
Beispiel #22
0
 public IconExtension(
     IconKind kind) : this()
 {
     Kind = kind;
 }
Beispiel #23
0
 private static Icon ColorIconForHighContrast(Icon darkIcon, IconKind kind, bool isMouseOver)
 {
     return(IconHelper.ColorIcon(darkIcon, GetIconFillPercent(kind),
                                 isMouseOver ? System.Windows.SystemColors.HighlightTextColor : System.Windows.SystemColors.WindowTextColor));
 }
Beispiel #24
0
 private void OnTrayPropertyChanged()
 {
     _kind = IconKindFromDeviceCollection(_collection);
     CheckForUpdate();
 }
Beispiel #25
0
 private static Icon ColorIconForLightTheme(Icon darkIcon, IconKind kind)
 {
     return(IconHelper.ColorIcon(darkIcon, GetIconFillPercent(kind), System.Windows.Media.Colors.Black));
 }
Beispiel #26
0
 // Only fill part of the icon, so we can preserve the red X.
 private static double GetIconFillPercent(IconKind kind) => kind == IconKind.NoDevice ? 0.4 : 1;
 private void SetLegacyPlatformIcons(string platform, Texture2D[] icons, IconKind kind, ref LegacyBuildTargetIcons[] allIcons)
 {
     allIcons = PlayerSettings.SetPlatformIconsForTargetIcons(platform, icons, kind, allIcons);
     SerializeLegacyIcons();
 }
Beispiel #28
0
 public MenuItem(string name, IconKind icon)
 {
     this.name = name;
     this.icon = icon;
 }
Beispiel #29
0
        // Old API methods, will be made obsolete when the new API is implemented for all platforms,
        // currently it functions as a wrapper for the new API for all platforms that support it (iOS, Android & tvOS).
        public static void SetIconsForTargetGroup(BuildTargetGroup platform, Texture2D[] icons, IconKind kind)
        {
            if (platform == BuildTargetGroup.iOS || platform == BuildTargetGroup.tvOS || platform == BuildTargetGroup.Android)
            {
                IPlatformIconProvider iconProvider = GetPlatformIconProvider(platform);

                if (iconProvider == null)
                {
                    return;
                }

                PlatformIconKind platformIconKind = iconProvider.GetPlatformIconKindFromEnumValue(kind);

                PlatformIcon[] platformIcons = GetPlatformIcons(platform, platformIconKind);

                for (var i = 0; i < icons.Length; i++)
                {
                    platformIcons[i].SetTexture(icons[i], 0);
                }

                SetPlatformIcons(platform, platformIconKind, platformIcons);
            }
            else
            {
                SetIconsForPlatform(GetPlatformName(platform), icons, kind);
            }
        }