diff options
Diffstat (limited to 'src/parsers/filesearch.cpp')
-rw-r--r-- | src/parsers/filesearch.cpp | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/src/parsers/filesearch.cpp b/src/parsers/filesearch.cpp new file mode 100644 index 0000000..c0a7a36 --- /dev/null +++ b/src/parsers/filesearch.cpp @@ -0,0 +1,52 @@ +/*************************************************************************** + * Copyright (C) 2003 by Sylvain Joyeux * + * [email protected] * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + ***************************************************************************/ +#include "parsers.h" +#include "../apt.h" + +static QString + html_dpkgs_line_begin("<tr><td class=\"file\">%1</td><td>\n\t"), + html_dpkgs_line_end("\n</td></tr>\n"); + +namespace Parsers +{ + +void FileSearch::operator() (AptProtocol* slave, const QString & tag, const QString & value ) +{ + static QString buffer; + if (tag == "begin") + { + m_result_count = 0; + } + else if (tag == "error") + { + *slave << "<div class=\"error\">" + value + "</div>"; + } + else if (tag == "file") + { + if (m_result_count) + *slave << buffer + html_dpkgs_line_end; + + *slave << html_dpkgs_line_begin.arg(value); + ++m_result_count; + buffer = ""; + } + else if (tag == "package") + { + if (!buffer.isEmpty()) buffer = buffer + ", "; + buffer += "<a href=\"apt:/show?" + value + "\">" + value + "</a>"; + } + else if (tag == "end") + { + *slave << buffer + html_dpkgs_line_end; + buffer=""; + } +} + +} |