|
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
/*
This file contains the implementation of the PageRange class
and the PageRangeSelection enum for page range support in the
dialog.
*/
using System;
using System.Globalization;
using System.Windows;
namespace System.Windows.Controls
{
/// <summary>
/// Enumeration of values for page range options.
/// </summary>
public enum PageRangeSelection
{
/// <summary>
/// All pages are printed.
/// </summary>
AllPages,
/// <summary>
/// A set of user defined pages are printed.
/// </summary>
UserPages,
/// <summary>
/// The current pages (as defined by the application) are printed.
/// </summary>
CurrentPage,
/// <summary>
/// The currently selected pages (as defined by the application) are printed.
/// </summary>
SelectedPages
}
/// <summary>
/// This class defines one single page range from
/// a start page to an end page.
/// </summary>
public struct PageRange
{
#region Constructors
/// <summary>
/// Constructs an instance of PageRange with one specified page.
/// </summary>
/// <param name="page">
/// Single page of this page range.
/// </param>
public
PageRange(
int page
)
{
_pageFrom = page;
_pageTo = page;
}
/// <summary>
/// Constructs an instance of PageRange with specified values.
/// </summary>
/// <param name="pageFrom">
/// Starting page of this range.
/// </param>
/// <param name="pageTo">
/// Ending page of this range.
/// </param>
public
PageRange(
int pageFrom,
int pageTo
)
{
_pageFrom = pageFrom;
_pageTo = pageTo;
}
#endregion Constructors
#region Public properties
/// <summary>
/// Gets or sets the start page of the page range.
/// </summary>
public int PageFrom
{
get
{
return _pageFrom;
}
set
{
_pageFrom = value;
}
}
/// <summary>
/// Gets of sets the end page of the page range.
/// </summary>
public int PageTo
{
get
{
return _pageTo;
}
set
{
_pageTo = value;
}
}
#endregion Public properties
#region Private data
private
int _pageFrom;
private
int _pageTo;
#endregion Private data
#region Override methods
/// <summary>
/// Converts this PageRange structure to its string representation.
/// </summary>
/// <returns>
/// A string value containing the range.
/// </returns>
public
override
string
ToString(
)
{
string rangeText;
if (_pageTo != _pageFrom)
{
rangeText = String.Format(CultureInfo.InvariantCulture, SR.PrintDialogPageRange, _pageFrom, _pageTo);
}
else
{
rangeText = _pageFrom.ToString(CultureInfo.InvariantCulture);
}
return rangeText;
}
/// <summary>
/// Tests equality between this instance and the specified object.
/// </summary>
/// <param name="obj">
/// The object to compare this instance to.
/// </param>
/// <returns>
/// True if obj is equal to this object, else false.
/// Returns false if obj is not of type PageRange.
/// </returns>
public
override
bool
Equals(
object obj
)
{
if (obj == null || obj.GetType() != typeof(PageRange))
{
return false;
}
return Equals((PageRange) obj);
}
/// <summary>
/// Tests equality between this instance and the specified page range.
/// </summary>
/// <param name="pageRange">
/// The page range to compare this instance to.
/// </param>
/// <returns>
/// True if the page range is equal to this object, else false.
/// </returns>
public
bool
Equals(
PageRange pageRange
)
{
return (pageRange.PageFrom == this.PageFrom) && (pageRange.PageTo == this.PageTo);
}
/// <summary>
/// Calculates a hash code for this PageRange.
/// </summary>
/// <returns>
/// Returns an integer hashcode for this instance.
/// </returns>
public
override
int
GetHashCode()
{
return base.GetHashCode();
}
/// <summary>
/// Test for equality.
/// </summary>
public
static
bool
operator ==(
PageRange pr1,
PageRange pr2
)
{
return pr1.Equals(pr2);
}
/// <summary>
/// Test for inequality.
/// </summary>
public
static
bool
operator !=(
PageRange pr1,
PageRange pr2
)
{
return !(pr1.Equals(pr2));
}
#endregion Override methods
}
} |