diff --git a/.hgignore b/.hgignore deleted file mode 100644 index 61f6ccb..0000000 --- a/.hgignore +++ /dev/null @@ -1,24 +0,0 @@ -syntax: glob -*.suo -*_TemporaryKey.pfx -*.user -bin/x86 -Debug WP7 -Bin/Release -Bin/Debug -Debug -Release -*.sdf -*.opensdf -ipch -*.aps -WP7AppTitleLocalizer -AppResLib.dll.*.mui -*.orig -syntax: regexp -/bin/Debug$ -/obj/x86$ -/bin/Release$ -/publish$ -/obj/Debug$ -/obj/Release$ diff --git a/Documentation/Creation of a valid RIFT login token.pap b/Documentation/Creation of a valid RIFT login token.pap deleted file mode 100644 index b03bdd3..0000000 --- a/Documentation/Creation of a valid RIFT login token.pap +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - -
- -
-
- -
- -
-
- -
- -
-
- -
- -
-
- -
- -
-
- -
- -
-
- -
- -
-
- -
- -
-
- -
- -
-
- -
- -
-
- -
- -
-
- -
- -
-
- -
- -
-
- -
- -
-
- -
- -
-
- -
- -
-
-
-
- - - - - - - - - - -
-
-
- \ No newline at end of file diff --git a/Documentation/Creation of a valid RIFT login token.png b/Documentation/Creation of a valid RIFT login token.png deleted file mode 100644 index 81fbe66..0000000 Binary files a/Documentation/Creation of a valid RIFT login token.png and /dev/null differ diff --git a/Documentation/Determine device id for Android phones.pap b/Documentation/Determine device id for Android phones.pap deleted file mode 100644 index 718a8eb..0000000 --- a/Documentation/Determine device id for Android phones.pap +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - -
- -
-
- -
- -
-
- -
- -
-
- -
- -
-
- -
- -
-
- -
- -
-
- -
- -
-
- -
- -
-
- -
- -
-
-
-
- - - - - - - - - -
-
-
- \ No newline at end of file diff --git a/Documentation/Determine device id for Android phones.png b/Documentation/Determine device id for Android phones.png deleted file mode 100644 index a1f0eba..0000000 Binary files a/Documentation/Determine device id for Android phones.png and /dev/null differ diff --git a/Documentation/RIFT Authenticator explained.odt b/Documentation/RIFT Authenticator explained.odt deleted file mode 100644 index 99b36e3..0000000 Binary files a/Documentation/RIFT Authenticator explained.odt and /dev/null differ diff --git a/Documentation/RIFT Authenticator explained.pdf b/Documentation/RIFT Authenticator explained.pdf deleted file mode 100644 index c0c9196..0000000 Binary files a/Documentation/RIFT Authenticator explained.pdf and /dev/null differ diff --git a/HowToCompile.md b/HowToCompile.md new file mode 100644 index 0000000..e762860 --- /dev/null +++ b/HowToCompile.md @@ -0,0 +1,32 @@ +# Introduction # + +This page shows you how to download and compile the source code. + +# Requirements # + + 1. [Mercurial](http://mercurial.selenic.com/downloads/) + * It's recommended to use TortoiseHG which is much easier to use + 1. Visual Studio 2010 Professional SP1 + * Using Visual C# 2010 Express might work too, but you won't be able to create an installer + * You can download the express edition from [here](http://www.microsoft.com/visualstudio/en-us/products/2010-editions/visual-csharp-express) + 1. [Windows Installer XML toolset](http://wix.sourceforge.net/) + * I used a weekly build: [3.6.2012.0](http://wix.sourceforge.net/releases/3.6.2012.0/) + +# Download the source code # + +## Cloning the source using Mercurial ## + +You can use both the [command line application or TortoiseHG](http://mercurial.selenic.com/downloads/). The URL for cloning the repository can be found on the [project web site](http://code.google.com/p/rift-authenticator-for-windows/source/checkout). + +## Downloading from the download page ## + +It's also possible to download the source code from the [project download page](http://code.google.com/p/rift-authenticator-for-windows/downloads/list). + +# Compiling the project # + + * Open the RiftAuthenticator.sln from the downloaded source code. It should automatically start Visual Studio 2010. + * Change the build configuration to "Debug" + * Open the context-menu of the "RiftAuthenticator.WPF" project + * Set the "RiftAuthenticator.WPF" as start project + * Open the "Build" menu + * Click the "Build Solution" menu item \ No newline at end of file diff --git a/Images/MarketPlace/create-or-recover-de.png b/Images/MarketPlace/create-or-recover-de.png deleted file mode 100644 index ae5ddd5..0000000 Binary files a/Images/MarketPlace/create-or-recover-de.png and /dev/null differ diff --git a/Images/MarketPlace/create-or-recover.png b/Images/MarketPlace/create-or-recover.png deleted file mode 100644 index 0a9ab30..0000000 Binary files a/Images/MarketPlace/create-or-recover.png and /dev/null differ diff --git a/Images/MarketPlace/login-token-de.png b/Images/MarketPlace/login-token-de.png deleted file mode 100644 index e748573..0000000 Binary files a/Images/MarketPlace/login-token-de.png and /dev/null differ diff --git a/Images/MarketPlace/login-token.png b/Images/MarketPlace/login-token.png deleted file mode 100644 index 7469052..0000000 Binary files a/Images/MarketPlace/login-token.png and /dev/null differ diff --git a/Images/MarketPlace/multiple-auths-de.png b/Images/MarketPlace/multiple-auths-de.png deleted file mode 100644 index 689c801..0000000 Binary files a/Images/MarketPlace/multiple-auths-de.png and /dev/null differ diff --git a/Images/MarketPlace/multiple-auths.png b/Images/MarketPlace/multiple-auths.png deleted file mode 100644 index a19bbe5..0000000 Binary files a/Images/MarketPlace/multiple-auths.png and /dev/null differ diff --git a/Images/RiftLogo.ico b/Images/RiftLogo.ico deleted file mode 100644 index 189d204..0000000 Binary files a/Images/RiftLogo.ico and /dev/null differ diff --git a/Images/RiftLogo.png b/Images/RiftLogo.png deleted file mode 100644 index 9d6f94a..0000000 Binary files a/Images/RiftLogo.png and /dev/null differ diff --git a/Images/SplashScreenImage.pdn b/Images/SplashScreenImage.pdn deleted file mode 100644 index a04ae8e..0000000 Binary files a/Images/SplashScreenImage.pdn and /dev/null differ diff --git a/Libraries/WP-Toolkit/2011-02/EULA.rtf b/Libraries/WP-Toolkit/2011-02/EULA.rtf deleted file mode 100644 index a907d5d..0000000 Binary files a/Libraries/WP-Toolkit/2011-02/EULA.rtf and /dev/null differ diff --git a/Libraries/WP-Toolkit/2011-02/Microsoft.Phone.Controls.Toolkit.dll b/Libraries/WP-Toolkit/2011-02/Microsoft.Phone.Controls.Toolkit.dll deleted file mode 100644 index 573b246..0000000 Binary files a/Libraries/WP-Toolkit/2011-02/Microsoft.Phone.Controls.Toolkit.dll and /dev/null differ diff --git a/Libraries/WP-Toolkit/2011-02/Microsoft.Phone.Controls.Toolkit.xml b/Libraries/WP-Toolkit/2011-02/Microsoft.Phone.Controls.Toolkit.xml deleted file mode 100644 index 528bd75..0000000 --- a/Libraries/WP-Toolkit/2011-02/Microsoft.Phone.Controls.Toolkit.xml +++ /dev/null @@ -1,7637 +0,0 @@ - - - - Microsoft.Phone.Controls.Toolkit - - - - - Represents a control that provides a text box for user input and a - drop-down that contains possible matches based on the input in the text - box. - - Stable - - - - The IUpdateVisualState interface is used to provide the - InteractionHelper with access to the type's UpdateVisualState method. - - - - - Update the visual state of the control. - - - A value indicating whether to automatically generate transitions to - the new state, or instantly transition to the new state. - - - - - Specifies the name of the selection adapter TemplatePart. - - - - - Specifies the name of the Selector TemplatePart. - - - - - Specifies the name of the Popup TemplatePart. - - - - - The name for the text box part. - - - - - The name for the text box style. - - - - - The name for the adapter's item container style. - - - - - Gets or sets a local cached copy of the items data. - - - - - Gets or sets the observable collection that contains references to - all of the items in the generated view of data that is provided to - the selection-style control adapter. - - - - - Gets or sets a value to ignore a number of pending change handlers. - The value is decremented after each use. This is used to reset the - value of properties without performing any of the actions in their - change handlers. - - The int is important as a value because the TextBox - TextChanged event does not immediately fire, and this will allow for - nested property changes to be ignored. - - - - Gets or sets a value indicating whether to ignore calling a pending - change handlers. - - - - - Gets or sets a value indicating whether to ignore the selection - changed event. - - - - - Gets or sets a value indicating whether to skip the text update - processing when the selected item is updated. - - - - - Gets or sets the last observed text box selection start location. - - - - - Gets or sets a value indicating whether the user is in the process - of inputting text. This is used so that we do not update - _textSelectionStart while the user is using an IME. - - - - - Gets or sets a value indicating whether the user initiated the - current populate call. - - - - - A value indicating whether the popup has been opened at least once. - - - - - Gets or sets the DispatcherTimer used for the MinimumPopulateDelay - condition for auto completion. - - - - - Gets or sets a value indicating whether a read-only dependency - property change handler should allow the value to be set. This is - used to ensure that read-only properties cannot be changed via - SetValue, etc. - - - - - Gets or sets the BindingEvaluator, a framework element that can - provide updated string values from a single binding. - - - - - A weak event listener for the collection changed event. - - - - - Identifies the - - dependency property. - - The identifier for the - - dependency property. - - - - MinimumPrefixLengthProperty property changed handler. - - AutoCompleteBox that changed its MinimumPrefixLength. - Event arguments. - - - - Identifies the - - dependency property. - - The identifier for the - - dependency property. - - - - MinimumPopulateDelayProperty property changed handler. Any current - dispatcher timer will be stopped. The timer will not be restarted - until the next TextUpdate call by the user. - - AutoCompleteTextBox that changed its - MinimumPopulateDelay. - Event arguments. - - - - Identifies the - - dependency property. - - The identifier for the - - dependency property. - - - - Identifies the - - dependency property. - - The identifier for the - - dependency property. - - - - Identifies the - - dependency property. - - The identifier for the - - dependency property. - - - - Identifies the - - dependency property. - - The identifier for the - - dependency property. - - - - Identifies the - - dependency property. - - The identifier for the - - dependency property. - - - - MaxDropDownHeightProperty property changed handler. - - AutoCompleteTextBox that changed its MaxDropDownHeight. - Event arguments. - - - - Identifies the - - dependency property. - - The identifier for the - - dependency property. - - - - IsDropDownOpenProperty property changed handler. - - AutoCompleteTextBox that changed its IsDropDownOpen. - Event arguments. - - - - Identifies the - - dependency property. - - The identifier for the - - dependency property. - - - - ItemsSourceProperty property changed handler. - - AutoCompleteBox that changed its ItemsSource. - Event arguments. - - - - Identifies the - - dependency property. - - The identifier the - - dependency property. - - - - SelectedItemProperty property changed handler. Fires the - SelectionChanged event. The event data will contain any non-null - removed items and non-null additions. - - AutoCompleteBox that changed its SelectedItem. - Event arguments. - - - - Called when the selected item is changed, updates the text value - that is displayed in the text box part. - - The new item. - - - - Identifies the - - dependency property. - - The identifier for the - - dependency property. - - - - TextProperty property changed handler. - - AutoCompleteBox that changed its Text. - Event arguments. - - - - Identifies the - - dependency property. - - The identifier for the - - dependency property. - - - - OnSearchTextProperty property changed handler. - - AutoCompleteBox that changed its SearchText. - Event arguments. - - - - Gets the identifier for the - - dependency property. - - - - - FilterModeProperty property changed handler. - - AutoCompleteBox that changed its FilterMode. - Event arguments. - - - - Identifies the - - dependency property. - - The identifier for the - - dependency property. - - - - ItemFilterProperty property changed handler. - - AutoCompleteBox that changed its ItemFilter. - Event arguments. - - - - Identifies the - - dependency property. - - The identifier for the - - dependency property. - - - - Identifies the - - dependency property. - - - - - The TextBox template part. - - - - - The SelectionAdapter. - - - - - Initializes a new instance of the - class. - - - - - Arranges and sizes the - - control and its contents. - - The size allowed for the - control. - The , unchanged. - - - - Builds the visual tree for the - control - when a new template is applied. - - - - - Allows the popup wrapper to fire visual state change events. - - The source object. - The event data. - - - - Allows the popup wrapper to fire the FocusChanged event. - - The source object. - The event data. - - - - Begin closing the drop-down. - - The original value. - - - - Begin opening the drop down by firing cancelable events, opening the - drop-down or reverting, depending on the event argument values. - - The original value, if needed for a revert. - - - - Connects to the DropDownPopup Closed event. - - The source object. - The event data. - - - - Handles the FocusChanged event. - - A value indicating whether the control - currently has the focus. - - - - Determines whether the text box or drop-down portion of the - control has - focus. - - true to indicate the - has focus; - otherwise, false. - - - - Provides handling for the - event. - - A - that contains the event data. - - - - Provides handling for the - event. - - A - that contains the event data. - - - - Handle the change of the IsEnabled property. - - The source object. - The event data. - - - - Returns the - part, if - possible. - - - A object, - if possible. Otherwise, null. - - - - - Handles the timer tick when using a populate delay. - - The source object. - The event arguments. - - - - Raises the - - event. - - A - that - contains the event data. - - - - Raises the - - event. - - A - - that contains the event data. - - - - Raises the - - event. - - A - - that contains the event data. - - - - Raises the - - event. - - A - - that contains the event data. - - - - Raises the - - event. - - A - - that contains the event data. - - - - Raises the - - event. - - A - - that contains the event data. - - - - Raises the - - event. - - A - - which contains the event data. - - - - Formats an Item for text comparisons based on Converter - and ConverterCulture properties. - - The object to format. - A value indicating whether to clear - the data context after the lookup is performed. - Formatted Value. - - - - Converts the specified object to a string by using the - and - values - of the binding object specified by the - - property. - - The object to format as a string. - The string representation of the specified object. - - Override this method to provide a custom string conversion. - - - - - Raises the - - event. - - A - that contains the event data. - - - - Handle the TextChanged event that is directly attached to the - TextBox part. This ensures that only user initiated actions will - result in an AutoCompleteBox suggestion and operation. - - The source TextBox object. - The TextChanged event data. - - - - When selection changes, save the location of the selection start. - - The source object. - The event data. - - - - Handles KeyDown to set a flag that indicates that the user is inputting - text. This is important for IME input. - - The source UIElement object. - The KeyDown event data. - - - - Handles KeyUp to turn off the flag that indicates that the user is inputting - text. This is important for IME input. - - The source UIElement object. - The KeyUp event data. - - - - Updates both the text box value and underlying text dependency - property value if and when they change. Automatically fires the - text changed events when there is a change. - - The new string value. - - - - Updates both the text box value and underlying text dependency - property value if and when they change. Automatically fires the - text changed events when there is a change. - - The new string value. - A nullable bool value indicating whether - the action was user initiated. In a user initiated mode, the - underlying text dependency property is updated. In a non-user - interaction, the text box value is updated. When user initiated is - null, all values are updated. - - - - Handle the update of the text for the control from any source, - including the TextBox part and the Text dependency property. - - The new text. - A value indicating whether the update - is a user-initiated action. This should be a True value when the - TextUpdated method is called from a TextBox event handler. - - - - Notifies the - that the - - property has been set and the data can be filtered to provide - possible matches in the drop-down. - - - Call this method when you are providing custom population of - the drop-down portion of the AutoCompleteBox, to signal the control - that you are done with the population process. - Typically, you use PopulateComplete when the population process - is a long-running process and you want to cancel built-in filtering - of the ItemsSource items. In this case, you can handle the - Populated event and set PopulatingEventArgs.Cancel to true. - When the long-running process has completed you call - PopulateComplete to indicate the drop-down is populated. - - - - - Performs text completion, if enabled, and a lookup on the underlying - item values for an exact match. Will update the SelectedItem value. - - A value indicating whether the operation - was user initiated. Text completion will not be performed when not - directly initiated by the user. - - - - Attempts to look through the view and locate the specific exact - text match. - - The search text. - The view reference. - The predicate to use for the partial or - exact match. - Returns the object or null. - - - - A simple helper method to clear the view and ensure that a view - object is always present and not null. - - - - - Walks through the items enumeration. Performance is not going to be - perfect with the current implementation. - - - - - Handle any change to the ItemsSource dependency property, update - the underlying ObservableCollection view, and set the selection - adapter's ItemsSource to the view if appropriate. - - The old enumerable reference. - The new enumerable reference. - - - - Method that handles the ObservableCollection.CollectionChanged event for the ItemsSource property. - - The object that raised the event. - The event data. - - - - Handles the SelectionChanged event of the selection adapter. - - The source object. - The selection changed event data. - - - - Handles the Commit event on the selection adapter. - - The source object. - The event data. - - - - Handles the Cancel event on the selection adapter. - - The source object. - The event data. - - - - Handles MaxDropDownHeightChanged by re-arranging and updating the - popup arrangement. - - The new value. - - - - Private method that directly opens the popup, checks the expander - button, and then fires the Opened event. - - The old value. - The new value. - - - - Private method that directly closes the popup, flips the Checked - value, and then fires the Closed event. - - The old value. - The new value. - - - - Provides handling for the - event. - - A - that contains the event data. - - - - Update the visual state of the control. - - - A value indicating whether to automatically generate transitions to - the new state, or instantly transition to the new state. - - - - - Update the current visual state of the button. - - - True to use transitions when updating the visual state, false to - snap directly to the new visual state. - - - - - Gets or sets the helper that provides all of the standard - interaction functionality. Making it internal for subclass access. - - - - - Gets or sets the minimum number of characters required to be entered - in the text box before the - displays - possible matches. - matches. - - - The minimum number of characters to be entered in the text box - before the - displays possible matches. The default is 1. - - - If you set MinimumPrefixLength to -1, the AutoCompleteBox will - not provide possible matches. There is no maximum value, but - setting MinimumPrefixLength to value that is too large will - prevent the AutoCompleteBox from providing possible matches as well. - - - - - Gets or sets the minimum delay, in milliseconds, after text is typed - in the text box before the - control - populates the list of possible matches in the drop-down. - - The minimum delay, in milliseconds, after text is typed in - the text box, but before the - populates - the list of possible matches in the drop-down. The default is 0. - The set value is less than 0. - - - - Gets or sets a value indicating whether the first possible match - found during the filtering process will be displayed automatically - in the text box. - - - True if the first possible match found will be displayed - automatically in the text box; otherwise, false. The default is - false. - - - - - Gets or sets the used - to display each item in the drop-down portion of the control. - - The used to - display each item in the drop-down. The default is null. - - You use the ItemTemplate property to specify the visualization - of the data objects in the drop-down portion of the AutoCompleteBox - control. If your AutoCompleteBox is bound to a collection and you - do not provide specific display instructions by using a - DataTemplate, the resulting UI of each item is a string - representation of each object in the underlying collection. - - - - - Gets or sets the that is - applied to the selection adapter contained in the drop-down portion - of the - control. - - The applied to the - selection adapter contained in the drop-down portion of the - control. - The default is null. - - The default selection adapter contained in the drop-down is a - ListBox control. - - - - - Gets or sets the applied to - the text box portion of the - control. - - The applied to the text - box portion of the - control. - The default is null. - - - - Gets or sets the maximum height of the drop-down portion of the - control. - - The maximum height of the drop-down portion of the - control. - The default is . - The specified value is less than 0. - - - - Gets or sets a value indicating whether the drop-down portion of - the control is open. - - - True if the drop-down is open; otherwise, false. The default is - false. - - - - - Gets or sets a collection that is used to generate the items for the - drop-down portion of the - control. - - The collection that is used to generate the items of the - drop-down portion of the - control. - - - - Gets or sets the selected item in the drop-down. - - The selected item in the drop-down. - - If the IsTextCompletionEnabled property is true and text typed by - the user matches an item in the ItemsSource collection, which is - then displayed in the text box, the SelectedItem property will be - a null reference. - - - - - Gets or sets the text in the text box portion of the - control. - - The text in the text box portion of the - control. - - - - Gets the text that is used to filter items in the - - item collection. - - The text that is used to filter items in the - - item collection. - - The SearchText value is typically the same as the - Text property, but is set after the TextChanged event occurs - and before the Populating event. - - - - - Gets or sets how the text in the text box is used to filter items - specified by the - - property for display in the drop-down. - - One of the - - values The default is - . - The specified value is - not a valid - . - - Use the FilterMode property to specify how possible matches are - filtered. For example, possible matches can be filtered in a - predefined or custom way. The search mode is automatically set to - Custom if you set the ItemFilter property. - - - - - Gets or sets the custom method that uses user-entered text to filter - the items specified by the - - property for display in the drop-down. - - The custom method that uses the user-entered text to filter - the items specified by the - - property. The default is null. - - The filter mode is automatically set to Custom if you set the - ItemFilter property. - - - - - Gets or sets the custom method that uses the user-entered text to - filter items specified by the - - property in a text-based way for display in the drop-down. - - The custom method that uses the user-entered text to filter - items specified by the - - property in a text-based way for display in the drop-down. - - The search mode is automatically set to Custom if you set the - TextFilter property. - - - - - Gets or sets the - - used by the Text template part. - - - - - Gets or sets the drop down popup control. - - - - - Determines whether text completion should be done. - - - - - Gets or sets the Text template part. - - - - - Gets or sets the selection adapter used to populate the drop-down - with a list of selectable items. - - The selection adapter used to populate the drop-down with a - list of selectable items. - - You can use this property when you create an automation peer to - use with AutoCompleteBox or deriving from AutoCompleteBox to - create a custom control. - - - - - Occurs when the text in the text box portion of the - changes. - - - - - Occurs when the - is - populating the drop-down with possible matches based on the - - property. - - - If the event is canceled, by setting the PopulatingEventArgs.Cancel - property to true, the AutoCompleteBox will not automatically - populate the selection adapter contained in the drop-down. - In this case, if you want possible matches to appear, you must - provide the logic for populating the selection adapter. - - - - - Occurs when the - has - populated the drop-down with possible matches based on the - - property. - - - - - Occurs when the value of the - - property is changing from false to true. - - - - - Occurs when the value of the - - property has changed from false to true and the drop-down is open. - - - - - Occurs when the - - property is changing from true to false. - - - - - Occurs when the - - property was changed from true to false and the drop-down is open. - - - - - Occurs when the selected item in the drop-down portion of the - has - changed. - - - - - Gets or sets the that - is used to get the values for display in the text portion of - the - control. - - The object used - when binding to a collection property. - - - - Gets or sets the property path that is used to get values for - display in the text portion of the - control. - - The property path that is used to get values for display in - the text portion of the - control. - - - - A predefined set of filter functions for the known, built-in - AutoCompleteFilterMode enumeration values. - - - - - Index function that retrieves the filter for the provided - AutoCompleteFilterMode. - - The built-in search mode. - Returns the string-based comparison function. - - - - Check if the string value begins with the text. - - The AutoCompleteBox prefix text. - The item's string value. - Returns true if the condition is met. - - - - Check if the string value begins with the text. - - The AutoCompleteBox prefix text. - The item's string value. - Returns true if the condition is met. - - - - Check if the string value begins with the text. - - The AutoCompleteBox prefix text. - The item's string value. - Returns true if the condition is met. - - - - Check if the string value begins with the text. - - The AutoCompleteBox prefix text. - The item's string value. - Returns true if the condition is met. - - - - Check if the prefix is contained in the string value. The current - culture's case insensitive string comparison operator is used. - - The AutoCompleteBox prefix text. - The item's string value. - Returns true if the condition is met. - - - - Check if the prefix is contained in the string value. - - The AutoCompleteBox prefix text. - The item's string value. - Returns true if the condition is met. - - - - Check if the prefix is contained in the string value. - - The AutoCompleteBox prefix text. - The item's string value. - Returns true if the condition is met. - - - - Check if the prefix is contained in the string value. - - The AutoCompleteBox prefix text. - The item's string value. - Returns true if the condition is met. - - - - Check if the string values are equal. - - The AutoCompleteBox prefix text. - The item's string value. - Returns true if the condition is met. - - - - Check if the string values are equal. - - The AutoCompleteBox prefix text. - The item's string value. - Returns true if the condition is met. - - - - Check if the string values are equal. - - The AutoCompleteBox prefix text. - The item's string value. - Returns true if the condition is met. - - - - Check if the string values are equal. - - The AutoCompleteBox prefix text. - The item's string value. - Returns true if the condition is met. - - - - Specifies how text in the text box portion of the - control is used - to filter items specified by the - - property for display in the drop-down. - - Stable - - - - Specifies that no filter is used. All items are returned. - - - - - Specifies a culture-sensitive, case-insensitive filter where the - returned items start with the specified text. The filter uses the - - method, specifying - as - the string comparison criteria. - - - - - Specifies a culture-sensitive, case-sensitive filter where the - returned items start with the specified text. The filter uses the - - method, specifying - as the string - comparison criteria. - - - - - Specifies an ordinal, case-insensitive filter where the returned - items start with the specified text. The filter uses the - - method, specifying - as the - string comparison criteria. - - - - - Specifies an ordinal, case-sensitive filter where the returned items - start with the specified text. The filter uses the - - method, specifying as - the string comparison criteria. - - - - - Specifies a culture-sensitive, case-insensitive filter where the - returned items contain the specified text. - - - - - Specifies a culture-sensitive, case-sensitive filter where the - returned items contain the specified text. - - - - - Specifies an ordinal, case-insensitive filter where the returned - items contain the specified text. - - - - - Specifies an ordinal, case-sensitive filter where the returned items - contain the specified text. - - - - - Specifies a culture-sensitive, case-insensitive filter where the - returned items equal the specified text. The filter uses the - - method, specifying - as - the search comparison criteria. - - - - - Specifies a culture-sensitive, case-sensitive filter where the - returned items equal the specified text. The filter uses the - - method, specifying - as the string - comparison criteria. - - - - - Specifies an ordinal, case-insensitive filter where the returned - items equal the specified text. The filter uses the - - method, specifying - as the - string comparison criteria. - - - - - Specifies an ordinal, case-sensitive filter where the returned items - equal the specified text. The filter uses the - - method, specifying as - the string comparison criteria. - - - - - Specifies that a custom filter is used. This mode is used when the - - or - - properties are set. - - - - - Represents the filter used by the - control to - determine whether an item is a possible match for the specified text. - - true to indicate is a possible match - for ; otherwise false. - The string used as the basis for filtering. - The item that is compared with the - parameter. - The type used for filtering the - . This type can - be either a string or an object. - Stable - - - - Defines an item collection, selection members, and key handling for the - selection adapter contained in the drop-down portion of an - control. - - Stable - - - - Provides handling for the - event that occurs - when a key is pressed while the drop-down portion of the - has focus. - - A - that contains data about the - event. - - - - Returns an automation peer for the selection adapter, for use by the - Silverlight automation infrastructure. - - An automation peer for the selection adapter, if one is - available; otherwise, null. - - - - Gets or sets the selected item. - - The currently selected item. - - - - Occurs when the - - property value changes. - - - - - Gets or sets a collection that is used to generate content for the - selection adapter. - - The collection that is used to generate content for the - selection adapter. - - - - Occurs when a selected item is not cancelled and is committed as the - selected item. - - - - - Occurs when a selection has been canceled. - - - - - Provides data for the - - event. - - Stable - - - - Initializes a new instance of the - . - - The list of possible matches added to the - drop-down portion of the - control. - - - - Gets the list of possible matches added to the drop-down portion of - the - control. - - The list of possible matches added to the - . - - - - Represents the method that will handle the - - event of a - control. - - The source of the event. - A - that - contains the event data. - Stable - - - - Provides data for the - - event. - - Stable - - - - Initializes a new instance of the - . - - The value of the - - property, which is used to filter items for the - control. - - - - Gets the text that is used to determine which items to display in - the - control. - - The text that is used to determine which items to display in - the . - - - - Gets or sets a value indicating whether the - - event should be canceled. - - True to cancel the event, otherwise false. The default is - false. - - - - Represents the method that will handle the - - event of a - control. - - The source of the event. - A - that - contains the event data. - Stable - - - - PopupHelper is a simple wrapper type that helps abstract platform - differences out of the Popup. - - - - - The distance from the control to the child. - - - - - A value indicating whether Silverlight has loaded at least once, - so that the wrapping canvas is not recreated. - - - - - Initializes a new instance of the PopupHelper class. - - The parent control. - - - - Initializes a new instance of the PopupHelper class. - - The parent control. - The Popup template part. - - - - Gets the for the control. - - The . - - - - Makes a from a . - - - The control's margin is counted with the offset to make the . - This makes the refer to the visible part of the control. - - The . - The margin. - - - - - Gets the of the visible part of the control (minus the margin). - - - The Parent is wrong if the orientation changed, so use the ArrangeOverride if it's available. - - The margin. - The size. - The . - - - - Gets the margin for the control. - - The margin. - - - - Determines whether is displayed above the control. - - The not covered by the SIP. - The of the control. - The position of the control. - - - - - Gets the minimum of three numbers and floors it at zero. - - The first number. - The second number. - The result. - - - - Computes the of if displayed above the control. - - The of the control. - The position of the control. - The . - - - - Computes the of if displayed below the control. - - The not covered by the SIP. - The of the control. - The position of the control. - The . - - - - The position of if displayed above the control. - - The control's margin. - The position. - - - - The position of if displayed below the control. - - The control's margin. - The of the control. - The position. - - - - Arrange the popup. - The from . - - - - - Fires the Closed event. - - The event data. - - - - Actually closes the popup after the VSM state animation completes. - - Event source. - Event arguments. - - - - Should be called by the parent control before the base - OnApplyTemplate method is called. - - - - - Should be called by the parent control after the base - OnApplyTemplate method is called. - - - - - The size of the popup child has changed. - - The source object. - The event data. - - - - The mouse has clicked outside of the popup. - - The source object. - The event data. - - - - Connected to the Popup Closed event and fires the Closed event. - - The source object. - The event data. - - - - Connected to several events that indicate that the FocusChanged - event should bubble up to the parent control. - - The event data. - - - - Fires the UpdateVisualStates event. - - The event data. - - - - The popup child has received focus. - - The source object. - The event data. - - - - The popup child has lost focus. - - The source object. - The event data. - - - - The popup child has had the mouse enter its bounds. - - The source object. - The event data. - - - - The mouse has left the popup child's bounds. - - The source object. - The event data. - - - - Gets a value indicating whether a visual popup state is being used - in the current template for the Closed state. Setting this value to - true will delay the actual setting of Popup.IsOpen to false until - after the visual state's transition for Closed is complete. - - - - - Gets or sets the parent control. - - - - - Gets or sets the expansive area outside of the popup. - - - - - Gets or sets the canvas for the popup child. - - - - - Gets or sets the maximum drop down height value. - - - - - Gets the Popup control instance. - - - - - Gets or sets a value indicating whether the actual Popup is open. - - - - - Gets or sets the popup child framework element. Can be used if an - assumption is made on the child type. - - - - - The Closed event is fired after the Popup closes. - - - - - Fired when the popup children have a focus event change, allows the - parent control to update visual states or react to the focus state. - - - - - Fired when the popup children intercept an event that may indicate - the need for a visual state update by the parent control. - - - - - Represents the selection adapter contained in the drop-down portion of - an control. - - Stable - - - - The Selector instance. - - - - - Initializes a new instance of the - - class. - - - - - Initializes a new instance of the - - class with the specified - - control. - - The - control - to wrap as a - . - - - - If the control contains a ScrollViewer, this will reset the viewer - to be scrolled to the top. - - - - - Handles the SelectionChanged event on the Selector control. - - The source object. - The selection changed event data. - - - - Increments the - - property of the underlying - - control. - - - - - Decrements the - - property of the underlying - - control. - - - - - Provides handling for the - event that occurs - when a key is pressed while the drop-down portion of the - has focus. - - A - that contains data about the - event. - - - - Raises the - - event. - - - - - Fires the Commit event. - - The source object. - The event data. - - - - Raises the - - event. - - - - - Fires the Cancel event. - - The source object. - The event data. - - - - Change the selection after the actions are complete. - - - - - Returns an automation peer for the underlying - - control, for use by the Silverlight automation infrastructure. - - An automation peer for use by the Silverlight automation - infrastructure. - - - - Gets or sets a value indicating whether the selection change event - should not be fired. - - - - - Gets or sets the underlying - - control. - - The underlying - - control. - - - - Occurs when the - - property value changes. - - - - - Occurs when an item is selected and is committed to the underlying - - control. - - - - - Occurs when a selection is canceled before it is committed. - - - - - Gets or sets the selected item of the selection adapter. - - The selected item of the underlying selection adapter. - - - - Gets or sets a collection that is used to generate the content of - the selection adapter. - - The collection used to generate content for the selection - adapter. - - - - A framework element that permits a binding to be evaluated in a new data - context leaf node. - - The type of dynamic binding to return. - - - - Gets or sets the string value binding used by the control. - - - - - Identifies the Value dependency property. - - - - - Initializes a new instance of the BindingEvaluator class. - - - - - Initializes a new instance of the BindingEvaluator class, - setting the initial binding to the provided parameter. - - The initial string value binding. - - - - Clears the data context so that the control does not keep a - reference to the last-looked up item. - - - - - Updates the data context of the framework element and returns the - updated binding value. - - The object to use as the data context. - If set to true, this parameter will - clear the data context immediately after retrieving the value. - Returns the evaluated T value of the bound dependency - property. - - - - Updates the data context of the framework element and returns the - updated binding value. - - The object to use as the data context. - Returns the evaluated T value of the bound dependency - property. - - - - Gets or sets the data item string value. - - - - - Gets or sets the value binding. - - - - - This set of internal extension methods provide general solutions and - utilities in a small enough number to not warrant a dedicated extension - methods class. - - - - - Inverts a Matrix. The Invert functionality on the Matrix type is - internal to the framework only. Since Matrix is a struct, an out - parameter must be presented. - - The Matrix object. - The matrix to return by an output - parameter. - Returns a value indicating whether the type was - successfully inverted. If the determinant is 0.0, then it cannot - be inverted and the original instance will remain untouched. - - - - An implementation of the Contains member of string that takes in a - string comparison. The traditional .NET string Contains member uses - StringComparison.Ordinal. - - The string. - The string value to search for. - The string comparison type. - Returns true when the substring is found. - - - - The InteractionHelper provides controls with support for all of the - common interactions like mouse movement, mouse clicks, key presses, - etc., and also incorporates proper event semantics when the control is - disabled. - - - - - The threshold used to determine whether two clicks are temporally - local and considered a double click (or triple, quadruple, etc.). - 500 milliseconds is the default double click value on Windows. - This value would ideally be pulled form the system settings. - - - - - The threshold used to determine whether two clicks are spatially - local and considered a double click (or triple, quadruple, etc.) - in pixels squared. We use pixels squared so that we can compare to - the distance delta without taking a square root. - - - - - Reference used to call UpdateVisualState on the base class. - - - - - Initializes a new instance of the InteractionHelper class. - - Control receiving interaction. - - - - Update the visual state of the control. - - - A value indicating whether to automatically generate transitions to - the new state, or instantly transition to the new state. - - - UpdateVisualState works differently than the rest of the injected - functionality. Most of the other events are overridden by the - calling class which calls Allow, does what it wants, and then calls - Base. UpdateVisualState is the opposite because a number of the - methods in InteractionHelper need to trigger it in the calling - class. We do this using the IUpdateVisualState internal interface. - - - - - Update the visual state of the control. - - - A value indicating whether to automatically generate transitions to - the new state, or instantly transition to the new state. - - - - - Handle the control's Loaded event. - - The control. - Event arguments. - - - - Handle changes to the control's IsEnabled property. - - The control. - Event arguments. - - - - Handles changes to the control's IsReadOnly property. - - The value of the property. - - - - Update the visual state of the control when its template is changed. - - - - - Gets the control the InteractionHelper is targeting. - - - - - Gets a value indicating whether the control has focus. - - - - - Gets a value indicating whether the mouse is over the control. - - - - - Gets a value indicating whether the read-only property is set. - - - - - Gets a value indicating whether the mouse button is pressed down - over the control. - - - - - The ItemContainerGenerator provides useful utilities for ItemsControls. - - Preview - - - - A Panel that is used as the ItemsHost of the ItemsControl. This - property will only be valid when the ItemsControl is live in the - tree and has generated containers for some of its items. - - - - - A ScrollViewer that is used to scroll the items in the ItemsHost. - - - - - Initializes a new instance of the ItemContainerGenerator. - - - The ItemsControl being tracked by the ItemContainerGenerator. - - - - - Apply a control template to the ItemsControl. - - - - - Prepares the specified container to display the specified item. - - - Container element used to display the specified item. - - - The ItemContainerStyle for the parent ItemsControl. - - - - - Update the style of any generated items when the ItemContainerStyle - has been changed. - - The ItemContainerStyle. - - Silverlight does not support setting a Style multiple times, so we - only attempt to set styles on elements whose style hasn't already - been set. - - - - - Scroll the desired element into the ScrollHost's viewport. - - Element to scroll into view. - - - - Gets or sets the ItemsControl being tracked by the - ItemContainerGenerator. - - - - - Gets a Panel that is used as the ItemsHost of the ItemsControl. - This property will only be valid when the ItemsControl is live in - the tree and has generated containers for some of its items. - - - - - Gets a ScrollViewer that is used to scroll the items in the - ItemsHost. - - - - - Converts instances of other types to and from instances of a double that - represent an object measurement such as a height or width. - - Stable - - - - Conversions from units to pixels. - - - - - Initializes a new instance of the - class. - - - - - Determines whether conversion is possible from a specified type to a - that represents an object - measurement. - - - An - that provides a format context. - - - A that represents the type you want to - convert from. - - - True if this converter can perform the conversion; otherwise, false. - - - - - Converts from the specified value to values of the - type. - - - An - that provides a format context. - - - The to use as the - current culture. - - The value to convert. - The converted value. - - - - Returns whether the type converter can convert a measurement to the - specified type. - - - An - that provides a format context. - - - A that represents the type you want to - convert to. - - - True if this converter can perform the conversion; otherwise, false. - - - - - Converts the specified measurement to the specified type. - - - An object that provides a format context. - - - The to use as the - current culture. - - The value to convert. - - A that represents the type you want to - convert to. - - The converted value. - - - - Return the angle of the hypotenuse of a triangle with - sides defined by deltaX and deltaY. - - Change in X. - Change in Y. - The angle (in degrees). - - - - Return the distance between two points - - The first point. - The second point. - The distance between the two points. - - - - Helper extension method for turning XNA's Vector2 type into a Point - - The Vector2. - The point. - - - - Numeric utility methods used by controls. These methods are similar in - scope to the WPF DoubleUtil class. - - - - - Check if a number isn't really a number. - - The number to check. - - True if the number is not a number, false if it is a number. - - - - - Determine if one number is greater than another. - - First number. - Second number. - - True if the first number is greater than the second, false - otherwise. - - - - - Determine if two numbers are close in value. - - First number. - Second number. - - True if the first number is close in value to the second, false - otherwise. - - - - - NanUnion is a C++ style type union used for efficiently converting - a double into an unsigned long, whose bits can be easily - manipulated. - - - - - Floating point representation of the union. - - - - - Integer representation of the union. - - - - - Helper for the phone. - - - All orientations are condensed into portrait and landscape, where landscape includes . - - - - - The height of the SIP in landscape orientation. - - - - - The height of the SIP in portrait orientation. - - - - - The height of the SIP text completion in either orientation. - - - - - Gets the current . - - The current . - true if the current was found; false otherwise. - - - - Determines whether a is oriented as portrait. - - The . - true if the is oriented as portrait; false otherwise. - - - - Gets the correct width of a in either orientation. - - The . - The width. - - - - Gets the correct height of a in either orientation. - - The . - The height. - - - - Gets the correct of a . - - The . - The . - - - - Gets the focused , if there is one. - - The . - true if there is a focused ; false otherwise. - - - - Determines whether the SIP is shown. - - true if the SIP is shown; false otherwise. - - - - Determines whether the would show the SIP text completion. - - The . - true if the woudl show the SIP text completion; false otherwise. - - - - Gets the covered by the SIP when it is shown. - - The . - The . - - - - Gets the uncovered by the SIP when it is shown. - - The . - The . - - - - Provides event data for various routed events that track property values - changing. Typically the events denote a cancellable action. - - - The type of the value for the dependency property that is changing. - - Preview - - - - Private member variable for Cancel property. - - - - - Initializes a new instance of the - - class. - - - The identifier - for the property that is changing. - - The previous value of the property. - - The new value of the property, assuming that the property change is - not cancelled. - - - True if the property change is cancellable by setting - - to true in event handling. false if the property change is not - cancellable. - - - - - Gets the - identifier for the property that is changing. - - - The identifier - for the property that is changing. - - - - - Gets a value that reports the previous value of the changing - property. - - - The previous value of the changing property. - - - - - Gets or sets a value that reports the new value of the changing - property, assuming that the property change is not cancelled. - - - The new value of the changing property. - - - - - Gets a value indicating whether the property change that originated - the RoutedPropertyChanging event is cancellable. - - - True if the property change is cancellable. false if the property - change is not cancellable. - - - - - Gets or sets a value indicating whether the property change that - originated the RoutedPropertyChanging event should be cancelled. - - - True to cancel the property change; this resets the property to - . - false to not cancel the property change; the value changes to - . - - - Attempted to cancel in an instance where - - is false. - - - - - Gets or sets a value indicating whether internal value coercion is - acting on the property change that originated the - RoutedPropertyChanging event. - - - True if coercion is active. false if coercion is not active. - - - This is a total hack to work around the class hierarchy for Value - coercion in NumericUpDown. - - - - - Represents methods that handle various routed events that track property - values changing. Typically the events denote a cancellable action. - - - The type of the value for the dependency property that is changing. - - - The object where the initiating property is changing. - - Event data for the event. - Preview - - - - A helper class for raising events safely. - - - - - Raises an event in a thread-safe manner, also does the null check. - - The event to raise. - The event sender. - - - - Raises an event in a thread-safe manner, also does the null check. - - The event to raise. - The event sender. - - - - Raises an event in a thread-safe manner, also does the null check. - - The event args type. - The event to raise. - The event sender. - The event args. - - - - Raise an event in a thread-safe manner, with the required null check. Lazily creates event args. - - The event args type. - The event to raise. - The event sender. - The delegate to return the event args if needed. - - - - This is a method that returns event args, used for lazy creation. - - The event type. - - - - - Allows time to be set from xaml. - - Preview - This converter is used by xaml and thus uses the - English formats. - - - - BackingField for the TimeFormats being used. - - - - - BackingField for the DateFormats being used. - - - - - Determines whether this instance can convert from - the specified type descriptor context. - - The type descriptor context. - Type of the source. - - True if this instance can convert from the specified type - descriptor context; otherwise, false. - - - - - Determines whether this instance can convert to the specified - type descriptor context. - - The type descriptor context. - Type of the destination. - - True if this instance can convert to the specified type - descriptor context; otherwise, false. - - - - - Converts instances of other data types into instances of DateTime that - represent a time. - - - The type descriptor context. - - The culture used to convert. This culture - is not used during conversion, but a specific set of formats is used. - - The string being converted to the DateTime. - - - A DateTime that is the value of the conversion. - - - - - Converts a DateTime into a string. - - - The type descriptor context. - - The culture used to convert. - - The value that is being converted to a specified type. - - - The type to convert the value to. - - - The value of the conversion to the specified type. - - - - - Represents a 2-tuple, or pair. - - The type of the tuple's first component. - The type of the tuple's second component. - - - - Initializes a new instance of the Tuple(T1, T2) class. - - The value of the tuple's first component. - The value of the tuple's second component. - - - - Gets the value of the current Tuple(T1, T2) object's first component. - - - - - Gets the value of the current Tuple(T1, T2) object's second component. - - - - - Common TypeConverter functionality. - - - - - Determines whether conversion is possible to a specified type. - - Expected type of the converter. - - Identifies the data type to evaluate for conversion. - - - A value indicating whether conversion is possible. - - - - - Attempts to convert a specified object to an instance of the - desired type. - - TypeConverter instance. - The object being converted. - - The type to convert the value to. - - - The value of the conversion to the specified type. - - - - - Names and helpers for visual states in the controls. - - - - - Common state group. - - - - - Normal state of the Common state group. - - - - - Normal state of the Common state group. - - - - - MouseOver state of the Common state group. - - - - - Pressed state of the Common state group. - - - - - Disabled state of the Common state group. - - - - - Focus state group. - - - - - Unfocused state of the Focus state group. - - - - - Focused state of the Focus state group. - - - - - Selection state group. - - - - - Selected state of the Selection state group. - - - - - Unselected state of the Selection state group. - - - - - Selected inactive state of the Selection state group. - - - - - Expansion state group. - - - - - Expanded state of the Expansion state group. - - - - - Collapsed state of the Expansion state group. - - - - - Popup state group. - - - - - Opened state of the Popup state group. - - - - - Closed state of the Popup state group. - - - - - ValidationStates state group. - - - - - The valid state for the ValidationStates group. - - - - - Invalid, focused state for the ValidationStates group. - - - - - Invalid, unfocused state for the ValidationStates group. - - - - - ExpandDirection state group. - - - - - Down expand direction state of ExpandDirection state group. - - - - - Up expand direction state of ExpandDirection state group. - - - - - Left expand direction state of ExpandDirection state group. - - - - - Right expand direction state of ExpandDirection state group. - - - - - HasItems state group. - - - - - HasItems state of the HasItems state group. - - - - - NoItems state of the HasItems state group. - - - - - Increment state group. - - - - - State enabled for increment group. - - - - - State disabled for increment group. - - - - - Decrement state group. - - - - - State enabled for decrement group. - - - - - State disabled for decrement group. - - - - - InteractionMode state group. - - - - - Edit of the DisplayMode state group. - - - - - Display of the DisplayMode state group. - - - - - DisplayMode state group. - - - - - Edit of the DisplayMode state group. - - - - - Display of the DisplayMode state group. - - - - - Active state. - - - - - Inactive state. - - - - - Active state group. - - - - - Non-watermarked state. - - - - - Watermarked state. - - - - - Watermark state group. - - - - - Unfocused state for Calendar Buttons. - - - - - Focused state for Calendar Buttons. - - - - - CalendarButtons Focus state group. - - - - - Busy state for BusyIndicator. - - - - - Idle state for BusyIndicator. - - - - - Busyness group name. - - - - - Visible state name for BusyIndicator. - - - - - Hidden state name for BusyIndicator. - - - - - BusyDisplay group. - - - - - Use VisualStateManager to change the visual state of the control. - - - Control whose visual state is being changed. - - - A value indicating whether to use transitions when updating the - visual state, or to snap directly to the new visual state. - - - Ordered list of state names and fallback states to transition into. - Only the first state to be found will be used. - - - - - Gets the implementation root of the Control. - - The DependencyObject. - - Implements Silverlight's corresponding internal property on Control. - - Returns the implementation root or null. - - - - This method tries to get the named VisualStateGroup for the - dependency object. The provided object's ImplementationRoot will be - looked up in this call. - - The dependency object. - The visual state group's name. - Returns null or the VisualStateGroup object. - - - - A static class providing methods for working with the visual tree. - - - - - Retrieves all the visual children of a framework element. - - The parent framework element. - The visual children of the framework element. - - - - Retrieves all the logical children of a framework element using a - breadth-first search. A visual element is assumed to be a logical - child of another visual element if they are in the same namescope. - For performance reasons this method manually manages the queue - instead of using recursion. - - The parent framework element. - The logical children of the framework element. - - - - Implements a weak event listener that allows the owner to be garbage - collected if its only remaining link is an event handler. - - Type of instance listening for the event. - Type of source for the event. - Type of event arguments for the event. - - - - WeakReference to the instance listening for the event. - - - - - Initializes a new instances of the WeakEventListener class. - - Instance subscribing to the event. - - - - Handler for the subscribed event calls OnEventAction to handle it. - - Event source. - Event arguments. - - - - Detaches from the subscribed event. - - - - - Gets or sets the method to call when the event fires. - - - - - Gets or sets the method to call when detaching from the event. - - - - - Represents a pop-up menu that enables a control to expose functionality that is specific to the context of the control. - - Preview - - - - Represents a control that defines choices for users to select. - - Preview - - - - Identifies the ItemContainerStyle dependency property. - - - - - Initializes a new instance of the MenuBase class. - - - - - Determines whether the specified item is, or is eligible to be, its own item container. - - The item to check whether it is an item container. - True if the item is a MenuItem or a Separator; otherwise, false. - - - - Creates or identifies the element used to display the specified item. - - A MenuItem. - - - - Prepares the specified element to display the specified item. - - Element used to display the specified item. - Specified item. - - - - Checks whether a control has the default value for a property. - - The control to check. - The property to check. - True if the property has the default value; false otherwise. - - - - Gets or sets the Style that is applied to the container element generated for each item. - - - - - Visibility state group. - - - - - Open visibility state. - - - - - Closed visibility state. - - - - - Stores a reference to the PhoneApplicationPage that contains the owning object. - - - - - Stores a reference to a list of ApplicationBarIconButtons for which the Click event is being handled. - - - - - Stores a reference to the Storyboard used to animate the background resize. - - - - - Stores a reference to the Storyboard used to animate the ContextMenu open. - - - - - Tracks whether the Storyboard used to animate the ContextMenu open is active. - - - - - Tracks the threshold for releasing contact during the ContextMenu open animation. - - - - - Stores a reference to the current root visual. - - - - - Stores the last known mouse position (via MouseMove). - - - - - Stores a reference to the object that owns the ContextMenu. - - - - - Stores a reference to the current Popup. - - - - - Stores a reference to the current overlay. - - - - - Stores a reference to the current Popup alignment point. - - - - - Stores a value indicating whether the IsOpen property is being updated by ContextMenu. - - - - - Identifies the IsZoomEnabled dependency property. - - - - - Identifies the VerticalOffset dependency property. - - - - - Handles changes to the HorizontalOffset or VerticalOffset DependencyProperty. - - DependencyObject that changed. - Event data for the DependencyPropertyChangedEvent. - - - - Identifies the IsOpen dependency property. - - - - - Handles changes to the IsOpen DependencyProperty. - - DependencyObject that changed. - Event data for the DependencyPropertyChangedEvent. - - - - Handles changes to the IsOpen property. - - New value. - - - - Called when the Opened event occurs. - - Event arguments. - - - - Called when the Closed event occurs. - - Event arguments. - - - - Initializes a new instance of the ContextMenu class. - - - - - Called when a new Template is applied. - - - - - Handles the Completed event of the opening Storyboard. - - Source of the event. - Event arguments. - - - - Uses VisualStateManager to go to a new visual state. - - The state to transition to. - true to use a System.Windows.VisualTransition to transition between states; otherwise, false. - - - - Called when the left mouse button is pressed. - - The event data for the MouseLeftButtonDown event. - - - - Responds to the KeyDown event. - - The event data for the KeyDown event. - - - - Handles the LayoutUpdated event to capture Application.Current.RootVisual. - - Source of the event. - Event arguments. - - - - Handles the RootVisual's MouseMove event to track the last mouse position. - - Source of the event. - Event arguments. - - - - Handles the ManipulationCompleted event for the RootVisual. - - Source of the event. - Event arguments. - - - - Handles the Hold event for the owning element. - - Source of the event. - Event arguments. - - - - Identifies the ApplicationBarMirror dependency property. - - - - - Handles changes to the ApplicationBarMirror DependencyProperty. - - DependencyObject that changed. - Event data for the DependencyPropertyChangedEvent. - - - - Handles changes to the ApplicationBarMirror property. - - Old value. - New value. - - - - Handles an event which should close an open ContextMenu. - - Source of the event. - Event arguments. - - - - Handles the Loaded event of the Owner. - - Source of the event. - Event arguments. - - - - Handles the Unloaded event of the Owner. - - Source of the event. - Event arguments. - - - - Handles the BackKeyPress of the containing PhoneApplicationPage. - - Source of the event. - Event arguments. - - - - Calls TransformToVisual on the specified element for the specified visual, suppressing the ArgumentException that can occur in some cases. - - Element on which to call TransformToVisual. - Visual to pass to the call to TransformToVisual. - Resulting GeneralTransform object. - - - - Initialize the _rootVisual property (if possible and not already done). - - - - - Sets focus to the next item in the ContextMenu. - - True to move the focus down; false to move it up. - - - - Called when a child MenuItem is clicked. - - - - - Handles the SizeChanged event for the ContextMenu or RootVisual. - - Source of the event. - Event arguments. - - - - Handles the MouseButtonDown events for the overlay. - - Source of the event. - Event arguments. - - - - Updates the location and size of the Popup and overlay. - - - - - Opens the Popup. - - Position to place the Popup. - - - - Closes the Popup. - - - - - Gets or sets the owning object for the ContextMenu. - - - - - Gets or sets a value indicating whether the background will zoom out when the ContextMenu is open. - - - - - Gets or sets the vertical distance between the target origin and the popup alignment point. - - - - - Gets or sets a value indicating whether the ContextMenu is visible. - - - - - Occurs when a particular instance of a ContextMenu opens. - - - - - Occurs when a particular instance of a ContextMenu closes. - - - - - Provides the system implementation for displaying a ContextMenu. - - Preview - - - - Gets the value of the ContextMenu property of the specified object. - - Object to query concerning the ContextMenu property. - Value of the ContextMenu property. - - - - Sets the value of the ContextMenu property of the specified object. - - Object to set the property on. - Value to set. - - - - Identifies the ContextMenu attached property. - - - - - Handles changes to the ContextMenu DependencyProperty. - - DependencyObject that changed. - Event data for the DependencyPropertyChangedEvent. - - - - Represents a selectable item inside a Menu or ContextMenu. - - Preview - - - - Represents a control that contains a collection of items and a header. - - Stable - - - - Identifies the - - dependency property. - - - The identifier for the - - dependency property. - - - Note: WPF defines this property via a call to AddOwner of - HeaderedContentControl's HeaderProperty. - - - - - HeaderProperty property changed handler. - - - HeaderedItemsControl that changed its Header. - - Event arguments. - - - - Identifies the - - dependency property. - - - The identifier for the - - dependency property. - - - Note: WPF defines this property via a call to AddOwner of - HeaderedContentControl's HeaderTemplateProperty. - - - - - HeaderTemplateProperty property changed handler. - - - HeaderedItemsControl that changed its HeaderTemplate. - - Event arguments. - - - - Identifies the - - dependency property. - - - The identifier for the - - dependency property. - - - - - ItemContainerStyleProperty property changed handler. - - - HeaderedItemsControl that changed its ItemContainerStyle. - - Event arguments. - - - - Initializes a new instance of the - class. - - - - - Called when the value of the - - property changes. - - - The old value of the - - property. - - - The new value of the - - property. - - - - - Called when the value of the - - property changes. - - - The old value of the - - property. - - - The new value of the - - property. - - - - - Builds the visual tree for the - when a - new template is applied. - - - - - Prepares the specified element to display the specified item. - - - The container element used to display the specified item. - - The content to display. - - - - Prepares the specified container to display the specified item. - - - Container element used to display the specified item. - - Specified item to display. - The parent ItemsControl. - - The ItemContainerStyle for the parent ItemsControl. - - - - - Prepare a PrepareHeaderedItemsControlContainer container for an - item. - - Container to prepare. - Item to be placed in the container. - The parent ItemsControl. - - The ItemContainerStyle for the parent ItemsControl. - - - - - Check whether a control has the default value for a property. - - The control to check. - The property to check. - - True if the property has the default value; false otherwise. - - - - - Gets or sets a value indicating whether the Header property has been - set to the item of an ItemsControl. - - - - - Gets or sets the item that labels the control. - - - The item that labels the control. The default value is null. - - - - - Gets or sets a data template that is used to display the contents of - the control's header. - - - Gets or sets a data template that is used to display the contents of - the control's header. The default is null. - - - - - Gets or sets the that is - applied to the container element generated for each item. - - - The that is applied to the - container element generated for each item. The default is null. - - - - - Gets the ItemsControlHelper that is associated with this control. - - - - - Stores a value indicating whether this element has logical focus. - - - - - Identifies the Command dependency property. - - - - - Handles changes to the Command DependencyProperty. - - DependencyObject that changed. - Event data for the DependencyPropertyChangedEvent. - - - - Handles changes to the Command property. - - Old value. - New value. - - - - Identifies the CommandParameter dependency property. - - - - - Handles changes to the CommandParameter DependencyProperty. - - DependencyObject that changed. - Event data for the DependencyPropertyChangedEvent. - - - - Handles changes to the CommandParameter property. - - - - - Initializes a new instance of the MenuItem class. - - - - - Called when the template's tree is generated. - - - - - Invoked whenever an unhandled GotFocus event reaches this element in its route. - - A RoutedEventArgs that contains event data. - - - - Raises the LostFocus routed event by using the event data that is provided. - - A RoutedEventArgs that contains event data. - - - - Called whenever the mouse enters a MenuItem. - - The event data for the MouseEnter event. - - - - Called whenever the mouse leaves a MenuItem. - - The event data for the MouseLeave event. - - - - Called when the left mouse button is released. - - The event data for the MouseLeftButtonUp event. - - - - Responds to the KeyDown event. - - The event data for the KeyDown event. - - - - Called when the Items property changes. - - The event data for the ItemsChanged event. - - - - Called when a MenuItem is clicked and raises a Click event. - - - - - Handles the CanExecuteChanged event of the Command property. - - Source of the event. - Event arguments. - - - - Updates the IsEnabled property. - - - WPF overrides the local value of IsEnabled according to ICommand, so Silverlight does, too. - - True if ChangeVisualState should be called. - - - - Called when the IsEnabled property changes. - - Source of the event. - Event arguments. - - - - Called when the Loaded event is raised. - - Source of the event. - Event arguments. - - - - Changes to the correct visual state(s) for the control. - - True to use transitions; otherwise false. - - - - Occurs when a MenuItem is clicked. - - - - - Gets or sets a reference to the MenuBase parent. - - - - - Gets or sets the command associated with the menu item. - - - - - Gets or sets the parameter to pass to the Command property of a MenuItem. - - - - - Control that is used to separate items in items controls. - - Preview - - - - Initializes a new instance of the Separator class. - - - - - Represents a that supports - objects, - such as . - - Stable - - - - The DataTemplate to apply to the ItemTemplate property on a - generated HeaderedItemsControl (such as a MenuItem or a - TreeViewItem), to indicate how to display items from the next level - in the data hierarchy. - - - - - The Style to apply to the ItemContainerStyle property on a generated - HeaderedItemsControl (such as a MenuItem or a TreeViewItem), to - indicate how to style items from the next level in the data - hierarchy. - - - - - Initializes a new instance of the - class. - - - - - Gets or sets the collection that is used to generate content for the - next sublevel in the data hierarchy. - - - The collection that is used to generate content for the next - sublevel in the data hierarchy. The default value is null. - - - - - Gets a value indicating whether the ItemTemplate property was set on - the template. - - - - - Gets or sets the to - apply to the - - property on a generated - , such - as a , to - indicate how to display items from the next sublevel in the data - hierarchy. - - - The to apply to the - - property on a generated - , such - as a , to - indicate how to display items from the next sublevel in the data - hierarchy. - - - - - Gets a value indicating whether the ItemContainerStyle property was - set on the template. - - - - - Gets or sets the that is - applied to the item container for each child item. - - - The style that is applied to the item container for each child item. - - - - - Defines how the LoopingSelector communicates with data source. - - - - - Get the next datum, relative to an existing datum. - - The datum the return value will be relative to. - The next datum. - - - - Get the previous datum, relative to an existing datum. - - The datum the return value will be relative to. - The previous datum. - - - - The selected item. Should never be null. - - - - - Raised when the selection changes. - - - - - Represents a control that allows the user to choose a date (day/month/year). - - - - - Represents a base class for controls that allow the user to choose a date/time. - - - - - Identifies the Value DependencyProperty. - - - - - Called when the value changes. - - The event data. - - - - Identifies the ValueString DependencyProperty. - - - - - Identifies the ValueStringFormat DependencyProperty. - - - - - Identifies the Header DependencyProperty. - - - - - Identifies the HeaderTemplate DependencyProperty. - - - - - Identifies the PickerPageUri DependencyProperty. - - - - - Initializes a new instance of the DateTimePickerBase control. - - - - - Called when the control's Template is expanded. - - - - - Event that is invoked when the Value property changes. - - - - - Gets or sets the DateTime value. - - - - - Gets the string representation of the selected value. - - - - - Gets or sets the format string to use when converting the Value property to a string. - - - - - Gets or sets the header of the control. - - - - - Gets or sets the template used to display the control's header. - - - - - Gets or sets the Uri to use for loading the IDateTimePickerPage instance when the control is clicked. - - - - - Gets the fallback value for the ValueStringFormat property. - - - - - Initializes a new instance of the DatePicker control. - - - - - Represents a page used by the DatePicker control that allows the user to choose a date (day/month/year). - - - - - Represents a base class for pages that work with DateTimePickerBase to allow users to choose a date/time. - - - - - Represents an interface for DatePicker/TimePicker to use for communicating with a picker page. - - - - - Gets or sets the DateTime to show in the picker page and to set when the user makes a selection. - - - - - Initializes the DateTimePickerPageBase class; must be called from the subclass's constructor. - - Primary selector. - Secondary selector. - Tertiary selector. - - - - Called when the Back key is pressed. - - Event arguments. - - - - Gets a sequence of LoopingSelector parts ordered according to culture string for date/time formatting. - - LoopingSelectors ordered by culture-specific priority. - - - - Gets a sequence of LoopingSelector parts ordered according to culture string for date/time formatting. - - Culture-specific date/time format string. - Date/time format string characters for the primary/secondary/tertiary LoopingSelectors. - Instances for the primary/secondary/tertiary LoopingSelectors. - LoopingSelectors ordered by culture-specific priority. - - - - Called when a page is no longer the active page in a frame. - - An object that contains the event data. - - - - Called when a page becomes the active page in a frame. - - An object that contains the event data. - - - - Gets or sets the DateTime to show in the picker page and to set when the user makes a selection. - - - - - Initializes a new instance of the DatePickerPage control. - - - - - Gets a sequence of LoopingSelector parts ordered according to culture string for date/time formatting. - - LoopingSelectors ordered by culture-specific priority. - - - - Handles changes to the page's Orientation property. - - Event arguments. - - - - InitializeComponent - - - - - Provides access to the localized resources used by the DatePicker and TimePicker. - - - - - Gets the localized DatePicker title string. - - - - - Gets the localized TimePicker title string. - - - - - Implements a wrapper for DateTime that provides formatted strings for DatePicker. - - - - - Initializes a new instance of the DateTimeWrapper class. - - DateTime to wrap. - - - - Returns a value indicating whether the current culture uses a 24-hour clock. - - True if it uses a 24-hour clock; false otherwise. - - - - Gets the DateTime being wrapped. - - - - - Gets the 4-digit year as a string. - - - - - Gets the 2-digit month as a string. - - - - - Gets the month name as a string. - - - - - Gets the 2-digit day as a string. - - - - - Gets the day name as a string. - - - - - Gets the hour as a string. - - - - - Gets the 2-digit minute as a string. - - - - - Gets the AM/PM designator as a string. - - - - - Provides data for the DatePicker and TimePicker's ValueChanged event. - - - - - Initializes a new instance of the DateTimeValueChangedEventArgs class. - - Old DateTime value. - New DateTime value. - - - - Gets or sets the old DateTime value. - - - - - Gets or sets the new DateTime value. - - - - - Represents a control that allows the user to choose a time (hour/minute/am/pm). - - - - - Initializes a new instance of the TimePicker control. - - - - - Gets the fallback value for the ValueStringFormat property. - - - - - Represents a page used by the TimePicker control that allows the user to choose a time (hour/minute/am/pm). - - - - - Initializes a new instance of the TimePickerPage control. - - - - - Gets a sequence of LoopingSelector parts ordered according to culture string for date/time formatting. - - LoopingSelectors ordered by culture-specific priority. - - - - Handles changes to the page's Orientation property. - - Event arguments. - - - - InitializeComponent - - - - - The GestureListener class raises events similar to those provided by the XNA TouchPanel, but it is designed for - Silverlight's event-driven model, rather than XNA's loop/polling model, and it also takes care of the hit testing - and event routing. - - - - - Handle touch events. - - - - - - - A touch has started. - - - - - A touch is continuing... - - - - - A touch has ended. - - - - - This method does all the necessary work to raise a gesture event. It sets the orginal source, does the routing, - handles Handled, and only creates the event args if they are needed. - - This is the type of event args that will be raised. - Gets the specific event to raise. - Lazy creator function for the event args. - Indicates whether the mouse capture should be released - - - - The GestureBegin event. - - - - - The GestureCompleted event. - - - - - The Tap event (touch, release, no movement). - - - - - The DoubleTap event is raised instead of Tap if the time between two taps is short eonugh. - - - - - The Hold event (touch and hold for one second) - - - - - The DragStarted event. - - - - - The DragDelta event. - - - - - The DragCompleted event. Will be raised on touch release after a drag, or - when a second touch point is added. - - - - - The Flick event. Raised when a drag that was fast enough ends with a release. - - - - - The PinchStarted event. - - - - - Any two-touch point (two finger) operation. - - - - - The end of a pinch operation. - - - - - The base class for all gesture events. Also used by Tap, DoubleTap and Hold. - - - - - Returns the position of the gesture's starting point relative to a given UIElement. - - The return value will be relative to this element. - The gesture's starting point relative to the given UIElement. - - - - Returns the position of a given point relative to a given UIElement. - - The return value will be relative to this element. - The point to translate. - The given point relative to the given UIElement. - - - - The point, in unrotated screen coordinates, where the gesture occurred. - - - - - The point, in unrotated screen coordinates, where the first touchpoint is now. - - - - - The first hit-testable item under the touch point. Determined by a combination of order in the tree and - Z-order. - - - - - If an event handler sets this to true, it stops event bubbling. - - - - - The event args used in the DragStarted event. - - - - - The direction of the drag gesture, as determined by the initial drag change. - - - - - The event args used by the DragDelta event. - - - - - The horizontal (X) change for this drag event. - - - - - The vertical (Y) change for this drag event. - - - - - The direction of the drag gesture, as determined by the initial drag change. - - - - - The event args used by the DragCompleted event. - - - - - The total horizontal (X) change of the drag event. - - - - - The total vertical (Y) change of the drag event. - - - - - The direction of the drag gesture, as determined by the initial drag change. - - - - - The final horizontal (X) velocity of the drag, if the drag was inertial. - - - - - The final vertical (Y) velocity of the drag, if the drag was inertial. - - - - - The event args used by the Flick event. - - - - - The horizontal (X) velocity of the flick. - - - - - The vertical (Y) velocity of the flick. - - - - - The angle of the flick. - - - - - The direction of the flick gesture, as determined by the flick velocities. - - - - - The base class for multi-touch gesture event args. Currently used only for - two-finger (pinch) operations. - - - - - Returns the position of either of the two touch points (0 or 1) relative to - the UIElement provided. - - The return value will be relative to this element. - The touchpoint to use (0 or 1). - The gesture's starting point relative to the given UIElement. - - - - The second touch point's initial position - - - - - The second touch point. The first is stored in GestureEventArgs. - - - - - The event args used by the PinchStarted event. - - - - - The distance between the two touch points. - - - - - The angle defined by the two touch points. - - - - - The event args used by the PinchDelta and PinchCompleted events. - - - - - Returns the ratio of the current distance between touchpoints / the original distance - between the touchpoints. - - - - - Returns the difference in angle between the current touch positions and the original - touch positions. - - - - - The GestureService class is the helper for getting and setting GestureListeners - on elements. - - - - - Gets a GestureListener for the new element. Will create a new one if necessary. - - The object to get the GestureListener from. - Either the previously existing GestureListener, or a new one. - - - - Gets the GestureListener on an element. If one is not set, can create a new one - so that this will never return null, depending on the state of the createIfMissing - flag. - - The object to get the GestureListener from. - When this is true, if the attached property was not set on the element, it will create one and set it on the element. - - - - - Sets the GestureListener on an element. Needed for XAML, but should not be used in code. Use - GetGestureListener instead, which will create a new instance if one is not already set, to - add your handlers to an element. - - The object to set the GestureListener on. - The GestureListener. - - - - This is used to set the value of the attached DependencyProperty internally. - - The object to set the GestureListener on. - The GestureListener. - - - - The definition of the GestureListener attached DependencyProperty. - - - - - This class utilizes the Tag property to attach data to ContentPresenters - - - - - The event args for the Link/Unlink events. - - - - - Create new LinkUnlinkEventArgs. - - The ContentPresenter. - - - - The ContentPresenter which is displaying the item. - - - - - The GroupPopupOpened event args. - - - - - The ItemsControl containing the groups. - - - - - The GroupPopupClosing event args. - - - - - The ItemsControl containing the groups. - - - - - The selected group. Will be null if the back button was pressed. - - - - - Set this to true if the application will handle the popup closing and scrolling to the group. - - - - - Partial definition of LongListSelector. Includes group view code. - - - Partial definition of LongListSelector. Includes ItemsControl subclass. - - - A virtualizing list designed for grouped lists. Can also be used with flat lists. - - - - - Will invoke the group view, if a GroupItemTemplate has been defined. - - - - - Close the group view unconditionally (do not raise the GroupViewClosingEventArgs event.) - - - - - Close the group popup. - - The selected group. - Should the GroupPopupClosing event be raised. - True if the event was not raised or if it was raised and e.Handled is false. - - - - The DataSource DependencyProperty. - - - - - The ListHeader DependencyProperty. - - - - - The ListHeaderTemplate DependencyProperty. - - - - - The ListFooter DependencyProperty. - - - - - The ListFooterTemplate DependencyProperty. - - - - - The GroupHeaderTemplate DependencyProperty. - - - - - The GroupFooterTemplate DependencyProperty. - - - - - The ItemTemplate DependencyProperty. - - - - - The GroupItemTemplate DependencyProperty. - - - - - The GroupItemsPanel DependencyProperty. - - - - - The IsBouncy DependencyProperty - - - - - The IsScrolling DependencyProperty - - - - - The ShowListHeader DependencyProperty. - - - - - The ShowListFooter DependencyProperty. - - - - - The SelectedItem DependencyProperty. - - - - - The BufferSize DependencyProperty - - - - - The MaximumFlickVelocity DependencyProperty. - - - - - DisplayAllGroups DependencyProperty - - - - - Create a new instance of LongListSelector. - - - - - Instantly jump to the specified item. - - The item to scroll to. - - - - Animate the scrolling of the list to the specified item. Scrolling speed is capped by MaximumFlickVelocity. - - The item to scroll to. - - - - Returns all of the items that are currently in view. This is not the same as the items that - have associated visual elements: there are usually some visuals offscreen. This might be - an empty list if scrolling is happening too quickly. - - The items in view. - - - - Used to return either containers or items for either all items with containers or just the - visible ones, as specified by the parameters. - - When true, will return values for only items that are in view. - When true, will return the containers rather than the items. - A collection of values as specified above. - - - - OnApplyTemplate override, used to locate template parts. - - - - - Override of the MeasureOverride function, to capture the available size. - - The available size. - The desired size. - - - - Returns true if the group has no items - - The group to check. - True if the group has no items. - - - - Replaces a single object in a group - - The global index of the item. - The new item. - - - - Instantly jump to the selected group. - - The group to jump to - - - - Scroll in the direction of an item that has not been resolved. - - - - - This event will be raised when the group Popup's IsOpen has been set to true. - - - - - This event will be raised then the group Popup is about to close. - - - - - The DataSource property. Where all of the items come from. - - - - - The ListHeader property. Will be used as the first scrollItem in the list. - - - - - The ListHeaderTemplate provides the template for the ListHeader. - - - - - The ListFooter property. Will be used as the first scrollItem in the list. - - - - - The ListFooterTemplate provides the template for the ListFooter. - - - - - The GroupHeaderTemplate provides the template for the groups in the items view. - - - - - The GroupFooterTemplate provides the template for the groups in the items view. - - - - - The ItemTemplate provides the template for the items in the items view. - - - - - The GroupItemTemplate specifies the template that will be used in group view mode. - - - - - The GroupItemsPanel specifies the panel that will be used in group view mode. - - - - - Controls whether the list can be (temporarily) scrolled off of the ends. - - - - - Returns true if the user is manipulating the list, or if an inertial animation is taking place. - - - - - Controls whether or not the ListHeader is shown. - - - - - Controls whether or not the ListFooter is shown. - - - - - Gets or sets the selected item. - - - - - The number of "screens" (as defined by the ActualHeight of the LongListSelector) above and below the visible - items of the list that will be filled with items. - - - - - The maximum velocity for flicks, in pixels per second. - - - - - Display all groups whether or not they have items. - - - - - The SelectionChanged event. - - - - - Raised when the user is manipulating the list. - - - - - Raised when the user has finished a drag or a flick completes. - - - - - Raised when IsBouncy is true and the user has dragged the items down from the top as far as they can go. - - - - - Raised when IsBouncy is true and the user has dragged the items up from the bottom as far as they can go. - - - - - Raised when the user is no longer stretching. - - - - - Indicates that the ContentPresenter with the item is about to be "realized". - - - - - Indicates that the ContentPresenter with the item is being recycled and is becoming "un-realized". - - - - - Set to true when the list is flat instead of a group hierarchy. - - - - - Class that implements a flexible list-picking experience with a custom interface for few/many items. - - - - - Identifies the ListPickerMode DependencyProperty. - - - - - Identifies the SelectedIndex DependencyProperty. - - - - - Identifies the SelectedItem DependencyProperty. - - - - - Identifies the FullModeItemTemplate DependencyProperty. - - - - - Identifies the Header DependencyProperty. - - - - - Identifies the HeaderTemplate DependencyProperty. - - - - - Identifies the FullModeHeader DependencyProperty. - - - - - Identifies the ItemCountThreshold DependencyProperty. - - - - - Initializes a new instance of the ListPicker class. - - - - - Builds the visual tree for the control when a new template is applied. - - - - - Determines if the specified item is (or is eligible to be) its own item container. - - The specified item. - True if the item is its own item container; otherwise, false. - - - - Creates or identifies the element used to display a specified item. - - A container corresponding to a specified item. - - - - Prepares the specified element to display the specified item. - - The element used to display the specified item. - The item to display. - - - - Undoes the effects of the PrepareContainerForItemOverride method. - - The container element. - The item. - - - - Provides handling for the ItemContainerGenerator.ItemsChanged event. - - A NotifyCollectionChangedEventArgs that contains the event data. - - - - Called when the ManipulationCompleted event occurs. - - Event data for the event. - - - - Event that is raised when the selection changes. - - - - - Gets or sets the ListPickerMode (ex: Normal/Expanded/Full). - - - - - Gets or sets the index of the selected item. - - - - - Gets or sets the selected item. - - - - - Gets or sets the DataTemplate used to display each item when ListPickerMode is set to Full. - - - - - Gets or sets the header of the control. - - - - - Gets or sets the template used to display the control's header. - - - - - Gets or sets the header to use when ListPickerMode is set to Full. - - - - - Gets or sets the maximum number of items for which Expanded mode will be used (default: 5). - - - - - Class that implements a container for the ListPicker control. - - - - - Initializes a new instance of the ListPickerItem class. - - - - - Builds the visual tree for the control when a new template is applied. - - - - - An enumeration defining the supported ListPicker modes. - - - - - Normal mode; only the selected item is visible on the original page. - - - - - Expanded mode; all items are visible on the original page. - - - - - Full mode; all items are visible in a separate Popup. - - - - - An infinitely scrolling, UI- and data-virtualizing selection control. - - - - - The DataSource DependencyProperty - - - - - The ItemTemplate DependencyProperty - - - - - Creates a new LoopingSelector. - - - - - The IsExpanded DependencyProperty. - - - - - When overridden in a derived class, is invoked whenever application code or internal processes (such as a rebuilding layout pass) call . - In simplest terms, this means the method is called just before a UI element displays in an application. - For more information, see Remarks. - - - - - Balances the items. - - - - - The data source that the this control is the view for. - - - - - The ItemTemplate property - - - - - The size of the items, excluding the ItemMargin. - - - - - The margin around the items, to be a part of the touchable area. - - - - - The IsExpanded property controls the expanded state of this control. - - - - - The IsExpandedChanged event will be raised whenever the IsExpanded state changes. - - - - - The items that will be contained in the LoopingSelector. - - - - - Create a new LoopingSelectorItem. - - - - - Put this item into a new state. - - The new state. - Flag indicating that transitions should be used when going to the new state. - - - - Returns the current state. - - The current state. - - - - Override of OnApplyTemplate - - - - - The Click event. This is needed because there is no gesture for touch-down, pause - longer than the Hold time, and touch-up. Tap will not be raise, and Hold is not - adequate. - - - - - The states that this can be in. - - - - - Not visible - - - - - Visible - - - - - Selected - - - - - Represents a switch that can be toggled between two states. - - - - - Common visual states. - - - - - Normal visual state. - - - - - Disabled visual state. - - - - - Check visual states. - - - - - Checked visual state. - - - - - Dragging visual state. - - - - - Unchecked visual state. - - - - - Switch root template part name. - - - - - Switch background template part name. - - - - - Switch track template part name. - - - - - Switch thumb template part name. - - - - - The minimum translation. - - - - - Identifies the SwitchForeground dependency property. - - - - - The background TranslateTransform. - - - - - The thumb TranslateTransform. - - - - - The root template part. - - - - - The track template part. - - - - - The thumb template part. - - - - - The maximum translation. - - - - - The drag translation. - - - - - Whether the translation ever changed during the drag. - - - - - Whether the dragging state is current. - - - - - Initializes a new instance of the ToggleSwitch class. - - - - - Change the visual state. - - Indicates whether to use animation transitions. - - - - Called by the OnClick method to implement toggle behavior. - - - - - Gets all the template parts and initializes the corresponding state. - - - - - Handles started drags on the root. - - The event sender. - The event information. - - - - Handles drags on the root. - - The event sender. - The event information. - - - - Handles completed drags on the root. - - The event sender. - The event information. - - - - Handles changed sizes for the track and the thumb. - Sets the clip of the track and computes the indeterminate and checked translations. - - The event sender. - The event information. - - - - Gets or sets the switch foreground. - - - - - Gets and sets the thumb and background translation. - - The translation. - - - - A progress bar implementation for a smoother appearance of the - indeterminate states, with the added behavior that after the behavior - is no longer needed, it smoothly fades out the dots for a less jarring - experience. No exposed Value property. - - - Important - this control is not intended for regular progress - bar use, but only indeterminate. As a result, only an IsIndeterminate - set of visual states are defined in the nested progress bar template. - Use the standard ProgressBar control in the platform for determinate - scenarios as there is no performance benefit in determinate mode. - - - - - The visual state group reference used to wait until the hidden state - has fully transitioned to flip the underlying progress bar's - indeterminate value to False. - - - - - Identifies the ActualIsIndeterminate dependency property. - - - - - Identifies the IsIndeterminate dependency property. - - - - - IsIndeterminateProperty property changed handler. - - PerformanceProgressBar that changed its IsIndeterminate. - Event arguments. - - - - Initializes a new instance of the PerformanceProgressBar type. - - - - - Applies the template and extracts both a visual state and a template - part. - - - - - Gets or sets the value indicating whether the actual indeterminate - property should be reflecting a particular value. - - - - - Gets or sets a value indicating whether the control is in the - indeterminate state. - - - - - A very specialized primitive control that works around a specific visual - state manager issue. The platform does not support relative sized - translation values, and this special control walks through visual state - animation storyboards looking for magic numbers to use as percentages. - This control is not supported, unofficial, and is a hack in many ways. - It is used to enable a Windows Phone native platform-style progress bar - experience in indeterminate mode that remains performant. - - - - - A simple Epsilon-style value used for trying to determine the magic - state, if any, of a double. - - - - - The last known width of the control. - - - - - The last known height of the control. - - - - - A set of custom animation adapters used to update the animation - storyboards when the size of the control changes. - - - - - Initializes a new instance of the RelativeAnimatingContentControl - type. - - - - - Handles the size changed event. - - The source object. - The event arguments. - - - - Walks through the known storyboards in the control's template that - may contain magic double animation values, storing them for future - use and updates. - - - - - Walks through all special animations, updating based on the current - size of the control. - - - - - Processes a double animation with keyframes, looking for known - special values to store with an adapter. - - The double animation using key frames instance. - - - - Processes a double animation looking for special values. - - The double animation instance. - - - - A selection of dimensions of interest for updating an animation. - - - - - The width (horizontal) dimension. - - - - - The height (vertical) dimension. - - - - - A simple class designed to store information about a specific - animation instance and its properties. Able to update the values at - runtime. - - - - - Initializes a new instance of the AnimationValueAdapter type. - - The dimension of interest for updates. - - - - Updates the original instance based on new dimension information - from the control. Takes both and allows the subclass to make the - decision on which ratio, values, and dimension to use. - - The width of the control. - The height of the control. - - - - Gets the dimension of interest for the control. - - - - - Gets the value of the underlying property of interest. - - Returns the value of the property. - - - - Sets the value for the underlying property of interest. - - The new value for the property. - - - - The ratio based on the original magic value, used for computing - the updated animation property of interest when the size of the - control changes. - - - - - Initializes a new instance of the GeneralAnimationValueAdapter - type. - - The dimension of interest. - The animation type instance. - - - - Approximately removes the magic number state from a value. - - The initial number. - Returns a double with an adjustment for the magic - portion of the number. - - - - Retrieves the dimension, if any, from the number. If the number - is not magic, null is returned instead. - - The double value. - Returs a double animation dimension, if the number was - partially magic; otherwise, returns null. - - - - Updates the animation instance based on the dimensions of the - control. - - The width of the control. - The height of the control. - - - - Updates the value of the property. - - The size of interest to use with a ratio - computation. - - - - Stores the animation instance. - - - - - Gets the initial value (minus the magic number portion) that the - designer stored within the visual state animation property. - - - - - Adapter for DoubleAnimation's To property. - - - - - Gets the value of the underlying property of interest. - - Returns the value of the property. - - - - Sets the value for the underlying property of interest. - - The new value for the property. - - - - Initializes a new instance of the DoubleAnimationToAdapter type. - - The dimension of interest. - The instance of the animation type. - - - - Adapter for DoubleAnimation's From property. - - - - - Gets the value of the underlying property of interest. - - Returns the value of the property. - - - - Sets the value for the underlying property of interest. - - The new value for the property. - - - - Initializes a new instance of the DoubleAnimationFromAdapter - type. - - The dimension of interest. - The instance of the animation type. - - - - Adapter for double key frames. - - - - - Gets the value of the underlying property of interest. - - Returns the value of the property. - - - - Sets the value for the underlying property of interest. - - The new value for the property. - - - - Initializes a new instance of the DoubleAnimationFrameAdapter - type. - - The dimension of interest. - The instance of the animation type. - - - - This code provides attached properties for adding a 'tilt' effect to all - controls within a container. - - - - - Maximum amount of tilt, in radians. - - - - - Maximum amount of depression, in pixels - - - - - Cache of previous cache modes. Not using weak references for now. - - - - - Delay between releasing an element and the tilt release animation - playing. - - - - - Duration of tilt release animation. - - - - - The control that is currently being tilted. - - - - - The single instance of a storyboard used for all tilts. - - - - - The single instance of an X rotation used for all tilts. - - - - - The single instance of a Y rotation used for all tilts. - - - - - The single instance of a Z depression used for all tilts. - - - - - The center of the tilt element. - - - - - Whether the animation just completed was for a 'pause' or not. - - - - - This is not a constructable class, but it cannot be static because - it derives from DependencyObject. - - - - - Initialize the static properties - - - - - Whether the tilt effect is enabled on a container (and all its - children). - - - - - Gets the IsTiltEnabled dependency property from an object. - - The object to get the property from. - The property's value. - - - - Sets the IsTiltEnabled dependency property on an object. - - The object to set the property on. - The value to set. - - - - Suppresses the tilt effect on a single control that would otherwise - be tilted. - - - - - Gets the SuppressTilt dependency property from an object. - - The object to get the property from. - The property's value. - - - - Sets the SuppressTilt dependency property from an object. - - The object to get the property from. - The property's value. - - - - Property change handler for the IsTiltEnabled dependency property. - - The element that the property is atteched to. - Event arguments. - - Adds or removes event handlers from the element that has been - (un)registered for tilting. - - - - - Event handler for ManipulationStarted. - - sender of the event - this will be the tilt - container (eg, entire page). - Event arguments. - - - - Event handler for ManipulationDelta - - sender of the event - this will be the tilting - object (eg a button). - Event arguments. - - - - Event handler for ManipulationCompleted. - - sender of the event - this will be the tilting - object (eg a button). - Event arguments. - - - - Checks if the manipulation should cause a tilt, and if so starts the - tilt effect. - - The source of the manipulation (the tilt - container, eg entire page). - The args from the ManipulationStarted event. - - - - Computes the delta between the centre of an element and its - container. - - The element to compare. - The element to compare against. - A point that represents the delta between the two centers. - - - - Begins the tilt effect by preparing the control and doing the - initial animation. - - The element to tilt. - The touch point, in element coordinates. - The center point of the element in element - coordinates. - The delta between the - 's center and the container's center. - - - - Prepares a control to be tilted by setting up a plane projection and - some event handlers. - - The control that is to be tilted. - Delta between the element's center and the - tilt container's. - true if successful; false otherwise. - - This method is conservative; it will fail any attempt to tilt a - control that already has a projection on it. - - - - - Removes modifications made by PrepareControlForTilt. - - THe control to be un-prepared. - - This method is basic; it does not do anything to detect if the - control being un-prepared was previously prepared. - - - - - Creates the tilt return storyboard (if not already created) and - targets it to the projection. - - The framework element to prepare for - projection. - - - - Continues a tilt effect that is currently applied to an element, - presumably because the user moved their finger. - - The element being tilted. - The manipulation event args. - - - - Ends the tilt effect by playing the animation. - - The element being tilted. - - - - Handler for the storyboard complete event. - - sender of the event. - event args. - - - - Resets the tilt effect on the control, making it appear 'normal' - again. - - The element to reset the tilt on. - - This method doesn't turn off the tilt effect or cancel any current - manipulation; it just temporarily cancels the effect. - - - - - Stops the tilt effect and release resources applied to the currently - tilted control. - - - - - Pauses the tilt effect so that the control returns to the 'at rest' - position, but doesn't stop the tilt effect (handlers are still - attached). - - - - - Resets the storyboard to not running. - - - - - Applies the tilt effect to the control. - - the control to tilt. - The touch point, in the container's - coordinates. - The center point of the container. - - - - Whether to use a slightly more accurate (but slightly slower) tilt - animation easing function. - - - - - Default list of items that are tiltable. - - - - - Provides an easing function for the tilt return. - - - - - Computes the easing function. - - The time. - The eased value. - - - - Couple of simple helpers for walking the visual tree. - - - - - Gets the ancestors of the element, up to the root. - - The element to start from. - An enumerator of the ancestors. - - - - Gets the visual parent of the element. - - The element to check. - The visual parent. - - - - Converts bool? values to "Off" and "On" strings. - - - - - Converts a value. - - The value produced by the binding source. - The type of the binding target property. - The converter parameter to use. - The culture to use in the converter. - A converted value. If the method returns null, the valid null value is used. - - - - Converts a value. - - The value produced by the binding source. - The type of the binding target property. - The converter parameter to use. - The culture to use in the converter. - A converted value. If the method returns null, the valid null value is used. - - - - Represents a switch that can be toggled between two states. - - - - - Common visual states. - - - - - Normal visual state. - - - - - Disabled visual state. - - - - - The ToggleButton that drives this. - - - - - Identifies the Header DependencyProperty. - - - - - Identifies the HeaderTemplate DependencyProperty. - - - - - Identifies the SwitchForeground DependencyProperty. - - - - - Identifies the IsChecked DependencyProperty. - - - - - Invoked when the IsChecked DependencyProperty is changed. - - The event sender. - The event information. - - - - The - - template part. - - - - - Whether the content was set. - - - - - Initializes a new instance of the ToggleSwitch class. - - - - - Makes the content an "Off" or "On" string to match the state. - - - - - Change the visual state. - - Indicates whether to use animation transitions. - - - - Makes the content an "Off" or "On" string to match the state if the content is set to null in the design tool. - - The old content. - The new content. - - - - Gets all the template parts and initializes the corresponding state. - - - - - Mirrors the - - event. - - The event sender. - The event information. - - - - Mirrors the - - event. - - The event sender. - The event information. - - - - Mirrors the - - event. - - The event sender. - The event information. - - - - Mirrors the - - event. - - The event sender. - The event information. - - - - Returns a - - that represents the current - - . - - - - - - Gets or sets the header. - - - - - Gets or sets the template used to display the control's header. - - - - - Gets or sets the switch foreground. - - - - - Gets or sets whether the ToggleSwitch is checked. - - - - - Occurs when the - - is checked. - - - - - Occurs when the - - is unchecked. - - - - - Occurs when the - - is indeterminate. - - - - - Occurs when the - - is clicked. - - - - - A strongly-typed resource class, for looking up localized strings, etc. - - - - - Returns the cached ResourceManager instance used by this class. - - - - - Overrides the current thread's CurrentUICulture property for all - resource lookups using this strongly typed resource class. - - - - - Looks up a localized string similar to Invalid FilterMode enumeration value. The value must be one of the defined AutoCompleteFilterMode values to be accepted.. - - - - - Looks up a localized string similar to Invalid maximum drop down height value '{0}'. The value must be greater than or equal to zero.. - - - - - Looks up a localized string similar to Invalid MinimumPopulateDelay value '{0}'. The value must be greater than or equal to zero.. - - - - - Looks up a localized string similar to Cannot set read-only property SearchText.. - - - - - Looks up a localized string similar to CHOOSE DATE. - - - - - Looks up a localized string similar to cancel. - - - - - Looks up a localized string similar to done. - - - - - Looks up a localized string similar to SelectedIndex must always be set to a valid value.. - - - - - Looks up a localized string similar to SelectedItem must always be set to a valid value.. - - - - - Looks up a localized string similar to Off. - - - - - Looks up a localized string similar to On. - - - - - Looks up a localized string similar to The RoutedPropertyChangingEvent cannot be canceled!. - - - - - Looks up a localized string similar to CHOOSE TIME. - - - - - Looks up a localized string similar to '{0}' is unable to convert '{1}' to '{2}'.. - - - - - Looks up a localized string similar to '{0}' cannot convert from '{1}'.. - - - - - Looks up a localized string similar to The type was unexpected.. - - - - - Looks up a localized string similar to Invalid length value '{0}'.. - - - - - Looks up a localized string similar to Invalid Orientation value '{0}'.. - - - - - Has navigation-in - s - for the designer experiences. - - - - - Has - s - for the designer experiences. - - - - - The - - for the backward - . - - - - - The - - for the forward - . - - - - - Triggers . - - - - - Triggers . - - - - - The navigation transition will begin. - - - - - The navigation transition has ended. - - - - - Gets or sets the backward - . - - - - - Gets or sets the forward - . - - - - - Has navigation-out - s - for the designer experiences. - - - - - Enables navigation transitions for - s. - - - - - The new - - template part name. - - - - - The old - - template part name. - - - - - Indicates whether a navigation is forward. - - - - - Determines whether to set the new content to the first or second - . - - - - - The first . - - - - - The second . - - - - - The old . - - - - - The new . - - - - - Default constructor. - - - - - When overridden in a derived class, is invoked whenever application code or internal processes (such as a rebuilding layout pass) call - . - In simplest terms, this means the method is called just before a UI element displays in an application. - - - - - Called when the value of the - - property changes. - - The old . - The new . - - - - Transitions the new . - - The for the new . - The for the new . - - - - Controls the behavior of transitions. - - - - - Gets the - - of the - . - - - - - - Gets the current time of the - . - - The current time. - - - - Pauses the animation clock associated with the - . - - - - - Resumes the animation clock, or run-time state, associated with the - . - - - - - Moves the - - to the specified animation position. The - - performs the requested seek when the next clock tick occurs. - - The specified animation position. - - - - Moves the - - to the specified animation position immediately (synchronously). - - The specified animation position - - - - Advances the current time of the - 's - clock to the end of its active period. - - - - - Initiates the set of animations associated with the - . - - - - - Stops the . - - - - - Occurs when the - - has completed playing. - - - - - Provides roll s. - - - - - Transition factory for a particular transition family. - - - - - Creates a new - - for a - . - Existing - - or - - values may be saved and cleared before the start of the transition, then restored it after it is stopped or completed. - - The . - The . - - - - Creates a new - - for a - . - - The . - The . - - - - Mirrors the - - interface to control an - - for a - . - Saves and restores the - - and - - values for the - . - - - - - The original - - of the - . - - - - - The . - - - - - The original - - of the - . - - - - - The - - for the - . - - - - - Constructs a - - for a - - and a - . - - The . - The . - - - - Mirrors . - - - - - Mirrors . - - - - - Mirrors . - - - - - Mirrors . - - - - - Restores the saved - - and - - values for the - . - - - - - Mirrors . - - - - - Saves the - - and - - values for the - . - - - - - Mirrors . - - The time offset. - - - - Mirrors . - - The time offset. - - - - Mirrors . - - - - - Mirrors . - - - - - Mirrors . - - - - - Provides attached properties for navigation - s. - - - - - The - - for the in s. - - - - - The - - for the in s. - - - - - Gets the - s - of - - for a - . - - The . - The - - - - Gets the - s - of - - for a - . - - The . - The - - - - Sets a - - to - - for a - . - - The . - The . - The - - - - Sets a - s - to - - for a - . - - The . - The . - The - - - - The rotate transition modes. - - - - - The rotate in 90 degrees clockwise transition mode. - - - - - The rotate in 90 degrees counterclockwise transition mode. - - - - - The rotate in 180 degrees clockwise transition mode. - - - - - The rotate in 180 degrees counterclockwise transition mode. - - - - - The rotate out 90 degrees clockwise transition mode. - - - - - The rotate out 90 degrees counterclockwise transition mode. - - - - - The rotate out 180 degrees clockwise transition mode. - - - - - The rotate out 180 degrees counterclockwise transition mode. - - - - - Provides rotate s. - - - - - The - - for the - . - - - - - Creates a new - - for a - . - Saves and clears the existing - - value before the start of the transition, then restores it after it is stopped or completed. - - The . - The . - - - - The . - - - - - The slide transition modes. - - - - - The slide up, fade in transition mode. - - - - - The slide up, fade out transition mode. - - - - - The slide down, fade in transition mode. - - - - - The slide down, fade out transition mode. - - - - - The slide left, fade in transition mode. - - - - - The slide left, fade out transition mode. - - - - - The slide right, fade in transition mode. - - - - - The slide right, fade out transition mode. - - - - - Provides swivel s. - - - - - The - - for the - . - - - - - Creates a new - - for a - . - Saves and clears the existing - - value before the start of the transition, then restores it after it is stopped or completed. - - The . - The . - - - - The . - - - - - The swivel transition modes. - - - - - The swivel full screen in transition mode. - - - - - The swivel full screen out transition mode. - - - - - The swivel forward in transition mode. - - - - - The swivel forward out transition mode. - - - - - The swivel backward in transition mode. - - - - - The swivel backward out transition mode. - - - - - Provides slide s. - - - - - The - - for the - . - - - - - Creates a new - - for a - . - Saves and clears the existing - - value before the start of the transition, then restores it after it is stopped or completed. - - The . - The . - - - - The . - - - - - Provides turnstile s. - - - - - The - - for the - . - - - - - Creates a new - - for a - . - Saves and clears the existing - - value before the start of the transition, then restores it after it is stopped or completed. - - The . - The . - - - - The . - - - - - Provides - s - for transition families and modes. - - - - - The cached XAML read from the Storyboard resources. - - - - - Creates a - - for a transition family, transition mode, and - . - - The type of the transition mode. - The . - The transition family. - The transition mode. - The . - - - - Creates a - - for a particular transition family and transition mode. - - The transition family and transition mode. - The . - - - - Creates an - - for a - - for the roll transition. - - The . - The . - - - - Creates an - - for a - - for the rotate transition family. - - The . - The transition mode. - The . - - - - Creates an - - for a - - for the slide transition family. - - The . - The transition mode. - The . - - - - Creates an - - for a - - for the swivel transition family. - - The . - The transition mode. - The . - - - - Creates an - - for a - - for the turnstile transition family. - - The . - The transition mode. - The . - - - - The turnstile transition modes. - - - - - The turnstile forward in transition mode. - - - - - The turnstile forward out transition mode. - - - - - The turnstile backward in transition mode. - - - - - The turnstile backward out transition mode. - - - - - The OrientedSize structure is used to abstract the growth direction from - the layout algorithms of WrapPanel. When the growth direction is - oriented horizontally (ex: the next element is arranged on the side of - the previous element), then the Width grows directly with the placement - of elements and Height grows indirectly with the size of the largest - element in the row. When the orientation is reversed, so is the - directional growth with respect to Width and Height. - - - - - The orientation of the structure. - - - - - The size dimension that grows directly with layout placement. - - - - - The size dimension that grows indirectly with the maximum value of - the layout row or column. - - - - - Initializes a new OrientedSize structure. - - Orientation of the structure. - - - - Initializes a new OrientedSize structure. - - Orientation of the structure. - Un-oriented width of the structure. - Un-oriented height of the structure. - - - - Gets the orientation of the structure. - - - - - Gets or sets the size dimension that grows directly with layout - placement. - - - - - Gets or sets the size dimension that grows indirectly with the - maximum value of the layout row or column. - - - - - Gets or sets the width of the size. - - - - - Gets or sets the height of the size. - - - - - Positions child elements sequentially from left to right or top to - bottom. When elements extend beyond the panel edge, elements are - positioned in the next row or column. - - Stable - - - - A value indicating whether a dependency property change handler - should ignore the next change notification. This is used to reset - the value of properties without performing any of the actions in - their change handlers. - - - - - Identifies the - - dependency property. - - - The identifier for the - - dependency property - - - - - Identifies the - - dependency property. - - - The identifier for the - - dependency property. - - - - - Identifies the - - dependency property. - - - The identifier for the - - dependency property. - - - - - OrientationProperty property changed handler. - - WrapPanel that changed its Orientation. - Event arguments. - - - - Initializes a new instance of the - class. - - - - - Property changed handler for ItemHeight and ItemWidth. - - - WrapPanel that changed its ItemHeight or ItemWidth. - - Event arguments. - - - - Measures the child elements of a - in anticipation - of arranging them during the - - pass. - - - The size available to child elements of the wrap panel. - - - The size required by the - and its - elements. - - - - - Arranges and sizes the - control and its - child elements. - - - The area within the parent that the - should use - arrange itself and its children. - - - The actual size used by the - . - - - - - Arrange a sequence of elements in a single line. - - - Index of the first element in the sequence to arrange. - - - Index of the last element in the sequence to arrange. - - - Optional fixed growth in the primary direction. - - - Offset of the line in the indirect direction. - - - Shared indirect growth of the elements on this line. - - - - - Gets or sets the height of the layout area for each item that is - contained in a . - - - The height applied to the layout area of each item that is contained - within a . The - default value is . - - - - - Gets or sets the width of the layout area for each item that is - contained in a . - - - The width that applies to the layout area of each item that is - contained in a . - The default value is . - - - - - Gets or sets the direction in which child elements are arranged. - - - One of the - values. The default is - . - - - - diff --git a/Libraries/WP-Toolkit/2011-02/SilverlightForWindowsPhoneToolkit.chm b/Libraries/WP-Toolkit/2011-02/SilverlightForWindowsPhoneToolkit.chm deleted file mode 100644 index 785ed77..0000000 Binary files a/Libraries/WP-Toolkit/2011-02/SilverlightForWindowsPhoneToolkit.chm and /dev/null differ diff --git a/Libraries/WP-Toolkit/2011-08/EULA.rtf b/Libraries/WP-Toolkit/2011-08/EULA.rtf deleted file mode 100644 index a907d5d..0000000 Binary files a/Libraries/WP-Toolkit/2011-08/EULA.rtf and /dev/null differ diff --git a/Libraries/WP-Toolkit/2011-08/Microsoft.Phone.Controls.Toolkit.dll b/Libraries/WP-Toolkit/2011-08/Microsoft.Phone.Controls.Toolkit.dll deleted file mode 100644 index e9f9d85..0000000 Binary files a/Libraries/WP-Toolkit/2011-08/Microsoft.Phone.Controls.Toolkit.dll and /dev/null differ diff --git a/Libraries/WP-Toolkit/2011-08/Microsoft.Phone.Controls.Toolkit.xml b/Libraries/WP-Toolkit/2011-08/Microsoft.Phone.Controls.Toolkit.xml deleted file mode 100644 index cd0504a..0000000 --- a/Libraries/WP-Toolkit/2011-08/Microsoft.Phone.Controls.Toolkit.xml +++ /dev/null @@ -1,10709 +0,0 @@ - - - - Microsoft.Phone.Controls.Toolkit - - - - - Represents a control that provides a text box for user input and a - drop-down that contains possible matches based on the input in the text - box. - - Stable - - - - The IUpdateVisualState interface is used to provide the - InteractionHelper with access to the type's UpdateVisualState method. - - - - - Update the visual state of the control. - - - A value indicating whether to automatically generate transitions to - the new state, or instantly transition to the new state. - - - - - Specifies the name of the selection adapter TemplatePart. - - - - - Specifies the name of the Selector TemplatePart. - - - - - Specifies the name of the Popup TemplatePart. - - - - - The name for the text box part. - - - - - The name for the text box style. - - - - - The name for the adapter's item container style. - - - - - Gets or sets a local cached copy of the items data. - - - - - Gets or sets the observable collection that contains references to - all of the items in the generated view of data that is provided to - the selection-style control adapter. - - - - - Gets or sets a value to ignore a number of pending change handlers. - The value is decremented after each use. This is used to reset the - value of properties without performing any of the actions in their - change handlers. - - The int is important as a value because the TextBox - TextChanged event does not immediately fire, and this will allow for - nested property changes to be ignored. - - - - Gets or sets a value indicating whether to ignore calling a pending - change handlers. - - - - - Gets or sets a value indicating whether to ignore the selection - changed event. - - - - - Gets or sets a value indicating whether to skip the text update - processing when the selected item is updated. - - - - - Gets or sets the last observed text box selection start location. - - - - - Gets or sets a value indicating whether the user is in the process - of inputting text. This is used so that we do not update - _textSelectionStart while the user is using an IME. - - - - - Gets or sets a value indicating whether the user initiated the - current populate call. - - - - - A value indicating whether the popup has been opened at least once. - - - - - Gets or sets the DispatcherTimer used for the MinimumPopulateDelay - condition for auto completion. - - - - - Gets or sets a value indicating whether a read-only dependency - property change handler should allow the value to be set. This is - used to ensure that read-only properties cannot be changed via - SetValue, etc. - - - - - Gets or sets the BindingEvaluator, a framework element that can - provide updated string values from a single binding. - - - - - A weak event listener for the collection changed event. - - - - - Identifies the - - dependency property. - - The identifier for the - - dependency property. - - - - MinimumPrefixLengthProperty property changed handler. - - AutoCompleteBox that changed its MinimumPrefixLength. - Event arguments. - - - - Identifies the - - dependency property. - - The identifier for the - - dependency property. - - - - MinimumPopulateDelayProperty property changed handler. Any current - dispatcher timer will be stopped. The timer will not be restarted - until the next TextUpdate call by the user. - - AutoCompleteTextBox that changed its - MinimumPopulateDelay. - Event arguments. - - - - Identifies the - - dependency property. - - The identifier for the - - dependency property. - - - - Identifies the - - dependency property. - - The identifier for the - - dependency property. - - - - Identifies the - - dependency property. - - The identifier for the - - dependency property. - - - - Identifies the - - dependency property. - - The identifier for the - - dependency property. - - - - Identifies the - - dependency property. - - The identifier for the - - dependency property. - - - - MaxDropDownHeightProperty property changed handler. - - AutoCompleteTextBox that changed its MaxDropDownHeight. - Event arguments. - - - - Identifies the - - dependency property. - - The identifier for the - - dependency property. - - - - IsDropDownOpenProperty property changed handler. - - AutoCompleteTextBox that changed its IsDropDownOpen. - Event arguments. - - - - Identifies the - - dependency property. - - The identifier for the - - dependency property. - - - - ItemsSourceProperty property changed handler. - - AutoCompleteBox that changed its ItemsSource. - Event arguments. - - - - Identifies the - - dependency property. - - The identifier the - - dependency property. - - - - SelectedItemProperty property changed handler. Fires the - SelectionChanged event. The event data will contain any non-null - removed items and non-null additions. - - AutoCompleteBox that changed its SelectedItem. - Event arguments. - - - - Called when the selected item is changed, updates the text value - that is displayed in the text box part. - - The new item. - - - - Identifies the - - dependency property. - - The identifier for the - - dependency property. - - - - TextProperty property changed handler. - - AutoCompleteBox that changed its Text. - Event arguments. - - - - Identifies the - - dependency property. - - The identifier for the - - dependency property. - - - - OnSearchTextProperty property changed handler. - - AutoCompleteBox that changed its SearchText. - Event arguments. - - - - Gets the identifier for the - - dependency property. - - - - - FilterModeProperty property changed handler. - - AutoCompleteBox that changed its FilterMode. - Event arguments. - - - - Identifies the - - dependency property. - - The identifier for the - - dependency property. - - - - ItemFilterProperty property changed handler. - - AutoCompleteBox that changed its ItemFilter. - Event arguments. - - - - Identifies the - - dependency property. - - The identifier for the - - dependency property. - - - - Identifies the - - dependency property. - - - - - The TextBox template part. - - - - - The SelectionAdapter. - - - - - Initializes a new instance of the - class. - - - - - Arranges and sizes the - - control and its contents. - - The size allowed for the - control. - The , unchanged. - - - - Builds the visual tree for the - control - when a new template is applied. - - - - - Allows the popup wrapper to fire visual state change events. - - The source object. - The event data. - - - - Allows the popup wrapper to fire the FocusChanged event. - - The source object. - The event data. - - - - Begin closing the drop-down. - - The original value. - - - - Begin opening the drop down by firing cancelable events, opening the - drop-down or reverting, depending on the event argument values. - - The original value, if needed for a revert. - - - - Connects to the DropDownPopup Closed event. - - The source object. - The event data. - - - - Handles the FocusChanged event. - - A value indicating whether the control - currently has the focus. - - - - Determines whether the text box or drop-down portion of the - control has - focus. - - true to indicate the - has focus; - otherwise, false. - - - - Provides handling for the - event. - - A - that contains the event data. - - - - Provides handling for the - event. - - A - that contains the event data. - - - - Handle the change of the IsEnabled property. - - The source object. - The event data. - - - - Returns the - part, if - possible. - - - A object, - if possible. Otherwise, null. - - - - - Handles the timer tick when using a populate delay. - - The source object. - The event arguments. - - - - Raises the - - event. - - A - that - contains the event data. - - - - Raises the - - event. - - A - - that contains the event data. - - - - Raises the - - event. - - A - - that contains the event data. - - - - Raises the - - event. - - A - - that contains the event data. - - - - Raises the - - event. - - A - - that contains the event data. - - - - Raises the - - event. - - A - - that contains the event data. - - - - Raises the - - event. - - A - - which contains the event data. - - - - Formats an Item for text comparisons based on Converter - and ConverterCulture properties. - - The object to format. - A value indicating whether to clear - the data context after the lookup is performed. - Formatted Value. - - - - Converts the specified object to a string by using the - and - values - of the binding object specified by the - - property. - - The object to format as a string. - The string representation of the specified object. - - Override this method to provide a custom string conversion. - - - - - Raises the - - event. - - A - that contains the event data. - - - - Handle the TextChanged event that is directly attached to the - TextBox part. This ensures that only user initiated actions will - result in an AutoCompleteBox suggestion and operation. - - The source TextBox object. - The TextChanged event data. - - - - When selection changes, save the location of the selection start. - - The source object. - The event data. - - - - Handles KeyDown to set a flag that indicates that the user is inputting - text. This is important for IME input. - - The source UIElement object. - The KeyDown event data. - - - - Handles KeyUp to turn off the flag that indicates that the user is inputting - text. This is important for IME input. - - The source UIElement object. - The KeyUp event data. - - - - Updates both the text box value and underlying text dependency - property value if and when they change. Automatically fires the - text changed events when there is a change. - - The new string value. - - - - Updates both the text box value and underlying text dependency - property value if and when they change. Automatically fires the - text changed events when there is a change. - - The new string value. - A nullable bool value indicating whether - the action was user initiated. In a user initiated mode, the - underlying text dependency property is updated. In a non-user - interaction, the text box value is updated. When user initiated is - null, all values are updated. - - - - Handle the update of the text for the control from any source, - including the TextBox part and the Text dependency property. - - The new text. - A value indicating whether the update - is a user-initiated action. This should be a True value when the - TextUpdated method is called from a TextBox event handler. - - - - Notifies the - that the - - property has been set and the data can be filtered to provide - possible matches in the drop-down. - - - Call this method when you are providing custom population of - the drop-down portion of the AutoCompleteBox, to signal the control - that you are done with the population process. - Typically, you use PopulateComplete when the population process - is a long-running process and you want to cancel built-in filtering - of the ItemsSource items. In this case, you can handle the - Populated event and set PopulatingEventArgs.Cancel to true. - When the long-running process has completed you call - PopulateComplete to indicate the drop-down is populated. - - - - - Performs text completion, if enabled, and a lookup on the underlying - item values for an exact match. Will update the SelectedItem value. - - A value indicating whether the operation - was user initiated. Text completion will not be performed when not - directly initiated by the user. - - - - Attempts to look through the view and locate the specific exact - text match. - - The search text. - The view reference. - The predicate to use for the partial or - exact match. - Returns the object or null. - - - - A simple helper method to clear the view and ensure that a view - object is always present and not null. - - - - - Walks through the items enumeration. Performance is not going to be - perfect with the current implementation. - - - - - Handle any change to the ItemsSource dependency property, update - the underlying ObservableCollection view, and set the selection - adapter's ItemsSource to the view if appropriate. - - The old enumerable reference. - The new enumerable reference. - - - - Method that handles the ObservableCollection.CollectionChanged event for the ItemsSource property. - - The object that raised the event. - The event data. - - - - Handles the SelectionChanged event of the selection adapter. - - The source object. - The selection changed event data. - - - - Handles the Commit event on the selection adapter. - - The source object. - The event data. - - - - Handles the Cancel event on the selection adapter. - - The source object. - The event data. - - - - Handles MaxDropDownHeightChanged by re-arranging and updating the - popup arrangement. - - The new value. - - - - Private method that directly opens the popup, checks the expander - button, and then fires the Opened event. - - The old value. - The new value. - - - - Private method that directly closes the popup, flips the Checked - value, and then fires the Closed event. - - The old value. - The new value. - - - - Provides handling for the - event. - - A - that contains the event data. - - - - Update the visual state of the control. - - - A value indicating whether to automatically generate transitions to - the new state, or instantly transition to the new state. - - - - - Update the current visual state of the button. - - - True to use transitions when updating the visual state, false to - snap directly to the new visual state. - - - - - Gets or sets the helper that provides all of the standard - interaction functionality. Making it internal for subclass access. - - - - - Gets or sets the minimum number of characters required to be entered - in the text box before the - displays - possible matches. - matches. - - - The minimum number of characters to be entered in the text box - before the - displays possible matches. The default is 1. - - - If you set MinimumPrefixLength to -1, the AutoCompleteBox will - not provide possible matches. There is no maximum value, but - setting MinimumPrefixLength to value that is too large will - prevent the AutoCompleteBox from providing possible matches as well. - - - - - Gets or sets the minimum delay, in milliseconds, after text is typed - in the text box before the - control - populates the list of possible matches in the drop-down. - - The minimum delay, in milliseconds, after text is typed in - the text box, but before the - populates - the list of possible matches in the drop-down. The default is 0. - The set value is less than 0. - - - - Gets or sets a value indicating whether the first possible match - found during the filtering process will be displayed automatically - in the text box. - - - True if the first possible match found will be displayed - automatically in the text box; otherwise, false. The default is - false. - - - - - Gets or sets the used - to display each item in the drop-down portion of the control. - - The used to - display each item in the drop-down. The default is null. - - You use the ItemTemplate property to specify the visualization - of the data objects in the drop-down portion of the AutoCompleteBox - control. If your AutoCompleteBox is bound to a collection and you - do not provide specific display instructions by using a - DataTemplate, the resulting UI of each item is a string - representation of each object in the underlying collection. - - - - - Gets or sets the that is - applied to the selection adapter contained in the drop-down portion - of the - control. - - The applied to the - selection adapter contained in the drop-down portion of the - control. - The default is null. - - The default selection adapter contained in the drop-down is a - ListBox control. - - - - - Gets or sets the applied to - the text box portion of the - control. - - The applied to the text - box portion of the - control. - The default is null. - - - - Gets or sets the maximum height of the drop-down portion of the - control. - - The maximum height of the drop-down portion of the - control. - The default is . - The specified value is less than 0. - - - - Gets or sets a value indicating whether the drop-down portion of - the control is open. - - - True if the drop-down is open; otherwise, false. The default is - false. - - - - - Gets or sets a collection that is used to generate the items for the - drop-down portion of the - control. - - The collection that is used to generate the items of the - drop-down portion of the - control. - - - - Gets or sets the selected item in the drop-down. - - The selected item in the drop-down. - - If the IsTextCompletionEnabled property is true and text typed by - the user matches an item in the ItemsSource collection, which is - then displayed in the text box, the SelectedItem property will be - a null reference. - - - - - Gets or sets the text in the text box portion of the - control. - - The text in the text box portion of the - control. - - - - Gets the text that is used to filter items in the - - item collection. - - The text that is used to filter items in the - - item collection. - - The SearchText value is typically the same as the - Text property, but is set after the TextChanged event occurs - and before the Populating event. - - - - - Gets or sets how the text in the text box is used to filter items - specified by the - - property for display in the drop-down. - - One of the - - values The default is - . - The specified value is - not a valid - . - - Use the FilterMode property to specify how possible matches are - filtered. For example, possible matches can be filtered in a - predefined or custom way. The search mode is automatically set to - Custom if you set the ItemFilter property. - - - - - Gets or sets the custom method that uses user-entered text to filter - the items specified by the - - property for display in the drop-down. - - The custom method that uses the user-entered text to filter - the items specified by the - - property. The default is null. - - The filter mode is automatically set to Custom if you set the - ItemFilter property. - - - - - Gets or sets the custom method that uses the user-entered text to - filter items specified by the - - property in a text-based way for display in the drop-down. - - The custom method that uses the user-entered text to filter - items specified by the - - property in a text-based way for display in the drop-down. - - The search mode is automatically set to Custom if you set the - TextFilter property. - - - - - Gets or sets the - - used by the Text template part. - - - - - Gets or sets the drop down popup control. - - - - - Determines whether text completion should be done. - - - - - Gets or sets the Text template part. - - - - - Gets or sets the selection adapter used to populate the drop-down - with a list of selectable items. - - The selection adapter used to populate the drop-down with a - list of selectable items. - - You can use this property when you create an automation peer to - use with AutoCompleteBox or deriving from AutoCompleteBox to - create a custom control. - - - - - Occurs when the text in the text box portion of the - changes. - - - - - Occurs when the - is - populating the drop-down with possible matches based on the - - property. - - - If the event is canceled, by setting the PopulatingEventArgs.Cancel - property to true, the AutoCompleteBox will not automatically - populate the selection adapter contained in the drop-down. - In this case, if you want possible matches to appear, you must - provide the logic for populating the selection adapter. - - - - - Occurs when the - has - populated the drop-down with possible matches based on the - - property. - - - - - Occurs when the value of the - - property is changing from false to true. - - - - - Occurs when the value of the - - property has changed from false to true and the drop-down is open. - - - - - Occurs when the - - property is changing from true to false. - - - - - Occurs when the - - property was changed from true to false and the drop-down is open. - - - - - Occurs when the selected item in the drop-down portion of the - has - changed. - - - - - Gets or sets the that - is used to get the values for display in the text portion of - the - control. - - The object used - when binding to a collection property. - - - - Gets or sets the property path that is used to get values for - display in the text portion of the - control. - - The property path that is used to get values for display in - the text portion of the - control. - - - - A predefined set of filter functions for the known, built-in - AutoCompleteFilterMode enumeration values. - - - - - Index function that retrieves the filter for the provided - AutoCompleteFilterMode. - - The built-in search mode. - Returns the string-based comparison function. - - - - Check if the string value begins with the text. - - The AutoCompleteBox prefix text. - The item's string value. - Returns true if the condition is met. - - - - Check if the string value begins with the text. - - The AutoCompleteBox prefix text. - The item's string value. - Returns true if the condition is met. - - - - Check if the string value begins with the text. - - The AutoCompleteBox prefix text. - The item's string value. - Returns true if the condition is met. - - - - Check if the string value begins with the text. - - The AutoCompleteBox prefix text. - The item's string value. - Returns true if the condition is met. - - - - Check if the prefix is contained in the string value. The current - culture's case insensitive string comparison operator is used. - - The AutoCompleteBox prefix text. - The item's string value. - Returns true if the condition is met. - - - - Check if the prefix is contained in the string value. - - The AutoCompleteBox prefix text. - The item's string value. - Returns true if the condition is met. - - - - Check if the prefix is contained in the string value. - - The AutoCompleteBox prefix text. - The item's string value. - Returns true if the condition is met. - - - - Check if the prefix is contained in the string value. - - The AutoCompleteBox prefix text. - The item's string value. - Returns true if the condition is met. - - - - Check if the string values are equal. - - The AutoCompleteBox prefix text. - The item's string value. - Returns true if the condition is met. - - - - Check if the string values are equal. - - The AutoCompleteBox prefix text. - The item's string value. - Returns true if the condition is met. - - - - Check if the string values are equal. - - The AutoCompleteBox prefix text. - The item's string value. - Returns true if the condition is met. - - - - Check if the string values are equal. - - The AutoCompleteBox prefix text. - The item's string value. - Returns true if the condition is met. - - - - Specifies how text in the text box portion of the - control is used - to filter items specified by the - - property for display in the drop-down. - - Stable - - - - Specifies that no filter is used. All items are returned. - - - - - Specifies a culture-sensitive, case-insensitive filter where the - returned items start with the specified text. The filter uses the - - method, specifying - as - the string comparison criteria. - - - - - Specifies a culture-sensitive, case-sensitive filter where the - returned items start with the specified text. The filter uses the - - method, specifying - as the string - comparison criteria. - - - - - Specifies an ordinal, case-insensitive filter where the returned - items start with the specified text. The filter uses the - - method, specifying - as the - string comparison criteria. - - - - - Specifies an ordinal, case-sensitive filter where the returned items - start with the specified text. The filter uses the - - method, specifying as - the string comparison criteria. - - - - - Specifies a culture-sensitive, case-insensitive filter where the - returned items contain the specified text. - - - - - Specifies a culture-sensitive, case-sensitive filter where the - returned items contain the specified text. - - - - - Specifies an ordinal, case-insensitive filter where the returned - items contain the specified text. - - - - - Specifies an ordinal, case-sensitive filter where the returned items - contain the specified text. - - - - - Specifies a culture-sensitive, case-insensitive filter where the - returned items equal the specified text. The filter uses the - - method, specifying - as - the search comparison criteria. - - - - - Specifies a culture-sensitive, case-sensitive filter where the - returned items equal the specified text. The filter uses the - - method, specifying - as the string - comparison criteria. - - - - - Specifies an ordinal, case-insensitive filter where the returned - items equal the specified text. The filter uses the - - method, specifying - as the - string comparison criteria. - - - - - Specifies an ordinal, case-sensitive filter where the returned items - equal the specified text. The filter uses the - - method, specifying as - the string comparison criteria. - - - - - Specifies that a custom filter is used. This mode is used when the - - or - - properties are set. - - - - - Represents the filter used by the - control to - determine whether an item is a possible match for the specified text. - - true to indicate is a possible match - for ; otherwise false. - The string used as the basis for filtering. - The item that is compared with the - parameter. - The type used for filtering the - . This type can - be either a string or an object. - Stable - - - - Defines an item collection, selection members, and key handling for the - selection adapter contained in the drop-down portion of an - control. - - Stable - - - - Provides handling for the - event that occurs - when a key is pressed while the drop-down portion of the - has focus. - - A - that contains data about the - event. - - - - Returns an automation peer for the selection adapter, for use by the - Silverlight automation infrastructure. - - An automation peer for the selection adapter, if one is - available; otherwise, null. - - - - Gets or sets the selected item. - - The currently selected item. - - - - Occurs when the - - property value changes. - - - - - Gets or sets a collection that is used to generate content for the - selection adapter. - - The collection that is used to generate content for the - selection adapter. - - - - Occurs when a selected item is not cancelled and is committed as the - selected item. - - - - - Occurs when a selection has been canceled. - - - - - Provides data for the - - event. - - Stable - - - - Initializes a new instance of the - . - - The list of possible matches added to the - drop-down portion of the - control. - - - - Gets the list of possible matches added to the drop-down portion of - the - control. - - The list of possible matches added to the - . - - - - Represents the method that will handle the - - event of a - control. - - The source of the event. - A - that - contains the event data. - Stable - - - - Provides data for the - - event. - - Stable - - - - Initializes a new instance of the - . - - The value of the - - property, which is used to filter items for the - control. - - - - Gets the text that is used to determine which items to display in - the - control. - - The text that is used to determine which items to display in - the . - - - - Gets or sets a value indicating whether the - - event should be canceled. - - True to cancel the event, otherwise false. The default is - false. - - - - Represents the method that will handle the - - event of a - control. - - The source of the event. - A - that - contains the event data. - Stable - - - - PopupHelper is a simple wrapper type that helps abstract platform - differences out of the Popup. - - - - - The distance from the control to the child. - - - - - A value indicating whether Silverlight has loaded at least once, - so that the wrapping canvas is not recreated. - - - - - Initializes a new instance of the PopupHelper class. - - The parent control. - - - - Initializes a new instance of the PopupHelper class. - - The parent control. - The Popup template part. - - - - Gets the for the control. - - The . - - - - Makes a from a . - - - The control's margin is counted with the offset to make the . - This makes the refer to the visible part of the control. - - The . - The margin. - - - - - Gets the of the visible part of the control (minus the margin). - - - The Parent is wrong if the orientation changed, so use the ArrangeOverride if it's available. - - The margin. - The size. - The . - - - - Gets the margin for the control. - - The margin. - - - - Determines whether is displayed above the control. - - The not covered by the SIP. - The of the control. - The position of the control. - - - - - Gets the minimum of three numbers and floors it at zero. - - The first number. - The second number. - The result. - - - - Computes the of if displayed above the control. - - The of the control. - The position of the control. - The . - - - - Computes the of if displayed below the control. - - The not covered by the SIP. - The of the control. - The position of the control. - The . - - - - The position of if displayed above the control. - - The control's margin. - The position. - - - - The position of if displayed below the control. - - The control's margin. - The of the control. - The position. - - - - Arrange the popup. - The from . - - - - - Fires the Closed event. - - The event data. - - - - Actually closes the popup after the VSM state animation completes. - - Event source. - Event arguments. - - - - Should be called by the parent control before the base - OnApplyTemplate method is called. - - - - - Should be called by the parent control after the base - OnApplyTemplate method is called. - - - - - The size of the popup child has changed. - - The source object. - The event data. - - - - The mouse has clicked outside of the popup. - - The source object. - The event data. - - - - Connected to the Popup Closed event and fires the Closed event. - - The source object. - The event data. - - - - Connected to several events that indicate that the FocusChanged - event should bubble up to the parent control. - - The event data. - - - - Fires the UpdateVisualStates event. - - The event data. - - - - The popup child has received focus. - - The source object. - The event data. - - - - The popup child has lost focus. - - The source object. - The event data. - - - - The popup child has had the mouse enter its bounds. - - The source object. - The event data. - - - - The mouse has left the popup child's bounds. - - The source object. - The event data. - - - - Gets a value indicating whether a visual popup state is being used - in the current template for the Closed state. Setting this value to - true will delay the actual setting of Popup.IsOpen to false until - after the visual state's transition for Closed is complete. - - - - - Gets or sets the parent control. - - - - - Gets or sets the expansive area outside of the popup. - - - - - Gets or sets the canvas for the popup child. - - - - - Gets or sets the maximum drop down height value. - - - - - Gets the Popup control instance. - - - - - Gets or sets a value indicating whether the actual Popup is open. - - - - - Gets or sets the popup child framework element. Can be used if an - assumption is made on the child type. - - - - - The Closed event is fired after the Popup closes. - - - - - Fired when the popup children have a focus event change, allows the - parent control to update visual states or react to the focus state. - - - - - Fired when the popup children intercept an event that may indicate - the need for a visual state update by the parent control. - - - - - Represents the selection adapter contained in the drop-down portion of - an control. - - Stable - - - - The Selector instance. - - - - - Initializes a new instance of the - - class. - - - - - Initializes a new instance of the - - class with the specified - - control. - - The - control - to wrap as a - . - - - - If the control contains a ScrollViewer, this will reset the viewer - to be scrolled to the top. - - - - - Handles the SelectionChanged event on the Selector control. - - The source object. - The selection changed event data. - - - - Increments the - - property of the underlying - - control. - - - - - Decrements the - - property of the underlying - - control. - - - - - Provides handling for the - event that occurs - when a key is pressed while the drop-down portion of the - has focus. - - A - that contains data about the - event. - - - - Raises the - - event. - - - - - Fires the Commit event. - - The source object. - The event data. - - - - Raises the - - event. - - - - - Fires the Cancel event. - - The source object. - The event data. - - - - Change the selection after the actions are complete. - - - - - Returns an automation peer for the underlying - - control, for use by the Silverlight automation infrastructure. - - An automation peer for use by the Silverlight automation - infrastructure. - - - - Gets or sets a value indicating whether the selection change event - should not be fired. - - - - - Gets or sets the underlying - - control. - - The underlying - - control. - - - - Occurs when the - - property value changes. - - - - - Occurs when an item is selected and is committed to the underlying - - control. - - - - - Occurs when a selection is canceled before it is committed. - - - - - Gets or sets the selected item of the selection adapter. - - The selected item of the underlying selection adapter. - - - - Gets or sets a collection that is used to generate the content of - the selection adapter. - - The collection used to generate content for the selection - adapter. - - - - A framework element that permits a binding to be evaluated in a new data - context leaf node. - - The type of dynamic binding to return. - - - - Gets or sets the string value binding used by the control. - - - - - Identifies the Value dependency property. - - - - - Initializes a new instance of the BindingEvaluator class. - - - - - Initializes a new instance of the BindingEvaluator class, - setting the initial binding to the provided parameter. - - The initial string value binding. - - - - Clears the data context so that the control does not keep a - reference to the last-looked up item. - - - - - Updates the data context of the framework element and returns the - updated binding value. - - The object to use as the data context. - If set to true, this parameter will - clear the data context immediately after retrieving the value. - Returns the evaluated T value of the bound dependency - property. - - - - Updates the data context of the framework element and returns the - updated binding value. - - The object to use as the data context. - Returns the evaluated T value of the bound dependency - property. - - - - Gets or sets the data item string value. - - - - - Gets or sets the value binding. - - - - - Extends the CultureInfo class to add Weekdays and Weekends methods. - - - - - Returns a list of days that are weekdays in the given culture. - - The culture to lookup. - - - - Returns a list of days that are weekends in the given culture. - - The culture to lookup. - - - - This set of internal extension methods provide general solutions and - utilities in a small enough number to not warrant a dedicated extension - methods class. - - - - - Inverts a Matrix. The Invert functionality on the Matrix type is - internal to the framework only. Since Matrix is a struct, an out - parameter must be presented. - - The Matrix object. - The matrix to return by an output - parameter. - Returns a value indicating whether the type was - successfully inverted. If the determinant is 0.0, then it cannot - be inverted and the original instance will remain untouched. - - - - An implementation of the Contains member of string that takes in a - string comparison. The traditional .NET string Contains member uses - StringComparison.Ordinal. - - The string. - The string value to search for. - The string comparison type. - Returns true when the substring is found. - - - - Returns whether the page orientation is in portrait. - - Page orientation - If the orientation is portrait - - - - Returns whether the dark visual theme is currently active. - - Resource Dictionary - - - - Returns whether the uri is from an external source. - - The uri - - - - Registers a property changed callback for a given property. - - The element registering the notification - Property name to register - Callback function - This allows a child to be notified of when a property declared in its parent is changed. - - - - The InteractionHelper provides controls with support for all of the - common interactions like mouse movement, mouse clicks, key presses, - etc., and also incorporates proper event semantics when the control is - disabled. - - - - - The threshold used to determine whether two clicks are temporally - local and considered a double click (or triple, quadruple, etc.). - 500 milliseconds is the default double click value on Windows. - This value would ideally be pulled form the system settings. - - - - - The threshold used to determine whether two clicks are spatially - local and considered a double click (or triple, quadruple, etc.) - in pixels squared. We use pixels squared so that we can compare to - the distance delta without taking a square root. - - - - - Reference used to call UpdateVisualState on the base class. - - - - - Initializes a new instance of the InteractionHelper class. - - Control receiving interaction. - - - - Update the visual state of the control. - - - A value indicating whether to automatically generate transitions to - the new state, or instantly transition to the new state. - - - UpdateVisualState works differently than the rest of the injected - functionality. Most of the other events are overridden by the - calling class which calls Allow, does what it wants, and then calls - Base. UpdateVisualState is the opposite because a number of the - methods in InteractionHelper need to trigger it in the calling - class. We do this using the IUpdateVisualState internal interface. - - - - - Update the visual state of the control. - - - A value indicating whether to automatically generate transitions to - the new state, or instantly transition to the new state. - - - - - Handle the control's Loaded event. - - The control. - Event arguments. - - - - Handle changes to the control's IsEnabled property. - - The control. - Event arguments. - - - - Handles changes to the control's IsReadOnly property. - - The value of the property. - - - - Update the visual state of the control when its template is changed. - - - - - Gets the control the InteractionHelper is targeting. - - - - - Gets a value indicating whether the control has focus. - - - - - Gets a value indicating whether the mouse is over the control. - - - - - Gets a value indicating whether the read-only property is set. - - - - - Gets a value indicating whether the mouse button is pressed down - over the control. - - - - - The ItemContainerGenerator provides useful utilities for ItemsControls. - - Preview - - - - A Panel that is used as the ItemsHost of the ItemsControl. This - property will only be valid when the ItemsControl is live in the - tree and has generated containers for some of its items. - - - - - A ScrollViewer that is used to scroll the items in the ItemsHost. - - - - - Initializes a new instance of the ItemContainerGenerator. - - - The ItemsControl being tracked by the ItemContainerGenerator. - - - - - Apply a control template to the ItemsControl. - - - - - Prepares the specified container to display the specified item. - - - Container element used to display the specified item. - - - The ItemContainerStyle for the parent ItemsControl. - - - - - Update the style of any generated items when the ItemContainerStyle - has been changed. - - The ItemContainerStyle. - - Silverlight does not support setting a Style multiple times, so we - only attempt to set styles on elements whose style hasn't already - been set. - - - - - Scroll the desired element into the ScrollHost's viewport. - - Element to scroll into view. - - - - Gets or sets the ItemsControl being tracked by the - ItemContainerGenerator. - - - - - Gets a Panel that is used as the ItemsHost of the ItemsControl. - This property will only be valid when the ItemsControl is live in - the tree and has generated containers for some of its items. - - - - - Gets a ScrollViewer that is used to scroll the items in the - ItemsHost. - - - - - Converts instances of other types to and from instances of a double that - represent an object measurement such as a height or width. - - Stable - - - - Conversions from units to pixels. - - - - - Initializes a new instance of the - class. - - - - - Determines whether conversion is possible from a specified type to a - that represents an object - measurement. - - - An - that provides a format context. - - - A that represents the type you want to - convert from. - - - True if this converter can perform the conversion; otherwise, false. - - - - - Converts from the specified value to values of the - type. - - - An - that provides a format context. - - - The to use as the - current culture. - - The value to convert. - The converted value. - - - - Returns whether the type converter can convert a measurement to the - specified type. - - - An - that provides a format context. - - - A that represents the type you want to - convert to. - - - True if this converter can perform the conversion; otherwise, false. - - - - - Converts the specified measurement to the specified type. - - - An object that provides a format context. - - - The to use as the - current culture. - - The value to convert. - - A that represents the type you want to - convert to. - - The converted value. - - - - Return the angle of the hypotenuse of a triangle with - sides defined by deltaX and deltaY. - - Change in X. - Change in Y. - The angle (in degrees). - - - - Return the distance between two points - - The first point. - The second point. - The distance between the two points. - - - - Helper extension method for turning XNA's Vector2 type into a Point - - The Vector2. - The point. - - - - Numeric utility methods used by controls. These methods are similar in - scope to the WPF DoubleUtil class. - - - - - Check if a number isn't really a number. - - The number to check. - - True if the number is not a number, false if it is a number. - - - - - Determine if one number is greater than another. - - First number. - Second number. - - True if the first number is greater than the second, false - otherwise. - - - - - Determine if two numbers are close in value. - - First number. - Second number. - - True if the first number is close in value to the second, false - otherwise. - - - - - NanUnion is a C++ style type union used for efficiently converting - a double into an unsigned long, whose bits can be easily - manipulated. - - - - - Floating point representation of the union. - - - - - Integer representation of the union. - - - - - Helper for the phone. - - - All orientations are condensed into portrait and landscape, where landscape includes . - - - - - The height of the SIP in landscape orientation. - - - - - The height of the SIP in portrait orientation. - - - - - The height of the SIP text completion in either orientation. - - - - - Gets the current . - - The current . - true if the current was found; false otherwise. - - - - Determines whether a is oriented as portrait. - - The . - true if the is oriented as portrait; false otherwise. - - - - Gets the correct width of a in either orientation. - - The . - The width. - - - - Gets the correct height of a in either orientation. - - The . - The height. - - - - Gets the correct of a . - - The . - The . - - - - Gets the focused , if there is one. - - The . - true if there is a focused ; false otherwise. - - - - Determines whether the SIP is shown. - - true if the SIP is shown; false otherwise. - - - - Determines whether the would show the SIP text completion. - - The . - true if the woudl show the SIP text completion; false otherwise. - - - - Gets the covered by the SIP when it is shown. - - The . - The . - - - - Gets the uncovered by the SIP when it is shown. - - The . - The . - - - - Provides event data for various routed events that track property values - changing. Typically the events denote a cancellable action. - - - The type of the value for the dependency property that is changing. - - Preview - - - - Private member variable for Cancel property. - - - - - Initializes a new instance of the - - class. - - - The identifier - for the property that is changing. - - The previous value of the property. - - The new value of the property, assuming that the property change is - not cancelled. - - - True if the property change is cancellable by setting - - to true in event handling. false if the property change is not - cancellable. - - - - - Gets the - identifier for the property that is changing. - - - The identifier - for the property that is changing. - - - - - Gets a value that reports the previous value of the changing - property. - - - The previous value of the changing property. - - - - - Gets or sets a value that reports the new value of the changing - property, assuming that the property change is not cancelled. - - - The new value of the changing property. - - - - - Gets a value indicating whether the property change that originated - the RoutedPropertyChanging event is cancellable. - - - True if the property change is cancellable. false if the property - change is not cancellable. - - - - - Gets or sets a value indicating whether the property change that - originated the RoutedPropertyChanging event should be cancelled. - - - True to cancel the property change; this resets the property to - . - false to not cancel the property change; the value changes to - . - - - Attempted to cancel in an instance where - - is false. - - - - - Gets or sets a value indicating whether internal value coercion is - acting on the property change that originated the - RoutedPropertyChanging event. - - - True if coercion is active. false if coercion is not active. - - - This is a total hack to work around the class hierarchy for Value - coercion in NumericUpDown. - - - - - Represents methods that handle various routed events that track property - values changing. Typically the events denote a cancellable action. - - - The type of the value for the dependency property that is changing. - - - The object where the initiating property is changing. - - Event data for the event. - Preview - - - - A helper class for raising events safely. - - - - - Raises an event in a thread-safe manner, also does the null check. - - The event to raise. - The event sender. - - - - Raises an event in a thread-safe manner, also does the null check. - - The event to raise. - The event sender. - - - - Raises an event in a thread-safe manner, also does the null check. - - The event args type. - The event to raise. - The event sender. - The event args. - - - - Raise an event in a thread-safe manner, with the required null check. Lazily creates event args. - - The event args type. - The event to raise. - The event sender. - The delegate to return the event args if needed. - - - - This is a method that returns event args, used for lazy creation. - - The event type. - - - - - A static class providing methods for working with the visual tree using generics. - - - - - Retrieves the first logical child of a specified type using a - breadth-first search. A visual element is assumed to be a logical - child of another visual element if they are in the same namescope. - For performance reasons this method manually manages the queue - instead of using recursion. - - The parent framework element. - Specifies whether to apply templates on the traversed framework elements - The first logical child of the framework element of the specified type. - - - - Retrieves all the logical children of a specified type using a - breadth-first search. A visual element is assumed to be a logical - child of another visual element if they are in the same namescope. - For performance reasons this method manually manages the queue - instead of using recursion. - - The parent framework element. - Specifies whether to apply templates on the traversed framework elements - The logical children of the framework element of the specified type. - - - - Allows time to be set from xaml. - - Preview - This converter is used by xaml and thus uses the - English formats. - - - - BackingField for the TimeFormats being used. - - - - - BackingField for the DateFormats being used. - - - - - Determines whether this instance can convert from - the specified type descriptor context. - - The type descriptor context. - Type of the source. - - True if this instance can convert from the specified type - descriptor context; otherwise, false. - - - - - Determines whether this instance can convert to the specified - type descriptor context. - - The type descriptor context. - Type of the destination. - - True if this instance can convert to the specified type - descriptor context; otherwise, false. - - - - - Converts instances of other data types into instances of DateTime that - represent a time. - - - The type descriptor context. - - The culture used to convert. This culture - is not used during conversion, but a specific set of formats is used. - - The string being converted to the DateTime. - - - A DateTime that is the value of the conversion. - - - - - Converts a DateTime into a string. - - - The type descriptor context. - - The culture used to convert. - - The value that is being converted to a specified type. - - - The type to convert the value to. - - - The value of the conversion to the specified type. - - - - - Represents a 2-tuple, or pair. - - The type of the tuple's first component. - The type of the tuple's second component. - - - - Initializes a new instance of the Tuple(T1, T2) class. - - The value of the tuple's first component. - The value of the tuple's second component. - - - - Gets the value of the current Tuple(T1, T2) object's first component. - - - - - Gets the value of the current Tuple(T1, T2) object's second component. - - - - - Common TypeConverter functionality. - - - - - Determines whether conversion is possible to a specified type. - - Expected type of the converter. - - Identifies the data type to evaluate for conversion. - - - A value indicating whether conversion is possible. - - - - - Attempts to convert a specified object to an instance of the - desired type. - - TypeConverter instance. - The object being converted. - - The type to convert the value to. - - - The value of the conversion to the specified type. - - - - - Names and helpers for visual states in the controls. - - - - - Common state group. - - - - - Normal state of the Common state group. - - - - - Normal state of the Common state group. - - - - - MouseOver state of the Common state group. - - - - - Pressed state of the Common state group. - - - - - Disabled state of the Common state group. - - - - - Focus state group. - - - - - Unfocused state of the Focus state group. - - - - - Focused state of the Focus state group. - - - - - Selection state group. - - - - - Selected state of the Selection state group. - - - - - Unselected state of the Selection state group. - - - - - Selected inactive state of the Selection state group. - - - - - Expansion state group. - - - - - Expanded state of the Expansion state group. - - - - - Collapsed state of the Expansion state group. - - - - - Popup state group. - - - - - Opened state of the Popup state group. - - - - - Closed state of the Popup state group. - - - - - ValidationStates state group. - - - - - The valid state for the ValidationStates group. - - - - - Invalid, focused state for the ValidationStates group. - - - - - Invalid, unfocused state for the ValidationStates group. - - - - - ExpandDirection state group. - - - - - Down expand direction state of ExpandDirection state group. - - - - - Up expand direction state of ExpandDirection state group. - - - - - Left expand direction state of ExpandDirection state group. - - - - - Right expand direction state of ExpandDirection state group. - - - - - HasItems state group. - - - - - HasItems state of the HasItems state group. - - - - - NoItems state of the HasItems state group. - - - - - Increment state group. - - - - - State enabled for increment group. - - - - - State disabled for increment group. - - - - - Decrement state group. - - - - - State enabled for decrement group. - - - - - State disabled for decrement group. - - - - - InteractionMode state group. - - - - - Edit of the DisplayMode state group. - - - - - Display of the DisplayMode state group. - - - - - DisplayMode state group. - - - - - Edit of the DisplayMode state group. - - - - - Display of the DisplayMode state group. - - - - - Active state. - - - - - Inactive state. - - - - - Active state group. - - - - - Non-watermarked state. - - - - - Watermarked state. - - - - - Watermark state group. - - - - - Unfocused state for Calendar Buttons. - - - - - Focused state for Calendar Buttons. - - - - - CalendarButtons Focus state group. - - - - - Busy state for BusyIndicator. - - - - - Idle state for BusyIndicator. - - - - - Busyness group name. - - - - - Visible state name for BusyIndicator. - - - - - Hidden state name for BusyIndicator. - - - - - BusyDisplay group. - - - - - Use VisualStateManager to change the visual state of the control. - - - Control whose visual state is being changed. - - - A value indicating whether to use transitions when updating the - visual state, or to snap directly to the new visual state. - - - Ordered list of state names and fallback states to transition into. - Only the first state to be found will be used. - - - - - Gets the implementation root of the Control. - - The DependencyObject. - - Implements Silverlight's corresponding internal property on Control. - - Returns the implementation root or null. - - - - This method tries to get the named VisualStateGroup for the - dependency object. The provided object's ImplementationRoot will be - looked up in this call. - - The dependency object. - The visual state group's name. - Returns null or the VisualStateGroup object. - - - - A static class providing methods for working with the visual tree. - - - - - Retrieves all the visual children of a framework element. - - The parent framework element. - The visual children of the framework element. - - - - Retrieves all the logical children of a framework element using a - breadth-first search. A visual element is assumed to be a logical - child of another visual element if they are in the same namescope. - For performance reasons this method manually manages the queue - instead of using recursion. - - The parent framework element. - The logical children of the framework element. - - - - Implements a weak event listener that allows the owner to be garbage - collected if its only remaining link is an event handler. - - Type of instance listening for the event. - Type of source for the event. - Type of event arguments for the event. - - - - WeakReference to the instance listening for the event. - - - - - Initializes a new instances of the WeakEventListener class. - - Instance subscribing to the event. - - - - Handler for the subscribed event calls OnEventAction to handle it. - - Event source. - Event arguments. - - - - Detaches from the subscribed event. - - - - - Gets or sets the method to call when the event fires. - - - - - Gets or sets the method to call when detaching from the event. - - - - - A utility for animating a horizontal translation value. - - - - - Single static instance of a PropertyPath with string path "X". - - - - - The Storyboard instance for the animation. - - - - - The DoubleAnimation instance for a running animation. - - - - - Flag to suppress the Completed event notification from happening. - - - - - A one-time action for the current GoTo statement only. Cleared if - GoTo is called before the action runs. - - - - - Initializes a new instance of the TransformAnimator class. - - Target element. - - - - Targets a new opacity value over a specified duration. - - The target opacity value. - The duration for the animation. - - - - Targets a new opacity value over a specified duration. - - The target opacity value. - The duration for the animation. - A completion Action. - - - - Targets a new opacity value over a specified duration. - - The target opacity value. - The duration for the animation. - An easing function value. - A completion Action. - - - - Handles and passes on the Completed event. - - Event source. - Event arguments. - - - - Ensures and creates if needed the animator for an element. Will also - verify that a translate transform is present. - - The target element. - The animator reference. - - - - A utility for animating a horizontal translation value. - - - - - Single static instance of a PropertyPath with string path "X". - - - - - The Storyboard instance for the animation. - - - - - The DoubleAnimation instance for a running animation. - - - - - The target translate transform instance. - - - - - A one-time action for the current GoTo statement only. Cleared if - GoTo is called before the action runs. - - - - - Initializes a new instance of the TransformAnimator class. - - TranslateTransform instance. - - - - Targets a new horizontal offset over a specified duration. - - The target offset value. - The duration for the animation. - - - - Updates the easing function of the double animation. - - The easing funciton, if any, to use. - - - - Immediately updates the duration of the running double animation. - - The new duration value to use. - - - - Handles animation completed - - Event source. - Event arguments. - - - - Ensures and creates if needed the animator for an element. Will also - verify that a translate transform is present. - - The target element. - The animator reference. - - - - Find a translate transform for the container or create one. - - The container. - Returns the TranslateTransform reference. - - - - Gets the current offset value from the translate transform object. - - - - - Represents a pop-up menu that enables a control to expose functionality that is specific to the context of the control. - - - - - Represents a control that defines choices for users to select. - - Preview - - - - Identifies the ItemContainerStyle dependency property. - - - - - Initializes a new instance of the MenuBase class. - - - - - Determines whether the specified item is, or is eligible to be, its own item container. - - The item to check whether it is an item container. - True if the item is a MenuItem or a Separator; otherwise, false. - - - - Creates or identifies the element used to display the specified item. - - A MenuItem. - - - - Prepares the specified element to display the specified item. - - Element used to display the specified item. - Specified item. - - - - Checks whether a control has the default value for a property. - - The control to check. - The property to check. - True if the property has the default value; false otherwise. - - - - Gets or sets the Style that is applied to the container element generated for each item. - - - - - Width of the Menu in Landscape - - - - - Width of the system tray in Landscape Mode - - - - - Width of the application bar in Landscape mode - - - - - Width of the borders around the menu - - - - - Visibility state group. - - - - - Open visibility state. - - - - - Open state when the context menu grows upwards. - - - - - Closed visibility state. - - - - - Open landscape visibility state. - - - - - Open landscape state when the context menu grows leftwards. - - - - - The panel that holds all the content - - - - - The grid that contains the item presenter - - - - - Stores a reference to the PhoneApplicationPage that contains the owning object. - - - - - Stores a reference to a list of ApplicationBarIconButtons for which the Click event is being handled. - - - - - Stores a reference to the Storyboard used to animate the background resize. - - - - - Stores a reference to the Storyboard used to animate the ContextMenu open. - - - - - Tracks whether the Storyboard used to animate the ContextMenu open is active. - - - - - Tracks the threshold for releasing contact during the ContextMenu open animation. - - - - - Stores a reference to the current root visual. - - - - - Stores the last known mouse position (via MouseMove). - - - - - Stores a reference to the object that owns the ContextMenu. - - - - - Stores a reference to the current Popup. - - - - - Stores a reference to the current overlay. - - - - - Stores a reference to the current Popup alignment point. - - - - - Stores a value indicating whether the IsOpen property is being updated by ContextMenu. - - - - - Whether the opening animation is reversed (bottom to top or right to left). - - - - - Identifies the IsZoomEnabled dependency property. - - - - - Identifies the IsFadeEnabled dependency property. - - - - - Identifies the VerticalOffset dependency property. - - - - - Handles changes to the VerticalOffset DependencyProperty. - - DependencyObject that changed. - Event data for the DependencyPropertyChangedEvent. - - - - Identifies the IsOpen dependency property. - - - - - Handles changes to the IsOpen DependencyProperty. - - DependencyObject that changed. - Event data for the DependencyPropertyChangedEvent. - - - - Handles changes to the IsOpen property. - - New value. - - - - Identifies the RegionOfInterest dependency property. - - - - - Called when the Opened event occurs. - - Event arguments. - - - - Called when the Closed event occurs. - - Event arguments. - - - - Initializes a new instance of the ContextMenu class. - - - - - Called when a new Template is applied. - - - - - Set up the background and border default styles - - - - - Handles the Completed event of the opening Storyboard. - - Source of the event. - Event arguments. - - - - Uses VisualStateManager to go to the appropriate visual state. - - true to use a System.Windows.VisualTransition to - transition between states; otherwise, false. - - - - Whether the position is on the right half of the screen. - Only supports landscape mode. - This is used to determine which side of the screen the context menu will display on. - - Position to check for - - - - Called when the left mouse button is pressed. - - The event data for the MouseLeftButtonDown event. - - - - Responds to the KeyDown event. - - The event data for the KeyDown event. - - - - Handles the LayoutUpdated event to capture Application.Current.RootVisual. - - Source of the event. - Event arguments. - - - - Handles the RootVisual's MouseMove event to track the last mouse position. - - Source of the event. - Event arguments. - - - - Handles the ManipulationCompleted event for the RootVisual. - - Source of the event. - Event arguments. - - - - Handles the Hold event for the owning element. - - Source of the event. - Event arguments. - - - - Identifies the ApplicationBarMirror dependency property. - - - - - Handles changes to the ApplicationBarMirror DependencyProperty. - - DependencyObject that changed. - Event data for the DependencyPropertyChangedEvent. - - - - Handles changes to the ApplicationBarMirror property. - - Old value. - New value. - - - - Handles an event which should close an open ContextMenu. - - Source of the event. - Event arguments. - - - - Handles the Loaded event of the Owner. - - Source of the event. - Event arguments. - - - - Handles the Unloaded event of the Owner. - - Source of the event. - Event arguments. - - - - Handles the BackKeyPress of the containing PhoneApplicationPage. - - Source of the event. - Event arguments. - - - - Calls TransformToVisual on the specified element for the specified visual, suppressing the ArgumentException that can occur in some cases. - - Element on which to call TransformToVisual. - Visual to pass to the call to TransformToVisual. - Resulting GeneralTransform object. - - - - Initialize the _rootVisual property (if possible and not already done). - - - - - Sets focus to the next item in the ContextMenu. - - True to move the focus down; false to move it up. - - - - Called when a child MenuItem is clicked. - - - - - Handles the SizeChanged event for the ContextMenu or RootVisual. - - Source of the event. - Event arguments. - - - - Handles the MouseButtonUp events for the overlay. - - Source of the event. - Event arguments. - - - - Updates the location and size of the Popup and overlay. - - - - - Opens the Popup. - - Position to place the Popup. - - - - Closes the Popup. - - - - - Gets or sets the owning object for the ContextMenu. - - - - - Gets or sets a value indicating whether the background will zoom out when the ContextMenu is open. - - - - - Gets or sets a value indicating whether the background will fade when the ContextMenu is open. - IsZoomEnabled must be true for this value to take effect. - - - - - Gets or sets the vertical distance between the target origin and the popup alignment point. - - - - - Gets or sets a value indicating whether the ContextMenu is visible. - - - - - Gets or sets the region of interest expressed in the coordinate system of the root visual. - A context menu will try to position itself outside the region of interest. - If null, the owner's bounding box is considered the region of interest. - - - - - Occurs when a particular instance of a ContextMenu opens. - - - - - Occurs when a particular instance of a ContextMenu closes. - - - - - Provides the system implementation for displaying a ContextMenu. - - Preview - - - - Gets the value of the ContextMenu property of the specified object. - - Object to query concerning the ContextMenu property. - Value of the ContextMenu property. - - - - Sets the value of the ContextMenu property of the specified object. - - Object to set the property on. - Value to set. - - - - Identifies the ContextMenu attached property. - - - - - Handles changes to the ContextMenu DependencyProperty. - - DependencyObject that changed. - Event data for the DependencyPropertyChangedEvent. - - - - Represents a selectable item inside a Menu or ContextMenu. - - Preview - - - - Represents a control that contains a collection of items and a header. - - Stable - - - - Identifies the - - dependency property. - - - The identifier for the - - dependency property. - - - Note: WPF defines this property via a call to AddOwner of - HeaderedContentControl's HeaderProperty. - - - - - HeaderProperty property changed handler. - - - HeaderedItemsControl that changed its Header. - - Event arguments. - - - - Identifies the - - dependency property. - - - The identifier for the - - dependency property. - - - Note: WPF defines this property via a call to AddOwner of - HeaderedContentControl's HeaderTemplateProperty. - - - - - HeaderTemplateProperty property changed handler. - - - HeaderedItemsControl that changed its HeaderTemplate. - - Event arguments. - - - - Identifies the - - dependency property. - - - The identifier for the - - dependency property. - - - - - ItemContainerStyleProperty property changed handler. - - - HeaderedItemsControl that changed its ItemContainerStyle. - - Event arguments. - - - - Initializes a new instance of the - class. - - - - - Called when the value of the - - property changes. - - - The old value of the - - property. - - - The new value of the - - property. - - - - - Called when the value of the - - property changes. - - - The old value of the - - property. - - - The new value of the - - property. - - - - - Builds the visual tree for the - when a - new template is applied. - - - - - Prepares the specified element to display the specified item. - - - The container element used to display the specified item. - - The content to display. - - - - Prepares the specified container to display the specified item. - - - Container element used to display the specified item. - - Specified item to display. - The parent ItemsControl. - - The ItemContainerStyle for the parent ItemsControl. - - - - - Prepare a PrepareHeaderedItemsControlContainer container for an - item. - - Container to prepare. - Item to be placed in the container. - The parent ItemsControl. - - The ItemContainerStyle for the parent ItemsControl. - - - - - Check whether a control has the default value for a property. - - The control to check. - The property to check. - - True if the property has the default value; false otherwise. - - - - - Gets or sets a value indicating whether the Header property has been - set to the item of an ItemsControl. - - - - - Gets or sets the item that labels the control. - - - The item that labels the control. The default value is null. - - - - - Gets or sets a data template that is used to display the contents of - the control's header. - - - Gets or sets a data template that is used to display the contents of - the control's header. The default is null. - - - - - Gets or sets the that is - applied to the container element generated for each item. - - - The that is applied to the - container element generated for each item. The default is null. - - - - - Gets the ItemsControlHelper that is associated with this control. - - - - - Stores a value indicating whether this element has logical focus. - - - - - Identifies the Command dependency property. - - - - - Handles changes to the Command DependencyProperty. - - DependencyObject that changed. - Event data for the DependencyPropertyChangedEvent. - - - - Handles changes to the Command property. - - Old value. - New value. - - - - Identifies the CommandParameter dependency property. - - - - - Handles changes to the CommandParameter DependencyProperty. - - DependencyObject that changed. - Event data for the DependencyPropertyChangedEvent. - - - - Handles changes to the CommandParameter property. - - - - - Initializes a new instance of the MenuItem class. - - - - - Called when the template's tree is generated. - - - - - Invoked whenever an unhandled GotFocus event reaches this element in its route. - - A RoutedEventArgs that contains event data. - - - - Raises the LostFocus routed event by using the event data that is provided. - - A RoutedEventArgs that contains event data. - - - - Called whenever the mouse enters a MenuItem. - - The event data for the MouseEnter event. - - - - Called whenever the mouse leaves a MenuItem. - - The event data for the MouseLeave event. - - - - Called when the left mouse button is released. - - The event data for the MouseLeftButtonUp event. - - - - Responds to the KeyDown event. - - The event data for the KeyDown event. - - - - Called when the Items property changes. - - The event data for the ItemsChanged event. - - - - Called when a MenuItem is clicked and raises a Click event. - - - - - Handles the CanExecuteChanged event of the Command property. - - Source of the event. - Event arguments. - - - - Updates the IsEnabled property. - - - WPF overrides the local value of IsEnabled according to ICommand, so Silverlight does, too. - - True if ChangeVisualState should be called. - - - - Called when the IsEnabled property changes. - - Source of the event. - Event arguments. - - - - Called when the Loaded event is raised. - - Source of the event. - Event arguments. - - - - Changes to the correct visual state(s) for the control. - - True to use transitions; otherwise false. - - - - Occurs when a MenuItem is clicked. - - - - - Gets or sets a reference to the MenuBase parent. - - - - - Gets or sets the command associated with the menu item. - - - - - Gets or sets the parameter to pass to the Command property of a MenuItem. - - - - - Control that is used to separate items in items controls. - - Preview - - - - Initializes a new instance of the Separator class. - - - - - Represents a that supports - objects, - such as . - - Stable - - - - The DataTemplate to apply to the ItemTemplate property on a - generated HeaderedItemsControl (such as a MenuItem or a - TreeViewItem), to indicate how to display items from the next level - in the data hierarchy. - - - - - The Style to apply to the ItemContainerStyle property on a generated - HeaderedItemsControl (such as a MenuItem or a TreeViewItem), to - indicate how to style items from the next level in the data - hierarchy. - - - - - Initializes a new instance of the - class. - - - - - Gets or sets the collection that is used to generate content for the - next sublevel in the data hierarchy. - - - The collection that is used to generate content for the next - sublevel in the data hierarchy. The default value is null. - - - - - Gets a value indicating whether the ItemTemplate property was set on - the template. - - - - - Gets or sets the to - apply to the - - property on a generated - , such - as a , to - indicate how to display items from the next sublevel in the data - hierarchy. - - - The to apply to the - - property on a generated - , such - as a , to - indicate how to display items from the next sublevel in the data - hierarchy. - - - - - Gets a value indicating whether the ItemContainerStyle property was - set on the template. - - - - - Gets or sets the that is - applied to the item container for each child item. - - - The style that is applied to the item container for each child item. - - - - - Date and time converter for daily feeds. - - - - - Converts a - - object into a string appropriately formatted for daily feeds. - This format can be found in the call history. - - The given date and time. - - The type corresponding to the binding property, which must be of - . - - (Not used). - (Not used). - The given date and time as a string. - - - - Not implemented. - - (Not used). - (Not used). - (Not used). - (Not used). - null - - - - An hour defined in minutes. - - - - - A day defined in minutes. - - - - - Format pattern for single-character meridiem designators. - e.g. 4:30p - - - - - Format pattern for double-character meridiem designators. - e.g. 4:30 p.m. - - - - - Date and time information used when getting the super short time - pattern. Syncs with the current culture. - - - - - Date and time information used when getting the month and day - pattern. Syncs with the current culture. - - - - - Date and time information used when getting the short time - pattern. Syncs with the current culture. - - - - - Lock object used to delimit a critical region when getting - the super short time pattern. - - - - - Lock object used to delimit a critical region when getting - the month and day pattern. - - - - - Lock object used to delimit a critical region when getting - the short time pattern. - - - - - Regular expression used to get the month and day pattern. - - - - - Regular expression used to get the seconds pattern with separator. - - - - - Gets the number representing the day of the week from a given - - object, relative to the first day of the week - according to the current culture. - - Date information. - - A number representing the day of the week. - e.g. if Monday is the first day of the week according to the - relative culture, Monday returns 0, Tuesday returns 1, etc. - - - - - Indicates if a given - - object represents a future instance when compared to another - - object. - - Relative date and time. - Given date and time. - - True if given date and time represents a future instance. - - - - - Indicates if a given - - object represents a past year when compared to another - - object. - - Relative date and time. - Given date and time. - - True if given date and time is set to a past year. - - - - - Indicates if a given - - object represents a past week when compared to another - - object. - - Relative date and time. - Given date and time. - - True if given date and time is set to a past week. - - - - - Indicates if a given - - object is at least one week behind from another - - object. - - Relative date and time. - Given date and time. - - True if given date and time is at least one week behind. - - - - - Indicates if a given - - object corresponds to a past day in the same week as another - - object. - - Relative date and time. - Given date and time. - - True if given date and time is a past day in the relative week. - - - - - Indicates if a given - - object corresponds to a past day in the same week as another - - object and at least three hours behind it. - - Relative date and time. - Given date and time. - - True if given date and time is a past day in the relative week - and at least three hours behind the relative time. - - - - - Identifies if the current culture is set to Japanese. - - - True if current culture is set to Japanese. - - - - - Identifies if the current culture is set to Korean. - - - True if current culture is set to Korean. - - - - - Identifies if the current culture is set to Turkish. - - - True if current culture is set to Turkish. - - - - - Identifies if the current culture is set to Hungarian. - - - True if current culture is set to Hungarian. - - - - - Identifies if the current UI culture is set to French. - - - True if current UI culture is set to French. - - - - - Gets the abbreviated day from a - - object. - - Date information. - e.g. "Mon" for Monday when en-US. - - - - Gets the time from a - - object in short Metro format. - - - Metro design guidelines normalize strings to lowercase. - - Time information. - "10:20p" for 10:20 p.m. when en-US. - - - - Gets the month and day from a - - object. - - Date information. - "05/24" for May 24th when en-US. - - - - Gets the date in short pattern from a - - object. - - Date information. - - Date in short pattern as defined by the system locale. - - - - - Gets the time in short pattern from a - - object. - - Date information. - - Time in short pattern as defined by the system locale. - - - - - Date and time converter to display information in full format. - - - - - Converts a - - object into a string appropriately formatted to - display full date and time information. - This format can be found in email. - - - This format never displays the year. - - The given date and time. - - The type corresponding to the binding property, which must be of - . - - (Not used). - (Not used). - The given date and time as a string. - - - - Not implemented. - - (Not used). - (Not used). - (Not used). - (Not used). - null - - - - Date and time converter for hourly feeds. - - - - - Converts a - - object into a string appropriately formatted for hourly feeds. - This format can be found in messaging. - - The given date and time. - - The type corresponding to the binding property, which must be of - . - - (Not used). - (Not used). - The given date and time as a string. - - - - Not implemented. - - (Not used). - (Not used). - (Not used). - (Not used). - null - - - - Date and time converter to be used in list-views. - - - - - Converts a - - object into a string appropriately formatted for list-views. - This format can be found in email. - - - This format never displays the year. - - The given date and time. - - The type corresponding to the binding property, which must be of - . - - (Not used). - (Not used). - The given date and time as a string. - - - - Not implemented. - - (Not used). - (Not used). - (Not used). - (Not used). - null - - - - Time converter to display elapsed time relatively to the present. - - - - - A minute defined in seconds. - - - - - An hour defined in seconds. - - - - - A day defined in seconds. - - - - - A week defined in seconds. - - - - - A month defined in seconds. - - - - - A year defined in seconds. - - - - - Abbreviation for the default culture used by resources files. - - - - - Four different strings to express hours in plural. - - - - - Four different strings to express minutes in plural. - - - - - Four different strings to express seconds in plural. - - - - - Resources use the culture in the system locale by default. - The converter must use the culture specified the ConverterCulture. - The ConverterCulture defaults to en-US when not specified. - Thus, change the resources culture only if ConverterCulture is set. - - The culture to use in the converter. - - - - Returns a localized text string to express months in plural. - - Number of months. - Localized text string. - - - - Returns a localized text string to express time units in plural. - - - Number of time units, e.g. 5 for five months. - - - Resources related to the specified time unit. - - Localized text string. - - - - Returns a localized text string for the day of week. - - Day of week. - Localized text string. - - - - Returns a localized text string to express "on {0}" - where {0} is a day of the week, e.g. Sunday. - - Day of week. - Localized text string. - - - - Converts a - - object into a string the represents the elapsed time - relatively to the present. - - The given date and time. - - The type corresponding to the binding property, which must be of - . - - (Not used). - - The culture to use in the converter. - When not specified, the converter uses the current culture - as specified by the system locale. - - The given date and time as a string. - - - - Not implemented. - - (Not used). - (Not used). - (Not used). - (Not used). - null - - - - Date and time converter for threads. - - - - - Converts a - - object into a string appropriately formatted for threads. - This format can be found in messaging. - - - This format never displays the year. - - The given date and time. - - The type corresponding to the binding property, which must be of - . - - (Not used). - (Not used). - The given date and time as a string. - - - - Not implemented. - - (Not used). - (Not used). - (Not used). - (Not used). - null - - - - Defines how the LoopingSelector communicates with data source. - - - - - Get the next datum, relative to an existing datum. - - The datum the return value will be relative to. - The next datum. - - - - Get the previous datum, relative to an existing datum. - - The datum the return value will be relative to. - The previous datum. - - - - The selected item. Should never be null. - - - - - Raised when the selection changes. - - - - - Represents a control that allows the user to choose a date (day/month/year). - - - - - Represents a base class for controls that allow the user to choose a date/time. - - - - - Identifies the Value DependencyProperty. - - - - - Called when the value changes. - - The event data. - - - - Identifies the ValueString DependencyProperty. - - - - - Identifies the ValueStringFormat DependencyProperty. - - - - - Identifies the Header DependencyProperty. - - - - - Identifies the HeaderTemplate DependencyProperty. - - - - - Identifies the PickerPageUri DependencyProperty. - - - - - Initializes a new instance of the DateTimePickerBase control. - - - - - Called when the control's Template is expanded. - - - - - Event that is invoked when the Value property changes. - - - - - Gets or sets the DateTime value. - - - - - Gets the string representation of the selected value. - - - - - Gets or sets the format string to use when converting the Value property to a string. - - - - - Gets or sets the header of the control. - - - - - Gets or sets the template used to display the control's header. - - - - - Gets or sets the Uri to use for loading the IDateTimePickerPage instance when the control is clicked. - - - - - Gets the fallback value for the ValueStringFormat property. - - - - - Initializes a new instance of the DatePicker control. - - - - - Represents a page used by the DatePicker control that allows the user to choose a date (day/month/year). - - - - - Represents a base class for pages that work with DateTimePickerBase to allow users to choose a date/time. - - - - - Represents an interface for DatePicker/TimePicker to use for communicating with a picker page. - - - - - Gets or sets the DateTime to show in the picker page and to set when the user makes a selection. - - - - - Initializes the DateTimePickerPageBase class; must be called from the subclass's constructor. - - Primary selector. - Secondary selector. - Tertiary selector. - - - - Called when the Back key is pressed. - - Event arguments. - - - - Gets a sequence of LoopingSelector parts ordered according to culture string for date/time formatting. - - LoopingSelectors ordered by culture-specific priority. - - - - Gets a sequence of LoopingSelector parts ordered according to culture string for date/time formatting. - - Culture-specific date/time format string. - Date/time format string characters for the primary/secondary/tertiary LoopingSelectors. - Instances for the primary/secondary/tertiary LoopingSelectors. - LoopingSelectors ordered by culture-specific priority. - - - - Called when a page is no longer the active page in a frame. - - An object that contains the event data. - - - - Called when a page becomes the active page in a frame. - - An object that contains the event data. - - - - Gets or sets the DateTime to show in the picker page and to set when the user makes a selection. - - - - - Initializes a new instance of the DatePickerPage control. - - - - - Gets a sequence of LoopingSelector parts ordered according to culture string for date/time formatting. - - LoopingSelectors ordered by culture-specific priority. - - - - Handles changes to the page's Orientation property. - - Event arguments. - - - - InitializeComponent - - - - - Provides access to the localized resources used by the DatePicker and TimePicker. - - - - - Gets the localized DatePicker title string. - - - - - Gets the localized TimePicker title string. - - - - - Implements a wrapper for DateTime that provides formatted strings for DatePicker. - - - - - Initializes a new instance of the DateTimeWrapper class. - - DateTime to wrap. - - - - Returns a value indicating whether the current culture uses a 24-hour clock. - - True if it uses a 24-hour clock; false otherwise. - - - - Gets the DateTime being wrapped. - - - - - Gets the 4-digit year as a string. - - - - - Gets the 2-digit month as a string. - - - - - Gets the month name as a string. - - - - - Gets the 2-digit day as a string. - - - - - Gets the day name as a string. - - - - - Gets the hour as a string. - - - - - Gets the 2-digit minute as a string. - - - - - Gets the AM/PM designator as a string. - - - - - Provides data for the DatePicker and TimePicker's ValueChanged event. - - - - - Initializes a new instance of the DateTimeValueChangedEventArgs class. - - Old DateTime value. - New DateTime value. - - - - Gets or sets the old DateTime value. - - - - - Gets or sets the new DateTime value. - - - - - Represents a control that allows the user to choose days of the week. - - - - - Class that implements a flexible list-picking experience with a custom interface for few/many items. - - - - - In Mango, the size of list pickers in expanded mode was given extra offset. - - - - - Whether this list picker has the picker page opened. - - - - - Identifies the ListPickerMode DependencyProperty. - - - - - Highlight property changed - - - - - Highlight property changed - - - - - Enabled property changed - - - - - Enabled property changed - - - - - Identifies the SelectedIndex DependencyProperty. - - - - - Identifies the SelectedItem DependencyProperty. - - - - - Identifies the FullModeItemTemplate DependencyProperty. - - - - - Identifies the Header DependencyProperty. - - - - - Identifies the HeaderTemplate DependencyProperty. - - - - - Identifies the FullModeHeader DependencyProperty. - - - - - Identifies the ItemCountThreshold DependencyProperty. - - - - - Identifies the PickerPageUri DependencyProperty. - - - - - Identifies the ExpansionMode DependencyProperty. - - - - - Identifies the SelectionMode DependencyProperty. - - - - - Identifies the SelectedItems DependencyProperty. - - - - - Initializes a new instance of the ListPicker class. - - - - - Builds the visual tree for the control when a new template is applied. - - - - - Determines if the specified item is (or is eligible to be) its own item container. - - The specified item. - True if the item is its own item container; otherwise, false. - - - - Creates or identifies the element used to display a specified item. - - A container corresponding to a specified item. - - - - Prepares the specified element to display the specified item. - - The element used to display the specified item. - The item to display. - - - - Undoes the effects of the PrepareContainerForItemOverride method. - - The container element. - The item. - - - - Provides handling for the ItemContainerGenerator.ItemsChanged event. - - A NotifyCollectionChangedEventArgs that contains the event data. - - - - Called when the ManipulationStarted event occurs. - - Event data for the event. - - - - Called when the ManipulationDelta event occurs. - - Event data for the event. - - - - Called when the ManipulationCompleted event occurs. - - Event data for the event. - - - - Opens the picker for selection either into Expanded or Full mode depending on the picker's state. - - Whether the picker was succesfully opened. - - - - Updates the summary of the selected items to be displayed in the ListPicker. - - The list selected items - - - - Event that is raised when the selection changes. - - - - - Gets or sets the delegate, which is called to summarize a list of selections into a string. - If not implemented, the default summarizing behavior will be used. - If this delegate is implemented, default summarizing behavior can be achieved by returning - null instead of a string. - - - - - Gets or sets the ListPickerMode (ex: Normal/Expanded/Full). - - - - - Whether the list picker is highlighted. - This occurs when the user is manipulating the box or when in expanded mode. - - - - - Gets or sets the index of the selected item. - - - - - Gets or sets the selected item. - - - - - Gets or sets the DataTemplate used to display each item when ListPickerMode is set to Full. - - - - - Gets or sets the header of the control. - - - - - Gets or sets the template used to display the control's header. - - - - - Gets or sets the header to use when ListPickerMode is set to Full. - - - - - Gets the maximum number of items for which Expanded mode will be used, 5. - - - - - Gets or sets the Uri to use for loading the ListPickerPage instance when the control is tapped. - - - - - Gets or sets how the list picker expands when tapped. - This property has an effect only when SelectionMode is Single. - When SelectionMode is Multiple, the ExpansionMode will be treated as FullScreenOnly. - ExpansionAllowed will only expand when the number of items is less than or equalt to ItemCountThreshold - Single by default. - - - - - Gets or sets the SelectionMode. Extended is treated as Multiple. - Single by default. - - - - - Gets the selected items. - - - - - Initializes a new instance of the RecurringDaysPicker control. - - - - - Sumarizes a list of days into a shortened string representation. - If all days, all weekdays, or all weekends are in the list, then the string includes - the corresponding name rather than listing out all of those days separately. - If individual days are listed, they are abreviated. - If the list is null or empty, "only once" is returned. - - The list of days. Can be empty or null. - A string representation of the list of days. - - - - Sumarizes a list of days into a shortened string representation. - If all days, all weekdays, or all weekends are in the list, then the string includes - the corresponding name rather than listing out all of those days separately. - If individual days are listed, they are abreviated. - If the list is empty, "only once" is returned. - - The list of days. Can be empty. - A string representation of the list of days. - - - - Finds a group (weekends, weekdays, every day) within a list of days and returns a string representing that group. - Days that are not in a group are set in the unhandledDays out parameter. - - List of days - Out parameter which will be written to with the list of days that were not in a group. - String of any group found. - - - - Represents a control that allows the user to choose a time (hour/minute/am/pm). - - - - - Initializes a new instance of the TimePicker control. - - - - - Gets the fallback value for the ValueStringFormat property. - - - - - Represents a page used by the TimePicker control that allows the user to choose a time (hour/minute/am/pm). - - - - - Initializes a new instance of the TimePickerPage control. - - - - - Gets a sequence of LoopingSelector parts ordered according to culture string for date/time formatting. - - LoopingSelectors ordered by culture-specific priority. - - - - Handles changes to the page's Orientation property. - - Event arguments. - - - - InitializeComponent - - - - - Represents a collection of items that can be expanded or collapsed. - - - - - Expansion visual states. - - - - - Expandability visual states. - - - - - Collapsed visual state. - - - - - Expanded visual state. - - - - - Expandable visual state. - - - - - NonExpandable visual state. - - - - - Presenter template part name. - - - - - Expander Panel template part name. - - - - - Expanded State Animation template part name. - - - - - Collapsed to Expanded Key Frame template part name. - - - - - Expanded to Collapsed Key Frame template part name. - - - - - Step between the keytimes of drop-down animations - to create a feather effect. - - - - - Initial key time for drop-down animations. - - - - - Final key time for drop-down animations. - - - - - Presenter template part. - - - - - Expander Panel template part. - - - - - Expanded State Animation template part. - - - - - Collapsed to Expanded Key Frame template part. - - - - - Expanded to Collapsed Key Frame template part. - - - - - Identifies the Expander dependency property. - - - - - ExpanderProperty changed handler. - - The dependency object. - The event information. - - - - Identifies the ExpanderTemplate dependency property. - - - - - ExpanderTemplateProperty changed handler. - - The dependency object. - The event information. - - - - Identifies the NonExpandableHeader dependency property. - - - - - NonExpandableHeaderProperty changed handler. - - The dependency object. - The event information. - - - - Identifies the NonExpandableHeaderTemplate dependency property. - - - - - NonExpandableHeaderTemplate changed handler. - - The dependency object. - The event information. - - - - Identifies the IsExpanded dependency property. - - - - - IsExpandedProperty changed handler. - - The dependency object. - The event information. - - - - Identifies the HasItems dependency property. - - - - - Identifies the NonExpandable dependency property. - - - - - IsNonExpandableProperty changed handler. - - The dependency object. - The event information. - - - - Gets the template parts and sets event handlers. - - - - - Initializes a new instance of the ExpanderView class. - - - - - Recalculates the size of the presenter to match its parent. - - - - - - - Updates the visual state. - - - Indicates whether visual transitions should be used. - - - - - Raises a routed event. - - Event handler. - Event arguments. - - - - Provides the feathered animation for items - when the Expander View goes from collapsed to expanded. - - - - - Updates the HasItems property. - - The event information. - - - - Toggles the IsExpanded property. - - The Expander Panel that triggers the event. - The event information. - - - - Called when the value of th Expander property changes. - - - The old value of the Expander property. - - - The new value of the Expander property. - - - - - Called when the value of the ExpanderTemplate property changes. - - - The old value of the ExpanderTemplate property. - - - The new value of the ExpanderTemplate property. - - - - - Called when the value of the NonExpandableHeader property changes. - - - The old value of the NonExpandableHeader property. - - - The new value of the NonExpandableHeader property. - - - - - Called when the value of the NonExpandableHeaderTemplate - property changes. - - - The old value of the NonExpandableHeaderTemplate property. - - - The new value of the NonExpandableHeaderTemplate property. - - - - - Raises an Expanded event when the IsExpanded property - changes from false to true. - - The event information. - - - - Raises a Collapsed event when the IsExpanded property - changes from true to false. - - The event information. - - - - Occurs when the Expander View opens to display its content. - - - - - Occurs when the Expander View closes to hide its content. - - - - - Gets or sets the expander object. - - - - - Gets or sets the data template that defines - the expander. - - - - - Gets or sets the header object that is displayed - when the Expander View is non-expandable. - - - - - Gets or sets the data template that defines - the non-expandable header. - - - - - Gets or sets the flag that indicates whether the - Expander View is expanded. - - - - - Gets or sets the flag that indicates whether the - Expander View has items. - - - - - Gets or sets the flag that indicates whether the - Expander View is non-expandable. - - - - - Represents the visual states of an Expander View - related to its current expansion. - - - - - Collapsed visual state value. - - - - - Expanded visual state value. - - - - - Represents the visual states of an Expander View - related to its expandability. - - - - - Expandable visual state value. - - - - - NonExpandable visual state value. - - - - - Represents an animated tile that supports an image and a title. - Furthermore, it can also be associated with a message or a notification. - - - - - Common visual states. - - - - - Expanded visual state. - - - - - Semiexpanded visual state. - - - - - Collapsed visual state. - - - - - Flipped visual state. - - - - - Nofitication Block template part name. - - - - - Message Block template part name. - - - - - Back Title Block template part name. - - - - - Notification Block template part. - - - - - Message Block template part. - - - - - Back Title Block template part. - - - - - Represents the number of steps inside the pipeline of stalled images - - - - - Flag that determines if the hub tile has a primary text string associated to it. - If it does not, the hub tile will not drop. - - - - - Flag that determines if the hub tile has a secondary text string associated to it. - If it does not, the hub tile will not flip. - - - - - Identifies the Source dependency property. - - - - - Identifies the Title dependency property. - - - - - Prevents the hub tile from transitioning into a Semiexpanded or Collapsed visual state if the title is not set. - - The dependency object. - The event information. - - - - Identifies the Notification dependency property. - - - - - Prevents the hub tile from transitioning into a Flipped visual state if neither the notification alert nor the message are set. - - The dependency object. - The event information. - - - - Identifies the Message dependency property. - - - - - Identifies the DisplayNotification dependency property. - - - - - Identifies the IsFrozen dependency property. - - - - - Removes the frozen image from the enabled image pool or the stalled image pipeline. - Adds the non-frozen image to the enabled image pool. - - The dependency object. - The event information. - - - - Identifies the GroupTag dependency property. - - - - - Identifies the State dependency property. - - - - - Triggers the transition between visual states. - - The dependency object. - The event information. - - - - Updates the visual state. - - - - - Gets the template parts and sets binding. - - - - - Initializes a new instance of the HubTile class. - - - - - This event handler gets called as soon as a hub tile is added to the visual tree. - A reference of this hub tile is passed on to the service singleton. - - The hub tile. - The event information. - - - - This event handler gets called as soon as a hub tile is removed from the visual tree. - Any existing reference of this hub tile is eliminated from the service singleton. - - The hub tile. - The event information. - - - - Gets or sets the image source. - - - - - Gets or sets the title. - - - - - Gets or sets the notification alert. - - - - - Gets or sets the message. - - - - - Gets or sets the flag for new notifications. - - - - - Gets or sets the flag for images that do not animate. - - - - - Gets or sets the group tag. - - - - - Gets or sets the visual state. - - - - - Represents the visual states of a Hub tile. - - - - - Expanded visual state value. - - - - - Semiexpanded visual state value. - - - - - Collapsed visual state value. - - - - - Flipped visual state value. - - - - - Converts a multi-line string into a single line string. - - - - - If there is a new notification (value) - Returns a Visible value for the notification block (parameter). - Or a Collapsed value for the message block (parameter). - Returns a opposite values otherwise. - - - - - Provides organized animations for the hub tiles. - - - - - Number of steps in the pipeline - - - - - Number of hub tile that can be animated at exactly the same time. - - - - - Track resurrection for weak references. - - - - - Timer to trigger animations in timely. - - - - - Random number generator to take certain random decisions. - e.g. which hub tile is to be animated next. - - - - - Pool that contains references to the hub tiles that are not frozen. - i.e. hub tiles that can be animated at the moment. - - - - - Pool that contains references to the hub tiles which are frozen. - i.e. hub tiles that cannot be animated at the moment. - - - - - Pipeline that contains references to the hub tiles that where animated previously. - These are stalled briefly before they can be animated again. - - - - - Static constructor to add the tick event handler. - - - - - Restart the timer to trigger animations. - - - - - Add a reference to a newly instantiated hub tile. - - The newly instantiated hub tile. - - - - Remove all references of a hub tile before finalizing it. - - The hub tile that is to be finalized. - - - - Add a reference of a hub tile to the enabled images pool. - - The hub tile to be added. - - - - Add a reference of a hub tile to the frozen images pool. - - The hub tile to be added. - - - - Add a reference of a hub tile to the stalled images pipeline. - - The hub tile to be added. - - - - Remove the reference of a hub tile from the enabled images pool. - - The hub tile to be removed. - - - - Remove the reference of a hub tile from the frozen images pool. - - The hub tile to be removed. - - - - Remove the reference of a hub tile from the stalled images pipeline. - - The hub tile to be removed. - - - - Determine if there is a reference to a known target in a list. - - The list to be examined. - The known target. - True if a reference to the known target exists in the list. False otherwise. - - - - Remove a reference to a known target in a list. - - The list to be examined. - The known target. - - - - Executes the code to process a visual transition: - 1. Stop the timer. - 2. Advances the stalled tiles to the next step in the pipeline. - If there is at least one tile that can be currently animated ... - 3. Animate as many tiles as indicated. - 4. Select a tile andomly from the pool of enabled tiles. - 5. Based on this tile's current visual state, move it onto - the next one. - 6. Set the stalling counter for the recently animated image. - 7. Take it out from the pool and into the pipeline to prevent it - from being animated continuously. - 8. Restart the timer with a randomly generated time interval - between 100 and 3000 ms. - Notice that if there are no hub tiles that can be animated, - the timer is not restarted. - - The static timer. - The event information. - - - - Freeze a hub tile. - - The hub tile to be frozen. - - - - Unfreezes a hub tile and restarts the timer if needed. - - The hub tile to be unfrozen. - - - - Freezes all the hub tiles with the specified group tag that are not already frozen. - - The group tag representing the hub tiles that should be frozen. - - - - Unfreezes all the hub tiles with the specified group tag - that are currently frozen and restarts the timer if needed. - - The group tag representing the hub tiles that should be unfrozen. - - - - The GestureListener class raises events similar to those provided by the XNA TouchPanel, but it is designed for - Silverlight's event-driven model, rather than XNA's loop/polling model, and it also takes care of the hit testing - and event routing. - - - - - Handle touch events. - - - - - - - A touch has started. - - - - - A touch is continuing... - - - - - A touch has ended. - - - - - This method does all the necessary work to raise a gesture event. It sets the orginal source, does the routing, - handles Handled, and only creates the event args if they are needed. - - This is the type of event args that will be raised. - Gets the specific event to raise. - Lazy creator function for the event args. - Indicates whether the mouse capture should be released - - - - The GestureBegin event. - - - - - The GestureCompleted event. - - - - - The Tap event (touch, release, no movement). - - - - - The DoubleTap event is raised instead of Tap if the time between two taps is short eonugh. - - - - - The Hold event (touch and hold for one second) - - - - - The DragStarted event. - - - - - The DragDelta event. - - - - - The DragCompleted event. Will be raised on touch release after a drag, or - when a second touch point is added. - - - - - The Flick event. Raised when a drag that was fast enough ends with a release. - - - - - The PinchStarted event. - - - - - Any two-touch point (two finger) operation. - - - - - The end of a pinch operation. - - - - - The base class for all gesture events. Also used by Tap, DoubleTap and Hold. - - - - - Returns the position of the gesture's starting point relative to a given UIElement. - - The return value will be relative to this element. - The gesture's starting point relative to the given UIElement. - - - - Returns the position of a given point relative to a given UIElement. - - The return value will be relative to this element. - The point to translate. - The given point relative to the given UIElement. - - - - The point, in unrotated screen coordinates, where the gesture occurred. - - - - - The point, in unrotated screen coordinates, where the first touchpoint is now. - - - - - The first hit-testable item under the touch point. Determined by a combination of order in the tree and - Z-order. - - - - - If an event handler sets this to true, it stops event bubbling. - - - - - The event args used in the DragStarted event. - - - - - The direction of the drag gesture, as determined by the initial drag change. - - - - - The event args used by the DragDelta event. - - - - - The horizontal (X) change for this drag event. - - - - - The vertical (Y) change for this drag event. - - - - - The direction of the drag gesture, as determined by the initial drag change. - - - - - The event args used by the DragCompleted event. - - - - - The total horizontal (X) change of the drag event. - - - - - The total vertical (Y) change of the drag event. - - - - - The direction of the drag gesture, as determined by the initial drag change. - - - - - The final horizontal (X) velocity of the drag, if the drag was inertial. - - - - - The final vertical (Y) velocity of the drag, if the drag was inertial. - - - - - The event args used by the Flick event. - - - - - The horizontal (X) velocity of the flick. - - - - - The vertical (Y) velocity of the flick. - - - - - The angle of the flick. - - - - - The direction of the flick gesture, as determined by the flick velocities. - - - - - The base class for multi-touch gesture event args. Currently used only for - two-finger (pinch) operations. - - - - - Returns the position of either of the two touch points (0 or 1) relative to - the UIElement provided. - - The return value will be relative to this element. - The touchpoint to use (0 or 1). - The gesture's starting point relative to the given UIElement. - - - - The second touch point's initial position - - - - - The second touch point. The first is stored in GestureEventArgs. - - - - - The event args used by the PinchStarted event. - - - - - The distance between the two touch points. - - - - - The angle defined by the two touch points. - - - - - The event args used by the PinchDelta and PinchCompleted events. - - - - - Returns the ratio of the current distance between touchpoints / the original distance - between the touchpoints. - - - - - Returns the difference in angle between the current touch positions and the original - touch positions. - - - - - The GestureService class is the helper for getting and setting GestureListeners - on elements. - - - - - Gets a GestureListener for the new element. Will create a new one if necessary. - - The object to get the GestureListener from. - Either the previously existing GestureListener, or a new one. - - - - Gets the GestureListener on an element. If one is not set, can create a new one - so that this will never return null, depending on the state of the createIfMissing - flag. - - The object to get the GestureListener from. - When this is true, if the attached property was not set on the element, it will create one and set it on the element. - - - - - Sets the GestureListener on an element. Needed for XAML, but should not be used in code. Use - GetGestureListener instead, which will create a new instance if one is not already set, to - add your handlers to an element. - - The object to set the GestureListener on. - The GestureListener. - - - - This is used to set the value of the attached DependencyProperty internally. - - The object to set the GestureListener on. - The GestureListener. - - - - The definition of the GestureListener attached DependencyProperty. - - - - - The expansion mode of a ListPicker. - - - - - Allows all items to be visible on the page. - - - - - Requires all items to be displayed in a full screen popup. - - - - - Displays the list of items and allows single or multiple selection. - - - - - Creates a list picker page. - - - - - Called when a page becomes the active page in a frame. - - An object that contains the event data. - - - - Called when the Back key is pressed. - - Event arguments. - - - - Called when a page is no longer the active page in a frame. - - An object that contains the event data. - - - - Go through all the items that were not visible on the page and set their properties accordingly without animation. - - - - - InitializeComponent - - - - - Gets or sets the string of text to display as the header of the page. - - - - - Gets or sets the list of items to display. - - - - - Gets or sets the selection mode. - - - - - Gets or sets the selected item. - - - - - Gets or sets the list of items to select. - - - - - Gets or sets the item template - - - - - Whether the picker page is open or not. - - - - - A strongly-typed resource class, for looking up localized strings, etc. - - - - - Returns the cached ResourceManager instance used by this class. - - - - - Overrides the current thread's CurrentUICulture property for all - resource lookups using this strongly typed resource class. - - - - - Looks up a localized string similar to about a minute ago. - - - - - Looks up a localized string similar to about a month ago. - - - - - Looks up a localized string similar to about an hour ago. - - - - - Looks up a localized string similar to about a week ago. - - - - - Looks up a localized string similar to ALARM REPEATS ON. - - - - - Looks up a localized string similar to CHOOSE DATE. - - - - - Looks up a localized string similar to cancel. - - - - - Looks up a localized string similar to done. - - - - - Looks up a localized string similar to Friday. - - - - - Looks up a localized string similar to last {0}. - - - - - Looks up a localized string similar to Monday. - - - - - Looks up a localized string similar to on {0}. - - - - - Looks up a localized string similar to on {0}. - - - - - Looks up a localized string similar to over a year ago. - - - - - Looks up a localized string similar to every day. - - - - - Looks up a localized string similar to only once. - - - - - Looks up a localized string similar to weekdays. - - - - - Looks up a localized string similar to weekends. - - - - - Looks up a localized string similar to Saturday. - - - - - Looks up a localized string similar to Sunday. - - - - - Looks up a localized string similar to Thursday. - - - - - Looks up a localized string similar to CHOOSE TIME. - - - - - Looks up a localized string similar to Tuesday. - - - - - Looks up a localized string similar to Wednesday. - - - - - Looks up a localized string similar to {0} hours ago . - - - - - Looks up a localized string similar to {0} hours ago . - - - - - Looks up a localized string similar to {0} hours ago . - - - - - Looks up a localized string similar to {0} hours ago . - - - - - Looks up a localized string similar to {0} minutes ago. - - - - - Looks up a localized string similar to {0} minutes ago. - - - - - Looks up a localized string similar to {0} minutes ago. - - - - - Looks up a localized string similar to {0} minutes ago . - - - - - Looks up a localized string similar to {0} months ago. - - - - - Looks up a localized string similar to {0} months ago . - - - - - Looks up a localized string similar to {0} seconds ago. - - - - - Looks up a localized string similar to {0} seconds ago. - - - - - Looks up a localized string similar to {0} seconds ago. - - - - - Looks up a localized string similar to {0} seconds ago. - - - - - Looks up a localized string similar to {0} weeks ago. - - - - - The event args for the Link/Unlink events. - - - - - Create new LinkUnlinkEventArgs. - - The ContentPresenter. - - - - The ContentPresenter which is displaying the item. - - - - - The GroupPopupOpened event args. - - - - - The ItemsControl containing the groups. - - - - - The GroupPopupClosing event args. - - - - - The ItemsControl containing the groups. - - - - - The selected group. Will be null if the back button was pressed. - - - - - Set this to true if the application will handle the popup closing and scrolling to the group. - - - - - Partial definition of LongListSelector. Includes group view code. - - - Partial definition of LongListSelector. Includes ItemsControl subclass. - - - Represents a virtualizing list designed for grouped lists. Can also be - used with flat lists. - - - - - The templated list box name. - - - - - This constant is not actively used in the new version, however, the - value is exposed through a deprecated property. For backward- - compatibility only. - - - - - The Scrolling state name. - - - - - The NotScrolling state name. - - - - - The vertical compression top state name. - - - - - The vertical compression bottom state name. - - - - - The absense of vertical compression state name. - - - - - Closes the group popup. - - The selected group. - Should the GroupPopupClosing event be raised. - True if the event was not raised or if it was raised and e.Handled is false. - - - - Reference to the ListBox hosed in this control. - - - - - Reference to the visual state group for scrolling. - - - - - // Used to listen for changes in the ItemsSource - (_rootCollection = ItemsSource as INotifyCollectionChanged). - - - - - Used to listen for changes in the groups within ItemsSource. - - - - - The DataSource DependencyProperty. - - - - - The ListHeader DependencyProperty. - - - - - The ListHeaderTemplate DependencyProperty. - - - - - The ListFooter DependencyProperty. - - - - - The ListFooterTemplate DependencyProperty. - - - - - The GroupHeaderTemplate DependencyProperty. - - - - - The GroupFooterTemplate DependencyProperty. - - - - - The ItemTemplate DependencyProperty. - - - - - DisplayAllGroups DependencyProperty - - - - - The GroupItemTemplate DependencyProperty. - - - - - The GroupItemsPanel DependencyProperty. - - - - - The BufferSize DependencyProperty - - - - - The MaximumFlickVelocity DependencyProperty. - - - - - The ShowListHeader DependencyProperty. - - - - - The ShowListFooter DependencyProperty. - - - - - Initializes a new instance of . - - - - - Instantly jump to the specified item. - - Item to jump to. - - - - Instantly jump to the specified group. - - Group to jump to. - - - - Invokes the group view if a GroupItemTemplate has been defined. - - - - - Closes the group view unconditionally. - - Does not raise the GroupViewClosingEventArgs event. - - - - Animate the scrolling of the list to the specified item. - - Item to scroll to. - - - - Returns either containers or items for either all items with - containers or just the visible ones, as specified by the - parameters. - - When true, will return values for - only items that are in view. - When true, will return the containers - rather than the items. - Returns either containers or items for either all items - with containers or just the visible ones, as specified by the - parameters. - - - - Returns all of the items that are currently in view. - This is not the same as the items that have associated visual elements: there are usually some visuals offscreen. - This might be an empty list if scrolling is happening too quickly. - - Returns all of the items that are currently in view. - - - - Called when the ItemsSource dependency property changes. - - - - - Called whenever a template gets applied on this control. - - - - - Loads ItemsSource into the hosted list box. - - - - - Adds a list header to the given list. - - - - - Adds a list header to the listbox. - - - - - Removes the list header from the given list. - - - - - Removes the list header from the listbox. - - - - - Adds a list footer to the given list. - - - - - Adds a list footer to the listbox. - - - - - Removes the list footer from the given list. - - - - - Removes the list footer from the listbox. - - - - - Adds a group to a list of tuples. - - Group to add. - List to which the method will add the group. - - - - Adds group headers or footers after their template switch from being null - to an actual value. - - Specifies whether or not to add group headers. - Specifies whether or not to add group footers. - Used only when templates for group headers/footers switch from being null. - In this case, they must be added to the lisbox if a group is not empty or DisplayAllGroups is true. - For performance reasons, this method makes an assumption that headers/footers are not already present. - Which is the case when its called from OnDataTemplateChanged. - - - - Adds group headers after the GroupHeaderTeamplate switch from being null - to an actual value. - - - - - Adds group headers after the GroupFooterTeamplate switch from being null - to an actual value. - - - - - Removes group headers or footers after their template becomes null. - - Specifies whether or not to remove group headers. - Specifies whether or not to remove group footers. - - - - Unsubscrives from every collection in ItemsSource. - - - - - Inserts new groups in the list box. - - List of the new groups to insert. - Insertion index relative to the collection. - - - - Inserts new items in the list box. - - List of new items to insert. - Insertion index relative to the collection - Group into which the items are inserted. Can be null if IsFlatList == true - - - - Removes groups from the list box. - - List of groups to remove. - Start index relative to the root collection. - - - - Removes old items from a group or from the root collection. - - List of items to remove. - Start index relative to the group or root collection. - Group from which items are removed. Can be null if IsFlatList == true. - - - - Returns, for a group, an index relative to the templated list box from an index relative to the root collection. - - Index relative to the root collection. - Returns, for a group, an index relative to the templated list box from an index relative to the root collection. - - - - Returns the number of items in a list of groups. - - List of groups from which to retrieve the items count. - Returns the number of items in a list of groups. - - - - Returns the number of items in a group including the group header. - - Group from which to retrieve the items count. - Returns the number of items in a group including the group header. - - - - Updates the templates for a given item type in the list box. - - Item type for which to update the template. - New template that will replace the old one. - - - - Called when a data template has changed. - - - - - Called when the DisplayAllGroups dependency property changes - - - - - Called when there is a change in the selected item(s) in the listbox. - - - - - Called when there is a change in the root or a group collection. - - - - - Called when the scrolling state of the list box changes. - - - - - Called when an item gets realized. - - - - - Called when an item gets unrealized. - - - - - Gets or sets whether the list is flat instead of a group hierarchy. - - - - - Gets or sets the selected item. - - - - - Gets or sets whether the list can be (temporarily) scrolled off of the ends. - - - - - Gets whether a list header is shown. - - - - - Gets whether a list footer is shown. - - - - - Gets whether or not the user is manipulating the list, or if an inertial animation is taking place. - - - - - The DataSource property. Where all of the items come from. - - - - - The ListHeader property. Will be used as the first scrollItem in the list. - - - - - The ListHeaderTemplate provides the template for the ListHeader. - - - - - The ListFooter property. Will be used as the first scrollItem in the list. - - - - - The ListFooterTemplate provides the template for the ListFooter. - - - - - The GroupHeaderTemplate provides the template for the groups in the items view. - - - - - The GroupFooterTemplate provides the template for the groups in the items view. - - - - - The ItemTemplate provides the template for the items in the items view. - - - - - Display all groups whether or not they have items. - - - - - The GroupItemTemplate specifies the template that will be used in group view mode. - - - - - The GroupItemsPanel specifies the panel that will be used in group view mode. - - - - - The number of "screens" (as defined by the ActualHeight of the LongListSelector) above and below the visible - items of the list that will be filled with items. - - - - - The maximum velocity for flicks, in pixels per second. - - - - - Controls whether or not the ListHeader is shown. - - - - - Controls whether or not the ListFooter is shown. - - - - - Occurs when the currently selected item changes. - - - - - Occurs when this control starts scrolling. - - - - - Occurs when this control stops scrolling. - - - - - Occurs when the group Popup's IsOpen has been set to true. - - - - - Occurs when the group popup is about to close. - - - - - Occurs when an item is about to be "realized". - - - - - Occurs when an item is about to be "un-realized". - - - - - Occurs when the user has dragged the items up from the bottom as far as they can go. - - - - - Occurs when the user is no longer stretching. - - - - - Occurs when the user has dragged the items down from the top as far as they can go. - - - - - Describes different items. - - - - - Holds information about an item. - - - - - Class that implements a container for the ListPicker control. - - - - - Initializes a new instance of the ListPickerItem class. - - - - - Builds the visual tree for the control when a new template is applied. - - - - - An enumeration defining the supported ListPicker modes. - - - - - Normal mode; only the selected item is visible on the original page. - - - - - Expanded mode; all items are visible on the original page. - - - - - Full mode; all items are visible in a separate Popup. - - - - - Represents a ListBox with item-specific templates. - - - - - Creates or identifies the element used to display a specified item. - - Returns the new container. - - - - Prepares the specified element to display the specified item. - - Element used to display the specified item. - Specified item. - - - - When overridden in a derived class, undoes the effects of the - PrepareContainerForItemOverride method. - - The container element. - The item. - - - - Gets or sets the list header template. - - - - - Gets or sets the list footer template. - - - - - Gets or sets the group header template. - - - - - Gets or sets the footer template. - - - - - Occurs when an item is about to be "realized". - - - - - Occurs when an item is about to be "un-realized". - - - - - Represents an item within a - - - - - Provides an attachable property that clips a FrameworkElement - to its bounds, e.g. clip the element when it is translated outside - of the panel it is placed in. - - - - - Gets the IsEnabled dependency property from an object. - - The object to get the value from. - The property's value. - - - - Sets the IsEnabled dependency property on an object. - - The object to set the value on. - The value to set. - - - - Identifies the IsEnabled dependency property. - - - - - Attaches or detaches the SizeChanged event handler. - - The dependency object. - The event information. - - - - Clips the associated object to a rectangular geometry determined - by its actual width and height. - - The event sender. - The event information. - - - - Provides helper methods to work with ItemsControl. - - - - - Gets the parent ItemsControl. - - The type of ItemsControl. - The dependency object - - The parent ItemsControl or null if there is not. - - - - - Gets the items that are currently in the view port - of an ItemsControl with a ScrollViewer. - - The ItemsControl to search on. - - A collection of weak references to the items in the view port. - - - - - An item container for a Multiselect List. - - - - - Selection mode visual states. - - - - - Closed visual state. - - - - - Exposed visual state. - - - - - Opened visual state. - - - - - Select Box template part name. - - - - - Outter Hint Panel template part name. - - - - - Inner Hint Panel template part name. - - - - - Outter Cover template part name. - - - - - Item Info Presenter template part name. - - - - - Limit for the manipulation delta in the X-axis. - - - - - Limit for the manipulation delta in the Y-axis. - - - - - Outter Hint Panel template part. - - - - - Inner Hint Panel template part. - - - - - Outter Cover template part. - - - - - Item Info Presenter template part. - - - - - Multiselect List that owns this Multiselect Item. - - - - - Manipulation delta in the x-axis. - - - - - Manipulation delta in the y-axis. - - - - - Indicates that this Multiselect Item is a container - being reused for virtualization. - - - - - Flag that is used to prevent multiple selection changed - events from being fired when all the items in the list are - unselected. Instead, a single event is fired. - - - - - Identifies the IsSelected dependency property. - - - - - Adds or removes the item to the selected items collection - in the Multiselect List that owns it. - - The dependency object. - The event information. - - - - Identifies the State dependency property. - - - - - Identifies the HintPanelHeight dependency property. - - - - - Sets the vertical alignment of the hint panels to stretch if the - height is not manually set. If it is, the alignment is set to top. - - The dependency object. - The event information. - - - - Identifies the ContentInfo dependency property. - - - - - ContentInfoProperty changed handler. - - The dependency object. - The event information. - - - - Identifies the ContentInfoTemplate dependency property. - - - - - ContentInfoTemplate changed handler. - - The dependency object. - The event information. - - - - Gets the template parts and sets event handlers. - - - - - Initializes a new instance of the MultiselectItem class. - - - - - Updates the visual state. - - - Indicates whether visual transitions should be used. - - - - - Raises a routed event. - - Event handler. - Event arguments. - - - - Raises a Selected event when the IsSelected property - changes from false to true. - - The event information. - - - - Raises an Unselected event when the IsSelected property - changes from true to false. - - The event information. - - - - Called when the value of the ContentInfo property changes. - - - The old value of the ContentInfo property. - - - The new value of the ContentInfo property. - - - - - Called when the value of the ContentInfoTemplate property chages. - - - The old value of the ContentInfoTemplate property. - - - The new value of the ContentInfoTemplate property. - - - - - Triggers a visual transition to the Exposed visual state. - - The Hint Panel that triggers the event. - The event information. - - - - Triggers a visual transition to the Closed visual state - if the manipulation delta goes out of bounds. - - The Hint Panel that triggers the event. - The event information. - - - - Selects this MultiselectItem if the manipulation delta - is within limits and fires an OnSelectionChanged event accordingly. - Resets the deltas for both axises. - - The Hint Panel that triggers the event. - The event information. - - - - Toogles the selection of a MultiselectItem - and fires an OnSelectionChanged event accordingly. - - The cover that triggers the event. - The event information. - - - - Occurs when the multiselect item is selected. - - - - - Occurs when the multiselect item is unselected. - - - - - Gets or sets the flag that indicates if the item - is currently selected. - - - - - Gets or sets the visual state. - - - - - Gets or sets the height of the hint panel. - - - - - Gets or sets the content information. - - - - - Gets or sets the data template that defines - the content information. - - - - - Represents the visual states of a Multiselect item. - - - - - Closed visual state value. - - - - - Exposed visual state value. - - - - - Opened visual state value. - - - - - A collection of items that supports multiple selection. - - - - - Identifies the IsSelectionEnabled dependency property. - - - - - Opens or closes the selection mode accordingly. - If closing, it unselects any selected item. - Finally, it fires up an IsSelectionEnabledChanged event. - - The dependency object. - The event information. - - - - Identifies the ItemInfoTemplate dependency property. - - - - - Identifies the ItemContainerStyle dependency property. - - - - - Initializes a new instance of the MultiselectList class. - - - - - Toogles the selection mode based on the count of selected items, - and fires a SelectionChanged event. - - - A collection containing the items that were unselected. - - - A collection containing the items that were selected. - - - - - Triggers the visual state changes and visual transitions - to open the list into selection mode. - - - - - Triggers the visual state changes and visual transitions - to close the list out of selection mode. - - - - - Overrides the DependencyObject used by this ItemsControl - to be a MultiselectItem. - - - A new instance of a MultiselectItem. - - - - - Acknowledges an item as being of the same type as its container - if it is a MultiselectItem. - - An item owned by the ItemsControl. - True if the item is a MultiselectItem. - - - - Resets new or reused item containers appropiately. - - - - - - - Unselects any selected item which was removed from the source. - - The event information. - - - - Collection of items that are currently selected. - - - - - Occurs when there is a change to the SelectedItems collection. - - - - - Occurs when the selection mode is opened or closed. - - - - - Gets or sets the flag that indicates if the list - is in selection mode or not. - - - - - Gets or sets the data template that is to be - used on the item information field of the MultiselectItems. - - - - - Gets or sets the item container style. - - - - - An infinitely scrolling, UI- and data-virtualizing selection control. - - - - - The DataSource DependencyProperty - - - - - The ItemTemplate DependencyProperty - - - - - Creates a new LoopingSelector. - - - - - The IsExpanded DependencyProperty. - - - - - When overridden in a derived class, is invoked whenever application code or internal processes (such as a rebuilding layout pass) call . - In simplest terms, this means the method is called just before a UI element displays in an application. - For more information, see Remarks. - - - - - Balances the items. - - - - - The data source that the this control is the view for. - - - - - The ItemTemplate property - - - - - The size of the items, excluding the ItemMargin. - - - - - The margin around the items, to be a part of the touchable area. - - - - - The IsExpanded property controls the expanded state of this control. - - - - - The IsExpandedChanged event will be raised whenever the IsExpanded state changes. - - - - - The items that will be contained in the LoopingSelector. - - - - - Create a new LoopingSelectorItem. - - - - - Put this item into a new state. - - The new state. - Flag indicating that transitions should be used when going to the new state. - - - - Returns the current state. - - The current state. - - - - Override of OnApplyTemplate - - - - - The Click event. This is needed because there is no gesture for touch-down, pause - longer than the Hold time, and touch-up. Tap will not be raise, and Hold is not - adequate. - - - - - The states that this can be in. - - - - - Not visible - - - - - Visible - - - - - Selected - - - - - Represents a switch that can be toggled between two states. - - - - - Common visual states. - - - - - Normal visual state. - - - - - Disabled visual state. - - - - - Check visual states. - - - - - Checked visual state. - - - - - Dragging visual state. - - - - - Unchecked visual state. - - - - - Switch root template part name. - - - - - Switch background template part name. - - - - - Switch track template part name. - - - - - Switch thumb template part name. - - - - - The minimum translation. - - - - - Identifies the SwitchForeground dependency property. - - - - - The background TranslateTransform. - - - - - The thumb TranslateTransform. - - - - - The root template part. - - - - - The track template part. - - - - - The thumb template part. - - - - - The maximum translation. - - - - - The drag translation. - - - - - Whether the translation ever changed during the drag. - - - - - Whether the dragging state is current. - - - - - Initializes a new instance of the ToggleSwitch class. - - - - - Change the visual state. - - Indicates whether to use animation transitions. - - - - Called by the OnClick method to implement toggle behavior. - - - - - Gets all the template parts and initializes the corresponding state. - - - - - Handles started drags on the root. - - The event sender. - The event information. - - - - Handles drags on the root. - - The event sender. - The event information. - - - - Handles changed sizes for the track and the thumb. - Sets the clip of the track and computes the indeterminate and checked translations. - - The event sender. - The event information. - - - - Gets or sets the switch foreground. - - - - - Gets and sets the thumb and background translation. - - The translation. - - - - A progress bar implementation for a smoother appearance of the - indeterminate states, with the added behavior that after the behavior - is no longer needed, it smoothly fades out the dots for a less jarring - experience. No exposed Value property. - - - Important - this control is not intended for regular progress - bar use, but only indeterminate. As a result, only an IsIndeterminate - set of visual states are defined in the nested progress bar template. - Use the standard ProgressBar control in the platform for determinate - scenarios as there is no performance benefit in determinate mode. - - - - - The visual state group reference used to wait until the hidden state - has fully transitioned to flip the underlying progress bar's - indeterminate value to False. - - - - - Gets or sets a value indicating the cached IsIndeterminate. - - - - - Identifies the ActualIsIndeterminate dependency property. - - - - - Identifies the IsIndeterminate dependency property. - - - - - IsIndeterminateProperty property changed handler. - - PerformanceProgressBar that changed its IsIndeterminate. - Event arguments. - - - - Initializes a new instance of the PerformanceProgressBar type. - - - - - Applies the template and extracts both a visual state and a template - part. - - - - - Gets or sets the value indicating whether the actual indeterminate - property should be reflecting a particular value. - - - - - Gets or sets a value indicating whether the control is in the - indeterminate state. - - - - - A very specialized primitive control that works around a specific visual - state manager issue. The platform does not support relative sized - translation values, and this special control walks through visual state - animation storyboards looking for magic numbers to use as percentages. - This control is not supported, unofficial, and is a hack in many ways. - It is used to enable a Windows Phone native platform-style progress bar - experience in indeterminate mode that remains performant. - - - - - A simple Epsilon-style value used for trying to determine the magic - state, if any, of a double. - - - - - The last known width of the control. - - - - - The last known height of the control. - - - - - A set of custom animation adapters used to update the animation - storyboards when the size of the control changes. - - - - - Initializes a new instance of the RelativeAnimatingContentControl - type. - - - - - Handles the size changed event. - - The source object. - The event arguments. - - - - Walks through the known storyboards in the control's template that - may contain magic double animation values, storing them for future - use and updates. - - - - - Walks through all special animations, updating based on the current - size of the control. - - - - - Processes a double animation with keyframes, looking for known - special values to store with an adapter. - - The double animation using key frames instance. - - - - Processes a double animation looking for special values. - - The double animation instance. - - - - A selection of dimensions of interest for updating an animation. - - - - - The width (horizontal) dimension. - - - - - The height (vertical) dimension. - - - - - A simple class designed to store information about a specific - animation instance and its properties. Able to update the values at - runtime. - - - - - Initializes a new instance of the AnimationValueAdapter type. - - The dimension of interest for updates. - - - - Updates the original instance based on new dimension information - from the control. Takes both and allows the subclass to make the - decision on which ratio, values, and dimension to use. - - The width of the control. - The height of the control. - - - - Gets the dimension of interest for the control. - - - - - Gets the value of the underlying property of interest. - - Returns the value of the property. - - - - Sets the value for the underlying property of interest. - - The new value for the property. - - - - The ratio based on the original magic value, used for computing - the updated animation property of interest when the size of the - control changes. - - - - - Initializes a new instance of the GeneralAnimationValueAdapter - type. - - The dimension of interest. - The animation type instance. - - - - Approximately removes the magic number state from a value. - - The initial number. - Returns a double with an adjustment for the magic - portion of the number. - - - - Retrieves the dimension, if any, from the number. If the number - is not magic, null is returned instead. - - The double value. - Returs a double animation dimension, if the number was - partially magic; otherwise, returns null. - - - - Updates the animation instance based on the dimensions of the - control. - - The width of the control. - The height of the control. - - - - Updates the value of the property. - - The size of interest to use with a ratio - computation. - - - - Stores the animation instance. - - - - - Gets the initial value (minus the magic number portion) that the - designer stored within the visual state animation property. - - - - - Adapter for DoubleAnimation's To property. - - - - - Gets the value of the underlying property of interest. - - Returns the value of the property. - - - - Sets the value for the underlying property of interest. - - The new value for the property. - - - - Initializes a new instance of the DoubleAnimationToAdapter type. - - The dimension of interest. - The instance of the animation type. - - - - Adapter for DoubleAnimation's From property. - - - - - Gets the value of the underlying property of interest. - - Returns the value of the property. - - - - Sets the value for the underlying property of interest. - - The new value for the property. - - - - Initializes a new instance of the DoubleAnimationFromAdapter - type. - - The dimension of interest. - The instance of the animation type. - - - - Adapter for double key frames. - - - - - Gets the value of the underlying property of interest. - - Returns the value of the property. - - - - Sets the value for the underlying property of interest. - - The new value for the property. - - - - Initializes a new instance of the DoubleAnimationFrameAdapter - type. - - The dimension of interest. - The instance of the animation type. - - - - This code provides attached properties for adding a 'tilt' effect to all - controls within a container. - - - - - Maximum amount of tilt, in radians. - - - - - Maximum amount of depression, in pixels - - - - - Cache of previous cache modes. Not using weak references for now. - - - - - Delay between releasing an element and the tilt release animation - playing. - - - - - Duration of tilt release animation. - - - - - The control that is currently being tilted. - - - - - The single instance of a storyboard used for all tilts. - - - - - The single instance of an X rotation used for all tilts. - - - - - The single instance of a Y rotation used for all tilts. - - - - - The single instance of a Z depression used for all tilts. - - - - - The center of the tilt element. - - - - - Whether the animation just completed was for a 'pause' or not. - - - - - This is not a constructable class, but it cannot be static because - it derives from DependencyObject. - - - - - Initialize the static properties - - - - - Whether the tilt effect is enabled on a container (and all its - children). - - - - - Gets the IsTiltEnabled dependency property from an object. - - The object to get the property from. - The property's value. - - - - Sets the IsTiltEnabled dependency property on an object. - - The object to set the property on. - The value to set. - - - - Suppresses the tilt effect on a single control that would otherwise - be tilted. - - - - - Gets the SuppressTilt dependency property from an object. - - The object to get the property from. - The property's value. - - - - Sets the SuppressTilt dependency property from an object. - - The object to get the property from. - The property's value. - - - - Property change handler for the IsTiltEnabled dependency property. - - The element that the property is atteched to. - Event arguments. - - Adds or removes event handlers from the element that has been - (un)registered for tilting. - - - - - Event handler for ManipulationStarted. - - sender of the event - this will be the tilt - container (eg, entire page). - Event arguments. - - - - Event handler for ManipulationDelta - - sender of the event - this will be the tilting - object (eg a button). - Event arguments. - - - - Event handler for ManipulationCompleted. - - sender of the event - this will be the tilting - object (eg a button). - Event arguments. - - - - Checks if the manipulation should cause a tilt, and if so starts the - tilt effect. - - The source of the manipulation (the tilt - container, eg entire page). - The args from the ManipulationStarted event. - - - - Computes the delta between the centre of an element and its - container. - - The element to compare. - The element to compare against. - A point that represents the delta between the two centers. - - - - Begins the tilt effect by preparing the control and doing the - initial animation. - - The element to tilt. - The touch point, in element coordinates. - The center point of the element in element - coordinates. - The delta between the - 's center and the container's center. - - - - Prepares a control to be tilted by setting up a plane projection and - some event handlers. - - The control that is to be tilted. - Delta between the element's center and the - tilt container's. - true if successful; false otherwise. - - This method is conservative; it will fail any attempt to tilt a - control that already has a projection on it. - - - - - Removes modifications made by PrepareControlForTilt. - - THe control to be un-prepared. - - This method is basic; it does not do anything to detect if the - control being un-prepared was previously prepared. - - - - - Creates the tilt return storyboard (if not already created) and - targets it to the projection. - - The framework element to prepare for - projection. - - - - Continues a tilt effect that is currently applied to an element, - presumably because the user moved their finger. - - The element being tilted. - The manipulation event args. - - - - Ends the tilt effect by playing the animation. - - The element being tilted. - - - - Handler for the storyboard complete event. - - sender of the event. - event args. - - - - Resets the tilt effect on the control, making it appear 'normal' - again. - - The element to reset the tilt on. - - This method doesn't turn off the tilt effect or cancel any current - manipulation; it just temporarily cancels the effect. - - - - - Stops the tilt effect and release resources applied to the currently - tilted control. - - - - - Pauses the tilt effect so that the control returns to the 'at rest' - position, but doesn't stop the tilt effect (handlers are still - attached). - - - - - Resets the storyboard to not running. - - - - - Applies the tilt effect to the control. - - the control to tilt. - The touch point, in the container's - coordinates. - The center point of the container. - - - - Whether to use a slightly more accurate (but slightly slower) tilt - animation easing function. - - - - - Default list of items that are tiltable. - - - - - Provides an easing function for the tilt return. - - - - - Computes the easing function. - - The time. - The eased value. - - - - Couple of simple helpers for walking the visual tree. - - - - - Gets the ancestors of the element, up to the root. - - The element to start from. - An enumerator of the ancestors. - - - - Gets the visual parent of the element. - - The element to check. - The visual parent. - - - - Converts bool? values to "Off" and "On" strings. - - - - - Converts a value. - - The value produced by the binding source. - The type of the binding target property. - The converter parameter to use. - The culture to use in the converter. - A converted value. If the method returns null, the valid null value is used. - - - - Converts a value. - - The value produced by the binding source. - The type of the binding target property. - The converter parameter to use. - The culture to use in the converter. - A converted value. If the method returns null, the valid null value is used. - - - - Represents a switch that can be toggled between two states. - - - - - Common visual states. - - - - - Normal visual state. - - - - - Disabled visual state. - - - - - The ToggleButton that drives this. - - - - - Identifies the Header DependencyProperty. - - - - - Identifies the HeaderTemplate DependencyProperty. - - - - - Identifies the SwitchForeground DependencyProperty. - - - - - Identifies the IsChecked DependencyProperty. - - - - - Invoked when the IsChecked DependencyProperty is changed. - - The event sender. - The event information. - - - - The - - template part. - - - - - Whether the content was set. - - - - - Initializes a new instance of the ToggleSwitch class. - - - - - Makes the content an "Off" or "On" string to match the state. - - - - - Change the visual state. - - Indicates whether to use animation transitions. - - - - Makes the content an "Off" or "On" string to match the state if the content is set to null in the design tool. - - The old content. - The new content. - - - - Gets all the template parts and initializes the corresponding state. - - - - - Mirrors the - - event. - - The event sender. - The event information. - - - - Mirrors the - - event. - - The event sender. - The event information. - - - - Mirrors the - - event. - - The event sender. - The event information. - - - - Mirrors the - - event. - - The event sender. - The event information. - - - - Returns a - - that represents the current - - . - - - - - - Gets or sets the header. - - - - - Gets or sets the template used to display the control's header. - - - - - Gets or sets the switch foreground. - - - - - Gets or sets whether the ToggleSwitch is checked. - - - - - Occurs when the - - is checked. - - - - - Occurs when the - - is unchecked. - - - - - Occurs when the - - is indeterminate. - - - - - Occurs when the - - is clicked. - - - - - A strongly-typed resource class, for looking up localized strings, etc. - - - - - Returns the cached ResourceManager instance used by this class. - - - - - Overrides the current thread's CurrentUICulture property for all - resource lookups using this strongly typed resource class. - - - - - Looks up a localized string similar to Invalid FilterMode enumeration value. The value must be one of the defined AutoCompleteFilterMode values to be accepted.. - - - - - Looks up a localized string similar to Invalid maximum drop down height value '{0}'. The value must be greater than or equal to zero.. - - - - - Looks up a localized string similar to Invalid MinimumPopulateDelay value '{0}'. The value must be greater than or equal to zero.. - - - - - Looks up a localized string similar to Cannot set read-only property SearchText.. - - - - - Looks up a localized string similar to Invalid type. Argument must be of the type System.DateTime.. - - - - - Looks up a localized string similar to Invalid operation. The IsExpanded property cannot be modified when IsNonExpandable is set to true.. - - - - - Looks up a localized string similar to Invalid argument. The number of months should be greater than 1 and less than 12.. - - - - - Looks up a localized string similar to Invalid argument. The number of time units should be greater than 1.. - - - - - Looks up a localized string similar to SelectedIndex must always be set to a valid value.. - - - - - Looks up a localized string similar to SelectedItem must always be set to a valid value.. - - - - - Looks up a localized string similar to Invalid argument. Future dates and times are not supported.. - - - - - Looks up a localized string similar to Off. - - - - - Looks up a localized string similar to On. - - - - - Looks up a localized string similar to The RoutedPropertyChangingEvent cannot be canceled!. - - - - - Looks up a localized string similar to '{0}' is unable to convert '{1}' to '{2}'.. - - - - - Looks up a localized string similar to '{0}' cannot convert from '{1}'.. - - - - - Looks up a localized string similar to The type was unexpected.. - - - - - Looks up a localized string similar to Invalid length value '{0}'.. - - - - - Looks up a localized string similar to Invalid Orientation value '{0}'.. - - - - - Has navigation-in - s - for the designer experiences. - - - - - Has - s - for the designer experiences. - - - - - The - - for the backward - . - - - - - The - - for the forward - . - - - - - Triggers . - - - - - Triggers . - - - - - The navigation transition will begin. - - - - - The navigation transition has ended. - - - - - Gets or sets the backward - . - - - - - Gets or sets the forward - . - - - - - Has navigation-out - s - for the designer experiences. - - - - - Enables navigation transitions for - s. - - - - - The new - - template part name. - - - - - The old - - template part name. - - - - - A single shared instance for setting BitmapCache on a visual. - - - - - The first . - - - - - The second . - - - - - The new . - - - - - The old . - - - - - Indicates whether a navigation is forward. - - - - - Determines whether to set the new content to the first or second - . - - - - - A value indicating whether the old transition has completed and the - new transition can begin. - - - - - A value indicating whether the new content has been loaded and the - new transition can begin. - - - - - A value indicating whether the exit transition is currently being performed. - - - - - The transition to use to move in new content once the old transition - is complete and ready for movement. - - - - - The stored NavigationIn transition instance to use once the old - transition is complete and ready for movement. - - - - - The transition to use to complete the old transition. - - - - - The stored NavigationOut transition instance. - - - - - Initialzies a new instance of the TransitionFrame class. - - - - - Flips the logical content presenters to prepare for the next visual - transition. - - - - - Handles the Navigating event of the frame, the immediate way to - begin a transition out before the new page has loaded or had its - layout pass. - - The source object. - The event arguments. - - - - Handles the completion of the exit transition, automatically - continuing to bring in the new element's transition as well if it is - ready. - - The source object. - The event arguments. - - - - When overridden in a derived class, is invoked whenever application - code or internal processes (such as a rebuilding layout pass) call - . - In simplest terms, this means the method is called just before a UI - element displays in an application. - - - - - Called when the value of the - - property changes. - - The old . - The new . - - - - Handles the BackKeyPress to stop the animation and go back. - - The source object. - The event arguments. - - - - Transitions the new . - - The - for the new . - The - for the new . - - - - This checks to make sure that, if the transition not be in the clock - state of Stopped, that is will be stopped. - - The transition instance. - - - - Performs a transition when given the appropriate components, - includes calling the appropriate start event and ensuring opacity - on the content presenter. - - The navigation transition. - The content presenter. - The transition instance. - - - - Completes a transition operation by stopping it, restoring - interactivity, and then firing the OnEndTransition event. - - The navigation transition. - The content presenter. - The transition instance. - - - - Updates the content presenter for off-thread compositing for the - transition animation. Also disables interactivity on it to prevent - accidental touches. - - The content presenter instance. - A value indicating whether to apply - a bitmap cache. - - - - Restores the interactivity for the presenter post-animation, also - removes the BitmapCache value. - - The content presenter instance. - - - - Controls the behavior of transitions. - - - - - Gets the - - of the - . - - - - - - Gets the current time of the - . - - The current time. - - - - Pauses the animation clock associated with the - . - - - - - Resumes the animation clock, or run-time state, associated with the - . - - - - - Moves the - - to the specified animation position. The - - performs the requested seek when the next clock tick occurs. - - The specified animation position. - - - - Moves the - - to the specified animation position immediately (synchronously). - - The specified animation position - - - - Advances the current time of the - 's - clock to the end of its active period. - - - - - Initiates the set of animations associated with the - . - - - - - Stops the . - - - - - Occurs when the - - has completed playing. - - - - - Provides roll s. - - - - - Transition factory for a particular transition family. - - - - - Creates a new - - for a - . - Existing - - or - - values may be saved and cleared before the start of the transition, then restored it after it is stopped or completed. - - The . - The . - - - - Creates a new - - for a - . - - The . - The . - - - - Mirrors the - - interface to control an - - for a - . - Saves and restores the - - and - - values for the - . - - - - - The original - - of the - . - - - - - The . - - - - - The original - - of the - . - - - - - The - - for the - . - - - - - Constructs a - - for a - - and a - . - - The . - The . - - - - Mirrors . - - - - - Restores the settings for the transition. - - - - - - - Mirrors . - - - - - Mirrors . - - - - - Mirrors . - - - - - Restores the saved - - and - - values for the - . - - - - - Mirrors . - - - - - Saves the - - and - - values for the - . - - - - - Mirrors . - - The time offset. - - - - Mirrors . - - The time offset. - - - - Mirrors . - - - - - Mirrors . - - - - - Mirrors . - - - - - Provides attached properties for navigation - s. - - - - - The - - for the in s. - - - - - The - - for the in s. - - - - - Gets the - s - of - - for a - . - - The . - The - - - - Gets the - s - of - - for a - . - - The . - The - - - - Sets a - - to - - for a - . - - The . - The . - The - - - - Sets a - s - to - - for a - . - - The . - The . - The - - - - The rotate transition modes. - - - - - The rotate in 90 degrees clockwise transition mode. - - - - - The rotate in 90 degrees counterclockwise transition mode. - - - - - The rotate in 180 degrees clockwise transition mode. - - - - - The rotate in 180 degrees counterclockwise transition mode. - - - - - The rotate out 90 degrees clockwise transition mode. - - - - - The rotate out 90 degrees counterclockwise transition mode. - - - - - The rotate out 180 degrees clockwise transition mode. - - - - - The rotate out 180 degrees counterclockwise transition mode. - - - - - Provides rotate s. - - - - - The - - for the - . - - - - - Creates a new - - for a - . - Saves and clears the existing - - value before the start of the transition, then restores it after it is stopped or completed. - - The . - The . - - - - The . - - - - - The slide transition modes. - - - - - The slide up, fade in transition mode. - - - - - The slide up, fade out transition mode. - - - - - The slide down, fade in transition mode. - - - - - The slide down, fade out transition mode. - - - - - The slide left, fade in transition mode. - - - - - The slide left, fade out transition mode. - - - - - The slide right, fade in transition mode. - - - - - The slide right, fade out transition mode. - - - - - Provides swivel s. - - - - - The - - for the - . - - - - - Creates a new - - for a - . - Saves and clears the existing - - value before the start of the transition, then restores it after it is stopped or completed. - - The . - The . - - - - The . - - - - - The swivel transition modes. - - - - - The swivel full screen in transition mode. - - - - - The swivel full screen out transition mode. - - - - - The swivel forward in transition mode. - - - - - The swivel forward out transition mode. - - - - - The swivel backward in transition mode. - - - - - The swivel backward out transition mode. - - - - - Provides slide s. - - - - - The - - for the - . - - - - - Creates a new - - for a - . - Saves and clears the existing - - value before the start of the transition, then restores it after it is stopped or completed. - - The . - The . - - - - The . - - - - - Provides turnstile s. - - - - - The - - for the - . - - - - - Creates a new - - for a - . - Saves and clears the existing - - value before the start of the transition, then restores it after it is stopped or completed. - - The . - The . - - - - The . - - - - - Provides - s - for transition families and modes. - - - - - The cached XAML read from the Storyboard resources. - - - - - Creates a - - for a transition family, transition mode, and - . - - The type of the transition mode. - The . - The transition family. - The transition mode. - The . - - - - Creates a - - for a particular transition family and transition mode. - - The transition family and transition mode. - The . - - - - Creates an - - for a - - for the roll transition. - - The . - The . - - - - Creates an - - for a - - for the rotate transition family. - - The . - The transition mode. - The . - - - - Creates an - - for a - - for the slide transition family. - - The . - The transition mode. - The . - - - - Creates an - - for a - - for the swivel transition family. - - The . - The transition mode. - The . - - - - Creates an - - for a - - for the turnstile transition family. - - The . - The transition mode. - The . - - - - The turnstile transition modes. - - - - - The turnstile forward in transition mode. - - - - - The turnstile forward out transition mode. - - - - - The turnstile backward in transition mode. - - - - - The turnstile backward out transition mode. - - - - - The OrientedSize structure is used to abstract the growth direction from - the layout algorithms of WrapPanel. When the growth direction is - oriented horizontally (ex: the next element is arranged on the side of - the previous element), then the Width grows directly with the placement - of elements and Height grows indirectly with the size of the largest - element in the row. When the orientation is reversed, so is the - directional growth with respect to Width and Height. - - - - - The orientation of the structure. - - - - - The size dimension that grows directly with layout placement. - - - - - The size dimension that grows indirectly with the maximum value of - the layout row or column. - - - - - Initializes a new OrientedSize structure. - - Orientation of the structure. - - - - Initializes a new OrientedSize structure. - - Orientation of the structure. - Un-oriented width of the structure. - Un-oriented height of the structure. - - - - Gets the orientation of the structure. - - - - - Gets or sets the size dimension that grows directly with layout - placement. - - - - - Gets or sets the size dimension that grows indirectly with the - maximum value of the layout row or column. - - - - - Gets or sets the width of the size. - - - - - Gets or sets the height of the size. - - - - - Positions child elements sequentially from left to right or top to - bottom. When elements extend beyond the panel edge, elements are - positioned in the next row or column. - - Stable - - - - A value indicating whether a dependency property change handler - should ignore the next change notification. This is used to reset - the value of properties without performing any of the actions in - their change handlers. - - - - - Identifies the - - dependency property. - - - The identifier for the - - dependency property - - - - - Identifies the - - dependency property. - - - The identifier for the - - dependency property. - - - - - Identifies the - - dependency property. - - - The identifier for the - - dependency property. - - - - - OrientationProperty property changed handler. - - WrapPanel that changed its Orientation. - Event arguments. - - - - Initializes a new instance of the - class. - - - - - Property changed handler for ItemHeight and ItemWidth. - - - WrapPanel that changed its ItemHeight or ItemWidth. - - Event arguments. - - - - Measures the child elements of a - in anticipation - of arranging them during the - - pass. - - - The size available to child elements of the wrap panel. - - - The size required by the - and its - elements. - - - - - Arranges and sizes the - control and its - child elements. - - - The area within the parent that the - should use - arrange itself and its children. - - - The actual size used by the - . - - - - - Arrange a sequence of elements in a single line. - - - Index of the first element in the sequence to arrange. - - - Index of the last element in the sequence to arrange. - - - Optional fixed growth in the primary direction. - - - Offset of the line in the indirect direction. - - - Shared indirect growth of the elements on this line. - - - - - Gets or sets the height of the layout area for each item that is - contained in a . - - - The height applied to the layout area of each item that is contained - within a . The - default value is . - - - - - Gets or sets the width of the layout area for each item that is - contained in a . - - - The width that applies to the layout area of each item that is - contained in a . - The default value is . - - - - - Gets or sets the direction in which child elements are arranged. - - - One of the - values. The default is - . - - - - - The lockable Pivot extends the base Pivot control with a property that - disables navigation between Pivot items. - - - - - Headers list element template part. - - - - - Content element template part. - - - - - The item container style property name. - - - - - Initializes a new instance of the LockablePivot type. - - - - - Invoked when the Items property changes. - - Information about the change. - - - - Sets or Gets the navigation lock mode. - - - - diff --git a/Libraries/WP-Toolkit/2011-08/SilverlightForWindowsPhoneToolkit.chm b/Libraries/WP-Toolkit/2011-08/SilverlightForWindowsPhoneToolkit.chm deleted file mode 100644 index 87e8d4d..0000000 Binary files a/Libraries/WP-Toolkit/2011-08/SilverlightForWindowsPhoneToolkit.chm and /dev/null differ diff --git a/ProjectHome.md b/ProjectHome.md new file mode 100644 index 0000000..d9e1c21 --- /dev/null +++ b/ProjectHome.md @@ -0,0 +1,14 @@ +This is the home for the RIFT Authenticator for Windows and the RIFT Authenticator for Windows Phone. It has the same features as the RIFT Authenticator for Android 1.0.5. + +The latest features include: + + * Localization (german) + * Windows Installer (german and english) (Windows only) + * Support for multiple accounts + * Different storage backends (Windows only) + * XML files (Windows) + * Registry (Windows) + * Isolated storage (Windows and Windows Phone) + * Customizable secret key encryption (Source code feature for your own authenticator) + +You can get the RIFT Authenticator for Windows Phone from the [Windows Phone Market Place](http://windowsphone.com/s?appid=d990b9f8-7d62-41e5-81d5-af22dae11e16). \ No newline at end of file diff --git a/RiftAuthenticator.CommandLine/App.config b/RiftAuthenticator.CommandLine/App.config deleted file mode 100644 index aa21774..0000000 --- a/RiftAuthenticator.CommandLine/App.config +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/RiftAuthenticator.CommandLine/CommandArgumentException.cs b/RiftAuthenticator.CommandLine/CommandArgumentException.cs deleted file mode 100644 index 736e6e7..0000000 --- a/RiftAuthenticator.CommandLine/CommandArgumentException.cs +++ /dev/null @@ -1,35 +0,0 @@ -/** - * This file is part of RIFT™ Authenticator for Windows. - * - * RIFT™ Authenticator for Windows is free software: you can redistribute - * it and/or modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * RIFT™ Authenticator for Windows is distributed in the hope that it will - * be useful, but WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with RIFT™ Authenticator for Windows. If not, see - * . - */ - -using System; -using System.Collections.Generic; -using System.Text; - -namespace RiftAuthenticator.CommandLine -{ - class CommandArgumentException : ApplicationException - { - public ICommand Command { get; private set; } - - public CommandArgumentException(ICommand command, string message) - : base(message) - { - Command = command; - } - } -} diff --git a/RiftAuthenticator.CommandLine/Commands/DeleteAccount.cs b/RiftAuthenticator.CommandLine/Commands/DeleteAccount.cs deleted file mode 100644 index 56bbd01..0000000 --- a/RiftAuthenticator.CommandLine/Commands/DeleteAccount.cs +++ /dev/null @@ -1,68 +0,0 @@ -/** - * This file is part of RIFT™ Authenticator for Windows. - * - * RIFT™ Authenticator for Windows is free software: you can redistribute - * it and/or modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * RIFT™ Authenticator for Windows is distributed in the hope that it will - * be useful, but WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with RIFT™ Authenticator for Windows. If not, see - * . - */ - -using System; -using System.Collections.Generic; -using System.Text; - -namespace RiftAuthenticator.CommandLine.Commands -{ - class DeleteAccount : ICommand - { - private static string[] commands = new string[] { - "delete-account", - "d", - }; - private NDesk.Options.OptionSet commandOptionSet; - - public DeleteAccount() - { - commandOptionSet = new NDesk.Options.OptionSet - { - }; - } - - public string[] Commands - { - get { return commands; } - } - - public string Description - { - get { return Resources.Strings.opt_delete_account_description; } - } - - public NDesk.Options.OptionSet OptionSet - { - get - { - return commandOptionSet; - } - } - - public void Execute(GlobalOptions globalOptions, string[] args) - { - var remainingArgs = OptionSet.Parse(args); - if (remainingArgs.Count != 0) - throw new CommandArgumentException(this, string.Format(Resources.Strings.app_unknown_args, string.Join(" ", remainingArgs.ToArray()))); - globalOptions.AccountManager.Remove(globalOptions.Account); - globalOptions.Account = null; - globalOptions.AccountManager.SaveAccounts(); - } - } -} diff --git a/RiftAuthenticator.CommandLine/Commands/Help.cs b/RiftAuthenticator.CommandLine/Commands/Help.cs deleted file mode 100644 index 091c7a7..0000000 --- a/RiftAuthenticator.CommandLine/Commands/Help.cs +++ /dev/null @@ -1,80 +0,0 @@ -/** - * This file is part of RIFT™ Authenticator for Windows. - * - * RIFT™ Authenticator for Windows is free software: you can redistribute - * it and/or modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * RIFT™ Authenticator for Windows is distributed in the hope that it will - * be useful, but WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with RIFT™ Authenticator for Windows. If not, see - * . - */ - -using System; -using System.Collections.Generic; -using System.Text; - -namespace RiftAuthenticator.CommandLine.Commands -{ - class Help : ICommand - { - private static string[] commands = new string[] { - "help", - "h", - }; - private static NDesk.Options.OptionSet commandOptionSet = new NDesk.Options.OptionSet - { - }; - - public string[] Commands - { - get { return commands; } - } - - public string Description - { - get { return Resources.Strings.opt_help_description; } - } - - public NDesk.Options.OptionSet OptionSet - { - get - { - return commandOptionSet; - } - } - - public void Execute(GlobalOptions globalOptions, string[] args) - { - var remainingArgs = OptionSet.Parse(args); - if (remainingArgs.Count != 1) - throw new CommandArgumentException(this, string.Format(Resources.Strings.app_unknown_args, string.Join(" ", remainingArgs.ToArray()))); - - var cmdName = remainingArgs[0]; - ICommand cmd = null; - foreach (var supportedCommand in Program.SupportedCommands) - { - for (int i = 0; i != supportedCommand.Commands.Length; ++i) - { - if (supportedCommand.Commands[i] == cmdName) - { - cmd = supportedCommand; - break; - } - } - } - if (cmd == null) - throw new CommandArgumentException(this, string.Format(Resources.Strings.app_invalid_command, cmdName)); - Program.ShowMainHelp(HelpMessageParts.GlobalOptions); - Console.WriteLine(); - Console.WriteLine(Resources.Strings.opt_help_cmd_options, cmd.Commands[0], cmd.Description); - cmd.OptionSet.WriteOptionDescriptions(Console.Out); - } - } -} diff --git a/RiftAuthenticator.CommandLine/Commands/Info.cs b/RiftAuthenticator.CommandLine/Commands/Info.cs deleted file mode 100644 index 50c8b3a..0000000 --- a/RiftAuthenticator.CommandLine/Commands/Info.cs +++ /dev/null @@ -1,65 +0,0 @@ -/** - * This file is part of RIFT™ Authenticator for Windows. - * - * RIFT™ Authenticator for Windows is free software: you can redistribute - * it and/or modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * RIFT™ Authenticator for Windows is distributed in the hope that it will - * be useful, but WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with RIFT™ Authenticator for Windows. If not, see - * . - */ - -using System; -using System.Collections.Generic; -using System.Text; - -namespace RiftAuthenticator.CommandLine.Commands -{ - class Info : ICommand - { - private static string[] commands = new string[] { - "info", - }; - private NDesk.Options.OptionSet commandOptionSet; - - public Info() - { - commandOptionSet = new NDesk.Options.OptionSet - { - }; - } - - public string[] Commands - { - get { return commands; } - } - - public string Description - { - get { return Resources.Strings.opt_info_description; } - } - - public NDesk.Options.OptionSet OptionSet - { - get - { - return commandOptionSet; - } - } - - public void Execute(GlobalOptions globalOptions, string[] args) - { - var remainingArgs = OptionSet.Parse(args); - if (remainingArgs.Count != 0) - throw new CommandArgumentException(this, string.Format(Resources.Strings.app_unknown_args, string.Join(" ", remainingArgs.ToArray()))); - Program.ShowConfiguration(globalOptions.Account); - } - } -} diff --git a/RiftAuthenticator.CommandLine/Commands/Init.cs b/RiftAuthenticator.CommandLine/Commands/Init.cs deleted file mode 100644 index 4914129..0000000 --- a/RiftAuthenticator.CommandLine/Commands/Init.cs +++ /dev/null @@ -1,80 +0,0 @@ -/** - * This file is part of RIFT™ Authenticator for Windows. - * - * RIFT™ Authenticator for Windows is free software: you can redistribute - * it and/or modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * RIFT™ Authenticator for Windows is distributed in the hope that it will - * be useful, but WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with RIFT™ Authenticator for Windows. If not, see - * . - */ - -using System; -using System.Collections.Generic; -using System.Text; - -namespace RiftAuthenticator.CommandLine.Commands -{ - class Init : ICommand - { - private static string[] commands = new string[] { - "init", - "i", - }; - private NDesk.Options.OptionSet commandOptionSet; - - private bool forceOverwriteConfig = false; - private string deviceId = Library.TrionServer.GetOrCreateRandomDeviceId(); - - public Init() - { - commandOptionSet = new NDesk.Options.OptionSet - { - { "f|force", Resources.Strings.opt_init_opt_force, x => forceOverwriteConfig = x != null }, - { "d|device-id=", Resources.Strings.opt_init_opt_device_id, x => deviceId = x }, - }; - } - - public string[] Commands - { - get { return commands; } - } - - public string Description - { - get { return Resources.Strings.opt_init_description; } - } - - public NDesk.Options.OptionSet OptionSet - { - get - { - return commandOptionSet; - } - } - - public void Execute(GlobalOptions globalOptions, string[] args) - { - var remainingArgs = OptionSet.Parse(args); - if (remainingArgs.Count != 0) - throw new CommandArgumentException(this, string.Format(Resources.Strings.app_unknown_args, string.Join(" ", remainingArgs.ToArray()))); - if (!globalOptions.Account.IsEmpty && !forceOverwriteConfig) - throw new CommandArgumentException(this, Resources.Strings.opt_init_config_found); - var ar = Library.TrionServer.BeginCreateSecurityKey(null, null, globalOptions.Account, deviceId); - ar.AsyncWaitHandle.WaitOne(); - Library.TrionServer.EndCreateSecurityKey(ar); - ar = Library.TrionServer.BeginGetTimeOffset(null, null); - ar.AsyncWaitHandle.WaitOne(); - globalOptions.Account.TimeOffset = Library.TrionServer.EndGetTimeOffset(ar); - globalOptions.AccountManager.SaveAccounts(); - Program.ShowConfiguration(globalOptions.Account); - } - } -} diff --git a/RiftAuthenticator.CommandLine/Commands/LoginToken.cs b/RiftAuthenticator.CommandLine/Commands/LoginToken.cs deleted file mode 100644 index 79a1e3a..0000000 --- a/RiftAuthenticator.CommandLine/Commands/LoginToken.cs +++ /dev/null @@ -1,69 +0,0 @@ -/** - * This file is part of RIFT™ Authenticator for Windows. - * - * RIFT™ Authenticator for Windows is free software: you can redistribute - * it and/or modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * RIFT™ Authenticator for Windows is distributed in the hope that it will - * be useful, but WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with RIFT™ Authenticator for Windows. If not, see - * . - */ - -using System; -using System.Collections.Generic; -using System.Text; - -namespace RiftAuthenticator.CommandLine.Commands -{ - class LoginToken : ICommand - { - private static string[] commands = new string[] { - "login-token", - "l", - "lt", - }; - private NDesk.Options.OptionSet commandOptionSet; - - public LoginToken() - { - commandOptionSet = new NDesk.Options.OptionSet - { - }; - } - - public string[] Commands - { - get { return commands; } - } - - public string Description - { - get { return Resources.Strings.opt_login_token_description; } - } - - public NDesk.Options.OptionSet OptionSet - { - get - { - return commandOptionSet; - } - } - - public void Execute(GlobalOptions globalOptions, string[] args) - { - var remainingArgs = OptionSet.Parse(args); - if (remainingArgs.Count != 0) - throw new CommandArgumentException(this, string.Format(Resources.Strings.app_unknown_args, string.Join(" ", remainingArgs.ToArray()))); - var loginToken = globalOptions.Account.CalculateToken(); - Console.Out.WriteLine(Resources.Strings.opt_login_token_login_token, loginToken.Token); - Console.Out.WriteLine(Resources.Strings.opt_login_token_remaining_time, loginToken.RemainingMillis); - } - } -} diff --git a/RiftAuthenticator.CommandLine/Commands/NewAccount.cs b/RiftAuthenticator.CommandLine/Commands/NewAccount.cs deleted file mode 100644 index 17fd82e..0000000 --- a/RiftAuthenticator.CommandLine/Commands/NewAccount.cs +++ /dev/null @@ -1,76 +0,0 @@ -/** - * This file is part of RIFT™ Authenticator for Windows. - * - * RIFT™ Authenticator for Windows is free software: you can redistribute - * it and/or modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * RIFT™ Authenticator for Windows is distributed in the hope that it will - * be useful, but WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with RIFT™ Authenticator for Windows. If not, see - * . - */ - -using System; -using System.Collections.Generic; -using System.Text; - -namespace RiftAuthenticator.CommandLine.Commands -{ - class NewAccount : ICommand - { - private static string[] commands = new string[] { - "new-account", - "n", - }; - private NDesk.Options.OptionSet commandOptionSet; - - private string accountName = null; - - public NewAccount() - { - commandOptionSet = new NDesk.Options.OptionSet - { - { "n|name=", Resources.Strings.opt_new_account_name, x => accountName = x }, - }; - } - - public string[] Commands - { - get { return commands; } - } - - public string Description - { - get { return Resources.Strings.opt_new_account_description; } - } - - public NDesk.Options.OptionSet OptionSet - { - get - { - return commandOptionSet; - } - } - - public void Execute(GlobalOptions globalOptions, string[] args) - { - var remainingArgs = OptionSet.Parse(args); - if (remainingArgs.Count != 0) - throw new CommandArgumentException(this, string.Format(Resources.Strings.app_unknown_args, string.Join(" ", remainingArgs.ToArray()))); - if (!globalOptions.Account.IsEmpty || !string.IsNullOrEmpty(globalOptions.Account.Description)) - { - globalOptions.Account = globalOptions.AccountManager.CreateAccount(); - globalOptions.AccountManager.Add(globalOptions.Account); - } - var newAccountName = accountName ?? string.Format(Resources.Strings.opt_new_account_default_name, globalOptions.AccountManager.IndexOf(globalOptions.Account) + 1); - globalOptions.Account.Description = newAccountName; - globalOptions.AccountManager.SaveAccounts(); - } - } -} diff --git a/RiftAuthenticator.CommandLine/Commands/Recover.cs b/RiftAuthenticator.CommandLine/Commands/Recover.cs deleted file mode 100644 index bdb4d10..0000000 --- a/RiftAuthenticator.CommandLine/Commands/Recover.cs +++ /dev/null @@ -1,98 +0,0 @@ -/** - * This file is part of RIFT™ Authenticator for Windows. - * - * RIFT™ Authenticator for Windows is free software: you can redistribute - * it and/or modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * RIFT™ Authenticator for Windows is distributed in the hope that it will - * be useful, but WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with RIFT™ Authenticator for Windows. If not, see - * . - */ - -using System; -using System.Collections.Generic; -using System.Text; - -namespace RiftAuthenticator.CommandLine.Commands -{ - class Recover : ICommand - { - private static string[] commands = new string[] { - "recover", - "r", - }; - private NDesk.Options.OptionSet commandOptionSet; - - private string userName; - private string password; - private string deviceId = Library.TrionServer.GetOrCreateRandomDeviceId(); - - public Recover() - { - commandOptionSet = new NDesk.Options.OptionSet - { - { "d|device-id=", Resources.Strings.opt_recover_opt_device_id, x => deviceId = x }, - { "u|e|email|user|user-name=", Resources.Strings.opt_recover_opt_email, x => userName = x }, - { "p|password=", Resources.Strings.opt_recover_opt_password, x => password = x }, - }; - } - - public string[] Commands - { - get { return commands; } - } - - public string Description - { - get { return Resources.Strings.opt_recover_description; } - } - - public NDesk.Options.OptionSet OptionSet - { - get - { - return commandOptionSet; - } - } - - public void Execute(GlobalOptions globalOptions, string[] args) - { - var remainingArgs = OptionSet.Parse(args); - if (string.IsNullOrEmpty(userName)) - throw new CommandArgumentException(this, Resources.Strings.opt_recover_error_no_email); - if (string.IsNullOrEmpty(password)) - throw new CommandArgumentException(this, Resources.Strings.opt_recover_error_no_password); - var ar = Library.TrionServer.BeginGetSecurityQuestions(null, null, userName, password); - ar.AsyncWaitHandle.WaitOne(); - var securityQuestions = Library.TrionServer.EndGetSecurityQuestions(ar); - var securityAnswers = new string[securityQuestions.Length]; - var argIndex = 0; - for (int i = 0; i != securityQuestions.Length; ++i) - { - if (!string.IsNullOrEmpty(securityQuestions[i])) - { - if (argIndex >= remainingArgs.Count) - throw new CommandArgumentException(this, string.Format(Resources.Strings.opt_recover_error_no_answer, i + 1, securityQuestions[i])); - securityAnswers[i] = remainingArgs[argIndex++]; - } - } - if (argIndex < remainingArgs.Count) - throw new CommandArgumentException(this, string.Format(Resources.Strings.app_unknown_args, string.Join(" ", remainingArgs.ToArray()))); - ar = Library.TrionServer.BeginRecoverSecurityKey(null, null, globalOptions.Account, userName, password, securityAnswers, deviceId); - ar.AsyncWaitHandle.WaitOne(); - Library.TrionServer.EndRecoverSecurityKey(ar); - ar = Library.TrionServer.BeginGetTimeOffset(null, null); - ar.AsyncWaitHandle.WaitOne(); - globalOptions.Account.TimeOffset = Library.TrionServer.EndGetTimeOffset(ar); - globalOptions.AccountManager.SaveAccounts(); - Program.ShowConfiguration(globalOptions.Account); - } - } -} diff --git a/RiftAuthenticator.CommandLine/Commands/SecretQuestions.cs b/RiftAuthenticator.CommandLine/Commands/SecretQuestions.cs deleted file mode 100644 index 0213837..0000000 --- a/RiftAuthenticator.CommandLine/Commands/SecretQuestions.cs +++ /dev/null @@ -1,82 +0,0 @@ -/** - * This file is part of RIFT™ Authenticator for Windows. - * - * RIFT™ Authenticator for Windows is free software: you can redistribute - * it and/or modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * RIFT™ Authenticator for Windows is distributed in the hope that it will - * be useful, but WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with RIFT™ Authenticator for Windows. If not, see - * . - */ - -using System; -using System.Collections.Generic; -using System.Text; - -namespace RiftAuthenticator.CommandLine.Commands -{ - class SecretQuestions : ICommand - { - private static string[] commands = new string[] { - "secret-questions", - "s", - "sc", - }; - private NDesk.Options.OptionSet commandOptionSet; - - private string userName; - private string password; - - public SecretQuestions() - { - commandOptionSet = new NDesk.Options.OptionSet - { - { "u|e|email|user|user-name=", Resources.Strings.opt_secret_questions_opt_email, x => userName = x }, - { "p|password=", Resources.Strings.opt_secret_questions_opt_password, x => password = x }, - }; - } - - public string[] Commands - { - get { return commands; } - } - - public string Description - { - get { return Resources.Strings.opt_secret_questions_description; } - } - - public NDesk.Options.OptionSet OptionSet - { - get - { - return commandOptionSet; - } - } - - public void Execute(GlobalOptions globalOptions, string[] args) - { - var remainingArgs = OptionSet.Parse(args); - if (remainingArgs.Count != 0) - throw new CommandArgumentException(this, string.Format(Resources.Strings.app_unknown_args, string.Join(" ", remainingArgs.ToArray()))); - if (string.IsNullOrEmpty(userName)) - throw new CommandArgumentException(this, Resources.Strings.opt_secret_questions_error_no_email); - if (string.IsNullOrEmpty(password)) - throw new CommandArgumentException(this, Resources.Strings.opt_secret_questions_error_no_password); - var ar = Library.TrionServer.BeginGetSecurityQuestions(null, null, userName, password); - ar.AsyncWaitHandle.WaitOne(); - var securityQuestions = Library.TrionServer.EndGetSecurityQuestions(ar); - for (int i = 0; i != securityQuestions.Length; ++i) - { - Console.Out.WriteLine(Resources.Strings.opt_secret_questions_display, i + 1, securityQuestions[i]); - } - } - } -} diff --git a/RiftAuthenticator.CommandLine/Commands/TimeSync.cs b/RiftAuthenticator.CommandLine/Commands/TimeSync.cs deleted file mode 100644 index 0742bc3..0000000 --- a/RiftAuthenticator.CommandLine/Commands/TimeSync.cs +++ /dev/null @@ -1,66 +0,0 @@ -/** - * This file is part of RIFT™ Authenticator for Windows. - * - * RIFT™ Authenticator for Windows is free software: you can redistribute - * it and/or modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * RIFT™ Authenticator for Windows is distributed in the hope that it will - * be useful, but WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with RIFT™ Authenticator for Windows. If not, see - * . - */ - -using System; -using System.Collections.Generic; -using System.Text; - -namespace RiftAuthenticator.CommandLine.Commands -{ - class TimeSync : ICommand - { - private static string[] commands = new string[] { - "time-sync", - "t", - "ts", - }; - private static NDesk.Options.OptionSet commandOptionSet = new NDesk.Options.OptionSet - { - }; - - public string[] Commands - { - get { return commands; } - } - - public string Description - { - get { return Resources.Strings.opt_time_sync_description; } - } - - public NDesk.Options.OptionSet OptionSet - { - get - { - return commandOptionSet; - } - } - - public void Execute(GlobalOptions globalOptions, string[] args) - { - var remainingArgs = OptionSet.Parse(args); - if (remainingArgs.Count != 0) - throw new CommandArgumentException(this, string.Format(Resources.Strings.app_unknown_args, string.Join(" ", remainingArgs.ToArray()))); - var ar = Library.TrionServer.BeginGetTimeOffset(null, null); - ar.AsyncWaitHandle.WaitOne(); - globalOptions.Account.TimeOffset = Library.TrionServer.EndGetTimeOffset(ar); - globalOptions.AccountManager.SaveAccounts(); - Console.Out.WriteLine(Resources.Strings.opt_time_sync_display, globalOptions.Account.TimeOffset); - } - } -} diff --git a/RiftAuthenticator.CommandLine/GlobalOptions.cs b/RiftAuthenticator.CommandLine/GlobalOptions.cs deleted file mode 100644 index d11681e..0000000 --- a/RiftAuthenticator.CommandLine/GlobalOptions.cs +++ /dev/null @@ -1,65 +0,0 @@ -/** - * This file is part of RIFT™ Authenticator for Windows. - * - * RIFT™ Authenticator for Windows is free software: you can redistribute - * it and/or modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * RIFT™ Authenticator for Windows is distributed in the hope that it will - * be useful, but WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with RIFT™ Authenticator for Windows. If not, see - * . - */ - -using System; -using System.Collections.Generic; -using System.Text; - -namespace RiftAuthenticator.CommandLine -{ - class GlobalOptions - { - private RiftAuthenticator.Library.IAccountManager _accountManager; - - public GlobalOptions() - { - var appSettings = System.Configuration.ConfigurationManager.AppSettings; - PlatformId = appSettings["default-platform"]; - if (string.IsNullOrEmpty(PlatformId)) - PlatformId = "windows"; - AccountManagerId = appSettings["default-account-manager"]; - if (string.IsNullOrEmpty(AccountManagerId)) - AccountManagerId = "registry"; - AccountId = appSettings["default-account"]; - } - - public bool ShowHelp { get; set; } - public int VerboseLevel { get; set; } - - public string PlatformId { get; set; } - public string AccountManagerId { get; set; } - public string AccountId { get; set; } - - public RiftAuthenticator.Library.IAccountManager AccountManager - { - get - { - return _accountManager; - } - set - { - _accountManager = value; - AccountManager.LoadAccounts(); - if (AccountManager.Count == 0) - AccountManager.Add(AccountManager.CreateAccount()); - Account = AccountManager[0]; - } - } - public RiftAuthenticator.Library.IAccount Account { get; set; } - } -} diff --git a/RiftAuthenticator.CommandLine/HelpMessageParts.cs b/RiftAuthenticator.CommandLine/HelpMessageParts.cs deleted file mode 100644 index 28cae25..0000000 --- a/RiftAuthenticator.CommandLine/HelpMessageParts.cs +++ /dev/null @@ -1,33 +0,0 @@ -/** - * This file is part of RIFT™ Authenticator for Windows. - * - * RIFT™ Authenticator for Windows is free software: you can redistribute - * it and/or modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * RIFT™ Authenticator for Windows is distributed in the hope that it will - * be useful, but WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with RIFT™ Authenticator for Windows. If not, see - * . - */ - -using System; -using System.Collections.Generic; -using System.Text; - -namespace RiftAuthenticator.CommandLine -{ - [Flags] - enum HelpMessageParts - { - None = 0x00, - GlobalOptions = 0x01, - CommandList = 0x02, - All = 0x0F, - } -} diff --git a/RiftAuthenticator.CommandLine/ICommand.cs b/RiftAuthenticator.CommandLine/ICommand.cs deleted file mode 100644 index 32e163b..0000000 --- a/RiftAuthenticator.CommandLine/ICommand.cs +++ /dev/null @@ -1,32 +0,0 @@ -/** - * This file is part of RIFT™ Authenticator for Windows. - * - * RIFT™ Authenticator for Windows is free software: you can redistribute - * it and/or modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * RIFT™ Authenticator for Windows is distributed in the hope that it will - * be useful, but WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with RIFT™ Authenticator for Windows. If not, see - * . - */ - -using System; -using System.Collections.Generic; -using System.Text; - -namespace RiftAuthenticator.CommandLine -{ - interface ICommand - { - string[] Commands { get; } - string Description { get; } - NDesk.Options.OptionSet OptionSet { get; } - void Execute(GlobalOptions globalOptions, string[] args); - } -} diff --git a/RiftAuthenticator.CommandLine/Options.cs b/RiftAuthenticator.CommandLine/Options.cs deleted file mode 100644 index 9a43b19..0000000 --- a/RiftAuthenticator.CommandLine/Options.cs +++ /dev/null @@ -1,1103 +0,0 @@ -// -// Options.cs -// -// Authors: -// Jonathan Pryor -// -// Copyright (C) 2008 Novell (http://www.novell.com) -// -// Permission is hereby granted, free of charge, to any person obtaining -// a copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to -// permit persons to whom the Software is furnished to do so, subject to -// the following conditions: -// -// The above copyright notice and this permission notice shall be -// included in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -// - -// Compile With: -// gmcs -debug+ -r:System.Core Options.cs -o:NDesk.Options.dll -// gmcs -debug+ -d:LINQ -r:System.Core Options.cs -o:NDesk.Options.dll -// -// The LINQ version just changes the implementation of -// OptionSet.Parse(IEnumerable), and confers no semantic changes. - -// -// A Getopt::Long-inspired option parsing library for C#. -// -// NDesk.Options.OptionSet is built upon a key/value table, where the -// key is a option format string and the value is a delegate that is -// invoked when the format string is matched. -// -// Option format strings: -// Regex-like BNF Grammar: -// name: .+ -// type: [=:] -// sep: ( [^{}]+ | '{' .+ '}' )? -// aliases: ( name type sep ) ( '|' name type sep )* -// -// Each '|'-delimited name is an alias for the associated action. If the -// format string ends in a '=', it has a required value. If the format -// string ends in a ':', it has an optional value. If neither '=' or ':' -// is present, no value is supported. `=' or `:' need only be defined on one -// alias, but if they are provided on more than one they must be consistent. -// -// Each alias portion may also end with a "key/value separator", which is used -// to split option values if the option accepts > 1 value. If not specified, -// it defaults to '=' and ':'. If specified, it can be any character except -// '{' and '}' OR the *string* between '{' and '}'. If no separator should be -// used (i.e. the separate values should be distinct arguments), then "{}" -// should be used as the separator. -// -// Options are extracted either from the current option by looking for -// the option name followed by an '=' or ':', or is taken from the -// following option IFF: -// - The current option does not contain a '=' or a ':' -// - The current option requires a value (i.e. not a Option type of ':') -// -// The `name' used in the option format string does NOT include any leading -// option indicator, such as '-', '--', or '/'. All three of these are -// permitted/required on any named option. -// -// Option bundling is permitted so long as: -// - '-' is used to start the option group -// - all of the bundled options are a single character -// - at most one of the bundled options accepts a value, and the value -// provided starts from the next character to the end of the string. -// -// This allows specifying '-a -b -c' as '-abc', and specifying '-D name=value' -// as '-Dname=value'. -// -// Option processing is disabled by specifying "--". All options after "--" -// are returned by OptionSet.Parse() unchanged and unprocessed. -// -// Unprocessed options are returned from OptionSet.Parse(). -// -// Examples: -// int verbose = 0; -// OptionSet p = new OptionSet () -// .Add ("v", v => ++verbose) -// .Add ("name=|value=", v => Console.WriteLine (v)); -// p.Parse (new string[]{"-v", "--v", "/v", "-name=A", "/name", "B", "extra"}); -// -// The above would parse the argument string array, and would invoke the -// lambda expression three times, setting `verbose' to 3 when complete. -// It would also print out "A" and "B" to standard output. -// The returned array would contain the string "extra". -// -// C# 3.0 collection initializers are supported and encouraged: -// var p = new OptionSet () { -// { "h|?|help", v => ShowHelp () }, -// }; -// -// System.ComponentModel.TypeConverter is also supported, allowing the use of -// custom data types in the callback type; TypeConverter.ConvertFromString() -// is used to convert the value option to an instance of the specified -// type: -// -// var p = new OptionSet () { -// { "foo=", (Foo f) => Console.WriteLine (f.ToString ()) }, -// }; -// -// Random other tidbits: -// - Boolean options (those w/o '=' or ':' in the option format string) -// are explicitly enabled if they are followed with '+', and explicitly -// disabled if they are followed with '-': -// string a = null; -// var p = new OptionSet () { -// { "a", s => a = s }, -// }; -// p.Parse (new string[]{"-a"}); // sets v != null -// p.Parse (new string[]{"-a+"}); // sets v != null -// p.Parse (new string[]{"-a-"}); // sets v == null -// - -using System; -using System.Collections; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.ComponentModel; -using System.Globalization; -using System.IO; -using System.Runtime.Serialization; -using System.Security.Permissions; -using System.Text; -using System.Text.RegularExpressions; - -#if LINQ -using System.Linq; -#endif - -#if TEST -using NDesk.Options; -#endif - -namespace NDesk.Options { - - public class OptionValueCollection : IList, IList { - - List values = new List (); - OptionContext c; - - internal OptionValueCollection (OptionContext c) - { - this.c = c; - } - - #region ICollection - void ICollection.CopyTo (Array array, int index) {(values as ICollection).CopyTo (array, index);} - bool ICollection.IsSynchronized {get {return (values as ICollection).IsSynchronized;}} - object ICollection.SyncRoot {get {return (values as ICollection).SyncRoot;}} - #endregion - - #region ICollection - public void Add (string item) {values.Add (item);} - public void Clear () {values.Clear ();} - public bool Contains (string item) {return values.Contains (item);} - public void CopyTo (string[] array, int arrayIndex) {values.CopyTo (array, arrayIndex);} - public bool Remove (string item) {return values.Remove (item);} - public int Count {get {return values.Count;}} - public bool IsReadOnly {get {return false;}} - #endregion - - #region IEnumerable - IEnumerator IEnumerable.GetEnumerator () {return values.GetEnumerator ();} - #endregion - - #region IEnumerable - public IEnumerator GetEnumerator () {return values.GetEnumerator ();} - #endregion - - #region IList - int IList.Add (object value) {return (values as IList).Add (value);} - bool IList.Contains (object value) {return (values as IList).Contains (value);} - int IList.IndexOf (object value) {return (values as IList).IndexOf (value);} - void IList.Insert (int index, object value) {(values as IList).Insert (index, value);} - void IList.Remove (object value) {(values as IList).Remove (value);} - void IList.RemoveAt (int index) {(values as IList).RemoveAt (index);} - bool IList.IsFixedSize {get {return false;}} - object IList.this [int index] {get {return this [index];} set {(values as IList)[index] = value;}} - #endregion - - #region IList - public int IndexOf (string item) {return values.IndexOf (item);} - public void Insert (int index, string item) {values.Insert (index, item);} - public void RemoveAt (int index) {values.RemoveAt (index);} - - private void AssertValid (int index) - { - if (c.Option == null) - throw new InvalidOperationException ("OptionContext.Option is null."); - if (index >= c.Option.MaxValueCount) - throw new ArgumentOutOfRangeException ("index"); - if (c.Option.OptionValueType == OptionValueType.Required && - index >= values.Count) - throw new OptionException (string.Format ( - c.OptionSet.MessageLocalizer ("Missing required value for option '{0}'."), c.OptionName), - c.OptionName); - } - - public string this [int index] { - get { - AssertValid (index); - return index >= values.Count ? null : values [index]; - } - set { - values [index] = value; - } - } - #endregion - - public List ToList () - { - return new List (values); - } - - public string[] ToArray () - { - return values.ToArray (); - } - - public override string ToString () - { - return string.Join (", ", values.ToArray ()); - } - } - - public class OptionContext { - private Option option; - private string name; - private int index; - private OptionSet set; - private OptionValueCollection c; - - public OptionContext (OptionSet set) - { - this.set = set; - this.c = new OptionValueCollection (this); - } - - public Option Option { - get {return option;} - set {option = value;} - } - - public string OptionName { - get {return name;} - set {name = value;} - } - - public int OptionIndex { - get {return index;} - set {index = value;} - } - - public OptionSet OptionSet { - get {return set;} - } - - public OptionValueCollection OptionValues { - get {return c;} - } - } - - public enum OptionValueType { - None, - Optional, - Required, - } - - public abstract class Option { - string prototype, description; - string[] names; - OptionValueType type; - int count; - string[] separators; - - protected Option (string prototype, string description) - : this (prototype, description, 1) - { - } - - protected Option (string prototype, string description, int maxValueCount) - { - if (prototype == null) - throw new ArgumentNullException ("prototype"); - if (prototype.Length == 0) - throw new ArgumentException ("Cannot be the empty string.", "prototype"); - if (maxValueCount < 0) - throw new ArgumentOutOfRangeException ("maxValueCount"); - - this.prototype = prototype; - this.names = prototype.Split ('|'); - this.description = description; - this.count = maxValueCount; - this.type = ParsePrototype (); - - if (this.count == 0 && type != OptionValueType.None) - throw new ArgumentException ( - "Cannot provide maxValueCount of 0 for OptionValueType.Required or " + - "OptionValueType.Optional.", - "maxValueCount"); - if (this.type == OptionValueType.None && maxValueCount > 1) - throw new ArgumentException ( - string.Format ("Cannot provide maxValueCount of {0} for OptionValueType.None.", maxValueCount), - "maxValueCount"); - if (Array.IndexOf (names, "<>") >= 0 && - ((names.Length == 1 && this.type != OptionValueType.None) || - (names.Length > 1 && this.MaxValueCount > 1))) - throw new ArgumentException ( - "The default option handler '<>' cannot require values.", - "prototype"); - } - - public string Prototype {get {return prototype;}} - public string Description {get {return description;}} - public OptionValueType OptionValueType {get {return type;}} - public int MaxValueCount {get {return count;}} - - public string[] GetNames () - { - return (string[]) names.Clone (); - } - - public string[] GetValueSeparators () - { - if (separators == null) - return new string [0]; - return (string[]) separators.Clone (); - } - - protected static T Parse (string value, OptionContext c) - { - TypeConverter conv = TypeDescriptor.GetConverter (typeof (T)); - T t = default (T); - try { - if (value != null) - t = (T) conv.ConvertFromString (value); - } - catch (Exception e) { - throw new OptionException ( - string.Format ( - c.OptionSet.MessageLocalizer ("Could not convert string `{0}' to type {1} for option `{2}'."), - value, typeof (T).Name, c.OptionName), - c.OptionName, e); - } - return t; - } - - internal string[] Names {get {return names;}} - internal string[] ValueSeparators {get {return separators;}} - - static readonly char[] NameTerminator = new char[]{'=', ':'}; - - private OptionValueType ParsePrototype () - { - char type = '\0'; - List seps = new List (); - for (int i = 0; i < names.Length; ++i) { - string name = names [i]; - if (name.Length == 0) - throw new ArgumentException ("Empty option names are not supported.", "prototype"); - - int end = name.IndexOfAny (NameTerminator); - if (end == -1) - continue; - names [i] = name.Substring (0, end); - if (type == '\0' || type == name [end]) - type = name [end]; - else - throw new ArgumentException ( - string.Format ("Conflicting option types: '{0}' vs. '{1}'.", type, name [end]), - "prototype"); - AddSeparators (name, end, seps); - } - - if (type == '\0') - return OptionValueType.None; - - if (count <= 1 && seps.Count != 0) - throw new ArgumentException ( - string.Format ("Cannot provide key/value separators for Options taking {0} value(s).", count), - "prototype"); - if (count > 1) { - if (seps.Count == 0) - this.separators = new string[]{":", "="}; - else if (seps.Count == 1 && seps [0].Length == 0) - this.separators = null; - else - this.separators = seps.ToArray (); - } - - return type == '=' ? OptionValueType.Required : OptionValueType.Optional; - } - - private static void AddSeparators (string name, int end, ICollection seps) - { - int start = -1; - for (int i = end+1; i < name.Length; ++i) { - switch (name [i]) { - case '{': - if (start != -1) - throw new ArgumentException ( - string.Format ("Ill-formed name/value separator found in \"{0}\".", name), - "prototype"); - start = i+1; - break; - case '}': - if (start == -1) - throw new ArgumentException ( - string.Format ("Ill-formed name/value separator found in \"{0}\".", name), - "prototype"); - seps.Add (name.Substring (start, i-start)); - start = -1; - break; - default: - if (start == -1) - seps.Add (name [i].ToString ()); - break; - } - } - if (start != -1) - throw new ArgumentException ( - string.Format ("Ill-formed name/value separator found in \"{0}\".", name), - "prototype"); - } - - public void Invoke (OptionContext c) - { - OnParseComplete (c); - c.OptionName = null; - c.Option = null; - c.OptionValues.Clear (); - } - - protected abstract void OnParseComplete (OptionContext c); - - public override string ToString () - { - return Prototype; - } - } - - [Serializable] - public class OptionException : Exception { - private string option; - - public OptionException () - { - } - - public OptionException (string message, string optionName) - : base (message) - { - this.option = optionName; - } - - public OptionException (string message, string optionName, Exception innerException) - : base (message, innerException) - { - this.option = optionName; - } - - protected OptionException (SerializationInfo info, StreamingContext context) - : base (info, context) - { - this.option = info.GetString ("OptionName"); - } - - public string OptionName { - get {return this.option;} - } - - [SecurityPermission (SecurityAction.LinkDemand, SerializationFormatter = true)] - public override void GetObjectData (SerializationInfo info, StreamingContext context) - { - base.GetObjectData (info, context); - info.AddValue ("OptionName", option); - } - } - - public delegate void OptionAction (TKey key, TValue value); - - public class OptionSet : KeyedCollection - { - public OptionSet () - : this (delegate (string f) {return f;}) - { - } - - public OptionSet (Converter localizer) - { - this.localizer = localizer; - } - - Converter localizer; - - public Converter MessageLocalizer { - get {return localizer;} - } - - protected override string GetKeyForItem (Option item) - { - if (item == null) - throw new ArgumentNullException ("option"); - if (item.Names != null && item.Names.Length > 0) - return item.Names [0]; - // This should never happen, as it's invalid for Option to be - // constructed w/o any names. - throw new InvalidOperationException ("Option has no names!"); - } - - [Obsolete ("Use KeyedCollection.this[string]")] - protected Option GetOptionForName (string option) - { - if (option == null) - throw new ArgumentNullException ("option"); - try { - return base [option]; - } - catch (KeyNotFoundException) { - return null; - } - } - - protected override void InsertItem (int index, Option item) - { - base.InsertItem (index, item); - AddImpl (item); - } - - protected override void RemoveItem (int index) - { - base.RemoveItem (index); - Option p = Items [index]; - // KeyedCollection.RemoveItem() handles the 0th item - for (int i = 1; i < p.Names.Length; ++i) { - Dictionary.Remove (p.Names [i]); - } - } - - protected override void SetItem (int index, Option item) - { - base.SetItem (index, item); - RemoveItem (index); - AddImpl (item); - } - - private void AddImpl (Option option) - { - if (option == null) - throw new ArgumentNullException ("option"); - List added = new List (option.Names.Length); - try { - // KeyedCollection.InsertItem/SetItem handle the 0th name. - for (int i = 1; i < option.Names.Length; ++i) { - Dictionary.Add (option.Names [i], option); - added.Add (option.Names [i]); - } - } - catch (Exception) { - foreach (string name in added) - Dictionary.Remove (name); - throw; - } - } - - public new OptionSet Add (Option option) - { - base.Add (option); - return this; - } - - sealed class ActionOption : Option { - Action action; - - public ActionOption (string prototype, string description, int count, Action action) - : base (prototype, description, count) - { - if (action == null) - throw new ArgumentNullException ("action"); - this.action = action; - } - - protected override void OnParseComplete (OptionContext c) - { - action (c.OptionValues); - } - } - - public OptionSet Add (string prototype, Action action) - { - return Add (prototype, null, action); - } - - public OptionSet Add (string prototype, string description, Action action) - { - if (action == null) - throw new ArgumentNullException ("action"); - Option p = new ActionOption (prototype, description, 1, - delegate (OptionValueCollection v) { action (v [0]); }); - base.Add (p); - return this; - } - - public OptionSet Add (string prototype, OptionAction action) - { - return Add (prototype, null, action); - } - - public OptionSet Add (string prototype, string description, OptionAction action) - { - if (action == null) - throw new ArgumentNullException ("action"); - Option p = new ActionOption (prototype, description, 2, - delegate (OptionValueCollection v) {action (v [0], v [1]);}); - base.Add (p); - return this; - } - - sealed class ActionOption : Option { - Action action; - - public ActionOption (string prototype, string description, Action action) - : base (prototype, description, 1) - { - if (action == null) - throw new ArgumentNullException ("action"); - this.action = action; - } - - protected override void OnParseComplete (OptionContext c) - { - action (Parse (c.OptionValues [0], c)); - } - } - - sealed class ActionOption : Option { - OptionAction action; - - public ActionOption (string prototype, string description, OptionAction action) - : base (prototype, description, 2) - { - if (action == null) - throw new ArgumentNullException ("action"); - this.action = action; - } - - protected override void OnParseComplete (OptionContext c) - { - action ( - Parse (c.OptionValues [0], c), - Parse (c.OptionValues [1], c)); - } - } - - public OptionSet Add (string prototype, Action action) - { - return Add (prototype, null, action); - } - - public OptionSet Add (string prototype, string description, Action action) - { - return Add (new ActionOption (prototype, description, action)); - } - - public OptionSet Add (string prototype, OptionAction action) - { - return Add (prototype, null, action); - } - - public OptionSet Add (string prototype, string description, OptionAction action) - { - return Add (new ActionOption (prototype, description, action)); - } - - protected virtual OptionContext CreateOptionContext () - { - return new OptionContext (this); - } - -#if LINQ - public List Parse (IEnumerable arguments) - { - bool process = true; - OptionContext c = CreateOptionContext (); - c.OptionIndex = -1; - var def = GetOptionForName ("<>"); - var unprocessed = - from argument in arguments - where ++c.OptionIndex >= 0 && (process || def != null) - ? process - ? argument == "--" - ? (process = false) - : !Parse (argument, c) - ? def != null - ? Unprocessed (null, def, c, argument) - : true - : false - : def != null - ? Unprocessed (null, def, c, argument) - : true - : true - select argument; - List r = unprocessed.ToList (); - if (c.Option != null) - c.Option.Invoke (c); - return r; - } -#else - public List Parse (IEnumerable arguments) - { - OptionContext c = CreateOptionContext (); - c.OptionIndex = -1; - bool process = true; - List unprocessed = new List (); - Option def = Contains ("<>") ? this ["<>"] : null; - foreach (string argument in arguments) { - ++c.OptionIndex; - if (argument == "--") { - process = false; - continue; - } - if (!process) { - Unprocessed (unprocessed, def, c, argument); - continue; - } - if (!Parse (argument, c)) - Unprocessed (unprocessed, def, c, argument); - } - if (c.Option != null) - c.Option.Invoke (c); - return unprocessed; - } -#endif - - private static bool Unprocessed (ICollection extra, Option def, OptionContext c, string argument) - { - if (def == null) { - extra.Add (argument); - return false; - } - c.OptionValues.Add (argument); - c.Option = def; - c.Option.Invoke (c); - return false; - } - - private readonly Regex ValueOption = new Regex ( - @"^(?--|-|/)(?[^:=]+)((?[:=])(?.*))?$"); - - protected bool GetOptionParts (string argument, out string flag, out string name, out string sep, out string value) - { - if (argument == null) - throw new ArgumentNullException ("argument"); - - flag = name = sep = value = null; - Match m = ValueOption.Match (argument); - if (!m.Success) { - return false; - } - flag = m.Groups ["flag"].Value; - name = m.Groups ["name"].Value; - if (m.Groups ["sep"].Success && m.Groups ["value"].Success) { - sep = m.Groups ["sep"].Value; - value = m.Groups ["value"].Value; - } - return true; - } - - protected virtual bool Parse (string argument, OptionContext c) - { - if (c.Option != null) { - ParseValue (argument, c); - return true; - } - - string f, n, s, v; - if (!GetOptionParts (argument, out f, out n, out s, out v)) - return false; - - Option p; - if (Contains (n)) { - p = this [n]; - c.OptionName = f + n; - c.Option = p; - switch (p.OptionValueType) { - case OptionValueType.None: - c.OptionValues.Add (n); - c.Option.Invoke (c); - break; - case OptionValueType.Optional: - case OptionValueType.Required: - ParseValue (v, c); - break; - } - return true; - } - // no match; is it a bool option? - if (ParseBool (argument, n, c)) - return true; - // is it a bundled option? - if (ParseBundledValue (f, string.Concat (n + s + v), c)) - return true; - - return false; - } - - private void ParseValue (string option, OptionContext c) - { - if (option != null) - foreach (string o in c.Option.ValueSeparators != null - ? option.Split (c.Option.ValueSeparators, StringSplitOptions.None) - : new string[]{option}) { - c.OptionValues.Add (o); - } - if (c.OptionValues.Count == c.Option.MaxValueCount || - c.Option.OptionValueType == OptionValueType.Optional) - c.Option.Invoke (c); - else if (c.OptionValues.Count > c.Option.MaxValueCount) { - throw new OptionException (localizer (string.Format ( - "Error: Found {0} option values when expecting {1}.", - c.OptionValues.Count, c.Option.MaxValueCount)), - c.OptionName); - } - } - - private bool ParseBool (string option, string n, OptionContext c) - { - Option p; - string rn; - if (n.Length >= 1 && (n [n.Length-1] == '+' || n [n.Length-1] == '-') && - Contains ((rn = n.Substring (0, n.Length-1)))) { - p = this [rn]; - string v = n [n.Length-1] == '+' ? option : null; - c.OptionName = option; - c.Option = p; - c.OptionValues.Add (v); - p.Invoke (c); - return true; - } - return false; - } - - private bool ParseBundledValue (string f, string n, OptionContext c) - { - if (f != "-") - return false; - for (int i = 0; i < n.Length; ++i) { - Option p; - string opt = f + n [i].ToString (); - string rn = n [i].ToString (); - if (!Contains (rn)) { - if (i == 0) - return false; - throw new OptionException (string.Format (localizer ( - "Cannot bundle unregistered option '{0}'."), opt), opt); - } - p = this [rn]; - switch (p.OptionValueType) { - case OptionValueType.None: - Invoke (c, opt, n, p); - break; - case OptionValueType.Optional: - case OptionValueType.Required: { - string v = n.Substring (i+1); - c.Option = p; - c.OptionName = opt; - ParseValue (v.Length != 0 ? v : null, c); - return true; - } - default: - throw new InvalidOperationException ("Unknown OptionValueType: " + p.OptionValueType); - } - } - return true; - } - - private static void Invoke (OptionContext c, string name, string value, Option option) - { - c.OptionName = name; - c.Option = option; - c.OptionValues.Add (value); - option.Invoke (c); - } - - private const int OptionWidth = 29; - - public void WriteOptionDescriptions (TextWriter o) - { - foreach (Option p in this) { - int written = 0; - if (!WriteOptionPrototype (o, p, ref written)) - continue; - - if (written < OptionWidth) - o.Write (new string (' ', OptionWidth - written)); - else { - o.WriteLine (); - o.Write (new string (' ', OptionWidth)); - } - - List lines = GetLines (localizer (GetDescription (p.Description))); - o.WriteLine (lines [0]); - string prefix = new string (' ', OptionWidth+2); - for (int i = 1; i < lines.Count; ++i) { - o.Write (prefix); - o.WriteLine (lines [i]); - } - } - } - - bool WriteOptionPrototype (TextWriter o, Option p, ref int written) - { - string[] names = p.Names; - - int i = GetNextOptionIndex (names, 0); - if (i == names.Length) - return false; - - if (names [i].Length == 1) { - Write (o, ref written, " -"); - Write (o, ref written, names [0]); - } - else { - Write (o, ref written, " --"); - Write (o, ref written, names [0]); - } - - for ( i = GetNextOptionIndex (names, i+1); - i < names.Length; i = GetNextOptionIndex (names, i+1)) { - Write (o, ref written, ", "); - Write (o, ref written, names [i].Length == 1 ? "-" : "--"); - Write (o, ref written, names [i]); - } - - if (p.OptionValueType == OptionValueType.Optional || - p.OptionValueType == OptionValueType.Required) { - if (p.OptionValueType == OptionValueType.Optional) { - Write (o, ref written, localizer ("[")); - } - Write (o, ref written, localizer ("=" + GetArgumentName (0, p.MaxValueCount, p.Description))); - string sep = p.ValueSeparators != null && p.ValueSeparators.Length > 0 - ? p.ValueSeparators [0] - : " "; - for (int c = 1; c < p.MaxValueCount; ++c) { - Write (o, ref written, localizer (sep + GetArgumentName (c, p.MaxValueCount, p.Description))); - } - if (p.OptionValueType == OptionValueType.Optional) { - Write (o, ref written, localizer ("]")); - } - } - return true; - } - - static int GetNextOptionIndex (string[] names, int i) - { - while (i < names.Length && names [i] == "<>") { - ++i; - } - return i; - } - - static void Write (TextWriter o, ref int n, string s) - { - n += s.Length; - o.Write (s); - } - - private static string GetArgumentName (int index, int maxIndex, string description) - { - if (description == null) - return maxIndex == 1 ? "VALUE" : "VALUE" + (index + 1); - string[] nameStart; - if (maxIndex == 1) - nameStart = new string[]{"{0:", "{"}; - else - nameStart = new string[]{"{" + index + ":"}; - for (int i = 0; i < nameStart.Length; ++i) { - int start, j = 0; - do { - start = description.IndexOf (nameStart [i], j); - } while (start >= 0 && j != 0 ? description [j++ - 1] == '{' : false); - if (start == -1) - continue; - int end = description.IndexOf ("}", start); - if (end == -1) - continue; - return description.Substring (start + nameStart [i].Length, end - start - nameStart [i].Length); - } - return maxIndex == 1 ? "VALUE" : "VALUE" + (index + 1); - } - - private static string GetDescription (string description) - { - if (description == null) - return string.Empty; - StringBuilder sb = new StringBuilder (description.Length); - int start = -1; - for (int i = 0; i < description.Length; ++i) { - switch (description [i]) { - case '{': - if (i == start) { - sb.Append ('{'); - start = -1; - } - else if (start < 0) - start = i + 1; - break; - case '}': - if (start < 0) { - if ((i+1) == description.Length || description [i+1] != '}') - throw new InvalidOperationException ("Invalid option description: " + description); - ++i; - sb.Append ("}"); - } - else { - sb.Append (description.Substring (start, i - start)); - start = -1; - } - break; - case ':': - if (start < 0) - goto default; - start = i + 1; - break; - default: - if (start < 0) - sb.Append (description [i]); - break; - } - } - return sb.ToString (); - } - - private static List GetLines (string description) - { - List lines = new List (); - if (string.IsNullOrEmpty (description)) { - lines.Add (string.Empty); - return lines; - } - int length = 80 - OptionWidth - 2; - int start = 0, end; - do { - end = GetLineEnd (start, length, description); - bool cont = false; - if (end < description.Length) { - char c = description [end]; - if (c == '-' || (char.IsWhiteSpace (c) && c != '\n')) - ++end; - else if (c != '\n') { - cont = true; - --end; - } - } - lines.Add (description.Substring (start, end - start)); - if (cont) { - lines [lines.Count-1] += "-"; - } - start = end; - if (start < description.Length && description [start] == '\n') - ++start; - } while (end < description.Length); - return lines; - } - - private static int GetLineEnd (int start, int length, string description) - { - int end = Math.Min (start + length, description.Length); - int sep = -1; - for (int i = start; i < end; ++i) { - switch (description [i]) { - case ' ': - case '\t': - case '\v': - case '-': - case ',': - case '.': - case ';': - sep = i; - break; - case '\n': - return i; - } - } - if (sep == -1 || end == description.Length) - return end; - return sep; - } - } -} - diff --git a/RiftAuthenticator.CommandLine/Program.cs b/RiftAuthenticator.CommandLine/Program.cs deleted file mode 100644 index c96f0ed..0000000 --- a/RiftAuthenticator.CommandLine/Program.cs +++ /dev/null @@ -1,170 +0,0 @@ -/** - * This file is part of RIFT™ Authenticator for Windows. - * - * RIFT™ Authenticator for Windows is free software: you can redistribute - * it and/or modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * RIFT™ Authenticator for Windows is distributed in the hope that it will - * be useful, but WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with RIFT™ Authenticator for Windows. If not, see - * . - */ - -using System; -using System.Collections.Generic; -using System.Text; - -namespace RiftAuthenticator.CommandLine -{ - class Program - { - static GlobalOptions GlobalOptions = new GlobalOptions(); - internal static List SupportedCommands = new List() - { - new Commands.Help(), - new Commands.NewAccount(), - new Commands.DeleteAccount(), - new Commands.Info(), - new Commands.Init(), - new Commands.LoginToken(), - new Commands.SecretQuestions(), - new Commands.Recover(), - new Commands.TimeSync(), - }; - - static NDesk.Options.OptionSet GlobalOptionSet = new NDesk.Options.OptionSet - { - { "h|help", Resources.Strings.opt_global_help, x => GlobalOptions.ShowHelp = x != null }, - { "v|verbose", Resources.Strings.opt_global_verbose, x => GlobalOptions.VerboseLevel += (x==null ? -1 : 1) }, - { "m|manager|account-manager=", Resources.Strings.opt_global_account_manager, x => GlobalOptions.AccountManagerId = x }, - { "a|account=", Resources.Strings.opt_global_account, x => GlobalOptions.AccountId = x }, - { "platform=", Resources.Strings.opt_global_platform, x => GlobalOptions.AccountId = x }, - }; - - static int Main(string[] args) - { - System.Net.ServicePointManager.ServerCertificateValidationCallback = Library.TrionServer.CertificateIsValid; - try - { - var unknownArgs = GlobalOptionSet.Parse(args); - if (unknownArgs.Count == 0) - GlobalOptions.ShowHelp = true; - if (GlobalOptions.ShowHelp) - { - ShowMainHelp(HelpMessageParts.All); - } - else - { - if (!string.IsNullOrEmpty(GlobalOptions.PlatformId)) - SelectPlatform(GlobalOptions.PlatformId); - if (!string.IsNullOrEmpty(GlobalOptions.AccountManagerId)) - SelectAccountManager(GlobalOptions.AccountManagerId); - if (!string.IsNullOrEmpty(GlobalOptions.AccountId)) - SelectAccount(GlobalOptions.AccountId); - ProcessCommand(unknownArgs); - } - } - catch (CommandArgumentException ex) - { - ShowMainHelp(HelpMessageParts.None); - Console.Error.WriteLine(ex.Message); - } - catch (Exception ex) - { - Console.Error.WriteLine(ex.ToString()); - return 1; - } - return 0; - } - - private static void SelectPlatform(string platformId) - { - Library.TrionServer.Platform = Library.PlatformBase.LoadPlatform(platformId); - } - - static void SelectAccount(string accountId) - { - GlobalOptions.Account = GlobalOptions.AccountManager.FindAccount(accountId); - } - - static void SelectAccountManager(string accountManagerId) - { - GlobalOptions.AccountManager = Library.AccountManagerBase.LoadAccountManager(accountManagerId); - } - - private static void ProcessCommand(List args) - { - string cmdName = null; - for (int i = 0; i != args.Count; ++i) - { - var arg = args[i]; - if (!arg.StartsWith("-") && !arg.StartsWith("/")) - { - cmdName = arg; - args.RemoveAt(i); - break; - } - } - if (cmdName == null) - throw new ApplicationException(Resources.Strings.app_no_command); - ICommand cmd = null; - foreach (var supportedCommand in SupportedCommands) - { - for (int i = 0; i != supportedCommand.Commands.Length; ++i) - { - if (supportedCommand.Commands[i] == cmdName) - { - cmd = supportedCommand; - break; - } - } - } - if (cmd == null) - throw new ApplicationException(string.Format(Resources.Strings.app_invalid_command, cmdName)); - cmd.Execute(GlobalOptions, args.ToArray()); - } - - internal static void ShowMainHelp(HelpMessageParts parts) - { - var asm = System.Reflection.Assembly.GetEntryAssembly(); - var appName = System.IO.Path.GetFileNameWithoutExtension(asm.Location); - Console.WriteLine(Resources.Strings.app_command_line, appName); - if ((parts & HelpMessageParts.GlobalOptions) != HelpMessageParts.None) - { - Console.WriteLine(); - Console.WriteLine(Resources.Strings.app_opt_global); - GlobalOptionSet.WriteOptionDescriptions(Console.Out); - } - if ((parts & HelpMessageParts.CommandList) != HelpMessageParts.None) - { - Console.WriteLine(); - Console.WriteLine(Resources.Strings.app_commands); - foreach (var cmd in SupportedCommands) - Console.WriteLine("{0,-20}\t{1}", cmd.Commands[0], cmd.Description); - } - } - - internal static void ShowConfiguration(Library.IAccount account) - { - Console.Out.WriteLine(Resources.Strings.app_account_n_of_m, GlobalOptions.AccountManager.IndexOf(account) + 1, GlobalOptions.AccountManager.Count); - if (account.IsEmpty && string.IsNullOrEmpty(account.Description)) - { - Console.Out.WriteLine(Resources.Strings.app_no_config); - } - else - { - Console.Out.WriteLine(Resources.Strings.app_info_description, account.Description); - Console.Out.WriteLine(Resources.Strings.app_info_device_id, account.DeviceId); - Console.Out.WriteLine(Resources.Strings.app_info_serial_key, account.FormattedSerialKey); - Console.Out.WriteLine(Resources.Strings.app_info_encrypted_secret_key, Library.TrionServer.SecretKeyEncryption.Encrypt(account, account.SecretKey)); - Console.Out.WriteLine(Resources.Strings.app_info_time_offset, account.TimeOffset); - } - } - } -} diff --git a/RiftAuthenticator.CommandLine/Properties/AssemblyInfo.cs b/RiftAuthenticator.CommandLine/Properties/AssemblyInfo.cs deleted file mode 100644 index 25bdae6..0000000 --- a/RiftAuthenticator.CommandLine/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,54 +0,0 @@ -/** - * This file is part of RIFT™ Authenticator for Windows. - * - * RIFT™ Authenticator for Windows is free software: you can redistribute - * it and/or modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * RIFT™ Authenticator for Windows is distributed in the hope that it will - * be useful, but WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with RIFT™ Authenticator for Windows. If not, see - * . - */ - -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// Allgemeine Informationen über eine Assembly werden über die folgenden -// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern, -// die mit einer Assembly verknüpft sind. -[assembly: AssemblyTitle("RiftAuthenticator.Console")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("RIFT™ Authenticator for Windows Project")] -[assembly: AssemblyProduct("RiftAuthenticator.Console")] -[assembly: AssemblyCopyright("Copyright © RIFT™ Authenticator for Windows Project 2011")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Durch Festlegen von ComVisible auf "false" werden die Typen in dieser Assembly unsichtbar -// für COM-Komponenten. Wenn Sie auf einen Typ in dieser Assembly von -// COM zugreifen müssen, legen Sie das ComVisible-Attribut für diesen Typ auf "true" fest. -[assembly: ComVisible(false)] - -// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird -[assembly: Guid("97828ede-cd82-4670-8827-8d506848c211")] - -// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten: -// -// Hauptversion -// Nebenversion -// Buildnummer -// Revision -// -// Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern -// übernehmen, indem Sie "*" eingeben: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.1.2.0")] -[assembly: AssemblyFileVersion("1.1.2.0")] diff --git a/RiftAuthenticator.CommandLine/Properties/app.manifest b/RiftAuthenticator.CommandLine/Properties/app.manifest deleted file mode 100644 index 71d5101..0000000 --- a/RiftAuthenticator.CommandLine/Properties/app.manifest +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/RiftAuthenticator.CommandLine/Resources/Strings.Designer.cs b/RiftAuthenticator.CommandLine/Resources/Strings.Designer.cs deleted file mode 100644 index b405365..0000000 --- a/RiftAuthenticator.CommandLine/Resources/Strings.Designer.cs +++ /dev/null @@ -1,495 +0,0 @@ -//------------------------------------------------------------------------------ -// -// Dieser Code wurde von einem Tool generiert. -// Laufzeitversion:4.0.30319.488 -// -// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn -// der Code erneut generiert wird. -// -//------------------------------------------------------------------------------ - -namespace RiftAuthenticator.CommandLine.Resources { - using System; - - - /// - /// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw. - /// - // Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert - // -Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert. - // Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen - // mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Strings { - - private static global::System.Resources.ResourceManager resourceMan; - - private static global::System.Globalization.CultureInfo resourceCulture; - - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Strings() { - } - - /// - /// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager { - get { - if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("RiftAuthenticator.CommandLine.Resources.Strings", typeof(Strings).Assembly); - resourceMan = temp; - } - return resourceMan; - } - } - - /// - /// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle - /// Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { - get { - return resourceCulture; - } - set { - resourceCulture = value; - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die Account {0} of {1}: ähnelt. - /// - internal static string app_account_n_of_m { - get { - return ResourceManager.GetString("app_account_n_of_m", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die {0} [global-options] <command-name> [command-options] ähnelt. - /// - internal static string app_command_line { - get { - return ResourceManager.GetString("app_command_line", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die Commands: ähnelt. - /// - internal static string app_commands { - get { - return ResourceManager.GetString("app_commands", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die Description: {0} ähnelt. - /// - internal static string app_info_description { - get { - return ResourceManager.GetString("app_info_description", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die Device ID: {0} ähnelt. - /// - internal static string app_info_device_id { - get { - return ResourceManager.GetString("app_info_device_id", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die Encrypted Secret Key: {0} ähnelt. - /// - internal static string app_info_encrypted_secret_key { - get { - return ResourceManager.GetString("app_info_encrypted_secret_key", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die Serial Key: {0} ähnelt. - /// - internal static string app_info_serial_key { - get { - return ResourceManager.GetString("app_info_serial_key", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die Time Offset: {0} ähnelt. - /// - internal static string app_info_time_offset { - get { - return ResourceManager.GetString("app_info_time_offset", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die No valid command specified: {0} ähnelt. - /// - internal static string app_invalid_command { - get { - return ResourceManager.GetString("app_invalid_command", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die No account with the id {0} found. ähnelt. - /// - internal static string app_no_account_found { - get { - return ResourceManager.GetString("app_no_account_found", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die No command name specified. ähnelt. - /// - internal static string app_no_command { - get { - return ResourceManager.GetString("app_no_command", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die Configuration is empty. ähnelt. - /// - internal static string app_no_config { - get { - return ResourceManager.GetString("app_no_config", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die Global options: ähnelt. - /// - internal static string app_opt_global { - get { - return ResourceManager.GetString("app_opt_global", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die Unknown arguments found: {0} ähnelt. - /// - internal static string app_unknown_args { - get { - return ResourceManager.GetString("app_unknown_args", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die Delete a existing account ähnelt. - /// - internal static string opt_delete_account_description { - get { - return ResourceManager.GetString("opt_delete_account_description", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die Specifiy the account to use ähnelt. - /// - internal static string opt_global_account { - get { - return ResourceManager.GetString("opt_global_account", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die Specify the account manager to use ähnelt. - /// - internal static string opt_global_account_manager { - get { - return ResourceManager.GetString("opt_global_account_manager", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die Show help ähnelt. - /// - internal static string opt_global_help { - get { - return ResourceManager.GetString("opt_global_help", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die Specify the platform to use ähnelt. - /// - internal static string opt_global_platform { - get { - return ResourceManager.GetString("opt_global_platform", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die Set verbose level ähnelt. - /// - internal static string opt_global_verbose { - get { - return ResourceManager.GetString("opt_global_verbose", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die Options for command {0} ({1}): ähnelt. - /// - internal static string opt_help_cmd_options { - get { - return ResourceManager.GetString("opt_help_cmd_options", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die Show help for a command ähnelt. - /// - internal static string opt_help_description { - get { - return ResourceManager.GetString("opt_help_description", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die Show current configuration ähnelt. - /// - internal static string opt_info_description { - get { - return ResourceManager.GetString("opt_info_description", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die A configuration already exists, but the -f (force) option wasn't specified. ähnelt. - /// - internal static string opt_init_config_found { - get { - return ResourceManager.GetString("opt_init_config_found", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die Initialization of a new authenticator ähnelt. - /// - internal static string opt_init_description { - get { - return ResourceManager.GetString("opt_init_description", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die Manually specify a device id ähnelt. - /// - internal static string opt_init_opt_device_id { - get { - return ResourceManager.GetString("opt_init_opt_device_id", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die Force overwrite of current configuration ähnelt. - /// - internal static string opt_init_opt_force { - get { - return ResourceManager.GetString("opt_init_opt_force", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die Show current login token ähnelt. - /// - internal static string opt_login_token_description { - get { - return ResourceManager.GetString("opt_login_token_description", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die Login token: {0} ähnelt. - /// - internal static string opt_login_token_login_token { - get { - return ResourceManager.GetString("opt_login_token_login_token", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die Remaining time (ms): {0} ähnelt. - /// - internal static string opt_login_token_remaining_time { - get { - return ResourceManager.GetString("opt_login_token_remaining_time", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die Account {0} ähnelt. - /// - internal static string opt_new_account_default_name { - get { - return ResourceManager.GetString("opt_new_account_default_name", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die Create a new account ähnelt. - /// - internal static string opt_new_account_description { - get { - return ResourceManager.GetString("opt_new_account_description", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die Name of the new account ähnelt. - /// - internal static string opt_new_account_name { - get { - return ResourceManager.GetString("opt_new_account_name", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die Recover the authenticators configuration ähnelt. - /// - internal static string opt_recover_description { - get { - return ResourceManager.GetString("opt_recover_description", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die No answer for security question {0} ({1}) given ähnelt. - /// - internal static string opt_recover_error_no_answer { - get { - return ResourceManager.GetString("opt_recover_error_no_answer", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die No email address (user name) for login specified ähnelt. - /// - internal static string opt_recover_error_no_email { - get { - return ResourceManager.GetString("opt_recover_error_no_email", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die No password for login specified ähnelt. - /// - internal static string opt_recover_error_no_password { - get { - return ResourceManager.GetString("opt_recover_error_no_password", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die Manually specify a device id ähnelt. - /// - internal static string opt_recover_opt_device_id { - get { - return ResourceManager.GetString("opt_recover_opt_device_id", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die Email address used for login ähnelt. - /// - internal static string opt_recover_opt_email { - get { - return ResourceManager.GetString("opt_recover_opt_email", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die Password used for login ähnelt. - /// - internal static string opt_recover_opt_password { - get { - return ResourceManager.GetString("opt_recover_opt_password", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die Show the users secret question(s) ähnelt. - /// - internal static string opt_secret_questions_description { - get { - return ResourceManager.GetString("opt_secret_questions_description", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die Security question {0}: {1} ähnelt. - /// - internal static string opt_secret_questions_display { - get { - return ResourceManager.GetString("opt_secret_questions_display", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die No email address (user name) for login specified ähnelt. - /// - internal static string opt_secret_questions_error_no_email { - get { - return ResourceManager.GetString("opt_secret_questions_error_no_email", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die No password for login specified ähnelt. - /// - internal static string opt_secret_questions_error_no_password { - get { - return ResourceManager.GetString("opt_secret_questions_error_no_password", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die Email address used for login ähnelt. - /// - internal static string opt_secret_questions_opt_email { - get { - return ResourceManager.GetString("opt_secret_questions_opt_email", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die Password used for login ähnelt. - /// - internal static string opt_secret_questions_opt_password { - get { - return ResourceManager.GetString("opt_secret_questions_opt_password", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die Time synchronization with TRION's login server ähnelt. - /// - internal static string opt_time_sync_description { - get { - return ResourceManager.GetString("opt_time_sync_description", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die New time offset: {0} ähnelt. - /// - internal static string opt_time_sync_display { - get { - return ResourceManager.GetString("opt_time_sync_display", resourceCulture); - } - } - } -} diff --git a/RiftAuthenticator.CommandLine/Resources/Strings.de.resx b/RiftAuthenticator.CommandLine/Resources/Strings.de.resx deleted file mode 100644 index e4a3b43..0000000 --- a/RiftAuthenticator.CommandLine/Resources/Strings.de.resx +++ /dev/null @@ -1,261 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Befehle: - - - {0} [globale-einstellungen] <befehl> [befehl-einstellungen] - - - Geräte-ID: {0} - - - Verschlüsselter geheimer Schlüssel: {0} - - - Seriennummer: {0} - - - Zeitabweichung: {0} - - - Keinen gültigen Befehl angegeben: {0} - - - Keinen Befehl angegeben. - - - Keine Einstellungen gefunden. - - - Globale Einstellungen: - - - Unbekannte Argumente: {0} - - - Zeige Hilfe-Text - - - Setze den Detailgrad der Programm-Meldungen - - - Optionen für den Befehl {0} ({1}): - - - Zeige die Hilfe für einen Befehl - - - Zeige die aktuellen Einstellungen - - - Es existiert bereits eine Einstellung aber die Einstellung -f (Erzwingen) war nicht angegeben. - - - Initialisierung eines neuen Authentifikators - - - Manuelle Angabe einer Geräte-ID - - - Erzwinge das Überschreiben der aktuellen Einstellungen - - - Zeige die aktuelle Authentifikator-PIN für die RIFT™-Anmeldung - - - Authentifikator-PIN: {0} - - - Verbleibende Zeit (ms): {0} - - - Wiederherstellung der Authentifikator-Einstellungen - - - Es wurde keine Antwort für die Sicherheitsabfrage {0} ({1}) angegeben. - - - Es wurde keine Email-Adresse für die Anmeldung angegeben. - - - Es wurde kein Passwort für die Anmeldung angegeben. - - - Manuelle Angabe einer Geräte-ID - - - Email-Adresse für die Anmeldung - - - Passwort für die Anmeldung - - - Zeige die Sicherheitsabfragen - - - Sicherheitsabfrage {0}: {1} - - - Es wurde keine Email-Adresse für die Anmeldung angegeben. - - - Es wurde kein Passwort für die Anmeldung angegeben. - - - Email-Adresse für die Anmeldung - - - Passwort für die Anmeldung - - - Zeit-Synchronisation mit TRION's Login-Server - - - Neue Zeitabweichung: {0} - - - Konto {0} von {1}: - - - Kein Konto mit der ID {0} gefunden. - - - Löschen eines bestehenden Kontos - - - Angabe des zu verwendenden Kontos - - - Angabe des zu verwendenden Konto-Verwalters - - - Account {0} - - - Erstelle einen neuen Authentifikator für ein RIFT™-Konto - - - Name des neuen Konto-Authentifikators - - - Angabe der zu verwendenden Plattform - - \ No newline at end of file diff --git a/RiftAuthenticator.CommandLine/Resources/Strings.resx b/RiftAuthenticator.CommandLine/Resources/Strings.resx deleted file mode 100644 index ee38ea7..0000000 --- a/RiftAuthenticator.CommandLine/Resources/Strings.resx +++ /dev/null @@ -1,264 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Commands: - - - {0} [global-options] <command-name> [command-options] - - - Device ID: {0} - - - Encrypted Secret Key: {0} - - - Serial Key: {0} - - - Time Offset: {0} - - - No valid command specified: {0} - - - No command name specified. - - - Configuration is empty. - - - Global options: - - - Unknown arguments found: {0} - - - Show help - - - Set verbose level - - - Options for command {0} ({1}): - - - Show help for a command - - - Show current configuration - - - A configuration already exists, but the -f (force) option wasn't specified. - - - Initialization of a new authenticator - - - Manually specify a device id - - - Force overwrite of current configuration - - - Show current login token - - - Login token: {0} - - - Remaining time (ms): {0} - - - Recover the authenticators configuration - - - No answer for security question {0} ({1}) given - - - No email address (user name) for login specified - - - No password for login specified - - - Manually specify a device id - - - Email address used for login - - - Password used for login - - - Show the users secret question(s) - - - Security question {0}: {1} - - - No email address (user name) for login specified - - - No password for login specified - - - Email address used for login - - - Password used for login - - - Time synchronization with TRION's login server - - - New time offset: {0} - - - Account {0} of {1}: - - - Description: {0} - - - No account with the id {0} found. - - - Delete a existing account - - - Specifiy the account to use - - - Specify the account manager to use - - - Account {0} - - - Create a new account - - - Name of the new account - - - Specify the platform to use - - \ No newline at end of file diff --git a/RiftAuthenticator.CommandLine/RiftAuthenticator.CommandLine.csproj b/RiftAuthenticator.CommandLine/RiftAuthenticator.CommandLine.csproj deleted file mode 100644 index 828bbfd..0000000 --- a/RiftAuthenticator.CommandLine/RiftAuthenticator.CommandLine.csproj +++ /dev/null @@ -1,165 +0,0 @@ - - - - Debug - x86 - 8.0.30703 - 2.0 - {D601A1A4-91E2-4870-88C4-2778AC674532} - Exe - Properties - RiftAuthenticator.CommandLine - RiftAuthenticator.CommandLine - v4.0 - Client - 512 - - - true - bin\Debug\ - DEBUG;TRACE - full - AnyCPU - bin\Debug\RiftAuthenticator.CommandLine.exe.CodeAnalysisLog.xml - true - GlobalSuppressions.cs - prompt - MinimumRecommendedRules.ruleset - ;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets - true - ;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules - true - - - bin\Release\ - TRACE - true - pdbonly - AnyCPU - bin\Release\RiftAuthenticator.CommandLine.exe.CodeAnalysisLog.xml - true - GlobalSuppressions.cs - prompt - MinimumRecommendedRules.ruleset - ;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets - false - ;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules - true - - - RiftLogo.ico - - - true - bin\x86\Debug\ - DEBUG;TRACE - full - x86 - bin\Debug\RiftAuthenticator.CommandLine.exe.CodeAnalysisLog.xml - true - GlobalSuppressions.cs - prompt - MinimumRecommendedRules.ruleset - ;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets - true - ;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules - true - - - bin\x86\Release\ - TRACE - true - pdbonly - x86 - bin\Release\RiftAuthenticator.CommandLine.exe.CodeAnalysisLog.xml - true - GlobalSuppressions.cs - prompt - MinimumRecommendedRules.ruleset - ;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets - ;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules - true - - - LocalIntranet - - - false - - - Properties\app.manifest - - - - - - - - - - - - - - - - - - - - - - - - - - True - True - Strings.resx - - - - - {D463F9A5-E676-47D6-9740-D2548748EBC3} - RiftAuthenticator.Library.FileSystem - - - {F3EA0BAB-AF7E-4792-A5BB-5DBCA872E161} - RiftAuthenticator.Library.IsolatedStorage - - - {580DF75F-6D5D-409B-9F4C-64F8F9B0A9C6} - RiftAuthenticator.Library.Platform.Windows - - - {488805C2-F094-4AB2-AAF4-0A555F36095A} - RiftAuthenticator.Library.Registry - - - {E31E2621-6D52-49A9-B7D4-AC75862518D8} - RiftAuthenticator.Library - - - - - - - - - ResXFileCodeGenerator - Strings.Designer.cs - - - - - - - - - \ No newline at end of file diff --git a/RiftAuthenticator.CommandLine/RiftLogo.ico b/RiftAuthenticator.CommandLine/RiftLogo.ico deleted file mode 100644 index 189d204..0000000 Binary files a/RiftAuthenticator.CommandLine/RiftLogo.ico and /dev/null differ diff --git a/RiftAuthenticator.Library.FileSystem/Account.cs b/RiftAuthenticator.Library.FileSystem/Account.cs deleted file mode 100644 index 11e7f10..0000000 --- a/RiftAuthenticator.Library.FileSystem/Account.cs +++ /dev/null @@ -1,102 +0,0 @@ -/** - * This file is part of RIFT™ Authenticator for Windows. - * - * RIFT™ Authenticator for Windows is free software: you can redistribute - * it and/or modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * RIFT™ Authenticator for Windows is distributed in the hope that it will - * be useful, but WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with RIFT™ Authenticator for Windows. If not, see - * . - */ - -using System; -using System.Collections.Generic; -using System.Text; - -namespace RiftAuthenticator.Library.FileSystem -{ - public class Account : RiftAuthenticator.Library.PlatformUtils.Android.AccountMapFile - { - internal static string GetAccountFileName(int accountIndex) - { - return string.Format("Account {0}.xml", accountIndex + 1); - } - - internal static string GetAccountFolder() - { - var appSettings = System.Configuration.ConfigurationManager.AppSettings; - var result = appSettings["account-manager-fs-path"]; - if (string.IsNullOrEmpty(result)) - result = "default"; - switch (result) - { - case "default": - case "user": - case "user-profile": - result = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "RiftAuthenticator"); - break; - case "app": - case "app-folder": - case "application": - case "application-folder": - result = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location), "Data"); - break; - default: - break; - } - result = Environment.ExpandEnvironmentVariables(result); - System.IO.Directory.CreateDirectory(result); - return result; - } - - internal static string GetAccountPath(int accountIndex) - { - return System.IO.Path.Combine(GetAccountFolder(), GetAccountFileName(accountIndex)); - } - - internal static Dictionary ReadMap(string fileName) - { - if (System.IO.File.Exists(fileName)) - { - using (var stream = new System.IO.FileStream(fileName, System.IO.FileMode.Open, System.IO.FileAccess.Read)) - { - return PlatformUtils.Android.MapFile.ReadMap(stream); - } - } - else - { - return new Dictionary(); - } - } - - internal static void WriteMap(string fileName, Dictionary map) - { - using (var stream = new System.IO.FileStream(fileName, System.IO.FileMode.Create, System.IO.FileAccess.Write)) - { - PlatformUtils.Android.MapFile.WriteMap(stream, map); - } - } - - protected override string GetFileName(IAccountManager accountManager, int accountIndex) - { - return GetAccountPath(accountIndex); - } - - protected override Dictionary ReadMapFile(string fileName) - { - return ReadMap(fileName); - } - - protected override void WriteMapFile(string fileName, Dictionary map) - { - WriteMap(fileName, map); - } - } -} diff --git a/RiftAuthenticator.Library.FileSystem/AccountManager.cs b/RiftAuthenticator.Library.FileSystem/AccountManager.cs deleted file mode 100644 index 25a22bf..0000000 --- a/RiftAuthenticator.Library.FileSystem/AccountManager.cs +++ /dev/null @@ -1,77 +0,0 @@ -/** - * This file is part of RIFT™ Authenticator for Windows. - * - * RIFT™ Authenticator for Windows is free software: you can redistribute - * it and/or modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * RIFT™ Authenticator for Windows is distributed in the hope that it will - * be useful, but WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with RIFT™ Authenticator for Windows. If not, see - * . - */ - -using System; -using System.Collections.Generic; -using System.Text; - -namespace RiftAuthenticator.Library.FileSystem -{ - public class AccountManager : Library.AccountManagerBase - { - private const string StoredAccountsKey = "stored_accounts"; - - public AccountManager() - { - } - - private string GetGlobalSettingsFileName() - { - return System.IO.Path.Combine(Account.GetAccountFolder(), "settings.xml"); - } - - public override IAccount CreateAccount() - { - return new Account(); - } - - protected override int StoredAccounts - { - get - { - var configFileName = GetGlobalSettingsFileName(); - try - { - var map = Account.ReadMap(configFileName); - if (!map.ContainsKey(StoredAccountsKey)) - return 0; - return (int)map[StoredAccountsKey]; - } - catch - { - return 0; - } - } - set - { - var configFileName = GetGlobalSettingsFileName(); - Dictionary map; - try - { - map = Account.ReadMap(configFileName); - } - catch - { - map = new Dictionary(); - } - map[StoredAccountsKey] = value; - Account.WriteMap(configFileName, map); - } - } - } -} diff --git a/RiftAuthenticator.Library.FileSystem/Properties/AssemblyInfo.cs b/RiftAuthenticator.Library.FileSystem/Properties/AssemblyInfo.cs deleted file mode 100644 index f8851f3..0000000 --- a/RiftAuthenticator.Library.FileSystem/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,54 +0,0 @@ -/** - * This file is part of RIFT™ Authenticator for Windows. - * - * RIFT™ Authenticator for Windows is free software: you can redistribute - * it and/or modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * RIFT™ Authenticator for Windows is distributed in the hope that it will - * be useful, but WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with RIFT™ Authenticator for Windows. If not, see - * . - */ - -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// Allgemeine Informationen über eine Assembly werden über die folgenden -// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern, -// die mit einer Assembly verknüpft sind. -[assembly: AssemblyTitle("RiftAuthenticator.Library.FileSystem")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("RIFT™ Authenticator for Windows Project")] -[assembly: AssemblyProduct("RiftAuthenticator.Library.FileSystem")] -[assembly: AssemblyCopyright("Copyright © RIFT™ Authenticator for Windows Project 2011")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Durch Festlegen von ComVisible auf "false" werden die Typen in dieser Assembly unsichtbar -// für COM-Komponenten. Wenn Sie auf einen Typ in dieser Assembly von -// COM zugreifen müssen, legen Sie das ComVisible-Attribut für diesen Typ auf "true" fest. -[assembly: ComVisible(false)] - -// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird -[assembly: Guid("3ec4eeaa-44bd-411c-b3be-97d1245cd8f3")] - -// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten: -// -// Hauptversion -// Nebenversion -// Buildnummer -// Revision -// -// Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern -// übernehmen, indem Sie "*" eingeben: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.1.2.0")] -[assembly: AssemblyFileVersion("1.1.2.0")] diff --git a/RiftAuthenticator.Library.FileSystem/RiftAuthenticator.Library.FileSystem.csproj b/RiftAuthenticator.Library.FileSystem/RiftAuthenticator.Library.FileSystem.csproj deleted file mode 100644 index c0e8377..0000000 --- a/RiftAuthenticator.Library.FileSystem/RiftAuthenticator.Library.FileSystem.csproj +++ /dev/null @@ -1,59 +0,0 @@ - - - - Debug - AnyCPU - 8.0.30703 - 2.0 - {D463F9A5-E676-47D6-9740-D2548748EBC3} - Library - Properties - RiftAuthenticator.Library.FileSystem - RiftAuthenticator.Library.FileSystem - v4.0 - 512 - Client - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - - - - - - - - - - - - {E31E2621-6D52-49A9-B7D4-AC75862518D8} - RiftAuthenticator.Library - - - - - \ No newline at end of file diff --git a/RiftAuthenticator.Library.IsolatedStorage/Account.cs b/RiftAuthenticator.Library.IsolatedStorage/Account.cs deleted file mode 100644 index 66d0f98..0000000 --- a/RiftAuthenticator.Library.IsolatedStorage/Account.cs +++ /dev/null @@ -1,100 +0,0 @@ -/** - * This file is part of RIFT™ Authenticator for Windows. - * - * RIFT™ Authenticator for Windows is free software: you can redistribute - * it and/or modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * RIFT™ Authenticator for Windows is distributed in the hope that it will - * be useful, but WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with RIFT™ Authenticator for Windows. If not, see - * . - */ - -using System; -using System.Collections.Generic; -using System.Text; - -namespace RiftAuthenticator.Library.IsolatedStorage -{ - public class Account : PlatformUtils.Android.AccountMapFile - { - private static System.IO.IsolatedStorage.IsolatedStorageFile CreateIsolatedStorageFile() - { -#if SILVERLIGHT - return System.IO.IsolatedStorage.IsolatedStorageFile.GetUserStoreForApplication(); -#else - return System.IO.IsolatedStorage.IsolatedStorageFile.GetUserStoreForDomain(); -#endif - } - - internal static bool HasFile(System.IO.IsolatedStorage.IsolatedStorageFile storage, string fileName) - { - var fileNames = storage.GetFileNames(); - int foundFileNameIndex = -1; - for (int i = 0; i != fileNames.Length; ++i) - { - if (fileNames[i] == fileName) - { - foundFileNameIndex = i; - break; - } - } - return foundFileNameIndex != -1; - } - - internal static void ReadMap(string fileName, Dictionary map) - { - using (var storage = CreateIsolatedStorageFile()) - { - if (HasFile(storage, fileName)) - { - using (var stream = new System.IO.IsolatedStorage.IsolatedStorageFileStream(fileName, System.IO.FileMode.Open, System.IO.FileAccess.Read, storage)) - { - PlatformUtils.Android.MapFile.ReadMap(stream, map); - stream.Close(); - } - } - } - } - - internal static Dictionary ReadMap(string fileName) - { - var result = new Dictionary(); - ReadMap(fileName, result); - return result; - } - - internal static void WriteMap(string fileName, Dictionary map) - { - using (var storage = CreateIsolatedStorageFile()) - { - using (var stream = new System.IO.IsolatedStorage.IsolatedStorageFileStream(fileName, System.IO.FileMode.Create, System.IO.FileAccess.Write, storage)) - { - PlatformUtils.Android.MapFile.WriteMap(stream, map); - stream.Close(); - } - } - } - - protected override Dictionary ReadMapFile(string fileName) - { - return ReadMap(fileName); - } - - protected override void WriteMapFile(string fileName, Dictionary map) - { - WriteMap(fileName, map); - } - - protected override string GetFileName(IAccountManager accountManager, int accountIndex) - { - return string.Format("account_{0}.xml", accountIndex + 1); - } - } -} diff --git a/RiftAuthenticator.Library.IsolatedStorage/AccountManager.cs b/RiftAuthenticator.Library.IsolatedStorage/AccountManager.cs deleted file mode 100644 index 1e0c251..0000000 --- a/RiftAuthenticator.Library.IsolatedStorage/AccountManager.cs +++ /dev/null @@ -1,77 +0,0 @@ -/** - * This file is part of RIFT™ Authenticator for Windows. - * - * RIFT™ Authenticator for Windows is free software: you can redistribute - * it and/or modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * RIFT™ Authenticator for Windows is distributed in the hope that it will - * be useful, but WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with RIFT™ Authenticator for Windows. If not, see - * . - */ - -using System; -using System.Collections.Generic; -using System.Text; - -namespace RiftAuthenticator.Library.IsolatedStorage -{ - public class AccountManager : Library.AccountManagerBase - { - private const string StoredAccountsKey = "stored_accounts"; - - public AccountManager() - { - } - - private string GetGlobalSettingsFileName() - { - return "settings.xml"; - } - - public override IAccount CreateAccount() - { - return new Account(); - } - - protected override int StoredAccounts - { - get - { - var configFileName = GetGlobalSettingsFileName(); - try - { - var map = Account.ReadMap(configFileName); - if (!map.ContainsKey(StoredAccountsKey)) - return 0; - return (int)map[StoredAccountsKey]; - } - catch - { - return 0; - } - } - set - { - var configFileName = GetGlobalSettingsFileName(); - Dictionary map; - try - { - map = Account.ReadMap(configFileName); - } - catch - { - map = new Dictionary(); - } - map[StoredAccountsKey] = value; - Account.WriteMap(configFileName, map); - } - } - } -} diff --git a/RiftAuthenticator.Library.IsolatedStorage/Properties/AssemblyInfo.cs b/RiftAuthenticator.Library.IsolatedStorage/Properties/AssemblyInfo.cs deleted file mode 100644 index 5658e36..0000000 --- a/RiftAuthenticator.Library.IsolatedStorage/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,56 +0,0 @@ -/** - * This file is part of RIFT™ Authenticator for Windows. - * - * RIFT™ Authenticator for Windows is free software: you can redistribute - * it and/or modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * RIFT™ Authenticator for Windows is distributed in the hope that it will - * be useful, but WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with RIFT™ Authenticator for Windows. If not, see - * . - */ - -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; -using System.Resources; - -// Allgemeine Informationen über eine Assembly werden über die folgenden -// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern, -// die mit einer Assembly verknüpft sind. -[assembly: AssemblyTitle("RiftAuthenticator.Library.IsolatedStorage")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("RIFT™ Authenticator for Windows Project")] -[assembly: AssemblyProduct("RiftAuthenticator.Library.IsolatedStorage")] -[assembly: AssemblyCopyright("Copyright © RIFT™ Authenticator for Windows Project 2011")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Durch Festlegen von ComVisible auf "false" werden die Typen in dieser Assembly unsichtbar -// für COM-Komponenten. Wenn Sie auf einen Typ in dieser Assembly von -// COM zugreifen müssen, legen Sie das ComVisible-Attribut für diesen Typ auf "true" fest. -[assembly: ComVisible(false)] - -// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird -[assembly: Guid("12a58a53-3151-4af4-b107-37950caa7a10")] - -// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten: -// -// Hauptversion -// Nebenversion -// Buildnummer -// Revision -// -// Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern -// übernehmen, indem Sie "*" eingeben: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.1.2.0")] -[assembly: AssemblyFileVersion("1.1.2.0")] -[assembly: NeutralResourcesLanguageAttribute("en-US")] diff --git a/RiftAuthenticator.Library.IsolatedStorage/RiftAuthenticator.Library.IsolatedStorage.WP70.csproj b/RiftAuthenticator.Library.IsolatedStorage/RiftAuthenticator.Library.IsolatedStorage.WP70.csproj deleted file mode 100644 index 81969d1..0000000 --- a/RiftAuthenticator.Library.IsolatedStorage/RiftAuthenticator.Library.IsolatedStorage.WP70.csproj +++ /dev/null @@ -1,71 +0,0 @@ - - - - Debug - AnyCPU - 10.0.20506 - 2.0 - {ACC8E344-534D-4CCF-9E4F-9301DDCC3D6C} - {C089C8C0-30E0-4E22-80C0-CE093F111A43};{fae04ec0-301f-11d3-bf4b-00c04f79efbc} - Library - Properties - RiftAuthenticator.Library.IsolatedStorage - RiftAuthenticator.Library.IsolatedStorage.WP70 - v4.0 - $(TargetFrameworkVersion) - WindowsPhone - Silverlight - false - true - true - - - true - full - false - Bin\Debug - DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE - true - true - prompt - 4 - - - pdbonly - true - Bin\Release - TRACE;SILVERLIGHT;WINDOWS_PHONE - true - true - prompt - 4 - - - - - - - - - - - - - - - - {5088302B-1729-4D9E-A5B6-C781CEFA2D93} - RiftAuthenticator.Library.WP70 - - - - - - - \ No newline at end of file diff --git a/RiftAuthenticator.Library.IsolatedStorage/RiftAuthenticator.Library.IsolatedStorage.csproj b/RiftAuthenticator.Library.IsolatedStorage/RiftAuthenticator.Library.IsolatedStorage.csproj deleted file mode 100644 index c86942b..0000000 --- a/RiftAuthenticator.Library.IsolatedStorage/RiftAuthenticator.Library.IsolatedStorage.csproj +++ /dev/null @@ -1,58 +0,0 @@ - - - - Debug - AnyCPU - 8.0.30703 - 2.0 - {F3EA0BAB-AF7E-4792-A5BB-5DBCA872E161} - Library - Properties - RiftAuthenticator.Library.IsolatedStorage - RiftAuthenticator.Library.IsolatedStorage - v4.0 - 512 - Client - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - - - - - - - - - - - {E31E2621-6D52-49A9-B7D4-AC75862518D8} - RiftAuthenticator.Library - - - - - \ No newline at end of file diff --git a/RiftAuthenticator.Library.Platform.Windows/Platform.cs b/RiftAuthenticator.Library.Platform.Windows/Platform.cs deleted file mode 100644 index cce5784..0000000 --- a/RiftAuthenticator.Library.Platform.Windows/Platform.cs +++ /dev/null @@ -1,68 +0,0 @@ -/** - * This file is part of RIFT™ Authenticator for Windows. - * - * RIFT™ Authenticator for Windows is free software: you can redistribute - * it and/or modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * RIFT™ Authenticator for Windows is distributed in the hope that it will - * be useful, but WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with RIFT™ Authenticator for Windows. If not, see - * . - */ - -using System; -using System.Collections.Generic; -using System.Text; - -namespace RiftAuthenticator.Library.Platform.Windows -{ - public class Platform : PlatformBase - { - private string GetDeviceId() - { - try - { - using (var regKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion")) - { - var productId = regKey.GetValue("ProductId"); - if (productId != null) - { - var realProductId = Convert.ToString(productId); - var digest = new System.Security.Cryptography.SHA1Managed(); - var productIdBytes = Encoding.Default.GetBytes(realProductId); - digest.TransformFinalBlock(productIdBytes, 0, productIdBytes.Length); - return Util.BytesToHex(digest.Hash); - } - } - } - catch - { - } - return null; - } - - public override string DeviceId - { - get { return GetDeviceId(); } - } - - public override string UserAgent - { - get - { - return null; - } - } - - public override ISecretKeyEncryption SecretKeyEncryption - { - get { return null; } - } - } -} diff --git a/RiftAuthenticator.Library.Platform.Windows/Properties/AssemblyInfo.cs b/RiftAuthenticator.Library.Platform.Windows/Properties/AssemblyInfo.cs deleted file mode 100644 index 176cb1a..0000000 --- a/RiftAuthenticator.Library.Platform.Windows/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,54 +0,0 @@ -/** - * This file is part of RIFT™ Authenticator for Windows. - * - * RIFT™ Authenticator for Windows is free software: you can redistribute - * it and/or modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * RIFT™ Authenticator for Windows is distributed in the hope that it will - * be useful, but WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with RIFT™ Authenticator for Windows. If not, see - * . - */ - -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// Allgemeine Informationen über eine Assembly werden über die folgenden -// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern, -// die mit einer Assembly verknüpft sind. -[assembly: AssemblyTitle("RiftAuthenticator.Library.Platform.Windows")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("RIFT™ Authenticator for Windows Project")] -[assembly: AssemblyProduct("RiftAuthenticator.Library.Platform.Windows")] -[assembly: AssemblyCopyright("Copyright © RIFT™ Authenticator for Windows Project 2011")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Durch Festlegen von ComVisible auf "false" werden die Typen in dieser Assembly unsichtbar -// für COM-Komponenten. Wenn Sie auf einen Typ in dieser Assembly von -// COM zugreifen müssen, legen Sie das ComVisible-Attribut für diesen Typ auf "true" fest. -[assembly: ComVisible(false)] - -// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird -[assembly: Guid("18ea64c7-a642-4166-95fd-0ea817722bc5")] - -// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten: -// -// Hauptversion -// Nebenversion -// Buildnummer -// Revision -// -// Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern -// übernehmen, indem Sie "*" eingeben: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.1.2.0")] -[assembly: AssemblyFileVersion("1.1.2.0")] diff --git a/RiftAuthenticator.Library.Platform.Windows/RiftAuthenticator.Library.Platform.Windows.csproj b/RiftAuthenticator.Library.Platform.Windows/RiftAuthenticator.Library.Platform.Windows.csproj deleted file mode 100644 index f2fc1c0..0000000 --- a/RiftAuthenticator.Library.Platform.Windows/RiftAuthenticator.Library.Platform.Windows.csproj +++ /dev/null @@ -1,57 +0,0 @@ - - - - Debug - AnyCPU - 8.0.30703 - 2.0 - {580DF75F-6D5D-409B-9F4C-64F8F9B0A9C6} - Library - Properties - RiftAuthenticator.Library.Platform.Windows - RiftAuthenticator.Library.Platform.Windows - v4.0 - 512 - Client - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - - - - - - - - - - {E31E2621-6D52-49A9-B7D4-AC75862518D8} - RiftAuthenticator.Library - - - - - \ No newline at end of file diff --git a/RiftAuthenticator.Library.Registry/Account.cs b/RiftAuthenticator.Library.Registry/Account.cs deleted file mode 100644 index c813115..0000000 --- a/RiftAuthenticator.Library.Registry/Account.cs +++ /dev/null @@ -1,80 +0,0 @@ -/** - * This file is part of RIFT™ Authenticator for Windows. - * - * RIFT™ Authenticator for Windows is free software: you can redistribute - * it and/or modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * RIFT™ Authenticator for Windows is distributed in the hope that it will - * be useful, but WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with RIFT™ Authenticator for Windows. If not, see - * . - */ - -using System; -using System.Collections.Generic; -using System.Text; - -namespace RiftAuthenticator.Library.Registry -{ - public class Account : RiftAuthenticator.Library.AccountBase - { - const string ConfigVersionKey = "Version"; - const string DescriptionKey = "Description"; - const string DeviceIdKey = "DeviceId"; - const string SerialKeyKey = "SerialKey"; - const string SecretKeyKey = "SecretKey"; - const string TimeOffsetKey = "TimeOffset"; - - internal static readonly string RiftAuthenticatorRegistryKey = "SOFTWARE\\Public Domain\\Rift Authenticator"; - - internal static string GetAccountRegistryPathPart(int accountIndex) - { - return string.Format("Account {0}", accountIndex + 1); - } - - internal static string GetAccountRegistryPath(int accountIndex) - { - return string.Format("{0}\\{1}", RiftAuthenticatorRegistryKey, GetAccountRegistryPathPart(accountIndex)); - } - - public override void Load(IAccountManager accountManager, int accountIndex) - { - using (var key = Microsoft.Win32.Registry.CurrentUser.CreateSubKey(GetAccountRegistryPath(accountIndex))) - { - var configVersion = Convert.ToInt32(key.GetValue(ConfigVersionKey, 0)); - Description = (string)key.GetValue(DescriptionKey, string.Format("Account {0}", accountIndex + 1)); - DeviceId = (string)key.GetValue(DeviceIdKey, string.Empty); - SerialKey = (string)key.GetValue(SerialKeyKey, string.Empty); - SecretKey = (string)key.GetValue(SecretKeyKey, string.Empty); - TimeOffset = Convert.ToInt64(key.GetValue(TimeOffsetKey, 0)); - switch (configVersion) - { - case 0: - break; - case 1: - SecretKey = TrionServer.SecretKeyEncryption.Decrypt(this, SecretKey); - break; - } - } - } - - public override void Save(IAccountManager accountManager, int accountIndex) - { - using (var key = Microsoft.Win32.Registry.CurrentUser.CreateSubKey(GetAccountRegistryPath(accountIndex))) - { - key.SetValue(ConfigVersionKey, 1); - key.SetValue(DescriptionKey, Description ?? string.Empty); - key.SetValue(DeviceIdKey, DeviceId ?? string.Empty); - key.SetValue(SerialKeyKey, SerialKey ?? string.Empty); - key.SetValue(SecretKeyKey, TrionServer.SecretKeyEncryption.Encrypt(this, SecretKey ?? string.Empty)); - key.SetValue(TimeOffsetKey, TimeOffset); - } - } - } -} diff --git a/RiftAuthenticator.Library.Registry/AccountManager.cs b/RiftAuthenticator.Library.Registry/AccountManager.cs deleted file mode 100644 index a1cdd1a..0000000 --- a/RiftAuthenticator.Library.Registry/AccountManager.cs +++ /dev/null @@ -1,61 +0,0 @@ -/** - * This file is part of RIFT™ Authenticator for Windows. - * - * RIFT™ Authenticator for Windows is free software: you can redistribute - * it and/or modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * RIFT™ Authenticator for Windows is distributed in the hope that it will - * be useful, but WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with RIFT™ Authenticator for Windows. If not, see - * . - */ - -using System; -using System.Collections.Generic; -using System.Text; - -namespace RiftAuthenticator.Library.Registry -{ - public class AccountManager : RiftAuthenticator.Library.AccountManagerBase - { - const string StoredAccountsKey = "StoredAccounts"; - - public AccountManager() - { - } - - public override IAccount CreateAccount() - { - return new Account(); - } - - protected override int StoredAccounts - { - get - { - using (var key = Microsoft.Win32.Registry.CurrentUser.CreateSubKey(Account.RiftAuthenticatorRegistryKey)) - { - if (!new List(key.GetValueNames()).Contains(StoredAccountsKey)) - { - if (new List(key.GetSubKeyNames()).Contains(Account.GetAccountRegistryPathPart(0))) - key.SetValue(StoredAccountsKey, 1); - } - return Convert.ToInt32(key.GetValue(StoredAccountsKey, 0)); - } - } - set - { - using (var key = Microsoft.Win32.Registry.CurrentUser.CreateSubKey(Account.RiftAuthenticatorRegistryKey)) - { - key.SetValue(StoredAccountsKey, value); - } - } - } - } -} diff --git a/RiftAuthenticator.Library.Registry/Properties/AssemblyInfo.cs b/RiftAuthenticator.Library.Registry/Properties/AssemblyInfo.cs deleted file mode 100644 index 24fcca9..0000000 --- a/RiftAuthenticator.Library.Registry/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,54 +0,0 @@ -/** - * This file is part of RIFT™ Authenticator for Windows. - * - * RIFT™ Authenticator for Windows is free software: you can redistribute - * it and/or modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * RIFT™ Authenticator for Windows is distributed in the hope that it will - * be useful, but WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with RIFT™ Authenticator for Windows. If not, see - * . - */ - -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// Allgemeine Informationen über eine Assembly werden über die folgenden -// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern, -// die mit einer Assembly verknüpft sind. -[assembly: AssemblyTitle("RiftAuthenticator.Library.Registry")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("RIFT™ Authenticator for Windows Project")] -[assembly: AssemblyProduct("RiftAuthenticator.Library.Registry")] -[assembly: AssemblyCopyright("Copyright © RIFT™ Authenticator for Windows Project 2011")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Durch Festlegen von ComVisible auf "false" werden die Typen in dieser Assembly unsichtbar -// für COM-Komponenten. Wenn Sie auf einen Typ in dieser Assembly von -// COM zugreifen müssen, legen Sie das ComVisible-Attribut für diesen Typ auf "true" fest. -[assembly: ComVisible(false)] - -// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird -[assembly: Guid("3d99cdff-7ae8-4257-b9c3-6341449f24a7")] - -// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten: -// -// Hauptversion -// Nebenversion -// Buildnummer -// Revision -// -// Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern -// übernehmen, indem Sie "*" eingeben: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.1.2.0")] -[assembly: AssemblyFileVersion("1.1.2.0")] diff --git a/RiftAuthenticator.Library.Registry/RiftAuthenticator.Library.Registry.csproj b/RiftAuthenticator.Library.Registry/RiftAuthenticator.Library.Registry.csproj deleted file mode 100644 index d60582c..0000000 --- a/RiftAuthenticator.Library.Registry/RiftAuthenticator.Library.Registry.csproj +++ /dev/null @@ -1,58 +0,0 @@ - - - - Debug - AnyCPU - 8.0.30703 - 2.0 - {488805C2-F094-4AB2-AAF4-0A555F36095A} - Library - Properties - RiftAuthenticator.Library.Registry - RiftAuthenticator.Library.Registry - v4.0 - 512 - Client - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - - - - - - - - - - - {E31E2621-6D52-49A9-B7D4-AC75862518D8} - RiftAuthenticator.Library - - - - - \ No newline at end of file diff --git a/RiftAuthenticator.Library/AccountBase.cs b/RiftAuthenticator.Library/AccountBase.cs deleted file mode 100644 index 1c678da..0000000 --- a/RiftAuthenticator.Library/AccountBase.cs +++ /dev/null @@ -1,129 +0,0 @@ -/* - * This file is part of RIFT™ Authenticator for Windows. - * - * RIFT™ Authenticator for Windows is free software: you can redistribute - * it and/or modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * RIFT™ Authenticator for Windows is distributed in the hope that it will - * be useful, but WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with RIFT™ Authenticator for Windows. If not, see - * . - */ - -using System; -using System.Collections.Generic; -using System.Text; - -namespace RiftAuthenticator.Library -{ - /// - /// This is the base account class where all account objects are derived from - /// - public abstract class AccountBase : IAccount - { - static readonly System.Text.Encoding Encoding = System.Text.Encoding.UTF8; - - /// - /// Description for the account (any text) - /// - public string Description { get; set; } - /// - /// The device ID where the authenticator account is bound to - /// - public string DeviceId { get; set; } - /// - /// The serial key for the authenticator (created by TRION) - /// - public string SerialKey { get; set; } - /// - /// The shared secret for the authenticator - /// - public string SecretKey { get; set; } - /// - /// Time difference in milliseconds between the client and the TRION server - /// - public long TimeOffset { get; set; } - - /// - /// Add dashes to the serial key - /// - public string FormattedSerialKey - { - get - { - var result = new StringBuilder(); - if (!string.IsNullOrEmpty(SerialKey)) - { - for (int i = 0; i < SerialKey.Length; i += 4) - { - var remaining = Math.Min(SerialKey.Length - i, 4); - if (i != 0) - result.Append("-"); - result.Append(SerialKey.Substring(i, remaining)); - } - } - return result.ToString(); - } - } - - /// - /// Is this account empty? - /// - /// - /// Returns true if the authenticator is empty (i.e. not initialized, - /// but may have a description) - /// - public bool IsEmpty - { - get - { - return string.IsNullOrEmpty(DeviceId) || string.IsNullOrEmpty(SecretKey); - } - } - - /// - /// Load the account information from the underlying storage device - /// - /// The account manager that this account is assigned to - /// The index that this account has in the list of accounts in the account manager (must be unique) - public abstract void Load(IAccountManager accountManager, int accountIndex); - /// - /// Save the account information to the underlying storage device - /// - /// The account manager that this account is assigned to - /// The index that this account has in the list of accounts in the account manager (must be unique) - public abstract void Save(IAccountManager accountManager, int accountIndex); - - /// - /// Calculates a login for RIFT - /// - /// - public LoginToken CalculateToken() - { - var secretKey = Encoding.GetBytes(SecretKey); - var now = DateTime.Now; - var nowMillis = Util.TimeToMillis(now); - long intervalNumber = (nowMillis + TimeOffset) / 30000; - // Value must be written as big endian byte buffer - var intervalByteBuffer = Mono.DataConverter.Pack("^l", intervalNumber); - - var digest = new System.Security.Cryptography.HMACSHA1(secretKey); - var hash = digest.ComputeHash(intervalByteBuffer); - - var rawTokenPos = hash[hash.Length - 1] & 0xF; - - // Raw token value must be read as big endian 32 bit integer value - var rawTokenValue = (long)(uint)Mono.DataConverter.Unpack("^I", hash, rawTokenPos)[0]; - var remainingMillis = ((intervalNumber + 1) * 30000 - TimeOffset) - nowMillis; - - var tokenValue = rawTokenValue % 100000000; - return new LoginToken(string.Format("{0:D08}", tokenValue), remainingMillis); - } - } -} diff --git a/RiftAuthenticator.Library/AccountManagerBase.cs b/RiftAuthenticator.Library/AccountManagerBase.cs deleted file mode 100644 index 4ba7c63..0000000 --- a/RiftAuthenticator.Library/AccountManagerBase.cs +++ /dev/null @@ -1,131 +0,0 @@ -/* - * This file is part of RIFT™ Authenticator for Windows. - * - * RIFT™ Authenticator for Windows is free software: you can redistribute - * it and/or modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * RIFT™ Authenticator for Windows is distributed in the hope that it will - * be useful, but WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with RIFT™ Authenticator for Windows. If not, see - * . - */ - -using System; -using System.Collections.Generic; -using System.Text; - -namespace RiftAuthenticator.Library -{ - /// - /// This is the base class for all account manager objects - /// - public abstract class AccountManagerBase : List, IAccountManager - { - /// - /// Creates a new account object - /// - /// The new account object - public abstract IAccount CreateAccount(); - - /// - /// Set or get the number of stored accounts - /// - protected abstract int StoredAccounts { get; set; } - - /// - /// Load all account objects from the underlying storage device - /// - public virtual void LoadAccounts() - { - var accounts = new List(); - for (int i = 0; i != StoredAccounts; ++i) - { - var account = CreateAccount(); - account.Load(this, i); - accounts.Add(account); - } - Clear(); - AddRange(accounts); - } - - /// - /// Save all account objects to the underlying storage device - /// - public virtual void SaveAccounts() - { - for (int i = 0; i != Count; ++i) - { - this[i].Save(this, i); - } - StoredAccounts = Count; - } - -#if !WINDOWS_PHONE - /// - /// Create a well known account manager object for a given account manager ID - /// - /// Account manager ID to create an account manager object for - /// The newly created account manager object - public static IAccountManager LoadAccountManager(string accountManagerId) - { - switch (accountManagerId) - { - case "win32": - case "registry": - case "RiftAuthenticator.Library.Registry": - accountManagerId = "RiftAuthenticator.Library.Registry"; - break; - case "fs": - case "file-system": - case "filesystem": - case "RiftAuthenticator.Library.FileSystem": - accountManagerId = "RiftAuthenticator.Library.FileSystem"; - break; - case "is": - case "isolated-storage": - case "storage": - accountManagerId = "RiftAuthenticator.Library.IsolatedStorage"; - break; - default: - throw new NotSupportedException(accountManagerId); - } - var assemblyName = accountManagerId; - var typeName = string.Format("{0}.AccountManager", accountManagerId); - return (RiftAuthenticator.Library.IAccountManager)Activator.CreateInstance(assemblyName, typeName).Unwrap(); - } -#endif - - /// - /// Find an account object with a given ID - /// - /// - /// A valid account ID is: - /// - the index into the account list - /// - the description - /// - the device ID - /// - the authenticator serial key - /// - /// The ID to search for - /// The found account object or null - public IAccount FindAccount(string accountId) - { - Library.IAccount foundAccount = null; - for (int i = 0; i != Count; ++i) - { - var account = this[i]; - if (i.ToString() == accountId || account.Description == accountId || account.DeviceId == accountId || account.SerialKey == accountId) - { - foundAccount = account; - break; - } - } - return foundAccount; - } - } -} diff --git a/RiftAuthenticator.Library/AccountProxy.cs b/RiftAuthenticator.Library/AccountProxy.cs deleted file mode 100644 index e260d10..0000000 --- a/RiftAuthenticator.Library/AccountProxy.cs +++ /dev/null @@ -1,89 +0,0 @@ -/* - * This file is part of RIFT™ Authenticator for Windows. - * - * RIFT™ Authenticator for Windows is free software: you can redistribute - * it and/or modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * RIFT™ Authenticator for Windows is distributed in the hope that it will - * be useful, but WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with RIFT™ Authenticator for Windows. If not, see - * . - */ - -using System; -using System.Collections.Generic; -using System.Text; - -namespace RiftAuthenticator.Library -{ - /// - /// Proxy object for account objects - /// - /// - /// This object copies the data to and from the underlying account object only when - /// the load and save functions are called. - /// - public class AccountProxy : Library.AccountBase - { - /// - /// The underlying account object - /// - public Library.IAccount OriginalAccount { get; private set; } - - /// - /// Create an account proxy object - /// - /// The account object where the data gets loaded/saved from - public AccountProxy(Library.IAccount originalAccount) - { - OriginalAccount = originalAccount; - CopyDataFromOriginalAccount(); - } - - private void CopyDataFromOriginalAccount() - { - this.Description = OriginalAccount.Description; - this.DeviceId = OriginalAccount.DeviceId; - this.SerialKey = OriginalAccount.SerialKey; - this.SecretKey = OriginalAccount.SecretKey; - this.TimeOffset = OriginalAccount.TimeOffset; - } - - private void CopyDataToOriginalAccount() - { - OriginalAccount.Description = this.Description; - OriginalAccount.DeviceId = this.DeviceId; - OriginalAccount.SerialKey = this.SerialKey; - OriginalAccount.SecretKey = this.SecretKey; - OriginalAccount.TimeOffset = this.TimeOffset; - } - - /// - /// Load the account information from the underlying storage device - /// - /// The account manager that this account is assigned to - /// The index that this account has in the list of accounts in the account manager (must be unique) - public override void Load(IAccountManager accountManager, int accountIndex) - { - //OriginalAccount.Load(accountManager, accountIndex); - CopyDataFromOriginalAccount(); - } - - /// - /// Save the account information to the underlying storage device - /// - /// The account manager that this account is assigned to - /// The index that this account has in the list of accounts in the account manager (must be unique) - public override void Save(IAccountManager accountManager, int accountIndex) - { - CopyDataToOriginalAccount(); - //OriginalAccount.Save(accountManager, accountIndex); - } - } -} diff --git a/RiftAuthenticator.Library/DataConverter.cs b/RiftAuthenticator.Library/DataConverter.cs deleted file mode 100644 index 6c0f05c..0000000 --- a/RiftAuthenticator.Library/DataConverter.cs +++ /dev/null @@ -1,1101 +0,0 @@ -// -// Authors: -// Miguel de Icaza (miguel@novell.com) -// -// See the following url for documentation: -// http://www.mono-project.com/Mono_DataConvert -// -// Compilation Options: -// MONO_DATACONVERTER_PUBLIC: -// Makes the class public instead of the default internal. -// -// MONO_DATACONVERTER_STATIC_METHODS: -// Exposes the public static methods. -// -// TODO: -// Support for "DoubleWordsAreSwapped" for ARM devices -// -// Copyright (C) 2006 Novell, Inc (http://www.novell.com) -// -// Permission is hereby granted, free of charge, to any person obtaining -// a copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to -// permit persons to whom the Software is furnished to do so, subject to -// the following conditions: -// -// The above copyright notice and this permission notice shall be -// included in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -// -using System; -using System.Collections; -using System.Text; - -#pragma warning disable 3021 - -namespace Mono { - - internal abstract class DataConverter { - -// Disables the warning: CLS compliance checking will not be performed on -// `XXXX' because it is not visible from outside this assembly -#pragma warning disable 3019 - static DataConverter SwapConv = new SwapConverter (); - static DataConverter CopyConv = new CopyConverter (); - - public static readonly bool IsLittleEndian = BitConverter.IsLittleEndian; - - public abstract double GetDouble (byte [] data, int index); - public abstract float GetFloat (byte [] data, int index); - public abstract long GetInt64 (byte [] data, int index); - public abstract int GetInt32 (byte [] data, int index); - - public abstract short GetInt16 (byte [] data, int index); - - [CLSCompliant (false)] - public abstract uint GetUInt32 (byte [] data, int index); - [CLSCompliant (false)] - public abstract ushort GetUInt16 (byte [] data, int index); - [CLSCompliant (false)] - public abstract ulong GetUInt64 (byte [] data, int index); - - public abstract void PutBytes (byte [] dest, int destIdx, double value); - public abstract void PutBytes (byte [] dest, int destIdx, float value); - public abstract void PutBytes (byte [] dest, int destIdx, int value); - public abstract void PutBytes (byte [] dest, int destIdx, long value); - public abstract void PutBytes (byte [] dest, int destIdx, short value); - - [CLSCompliant (false)] - public abstract void PutBytes (byte [] dest, int destIdx, ushort value); - [CLSCompliant (false)] - public abstract void PutBytes (byte [] dest, int destIdx, uint value); - [CLSCompliant (false)] - public abstract void PutBytes (byte [] dest, int destIdx, ulong value); - - public byte[] GetBytes (double value) - { - byte [] ret = new byte [8]; - PutBytes (ret, 0, value); - return ret; - } - - public byte[] GetBytes (float value) - { - byte [] ret = new byte [4]; - PutBytes (ret, 0, value); - return ret; - } - - public byte[] GetBytes (int value) - { - byte [] ret = new byte [4]; - PutBytes (ret, 0, value); - return ret; - } - - public byte[] GetBytes (long value) - { - byte [] ret = new byte [8]; - PutBytes (ret, 0, value); - return ret; - } - - public byte[] GetBytes (short value) - { - byte [] ret = new byte [2]; - PutBytes (ret, 0, value); - return ret; - } - - [CLSCompliant (false)] - public byte[] GetBytes (ushort value) - { - byte [] ret = new byte [2]; - PutBytes (ret, 0, value); - return ret; - } - - [CLSCompliant (false)] - public byte[] GetBytes (uint value) - { - byte [] ret = new byte [4]; - PutBytes (ret, 0, value); - return ret; - } - - [CLSCompliant (false)] - public byte[] GetBytes (ulong value) - { - byte [] ret = new byte [8]; - PutBytes (ret, 0, value); - return ret; - } - - static public DataConverter LittleEndian { - get { - return BitConverter.IsLittleEndian ? CopyConv : SwapConv; - } - } - - static public DataConverter BigEndian { - get { - return BitConverter.IsLittleEndian ? SwapConv : CopyConv; - } - } - - static public DataConverter Native { - get { - return CopyConv; - } - } - - static int Align (int current, int align) - { - return ((current + align - 1) / align) * align; - } - - class PackContext { - // Buffer - public byte [] buffer; - int next; - - public string description; - public int i; // position in the description - public DataConverter conv; - public int repeat; - - // - // if align == -1, auto align to the size of the byte array - // if align == 0, do not do alignment - // Any other values aligns to that particular size - // - public int align; - - public void Add (byte [] group) - { - //Console.WriteLine ("Adding {0} bytes to {1} (next={2}", group.Length, - // buffer == null ? "null" : buffer.Length.ToString (), next); - - if (buffer == null){ - buffer = group; - next = group.Length; - return; - } - if (align != 0){ - if (align == -1) - next = Align (next, group.Length); - else - next = Align (next, align); - align = 0; - } - - if (next + group.Length > buffer.Length){ - byte [] nb = new byte [System.Math.Max (next, 16) * 2 + group.Length]; - Array.Copy (buffer, nb, buffer.Length); - Array.Copy (group, 0, nb, next, group.Length); - next = next + group.Length; - buffer = nb; - } else { - Array.Copy (group, 0, buffer, next, group.Length); - next += group.Length; - } - } - - public byte [] Get () - { - if (buffer == null) - return new byte [0]; - - if (buffer.Length != next){ - byte [] b = new byte [next]; - Array.Copy (buffer, b, next); - return b; - } - return buffer; - } - } - - // - // Format includes: - // Control: - // ^ Switch to big endian encoding - // _ Switch to little endian encoding - // % Switch to host (native) encoding - // ! aligns the next data type to its natural boundary (for strings this is 4). - // - // Types: - // s Int16 - // S UInt16 - // i Int32 - // I UInt32 - // l Int64 - // L UInt64 - // f float - // d double - // b byte - // c 1-byte signed character - // C 1-byte unsigned character - // z8 string encoded as UTF8 with 1-byte null terminator - // z6 string encoded as UTF16 with 2-byte null terminator - // z7 string encoded as UTF7 with 1-byte null terminator - // zb string encoded as BigEndianUnicode with 2-byte null terminator - // z3 string encoded as UTF32 with 4-byte null terminator - // z4 string encoded as UTF32 big endian with 4-byte null terminator - // $8 string encoded as UTF8 - // $6 string encoded as UTF16 - // $7 string encoded as UTF7 - // $b string encoded as BigEndianUnicode - // $3 string encoded as UTF32 - // $4 string encoded as UTF-32 big endian encoding - // x null byte - // - // Repeats, these are prefixes: - // N a number between 1 and 9, indicates a repeat count (process N items - // with the following datatype - // [N] For numbers larger than 9, use brackets, for example [20] - // * Repeat the next data type until the arguments are exhausted - // - static public byte [] Pack (string description, params object [] args) - { - int argn = 0; - PackContext b = new PackContext (); - b.conv = CopyConv; - b.description = description; - - for (b.i = 0; b.i < description.Length; ){ - object oarg; - - if (argn < args.Length) - oarg = args [argn]; - else { - if (b.repeat != 0) - break; - - oarg = null; - } - - int save = b.i; - - if (PackOne (b, oarg)){ - argn++; - if (b.repeat > 0){ - if (--b.repeat > 0) - b.i = save; - else - b.i++; - } else - b.i++; - } else - b.i++; - } - return b.Get (); - } - - static public byte [] PackEnumerable (string description, IEnumerable args) - { - PackContext b = new PackContext (); - b.conv = CopyConv; - b.description = description; - - IEnumerator enumerator = args.GetEnumerator (); - bool ok = enumerator.MoveNext (); - - for (b.i = 0; b.i < description.Length; ){ - object oarg; - - if (ok) - oarg = enumerator.Current; - else { - if (b.repeat != 0) - break; - oarg = null; - } - - int save = b.i; - - if (PackOne (b, oarg)){ - ok = enumerator.MoveNext (); - if (b.repeat > 0){ - if (--b.repeat > 0) - b.i = save; - else - b.i++; - } else - b.i++; - } else - b.i++; - } - return b.Get (); - } - - // - // Packs one datum `oarg' into the buffer `b', using the string format - // in `description' at position `i' - // - // Returns: true if we must pick the next object from the list - // - static bool PackOne (PackContext b, object oarg) - { - int n; - - switch (b.description [b.i]){ - case '^': - b.conv = BigEndian; - return false; - case '_': - b.conv = LittleEndian; - return false; - case '%': - b.conv = Native; - return false; - - case '!': - b.align = -1; - return false; - - case 'x': - b.Add (new byte [] { 0 }); - return false; - - // Type Conversions - case 'i': - b.Add (b.conv.GetBytes (Convert.ToInt32 (oarg))); - break; - - case 'I': - b.Add (b.conv.GetBytes (Convert.ToUInt32 (oarg))); - break; - - case 's': - b.Add (b.conv.GetBytes (Convert.ToInt16 (oarg))); - break; - - case 'S': - b.Add (b.conv.GetBytes (Convert.ToUInt16 (oarg))); - break; - - case 'l': - b.Add (b.conv.GetBytes (Convert.ToInt64 (oarg))); - break; - - case 'L': - b.Add (b.conv.GetBytes (Convert.ToUInt64 (oarg))); - break; - - case 'f': - b.Add (b.conv.GetBytes (Convert.ToSingle (oarg))); - break; - - case 'd': - b.Add (b.conv.GetBytes (Convert.ToDouble (oarg))); - break; - - case 'b': - b.Add (new byte [] { Convert.ToByte (oarg) }); - break; - - case 'c': - b.Add (new byte [] { (byte) (Convert.ToSByte (oarg)) }); - break; - - case 'C': - b.Add (new byte [] { Convert.ToByte (oarg) }); - break; - - // Repeat acount; - case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - b.repeat = ((short) b.description [b.i]) - ((short) '0'); - return false; - - case '*': - b.repeat = Int32.MaxValue; - return false; - - case '[': - int count = -1, j; - - for (j = b.i+1; j < b.description.Length; j++){ - if (b.description [j] == ']') - break; - n = ((short) b.description [j]) - ((short) '0'); - if (n >= 0 && n <= 9){ - if (count == -1) - count = n; - else - count = count * 10 + n; - } - } - if (count == -1) - throw new ArgumentException ("invalid size specification"); - b.i = j; - b.repeat = count; - return false; - - case '$': case 'z': - bool add_null = b.description [b.i] == 'z'; - b.i++; - if (b.i >= b.description.Length) - throw new ArgumentException ("$ description needs a type specified", "description"); - char d = b.description [b.i]; - Encoding e; - - switch (d){ - case '8': - e = Encoding.UTF8; - n = 1; - break; - case '6': - e = Encoding.Unicode; - n = 2; - break; - case 'b': - e = Encoding.BigEndianUnicode; - n = 2; - break; - default: - throw new ArgumentException ("Invalid format for $ specifier", "description"); - } - if (b.align == -1) - b.align = 4; - b.Add (e.GetBytes (Convert.ToString (oarg))); - if (add_null) - b.Add (new byte [n]); - break; - default: - throw new ArgumentException (String.Format ("invalid format specified `{0}'", - b.description [b.i])); - } - return true; - } - - static bool Prepare (byte [] buffer, ref int idx, int size, ref bool align) - { - if (align){ - idx = Align (idx, size); - align = false; - } - if (idx + size > buffer.Length){ - idx = buffer.Length; - return false; - } - return true; - } - - static public IList Unpack (string description, byte [] buffer, int startIndex) - { - DataConverter conv = CopyConv; - var result = new System.Collections.Generic.List(); - int idx = startIndex; - bool align = false; - int repeat = 0, n; - - for (int i = 0; i < description.Length && idx < buffer.Length; ){ - int save = i; - - switch (description [i]){ - case '^': - conv = BigEndian; - break; - case '_': - conv = LittleEndian; - break; - case '%': - conv = Native; - break; - case 'x': - idx++; - break; - - case '!': - align = true; - break; - - // Type Conversions - case 'i': - if (Prepare (buffer, ref idx, 4, ref align)){ - result.Add (conv.GetInt32 (buffer, idx)); - idx += 4; - } - break; - - case 'I': - if (Prepare (buffer, ref idx, 4, ref align)){ - result.Add (conv.GetUInt32 (buffer, idx)); - idx += 4; - } - break; - - case 's': - if (Prepare (buffer, ref idx, 2, ref align)){ - result.Add (conv.GetInt16 (buffer, idx)); - idx += 2; - } - break; - - case 'S': - if (Prepare (buffer, ref idx, 2, ref align)){ - result.Add (conv.GetUInt16 (buffer, idx)); - idx += 2; - } - break; - - case 'l': - if (Prepare (buffer, ref idx, 8, ref align)){ - result.Add (conv.GetInt64 (buffer, idx)); - idx += 8; - } - break; - - case 'L': - if (Prepare (buffer, ref idx, 8, ref align)){ - result.Add (conv.GetUInt64 (buffer, idx)); - idx += 8; - } - break; - - case 'f': - if (Prepare (buffer, ref idx, 4, ref align)){ - result.Add (conv.GetFloat (buffer, idx)); - idx += 4; - } - break; - - case 'd': - if (Prepare (buffer, ref idx, 8, ref align)){ - result.Add (conv.GetDouble (buffer, idx)); - idx += 8; - } - break; - - case 'b': - if (Prepare (buffer, ref idx, 1, ref align)){ - result.Add (buffer [idx]); - idx++; - } - break; - - case 'c': case 'C': - if (Prepare (buffer, ref idx, 1, ref align)){ - char c; - - if (description [i] == 'c') - c = ((char) ((sbyte)buffer [idx])); - else - c = ((char) ((byte)buffer [idx])); - - result.Add (c); - idx++; - } - break; - - // Repeat acount; - case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - repeat = ((short) description [i]) - ((short) '0'); - save = i + 1; - break; - - case '*': - repeat = Int32.MaxValue; - break; - - case '[': - int count = -1, j; - - for (j = i+1; j < description.Length; j++){ - if (description [j] == ']') - break; - n = ((short) description [j]) - ((short) '0'); - if (n >= 0 && n <= 9){ - if (count == -1) - count = n; - else - count = count * 10 + n; - } - } - if (count == -1) - throw new ArgumentException ("invalid size specification"); - i = j; - save = i + 1; - repeat = count; - break; - - case '$': case 'z': - // bool with_null = description [i] == 'z'; - i++; - if (i >= description.Length) - throw new ArgumentException ("$ description needs a type specified", "description"); - char d = description [i]; - Encoding e; - if (align){ - idx = Align (idx, 4); - align = false; - } - if (idx >= buffer.Length) - break; - - switch (d){ - case '8': - e = Encoding.UTF8; - n = 1; - break; - case '6': - e = Encoding.Unicode; - n = 2; - break; - case 'b': - e = Encoding.BigEndianUnicode; - n = 2; - break; - default: - throw new ArgumentException ("Invalid format for $ specifier", "description"); - } - int k = idx; - switch (n){ - case 1: - for (; k < buffer.Length && buffer [k] != 0; k++) - ; - result.Add (e.GetChars (buffer, idx, k-idx)); - if (k == buffer.Length) - idx = k; - else - idx = k+1; - break; - - case 2: - for (; k < buffer.Length; k++){ - if (k+1 == buffer.Length){ - k++; - break; - } - if (buffer [k] == 0 && buffer [k+1] == 0) - break; - } - result.Add (e.GetChars (buffer, idx, k-idx)); - if (k == buffer.Length) - idx = k; - else - idx = k+2; - break; - - case 4: - for (; k < buffer.Length; k++){ - if (k+3 >= buffer.Length){ - k = buffer.Length; - break; - } - if (buffer[k]==0 && buffer[k+1] == 0 && buffer[k+2] == 0 && buffer[k+3]== 0) - break; - } - result.Add (e.GetChars (buffer, idx, k-idx)); - if (k == buffer.Length) - idx = k; - else - idx = k+4; - break; - } - break; - default: - throw new ArgumentException (String.Format ("invalid format specified `{0}'", - description [i])); - } - - if (repeat > 0){ - if (--repeat > 0) - i = save; - } else - i++; - } - return result; - } - - internal void Check (byte [] dest, int destIdx, int size) - { - if (dest == null) - throw new ArgumentNullException ("dest"); - if (destIdx < 0 || destIdx > dest.Length - size) - throw new ArgumentException ("destIdx"); - } - - class CopyConverter : DataConverter { - public override double GetDouble (byte [] data, int index) - { - if (data == null) - throw new ArgumentNullException ("data"); - if (data.Length - index < 8) - throw new ArgumentException ("index"); - if (index < 0) - throw new ArgumentException ("index"); - - double ret = System.BitConverter.ToDouble(data, index); - - return ret; - } - - public override ulong GetUInt64 (byte [] data, int index) - { - if (data == null) - throw new ArgumentNullException ("data"); - if (data.Length - index < 8) - throw new ArgumentException ("index"); - if (index < 0) - throw new ArgumentException ("index"); - - ulong ret = BitConverter.ToUInt64(data, index); - - return ret; - } - - public override long GetInt64 (byte [] data, int index) - { - if (data == null) - throw new ArgumentNullException ("data"); - if (data.Length - index < 8) - throw new ArgumentException ("index"); - if (index < 0) - throw new ArgumentException ("index"); - - long ret = BitConverter.ToInt64(data, index); - - return ret; - } - - public override float GetFloat (byte [] data, int index) - { - if (data == null) - throw new ArgumentNullException ("data"); - if (data.Length - index < 4) - throw new ArgumentException ("index"); - if (index < 0) - throw new ArgumentException ("index"); - - float ret = BitConverter.ToSingle(data, index); - - return ret; - } - - public override int GetInt32 (byte [] data, int index) - { - if (data == null) - throw new ArgumentNullException ("data"); - if (data.Length - index < 4) - throw new ArgumentException ("index"); - if (index < 0) - throw new ArgumentException ("index"); - - int ret = BitConverter.ToInt32(data, index); - - return ret; - } - - public override uint GetUInt32 (byte [] data, int index) - { - if (data == null) - throw new ArgumentNullException ("data"); - if (data.Length - index < 4) - throw new ArgumentException ("index"); - if (index < 0) - throw new ArgumentException ("index"); - - uint ret = BitConverter.ToUInt32(data, index); - - return ret; - } - - public override short GetInt16 (byte [] data, int index) - { - if (data == null) - throw new ArgumentNullException ("data"); - if (data.Length - index < 2) - throw new ArgumentException ("index"); - if (index < 0) - throw new ArgumentException ("index"); - - short ret = BitConverter.ToInt16(data, index); - - return ret; - } - - public override ushort GetUInt16 (byte [] data, int index) - { - if (data == null) - throw new ArgumentNullException ("data"); - if (data.Length - index < 2) - throw new ArgumentException ("index"); - if (index < 0) - throw new ArgumentException ("index"); - - ushort ret = BitConverter.ToUInt16(data, index); - - return ret; - } - - public override void PutBytes (byte [] dest, int destIdx, double value) - { - Check (dest, destIdx, 8); - var src = BitConverter.GetBytes(value); - Array.Copy(src, 0, dest, destIdx, src.Length); - } - - public override void PutBytes (byte [] dest, int destIdx, float value) - { - Check (dest, destIdx, 4); - var src = BitConverter.GetBytes(value); - Array.Copy(src, 0, dest, destIdx, src.Length); - } - - public override void PutBytes (byte [] dest, int destIdx, int value) - { - Check (dest, destIdx, 4); - var src = BitConverter.GetBytes(value); - Array.Copy(src, 0, dest, destIdx, src.Length); - } - - public override void PutBytes (byte [] dest, int destIdx, uint value) - { - Check (dest, destIdx, 4); - var src = BitConverter.GetBytes(value); - Array.Copy(src, 0, dest, destIdx, src.Length); - } - - public override void PutBytes (byte [] dest, int destIdx, long value) - { - Check (dest, destIdx, 8); - var src = BitConverter.GetBytes(value); - Array.Copy(src, 0, dest, destIdx, src.Length); - } - - public override void PutBytes (byte [] dest, int destIdx, ulong value) - { - Check (dest, destIdx, 8); - var src = BitConverter.GetBytes(value); - Array.Copy(src, 0, dest, destIdx, src.Length); - } - - public override void PutBytes (byte [] dest, int destIdx, short value) - { - Check (dest, destIdx, 2); - var src = BitConverter.GetBytes(value); - Array.Copy(src, 0, dest, destIdx, src.Length); - } - - public override void PutBytes (byte [] dest, int destIdx, ushort value) - { - Check (dest, destIdx, 2); - var src = BitConverter.GetBytes(value); - Array.Copy(src, 0, dest, destIdx, src.Length); - } - } - - class SwapConverter : DataConverter { - protected byte[] SwapBytes(byte[] data) - { - return SwapBytes(data, 0, data.Length); - } - - protected byte[] SwapBytes(byte[] data, int index, int length) - { - if (data == null) - throw new ArgumentNullException("data"); - if (data.Length - index < length) - throw new ArgumentException("index"); - if (index < 0) - throw new ArgumentException("index"); - if (length < 0) - throw new ArgumentException("length"); - byte[] result = new byte[length]; - int startIndexDst = 0; - int endIndexDst = length - 1; - int startIndexSrc = index; - int endIndexSrc = index + length - 1; - int remainingSwaps = length >> 1; - while (remainingSwaps-- != 0) - { - result[startIndexDst++] = data[endIndexSrc--]; - result[endIndexDst--] = data[startIndexSrc++]; - } - if ((length & 1) != 0) - result[startIndexDst] = data[endIndexSrc]; - return result; - } - - public override double GetDouble (byte [] data, int index) - { - if (data == null) - throw new ArgumentNullException ("data"); - if (data.Length - index < 8) - throw new ArgumentException ("index"); - if (index < 0) - throw new ArgumentException ("index"); - - double ret = BitConverter.ToDouble(SwapBytes(data, index, 8), 0); - - return ret; - } - - public override ulong GetUInt64 (byte [] data, int index) - { - if (data == null) - throw new ArgumentNullException ("data"); - if (data.Length - index < 8) - throw new ArgumentException ("index"); - if (index < 0) - throw new ArgumentException ("index"); - - ulong ret = BitConverter.ToUInt64(SwapBytes(data, index, 8), 0); - - return ret; - } - - public override long GetInt64 (byte [] data, int index) - { - if (data == null) - throw new ArgumentNullException ("data"); - if (data.Length - index < 8) - throw new ArgumentException ("index"); - if (index < 0) - throw new ArgumentException ("index"); - - long ret = BitConverter.ToInt64(SwapBytes(data, index, 8), 0); - - return ret; - } - - public override float GetFloat (byte [] data, int index) - { - if (data == null) - throw new ArgumentNullException ("data"); - if (data.Length - index < 4) - throw new ArgumentException ("index"); - if (index < 0) - throw new ArgumentException ("index"); - - float ret = BitConverter.ToSingle(SwapBytes(data, index, 4), 0); - - return ret; - } - - public override int GetInt32 (byte [] data, int index) - { - if (data == null) - throw new ArgumentNullException ("data"); - if (data.Length - index < 4) - throw new ArgumentException ("index"); - if (index < 0) - throw new ArgumentException ("index"); - - int ret = BitConverter.ToInt32(SwapBytes(data, index, 4), 0); - - return ret; - } - - public override uint GetUInt32 (byte [] data, int index) - { - if (data == null) - throw new ArgumentNullException ("data"); - if (data.Length - index < 4) - throw new ArgumentException ("index"); - if (index < 0) - throw new ArgumentException ("index"); - - uint ret = BitConverter.ToUInt32(SwapBytes(data, index, 4), 0); - - return ret; - } - - public override short GetInt16 (byte [] data, int index) - { - if (data == null) - throw new ArgumentNullException ("data"); - if (data.Length - index < 2) - throw new ArgumentException ("index"); - if (index < 0) - throw new ArgumentException ("index"); - - short ret = BitConverter.ToInt16(SwapBytes(data, index, 2), index); - - return ret; - } - - public override ushort GetUInt16 (byte [] data, int index) - { - if (data == null) - throw new ArgumentNullException ("data"); - if (data.Length - index < 2) - throw new ArgumentException ("index"); - if (index < 0) - throw new ArgumentException ("index"); - - ushort ret = BitConverter.ToUInt16(SwapBytes(data, index, 2), index); - - return ret; - } - - public override void PutBytes (byte [] dest, int destIdx, double value) - { - Check (dest, destIdx, 8); - var src = SwapBytes(BitConverter.GetBytes(value)); - Array.Copy(src, 0, dest, destIdx, src.Length); - } - - public override void PutBytes (byte [] dest, int destIdx, float value) - { - Check (dest, destIdx, 4); - var src = SwapBytes(BitConverter.GetBytes(value)); - Array.Copy(src, 0, dest, destIdx, src.Length); - } - - public override void PutBytes (byte [] dest, int destIdx, int value) - { - Check (dest, destIdx, 4); - var src = SwapBytes(BitConverter.GetBytes(value)); - Array.Copy(src, 0, dest, destIdx, src.Length); - } - - public override void PutBytes (byte [] dest, int destIdx, uint value) - { - Check (dest, destIdx, 4); - var src = SwapBytes(BitConverter.GetBytes(value)); - Array.Copy(src, 0, dest, destIdx, src.Length); - } - - public override void PutBytes (byte [] dest, int destIdx, long value) - { - Check (dest, destIdx, 8); - var src = SwapBytes(BitConverter.GetBytes(value)); - Array.Copy(src, 0, dest, destIdx, src.Length); - } - - public override void PutBytes (byte [] dest, int destIdx, ulong value) - { - Check (dest, destIdx, 8); - var src = SwapBytes(BitConverter.GetBytes(value)); - Array.Copy(src, 0, dest, destIdx, src.Length); - } - - public override void PutBytes (byte [] dest, int destIdx, short value) - { - Check (dest, destIdx, 2); - var src = SwapBytes(BitConverter.GetBytes(value)); - Array.Copy(src, 0, dest, destIdx, src.Length); - } - - public override void PutBytes (byte [] dest, int destIdx, ushort value) - { - Check (dest, destIdx, 2); - var src = SwapBytes(BitConverter.GetBytes(value)); - Array.Copy(src, 0, dest, destIdx, src.Length); - } - } - } -} diff --git a/RiftAuthenticator.Library/Helpers/AsyncResult.cs b/RiftAuthenticator.Library/Helpers/AsyncResult.cs deleted file mode 100644 index 78b9ad2..0000000 --- a/RiftAuthenticator.Library/Helpers/AsyncResult.cs +++ /dev/null @@ -1,38 +0,0 @@ -using System; -using System.Diagnostics; - -namespace RiftAuthenticator.Library.Helpers -{ - internal partial class AsyncResult : AsyncResultNoResult - { - // Field set when operation completes - private TResult m_result = default(TResult); - - protected void SetResult(TResult result) - { - m_result = result; - } - - protected AsyncResult( - AsyncCallback asyncCallback, - object state, - object owner, - string operationId) : - base(asyncCallback, state, owner, operationId) - { - } - - new public static TResult End( - IAsyncResult result, object owner, string operationId) - { - AsyncResult asyncResult = result as AsyncResult; - Debug.Assert(asyncResult != null); - - // Wait until operation has completed - AsyncResultNoResult.End(result, owner, operationId); - - // Return the result (if above didn't throw) - return asyncResult.m_result; - } - } -} diff --git a/RiftAuthenticator.Library/Helpers/AsyncResultNoResult.cs b/RiftAuthenticator.Library/Helpers/AsyncResultNoResult.cs deleted file mode 100644 index b333a23..0000000 --- a/RiftAuthenticator.Library/Helpers/AsyncResultNoResult.cs +++ /dev/null @@ -1,218 +0,0 @@ -using System; -using System.Threading; - -namespace RiftAuthenticator.Library.Helpers -{ - internal partial class AsyncResultNoResult : IAsyncResult - { - // Fields set at construction which never change while - // operation is pending - private readonly AsyncCallback m_AsyncCallback; - private readonly Object m_AsyncState; - - // Fields set at construction which do change after - // operation completes - private const Int32 c_StatePending = 0; - private const Int32 c_StateCompletedSynchronously = 1; - private const Int32 c_StateCompletedAsynchronously = 2; - private volatile Int32 m_CompletedState = c_StatePending; - - // Field that may or may not get set depending on usage - private ManualResetEvent m_AsyncWaitHandle; - - // Fields set when operation completes - private Exception m_exception; - - /// - /// The object which started the operation. - /// - private object m_owner; - - /// - /// Used to verify BeginXXX and EndXXX calls match. - /// - private string m_operationId; - - protected AsyncResultNoResult( - AsyncCallback asyncCallback, - object state, - object owner, - string operationId) - { - m_AsyncCallback = asyncCallback; - m_AsyncState = state; - m_owner = owner; - m_operationId = - String.IsNullOrEmpty(operationId) ? String.Empty : operationId; - } - - internal virtual void Process() - { - // Starts processing of the operation. - } - - protected bool Complete(Exception exception) - { - return this.Complete(exception, false /*completedSynchronously*/); - } - - protected bool Complete(Exception exception, bool completedSynchronously) - { - bool result = false; - - // The m_CompletedState field MUST be set prior calling the callback - int completedState = m_CompletedState; - Int32 prevState = Interlocked.Exchange(ref completedState, - completedSynchronously ? c_StateCompletedSynchronously : - c_StateCompletedAsynchronously); - m_CompletedState = completedState; - if (prevState == c_StatePending) - { - // Passing null for exception means no error occurred. - // This is the common case - m_exception = exception; - - // Do any processing before completion. - this.Completing(exception, completedSynchronously); - - // If the event exists, set it - if (m_AsyncWaitHandle != null) m_AsyncWaitHandle.Set(); - - this.MakeCallback(m_AsyncCallback, this); - - // Do any final processing after completion - this.Completed(exception, completedSynchronously); - - result = true; - } - - return result; - } - - private void CheckUsage(object owner, string operationId) - { - if (!object.ReferenceEquals(owner, m_owner)) - { - throw new InvalidOperationException( - "End was called on a different object than Begin."); - } - - // Reuse the operation ID to detect multiple calls to end. - if (object.ReferenceEquals(null, m_operationId)) - { - throw new InvalidOperationException( - "End was called multiple times for this operation."); - } - - if (!String.Equals(operationId, m_operationId)) - { - throw new ArgumentException( - "End operation type was different than Begin."); - } - - // Mark that End was already called. - m_operationId = null; - } - - public static void End( - IAsyncResult result, object owner, string operationId) - { - AsyncResultNoResult asyncResult = result as AsyncResultNoResult; - if (asyncResult == null) - { - throw new ArgumentException( - "Result passed represents an operation not supported " + - "by this framework.", - "result"); - } - - asyncResult.CheckUsage(owner, operationId); - - // This method assumes that only 1 thread calls EndInvoke - // for this object - if (!asyncResult.IsCompleted) - { - // If the operation isn't done, wait for it - asyncResult.AsyncWaitHandle.WaitOne(); - asyncResult.AsyncWaitHandle.Close(); - asyncResult.m_AsyncWaitHandle = null; // Allow early GC - } - - // Operation is done: if an exception occurred, throw it - if (asyncResult.m_exception != null) throw asyncResult.m_exception; - } - - #region Implementation of IAsyncResult - - public Object AsyncState { get { return m_AsyncState; } } - - public bool CompletedSynchronously - { - get - { - return m_CompletedState == c_StateCompletedSynchronously; - } - } - - public WaitHandle AsyncWaitHandle - { - get - { - if (m_AsyncWaitHandle == null) - { - bool done = IsCompleted; - ManualResetEvent mre = new ManualResetEvent(done); - if (Interlocked.CompareExchange(ref m_AsyncWaitHandle, - mre, null) != null) - { - // Another thread created this object's event; dispose - // the event we just created - mre.Close(); - } - else - { - if (!done && IsCompleted) - { - // If the operation wasn't done when we created - // the event but now it is done, set the event - m_AsyncWaitHandle.Set(); - } - } - } - return m_AsyncWaitHandle; - } - } - - public bool IsCompleted - { - get - { - return m_CompletedState != c_StatePending; - } - } - #endregion - - #region Extensibility - - protected virtual void Completing( - Exception exception, bool completedSynchronously) - { - } - - protected virtual void MakeCallback( - AsyncCallback callback, AsyncResultNoResult result) - { - // If a callback method was set, call it - if (callback != null) - { - callback(result); - } - } - - protected virtual void Completed( - Exception exception, bool completedSynchronously) - { - } - #endregion - } -} diff --git a/RiftAuthenticator.Library/IAccount.cs b/RiftAuthenticator.Library/IAccount.cs deleted file mode 100644 index e6a18bd..0000000 --- a/RiftAuthenticator.Library/IAccount.cs +++ /dev/null @@ -1,85 +0,0 @@ -/* - * This file is part of RIFT™ Authenticator for Windows. - * - * RIFT™ Authenticator for Windows is free software: you can redistribute - * it and/or modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * RIFT™ Authenticator for Windows is distributed in the hope that it will - * be useful, but WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with RIFT™ Authenticator for Windows. If not, see - * . - */ - -using System; -using System.Collections.Generic; -using System.Text; - -namespace RiftAuthenticator.Library -{ - /// - /// Interface for Authenticator/RIFT accounts - /// - public interface IAccount - { - /// - /// Description for the account (any text) - /// - string Description { get; set; } - /// - /// The device ID where the authenticator account is bound to - /// - string DeviceId { get; set; } - /// - /// The serial key for the authenticator (created by TRION) - /// - string SerialKey { get; set; } - /// - /// The shared secret for the authenticator - /// - string SecretKey { get; set; } - /// - /// Time difference in milliseconds between the client and the TRION server - /// - long TimeOffset { get; set; } - - /// - /// Add dashes to the serial key - /// - string FormattedSerialKey { get; } - - /// - /// Is this account empty? - /// - /// - /// Returns true if the authenticator is empty (i.e. not initialized, - /// but may have a description) - /// - bool IsEmpty { get; } - - /// - /// Calculates a login for RIFT - /// - /// - LoginToken CalculateToken(); - - /// - /// Load the account information from the underlying storage device - /// - /// The account manager that this account is assigned to - /// The index that this account has in the list of accounts in the account manager (must be unique) - void Load(IAccountManager accountManager, int accountIndex); - - /// - /// Save the account information to the underlying storage device - /// - /// The account manager that this account is assigned to - /// The index that this account has in the list of accounts in the account manager (must be unique) - void Save(IAccountManager accountManager, int accountIndex); - } -} diff --git a/RiftAuthenticator.Library/IAccountManager.cs b/RiftAuthenticator.Library/IAccountManager.cs deleted file mode 100644 index 63ed118..0000000 --- a/RiftAuthenticator.Library/IAccountManager.cs +++ /dev/null @@ -1,60 +0,0 @@ -/* - * This file is part of RIFT™ Authenticator for Windows. - * - * RIFT™ Authenticator for Windows is free software: you can redistribute - * it and/or modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * RIFT™ Authenticator for Windows is distributed in the hope that it will - * be useful, but WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with RIFT™ Authenticator for Windows. If not, see - * . - */ - -using System; -using System.Collections.Generic; -using System.Text; - -namespace RiftAuthenticator.Library -{ - /// - /// The account manager that manages all accounts for a storage device - /// - public interface IAccountManager : IList - { - /// - /// Creates a new account object - /// - /// The new account object - IAccount CreateAccount(); - - /// - /// Find an account object with a given ID - /// - /// - /// A valid account ID is: - /// - the index into the account list - /// - the description - /// - the device ID - /// - the authenticator serial key - /// - /// The ID to search for - /// The found account object or null - IAccount FindAccount(string accountId); - - /// - /// Load all account objects from the underlying storage device - /// - void LoadAccounts(); - - /// - /// Save all account objects to the underlying storage device - /// - void SaveAccounts(); - } -} diff --git a/RiftAuthenticator.Library/IPlatform.cs b/RiftAuthenticator.Library/IPlatform.cs deleted file mode 100644 index 00bc63d..0000000 --- a/RiftAuthenticator.Library/IPlatform.cs +++ /dev/null @@ -1,49 +0,0 @@ -/* - * This file is part of RIFT™ Authenticator for Windows. - * - * RIFT™ Authenticator for Windows is free software: you can redistribute - * it and/or modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * RIFT™ Authenticator for Windows is distributed in the hope that it will - * be useful, but WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with RIFT™ Authenticator for Windows. If not, see - * . - */ - -using System; -using System.Collections.Generic; -using System.Text; - -namespace RiftAuthenticator.Library -{ - /// - /// This is an interface to platform specific values/functions - /// - public interface IPlatform - { - /// - /// The ID for the device where this authenticator executes on - /// - string DeviceId { get; } - - /// - /// This is the user agent used for the HTTP communication - /// - string UserAgent { get; } - - /// - /// Get the secret key encryption object - /// - /// - /// This secret key encryption object is used to encrypt and decrypt - /// the secret key in a platform specific way. - /// - ISecretKeyEncryption SecretKeyEncryption { get; } - } -} diff --git a/RiftAuthenticator.Library/ISecretKeyEncryption.cs b/RiftAuthenticator.Library/ISecretKeyEncryption.cs deleted file mode 100644 index 1ec4829..0000000 --- a/RiftAuthenticator.Library/ISecretKeyEncryption.cs +++ /dev/null @@ -1,50 +0,0 @@ -/* - * This file is part of RIFT™ Authenticator for Windows. - * - * RIFT™ Authenticator for Windows is free software: you can redistribute - * it and/or modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * RIFT™ Authenticator for Windows is distributed in the hope that it will - * be useful, but WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with RIFT™ Authenticator for Windows. If not, see - * . - */ - -using System; -using System.Collections.Generic; -using System.Text; - -namespace RiftAuthenticator.Library -{ - /// - /// An interface to a secret key encryption/decryption object - /// - /// - /// This secret key encryption object is used to encrypt and decrypt - /// the secret key in a platform specific way. - /// - public interface ISecretKeyEncryption - { - /// - /// Encrypt a secret key for an account - /// - /// The account to encrypt the secret key for - /// The secret key to encrypt - /// The encrypted secret key - string Encrypt(IAccount account, string secretKey); - - /// - /// Decrypt an encrypted secret key for an account - /// - /// The account to decrypt the secret key for - /// The encrypted secret key to decrypt - /// The decrypted secret key - string Decrypt(IAccount account, string encryptedSecretKey); - } -} diff --git a/RiftAuthenticator.Library/LoginToken.cs b/RiftAuthenticator.Library/LoginToken.cs deleted file mode 100644 index a2aa1cc..0000000 --- a/RiftAuthenticator.Library/LoginToken.cs +++ /dev/null @@ -1,51 +0,0 @@ -/* - * This file is part of RIFT™ Authenticator for Windows. - * - * RIFT™ Authenticator for Windows is free software: you can redistribute - * it and/or modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * RIFT™ Authenticator for Windows is distributed in the hope that it will - * be useful, but WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with RIFT™ Authenticator for Windows. If not, see - * . - */ - -using System; -using System.Collections.Generic; -using System.Text; - -namespace RiftAuthenticator.Library -{ - /// - /// The login token object - /// - public class LoginToken - { - /// - /// Creates a new login token object - /// - /// The login token - /// The remaining time in milliseconds this login token is valid - public LoginToken(string token, long remainingMillis) - { - Token = token; - RemainingMillis = remainingMillis; - } - - /// - /// The login token - /// - public string Token { get; private set; } - - /// - /// The remaining time in milliseconds this login token is valid - /// - public long RemainingMillis { get; private set; } - } -} diff --git a/RiftAuthenticator.Library/PlatformBase.cs b/RiftAuthenticator.Library/PlatformBase.cs deleted file mode 100644 index 3fffdd8..0000000 --- a/RiftAuthenticator.Library/PlatformBase.cs +++ /dev/null @@ -1,74 +0,0 @@ -/* - * This file is part of RIFT™ Authenticator for Windows. - * - * RIFT™ Authenticator for Windows is free software: you can redistribute - * it and/or modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * RIFT™ Authenticator for Windows is distributed in the hope that it will - * be useful, but WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with RIFT™ Authenticator for Windows. If not, see - * . - */ - -using System; -using System.Collections.Generic; -using System.Text; - -namespace RiftAuthenticator.Library -{ - /// - /// This is the abstract base class for all platform objects - /// - public abstract class PlatformBase : IPlatform - { - /// - /// The device ID where the authenticator executes on - /// - public abstract string DeviceId { get; } - - /// - /// This is the user agent used for the HTTP communication - /// - public abstract string UserAgent { get; } - - /// - /// Get the secret key encryption object - /// - /// - /// This secret key encryption object is used to encrypt and decrypt - /// the secret key in a platform specific way. - /// - public abstract ISecretKeyEncryption SecretKeyEncryption { get; } - -#if !WINDOWS_PHONE - /// - /// Create a well known platform object for a given platform ID - /// - /// Platform ID to create a platform object for - /// The newly created platform object - public static IPlatform LoadPlatform(string platformId) - { - switch (platformId) - { - case "win32": - case "windows": - case "RiftAuthenticator.Library.Platform.Windows": - platformId = "RiftAuthenticator.Library.Platform.Windows"; - break; - default: - throw new NotSupportedException(platformId); - } - var assemblyName = platformId; - var typeName = string.Format("{0}.Platform", platformId); - return - (RiftAuthenticator.Library.IPlatform)Activator.CreateInstance(assemblyName, typeName).Unwrap(); - } -#endif - } -} diff --git a/RiftAuthenticator.Library/PlatformUtils/Android/AccountMap.cs b/RiftAuthenticator.Library/PlatformUtils/Android/AccountMap.cs deleted file mode 100644 index a44098d..0000000 --- a/RiftAuthenticator.Library/PlatformUtils/Android/AccountMap.cs +++ /dev/null @@ -1,91 +0,0 @@ -/* - * This file is part of RIFT™ Authenticator for Windows. - * - * RIFT™ Authenticator for Windows is free software: you can redistribute - * it and/or modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * RIFT™ Authenticator for Windows is distributed in the hope that it will - * be useful, but WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with RIFT™ Authenticator for Windows. If not, see - * . - */ - -using System; -using System.Collections.Generic; -using System.Text; - -namespace RiftAuthenticator.Library.PlatformUtils.Android -{ - /// - /// Helper class for handling map objects that contain the authenticator configuration. - /// - public static class AccountMap - { - /// - /// The map key for the description - /// - public const string DescriptionKey = "description"; - /// - /// The map key for the device id - /// - public const string DeviceIdKey = "device_id"; - /// - /// The map key for the serial key - /// - public const string SerialKeyKey = "serial_key"; - /// - /// The map key for the (encrypted) secret key - /// - public const string SecretKeyKey = "secret_key"; - /// - /// The map key for the time offset - /// - public const string TimeOffsetKey = "time_offset"; - - /// - /// Reads the authenticator configuration from the map object - /// - /// The account manager for the "account" - /// The account manager to write the data to - /// The map object to write the data to - public static void SetMap(IAccountManager accountManager, IAccount account, Dictionary map) - { - if (map.ContainsKey(DeviceIdKey)) - account.DeviceId = (string)map[DeviceIdKey]; - if (map.ContainsKey(DescriptionKey)) - account.Description = (string)map[DescriptionKey]; - if (map.ContainsKey(SerialKeyKey)) - account.SerialKey = (string)map[SerialKeyKey]; - if (map.ContainsKey(TimeOffsetKey)) - account.TimeOffset = Convert.ToInt64(map[TimeOffsetKey]); - if (map.ContainsKey(SecretKeyKey)) - account.SecretKey = (string)map[SecretKeyKey]; - account.SecretKey = TrionServer.SecretKeyEncryption.Decrypt(account, account.SecretKey); - } - - /// - /// Writes the authenticator configuration into the map object - /// - /// The account manager for the "account" - /// The account manager to get the data from - /// The newly created map object - public static Dictionary GetMap(IAccountManager accountManager, IAccount account) - { - var map = new Dictionary() - { - { DescriptionKey, account.Description ?? string.Empty }, - { DeviceIdKey, account.DeviceId ?? string.Empty }, - { SerialKeyKey, account.SerialKey ?? string.Empty }, - { TimeOffsetKey, account.TimeOffset }, - { SecretKeyKey, TrionServer.SecretKeyEncryption.Encrypt(account, account.SecretKey ?? string.Empty) }, - }; - return map; - } - } -} diff --git a/RiftAuthenticator.Library/PlatformUtils/Android/AccountMapFile.cs b/RiftAuthenticator.Library/PlatformUtils/Android/AccountMapFile.cs deleted file mode 100644 index 29c3ff8..0000000 --- a/RiftAuthenticator.Library/PlatformUtils/Android/AccountMapFile.cs +++ /dev/null @@ -1,76 +0,0 @@ -/* - * This file is part of RIFT™ Authenticator for Windows. - * - * RIFT™ Authenticator for Windows is free software: you can redistribute - * it and/or modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * RIFT™ Authenticator for Windows is distributed in the hope that it will - * be useful, but WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with RIFT™ Authenticator for Windows. If not, see - * . - */ - -using System; -using System.Collections.Generic; -using System.Text; - -namespace RiftAuthenticator.Library.PlatformUtils.Android -{ - /// - /// This is a generic account base class that uses map objects for account persistance - /// - public abstract class AccountMapFile : AccountBase - { - /// - /// Creates a file name of the map file to read/write the data from/to - /// - /// The account manager for the account at index "accountIndex" - /// The index of the account to create the file name from - /// Map file name - protected abstract string GetFileName(IAccountManager accountManager, int accountIndex); - - /// - /// Reads a map file - /// - /// The name of the map file - /// The map object with the data from the map file - protected abstract Dictionary ReadMapFile(string fileName); - - /// - /// Writes a map file - /// - /// The name of the map file - /// The map object with the data to write to the map file - protected abstract void WriteMapFile(string fileName, Dictionary map); - - /// - /// Loads the data from the map file - /// - /// The account manager that this account is assigned to - /// The index that this account has in the list of accounts in the account manager (must be unique) - public override void Load(IAccountManager accountManager, int accountIndex) - { - var configFileName = GetFileName(accountManager, accountIndex); - var map = ReadMapFile(configFileName); - AccountMap.SetMap(accountManager, this, map); - } - - /// - /// Writes the data to the map file - /// - /// The account manager that this account is assigned to - /// The index that this account has in the list of accounts in the account manager (must be unique) - public override void Save(IAccountManager accountManager, int accountIndex) - { - var configFileName = GetFileName(accountManager, accountIndex); - var map = AccountMap.GetMap(accountManager, this); - WriteMapFile(configFileName, map); - } - } -} diff --git a/RiftAuthenticator.Library/PlatformUtils/Android/AndroidSecretKeyEncryption.cs b/RiftAuthenticator.Library/PlatformUtils/Android/AndroidSecretKeyEncryption.cs deleted file mode 100644 index d427cdf..0000000 --- a/RiftAuthenticator.Library/PlatformUtils/Android/AndroidSecretKeyEncryption.cs +++ /dev/null @@ -1,141 +0,0 @@ -/* - * This file is part of RIFT™ Authenticator for Windows. - * - * RIFT™ Authenticator for Windows is free software: you can redistribute - * it and/or modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * RIFT™ Authenticator for Windows is distributed in the hope that it will - * be useful, but WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with RIFT™ Authenticator for Windows. If not, see - * . - */ - -using System; -using System.Collections.Generic; -using System.Text; - -namespace RiftAuthenticator.Library.PlatformUtils.Android -{ - /// - /// The secret key encryption class that's used on the android platform - /// - public class AndroidSecretKeyEncryption : ISecretKeyEncryption - { - static readonly System.Text.Encoding Encoding = System.Text.Encoding.UTF8; - - const string SecretKeyDigestSeed = "TrionMasterKey_031611"; - - private byte[] _aesInitVector = new byte[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; - - /// - /// Default constructor - /// - public AndroidSecretKeyEncryption() - { - } - - /// - /// Encrypt a secret key for an account - /// - /// The account to encrypt the secret key for - /// The secret key to encrypt - /// The encrypted secret key - public string Encrypt(IAccount account, string secretKey) - { - if (string.IsNullOrEmpty(secretKey)) - return string.Empty; - return EncryptSecretKey(secretKey); - } - - /// - /// Decrypt an encrypted secret key for an account - /// - /// The account to decrypt the secret key for - /// The encrypted secret key to decrypt - /// The decrypted secret key - public string Decrypt(IAccount account, string encryptedSecretKey) - { - if (string.IsNullOrEmpty(encryptedSecretKey)) - { - return string.Empty; - } - else - { - return DecryptSecretKey(encryptedSecretKey); - } - } - - /// - /// Decrypt an encrypted secret key for an account - /// - /// The encrypted secret key to decrypt - /// The decrypted secret key - protected string DecryptSecretKey(string encryptedSecretKey) - { - return DecryptSecretKey(Util.HexToBytes(encryptedSecretKey)); - } - - /// - /// Decrypt an encrypted secret key for an account - /// - /// The encrypted secret key to decrypt - /// The decrypted secret key - protected virtual string DecryptSecretKey(byte[] encryptedSecretKey) - { - var aes = CreateCipher(); - var decryptor = aes.CreateDecryptor(); - var decryptedSecretKey = decryptor.TransformFinalBlock(encryptedSecretKey, 0, encryptedSecretKey.Length); - return Encoding.GetString(decryptedSecretKey, 0, decryptedSecretKey.Length); - } - - /// - /// Encrypt a secret key for an account - /// - /// The secret key to encrypt - /// The encrypted secret key - protected string EncryptSecretKey(string decryptedSecretKey) - { - return EncryptSecretKey(Encoding.GetBytes(decryptedSecretKey)); - } - - /// - /// Encrypt a secret key for an account - /// - /// The secret key to encrypt - /// The encrypted secret key - protected virtual string EncryptSecretKey(byte[] decryptedSecretKey) - { - var aes = CreateCipher(); - var encryptor = aes.CreateEncryptor(); - var encryptedSecretKey = encryptor.TransformFinalBlock(decryptedSecretKey, 0, decryptedSecretKey.Length); - return Util.BytesToHex(encryptedSecretKey); - } - - /// - /// Creates a symmetric cipher used to encrypt and decrypt the secret keys - /// - /// Symmetric cipher used for encryption and decvryption - protected virtual System.Security.Cryptography.SymmetricAlgorithm CreateCipher() - { - var seed = Encoding.GetBytes(SecretKeyDigestSeed); - var prng = new Org.Apache.Harmony.Security.Provider.Crypto.Sha1Prng(); - prng.AddSeedMaterial(seed); - var aesKey = new byte[16]; - prng.NextBytes(aesKey); - var aes = new System.Security.Cryptography.AesManaged(); - aes.IV = _aesInitVector; -#if !WINDOWS_PHONE - aes.Mode = System.Security.Cryptography.CipherMode.ECB; -#endif - aes.KeySize = 128; - aes.Key = aesKey; - return aes; - } - } -} diff --git a/RiftAuthenticator.Library/PlatformUtils/Android/MapFile.cs b/RiftAuthenticator.Library/PlatformUtils/Android/MapFile.cs deleted file mode 100644 index 8406422..0000000 --- a/RiftAuthenticator.Library/PlatformUtils/Android/MapFile.cs +++ /dev/null @@ -1,135 +0,0 @@ -/* - * This file is part of RIFT™ Authenticator for Windows. - * - * RIFT™ Authenticator for Windows is free software: you can redistribute - * it and/or modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * RIFT™ Authenticator for Windows is distributed in the hope that it will - * be useful, but WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with RIFT™ Authenticator for Windows. If not, see - * . - */ - -using System; -using System.Collections.Generic; -using System.Text; - -namespace RiftAuthenticator.Library.PlatformUtils.Android -{ - /// - /// Map file helper functions - /// - public static class MapFile - { - /// - /// Read a map from a stream - /// - /// The stream to read the map data from - /// The map object read from the map file - public static Dictionary ReadMap(System.IO.Stream stream) - { - var result = new Dictionary(); - ReadMap(stream, result); - return result; - } - - /// - /// Read a map from a stream - /// - /// The stream to read the map data from - /// The map object where the data from the file gets written to - public static void ReadMap(System.IO.Stream stream, Dictionary map) - { - var doc = System.Xml.Linq.XDocument.Load(stream); - foreach (var xmlSetting in doc.Element("map").Elements()) - { - var key = xmlSetting.Attribute("name").Value; - object value; - switch (xmlSetting.Name.LocalName) - { - case "string": - value = xmlSetting.Value; - break; - case "long": - value = Convert.ToInt64(xmlSetting.Attribute("value").Value); - break; - case "int": - value = Convert.ToInt32(xmlSetting.Attribute("value").Value); - break; - default: - throw new NotSupportedException(xmlSetting.Name.LocalName); - } - map[key] = value; - } - } - - /// - /// Write a map to a stream - /// - /// The stream to write the map data to - /// The map object to write to the map file - public static void WriteMap(System.IO.Stream stream, Dictionary map) - { - var writerSettings = new System.Xml.XmlWriterSettings() - { - Indent = true, - }; - using (var writer = System.Xml.XmlWriter.Create(stream, writerSettings)) - { - writer.WriteStartDocument(); - writer.WriteStartElement("map"); - foreach (var mapItem in map) - { - var key = mapItem.Key; - var value = mapItem.Value; - if (value == null) - throw new NotSupportedException(); - string mapType; - if (value is string) - { - mapType = "string"; - } - else if (value is long) - { - mapType = "long"; - } - else if (value is int) - { - mapType = "int"; - } - else - throw new NotSupportedException(value.GetType().FullName); - writer.WriteStartElement(mapType); - writer.WriteAttributeString("name", key); - if (mapType == "string") - { - writer.WriteString((string)value); - } - else if (mapType == "long") - { - writer.WriteAttributeString("value", System.Xml.XmlConvert.ToString((long)value)); - } - else if (mapType == "int") - { - writer.WriteAttributeString("value", System.Xml.XmlConvert.ToString((int)value)); - } - else - { - System.Diagnostics.Debug.Assert(false); - } - writer.WriteEndElement(); - } - writer.WriteEndElement(); - writer.WriteEndDocument(); - writer.Close(); - } - } - - } -} diff --git a/RiftAuthenticator.Library/PlatformUtils/Android/Sha1Prng.cs b/RiftAuthenticator.Library/PlatformUtils/Android/Sha1Prng.cs deleted file mode 100644 index b4f52dc..0000000 --- a/RiftAuthenticator.Library/PlatformUtils/Android/Sha1Prng.cs +++ /dev/null @@ -1,642 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -using System; -using System.Collections.Generic; -using System.Text; - -namespace Org.Apache.Harmony.Security.Provider.Crypto -{ - class Sha1Prng - { - // constants to use in expressions operating on bytes in int and long variables: - // END_FLAGS - final bytes in words to append to message; - // see "ch.5.1 Padding the Message, FIPS 180-2" - // RIGHT1 - shifts to right for left half of long - // RIGHT2 - shifts to right for right half of long - // LEFT - shifts to left for bytes - // MASK - mask to select counter's bytes after shift to right - - private static readonly uint[] END_FLAGS = { 0x80000000, 0x800000, 0x8000, 0x80 }; - - private static readonly int[] RIGHT1 = { 0, 40, 48, 56 }; - - private static readonly int[] RIGHT2 = { 0, 8, 16, 24 }; - - private static readonly int[] LEFT = { 0, 24, 16, 8 }; - - private static readonly uint[] MASK = { 0xFFFFFFFF, 0x00FFFFFF, 0x0000FFFF, 0x000000FF }; - - // HASHBYTES_TO_USE defines # of bytes returned by "computeHash(byte[])" - // to use to form byte array returning by the "nextBytes(byte[])" method - // Note, that this implementation uses more bytes than it is defined - // in the above specification. - private const int HASHBYTES_TO_USE = 20; - - // value of 16 defined in the "SECURE HASH STANDARD", FIPS PUB 180-2 - private const int FRAME_LENGTH = 16; - - // miscellaneous constants defined in this implementation: - // COUNTER_BASE - initial value to set to "counter" before computing "nextBytes(..)"; - // note, that the exact value is not defined in STANDARD - // HASHCOPY_OFFSET - offset for copy of current hash in "copies" array - // EXTRAFRAME_OFFSET - offset for extra frame in "copies" array; - // as the extra frame follows the current hash frame, - // EXTRAFRAME_OFFSET is equal to length of current hash frame - // FRAME_OFFSET - offset for frame in "copies" array - // MAX_BYTES - maximum # of seed bytes processing which doesn't require extra frame - // see (1) comments on usage of "seed" array below and - // (2) comments in "engineNextBytes(byte[])" method - // - // UNDEFINED - three states of engine; initially its state is "UNDEFINED" - // SET_SEED call to "engineSetSeed" sets up "SET_SEED" state, - // NEXT_BYTES call to "engineNextByte" sets up "NEXT_BYTES" state - - private const int COUNTER_BASE = 0; - - private const int HASHCOPY_OFFSET = 0; - - private const int EXTRAFRAME_OFFSET = 5; - - private const int FRAME_OFFSET = 21; - - private const int MAX_BYTES = 48; - - private enum State - { - Undefined = 0, - SetSeed = 1, - NextBytes = 2, - } - - /** - * offset in buffer to store current hash value - */ - private const int HASH_OFFSET = 82; - - /** - * constant defined in "SECURE HASH STANDARD" - */ - private const uint H0 = 0x67452301; - /** - * constant defined in "SECURE HASH STANDARD" - */ - private const uint H1 = 0xEFCDAB89; - /** - * constant defined in "SECURE HASH STANDARD" - */ - private const uint H2 = 0x98BADCFE; - /** - * constant defined in "SECURE HASH STANDARD" - */ - private const uint H3 = 0x10325476; - /** - * constant defined in "SECURE HASH STANDARD" - */ - private const uint H4 = 0xC3D2E1F0; - - /** - * offset in buffer to store number of bytes in 0-15 word frame - */ - private const int BYTES_OFFSET = 81; - - /** - * # of bytes in H0-H4 words;
- * in this implementation # is set to 20 (in general # varies from 1 to 20) - */ - private const int DIGEST_LENGTH = 20; - - - private System.Security.Cryptography.SHA1Managed _Digest = new System.Security.Cryptography.SHA1Managed(); - - // Structure of "seed" array: - // - 0-79 - words for computing hash - // - 80 - unused - // - 81 - # of seed bytes in current seed frame - // - 82-86 - 5 words, current seed hash - private uint[] seed; - - // total length of seed bytes, including all processed - private long seedLength; - - // Structure of "copies" array - // - 0-4 - 5 words, copy of current seed hash - // - 5-20 - extra 16 words frame; - // is used if final padding exceeds 512-bit length - // - 21-36 - 16 word frame to store a copy of remaining bytes - private uint[] copies; - - // ready "next" bytes; needed because words are returned - private byte[] nextBytes; - - // index of used bytes in "nextBytes" array - private int nextBIndex; - - // variable required according to "SECURE HASH STANDARD" - private ulong counter; - - // contains int value corresponding to engine's current state - private State state; - - // The "seed" array is used to compute both "current seed hash" and "next bytes". - // - // As the "SHA1" algorithm computes a hash of entire seed by splitting it into - // a number of the 512-bit length frames (512 bits = 64 bytes = 16 words), - // "current seed hash" is a hash (5 words, 20 bytes) for all previous full frames; - // remaining bytes are stored in the 0-15 word frame of the "seed" array. - // - // As for calculating "next bytes", - // both remaining bytes and "current seed hash" are used, - // to preserve the latter for following "setSeed(..)" commands, - // the following technique is used: - // - upon getting "nextBytes(byte[])" invoked, single or first in row, - // which requires computing new hash, that is, - // there is no more bytes remaining from previous "next bytes" computation, - // remaining bytes are copied into the 21-36 word frame of the "copies" array; - // - upon getting "setSeed(byte[])" invoked, single or first in row, - // remaining bytes are copied back. - - - /** - * The method generates a 160 bit hash value using - * a 512 bit message stored in first 16 words of int[] array argument and - * current hash value stored in five words, beginning OFFSET+1, of the array argument. - * Computation is done according to SHA-1 algorithm. - * - * The resulting hash value replaces the previous hash value in the array; - * original bits of the message are not preserved. - * - * No checks on argument supplied, that is, - * a calling method is responsible for such checks. - * In case of incorrect array passed to the method - * either NPE or IndexOutOfBoundException gets thrown by JVM. - * - * @params - * arrW - integer array; arrW.length >= (BYTES_OFFSET+6);
- * only first (BYTES_OFFSET+6) words are used - */ - static void computeHash(uint[] arrW) - { - - uint a = arrW[HASH_OFFSET]; - uint b = arrW[HASH_OFFSET + 1]; - uint c = arrW[HASH_OFFSET + 2]; - uint d = arrW[HASH_OFFSET + 3]; - uint e = arrW[HASH_OFFSET + 4]; - - uint temp; - - // In this implementation the "d. For t = 0 to 79 do" loop - // is split into four loops. The following constants: - // K = 5A827999 0 <= t <= 19 - // K = 6ED9EBA1 20 <= t <= 39 - // K = 8F1BBCDC 40 <= t <= 59 - // K = CA62C1D6 60 <= t <= 79 - // are hex literals in the loops. - - for (int t = 16; t < 80; t++) - { - - temp = arrW[t - 3] ^ arrW[t - 8] ^ arrW[t - 14] ^ arrW[t - 16]; - arrW[t] = (temp << 1) | (temp >> 31); - } - - for (int t = 0; t < 20; t++) - { - - temp = ((a << 5) | (a >> 27)) + - ((b & c) | ((~b) & d)) + - (e + arrW[t] + 0x5A827999); - e = d; - d = c; - c = (b << 30) | (b >> 2); - b = a; - a = temp; - } - for (int t = 20; t < 40; t++) - { - - temp = (((a << 5) | (a >> 27))) + (b ^ c ^ d) + (e + arrW[t] + 0x6ED9EBA1); - e = d; - d = c; - c = (b << 30) | (b >> 2); - b = a; - a = temp; - } - for (int t = 40; t < 60; t++) - { - - temp = ((a << 5) | (a >> 27)) + ((b & c) | (b & d) | (c & d)) + - (e + arrW[t] + 0x8F1BBCDC); - e = d; - d = c; - c = (b << 30) | (b >> 2); - b = a; - a = temp; - } - for (int t = 60; t < 80; t++) - { - - temp = (((a << 5) | (a >> 27))) + (b ^ c ^ d) + (e + arrW[t] + 0xCA62C1D6); - e = d; - d = c; - c = (b << 30) | (b >> 2); - b = a; - a = temp; - } - - arrW[HASH_OFFSET] += a; - arrW[HASH_OFFSET + 1] += b; - arrW[HASH_OFFSET + 2] += c; - arrW[HASH_OFFSET + 3] += d; - arrW[HASH_OFFSET + 4] += e; - } - - - /** - * The method appends new bytes to existing ones - * within limit of a frame of 64 bytes (16 words). - * - * Once a length of accumulated bytes reaches the limit - * the "computeHash(int[])" method is invoked on the array to compute updated hash, - * and the number of bytes in the frame is set to 0. - * Thus, after appending all bytes, the array contain only those bytes - * that were not used in computing final hash value yet. - * - * No checks on arguments passed to the method, that is, - * a calling method is responsible for such checks. - * - * @params - * intArray - int array containing bytes to which to append; - * intArray.length >= (BYTES_OFFSET+6) - * @params - * byteInput - array of bytes to use for the update - * @params - * from - the offset to start in the "byteInput" array - * @params - * to - a number of the last byte in the input array to use, - * that is, for first byte "to"==0, for last byte "to"==input.length-1 - */ - static void updateHash(uint[] intArray, byte[] byteInput, int fromByte, int toByte) - { - - // As intArray contains a packed bytes - // the buffer's index is in the intArray[BYTES_OFFSET] element - - int index = (int)intArray[BYTES_OFFSET]; - int i = fromByte; - int maxWord; - int nBytes; - - int wordIndex = index >> 2; - int byteIndex = index & 0x03; - - intArray[BYTES_OFFSET] = (uint)((index + toByte - fromByte + 1) & 0x3F); - - // In general case there are 3 stages : - // - appending bytes to non-full word, - // - writing 4 bytes into empty words, - // - writing less than 4 bytes in last word - - if (byteIndex != 0) - { // appending bytes in non-full word (as if) - - for (; (i <= toByte) && (byteIndex < 4); i++) - { - intArray[wordIndex] |= (uint)((byteInput[i] & 0xFF) << ((3 - byteIndex) << 3)); - byteIndex++; - } - if (byteIndex == 4) - { - wordIndex++; - if (wordIndex == 16) - { // intArray is full, computing hash - - computeHash(intArray); - wordIndex = 0; - } - } - if (i > toByte) - { // all input bytes appended - return; - } - } - - // writing full words - - maxWord = (toByte - i + 1) >> 2; // # of remaining full words, may be "0" - for (int k = 0; k < maxWord; k++) - { - - intArray[wordIndex] = (((uint)byteInput[i] & 0xFF) << 24) | - (((uint)byteInput[i + 1] & 0xFF) << 16) | - (((uint)byteInput[i + 2] & 0xFF) << 8) | - (((uint)byteInput[i + 3] & 0xFF)); - i += 4; - wordIndex++; - - if (wordIndex < 16) - { // buffer is not full yet - continue; - } - computeHash(intArray); // buffer is full, computing hash - wordIndex = 0; - } - - // writing last incomplete word - // after writing free byte positions are set to "0"s - - nBytes = toByte - i + 1; - if (nBytes != 0) - { - - uint w = ((uint)byteInput[i] & 0xFF) << 24; - - if (nBytes != 1) - { - w |= ((uint)byteInput[i + 1] & 0xFF) << 16; - if (nBytes != 2) - { - w |= ((uint)byteInput[i + 2] & 0xFF) << 8; - } - } - intArray[wordIndex] = w; - } - - return; - } - - /* - * The method invokes the SHA1Impl's "updateHash(..)" method - * to update current seed frame and - * to compute new intermediate hash value if the frame is full. - * - * After that it computes a length of whole seed. - */ - private void UpdateSeed(byte[] bytes) - { - updateHash(seed, bytes, 0, bytes.Length - 1); - seedLength += bytes.Length; - } - - /** - * Changes current seed by supplementing a seed argument to the current seed, - * if this already set; - * the argument is used as first seed otherwise.
- * - * The method overrides "engineSetSeed(byte[])" in class SecureRandomSpi. - * - * @param - * seed - byte array - * @throws - * NullPointerException - if null is passed to the "seed" argument - */ - private void engineSetSeed(byte[] seed) - { - if (seed == null) - throw new ArgumentNullException("seed"); - if (state == State.NextBytes) - Array.Copy(copies, HASHCOPY_OFFSET, this.seed, HASH_OFFSET, EXTRAFRAME_OFFSET); - state = State.SetSeed; - if (seed.Length != 0) - UpdateSeed(seed); - } - - /** - * Writes random bytes into an array supplied. - * Bits in a byte are from left to right.
- * - * To generate random bytes, the "expansion of source bits" method is used, - * that is, - * the current seed with a 64-bit counter appended is used to compute new bits. - * The counter is incremented by 1 for each 20-byte output.
- * - * The method overrides engineNextBytes in class SecureRandomSpi. - * - * @param - * bytes - byte array to be filled in with bytes - * @throws - * NullPointerException - if null is passed to the "bytes" argument - */ - private void engineNextBytes(byte[] bytes, int bytesOffset, int bytesLength) - { - - int n; - - ulong bits; // number of bits required by Secure Hash Standard - int nextByteToReturn; // index of ready bytes in "bytes" array - uint lastWord; // index of last word in frame containing bytes - const int extrabytes = 7;// # of bytes to add in order to computer # of 8 byte words - - if (bytes == null) - { - throw new ArgumentNullException("bytes"); - } - - lastWord = seed[BYTES_OFFSET] == 0 ? 0 - : (seed[BYTES_OFFSET] + extrabytes) >> 3 - 1; - - if (state == State.Undefined) - { - - // no seed supplied by user, hence it is generated thus randomizing internal state - throw new NotImplementedException(); - //updateSeed(RandomBitsSupplier.getRandomBits(DIGEST_LENGTH)); - //nextBIndex = HASHBYTES_TO_USE; - - } - else if (state == State.SetSeed) - { - - Array.Copy(seed, HASH_OFFSET, copies, HASHCOPY_OFFSET, EXTRAFRAME_OFFSET); - - // possible cases for 64-byte frame: - // - // seed bytes < 48 - remaining bytes are enough for all, 8 counter bytes, - // 0x80, and 8 seedLength bytes; no extra frame required - // 48 < seed bytes < 56 - remaining 9 bytes are for 0x80 and 8 counter bytes - // extra frame contains only seedLength value at the end - // seed bytes > 55 - extra frame contains both counter's bytes - // at the beginning and seedLength value at the end; - // note, that beginning extra bytes are not more than 8, - // that is, only 2 extra words may be used - - // no need to set to "0" 3 words after "lastWord" and - // more than two words behind frame - for (uint i = lastWord + 3; i < FRAME_LENGTH + 2; i++) - { - seed[i] = 0; - } - - bits = ((ulong)seedLength << 3) + 64; // transforming # of bytes into # of bits - - // putting # of bits into two last words (14,15) of 16 word frame in - // seed or copies array depending on total length after padding - if (seed[BYTES_OFFSET] < MAX_BYTES) - { - seed[14] = (uint)(bits >> 32); - seed[15] = (uint)(bits & 0xFFFFFFFF); - } - else - { - copies[EXTRAFRAME_OFFSET + 14] = (uint)(bits >> 32); - copies[EXTRAFRAME_OFFSET + 15] = (uint)(bits & 0xFFFFFFFF); - } - - nextBIndex = HASHBYTES_TO_USE; // skipping remaining random bits - } - state = State.NextBytes; - - if (bytesLength == 0) - { - return; - } - - nextByteToReturn = 0; - - // possibly not all of HASHBYTES_TO_USE bytes were used previous time - n = (HASHBYTES_TO_USE - nextBIndex) < (bytesLength - nextByteToReturn) ? HASHBYTES_TO_USE - - nextBIndex - : bytesLength - nextByteToReturn; - if (n > 0) - { - Array.Copy(nextBytes, nextBIndex, bytes, nextByteToReturn + bytesOffset, n); - nextBIndex += n; - nextByteToReturn += n; - } - - if (nextByteToReturn >= bytesLength) - { - return; // return because "bytes[]" are filled in - } - - n = (int)(seed[BYTES_OFFSET] & 0x03); - for (; ; ) - { - if (n == 0) - { - - seed[lastWord] = (uint)(counter >> 32); - seed[lastWord + 1] = (uint)(counter & 0xFFFFFFFF); - seed[lastWord + 2] = END_FLAGS[0]; - - } - else - { - - seed[lastWord] |= (uint)((counter >> RIGHT1[n]) & MASK[n]); - seed[lastWord + 1] = (uint)((counter >> RIGHT2[n]) & 0xFFFFFFFF); - seed[lastWord + 2] = (uint)((counter << LEFT[n]) | END_FLAGS[n]); - } - if (seed[BYTES_OFFSET] > MAX_BYTES) - { - copies[EXTRAFRAME_OFFSET] = seed[FRAME_LENGTH]; - copies[EXTRAFRAME_OFFSET + 1] = seed[FRAME_LENGTH + 1]; - } - - computeHash(seed); - - if (seed[BYTES_OFFSET] > MAX_BYTES) - { - - Array.Copy(seed, 0, copies, FRAME_OFFSET, FRAME_LENGTH); - Array.Copy(copies, EXTRAFRAME_OFFSET, seed, 0, FRAME_LENGTH); - - computeHash(seed); - Array.Copy(copies, FRAME_OFFSET, seed, 0, FRAME_LENGTH); - } - counter++; - - int j = 0; - for (int i = 0; i < EXTRAFRAME_OFFSET; i++) - { - uint k = seed[HASH_OFFSET + i]; - nextBytes[j] = (byte)(k >> 24); // getting first byte from left - nextBytes[j + 1] = (byte)(k >> 16); // getting second byte from left - nextBytes[j + 2] = (byte)(k >> 8); // getting third byte from left - nextBytes[j + 3] = (byte)(k); // getting fourth byte from left - j += 4; - } - - nextBIndex = 0; - j = HASHBYTES_TO_USE < (bytesLength - nextByteToReturn) ? HASHBYTES_TO_USE - : bytesLength - nextByteToReturn; - - if (j > 0) - { - Array.Copy(nextBytes, 0, bytes, nextByteToReturn + bytesOffset, j); - nextByteToReturn += j; - nextBIndex += j; - } - - if (nextByteToReturn >= bytesLength) - { - break; - } - } - } - - public Sha1Prng() - { - seed = new uint[HASH_OFFSET + EXTRAFRAME_OFFSET]; - seed[HASH_OFFSET + 0] = H0; - seed[HASH_OFFSET + 1] = H1; - seed[HASH_OFFSET + 2] = H2; - seed[HASH_OFFSET + 3] = H3; - seed[HASH_OFFSET + 4] = H4; - - seedLength = 0; - copies = new uint[2 * FRAME_LENGTH + EXTRAFRAME_OFFSET]; - nextBytes = new byte[DIGEST_LENGTH]; - nextBIndex = HASHBYTES_TO_USE; - counter = COUNTER_BASE; - state = State.Undefined; - } - - private void DumpSeed(uint[] values) - { - var result = new StringBuilder(); - for (int i = 0; i != values.Length; ++i) - { - if (i != 0) - result.Append("-"); - result.AppendFormat("{0:X08}", values[i]); - } - Console.Out.WriteLine(result.ToString()); - } - - public void AddSeedMaterial(long seed) - { - AddSeedMaterial(BitConverter.GetBytes(seed)); - } - - public void AddSeedMaterial(byte[] seed) - { - engineSetSeed(seed); - } - - public void NextBytes(byte[] bytes, int start, int len) - { - engineNextBytes(bytes, start, len); - } - - public void NextBytes(byte[] bytes) - { - engineNextBytes(bytes, 0, bytes.Length); - } - } -} diff --git a/RiftAuthenticator.Library/PlatformUtils/WindowsPhone/WindowsPhoneSecretKeyEncryption.cs b/RiftAuthenticator.Library/PlatformUtils/WindowsPhone/WindowsPhoneSecretKeyEncryption.cs deleted file mode 100644 index 3180ade..0000000 --- a/RiftAuthenticator.Library/PlatformUtils/WindowsPhone/WindowsPhoneSecretKeyEncryption.cs +++ /dev/null @@ -1,54 +0,0 @@ -/* - * This file is part of RIFTâ„¢ Authenticator for Windows. - * - * RIFTâ„¢ Authenticator for Windows is free software: you can redistribute - * it and/or modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * RIFTâ„¢ Authenticator for Windows is distributed in the hope that it will - * be useful, but WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with RIFTâ„¢ Authenticator for Windows. If not, see - * . - */ - -using System; -using System.Collections.Generic; -using System.Text; - -namespace RiftAuthenticator.Library.PlatformUtils.WindowsPhone -{ - /// - /// The secret key encryption class that's used on the Windows Phone platform - /// - public class WindowsPhoneSecretKeyEncryption : Library.PlatformUtils.Android.AndroidSecretKeyEncryption - { - static readonly System.Text.Encoding Encoding = System.Text.Encoding.UTF8; - - const string SecretKeyDigestSeed = "TrionMasterKey_031611"; - - private byte[] _aesInitVector = new byte[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; - - /// - /// Creates a symmetric cipher used to encrypt and decrypt the secret keys - /// - /// Symmetric cipher used for encryption and decvryption - protected override System.Security.Cryptography.SymmetricAlgorithm CreateCipher() - { - var seed = Encoding.GetBytes(SecretKeyDigestSeed); - var prng = new Org.Apache.Harmony.Security.Provider.Crypto.Sha1Prng(); - prng.AddSeedMaterial(seed); - var aesKey = new byte[16]; - prng.NextBytes(aesKey); - var aes = new System.Security.Cryptography.AesManaged(); - aes.IV = _aesInitVector; - aes.KeySize = 128; - aes.Key = aesKey; - return aes; - } - } -} diff --git a/RiftAuthenticator.Library/Properties/AssemblyInfo.cs b/RiftAuthenticator.Library/Properties/AssemblyInfo.cs deleted file mode 100644 index 33772a6..0000000 --- a/RiftAuthenticator.Library/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,56 +0,0 @@ -/* - * This file is part of RIFTâ„¢ Authenticator for Windows. - * - * RIFTâ„¢ Authenticator for Windows is free software: you can redistribute - * it and/or modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * RIFTâ„¢ Authenticator for Windows is distributed in the hope that it will - * be useful, but WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with RIFTâ„¢ Authenticator for Windows. If not, see - * . - */ - -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; -using System.Resources; - -// Allgemeine Informationen über eine Assembly werden über die folgenden -// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern, -// die mit einer Assembly verknüpft sind. -[assembly: AssemblyTitle("RiftAuthenticator.Library")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("RIFTâ„¢ Authenticator for Windows Project")] -[assembly: AssemblyProduct("RiftAuthenticator.Library")] -[assembly: AssemblyCopyright("Copyright © RIFTâ„¢ Authenticator for Windows Project 2011")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Durch Festlegen von ComVisible auf "false" werden die Typen in dieser Assembly unsichtbar -// für COM-Komponenten. Wenn Sie auf einen Typ in dieser Assembly von -// COM zugreifen müssen, legen Sie das ComVisible-Attribut für diesen Typ auf "true" fest. -[assembly: ComVisible(false)] - -// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird -[assembly: Guid("27bca4dd-4713-4c20-8d4a-20c30f41d736")] - -// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten: -// -// Hauptversion -// Nebenversion -// Buildnummer -// Revision -// -// Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern -// übernehmen, indem Sie "*" eingeben: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.1.2.0")] -[assembly: AssemblyFileVersion("1.1.2.0")] -[assembly: NeutralResourcesLanguageAttribute("en-US")] diff --git a/RiftAuthenticator.Library/Resources/Strings.Designer.cs b/RiftAuthenticator.Library/Resources/Strings.Designer.cs deleted file mode 100644 index 07899eb..0000000 --- a/RiftAuthenticator.Library/Resources/Strings.Designer.cs +++ /dev/null @@ -1,117 +0,0 @@ -//------------------------------------------------------------------------------ -// -// Dieser Code wurde von einem Tool generiert. -// Laufzeitversion:4.0.30319.488 -// -// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn -// der Code erneut generiert wird. -// -//------------------------------------------------------------------------------ - -namespace RiftAuthenticator.Library.Resources { - using System; - - - /// - /// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw. - /// - // Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert - // -Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert. - // Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen - // mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Strings { - - private static global::System.Resources.ResourceManager resourceMan; - - private static global::System.Globalization.CultureInfo resourceCulture; - - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Strings() { - } - - /// - /// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager { - get { - if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("RiftAuthenticator.Library.Resources.Strings", typeof(Strings).Assembly); - resourceMan = temp; - } - return resourceMan; - } - } - - /// - /// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle - /// Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { - get { - return resourceCulture; - } - set { - resourceCulture = value; - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die No RIFT-Account or Device ID doesn't match. ähnelt. - /// - internal static string Error_account_missing { - get { - return ResourceManager.GetString("Error_account_missing", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die Invalid email address or password. ähnelt. - /// - internal static string Error_account_not_available { - get { - return ResourceManager.GetString("Error_account_not_available", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die Security answer(s) missing. ähnelt. - /// - internal static string Error_account_securityAnswer_missing { - get { - return ResourceManager.GetString("Error_account_securityAnswer_missing", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die Security answer(s) incorrect. ähnelt. - /// - internal static string Error_account_securityAnswers_incorrect { - get { - return ResourceManager.GetString("Error_account_securityAnswers_incorrect", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die Device ID missing. ähnelt. - /// - internal static string Error_device_id_missing { - get { - return ResourceManager.GetString("Error_device_id_missing", resourceCulture); - } - } - - /// - /// Sucht eine lokalisierte Zeichenfolge, die Unknown error code: {0} ähnelt. - /// - internal static string Error_unknown { - get { - return ResourceManager.GetString("Error_unknown", resourceCulture); - } - } - } -} diff --git a/RiftAuthenticator.Library/Resources/Strings.de.resx b/RiftAuthenticator.Library/Resources/Strings.de.resx deleted file mode 100644 index 0bccb14..0000000 --- a/RiftAuthenticator.Library/Resources/Strings.de.resx +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Kein RIFT-Account oder die Geräte-ID stimmt nicht. - - - Email oder Passwort ungültig. - - - Antworten zu den Sicherheitsfragen sind falsch. - - - Antworten zu den Sicherheitsfragen fehlen. - - - Gerät-ID fehlt. - - - Unbekannter Fehler-Code: {0} - - \ No newline at end of file diff --git a/RiftAuthenticator.Library/Resources/Strings.resx b/RiftAuthenticator.Library/Resources/Strings.resx deleted file mode 100644 index bb2434a..0000000 --- a/RiftAuthenticator.Library/Resources/Strings.resx +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - No RIFT-Account or Device ID doesn't match. - - - Invalid email address or password. - - - Security answer(s) incorrect. - - - Security answer(s) missing. - - - Device ID missing. - - - Unknown error code: {0} - - \ No newline at end of file diff --git a/RiftAuthenticator.Library/RiftAuthenticator.Library.WP70.csproj b/RiftAuthenticator.Library/RiftAuthenticator.Library.WP70.csproj deleted file mode 100644 index dd57b4b..0000000 --- a/RiftAuthenticator.Library/RiftAuthenticator.Library.WP70.csproj +++ /dev/null @@ -1,94 +0,0 @@ - - - - Debug - AnyCPU - 10.0.20506 - 2.0 - {5088302B-1729-4D9E-A5B6-C781CEFA2D93} - {C089C8C0-30E0-4E22-80C0-CE093F111A43};{fae04ec0-301f-11d3-bf4b-00c04f79efbc} - Library - Properties - RiftAuthenticator.Library - RiftAuthenticator.Library.WP70 - v4.0 - $(TargetFrameworkVersion) - WindowsPhone - Silverlight - false - true - true - - - true - full - false - Bin\Debug - DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE - true - true - prompt - 4 - - - pdbonly - true - Bin\Release - TRACE;SILVERLIGHT;WINDOWS_PHONE - true - true - prompt - 4 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - True - True - Strings.resx - - - - - - - - - - - - - - \ No newline at end of file diff --git a/RiftAuthenticator.Library/RiftAuthenticator.Library.csproj b/RiftAuthenticator.Library/RiftAuthenticator.Library.csproj deleted file mode 100644 index 295dcf0..0000000 --- a/RiftAuthenticator.Library/RiftAuthenticator.Library.csproj +++ /dev/null @@ -1,95 +0,0 @@ - - - - Debug - AnyCPU - 8.0.30703 - 2.0 - {E31E2621-6D52-49A9-B7D4-AC75862518D8} - Library - Properties - RiftAuthenticator.Library - RiftAuthenticator.Library - v4.0 - 512 - Client - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - true - bin\Debug\RiftAuthenticator.Library.XML - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - true - bin\Release\RiftAuthenticator.Library.XML - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - True - True - Strings.resx - - - - - - - - - - - - - ResXFileCodeGenerator - Strings.Designer.cs - - - - - \ No newline at end of file diff --git a/RiftAuthenticator.Library/RiftLogo.ico b/RiftAuthenticator.Library/RiftLogo.ico deleted file mode 100644 index 189d204..0000000 Binary files a/RiftAuthenticator.Library/RiftLogo.ico and /dev/null differ diff --git a/RiftAuthenticator.Library/TrionServer.cs b/RiftAuthenticator.Library/TrionServer.cs deleted file mode 100644 index a97bd82..0000000 --- a/RiftAuthenticator.Library/TrionServer.cs +++ /dev/null @@ -1,550 +0,0 @@ -/* - * This file is part of RIFTâ„¢ Authenticator for Windows. - * - * RIFTâ„¢ Authenticator for Windows is free software: you can redistribute - * it and/or modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * RIFTâ„¢ Authenticator for Windows is distributed in the hope that it will - * be useful, but WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with RIFTâ„¢ Authenticator for Windows. If not, see - * . - */ - -using System; -using System.Collections.Generic; -using System.Text; -using System.Security.Cryptography.X509Certificates; - -namespace RiftAuthenticator.Library -{ - /// - /// This class encapsulates the communication with TRIONs servers - /// - static public class TrionServer - { - const string TrionApiServer = "https://rift.trionworlds.com"; - const string TrionAuthServer = "https://auth.trionworlds.com"; - - private static string _defaultUserAgent = string.Format( - "RIFT Mobile Authenticator {0}; Android {1} ({2}); {3}, {4}, {5};", - "1.0.4", // Authenticator version - "2.3.3", // Android version - 10, // Android SDK version - "GINGERBREAD", // Android product (don't know if this is correct...) - "HTC Desire", // Cell phone model (don't know if this is correct...) - "O2" // Cell phone brand (don't know if this is correct...) - ); - - private static ISecretKeyEncryption _defaultSecretKeyEncryption = new PlatformUtils.Android.AndroidSecretKeyEncryption(); - - /// - /// The platform object used to get and use platform specific data and functions - /// - public static IPlatform Platform { get; set; } - - /// - /// Get the secret key encryption object - /// - /// - /// This secret key encryption object is used to encrypt and decrypt - /// the secret key in a platform specific way. - /// - public static ISecretKeyEncryption SecretKeyEncryption - { - get - { - if (Platform == null || Platform.SecretKeyEncryption == null) - return _defaultSecretKeyEncryption; - return Platform.SecretKeyEncryption; - } - } - - /// - /// The default user agent used for the HTTP requests - /// - public static string DefaultUserAgent - { - get - { - return _defaultUserAgent; - } - set - { - _defaultUserAgent = value; - } - } - - private static string UrlEncode(string value) - { -#if WINDOWS_PHONE - return System.Net.HttpUtility.UrlEncode(value); -#else - return Uri.EscapeDataString(value); -#endif - } - - private static void WritePostVariables(System.IO.Stream requestStream, Dictionary postVariables) - { - var requestWriter = new System.IO.StreamWriter(requestStream) { NewLine = "&" }; - foreach (var postVariable in postVariables) - { - var name = postVariable.Key; - var value = postVariable.Value; - requestWriter.WriteLine("{0}={1}", name, UrlEncode(value)); - } - requestWriter.Flush(); - } - - private static void WriteRequest(System.Net.HttpWebRequest request, Dictionary postVariables, Action requestSent) - { - request.Method = "POST"; - request.ContentType = "application/x-www-form-urlencoded; charset=UTF-8"; - var asyncRequest = request.BeginGetRequestStream((ar) => - { - using (var requestStream = request.EndGetRequestStream(ar)) - { - WritePostVariables(requestStream, postVariables); - } - requestSent(); - }, null); - } - - class ExecuteRequestAsyncResult : Helpers.AsyncResult - { - private Dictionary PostVariables { get; set; } - public System.Net.HttpWebRequest WebRequest { get; private set; } - - public ExecuteRequestAsyncResult(AsyncCallback userCallback, object stateObject, object owner, string operationId, System.Net.HttpWebRequest request, Dictionary postVariables) - : base(userCallback, stateObject, owner, operationId) - { - WebRequest = request; - PostVariables = postVariables; - } - - private void ReadResponse(bool rethrowExceptions) - { - try - { - var asyncResponse = WebRequest.BeginGetResponse((ar) => - { - try - { - var buffer = new System.IO.MemoryStream(); - using (var response = WebRequest.EndGetResponse(ar)) - { - using (var responseStream = response.GetResponseStream()) - { - CopyTo(responseStream, buffer); - } - } - var bytes = buffer.ToArray(); - var test = System.Text.Encoding.UTF8.GetString(bytes, 0, bytes.Length); - SetResult(bytes); - Complete(null, ar.CompletedSynchronously); - } - catch (System.Net.WebException ex) - { - Complete(ex); - } - }, null); - } - catch (System.Net.WebException ex) - { - if (rethrowExceptions) - throw; - Complete(ex); - } - } - - internal override void Process() - { - if (PostVariables.Count != 0) - { - WebRequest.Method = "POST"; - WebRequest.ContentType = "application/x-www-form-urlencoded"; - WriteRequest(WebRequest, PostVariables, () => - { - ReadResponse(false); - }); - } - else - { - ReadResponse(true); - } - } - } - - private static IAsyncResult BeginExecuteRequest(AsyncCallback userCallback, object stateObject, Uri uri) - { - return BeginExecuteRequest(userCallback, stateObject, uri, new Dictionary()); - } - - private static IAsyncResult BeginExecuteRequest(AsyncCallback userCallback, object stateObject, Uri uri, Dictionary postVariables) - { - var request = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(uri); - request.UserAgent = (Platform == null ? DefaultUserAgent : (Platform.UserAgent ?? DefaultUserAgent)); - var result = new ExecuteRequestAsyncResult(userCallback, stateObject, typeof(TrionServer), "execute-request", request, postVariables); - result.Process(); - return result; - } - - private static byte[] EndExecuteRequest(IAsyncResult asyncResult) - { - return Helpers.AsyncResult.End(asyncResult, typeof(TrionServer), "execute-request"); - } - - private static void CopyTo(System.IO.Stream src, System.IO.Stream dst) - { - var bufferSize = 4096; - var buffer = new byte[bufferSize]; - int copySize; - while ((copySize = src.Read(buffer, 0, bufferSize)) != 0) - dst.Write(buffer, 0, copySize); - } - - class ExecuteTimeOffsetAsyncResult : Helpers.AsyncResult - { - public Uri RequestUri { get; private set; } - - public ExecuteTimeOffsetAsyncResult(Uri uri, AsyncCallback userCallback, object stateObject, object owner, string operationId) - : base(userCallback, stateObject, owner, operationId) - { - RequestUri = uri; - } - - internal override void Process() - { - TrionServer.BeginExecuteRequest((ar) => - { - try - { - var requestResultBytes = TrionServer.EndExecuteRequest(ar); - var requestResult = Encoding.UTF8.GetString(requestResultBytes, 0, requestResultBytes.Length); - var currentMillis = Util.CurrentTimeMillis(); - var serverMillis = long.Parse(requestResult); - SetResult(serverMillis - currentMillis); - Complete(null, ar.CompletedSynchronously); - } - catch (System.Net.WebException ex) - { - Complete(ex, false); - } - }, null, RequestUri); - } - } - - /// - /// Get the time difference between the client and the server - /// - /// A user defined value - /// The function that get's called when the function is finished - /// Object which implements IAsyncResult that allows the caller to wait for the function to return - public static IAsyncResult BeginGetTimeOffset(AsyncCallback userCallback, object stateObject) - { - var uri = new Uri(string.Format("{0}{1}", TrionAuthServer, "/time")); - var result = new ExecuteTimeOffsetAsyncResult(uri, userCallback, stateObject, typeof(TrionServer), "time-offset"); - result.Process(); - return result; - } - - /// - /// Gets the data for the finished asynchronous call - /// - /// The object from the "Begin..." function - /// The time difference in milliseconds - public static long EndGetTimeOffset(IAsyncResult asyncResult) - { - return Helpers.AsyncResult.End(asyncResult, typeof(TrionServer), "time-offset"); - } - - class ExecuteGetSecurityQuestionsAsyncResult : Helpers.AsyncResult - { - private Uri RequestUri { get; set; } - private Dictionary PostVariables { get; set; } - - public ExecuteGetSecurityQuestionsAsyncResult(AsyncCallback userCallback, object stateObject, object owner, string operationId, Uri requestUri, Dictionary postVariables) - : base(userCallback, stateObject, owner, operationId) - { - RequestUri = requestUri; - PostVariables = postVariables; - } - - internal override void Process() - { - TrionServer.BeginExecuteRequest((ar) => - { - try - { - var requestResultBytes = TrionServer.EndExecuteRequest(ar); - var resultStream = new System.IO.MemoryStream(requestResultBytes); - var resultXml = System.Xml.Linq.XDocument.Load(resultStream); - var questions = new string[2]; - foreach (var questionXml in resultXml.Element("SecurityQuestions").Elements()) - { - var value = (questionXml.Value == "null" ? null : questionXml.Value); - switch (questionXml.Name.LocalName) - { - case "EmailAddress": - // Ignore - break; - case "FirstQuestion": - questions[0] = value; - break; - case "SecondQuestion": - questions[1] = value; - break; - case "ErrorCode": - throw new TrionServerException(value); - } - } - SetResult(questions); - Complete(null, ar.CompletedSynchronously); - } - catch (System.Net.WebException ex) - { - Complete(ex, false); - } - catch (System.Xml.XmlException ex) - { - Complete(ex, false); - } - catch (TrionServerException ex) - { - Complete(ex, false); - } - }, null, RequestUri, PostVariables); - } - } - - /// - /// Gets the security questions assigned to a RIFT account - /// - /// A user defined value - /// The function that get's called when the function is finished - /// User name for a RIFT account - /// Password for a RIFT account - /// Object which implements IAsyncResult that allows the caller to wait for the function to return - public static IAsyncResult BeginGetSecurityQuestions(AsyncCallback userCallback, object stateObject, string userName, string password) - { - var variables = new Dictionary - { - { "emailAddress", userName }, - { "password", password }, - }; - var uri = new Uri(string.Format("{0}/external/get-account-security-questions.action", TrionApiServer)); - var result = new ExecuteGetSecurityQuestionsAsyncResult(userCallback, stateObject, typeof(TrionServer), "get-security-questions", uri, variables); - result.Process(); - return result; - } - - /// - /// Gets the data for the finished asynchronous call - /// - /// The object from the "Begin..." function - /// The security questions. The array has a length of 2. - public static string[] EndGetSecurityQuestions(IAsyncResult asyncResult) - { - return Helpers.AsyncResult.End(asyncResult, typeof(TrionServer), "get-security-questions"); - } - - class ExecuteSecurityKeyAsyncResult : Helpers.AsyncResultNoResult - { - private Uri RequestUri { get; set; } - private Dictionary PostVariables { get; set; } - private IAccount Account { get; set; } - private string DeviceId { get; set; } - - public ExecuteSecurityKeyAsyncResult(AsyncCallback userCallback, object stateObject, object owner, string operationId, Uri requestUri, Dictionary postVariables, IAccount account, string deviceId) - : base(userCallback, stateObject, owner, operationId) - { - Account = account; - RequestUri = requestUri; - PostVariables = postVariables; - DeviceId = deviceId; - } - - internal override void Process() - { - TrionServer.BeginExecuteRequest((ar) => - { - try - { - var requestResultBytes = TrionServer.EndExecuteRequest(ar); - var resultStream = new System.IO.MemoryStream(requestResultBytes); - var resultXml = System.Xml.Linq.XDocument.Load(resultStream); - ProcessSecretKeyResult(Account, resultXml); - Account.DeviceId = DeviceId; - Complete(null, ar.CompletedSynchronously); - } - catch (System.Net.WebException ex) - { - Complete(ex, false); - } - catch (System.Xml.XmlException ex) - { - Complete(ex, false); - } - catch (TrionServerException ex) - { - Complete(ex, false); - } - }, null, RequestUri, PostVariables); - } - } - - /// - /// Recover an authenticator configuration for a given account and device id - /// - /// A user defined value - /// The function that get's called when the function is finished - /// The account to recover - /// User name for the RIFT account - /// Password for the RIFT account - /// The answers to the security questions - /// The device id used to recover the authenticator configuration - /// Object which implements IAsyncResult that allows the caller to wait for the function to return - public static IAsyncResult BeginRecoverSecurityKey(AsyncCallback userCallback, object stateObject, IAccount account, string userName, string password, string[] securityQuestionAnswers, string deviceId) - { - var variables = new Dictionary - { - { "emailAddress", userName }, - { "password", password }, - { "deviceId", deviceId }, - { "securityAnswer", securityQuestionAnswers[0] ?? string.Empty }, - { "secondSecurityAnswer", securityQuestionAnswers[1] ?? string.Empty }, - }; - var uri = new Uri(string.Format("{0}/external/retrieve-device-key.action", TrionApiServer)); - var result = new ExecuteSecurityKeyAsyncResult(userCallback, stateObject, typeof(TrionServer), "recover-security-key", uri, variables, account, deviceId); - result.Process(); - return result; - } - - /// - /// Gets the data for the finished asynchronous call - /// - /// The object from the "Begin..." function - public static void EndRecoverSecurityKey(IAsyncResult asyncResult) - { - Helpers.AsyncResultNoResult.End(asyncResult, typeof(TrionServer), "recover-security-key"); - } - - private static void ProcessSecretKeyResult(IAccount account, System.Xml.Linq.XDocument resultXml) - { - foreach (var itemXml in resultXml.Element("DeviceKey").Elements()) - { - var value = (itemXml.Value == "null" ? null : itemXml.Value); - switch (itemXml.Name.LocalName) - { - case "DeviceId": - account.DeviceId = value; - break; - case "SerialKey": - account.SerialKey = value; - break; - case "SecretKey": - account.SecretKey = value; - break; - case "ErrorCode": - throw new TrionServerException(value); - } - } - } - - /// - /// Creates a new security key (and other account information) for a given device id - /// - /// The account object used to write the new data to - /// The device id to create the account information - /// A user defined value - /// The function that get's called when the function is finished - /// Object which implements IAsyncResult that allows the caller to wait for the function to return - public static IAsyncResult BeginCreateSecurityKey(AsyncCallback userCallback, object stateObject, IAccount account, string deviceId) - { - var variables = new Dictionary - { - { "deviceId", deviceId }, - }; - var uri = new Uri(string.Format("{0}/external/create-device-key", TrionApiServer)); - var result = new ExecuteSecurityKeyAsyncResult(userCallback, stateObject, typeof(TrionServer), "create-security-key", uri, variables, account, deviceId); - result.Process(); - return result; - } - - /// - /// Gets the data for the finished asynchronous call - /// - /// The object from the "Begin..." function - public static void EndCreateSecurityKey(IAsyncResult asyncResult) - { - Helpers.AsyncResultNoResult.End(asyncResult, typeof(TrionServer), "create-security-key"); - } - -#if !WINDOWS_PHONE - /// - /// Tests if the server certificate is valid. - /// - /// An object that contains state information for this validation. - /// The certificate used to authenticate the remote party. - /// The chain of certificate authorities associated with the remote certificate. - /// One or more errors associated with the remote certificate. - /// A System.Boolean value that determines whether the specified certificate is accepted for authentication. - public static bool CertificateIsValid(object sender, X509Certificate certificate, X509Chain chain, System.Net.Security.SslPolicyErrors sslPolicyErrors) - { - if (sslPolicyErrors != System.Net.Security.SslPolicyErrors.None) - return false; - var cert = certificate as X509Certificate2; - var hostName = cert.GetNameInfo(X509NameType.DnsName, false); - var validTrionHostNames = new string[] { - ".trionworlds.com", - ".triongames.com", - ".trionworld.priv", - ".triongames.priv", - }; - foreach (var validTrionHostName in validTrionHostNames) - { - if (hostName.EndsWith(validTrionHostName)) - return true; - } - return false; - } -#endif - - /// - /// Returns the real device ID or (if none available) a random device ID. - /// - /// The real or random device ID - public static string GetOrCreateRandomDeviceId() - { - var deviceId = GetDeviceId(); - if (deviceId == null) - deviceId = CreateRandomDeviceId(); - return deviceId; - } - - /// - /// Creates a random device ID that's accepted by TRION - /// - /// Random device ID - public static string CreateRandomDeviceId() - { - return Guid.NewGuid().ToString().Replace("-", string.Empty).ToUpper(); - } - - /// - /// Returns the real device ID - /// - /// null if no device ID available - public static string GetDeviceId() - { - if (Platform == null) - return null; - return Platform.DeviceId; - } - } -} diff --git a/RiftAuthenticator.Library/TrionServerException.cs b/RiftAuthenticator.Library/TrionServerException.cs deleted file mode 100644 index 8355e6d..0000000 --- a/RiftAuthenticator.Library/TrionServerException.cs +++ /dev/null @@ -1,50 +0,0 @@ -/* - * This file is part of RIFTâ„¢ Authenticator for Windows. - * - * RIFTâ„¢ Authenticator for Windows is free software: you can redistribute - * it and/or modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * RIFTâ„¢ Authenticator for Windows is distributed in the hope that it will - * be useful, but WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with RIFTâ„¢ Authenticator for Windows. If not, see - * . - */ - -using System; -using System.Collections.Generic; -using System.Text; - -namespace RiftAuthenticator.Library -{ - class TrionServerException : Exception - { - private static string ErrorCodeToMessage(string errorCode) - { - switch (errorCode) - { - case "account_not_available": - return Resources.Strings.Error_account_not_available; - case "account_missing": - return Resources.Strings.Error_account_missing; - case "account_securityAnswer_missing": - return Resources.Strings.Error_account_securityAnswer_missing; - case "account_securityAnswers_incorrect": - return Resources.Strings.Error_account_securityAnswers_incorrect; - case "device_id_missing": - return Resources.Strings.Error_device_id_missing; - } - return string.Format(Resources.Strings.Error_unknown, errorCode); - } - - public TrionServerException(string errorCode) - : base(ErrorCodeToMessage(errorCode)) - { - } - } -} diff --git a/RiftAuthenticator.Library/Util.cs b/RiftAuthenticator.Library/Util.cs deleted file mode 100644 index b03d3bf..0000000 --- a/RiftAuthenticator.Library/Util.cs +++ /dev/null @@ -1,88 +0,0 @@ -/* - * This file is part of RIFT™ Authenticator for Windows. - * - * RIFT™ Authenticator for Windows is free software: you can redistribute - * it and/or modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * RIFT™ Authenticator for Windows is distributed in the hope that it will - * be useful, but WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with RIFT™ Authenticator for Windows. If not, see - * . - */ - -using System; -using System.Text; - -namespace RiftAuthenticator.Library -{ - /// - /// Utility functions - /// - public static class Util - { - /// - /// The ticks for the date 1970-01-01 - /// - private static long MillisStartTicks = new System.DateTime(1970, 1, 1).Ticks; - - /// - /// Get the current time in milliseconds - /// - /// Current time in milliseconds - public static long CurrentTimeMillis() - { - return TimeToMillis(DateTime.Now); - } - - private static long TicksToMillis(long ticks) - { - var timeStart = MillisStartTicks; - var timeDiff = ticks - timeStart; - return timeDiff / 10000L; - } - - /// - /// Convert the given timestamp to milliseconds since 1970-01-01 - /// - /// The timestamp to convert to milliseconds - /// Returns the timestamp in milliseconds sinze 1970-01-01 - public static long TimeToMillis(DateTime time) - { - return TicksToMillis(time.ToUniversalTime().Ticks); - } - - /// - /// Converts a HEX string to a byte array - /// - /// The HEX string to convert - /// The byte array created from the HEX string - public static byte[] HexToBytes(string hexString) - { - System.Diagnostics.Debug.Assert((hexString.Length & 1) == 0); - var result = new byte[hexString.Length / 2]; - var resultIndex = 0; - for (int i = 0; i != hexString.Length; i += 2) - result[resultIndex++] = byte.Parse(hexString.Substring(i, 2), System.Globalization.NumberStyles.AllowHexSpecifier); - return result; - } - - /// - /// Converts a byte array to a HEX string - /// - /// Array of bytes to convert - /// The resulting HEX string - public static string BytesToHex(byte[] bytes) - { - var result = new StringBuilder(); - for (int i = 0; i != bytes.Length; ++i) - result.AppendFormat("{0:X02}", bytes[i]); - return result.ToString(); - } - } -} diff --git a/RiftAuthenticator.WP70.sln b/RiftAuthenticator.WP70.sln deleted file mode 100644 index c86fab8..0000000 --- a/RiftAuthenticator.WP70.sln +++ /dev/null @@ -1,34 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 11.00 -# Visual Studio 2010 Express for Windows Phone -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RiftAuthenticator.WP70", "RiftAuthenticator.WP70\RiftAuthenticator.WP70.csproj", "{61D6DCD8-CC52-4DB8-BA79-5FED50699B5B}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RiftAuthenticator.Library.WP70", "RiftAuthenticator.Library\RiftAuthenticator.Library.WP70.csproj", "{5088302B-1729-4D9E-A5B6-C781CEFA2D93}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RiftAuthenticator.Library.IsolatedStorage.WP70", "RiftAuthenticator.Library.IsolatedStorage\RiftAuthenticator.Library.IsolatedStorage.WP70.csproj", "{ACC8E344-534D-4CCF-9E4F-9301DDCC3D6C}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {61D6DCD8-CC52-4DB8-BA79-5FED50699B5B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {61D6DCD8-CC52-4DB8-BA79-5FED50699B5B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {61D6DCD8-CC52-4DB8-BA79-5FED50699B5B}.Debug|Any CPU.Deploy.0 = Debug|Any CPU - {61D6DCD8-CC52-4DB8-BA79-5FED50699B5B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {61D6DCD8-CC52-4DB8-BA79-5FED50699B5B}.Release|Any CPU.Build.0 = Release|Any CPU - {61D6DCD8-CC52-4DB8-BA79-5FED50699B5B}.Release|Any CPU.Deploy.0 = Release|Any CPU - {5088302B-1729-4D9E-A5B6-C781CEFA2D93}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5088302B-1729-4D9E-A5B6-C781CEFA2D93}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5088302B-1729-4D9E-A5B6-C781CEFA2D93}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5088302B-1729-4D9E-A5B6-C781CEFA2D93}.Release|Any CPU.Build.0 = Release|Any CPU - {ACC8E344-534D-4CCF-9E4F-9301DDCC3D6C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {ACC8E344-534D-4CCF-9E4F-9301DDCC3D6C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {ACC8E344-534D-4CCF-9E4F-9301DDCC3D6C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {ACC8E344-534D-4CCF-9E4F-9301DDCC3D6C}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/RiftAuthenticator.WP70/AccountLogin.xaml b/RiftAuthenticator.WP70/AccountLogin.xaml deleted file mode 100644 index 4a6ce49..0000000 --- a/RiftAuthenticator.WP70/AccountLogin.xaml +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/RiftAuthenticator.WP70/MainPage.xaml.cs b/RiftAuthenticator.WP70/MainPage.xaml.cs deleted file mode 100644 index ff6a72b..0000000 --- a/RiftAuthenticator.WP70/MainPage.xaml.cs +++ /dev/null @@ -1,258 +0,0 @@ -/* - * This file is part of RIFTâ„¢ Authenticator for Windows. - * - * RIFTâ„¢ Authenticator for Windows is free software: you can redistribute - * it and/or modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * RIFTâ„¢ Authenticator for Windows is distributed in the hope that it will - * be useful, but WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with RIFTâ„¢ Authenticator for Windows. If not, see - * . - */ - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Net; -using System.Windows; -using System.Windows.Controls; -using System.Windows.Documents; -using System.Windows.Input; -using System.Windows.Media; -using System.Windows.Media.Animation; -using System.Windows.Shapes; -using Microsoft.Phone.Controls; - -namespace RiftAuthenticator.WP7 -{ - public partial class MainPage : PhoneApplicationPage - { - private Library.IAccountManager AccountManager - { - get - { - return App.AccountManager; - } - set - { - App.AccountManager = value; - } - } - - private Library.IAccount Account - { - get - { - return App.Account; - } - set - { - App.Account = value; - } - } - - private System.Windows.Threading.DispatcherTimer Timer; - - // Constructor - public MainPage() - { - InitializeComponent(); - } - - protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e) - { - if (App.ExitApp) - { - App.Quit(); - } - else if (App.BackToMainPage) - { - if (NavigationService.CanGoBack) - { - NavigationService.GoBack(); - } - else - { - App.BackToMainPage = false; - base.OnNavigatedTo(e); - } - } - else - { - if (App.AppStartedNormally && AccountManager.Count == 0) - { - NavigationService.Navigate(new Uri("/NoConfigPage.xaml", UriKind.Relative)); - } - else - { - base.OnNavigatedTo(e); - } - } - InitAuthenticatorUI(); - } - - private void InitPageUI() - { -#if !WP70 - ApplicationBar.Mode = Microsoft.Phone.Shell.ApplicationBarMode.Minimized; -#endif - - if (ApplicationBar.Buttons.Count == 0) - { - var appBarButton = new Microsoft.Phone.Shell.ApplicationBarIconButton(new Uri("/Images/appbar.add.rest.png", UriKind.Relative)) - { - Text = WP7.Resources.AppResource.Add, - }; - appBarButton.Click += AccountAdd_Click; - ApplicationBar.Buttons.Add(appBarButton); - - appBarButton = new Microsoft.Phone.Shell.ApplicationBarIconButton(new Uri("/Images/appbar.download.rest.png", UriKind.Relative)) - { - Text = WP7.Resources.AppResource.CmdRecover, - }; - appBarButton.Click += AccountRecover_Click; - ApplicationBar.Buttons.Add(appBarButton); - - appBarButton = new Microsoft.Phone.Shell.ApplicationBarIconButton(new Uri("/Images/appbar.delete.rest.png", UriKind.Relative)) - { - Text = WP7.Resources.AppResource.Delete, - }; - appBarButton.Click += AccountDelete_Click; - ApplicationBar.Buttons.Add(appBarButton); - - appBarButton = new Microsoft.Phone.Shell.ApplicationBarIconButton(new Uri("/Images/appbar.edit.rest.png", UriKind.Relative)) - { - Text = WP7.Resources.AppResource.Edit, - }; - appBarButton.Click += AccountEdit_Click; - ApplicationBar.Buttons.Add(appBarButton); - } - } - - private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e) - { - App.AuthConfigReset(); - InitPageUI(); - } - - private void SetAccount(string accountId) - { - App.SetAccount(accountId); - UpdateAccountList(); - } - - private void InitAuthenticatorUI() - { - if (Account == null) - SetAccount(null); - UpdateAccountList(); - if (Timer == null) - { - Timer = new System.Windows.Threading.DispatcherTimer(); - Timer.Interval = new TimeSpan(0, 0, 0, 0, 200); - Timer.Tick += new EventHandler(Timer_Tick); - Timer.Start(); - } - } - - void Timer_Tick(object sender, EventArgs e) - { - Dispatcher.BeginInvoke(() => - { - RefreshToken(); - }); - } - - private void UpdateAccountList() - { - var oldSelectedAccount = Account; - Accounts.DataContext = null; - Accounts.DataContext = AccountManager; - if (AccountManager.Count == 0) - AccountManager.Add(AccountManager.CreateAccount()); - int newSelectedAccountIndex = -1; - if (oldSelectedAccount != null) - { - newSelectedAccountIndex = AccountManager.IndexOf(oldSelectedAccount); - } - if (newSelectedAccountIndex == -1) - Accounts.SelectedIndex = 0; - else - Accounts.SelectedIndex = newSelectedAccountIndex; - Accounts.Visibility = ((AccountManager.Count > 1) ? System.Windows.Visibility.Visible : System.Windows.Visibility.Collapsed); - } - - void RefreshToken() - { - if (Account == null || Account.IsEmpty) - { - LoginToken.Text = string.Empty; - SerialKey.Text = string.Empty; - RemainingValidTime.Value = 0; - } - else - { - if (SerialKey.Text != Account.FormattedSerialKey) - SerialKey.Text = Account.FormattedSerialKey; - var loginToken = Account.CalculateToken(); - if (LoginToken.Text != loginToken.Token) - LoginToken.Text = loginToken.Token; - RemainingValidTime.Value = loginToken.RemainingMillis; - } - } - - private void AccountAdd_Click(object sender, EventArgs e) - { - App.AuthCreateStep = 1; - NavigationService.Navigate(new Uri("/CreateAuthenticator.xaml", UriKind.Relative)); - } - - private void Accounts_SelectionChanged(object sender, SelectionChangedEventArgs e) - { - if (Accounts.SelectedIndex == -1) - { - Account = null; - } - else - { - Account = (Library.IAccount)Accounts.SelectedItem; - } - RefreshToken(); - } - - private void AccountRecover_Click(object sender, EventArgs e) - { - App.AuthCreateStep = 1; - NavigationService.Navigate(new Uri("/AuthenticatorDescription.xaml", UriKind.Relative)); - } - - private void AccountDelete_Click(object sender, EventArgs e) - { - if (Account == null || Account.IsEmpty) - return; - if (MessageBox.Show(WP7.Resources.AppResource.DeleteAuthenticatorQuestion, WP7.Resources.AppResource.MessageBoxTitleWarning, MessageBoxButton.OKCancel) != MessageBoxResult.OK) - return; - AccountManager.Remove(Account); - AccountManager.SaveAccounts(); - SetAccount(null); - } - - private void ExecSyncAll_Click(object sender, RoutedEventArgs e) - { - if (Account == null || Account.IsEmpty) - return; - App.ExecuteTimeSync(Dispatcher); - } - - private void AccountEdit_Click(object sender, EventArgs e) - { - NavigationService.Navigate(new Uri("/AuthenticatorDescription.xaml?action=edit", UriKind.Relative)); - } - } -} \ No newline at end of file diff --git a/RiftAuthenticator.WP70/NoConfigPage.xaml b/RiftAuthenticator.WP70/NoConfigPage.xaml deleted file mode 100644 index 512f52a..0000000 --- a/RiftAuthenticator.WP70/NoConfigPage.xaml +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -