Subversion Repositories Scribus

Rev

Rev 10427 | Rev 10601 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
6658 cbradney 1
/*
2
For general Scribus (>=1.3.2) copyright and licensing information please refer
3
to the COPYING file provided with the program. Following this notice may exist
4
a copyright and/or license notice that predates the release of Scribus 1.3.2
5
for which a new license (GPL+exception) is in place.
6
*/
7
#include "createrange.h"
8
 
10016 cbradney 9
#include <QGroupBox>
10
#include <QLabel>
11
#include <QListWidget>
12
#include <QPushButton>
13
#include <QRadioButton>
14
#include <QSpinBox>
15
#include <QString>
16
#include <QTabWidget>
6658 cbradney 17
 
10469 cbradney 18
CreateRange::CreateRange(QString currText, int pageCount, QWidget* parent, Qt::WFlags fl )
19
        : QDialog(parent, fl),
6658 cbradney 20
        m_PageCount(pageCount),
21
        m_RangeType(0),
22
        m_BasicRangeType(0)
23
{
8524 subik 24
        setupUi(this);
6658 cbradney 25
        pageCountValueLabel->setText(QString("%1").arg(pageCount));
10427 cbradney 26
        basicConsecutiveFromSpinBox->setMinimum(1);
27
        basicConsecutiveToSpinBox->setMinimum(1);
28
        basicConsecutiveFromSpinBox->setMaximum(pageCount);
29
        basicConsecutiveToSpinBox->setMaximum(pageCount);
6658 cbradney 30
        basicSelectRangeType(m_BasicRangeType);
10427 cbradney 31
        advPageGroupSizeSpinBox->setMaximum(pageCount);
6775 cbradney 32
        if (m_PageCount==1)
9509 subik 33
                basicEvenRadioButton->setShown(false);
6775 cbradney 34
        if (currText.length()>0)
9509 subik 35
                basicRangeListBox->addItem(currText);
6658 cbradney 36
        // signals and slots connections
37
        connect(tabWidget, SIGNAL(currentChanged(QWidget*)), this, SLOT(selectRangeType(QWidget*)));
38
        connect(basicRangeAddButton, SIGNAL(clicked()), this, SLOT(basicAddToRange()));
39
        connect(basicRangeDelButton, SIGNAL(clicked()), this, SLOT(basicDelFromRange()));
40
        connect(basicConsecutiveRadioButton, SIGNAL(clicked()), this, SLOT(basicSelectRangeTypeConsec()));
41
        connect(basicCommaSepRadioButton, SIGNAL(clicked()), this, SLOT(basicSelectRangeTypeComma()));
6667 cbradney 42
        connect(basicEvenRadioButton, SIGNAL(clicked()), this, SLOT(basicSelectRangeTypeEven()));
43
        connect(basicOddRadioButton, SIGNAL(clicked()), this, SLOT(basicSelectRangeTypeOdd()));
6658 cbradney 44
        connect(basicRangeUpButton, SIGNAL(clicked()), this, SLOT(basicMoveUp()));
45
        connect(basicRangeDownButton, SIGNAL(clicked()), this, SLOT(basicMoveDown()));
46
        connect(advPageGroupSizeSpinBox, SIGNAL(valueChanged(int)), this, SLOT(advSpinChange(int)));
47
        connect(okButton, SIGNAL(clicked()), this, SLOT(accept()));
48
        connect(cancelButton, SIGNAL(clicked()), this, SLOT(reject()));
49
        advPageGroupSizeSpinBox->setValue(4);
50
}
51
 
52
CreateRange::~CreateRange()
53
{
54
}
55
 
56
void CreateRange::getCreateRangeData(CreateRangeData& crData)
57
{
58
        crData.pageRange="";
6821 cbradney 59
        //First tab selected
6658 cbradney 60
        if (m_RangeType==0)
61
        {
7973 cbradney 62
                uint c=basicRangeListBox->count();
6821 cbradney 63
                if (c==0)
6658 cbradney 64
                {
6821 cbradney 65
                        basicAddToRange();
66
                        c=basicRangeListBox->count();
67
                }
68
                for (uint i=0;i<c;++i)
69
                {
70
                        if (i!=0 && i<c)
6658 cbradney 71
                                crData.pageRange+=",";
9509 subik 72
                        crData.pageRange+=basicRangeListBox->item(i)->text();
6658 cbradney 73
                }
74
        }
75
        else
76
                crData.pageRange=m_PageString;
77
}
78
 
79
void CreateRange::basicAddToRange( )
80
{
6775 cbradney 81
        QString newEntry;
6667 cbradney 82
        switch (m_BasicRangeType)
83
        {
84
                case 0:
85
                        {
86
                                int from=basicConsecutiveFromSpinBox->value();
87
                                int to=basicConsecutiveToSpinBox->value();
88
                                if (from==to)
6775 cbradney 89
                                        newEntry=QString("%1").arg(from);
6667 cbradney 90
                                else
6775 cbradney 91
                                        newEntry=QString("%1-%2").arg(from).arg(to);
6667 cbradney 92
                        }
93
                        break;
94
                case 1:
6775 cbradney 95
                        newEntry=basicCommaSepLineEdit->text();
6667 cbradney 96
                        break;
97
                case 2:
98
                        {
99
                                QString numbers;
100
                                for (int i=2; i<=m_PageCount; i+=2)
101
                                {
102
                                        if (i!=2)
103
                                                numbers+=",";
104
                                        numbers+=QString("%1").arg(i);
105
                                }
6775 cbradney 106
                                newEntry=numbers;
6667 cbradney 107
                        }
108
                        break;
109
                case 3:
110
                        {
111
                                QString numbers;
112
                                for (int i=1; i<=m_PageCount; i+=2)
113
                                {
114
                                        if (i!=1)
115
                                                numbers+=",";
116
                                        numbers+=QString("%1").arg(i);
117
                                }
6775 cbradney 118
                                newEntry=numbers;
6667 cbradney 119
                        }
120
                        break;
121
        }
6775 cbradney 122
        if (newEntry.length()!=0)
9509 subik 123
                basicRangeListBox->addItem(newEntry);
6658 cbradney 124
}
125
 
126
void CreateRange::basicDelFromRange()
127
{
9509 subik 128
        delete basicRangeListBox->takeItem(basicRangeListBox->currentRow());
6658 cbradney 129
}
130
 
131
void CreateRange::basicSelectRangeTypeConsec()
132
{
133
        basicSelectRangeType(0);
134
}
135
 
136
void CreateRange::basicSelectRangeTypeComma()
137
{
138
        basicSelectRangeType(1);
139
}
140
 
6667 cbradney 141
void CreateRange::basicSelectRangeTypeEven()
142
{
143
        basicSelectRangeType(2);
144
}
145
 
146
void CreateRange::basicSelectRangeTypeOdd()
147
{
148
        basicSelectRangeType(3);
149
}
150
 
6658 cbradney 151
void CreateRange::basicSelectRangeType(int i)
152
{
153
        m_BasicRangeType=i;
154
        bool basicRangeTypeIsConsecutive=(i==0);
155
        basicConsecutiveFromLabel->setEnabled(basicRangeTypeIsConsecutive);
156
        basicConsecutiveFromSpinBox->setEnabled(basicRangeTypeIsConsecutive);
157
        basicConsecutiveToLabel->setEnabled(basicRangeTypeIsConsecutive);
158
        basicConsecutiveToSpinBox->setEnabled(basicRangeTypeIsConsecutive);
159
        basicCommaSepLineEdit->setEnabled(!basicRangeTypeIsConsecutive);
160
}
161
 
162
void CreateRange::selectRangeType(QWidget *)
163
{
10394 cbradney 164
        m_RangeType=tabWidget->currentIndex();
6658 cbradney 165
}
166
 
167
 
168
void CreateRange::basicMoveUp()
169
{
9509 subik 170
        int index=basicRangeListBox->currentRow();
7374 cbradney 171
        if (index==-1 || index==0)
6658 cbradney 172
                return;
173
        basicRangeListBox->clearSelection();
9509 subik 174
        QListWidgetItem * clbi = basicRangeListBox->takeItem(index);
175
        basicRangeListBox->insertItem(qMax(0, index-1), clbi);
6658 cbradney 176
        basicRangeListBox->setCurrentItem(clbi);
177
}
178
 
179
void CreateRange::basicMoveDown()
180
{
9509 subik 181
        int index=basicRangeListBox->currentRow();
7374 cbradney 182
        if (index==-1 || index==static_cast<int>(basicRangeListBox->count())-1)
6658 cbradney 183
                return;
184
        basicRangeListBox->clearSelection();
9509 subik 185
        QListWidgetItem * clbi = basicRangeListBox->takeItem(index);
186
        basicRangeListBox->insertItem(index+1, clbi);
6658 cbradney 187
        basicRangeListBox->setCurrentItem(clbi);
188
}
189
 
190
 
191
void CreateRange::advSpinChange(int /*v*/)
192
{
193
        m_PageString="";
194
        int mp1=m_PageCount+1;
195
        //locked at 4 for now.
196
        if (m_PageCount % 4 == 0)
197
        {
198
        //28,1,2,27, 26,3,4,25
199
                for (int i=m_PageCount;i>m_PageCount/2;i-=2)
200
                {
201
                        if (i!=m_PageCount)
202
                                m_PageString+=",";
203
                        m_PageString+=QString("%1").arg(i);
204
                        m_PageString+=QString(",%1").arg(mp1-i);
205
                        m_PageString+=QString(",%1").arg(mp1-i+1);
206
                        m_PageString+=QString(",%1").arg(i-1);
207
                }
208
        }
209
        QString tmp(m_PageString);
210
        tmp.truncate(20);
211
        advSampleOrderExampleLabel->setText(tmp+"...");
212
}