blob: 013263bbdc5d4cee8bcc687416de0eb21413bbeb [file] [log] [blame]
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
cr.define('print_preview.ticket_items', function() {
'use strict';
/**
* Page range ticket item whose value is a {@code string} that represents
* which pages in the document should be printed.
* @param {!print_preview.DocumentInfo} documentInfo Information about the
* document to print.
* @constructor
* @extends {print_preview.ticket_items.TicketItem}
*/
function PageRange(documentInfo) {
print_preview.ticket_items.TicketItem.call(
this,
null /*appState*/,
null /*field*/,
null /*destinationStore*/,
documentInfo);
};
/**
* Impossibly large page number.
* @type {number}
* @const
* @private
*/
PageRange.MAX_PAGE_NUMBER_ = 1000000000;
PageRange.prototype = {
__proto__: print_preview.ticket_items.TicketItem.prototype,
/** @override */
wouldValueBeValid: function(value) {
return null != pageRangeTextToPageRanges(
value, this.getDocumentInfoInternal().pageCount);
},
/**
* @return {!print_preview.PageNumberSet} Set of page numbers defined by the
* page range string.
*/
getPageNumberSet: function() {
var pageNumberList = pageRangeTextToPageList(
this.getValue(), this.getDocumentInfoInternal().pageCount);
return new print_preview.PageNumberSet(pageNumberList);
},
/** @override */
isCapabilityAvailable: function() {
return true;
},
/** @override */
getDefaultValueInternal: function() {
return '';
},
/** @override */
getCapabilityNotAvailableValueInternal: function() {
return '';
},
/**
* @return {!Array.<Object.<{from: number, to: number}>>} A list of page
* ranges.
*/
getPageRanges: function() {
return pageRangeTextToPageRanges(this.getValue()) || [];
},
/**
* @return {!Array.<object.<{from: number, to: number}>>} A list of page
* ranges suitable for use in the native layer.
* TODO(vitalybuka): this should be removed when native layer switched to
* page ranges.
*/
getDocumentPageRanges: function() {
var pageRanges = pageRangeTextToPageRanges(
this.getValue(), this.getDocumentInfoInternal().pageCount);
return pageRanges || [];
},
};
// Export
return {
PageRange: PageRange
};
});