~ubuntu-branches/ubuntu/vivid/qpdfview/vivid

« back to all changes in this revision

Viewing changes to sources/printdialog.cpp

  • Committer: Package Import Robot
  • Author(s): Benjamin Eltzner
  • Date: 2013-04-22 17:40:43 UTC
  • mfrom: (1.2.7)
  • Revision ID: package-import@ubuntu.com-20130422174043-0kav0mabth2lv35f
Tags: 0.4.2-1
* New upstream release.
* Added Hardening.
* Adjusted Exit mnemonic. (Closes: #702749)
  Thanks to David Fries <david@fries.net>

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 
 
3
Copyright 2012-2013 Adam Reichold
 
4
 
 
5
This file is part of qpdfview.
 
6
 
 
7
qpdfview is free software: you can redistribute it and/or modify
 
8
it under the terms of the GNU General Public License as published by
 
9
the Free Software Foundation, either version 2 of the License, or
 
10
(at your option) any later version.
 
11
 
 
12
qpdfview is distributed in the hope that it will be useful,
 
13
but WITHOUT ANY WARRANTY; without even the implied warranty of
 
14
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
15
GNU General Public License for more details.
 
16
 
 
17
You should have received a copy of the GNU General Public License
 
18
along with qpdfview.  If not, see <http://www.gnu.org/licenses/>.
 
19
 
 
20
*/
 
21
 
 
22
#include "printdialog.h"
 
23
 
 
24
#include <QCheckBox>
 
25
#include <QComboBox>
 
26
#include <QFormLayout>
 
27
#include <QLineEdit>
 
28
 
 
29
#include "settings.h"
 
30
 
 
31
Settings* PrintDialog::s_settings = 0;
 
32
 
 
33
QPrinter* PrintDialog::createPrinter()
 
34
{
 
35
    QPrinter* printer = new QPrinter();
 
36
 
 
37
    printer->setCollateCopies(Settings::instance()->printDialog().collateCopies());
 
38
    printer->setPageOrder(Settings::instance()->printDialog().pageOrder());
 
39
    printer->setOrientation(Settings::instance()->printDialog().orientation());
 
40
    printer->setColorMode(Settings::instance()->printDialog().colorMode());
 
41
    printer->setDuplex(Settings::instance()->printDialog().duplex());
 
42
 
 
43
    return printer;
 
44
}
 
45
 
 
46
PrintDialog::PrintDialog(QPrinter* printer, QWidget* parent) : QPrintDialog(printer, parent)
 
47
{
 
48
    if(s_settings == 0)
 
49
    {
 
50
        s_settings = Settings::instance();
 
51
    }
 
52
 
 
53
    // print options
 
54
 
 
55
    m_printOptionsWidget = new QWidget(this);
 
56
    m_printOptionsLayout = new QFormLayout(m_printOptionsWidget);
 
57
 
 
58
    m_fitToPageCheckBox = new QCheckBox(this);
 
59
    m_fitToPageCheckBox->setChecked(s_settings->printDialog().fitToPage());
 
60
 
 
61
    m_printOptionsLayout->addRow(tr("Fit to page:"), m_fitToPageCheckBox);
 
62
 
 
63
    m_pageRangesLineEdit = new QLineEdit(this);
 
64
 
 
65
    m_printOptionsLayout->addRow(tr("Page ranges:"), m_pageRangesLineEdit);
 
66
 
 
67
    m_pageSetComboBox = new QComboBox(this);
 
68
    m_pageSetComboBox->addItem(tr("All pages"), static_cast< uint >(PrintOptions::AllPages));
 
69
    m_pageSetComboBox->addItem(tr("Even pages"), static_cast< uint >(PrintOptions::EvenPages));
 
70
    m_pageSetComboBox->addItem(tr("Odd pages"), static_cast< uint >(PrintOptions::OddPages));
 
71
    m_pageSetComboBox->setCurrentIndex(m_pageSetComboBox->findData(static_cast< uint >(s_settings->printDialog().pageSet())));
 
72
 
 
73
    m_printOptionsLayout->addRow(tr("Page set:"), m_pageSetComboBox);
 
74
 
 
75
    m_numberUpComboBox = new QComboBox(this);
 
76
    m_numberUpComboBox->addItem(tr("Single page"), static_cast< uint >(PrintOptions::SinglePage));
 
77
    m_numberUpComboBox->addItem(tr("Two pages"), static_cast< uint >(PrintOptions::TwoPages));
 
78
    m_numberUpComboBox->addItem(tr("Four pages"), static_cast< uint >(PrintOptions::FourPages));
 
79
    m_numberUpComboBox->addItem(tr("Six pages"), static_cast< uint >(PrintOptions::SixPages));
 
80
    m_numberUpComboBox->addItem(tr("Nine pages"), static_cast< uint >(PrintOptions::NinePages));
 
81
    m_numberUpComboBox->addItem(tr("Sixteen pages"), static_cast< uint >(PrintOptions::SixteenPages));
 
82
    m_numberUpComboBox->setCurrentIndex(m_numberUpComboBox->findData(static_cast< uint >(s_settings->printDialog().numberUp())));
 
83
 
 
84
    m_printOptionsLayout->addRow(tr("Number-up:"), m_numberUpComboBox);
 
85
 
 
86
    m_numberUpLayoutComboBox = new QComboBox(this);
 
87
    m_numberUpLayoutComboBox->addItem(tr("Bottom to top and left to right"), static_cast< uint >(PrintOptions::BottomTopLeftRight));
 
88
    m_numberUpLayoutComboBox->addItem(tr("Bottom to top and right to left"), static_cast< uint >(PrintOptions::BottomTopRightLeft));
 
89
    m_numberUpLayoutComboBox->addItem(tr("Left to right and bottom to top"), static_cast< uint >(PrintOptions::LeftRightBottomTop));
 
90
    m_numberUpLayoutComboBox->addItem(tr("Left to right and top to bottom"), static_cast< uint >(PrintOptions::LeftRightTopBottom));
 
91
    m_numberUpLayoutComboBox->addItem(tr("Right to left and bottom to top"), static_cast< uint >(PrintOptions::RightLeftBottomTop));
 
92
    m_numberUpLayoutComboBox->addItem(tr("Right to left and top to bottom"), static_cast< uint >(PrintOptions::RightLeftTopBottom));
 
93
    m_numberUpLayoutComboBox->addItem(tr("Top to bottom and left to right"), static_cast< uint >(PrintOptions::TopBottomLeftRight));
 
94
    m_numberUpLayoutComboBox->addItem(tr("Top to bottom and right to left"), static_cast< uint >(PrintOptions::TopBottomRightLeft));
 
95
    m_numberUpLayoutComboBox->setCurrentIndex(m_numberUpLayoutComboBox->findData(static_cast< uint >(s_settings->printDialog().numberUpLayout())));
 
96
 
 
97
    m_printOptionsLayout->addRow(tr("Number-up layout:"), m_numberUpLayoutComboBox);
 
98
 
 
99
    m_printOptionsWidget->setWindowTitle(tr("Extended options"));
 
100
    setOptionTabs(QList< QWidget* >() << m_printOptionsWidget);
 
101
}
 
102
 
 
103
PrintOptions PrintDialog::printOptions() const
 
104
{
 
105
    PrintOptions printOptions;
 
106
 
 
107
    printOptions.fitToPage = m_fitToPageCheckBox->isChecked();
 
108
 
 
109
    printOptions.pageRanges = m_pageRangesLineEdit->text();
 
110
    printOptions.pageSet = static_cast< PrintOptions::PageSet >(m_pageSetComboBox->itemData(m_pageSetComboBox->currentIndex()).toUInt());
 
111
 
 
112
    printOptions.numberUp = static_cast< PrintOptions::NumberUp >(m_numberUpComboBox->itemData(m_numberUpComboBox->currentIndex()).toUInt());
 
113
    printOptions.numberUpLayout = static_cast< PrintOptions::NumberUpLayout >(m_numberUpLayoutComboBox->itemData(m_numberUpLayoutComboBox->currentIndex()).toUInt());
 
114
 
 
115
    return printOptions;
 
116
}
 
117
 
 
118
void PrintDialog::accept()
 
119
{
 
120
    QPrintDialog::accept();
 
121
 
 
122
    s_settings->printDialog().setCollateCopies(printer()->collateCopies());
 
123
    s_settings->printDialog().setPageOrder(printer()->pageOrder());
 
124
    s_settings->printDialog().setOrientation(printer()->orientation());
 
125
    s_settings->printDialog().setColorMode(printer()->colorMode());
 
126
    s_settings->printDialog().setDuplex(printer()->duplex());
 
127
 
 
128
    s_settings->printDialog().setFitToPage(m_fitToPageCheckBox->isChecked());
 
129
    s_settings->printDialog().setPageSet(static_cast< PrintOptions::PageSet >(m_pageSetComboBox->itemData(m_pageSetComboBox->currentIndex()).toUInt()));
 
130
    s_settings->printDialog().setNumberUp(static_cast< PrintOptions::NumberUp >(m_numberUpComboBox->itemData(m_numberUpComboBox->currentIndex()).toUInt()));
 
131
    s_settings->printDialog().setNumberUpLayout(static_cast< PrintOptions::NumberUpLayout >(m_numberUpLayoutComboBox->itemData(m_numberUpLayoutComboBox->currentIndex()).toUInt()));
 
132
}