Released version 6.1.3

This commit is contained in:
Wodann 2018-08-02 11:01:31 -04:00
commit a94503cb82
1885 changed files with 276310 additions and 0 deletions

View file

@ -0,0 +1,13 @@
#include <qapplication.h>
#include "mainwindow.h"
int main( int argc, char **argv )
{
QApplication a( argc, argv );
MainWindow window;
window.resize( 800, 600 );
window.show();
return a.exec();
}

View file

@ -0,0 +1,58 @@
#include "plot.h"
#include "panel.h"
#include "mainwindow.h"
#include <qwt_date.h>
#include <qwt_scale_widget.h>
#include <qlayout.h>
MainWindow::MainWindow( QWidget *parent ):
QMainWindow( parent )
{
Settings settings;
#if 1
settings.startDateTime = QDateTime( QDate( 2012, 10, 27 ), QTime( 18, 5, 0, 0 ) );
settings.endDateTime = QDateTime( QDate( 2012, 10, 28 ), QTime( 12, 12, 0, 0 ) );
#else
settings.startDateTime = QDateTime( QDate( 2011, 5, 3 ), QTime( 0, 6, 0, 0 ) );
settings.endDateTime = QDateTime( QDate( 2012, 3, 10 ), QTime( 0, 5, 0, 0 ) );
#endif
settings.maxMajorSteps = 10;
settings.maxMinorSteps = 8;
settings.maxWeeks = -1;
d_plot = new Plot();
d_panel = new Panel();
d_panel->setSettings( settings );
QWidget *box = new QWidget( this );
QHBoxLayout *layout = new QHBoxLayout( box );
layout->addWidget( d_plot, 10 );
layout->addWidget( d_panel );
setCentralWidget( box );
updatePlot();
connect( d_panel, SIGNAL( edited() ), SLOT( updatePlot() ) );
connect( d_plot->axisWidget( QwtPlot::yLeft ),
SIGNAL( scaleDivChanged() ), SLOT( updatePanel() ) );
}
void MainWindow::updatePlot()
{
d_plot->blockSignals( true );
d_plot->applySettings( d_panel->settings() );
d_plot->blockSignals( false );
}
void MainWindow::updatePanel()
{
const QwtScaleDiv scaleDiv = d_plot->axisScaleDiv( QwtPlot::yLeft );
Settings settings = d_panel->settings();
settings.startDateTime = QwtDate::toDateTime( scaleDiv.lowerBound(), Qt::LocalTime );
settings.endDateTime = QwtDate::toDateTime( scaleDiv.upperBound(), Qt::LocalTime );
d_panel->setSettings( settings );
}

View file

@ -0,0 +1,20 @@
#include <qmainwindow.h>
class Plot;
class Panel;
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow( QWidget *parent = 0 );
private Q_SLOTS:
void updatePlot();
void updatePanel();
private:
Plot *d_plot;
Panel *d_panel;
};

View file

@ -0,0 +1,95 @@
#include "panel.h"
#include "settings.h"
#include <qwt_date.h>
#include <qdatetimeedit.h>
#include <qspinbox.h>
#include <qlayout.h>
#include <qlabel.h>
Panel::Panel( QWidget *parent ):
QWidget( parent )
{
// create widgets
d_startDateTime = new QDateTimeEdit();
d_startDateTime->setDisplayFormat( "M/d/yyyy h:mm AP :zzz" );
d_startDateTime->setCalendarPopup( true );
d_endDateTime = new QDateTimeEdit();
d_endDateTime->setDisplayFormat( "M/d/yyyy h:mm AP :zzz" );
d_endDateTime->setCalendarPopup( true );
d_maxMajorSteps = new QSpinBox();
d_maxMajorSteps->setRange( 0, 50 );
d_maxMinorSteps = new QSpinBox();
d_maxMinorSteps->setRange( 0, 50 );
d_maxWeeks = new QSpinBox();
d_maxWeeks->setRange( -1, 100 );
d_maxWeeks->setSpecialValueText( "Disabled" );
// layout
QGridLayout *layout = new QGridLayout( this );
layout->setAlignment( Qt::AlignLeft | Qt::AlignTop );
int row = 0;
layout->addWidget( new QLabel( "From" ), row, 0 );
layout->addWidget( d_startDateTime, row, 1 );
row++;
layout->addWidget( new QLabel( "To" ), row, 0 );
layout->addWidget( d_endDateTime, row, 1 );
row++;
layout->addWidget( new QLabel( "Max. Major Steps" ), row, 0 );
layout->addWidget( d_maxMajorSteps, row, 1 );
row++;
layout->addWidget( new QLabel( "Max. Minor Steps" ), row, 0 );
layout->addWidget( d_maxMinorSteps, row, 1 );
row++;
layout->addWidget( new QLabel( "Max Weeks" ), row, 0 );
layout->addWidget( d_maxWeeks, row, 1 );
connect( d_startDateTime,
SIGNAL( dateTimeChanged( const QDateTime & ) ), SIGNAL( edited() ) );
connect( d_endDateTime,
SIGNAL( dateTimeChanged( const QDateTime & ) ), SIGNAL( edited() ) );
connect( d_maxMajorSteps,
SIGNAL( valueChanged( int ) ), SIGNAL( edited() ) );
connect( d_maxMinorSteps,
SIGNAL( valueChanged( int ) ), SIGNAL( edited() ) );
connect( d_maxWeeks,
SIGNAL( valueChanged( int ) ), SIGNAL( edited() ) );
}
void Panel::setSettings( const Settings &settings )
{
blockSignals( true );
d_startDateTime->setDateTime( settings.startDateTime );
d_endDateTime->setDateTime( settings.endDateTime );
d_maxMajorSteps->setValue( settings.maxMajorSteps );
d_maxMinorSteps->setValue( settings.maxMinorSteps );
d_maxWeeks->setValue( settings.maxWeeks );
blockSignals( false );
}
Settings Panel::settings() const
{
Settings settings;
settings.startDateTime = d_startDateTime->dateTime();
settings.endDateTime = d_endDateTime->dateTime();
settings.maxMajorSteps = d_maxMajorSteps->value();
settings.maxMinorSteps = d_maxMinorSteps->value();
settings.maxWeeks = d_maxWeeks->value();
return settings;
}

View file

@ -0,0 +1,32 @@
#ifndef _PANEL_
#define _PANEL_
#include "settings.h"
#include <qwidget.h>
class QDateTimeEdit;
class QSpinBox;
class Panel: public QWidget
{
Q_OBJECT
public:
Panel( QWidget *parent = NULL );
void setSettings( const Settings &);
Settings settings() const;
Q_SIGNALS:
void edited();
private:
QDateTimeEdit* d_startDateTime;
QDateTimeEdit* d_endDateTime;
QSpinBox *d_maxMajorSteps;
QSpinBox *d_maxMinorSteps;
QSpinBox *d_maxWeeks;
};
#endif

View file

@ -0,0 +1,90 @@
#include "plot.h"
#include "settings.h"
#include <qwt_date.h>
#include <qwt_date_scale_draw.h>
#include <qwt_date_scale_engine.h>
#include <qwt_plot_panner.h>
#include <qwt_plot_magnifier.h>
#include <qwt_plot_grid.h>
#include <qwt_plot_layout.h>
Plot::Plot( QWidget *parent ):
QwtPlot( parent )
{
setAutoFillBackground( true );
setPalette( Qt::darkGray );
setCanvasBackground( Qt::white );
plotLayout()->setAlignCanvasToScales( true );
initAxis( QwtPlot::yLeft, "Local Time", Qt::LocalTime );
initAxis( QwtPlot::yRight,
"Coordinated Universal Time ( UTC )", Qt::UTC );
QwtPlotPanner *panner = new QwtPlotPanner( canvas() );
QwtPlotMagnifier *magnifier = new QwtPlotMagnifier( canvas() );
for ( int axis = 0; axis < QwtPlot::axisCnt; axis++ )
{
const bool on = axis == QwtPlot::yLeft ||
axis == QwtPlot::yRight;
enableAxis( axis, on );
panner->setAxisEnabled( axis, on );
magnifier->setAxisEnabled( axis, on );
}
QwtPlotGrid *grid = new QwtPlotGrid();
grid->setMajorPen( Qt::black, 0, Qt::SolidLine );
grid->setMinorPen( Qt::gray, 0 , Qt::SolidLine );
grid->enableX( false );
grid->enableXMin( false );
grid->enableY( true );
grid->enableYMin( true );
grid->attach( this );
}
void Plot::initAxis( int axis,
const QString& title, Qt::TimeSpec timeSpec )
{
setAxisTitle( axis, title );
QwtDateScaleDraw *scaleDraw = new QwtDateScaleDraw( timeSpec );
QwtDateScaleEngine *scaleEngine = new QwtDateScaleEngine( timeSpec );
#if 0
if ( timeSpec == Qt::LocalTime )
{
scaleDraw->setTimeSpec( Qt::OffsetFromUTC );
scaleDraw->setUtcOffset( 10 );
scaleEngine->setTimeSpec( Qt::OffsetFromUTC );
scaleEngine->setUtcOffset( 10 );
}
#endif
setAxisScaleDraw( axis, scaleDraw );
setAxisScaleEngine( axis, scaleEngine );
}
void Plot::applySettings( const Settings &settings )
{
applyAxisSettings( QwtPlot::yLeft, settings );
applyAxisSettings( QwtPlot::yRight, settings );
replot();
}
void Plot::applyAxisSettings( int axis, const Settings &settings )
{
QwtDateScaleEngine *scaleEngine =
static_cast<QwtDateScaleEngine *>( axisScaleEngine( axis ) );
scaleEngine->setMaxWeeks( settings.maxWeeks );
setAxisMaxMinor( axis, settings.maxMinorSteps );
setAxisMaxMajor( axis, settings.maxMajorSteps );
setAxisScale( axis, QwtDate::toDouble( settings.startDateTime ),
QwtDate::toDouble( settings.endDateTime ) );
}

View file

@ -0,0 +1,23 @@
#ifndef _PLOT_H_
#define _PLOT_H_
#include <qwt_plot.h>
class Settings;
class Plot: public QwtPlot
{
Q_OBJECT
public:
Plot( QWidget *parent = NULL );
public Q_SLOTS:
void applySettings( const Settings & );
private:
void initAxis( int axis, const QString& title, Qt::TimeSpec );
void applyAxisSettings( int axis, const Settings & );
};
#endif

View file

@ -0,0 +1,25 @@
#ifndef _SETTINGS_H_
#define _SETTINGS_H_ 1
#include <qdatetime.h>
class Settings
{
public:
Settings():
maxMajorSteps( 10 ),
maxMinorSteps( 5 ),
maxWeeks( -1 )
{
};
QDateTime startDateTime;
QDateTime endDateTime;
int maxMajorSteps;
int maxMinorSteps;
int maxWeeks;
};
#endif

View file

@ -0,0 +1,24 @@
################################################################
# Qwt Widget Library
# Copyright (C) 1997 Josef Wilgen
# Copyright (C) 2002 Uwe Rathmann
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the Qwt License, Version 1.0
################################################################
include( $${PWD}/../playground.pri )
TARGET = timescale
HEADERS = \
panel.h \
plot.h \
mainwindow.h
SOURCES = \
panel.cpp \
plot.cpp \
mainwindow.cpp \
main.cpp