[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [labplot] src: improve supported datetime formats
From: Stefan Gerlach <null () kde ! org>
Date: 2017-06-30 22:21:03
Message-ID: E1dR4Hg-0004A5-00 () code ! kde ! org
[Download RAW message or body]
Git commit 334ab4801c50165f81a621abcc6624defd52283c by Stefan Gerlach.
Committed on 30/06/2017 at 22:20.
Pushed by sgerlach into branch 'master'.
improve supported datetime formats
M +45 -0 src/backend/core/AbstractColumn.cpp
M +3 -0 src/backend/core/AbstractColumn.h
M +0 -8 src/backend/datasources/filters/AsciiFilter.cpp
M +0 -1 src/backend/datasources/filters/AsciiFilter.h
M +1 -1 src/kdefrontend/datasources/ImportFileWidget.cpp
M +14 -44 src/kdefrontend/dockwidgets/ColumnDock.cpp
M +5 -6 src/kdefrontend/dockwidgets/ColumnDock.h
M +16 -17 src/kdefrontend/dockwidgets/SpreadsheetDock.cpp
https://commits.kde.org/labplot/334ab4801c50165f81a621abcc6624defd52283c
diff --git a/src/backend/core/AbstractColumn.cpp \
b/src/backend/core/AbstractColumn.cpp index 2cb5a2c4..4cafdf0c 100644
--- a/src/backend/core/AbstractColumn.cpp
+++ b/src/backend/core/AbstractColumn.cpp
@@ -91,6 +91,51 @@ AbstractColumn::~AbstractColumn() {
delete m_abstract_column_private;
}
+QStringList AbstractColumn::dateFormats() {
+ QStringList dates;
+ dates << "yyyy-MM-dd";
+ dates << "yyyy/MM/dd";
+ dates << "dd/MM/yyyy";
+ dates << "dd/MM/yy";
+ dates << "dd.MM.yyyy";
+ dates << "dd.MM.yy";
+ dates << "MM/yyyy";
+ dates << "dd.MM.";
+ dates << "yyyyMMdd";
+
+ return dates;
+}
+
+QStringList AbstractColumn::timeFormats() {
+ QStringList times;
+ times << "hh";
+ times << "hh ap";
+ times << "hh:mm";
+ times << "hh:mm ap";
+ times << "hh:mm:ss";
+ times << "hh:mm:ss.zzz";
+ times << "hh:mm:ss:zzz";
+ times << "mm:ss.zzz";
+ times << "hhmmss";
+
+ return times;
+}
+
+QStringList AbstractColumn::dateTimeFormats() {
+ QStringList dateTimes;
+
+ // any combination of date and times
+ for (auto d: dateFormats())
+ dateTimes << d;
+ for (auto t: timeFormats())
+ dateTimes << t;
+ for (auto d: dateFormats())
+ for (auto t: timeFormats())
+ dateTimes << d + ' ' + t;
+
+ return dateTimes;
+}
+
/**
* \brief Convenience method for mode-dependent icon
*/
diff --git a/src/backend/core/AbstractColumn.h b/src/backend/core/AbstractColumn.h
index 93e78d68..dd38d3c6 100644
--- a/src/backend/core/AbstractColumn.h
+++ b/src/backend/core/AbstractColumn.h
@@ -130,6 +130,9 @@ public:
explicit AbstractColumn(const QString& name);
virtual ~AbstractColumn();
+ static QStringList dateFormats(); // supported date formats
+ static QStringList timeFormats(); // supported time formats
+ static QStringList dateTimeFormats(); // supported datetime formats
static QIcon iconForMode(ColumnMode mode);
virtual bool isReadOnly() const { return true; };
diff --git a/src/backend/datasources/filters/AsciiFilter.cpp \
b/src/backend/datasources/filters/AsciiFilter.cpp index a64c9ff6..f6734f0c 100644
--- a/src/backend/datasources/filters/AsciiFilter.cpp
+++ b/src/backend/datasources/filters/AsciiFilter.cpp
@@ -129,14 +129,6 @@ QStringList AsciiFilter::numberFormats() {
}
/*!
-returns the list of all supported datetime formats
-*/
-QStringList AsciiFilter::dateTimeFormats() {
- // TODO: more formats
- return (QStringList() << QLatin1String("hh:mm:ss") << \
QLatin1String("YYYY-MM-DD|T|hh:mm:ss") << QLatin1String("DD/MM/YY| |hh:mm:ss") << \
QLatin1String("DD/MM/YY| |hh:mm:ss"));
-}
-
-/*!
returns the list of all predefined data types.
*/
QStringList AsciiFilter::dataTypes() {
diff --git a/src/backend/datasources/filters/AsciiFilter.h \
b/src/backend/datasources/filters/AsciiFilter.h index d775cb14..771324e9 100644
--- a/src/backend/datasources/filters/AsciiFilter.h
+++ b/src/backend/datasources/filters/AsciiFilter.h
@@ -45,7 +45,6 @@ public:
static QStringList separatorCharacters();
static QStringList commentCharacters();
static QStringList numberFormats();
- static QStringList dateTimeFormats();
static QStringList dataTypes();
static QStringList predefinedFilters();
diff --git a/src/kdefrontend/datasources/ImportFileWidget.cpp \
b/src/kdefrontend/datasources/ImportFileWidget.cpp index b07322d2..5864a1a3 100644
--- a/src/kdefrontend/datasources/ImportFileWidget.cpp
+++ b/src/kdefrontend/datasources/ImportFileWidget.cpp
@@ -75,7 +75,7 @@ ImportFileWidget::ImportFileWidget(QWidget* parent, const QString& \
fileName) : Q asciiOptionsWidget.cbSeparatingCharacter->addItems(AsciiFilter::separatorCharacters());
asciiOptionsWidget.cbCommentCharacter->addItems(AsciiFilter::commentCharacters());
asciiOptionsWidget.cbNumbersFormat->addItems(AsciiFilter::numberFormats());
- asciiOptionsWidget.cbDateTimeFormat->addItems(AsciiFilter::dateTimeFormats());
+ asciiOptionsWidget.cbDateTimeFormat->addItems(AbstractColumn::dateTimeFormats());
asciiOptionsWidget.chbTranspose->hide(); //TODO: enable later
ui.swOptions->insertWidget(FileDataSource::Ascii, asciiw);
diff --git a/src/kdefrontend/dockwidgets/ColumnDock.cpp \
b/src/kdefrontend/dockwidgets/ColumnDock.cpp index 6dff6fd2..c0826cb2 100644
--- a/src/kdefrontend/dockwidgets/ColumnDock.cpp
+++ b/src/kdefrontend/dockwidgets/ColumnDock.cpp
@@ -3,7 +3,7 @@
Project : LabPlot
--------------------------------------------------------------------
Copyright : (C) 2011-2017 by Alexander Semke (alexander.semke@web.de)
- Copyright : (C) 2013 by Stefan Gerlach (stefan.gerlach@uni.kn)
+ Copyright : (C) 2013-2017 by Stefan Gerlach (stefan.gerlach@uni.kn)
Description : widget for column properties
***************************************************************************/
@@ -50,26 +50,6 @@
ColumnDock::ColumnDock(QWidget* parent) : QWidget(parent), m_column(0), \
m_initializing(false) { ui.setupUi(this);
- dateStrings<<"yyyy-MM-dd";
- dateStrings<<"yyyy/MM/dd";
- dateStrings<<"dd/MM/yyyy";
- dateStrings<<"dd/MM/yy";
- dateStrings<<"dd.MM.yyyy";
- dateStrings<<"dd.MM.yy";
- dateStrings<<"MM/yyyy";
- dateStrings<<"dd.MM.";
- dateStrings<<"yyyyMMdd";
-
- timeStrings<<"hh";
- timeStrings<<"hh ap";
- timeStrings<<"hh:mm";
- timeStrings<<"hh:mm ap";
- timeStrings<<"hh:mm:ss";
- timeStrings<<"hh:mm:ss.zzz";
- timeStrings<<"hh:mm:ss:zzz";
- timeStrings<<"mm:ss.zzz";
- timeStrings<<"hhmmss";
-
connect(ui.leName, SIGNAL(returnPressed()), this, SLOT(nameChanged()));
connect(ui.leComment, SIGNAL(returnPressed()), this, SLOT(commentChanged()));
connect(ui.cbType, SIGNAL(currentIndexChanged(int)), this, SLOT(typeChanged(int)));
@@ -81,13 +61,13 @@ ColumnDock::ColumnDock(QWidget* parent) : QWidget(parent), \
m_column(0), m_initia }
void ColumnDock::setColumns(QList<Column*> list) {
- m_initializing=true;
+ m_initializing = true;
m_columnsList = list;
m_column = list.first();
//check whether we have non-editable columns (e.g. columns for residuals calculated \
in XYFitCurve) bool nonEditable = false;
- foreach (Column* col, m_columnsList) {
+ for (auto* col: m_columnsList) {
Spreadsheet* s = dynamic_cast<Spreadsheet*>(col->parentAspect());
if (s) {
if (dynamic_cast<FileDataSource*>(s)) {
@@ -102,7 +82,7 @@ void ColumnDock::setColumns(QList<Column*> list) {
if (list.size() == 1) {
//names and comments of non-editable columns in a file data source can be changed.
- if ( !nonEditable && dynamic_cast<FileDataSource*>(m_column->parentAspect())!=0 ) \
{ + if (!nonEditable && dynamic_cast<FileDataSource*>(m_column->parentAspect()) != \
0) { ui.leName->setEnabled(false);
ui.leComment->setEnabled(false);
} else {
@@ -198,19 +178,10 @@ void ColumnDock::updateFormatWidgets(const \
AbstractColumn::ColumnMode columnMode ui.cbFormat->addItem(i18n("Abbreviated day \
name"), QVariant("ddd")); ui.cbFormat->addItem(i18n("Full day name"), \
QVariant("dddd")); break;
- case AbstractColumn::DateTime: {
- foreach(const QString& s, dateStrings)
- ui.cbFormat->addItem(s, QVariant(s));
-
- foreach(const QString& s, timeStrings)
+ case AbstractColumn::DateTime:
+ for (const auto& s: AbstractColumn::dateTimeFormats())
ui.cbFormat->addItem(s, QVariant(s));
-
- foreach(const QString& s1, dateStrings) {
- foreach(const QString& s2, timeStrings)
- ui.cbFormat->addItem(s1 + ' ' + s2, QVariant(s1 + ' ' + s2));
- }
break;
- }
}
if (columnMode == AbstractColumn::Numeric) {
@@ -295,7 +266,7 @@ void ColumnDock::typeChanged(int index) {
switch(columnMode) {
case AbstractColumn::Numeric: {
int digits = ui.sbPrecision->value();
- foreach(Column* col, m_columnsList) {
+ for (auto* col: m_columnsList) {
col->beginMacro(i18n("%1: change column type", col->name()));
col->setColumnMode(columnMode);
Double2StringFilter* filter = \
static_cast<Double2StringFilter*>(col->outputFilter()); @@ -306,16 +277,15 @@ void \
ColumnDock::typeChanged(int index) { break;
}
case AbstractColumn::Text:
- foreach(Column* col, m_columnsList)
+ for (auto* col: m_columnsList)
col->setColumnMode(columnMode);
break;
case AbstractColumn::Month:
case AbstractColumn::Day:
case AbstractColumn::DateTime: {
- QString format;
- foreach(Column* col, m_columnsList) {
+ for (auto* col: m_columnsList) {
col->beginMacro(i18n("%1: change column type", col->name()));
- format = ui.cbFormat->currentText();
+ QString format = ui.cbFormat->currentText();
col->setColumnMode(columnMode);
DateTime2StringFilter* filter = \
static_cast<DateTime2StringFilter*>(col->outputFilter()); filter->setFormat(format);
@@ -338,7 +308,7 @@ void ColumnDock::formatChanged(int index) {
switch(mode) {
case AbstractColumn::Numeric: {
- foreach(Column* col, m_columnsList) {
+ for (auto* col: m_columnsList) {
Double2StringFilter* filter = \
static_cast<Double2StringFilter*>(col->outputFilter());
filter->setNumericFormat(ui.cbFormat->itemData(format_index).toChar().toLatin1());
}
@@ -350,7 +320,7 @@ void ColumnDock::formatChanged(int index) {
case AbstractColumn::Day:
case AbstractColumn::DateTime: {
QString format = ui.cbFormat->itemData( ui.cbFormat->currentIndex() ).toString();
- foreach(Column* col, m_columnsList) {
+ for (auto* col: m_columnsList) {
DateTime2StringFilter* filter = \
static_cast<DateTime2StringFilter*>(col->outputFilter()); filter->setFormat(format);
}
@@ -363,7 +333,7 @@ void ColumnDock::precisionChanged(int digits) {
if (m_initializing)
return;
- foreach(Column* col, m_columnsList) {
+ for (auto* col: m_columnsList) {
Double2StringFilter * filter = \
static_cast<Double2StringFilter*>(col->outputFilter()); \
filter->setNumDigits(digits); }
@@ -374,7 +344,7 @@ void ColumnDock::plotDesignationChanged(int index) {
return;
AbstractColumn::PlotDesignation pd=AbstractColumn::PlotDesignation(index);
- foreach(Column* col, m_columnsList)
+ for (auto* col: m_columnsList)
col->setPlotDesignation(pd);
}
diff --git a/src/kdefrontend/dockwidgets/ColumnDock.h \
b/src/kdefrontend/dockwidgets/ColumnDock.h index 800d78b6..00990bc5 100644
--- a/src/kdefrontend/dockwidgets/ColumnDock.h
+++ b/src/kdefrontend/dockwidgets/ColumnDock.h
@@ -1,10 +1,10 @@
/***************************************************************************
File : ColumnDock.h
Project : LabPlot
- --------------------------------------------------------------------
- Copyright : (C) 2011 Alexander Semke
- Email (use @ for *) : alexander.semke*web.de
Description : widget for column properties
+ --------------------------------------------------------------------
+ Copyright : (C) 2011 Alexander Semke (alexander.semke@web.de)
+ Copyright : (C) 2017 Stefan Gerlach (stefan.gerlach@uni.kn)
***************************************************************************/
@@ -31,9 +31,10 @@
#define COLUMNDOCK_H
#include "backend/core/column/Column.h"
-#include <QList>
#include "ui_columndock.h"
+template <class T> class QList;
+
class ColumnDock : public QWidget {
Q_OBJECT
@@ -46,8 +47,6 @@ private:
QList<Column*> m_columnsList;
Column* m_column;
bool m_initializing;
- QStringList dateStrings;
- QStringList timeStrings;
void updateFormatWidgets(const AbstractColumn::ColumnMode);
diff --git a/src/kdefrontend/dockwidgets/SpreadsheetDock.cpp \
b/src/kdefrontend/dockwidgets/SpreadsheetDock.cpp index 31c03a10..ea1b2213 100644
--- a/src/kdefrontend/dockwidgets/SpreadsheetDock.cpp
+++ b/src/kdefrontend/dockwidgets/SpreadsheetDock.cpp
@@ -61,20 +61,20 @@ SpreadsheetDock::SpreadsheetDock(QWidget* parent): \
QWidget(parent), m_spreadshee }
/*!
-
+ set the current spreadsheet(s)
*/
-void SpreadsheetDock::setSpreadsheets(QList<Spreadsheet*> list){
+void SpreadsheetDock::setSpreadsheets(QList<Spreadsheet*> list) {
m_initializing = true;
m_spreadsheetList = list;
m_spreadsheet = list.first();
- if (list.size()==1){
+ if (list.size() == 1) {
ui.leName->setEnabled(true);
ui.leComment->setEnabled(true);
ui.leName->setText(m_spreadsheet->name());
ui.leComment->setText(m_spreadsheet->comment());
- }else{
+ } else {
//disable the fields "Name" and "Comment" if there are more then one spreadsheet
ui.leName->setEnabled(false);
ui.leComment->setEnabled(false);
@@ -99,42 +99,41 @@ void SpreadsheetDock::setSpreadsheets(QList<Spreadsheet*> list){
//*************************************************************
//****** SLOTs for changes triggered in SpreadsheetDock *******
//*************************************************************
-void SpreadsheetDock::nameChanged(){
+void SpreadsheetDock::nameChanged() {
if (m_initializing)
return;
m_spreadsheet->setName(ui.leName->text());
}
-void SpreadsheetDock::commentChanged(){
+void SpreadsheetDock::commentChanged() {
if (m_initializing)
return;
m_spreadsheet->setComment(ui.leComment->text());
}
-void SpreadsheetDock::rowCountChanged(int rows){
+void SpreadsheetDock::rowCountChanged(int rows) {
if (m_initializing)
return;
- foreach(Spreadsheet* spreadsheet, m_spreadsheetList)
+ for (auto* spreadsheet: m_spreadsheetList)
spreadsheet->setRowCount(rows);
}
-void SpreadsheetDock::columnCountChanged(int columns){
+void SpreadsheetDock::columnCountChanged(int columns) {
if (m_initializing)
return;
- foreach(Spreadsheet* spreadsheet, m_spreadsheetList)
+ for (auto* spreadsheet: m_spreadsheetList)
spreadsheet->setColumnCount(columns);
}
/*!
switches on/off the comment header in the views of the selected spreadsheets.
*/
-void SpreadsheetDock::commentsShownChanged(int state){
- Spreadsheet* spreadsheet;
- foreach(spreadsheet, m_spreadsheetList)
+void SpreadsheetDock::commentsShownChanged(int state) {
+ for (auto* spreadsheet: m_spreadsheetList)
qobject_cast<SpreadsheetView*>(spreadsheet->view())->showComments(state);
}
@@ -179,7 +178,7 @@ void SpreadsheetDock::load() {
ui.sbColumnCount->setValue(m_spreadsheet->columnCount());
ui.sbRowCount->setValue(m_spreadsheet->rowCount());
- SpreadsheetView* view= qobject_cast<SpreadsheetView*>(m_spreadsheet->view());
+ SpreadsheetView* view = qobject_cast<SpreadsheetView*>(m_spreadsheet->view());
ui.cbShowComments->setChecked(view->areCommentsShown());
}
@@ -187,7 +186,7 @@ void SpreadsheetDock::loadConfigFromTemplate(KConfig& config) {
//extract the name of the template from the file name
QString name;
int index = config.name().lastIndexOf(QDir::separator());
- if (index!=-1)
+ if (index != -1)
name = config.name().right(config.name().size() - index - 1);
else
name = config.name();
@@ -206,13 +205,13 @@ void SpreadsheetDock::loadConfigFromTemplate(KConfig& config) {
/*!
loads saved spreadsheet properties from \c config.
*/
-void SpreadsheetDock::loadConfig(KConfig& config){
+void SpreadsheetDock::loadConfig(KConfig& config) {
KConfigGroup group = config.group( "Spreadsheet" );
ui.sbColumnCount->setValue(group.readEntry("ColumnCount", \
m_spreadsheet->columnCount())); ui.sbRowCount->setValue(group.readEntry("RowCount", \
m_spreadsheet->rowCount()));
- SpreadsheetView* view= qobject_cast<SpreadsheetView*>(m_spreadsheet->view());
+ SpreadsheetView* view = qobject_cast<SpreadsheetView*>(m_spreadsheet->view());
ui.cbShowComments->setChecked(group.readEntry("ShowComments", \
view->areCommentsShown())); }
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic