[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