/***************************************************************************
    copyright     : (C) 1999 by Edwin Glaser
    email         : edwin@pannenleiter.de
    version       : $Id: dbgrid.h,v 1.1.1.1 2000/02/07 21:41:57 ege Exp $
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   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 DBGRID_H
#define DBGRID_H

#include <qframe.h>
//#include <qarray.h>

#include "dbdatasource.h"
#include "dbpainter.h"

/**
  * A data-aware grid
  * 
  *@author Edwin Glaser
  */

class QHeader;
class ColumnDesc;
class DBTableView;

class DBGrid : public QWidget
{
   Q_OBJECT

   friend DBTableView;

protected:
	DBDataSource *data;
	QHeader *header;
	DBTableView *view;
	ColumnDesc **desc;
	long lines;
	int columns;
	int descSize;
	bool userEnabled;
	bool autoAdjust;

	DBDataSource *getDataSource() { return data; };

public:
	DBGrid(DBDataSource *d, QWidget *parent=0, const char *name=0);
	virtual ~DBGrid();

  virtual int addColumn (int dbCol, const char * label = 0, DBWidgetFactory *factory = 0, int size = -1);
  virtual int getDBColumn (int column) const;
  virtual void setColumnText (int column, const char * label);
  virtual const char* getColumnText (int column) const;
  virtual void setColumnWidth (int column, int width);
  virtual int getColumnWidth (int column) const;
  enum WidthMode { Manual, Maximum };
  virtual void setColumnWidthMode (int column, WidthMode);
  virtual WidthMode getColumnWidthMode (int column) const;
  virtual int getAlignment(int column) const;
  virtual void setAlignment(int column, int align);
  virtual const char *getFormat(int column) const;
  virtual void setFormat(int column, const char *format);

  virtual DBWidgetFactory *getFactory(int column) const;
  virtual QWidget *getEditor(int column) const;
  virtual DBPainter *getPainter(int column) const;
  
  bool isUserEnabled () { return userEnabled; };
  int getNumColumns () { return columns; };
  const ColumnDesc *getColumnDesc(int col) { return col >= 0 && col < columns ? desc[col] : 0; };

  void setLineHeigth(int h);
  void setCurrentColumn(int col);

  bool ownesFocus () const;
	
  void setCollectKeystrokes(bool to);

protected:
  void resizeEvent ( QResizeEvent * );
  bool calcWidth();
  void selected(int row, int col);
  int pos(int section);

protected slots:
   void sizeChange ( int section, int oldSize, int newSize );
   void moved ( int from, int to ); 

public slots:
  virtual void setEnabled ( bool );

signals:
  void keystrokesCollected(QString);


};

#endif

Documentation generated by eg@wonko on Sam Feb 19 00:09:53 MET 2000