You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
185 lines
4.3 KiB
185 lines
4.3 KiB
//
|
|
// C++ Implementation: resultlinkview
|
|
//
|
|
// Description:
|
|
//
|
|
//
|
|
// Author: Paulo Moura Guedes <moura@kdewebdev.org>, (C) 2004
|
|
//
|
|
// Copyright: See COPYING file that comes with this distribution
|
|
//
|
|
//
|
|
#include "resultview.h"
|
|
#include "../engine/linkstatus.h"
|
|
|
|
#include <tqpainter.h>
|
|
#include <tqcolor.h>
|
|
|
|
#include <tdelocale.h>
|
|
#include <kurl.h>
|
|
#include <kiconloader.h>
|
|
|
|
const TQString ResultView::URL_LABEL = "URL";
|
|
const TQString ResultView::STATUS_LABEL = "Status";
|
|
const TQString ResultView::MARKUP_LABEL = "Markup";
|
|
const TQString ResultView::LINK_LABEL_LABEL = "Label";
|
|
|
|
|
|
// ******************************* ResultView ********************************
|
|
|
|
ResultView::ResultView()
|
|
: col_status_(-1),
|
|
col_label_(-1),
|
|
col_url_(-1),
|
|
col_markup_(-1),
|
|
sub_menu_(0),
|
|
cell_tip_(0)
|
|
{}
|
|
|
|
|
|
ResultView::~ResultView()
|
|
{}
|
|
|
|
void ResultView::setColumns(TQStringList const& columns)
|
|
{
|
|
Q_ASSERT(columns.size() != 0);
|
|
|
|
columns_.clear();
|
|
for(uint i = 0; i != columns.size(); ++i)
|
|
{
|
|
if(columns[i] == ResultView::URL_LABEL)
|
|
{
|
|
col_url_ = i + 1;
|
|
}
|
|
else if(columns[i] == ResultView::STATUS_LABEL)
|
|
{
|
|
col_status_ = i + 1;
|
|
}
|
|
else if(columns[i] == ResultView::MARKUP_LABEL)
|
|
{
|
|
col_markup_ = i + 1;
|
|
}
|
|
else if(columns[i] == ResultView::LINK_LABEL_LABEL)
|
|
{
|
|
col_label_ = i + 1;
|
|
}
|
|
|
|
columns_.push_back(columns[i]);
|
|
}
|
|
number_of_columns_ = columns.size();
|
|
}
|
|
|
|
bool ResultView::displayableWithStatus(LinkStatus const* ls, Status const& status)
|
|
{
|
|
if(status == ResultView::good)
|
|
{
|
|
return
|
|
ls->status() == LinkStatus::SUCCESSFULL ||
|
|
ls->status() == LinkStatus::HTTP_REDIRECTION;
|
|
}
|
|
else if(status == ResultView::bad)
|
|
{
|
|
return
|
|
ls->status() == LinkStatus::BROKEN ||
|
|
ls->status() == LinkStatus::HTTP_CLIENT_ERROR ||
|
|
ls->status() == LinkStatus::HTTP_SERVER_ERROR;
|
|
}
|
|
else if(status == ResultView::malformed)
|
|
{
|
|
return ls->status() == LinkStatus::MALFORMED;
|
|
}
|
|
else if(status == ResultView::undetermined)
|
|
{
|
|
return
|
|
ls->status() == LinkStatus::UNDETERMINED ||
|
|
ls->status() == LinkStatus::TIMEOUT ||
|
|
ls->status() == LinkStatus::NOT_SUPPORTED;
|
|
}
|
|
else
|
|
return true;
|
|
}
|
|
|
|
|
|
// ******************************* ResultViewItem *****************************
|
|
|
|
ResultViewItem::ResultViewItem(LinkStatus const* linkstatus, int column_index)
|
|
: ls_((LinkStatus*)linkstatus), column_index_(column_index)
|
|
{
|
|
Q_ASSERT(ls_);
|
|
Q_ASSERT(column_index_ > 0);
|
|
}
|
|
|
|
ResultViewItem::~ResultViewItem()
|
|
{}
|
|
|
|
void ResultViewItem::setColumnIndex(int i)
|
|
{
|
|
Q_ASSERT(i > 0);
|
|
column_index_ = i;
|
|
}
|
|
|
|
int ResultViewItem::columnIndex() const
|
|
{
|
|
return column_index_;
|
|
}
|
|
|
|
LinkStatus const* ResultViewItem::linkStatus() const
|
|
{
|
|
Q_ASSERT(ls_);
|
|
return ls_;
|
|
}
|
|
|
|
TQColor const& ResultViewItem::textStatusColor() const
|
|
{
|
|
if(linkStatus()->errorOccurred())
|
|
{
|
|
//kdDebug(23100) << "ERROR: " << linkStatus()->error() << ": " << linkStatus()->absoluteUrl().prettyURL() << endl;
|
|
if(linkStatus()->error() == i18n( "Javascript not supported" ))
|
|
return TQt::lightGray;
|
|
else
|
|
return TQt::red;
|
|
}
|
|
|
|
else if(linkStatus()->absoluteUrl().hasRef())
|
|
return TQt::blue;
|
|
|
|
else if(!linkStatus()->absoluteUrl().protocol().startsWith("http"))
|
|
return TQt::darkGreen;
|
|
|
|
else
|
|
{
|
|
TQString status_code(TQString::number(linkStatus()->httpHeader().statusCode()));
|
|
|
|
if(status_code[0] == '0')
|
|
{
|
|
kdWarning(23100) << "status code == 0: " << endl;
|
|
kdWarning(23100) << linkStatus()->toString() << endl;
|
|
kdWarning(23100) << linkStatus()->httpHeader().toString() << endl;
|
|
}
|
|
//Q_ASSERT(status_code[0] != '0');
|
|
|
|
if(status_code[0] == '5')
|
|
return TQt::darkMagenta;
|
|
|
|
else if(status_code[0] == '4')
|
|
return TQt::red;
|
|
|
|
else if(status_code[0] == '3')
|
|
return TQt::blue;
|
|
|
|
else if(status_code[0] == '2')
|
|
return TQt::darkGreen;
|
|
|
|
else
|
|
return TQt::red;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|