00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include <qstring.h>
00021 #include <qdom.h>
00022
00023 #include <klocale.h>
00024
00025 #include "ImportField.h"
00026
00027 QString getFootnoteFramesetName(const QString& id)
00028 {
00029 return i18n("Frameset name","Footnote %1").arg(id);
00030 }
00031
00032 static void InsertTimeVariable(QDomDocument& mainDocument,
00033 QDomElement& variableElement, QString strKey)
00034 {
00035 QDomElement typeElement=mainDocument.createElement("TYPE");
00036 typeElement.setAttribute("key",strKey);
00037 typeElement.setAttribute("type",2);
00038 typeElement.setAttribute("text","-");
00039 variableElement.appendChild(typeElement);
00040 QDomElement timeElement=mainDocument.createElement("TIME");
00041
00042 timeElement.setAttribute("hour",0);
00043 timeElement.setAttribute("minute",0);
00044 timeElement.setAttribute("second",0);
00045 timeElement.setAttribute("fix",0);
00046 variableElement.appendChild(timeElement);
00047 }
00048
00049 static void InsertDateVariable(QDomDocument& mainDocument,
00050 QDomElement& variableElement, QString strKey)
00051 {
00052 QDomElement typeElement=mainDocument.createElement("TYPE");
00053 typeElement.setAttribute("key",strKey);
00054 typeElement.setAttribute("type",0);
00055 typeElement.setAttribute("text","-");
00056 variableElement.appendChild(typeElement);
00057 QDomElement dateElement=mainDocument.createElement("DATE");
00058
00059 dateElement.setAttribute("year",1970);
00060 dateElement.setAttribute("month",1);
00061 dateElement.setAttribute("day",1);
00062 dateElement.setAttribute("fix",0);
00063 variableElement.appendChild(dateElement);
00064 }
00065
00066 static bool ProcessTimeField(QDomDocument& mainDocument,
00067 QDomElement& variableElement, QString strType)
00068
00069 {
00070 if (strType=="time")
00071 {
00072 InsertTimeVariable(mainDocument, variableElement, "TIMELocale");
00073 }
00074 else if (strType=="time_miltime")
00075 {
00076
00077 InsertTimeVariable(mainDocument, variableElement, "TIMEhh:mm:ss");
00078 }
00079 else if (strType=="time_ampm")
00080 {
00081 InsertTimeVariable(mainDocument, variableElement, "TIMEam");
00082 }
00083 else
00084 {
00085
00086
00087 return false;
00088 }
00089 return true;
00090 }
00091
00092 static bool ProcessDateField(QDomDocument& mainDocument,
00093 QDomElement& variableElement, QString strType)
00094
00095
00096
00097
00098
00099 {
00100 if (strType=="date")
00101 {
00102 InsertDateVariable(mainDocument, variableElement, "DATE0dddd mmmm dd, yyyy");
00103 }
00104 else if (strType=="date_mmddyy")
00105 {
00106 InsertDateVariable(mainDocument, variableElement, "DATE0mm/dd/yy");
00107 }
00108 else if (strType=="date_ddmmyy")
00109 {
00110 InsertDateVariable(mainDocument, variableElement, "DATE0dd/mm/yy");
00111 }
00112 else if (strType=="date_mdy")
00113 {
00114 InsertDateVariable(mainDocument, variableElement, "DATE0mmmm dd, yyyy");
00115 }
00116 else if (strType=="date_mthdy")
00117 {
00118 InsertDateVariable(mainDocument, variableElement, "DATE0mmm dd, yyyy");
00119 }
00120 else if (strType=="date_dfl")
00121 {
00122 InsertDateVariable(mainDocument, variableElement, "DATE0Locale");
00123 }
00124 else if (strType=="date_ntdfl")
00125 {
00126 InsertDateVariable(mainDocument, variableElement, "DATE0Locale");
00127 }
00128 else if (strType=="date_wkday")
00129 {
00130 InsertDateVariable(mainDocument, variableElement, "DATE0dddd");
00131 }
00132 else
00133 {
00134
00135 return false;
00136 }
00137 return true;
00138 }
00139
00140 bool ProcessField(QDomDocument& mainDocument,
00141 QDomElement& variableElement, QString strType, const QXmlAttributes& attributes)
00142 {
00143
00144
00145
00146
00147 bool done=false;
00148 if (strType.startsWith("time"))
00149 {
00150 done=ProcessTimeField(mainDocument, variableElement, strType);
00151 }
00152 else if (strType.startsWith("date"))
00153 {
00154 done=ProcessDateField(mainDocument, variableElement, strType);
00155 }
00156 else if ((strType=="page_number")||(strType=="page_count"))
00157 {
00158 QDomElement typeElement=mainDocument.createElement("TYPE");
00159 typeElement.setAttribute("key","NUMBER");
00160 typeElement.setAttribute("type",4);
00161 typeElement.setAttribute("text",1);
00162 variableElement.appendChild(typeElement);
00163 QDomElement pgnumElement=mainDocument.createElement("PGNUM");
00164 pgnumElement.setAttribute("subtype",(strType=="page_count")?1:0);
00165 pgnumElement.setAttribute("value",1);
00166 variableElement.appendChild(pgnumElement);
00167 done=true;
00168 }
00169 else if (strType=="file_name")
00170 {
00171 QDomElement typeElement=mainDocument.createElement("TYPE");
00172 typeElement.setAttribute("key","STRING");
00173 typeElement.setAttribute("type",8);
00174 typeElement.setAttribute("text","?");
00175 variableElement.appendChild(typeElement);
00176 QDomElement fieldElement=mainDocument.createElement("FIELD");
00177 fieldElement.setAttribute("subtype",0);
00178 fieldElement.setAttribute("value","?");
00179 variableElement.appendChild(fieldElement);
00180 done=true;
00181 }
00182 else if (strType=="endnote_ref")
00183 {
00184 QDomElement typeElement=mainDocument.createElement("TYPE");
00185 typeElement.setAttribute("key","STRING");
00186 typeElement.setAttribute("type",11);
00187 typeElement.setAttribute("text","?");
00188 variableElement.appendChild(typeElement);
00189 QDomElement element=mainDocument.createElement("FOOTNOTE");
00190 element.setAttribute("numberingtype","auto");
00191 element.setAttribute("notetype","footnote");
00192 QString reference(attributes.value("endnote-id").stripWhiteSpace());
00193 element.setAttribute("frameset", getFootnoteFramesetName(reference));
00194 element.setAttribute("value","?");
00195 variableElement.appendChild(element);
00196 done=true;
00197 }
00198
00199
00200
00201
00202
00203
00204
00205
00206
00207
00208
00209
00210
00211
00212
00213
00214
00215 return done;
00216 }