File: kcupsoptionssettingswidget_p.cpp

package info (click to toggle)
kde4libs 4%3A4.8.4-4%2Bdeb7u1
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 80,588 kB
  • sloc: cpp: 746,914; xml: 8,370; ansic: 6,295; java: 4,060; perl: 2,930; yacc: 2,462; sh: 1,225; python: 1,081; ruby: 337; lex: 278; makefile: 29
file content (111 lines) | stat: -rw-r--r-- 4,345 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
/*
 *  This file is part of the KDE libraries
 *  Copyright (c) 2009 John Layt <john@layt.net>
 *
 *  This library is free software; you can redistribute it and/or
 *  modify it under the terms of the GNU Library General Public
 *  License as published by the Free Software Foundation; either
 *  version 2 of the License, or (at your option) any later version.
 *
 *  This library 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
 *  Library General Public License for more details.
 *
 *  You should have received a copy of the GNU Library General Public License
 *  along with this library; see the file COPYING.LIB.  If not, write to
 *  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
 *  Boston, MA 02110-1301, USA.
 */

#include "kcupsoptionssettingswidget_p.h"

#include <QPrinter>
#include <QPrintDialog>
#include <QPrintEngine>
#include <QLabel>
#include <QBoxLayout>
#include <QFrame>

#include <klocale.h>

/** @internal */
KCupsOptionsSettingsWidget::KCupsOptionsSettingsWidget( QPrintDialog *parent ) : KCupsOptionsWidget( parent )
{
    //set all the default values
    //TODO restore last used values
    initPageSet();
    setSystemSelectsPages( false );
}

KCupsOptionsSettingsWidget::~KCupsOptionsSettingsWidget()
{
}

void KCupsOptionsSettingsWidget::setupCupsOptions( QStringList &cupsOptions )
{
    if ( m_dialog->printRange() != QAbstractPrintDialog::Selection && pageSet() != AllPages ) {
        //If the application is selecting pages and the first page number is even then need to adjust the odd-even accordingly
        if ( !m_systemSelectsPages && m_dialog->printRange() == QAbstractPrintDialog::PageRange && ( m_dialog->fromPage() % 2 == 0 ) ) {
            if ( pageSet() == OddPages ) setCupsOption( cupsOptions, "page-set", "even" );
            if ( pageSet() == EvenPages ) setCupsOption( cupsOptions, "page-set", "odd" );
        } else {
            if ( pageSet() == OddPages ) setCupsOption( cupsOptions, "page-set", "odd" );
            if ( pageSet() == EvenPages ) setCupsOption( cupsOptions, "page-set", "even" );
        }
    }

    if ( m_systemSelectsPages && m_dialog->printRange() == QAbstractPrintDialog::PageRange ) {
        setCupsOption( cupsOptions, "page-ranges", QString("%1-%2").arg( m_dialog->fromPage() ).arg( m_dialog->toPage() ) );
    }
}

void KCupsOptionsSettingsWidget::initPageSet()
{
    m_pageSetCombo = new QComboBox( m_dialog );
    m_pageSetCombo->addItem( i18n("All Pages"), QVariant( AllPages ) );
    m_pageSetCombo->addItem( i18n("Odd Pages"), QVariant( OddPages ) );
    m_pageSetCombo->addItem( i18n("Even Pages"), QVariant( EvenPages ) );

    setPageSet( AllPages );

    QWidget *settingsWidget = m_dialog->findChild<QWidget*>("gbPrintRange");
    if ( settingsWidget ) {
        QFrame *pageSetLine = new QFrame();
        pageSetLine->setObjectName( QString::fromUtf8("pageSetLine") );
        pageSetLine->setFrameShape( QFrame::HLine );
        pageSetLine->setFrameShadow( QFrame::Sunken );

        QLabel *pageSetLabel = new QLabel( i18n("Page Set") );
        pageSetLabel->setObjectName( QString::fromUtf8("pageSetLabel") );

        QHBoxLayout *pageSetLayout = new QHBoxLayout();
        pageSetLayout->setObjectName( QString::fromUtf8("pageSetLayout") );
        pageSetLayout->addWidget( pageSetLabel );
        pageSetLayout->addWidget( m_pageSetCombo );

        QBoxLayout *settingsLayout = static_cast<QBoxLayout*>( settingsWidget->layout() );
        settingsLayout->insertWidget( 3, pageSetLine );
        settingsLayout->insertLayout( 4, pageSetLayout );
    }
}

void KCupsOptionsSettingsWidget::setPageSet( KCupsOptionsSettingsWidget::PageSet pageSet  )
{
    m_pageSetCombo->setCurrentIndex( m_pageSetCombo->findData( QVariant( pageSet ) ) );
}

KCupsOptionsSettingsWidget::PageSet KCupsOptionsSettingsWidget::pageSet() const
{
    return (KCupsOptionsSettingsWidget::PageSet) m_pageSetCombo->itemData( m_pageSetCombo->currentIndex() ).toInt();
}

void KCupsOptionsSettingsWidget::setSystemSelectsPages( bool serverSelectsPages )
{
    m_systemSelectsPages = serverSelectsPages;
}

bool KCupsOptionsSettingsWidget::systemSelectsPages() const
{
    return m_systemSelectsPages;
}