ginebra2/GridView.cpp
author hgs
Fri, 15 Oct 2010 17:30:59 -0400
changeset 16 3c88a81ff781
permissions -rw-r--r--
201041
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
16
hgs
parents:
diff changeset
     1
#include "GridView.h"
hgs
parents:
diff changeset
     2
hgs
parents:
diff changeset
     3
#include <QDebug>
hgs
parents:
diff changeset
     4
#include <QStyleOptionGraphicsItem>
hgs
parents:
diff changeset
     5
#include <QPainter>
hgs
parents:
diff changeset
     6
hgs
parents:
diff changeset
     7
namespace GVA {
hgs
parents:
diff changeset
     8
hgs
parents:
diff changeset
     9
GridView::GridView(QGraphicsItem *parent) :
hgs
parents:
diff changeset
    10
    QGraphicsWidget(parent),
hgs
parents:
diff changeset
    11
    m_gridLayout(new QGraphicsGridLayout(this)),
hgs
parents:
diff changeset
    12
    m_columnCount(2),
hgs
parents:
diff changeset
    13
    m_rowCount(2)
hgs
parents:
diff changeset
    14
{
hgs
parents:
diff changeset
    15
    #ifdef Q_WS_MAEMO_5
hgs
parents:
diff changeset
    16
    m_gridLayout->setSpacing(16);
hgs
parents:
diff changeset
    17
    m_gridLayout->setContentsMargins(0, 0, 0 ,0);
hgs
parents:
diff changeset
    18
    #endif
hgs
parents:
diff changeset
    19
    
hgs
parents:
diff changeset
    20
    setLayout(m_gridLayout);
hgs
parents:
diff changeset
    21
    palette().setColor(QPalette::Normal, QPalette::Window, QColor(0, 44, 0));
hgs
parents:
diff changeset
    22
}
hgs
parents:
diff changeset
    23
hgs
parents:
diff changeset
    24
GridView::~GridView() {
hgs
parents:
diff changeset
    25
    clear();
hgs
parents:
diff changeset
    26
}
hgs
parents:
diff changeset
    27
hgs
parents:
diff changeset
    28
void GridView::setColumnRowCounts(int columns, int rows) {
hgs
parents:
diff changeset
    29
    m_columnCount = columns;
hgs
parents:
diff changeset
    30
    m_rowCount = rows;
hgs
parents:
diff changeset
    31
    
hgs
parents:
diff changeset
    32
    #ifndef Q_WS_MAEMO_5  
hgs
parents:
diff changeset
    33
    if (m_columnCount == 2) // potrait mode
hgs
parents:
diff changeset
    34
    {
hgs
parents:
diff changeset
    35
    	m_gridLayout->setVerticalSpacing(49);
hgs
parents:
diff changeset
    36
    	m_gridLayout->setHorizontalSpacing(14);
hgs
parents:
diff changeset
    37
  	}
hgs
parents:
diff changeset
    38
  	else
hgs
parents:
diff changeset
    39
  	{
hgs
parents:
diff changeset
    40
  		m_gridLayout->setVerticalSpacing(13);
hgs
parents:
diff changeset
    41
    	m_gridLayout->setHorizontalSpacing(42);
hgs
parents:
diff changeset
    42
  	}
hgs
parents:
diff changeset
    43
    m_gridLayout->setContentsMargins(0, 0, 0 ,0);
hgs
parents:
diff changeset
    44
    #endif
hgs
parents:
diff changeset
    45
    
hgs
parents:
diff changeset
    46
}
hgs
parents:
diff changeset
    47
hgs
parents:
diff changeset
    48
void GridView::rebuildLayout() {
hgs
parents:
diff changeset
    49
    int column = 0;
hgs
parents:
diff changeset
    50
    int row = 0;
hgs
parents:
diff changeset
    51
    foreach(QGraphicsLayoutItem *item, m_items) {
hgs
parents:
diff changeset
    52
        if(column == m_columnCount) {
hgs
parents:
diff changeset
    53
            row++;
hgs
parents:
diff changeset
    54
            column = 0;
hgs
parents:
diff changeset
    55
        }
hgs
parents:
diff changeset
    56
        //qDebug() << __PRETTY_FUNCTION__ << column << row;
hgs
parents:
diff changeset
    57
        m_gridLayout->addItem(item, row, column);
hgs
parents:
diff changeset
    58
        column++;
hgs
parents:
diff changeset
    59
    }
hgs
parents:
diff changeset
    60
    m_gridLayout->activate();
hgs
parents:
diff changeset
    61
}
hgs
parents:
diff changeset
    62
hgs
parents:
diff changeset
    63
void GridView::addItem(QGraphicsLayoutItem *item) {
hgs
parents:
diff changeset
    64
    m_items.append(item);
hgs
parents:
diff changeset
    65
}
hgs
parents:
diff changeset
    66
hgs
parents:
diff changeset
    67
void GridView::clear() {
hgs
parents:
diff changeset
    68
    while (!m_items.isEmpty())
hgs
parents:
diff changeset
    69
        delete m_items.takeFirst();
hgs
parents:
diff changeset
    70
}
hgs
parents:
diff changeset
    71
hgs
parents:
diff changeset
    72
hgs
parents:
diff changeset
    73
}  // namespace
hgs
parents:
diff changeset
    74