From c2374a46924944dffdd4ed6cdb2d62677c48c428 Mon Sep 17 00:00:00 2001 From: Konrad Rosenbaum Date: Wed, 21 Dec 2016 16:12:23 +0100 Subject: [PATCH] print @ Home client side and main server complete, web iface todo Change-Id: Ib8f904276ac96643e5d4ca12bc16fad7aaf27ff8 --- .gitignore | 5 + commonlib/mapplication.cpp | 8 +- commonlib/stick/stick.cpp | 17 ++- commonlib/stick/stick.h | 14 ++- commonlib/templates/billrender.cpp | 206 +++++++++++++++++++ commonlib/templates/billrender.h | 59 ++++++ commonlib/templates/odtrender.cpp | 23 ++- commonlib/templates/odtrender.h | 5 +- commonlib/templates/office.cpp | 18 ++ commonlib/templates/office.h | 4 + commonlib/templates/templates.pri | 6 +- commonlib/templates/ticketrender.cpp | 14 ++ commonlib/templates/ticketrender.h | 3 + doc/logo.png | Bin 11843 -> 22 bytes doc/logo.xcf | Bin 21234 -> 0 bytes icons/arrows/arrowdiag.png | Bin 0 -> 224 bytes icons/arrows/arrowdown.png | Bin 0 -> 206 bytes icons/arrows/arrowleft.png | Bin 0 -> 222 bytes icons/arrows/arrowright.png | Bin 0 -> 210 bytes icons/arrows/arrowup.png | Bin 0 -> 218 bytes icons/logo/icon.png | Bin 0 -> 5093 bytes icons/logo/icon.xcf | Bin 0 -> 12716 bytes icons/logo/logo.png | Bin 0 -> 11843 bytes icons/logo/logo.xcf | Bin 0 -> 21234 bytes icons/misc/cancel.png | Bin 0 -> 3809 bytes icons/misc/done.png | Bin 0 -> 1925 bytes icons/misc/next.png | Bin 0 -> 908 bytes icons/misc/prev.png | Bin 0 -> 911 bytes icons/misc/separator.png | Bin 0 -> 221 bytes icons/oxygen/COPYING | 52 +++++ icons/oxygen/dialog-cancel.png | Bin 0 -> 2207 bytes icons/oxygen/dialog-cancel.svgz | Bin 0 -> 6047 bytes icons/oxygen/emblem-important.png | Bin 0 -> 1056 bytes icons/oxygen/emblem-important.svgz | Bin 0 -> 6110 bytes icons/oxygen/favorites.png | Bin 0 -> 1208 bytes icons/oxygen/favorites.svgz | Bin 0 -> 10836 bytes icons/oxygen/hidef-preferences-system.svgz | Bin 0 -> 12405 bytes icons/oxygen/preferences-system.png | Bin 0 -> 50876 bytes icons/oxygen/preferences-system.svgz | Bin 0 -> 12026 bytes icons/oxygen/printer.png | Bin 0 -> 877 bytes icons/oxygen/printer.svgz | Bin 0 -> 44511 bytes icons/wikipedia/README | 1 + icons/wikipedia/de.png | Bin 0 -> 238 bytes icons/wikipedia/en.png | Bin 0 -> 1062 bytes iface/misc/boxwrapper.cpp | 1 + iface/misc/boxwrapper.h | 1 + iface/templates/templates.cpp | 10 +- iface/templates/templates.h | 10 +- pack | 2 +- printathome/README.icons | 10 + printathome/clientcfg.cpp | 15 ++- printathome/clientcfg.h | 3 +- printathome/examplemail.mime | 298 ++++++++++++++++++++++++++++ printathome/files.qrc | 1 + printathome/icon-print.xcf | Bin 19084 -> 20717 bytes printathome/icon-problem.png | Bin 0 -> 5333 bytes printathome/pah.cpp | 156 ++++++++++++++- printathome/pah.h | 62 ++++++- printathome/printathome.pro | 6 +- printathome/printrun.cpp | 188 ++++++++++++++++++ printathome/printrun.h | 53 +++++ printathome/servercfg.cpp | 211 +++++++++++++++++--- printathome/servercfg.h | 39 ++++- src/dialogs/orderwin.cpp | 205 +------------------- src/dialogs/orderwin.h | 24 --- src/images/arrowdiag.png | Bin 224 -> 32 bytes src/images/arrowdown.png | Bin 206 -> 32 bytes src/images/arrowleft.png | Bin 222 -> 32 bytes src/images/arrowright.png | Bin 210 -> 33 bytes src/images/arrowup.png | Bin 218 -> 30 bytes src/images/cancel.png | Bin 3809 -> 27 bytes src/images/done.png | Bin 1925 -> 25 bytes src/images/icon.png | Bin 5093 -> 25 bytes src/images/icon.xcf | Bin 12716 -> 0 bytes src/images/next.png | Bin 908 -> 25 bytes src/images/prev.png | Bin 911 -> 25 bytes src/images/separator.png | Bin 221 -> 30 bytes wob/classes/order.wolf | 46 ++++- wob/transact/order.wolf | 30 ++-- www/config.php.template | 2 +- www/images/README | 6 +- www/images/arrowdown.png | Bin 206 -> 32 bytes www/images/de.png | Bin 238 -> 28 bytes www/images/en.png | Bin 1062 -> 28 bytes www/images/maintenance.png | 1 + www/inc/wext/customer.php | 31 +++ www/inc/wext/order.php | 43 ++++- www/index.php | 6 + www/machine.php | 4 + www/maintenance.php.template | 29 +++ www/template/en/ordermail.txt | 5 +- 91 files changed, 1616 insertions(+), 317 deletions(-) create mode 100644 commonlib/templates/billrender.cpp create mode 100644 commonlib/templates/billrender.h mode change 100644 => 120000 doc/logo.png delete mode 100644 doc/logo.xcf create mode 100644 icons/arrows/arrowdiag.png create mode 100644 icons/arrows/arrowdown.png create mode 100644 icons/arrows/arrowleft.png create mode 100644 icons/arrows/arrowright.png create mode 100644 icons/arrows/arrowup.png create mode 100644 icons/logo/icon.png create mode 100644 icons/logo/icon.xcf create mode 100644 icons/logo/logo.png create mode 100644 icons/logo/logo.xcf create mode 100644 icons/misc/cancel.png create mode 100644 icons/misc/done.png create mode 100644 icons/misc/next.png create mode 100644 icons/misc/prev.png create mode 100644 icons/misc/separator.png create mode 100644 icons/oxygen/COPYING create mode 100644 icons/oxygen/dialog-cancel.png create mode 100644 icons/oxygen/dialog-cancel.svgz create mode 100644 icons/oxygen/emblem-important.png create mode 100644 icons/oxygen/emblem-important.svgz create mode 100644 icons/oxygen/favorites.png create mode 100644 icons/oxygen/favorites.svgz create mode 100644 icons/oxygen/hidef-preferences-system.svgz create mode 100644 icons/oxygen/preferences-system.png create mode 100644 icons/oxygen/preferences-system.svgz create mode 100644 icons/oxygen/printer.png create mode 100644 icons/oxygen/printer.svgz create mode 100644 icons/wikipedia/README create mode 100644 icons/wikipedia/de.png create mode 100644 icons/wikipedia/en.png create mode 100644 printathome/README.icons create mode 100644 printathome/examplemail.mime create mode 100644 printathome/icon-problem.png create mode 100644 printathome/printrun.cpp create mode 100644 printathome/printrun.h mode change 100644 => 120000 src/images/arrowdiag.png mode change 100644 => 120000 src/images/arrowdown.png mode change 100644 => 120000 src/images/arrowleft.png mode change 100644 => 120000 src/images/arrowright.png mode change 100644 => 120000 src/images/arrowup.png mode change 100644 => 120000 src/images/cancel.png mode change 100644 => 120000 src/images/done.png mode change 100644 => 120000 src/images/icon.png delete mode 100644 src/images/icon.xcf mode change 100644 => 120000 src/images/next.png mode change 100644 => 120000 src/images/prev.png mode change 100644 => 120000 src/images/separator.png mode change 100644 => 120000 www/images/arrowdown.png mode change 100644 => 120000 www/images/de.png mode change 100644 => 120000 www/images/en.png create mode 120000 www/images/maintenance.png create mode 100644 www/maintenance.php.template diff --git a/.gitignore b/.gitignore index dd8d391..6df853e 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ *.kdev* *.tag doxygen*.db +*.kate-swp #Build files, libs, executables libQtZip*.* @@ -14,6 +15,7 @@ core.* object_script* *.prl .qmake.stash +/dists/ #generated sources, translations, docu doc/wob @@ -33,7 +35,10 @@ tmp/ #User files *.mshk +*.mshh www/config.php +*.od?t +*.xtt #Distribution files for various platforms dist-* diff --git a/commonlib/mapplication.cpp b/commonlib/mapplication.cpp index 7a47193..e9f8aa1 100644 --- a/commonlib/mapplication.cpp +++ b/commonlib/mapplication.cpp @@ -80,8 +80,8 @@ class MProgressWrapperGui:public MProgressWrapper MProgressWrapperGui(QString label,QString button) { pd=new QProgressDialog(label,button,0,0); - pd->setMinimumDuration(0); - pd->show(); + pd->setMinimumDuration(500); + //pd->show(); } ~MProgressWrapperGui() { @@ -100,6 +100,10 @@ class MProgressWrapperGui:public MProgressWrapper { pd->cancel(); } + virtual void hide() + { + pd->hide(); + } virtual void setRange(int mi,int ma) { pd->setRange(mi,ma); diff --git a/commonlib/stick/stick.cpp b/commonlib/stick/stick.cpp index 223730a..ab83d26 100644 --- a/commonlib/stick/stick.cpp +++ b/commonlib/stick/stick.cpp @@ -123,11 +123,26 @@ void MStickRenderer::initEngine ( ELAM::Engine&engine ) return ELAM::Exception(ELAM::Exception::ArgumentListError,"expecting 1 string argument"); return xmlize(args[0].value()); }); - engine.setFunction("xml",[](const QList&args,ELAM::Engine&)->QVariant{ + engine.setFunction("raw",[](const QList&args,ELAM::Engine&)->QVariant{ if(args.size()!=1||!args[0].canConvert()) return ELAM::Exception(ELAM::Exception::ArgumentListError,"expecting 1 string argument"); return args[0]; }); + //MIME + engine.setFunction("base64",[](const QList&args,ELAM::Engine&)->QVariant{ + if(args.size()!=1||!args[0].canConvert()) + return ELAM::Exception(ELAM::Exception::ArgumentListError,"expecting 1 blob/byteArray argument"); + const auto base=args[0].toByteArray().toBase64(); + QString r; + for(int i=0;i&args,ELAM::Engine&)->QVariant{ + if(args.size()!=2||!args[0].canConvert()||!args[1].canConvert()) + return ELAM::Exception(ELAM::Exception::ArgumentListError,"expecting 2 arguments: (stringlist elements, string separator)"); + return args[0].toStringList().join(args[1].toString()); + }); //Access Rights engine.setFunction("checkflags",[](const QList&args,ELAM::Engine&)->QVariant{ if(args.size()!=1) diff --git a/commonlib/stick/stick.h b/commonlib/stick/stick.h index 3215751..1076937 100644 --- a/commonlib/stick/stick.h +++ b/commonlib/stick/stick.h @@ -23,28 +23,40 @@ class MStickToken; namespace ELAM {class Engine;} -///A Twig-like renderer for HTML pages. +///A Twig-like renderer for HTML pages or other text based documents. class MAGICSMOKE_COMMON_EXPORT MStickRenderer { public: + ///instantiate the renderer MStickRenderer(); + ///clean up virtual ~MStickRenderer(); + ///sets the template text file virtual void setTemplateFile(QString filename); + ///sets the template as plain text virtual void setTemplate(QString text); + ///makes a property available as a variable in the renderer virtual void setProperty(QString name,QVariant value); + ///makes several properties available as variables in the renderer virtual void setProperties(QMapproperties); + ///deletes a property/variable virtual void removeProperty(QString name); + ///returns a specific property or a NULL variant if not found virtual QVariant property(QString name)const; + ///returns the names of all known properties virtual QStringList propertyNames()const; + ///executes one rendering run on the template and returns the result as string virtual QString render(); private: QMapmproperties; MStickToken*mtemplate=nullptr; + + ///initializes the internal ELAM engine void initEngine(ELAM::Engine&); }; diff --git a/commonlib/templates/billrender.cpp b/commonlib/templates/billrender.cpp new file mode 100644 index 0000000..fb35cd5 --- /dev/null +++ b/commonlib/templates/billrender.cpp @@ -0,0 +1,206 @@ +// +// C++ Implementation: bill odtrender +// +// Description: +// +// +// Author: Konrad Rosenbaum , (C) 2016 +// +// Copyright: See README/COPYING.GPL files that come with this distribution +// +// + +#include "billrender.h" +#include +#include + +static inline bool compare(const MOTicket&a,const MOTicket&b) +{ + if(a.eventid()!=b.eventid())return false; + if(a.price()!=b.price())return false; + return true; +} + +MBillRenderer::MBillRenderer ( const MOOrder&o, const MTemplate& tmp) + :MOdtRenderer(tmp),m_order(o) +{ + //get tickets (only valid ones, only those that are to be paid) + QListtlst=m_order.tickets(); + for(int i=0;ivlst=m_order.vouchers(); + for(int i=0;i0||vlst[i].value()>0) + printBuffer.vouchers.append(vlst[i]); +} + +QVariant MBillRenderer::getVariable(QString vn) +{ + if(vn=="ORDERDATE"){ + return m_order.ordertime().value(); + }else + if(vn=="ORDERDATETIME"){ + return m_order.ordertime().value(); + }else + if(vn=="SENTDATE"){ + return m_order.senttime().value(); + }else + if(vn=="SENTDATETIME"){ + return m_order.senttime().value(); + }else + if(vn=="CUSTOMERID")return QString::number(m_order.customerid());else + if(vn=="ORDERID")return QString::number(m_order.orderid());else + if(vn=="ADDRESS")return m_order.fullInvoiceAddress();else + if(vn=="FULLADDRESS")return m_order.fullInvoiceAddress();else + if(vn=="NAME")return m_order.customer().value().fullName();else + if(vn=="DELIVERYADDRESS")return m_order.fullDeliveryAddress();else + if(vn=="FINALADDRESS")return m_order.fullDeliveryAddress();else + if(vn=="TOTALPRICE"){ + return m_order.totalprice().value(); + }else + if(vn=="AMOUNTPAID"){ + return m_order.amountpaid().value(); + }else + if(vn=="SELLER")return m_order.soldby().value();else + if(vn=="COMMENT")return m_order.comments().value();else + if(vn=="AMOUNTTOPAY"){ + return m_order.amountToPay(); + }else + if(vn=="AMOUNTTOREFUND"){ + return m_order.amountToRefund(); + }else + if(vn=="TICKETS"){ + return printBuffer.tickets.size(); + }else + if(vn=="ACCTICKETS"){ + return printBuffer.tickinfo.size(); + }else + if(vn=="VOUCHERS"){ + return printBuffer.vouchers.size(); + }else + if(vn=="ADDRESSLINES"){ + return m_order.fullInvoiceAddress().split("\n").size(); + }else + if(vn=="SHIPPING")return m_order.shippingtype().value().description().value();else + if(vn=="SHIPPINGPRICE"){ + return m_order.shippingtype().value().cost().value(); + }else{ + if(vn.contains(':')){ + QStringList sl=vn.split(':'); + int it=-1; + if(m_loopiter.contains(sl[0]))it=m_loopiter[sl[0]]; + return getLoopVariable(sl[0],it,sl[1]); + } + } +// qDebug()<<"got variable"<=max)return; + m_loopiter.insert(loopname,iteration); +} + + +QVariant MBillRenderer::getLoopVariable(QString loopname,int it,QString vn) +{ + if(loopname=="TICKETS"){ + QList &tickets=printBuffer.tickets; + if(it<0 || it>=tickets.size())return QVariant(); + + if(vn=="PRICE"){ + return tickets[it].price().value(); + }else + if(vn=="ID")return tickets[it].ticketid().value();else + if(vn=="TITLE")return tickets[it].event().title().value();else + if(vn=="ARTIST")return tickets[it].event().artist().value().name().value();else + if(vn=="DATE"){ + return tickets[it].event().start().value(); + }else + if(vn=="STARTTIME"){ + return tickets[it].event().start().value(); + }else + if(vn=="ENDTIME"){ + return tickets[it].event().end().value(); + }else + if(vn=="ROOM")return tickets[it].event().room().value(); + }else if(loopname=="ACCTICKETS"){ + QList &tickets=printBuffer.tickinfo; + if(it<0 || it>=tickets.size())return QVariant(); + + if(vn=="PRICE"){ + return tickets[it].proto.price().value(); + }else + if(vn=="FULLPRICE"){ + return tickets[it].proto.price().value()*tickets[it].amount; + }else + if(vn=="TITLE")return tickets[it].proto.event().title().value();else + if(vn=="ARTIST")return tickets[it].proto.event().artist().value().name().value();else + if(vn=="DATE"){ + return tickets[it].proto.event().start().value(); + }else + if(vn=="STARTTIME"){ + return tickets[it].proto.event().start().value(); + }else + if(vn=="ENDTIME"){ + return tickets[it].proto.event().end().value(); + }else + if(vn=="ROOM")return tickets[it].proto.event().room().value();else + if(vn=="AMOUNT"){ + return tickets[it].amount; + } + }else if(loopname=="VOUCHERS"){ + if(it<0 || it>=printBuffer.vouchers.size())return QVariant(); + + if(vn=="PRICE"){ + return printBuffer.vouchers[it].price().value(); + }else + if(vn=="VALUE"){ + return printBuffer.vouchers[it].value().value(); + }else + if(vn=="ID")return printBuffer.vouchers[it].voucherid().value(); + }else if(loopname=="ADDRESSLINES"){ + QStringList lst=m_order.fullInvoiceAddress().split("\n"); + if(it<0 || it>=lst.size())return QVariant(); + return lst[it]; + }else{ + qDebug()<<"Warning: requested variable"<, (C) 2016 +// +// Copyright: See README/COPYING.GPL files that come with this distribution +// +// + +#ifndef MAGICSMOKE_BILLRENDER_H +#define MAGICSMOKE_BILLRENDER_H + +#include + +#include "odtrender.h" + +#include "MOOrder" +#include "MOShipping" + +/**displays an order and allows the user to execute several commands on it*/ +class MAGICSMOKE_COMMON_EXPORT MBillRenderer:public MOdtRenderer +{ + public: + /**creates the order renderer*/ + MBillRenderer(const MOOrder&,const MTemplate&); + + protected: + /**callback for bill generator: variables; see MOdtSignalRenderer for details*/ + QVariant getVariable(QString)override; + /**callback for bill generator: loops; see MOdtSignalRenderer for details*/ + int getLoopIterations(QString loopname)override; + /**callback to set values of a specific loop iteration*/ + void setLoopIteration(QString loopname,int iteration)override; + /**callback for bill generator: loop variables; see MOdtSignalRenderer for details*/ + QVariant getLoopVariable(QString,int,QString); + + private: + MOOrder m_order; + QMapm_loopiter; + + //printing buffer + struct TickInfo{ + TickInfo(const MOTicket&t):proto(t){amount=1;} + TickInfo(const TickInfo&t):proto(t.proto){amount=t.amount;} + TickInfo(){amount=0;} + MOTicket proto; + int amount; + }; + struct PrintBuffer{ + QList tickets; + QList vouchers; + QList tickinfo; + }printBuffer; +}; + +#endif diff --git a/commonlib/templates/odtrender.cpp b/commonlib/templates/odtrender.cpp index fcd5ee8..a92d485 100644 --- a/commonlib/templates/odtrender.cpp +++ b/commonlib/templates/odtrender.cpp @@ -193,10 +193,10 @@ void MOdtRenderer::renderToFile(QString file) } } -void MOdtRenderer::renderToFile(QFile &file) +void MOdtRenderer::renderToFile(QFile &file,bool preventopen) { if(d->renderToFile(file)) - if(QSettings().value("doOpenODFs",false).toBool()) + if(!preventopen && QSettings().value("doOpenODFs",false).toBool()) openOfficeFile(file.fileName()); } bool MOdtRendererPrivate::renderToFile(QFile &file) @@ -226,6 +226,25 @@ void MOdtRenderer::renderToPrinter() QFile(tname).remove(); } +QString MOdtRenderer::renderToPdf() +{ + //generate temporary file + QTemporaryFile tfile; + tfile.setAutoRemove(false);//we don't want it to be auto-deleted on close() + tfile.setFileTemplate(QDir::tempPath()+"/msmoke_XXXXXX."+d->extension); + tfile.open(); + QString tname=tfile.fileName(); + //render + d->renderToFile(tfile); + tfile.close(); + //call ooffice and print + QString pdf=convertOfficeFilePdf(tname); + //remove temporary file + QFile(tname).remove(); + + return pdf; +} + void MOdtRendererPrivate::render(QIODevice*out) { //sanity check diff --git a/commonlib/templates/odtrender.h b/commonlib/templates/odtrender.h index 25ba593..4a0bc88 100644 --- a/commonlib/templates/odtrender.h +++ b/commonlib/templates/odtrender.h @@ -38,10 +38,13 @@ class MAGICSMOKE_COMMON_EXPORT MOdtRenderer virtual void renderToFile(QString file); /**starts the internal rendering routine and outputs to file*/ - virtual void renderToFile(QFile& file); + virtual void renderToFile(QFile& file,bool preventOpen=false); /**starts the internal rendering routine and outputs to printer (calls OpenOffice to print)*/ virtual void renderToPrinter(); + + ///like renderToPrinter, but renders to PDF, returns the PDF file name + virtual QString renderToPdf(); ///helper routine: converts a V1 template to V2 ///you have to make sure to not do a double conversion on an already converted document diff --git a/commonlib/templates/office.cpp b/commonlib/templates/office.cpp index a578406..c82faa0 100644 --- a/commonlib/templates/office.cpp +++ b/commonlib/templates/office.cpp @@ -18,6 +18,7 @@ #include #include #include +#include #include #include #include @@ -100,6 +101,23 @@ void printOfficeFile(QString fname) } } +QString convertOfficeFilePdf(QString fname) +{ + QFileInfo finf(fname); + //calculate parameters + QStringList r; + r<<"--headless"<<"--convert-to"<<"pdf"<<"--outdir"< #include "commonexport.h" diff --git a/commonlib/templates/templates.pri b/commonlib/templates/templates.pri index 6cc1d4f..e14acdc 100644 --- a/commonlib/templates/templates.pri +++ b/commonlib/templates/templates.pri @@ -2,12 +2,14 @@ HEADERS += \ $$PWD/odtrender.h \ $$PWD/ticketrender.h \ $$PWD/office.h \ - $$PWD/labeldlg.h + $$PWD/labeldlg.h \ + $$PWD/billrender.h SOURCES += \ $$PWD/odtrender.cpp \ $$PWD/ticketrender.cpp \ $$PWD/office.cpp \ - $$PWD/labeldlg.cpp + $$PWD/labeldlg.cpp \ + $$PWD/billrender.cpp INCLUDEPATH += $$PWD diff --git a/commonlib/templates/ticketrender.cpp b/commonlib/templates/ticketrender.cpp index 0109320..a0fae5a 100644 --- a/commonlib/templates/ticketrender.cpp +++ b/commonlib/templates/ticketrender.cpp @@ -51,6 +51,7 @@ class MLabelRendererPrivate //called by MLabelRenderer QSizeF labelSize(const QPaintDevice&); + QSizeF labelSizeMM(); private: MLabelRenderer*parent; @@ -546,6 +547,19 @@ QSizeF MLabelRendererPrivate::labelSize(const QPaintDevice&dev) return tonatural(dev,tsize); } +QSizeF MLabelRenderer::labelSizeMM() +{ + return d->labelSizeMM(); +} + +QSizeF MLabelRendererPrivate::labelSizeMM() +{ + qreal fac; + if(unit=="mm")fac=1.0;else fac=25.4; + return QSizeF(tsize.width()*fac, tsize.height()*fac); +} + + MLabel::MLabel(){} MLabel::~MLabel(){} diff --git a/commonlib/templates/ticketrender.h b/commonlib/templates/ticketrender.h index 5e2a408..0bf4a24 100644 --- a/commonlib/templates/ticketrender.h +++ b/commonlib/templates/ticketrender.h @@ -54,6 +54,9 @@ class MAGICSMOKE_COMMON_EXPORT MLabelRenderer /**returns the size of the ticket in the coordinates of the specified paint device (used for preview)*/ virtual QSizeF labelSize(const QPaintDevice&); + + ///returns the size of the label in Millimeters + virtual QSizeF labelSizeMM(); protected: friend class MLabelRendererPrivate; diff --git a/doc/logo.png b/doc/logo.png deleted file mode 100644 index e4264a98e577c1747e3a2efd19abe8a364c7f500..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11843 zcmV-JF1*o+P)Dc026dY zSad^gZEa<4bO23ZXK7;~Q*Cc+Wh=fQ-~a$107*naRCwC$ym^!)SAFOExv@uNX6@D0 zo4U1w)RI~&k`TgxC16V1qys zU>;gP7_mqQZLMC^d+k-Z#D4F6f82=3td<%)Gt8Oy-kCTjPgX9KvHZ60@B91S5LubM8DUg z-|sOsIZm&)j%7iXCMa3pxek^MgVjAG-NPuEqXA1;Xsyr)zyfsj03pD!Z5+qObscQW z#a?S5u0YG*gQAO?93E?wND|;QMrx-fMr<-A<$Y=N=ce##BsvvT9@^1k8Zb5n&zZg z#>&bX%PVW-c|pB7mStlcz?fWV5D0ABhRP6u?UH9XQbE+}kR%DhaFKCfu5 zlLFUo5r!Rly@c_J8R9f1ipEHiK1vJPoetBJEykmQa?><%-=o_b(CrTB^?T%nuJ)^- zb_L7Aacq3wCk*_?xK`z?j^h}|aB9Ol2n%E>Nz)uDB}%ErP`Wa(Qkt?XDW$9&K%$gx zJ{N!x!Z^KBtgUzH_XoJHi{seUH8RI*jG#=|SQfTz3{#e7-(^{nWjUp+97Jm@%fj%9ox2W=+IFVic$(@rl&aL)EUOx4r=fq(cCuL?G{;9aNyB{ z96B=3vE%c^gTxp>7$ZB5O)Cm$w_A*lcko;j3ASTnStcX6u46KUZ5%qwGt$&Vwq=

?qB%tff$KV0mNB##F?j8$#%V?~gF-2VZQF!l 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 diff --git a/icons/arrows/arrowdiag.png b/icons/arrows/arrowdiag.png new file mode 100644 index 0000000000000000000000000000000000000000..8844a7f1a4781d28a1897eef2908d762a221901e GIT binary patch literal 224 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!D3?x-;bCrM;TYyi9>;M1%fy~fDm+OEOV@Z%- zFoVOh8)+a;lDE4HLkFv@2av;A;1OBOz`!jG!i)^F=12eq*-JcqUDxPv<(Ka|uf7B*ZQ|+T7{YNqIiVmS!Q#My9}SH^ z8JT}Gv;E`e`6Ms##@^t{|AZg^n-BhDXZ|hE#-=bSk%5^ZdLQq~nF;$21NAd_y85}S Ib4q9e06Vxpp#T5? literal 0 HcmV?d00001 diff --git a/icons/arrows/arrowdown.png b/icons/arrows/arrowdown.png new file mode 100644 index 0000000000000000000000000000000000000000..683c465cea3449012360934c3b8cb835f206c424 GIT binary patch literal 206 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!D3?x-;bCrM;TYyi9>;M1%fy~fDm+OEOV@Z%- zFoVOh8)+a;lDE4HLkFv@2av;A;1OBOz`!jG!i)^F=12eq*-JcqUDQ2Tq8=H^K)}k^GXLfS6>2@R`PUl4B@z*oZ!Ip&0gY(eS^S% oW`QJo2B$N;3P(;bIPvf>?CxSel@RdwFHkjur>mdKI;Vst09HISvH$=8 literal 0 HcmV?d00001 diff --git a/icons/arrows/arrowleft.png b/icons/arrows/arrowleft.png new file mode 100644 index 0000000000000000000000000000000000000000..abe8720be35196a4e25f7e1d53b26fee76aa7a29 GIT binary patch literal 222 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!D3?x-;bCrM;V{wqX6T`Z5GB1G~wg8_HS0D`p zOVf9r2U3hBL4Lsu4$p3+fjCLt?k)@+tg;?J4rhT!WHAE+w=f7ZGR&GI0Tg5}@$_|N zzs1AFZ)oWG_=Y7=NVvo`qQp5rH#aq}guyp4Ju_Lsv8X7&eAjvPB|vFaPZ!4!j_b(@ z4a|&eZA@&(_<7#QOFXeRxYF#YAg#e9!hW)efnmpQj<}zB4PSv87(8A5T-G@yGywoh CB{vZO literal 0 HcmV?d00001 diff --git a/icons/arrows/arrowright.png b/icons/arrows/arrowright.png new file mode 100644 index 0000000000000000000000000000000000000000..8a62bf75f78dd52d84586f9f1d1e8db84f275c70 GIT binary patch literal 210 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!D3?x-;bCrM;TYyi9>;M1%fy~fDm+OEOV@Z%- zFoVOh8)+a;lDE4HLkFv@2av;A;1OBOz`!jG!i)^F=12eq*-JcqUDxPv<(Ka|uf7B*t>)?C7{YNqIiZ1(kB!ZajqM*0 qvGe?~m-z9&@g%!~pxp)?pvhhBY%Z^IR!j%#VDNPHb6Mw<&;$SvaWxYF literal 0 HcmV?d00001 diff --git a/icons/arrows/arrowup.png b/icons/arrows/arrowup.png new file mode 100644 index 0000000000000000000000000000000000000000..cfb4cdb309cb71574f98a9d6bee98902a54e5e9e GIT binary patch literal 218 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

$RNE(9RrU>Q8# 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 YJ>ADx7OtDc026dY zSad^gZEa<4bO23ZXK7;~Q*Cc+Wh=fQ-~a$107*naRCwC$ym^!)SAFOExv@uNX6@D0 zo4U1w)RI~&k`TgxC16V1qys zU>;gP7_mqQZLMC^d+k-Z#D4F6f82=3td<%)Gt8Oy-kCTjPgX9KvHZ60@B91S5LubM8DUg z-|sOsIZm&)j%7iXCMa3pxek^MgVjAG-NPuEqXA1;Xsyr)zyfsj03pD!Z5+qObscQW z#a?S5u0YG*gQAO?93E?wND|;QMrx-fMr<-A<$Y=N=ce##BsvvT9@^1k8Zb5n&zZg z#>&bX%PVW-c|pB7mStlcz?fWV5D0ABhRP6u?UH9XQbE+}kR%DhaFKCfu5 zlLFUo5r!Rly@c_J8R9f1ipEHiK1vJPoetBJEykmQa?><%-=o_b(CrTB^?T%nuJ)^- zb_L7Aacq3wCk*_?xK`z?j^h}|aB9Ol2n%E>Nz)uDB}%ErP`Wa(Qkt?XDW$9&K%$gx zJ{N!x!Z^KBtgUzH_XoJHi{seUH8RI*jG#=|SQfTz3{#e7-(^{nWjUp+97Jm@%fj%9ox2W=+IFVic$(@rl&aL)EUOx4r=fq(cCuL?G{;9aNyB{ z96B=3vE%c^gTxp>7$ZB5O)Cm$w_A*lcko;j3ASTnStcX6u46KUZ5%qwGt$&Vwq=

?qB%tff$KV0mNB##F?j8$#%V?~gF-2VZQF!l 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 literal 0 HcmV?d00001 diff --git a/icons/misc/cancel.png b/icons/misc/cancel.png new file mode 100644 index 0000000000000000000000000000000000000000..fd285bc5c0b0342ebbac2dd5339e191d1ef18ef0 GIT binary patch literal 3809 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 Xf;YdHLVvB600000NkvXXu0mjf9PBv3 literal 0 HcmV?d00001 diff --git a/icons/misc/done.png b/icons/misc/done.png new file mode 100644 index 0000000000000000000000000000000000000000..dbfb948ab86404ef63eb16f7540419e4d6150737 GIT binary patch literal 1925 zcmV;02YUF4P)^A{-pjWhnpv2NFp{ zK~z}7y_aoJRM#2Df9IZi@4f*GEG$G>gKr=Zr{Z*&)ER4v#3CAv&ZKRo9~zr>y8YB? zJN-a2(>fie&9r_HBZqd$WWge#?0-2_fQ2DK&k+Ht+BS^}&K+U*NTquZcSYcf2n@^X+Y{ z;m1G#FlXCn^9kR$U}La2S{yjtb4J`7y+_a89;&^oJxeNvQYwkx>t{pdSLsRgSRKbY zqA%vXXs=(tes^A8-p_$cKzd#Rn1okpPX*2md?ZrX6y+3CS6)Z=Shv;M(t0hoEq6dE z^@G~l+FgZ(g%Ke{3i#ivKs1TQ%_WDK2gjR_ zYaHMh@CVa0f2x#9CzDBPYir5L$(eNH_)GzaCegTM(U#!4+%E?%-wg{iL6NtZGG7@N zA{RK(asp?Ib1*+Y|0B2C-6f?|N+}YF1SKUUl$V#2ot-U#_+%1v(Ij3$@B(Qhiib5C zGmM&eI92y#8Y-|i61UhMC?{F`n`(0B3I1L9R@Bo$kg7w==w}0*V zMb8KR@!*P(x}?BW!1BE1?C(Bc9eMXie{p;9lMS01PR3%f-|yM8$F?jBDJ6>+FD4d? zF*-U*GMV(|dcBc~iVDKvFk@q584W0eX_{oYvZkhKIzXZE5)Ip{w|(;)OTQkt5&M_W zb)AB2A65RR*dLyN^Df8h>gqyL%Af4ryZ6TAQKOW?wryA6Hy)RV1PPv9_N)=C z33~4)28C`&d~P4h@|N+|-`}!Y4zx_cflj4V&lFkAEF3^icE40ICC10c@2y$02Cvr( zVCVo2!-2=)MgU3(;v&v>zVx#DLFxh0(8+gr@H_ncuI+WJd4KZ^IB-J`!SM<}5e>hG7s2g%}+j1#o6EVBoUdh)fn00wENJaF8eSc(wIa>(HMM%>_?Bf_*4~ z#Ox(0b=+<@ot>SGjEn$GsLjw#Tn^_9C%R^ki&w$*`PGC;k2X zT)%#OvJ4YCfG!OjI6){-0$oV5RSr9k?z9f>d+)K~8J-TLG)+U-b)=NVLWtX%rr~nA z=;-L6zrUY!It`H40SXM?MCl2IQs59KKYZ^;*1>lUJ~mtkfl|susRV#!S#))E<>%$) z<+@z1F;+@{!UX@5B0Gz3=L5ke+>!m{a*mG3$3*P1d}W5?$A6ZEaPNNW{*piOKG$eTqY+l(HWO zKFeluFlj2KBpQu!_Uu`Phlk04r(SGcZ$@(sP187i`ZR-sgUt0lpKAb0DMm&{ICbh2 zkw|1lw*D^x*tShL9A;=}h-5N3y)({?^7EPirKP1vDQEPo>3jYSu8Gb@0;q&Y00000 LNkvXXu0mjfsi~WQ literal 0 HcmV?d00001 diff --git a/icons/misc/next.png b/icons/misc/next.png new file mode 100644 index 0000000000000000000000000000000000000000..7700d6fce6ba1d328b435fb7117cd63fb760cca0 GIT binary patch literal 908 zcmV;719SX|P)j7>9=N}4&EW2lu2X^tbNq!01+-83))oqGlnqJfV)+?jKJzkAOAoWm6WGM$nC z0xFHNjp8pNGZ>%0E}+59r&c)94@m0HUpE@0vDnssU|<(g}O|jHXXLxF+<)+ zs0-LkKxqWmCX$0Se~Xt@+4O;tC;-Kf|KJS6=7jIrx8O1#l8F{ywCN1p}wcnxr# z1)5R`F#?r4fb!)W{y9J~|N58`Pbu+&5)G8d^;}}|O@~j84#Mjq0sDHu76e#V0TvE@ zxi3&gaH)(%`~I8~m6Uj=Nf*(!c&* iFhOE^-i-dam(w5dP+NWyTI59l0000Af^;KL zQl}Lrc`24B9pdoPGE>88-e`H7)^I+=ukX>JQJDN6UZiy3CzPw z0B^j^Tz#0iUc=%;!R~Q^MeruTEB7)#3ub)?asqc=OIxw2;Qf{2490+Yj)~rfk9$p6c zd%)`ee+lRdz$5lO;rfdx25?IYj@ zz+VGi19&yfMfzUr$E=r@Vh0*>7jr`hCgT|MKmlhb(m3E(ks!APX5r<4_grH(?gKz7 zH-LItIZcr0P3NoxvI3rl>~u>2>lapWGrWfJ1 zoFe`1g1{FU0uBjZRWOBJiJ>PAr5YPsAkhnnZb)=OqLb#1U1-8jXu=*ep&3nR27C}r zXf2Q};Dz`>LNzO)gTyE#1|iW02{Yim7{h+_$1uil1YErPGJnE_3{LMDKP;F z3nYdhF}#uaD;`9Jk@n1Znv{UfNjylVRgdAa5>t>EgTyGxZjEEHINlz2fSPe$E|TH6 z>of;^bq}ItCCVUSgTz!cvrS;JM6e%MQ9aJlB4JX=9SM^4C|*{g91=4b%rjZD0*dSh zTuS`VD<|Mm;;F_a>J-`$xsuRE(f$0CZ6g8xl&8p^aH#|mygPu@IG$B(SG+`GEwUBa luIPJ#3lZhtjQ;tT)1Om}V+##pbj1Jw002ovPDHLkV1o8FiTwZo literal 0 HcmV?d00001 diff --git a/icons/misc/separator.png b/icons/misc/separator.png new file mode 100644 index 0000000000000000000000000000000000000000..ea928431d20d5005a7d8df12210c27ebec978a92 GIT binary patch literal 221 zcmeAS@N?(olHy`uVBq!ia0vp^0zj<5!3HFyJAa%3QjEnx?oJHr&dIz4a@dl*-CY>| zgW!U_%O?XxI14-?iy0WWg+Z8+Vb&Z8pdfpRr>`sfZ6`;xTgNlt=z-kOf} z7q>F3R-UP{`PLl1PL7@iJ!Uo@34;%!0cx76PoLb + Copyright (C) 2007 David Vignoni + Copyright (C) 2007 David Miller + Copyright (C) 2007 Johann Ollivier Lapeyre + Copyright (C) 2007 Kenneth Wimer + Copyright (C) 2007 Riccardo Iaconelli + + +and others + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 3 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library. If not, see . + +Clarification: + + The GNU Lesser General Public License or LGPL is written for + software libraries in the first place. We expressly want the LGPL to + be valid for this artwork library too. + + KDE Oxygen theme icons is a special kind of software library, it is an + artwork library, it's elements can be used in a Graphical User Interface, or + GUI. + + Source code, for this library means: + - where they exist, SVG; + - otherwise, if applicable, the multi-layered formats xcf or psd, or + otherwise png. + + The LGPL in some sections obliges you to make the files carry + notices. With images this is in some cases impossible or hardly useful. + + With this library a notice is placed at a prominent place in the directory + containing the elements. You may follow this practice. + + The exception in section 5 of the GNU Lesser General Public License covers + the use of elements of this art library in a GUI. + + kde-artists [at] kde.org + +----- +see doc/copying-lgpl.html for license details diff --git a/icons/oxygen/dialog-cancel.png b/icons/oxygen/dialog-cancel.png new file mode 100644 index 0000000000000000000000000000000000000000..6ce79615464a60d0ed1cfb06124bbdf692f822df GIT binary patch literal 2207 zcmV;Q2w?Y#P);pp9WZz{RzCfQS7jw={Mk|eOhS5t%R z@o-N*KX&Wcvj?YodVaGnne00BX)16(hzDVZ5(qq1zU`j6@aEf)+-}T50n4(S;L2*6 zbFTqcagbd6GGi|sGSWT0&t~8UyI}ki8~79WL-2I;woMOJ?brb(bFizzCfnD7kwvD2 z;w5|W0;7jt9L{C3P3NHH#~;_gA0QNxD zkrW@EXarwf9lm9?fV5ynSOz2e|5}(G9NF_E>_7KW2A%??N|s((@r|Y}MK#N@|DglV zPmVFx(n6}Mr%yMn!v#2=flCHxeuyY=qZ_s>#YK0PY`EDST)Q3+jtR*n7(H}IOC^SP zHo=i44Qv7)fnU|$x9vNnYd^mLpFG>n@M~`jXEgnX$6)_+P~bY+31Ta3FLTQ;mEX5r z@|0CM25?Nk&|mgXPtT-p{ucByFPW?KINVXTX2sJLo3{v~pkwMfqbJ`a(cJd$xMAM) z7__|y221F>uqxrv@Q{5KZega88Lu-sve@-=NbwHs8w+d&q7_ucMb$oZ0{Wf|}8 z%U*)tx3aWapLn9a!iG!n?wB<&j<^Dyhf9`Dvage&3-RYudHr|Ukpz07z|7z<#cS6{ z3VdO~z%5XtM2llu)^H4Dr$?BbRo{36CYCJwV~^FB)x}zjcaB#Z7cM(sY2JWKhT%jP z@y`AOZ^J_w*q@z9qN#bbd>(gM7z;Ko>;VN82Jtf;7=l$Bt$70` zge_S@pWi%%d=3o;uRA5TZmlma4KypACu4MtAkS|$(+;_;g!9RMy58+QbOrtoC;*H> zK36a%F0~!4N~a1arEV-)l$yFF90MAN^h}EUbQgZVA6+;G1lQ>MLaf%t63u0U#N7QU zBq0!PH@IAwJ~thc19Z0c9O{6t{}WW^Wq_pv9?L`mkc5-p_@D(UOsfTz)bM38fUioy zgxEDhW_6JwHLuEy#-yW3^eg2yO=rXDR)LN(Hx~x;FT7*JUjvn^R0LkhE0u}7fdojh zKr^jW9xTVeB=kltkR^d+T6hE)g2qw{rhrGGKIoU5H-tU0(!Ob=Ip@x5r{;9Im-iC6 z!#2FB6;!U#di!$wWDh9~84$8SHR(M+pNDpcSI%l<6{YTSF;PIC)$xVgTeeMUkzyzd z*zk=JZ>%hy#SM7CS!G4y%?gF~c=qtS7ENuSavjOA)9(`K7D#~IfAS7??mZVko5>hQ zrGN_o7`B0EiQ5~3p9YKM=3C0Wv5*aSIpF!Y0Vg4)H2irMkY#}cM6w3qD&^r@D!j4c{wxwWApfA0v-X;1bZqgz58x7EXkbJ5rA0kr|)v^tu{D(-SfaC^aN7+ zs^|?x>jRS-uK7vj^xlS_u&Z;lEB(?Li?5wu0=^S!*9d;QW<}ADZqrQJ7*Wvx?5dqk z>Dffq*m(+umOPSefKaVV9KCC8@r{wr85G092YBrSCxb5DjpzDHs+T`sRbPKx7ot}f zMxi(wjYyWYekyVKUTy5+z3a`ir)nTeHe-+jv`U2&E@5^ja^E}x&wS*ebQ8qNJ<=<8 zH3UCf*PX_bH5?N@Ng&xRNLEKsmo08!p|1o$o{b`;J8z3BpN4y?s_o`aonl(X1)Ox*yBnhu9qYA;eWznM+ z=;)iwjE}1?tMKbf&^7|*f9>J45?mEczCYN{iy hs&A!XI?4Zu{sW}21QM3dqm=*v002ovPDHLkV1g={D=+{6 literal 0 HcmV?d00001 diff --git a/icons/oxygen/dialog-cancel.svgz b/icons/oxygen/dialog-cancel.svgz new file mode 100644 index 0000000000000000000000000000000000000000..3f4c6aa26df3e87d6e83353d4a312abb5cfada62 GIT binary patch literal 6047 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 ZHh*nxnzZND-|q#F)-5-SQ34X;e*iTd)(8Lq literal 0 HcmV?d00001 diff --git a/icons/oxygen/hidef-preferences-system.svgz b/icons/oxygen/hidef-preferences-system.svgz new file mode 100644 index 0000000000000000000000000000000000000000..7277002569fb22d2432a663d92cb4194636f7416 GIT binary patch literal 12405 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 literal 0 HcmV?d00001 diff --git a/icons/oxygen/preferences-system.png b/icons/oxygen/preferences-system.png new file mode 100644 index 0000000000000000000000000000000000000000..75be44e47b968cd4e627151d1c2f9f0d2c65360a GIT binary patch literal 50876 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 XUJ8?dUkJRs00000NkvXXu0mjfoLimJ literal 0 HcmV?d00001 diff --git a/icons/oxygen/preferences-system.svgz b/icons/oxygen/preferences-system.svgz new file mode 100644 index 0000000000000000000000000000000000000000..b58b30e663fa6b2114eb9f8fa8036c3a5ae8ea12 GIT binary patch literal 12026 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

=F-G?|a(+uGKt`Qab_7OA<)cQPv7HwFm zod)&bLlSY=%^AImb6F6niU3~kPRM&ned-|lr^uyWHPcu&&aMIIRtSfk%=Z9aH!D-?1Cc#zF#;Qh?TwZTGq^Jia z&|ZDEnq?S;(K*LMOcEBQ9HQIq9}f50L!2lv?#HZNdq2dB6ziumH7@8S=71%J;-d;y zy_l^Tb#^`0jrt;_8T7BuD-jQ_M__U&#F&L*X7dt-rvTc}8~pQk3>9_S|Hl+gSo6UI7m8&BlE9Z&PdQ^4^Au}&CwiaEpwy&Os!6mgI< z#Oj2xkJbs}0MrR#U(_yI4a#^1StpFUnvUn6qc$%#3EVUZS?3%jCQcSGJn+Jq%T20K zPQ<!CeC|^Bt~Sf`6{+6y&^*eDo`s~%O0RAegGb|ti2<# z^BErRKV+ZY58BE%Eb=iK6k=8g0gL_LN05_c86lb!WMCEvRIE_ZtyH}tl3Yf}w-wu! zUXh^&UXfbO4np)jh&Z{*7_b;++J`6^%C9(~q6g%JidJN(Kn3cf^J2oY<++g9REcm?W{mDA8d5<-K7M$eNlCxCcO zoK)~^h>0aaKHE;``kO&#;mL9yE)B79wjuUBB{3l)SX4^Bfg~p8w1kt4ZBAOO-ym*3 z2yK6us)m8t?|=1V^myNlv(4OS=0r#w@hcx3g_EKXj=bi~zi4p=RcuaOxC7XKV=o(XC)k$ZDgUP;$P1R9HvKUILZoVZk+f zgcl*2l#zgXT3gO2z48#Ta*u(FXe;+2s4f7rslI)iQ_EgAc)m^CU^xTl8&+q zNx@tIBoDcn#7cP(nUx9zA`wwAVL;%=a*JW^OQZn=hlrs*Xd>>tY}A6XCJJ@m78!-l zt=tDu3Y6JO;Yolq;4ITzldm++IiIXj1ROyrg4Qa9C5s31$~rg*o}Adwi*Z)VOn$~W zxgn_Zx{}#AN;+eYt<#XzjC7k@Ig9%?rAO{nMGd64_J(dO1#^Mk+GBFfD!f$zLnoku zDv*Trn3Dx>HOMG?tKtVy0m9iT5Q!ZOsHFl5G}eJ;`s#**K0BKXJzX8}W9UGv)q&Cx zJ1U6^02LzU6yl;*P?Q{65@u1)QXoRHXy)zhdn97(nGG?NW&+w57DnQIX^t7GV3EOG z#@Pa z6a#ssVhE%_7-*zO+hs$+BnARp&_ZaXf`Me_p2i54t;dKhEEg;z2Iw}oGJt4LO(w_O zV*u7`6^V**OY}h)EHs5@1ffy4xBNleK|2PO%6L~Lmo z%r0BbWkt|}31!OCTT;jYQgRajxevLKxa6kN?4OZH({9J5)> z$&75?yt5`>IqwYOlVvgKF<9*DSsV%gIGT3~r*MQk%say(&O{TChv)5VQc$g=%K<>c zw9_+hGiS&mxJ?*gUN8t{iS4}8EL)EOA<{7KB#o^KWH-%NPz7eOf(3bYALgA#)T;PF zR6uRE3TO(ZiR~ZDjAI?B>6?Cf06n7v3@57tOh?cGmbE%yX;@N3mBEaA0yQ1BCOMO1 zQ2=Hzq{3^-Ayyz|rHEbuGP7XGtSO_5QbA3Hg^LVjG3}x3Z1_lQ@y`oLNC3T3Kt_O} zL9OKMOKEl@}Z@wPS&LaodP(Fx<(I^hXPb(VWxQ?GN+*-uv=;t2X6xKe^5rTRQb108< z9?JSVEMR)5HQgT-8WFuFZV(;h8JdfnEX~D^LG!$x<~egjj4gjo;@P}s7Fw8MNvYZ0 zqIc?*1+35Q#$hG52(#uw^G2CX^e}Ao*=)_ponn?#jn>jUhK0G&ITeK@j%Z~98Hhqu5~533e@ewP zi?s3{goS}~S*V!E3}NOHbxpt0+M1p&4gDB2jFmK0NZ}a(M~l>oNtwgFpr)AJ3kErW z@^+EhJ*Z$5s7kvQqQBZyFQ`aZ#)6_E*_l$33^_*+NjPFFbMX`ko|)^edf_k`DGl4| zl5=043ab<>JTs279fHsbI-Agxl%YjuQMM7AYvPtk#^;zEC(GoFM__X1wM?d@&ckXm zhYap1Cp3iK9)}}w?rDbMioHceK+mnr2O%KRYywI`2acJOu$q3QW0381d3cPCzkszo zl%&SH%{QgNKjoz4nXD%ri@TJR%(OMKqOMs>vT&751@pj6w#{q`k#j*AP_fIb2}8wu zEI3S~DZ1F>A}IUdFQ5&2!DbrTLl|LNl1TuT?3BPkz#nBjj8?>KtLaPX=MsXU^&XvCZs;qTHtp zR-qy$!h>wPkEra}V?yTJZA3TW;j6j`#<`#hYDPV#ET#n`a7Av^`!E_nHd_NMMVQTd ztf3}f_gI4goa!#(|6}g#ZsyiuAlk}Tfxv%qdPx8ETu^pmY}P=01sL{QFyUAm%wHR_dfnlv;SVMHemIcIyAiLQWsFg^sj@lF!mMGrO0E z5ge&APPuRYYOPAi(V9EYUz<1^=Ulx7WVfpz2aRGB@imZ-_*IbWwIC}!0J6$D$VCOz zM+16JoMF0cX9$tUPsm78vuaHOB&X(Ir)n3kt+N66=tGAL0!j2!!$1|C3J!6SsR^p= z%zO*-!IzQm6ej?ewlt3Lr7evh_4g8=PY{n);^*`V)W?=a$PlS)jlxQ#m11|E1+1I1 zwH1}(vRjp_tvn(uw%#Foc%n6<1bLe+UCqA+z765JjIa!p>eZWVj`+n{+vK$jn?1m= z#VW%x0{+p#4jtkK!rsB=s1D1N->0lVEG+@1u{W^Axpp%$Q`;x3BE zaa`a{OC#0V+-c?;mQHjoIHNZUocs^%jr zOZd!vOGcDj&IlV&i_3NR9=}|Nd%QO->VdQfT1^Wds`mGSGIV5!$G)IMm~>>2xz)Cy zY~W`O1X;@O1!Z;}?t_#hr`es9rPc3&&eeNJ#$}Sd|LIA3X><4pU)mlHeJ#e}Phgzu z7$*|QkL}@zVGIeI7)QD0q!U6W+x~Dd9riDJiuYv zDu*#N5{RS9h#XPuDSMR>-n_Ak$KJFD1H|i#nzF5^t9H@SW>^n z?INQ^P<|B|G19?_Ikxx?tl7U%Fr;sO+^I zRy@IBt#VkS0z~?8!A8^&a@a(!Dx(^?puKTYl$zX8X3SK(*G)EWhO$kS!?L6`l#^t; zAs&gdk?&zRFEfnchQzfkj3a!pya2zJVdw)4!&e!`kgTJ&NE$&@nR{*Fs!bbtNnzi? z5J>xqk|p=zB9%9{Mo8FRTsUP%24R!TB*TtDkHP|@xcYoE97zyF=<$Gl3r@49N~)%6}+~E$n-!9k!iJsm`zy%`Ejr>d9X1>Z72IGy^%vw zs%|Iy%)w{oTQF3+g2NY<1@ z%46C|Ddy6YqKf^?dQVo=<*d-b4k5jE3(^t4bPG~2%WJcO?SZV|Sj`F@K}94V*I}d$ zCE6)eGNMUbXfU>hH<6mOmL9Uh&XqnHmH~wDRKv}^dYoh_!_-X6?QHB$i`Gp+q#w5- zbrztA(9vX};vFesVf%GR!j3cdEy-biIXP?)Qy{LLqCMi5PSFN4UYi`k4x^;=NGe%h0 zY-(2Nr{;#cbxk7v^EJ?tgo10jQK2%Qs3a--*MQfT^A@ZlE@K@-E0grva`=c}Tn-z( z7Hg9Sur^!8ItHQsx{bZn2+5LG!w_t(v3X=nFqsL_nwFTLwPMkb-Cf|EZjtb)*3u+v zKOs*EoQ-`8#;KPv&LJg2b`9ereih?1w-AcUGlabEVTTm|gA1EU-udX(a_{BoQ?X@U-Jb`kp zql^$BKMRfQKgV8YXleaq4a*?Tsr4W0)ZB$e>y)h@g+>mSG}`O{QOrl8$f7kQm(`c` z9O z#YW}3n_1gk!#Z*+G)OtDH35-XyG)=uGa#b z^Z>vqivSl5)7W3ybKe`76V^1U#x28=&>E7Qxg!l+VN>H&ptT5c&JEy1fvr_04V4}T z#fh#@+?_SghVEItb%5pl_CyGW+_d}OgkoVoAGiMpH< zGNRJ2{iwhmyzrv}!S&uQYCX|Ktys+l86HW*A6?Ya=5F7Fo^^V5q@n`b%d?TiJlz?k z(`}|&{PXMVnJ4O9w6b5ORR>4m;%ak`UR-MyUJESv0brr4!0KSnzt@^2BP=DS${t$Q zkr8ELQ!@kf)ZG(t>wmf~N!aIghLB7<60|)MNJVQ%WzjF|El`X652!OLuAN}mgICTk zFyg&LKhW3|qIIIP7hFsF2siWRr2Aj#@TNGNYwh4GpB778^kQ|KdA z^nBBeP56_;BmVR~5B(>HOt0mTBXMK6GHN8i#HKs-EweU(j0dK9tYehu*@qR_sASaDzHJoP{l6_kr zu_$M2X~3ULm_p;XH8ZrWBFc!?*gzUH9mKryY~XwN&CC4Oh>*)ahIPa*GOYYshE*S6 zSbddY3`zm&FV;X=Y_=!gO(9Vr$?e%w0Ka9V|0wp-c4^5<8pnaq$@-O{twlabEV zTTl+Wj50Thf|w8U z-APfGlR`!iu3kKHgfFf(U0$0MZVx1d$7)jOAPXQr7Mze_1df~)Hdw1Bb6iN-7M$*Z zjtkBZ-`piqn;UK>+$xnR`y3~WS(N2ma3UbA>B+0}+nam^o1h8P$>D#MAr%MKqLLEch|S4f9BAw$}%gG9N! zRjJf!DV5Zxq!Ok$8@Z?V){Tg0J~Y{Y=!eR%etvayR2j{uG8Y*06RAeznfsQ^fLzWD z8_HIvnPKVtnHfj;*>rsC@!rgMqCuFnni)1`XWNFR5%CUTl3`+Op<4LS7+itc zFh&&Y+xqKUYSdeVv?vll_7FZoqL4FFNKI^VPUV{>#!B*Ky$5n!hTI3couBTNuhYGI z^cmr#|J<%geJ$bXPY|A~g!>=>sL#3IN2E)uI*K4XX-hXMG;jr0oLFMst4h z%yab)V2k2^0E=Y4IxFwt%d>LPYnd&1fZ4KjW-)t&pA)kU7R|_QVm2!M(Hv#0;`_v$ z!KdzDr)p2nty>ZOHACl+Vt3hQXmY`pAJDzzF%!u%_btq`US>W99Cpq;Q+zOggr72x zf7j@h?`0kjFb`g3K1Ol?Xu5)BgD|N=Wk33&sU4=G7PA~qw($J2-a??zWdduID-oX( z$ibfo9`Pp#3jG^F*lQ6)Jb_@XB8Va3lOr4C0iY?Y;UQ^Lg))d+qZAcuGELp6S}P5x zZ0^jec4M$ZB$~|<_l(xeA}7`93OyV79*FZY#25+kbBJN_$?y@r^2)suzm;I62YQoA zzD{r%H)&r$%0S#@mg1pQ+j1;^fT>(!2vfjd<+ExCHhX6 z_pfHP+MbtGK{>rj8PeVmNySEQYQ~rK9-`}i5S^}ibvIxSU)>E*k=GI}_5jfm>qJ}F zzH(>ZZ~inLBvg=A1xm3oZOJt`*C1$X38IYV(#$+`HtdWKI++_$6z=yFP6ICEax`P+jR_x-|Nn+_3A zq(iNzgHr-H_Wc^yDA$+(CIs3V(m>K$X|a4eC(;;N_}unu`caO}%H;CnG>Fa1Cc7N$ z^<}*W=DZ5C(;%2!>*MXgOI^I=*P@*I0Ltl$C_4?-`sm_0jTDynJ%e*j%rZ)t;5)+C@T=G2SM&gWCF}T=CXsv+$iqbCH-ZUxM^XlnZ3q%v5BJR! zGGC^Uhml|G7f1S4| z<;QpO{=6co=`DdUIt3Gt4j6xTm{aIoE-%5se%wYW2eyWs zmxr{*V1-ZEMbu=PC#E{h#je4v8Jp4^Mw68FZ0K7cR=EtZ4@y?zOH=U?zBUyb#d{&H z2Owrzh1dtVeIA9F914Z*ZI1Hv`tcYbiQ4OnO2Vo8*QwftN9*xg&}_GpNS+OS z3&pONDb5idd2Qot4_?_eGs*YjiwE#kUdJ~O06w?PYAA`PHd(;|&PEl6!qm!<9B1xZ z2n@PRV2!Zw69N_dHHmJ)XHzKKKc`T&*D|Q_1cSB8V2yn@Af$lW0JL;TnR6v4dOrZ8 z%!)AqBr>uIsueIbAtlls-w@{Ner*7RmWZ^RJCI4q^n2W2Us6}YEvoarHwX5;^2Sgq z^*J;QNbX2S?03;wl~$d(@5zzty)}%0)zuZ?9=^N+G=6QKm_Cpvw%TC}8dUiEog&8| z5shrMqAIpjX&`m0f#GbeS(I|NW~7PT&7yAF#KOSLJx&JIR(^P7hMtZ+a{~i}k9Uf^ zMirs7)pVF|cCmfOFj-vc%X&*zvuB>GT@SSG zse85Sh&>T>RG6~v9cnA@NG`SQe6^~p%a{AEOn_g`1RW{DsB0(skNC9{{TA=-`Q;Nm zztq)K&|zsn9Vhz3hEagIiF3D*>M$-h*-rE`Ouw9W5XeMw89^JK#TVb5IKmf~YZ>n) zupS_=Xq7-49)A@CGLoVojh4ZM^(SIzfn`7EPgeN0{`!`Bwr#Od&5u@H_$bTdIf`U5 zTSKkt=DcYn5ohk3SjT17eHf8myT9THUwre;N?*%*`4gwY*DbOV+416A*g&|Yx3{F|&-1wUnL6G0%X$yd9G8iXAqpkCRzMu_ zivZ)(H6=^d59YFQZ$-q>}Vf;chI=Y7 z=^_f$Ptp*jeGQi3R&wh8b*lDE-MaE;`GFCzu3uXSY-h;c+W!y20 zAf(r3>LY$_rgpNo^6nH*@LsFDV{q8Vbm^&*?08E+ymuM*hl z2rJ+kfk*rzfy}QZko5rq+1ClI;GQb8C@Ql!WVnWNBCN;;9RdISLgw9MHb0T9vKGUqo0ZULE!3DRT4M<&ZOw>OVs}UAw(^6ElK!L&lPKM5Td&H~vAd?|kur(& zqpdu1%J;5xhE&e+lZ}1rDpRtbneWLB=gYYvLx4nHo7Ru`#c5sqy~&YJBnMWLLk4*q zRYl4`AY(5oP}R5<5v=yI0$!iCo8YU<@abR{Ift)OzGmhv{v1BWKjBk(EqrPZz^Abe zU)k?oSXniHHaLTf8#YNzo&W|RvYCXSq<&I|MwwbWHAOVrtn=@q#pFoSmbi>W<^)`3 z--FKixJgkWomRs3Fj1R#1hpdowAU!MjW-q*#Fz7)WC*{U3_ip_SMTRO;umLP#cPwn z_<>|FT}=iXwe9L2HMS2c7xulzj`E+3!35)dKTa6vI5A}TW=&JuQVCMAWdq7xTS_ub zoo0edevNw%z$upjjzN)E`y+e!a(~1v-pg-2z^~IPzx^L!AN`T^;V$XC^+!k@9p)t! zI<+*H{I>R#+#(r}M}s7Ngi`*#-&;U3p9f?+g8vrlxQ-iAE%D)L1`#N+BN;vT-dix~M{b5}*~bx#yo{uB>F21#o!lx8Pm z&l0J16C<+ET|^88m3ylh3eAr6)Xl`u_GHEr z$x*Ax!6Tf1U$Q~_3CD&$!I`awLCia{99DCKQ4lHI8iiDBg^7W!etxy8ra{tfu7GQ+ z-y@x?H=&%DQPx3T=kvV6K1e>I&+j_;_bRsdwIr85Kyvvi$uht~q<>bOEt#o1H=Y~< z_n*=cBAJV}LSXm%XIL}cGRkBrS74(4n%*+7$N2s2NB zsfxY62cD&f4Q2swY@oN-IU~0XbU30lHs0^cWuY>BS?|dR;ma9eBbXFq z?@fq&A|bGv5H_sxV?|p3F?Vh`lJhXK-byWCAn;Dc9(w=lIft_H&&f&;+HJtFUjsp@ z(DP@HAe2i3b%-duT<%R);`tvwF*#MDxP^E0jw-l>>;T%cPv!o>O2 zCfD?~g_P)w4JOw53cUtq^?!glp$9)uQD9KCN&;lH6PZ=IX_e$((bs{9!yx8Jf$x?D z@>Rkv^IlP4q^sx|%-vMEsg)m1J*0iERn!p;&?(4HmlBCf#5hlVUFoR%Uq1WK& zaTvcEp2>%QXtMlge`pd)k7ZEh1_ss6GFXE(XpJ8N8-wXtTg%ooxd>9>o_lGAu|BwE*7sb1i_-d@jAXfnMX2 z^n!-q<4)z4VAu#$M~eS|N3u%1uF29w+tO2%*G!r?w_p*rY@4fJGPs{j1|0(WJ$nX^6eL@#;m)D$ zG#5_WX3uFJ&0iorCW3I1^q)ViqMX9l?3r8K*=S$AhT*cK466*3C~$0~_x7JGzP%oc za?lMZhnz%NWyJPkzo~CG4X6%6LhOGKgM`R_)COfn&!cmAAw@c}%23=kaS~Vu%WzWW zY-g55#?(YqY&tn3>TBO?00tih*ao@oz7*=5U-&Nf&N*!P*X~95bK%W9;Kf;ZZJ2pe zmHviT!yPtBRcN4X;)#YW&787bl>*6$ct$0*STARab_NM+{HPCRM`5ySm6_k$c0JOY zWDs%d7V_VpBLixz2FM3$UQJxUIDBg51avfrmGSeZRWB;_R@1~aTK(Q>U%d!r z97Z{ZRVeYX+WqZ6S-nFa%QE~9mh&vjIjV?=KMVL6Mb50vtsAjbJEJTzH$oj5ttqK! ztrFfORwl5dOlOd?`;XReOV(EjZy|eo_W|E}5^L;(hH+?;olT1x?7Yw{&UM7sNUD++;R(u?1nE)Dx>lA~ zYgXo(?PF4~tl$jQ8SMhal*~=HGz%lCy`8V2SoJW)7*di48D8$Q1m|-J#tj5BpC=g5 zPkb@ls$%i$32TkDQa5}{5G|>=)r(%KEjAd;w&)FQ$*U-9qgM-9yIzg1(NT1bhPdt@ zz#fhdcK7Xz-hw3X7kb$qOE1SA^wwE=F_4(7F>N2dG9GMNG;u?*urzK(sgqu}RLLKs z;VQWWlVpf*!Bh;FR<(+>jY=A;Ue|Q;?`^vr=@q4bscX`lbGB+6imlUvAEe6 z46D89i;^M_Ck2o4+)oOH{yxx`eSb`(iTX=Y2tPI{L~lq6IXeKJKw-b}G#(0Xj-=|p zq)360HH8!g^B>beZfQBYiWz0rJ`Z|T6^r4iDs#{3YiMazv?d&|jo~nXesBEeTk1^d z^^z9rp1F3B;RF(y55WxfY-hQI`POQz*1n>z$`rT5nIa=lNADM0?sL=BlzMEMDBX}I zDreI~MyLSz=)ao|5!0>su}}oJQ(2UJt6-dKY9ZpWx{k!^jr;eS`|35s1|KF?hq1=d zM$FrPvR+qzF12|FwKz+yj-mqUqY+~=(zsMsBgTMs1_i8MjTo1W?hv)rh#~VW8d74D z2GmC{#-#Tz-BixfYG+CX);N`w{44sp?5M-pVMF;) zyM1|2_S)0rv1ws;Lt0pzO$!^k3YT}Uz11|Lt(=cA4z$La%Fzg>sHRR$Jfb?fDkJsh zPpiUNEUl)%HCz4OX#;Tll_XwI zwYr_99yOtL1Ng^$m|MWsL#^kEB(JO%wLD`QMFpCzrGm?L_wCbtF6u<``CRKm)jhV+ zEUMe;X6@wFs7EMtFZ!CqC^?)MF}REm*FMXCy7uvSZf4XCnGtk0Gh%o(m!Gwd4`;`k zK{03hG(}mr$|o$XT>w}3R{3~JZLv`hj&{y!C4Vf3Xt~T?#6oLt<4%p%jr^8+JD&>ZoGf>hXma(O_rd~!9M9wnuj?NJ#8Z(JtitGh7lqsi_QY3p@cWSgwwhsNZ z9M5@d`&3O(t!4S@Kox}qKI5**2gKogs1X)NULsr8bMKI4K6f6Qcg$nc&L={c63NGF zWX&kCzZj)#=rNd0E2dV6!fy0p*@XeD7sA$(>QdZRhl*w|DHLl`;G!`73cZAAB|S_u zh6WsUtoC{PPu4z}&m|i-kX?M1Y>aeUB?vP9JL1_x+#4^+q=+A}^%nzF}ITyY1*b&_JIA#T53 ziEK5($!+49EUl0g=j1wt%yMd6MA5Mz((s=@tuhnU>T+_HwEDfzzIqYFc^G0IykB9Y zF@Hk5%sUJd>aTMn@M9T<-oP;YEWzfGw$8RNPG^|0M(TbY9?qx|U=8j`cCv36O zWpRtf8POV3*0d!>!aKCY*!gSAKOf3v7>gaoSVpk#4nRTQ98dTD091+p268XnfRDEy-3Eh*s#SPaRXbCec)h)ggtP{QZ$2gy*@DH00xi0v5pS9l zS;Ow0skOKDMF`hnglz=4P=^ZYxBXm6T`Z5KnC%9NInGjSBh`LSK7BUX;JG~*MmSGm zvkjngs&Laq? zb)31zHmmj;!CFzRnn-OFQWiCtHPlPEcBB97s@)a#7%a5rcNGfMwwJ7;AT(^U?V^R~ z@>fb+d@uAOof6q}u=IJiD0b`wHo@>Wfm8bSWjbqy=I zu9%=pc-mL!HAJT#CikH?K7SRMxC&N5@6H}pe%`%7~ zttnW7S7TU|J9^ITTsN#K*?4NmH8XTl;`sWrFJeCrvoFJ$4xZl2efIPYek}W;H?SXm zmVFui(ZdKDp&YK0XeTg!!iK6dttU$3u-}1yehXciv_v^EhONZXk(IWUI?%AFnJy8; zn3^b}K0_~q8+I6O9crw^$A0zr_MiLRV?{j{@T406PdN*?4zc=m?_jHyL26ByIfrU% zL|Trf*i%sc8J$X$(x`v0xuaf1tr7nNwWYAb)Gq&NYSW)fZQemG&QqJF06wX;p-C08 zQ7cwxr;}A}&@zO#U~{hzXm^(UP_Krz4nu20Rp?+}W4TZFHA)_fY}pOSR-8rFhARDj z898(mm+<0CVQs8n3!jomlI#Z03Sv%^fp|AJLI>C@Yc)5-xozMS{ja$J`wG1VYxcuf z`yjG9`Y!U@f3id_JQi&54PZmhgPp8Eel$43hZH5aRd`fkI-%mP4hPUSVoTHi-kY#3 zSUH7c?ANg;^NG8}{1f&4t2 zeFT|qs;P5UJHyOsO2QJc7u<()>!b`!Vu=^nNnF}ahoHD!Nm7Z$x^R9)UPLtxQ=NmT z5_#zEr?>sw-A^EWD%K#s1M57GwM!83$MsJ!4@={9{ZpC6Pt*|cj0VmkU1EaC2E@nh zPpuksyZkAG|wzCou(r@oF1U zk-v%=4s5~7QsS+;Xt7SsiCW9y&ThW9^)(oq9>y4hC=+??MUc1u+^Znqd@jbg0b}8_ z7-N`%NIzZ$i5eNqil#0ojkGlm4a)V~6jpRJk(byOtrXhP7%D=t3Y7>{YaY%uqgmL& zUwdE1vC~nGlZItF@v*_<+kbBK2(ia zC?%2Az9^LGnm$%mN4LrZo=y?2?0w3V+~$f^5j-_@SJ|eIoK{;F1cFvoL`BfnQW+&{ z`WPO2fB8jOkcYEChLR@fv7+SdKUtJ0KQ;?gZ^!~YJA_Ob0SEAL(@pY-u(WL+W5#Cf zG%FR%M^UE;ZH+R^CY_Y3!CQ1Xd1yO>T}*#chbqg)v6#SPckeFQQ`W6eAD7)E4@(R1 zR7F^8u3)iR@S2s#ujtFNBkXW?=-|jhKX+N)bH8rmC(h{>mqlh=fo23kcSqKhx=|iB{8CxLWpyUB;ywP6G~e6lb9 z>66|3xd`VS2;(fmHkjjA@4VHh=Cf6JMfr3F*z)zfY1NuhFl0S%I_DOhOkS%_mncjv zpxB-_tvKXs@9Q|O!yNli4?A{6RMcC~Iggwq8?1Sp-g364csjvwg%2s(% z8s$x}SFodlgGF`SP+7uTET_9!tD2_CZ8TNoY%QI{Wq0Q;O?uHLpgyjs>=iNq%Uq?p&6hQuqe0AtW5DKDMWldyjs2U+$6YTw3>7_337k}sE^lZ zGlzO6c@q{$7Vac4M_@`-AlnPR2t*tOQDube-t8f#pAatZ-Z9L7uTWASOJMpP1m;Ns zRfcH(50eZoS)XA`8B_Q%ChK75u$D|Sb|1}+C zsq$;nOQ3a%!_ex;!2k8m;Md`~YhUPc{SDlr$AVjO1Gr`9zX{K!Ky4U_ZR|Ql0h2W; zwrY)>K{?qKHPP0BQX{rlb3{kmpd#a%^p;h%q?{~UFpN}pHvaRiUBfi%VWw@QL-&X_ zF8o4zx%Yr}{u|KwT%d6S(BShx+agjJ&7%*JOy{X-kY<}gm{li`8BWz&QL)+N)?g%C zG&7e>5e$x&$W2q`f`C-~+VvW2g$`ruqa+>J12;uJx!t!faw+()bu8?$>>}=9x6ZQb zLnDcJ(iSxVjKOA}Hc^fAiq@huWg{>=R65o|Giqu@EV1xaCfmeJo<8wfn3t2t_rBfZ zXw_|jpT7MmRu;LHAW~NCDFIFNX*hx7SKLLpkcV?22EuH=EJ^(;OJ4T9TuAy$E+o-Y z2a-v2@j!Ba)3XD~$#}e&1Z4x5qr$^w5~!$2v$OJ+9dM^=msrY*G%l>zL@8>jS)SP% zalm*LFeE$Mb}Gyzb&Cw!R$~<>nfq1=cce(IS_tm(E9#m=P&=FmHK?M1-9+%OM0nZv z62Xo1Z;4QkO$4SJ5`pDxBIJmONm0o9Ub||AV6tZ+s;!lfc+JdkqRQ69GZb4a6&AS} z%9c|ta@E$HqkR3>LBOwFuVL5tFuVA_Z|F1D_+)qAzStF~zp~5zTz2ygc5#+nj4UPM ziE8osKDB1NDr!%lNsUCwMz18Zv{sqCnjoHK9jqAaV9}{+TU)EJqS!R!!p_F?7{_oA z0MnVdB~uzJ`!pt}%>_kLSl9Ef1b>BIlo9n0-;d`=-|e;FBOP|VD;YTBugM_t*klm9 zAsOWK7b9tKZs4-m26Ji%bc2-2q)lOk7r3b!zXR8&-$`ZTTZW0Ozqa{i3Se%t_z*+S?&dv_tfAw072NkQv)HK+2676DY zuU-qXwX&+nSFc63VD@r)^;#-1H44vKy%tXY-uN1TLkqvtnNRjdOdm_H`5pA;S$Zd)^wA$N9q!H%t3Q%8QDrVOtPV+LcI>2c;mfev zqAgj#|8+>XodGeo)gckpot?WPnQQu{t}aPy39!cMk|_I32vX%&qeS7~vDYL-#=m@y zJ-CPuHPGMoQw{Var^hCR%MD54b~Y(=6d0)g)j&5JA{ycoLNluQ0pBz$oeWk*WZNkC zze71!J|V!lLWEL#$kyKGFRyEo%86l@VwWj5hfzqZ-Y zE&@0Y1Dr!67&uhIzwIZB_~gejoO%Pp>1P?vLG`%;Fp8Ht)b(o_~iKPlcK3h8ZQ3o`=~vfO_{p zCRiE5JT)ek`MGmKs$gnVrSctn4S*_#0pyY9vHud3RemD4Z(k6y`QIM$nBut*)(sFc zo&V~&@*2NzH-TM;sA%}qoQ1a&P|df8zMvr8;xuZ#`2kk@`SWYFFQL!fmJIx=1;W-> z){DYzX{luGV@?vC(dx_?IvJyX&#XxMe=~5XY>KMV|c*_!22tcj zy=DQmQ6J3NKJrSHiG68UeZ^h`pv7STbr=hi92= zJ2n7`SSzPil4-4pDUcINq=vSpQB~^|Q%%`|i(fqgsj&EQ8{|$dQ%gYV*QR|Kw-hQb zo-1TKj2)p?nI zygSXUg|o=3)9hI@C(>P3MuAAaW3S1HI6OU^|BmSg|94pKQ~x)pJvJRQ?ns9^|J8O5 z`*`)QwN$0>si^}kNvO$|4H*^Mnq^UI>u18Tg256sRj`{+Ei2bB66J2+8(#!(9)>rD zN$9cTe3?%k=Ejeu*YpN@&Ck*sgPndI<~g)jRbPj>bDxw2q5lqZ;|>i}QN7M`UBTk1 zhIN>eN;?gb{u&#m=l8~an75iFABTBso)Y#t%tK=40}&M4idCsA_VU9#?QlNia1THD zE6KP0(GY0928W8N5ox{#hhF*fXR09L*Wl3HTK(AKOSlN#I*cv`)Oden7_Oh>?%Nl+ zQ~~^j+>pnT8+HS^5ogK8|9<&L#T#A>XEpJ4TZpFp1dVbw-)4U%ifoO=-B(3yY_>%w zv0{p@PT7)b)f$jn2IPC=YY2uPB{+Bx9lkJXxlcU{1|AD<@(u8&o`g4O07)e88DVq9 ztmHMha>e}EdU>YR8iSkfME=>)xUk;syK|QjHm)|=uXPF{luM=$)%4awfqiJ^Zb|BS>$!%vDikcC9CPg zl1nF+RiyuqxwFlY9LIs^Rq6x+zsa~m-Tyob$;xtNIT!5_VAwOiCJ>Z*v5#t+l$}0c zQ-NxCg@_flNGEWQ)yA4UFGYKK4k=BKWzJb)UF|#<22FQLd;J-+fDc4lO5=> zKtpZ-8nzB}1i!zk64oeH`1NoXS>5M^eQ>XyM67|T1GyX;TtB1LcGebH8uruf3>!2W*ltu)mrVmdaIzq>uP=q zcb}^5FV+sh-RI~rJuu)$Q7R7~Ym|N1^!uod3VUv`ziAuZOu1@KH;W+M6qPbx1*X!d zKY`a|htlcn7(H^K(@&7ozw`_#^w@c#P~4Fmwf-a6gaTf52Q~neG}4AvN|s%7@=Bc( z8Hjf+w2<=i9N2@SQAVZ@QNSEsQ*|>NT0#uRjkjd*1{NY6&Wf3LyEa;#u*i z=-|9Kxn{+ahOh78j0$~KJn3D0+v6Zy!>-wBcB?7e&y5nNd2Ns=T#v<8=mu;>RD(T)(d&6!~DyJR@iTu}`+G|OOr z{bWeSmNh{}nnM+~Ejr9nUUPV5J^s0`f#3Nw{AiU~XTOTJ`s-V$PAs`6PFr4>`TImL2p9hZ`k)P>|O97)%zDik{f%dy}ID!GmS#UHjUNd7<&=k zbr$cWmaK(3(*@t%Yh7?rc`V*)H{h+Yh<8#8Dk9mt;GIDUqRC*Egms@Hjcc~Sy?n&7 zcYZrCciIzMUfyPUAb zX-YQB2{v?}a#+5qi4iDDCU3RGVYyG*HIPD2Lu$NPE(vs%$elWrPSTNaw%1+9*Z#O281E22xp73w;xLH8o9`< zN4N;yaWj&v?EqE?f>d&pz+=8P@=S>SwhYbytvpa%{@(&w-AGK?k7Cy~%HHnIo z1;unPl@svi0-bjNjdh@r`u_V}S6$ny`KOOjGdL?^Q^BOx zwUEl$oI{%WapQ~Nt^WWoI8S}paeCLj>!>78WmoBjDV|cSvOE4?*oV|z&`=8>8o^k< z63sFaJhd?U6L<}H>Sw_#YJ@ubMaOAh{-UE29*ZCI4fwIH;)fPni(vn#V{!9@u?)?^ zD!PwZ8S|@-Qic)hR`V98$atITxZ+1`G$PQ-6^Q-Yj(u;AFtSYxvKsVrii}_lAsj=m z;osym|J;Zv5T|a)?e?`ha?0^s{_6(*g%HA?bcYtuMqL#`A_6fw)5)Y!<$066EiJ7g6nTnrfLB&dyw-*xhT_C{*dOWUJgj zw%RJ$(vpNo_iGeg+yLyiD7q#f@*L42F6awtI9?BL z<)z2iYoHE24Ykg9J5JRLyM3`<(0ne{xPfZpRjReI3X$!1>bq8~WIQ1Bl>91dYQp*Y zHdod>#e;H0x~K3KD-ib>DxA`~MqUwf7!q8EZ7MMg_*&e7 zZ>{3%O*=>YtKz5us3B&_fevdnrh@5gm8J5B*zcn@PU@k)6&}$%BV1gKN2oZ|2(3dAIrGw4UD_5G9C?#_p3pbEvS?>0KrDu zeI&5hMjlcnIkaLQuHbn@M<>>tC#lTRHKZtQnj{RzeYaeQmQg?sXO3*}=8>j4jB2_C zdstA{w1t};BCpAZveWsHO$|YErViiTi*>lyW78q%hI9y7O^0l%2HD7eJRW{SS zR@Q_+m+`!VajY_4O~l@R9IK)UqH@;TsTp5|2B-*TS)*PbV!w~t#{I7Dl?|GOc+{+H zgvY@RaR@f8|8tDJi19kjI2xSf>;veuFF$~$JQnq|8&Jl%d_#p@B2WkWb3c^2nz0S4BlWgD*Ph&t|k3Bn*hi!gc$hn{QkHCC)5QmD#X`K1kDp>eLTU?UCGw5^3#Fc%Ad2>m{47bOTzCy2CiapE&?aP983m$($q9e%>^$d6pj4{4f2^p+yh zAQ?Pcg+S;RtWi|VT81dCx-Zpjw$sDRc#C$*hzYd>4X1{B>Tr5l@?qzT2$ncau(kjx z@R4AazX(2J^WL;syqp7a3G-RC5TU%{zjs&7Ca!DQe9} z?X1#-3*5D66ztqJN@V%)X(m;VmZoW*IaI1t^cC45VMAjw=EKIl*66`y3}D;(wIHcO zY8cIws%wTMoqrrb`7!pIlrTD-651j(J{K0C{L?1c{l}arSo|X+*dCh^9Cu_yt!9LE zzBe$f6|kj*h(z_$z?+9Vy5>qYs7w~Ku7okvH}qXCdaN~qi|3{?F}kL#ER$6O+i~A5 zBeYfFhic4>C@0NLa%b;0Bn7(W%{BcHc~w5->3pzO|91vdhius0$85kqZ+V;WWAj1u zhI|lT&j+m<5E*C3&l^W7`1Sg^R@ai%)CPZw&>m;yU<}Dk16ww*i{_?|?)Pw71!N<& z#Om*^BNeQ9=#Y|i`-3=B`j(ZMNzqN^;^JEouWtM&@R~GmJDmpJQa&ev;7_f-n~%*H za*}`LKs`1Gly1lYmDL>ZHm_rq%SN7n)iE?zRr}It!bFoi2TI=KHi*4>7O?Tp;oEBJ zL76k5inXt%;z2R6jdZ~=_8OFfPoo^oE6x`E)4pExt3Ma#yaQ*f;v9{=-i!WdAkztJ zB&kdfhb6rV}p%>*toz91BnSsw0f5~C|KmDI8{wlJ6B!tOh6T<9@ zkyIfYgifWzgF#<`B3ZgcvnWdrH9SJciWyNlR!j}HVKi6~$pFcyLuk}0h^q#!>Z;LwVM0Fof#!+)5c+-8F5(iWx#ZCz{aisy z${#Lw`;klGe;ur$kEJsF4k~kzN~0FgxBA(*iAbpqvKY$pWzsk-X!bgkEqf@6qhi*| zh}w`=F%ld6au}j(nJzVqQc`u;_ZoT;r|Fd@B`2$b>0YY|k{*k0$_?nIt)eSUoPT-< znDD_OHqczCzRVhDgxUnnIFFIv2dO{M4KZ{mG%`b55a2e}r%dynEo2-So5p4G7Iz8R zLZqk3)@BiB>xF4wuNN|(i#Kk-yLc6EZKQY&QPg7tFeQ>+@9Ge^11?s9*bdxum+o_C z4%uP_G^2@`B8OVVQHrSf6t@1u4N)=a0dw&sC4J(8UM#gSy$W2vsVgX&tP z+8SJb&ROw|OO>D+k_lCQnKu>ZoZSftt{$rCs152Ilg96^hDIijXd+MV>S3D?+C>QG zX@tFnl98P2vF-lF9vk?v5JPW(7`_T|H1hWz+aR{cWTO}wI*2V#5}7?Vi$S)#L*l2$ zmOVNeReB9kl~7$`Ek(^1TS|V|`1`0`gSFUctfPe{1LscW-M@4)qn--2(+z_`Cs~JD zjo(^qT>}g2?64^f1nt$I&}J~=u0@omygF=<8JtrKcjlouTUDp;!4dz1c*$ zfRp9&ZaoC2OQRmiY{fjPA1LEyOvNU3>(4Z5P1=PbsE2F z0`^bvsU1$vXxJ+>Rz<5*>{8pS*zW0DtMh}jWPitHv31oK-qC?1-MI_2nR#uUA{bqq?c6!18KKNOS-z^VI-OE5p}!cd|*c&9;Q7boFhMgK!bL_z&n783U(o zbnf=GJDsljSa#L#U^myMDgFfZv$#u9yq7ZrQ5Kas zqXs+owTzYKAS8-a-UBZ}IpQ?R+yq{zQ`6|(zA}w=qsM}5as$X_s~~d|P5?jC=q{BJ zIS_Nl^^iO1xwXWu{4Uq93@&1&`7-q^AA{Qj3|0PaV3ueeuw>d@ifFfmP>q zR*QT;bO%@n$=3mEkS~{}&Ji&+5uJhWhc36M_p9_>GY+*JPOWtB%bBR8&vVz~7R-3V;_Pt;&b5lOG)^Ysz5Uy@G-LU>VM*LIDTdjr|BIm+s3w*o znYBe1Q9_3rZezVFSj_$}X&v{yh~GTTuQrZ2br?_Y;z=C*Sad^gKsS69U2PnM_X=2A zIA`eVFm~&{q(H^gBs^x|;D_8-Y^oS0xJEj(a868c5jr=$nA-Xe)IyCI~}Ond2{z>9L>{A>?RA$;}-pZ3+)K!P4S+Y9nLk|EcVA)JWh*J~h- z7VxyLNrQ&xS8T)B!uA>nqA+|M99yge(zj^OQj*~maU1BTTl!qlYHEgr52i)Za?2$L z`@C;~s2rpR2g#;|sn_w(eN6)B>4{)aD?xlt0P#ZxO#kPaToUz<3}AX}2C&?a0lYdC z3~KI5#FMVhaBwRkH{NJBi|AZSk~X=P{BT8*{tf8sQGc4$Ixq1!t``Xa7zw7`**^$ua@<}`P_`a z4H+T4ni1U6orr&x_92ZU!gQAQf^Ksp=}%>EJT&2$3=+ZR>$|JLw#ZTcx{y?XA+#dMuwtH}Gk)%BMARyuVc%+KQ4m2aixK>6%c| zyck4=)ULt9U)3uDJ=mIMQVmgseJDWUb(!DIKWzJb)UJU#`83qtm`cySV6yvHI(cFK zT%_|3q_K*$H)jC3->V;}lF8J}h_(BQDfD%(-m*G_P}Z>5>;5{(^d{s89V$@h>S3Qx z+C>c4e_$9M=bp8udG$%l<*@*}-2kx1I=}z{zlSIh&8UPoFpJn^0PG}&`KYDrT}wxb z{|r%L!?G+n>Sv6iT|MmcLAwUv^3woE1LwK2Vwx9g3ddvl4ZeZj&{cl3sVfk_Yl>(| zMj<~n1$T|0VHm8DlS$Xg$x2^EMfTuq8fEiTRtDA3Dy(=`6=@&#{XS?H@eDc5b2ez% z+411+Un(jhp38LIz;x0&(_sqauNy{DO@ssTx*X@)eaS}i!log!OE8W6xnT5)^@8hA z!*v6G*w*zJoWz0}77oPGzuxe72E)%!@VYpJZWuPPOa zucW39qnMx4Oh@-Qgmep)LT$kmVTPd=EO}^#gbsq8^TW2^N9_`(h2kvJNi9N{&~R{+QU+gr{Ms zK&p53u+InW8is{VGb~LllJr!uvfEeYb+E@0jJSi~S|^x`0qpa-E?LriDilr4u7Q=a z=De=r5P1=Pc^W@$4oc)H{C4|Vt(?S9B{1oRpHV+BI0KoyOW)R`A(R$nO5N##~Z8 zmTRUPxMo@9+M9?2wKwKE!(Qc9voR-~H<%h;Z8=rzt`sH0&#Z6cgf~$a+f-#u9-3*+ z=wwd*uDyrF} zer65@Y^)lRuyN^G5rf|_fxkW$5A9k})*L^3RrcU)VjjYqDwWzbXAg>@xme)1@zzz# zMi3(1Uxyl`o2cie1+$N6&7YreSI9B+nv4iJoe|k0r9M6prs|<`e%X%+k>yJKkCf1O zZc5Y*DPgpp5|M%l7h{8(*_dVlEAaZt>IkyOrm2b?LN7uPrxC0MEB<^aE6L$d-u=g} z1Pb^EgQkyV(EJVtbCtnrk^DLxBgZ*djfh2Rz!fOvuS6qv;|`%Tc2spui)jmWry9X% zVPfth7*rZv6QPpL$sq7?QHdVS>6FvwRdS5ICMojt1hA+v zg`J%LP50XLFP$En5H2?)gfCD3&`OC&eog<18(U!h5+s?KbOK#ObzY|@LVOi94RPn6 z@!yE12IWEx)rmv9#xQ+Nxg(GJ_IwyCCVR)*k(l!4?FBU&w6R$ zx*zmgD3{yopojE)iU7|oD#HH6U6c-aIvuo`Xr6t)W%n<&XY#qz$-HAanZB9~+Day( z*ia^8%X#Uph^=c}nVB1paF4F3s(8%a43f9#j7r0%D)&UNMwX;AIfVRu(=7)&=f3x3 zI^3S_p_>+BJXSACs#jA+a|T}8kx{bKNnp)gPhSz4_T@?^pF7K}J7$?Bt65<4VBRa8 zuBB%D6gnwi^*`p$H8*x#2f|y)3Ix8%+QZrZdM@;EoW!|^$ADq~8`O|eAK)uBP0Af_ zCe9+O(9y103y$!u(5aQnqz()flw?z5&s>F0y8W{6zoT{!)Xb-$jz*qAati7_{Mwse zS^i$A^9iVN73ydd_3bw{y5{Vlb^4O9j5v~@31-0so%AyCm~q4`15IxbOIcG+OUtev z_W4D-3F7(>5QjrZPyL+f9)9iTOcU~2h+z*vjJOVQSP-ou+!w?woH;dD@JD6i5ObN5 zRM;W4GdLHdB9i@AO}i$lw0b(4s@hjnCSOCLBr+Ux@1a`!G}YN$Nf4)w<~{sky#c(H z>Y@jRqD6X@>TFa@#CyHbwIn#{Dmak#QPqrzXe&4v(&HTR^-iG7Y$`Fbp@K=KWTCbS z4yXKO<9|o(9;#JNQ(Y|tb^1|q#b0}rEQ7wsm7ahhQ?6+2sRtnkbAMzOvYV)iE> z&g&2>C4jx&7#J24Z+G@cxW|>KV@i^NL+YwG&?MvgA7ZI$1!Y_1hDh`} zq*K^(@P^XJu0_^%v077X7y=EJWja(URNo^*JYq_y;KRPd51`J7p4+)G_xSN4TDL1UI7;vU4vl?D5xLUMR`;S^^JPLiwsCxRoz7tyReKglYkk ze?eI%&Lu-~kr~WAPMsuXY9VSSmsRAd%85varf|eaP7$+THvV_i?!h|fG}h7_ezuLh z!Y{Y6OYOB(Ydk@9U8P#qO{o2`vTGU1t1}|#l{K_kC26h4N)qjH;Za#LS1@zg$}u%C zXALb_Y@64s{<7`AqjnS1d75ecFRhY2{8|^gj9<&N=>trgUu9aG3jpk0?5+U}#_D48 zAR3&(tA`zst|?^^uO7DaSIvi7ndYm9UD9zq?DCs-55j3@5msp?tpBGk;=w-{-s6we zM&U1j>$LzoJpi!FMSxWrbYT=t2EeM#n36h#+0?_d$5A@Q!CI}1fe+;d)gl{ltcd8@ z(nR26y)w7H9I-2ON?wlRw!Ql9Y7!CgSWu$+a@?v^EN3JMMz(sT`us2yuw(8$ekeZe z2W_E|zq%pgyBYT2qZP9L?60`L*A4lE8*tSP+8i|qf@9K`mV_J{5feVtn}?9eAX3SM zeAxyfp1P?lM_|!4HhhIF11Fyw3`2k#0uj1-Wpa8y}#oEj$RM%PDtCDPDRahr6>o1A_ z4%#}7eKo|tp2*Rn$Ym_pwP}b94xJK{@Gw8o+FkVBpj_yN6#q zXG>oTVfhmf=2Zx@X~}kyrR0PVE}=QJis0;;>naPPiBokcg~fbGs2l)SBT+6Jxh7;b z)+O#> zLu-HrNs$g38-jLshkqa;w3dR|kF-L2?Lojc@v@qb`Q2;z(Q8#QIwALqJIre(I# z>78jKnNU~DKvdV1!*pxfZPp0_@v3qy%*FDi)jQ?UR}wKw+gYwZotYiEm~c)|>I)ePK$18Vm}*DBc%6E2i= z-XI=jtGfa9k!mTbpWO}n_;+0JH|-``^E9o}$VJZ8+$;E6#SP}ylFIr3sq9xtm1gcl zGAn`bNot4|&%#B`(z*s>$gEpJsd_4jQu@$}C9Ee)vkVU#YNmE2$%J$D^-B1-?L51s zN!ARDADEr?fi`A8IcizKSA9^g^?}d>J`lO;18oLu zEsTP$6FWp>9?uMx9#)w-?{j1tM`sUQE;=%u)wCbZ+Bi`(q0dzHt{!&zMY{)I=hOIF z<6{54=qTh5fcNkt!r=H5Ve$7OoKGN(s|efv!d14Aag=L=RB_CTn=1!z#LO}oE|m0C zCb6=a>JlT_T4v^iz{vhly8b`#Zgnrd$hs*^3jJ^bRqtnyl_)gGW) z<2u!a_|gwFZx&fTqzWtV5{Ytd?Ldw$iCD$n4IG&+p{vVbT$)2;rK;5pl(ZjP-UDv< ze*m{k>KAMy53dod;3KqIAmYEE#cQE8egIn2tI&EYwQuvnK_oPD(icRQ9~RAoqh_2V zIFGsa0GM(bz-$Wg-*3_d7(W@@k?q15S~3-{S&Vt=%&u@{jBF<< z?fW=%79-UnRK06~BoZ~k|XZt@dO`>9$c<7_3e z!Y@}MuCKL|`xAD`t9C-;44}TYN~)=wF|Srhns+TIJZtqzn9;S=NXelUt7Xqd9cmV3;>rhA4my1x& z&8tXfNy224K;!gW)rWD^&%}Q}gj;xYqSHKbbAtX_$EW_JaRnb)Br(JvET+Ad#f&Fd ztg9??bF%GMZGvhZk^pa`a4A>&aB1Z3%A4lL)Lu4pRV%ks5^9rg=5StoyT@3Ng*7nZ zOptZVy@}{NO|&$Q^mCQ;3cgrJ7r&P1(g%nxzfN?e5Xs)u>#&(sEwCz*2fiq#1-Y|N zCZWz-SI=zaBCBMA%9+tMCl;S2hyjtueeZ#n?KHgFs#Je}8$gx$JHLDUkzferU;Nf< z`2{_|FXSq}+7zGH?K#JZY>m}X>m_lE@UCT+xC{o_Nzrp%4G}|A0!z=<#(*$ST8X&2 zX5o_SNzO#|u=6_5wR!1;KXZPVU=7So5^(E5h^qC@Z=?&pC*I@+;nQyLMr@8VmtObi zi`QNOf3F+z2{+)X8?2?qmus)?4Jom(heRxxw@a_)@E#=vF&!ERvU1B=*3?{5t4mZ- zgdv5K;>VuT1l|O)U)__r8f%5x*h9;Rd#V&5IhRvsJLcYGg*t78XsoKl=kC8AIQ}bjwZaf_k&7{7+z3$$OD||N5O#(fPTo~O>=vG4>Q|~c^`e{RCQ=uY0 z^WCsVU;1t+BD~fS%nvw%^{OMXk;&KZhH6rw9NTw;>9hkIZ{H4q?1>H+Ork+Bo!RV} z>=Vm0l^&^3i>-^u>_4{cW|#}skFSSpW@1&JUk}4xjwH3YoLbc}_Z~NxoOVMsN><`i zcLMhCOSb}wINocAdcY1sSM5-ZV(*?fCWJ0j+h~VGy~l-7*wh?mbgU8T{twuIC1?Q@HvM9J~Vd`QNQ$*$WZAT^3CE*0H zPyGkskp-QaaQfK7gms(xhxsx09xH^Nwt_Uas%g+Cf+C5k& zoyJ-ldj)W6?!Sj$n)?@-y%uYWC$O&TSc43}m(hP{%MzhnqkljKm?>u4u9gnk{t8^$st!s zwnnILKk(DFNVsmZ|1j?wXW(=Aui7Oe7s2Q7f957fL{3gQ1Vb~9tTp@h!g1ew;02$C z*IQDz>#3u755IU6hrbu#d;(xx1=w4X66t;#ca2Mue8P(HG#5=wIBRM}?1$WSB6|x? zAodfvYf8Z~BiRz(S5&Psov3TM9&>NPx=v#q%}vgYEm!cBnPtjraZY;x=Zvd3XCuyU zKUC7Spx|x5&K@>!CMU@?vrN{mktag7p`~-r9+*1u8d@gfBgX$O#MIowk2_B@L@U*O zVmUkml-nFxiYI!IVVVPtDNeldKkb5QDV%if7clqmi_d?F*Sevem{*owcLUOZ znnZJS0MSUy*1f6fCvj3^cd^-_MycW>YWDeTq>@zjn8YQTP*HxBt#}$=iu9l&R_BgUim#t?Qwz5N3YkN9E`+sC?EkjBi z_q_*TqtgIebK_I=uGov{vb`2vjwjHqtLR!2Ga}v5?OF+(ZJ`^%BMu7pg|3rz%{3&j zp_{(4T{t&(CAtK1V%^x4+Bd$L-8{{%HwJ{xy?eZeUu$=>@M{SceSl!`s|0&vIIs^9 z2ZNC!vJDz5wa2Aox-3mJ54oe=JyaDU+gjFh#e~pWku|_QuAJOwoH-Sax%Xi0_8+h= zRs&8w$B>WON^2H?y5 zCeg?>AamRTHu)%OA{_iVz~Sh*C@YCIzyayXrq5Ryh(vts0`c^@Vup@vHg($uIJFFg zjI33KYpM>d5TCE7l^#F!J@}`e#lNTtbDet=e~-R4#$m&2>34pBe%Gt?qd^_WFJqkI zCK{4FNf)2Ig{oAnZ-mtBj`E8?w^oiYlhZ+sb6DORkOjh*e$|UKv1gAVeaN2c( zkq*??%EX$K6tGn$F^ufn9m z5=6WgCNo=!aw|;Ihj}#BS6#wt$JARKk))>`VU0AH_gVrESfco< zCA5Kgy9+LmNwq`VH@JWSTv{=$t0wHFBUe=Y+g}JgE_l>#qLt}C(CR8ec4`c?hhH26 zmA#hMiYI8TtF&5kVItedKm#s_IWM>f{88S>q^hP?qorVk_H~fYtEUvc8Lx zmC0N&-DPMcK9d0p@5#}OC2Vo66_^@aR|O8OzoXVml^<%+ARP@sw)!s#fp_aD z%p!(XB4x+in^3RQsH3@(AWl6m?%~&-7lq}usIxtQI>%Mi(G>apc@fm8!eZ-!M4-os z8-v&LVup6jSfu##fiXMmhZTR(?!ndkEUuuY8Yf4QEBf*%QW&qLRrmo~MX%91$P5PJ zOT!P`w1B9s;U_wdM|1T_riHllT(83Z%iydto5NCSvhK(pXqve;iBR?9#{C5EYVenC z-$)gXvaQ=!-q{avqqUrp=}f%2*XMHD4BS*$kf+L&J^W&sBJo}~)B|o%y6OgQBwwB} zyAWIo8Cr$2k09j;UNuU(bxlxJ%L-LnZpPLSVPbSGg_UGIV{+J!O>aUMr_q&02_`u; zKHtNyjn75(wdkrpfo@(!R~nV>v-2*PJI5qTgIT-AnS#$-vdSI5;`Ca@u#+u#6RL%w zMyiiUSg3!_&WnF+dk?%3{{h}836fJ?>plEh*IJBT3$Muo@S0tRH$uMsR?lEn*?8+v zN5%)VaS;iYW**1fUPug8Yj0V1K}-Q#Eo)Kq<g(F)ea{4vo_ho zkH@=2k^SKZx7Yf?;|V`p9ZD*Q|kZT9rkNIOPx@ zT2k~}ZV@&9suXhrLwIb!M9Cvggj2t7I<276h>J*OSk(L|A`O^d`&FRbXJ6W9gyhZBNd>x9q;oDhE13EC`~h$ql)3utC$8?0u9 z+lP8Hv+@`km1q5u`|qfA&WBpQslznZKn9|_vj?i>@Ly*z_GiJ7{$2v}2?BAIKyR`jQpw4mBcbD5V-vG3aTQhP zkDD1Mx<(`p9jT!l+u@01N0{{NXwHPRsd`a#EtOen zT7tyi3eO;!soU;m65L z5XoPrz-vu`C+3vU>!v7|ABA%?Wl@)*DU9qxvzc@9rjZ;|?_p5nG=tT|GJd~=n#w;I z+{2FyBJ$4>3*x;DJ}@0rqN@yME1kz9p>Yld(Xuj8vsK_Q>2b_pmD!1~f|gR`iwp3H0+S`j}tf==HEs6QUd%w-m(SJ58&679$Kt2h<}Yb7%o8pV=&4 zJPQwsG#@CNb75$vnet`JZh*O%0#hZ!bbv|ms(^UBNT$`?Tzu6q65+?(dn}-*=afc` zD)sl;JbxA;d-Tx-5Jvvt0;boxfaL)f@YOM;Q6o`cR@am~aSmhSSd}nXJ8w}ISdW$@ zoFkV>lSi&`KmU&l{-)gntLcA$)!}gx))jpn)_gClcmP)6>#({C5r2i18#{%`g0*6R z$#8eyV6~w+S3UkahsI z5mg~R0gSFm31XER4scI2Al)Z`WN8y$2(!jeORZvTQSJ-X6leLd?LF*5R9t?TVoO;{#ucEQx1~P zibT-Q%hF8SDiYD`xe?}UTSbyOvqdaqD@n|)N1C&kuaX3H*mzVVb4efSUXfUHQ7+%U z5NNn33>nxe67pm2O`fRJp75q-a&j`cqOZ**)#bH@aC^WI9#;+FjVw2cTqe;W44U+Y zgR^U#3Y~r+Rg11^CZ`T9Q;1h~s`&JSP>D}1x2e29fy2i4&|7|*-e{T<#HX&I?%~(2 zp{nDx00%z+aOhQlqlNP)NAB|oEfvXu8;L_cESsdR5sD^x^vp`N?UeSSUQu_IDG`%Z z*5t7Vd)8b~QK`p$`++{xh#`^tW(WSf6swHvLE^~5SPmi{KN9aT1LU+BvITSfZU$)n zG{YW#9H_Gcf0!ZSy=Hh~n3;6d4F6;9TyF!{bs*eIDiHW4r-$@k&xIb2lQjVt*m;!gYt0{H%MlH>lCM4vca22T zY?bXEevG{(DL|*kmQD>6d8&=Lyce5@_1=+XJu$MZt0PON#u49|h|Wz+RMsCMbBKSq zG$jYcOb`fj_pzzVj4d{*8O>eR;jCh4-@;`3T0|trkW|6Yl^+@0gQh^^X)Q@Tds zoH-d!3;*>q-vd4CY3QYCaGmYnEc@mDP33#Z#{=YpuaYl~>R129wJ8TYC+LC!U=fPf z?*TXT$S_jLp#@xQ#tNxmf*PvQjiw%%3v)rtZ4cd>v7{2o{%c@FLxQpW8j$Gu6)Il7 z{Tkpr#@>?=LZ>rAn}jlOswcnOFZSf|-We<6iHxYL8KF%n@cqSzu7!XXt>$S1^w2C> zJ$bF@8VRM!){}Rh!9)Gqi7b6PCjc+12PZMlSLPU9$3|_$FWoCiZ!En=X&Y8|5`WQs9uXQ(*r28Tt^xHt(ETHTp2Qy2sY~yIU{*> z(#^eV5+KypNf%wg$+7qrO0S{8wN`f$#Qt;Bd(buh59oqK&%TPY>{nmKG4}V8n@^C7 ztK@ns1c3cjoUW;*O?nlQ`Qg#5*aA!AtYhd+4AyA|vzh4sVNglU1fw{Fh4!!E19t z`GH(ey_yTvlH}Kc94!&#tGH#)`Uq-{D#p+#SoDwB&x1BtpDH%BcT<8IMb(<>yGsnJ zjZ4&q7GhS1$XhrMIn6m5_)HUfSuggmP2;_M*8_YTUF93i7Gxlu;0eeiXUn;=ylWwn z+e?=LNY|JoIc98l#QaSW%)Z@*Vk_>NS_)xAvt`DwZEvC$XQ>Tt6p6C~$z{JfkTlcR z!fXBnym=Acpq7qn$DL;-bUY^dx!lPNtYYijIPV;4iN+bv97 z$IzRSB2OnpG%r5ed0Fm@36bxeM&=XK$n@(8AtgY5O>w$ZQAWOvabggy?#MO8@ftvT zrG$JTd{6Rx#3GAx+szUg)i2&ck|19n%`=g#AgeV z-G7na^7rzaPwpoPt`q%j_huE8v zLgjQ)aEr`9oJ)$`e=RAT;=M^x4JI7ZVV}RWn<&O{l;oJL_v9W`6?Wyb7^4hW~uC zIHkF{R<4WMDg#(ham9ovTx4DVe1d}v8yOyP;v32`6 zS2Rezx_v6rH4X!B-99!yYKxuUtdbbeBAja zg!44Q(O4`0Ps^F>PzCJ%V-=A2XKiczT82#@VA%XB!_ioSNG3^zNnub1Ff>XEbYDcV z_|$?bkFm4y5RLL{wwx>>9Eh%jKN*RYs z*DOU>G@G*?cfN<<;?o3IW8u?}XUl*6@yz|b4CfOJ<0`||+*9|c4#G|3)_)+k1bn)rSpLf;MaXN(4SRsxi0kB* zFo3ae{2H(6KT8_>Es8HPQ8e9QDe;?e|n~C;T~A`D3rMq=b>fd7b3Q`1zn%(#(xTwg*LI*9sXt0Y@-b*OW?Xe;1c0%_USd5hpH=t~o?wdl%Oz zk2~K(Fvn?vwNc<~6MEUNH=#kVMHun`!mz6dYooHg1KkC)K-kuSX6_nW80+dlXZc{7 zRZ*)0?NpQg1ZPYx&5MTfp}nyYzDe5;JP$5y8kGgctdqpb;htQuDgZe3Hi*sknrI*vQv zL$K0mg1v!Qaqh23@Ahk7LkP0BA{-P?AY4}w_7v=l*Co*32OKik>M2n8)^cc46%rmk`TbQAqq4 zds9;6>79fW<@ql`+4oNyk$^e*3cxR)_tDghV7#W zT!a5e_tn4-@{iAMB!{mB-Gk88!#00t_dslR8scohA*81+8143JSB!$|wG0bAz_7@5 zhRuVB_bWyNt}=^USB%{AqpEQ^L?>{Xm511yAap(rVYNcq*{{p&{);E6_T!GSzINrIH`Ey@_9( z=2u#(EAmu%u-h+|2d=Nh*Zm26^D4gDxQfX33ZdiXArzB0CqO!HWtzGQ1d~B!WENJa zxn>U@3(7WAHdGERLKo@c0smv;&!ct^)fK0y)|Q!a_JaVs|Kh0}^jfS#9>6;6I@VV9 zELU>Z7#5Q2TxP^!<9i5(o+Vhh zK?{F3A5{1kz`OkjusDa4#FS0G zvUdor88XBs!BNUxOEt(mR|P}^Yb3kJh%HWDXL6b9q%|}r!ETfslh!ciEe($F4~@pgk~1CDg7moWJkh;bt!!|cndAyajL;Hx=_WBxi}?eZ zKz{|^lnHe@6QVJNovTll`C4_7^x8RG(gSn2q_~<0(U_Bn_v&Oo8sOwrov3B^1-ZKp z4eI8{*bQcc4s|b2yrpKMR(Yb)gOjr)S9OwU$IyF-R{sw~2i5M3Qa9s#y%1jEkC|#|8h=?t#_h zG_2W};iq9;{)@13ycgDb09K)^ux6tmBK`?$WSU}wb)LXU4#x(oj!?5m{toML!Gm@m ztoRSGmh=Dn0=FGu-TlYPneY!-MPCc6_!F?^RamQu$MzdqGA69X#BM`F1iWiWPOgJY za*3gpB)JdGDBwN1niR}1RE=WkniD*y2F|kM&a>F4Mnyz2ow1UK#1J_((HtvsY9L26 zB;*i!Q%ZQ8PKjzk6o03LxEvlOcmMHPun_7WNul)Gq)>SvDb%hfg{>Y%nM|h5VL8zX zv62r(VD7=xP4Y0$iwbNAm8!bR=uOmp(i|pYcWdj2fkVJv8y+k0W$S zMJm~CmXaQ`8{u5hnY4oY^sx}^}wYprw4B z$Kq`9VcNpDYPNX8qOALznAfl*7-=)wEFIIC9G-obA|~>&q9vqDQBJGIkPwR=%*}&Y zR@;MA)%ecl%ZT>$Us`J-~m+RsOZ9{u&mVH8T`s z@lTy#Zx&f%i~q9fJ{3vis->x7MoYTd#(##7>|vx}<3F`)PU*l(0JZATW7g{__d`ag~2>9tL19at5ubQR`UOkPpk| zR9Ut)>5Bgd{XA%+(iv*T_cA9MG{fc=3ZBWtyj^M|-)`}@}Juy~bI5T0~wRE>tMwzkH+L$TQP6o4?}|%aw9mh{)qiNXoK{jviy3! zMbp?@>fjupn+wT0_?6@sdJpIwLrXt0x>b;Vbj)ulWVoz560vLS}W4VEhsLdDL!#GXDdV zDAlvqKz9G7b65DaT#7!xrTA4Yt!Wuh`!x`kmKw%7q++k^wiE|!y9OfF@l6Qn^sz7v zFs)JODp0kAxr@JdIZF5N>vopk`9I{dU4&)7+C?a-*8;5c0Kh8O0Z!o`Z=!UK0SnuT z1k{InlXR;oML3S3vqrEMgdZ=W3|Ix4KBCi-(HB%_OAH@Lm>y&Ap*r|9)!u}{|D@WL z1HZ7|{l`<;gh~E^wfcLp&L^4{e^v@%_T67UoYxAs#g}@^JKMtJq$DrDX6i_MVJL zKb;ZT5=3Y3V(k7)b+X~LS>gOZR=8fxifoxqB>Ry(XbthK)gOxwM~f2WTvbMT{t@|k z)H>%wE&Vx^b2R2M&()w{%FeXGv!-UE$;a4xI4?QPc{L#U

AKUu;x(ychI(0Q8`% zpjUHepuSHr&@`dU+Z02sYe}ra^Y{m1Xk5mMuQA5@`xjxoZ@9K=UxuT@QWmY;# zg&u8U0O(5?}yA+{dh$7k0Blqy5h1j$tQ4G#al16m_J4XreVpZmbUGGF<+L1n%d zS3H1g@l{-5;8h!m0Xo=JBOSb&z-_%wo6OODT!x4l z8{$5rlS|nL#gSDpG|l838o9duvGeCayNl~Q&9yak^OGgRa$hPKz^^45`T)`Jt3+GN z0FZml&_NZTwwl5GBfL>0sl8O^9g!!mELF} z0P=e|;T>699Sl_jx~3jgU*$x3k7Y)hZ{>sye4~XE>#8O^c}QW*wW^7r_+#VGqjnS0 zbsFhxB9dp{Y})--DhjZ?7HYN!pys#^HN=Q!U9cK!*_?$;hh~Y%AfRv`P?wfTT8Ce(h~lFkVZr@B;*kUL_cf zvwpm-+O;SlUaeu%%8#h#mQ^(%G+0E}loaLDM^PQ&;WY87nrFt?#Z_xa8m>5QJp0Pk z04LJ@b=A&4oS-$FhIDjaxaewdQmoc@c8!&1 zY#4uUL?0LYOS=cwh|{og3oju(cN*{hOQ*5XYhg8c09LcBuyP9zpuQi-Xvs+&^FTI9 ze55uPD#bdGRpgJ@&x6*voV$b&>Gxw<8j4l7rirU}s#S^Eho)Yp$Jl#FPd!b#w1~vX zkAv;@Yxk63`CioV0P4rPH$*1l+_T^Azx3=E^;&?F9soGyD!|^# z6^QT8e*bIk+IAW_g6OYA&P!HeJ9X*0q3{R!2@Aa7EEmbJ3H$e%noHVdSTwQX06fh2 zP*q)L=2TO%yFFTjBtXVD&Lk-9RLG5|RY)AYuOhc60zo#^vxu)@CsC^aE>^3Ss$yY_ zw!${^+v$;Xwey@y=mSh?nnpa^SQVN+be7*R)YMWwWhP_LTU*jUVcvx!JF=}_AX zn;3}1=xvn@e=;kG&OX=y1Iyg^M6&k9vbMr#9KP(Co6Y{Xr*4MRht;*$chI%#vAVY6 zh!NVJx|vvLi0QPrE_%gLt*p`8xuH_pDIm(=t5C-#L>O&sLPD+c^@8l;OCky&x78u3UseXCNp8$3H-i-3plOq!v=cxU{AYDYdS^Hi9NTg=AQ~`09xzaZ z`f}LcUjV0(Gtpu>N2$mNxU9`?_D8kZp&wVw{=bVk0N{8rQ_#U;|HQ&7jp}p5pu`Z= zAjUR3h!bNV6+39N=Mm@Fsni-v)#^~tRTl09Z}!LR1P=iIplS^Oc@MSPk!p1);xTmv zWICwTf@AD;!=XlEAyfg!-G#xPz6gZVhu26odzp+_-FZOS)h#h65FIcNW}J_l{Yavm zy7u-g!@epQga(KqxOWynk0C|Eh?(n&N`iHHNwjyf7kph!vp?$VY61{GY*8S+Ls4Ko zz9_=Aed?G%r8+J5CuHf=kEwGp9x!n7L&p>8uky$$IbDw@*Lj%iu1&qJ-Xhr7FcABh zTS3pF--Ep0uHLh%l0eqJbwDj<+<=r&=NL80-1&2 z(b`BOkWMX|9%}gxQE~&&hkn0U-O~2I)k%_ispXN0v+)s4V9RFh0 z>!$qO!`IFE{loocJpbGiJjdd0j6ycyDegZWw)f||hi~^+6MDCO+U#z(-Qm1W*wy;+ zX1&|3zwgIwgJuq$({O8sa|8uV677cMHAmHco$p(>VRrp199($Xzwn+f7HLFlypj;_ z%j4T)%KXRrgtO090P10w&dbzeKSyXO=8G2;k$lE+AA9a@%-8dq-R8^1>gQ|IF~w28 Tzy137XLtA;-ozKK?YIR1+YTFw literal 0 HcmV?d00001 diff --git a/icons/wikipedia/README b/icons/wikipedia/README new file mode 100644 index 0000000..98e489a --- /dev/null +++ b/icons/wikipedia/README @@ -0,0 +1 @@ +Images in this folder were pulled from WikiPedia and are under Public Domain. diff --git a/icons/wikipedia/de.png b/icons/wikipedia/de.png new file mode 100644 index 0000000000000000000000000000000000000000..8482b19dc9f8fa5c85b326ec6b25576b86dbdfc6 GIT binary patch literal 238 zcmeAS@N?(olHy`uVBq!ia0vp^3P3Et!N$PA$iVJ<9>`%V4sv&5Sa(k5C6L3G|H(?D8gCb5n0T@z%2~Ij105pNB{-dOFVsD*>AD42r!!}cfYa&3gvmaIEHu} zzdHFKZ-W63^IffEg^mA(dM@zJP_1e7>b+pA^Jm?h?zv{3D`!8t68!de_jaZBX1ljwEP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01ejw01ejxLMWSf00007bV*G`2igY& z5Cjs*z{!#T00X8;L_t(Y$E}rZOxtA?#eaRFm{Emvt%Hni6zL#pH)jFZ`1YHtTm0^)kqAMoLdGk*w!!U5riWbIz0}V{=NX<0j4(G5 zWO~TOcv>c|KLZg0`QDfG;2g$xpq8IM_y|Mw>BvX_z8C;bUvyDnItPG8HGrr0P^3q4 z@5-PccRQ&?pAiU7MVf8aQZnCt3$?Kf?GLk2wp&a^?EUg%wzjt*J>d%B%iDv;TFkxS zBWP4{tIpeEDq=*@M|F;pt&Sd2O_!0@T6@V37qXNnRv}-r@yYF<5(rN5_$jQnN$Vjh z#+>v`q^GJ0*&Qeg^7vhojoMg7vc*iu?m+gmhF{12VJ18uA&{LN*m!iuvzs|kwu4FI z`%K@uP3Ex?HYYxX=KS|;$jv6c<`N0pQrPu!4l+|Mx_CK;HYZ)(PNc%!NXd_1bMuQ% zUL4Or+vbgma}o8H9whn(x?kN-@`pyQCXFtfxWBbS+&S4rtX@ZAZ4JtTJVMi9j@t$~ z_LY4_GMlxO!v6D2be;h~Z7hr2@lt41anx1jQ$Blxm2~9VHZM?!W;~8MSBUbVPVSuS zqC~Hw#`a`1OvO@;QCl_%|6Si!DTxn zUro^W`H}w`$1@0owb14Tyx6Rz%O;r#&rxsbiTwH&c=tzmtL+Y6Pa0(=6m3ZEu@max)min=max; diff --git a/iface/misc/boxwrapper.h b/iface/misc/boxwrapper.h index 56fbf9c..2237e83 100644 --- a/iface/misc/boxwrapper.h +++ b/iface/misc/boxwrapper.h @@ -45,6 +45,7 @@ class MSIFACE_EXPORT MProgressWrapper:public QObject virtual void cancel()=0; virtual void setRange(int,int)=0; virtual void setValue(int)=0; + virtual void hide()=0; }; #endif diff --git a/iface/templates/templates.cpp b/iface/templates/templates.cpp index fef5acd..aa6222c 100644 --- a/iface/templates/templates.cpp +++ b/iface/templates/templates.cpp @@ -204,6 +204,8 @@ void MTemplateStore::updateTemplates(bool force) set.setValue(s.filename()+"/description",s.description().value()); set.setValue(s.filename()+"/flags",s.flags().value()); } + + progress->hide(); } bool MTemplateStore::retrieveFile(QString dname,QString fn) @@ -386,6 +388,8 @@ MTemplate::Type MTemplate::type()const if(x=="zip")return ZipTemplate; //HTML? if(x=="html")return HtmlTemplate; + //MIME? + if(x=="mime")return MimeTemplate; //hmm, unknown one return UnknownTemplate; } @@ -398,7 +402,7 @@ static QStringList tempBaseNames; QStringList MTemplate::legalBaseNames() { if(tempBaseNames.size()==0){ - tempBaseNames<<"ticket"<<"voucher"<<"bill"<<"eventsummary"<<"scripts"<<"eventview"; + tempBaseNames <<"ticket" <<"voucher" <<"bill" <<"eventsummary" <<"scripts" <<"eventview" <<"printathome"; } return tempBaseNames; } @@ -414,6 +418,8 @@ MTemplate::Types MTemplate::legalTypes(QString bn) return ZipTemplate; if(bn=="eventview") return HtmlTemplate; + if(bn=="printathome") + return MimeTemplate; return UnknownTemplate; } @@ -429,6 +435,8 @@ QStringList MTemplate::legalSuffixes(QString bn) return QStringList()<<"zip"; case HtmlTemplate: return QStringList()<<"html"; + case MimeTemplate: + return QStringList()<<"mime"; default: return QStringList(); } diff --git a/iface/templates/templates.h b/iface/templates/templates.h index 9e3f410..1c5b5d2 100644 --- a/iface/templates/templates.h +++ b/iface/templates/templates.h @@ -106,7 +106,9 @@ class MSIFACE_EXPORT MTemplate /**Script-Zip template*/ ZipTemplate=0x200, ///HTML patterns - HtmlTemplate=0x400 + HtmlTemplate=0x400, + ///MIME patterns + MimeTemplate=0x800 }; Q_DECLARE_FLAGS(Types,Type) @@ -180,13 +182,13 @@ class MSIFACE_EXPORT MTemplateStore \param useFirst if true: use the first match regardless of whether there are more candidates */ MTemplate getTemplate(QString base,bool useFirst=false); - /**returns a specific template by its full name, opens a template choice dialog if necessary - \param full the base name of the template to retrieve (eg. "ticket.xtt,1")*/ + /**returns a specific template by its full name, returns an invalid template if it does not exist + \param full the full name of the template to retrieve (eg. "ticket.xtt,1")*/ MTemplate getTemplateByFile(QString full); /**returns all templates (for MTemplateEditor)*/ QList allTemplates(); - + private: QString profileid; }; diff --git a/pack b/pack index c3ce038..2802df2 160000 --- a/pack +++ b/pack @@ -1 +1 @@ -Subproject commit c3ce03861e7e94ee5a87b8cb506b120af4d74348 +Subproject commit 2802df28960dcde2a86a78a154cdcb6590152856 diff --git a/printathome/README.icons b/printathome/README.icons new file mode 100644 index 0000000..3831ec5 --- /dev/null +++ b/printathome/README.icons @@ -0,0 +1,10 @@ +README for Print@Home Icons +============================= + +The basic MagicSmoke Icon is part of the MagicSmoke project. + +The Icon Overlays have been copied from the KDE Oxygen Icon Theme. + +You can download them from: ftp://ftp.kde.org + +These Icons are licensed under GNU LGPL version 3 or any newer. diff --git a/printathome/clientcfg.cpp b/printathome/clientcfg.cpp index 5ade69e..f54b015 100644 --- a/printathome/clientcfg.cpp +++ b/printathome/clientcfg.cpp @@ -11,6 +11,7 @@ // #include "clientcfg.h" +#include "pah.h" #include "scli.h" @@ -23,8 +24,9 @@ #include #include -#define GROUP "PrintAtHome/Client" +#define GROUP PRINTATHOME_SETTINGSGROUP "/Client" #define TIMER GROUP "/timermin" +#define ORDERAGE GROUP "/orderage" #define SETPROFILE GROUP "/setprofile" #define PROFILE GROUP "/profile" #define SETUSER GROUP "/setuser" @@ -45,6 +47,10 @@ MPClientConfig::MPClientConfig(QWidget* parent) fl->addRow(tr("Check Interval in Minutes:"),mtimer=new QSpinBox); mtimer->setRange(1,10080); mtimer->setValue(timerInMinutes()); + //age of orders + fl->addRow(tr("Maximum Age of Orders in Days:"),morderage=new QSpinBox); + morderage->setRange(0,999); + morderage->setValue(maximumAgeOfOrders()); //profile fl->addRow("",msetprofile=new QCheckBox(tr("Preselect Profile"))); fl->addRow(tr("Profile:"),mprofile=new QComboBox); @@ -116,6 +122,7 @@ void MPClientConfig::save() QSettings set; set.setValue(SETPROFILE,msetprofile->isChecked()); set.setValue(TIMER,mtimer->value()); + set.setValue(ORDERAGE,morderage->value()); set.setValue(PROFILE,mprofile->currentData()); set.setValue(SETUSER,msetuser->isChecked()); set.setValue(USERNAME,musername->text()); @@ -133,6 +140,12 @@ int MPClientConfig::timerInMinutes() return QSettings().value(TIMER,60).toInt(); } +int MPClientConfig::maximumAgeOfOrders() +{ + return QSettings().value(ORDERAGE,7).toInt(); +} + + QString MPClientConfig::preselectedProfileId() { return QSettings().value(PROFILE).toString(); diff --git a/printathome/clientcfg.h b/printathome/clientcfg.h index 4ab0a92..9929d13 100644 --- a/printathome/clientcfg.h +++ b/printathome/clientcfg.h @@ -28,6 +28,7 @@ public: MPClientConfig(QWidget*parent=nullptr); static int timerInMinutes(); + static int maximumAgeOfOrders(); static bool preselectProfile(); static QString preselectedProfileId(); static bool preselectUser(); @@ -41,7 +42,7 @@ public slots: void save(); private: - QSpinBox*mtimer; + QSpinBox*mtimer,*morderage; QCheckBox*msetprofile,*msetuser,*mautologin; QLineEdit*musername,*mpassword; QComboBox*mprofile; diff --git a/printathome/examplemail.mime b/printathome/examplemail.mime new file mode 100644 index 0000000..b4cfa23 --- /dev/null +++ b/printathome/examplemail.mime @@ -0,0 +1,298 @@ +{# +This template contains the mail sent to a customer +when an order for this customer is executed by print@home. + +The first non-empty line contains the subject, +subsequent lines contain the headers, then an empty line +and after that the body of the mail. +#} +Order {{order.orderid}} - Your Print@Home Tickets are Ready +From: no-reply@localhost +Cc: {{cc|implode(", ")}} +Bcc: info@localhost +Content-Type: multipart/mixed; boundary="------boundary-aYAmoTT04MIpvxx" +MIME-Version: 1.0 + + This is a multi-part message in MIME format. + +--------boundary-aYAmoTT04MIpvxx +Content-Type: multipart/alternative; boundary="------boundary-aYAmoTT04MIpviI" +Content-Transfer-Encoding: 8bit + + This is a multi-part message in MIME format. + +--------boundary-aYAmoTT04MIpviI +Content-Type: text/plain; charset="utf-8" +Content-Transfer-Encoding: 8bit + +Hello {{customer.title}} {{customer.name}}! + +Your order number {{order.orderid}} has been generated. + +total price : {{order.totalprice|asMoney}} + + +Your documents are: +{% for doc in docs %} +{{doc.fileid}} {{doc.filename}} +{% endfor %} + + + with best regards, + your MagicSmoke team + +--------boundary-aYAmoTT04MIpviI +Content-Type: multipart/related; boundary="iKETDhtPafV07ewA9JlUOMitE" +Content-Transfer-Encoding: 8bit + +--iKETDhtPafV07ewA9JlUOMitE +Content-Type: text/html; charset="utf-8" +Content-Transfer-Encoding: 8bit + + +

Hello {{customer.title}} {{customer.name}}!

+ +

Your order number {{order.orderid}} has been generated.

+ +

Your documents are: +

    +{% for doc in docs %} +
  • {{doc.fileid}} {{doc.filename}}
  • +{% endfor %} +

+ +

+

+

+ + +   with best regards,
+   your MagicSmoke team + +--iKETDhtPafV07ewA9JlUOMitE +Content-ID: +Content-Transfer-Encoding: base64 +Content-Type: image/png; name="logo.png" + +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 + +--iKETDhtPafV07ewA9JlUOMitE-- + +--------boundary-aYAmoTT04MIpviI-- + +{% for doc in docs %} +--------boundary-aYAmoTT04MIpvxx +Content-Transfer-Encoding: base64 +Content-Type: application/pdf; name="{{doc.filename}}" + +{{doc.content|base64}} + +{% endfor %} +--------boundary-aYAmoTT04MIpvxx-- diff --git a/printathome/files.qrc b/printathome/files.qrc index 2eba23c..4b76816 100644 --- a/printathome/files.qrc +++ b/printathome/files.qrc @@ -7,5 +7,6 @@ See COPYING.GPL for details. --> icon-print.png icon-block.png icon-active.png + icon-problem.png diff --git a/printathome/icon-print.xcf b/printathome/icon-print.xcf index 48427be939407a5bd5165713d76ac6cb7078f351..c9fa6b0668b9b17b3ee59a0a6413ceb6688abd68 100644 GIT binary patch delta 2106 zcmZXVdr%Ws6vpq}ycW@*Q);V#1wn+07UUs_fFdvmmVgwcV+DnRpa?B0ilZ#HTB+J< z4M?%2Ri;{LX`K!uK1N1RsZy)>;1vR7^WY8PAtu0(q~`|sBX%b{``zz+_wL>EOE#wq z@W3T})*oN{DrL#@RTmLD-C(?PgU`O|u45*NIyrXF>Zj2RwO?&2z3 zjqf?2k-Jq@b)EeKJ&O7VH8sc<;p&m*zR{7P!9n#6{sJvPn%ZZbogJMW9ks9UE6v{uxdJ|I^-!67Ea^~T z6;|r+5949|T{)IhtWMrYCNWPWu!3B!xTD5u&23gDYnQRAW-_ZzqJSi3^|$+Rzvg)`Zv_&dyg$jPzU*FKs*x2;!*3DZlT8P`$)=mly zxN)MXxmi+QjjJ^ct;B`}5d)>Bv1W+`vb9RA)YP^UA2tLJt0gW(pRt&oc)=1EE1+%0 zMcZW(u=P>}Pho>_`?yT5?C9$1#@&<9F37!y##y$6HURq=?8i4twxu#y0DTIJ~; z5ahplsxsHgZmEl_`!WUyjyrtd?mC|@z=DMc^Z0yCzGMy`*$FjI6H6=MAep@03la5pNM-BptJu!quIG~6YiF}L| zye2&@H7Rj>C}H6TD1rk6LZ&KSMikM$z(VV`&fnMD!!4ZL2fM{=0umu^fI{o&?z-G} zt&b-Z7!98N?jn09mlaMxV#0RWie>YV4dP*Egs~T*lrD&3$?1ef&EBzharg3aU%q4k zvPYv_+pujZ=^49rc+W;l&=_yUhr43E-bTsBFSJIOT~=AgR>TP*I%$!kHt-CS+EPns zyUu&iU}n%s9iWLi#-Yz(ZqW64L-TZ&Qo|gBZqNc6rY|*E81y-?L!D3yQl}O|PxNty zc?NwpQ58g$5ycW!NmLzCbwpJX#S&FUR0UDlM8$#93Dsmptq@j^*XNKMmBKA`7K7yW zQcJQG@2PDW_vj!c`yKR#y-!+}YRQwRb1dMwG{U$Fwyv@)TZlZ#YkB6qjX?``B<@Si zN)ku;<%x4Bb4PlJB;c3{!OPtYPUA7{nOT-!qwM&O7OPBs1UZXvQ_o^+xrV-B?rddg z>XWRMlc{Ir4de1H^MAzUne$I_o$V4$>tv4I0aMTJ1ex>HDjJLHtV+x6Y-aHsoz9tN z$ULVjrk+zpdDLRDm1EEw`z6_+c++f9hIp2LwPWx~Q=3GC-}nO!-dsNHpJL`1QT6|9 zM7^mOp%OEp;>DuQTQo$SCN&B6p?%;W2re4m3`jj11^jKKg%gD?vN1JhzuF{aI%1vnMi)Htr8 zii6a0yh0V@__aBle>=CP$YxY=kXn)BsA3}5f&9sqa?+bG%QP|qi7pmRX^`tc0LeYl zVh|yin6w&@zgb@?m~pa!(#p+E%3Q2!N`|OvK=vuQqKYYnZr-FZSz65&&CMXSw*OGo z+VM@!b~&hNcM(+>q|^=+k{|$eqTN>@do!a~B-7?~?mX;j9`RsVxI9RYM=`3HNAu(d zev_3vMG(d?Faje<167%)#pJ2}?Mj||(UhUN%Jbo5yMR_LuM|{eUKOaOd3AvJ^_&d< E0r{3q=l}o! diff --git a/printathome/icon-problem.png b/printathome/icon-problem.png new file mode 100644 index 0000000000000000000000000000000000000000..fb4bf7b3021573ae828ad426a495c6ab8573ed29 GIT binary patch literal 5333 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 literal 0 HcmV?d00001 diff --git a/printathome/pah.cpp b/printathome/pah.cpp index 04cc513..f7e9a94 100644 --- a/printathome/pah.cpp +++ b/printathome/pah.cpp @@ -13,22 +13,36 @@ #include "mapplication.h" #include "msinterface.h" #include "scli.h" -#include +#include "WTransaction" +#include "MTGetOrderList" #include "pah.h" #include "clientcfg.h" #include "servercfg.h" +#include "printrun.h" +#include +#include #include #include -#include +#include +#include +#include + +static PrintIcon*piInstance=nullptr; + +#define PRINTACTIVESETTING PRINTATHOME_SETTINGSGROUP "/isActive" PrintIcon::PrintIcon() { setPrintMode(PrintMode::Blocked); QMenu*ctx=new QMenu; - ctx->addAction(tr("Start &Printing now")); + ctx->addAction(tr("Start &Printing now"),this,SIGNAL(startPrinting())); + QAction *a=ctx->addAction(tr("Printing &Active")); + a->setCheckable(true); + a->setChecked(misactive=QSettings().value(PRINTACTIVESETTING,true).toBool()); + connect(a,SIGNAL(toggled(bool)),this,SLOT(activatePrint(bool))); ctx->addSeparator(); ctx->addAction(tr("&Client Configuration..."),this,SLOT(clientConfig())); ctx->addAction(tr("&Server Configuration..."),this,SLOT(serverConfig())); @@ -37,43 +51,161 @@ PrintIcon::PrintIcon() setContextMenu(ctx); show(); + + piInstance=this; +} + +PrintIcon* PrintIcon::instance() +{ + return piInstance; } + void PrintIcon::setPrintMode(PrintMode m) { - QString mode; switch(m){ case PrintMode::Normal: setIcon(QIcon(":/icon-print.png")); - mode=tr("Ready"); + mmode=tr("Ready"); break; case PrintMode::Blocked: setIcon(QIcon(":/icon-block.png")); - mode=tr("Blocked"); + mmode=tr("Blocked"); break; case PrintMode::Printing: setIcon(QIcon(":/icon-active.png")); - mode=tr("Printing..."); + mmode=tr("Printing..."); + break; + case PrintMode::Problem: + setIcon(QIcon(":/icon-problem.png")); + mmode=tr("Configuration Problems!"); break; } + toolTipUpdate(); +} + +void PrintIcon::toolTipUpdate() +{ QString user=tr("(not logged in)"),host; if(req){ user=req->currentUser(); host=req->profileName(); } - setToolTip(tr("MagicSmoke Print@Home: %1 - logged in as %2 at %3").arg(mode).arg(user).arg(host)); + setToolTip(tr("MagicSmoke Print@Home: %1\nlogged in as %2 at %3\nNext print: %4") + .arg(mmode) + .arg(user).arg(host) + .arg(mnexttime) + ); +} + +void PrintIcon::setNextTime(QString s) +{ + mnexttime=s; + toolTipUpdate(); +} + +void PrintIcon::activatePrint(bool a) +{ + misactive=a; + emit printActivated(a); } void PrintIcon::clientConfig() { MPClientConfig cc; - cc.exec(); + if(cc.exec()==QDialog::Accepted) + emit settingsChanged(); } void PrintIcon::serverConfig() { MPServerConfig sc; - sc.exec(); + if(sc.exec()==QDialog::Accepted) + emit settingsChanged(); +} + + +PrintScheduler::PrintScheduler() +{ + //set icon to active mode + PrintIcon *pi=PrintIcon::instance(); + pi->setPrintMode(pi->printIsActive()?PrintIcon::PrintMode::Normal:PrintIcon::PrintMode::Blocked); + + //create timer + mtimer=new QTimer; + mtimer->setSingleShot(false); + connect(mtimer,SIGNAL(timeout()),this,SLOT(startPrinting())); + + //connect signals + connect(pi,SIGNAL(printActivate(bool)),this,SLOT(activatePrint(bool))); + connect(pi,SIGNAL(settingsChanged()),this,SLOT(reinit())); + connect(pi,SIGNAL(startPrinting()),this,SLOT(startPrinting())); + + //init + reinit(); +} + +void PrintScheduler::activatePrint(bool a) +{ + if(a!=mtimer->isActive()) + reinit(); +} + +void PrintScheduler::reinit() +{ + PrintIcon*pi=PrintIcon::instance(); + //check and change timer interval + const int interval=MPClientConfig::timerInMinutes()*60000; + if(interval!=mtimer->interval()) + mtimer->setInterval(interval); + + //validate server config + if(!MPServerConfig::validateConfig()){ + pi->setNextTime(tr("not running")); + pi->setPrintMode(PrintIcon::PrintMode::Problem); + mtimer->stop(); + return; + } + + //check whether the user blocked it + if(!PrintIcon::instance()->printIsActive()){ + pi->setNextTime(tr("not running")); + PrintIcon::instance()->setPrintMode(PrintIcon::PrintMode::Blocked); + mtimer->stop(); + return; + } + + //make sure timer is running + if(!mtimer->isActive())mtimer->start(); + pi->setNextTime(QDateTime::currentDateTime().addMSecs(mtimer->remainingTime()).time().toString()); + PrintIcon::instance()->setPrintMode(PrintIcon::PrintMode::Normal); +} + +void PrintScheduler::startPrinting() +{ + //sanity check + if(!MPServerConfig::validateConfig()){ + QMessageBox::warning(nullptr,tr("Warning"),tr("Cannot execute Print@Home: the server configuration is not consistent!")); + return; + } + + //take care of logistics + static bool isprinting=false; + if(isprinting){ + qDebug()<<"Printing is already active. Ignoring."; + return; + } + qDebug()<<"Starting to print now..."; + isprinting=true; + PrintIcon*pi=PrintIcon::instance(); + pi->setPrintMode(PrintIcon::PrintMode::Printing); + + // print + PrintingRun().exec(); + + // done + pi->setPrintMode(pi->printIsActive()?PrintIcon::PrintMode::Normal:PrintIcon::PrintMode::Blocked); + isprinting=false; } @@ -100,12 +232,14 @@ int main(int argc,char**argv) ms->loginSession(sc.currentUsername(), sc.currentSessionId()); ms->initialize(); QObject::connect(&sc,SIGNAL(sessionIdChanged(QString)),ms,SLOT(setSessionId(QString))); - pi.setPrintMode(PrintIcon::PrintMode::Normal); }else{ qDebug()<<"Unable to get session. Giving up."; return 1; } + //activate scheduler + PrintScheduler ps; + //event loop return app.exec(); } diff --git a/printathome/pah.h b/printathome/pah.h index e47ce53..172c052 100644 --- a/printathome/pah.h +++ b/printathome/pah.h @@ -15,24 +15,82 @@ #include +#include "MOOrderInfo" +#include "MOCustomerInfo" + +#define PRINTATHOME_SETTINGSGROUP "PrintAtHome" + +class QTimer; + +///This represents the icon in the system tray and the main UI of the Print at Home client class PrintIcon:public QSystemTrayIcon { Q_OBJECT public: PrintIcon(); + + ///returns the Icon instance + static PrintIcon* instance(); enum class PrintMode{ ///Normal operation, waiting for events Normal, ///Actively printing Printing, - ///operation blocked, no connection - Blocked + ///operation blocked, no connection or printing deactivated + Blocked, + ///operation not possible, problem with settings + Problem }; + + ///returns true if the "Activate Printing" menu item is ticked + bool printIsActive(){return misactive;} + public slots: + ///sets the icon variant void setPrintMode(PrintMode); + ///tells the tool tio when we will print next time + void setNextTime(QString s); + +private slots: + ///opens the client configuration dialog void clientConfig(); + ///opens the server configuration dialog void serverConfig(); + + ///callback for the menu + void activatePrint(bool); + ///updates the tool tip text with current settings + void toolTipUpdate(); + +signals: + ///emitted when the "Activate Printing" menu item is changed + void printActivated(bool); + ///emitted whenever settings have changed + void settingsChanged(); + ///emitted when the user wants to start printing immediately + void startPrinting(); + +private: + bool misactive=false; + QString mmode,mnexttime; +}; + +///Central scheduler class for the Print at Home client. +class PrintScheduler:public QObject +{ + Q_OBJECT +public: + PrintScheduler(); +public slots: + ///initiates and controls the print job. + void startPrinting(); + ///call back for the menu item - affects the timer + void activatePrint(bool); + ///re-initializes the scheduler with current settings + void reinit(); +private: + QTimer*mtimer; }; #endif diff --git a/printathome/printathome.pro b/printathome/printathome.pro index e55a7ca..8fa663a 100644 --- a/printathome/printathome.pro +++ b/printathome/printathome.pro @@ -7,8 +7,8 @@ include(../iface/iface.pri) include(../commonlib/commonlib.pri) #sources -SOURCES += pah.cpp clientcfg.cpp servercfg.cpp -HEADERS += pah.h clientcfg.h servercfg.h +SOURCES += pah.cpp clientcfg.cpp servercfg.cpp printrun.cpp +HEADERS += pah.h clientcfg.h servercfg.h printrun.h RESOURCES += files.qrc @@ -17,4 +17,4 @@ INCLUDEPATH += . DEPENDPATH += $$INCLUDEPATH #make sure the correct Qt DLLs are used -QT += network gui widgets +QT += network gui widgets printsupport diff --git a/printathome/printrun.cpp b/printathome/printrun.cpp new file mode 100644 index 0000000..9e7fe07 --- /dev/null +++ b/printathome/printrun.cpp @@ -0,0 +1,188 @@ +// +// C++ Implementation: print @ home run +// +// Description: Print runner +// +// +// Author: Konrad Rosenbaum , (C) 2016 +// +// Copyright: See README/COPYING.GPL files that come with this distribution +// +// + +#include "mapplication.h" +#include "msinterface.h" +#include "MOOrder" +#include "MOOrderDocument" +#include "MTGetCustomer" +#include "MTGetOrder" +#include "MTGetOrderList" +#include "MTSetOrderDocument" +#include "WTransaction" +#include "MTSendCustomerMail" +#include "MTChangeCustomerMail" + +#include "ticketrender.h" +#include "odtrender.h" +#include "billrender.h" +#include "stick.h" + +#include "pah.h" +#include "printrun.h" +#include "servercfg.h" +#include "clientcfg.h" + +#include +#include +#include +#include +#include +#include +#include +#include + +PrintingRun::PrintingRun() +{ + // get templates + MTemplateStore *ts=req->templateStore(); + ticket=ts->getTemplateByFile(MPServerConfig::ticketTemplateName()); + voucher=ts->getTemplateByFile(MPServerConfig::voucherTemplateName()); + invoice=ts->getTemplateByFile(MPServerConfig::billTemplateName()); + mail=ts->getTemplateByFile(MPServerConfig::mailTemplateName()); + + mticketname=MPServerConfig::ticketFileName()+".pdf"; + mvouchername=MPServerConfig::voucherFileName()+".pdf"; + minvoicename=MPServerConfig::billFileName()+".pdf"; + + // get orders + const int age=MPClientConfig::maximumAgeOfOrders(); + const qint64 oldest=age<=0?0:QDateTime::currentDateTime().addDays(-age).toTime_t(); + MTGetOrderList olt=req->queryGetOrderList(oldest); + QList olist=olt.getorders(); + mcustomers=olt.getcustomers(); + + // filter orders + const QListshipids=MPServerConfig::shippingIds(); + for(const MOOrderInfo&ord:olist) + if(ord.isPlaced() && shipids.contains(ord.shippingtypeid())) + morders.append(ord); + qDebug()<<"Processing"<queryGetOrder(orderinfo.orderid()).getorder(); + + QList doclist; + + //generate tickets + if(order.tickets().size()>0){ + QTemporaryFile tmp(QDir::tempPath()+"/mspah-XXXXXX.pdf"); + tmp.open();tmp.close(); + QPrinter prn(QPrinter::HighResolution); + prn.setOutputFileName(tmp.fileName()); + MTicketRenderer render(ticket); + prn.setPageSizeMM(render.labelSizeMM()); + QPainter*paint=new QPainter(&prn); + bool np=false; + for(MOTicket tick:order.tickets()){ + //do we know the event? + if(mevents.contains(tick.eventid())) + tick.setEvent(mevents[tick.eventid()]); + else + //this automatically retrieves the event + if(tick.event().isValid()) + mevents.insert(tick.eventid(),tick.event()); + //print the ticket + if(np)prn.newPage(); + else np=true; + render.render(tick,prn,paint); + } + delete paint; + uploadFile(order.orderid(),tmp.fileName(),mticketname,doclist); + } + + //generate vouchers + if(order.vouchers().size()>0){ + QTemporaryFile tmp(QDir::tempPath()+"/mspah-XXXXXX.pdf"); + tmp.open();tmp.close(); + QPrinter prn(QPrinter::HighResolution); + prn.setOutputFileName(tmp.fileName()); + MVoucherRenderer render(voucher); + prn.setPageSizeMM(render.labelSizeMM()); + QPainter*paint=new QPainter(&prn); + bool np=false; + for(MOVoucher vouc:order.vouchers()){ + //print the voucher + if(np)prn.newPage(); + else np=true; + render.render(vouc,prn,paint); + } + delete paint; + uploadFile(order.orderid(),tmp.fileName(),mvouchername,doclist); + } + + //generate bill + MBillRenderer orender(order,invoice); + QString pname=orender.renderToPdf(); + qDebug()<<"rendered bill to"<&doclist) +{ + MOOrderDocument doc; + doc.setorderid(orderid); + doc.setfilename(remotefile); + QFile fd(localfile); + fd.open(QIODevice::ReadOnly); + doc.setcontent(fd.readAll()); + fd.close(); + doc.setvisible(true); + MTSetOrderDocument trans=MTSetOrderDocument::query(doc); + doclist.append(doc); +} + +void PrintingRun::sendMail(const MOOrder&order,const QList&doclist) +{ + //get customer details + MOCustomer cust; + if(mcustomerdetails.contains(order.customerid())) + cust=mcustomerdetails[order.customerid()]; + else + cust=MTGetCustomer::query(order.customerid()).getcustomer(); + QStringList cc; + const QListcontacttypes=MPServerConfig::mailContactTypeIds(); + for(auto co:cust.contacts()) + if(contacttypes.contains(co.contactid())) + cc<0) + MTChangeCustomerMail::query(cust.customerid(),cc[0]); + } + //send mail + MTSendCustomerMail::query(order.customerid(),mymail); +} diff --git a/printathome/printrun.h b/printathome/printrun.h new file mode 100644 index 0000000..f59846e --- /dev/null +++ b/printathome/printrun.h @@ -0,0 +1,53 @@ +// +// C++ Interface: print @ home run +// +// Description: +// +// +// Author: Konrad Rosenbaum , (C) 2016 +// +// Copyright: See README/COPYING.GPL files that come with this distribution +// +// + +#ifndef PAH_RUN_H +#define PAH_RUN_H + +#include +#include + +#include "MOOrderInfo" +#include "MOCustomerInfo" +#include "MOCustomer" +#include "MOEvent" + +#include "templates/templates.h" + +class MOOrderDocument; +class MOOrder; + +///Represents a single printing run with multiple orders to be printed. +class PrintingRun:public QObject +{ + Q_OBJECT +public: + ///retrieves all basic information for open orders + PrintingRun(); + +public slots: + ///executes the actual print run + void exec(); +private: + QListmorders; + QListmcustomers; + QMapmcustomerdetails; + MTemplate ticket,voucher,invoice,mail; + QString mticketname,mvouchername,minvoicename; + QMapmevents; + + void printOneOrder(const MOOrderInfo&); + void uploadFile(int orderid,QString localfile,QString remotefile,QList&doclist); + void sendMail(const MOOrder&,const QList&); +}; + +#endif diff --git a/printathome/servercfg.cpp b/printathome/servercfg.cpp index bf92f50..6353061 100644 --- a/printathome/servercfg.cpp +++ b/printathome/servercfg.cpp @@ -16,24 +16,32 @@ #include "templates.h" #include "MTGetAllContactTypes" +#include "MTGetAllShipping" #include "MTGetPrintAtHomeSettings" #include "MTSetPrintAtHomeSettings" -#include #include #include -#include #include -#include -#include -#include +#include #include +#include +#include +#include #include +#include +#include +#include #define TICKETCS "TicketChecksum" #define VOUCHERCS "VoucherChecksum" #define INVOICECS "InvoiceChecksum" +#define MAILCS "MailChecksum" #define MAILCONTACTS "MailContactTypes" +#define SHIPPING "ShippingTypes" +#define TICKETNM "TicketName" +#define VOUCHERNM "VoucherName" +#define INVOICENM "InvoiceName" //seconds between forced re-inits #define INIT_TIMER 5*60 @@ -41,52 +49,106 @@ QList MPServerConfig::mcontacttypes; QDateTime MPServerConfig::mlastinit; QMap MPServerConfig::msettings; +QList MPServerConfig::mshiptypes; + +//helpers to store sets of checksum:name pairs +static inline QString strpair2str(const QPair&pair) +{ + QByteArray a; + QDataStream stream(&a,QIODevice::WriteOnly); + stream<(checksum,filename)); +} + +static inline QPair str2strpair(const QString& str) +{ + QByteArray a(QByteArray::fromBase64(str.toLatin1())); + QDataStream stream(a); + QPairpair; + stream>>pair; + return pair; +} + MPServerConfig::MPServerConfig(QWidget* parent) :QDialog(parent) { setWindowTitle(tr("Print@Home Server Configuration")); - QVBoxLayout*vl,*vl2; + QVBoxLayout*vl,*vl2,*vl3; + QHBoxLayout*hl; setLayout(vl=new QVBoxLayout); QFormLayout*fl; vl->addLayout(fl=new QFormLayout); //template for tickets fl->addRow(tr("Ticket Template:"),mticket=new QComboBox); + fl->addRow(tr("Ticket File Name:"),hl=new QHBoxLayout); + hl->addWidget(mticketn=new QLineEdit(ticketFileName()),1); + hl->addWidget(new QLabel(".pdf"),0); //template for vouchers fl->addRow(tr("Voucher Template:"),mvoucher=new QComboBox); + fl->addRow(tr("Voucher File Name:"),hl=new QHBoxLayout); + hl->addWidget(mvouchern=new QLineEdit(voucherFileName()),1); + hl->addWidget(new QLabel(".pdf"),0); //template for invoice fl->addRow(tr("Invoice Template:"),minvoice=new QComboBox); + fl->addRow(tr("Invoice File Name:"),hl=new QHBoxLayout); + hl->addWidget(minvoicen=new QLineEdit(billFileName()),1); + hl->addWidget(new QLabel(".pdf"),0); + //template for mail + fl->addRow(tr("Mail Template:"),mmail=new QComboBox); //contacts - fl->addRow(tr("eMail Contacts:"),vl2=new QVBoxLayout); + QFrame*frm; + fl->addRow(tr("eMail Contacts:"),frm=new QFrame); + frm->setFrameStyle(QFrame::StyledPanel|QFrame::Plain); + frm->setLayout(vl2=new QVBoxLayout); + //shipping types + fl->addRow(tr("Shipping Types:"),frm=new QFrame); + frm->setFrameStyle(QFrame::StyledPanel|QFrame::Plain); + frm->setLayout(vl3=new QVBoxLayout); //get settings init(); //update templates QListtpl=req->templateStore()->allTemplates(); - int tp=-1,vp=-1,ip=-1; - const QString tc=ticketTemplateCS(),vc=voucherTemplateCS(),ic=invoiceTemplateCS(); + int tp=-1,vp=-1,ip=-1,mp=-1; + const QPair tc=ticketTemplateCS(), vc=voucherTemplateCS(), ic=invoiceTemplateCS(), mc=mailTemplateCS(); qDebug()<<"DEFAULTS tick"<addItem(tmp.description(),tmp.checksum()); - if(tc==tmp.checksum())tp=mticket->count()-1; + mticket->addItem(tmp.description(), strpair2str(tmp.checksum(),tmp.completeFileName())); + if(tc.first==tmp.checksum()&&tc.second==tmp.completeFileName()) + tp=mticket->count()-1; } - if(tmp.baseName()=="voucher"){ - mvoucher->addItem(tmp.description(),tmp.checksum()); - if(vc==tmp.checksum())vp=mvoucher->count()-1; + else if(tmp.baseName()=="voucher"){ + mvoucher->addItem(tmp.description(), strpair2str(tmp.checksum(),tmp.completeFileName())); + if(vc.first==tmp.checksum()&&vc.second==tmp.completeFileName()) + vp=mvoucher->count()-1; } - if(tmp.baseName()=="bill"){ - minvoice->addItem(tmp.description(),tmp.checksum()); - if(ic==tmp.checksum())ip=minvoice->count()-1; + else if(tmp.baseName()=="bill"){ + minvoice->addItem(tmp.description(), strpair2str(tmp.checksum(),tmp.completeFileName())); + if(ic.first==tmp.checksum(),ic.second==tmp.completeFileName()) + ip=minvoice->count()-1; + } + else if(tmp.baseName()=="printathome"){ + mmail->addItem(tmp.description(), strpair2str(tmp.checksum(),tmp.completeFileName())); + if(mc.first==tmp.checksum(),mc.second==tmp.completeFileName()) + mp=mmail->count()-1; } } + qDebug()<<"tp"<setCurrentIndex(tp); mvoucher->setCurrentIndex(vp); minvoice->setCurrentIndex(ip); + mmail->setCurrentIndex(mp); //update contacts QList mcont=mailContactTypeIds(); - qDebug()<<"DEFAULT contacts"<addWidget(cb); mcontacts.insert(ctc.contacttypeid(),cb); } - + //update shipping types + QList mship=shippingIds(); + qDebug()<<"DEFAULT shipping types"<setChecked(mship.contains(ctc.shipid())); + vl3->addWidget(cb); + mshipping.insert(ctc.shipid(),cb); + } + vl->addSpacing(15); - QHBoxLayout*hl; vl->addLayout(hl=new QHBoxLayout); hl->addStretch(1); QPushButton*p; @@ -120,6 +191,7 @@ void MPServerConfig::init(bool force) qDebug()<<"NEW-SETTINGS"<queryGetAllContactTypes().gettypes(); + mshiptypes=req->queryGetAllShipping().getshipping(); mlastinit=QDateTime::currentDateTime(); } @@ -131,11 +203,20 @@ void MPServerConfig::save() settings.append(MOKeyValuePair(TICKETCS,mticket->currentData().toString())); settings.append(MOKeyValuePair(VOUCHERCS,mvoucher->currentData().toString())); settings.append(MOKeyValuePair(INVOICECS,minvoice->currentData().toString())); + settings.append(MOKeyValuePair(MAILCS,mmail->currentData().toString())); + settings.append(MOKeyValuePair(TICKETNM,mticketn->text())); + settings.append(MOKeyValuePair(VOUCHERNM,mvouchern->text())); + settings.append(MOKeyValuePair(INVOICENM,minvoicen->text())); QString mct; for(int cid:mcontacts.keys()) if(mcontacts[cid]->isChecked()) mct+=QString("%1 ").arg(cid); - settings.append(MOKeyValuePair(MAILCONTACTS,mct)); + settings.append(MOKeyValuePair(MAILCONTACTS,mct.trimmed())); + mct.clear(); + for(int sid:mshipping.keys()) + if(mshipping[sid]->isChecked()) + mct+=QString("%1 ").arg(sid); + settings.append(MOKeyValuePair(SHIPPING,mct.trimmed())); qDebug()<<"SAVING"< MPServerConfig::ticketTemplateCS() { init(); - return msettings.value(TICKETCS); + return str2strpair(msettings.value(TICKETCS)); } -QString MPServerConfig::voucherTemplateCS() +QPair MPServerConfig::voucherTemplateCS() { init(); - return msettings.value(VOUCHERCS); + return str2strpair(msettings.value(VOUCHERCS)); } -QString MPServerConfig::invoiceTemplateCS() +QPair MPServerConfig::invoiceTemplateCS() { init(); - return msettings.value(INVOICECS); + return str2strpair(msettings.value(INVOICECS)); +} + +QPair MPServerConfig::mailTemplateCS() +{ + init(); + return str2strpair(msettings.value(MAILCS)); } QStringList MPServerConfig::mailContactTypes() @@ -184,3 +270,72 @@ QList MPServerConfig::mailContactTypeIds() ret.append(s.toInt()); return ret; } + +QList MPServerConfig::shippingIds() +{ + init(); + QListret; + for(auto s:msettings.value(SHIPPING).split(' ',QString::SkipEmptyParts)) + ret.append(s.toInt()); + return ret; +} + +QString MPServerConfig::ticketFileName() +{ + return msettings.value(TICKETNM,QCoreApplication::translate("MPServerConfig","tickets","file name")); +} + +QString MPServerConfig::voucherFileName() +{ + return msettings.value(VOUCHERNM,QCoreApplication::translate("MPServerConfig","vouchers","file name")); +} + +QString MPServerConfig::billFileName() +{ + return msettings.value(INVOICENM,QCoreApplication::translate("MPServerConfig","invoice","file name")); +} + +bool MPServerConfig::validateConfig() +{ + init(); + //check we even have a config + QPair + tc=ticketTemplateCS(), + vc=voucherTemplateCS(), + ic=invoiceTemplateCS(), + mc=mailTemplateCS(); + if(tc.first.isEmpty()||vc.first.isEmpty()||ic.first.isEmpty()) + return false; + //validate templates exist + MTemplateStore*ts=req->templateStore(); + MTemplate tmp=ts->getTemplateByFile(tc.second); + if(!tmp.isValid()||tmp.checksum()!=tc.first)return false; + tmp=ts->getTemplateByFile(vc.second); + if(!tmp.isValid()||tmp.checksum()!=vc.first)return false; + tmp=ts->getTemplateByFile(ic.second); + if(!tmp.isValid()||tmp.checksum()!=ic.first)return false; + tmp=ts->getTemplateByFile(mc.second); + if(!tmp.isValid()||tmp.checksum()!=mc.first)return false; + //validate contacts exist + for(int id:mailContactTypeIds()){ + bool found=false; + for(const MOContactType &ct:mcontacttypes) + if(ct.contacttypeid()==id){ + found=true; + break; + } + if(!found)return false; + } + //validate shipping types + for(int id:shippingIds()){ + bool found=false; + for(const MOShipping&st:mshiptypes) + if(st.shipid()==id){ + found=true; + break; + } + if(!found)return false; + } + //done + return true; +} diff --git a/printathome/servercfg.h b/printathome/servercfg.h index da31ad7..5e206df 100644 --- a/printathome/servercfg.h +++ b/printathome/servercfg.h @@ -17,8 +17,10 @@ #include #include #include +#include #include "MOContactType" +#include "MOShipping" class QCheckBox; class QLineEdit; @@ -31,21 +33,48 @@ class MPServerConfig:public QDialog public: MPServerConfig(QWidget*parent=nullptr); + ///returns all contact types that are mail addresses static QStringList mailContactTypes(); + ///returns the IDs of all contact types that are mail addresses static QList mailContactTypeIds(); + + ///returns the IDs of shipping types used for PrintAtHome + static QList shippingIds(); + + ///returns true if the server configuration is consistent + static bool validateConfig(); + + ///returns the template name for tickets + static QString ticketTemplateName(){return ticketTemplateCS().second;} + ///returns the template name for vouchers + static QString voucherTemplateName(){return voucherTemplateCS().second;} + ///returns the template name for bills + static QString billTemplateName(){return invoiceTemplateCS().second;} + ///returns the template name for mails + static QString mailTemplateName(){return mailTemplateCS().second;} + + ///returns the name under which the ticket PDF should be stored on the server + static QString ticketFileName(); + ///returns the name under which the voucher PDF should be stored on the server + static QString voucherFileName(); + ///returns the name under which the bill/invoice PDF should be stored on the server + static QString billFileName(); public slots: void save(); private: - QComboBox*mticket,*mvoucher,*minvoice; - QMapmcontacts; + QComboBox*mticket,*mvoucher,*minvoice,*mmail; + QLineEdit*mticketn,*mvouchern,*minvoicen; + QMapmcontacts,mshipping; static QMapmsettings; static QListmcontacttypes; + static QListmshiptypes; static QDateTime mlastinit; - static QString ticketTemplateCS(); - static QString voucherTemplateCS(); - static QString invoiceTemplateCS(); + static QPair ticketTemplateCS(); + static QPair voucherTemplateCS(); + static QPair invoiceTemplateCS(); + static QPair mailTemplateCS(); static void init(bool force=false); }; diff --git a/src/dialogs/orderwin.cpp b/src/dialogs/orderwin.cpp index cb48922..40bb9f5 100644 --- a/src/dialogs/orderwin.cpp +++ b/src/dialogs/orderwin.cpp @@ -21,6 +21,7 @@ #include "payedit.h" #include "templates.h" #include "ticketrender.h" +#include "billrender.h" #include "MOEvent" #include "MTCancelOrder" @@ -447,13 +448,8 @@ void MOrderWindow::printBill() updateData(); } //print bill - initPrintBuffer(); - MOdtSignalRenderer rend(tf); - connect(&rend,SIGNAL(getVariable(QString,QVariant&)), this,SLOT(getVariable(QString,QVariant&))); - connect(&rend,SIGNAL(getLoopIterations(QString,int&)), this,SLOT(getLoopIterations(QString,int&))); - connect(&rend,SIGNAL(setLoopIteration(QString,int)), this,SLOT(setLoopIteration(QString,int))); + MBillRenderer rend(m_order, tf); rend.renderToPrinter(); - donePrintBuffer(); } void MOrderWindow::saveBill() @@ -492,203 +488,8 @@ void MOrderWindow::saveBill() updateData(); } //render bill - initPrintBuffer(); - MOdtSignalRenderer rend(tf); - connect(&rend,SIGNAL(getVariable(QString,QVariant&)), this,SLOT(getVariable(QString,QVariant&))); - connect(&rend,SIGNAL(getLoopIterations(QString,int&)), this,SLOT(getLoopIterations(QString,int&))); - connect(&rend,SIGNAL(setLoopIteration(QString,int)), this,SLOT(setLoopIteration(QString,int))); + MBillRenderer rend(m_order, tf); rend.renderToFile(fname); - donePrintBuffer(); -} - -void MOrderWindow::getVariable(QString vn,QVariant&value) -{ - if(vn=="ORDERDATE"){ - value=m_order.ordertime().value(); - }else - if(vn=="ORDERDATETIME"){ - value=m_order.ordertime().value(); - }else - if(vn=="SENTDATE"){ - value=m_order.senttime().value(); - }else - if(vn=="SENTDATETIME"){ - value=m_order.senttime().value(); - }else - if(vn=="CUSTOMERID")value=QString::number(m_order.customerid());else - if(vn=="ORDERID")value=QString::number(m_order.orderid());else - if(vn=="ADDRESS")value=m_order.fullInvoiceAddress();else - if(vn=="FULLADDRESS")value=m_order.fullInvoiceAddress();else - if(vn=="NAME")value=m_order.customer().value().fullName();else - if(vn=="DELIVERYADDRESS")value=m_order.fullDeliveryAddress();else - if(vn=="FINALADDRESS")value=m_order.fullDeliveryAddress();else - if(vn=="TOTALPRICE"){ - value=m_order.totalprice().value(); - }else - if(vn=="AMOUNTPAID"){ - value=m_order.amountpaid().value(); - }else - if(vn=="SELLER")value=m_order.soldby().value();else - if(vn=="COMMENT")value=m_order.comments().value();else - if(vn=="AMOUNTTOPAY"){ - value=m_order.amountToPay(); - }else - if(vn=="AMOUNTTOREFUND"){ - value=m_order.amountToRefund(); - }else - if(vn=="TICKETS"){ - value=printBuffer.tickets.size(); - }else - if(vn=="ACCTICKETS"){ - value=printBuffer.tickinfo.size(); - }else - if(vn=="VOUCHERS"){ - value=printBuffer.vouchers.size(); - }else - if(vn=="ADDRESSLINES"){ - value=m_order.fullInvoiceAddress().split("\n").size(); - }else - if(vn=="SHIPPING")value=m_order.shippingtype().value().description().value();else - if(vn=="SHIPPINGPRICE"){ - value=m_order.shippingtype().value().cost().value(); - }else{ - if(vn.contains(':')){ - QStringList sl=vn.split(':'); - int it=-1; - if(m_loopiter.contains(sl[0]))it=m_loopiter[sl[0]]; - getLoopVariable(sl[0],it,sl[1],value); - } - } -// qDebug()<<"got variable"<=max)return; - m_loopiter.insert(loopname,iteration); -} - - -void MOrderWindow::getLoopVariable(QString loopname,int it,QString vn,QVariant&value) -{ - if(loopname=="TICKETS"){ - QList &tickets=printBuffer.tickets; - if(it<0 || it>=tickets.size())return; - - if(vn=="PRICE"){ - value=tickets[it].price().value(); - }else - if(vn=="ID")value=tickets[it].ticketid().value();else - if(vn=="TITLE")value=tickets[it].event().title().value();else - if(vn=="ARTIST")value=tickets[it].event().artist().value().name().value();else - if(vn=="DATE"){ - value=tickets[it].event().start().value(); - }else - if(vn=="STARTTIME"){ - value=tickets[it].event().start().value(); - }else - if(vn=="ENDTIME"){ - value=tickets[it].event().end().value(); - }else - if(vn=="ROOM")value=tickets[it].event().room().value(); - }else if(loopname=="ACCTICKETS"){ - QList &tickets=printBuffer.tickinfo; - if(it<0 || it>=tickets.size())return; - - if(vn=="PRICE"){ - value=tickets[it].proto.price().value(); - }else - if(vn=="FULLPRICE"){ - value=tickets[it].proto.price().value()*tickets[it].amount; - }else - if(vn=="TITLE")value=tickets[it].proto.event().title().value();else - if(vn=="ARTIST")value=tickets[it].proto.event().artist().value().name().value();else - if(vn=="DATE"){ - value=tickets[it].proto.event().start().value(); - }else - if(vn=="STARTTIME"){ - value=tickets[it].proto.event().start().value(); - }else - if(vn=="ENDTIME"){ - value=tickets[it].proto.event().end().value(); - }else - if(vn=="ROOM")value=tickets[it].proto.event().room().value();else - if(vn=="AMOUNT"){ - value=tickets[it].amount; - } - }else if(loopname=="VOUCHERS"){ - if(it<0 || it>=printBuffer.vouchers.size())return; - - if(vn=="PRICE"){ - value=printBuffer.vouchers[it].price().value(); - }else - if(vn=="VALUE"){ - value=printBuffer.vouchers[it].value().value(); - }else - if(vn=="ID")value=printBuffer.vouchers[it].voucherid().value(); - }else if(loopname=="ADDRESSLINES"){ - QStringList lst=m_order.fullInvoiceAddress().split("\n"); - if(it<0 || it>=lst.size())return; - value=lst[it]; - }else - return /*empty handed*/; -} - -void MOrderWindow::donePrintBuffer() -{ - printBuffer.tickets.clear(); - printBuffer.vouchers.clear(); - printBuffer.tickinfo.clear(); -} - -static inline bool compare(const MOTicket&a,const MOTicket&b) -{ - if(a.eventid()!=b.eventid())return false; - if(a.price()!=b.price())return false; - return true; -} - -void MOrderWindow::initPrintBuffer() -{ - //clear - donePrintBuffer(); - //get tickets (only valid ones, only those that are to be paid) - QListtlst=m_order.tickets(); - for(int i=0;ivlst=m_order.vouchers(); - for(int i=0;i0||vlst[i].value()>0) - printBuffer.vouchers.append(vlst[i]); } void MOrderWindow::payment() diff --git a/src/dialogs/orderwin.h b/src/dialogs/orderwin.h index 916949e..757f05f 100644 --- a/src/dialogs/orderwin.h +++ b/src/dialogs/orderwin.h @@ -60,14 +60,6 @@ class MOrderWindow:public QMainWindow void printBill(); /**save the bill as file*/ void saveBill(); - /**callback for bill generator: variables; see MOdtSignalRenderer for details*/ - void getVariable(QString,QVariant&); - /**callback for bill generator: loops; see MOdtSignalRenderer for details*/ - void getLoopIterations(QString loopname,int&iterations); - /**callback to set values of a specific loop iteration*/ - void setLoopIteration(QString loopname,int iteration); - /**callback for bill generator: loop variables; see MOdtSignalRenderer for details*/ - void getLoopVariable(QString,int,QString,QVariant&); /**received payment*/ void payment(); @@ -125,22 +117,6 @@ class MOrderWindow:public QMainWindow QAction*m_res2order,*m_cancel,*m_ship,*m_pay,*m_payv,*m_refund; QMapm_loopiter; QString m_testTemplate; - - //printing buffer - struct TickInfo{ - TickInfo(const MOTicket&t):proto(t){amount=1;} - TickInfo(const TickInfo&t):proto(t.proto){amount=t.amount;} - TickInfo(){amount=0;} - MOTicket proto; - int amount; - }; - struct PrintBuffer{ - QList tickets; - QList vouchers; - QList tickinfo; - }printBuffer; - void initPrintBuffer(); - void donePrintBuffer(); }; class MTicketRenderer; diff --git a/src/images/arrowdiag.png b/src/images/arrowdiag.png deleted file mode 100644 index 8844a7f1a4781d28a1897eef2908d762a221901e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 224 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!D3?x-;bCrM;TYyi9>;M1%fy~fDm+OEOV@Z%- zFoVOh8)+a;lDE4HLkFv@2av;A;1OBOz`!jG!i)^F=12eq*-JcqUDxPv<(Ka|uf7B*ZQ|+T7{YNqIiVmS!Q#My9}SH^ z8JT}Gv;E`e`6Ms##@^t{|AZg^n-BhDXZ|hE#-=bSk%5^ZdLQq~nF;$21NAd_y85}S Ib4q9e06Vxpp#T5? diff --git a/src/images/arrowdiag.png b/src/images/arrowdiag.png new file mode 120000 index 0000000..36757df --- /dev/null +++ b/src/images/arrowdiag.png @@ -0,0 +1 @@ +../../icons/arrows/arrowdiag.png \ No newline at end of file diff --git a/src/images/arrowdown.png b/src/images/arrowdown.png deleted file mode 100644 index 683c465cea3449012360934c3b8cb835f206c424..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 206 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!D3?x-;bCrM;TYyi9>;M1%fy~fDm+OEOV@Z%- zFoVOh8)+a;lDE4HLkFv@2av;A;1OBOz`!jG!i)^F=12eq*-JcqUDQ2Tq8=H^K)}k^GXLfS6>2@R`PUl4B@z*oZ!Ip&0gY(eS^S% oW`QJo2B$N;3P(;bIPvf>?CxSel@RdwFHkjur>mdKI;Vst09HISvH$=8 diff --git a/src/images/arrowdown.png b/src/images/arrowdown.png new file mode 120000 index 0000000..9bffeb0 --- /dev/null +++ b/src/images/arrowdown.png @@ -0,0 +1 @@ +../../icons/arrows/arrowdown.png \ No newline at end of file diff --git a/src/images/arrowleft.png b/src/images/arrowleft.png deleted file mode 100644 index abe8720be35196a4e25f7e1d53b26fee76aa7a29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 222 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!D3?x-;bCrM;V{wqX6T`Z5GB1G~wg8_HS0D`p zOVf9r2U3hBL4Lsu4$p3+fjCLt?k)@+tg;?J4rhT!WHAE+w=f7ZGR&GI0Tg5}@$_|N zzs1AFZ)oWG_=Y7=NVvo`qQp5rH#aq}guyp4Ju_Lsv8X7&eAjvPB|vFaPZ!4!j_b(@ z4a|&eZA@&(_<7#QOFXeRxYF#YAg#e9!hW)efnmpQj<}zB4PSv87(8A5T-G@yGywoh CB{vZO diff --git a/src/images/arrowleft.png b/src/images/arrowleft.png new file mode 120000 index 0000000..28a2bc5 --- /dev/null +++ b/src/images/arrowleft.png @@ -0,0 +1 @@ +../../icons/arrows/arrowleft.png \ No newline at end of file diff --git a/src/images/arrowright.png b/src/images/arrowright.png deleted file mode 100644 index 8a62bf75f78dd52d84586f9f1d1e8db84f275c70..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 210 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!D3?x-;bCrM;TYyi9>;M1%fy~fDm+OEOV@Z%- zFoVOh8)+a;lDE4HLkFv@2av;A;1OBOz`!jG!i)^F=12eq*-JcqUDxPv<(Ka|uf7B*t>)?C7{YNqIiZ1(kB!ZajqM*0 qvGe?~m-z9&@g%!~pxp)?pvhhBY%Z^IR!j%#VDNPHb6Mw<&;$SvaWxYF diff --git a/src/images/arrowright.png b/src/images/arrowright.png new file mode 120000 index 0000000..748f8ef --- /dev/null +++ b/src/images/arrowright.png @@ -0,0 +1 @@ +../../icons/arrows/arrowright.png \ No newline at end of file diff --git a/src/images/arrowup.png b/src/images/arrowup.png deleted file mode 100644 index cfb4cdb309cb71574f98a9d6bee98902a54e5e9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 218 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 Xf;YdHLVvB600000NkvXXu0mjf9PBv3 diff --git a/src/images/cancel.png b/src/images/cancel.png new file mode 120000 index 0000000..e95d009 --- /dev/null +++ b/src/images/cancel.png @@ -0,0 +1 @@ +../../icons/misc/cancel.png \ No newline at end of file diff --git a/src/images/done.png b/src/images/done.png deleted file mode 100644 index dbfb948ab86404ef63eb16f7540419e4d6150737..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1925 zcmV;02YUF4P)^A{-pjWhnpv2NFp{ zK~z}7y_aoJRM#2Df9IZi@4f*GEG$G>gKr=Zr{Z*&)ER4v#3CAv&ZKRo9~zr>y8YB? zJN-a2(>fie&9r_HBZqd$WWge#?0-2_fQ2DK&k+Ht+BS^}&K+U*NTquZcSYcf2n@^X+Y{ z;m1G#FlXCn^9kR$U}La2S{yjtb4J`7y+_a89;&^oJxeNvQYwkx>t{pdSLsRgSRKbY zqA%vXXs=(tes^A8-p_$cKzd#Rn1okpPX*2md?ZrX6y+3CS6)Z=Shv;M(t0hoEq6dE z^@G~l+FgZ(g%Ke{3i#ivKs1TQ%_WDK2gjR_ zYaHMh@CVa0f2x#9CzDBPYir5L$(eNH_)GzaCegTM(U#!4+%E?%-wg{iL6NtZGG7@N zA{RK(asp?Ib1*+Y|0B2C-6f?|N+}YF1SKUUl$V#2ot-U#_+%1v(Ij3$@B(Qhiib5C zGmM&eI92y#8Y-|i61UhMC?{F`n`(0B3I1L9R@Bo$kg7w==w}0*V zMb8KR@!*P(x}?BW!1BE1?C(Bc9eMXie{p;9lMS01PR3%f-|yM8$F?jBDJ6>+FD4d? zF*-U*GMV(|dcBc~iVDKvFk@q584W0eX_{oYvZkhKIzXZE5)Ip{w|(;)OTQkt5&M_W zb)AB2A65RR*dLyN^Df8h>gqyL%Af4ryZ6TAQKOW?wryA6Hy)RV1PPv9_N)=C z33~4)28C`&d~P4h@|N+|-`}!Y4zx_cflj4V&lFkAEF3^icE40ICC10c@2y$02Cvr( zVCVo2!-2=)MgU3(;v&v>zVx#DLFxh0(8+gr@H_ncuI+WJd4KZ^IB-J`!SM<}5e>hG7s2g%}+j1#o6EVBoUdh)fn00wENJaF8eSc(wIa>(HMM%>_?Bf_*4~ z#Ox(0b=+<@ot>SGjEn$GsLjw#Tn^_9C%R^ki&w$*`PGC;k2X zT)%#OvJ4YCfG!OjI6){-0$oV5RSr9k?z9f>d+)K~8J-TLG)+U-b)=NVLWtX%rr~nA z=;-L6zrUY!It`H40SXM?MCl2IQs59KKYZ^;*1>lUJ~mtkfl|susRV#!S#))E<>%$) z<+@z1F;+@{!UX@5B0Gz3=L5ke+>!m{a*mG3$3*P1d}W5?$A6ZEaPNNW{*piOKG$eTqY+l(HWO zKFeluFlj2KBpQu!_Uu`Phlk04r(SGcZ$@(sP187i`ZR-sgUt0lpKAb0DMm&{ICbh2 zkw|1lw*D^x*tShL9A;=}h-5N3y)({?^7EPirKP1vDQEPo>3jYSu8Gb@0;q&Y00000 LNkvXXu0mjfsi~WQ diff --git a/src/images/done.png b/src/images/done.png new file mode 120000 index 0000000..c115da7 --- /dev/null +++ b/src/images/done.png @@ -0,0 +1 @@ +../../icons/misc/done.png \ No newline at end of file diff --git a/src/images/icon.png b/src/images/icon.png deleted file mode 100644 index a5b3bbf74b2456e291c14d9c74e7620e662bb033..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5093 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

$RNE(9RrU>Q8# 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 iFhOE^-i-dam(w5dP+NWyTI59l0000Af^;KL zQl}Lrc`24B9pdoPGE>88-e`H7)^I+=ukX>JQJDN6UZiy3CzPw z0B^j^Tz#0iUc=%;!R~Q^MeruTEB7)#3ub)?asqc=OIxw2;Qf{2490+Yj)~rfk9$p6c zd%)`ee+lRdz$5lO;rfdx25?IYj@ zz+VGi19&yfMfzUr$E=r@Vh0*>7jr`hCgT|MKmlhb(m3E(ks!APX5r<4_grH(?gKz7 zH-LItIZcr0P3NoxvI3rl>~u>2>lapWGrWfJ1 zoFe`1g1{FU0uBjZRWOBJiJ>PAr5YPsAkhnnZb)=OqLb#1U1-8jXu=*ep&3nR27C}r zXf2Q};Dz`>LNzO)gTyE#1|iW02{Yim7{h+_$1uil1YErPGJnE_3{LMDKP;F z3nYdhF}#uaD;`9Jk@n1Znv{UfNjylVRgdAa5>t>EgTyGxZjEEHINlz2fSPe$E|TH6 z>of;^bq}ItCCVUSgTz!cvrS;JM6e%MQ9aJlB4JX=9SM^4C|*{g91=4b%rjZD0*dSh zTuS`VD<|Mm;;F_a>J-`$xsuRE(f$0CZ6g8xl&8p^aH#|mygPu@IG$B(SG+`GEwUBa luIPJ#3lZhtjQ;tT)1Om}V+##pbj1Jw002ovPDHLkV1o8FiTwZo diff --git a/src/images/prev.png b/src/images/prev.png new file mode 120000 index 0000000..dcc8316 --- /dev/null +++ b/src/images/prev.png @@ -0,0 +1 @@ +../../icons/misc/prev.png \ No newline at end of file diff --git a/src/images/separator.png b/src/images/separator.png deleted file mode 100644 index ea928431d20d5005a7d8df12210c27ebec978a92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 221 zcmeAS@N?(olHy`uVBq!ia0vp^0zj<5!3HFyJAa%3QjEnx?oJHr&dIz4a@dl*-CY>| zgW!U_%O?XxI14-?iy0WWg+Z8+Vb&Z8pdfpRr>`sfZ6`;xTgNlt=z-kOf} z7q>F3R-UP{`PLl1PL7@iJ!Uo@34;%!0cx76PoLbamount that needs to be paid, negative if too much has been paid total price for this order (including shipping and all items) costs for shipping - + + @@ -272,7 +273,8 @@ - + + @@ -365,4 +367,44 @@ + + + This class represents a document stored for a specific order. + Informational: internal file ID + The order it belongs to. + The file name of the document. + Modification Time + Web Retrieval Time + File Content + True if the file is visible for the customer + + + + + + + + + + + + + This class represents a document stored for a specific order without the + actual content blob. + + Informational: internal file ID + The order it belongs to. + The file name of the document. + Modification Time + Web Retrieval Time + True if the file is visible for the customer + + + + + + + + + diff --git a/wob/transact/order.wolf b/wob/transact/order.wolf index ab555c6..20f3bd1 100644 --- a/wob/transact/order.wolf +++ b/wob/transact/order.wolf @@ -484,9 +484,9 @@ - + - + @@ -497,21 +497,18 @@ - - - - + Stores a document associated with an order. Overwrites the document if it already exists, creates it otherwise. - - - - + + The document to be set. + Hint: the fileid is ignored, matching happens through orderid and filename. + - + @@ -520,7 +517,7 @@ - + @@ -528,17 +525,16 @@ Sends an eMail to a customer. Usually to update the customer about Order data. ID of the customer. Must be given! The mail address associated with the account is used. - Additional Cc addresses - usually extracted from the customer contact information. - Content of the eMail. + Content of the eMail. - + Gets all settings pertaining to Print@Home - + @@ -548,7 +544,7 @@ - + diff --git a/www/config.php.template b/www/config.php.template index ea3e67a..bc5b1b7 100644 --- a/www/config.php.template +++ b/www/config.php.template @@ -13,7 +13,7 @@ //create engine: server-host, user, password -$db = new MysqlEngine("localhost","smoke",""); +$db = new MysqlEngine("192.168.1.5","smoke",""); //set database name //$db->setDbName("smoke2"); $db->setDbName("DB396352"); diff --git a/www/images/README b/www/images/README index fc6c29f..5bce397 100644 --- a/www/images/README +++ b/www/images/README @@ -5,4 +5,8 @@ The flags (de.png, en.png) were originally pulled from Wikipedia, where they were listed as being in the public domain. The Logo (logo.png) is under the same license as the rest of the documentation, -see the global README file for details. \ No newline at end of file +see the global README file for details. + +The maintenance.png Icon was copied from the KDE Oxygen Icon Theme and is +distributed under the GNU LGPL v3 or any newer. Its original file name was +preferences-system.png. diff --git a/www/images/arrowdown.png b/www/images/arrowdown.png deleted file mode 100644 index 683c465cea3449012360934c3b8cb835f206c424..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 206 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!D3?x-;bCrM;TYyi9>;M1%fy~fDm+OEOV@Z%- zFoVOh8)+a;lDE4HLkFv@2av;A;1OBOz`!jG!i)^F=12eq*-JcqUDQ2Tq8=H^K)}k^GXLfS6>2@R`PUl4B@z*oZ!Ip&0gY(eS^S% oW`QJo2B$N;3P(;bIPvf>?CxSel@RdwFHkjur>mdKI;Vst09HISvH$=8 diff --git a/www/images/arrowdown.png b/www/images/arrowdown.png new file mode 120000 index 0000000..9bffeb0 --- /dev/null +++ b/www/images/arrowdown.png @@ -0,0 +1 @@ +../../icons/arrows/arrowdown.png \ No newline at end of file diff --git a/www/images/de.png b/www/images/de.png deleted file mode 100644 index 8482b19dc9f8fa5c85b326ec6b25576b86dbdfc6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 238 zcmeAS@N?(olHy`uVBq!ia0vp^3P3Et!N$PA$iVJ<9>`%V4sv&5Sa(k5C6L3G|H(?D8gCb5n0T@z%2~Ij105pNB{-dOFVsD*>AD42r!!}cfYa&3gvmaIEHu} zzdHFKZ-W63^IffEg^mA(dM@zJP_1e7>b+pA^Jm?h?zv{3D`!8t68!de_jaZBX1ljwEP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01ejw01ejxLMWSf00007bV*G`2igY& z5Cjs*z{!#T00X8;L_t(Y$E}rZOxtA?#eaRFm{Emvt%Hni6zL#pH)jFZ`1YHtTm0^)kqAMoLdGk*w!!U5riWbIz0}V{=NX<0j4(G5 zWO~TOcv>c|KLZg0`QDfG;2g$xpq8IM_y|Mw>BvX_z8C;bUvyDnItPG8HGrr0P^3q4 z@5-PccRQ&?pAiU7MVf8aQZnCt3$?Kf?GLk2wp&a^?EUg%wzjt*J>d%B%iDv;TFkxS zBWP4{tIpeEDq=*@M|F;pt&Sd2O_!0@T6@V37qXNnRv}-r@yYF<5(rN5_$jQnN$Vjh z#+>v`q^GJ0*&Qeg^7vhojoMg7vc*iu?m+gmhF{12VJ18uA&{LN*m!iuvzs|kwu4FI z`%K@uP3Ex?HYYxX=KS|;$jv6c<`N0pQrPu!4l+|Mx_CK;HYZ)(PNc%!NXd_1bMuQ% zUL4Or+vbgma}o8H9whn(x?kN-@`pyQCXFtfxWBbS+&S4rtX@ZAZ4JtTJVMi9j@t$~ z_LY4_GMlxO!v6D2be;h~Z7hr2@lt41anx1jQ$Blxm2~9VHZM?!W;~8MSBUbVPVSuS zqC~Hw#`a`1OvO@;QCl_%|6Si!DTxn zUro^W`H}w`$1@0owb14Tyx6Rz%O;r#&rxsbiTwH&c=tzmtL+Y6Pa0(=6m3ZEu@"checkout")); } + ///callback for the GetCreateCustomerHints transaction static public function createHints($trans) { $trans->setcontacttypes( WOContactType::fromTableArraycontacttype( WTcontacttype::selectFromDB())); @@ -616,6 +617,36 @@ class WOCustomer extends WOCustomerAbstract $trans->setstates($rs); } } + + ///callback for the SendCustomerMail transaction + static public function sendMail($trans) + { + //get customer basics + $ct=WTcustomer::getFromDB($trans->getcustomerid()); + if(!is_a($ct,"WTcustomer")){ + return; + } + if(!isEmail($ct->email)){ + return; + } + //parse mail + $page=explode("\n",trim($trans->getcontent())); + if(count($page)<2)return; + $subject=array_shift($page); + $mode=0; + $mailtext="";$mailheader=""; + foreach($page as $line){ + if($mode==0){ + if(trim($line)=="")$mode=1; + else $mailheader.=$line."\n"; + }else{ + $mailtext.=$line."\n"; + } + } + //send mail + mail($ct->email,$subject,$mailtext,$mailheader); + + } }; //eof diff --git a/www/inc/wext/order.php b/www/inc/wext/order.php index cfcb061..64fb6d7 100644 --- a/www/inc/wext/order.php +++ b/www/inc/wext/order.php @@ -1007,11 +1007,12 @@ class WOOrder extends WOOrderAbstract $res=array(); $cfg=WTconfig::selectFromDB(); foreach($cfg as $c) { - if(strncmp($c->ckey,"printathome:",12)==0) - $r=new WOKeyValuePair(); + if(strncmp($c->ckey,"printathome:",12)==0){ + $r=new WOKeyValuePair; $r->setkey(substr($c->ckey,12)); $r->setvalue($c->cval); $res[]=$r; + } } $trans->setsettings($res); @@ -1030,6 +1031,44 @@ class WOOrder extends WOOrderAbstract } } + + static public function getOrderDocumentNames($trans) + { + global $db; + $q="orderid=".$db->escapeInt($trans->getorderid()); + $trans->setdocumentinfo(WOOrderDocumentInfo::fromTableArrayorderdocuments( + WTorderdocuments::selectFromDB($q))); + } + + static public function getOrderDocument($trans) + { + global $db; + $q="orderid=".$db->escapeInt($trans->getorderid())." AND filename=". + $db->escapeString($trans->getfilename()); + $tab=WTorderdocuments::selectFromDB($q); + if(count($tab)>0) + $trans->setdocument(WOOrderDocument::fromTableorderdocuments($tab[0])); + } + + static public function setOrderDocument($trans) + { + global $db; + $doc=$trans->getdocument(); + $q="orderid=".$db->escapeInt($doc->getorderid())." AND filename=". + $db->escapeString($doc->getfilename()); + $tab=WTorderdocuments::selectFromDB($q); + if(count($tab)>0) + $nrow=$tab[0]; + else + $nrow=WTorderdocuments::newRow(array( + "orderid"=>$doc->getorderid(), + "filename"=>$doc->getfilename() + )); + $nrow->content=$doc->getcontent(); + $nrow->mtime=time(); + $nrow->visible=$doc->getvisible(); + $nrow->insertOrUpdate(); + } }; diff --git a/www/index.php b/www/index.php index 660744b..f903fcc 100644 --- a/www/index.php +++ b/www/index.php @@ -4,6 +4,12 @@ // protected under the GNU AGPL version 3 or at your option any newer // see COPYING.AGPL +//bail out during maintenance +if(file_exists("maintenance.php")){ + include("maintenance.php"); + die(""); +} + //basics include('inc/loader.php'); include('inc/loader_nonadmin.php'); diff --git a/www/machine.php b/www/machine.php index ce642d1..f9ec7ee 100644 --- a/www/machine.php +++ b/www/machine.php @@ -3,6 +3,10 @@ // protected under the GNU AGPL version 3 or at your option any newer // see COPYING.AGPL +//check for maintenance mode +if(file_exists("maintenance.php")) + die(""); + //fix content-type to something that is not manipulated by proxies header("Content-Type: application/x-MagicSmoke"); diff --git a/www/maintenance.php.template b/www/maintenance.php.template new file mode 100644 index 0000000..66be0f3 --- /dev/null +++ b/www/maintenance.php.template @@ -0,0 +1,29 @@ + + +Maintenance + + + +

Sorry, down for Maintenance

+ +

We are currently executing important maintenance tasks to make your experience as good as possible. +We are trying our best to make this maintenance window as short as possible.

+ +

Please return in one or two hours.

+ +

Wir führen gerade Wartungsarbeiten durch

+ +

...damit unsere Webseite so gut wie möglich für Sie funktioniert. Wir versuchen unser +bestes den Ausfall so kurz wie möglich zu gestalten.

+ +

Bitte kommen Sie in ein bis zwei Stunden wieder.

+ + + diff --git a/www/template/en/ordermail.txt b/www/template/en/ordermail.txt index 2a8c342..a5b4f81 100644 --- a/www/template/en/ordermail.txt +++ b/www/template/en/ordermail.txt @@ -6,8 +6,9 @@ The first non-empty line contains the subject, subsequent lines contain the headers, then an empty line and after that the body of the mail. #} -Order {{order.orderid}} Details at MagicSmoke.silmor.de -From: no-reply@localdomain.com +Order {{order.orderid}} Details at MagicSmoke.silmor.de +From: no-reply@localhost +Bcc: info@localhost Content-Type: multipart/alternative; boundary="------boundary-aYAmoTT04MIpviI" MIME-Version: 1.0 -- 1.7.2.5