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