diff options
Diffstat (limited to 'tdeprint/cups/ipprequest.h')
-rw-r--r-- | tdeprint/cups/ipprequest.h | 196 |
1 files changed, 196 insertions, 0 deletions
diff --git a/tdeprint/cups/ipprequest.h b/tdeprint/cups/ipprequest.h new file mode 100644 index 000000000..ba8b2f081 --- /dev/null +++ b/tdeprint/cups/ipprequest.h @@ -0,0 +1,196 @@ +/* + * This file is part of the KDE libraries + * Copyright (c) 2001 Michael Goffioul <tdeprint@swing.be> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License version 2 as published by the Free Software Foundation. + * + * 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + **/ + +#ifndef IPPREQUEST_H +#define IPPREQUEST_H + +#include <tqstring.h> +#include <tqstringlist.h> +#include <tqtextstream.h> +#include <tqmap.h> + +#include <cups/ipp.h> + +class IppRequest +{ +public: + IppRequest(); + ~IppRequest(); + + void init(); // re-initializes the request + + // request building functions + void addMime(int group, const TQString& name, const TQString& mime); + void addKeyword(int group, const TQString& name, const TQString& key); + void addKeyword(int group, const TQString& name, const TQStringList& keys); + void addURI(int group, const TQString& name, const TQString& uri); + void addURI(int group, const TQString& name, const TQStringList& uris); + void addText(int group, const TQString& name, const TQString& txt); + void addText(int group, const TQString& name, const TQStringList& txts); + void addName(int group, const TQString& name, const TQString& nm); + void addName(int group, const TQString& name, const TQStringList& nms); + void addInteger(int group, const TQString& name, int value); + void addInteger(int group, const TQString& name, const TQValueList<int>& values); + void addEnum(int group, const TQString& name, int value); + void addEnum(int group, const TQString& name, const TQValueList<int>& values); + void addBoolean(int group, const TQString& name, bool value); + void addBoolean(int group, const TQString& name, const TQValueList<bool>& values); + + void setOperation(int op); + void setHost(const TQString& host); + void setPort(int p); + + // request answer functions + int status(); + TQString statusMessage(); + bool integer(const TQString& name, int& value); + bool boolean(const TQString& name, bool& value); + bool enumvalue(const TQString& name, int& value); + bool name(const TQString& name, TQString& value); + bool name(const TQString& name, TQStringList& value); + bool text(const TQString& name, TQString& value); + bool text(const TQString& name, TQStringList& value); + bool uri(const TQString& name, TQString& value); + bool uri(const TQString& name, TQStringList& value); + bool keyword(const TQString& name, TQString& value); + bool keyword(const TQString& name, TQStringList& value); + bool mime(const TQString& name, TQString& value); + ipp_attribute_t* first(); + ipp_attribute_t* last(); + TQMap<TQString,TQString> toMap(int group = -1); + void setMap(const TQMap<TQString,TQString>& opts); + + // processing functions + bool doRequest(const TQString& res); + bool doFileRequest(const TQString& res, const TQString& filename = TQString::null); + + // report functions + bool htmlReport(int group, TQTextStream& output); + + // debug function + void dump(int state); + +protected: + void addString_p(int group, int type, const TQString& name, const TQString& value); + void addStringList_p(int group, int type, const TQString& name, const TQStringList& values); + void addInteger_p(int group, int type, const TQString& name, int value); + void addIntegerList_p(int group, int type, const TQString& name, const TQValueList<int>& values); + bool stringValue_p(const TQString& name, TQString& value, int type); + bool stringListValue_p(const TQString& name, TQStringList& values, int type); + bool integerValue_p(const TQString& name, int& value, int type); + +private: + ipp_t *request_; + QString host_; + int port_; + bool connect_; + int dump_; +}; + +inline void IppRequest::addMime(int group, const TQString& name, const TQString& mime) +{ addString_p(group, IPP_TAG_MIMETYPE, name, mime); } + +inline void IppRequest::addKeyword(int group, const TQString& name, const TQString& key) +{ addString_p(group, IPP_TAG_KEYWORD, name, key); } + +inline void IppRequest::addKeyword(int group, const TQString& name, const TQStringList& keys) +{ addStringList_p(group, IPP_TAG_KEYWORD, name, keys); } + +inline void IppRequest::addURI(int group, const TQString& name, const TQString& uri) +{ addString_p(group, IPP_TAG_URI, name, uri); } + +inline void IppRequest::addURI(int group, const TQString& name, const TQStringList& uris) +{ addStringList_p(group, IPP_TAG_URI, name, uris); } + +inline void IppRequest::addText(int group, const TQString& name, const TQString& txt) +{ addString_p(group, IPP_TAG_TEXT, name, txt); } + +inline void IppRequest::addText(int group, const TQString& name, const TQStringList& txts) +{ addStringList_p(group, IPP_TAG_TEXT, name, txts); } + +inline void IppRequest::addName(int group, const TQString& name, const TQString& nm) +{ addString_p(group, IPP_TAG_NAME, name, nm); } + +inline void IppRequest::addName(int group, const TQString& name, const TQStringList& nms) +{ addStringList_p(group, IPP_TAG_NAME, name, nms); } + +inline void IppRequest::addInteger(int group, const TQString& name, int value) +{ addInteger_p(group, IPP_TAG_INTEGER, name, value); } + +inline void IppRequest::addInteger(int group, const TQString& name, const TQValueList<int>& values) +{ addIntegerList_p(group, IPP_TAG_INTEGER, name, values); } + +inline void IppRequest::addEnum(int group, const TQString& name, int value) +{ addInteger_p(group, IPP_TAG_ENUM, name, value); } + +inline void IppRequest::addEnum(int group, const TQString& name, const TQValueList<int>& values) +{ addIntegerList_p(group, IPP_TAG_ENUM, name, values); } + +inline bool IppRequest::integer(const TQString& name, int& value) +{ return integerValue_p(name, value, IPP_TAG_INTEGER); } + +inline bool IppRequest::enumvalue(const TQString& name, int& value) +{ return integerValue_p(name, value, IPP_TAG_ENUM); } + +inline bool IppRequest::name(const TQString& name, TQString& value) +{ return stringValue_p(name, value, IPP_TAG_NAME); } + +inline bool IppRequest::name(const TQString& name, TQStringList& values) +{ return stringListValue_p(name, values, IPP_TAG_NAME); } + +inline bool IppRequest::text(const TQString& name, TQString& value) +{ return stringValue_p(name, value, IPP_TAG_TEXT); } + +inline bool IppRequest::text(const TQString& name, TQStringList& values) +{ return stringListValue_p(name, values, IPP_TAG_TEXT); } + +inline bool IppRequest::uri(const TQString& name, TQString& value) +{ return stringValue_p(name, value, IPP_TAG_URI); } + +inline bool IppRequest::uri(const TQString& name, TQStringList& values) +{ return stringListValue_p(name, values, IPP_TAG_URI); } + +inline bool IppRequest::keyword(const TQString& name, TQString& value) +{ return stringValue_p(name, value, IPP_TAG_KEYWORD); } + +inline bool IppRequest::keyword(const TQString& name, TQStringList& values) +{ return stringListValue_p(name, values, IPP_TAG_KEYWORD); } + +inline bool IppRequest::mime(const TQString& name, TQString& value) +{ return stringValue_p(name, value, IPP_TAG_MIMETYPE); } + +inline bool IppRequest::doRequest(const TQString& res) +{ return doFileRequest(res); } + +inline ipp_attribute_t* IppRequest::first() +{ return (request_ ? request_->attrs : NULL); } + +inline ipp_attribute_t* IppRequest::last() +{ return (request_ ? request_->last : NULL); } + +inline void IppRequest::setHost(const TQString& host) +{ host_ = host; } + +inline void IppRequest::setPort(int p) +{ port_ = p; } + +inline void IppRequest::dump(int state) +{ dump_ = state; } + +#endif |