• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5cr.define('print_preview.ticket_items', function() {
6  'use strict';
7
8  /**
9   * Copies ticket item whose value is a {@code string} that indicates how many
10   * copies of the document should be printed. The ticket item is backed by a
11   * string since the user can textually input the copies value.
12   * @param {!print_preview.DestinationStore} destinationStore Destination store
13   *     used determine if a destination has the copies capability.
14   * @constructor
15   * @extends {print_preview.ticket_items.TicketItem}
16   */
17  function Copies(destinationStore) {
18    print_preview.ticket_items.TicketItem.call(
19        this, null /*appState*/, null /*field*/, destinationStore);
20  };
21
22  Copies.prototype = {
23    __proto__: print_preview.ticket_items.TicketItem.prototype,
24
25    /** @override */
26    wouldValueBeValid: function(value) {
27      if (/[^\d]+/.test(value)) {
28        return false;
29      }
30      var copies = parseInt(value);
31      if (copies > 999 || copies < 1) {
32        return false;
33      }
34      return true;
35    },
36
37    /** @override */
38    isCapabilityAvailable: function() {
39      return !!this.getCopiesCapability_();
40    },
41
42    /** @return {number} The number of copies indicated by the ticket item. */
43    getValueAsNumber: function() {
44      return parseInt(this.getValue());
45    },
46
47    /** @override */
48    getDefaultValueInternal: function() {
49      var cap = this.getCopiesCapability_();
50      return cap.hasOwnProperty('default') ? cap.default : '';
51    },
52
53    /** @override */
54    getCapabilityNotAvailableValueInternal: function() {
55      return '1';
56    },
57
58    /**
59     * @return {Object} Copies capability of the selected destination.
60     * @private
61     */
62    getCopiesCapability_: function() {
63      var dest = this.getSelectedDestInternal();
64      return (dest &&
65              dest.capabilities &&
66              dest.capabilities.printer &&
67              dest.capabilities.printer.copies) ||
68             null;
69    }
70  };
71
72  // Export
73  return {
74    Copies: Copies
75  };
76});
77