These damn new files.

git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@3444 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
thunder2 2010-09-05 00:14:42 +00:00
parent 1f8017d06a
commit 2011d897ee
4 changed files with 203 additions and 0 deletions

View File

@ -0,0 +1,51 @@
/****************************************************************
* RetroShare is distributed under the following license:
*
* Copyright (C) 2009 The RetroShare Team
*
* 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.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
****************************************************************/
#include <qvariant.h>
#include <QPainter>
#include "IMHistoryItemDelegate.h"
#include "IMHistoryItemPainter.h"
IMHistoryItemDelegate::IMHistoryItemDelegate(QWidget *parent)
: QItemDelegate(parent)
{
}
void IMHistoryItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
if (qVariantCanConvert<IMHistoryItemPainter>(index.data())) {
IMHistoryItemPainter itemPainter = qVariantValue<IMHistoryItemPainter>(index.data());
itemPainter.paint(painter, option, IMHistoryItemPainter::ReadOnly);
} else {
QItemDelegate::paint(painter, option, index);
}
}
QSize IMHistoryItemDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const
{
if (qVariantCanConvert<IMHistoryItemPainter>(index.data())) {
IMHistoryItemPainter painter = qVariantValue<IMHistoryItemPainter>(index.data());
return painter.sizeHint();
} else {
return QItemDelegate::sizeHint(option, index);
}
}

View File

@ -0,0 +1,38 @@
/****************************************************************
* RetroShare is distributed under the following license:
*
* Copyright (C) 2009 The RetroShare Team
*
* 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.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
****************************************************************/
#ifndef _IMHISTORYITEMDELEGATE_H_
#define _IMHISTORYITEMDELEGATE_H_
#include <QItemDelegate>
class IMHistoryItemDelegate : public QItemDelegate
{
Q_OBJECT
public:
IMHistoryItemDelegate(QWidget *parent = 0);
void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const;
QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const;
};
#endif // _IMHISTORYITEMDELEGATE_H_

View File

@ -0,0 +1,64 @@
/****************************************************************
* RetroShare is distributed under the following license:
*
* Copyright (C) 2009 The RetroShare Team
*
* 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.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
****************************************************************/
#include <QTextDocument>
#include <QPainter>
#include <QAbstractTextDocumentLayout>
#include "IMHistoryItemPainter.h"
IMHistoryItemPainter::IMHistoryItemPainter(QString text)
{
itemText = text;
/* calcultate size */
QTextDocument doc;
doc.setHtml(itemText);
size = doc.size().toSize();
}
QSize IMHistoryItemPainter::sizeHint() const
{
return size;
}
void IMHistoryItemPainter::paint(QPainter *painter, const QStyleOptionViewItem &option, EditMode mode) const
{
// if (mode == Editable) {
// painter->setBrush(option.palette.highlight());
// } else {
painter->setBrush(option.palette.foreground());
// }
if (option.state & QStyle::State_Selected) {
painter->fillRect(option.rect, option.palette.highlight());
}
painter->save();
QTextDocument doc;
doc.setHtml(itemText);
QAbstractTextDocumentLayout::PaintContext context;
doc.setPageSize(option.rect.size());
painter->translate(option.rect.x(), option.rect.y());
doc.documentLayout()->draw(painter, context);
painter->restore();
}

View File

@ -0,0 +1,50 @@
/****************************************************************
* RetroShare is distributed under the following license:
*
* Copyright (C) 2009 The RetroShare Team
*
* 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.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
****************************************************************/
#ifndef _IMHISTORYITEMPAINTER_H_
#define _IMHISTORYITEMPAINTER_H_
#include <QMetaType>
#include <QString>
#include <QStyleOption>
#include "IMHistoryItem.h"
class QPainter;
class IMHistoryItemPainter
{
public:
enum EditMode { /*Editable,*/ ReadOnly };
IMHistoryItemPainter(QString text = "");
void paint(QPainter *painter, const QStyleOptionViewItem &option, EditMode mode) const;
QSize sizeHint() const;
private:
QString itemText;
QSize size;
};
Q_DECLARE_METATYPE(IMHistoryItemPainter)
#endif // _IMHISTORYITEMPAINTER_H_