This is an automatically generated e-mail. To reply, visit: http://svn.reviewboard.kde.org/r/5726/

On October 29th, 2010, 8:21 a.m., Johannes Simon wrote:

Generally I like the idea of having a central class to save an ODF table. KChart would need one, too, btw, it is currently done in ChartShape.cpp, which is obviously the wrong place. I have two remarks regarding your approach:

1) Why not also make it load a table? It is, after all, a very related task.
2) Interesting for the chart shape would be an interface (or adapter) to use your classes to purely save/load an existing QAbstractTableModel. Note that there's no style information attached to its internal table. Maybe instead it would also be possible to use QAbstractTableModel as the handler for actual data, and have an API around it to add styles to rows, columns and cells.
1) I think that the main porpuse of the ODF library we try to provide at KOffice is for writing ODFs rather than load them. This could be added in the future, though.
2) Do note that you don't have to add a style, if you don't it'll write a mere table to the file. A KoAbstractTableModelWriter could be developed for your use case. That way the responsibilities are also very well separated.

- Carlos


On October 29th, 2010, 3:09 a.m., Carlos Licea wrote:

Review request for KOffice and Casper Boemann.
By Carlos Licea.

Updated 2010-10-29 03:09:40

Description

Warning: Mildly-Long description ahead.

>Rationale
Currently we need to save a table in at less 3 different parts:
* The TableShape (TODO as of now)
* The PPTX filter
* The DOCX filter
(We could include The KSpread table but I don't know if KSpread would like to outsource the saving of its file format.)

So far we have had different implementations, everyone with slightly different behavior and different quirks and bugs. For this reason I've decided to create a "centralized" way to save a table.
Originally I started this work in the MSOOXML filters, then moved it to a new library but then I realized that the best place was libs/odf.

>Work done
The patch introduces several classes that map to the ODF concepts. So far I'm mildly satisfied with the results, I think the API promises but it's still a long way from complete.

>Remarks
>> General
There are a few remarks I'd like to point out:
* Give a through review to the API, I want it to be as stable as possible so that I can continue building on it.
* There's going to be a naming clash between KWord's KoTableStyle and the one proposed here. I propose renaming KWord's as this class is more generic, plus it is meant to be be a public API for our ODF library. A namespace could also be added (Ko)ODF.
* I added a KoStyle class. As I said, I intended this to be a new library before realizing that it should go to the ODF library. I did, however left it as it allows less look-ups of the name in the KoGenStyles.
* Somebody might ask why I added a KoTableProperties, I didn't want to clutter the KoTable API with so many properties when its behavior is much more important.
* I still haven't added the export macro to the classes as it's on another one of my branches.
* Tests are coming.
* Documentation is also coming, I have some of it in a branch but I haven't heavily invested in it as I still consider this a work in progress.
* Adaptation in the MsooXml filters is also comming, not released again because of unstable API.

>>Implementation specific
* KoTable is the owner of all the KoCell's, KoRow's and KoColumn's. There's no way to create one of those outside the Table.
* KoCellValue maps to office:value and its linked attributes.
* KoCellChild on the other hand represents all the different children of a Cell in the table:table-cell. I intend it to be expanded over time to cover many more children so that they also can be created using a nice API.

Testing

As I said tests are coming too.

Diffs

  • branches/work/koffice-essen/libs/odf/CMakeLists.txt (1186909)
  • branches/work/koffice-essen/libs/odf/KoCell.h (PRE-CREATION)
  • branches/work/koffice-essen/libs/odf/KoCell.cpp (PRE-CREATION)
  • branches/work/koffice-essen/libs/odf/KoCellChild.h (PRE-CREATION)
  • branches/work/koffice-essen/libs/odf/KoCellChild.cpp (PRE-CREATION)
  • branches/work/koffice-essen/libs/odf/KoCellStyle.h (PRE-CREATION)
  • branches/work/koffice-essen/libs/odf/KoCellStyle.cpp (PRE-CREATION)
  • branches/work/koffice-essen/libs/odf/KoCellValue.h (PRE-CREATION)
  • branches/work/koffice-essen/libs/odf/KoCellValue.cpp (PRE-CREATION)
  • branches/work/koffice-essen/libs/odf/KoColumn.h (PRE-CREATION)
  • branches/work/koffice-essen/libs/odf/KoColumn.cpp (PRE-CREATION)
  • branches/work/koffice-essen/libs/odf/KoColumnStyle.h (PRE-CREATION)
  • branches/work/koffice-essen/libs/odf/KoDummyCellValue.h (PRE-CREATION)
  • branches/work/koffice-essen/libs/odf/KoDummyCellValue.cpp (PRE-CREATION)
  • branches/work/koffice-essen/libs/odf/KoRawCellChild.h (PRE-CREATION)
  • branches/work/koffice-essen/libs/odf/KoRawCellChild.cpp (PRE-CREATION)
  • branches/work/koffice-essen/libs/odf/KoRow.h (PRE-CREATION)
  • branches/work/koffice-essen/libs/odf/KoRow.cpp (PRE-CREATION)
  • branches/work/koffice-essen/libs/odf/KoRowStyle.h (PRE-CREATION)
  • branches/work/koffice-essen/libs/odf/KoStyle.h (PRE-CREATION)
  • branches/work/koffice-essen/libs/odf/KoStyle.cpp (PRE-CREATION)
  • branches/work/koffice-essen/libs/odf/KoTable.h (PRE-CREATION)
  • branches/work/koffice-essen/libs/odf/KoTable.cpp (PRE-CREATION)
  • branches/work/koffice-essen/libs/odf/KoTableProperties.h (PRE-CREATION)
  • branches/work/koffice-essen/libs/odf/KoTableStyle.h (PRE-CREATION)
  • branches/work/koffice-essen/libs/odf/KoTableTemplate.h (PRE-CREATION)

View Diff