summaryrefslogtreecommitdiff
authorcniehaus <cniehaus>2002-09-17 11:26:33 (UTC)
committer cniehaus <cniehaus>2002-09-17 11:26:33 (UTC)
commitbb15715567b88dd01f074092c1c4c3b7e0702693 (patch) (side-by-side diff)
tree01bbe60177230f5e9b5b482c4e436e454b5c933e
parent92b88813ad8d6352fbf74964fc56dfc1a2aada8c (diff)
downloadopie-bb15715567b88dd01f074092c1c4c3b7e0702693.zip
opie-bb15715567b88dd01f074092c1c4c3b7e0702693.tar.gz
opie-bb15715567b88dd01f074092c1c4c3b7e0702693.tar.bz2
first attempt of a reimplementation of paintCell
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--noncore/apps/oxygen/dataTable.cpp29
-rw-r--r--noncore/apps/oxygen/dataTable.h16
-rw-r--r--noncore/apps/oxygen/datawidgetui.cpp2
-rw-r--r--noncore/apps/oxygen/datawidgetui.h2
4 files changed, 42 insertions, 7 deletions
diff --git a/noncore/apps/oxygen/dataTable.cpp b/noncore/apps/oxygen/dataTable.cpp
index 80c0311..f03e973 100644
--- a/noncore/apps/oxygen/dataTable.cpp
+++ b/noncore/apps/oxygen/dataTable.cpp
@@ -2,23 +2,46 @@
* *
* 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. *
* *
**************************************************************************/
#include "oxygen.h"
#include "dataTable.h"
#include <qtable.h>
-dataTable::dataTable() : QTable()
+OxydataTable::OxydataTable(int numRows, int numCols, QWidget *parent,
+ const char *name) : QTable(numRows, numRows, parent, name)
{
}
-void dataTable::paintCell( QPainter *p, int, int, const QRect &cr, bool )
+
+void OxydataTable::paintCell( QPainter *p, int row, int col, const QRect &cr, bool selected)
{
- if ( currentRow()%2) qDebug("foo" );
+ if ( cr.width() == 0 || cr.height() == 0 )
+ return;
+ if ( selected &&
+ row == currentRow() &&
+ col == currentColumn() )
+ selected = FALSE;
+
+ int w = cr.width();
+ int h = cr.height();
+
+ QTableItem *itm = item( row, col );
+ if ( itm ) {
+ p->save();
+ itm->paint( p, colorGroup(), cr, selected );
+ p->restore();
+ } else {
+ if ( currentRow()%2 ) //every even row
+ p->fillRect( 0, 0, w, h, selected ? colorGroup().brush( QColorGroup::Highlight ) : colorGroup().brush( QColorGroup::Base ) );
+ else //every odd row
+ p->fillRect( 0, 0, w, h, selected ? colorGroup().brush( QColorGroup::Highlight ) : colorGroup().brush( QColorGroup::Base ) );
}
+}
+
diff --git a/noncore/apps/oxygen/dataTable.h b/noncore/apps/oxygen/dataTable.h
index 7fd9517..5adbcc2 100644
--- a/noncore/apps/oxygen/dataTable.h
+++ b/noncore/apps/oxygen/dataTable.h
@@ -1,22 +1,34 @@
/***************************************************************************
* *
* 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. *
* *
**************************************************************************/
+#ifndef _DATATABLE_H
+#define _DATATABLE_H
+
+
#include <qtable.h>
-class dataTable : public QTable
+class OxydataTable : public QTable
{
Q_OBJECT
public:
- dataTable();
+ OxydataTable();
+ OxydataTable( int numRows, int numCols,
+ QWidget *parent = 0, const char *name = 0 );
protected:
+ /*
+ * This method is reimplemented form QTable. It implements the colourisation
+ * of every second row.
+ */
virtual void paintCell( QPainter *p, int row, int col, const QRect &cr, bool selected );
};
+
+#endif
diff --git a/noncore/apps/oxygen/datawidgetui.cpp b/noncore/apps/oxygen/datawidgetui.cpp
index 79d35e5..0f8a146 100644
--- a/noncore/apps/oxygen/datawidgetui.cpp
+++ b/noncore/apps/oxygen/datawidgetui.cpp
@@ -13,25 +13,25 @@
#include <qtable.h>
#include <qstring.h>
#include <qcombobox.h>
#include <qlayout.h>
dataWidgetUI::dataWidgetUI() : QDialog()
{
this->setCaption("foo");
QVBoxLayout *vbox = new QVBoxLayout( this );
dataCombo = new QComboBox( this );
- DataTable = new QTable( 7,2, this );
+ DataTable = new OxydataTable( 7,2, this );
vbox->addWidget( dataCombo );
vbox->addWidget( DataTable );
DataTable->show();
dataCombo->show();
connect ( dataCombo, SIGNAL( activated(int) ), this, SLOT( slotShowData(int) ) );
Config test( "/home/opie/Settings/oxygendata", Config::File );
//read in all names of the 118 elements
for ( int i = 1 ; i < 119 ; i++ )
diff --git a/noncore/apps/oxygen/datawidgetui.h b/noncore/apps/oxygen/datawidgetui.h
index 0911f03..9427adf 100644
--- a/noncore/apps/oxygen/datawidgetui.h
+++ b/noncore/apps/oxygen/datawidgetui.h
@@ -13,18 +13,18 @@
class QTable;
class QComboBox;
class dataWidgetUI : public QDialog
{
Q_OBJECT
public:
dataWidgetUI();
private:
void createTableLayout();
- QTable *DataTable;
+ OxydataTable *DataTable;
QComboBox *dataCombo;
private slots:
void slotShowData(int);
};