[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [calligra/words-references-bibliography-smit] /: changes for
From: Smit Patel <smitpatel24 () gmail ! com>
Date: 2011-09-20 11:56:54
Message-ID: 20110920115654.C3856A60B9 () git ! kde ! org
[Download RAW message or body]
Git commit 85c0286a2c9ac772e917d28fb5fb431ef6777602 by Smit Patel.
Committed on 20/09/2011 at 13:56.
Pushed by smitpatel into branch 'words-references-bibliography-smit'.
changes for bibliography configuration
M +29 -3 libs/kotext/KoInlineCite.cpp
M +4 -0 libs/kotext/KoInlineCite.h
M +2 -1 libs/kotext/KoText.h
M +37 -0 libs/kotext/KoTextDocument.cpp
M +11 -0 libs/kotext/KoTextDocument.h
M +1 -0 libs/kotext/KoTextEditor.cpp
M +6 -0 libs/kotext/opendocument/KoTextLoader.cpp
M +13 -0 libs/kotext/opendocument/KoTextSharedLoadingData.cpp
M +9 -0 libs/kotext/opendocument/KoTextSharedLoadingData.h
M +2 -0 libs/odf/CMakeLists.txt
M +13 -2 libs/odf/KoOdfStylesReader.cpp
M +5 -0 libs/odf/KoOdfStylesReader.h
M +1 -0 plugins/textshape/CMakeLists.txt
M +0 -7 plugins/textshape/dialogs/InsertBibliographyDialog.ui
http://commits.kde.org/calligra/85c0286a2c9ac772e917d28fb5fb431ef6777602
diff --git a/libs/kotext/KoInlineCite.cpp b/libs/kotext/KoInlineCite.cpp
index b43df0d..3c65cc9 100644
--- a/libs/kotext/KoInlineCite.cpp
+++ b/libs/kotext/KoInlineCite.cpp
@@ -1,4 +1,4 @@
-/* This file is part of the KDE project
+/* This file is part of the KDE project
* Copyright (C) 2011 Smit Patel <smitpatel24@gmail.com>
*
* This library is free software; you can redistribute it and/or
@@ -28,7 +28,8 @@
#include <KoTextWriter.h>
#include <KoTextDocument.h>
#include <KoText.h>
-
+#include <KoOdfBibliographyConfiguration.h>
+#include <KoGenStyles.h>
#include <KDebug>
#include <QTextDocument>
@@ -38,6 +39,8 @@
#include <QTextInlineObject>
#include <QFontMetricsF>
#include <QTextOption>
+#include <QBuffer>
+#include <QMap>
//#include <QMessageBox>
class KoInlineCite::Private
@@ -47,6 +50,8 @@ public:
: type(t)
{
}
+
+ QTextFrame *textFrame;
KoInlineCite::Type type;
QString bibliographyType;
QString identifier;
@@ -103,6 +108,18 @@ void KoInlineCite::setType(Type t)
d->type = t;
}
+void KoInlineCite::setMotherFrame(QTextFrame *motherFrame)
+{
+ //creating our subframe
+
+ QTextCursor cursor(motherFrame->lastCursorPosition());
+
+ QTextFrameFormat format;
+ format.setProperty(KoText::SubFrameType,KoText::CitationFrameType);
+
+ d->textFrame = cursor.insertFrame(format);
+}
+
QString KoInlineCite::dataField(QString fieldName) const
{
if ( fieldName == "address" ) {
@@ -576,7 +593,8 @@ void KoInlineCite::paint(QPainter &painter, QPaintDevice *pd, \
const QTextDocumen if (d->identifier.isEmpty())
return;
- QString citeLabel = QString("[%1]").arg(d->identifier);
+ KoOdfBibliographyConfiguration *bibConfiguration = \
KoTextDocument(document).bibliographyConfiguration(); + QString citeLabel = \
QString("%1%2%3").arg(bibConfiguration->prefix()).arg(d->identifier).arg(bibConfiguration->suffix());
QFont font(format.font(), pd);
QTextLayout layout(citeLabel, font, pd);
@@ -655,6 +673,14 @@ void KoInlineCite::saveOdf(KoShapeSavingContext &context)
{
KoXmlWriter *writer = &context.xmlWriter();
+ if (KoTextDocument(d->textFrame->document()).inlineTextObjectManager()->citations(true)[0]->id() \
== this->id()) { + QBuffer xmlBuffer;
+ KoXmlWriter *xmlWriter = new KoXmlWriter(&xmlBuffer);
+
+ KoTextDocument(d->textFrame->document()).bibliographyConfiguration()->saveOdf(xmlWriter);
+ context.mainStyles().insertRawOdfStyles(KoGenStyles::DocumentStyles, \
xmlBuffer.data()); + }
+
writer->startElement("text:bibliography-mark", false);
if (!d->identifier.isEmpty())
diff --git a/libs/kotext/KoInlineCite.h b/libs/kotext/KoInlineCite.h
index 87e7a59..a5d0c0b 100644
--- a/libs/kotext/KoInlineCite.h
+++ b/libs/kotext/KoInlineCite.h
@@ -24,6 +24,8 @@
#include "KoXmlReaderForward.h"
+#include <QTextFrame>
+
class KoShapeLoadingContext;
class KoChangeTracker;
class KoStyleManager;
@@ -52,6 +54,8 @@ public:
void setType(Type t);
+ void setMotherFrame(QTextFrame *motherFrame);
+
QString dataField(QString fieldName) const; //returns \
bibliography-data-field with name fieldName
bool hasSameData(KoInlineCite *cite) const;
diff --git a/libs/kotext/KoText.h b/libs/kotext/KoText.h
index bec6347..01d2b8c 100644
--- a/libs/kotext/KoText.h
+++ b/libs/kotext/KoText.h
@@ -97,7 +97,8 @@ enum KoTextFrameProperty {
enum KoSubFrameType {
EndNotesFrameType = 1,
FootNotesFrameType,
- NoteFrameType
+ NoteFrameType,
+ CitationFrameType
};
/// Text in the objects will be positioned according to the direction.
diff --git a/libs/kotext/KoTextDocument.cpp b/libs/kotext/KoTextDocument.cpp
index 1265e2c..bd3fb3b 100644
--- a/libs/kotext/KoTextDocument.cpp
+++ b/libs/kotext/KoTextDocument.cpp
@@ -36,6 +36,7 @@
#include "KoList.h"
#include "KoOdfLineNumberingConfiguration.h"
#include "KoOdfNotesConfiguration.h"
+#include "KoOdfBibliographyConfiguration.h"
#include "changetracker/KoChangeTracker.h"
Q_DECLARE_METATYPE(QAbstractTextDocumentLayout::Selection)
@@ -48,9 +49,11 @@ const QUrl KoTextDocument::ChangeTrackerURL = \
QUrl("kotext://changetracker"); const QUrl KoTextDocument::TextEditorURL = \
QUrl("kotext://textEditor"); const QUrl KoTextDocument::EndNotesConfigurationURL = \
QUrl("kotext://endnotesconfiguration"); const QUrl \
KoTextDocument::FootNotesConfigurationURL = QUrl("kotext://footnotesconfiguration"); \
+const QUrl KoTextDocument::BibliographyConfigurationURL = \
QUrl("kotext://bibliographyconfiguration"); const QUrl \
KoTextDocument::LineNumberingConfigurationURL = \
QUrl("kotext://linenumberingconfiguration"); const QUrl \
KoTextDocument::EndNotesFrameURL = QUrl("kotext://endnotesframe"); const QUrl \
KoTextDocument::FootNotesFrameURL = QUrl("kotext://footnotesframe"); +const QUrl \
KoTextDocument::CitationsFrameURL = QUrl("kotext://citationsframe"); const QUrl \
KoTextDocument::RelativeTabsURL = QUrl("kotext://relativetabs"); const QUrl \
KoTextDocument::HeadingListURL = QUrl("kotext://headingList"); const QUrl \
KoTextDocument::SelectionsURL = QUrl("kotext://selections"); @@ -159,6 +162,20 @@ \
KoOdfNotesConfiguration *KoTextDocument::notesConfiguration(KoOdfNotesConfigurat }
}
+void KoTextDocument::setBibliographyConfiguration(KoOdfBibliographyConfiguration \
*bibConfiguration) +{
+ bibConfiguration->setParent(m_document);
+ QVariant v;
+ v.setValue(bibConfiguration);
+ m_document->addResource(KoTextDocument::BibliographyConfiguration, \
BibliographyConfigurationURL, v); +}
+
+KoOdfBibliographyConfiguration *KoTextDocument::bibliographyConfiguration() const
+{
+ return m_document->resource(KoTextDocument::BibliographyConfiguration, \
BibliographyConfigurationURL) + \
.value<KoOdfBibliographyConfiguration*>(); +}
+
void KoTextDocument::setLineNumberingConfiguration(KoOdfLineNumberingConfiguration \
*lineNumberingConfiguration) {
lineNumberingConfiguration->setParent(m_document);
@@ -338,6 +355,26 @@ QTextFrame *KoTextDocument::endNotesFrame()
return frame;
}
+QTextFrame *KoTextDocument::citationsFrame()
+{
+ QVariant resource = m_document->resource(KoTextDocument::CitationsFrame,
+ CitationsFrameURL);
+
+ QTextFrame *frame = resource.value<QTextFrame *>();
+
+ if (frame == 0) {
+ QTextCursor cursor(m_document->rootFrame()->lastCursorPosition());
+ QTextFrameFormat format;
+ format.setProperty(KoText::SubFrameType, KoText::CitationFrameType);
+
+ frame = cursor.insertFrame(format);
+
+ resource.setValue(frame);
+ m_document->addResource(KoTextDocument::CitationsFrame, CitationsFrameURL, \
resource); + }
+ return frame;
+}
+
void KoTextDocument::setRelativeTabs(bool relative)
{
QVariant v(relative);
diff --git a/libs/kotext/KoTextDocument.h b/libs/kotext/KoTextDocument.h
index a79638c..28fdfba 100644
--- a/libs/kotext/KoTextDocument.h
+++ b/libs/kotext/KoTextDocument.h
@@ -33,6 +33,7 @@
#include <KoCanvasBase.h>
#include <KoTextEditor.h>
#include "KoOdfNotesConfiguration.h"
+#include "KoOdfBibliographyConfiguration.h"
class KoStyleManager;
class KoInlineTextObjectManager;
@@ -86,6 +87,12 @@ public:
/// @return the notes configuration
KoOdfNotesConfiguration *notesConfiguration(KoOdfNotesConfiguration::NoteClass \
noteClass) const;
+ /// set the bibliography configuration of the document
+ void setBibliographyConfiguration(KoOdfBibliographyConfiguration \
*bibConfiguration); +
+ /// @return the bibliography configuration
+ KoOdfBibliographyConfiguration *bibliographyConfiguration() const;
+
/// set the notes configuration of the document
void setLineNumberingConfiguration(KoOdfLineNumberingConfiguration \
*lineNumberingConfiguration);
@@ -148,6 +155,8 @@ public:
QTextFrame* endNotesFrame();
+ QTextFrame* citationsFrame();
+
/**
* Specifies if tabs are relative to paragraph indent.
*
@@ -184,6 +193,7 @@ public:
FootNotesConfiguration,
EndNotesConfiguration,
LineNumberingConfiguration,
+ BibliographyConfiguration,
EndNotesFrame,
FootNotesFrame,
CitationsFrame,
@@ -205,6 +215,7 @@ public:
static const QUrl FootNotesConfigurationURL;
static const QUrl EndNotesConfigurationURL;
static const QUrl LineNumberingConfigurationURL;
+ static const QUrl BibliographyConfigurationURL;
static const QUrl EndNotesFrameURL;
static const QUrl FootNotesFrameURL;
static const QUrl CitationsFrameURL;
diff --git a/libs/kotext/KoTextEditor.cpp b/libs/kotext/KoTextEditor.cpp
index e6cc552..6f80e42 100644
--- a/libs/kotext/KoTextEditor.cpp
+++ b/libs/kotext/KoTextEditor.cpp
@@ -1495,6 +1495,7 @@ KoInlineCite *KoTextEditor::insertCitation()
KoInlineTextObjectManager *manager = \
KoTextDocument(d->document).inlineTextObjectManager(); \
manager->insertInlineObject(d->caret,cite);
+ cite->setMotherFrame(KoTextDocument(d->caret.document()).citationsFrame());
d->updateState(KoTextEditor::Private::NoOp);
return cite;
}
diff --git a/libs/kotext/opendocument/KoTextLoader.cpp \
b/libs/kotext/opendocument/KoTextLoader.cpp index 5d2578e..42c6313 100644
--- a/libs/kotext/opendocument/KoTextLoader.cpp
+++ b/libs/kotext/opendocument/KoTextLoader.cpp
@@ -480,6 +480,12 @@ void KoTextLoader::loadBody(const KoXmlElement &bodyElem, \
QTextCursor &cursor)
.lineNumberingConfiguration());
KoTextDocument(document).setLineNumberingConfiguration(lineNumberingConfiguration);
+ KoOdfBibliographyConfiguration *bibConfiguration =
+ new KoOdfBibliographyConfiguration(d->context.odfLoadingContext()
+ .stylesReader()
+ .globalBibliographyConfiguration());
+ KoTextDocument(document).setBibliographyConfiguration(bibConfiguration);
+
d->styleManager = KoTextDocument(document).styleManager();
d->changeTracker = KoTextDocument(document).changeTracker();
// if (!d->changeTracker)
diff --git a/libs/kotext/opendocument/KoTextSharedLoadingData.cpp \
b/libs/kotext/opendocument/KoTextSharedLoadingData.cpp index 6066949..755b303 100644
--- a/libs/kotext/opendocument/KoTextSharedLoadingData.cpp
+++ b/libs/kotext/opendocument/KoTextSharedLoadingData.cpp
@@ -46,6 +46,7 @@
#include "styles/KoTableCellStyle.h"
#include "styles/KoSectionStyle.h"
#include "KoOdfNotesConfiguration.h"
+#include "KoOdfBibliographyConfiguration.h"
class KoTextSharedLoadingData::Private
{
@@ -97,6 +98,7 @@ public:
QHash<QString, KoParagraphStyle*> namedParagraphStyles;
KoOdfNotesConfiguration footnotesConfiguration;
KoOdfNotesConfiguration endnotesConfiguration;
+ KoOdfBibliographyConfiguration bibliographyConfiguration;
KoCharacterStyle *applicationDefaultStyle;
};
@@ -613,6 +615,11 @@ KoOdfNotesConfiguration \
KoTextSharedLoadingData::endnotesConfiguration() const return \
d->endnotesConfiguration; }
+KoOdfBibliographyConfiguration KoTextSharedLoadingData::bibliographyConfiguration() \
const +{
+ return d->bibliographyConfiguration;
+}
+
void KoTextSharedLoadingData::setApplicationDefaultStyle(KoCharacterStyle \
*applicationDefaultStyle) {
d->applicationDefaultStyle = applicationDefaultStyle;
@@ -636,3 +643,9 @@ void \
KoTextSharedLoadingData::addNotesConfiguration(KoShapeLoadingContext &conte \
d->endnotesConfiguration =
context.odfLoadingContext().stylesReader().globalNotesConfiguration(KoOdfNotesConfiguration::Endnote);
}
+
+void KoTextSharedLoadingData::addBibliographyConfiguration(KoShapeLoadingContext \
&context) +{
+ d->bibliographyConfiguration =
+ context.odfLoadingContext().stylesReader().globalBibliographyConfiguration();
+}
diff --git a/libs/kotext/opendocument/KoTextSharedLoadingData.h \
b/libs/kotext/opendocument/KoTextSharedLoadingData.h index ddf7fbe..543c24b 100644
--- a/libs/kotext/opendocument/KoTextSharedLoadingData.h
+++ b/libs/kotext/opendocument/KoTextSharedLoadingData.h
@@ -42,6 +42,7 @@ class KoStyleManager;
class KoShape;
class KoShapeLoadingContext;
class KoOdfNotesConfiguration;
+class KoOdfBibliographyConfiguration;
#define KOTEXT_SHARED_LOADING_ID "KoTextSharedLoadingId"
@@ -166,6 +167,12 @@ public:
KoOdfNotesConfiguration endnotesConfiguration() const;
/**
+ * Get the document-wide configuration for bibliography this contains \
information + * about prefix, suffix, sort by position, sort algorithm etc.
+ */
+ KoOdfBibliographyConfiguration bibliographyConfiguration() const;
+
+ /**
* Set the appication default style
*
* This is done so the application default style needs to be loaded only once.
@@ -245,6 +252,8 @@ private:
void addNotesConfiguration(KoShapeLoadingContext &context);
+ void addBibliographyConfiguration(KoShapeLoadingContext &context);
+
class Private;
Private * const d;
};
diff --git a/libs/odf/CMakeLists.txt b/libs/odf/CMakeLists.txt
index 943f16d..838d4f6 100644
--- a/libs/odf/CMakeLists.txt
+++ b/libs/odf/CMakeLists.txt
@@ -45,6 +45,7 @@ set(koodf_LIB_SRCS
KoProperties.cpp
KoUnit.cpp
KoOdfNotesConfiguration.cpp
+ KoOdfBibliographyConfiguration.cpp
KoOdfNumberDefinition.cpp
KoOdfLineNumberingConfiguration.cpp
KoCell.cpp
@@ -89,6 +90,7 @@ install( FILES
KoOasisSettings.h
KoOdfStylesReader.h
KoOdfNotesConfiguration.h
+ KoOdfBibliographyConfiguration.h
KoOdfNumberStyles.h
KoOdfNumberDefinition.h
KoOdfLineNumberingConfiguration.h
diff --git a/libs/odf/KoOdfStylesReader.cpp b/libs/odf/KoOdfStylesReader.cpp
index 35bffce..890301f 100644
--- a/libs/odf/KoOdfStylesReader.cpp
+++ b/libs/odf/KoOdfStylesReader.cpp
@@ -30,6 +30,7 @@
#include <KoXmlReader.h>
#include <KoOdfNotesConfiguration.h>
+#include <KoOdfBibliographyConfiguration.h>
class KoOdfStylesReader::Private
{
@@ -58,11 +59,13 @@ public:
DataFormatsMap dataFormats;
- // XXX: there can als be notes configuration objects _per_ section.
+ // XXX: there can also be notes configuration objects _per_ section.
KoOdfNotesConfiguration globalFootnoteConfiguration;
KoOdfNotesConfiguration globalEndnoteConfiguration;
KoOdfNotesConfiguration defaultNoteConfiguration;
+ KoOdfBibliographyConfiguration globalBibliographyConfiguration;
+
KoOdfLineNumberingConfiguration lineNumberingConfiguration;
};
@@ -178,6 +181,11 @@ KoOdfNotesConfiguration \
KoOdfStylesReader::globalNotesConfiguration(KoOdfNotesCo }
}
+KoOdfBibliographyConfiguration KoOdfStylesReader::globalBibliographyConfiguration() \
const +{
+ return d->globalBibliographyConfiguration;
+}
+
KoOdfLineNumberingConfiguration KoOdfStylesReader::lineNumberingConfiguration() \
const {
return d->lineNumberingConfiguration;
@@ -298,8 +306,11 @@ void KoOdfStylesReader::insertStyle(const KoXmlElement& e, \
TypeAndLocation typeA }
} else if (ns == KoXmlNS::text && localName == "linenumbering-configuration") {
d->lineNumberingConfiguration.loadOdf(e);
+ } else if (ns == KoXmlNS::text && localName == "bibliography-configuration") {
+ KoOdfBibliographyConfiguration bibConfiguration;
+ bibConfiguration.loadOdf(e);
+ d->globalBibliographyConfiguration = bibConfiguration;
}
-
}
KoXmlElement *KoOdfStylesReader::defaultStyle(const QString &family) const
diff --git a/libs/odf/KoOdfStylesReader.h b/libs/odf/KoOdfStylesReader.h
index 84a98cb..0e4e245 100644
--- a/libs/odf/KoOdfStylesReader.h
+++ b/libs/odf/KoOdfStylesReader.h
@@ -29,6 +29,7 @@
#include "KoOdfNumberStyles.h"
#include "KoOdfNotesConfiguration.h"
#include "KoOdfLineNumberingConfiguration.h"
+#include "KoOdfBibliographyConfiguration.h"
/**
* Repository of styles used during loading of OASIS/OOo file
@@ -150,6 +151,10 @@ public:
*/
KoOdfLineNumberingConfiguration lineNumberingConfiguration() const;
+ /**
+ * return the bibliography configuration for this document.
+ */
+ KoOdfBibliographyConfiguration globalBibliographyConfiguration() const;
private:
enum TypeAndLocation {
diff --git a/plugins/textshape/CMakeLists.txt b/plugins/textshape/CMakeLists.txt
index 3df7aa5..2cae48d 100644
--- a/plugins/textshape/CMakeLists.txt
+++ b/plugins/textshape/CMakeLists.txt
@@ -74,6 +74,7 @@ SET ( textshape_SRCS
dialogs/TrackedChangeModel.cpp
dialogs/TrackedChangeManager.cpp
dialogs/ChangeTrackingOptionsWidget.cpp
+ dialogs/BibliographyConfigureDialog.cpp
dialogs/TableOfContentsConfigure.cpp
dialogs/TableOfContentsStyleConfigure.cpp
dialogs/TableOfContentsStyleModel.cpp
diff --git a/plugins/textshape/dialogs/InsertBibliographyDialog.ui \
b/plugins/textshape/dialogs/InsertBibliographyDialog.ui index 4c57add..86b25ae 100644
--- a/plugins/textshape/dialogs/InsertBibliographyDialog.ui
+++ b/plugins/textshape/dialogs/InsertBibliographyDialog.ui
@@ -43,13 +43,6 @@
</property>
</widget>
</item>
- <item row="2" column="0" colspan="2">
- <widget class="QCheckBox" name="autoupdate">
- <property name="text">
- <string>Update with new bibliography entries</string>
- </property>
- </widget>
- </item>
</layout>
</widget>
</item>
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic