summaryrefslogtreecommitdiffstats
path: root/src/parsers/filesearch.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/parsers/filesearch.cpp')
-rw-r--r--src/parsers/filesearch.cpp52
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 *
+ * *
+ * 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="";
+ }
+}
+
+}