All pastes #429058 Raw Edit

Someone

public text v1 · immutable
·published 2007-04-08 00:48 UTC
rendered paste body
#include "view.h"
#include "item.h"

#include <QGraphicsScene>
#include <QRectF>
#include <QLinearGradient>
#include <QTransform>

View::View(QGraphicsScene *scene)
  : QGraphicsView(scene), 
  timerId(0)
{
    scene->setItemIndexMethod(QGraphicsScene::NoIndex); //Faster for no static scenes
    scene->setSceneRect(0, 0, 800, 600);
    
    //  setScene(scene);
    setCacheMode(CacheBackground); //The background will be cached
    setRenderHint(QPainter::SmoothPixmapTransform);
    setTransformationAnchor(AnchorUnderMouse);
    setResizeAnchor(AnchorViewCenter);

    setMinimumSize(800, 600);
    setWindowTitle("kRemas");
}

void View::itemMoved()
{
    if(!timerId)
      timerId =  startTimer(40);
}

void View::showSelected()
{
  scene->selectedItems();

  kDebug() << __FUNCTION__ << ": selected items: " <<endl;
}

void View::timerEvent(QTimerEvent *event)
{
    kDebug() << "timer event" << endl;
    
    QList<Item *> items;

    foreach (QGraphicsItem *item, scene()->items()){
	kDebug() << "metiendo uno" << endl;
	if(Item *item = qgraphicsitem_cast<Item *>(item))
	    items << item;
    }
    kDebug() << "longitud de la lista: " + QString::number(items.size()) << endl;

    foreach(Item *item, items)
	item->calculatePos();

    bool itemsMoved = false;
    foreach(Item *item, items){
	if(item->advance())
	    itemsMoved = true;
    }
    
    if (!itemsMoved){
	killTimer(timerId);
	timerId = 0;
    }
}

void View::drawBackground(QPainter *painter, const QRectF &rect)
{
    Q_UNUSED(rect);

    //    QRectF leftRect(0,0,sceneRect().width(),sceneRect().height());

    QLinearGradient gradient(QPointF(400,0),QPointF(400,600));
    gradient.setColorAt(0, Qt::white);
    gradient.setColorAt(1, Qt::gray);
    
    QTransform rotateTransform;
    //     rotateTransform.rotate(30, Qt::XAxis);
    
    painter->setTransform(rotateTransform, false);
    painter->setBrush(gradient);
    painter->drawRect(sceneRect());
    
    //     rotateTransform.rotate(-60, Qt::YAxis);
    //     painter->setTransform(rotateTransform);
    //     painter->drawRect(leftRect);
}

#include "view.moc"