[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: koffice/filters/kpresenter/pptx
From: Lassi Taneli Nieminen <lassniem () gmail ! com>
Date: 2010-09-12 16:12:14
Message-ID: 20100912161214.B30C5AC887 () svn ! kde ! org
[Download RAW message or body]
SVN commit 1174500 by lassin:
Fixed pptx bug where only last masterslide was interpreted.
Still to do: fix to use the correct masterslide(&theme) in correct layout & slide
in multi masterslide case.
M +28 -24 PptxXmlDocumentReader.cpp
--- trunk/koffice/filters/kpresenter/pptx/PptxXmlDocumentReader.cpp #1174499:1174500
@@ -66,9 +66,9 @@
bool sldSzRead;
KoPageLayout pageLayout;
- // These should be most likely separated to another structure in case there are \
multiple slideMasters
- QString masterPageDrawStyleName;
- KoGenStyle masterPageStyle;
+ // Several because there are several masterpages
+ QVector<QString> masterPageDrawStyleNames;
+ QVector<KoGenStyle> masterPageStyles;
QVector<QString> masterPageFrames;
PptxSlideMasterPageProperties slideMasterPageProperties;
@@ -103,10 +103,6 @@
d->slideNumber = 0;
d->sldSzRead = false;
d->pageLayout = KoPageLayout();
- d->masterPageDrawStyleName.clear();
- d->masterPageStyle = KoGenStyle(KoGenStyle::MasterPageStyle);
- d->slideMasterPageProperties.clear();
- d->masterPageFrames.clear();
const KoFilter::ConversionStatus result = readInternal();
@@ -185,11 +181,15 @@
return result;
QString slideMasterPath, slideMasterFile;
- MSOOXML::Utils::splitPathAndFile(m_context->relationships->targetForType(slidePath, \
slideFile, QLatin1String(MSOOXML::Schemas::officeDocument::relationships) + \
"/slideLayout"), &slideMasterPath, &slideMasterFile);
- const QString slideMasterPathAndFile = \
m_context->relationships->targetForType(slideMasterPath, slideMasterFile, \
QLatin1String(MSOOXML::Schemas::officeDocument::relationships) + \
"/slideMaster");
- PptxSlideProperties *masterSlideProperties = \
d->masterSlidePropertiesMap.contains(slideMasterPathAndFile) ? \
d->masterSlidePropertiesMap[slideMasterPathAndFile] : 0; + \
MSOOXML::Utils::splitPathAndFile(m_context->relationships->targetForType(slidePath, \
slideFile, + QLatin1String(MSOOXML::Schemas::officeDocument::relationships) + \
"/slideLayout"), &slideMasterPath, &slideMasterFile); + const QString \
slideMasterPathAndFile = m_context->relationships->targetForType(slideMasterPath, \
slideMasterFile, + \
QLatin1String(MSOOXML::Schemas::officeDocument::relationships) + "/slideMaster"); + \
PptxSlideProperties *masterSlideProperties = + \
d->masterSlidePropertiesMap.contains(slideMasterPathAndFile) ? \
d->masterSlidePropertiesMap[slideMasterPathAndFile] : 0;
result = new PptxSlideLayoutProperties();
+
MSOOXML::Utils::AutoPtrSetter<PptxSlideLayoutProperties> \
slideLayoutPropertiesSetter(result); PptxXmlSlideReaderContext context(
*m_context->import,
@@ -355,6 +355,7 @@
d->commentAuthors,
d->tableStyleList
);
+
PptxXmlSlideReader slideMasterReader(this);
context.firstReadingRound = true;
status = m_context->import->loadAndParseDocument(
@@ -373,9 +374,9 @@
d->masterSlidePropertiesMap.insert(slideMasterPathAndFile, \
masterSlideProperties); masterSlidePropertiesSetter.release();
- d->masterPageDrawStyleName = context.pageDrawStyleName;
- d->masterPageFrames = context.pageFrames;
- kDebug() << "d->masterPageDrawStyleName:" << d->masterPageDrawStyleName;
+ d->masterPageDrawStyleNames.push_back(context.pageDrawStyleName);
+ d->masterPageFrames += context.pageFrames;
+ kDebug() << "d->masterPageDrawStyleName:" << d->masterPageDrawStyleNames.back();
SKIP_EVERYTHING
READ_EPILOGUE
}
@@ -523,27 +524,30 @@
}
}
+ // There are double the amount of masterPage frames because we read slideMaster \
always twice + // This means that first frame of the set is always empty and is \
skipped in the loop + unsigned frameCount = d->masterPageFrames.size() / 2;
+ unsigned index = 0;
+ while (index < frameCount) {
+ d->masterPageStyles.push_back(KoGenStyle(KoGenStyle::MasterPageStyle));
if (d->sldSzRead) {
KoGenStyle pageLayoutStyle(d->pageLayout.saveOdf());
const QString pageLayoutStyleName(mainStyles->insert(pageLayoutStyle, \
"PM")); mainStyles->markStyleForStylesXml(pageLayoutStyleName);
kDebug() << "pageLayoutStyleName:" << pageLayoutStyleName;
- d->masterPageStyle.addAttribute("style:page-layout-name", \
pageLayoutStyleName); + \
d->masterPageStyles[index].addAttribute("style:page-layout-name", \
pageLayoutStyleName); }
- if (!d->masterPageDrawStyleName.isEmpty()) {
- d->masterPageStyle.addAttribute("draw:style-name", \
d->masterPageDrawStyleName); + if \
(!d->masterPageDrawStyleNames.at(index).isEmpty()) { + \
d->masterPageStyles[index].addAttribute("draw:style-name", \
d->masterPageDrawStyleNames.at(index)); }
+ d->masterPageStyles[index].addChildElement(QString("frame-2-%1").arg(index), \
d->masterPageFrames.at((1+index)*2-1)); + const QString masterPageStyleName(
+ mainStyles->insert(d->masterPageStyles.at(index), "Default"));
+ kDebug() << "masterPageStyleName:" << masterPageStyleName;
- unsigned frameCount = d->masterPageFrames.size();
- unsigned frameIndex = 0;
- while (frameIndex < frameCount) {
- d->masterPageStyle.addChildElement(QString("frame%1").arg(frameIndex), \
d->masterPageFrames.at(frameIndex));
- ++frameIndex;
+ ++index;
}
- const QString masterPageStyleName(
- mainStyles->insert(d->masterPageStyle, "Default", \
KoGenStyles::DontAddNumberToName));
- kDebug() << "masterPageStyleName:" << masterPageStyleName;
READ_EPILOGUE
}
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic