diff options
| author | craig <craig@11d20701-8431-0410-a711-e3c959e3b870> | 2012-01-01 11:40:09 +0000 |
|---|---|---|
| committer | craig <craig@11d20701-8431-0410-a711-e3c959e3b870> | 2012-01-01 11:40:09 +0000 |
| commit | 7ed83b6c6666eb8b6b104c211ae7e52907350372 (patch) | |
| tree | 4430b556abac0ad660a0aacf1887d77f85d8be02 /scribus/ui/createrange.cpp | |
| download | scribus-7ed83b6c6666eb8b6b104c211ae7e52907350372.tar.gz scribus-7ed83b6c6666eb8b6b104c211ae7e52907350372.tar.xz scribus-7ed83b6c6666eb8b6b104c211ae7e52907350372.zip | |
Branch 1.3.5 tree to 1.4.x tree, goodbye 1.3.x
git-svn-id: svn://scribus.net/branches/Version14x/Scribus@17163 11d20701-8431-0410-a711-e3c959e3b870
Diffstat (limited to 'scribus/ui/createrange.cpp')
| -rw-r--r-- | scribus/ui/createrange.cpp | 214 |
1 files changed, 214 insertions, 0 deletions
diff --git a/scribus/ui/createrange.cpp b/scribus/ui/createrange.cpp new file mode 100644 index 0000000..6e01bdf --- /dev/null +++ b/scribus/ui/createrange.cpp @@ -0,0 +1,214 @@ +/* +For general Scribus (>=1.3.2) copyright and licensing information please refer +to the COPYING file provided with the program. Following this notice may exist +a copyright and/or license notice that predates the release of Scribus 1.3.2 +for which a new license (GPL+exception) is in place. +*/ +#include "createrange.h" + +#include "usertaskstructs.h" + +#include <QGroupBox> +#include <QLabel> +#include <QListWidget> +#include <QPushButton> +#include <QRadioButton> +#include <QSpinBox> +#include <QString> +#include <QTabWidget> + +CreateRange::CreateRange(QString currText, int pageCount, QWidget* parent, Qt::WFlags fl ) + : QDialog(parent, fl), + m_PageCount(pageCount), + m_RangeType(0), + m_BasicRangeType(0) +{ + setupUi(this); + pageCountValueLabel->setText(QString("%1").arg(pageCount)); + basicConsecutiveFromSpinBox->setMinimum(1); + basicConsecutiveToSpinBox->setMinimum(1); + basicConsecutiveFromSpinBox->setMaximum(pageCount); + basicConsecutiveToSpinBox->setMaximum(pageCount); + basicSelectRangeType(m_BasicRangeType); + advPageGroupSizeSpinBox->setMaximum(pageCount); + if (m_PageCount==1) + basicEvenRadioButton->setShown(false); + if (currText.length()>0) + basicRangeListBox->addItem(currText); + // signals and slots connections + connect(tabWidget, SIGNAL(currentChanged(int)), this, SLOT(selectRangeType(int))); + connect(basicRangeAddButton, SIGNAL(clicked()), this, SLOT(basicAddToRange())); + connect(basicRangeDelButton, SIGNAL(clicked()), this, SLOT(basicDelFromRange())); + connect(basicConsecutiveRadioButton, SIGNAL(clicked()), this, SLOT(basicSelectRangeTypeConsec())); + connect(basicCommaSepRadioButton, SIGNAL(clicked()), this, SLOT(basicSelectRangeTypeComma())); + connect(basicEvenRadioButton, SIGNAL(clicked()), this, SLOT(basicSelectRangeTypeEven())); + connect(basicOddRadioButton, SIGNAL(clicked()), this, SLOT(basicSelectRangeTypeOdd())); + connect(basicRangeUpButton, SIGNAL(clicked()), this, SLOT(basicMoveUp())); + connect(basicRangeDownButton, SIGNAL(clicked()), this, SLOT(basicMoveDown())); + connect(advPageGroupSizeSpinBox, SIGNAL(valueChanged(int)), this, SLOT(advSpinChange(int))); + connect(okButton, SIGNAL(clicked()), this, SLOT(accept())); + connect(cancelButton, SIGNAL(clicked()), this, SLOT(reject())); + advPageGroupSizeSpinBox->setValue(4); +} + +CreateRange::~CreateRange() +{ +} + +void CreateRange::getCreateRangeData(CreateRangeData& crData) +{ + crData.pageRange=""; + //First tab selected + if (m_RangeType==0) + { + uint c=basicRangeListBox->count(); + if (c==0) + { + basicAddToRange(); + c=basicRangeListBox->count(); + } + for (uint i=0;i<c;++i) + { + if (i!=0 && i<c) + crData.pageRange+=","; + crData.pageRange+=basicRangeListBox->item(i)->text(); + } + } + else + crData.pageRange=m_PageString; +} + +void CreateRange::basicAddToRange( ) +{ + QString newEntry; + switch (m_BasicRangeType) + { + case 0: + { + int from=basicConsecutiveFromSpinBox->value(); + int to=basicConsecutiveToSpinBox->value(); + if (from==to) + newEntry=QString("%1").arg(from); + else + newEntry=QString("%1-%2").arg(from).arg(to); + } + break; + case 1: + newEntry=basicCommaSepLineEdit->text(); + break; + case 2: + { + QString numbers; + for (int i=2; i<=m_PageCount; i+=2) + { + if (i!=2) + numbers+=","; + numbers+=QString("%1").arg(i); + } + newEntry=numbers; + } + break; + case 3: + { + QString numbers; + for (int i=1; i<=m_PageCount; i+=2) + { + if (i!=1) + numbers+=","; + numbers+=QString("%1").arg(i); + } + newEntry=numbers; + } + break; + } + if (newEntry.length()!=0) + basicRangeListBox->addItem(newEntry); +} + +void CreateRange::basicDelFromRange() +{ + delete basicRangeListBox->takeItem(basicRangeListBox->currentRow()); +} + +void CreateRange::basicSelectRangeTypeConsec() +{ + basicSelectRangeType(0); +} + +void CreateRange::basicSelectRangeTypeComma() +{ + basicSelectRangeType(1); +} + +void CreateRange::basicSelectRangeTypeEven() +{ + basicSelectRangeType(2); +} + +void CreateRange::basicSelectRangeTypeOdd() +{ + basicSelectRangeType(3); +} + +void CreateRange::basicSelectRangeType(int i) +{ + m_BasicRangeType=i; + bool basicRangeTypeIsConsecutive=(i==0); + basicConsecutiveFromLabel->setEnabled(basicRangeTypeIsConsecutive); + basicConsecutiveFromSpinBox->setEnabled(basicRangeTypeIsConsecutive); + basicConsecutiveToLabel->setEnabled(basicRangeTypeIsConsecutive); + basicConsecutiveToSpinBox->setEnabled(basicRangeTypeIsConsecutive); + basicCommaSepLineEdit->setEnabled(!basicRangeTypeIsConsecutive); +} + +void CreateRange::selectRangeType(int) +{ + m_RangeType=tabWidget->currentIndex(); +} + + +void CreateRange::basicMoveUp() +{ + int index=basicRangeListBox->currentRow(); + if (index==-1 || index==0) + return; + basicRangeListBox->clearSelection(); + QListWidgetItem * clbi = basicRangeListBox->takeItem(index); + basicRangeListBox->insertItem(qMax(0, index-1), clbi); + basicRangeListBox->setCurrentItem(clbi); +} + +void CreateRange::basicMoveDown() +{ + int index=basicRangeListBox->currentRow(); + if (index==-1 || index==static_cast<int>(basicRangeListBox->count())-1) + return; + basicRangeListBox->clearSelection(); + QListWidgetItem * clbi = basicRangeListBox->takeItem(index); + basicRangeListBox->insertItem(index+1, clbi); + basicRangeListBox->setCurrentItem(clbi); +} + + +void CreateRange::advSpinChange(int /*v*/) +{ + m_PageString=""; + int mp1=m_PageCount+1; + //locked at 4 for now. + if (m_PageCount % 4 == 0) + { + //28,1,2,27, 26,3,4,25 + for (int i=m_PageCount;i>m_PageCount/2;i-=2) + { + if (i!=m_PageCount) + m_PageString+=","; + m_PageString+=QString("%1").arg(i); + m_PageString+=QString(",%1").arg(mp1-i); + m_PageString+=QString(",%1").arg(mp1-i+1); + m_PageString+=QString(",%1").arg(i-1); + } + } + QString tmp(m_PageString); + tmp.truncate(20); + advSampleOrderExampleLabel->setText(tmp+"..."); +} |
