Subversion Repositories Scribus

Rev

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