/**************************************************************************** ** ** Copyright (C) 1992-2008 Trolltech ASA. All rights reserved. ** ** This file is part of an example program for Qt. This example ** program may be used, distributed and modified without limitation. ** *****************************************************************************/ /**************************************************************************** ** ui.h extension file, included from the uic-generated form implementation. ** ** If you wish to add, delete or rename functions or slots use ** Qt Designer which will update this file, preserving your code. Create an ** init() function in place of a constructor, and a destroy() function in ** place of a destructor. *****************************************************************************/ void ArchiveDialog::init() { connect(&articleSearcher, SIGNAL(done(bool)), this, SLOT(searchDone(bool))); connect(&articleFetcher, SIGNAL(done(bool)), this, SLOT(fetchDone(bool))); connect(myListView, SIGNAL(selectionChanged(QListViewItem*)), this, SLOT(fetch(QListViewItem*))); connect(myLineEdit, SIGNAL(returnPressed()), this, SLOT(search())); connect(myListView, SIGNAL(returnPressed(QListViewItem*)), this, SLOT(fetch(QListViewItem*))); connect(myPushButton, SIGNAL(clicked()), this, SLOT(close())); } void ArchiveDialog::fetch( QListViewItem *it ) { QUrl u(it->text(1)); articleFetcher.setHost(u.host()); articleFetcher.get(it->text(1)); } void ArchiveDialog::fetchDone( bool error ) { if (error) { QMessageBox::critical(this, "Error fetching", "An error occurred when fetching this document: " + articleFetcher.errorString(), QMessageBox::Ok, QMessageBox::NoButton); } else { myTextBrowser->setText(articleFetcher.readAll()); } } void ArchiveDialog::search() { if (articleSearcher.state() == QHttp::HostLookup || articleSearcher.state() == QHttp::Connecting || articleSearcher.state() == QHttp::Sending || articleSearcher.state() == QHttp::Reading) { articleSearcher.abort(); } if (myLineEdit->text() == "") { QMessageBox::critical(this, "Empty query", "Please type a search string.", QMessageBox::Ok, QMessageBox::NoButton); } else { QApplication::setOverrideCursor(QCursor(Qt::WaitCursor)); articleSearcher.setHost("lists.trolltech.com"); QHttpRequestHeader header("POST", "/qt-interest/search.php"); header.setValue("Host", "lists.trolltech.com"); header.setContentType("application/x-www-form-urlencoded"); QString encodedTopic = myLineEdit->text(); QUrl::encode(encodedTopic); QString searchString = "qt-interest=on&search=" + encodedTopic; articleSearcher.request(header, searchString.utf8()); } } void ArchiveDialog::searchDone( bool error ) { if (error) { QMessageBox::critical(this, "Error searching", "An error occurred when searching: " + articleSearcher.errorString(), QMessageBox::Ok, QMessageBox::NoButton); } else { QString result(articleSearcher.readAll()); QRegExp rx("(.*)"); rx.setMinimal(TRUE); int pos = 0; while (pos >= 0) { pos = rx.search(result, pos); if (pos > -1) { pos += rx.matchedLength(); new QListViewItem(myListView, rx.cap(2), rx.cap(1)); } } } QApplication::restoreOverrideCursor(); }