author | eilers <eilers> | 2004-11-06 19:41:22 (UTC) |
---|---|---|
committer | eilers <eilers> | 2004-11-06 19:41:22 (UTC) |
commit | 82023570a9b5880629a5f7ce477479ffcb7af930 (patch) (unidiff) | |
tree | df2e790812950d2a2cc32af3e39cc8d293133259 | |
parent | 90d458c63d274a66ca427710b88e2f090a0ab11b (diff) | |
download | opie-82023570a9b5880629a5f7ce477479ffcb7af930.zip opie-82023570a9b5880629a5f7ce477479ffcb7af930.tar.gz opie-82023570a9b5880629a5f7ce477479ffcb7af930.tar.bz2 |
Avoid crash if app was unable to open the file
-rw-r--r-- | noncore/apps/opie-sheet/Excel.cpp | 3 | ||||
-rw-r--r-- | noncore/apps/opie-sheet/mainwindow.cpp | 7 |
2 files changed, 7 insertions, 3 deletions
diff --git a/noncore/apps/opie-sheet/Excel.cpp b/noncore/apps/opie-sheet/Excel.cpp index 57aef20..338bc30 100644 --- a/noncore/apps/opie-sheet/Excel.cpp +++ b/noncore/apps/opie-sheet/Excel.cpp | |||
@@ -568,49 +568,50 @@ void ExcelBook::ParseSheets(void) | |||
568 | default: | 568 | default: |
569 | break; | 569 | break; |
570 | }; | 570 | }; |
571 | }; | 571 | }; |
572 | }; | 572 | }; |
573 | 573 | ||
574 | void ExcelBook::GetSheets(void) | 574 | void ExcelBook::GetSheets(void) |
575 | { | 575 | { |
576 | ExcelSheet* sheet; | 576 | ExcelSheet* sheet; |
577 | Sheets.resize(0); | 577 | Sheets.resize(0); |
578 | sheet=GetSheet(); | 578 | sheet=GetSheet(); |
579 | while (sheet->Cells.count()!= 0 ) | 579 | while (sheet->Cells.count()!= 0 ) |
580 | { | 580 | { |
581 | Sheets.resize(Sheets.count()+1); | 581 | Sheets.resize(Sheets.count()+1); |
582 | Sheets[Sheets.count()-1]=sheet; | 582 | Sheets[Sheets.count()-1]=sheet; |
583 | sheet->name=*Names[Sheets.count()-1]; | 583 | sheet->name=*Names[Sheets.count()-1]; |
584 | sheet=GetSheet(); | 584 | sheet=GetSheet(); |
585 | }; | 585 | }; |
586 | }; | 586 | }; |
587 | 587 | ||
588 | bool ExcelBook::ParseBook(char *file) | 588 | bool ExcelBook::ParseBook(char *file) |
589 | { | 589 | { |
590 | dateformat=QString(""); | 590 | dateformat=QString(""); |
591 | DetectEndian(); | 591 | DetectEndian(); |
592 | OpenFile(file); | 592 | if ( !OpenFile( file ) ) |
593 | return false; | ||
593 | SeekBOF(); | 594 | SeekBOF(); |
594 | ParseSheets(); | 595 | ParseSheets(); |
595 | GetSheets(); | 596 | GetSheets(); |
596 | return true; | 597 | return true; |
597 | }; | 598 | }; |
598 | 599 | ||
599 | QString ExcelBook::GetASCII(char* inbytes, int pos, int chars) | 600 | QString ExcelBook::GetASCII(char* inbytes, int pos, int chars) |
600 | { | 601 | { |
601 | int i; | 602 | int i; |
602 | QString outstr=""; | 603 | QString outstr=""; |
603 | for (i = 0; i < chars; i++) | 604 | for (i = 0; i < chars; i++) |
604 | { | 605 | { |
605 | outstr.append(inbytes[i+pos]); | 606 | outstr.append(inbytes[i+pos]); |
606 | }; | 607 | }; |
607 | return outstr; | 608 | return outstr; |
608 | }; | 609 | }; |
609 | 610 | ||
610 | QString ExcelBook::GetUnicode(char * inbytes, int pos, int chars) | 611 | QString ExcelBook::GetUnicode(char * inbytes, int pos, int chars) |
611 | { | 612 | { |
612 | QString outstr=""; | 613 | QString outstr=""; |
613 | int i; | 614 | int i; |
614 | int rc; | 615 | int rc; |
615 | for (i=0; i<chars*2; i++) | 616 | for (i=0; i<chars*2; i++) |
616 | { | 617 | { |
diff --git a/noncore/apps/opie-sheet/mainwindow.cpp b/noncore/apps/opie-sheet/mainwindow.cpp index 7394623..3095142 100644 --- a/noncore/apps/opie-sheet/mainwindow.cpp +++ b/noncore/apps/opie-sheet/mainwindow.cpp | |||
@@ -856,65 +856,68 @@ void MainWindow::slotColumnShow() | |||
856 | 856 | ||
857 | void MainWindow::slotColumnHide() | 857 | void MainWindow::slotColumnHide() |
858 | { | 858 | { |
859 | int row1, row2, col1, col2; | 859 | int row1, row2, col1, col2; |
860 | sheet->getSelection(&row1, &col1, &row2, &col2); | 860 | sheet->getSelection(&row1, &col1, &row2, &col2); |
861 | 861 | ||
862 | for (int col=col1; col<=col2; ++col) | 862 | for (int col=col1; col<=col2; ++col) |
863 | sheet->hideColumn(col); | 863 | sheet->hideColumn(col); |
864 | } | 864 | } |
865 | 865 | ||
866 | void MainWindow::slotFileSaveAs() | 866 | void MainWindow::slotFileSaveAs() |
867 | { | 867 | { |
868 | TextDialog dialogText(this); | 868 | TextDialog dialogText(this); |
869 | if (dialogText.exec(tr("Save File As"), tr("&File Name:"), currentDoc->name())!=QDialog::Accepted || dialogText.getValue().isEmpty()) return; | 869 | if (dialogText.exec(tr("Save File As"), tr("&File Name:"), currentDoc->name())!=QDialog::Accepted || dialogText.getValue().isEmpty()) return; |
870 | 870 | ||
871 | currentDoc->setName(dialogText.getValue()); | 871 | currentDoc->setName(dialogText.getValue()); |
872 | currentDoc->setFile(QString::null); | 872 | currentDoc->setFile(QString::null); |
873 | currentDoc->setLinkFile(QString::null); | 873 | currentDoc->setLinkFile(QString::null); |
874 | documentSave(currentDoc); | 874 | documentSave(currentDoc); |
875 | } | 875 | } |
876 | 876 | ||
877 | void MainWindow::slotImportExcel(const DocLnk &lnkDoc) | 877 | void MainWindow::slotImportExcel(const DocLnk &lnkDoc) |
878 | { | 878 | { |
879 | ExcelBook file1; | 879 | ExcelBook file1; |
880 | file1.ParseBook((char *)lnkDoc.file().ascii()); | 880 | if ( !file1.ParseBook((char *)lnkDoc.file().ascii()) ){ |
881 | QMessageBox::critical(this, tr("Error"), tr("<td>Unable to open or parse file!</td>")); | ||
882 | return; | ||
883 | } | ||
881 | int NumOfSheets=file1.Sheets.count(); | 884 | int NumOfSheets=file1.Sheets.count(); |
882 | printf("OpieSheet::NumberOfSheets:%d\r\n",NumOfSheets); | 885 | printf("OpieSheet::NumberOfSheets:%d\r\n",NumOfSheets); |
883 | if (documentModified && saveCurrentFile()==QMessageBox::Cancel) return; | 886 | if (documentModified && saveCurrentFile()==QMessageBox::Cancel) return; |
884 | if (currentDoc) delete currentDoc; | 887 | if (currentDoc) delete currentDoc; |
885 | currentDoc = new DocLnk(); | 888 | currentDoc = new DocLnk(); |
886 | listSheets.clear(); | 889 | listSheets.clear(); |
887 | comboSheets->clear(); | 890 | comboSheets->clear(); |
888 | int w1,r,c; | 891 | int w1,r,c; |
889 | ExcelSheet* sh1; | 892 | ExcelSheet* sh1; |
890 | typeSheet* newSheet; | 893 | typeSheet* newSheet; |
891 | QString* str; | 894 | QString* str; |
892 | typeCellData* newCell; | 895 | typeCellData* newCell; |
893 | for(w1=1;w1<=NumOfSheets;w1++) | 896 | for(w1=1;w1<=NumOfSheets;w1++) |
894 | { | 897 | { |
895 | sh1=file1.Sheets[w1-1]; | 898 | sh1=file1.Sheets[w1-1]; |
896 | printf("OpieSheet:newSheet:%x,r=%d,c=%d\r\n",sh1,sh1->rows,sh1->cols); | 899 | // printf("OpieSheet:newSheet:%x,r=%d,c=%d\r\n",sh1, sh1->rows,sh1->cols); |
897 | newSheet=new typeSheet; | 900 | newSheet=new typeSheet; |
898 | newSheet->data.setAutoDelete(TRUE); | 901 | newSheet->data.setAutoDelete(TRUE); |
899 | newSheet->name=sh1->name; | 902 | newSheet->name=sh1->name; |
900 | printf("OpieSheet:Sheetname:%s\r\n",sh1->name.ascii()); | 903 | printf("OpieSheet:Sheetname:%s\r\n",sh1->name.ascii()); |
901 | comboSheets->insertItem(newSheet->name); | 904 | comboSheets->insertItem(newSheet->name); |
902 | for(r=1; r <= sh1->rows; r++) | 905 | for(r=1; r <= sh1->rows; r++) |
903 | { | 906 | { |
904 | for(c=1;c <= sh1->cols; c++) | 907 | for(c=1;c <= sh1->cols; c++) |
905 | { | 908 | { |
906 | str=file1.CellDataString(sh1,r-1,c-1); | 909 | str=file1.CellDataString(sh1,r-1,c-1); |
907 | if(str!=NULL && r<DEFAULT_NUM_ROWS && c<DEFAULT_NUM_COLS) | 910 | if(str!=NULL && r<DEFAULT_NUM_ROWS && c<DEFAULT_NUM_COLS) |
908 | { | 911 | { |
909 | newCell=new typeCellData; | 912 | newCell=new typeCellData; |
910 | newCell->row=r-1; | 913 | newCell->row=r-1; |
911 | newCell->col=c-1; | 914 | newCell->col=c-1; |
912 | if(str!=NULL) newCell->data=QString(*str); else newCell->data=QString(""); | 915 | if(str!=NULL) newCell->data=QString(*str); else newCell->data=QString(""); |
913 | newCell->background=QBrush(Qt::white, Qt::SolidPattern); | 916 | newCell->background=QBrush(Qt::white, Qt::SolidPattern); |
914 | newCell->alignment=(Qt::AlignmentFlags)(Qt::AlignLeft | Qt::AlignTop); | 917 | newCell->alignment=(Qt::AlignmentFlags)(Qt::AlignLeft | Qt::AlignTop); |
915 | newCell->fontColor=Qt::black; | 918 | newCell->fontColor=Qt::black; |
916 | newCell->font=font(); | 919 | newCell->font=font(); |
917 | newCell->borders.right=QPen(Qt::gray, 1, Qt::SolidLine); | 920 | newCell->borders.right=QPen(Qt::gray, 1, Qt::SolidLine); |
918 | newCell->borders.bottom=QPen(Qt::gray, 1, Qt::SolidLine); | 921 | newCell->borders.bottom=QPen(Qt::gray, 1, Qt::SolidLine); |
919 | newSheet->data.append(newCell); | 922 | newSheet->data.append(newCell); |
920 | //there is no format parsing at the moment or style parsing | 923 | //there is no format parsing at the moment or style parsing |