[kmymoney/5.0] kmymoney: Allow to modify the initial section of a date edit by the user
Thomas Baumgart
null at kde.org
Sat Aug 31 16:36:37 BST 2019
Git commit 5f5848ba2b3a2148aa402fe87d8c41ba1ebdb329 by Thomas Baumgart.
Committed on 31/08/2019 at 15:36.
Pushed by tbaumgart into branch '5.0'.
Allow to modify the initial section of a date edit by the user
This introduces a new option on the data entry tab of the ledger
settings page.
GUI:
BUG: 374123
FIXED-IN: 4.8.1,5.0.7
M +48 -6 kmymoney/dialogs/settings/ksettingsregister.ui
M +9 -0 kmymoney/settings/kmymoney.kcfg
M +1 -0 kmymoney/settings/kmymoneysettings.kcfgc
M +18 -5 kmymoney/widgets/kmymoneydateinput.cpp
M +3 -0 kmymoney/widgets/kmymoneydateinput.h
https://commits.kde.org/kmymoney/5f5848ba2b3a2148aa402fe87d8c41ba1ebdb329
diff --git a/kmymoney/dialogs/settings/ksettingsregister.ui b/kmymoney/dialogs/settings/ksettingsregister.ui
index 358c81d4b..da3a1cea4 100644
--- a/kmymoney/dialogs/settings/ksettingsregister.ui
+++ b/kmymoney/dialogs/settings/ksettingsregister.ui
@@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>632</width>
- <height>500</height>
+ <height>512</height>
</rect>
</property>
<property name="windowTitle">
@@ -17,7 +17,7 @@
<item>
<widget class="QTabWidget" name="tab">
<property name="currentIndex">
- <number>2</number>
+ <number>0</number>
</property>
<widget class="QWidget" name="tab1">
<attribute name="title">
@@ -245,8 +245,50 @@
</widget>
</item>
<item>
- <layout class="QHBoxLayout">
- <item>
+ <layout class="QGridLayout" name="gridLayout">
+ <item row="0" column="0">
+ <widget class="QLabel" name="textLabel2_1">
+ <property name="text">
+ <string>Initial cursor position within the date field</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QComboBox" name="kcfg_initialDateFieldCursorPosition">
+ <item>
+ <property name="text">
+ <string>Day</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Month</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Year</string>
+ </property>
+ </item>
+ </widget>
+ </item>
+ <item row="0" column="2">
+ <spacer name="spacer16">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::Expanding</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>31</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item row="1" column="0">
<widget class="QLabel" name="textLabel2_2">
<property name="text">
<string>Default reconciliation state</string>
@@ -256,7 +298,7 @@
</property>
</widget>
</item>
- <item>
+ <item row="1" column="1">
<widget class="KComboBox" name="kcfg_defaultReconciliationState">
<property name="toolTip">
<string>Default reconciliation state for transactions entered during reconciliation of an account</string>
@@ -278,7 +320,7 @@
</item>
</widget>
</item>
- <item>
+ <item row="1" column="2">
<spacer name="spacer15">
<property name="orientation">
<enum>Qt::Horizontal</enum>
diff --git a/kmymoney/settings/kmymoney.kcfg b/kmymoney/settings/kmymoney.kcfg
index dddb670b3..3662c5add 100644
--- a/kmymoney/settings/kmymoney.kcfg
+++ b/kmymoney/settings/kmymoney.kcfg
@@ -327,6 +327,15 @@
<label>Sort order of register in search dialog</label>
<default>1,-9,-4</default>
</entry>
+ <entry name="initialDateFieldCursorPosition" type="Enum">
+ <label>Initial cursor position within the date field</label>
+ <default>Day</default>
+ <choices name="PositionType">
+ <choice name="Day"/>
+ <choice name="Month"/>
+ <choice name="Year"/>
+ </choices>
+ </entry>
<entry name="defaultReconciliationState" type="Int">
<label>Default reconciliation state for transactions entered during reconciliation</label>
<default>0</default>
diff --git a/kmymoney/settings/kmymoneysettings.kcfgc b/kmymoney/settings/kmymoneysettings.kcfgc
index ffcf13884..ea5eef567 100644
--- a/kmymoney/settings/kmymoneysettings.kcfgc
+++ b/kmymoney/settings/kmymoneysettings.kcfgc
@@ -7,3 +7,4 @@ IncludeFiles=\"kmm_settings_export.h\",\"kmymoneysettings_addon.h\"
SourceIncludeFiles=\"kmymoneysettings_addons.cpp\"
Visibility=KMM_SETTINGS_EXPORT
CustomAdditions=true
+UseEnumTypes=true
diff --git a/kmymoney/widgets/kmymoneydateinput.cpp b/kmymoney/widgets/kmymoneydateinput.cpp
index 6ecd2679d..d34e926e5 100644
--- a/kmymoney/widgets/kmymoneydateinput.cpp
+++ b/kmymoney/widgets/kmymoneydateinput.cpp
@@ -18,6 +18,7 @@
*/
#include "kmymoneydateinput.h"
+#include "kmymoneysettings.h"
// ----------------------------------------------------------------------------
// QT Includes
@@ -55,8 +56,9 @@ const int DATE_POPUP_TIMEOUT = 1500;
const QDate INVALID_DATE = QDate(1800, 1, 1);
}
-KMyMoney::OldDateEdit::OldDateEdit(const QDate& date, QWidget* parent) :
- QDateEdit(date, parent)
+KMyMoney::OldDateEdit::OldDateEdit(const QDate& date, QWidget* parent)
+ : QDateEdit(date, parent)
+ , m_initialSection(QDateTimeEdit::DaySection)
{
}
@@ -68,7 +70,7 @@ void KMyMoney::OldDateEdit::keyPressEvent(QKeyEvent* k)
// (the same meaning as clearing the date) - in this case set the date
// to the current date and let the editor do the actual work
setDate(QDate::currentDate());
- setSelectedSection(QDateTimeEdit::DaySection); // start as when focused in if the date was cleared
+ setSelectedSection(m_initialSection); // start as when focused in if the date was cleared
}
QDateEdit::keyPressEvent(k);
}
@@ -76,7 +78,7 @@ void KMyMoney::OldDateEdit::keyPressEvent(QKeyEvent* k)
void KMyMoney::OldDateEdit::focusInEvent(QFocusEvent * event)
{
QDateEdit::focusInEvent(event);
- setSelectedSection(QDateTimeEdit::DaySection);
+ setSelectedSection(m_initialSection);
}
bool KMyMoney::OldDateEdit::event(QEvent* e)
@@ -105,7 +107,7 @@ bool KMyMoney::OldDateEdit::focusNextPrevChild(bool next)
}
struct KMyMoneyDateInput::Private {
- QDateEdit *m_dateEdit;
+ KMyMoney::OldDateEdit *m_dateEdit;
KDatePicker *m_datePicker;
QDate m_date;
QDate m_prevDate;
@@ -147,6 +149,17 @@ KMyMoneyDateInput::KMyMoneyDateInput(QWidget *parent, Qt::AlignmentFlag flags)
d->m_dateFrame->hide();
d->m_dateEdit->setDisplayFormat(QLocale().dateFormat(QLocale::ShortFormat));
+ switch(KMyMoneySettings::initialDateFieldCursorPosition()) {
+ case KMyMoneySettings::Day:
+ d->m_dateEdit->setInitialSection(QDateTimeEdit::DaySection);
+ break;
+ case KMyMoneySettings::Month:
+ d->m_dateEdit->setInitialSection(QDateTimeEdit::MonthSection);
+ break;
+ case KMyMoneySettings::Year:
+ d->m_dateEdit->setInitialSection(QDateTimeEdit::YearSection);
+ break;
+ }
d->m_datePicker = new KDatePicker(d->m_date, d->m_dateFrame);
dateFrameVBoxLayout->addWidget(d->m_datePicker);
diff --git a/kmymoney/widgets/kmymoneydateinput.h b/kmymoney/widgets/kmymoneydateinput.h
index 5f5fd751d..e1bfa37e6 100644
--- a/kmymoney/widgets/kmymoneydateinput.h
+++ b/kmymoney/widgets/kmymoneydateinput.h
@@ -48,6 +48,7 @@ namespace KMyMoney {
Q_OBJECT
public:
explicit OldDateEdit(const QDate& date, QWidget* parent = nullptr);
+ void setInitialSection(Section section) { m_initialSection = section; }
protected:
/** if the date was cleared (a state which is not supported by QDateEdit)
@@ -64,6 +65,8 @@ namespace KMyMoney {
/** reimplemented for internal reasons */
void focusInEvent(QFocusEvent *event) final override;
+ private:
+ QDateEdit::Section m_initialSection;
};
}; // namespace
More information about the kde-doc-english
mailing list