00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
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 ;
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 }