00001 #ifndef PIECHARTVIEW_H 00002 #define PIECHARTVIEW_H 00003 00004 #include <QAbstractItemView> 00005 #include <QFont> 00006 #include <QItemSelection> 00007 #include <QItemSelectionModel> 00008 #include <QModelIndex> 00009 #include <QRect> 00010 #include <QSize> 00011 #include <QPoint> 00012 #include <QWidget> 00013 00014 class QRubberBand; 00015 class Settings; 00016 00017 class PieChartView : public QAbstractItemView 00018 { 00019 Q_OBJECT 00020 00021 public: 00022 PieChartView(Settings *&set, QWidget *parent = 0); 00023 00024 QRect visualRect(const QModelIndex &index) const; 00025 void scrollTo(const QModelIndex &index, ScrollHint hint = EnsureVisible); 00026 QModelIndex indexAt(const QPoint &point) const; 00027 00028 protected: 00029 bool edit(const QModelIndex &index, EditTrigger trigger, QEvent *event); 00030 QModelIndex moveCursor(QAbstractItemView::CursorAction cursorAction, Qt::KeyboardModifiers modifiers); 00031 00032 int horizontalOffset() const; 00033 int verticalOffset() const; 00034 00035 bool isIndexHidden(const QModelIndex &index) const; 00036 00037 void setSelection(const QRect&, QItemSelectionModel::SelectionFlags command); 00038 00039 void paintEvent(QPaintEvent *event); 00040 void resizeEvent(QResizeEvent *event); 00041 void scrollContentsBy(int dx, int dy); 00042 00043 QRegion visualRegionForSelection(const QItemSelection &selection) const; 00044 00045 private: 00046 int rows(const QModelIndex &index = QModelIndex()) const; 00047 void updateGeometries(); 00048 00049 int margin; 00050 int totalSize; 00051 int pieSize; 00052 double totalValue; 00053 00054 Settings *settings; 00055 }; 00056 00057 #endif