Merge pull request #1275 from ranma42/fix-lib64
[mono.git] / mcs / class / Managed.Windows.Forms / System.Windows.Forms / OSFeature.cs
1 // Permission is hereby granted, free of charge, to any person obtaining
2 // a copy of this software and associated documentation files (the
3 // "Software"), to deal in the Software without restriction, including
4 // without limitation the rights to use, copy, modify, merge, publish,
5 // distribute, sublicense, and/or sell copies of the Software, and to
6 // permit persons to whom the Software is furnished to do so, subject to
7 // the following conditions:
8 // 
9 // The above copyright notice and this permission notice shall be
10 // included in all copies or substantial portions of the Software.
11 // 
12 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
13 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
14 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
15 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
16 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
17 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
18 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
19 //
20 // Copyright (c) 2005 Novell, Inc. (http://www.novell.com)
21 //
22 // Authors:
23 //      Peter Bartok    (pbartok@novell.com)
24 //
25 //
26
27 // COMPLETE
28
29 namespace System.Windows.Forms {
30         public class OSFeature : FeatureSupport {
31                 #region Local Variables
32                 private static OSFeature        feature = new OSFeature();
33                 #endregion      // Local Variables
34
35                 #region Protected Constructors
36                 protected OSFeature() {
37                         
38                 }
39                 #endregion      // Protected Constructors
40
41                 #region Public Static Fields
42                 public static readonly object LayeredWindows;
43                 public static readonly object Themes;
44                 #endregion      // Public Static Fields
45
46                 #region Public Static Properties
47                 public static OSFeature Feature {
48                         get {
49                                 return  feature;
50                         }
51                 }
52                 
53                 public static bool IsPresent (SystemParameter enumVal)
54                 {
55 #pragma warning disable 219                     
56                         object o;
57 #pragma warning restore 219                     
58
59                         switch (enumVal) {
60                                 case SystemParameter.DropShadow:
61                                         try {
62                                                 o = SystemInformation.IsDropShadowEnabled;
63                                                 return true;
64                                         } catch (Exception) { return false; }
65                                 case SystemParameter.FlatMenu:
66                                         try {
67                                                 o = SystemInformation.IsFlatMenuEnabled;
68                                                 return true;
69                                         } catch (Exception) { return false; }
70                                 case SystemParameter.FontSmoothingContrastMetric:
71                                         try {
72                                                 o = SystemInformation.FontSmoothingContrast;
73                                                 return true;
74                                         } catch (Exception) { return false; }
75                                 case SystemParameter.FontSmoothingTypeMetric:
76                                         try {
77                                                 o = SystemInformation.FontSmoothingType;
78                                                 return true;
79                                         } catch (Exception) { return false; }
80                                 case SystemParameter.MenuFadeEnabled:
81                                         try {
82                                                 o = SystemInformation.IsMenuFadeEnabled;
83                                                 return true;
84                                         } catch (Exception) { return false; }
85                                 case SystemParameter.SelectionFade:
86                                         try {
87                                                 o = SystemInformation.IsSelectionFadeEnabled;
88                                                 return true;
89                                         } catch (Exception) { return false; }
90                                 case SystemParameter.ToolTipAnimationMetric:
91                                         try {
92                                                 o = SystemInformation.IsToolTipAnimationEnabled;
93                                                 return true;
94                                         } catch (Exception) { return false; }
95                                 case SystemParameter.UIEffects:
96                                         try {
97                                                 o = SystemInformation.UIEffectsEnabled;
98                                                 return true;
99                                         } catch (Exception) { return false; }
100                                 case SystemParameter.CaretWidthMetric:
101                                         try {
102                                                 o = SystemInformation.CaretWidth;
103                                                 return true;
104                                         } catch (Exception) { return false; }
105                                 case SystemParameter.VerticalFocusThicknessMetric:
106                                         try {
107                                                 o = SystemInformation.VerticalFocusThickness;
108                                                 return true;
109                                         } catch (Exception) { return false; }
110                                 case SystemParameter.HorizontalFocusThicknessMetric:
111                                         try {
112                                                 o = SystemInformation.HorizontalFocusThickness;
113                                                 return true;
114                                         } catch (Exception) { return false; }
115                         }
116                         
117                         return false;
118                 }
119                 #endregion      // Public Static Properties
120
121                 #region Public Instance Methods
122                 public override Version GetVersionPresent(object feature) {
123                         if (feature == Themes) {
124                                 return ThemeEngine.Current.Version;
125                         }
126                         return null;
127                 }
128                 #endregion      // Public Instance Methods
129         }
130 }