author | thufir <thufir> | 2002-07-04 17:55:16 (UTC) |
---|---|---|
committer | thufir <thufir> | 2002-07-04 17:55:16 (UTC) |
commit | f3eaec3a60e32af8abad6563df32499a096b7e70 (patch) (side-by-side diff) | |
tree | 996220ef5b11b20c6482e21b2cdb928ce6a9c6c3 | |
parent | 3fc06dce797f62393bab41f4ea520bdbeb31eb9f (diff) | |
download | opie-f3eaec3a60e32af8abad6563df32499a096b7e70.zip opie-f3eaec3a60e32af8abad6563df32499a096b7e70.tar.gz opie-f3eaec3a60e32af8abad6563df32499a096b7e70.tar.bz2 |
fixed bugs
-rw-r--r-- | noncore/apps/opie-sheet/opie-sheet.control | 2 | ||||
-rw-r--r-- | noncore/apps/opie-sheet/sortdlg.cpp | 10 |
2 files changed, 6 insertions, 6 deletions
diff --git a/noncore/apps/opie-sheet/opie-sheet.control b/noncore/apps/opie-sheet/opie-sheet.control index f772247..38f9083 100644 --- a/noncore/apps/opie-sheet/opie-sheet.control +++ b/noncore/apps/opie-sheet/opie-sheet.control @@ -1,10 +1,10 @@ -Files: bin/sheetqt apps/Applications/opie-sheet.desktop help/html/sheetqt.html help/html/sheetqt/* pics/opie-sheet/sheetqt.png +Files: bin/sheetqt apps/Applications/opie-sheet.desktop help/sheetqt.html help/sheetqt/* pics/opie-sheet/sheetqt.png Priority: optional Section: opie/applications Maintainer: Serdar Ozler <sozler@sitebest.com> Architecture: arm Version: 1.0.1 Depends: opie-base ($QPE_VERSION) License: Public Domain Description: Opie Sheet Spreadsheet software for Opie. diff --git a/noncore/apps/opie-sheet/sortdlg.cpp b/noncore/apps/opie-sheet/sortdlg.cpp index 4f18fd3..c60be0d 100644 --- a/noncore/apps/opie-sheet/sortdlg.cpp +++ b/noncore/apps/opie-sheet/sortdlg.cpp @@ -1,192 +1,192 @@ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ /* * Opie Sheet (formerly Sheet/Qt) * by Serdar Ozler <sozler@sitebest.com> */ #include <qlabel.h> #include <qradiobutton.h> #include <qmessagebox.h> #include "sortdlg.h" SortDialog::SortDialog(QWidget *parent=0) :QDialog(parent, 0, TRUE) { // Main widget tabs=new QTabWidget(this); widgetSort=new QWidget(tabs); widgetOptions=new QWidget(tabs); tabs->addTab(widgetSort, tr("&Sort")); tabs->addTab(widgetOptions, tr("&Options")); // Sort tab comboFieldA=createFieldCombo(tr("&Sort by"), 10); groupOrderA=createOrderButtons(10); comboFieldB=createFieldCombo(tr("&Then by"), 90); groupOrderB=createOrderButtons(90); comboFieldC=createFieldCombo(tr("Then &by"), 170); groupOrderC=createOrderButtons(170); // Options tab checkCase=new QCheckBox(tr("&Case Sensitive"), widgetOptions); checkCase->setGeometry(10, 10, 215, 20); checkCase->setChecked(TRUE); groupDirection=new QVButtonGroup(tr("&Direction"), widgetOptions); groupDirection->setGeometry(10, 40, 215, 70); QRadioButton *radio=new QRadioButton(tr("&Top to bottom (rows)"), groupDirection); radio=new QRadioButton(tr("&Left to right (columns)"), groupDirection); groupDirection->setButton(0); connect(groupDirection, SIGNAL(clicked(int)), this, SLOT(directionChanged(int))); // Main widget box=new QVBoxLayout(this); box->addWidget(tabs); setCaption(tr("Sort")); } SortDialog::~SortDialog() { } QComboBox *SortDialog::createFieldCombo(const QString &caption, int y) { QLabel *label=new QLabel(caption, widgetSort); label->setGeometry(10, y+5, 215, 20); QComboBox *combo=new QComboBox(FALSE, widgetSort); combo->setGeometry(10, y+35, 105, 20); label->setBuddy(combo); return combo; } QVButtonGroup *SortDialog::createOrderButtons(int y) { QVButtonGroup *group=new QVButtonGroup(widgetSort); group->setGeometry(125, y, 100, 60); QRadioButton *radio=new QRadioButton(tr("&Ascending"), group); radio=new QRadioButton(tr("&Descending"), group); group->setButton(0); return group; } void SortDialog::directionChanged(int id) { direction=id; fillFieldCombo(comboFieldA); fillFieldCombo(comboFieldB); fillFieldCombo(comboFieldC); } void SortDialog::fillFieldCombo(QComboBox *combo) { combo->clear(); if (direction) for (int row=row1; row<=row2; ++row) combo->insertItem("Row "+QString::number(row+1)); else for (int col=col1; col<=col2; ++col) combo->insertItem("Column "+Sheet::getHeaderString(col+1)); } int SortDialog::exec(Sheet *s) { sheet=s; sheet->getSelection(&row1, &col1, &row2, &col2); direction=0; fillFieldCombo(comboFieldA); fillFieldCombo(comboFieldB); fillFieldCombo(comboFieldC); if (row1==row2 && col1==col2) { QMessageBox::warning(this, tr("Error"), tr("One cell cannot be sorted!")); return QDialog::Rejected; } if (QDialog::exec()==QDialog::Accepted) { - QString field1S=comboFieldA->currentText(), field2S=comboFieldA->currentText(), field3S=comboFieldA->currentText(); + QString field1S=comboFieldA->currentText(), field2S=comboFieldB->currentText(), field3S=comboFieldC->currentText(); field1S=field1S.mid(field1S.find(' ')+1); field2S=field2S.mid(field2S.find(' ')+1); field3S=field3S.mid(field3S.find(' ')+1); int field1, field2, field3; if (direction) { field1=field1S.toInt()-1; field2=field2S.toInt()-1; field3=field3S.toInt()-1; int i, j; for (i=col2; i>=col1; --i) for (j=col1+1; j<=i; ++j) { bool swap=FALSE; int compareResult=compareItems(s->item(field1, j-1), s->item(field1, j), groupOrderA->id(groupOrderA->selected()), checkCase->isChecked()); if (compareResult>0) swap=TRUE; else if (compareResult==0) { - compareResult=compareItems(s->item(field2, j-1), s->item(field2, j), groupOrderA->id(groupOrderB->selected()), checkCase->isChecked()); + compareResult=compareItems(s->item(field2, j-1), s->item(field2, j), groupOrderB->id(groupOrderB->selected()), checkCase->isChecked()); if (compareResult>0) swap=TRUE; else if (compareResult==0) { - compareResult=compareItems(s->item(field3, j-1), s->item(field3, j), groupOrderA->id(groupOrderC->selected()), checkCase->isChecked()); + compareResult=compareItems(s->item(field3, j-1), s->item(field3, j), groupOrderC->id(groupOrderC->selected()), checkCase->isChecked()); if (compareResult>0) swap=TRUE; } } if (swap) for (int row=row1; row<=row2; ++row) s->swapCells(row, j-1, row, j); } } else { field1=Sheet::getHeaderColumn(field1S)-1; field2=Sheet::getHeaderColumn(field2S)-1; field3=Sheet::getHeaderColumn(field3S)-1; int i, j; for (i=row2; i>=row1; --i) for (j=row1+1; j<=i; ++j) { bool swap=FALSE; int compareResult=compareItems(s->item(j-1, field1), s->item(j, field1), groupOrderA->id(groupOrderA->selected()), checkCase->isChecked()); if (compareResult>0) swap=TRUE; else if (compareResult==0) { - compareResult=compareItems(s->item(j-1, field2), s->item(j, field2), groupOrderA->id(groupOrderB->selected()), checkCase->isChecked()); + compareResult=compareItems(s->item(j-1, field2), s->item(j, field2), groupOrderB->id(groupOrderB->selected()), checkCase->isChecked()); if (compareResult>0) swap=TRUE; else if (compareResult==0) { - compareResult=compareItems(s->item(j-1, field3), s->item(j, field3), groupOrderA->id(groupOrderC->selected()), checkCase->isChecked()); + compareResult=compareItems(s->item(j-1, field3), s->item(j, field3), groupOrderC->id(groupOrderC->selected()), checkCase->isChecked()); if (compareResult>0) swap=TRUE; } } if (swap) for (int col=col1; col<=col2; ++col) s->swapCells(j-1, col, j, col); } } return QDialog::Accepted; } return QDialog::Rejected; } int SortDialog::compareItems(QTableItem *item1, QTableItem *item2, int descending=0, bool caseSensitive=TRUE) { int result=0; if (item1) { if (item2) result=(caseSensitive ? item1->text().compare(item2->text()) : item1->text().upper().compare(item2->text().upper())); else result=-1; } else if (item2) result=1; return (descending ? -result : result); } |