Sophie

Sophie

distrib > Arklinux > devel > i586 > media > main > by-pkgid > 551609c23f28e4be31292a04dbe5a613 > files > 2769

qt3-devel-3.3.8b-6ark.i586.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- /home/espenr/tmp/qt-3.3.8-espenr-2499/qt-x11-free-3.3.8/doc/tutorial2.doc:9 -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>chart/chartform.cpp Example File</title>
<style type="text/css"><!--
fn { margin-left: 1cm; text-indent: -1cm; }
a:link { color: #004faf; text-decoration: none }
a:visited { color: #672967; text-decoration: none }
body { background: #ffffff; color: black; }
--></style>
</head>
<body>

<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr bgcolor="#E5E5E5">
<td valign=center>
 <a href="index.html">
<font color="#004faf">Home</font></a>
 | <a href="classes.html">
<font color="#004faf">All&nbsp;Classes</font></a>
 | <a href="mainclasses.html">
<font color="#004faf">Main&nbsp;Classes</font></a>
 | <a href="annotated.html">
<font color="#004faf">Annotated</font></a>
 | <a href="groups.html">
<font color="#004faf">Grouped&nbsp;Classes</font></a>
 | <a href="functions.html">
<font color="#004faf">Functions</font></a>
</td>
<td align="right" valign="center"><img src="logo32.png" align="right" width="64" height="32" border="0"></td></tr></table><h1 align=center>chart/chartform.cpp Example File</h1>

 
<pre>#include "canvasview.h"
#include "chartform.h"
#include "optionsform.h"
#include "setdataform.h"

#include &lt;<a href="qaction-h.html">qaction.h</a>&gt;
#include &lt;<a href="qapplication-h.html">qapplication.h</a>&gt;
#include &lt;<a href="qcombobox-h.html">qcombobox.h</a>&gt;
#include &lt;<a href="qfile-h.html">qfile.h</a>&gt;
#include &lt;<a href="qfiledialog-h.html">qfiledialog.h</a>&gt;
#include &lt;<a href="qfont-h.html">qfont.h</a>&gt;
#include &lt;<a href="qfontdialog-h.html">qfontdialog.h</a>&gt;
#include &lt;<a href="qmenubar-h.html">qmenubar.h</a>&gt;
#include &lt;<a href="qmessagebox-h.html">qmessagebox.h</a>&gt;
#include &lt;<a href="qpixmap-h.html">qpixmap.h</a>&gt;
#include &lt;<a href="qpopupmenu-h.html">qpopupmenu.h</a>&gt;
#include &lt;<a href="qprinter-h.html">qprinter.h</a>&gt;
#include &lt;<a href="qradiobutton-h.html">qradiobutton.h</a>&gt;
#include &lt;<a href="qsettings-h.html">qsettings.h</a>&gt;
#include &lt;<a href="qspinbox-h.html">qspinbox.h</a>&gt;
#include &lt;<a href="qstatusbar-h.html">qstatusbar.h</a>&gt;
#include &lt;<a href="qtoolbar-h.html">qtoolbar.h</a>&gt;
#include &lt;<a href="qtoolbutton-h.html">qtoolbutton.h</a>&gt;

#include "images/file_new.xpm"
#include "images/file_open.xpm"
#include "images/file_save.xpm"
#include "images/file_print.xpm"
#include "images/options_setdata.xpm"
#include "images/options_setfont.xpm"
#include "images/options_setoptions.xpm"
#include "images/options_horizontalbarchart.xpm"
#include "images/options_piechart.xpm"
#include "images/options_verticalbarchart.xpm"


const <a href="qstring.html">QString</a> WINDOWS_REGISTRY = "/Trolltech/QtExamples";
const <a href="qstring.html">QString</a> APP_KEY = "/Chart/";


<a name="f148"></a>ChartForm::ChartForm( const <a href="qstring.html">QString</a>&amp; filename )
    : <a href="qmainwindow.html">QMainWindow</a>( 0, 0, WDestructiveClose )
{
    <a href="qwidget.html#setIcon">setIcon</a>( QPixmap( options_piechart ) );

    <a href="qaction.html">QAction</a> *fileNewAction;
    <a href="qaction.html">QAction</a> *fileOpenAction;
    <a href="qaction.html">QAction</a> *fileSaveAction;
    <a href="qaction.html">QAction</a> *fileSaveAsAction;
    <a href="qaction.html">QAction</a> *fileSaveAsPixmapAction;
    <a href="qaction.html">QAction</a> *filePrintAction;
    <a href="qaction.html">QAction</a> *fileQuitAction;
    <a href="qaction.html">QAction</a> *optionsSetDataAction;
    <a href="qaction.html">QAction</a> *optionsSetFontAction;
    <a href="qaction.html">QAction</a> *optionsSetOptionsAction;

    fileNewAction = new <a href="qaction.html">QAction</a>(
            "New Chart", QPixmap( file_new ),
            "&amp;New", CTRL+Key_N, this, "new" );
<a name="x2869"></a>    <a href="qobject.html#connect">connect</a>( fileNewAction, SIGNAL( <a href="qaction.html#activated">activated</a>() ), this, SLOT( fileNew() ) );

    fileOpenAction = new <a href="qaction.html">QAction</a>(
            "Open Chart", QPixmap( file_open ),
            "&amp;Open...", CTRL+Key_O, this, "open" );
    <a href="qobject.html#connect">connect</a>( fileOpenAction, SIGNAL( <a href="qaction.html#activated">activated</a>() ), this, SLOT( fileOpen() ) );

    fileSaveAction = new <a href="qaction.html">QAction</a>(
            "Save Chart", QPixmap( file_save ),
            "&amp;Save", CTRL+Key_S, this, "save" );
    <a href="qobject.html#connect">connect</a>( fileSaveAction, SIGNAL( <a href="qaction.html#activated">activated</a>() ), this, SLOT( fileSave() ) );

    fileSaveAsAction = new <a href="qaction.html">QAction</a>(
            "Save Chart As", QPixmap( file_save ),
            "Save &amp;As...", 0, this, "save as" );
    <a href="qobject.html#connect">connect</a>( fileSaveAsAction, SIGNAL( <a href="qaction.html#activated">activated</a>() ),
             this, SLOT( fileSaveAs() ) );

    fileSaveAsPixmapAction = new <a href="qaction.html">QAction</a>(
            "Save Chart As Bitmap", QPixmap( file_save ),
            "Save As &amp;Bitmap...", CTRL+Key_B, this, "save as bitmap" );
    <a href="qobject.html#connect">connect</a>( fileSaveAsPixmapAction, SIGNAL( <a href="qaction.html#activated">activated</a>() ),
             this, SLOT( fileSaveAsPixmap() ) );

    filePrintAction = new <a href="qaction.html">QAction</a>(
            "Print Chart", QPixmap( file_print ),
            "&amp;Print Chart...", CTRL+Key_P, this, "print chart" );
    <a href="qobject.html#connect">connect</a>( filePrintAction, SIGNAL( <a href="qaction.html#activated">activated</a>() ),
             this, SLOT( filePrint() ) );

    optionsSetDataAction = new <a href="qaction.html">QAction</a>(
            "Set Data", QPixmap( options_setdata ),
            "Set &amp;Data...", CTRL+Key_D, this, "set data" );
    <a href="qobject.html#connect">connect</a>( optionsSetDataAction, SIGNAL( <a href="qaction.html#activated">activated</a>() ),
             this, SLOT( optionsSetData() ) );


    <a href="qactiongroup.html">QActionGroup</a> *chartGroup = new <a href="qactiongroup.html">QActionGroup</a>( this ); // Connected later
<a name="x2874"></a>    chartGroup-&gt;<a href="qactiongroup.html#setExclusive">setExclusive</a>( TRUE );

    optionsPieChartAction = new <a href="qaction.html">QAction</a>(
            "Pie Chart", QPixmap( options_piechart ),
            "&amp;Pie Chart", CTRL+Key_I, chartGroup, "pie chart" );
<a name="x2872"></a>    optionsPieChartAction-&gt;<a href="qaction.html#setToggleAction">setToggleAction</a>( TRUE );

    optionsHorizontalBarChartAction = new <a href="qaction.html">QAction</a>(
            "Horizontal Bar Chart", QPixmap( options_horizontalbarchart ),
            "&amp;Horizontal Bar Chart", CTRL+Key_H, chartGroup,
            "horizontal bar chart" );
    optionsHorizontalBarChartAction-&gt;<a href="qaction.html#setToggleAction">setToggleAction</a>( TRUE );

    optionsVerticalBarChartAction = new <a href="qaction.html">QAction</a>(
            "Vertical Bar Chart", QPixmap( options_verticalbarchart ),
            "&amp;Vertical Bar Chart", CTRL+Key_V, chartGroup, "Vertical bar chart" );
    optionsVerticalBarChartAction-&gt;<a href="qaction.html#setToggleAction">setToggleAction</a>( TRUE );


    optionsSetFontAction = new <a href="qaction.html">QAction</a>(
            "Set Font", QPixmap( options_setfont ),
            "Set &amp;Font...", CTRL+Key_F, this, "set font" );
    <a href="qobject.html#connect">connect</a>( optionsSetFontAction, SIGNAL( <a href="qaction.html#activated">activated</a>() ),
             this, SLOT( optionsSetFont() ) );

    optionsSetOptionsAction = new <a href="qaction.html">QAction</a>(
            "Set Options", QPixmap( options_setoptions ),
            "Set &amp;Options...", 0, this, "set options" );
    <a href="qobject.html#connect">connect</a>( optionsSetOptionsAction, SIGNAL( <a href="qaction.html#activated">activated</a>() ),
             this, SLOT( optionsSetOptions() ) );

    fileQuitAction = new <a href="qaction.html">QAction</a>( "Quit", "&amp;Quit", CTRL+Key_Q, this, "quit" );
    <a href="qobject.html#connect">connect</a>( fileQuitAction, SIGNAL( <a href="qaction.html#activated">activated</a>() ), this, SLOT( fileQuit() ) );


    <a href="qtoolbar.html">QToolBar</a>* fileTools = new <a href="qtoolbar.html">QToolBar</a>( this, "file operations" );
<a name="x2895"></a>    fileTools-&gt;<a href="qtoolbar.html#setLabel">setLabel</a>( "File Operations" );
<a name="x2870"></a>    fileNewAction-&gt;<a href="qaction.html#addTo">addTo</a>( fileTools );
    fileOpenAction-&gt;<a href="qaction.html#addTo">addTo</a>( fileTools );
    fileSaveAction-&gt;<a href="qaction.html#addTo">addTo</a>( fileTools );
<a name="x2894"></a>    fileTools-&gt;<a href="qtoolbar.html#addSeparator">addSeparator</a>();
    filePrintAction-&gt;<a href="qaction.html#addTo">addTo</a>( fileTools );

    <a href="qtoolbar.html">QToolBar</a> *optionsTools = new <a href="qtoolbar.html">QToolBar</a>( this, "options operations" );
    optionsTools-&gt;<a href="qtoolbar.html#setLabel">setLabel</a>( "Options Operations" );
    optionsSetDataAction-&gt;<a href="qaction.html#addTo">addTo</a>( optionsTools );
    optionsTools-&gt;<a href="qtoolbar.html#addSeparator">addSeparator</a>();
    optionsPieChartAction-&gt;<a href="qaction.html#addTo">addTo</a>( optionsTools );
    optionsHorizontalBarChartAction-&gt;<a href="qaction.html#addTo">addTo</a>( optionsTools );
    optionsVerticalBarChartAction-&gt;<a href="qaction.html#addTo">addTo</a>( optionsTools );
    optionsTools-&gt;<a href="qtoolbar.html#addSeparator">addSeparator</a>();
    optionsSetFontAction-&gt;<a href="qaction.html#addTo">addTo</a>( optionsTools );
    optionsTools-&gt;<a href="qtoolbar.html#addSeparator">addSeparator</a>();
    optionsSetOptionsAction-&gt;<a href="qaction.html#addTo">addTo</a>( optionsTools );

    fileMenu = new <a href="qpopupmenu.html">QPopupMenu</a>( this );
    <a href="qmainwindow.html#menuBar">menuBar</a>()-&gt;insertItem( "&amp;File", fileMenu );
    fileNewAction-&gt;<a href="qaction.html#addTo">addTo</a>( fileMenu );
    fileOpenAction-&gt;<a href="qaction.html#addTo">addTo</a>( fileMenu );
    fileSaveAction-&gt;<a href="qaction.html#addTo">addTo</a>( fileMenu );
    fileSaveAsAction-&gt;<a href="qaction.html#addTo">addTo</a>( fileMenu );
    fileMenu-&gt;<a href="qmenudata.html#insertSeparator">insertSeparator</a>();
    fileSaveAsPixmapAction-&gt;<a href="qaction.html#addTo">addTo</a>( fileMenu );
    fileMenu-&gt;<a href="qmenudata.html#insertSeparator">insertSeparator</a>();
    filePrintAction-&gt;<a href="qaction.html#addTo">addTo</a>( fileMenu );
    fileMenu-&gt;<a href="qmenudata.html#insertSeparator">insertSeparator</a>();
    fileQuitAction-&gt;<a href="qaction.html#addTo">addTo</a>( fileMenu );

    optionsMenu = new <a href="qpopupmenu.html">QPopupMenu</a>( this );
    <a href="qmainwindow.html#menuBar">menuBar</a>()-&gt;insertItem( "&amp;Options", optionsMenu );
    optionsSetDataAction-&gt;<a href="qaction.html#addTo">addTo</a>( optionsMenu );
    optionsMenu-&gt;<a href="qmenudata.html#insertSeparator">insertSeparator</a>();
    optionsPieChartAction-&gt;<a href="qaction.html#addTo">addTo</a>( optionsMenu );
    optionsHorizontalBarChartAction-&gt;<a href="qaction.html#addTo">addTo</a>( optionsMenu );
    optionsVerticalBarChartAction-&gt;<a href="qaction.html#addTo">addTo</a>( optionsMenu );
    optionsMenu-&gt;<a href="qmenudata.html#insertSeparator">insertSeparator</a>();
    optionsSetFontAction-&gt;<a href="qaction.html#addTo">addTo</a>( optionsMenu );
    optionsMenu-&gt;<a href="qmenudata.html#insertSeparator">insertSeparator</a>();
    optionsSetOptionsAction-&gt;<a href="qaction.html#addTo">addTo</a>( optionsMenu );

    <a href="qmainwindow.html#menuBar">menuBar</a>()-&gt;insertSeparator();

    <a href="qpopupmenu.html">QPopupMenu</a> *helpMenu = new <a href="qpopupmenu.html">QPopupMenu</a>( this );
    <a href="qmainwindow.html#menuBar">menuBar</a>()-&gt;insertItem( "&amp;Help", helpMenu );
    helpMenu-&gt;<a href="qmenudata.html#insertItem">insertItem</a>( "&amp;Help", this, SLOT(helpHelp()), Key_F1 );
    helpMenu-&gt;<a href="qmenudata.html#insertItem">insertItem</a>( "&amp;About", this, SLOT(helpAbout()) );
    helpMenu-&gt;<a href="qmenudata.html#insertItem">insertItem</a>( "About &amp;Qt", this, SLOT(helpAboutQt()) );


    m_printer = 0;
    m_elements.resize( MAX_ELEMENTS );

    <a href="qsettings.html">QSettings</a> settings;
<a name="x2890"></a>    settings.<a href="qsettings.html#insertSearchPath">insertSearchPath</a>( QSettings::Windows, WINDOWS_REGISTRY );
    int windowWidth = settings.<a href="qsettings.html#readNumEntry">readNumEntry</a>( APP_KEY + "WindowWidth", 460 );
    int windowHeight = settings.<a href="qsettings.html#readNumEntry">readNumEntry</a>( APP_KEY + "WindowHeight", 530 );
    int windowX = settings.<a href="qsettings.html#readNumEntry">readNumEntry</a>( APP_KEY + "WindowX", -1 );
    int windowY = settings.<a href="qsettings.html#readNumEntry">readNumEntry</a>( APP_KEY + "WindowY", -1 );
    setChartType( ChartType(
            settings.<a href="qsettings.html#readNumEntry">readNumEntry</a>( APP_KEY + "ChartType", int(PIE) ) ) );
    m_addValues = AddValuesType(
                    settings.<a href="qsettings.html#readNumEntry">readNumEntry</a>( APP_KEY + "AddValues", int(NO) ));
    m_decimalPlaces = settings.<a href="qsettings.html#readNumEntry">readNumEntry</a>( APP_KEY + "Decimals", 2 );
    m_font = QFont( "Helvetica", 18, QFont::Bold );
    m_font.fromString(
            settings.<a href="qsettings.html#readEntry">readEntry</a>( APP_KEY + "Font", m_font.toString() ) );
    for ( int i = 0; i &lt; MAX_RECENTFILES; ++i ) {
        <a href="qstring.html">QString</a> filename = settings.<a href="qsettings.html#readEntry">readEntry</a>( APP_KEY + "File" +
<a name="x2893"></a>                                               QString::<a href="qstring.html#number">number</a>( i + 1 ) );
<a name="x2892"></a>        if ( !filename.<a href="qstring.html#isEmpty">isEmpty</a>() )
            m_recentFiles.push_back( filename );
    }
    if ( m_recentFiles.count() )
        updateRecentFilesMenu();


    // Connect *after* we've set the chart type on so we don't call
    // drawElements() prematurely.
<a name="x2873"></a>    <a href="qobject.html#connect">connect</a>( chartGroup, SIGNAL( <a href="qactiongroup.html#selected">selected</a>(QAction*) ),
             this, SLOT( updateChartType(QAction*) ) );

    <a href="qwidget.html#resize">resize</a>( windowWidth, windowHeight );
    if ( windowX != -1 || windowY != -1 )
        <a href="qwidget.html#move">move</a>( windowX, windowY );

    m_canvas = new <a href="qcanvas.html">QCanvas</a>( this );
<a name="x2876"></a>    m_canvas-&gt;<a href="qcanvas.html#resize">resize</a>( <a href="qwidget.html#width">width</a>(), height() );
    m_canvasView = new CanvasView( m_canvas, &amp;m_elements, this );
    <a href="qmainwindow.html#setCentralWidget">setCentralWidget</a>( m_canvasView );
    m_canvasView-&gt;<a href="qwidget.html#show">show</a>();

    if ( !filename.<a href="qstring.html#isEmpty">isEmpty</a>() )
        load( filename );
    else {
        init();
        m_elements[0].set( 20, red,    14, "Red" );
        m_elements[1].set( 70, cyan,    2, "Cyan",   darkGreen );
        m_elements[2].set( 35, blue,   11, "Blue" );
        m_elements[3].set( 55, yellow,  1, "Yellow", darkBlue );
        m_elements[4].set( 80, magenta, 1, "Magenta" );
        drawElements();
    }

    <a href="qmainwindow.html#statusBar">statusBar</a>()-&gt;message( "Ready", 2000 );
}


ChartForm::~ChartForm()
{
    delete m_printer;
}


void <a name="f149"></a>ChartForm::init()
{
    <a href="qwidget.html#setCaption">setCaption</a>( "Chart" );
    m_filename = QString::null;
    m_changed = FALSE;

    m_elements[0]  = Element( Element::INVALID, red );
    m_elements[1]  = Element( Element::INVALID, cyan );
    m_elements[2]  = Element( Element::INVALID, blue );
    m_elements[3]  = Element( Element::INVALID, yellow );
    m_elements[4]  = Element( Element::INVALID, green );
    m_elements[5]  = Element( Element::INVALID, magenta );
    m_elements[6]  = Element( Element::INVALID, darkYellow );
    m_elements[7]  = Element( Element::INVALID, darkRed );
    m_elements[8]  = Element( Element::INVALID, darkCyan );
    m_elements[9]  = Element( Element::INVALID, darkGreen );
    m_elements[10] = Element( Element::INVALID, darkMagenta );
    m_elements[11] = Element( Element::INVALID, darkBlue );
    for ( int i = 12; i &lt; MAX_ELEMENTS; ++i ) {
        double x = (double(i) / MAX_ELEMENTS) * 360;
        int y = (int(x * 256) % 105) + 151;
        int z = ((i * 17) % 105) + 151;
        m_elements[i] = Element( Element::INVALID, QColor( int(x), y, z, QColor::Hsv ) );
    }
}

<a name="x2896"></a>void ChartForm::<a href="qwidget.html#closeEvent">closeEvent</a>( <a href="qcloseevent.html">QCloseEvent</a> * )
{
    fileQuit();
}


void <a name="f150"></a>ChartForm::fileNew()
{
    if ( okToClear() ) {
        init();
        drawElements();
    }
}


void <a name="f151"></a>ChartForm::fileOpen()
{
    if ( !okToClear() )
        return;

    <a href="qstring.html">QString</a> filename = QFileDialog::<a href="qfiledialog.html#getOpenFileName">getOpenFileName</a>(
                            QString::null, "Charts (*.cht)", this,
                            "file open", "Chart -- File Open" );
    if ( !filename.<a href="qstring.html#isEmpty">isEmpty</a>() )
        load( filename );
    else
        <a href="qmainwindow.html#statusBar">statusBar</a>()-&gt;message( "File Open abandoned", 2000 );
}


void <a name="f152"></a>ChartForm::fileSaveAs()
{
    <a href="qstring.html">QString</a> filename = QFileDialog::<a href="qfiledialog.html#getSaveFileName">getSaveFileName</a>(
                            QString::null, "Charts (*.cht)", this,
                            "file save as", "Chart -- File Save As" );
    if ( !filename.<a href="qstring.html#isEmpty">isEmpty</a>() ) {
        int answer = 0;
<a name="x2878"></a>        if ( QFile::<a href="qfile.html#exists">exists</a>( filename ) )
<a name="x2889"></a>            answer = QMessageBox::<a href="qmessagebox.html#warning">warning</a>(
                            this, "Chart -- Overwrite File",
                            QString( "Overwrite\n\'%1\'?" ).
                                arg( filename ),
                            "&amp;Yes", "&amp;No", QString::null, 1, 1 );
        if ( answer == 0 ) {
            m_filename = filename;
            updateRecentFiles( filename );
            fileSave();
            return;
        }
    }
    <a href="qmainwindow.html#statusBar">statusBar</a>()-&gt;message( "Saving abandoned", 2000 );
}


void <a name="f153"></a>ChartForm::fileOpenRecent( int index )
{
    if ( !okToClear() )
        return;

    load( m_recentFiles[index] );
}


void <a name="f154"></a>ChartForm::updateRecentFiles( const <a href="qstring.html">QString</a>&amp; filename )
{
    if ( m_recentFiles.find( filename ) != m_recentFiles.end() )
        return;

    m_recentFiles.push_back( filename );
    if ( m_recentFiles.count() &gt; MAX_RECENTFILES )
        m_recentFiles.pop_front();

    updateRecentFilesMenu();
}


void <a name="f155"></a>ChartForm::updateRecentFilesMenu()
{
    for ( int i = 0; i &lt; MAX_RECENTFILES; ++i ) {
<a name="x2882"></a>        if ( fileMenu-&gt;<a href="qmenudata.html#findItem">findItem</a>( i ) )
<a name="x2885"></a>            fileMenu-&gt;<a href="qmenudata.html#removeItem">removeItem</a>( i );
        if ( i &lt; int(m_recentFiles.count()) )
            fileMenu-&gt;<a href="qmenudata.html#insertItem">insertItem</a>( QString( "&amp;%1 %2" ).
                                    arg( i + 1 ).arg( m_recentFiles[i] ),
                                  this, SLOT( fileOpenRecent(int) ),
                                  0, i );
    }
}


void <a name="f156"></a>ChartForm::fileQuit()
{
    if ( okToClear() ) {
        saveOptions();
<a name="x2875"></a>        qApp-&gt;<a href="qapplication.html#exit">exit</a>( 0 );
    }
}


bool <a name="f157"></a>ChartForm::okToClear()
{
    if ( m_changed ) {
        <a href="qstring.html">QString</a> msg;
        if ( m_filename.isEmpty() )
            msg = "Unnamed chart ";
        else
            msg = QString( "Chart '%1'\n" ).arg( m_filename );
        msg += "has been changed.";

        int x = QMessageBox::<a href="qmessagebox.html#information">information</a>( this, "Chart -- Unsaved Changes",
                                          msg, "&amp;Save", "Cancel", "&amp;Abandon",
                                          0, 1 );
        switch( x ) {
            case 0: // Save
                fileSave();
                break;
            case 1: // Cancel
            default:
                return FALSE;
            case 2: // Abandon
                break;
        }
    }

    return TRUE;
}


void <a name="f158"></a>ChartForm::saveOptions()
{
    <a href="qsettings.html">QSettings</a> settings;
    settings.<a href="qsettings.html#insertSearchPath">insertSearchPath</a>( QSettings::Windows, WINDOWS_REGISTRY );
<a name="x2891"></a>    settings.<a href="qsettings.html#writeEntry">writeEntry</a>( APP_KEY + "WindowWidth", width() );
    settings.<a href="qsettings.html#writeEntry">writeEntry</a>( APP_KEY + "WindowHeight", height() );
    settings.<a href="qsettings.html#writeEntry">writeEntry</a>( APP_KEY + "WindowX", x() );
    settings.<a href="qsettings.html#writeEntry">writeEntry</a>( APP_KEY + "WindowY", y() );
    settings.<a href="qsettings.html#writeEntry">writeEntry</a>( APP_KEY + "ChartType", int(m_chartType) );
    settings.<a href="qsettings.html#writeEntry">writeEntry</a>( APP_KEY + "AddValues", int(m_addValues) );
    settings.<a href="qsettings.html#writeEntry">writeEntry</a>( APP_KEY + "Decimals", m_decimalPlaces );
    settings.<a href="qsettings.html#writeEntry">writeEntry</a>( APP_KEY + "Font", m_font.toString() );
    for ( int i = 0; i &lt; int(m_recentFiles.count()); ++i )
        settings.<a href="qsettings.html#writeEntry">writeEntry</a>( APP_KEY + "File" + QString::number( i + 1 ),
                             m_recentFiles[i] );
}


void <a name="f159"></a>ChartForm::optionsSetData()
{
    SetDataForm *setDataForm = new SetDataForm( &amp;m_elements, m_decimalPlaces, this );
<a name="x2877"></a>    if ( setDataForm-&gt;<a href="qdialog.html#exec">exec</a>() ) {
        m_changed = TRUE;
        drawElements();
    }
    delete setDataForm;
}


void <a name="f160"></a>ChartForm::setChartType( ChartType chartType )
{
    m_chartType = chartType;
    switch ( m_chartType ) {
        case PIE:
<a name="x2871"></a>            optionsPieChartAction-&gt;<a href="qaction.html#setOn">setOn</a>( TRUE );
            break;
        case VERTICAL_BAR:
            optionsVerticalBarChartAction-&gt;<a href="qaction.html#setOn">setOn</a>( TRUE );
            break;
        case HORIZONTAL_BAR:
            optionsHorizontalBarChartAction-&gt;<a href="qaction.html#setOn">setOn</a>( TRUE );
            break;
    }
}


void <a name="f161"></a>ChartForm::updateChartType( <a href="qaction.html">QAction</a> *action )
{
    if ( action == optionsPieChartAction ) {
        m_chartType = PIE;
    }
    else if ( action == optionsHorizontalBarChartAction ) {
        m_chartType = HORIZONTAL_BAR;
    }
    else if ( action == optionsVerticalBarChartAction ) {
        m_chartType = VERTICAL_BAR;
    }

    drawElements();
}


void <a name="f162"></a>ChartForm::optionsSetFont()
{
    bool ok;
<a name="x2881"></a>    <a href="qfont.html">QFont</a> font = QFontDialog::<a href="qfontdialog.html#getFont">getFont</a>( &amp;ok, m_font, this );
    if ( ok ) {
        m_font = font;
        drawElements();
    }
}


void <a name="f163"></a>ChartForm::optionsSetOptions()
{
    OptionsForm *optionsForm = new OptionsForm( this );
    optionsForm-&gt;chartTypeComboBox-&gt;setCurrentItem( m_chartType );
    optionsForm-&gt;<a href="qwidget.html#setFont">setFont</a>( m_font );
    switch ( m_addValues ) {
        case NO:
            optionsForm-&gt;noRadioButton-&gt;setChecked( TRUE );
            break;
        case YES:
            optionsForm-&gt;yesRadioButton-&gt;setChecked( TRUE );
            break;
        case AS_PERCENTAGE:
            optionsForm-&gt;asPercentageRadioButton-&gt;setChecked( TRUE );
            break;
    }
    optionsForm-&gt;decimalPlacesSpinBox-&gt;setValue( m_decimalPlaces );
    if ( optionsForm-&gt;<a href="qdialog.html#exec">exec</a>() ) {
        setChartType( ChartType(
                optionsForm-&gt;chartTypeComboBox-&gt;currentItem()) );
<a name="x2897"></a>        m_font = optionsForm-&gt;<a href="qwidget.html#font">font</a>();
        if ( optionsForm-&gt;noRadioButton-&gt;isChecked() )
            m_addValues = NO;
        else if ( optionsForm-&gt;yesRadioButton-&gt;isChecked() )
            m_addValues = YES;
        else if ( optionsForm-&gt;asPercentageRadioButton-&gt;isChecked() )
            m_addValues = AS_PERCENTAGE;
        m_decimalPlaces = optionsForm-&gt;decimalPlacesSpinBox-&gt;value();
        drawElements();
    }
    delete optionsForm;
}


void <a name="f164"></a>ChartForm::helpHelp()
{
    <a href="qmainwindow.html#statusBar">statusBar</a>()-&gt;message( "Help is not implemented yet", 2000 );
}


void <a name="f165"></a>ChartForm::helpAbout()
{
<a name="x2886"></a>    QMessageBox::<a href="qmessagebox.html#about">about</a>( this, "Chart -- About",
                        "&lt;center&gt;&lt;h1&gt;&lt;font color=blue&gt;Chart&lt;font&gt;&lt;/h1&gt;&lt;/center&gt;"
                        "&lt;p&gt;Chart your data with &lt;i&gt;chart&lt;/i&gt;.&lt;/p&gt;"
                        );
}


void <a name="f166"></a>ChartForm::helpAboutQt()
{
<a name="x2887"></a>    QMessageBox::<a href="qmessagebox.html#aboutQt">aboutQt</a>( this, "Chart -- About Qt" );
}

</pre><!-- eof -->
<p><address><hr><div align=center>
<table width=100% cellspacing=0 border=0><tr>
<td>Copyright &copy; 2007
<a href="troll.html">Trolltech</a><td align=center><a href="trademarks.html">Trademarks</a>
<td align=right><div align=right>Qt 3.3.8</div>
</table></div></address></body>
</html>