Subversion Repositories Scribus

Rev

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