mirror of
git://projects.qi-hardware.com/vido.git
synced 2024-12-22 20:39:55 +02:00
add search function and display for list of results
Signed-off-by: Mirko Lindner <mirko@qi-hardware.com>
This commit is contained in:
parent
d82627dc08
commit
bc67739281
@ -33,7 +33,6 @@ class main_window : public Gtk::Window
|
|||||||
~main_window();
|
~main_window();
|
||||||
bool actions(int);
|
bool actions(int);
|
||||||
int ctrl_state;
|
int ctrl_state;
|
||||||
// void search_dialog();
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool on_my_key_press_event(GdkEventKey *event);
|
bool on_my_key_press_event(GdkEventKey *event);
|
||||||
|
@ -23,6 +23,7 @@
|
|||||||
#include <gtkmm.h>
|
#include <gtkmm.h>
|
||||||
|
|
||||||
extern void set_html(const gchar *url);
|
extern void set_html(const gchar *url);
|
||||||
|
extern void set_search(const gchar *url);
|
||||||
|
|
||||||
search_dialog::search_dialog(main_window* parent, Glib::ustring input="")
|
search_dialog::search_dialog(main_window* parent, Glib::ustring input="")
|
||||||
{
|
{
|
||||||
@ -39,7 +40,7 @@ search_dialog::search_dialog(main_window* parent, Glib::ustring input="")
|
|||||||
dialog.show_all();
|
dialog.show_all();
|
||||||
int result = dialog.run();
|
int result = dialog.run();
|
||||||
if (result == Gtk::RESPONSE_OK) {
|
if (result == Gtk::RESPONSE_OK) {
|
||||||
set_html(entry.get_text().c_str());
|
set_search(entry.get_text().c_str());
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
59
src/vido.cc
59
src/vido.cc
@ -110,6 +110,7 @@ void set_html(const gchar *url){
|
|||||||
if (found!=std::string::npos){
|
if (found!=std::string::npos){
|
||||||
if (found != (int) 0){
|
if (found != (int) 0){
|
||||||
ns = &term[0];
|
ns = &term[0];
|
||||||
|
term = term.substr(found + 1, strlen(url));
|
||||||
}else{
|
}else{
|
||||||
term = term.substr(1, strlen(url));
|
term = term.substr(1, strlen(url));
|
||||||
ns = &term[0];
|
ns = &term[0];
|
||||||
@ -153,39 +154,53 @@ void set_html(const gchar *url){
|
|||||||
|
|
||||||
|
|
||||||
// // test functions
|
// // test functions
|
||||||
void set_berlin(const gchar *url){
|
void set_search(const gchar *url){
|
||||||
// std::cout<<"url"<<url<<".";
|
// std::cout<<"url"<<url<<".";
|
||||||
zim::File z(file);
|
zim::File z(file);
|
||||||
|
|
||||||
// zim::Search::Results result;
|
zim::Search::Results result;
|
||||||
// result.clear();
|
result.clear();
|
||||||
// zim::Search search(m);
|
zim::Search search(z);
|
||||||
std::string term;
|
std::string term;
|
||||||
term.assign( url );
|
term.assign( url );
|
||||||
// search.search(result, term);
|
|
||||||
// if (result.size() > 0){
|
|
||||||
// zim::Article article = m.getArticle(result[0].getArticle().getIndex());
|
|
||||||
//
|
|
||||||
// std::string content = article.getPage(false, 10);
|
|
||||||
//
|
|
||||||
// gtk_html_flush(GTK_HTML(html_wg));
|
|
||||||
// gtk_html_load_from_string(GTK_HTML(html_wg), content.c_str(), -1);
|
|
||||||
// }
|
|
||||||
std::replace(term.begin(), term.end(), '+', ' ');
|
std::replace(term.begin(), term.end(), '+', ' ');
|
||||||
char* ns = "A";
|
search.search(result, term);
|
||||||
try {
|
if(result.size() == 0) {
|
||||||
zim::File::const_iterator iterator = z.find(ns[0], zim::QUnicodeString(term));
|
|
||||||
zim::Article article = z.getArticle(iterator.getIndex());
|
|
||||||
if (article.isRedirect())
|
|
||||||
{
|
|
||||||
article = article.getRedirectArticle();
|
|
||||||
}
|
}
|
||||||
content = article.getData().data();
|
else if (result.size() == 1){
|
||||||
|
|
||||||
|
zim::Article article = z.getArticle(result[0].getArticle().getIndex());
|
||||||
|
|
||||||
|
std::string content = article.getPage(false, 10);
|
||||||
|
|
||||||
gtk_html_flush(GTK_HTML(html_wg));
|
gtk_html_flush(GTK_HTML(html_wg));
|
||||||
gtk_html_load_from_string(GTK_HTML(html_wg), content.c_str(), -1);
|
gtk_html_load_from_string(GTK_HTML(html_wg), content.c_str(), -1);
|
||||||
}catch(...){
|
}else{
|
||||||
|
std::string res;
|
||||||
|
for (unsigned i = 0; i < result.size(); ++i) {
|
||||||
|
res += "<li><a href=" + result[i].getArticle().getUrl().toXML() + ">" + result[i].getArticle().getTitle().toXML() + "</a></li>";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gtk_html_flush(GTK_HTML(html_wg));
|
||||||
|
gtk_html_load_from_string(GTK_HTML(html_wg), res.c_str(), -1);
|
||||||
|
|
||||||
|
}
|
||||||
|
// char* ns = "A";
|
||||||
|
|
||||||
|
// try {
|
||||||
|
// zim::File::const_iterator iterator = z.find(ns[0], zim::QUnicodeString(term));
|
||||||
|
// zim::Article article = z.getArticle(iterator.getIndex());
|
||||||
|
// if (article.isRedirect())
|
||||||
|
// {
|
||||||
|
// article = article.getRedirectArticle();
|
||||||
|
// }
|
||||||
|
// content = article.getData().data();
|
||||||
|
// gtk_html_flush(GTK_HTML(html_wg));
|
||||||
|
// gtk_html_load_from_string(GTK_HTML(html_wg), content.c_str(), -1);
|
||||||
|
// }catch(...){
|
||||||
|
// }
|
||||||
|
|
||||||
std::cout<<url<<".\n";
|
std::cout<<url<<".\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user