kdeprint Library API Documentation

cupsdcomment.cpp

00001 /* 00002 * This file is part of the KDE libraries 00003 * Copyright (c) 2001 Michael Goffioul <kdeprint@swing.be> 00004 * 00005 * This library is free software; you can redistribute it and/or 00006 * modify it under the terms of the GNU Library General Public 00007 * License version 2 as published by the Free Software Foundation. 00008 * 00009 * This library is distributed in the hope that it will be useful, 00010 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00012 * Library General Public License for more details. 00013 * 00014 * You should have received a copy of the GNU Library General Public License 00015 * along with this library; see the file COPYING.LIB. If not, write to 00016 * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 00017 * Boston, MA 02111-1307, USA. 00018 **/ 00019 00020 #include "cupsdcomment.h" 00021 00022 #include <qfile.h> 00023 #include <qregexp.h> 00024 #include <klocale.h> 00025 #include <kstandarddirs.h> 00026 00027 QString Comment::comment() 00028 { 00029 QString str = comment_; 00030 str.replace(QRegExp("<[^>]*>"), ""); 00031 str += ("#\n" + example_); 00032 return str; 00033 } 00034 00035 QString Comment::toolTip() 00036 { 00037 QString str = comment_; 00038 str.replace(QRegExp("^#[\\s]*"), "").replace(QRegExp("\n#[\\s]*"), "\n"); 00039 return i18n("Do not translate the keyword between brackets (e.g. ServerName, ServerAdmin, etc.)", str.utf8()); 00040 } 00041 00042 QString Comment::key() 00043 { 00044 return key_; 00045 } 00046 00047 bool Comment::load(QFile *f) 00048 { 00049 comment_ = ""; 00050 example_ = ""; 00051 key_ = ""; 00052 QString line, *current = &comment_; 00053 while (!f->atEnd()) 00054 { 00055 f->readLine(line, 1024); 00056 if (line.left(2) == "$$") 00057 { 00058 current = &example_; 00059 } 00060 else if (line.left(2) == "%%") 00061 { 00062 key_ = line.mid(2).stripWhiteSpace(); 00063 } 00064 else if (line.left(2) == "@@") 00065 { 00066 return true; 00067 } 00068 else if (line.stripWhiteSpace().isEmpty()) 00069 { 00070 ; // do nothing 00071 } 00072 else 00073 { 00074 if (line[0] != '#') break; 00075 else 00076 { 00077 current->append(line); 00078 } 00079 } 00080 } 00081 return false; 00082 } 00083 00084 //------------------------------------------------------------------------------------------------------------ 00085 00086 QString CupsdComment::operator[] (const QString& key) 00087 { 00088 return comment(key); 00089 } 00090 00091 QString CupsdComment::comment(const QString& key) 00092 { 00093 if (comments_.count() != 0 || loadComments()) 00094 { 00095 Comment *comm = comments_.find(key); 00096 if (comm) 00097 return comm->comment(); 00098 } 00099 return QString::null; 00100 } 00101 00102 QString CupsdComment::toolTip(const QString& key) 00103 { 00104 if (comments_.count() != 0 || loadComments()) 00105 { 00106 Comment *comm = comments_.find(key); 00107 if (comm) 00108 return comm->toolTip(); 00109 } 00110 return QString::null; 00111 } 00112 00113 bool CupsdComment::loadComments() 00114 { 00115 comments_.setAutoDelete(true); 00116 comments_.clear(); 00117 QFile f(locate("data", "kdeprint/cupsd.conf.template")); 00118 if (f.exists() && f.open(IO_ReadOnly)) 00119 { 00120 Comment *comm; 00121 while (!f.atEnd()) 00122 { 00123 comm = new Comment(); 00124 if (!comm->load(&f)) 00125 break; 00126 else 00127 { 00128 if (comm->key().isEmpty()) 00129 delete comm; 00130 else 00131 comments_.insert(comm->key(), comm); 00132 } 00133 } 00134 } 00135 return true; 00136 }
KDE Logo
This file is part of the documentation for kdeprint Library Version 3.2.3.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Fri Aug 20 09:49:59 2004 by doxygen 1.3.7 written by Dimitri van Heesch, © 1997-2003