summaryrefslogtreecommitdiffstats
path: root/examples/chart/chartform.h
diff options
context:
space:
mode:
Diffstat (limited to 'examples/chart/chartform.h')
-rw-r--r--examples/chart/chartform.h90
1 files changed, 90 insertions, 0 deletions
diff --git a/examples/chart/chartform.h b/examples/chart/chartform.h
new file mode 100644
index 0000000..c265657
--- /dev/null
+++ b/examples/chart/chartform.h
@@ -0,0 +1,90 @@
+#ifndef CHARTFORM_H
+#define CHARTFORM_H
+
+#include "element.h"
+
+#include <qmainwindow.h>
+#include <qstringlist.h>
+
+
+class CanvasView;
+
+class QAction;
+class QCanvas;
+class QFont;
+class QPrinter;
+class QString;
+
+
+class ChartForm: public QMainWindow
+{
+ Q_OBJECT
+public:
+ enum { MAX_ELEMENTS = 100 };
+ enum { MAX_RECENTFILES = 9 }; // Must not exceed 9
+ enum ChartType { PIE, VERTICAL_BAR, HORIZONTAL_BAR };
+ enum AddValuesType { NO, YES, AS_PERCENTAGE };
+
+ ChartForm( const QString& filename );
+ ~ChartForm();
+
+ int chartType() { return m_chartType; }
+ void setChanged( bool changed = TRUE ) { m_changed = changed; }
+ void drawElements();
+
+ QPopupMenu *optionsMenu; // Why public? See canvasview.cpp
+
+protected:
+ virtual void closeEvent( QCloseEvent * );
+
+private slots:
+ void fileNew();
+ void fileOpen();
+ void fileOpenRecent( int index );
+ void fileSave();
+ void fileSaveAs();
+ void fileSaveAsPixmap();
+ void filePrint();
+ void fileQuit();
+ void optionsSetData();
+ void updateChartType( QAction *action );
+ void optionsSetFont();
+ void optionsSetOptions();
+ void helpHelp();
+ void helpAbout();
+ void helpAboutQt();
+ void saveOptions();
+
+private:
+ void init();
+ void load( const QString& filename );
+ bool okToClear();
+ void drawPieChart( const double scales[], double total, int count );
+ void drawVerticalBarChart( const double scales[], double total, int count );
+ void drawHorizontalBarChart( const double scales[], double total, int count );
+
+ QString valueLabel( const QString& label, double value, double total );
+ void updateRecentFiles( const QString& filename );
+ void updateRecentFilesMenu();
+ void setChartType( ChartType chartType );
+
+ QPopupMenu *fileMenu;
+ QAction *optionsPieChartAction;
+ QAction *optionsHorizontalBarChartAction;
+ QAction *optionsVerticalBarChartAction;
+
+
+ QString m_filename;
+ QStringList m_recentFiles;
+ QCanvas *m_canvas;
+ CanvasView *m_canvasView;
+ bool m_changed;
+ ElementVector m_elements;
+ QPrinter *m_printer;
+ ChartType m_chartType;
+ AddValuesType m_addValues;
+ int m_decimalPlaces;
+ QFont m_font;
+};
+
+#endif