diff options
author | Mahmoud Badri <mahmoud.badri@qt.io> | 2019-02-25 16:59:48 +0200 |
---|---|---|
committer | Mahmoud Badri <mahmoud.badri@qt.io> | 2019-02-26 07:12:49 +0000 |
commit | 12adbbf19d0d4113890fa76019245a7f2f42c770 (patch) | |
tree | 4992b12dd200b681b910de6bb456ba4440f877d1 | |
parent | c0d36939b9c559249d2d2efcd8e0b80f1a76234a (diff) |
TimeEditDlg, DurationEditDlg fixes
- Removed faulty white lines in the bottom and right sides of the
dialogs.
- Fixed an issue with auto focus change between text inputs in the
TimeEditDlg.
- Cleaned the DurationEditDlg to be similar to TimeEditDlg.
Change-Id: I894f1d29cc219409e11617ed87a718848fb5a61a
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
9 files changed, 149 insertions, 146 deletions
diff --git a/src/Authoring/Studio/Application/DurationEditDlg.cpp b/src/Authoring/Studio/Application/DurationEditDlg.cpp index a881b743..f0707a56 100644 --- a/src/Authoring/Studio/Application/DurationEditDlg.cpp +++ b/src/Authoring/Studio/Application/DurationEditDlg.cpp @@ -37,7 +37,7 @@ CDurationEditDlg::CDurationEditDlg(QWidget *parent) , m_ui(new Ui::DurationEditDlg) { m_ui->setupUi(this); - setAutoFillBackground(true); + setWindowFlag(Qt::WindowContextHelpButtonHint, false); // remove '?' from the dialog title bar QIntValidator *minValidator = new QIntValidator(this); minValidator->setRange(0, 9999); @@ -65,8 +65,6 @@ CDurationEditDlg::CDurationEditDlg(QWidget *parent) this, &CDurationEditDlg::onEndTimeChanged); connect(m_ui->lineEditEndMilliseconds, &QLineEdit::textEdited, this, &CDurationEditDlg::onEndTimeChanged); - - window()->setFixedSize(size()); } CDurationEditDlg::~CDurationEditDlg() @@ -74,69 +72,50 @@ CDurationEditDlg::~CDurationEditDlg() delete m_ui; } -//============================================================================= /** - * showDialog: Initializes and shows the Duration Edit Dialog Box. + * Initializes and shows the Duration Edit Dialog Box. * @param startTime is the initial start time, which will be shown when the time edit * dialog box pops up * @param endTime is the initial end time, which will be shown when the time edit * dialog box pops up - * @param inDoc this can be nullptr where its not applicable * @param inCallback is the target object for the callbacks */ -void CDurationEditDlg::showDialog(long startTime, long endTime, IDoc *inDoc, - ITimeChangeCallback *inCallback) +void CDurationEditDlg::showDialog(long startTime, long endTime, ITimeChangeCallback *inCallback) { - m_InitialTimeStart = startTime; - m_InitialTimeEnd = endTime; - m_Doc = inDoc; m_Callback = inCallback; - m_MinTimeDisplay = 0; - // if it is a Timebar, this will be adjusted, else this should be initialized to some value at - // least, for OverflowHandling to work correctly - m_MaxTimeDisplay = LONG_MAX; - - // 9999:59:999 converted to milliseconds - m_MaxTime = 599999999; // 9999 * 60,000 + 59 * 1000 + 999 - // Set initial values to dialog - formatTime(m_InitialTimeStart, true); - formatTime(m_InitialTimeEnd, false); + formatTime(startTime, true); + formatTime(endTime, false); - // Present the dialog exec(); } void CDurationEditDlg::formatTime(long inTime, bool startTime) { - long theTime = inTime; - long min = 0; - long sec = 0; - long msec = 0; + long mins = 0; + long secs = 0; + long mils = 0; - // Translates the m_initialTime (in milliseconds) into Minutes, Seconds and Milliseconds if (inTime != 0) { - min = timeConversion(theTime, CONVERT_MSEC_TO_MIN); - theTime = theTime - timeConversion(min, CONVERT_MIN_TO_MSEC); - sec = timeConversion(theTime, CONVERT_MSEC_TO_SEC); - theTime = theTime - timeConversion(sec, CONVERT_SEC_TO_MSEC); - msec = theTime; + mins = inTime % 3600000 / 60000; + secs = inTime % 60000 / 1000; + mils = inTime % 1000; } - // Default to 3 digits, e.g. "5" -> "005" - QString msecString = QString("%1").arg(msec, 3, 10, QChar('0')); + // display milliseconds in 3 digits (5 -> 005) + QString milsStr = QString("%1").arg(mils, 3, 10, QChar('0')); if (startTime) { - m_ui->lineEditMinutes->setText(QString::number(min)); - m_ui->lineEditSeconds->setText(QString::number(sec)); - m_ui->lineEditMilliseconds->setText(msecString); + m_ui->lineEditMinutes->setText(QString::number(mins)); + m_ui->lineEditSeconds->setText(QString::number(secs)); + m_ui->lineEditMilliseconds->setText(milsStr); // Select the biggest non-zero unit - if (min > 0) { + if (mins > 0) { m_ui->lineEditMinutes->setFocus(); m_ui->lineEditMinutes->selectAll(); - } else if (sec > 0) { + } else if (secs > 0) { m_ui->lineEditSeconds->setFocus(); m_ui->lineEditSeconds->selectAll(); } else { @@ -144,9 +123,9 @@ void CDurationEditDlg::formatTime(long inTime, bool startTime) m_ui->lineEditMilliseconds->selectAll(); } } else { - m_ui->lineEditEndMinutes->setText(QString::number(min)); - m_ui->lineEditEndSeconds->setText(QString::number(sec)); - m_ui->lineEditEndMilliseconds->setText(msecString); + m_ui->lineEditEndMinutes->setText(QString::number(mins)); + m_ui->lineEditEndSeconds->setText(QString::number(secs)); + m_ui->lineEditEndMilliseconds->setText(milsStr); } } @@ -162,43 +141,6 @@ void CDurationEditDlg::reject() QDialog::reject(); } -long CDurationEditDlg::numberOfDigits(long number) -{ - long n = 0; - for (long i = number; i >= 1; i /= 10) - ++n; - - return n; -} - -//============================================================================== -/** - * timeConversion: Converts inTime to the format specified by inFlags. - * For example: - * inTime = 5 sec inFlags = CONVERT_SEC_TO_MSEC - * The method will convert 5 sec into 5000 msec and - * returns the result. - * @param inTime stores the time to be converted. - * inOperationCode determines the type of time conversion to be done on the - * inTime. - * @return theResult stores the result of the time conversion. - */ -long CDurationEditDlg::timeConversion(long inTime, long inOperationCode) -{ - switch (inOperationCode) { - case CONVERT_MIN_TO_MSEC: - return inTime * 60000; - case CONVERT_SEC_TO_MSEC: - return inTime * 1000; - case CONVERT_MSEC_TO_MIN: - return inTime / 60000; - case CONVERT_MSEC_TO_SEC: - return inTime / 1000; - } - - return 0; -} - void CDurationEditDlg::updateObjectTime(long inTime, bool startTime) { if (m_Callback) { @@ -211,59 +153,42 @@ void CDurationEditDlg::updateObjectTime(long inTime, bool startTime) void CDurationEditDlg::onStartTimeChanged() { - // Making sure that the start time is not greater than the end time, when - // the user modifies the start time of the timebar - m_MaxTimeDisplay = m_InitialTimeEnd; // the initial end time - m_MinTimeDisplay = 0; - long min = m_ui->lineEditMinutes->text().toInt(); long sec = m_ui->lineEditSeconds->text().toInt(); long msec = m_ui->lineEditMilliseconds->text().toInt(); - long theGoToTime = timeConversion(min, CONVERT_MIN_TO_MSEC) - + timeConversion(sec, CONVERT_SEC_TO_MSEC) + msec; + long theGoToTime = min * 60000 + sec * 1000 + msec; // Go to the time specified in the start time edit display updateObjectTime(theGoToTime, true); // If max number of digits reached in a number field, select the next - if (m_minStart != min && numberOfDigits(min) == 4) { + if (m_ui->lineEditMinutes->hasFocus() && min > 999) { m_ui->lineEditSeconds->setFocus(); m_ui->lineEditSeconds->selectAll(); - } else if (m_secStart != sec && numberOfDigits(sec) == 2) { + } else if (m_ui->lineEditSeconds->hasFocus() && sec > 9) { m_ui->lineEditMilliseconds->setFocus(); m_ui->lineEditMilliseconds->selectAll(); } - - m_minStart = min; - m_secStart = sec; } void CDurationEditDlg::onEndTimeChanged() { - // Let the end time of the time bar go as far as possible - m_MaxTimeDisplay = m_MaxTime; - m_MinTimeDisplay = m_InitialTimeStart; // the initial start time - long min = m_ui->lineEditEndMinutes->text().toInt(); long sec = m_ui->lineEditEndSeconds->text().toInt(); long msec = m_ui->lineEditEndMilliseconds->text().toInt(); - long theGoToTime = timeConversion(min, CONVERT_MIN_TO_MSEC) - + timeConversion(sec, CONVERT_SEC_TO_MSEC) + msec; + long theGoToTime = min * 60000 + sec * 1000 + msec; // Go to the time specified in the end time edit display updateObjectTime(theGoToTime, false); // If max number of digits reached in a number field, select the next - if (m_minEnd != min && numberOfDigits(min) == 4) { + if (m_ui->lineEditEndMinutes->hasFocus() && min > 999) { m_ui->lineEditEndSeconds->setFocus(); m_ui->lineEditEndSeconds->selectAll(); - } else if (m_secEnd != sec && numberOfDigits(sec) == 2) { + } else if (m_ui->lineEditEndSeconds->hasFocus() && sec > 9) { m_ui->lineEditEndMilliseconds->setFocus(); m_ui->lineEditEndMilliseconds->selectAll(); } - - m_minEnd = min; - m_secEnd = sec; } diff --git a/src/Authoring/Studio/Application/DurationEditDlg.h b/src/Authoring/Studio/Application/DurationEditDlg.h index d0bc9170..ddb42ec0 100644 --- a/src/Authoring/Studio/Application/DurationEditDlg.h +++ b/src/Authoring/Studio/Application/DurationEditDlg.h @@ -62,8 +62,7 @@ public: CDurationEditDlg(QWidget *parent = nullptr); ~CDurationEditDlg() override; - void showDialog(long startTime, long endTime, IDoc *inDoc, - ITimeChangeCallback *inCallback = nullptr); + void showDialog(long startTime, long endTime, ITimeChangeCallback *inCallback = nullptr); public Q_SLOTS: void accept() override; @@ -74,21 +73,9 @@ private: void onEndTimeChanged(); void formatTime(long inTime, bool startTime); - long numberOfDigits(long number); - long timeConversion(long inTime, long inOperationCode); void updateObjectTime(long inTime, bool startTime); Ui::DurationEditDlg *m_ui; - IDoc *m_Doc = nullptr; ITimeChangeCallback *m_Callback = nullptr; - long m_MaxTime = 0; - long m_MaxTimeDisplay = 0; - long m_MinTimeDisplay = 0; - long m_InitialTimeStart = 0; - long m_InitialTimeEnd = 0; - int m_minStart = -1; - int m_secStart = -1; - int m_minEnd = -1; - int m_secEnd = -1; }; #endif // DURATION_EDIT_DIALOG_H diff --git a/src/Authoring/Studio/Application/DurationEditDlg.ui b/src/Authoring/Studio/Application/DurationEditDlg.ui index 062a5051..4f6bb7de 100644 --- a/src/Authoring/Studio/Application/DurationEditDlg.ui +++ b/src/Authoring/Studio/Application/DurationEditDlg.ui @@ -6,7 +6,7 @@ <rect> <x>0</x> <y>0</y> - <width>300</width> + <width>343</width> <height>152</height> </rect> </property> @@ -14,6 +14,9 @@ <string>Set Timebar Start / End Time</string> </property> <layout class="QVBoxLayout" name="verticalLayout_2"> + <property name="sizeConstraint"> + <enum>QLayout::SetFixedSize</enum> + </property> <property name="leftMargin"> <number>0</number> </property> @@ -70,7 +73,14 @@ </widget> </item> <item> - <widget class="QLineEdit" name="lineEditMinutes"/> + <widget class="QLineEdit" name="lineEditMinutes"> + <property name="maximumSize"> + <size> + <width>50</width> + <height>16777215</height> + </size> + </property> + </widget> </item> <item> <widget class="QLabel" name="label_2"> @@ -80,7 +90,14 @@ </widget> </item> <item> - <widget class="QLineEdit" name="lineEditSeconds"/> + <widget class="QLineEdit" name="lineEditSeconds"> + <property name="maximumSize"> + <size> + <width>50</width> + <height>16777215</height> + </size> + </property> + </widget> </item> <item> <widget class="QLabel" name="label_3"> @@ -90,7 +107,14 @@ </widget> </item> <item> - <widget class="QLineEdit" name="lineEditMilliseconds"/> + <widget class="QLineEdit" name="lineEditMilliseconds"> + <property name="maximumSize"> + <size> + <width>50</width> + <height>16777215</height> + </size> + </property> + </widget> </item> </layout> </widget> @@ -124,7 +148,14 @@ </widget> </item> <item> - <widget class="QLineEdit" name="lineEditEndMinutes"/> + <widget class="QLineEdit" name="lineEditEndMinutes"> + <property name="maximumSize"> + <size> + <width>50</width> + <height>16777215</height> + </size> + </property> + </widget> </item> <item> <widget class="QLabel" name="label_7"> @@ -134,7 +165,14 @@ </widget> </item> <item> - <widget class="QLineEdit" name="lineEditEndSeconds"/> + <widget class="QLineEdit" name="lineEditEndSeconds"> + <property name="maximumSize"> + <size> + <width>50</width> + <height>16777215</height> + </size> + </property> + </widget> </item> <item> <widget class="QLabel" name="label_8"> @@ -144,7 +182,14 @@ </widget> </item> <item> - <widget class="QLineEdit" name="lineEditEndMilliseconds"/> + <widget class="QLineEdit" name="lineEditEndMilliseconds"> + <property name="maximumSize"> + <size> + <width>50</width> + <height>16777215</height> + </size> + </property> + </widget> </item> </layout> </widget> diff --git a/src/Authoring/Studio/Application/TimeEditDlg.cpp b/src/Authoring/Studio/Application/TimeEditDlg.cpp index 93834c8f..eb9d0324 100644 --- a/src/Authoring/Studio/Application/TimeEditDlg.cpp +++ b/src/Authoring/Studio/Application/TimeEditDlg.cpp @@ -39,7 +39,7 @@ CTimeEditDlg::CTimeEditDlg(KeyframeManager *keyframeManager) , m_keyframeManager(keyframeManager) { m_ui->setupUi(this); - setAutoFillBackground(true); + setWindowFlag(Qt::WindowContextHelpButtonHint, false); // remove '?' from the dialog title bar QIntValidator *minValidator = new QIntValidator(this); minValidator->setRange(0, 9999); @@ -54,8 +54,6 @@ CTimeEditDlg::CTimeEditDlg(KeyframeManager *keyframeManager) connect(m_ui->lineEditMinutes, &QLineEdit::textEdited, this, &CTimeEditDlg::onTimeChanged); connect(m_ui->lineEditSeconds, &QLineEdit::textEdited, this, &CTimeEditDlg::onTimeChanged); connect(m_ui->lineEditMilliseconds, &QLineEdit::textEdited, this, &CTimeEditDlg::onTimeChanged); - - window()->setFixedSize(size()); } CTimeEditDlg::~CTimeEditDlg() @@ -195,10 +193,10 @@ void CTimeEditDlg::onTimeChanged() updateObjectTime(theGoToTime); // If max number of digits reached in a number field, select the next - if (min > 999) { + if (m_ui->lineEditMinutes->hasFocus() && min > 999) { m_ui->lineEditSeconds->setFocus(); m_ui->lineEditSeconds->selectAll(); - } else if (sec > 9) { + } else if (m_ui->lineEditSeconds->hasFocus() && sec > 9) { m_ui->lineEditMilliseconds->setFocus(); m_ui->lineEditMilliseconds->selectAll(); } diff --git a/src/Authoring/Studio/Application/TimeEditDlg.ui b/src/Authoring/Studio/Application/TimeEditDlg.ui index 6bcb11b3..54a8dbd7 100644 --- a/src/Authoring/Studio/Application/TimeEditDlg.ui +++ b/src/Authoring/Studio/Application/TimeEditDlg.ui @@ -6,14 +6,29 @@ <rect> <x>0</x> <y>0</y> - <width>300</width> - <height>114</height> + <width>343</width> + <height>119</height> </rect> </property> + <property name="sizePolicy"> + <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="maximumSize"> + <size> + <width>535</width> + <height>119</height> + </size> + </property> <property name="windowTitle"> <string>Set Keyframe Time</string> </property> <layout class="QVBoxLayout" name="verticalLayout_2"> + <property name="sizeConstraint"> + <enum>QLayout::SetFixedSize</enum> + </property> <property name="leftMargin"> <number>0</number> </property> @@ -70,7 +85,20 @@ </widget> </item> <item> - <widget class="QLineEdit" name="lineEditMinutes"/> + <widget class="QLineEdit" name="lineEditMinutes"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="maximumSize"> + <size> + <width>50</width> + <height>16777215</height> + </size> + </property> + </widget> </item> <item> <widget class="QLabel" name="label_2"> @@ -80,7 +108,20 @@ </widget> </item> <item> - <widget class="QLineEdit" name="lineEditSeconds"/> + <widget class="QLineEdit" name="lineEditSeconds"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="maximumSize"> + <size> + <width>50</width> + <height>16777215</height> + </size> + </property> + </widget> </item> <item> <widget class="QLabel" name="label_3"> @@ -90,7 +131,20 @@ </widget> </item> <item> - <widget class="QLineEdit" name="lineEditMilliseconds"/> + <widget class="QLineEdit" name="lineEditMilliseconds"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="maximumSize"> + <size> + <width>50</width> + <height>16777215</height> + </size> + </property> + </widget> </item> </layout> </widget> @@ -152,7 +206,7 @@ <widget class="QLabel" name="label_4"> <property name="minimumSize"> <size> - <width>40</width> + <width>0</width> <height>0</height> </size> </property> @@ -174,7 +228,7 @@ <widget class="QLabel" name="label"> <property name="minimumSize"> <size> - <width>40</width> + <width>0</width> <height>0</height> </size> </property> diff --git a/src/Authoring/Studio/Palettes/Timeline/Bindings/Qt3DSDMTimelineTimebar.cpp b/src/Authoring/Studio/Palettes/Timeline/Bindings/Qt3DSDMTimelineTimebar.cpp index 0b9df8e0..15f364c3 100644 --- a/src/Authoring/Studio/Palettes/Timeline/Bindings/Qt3DSDMTimelineTimebar.cpp +++ b/src/Authoring/Studio/Palettes/Timeline/Bindings/Qt3DSDMTimelineTimebar.cpp @@ -37,7 +37,6 @@ #include "Doc.h" #include "Dispatch.h" #include "Core.h" -#include "DurationEditDlg.h" #include "IDocumentEditor.h" #include "StudioFullSystem.h" #include "StudioPreferences.h" @@ -220,6 +219,5 @@ void Qt3DSDMTimelineTimebar::SetTimebarComment(const Q3DStudio::CString &inComme void Qt3DSDMTimelineTimebar::SetTimebarTime(ITimeChangeCallback *inCallback /*= nullptr*/) { g_StudioApp.GetDialogs()->asyncDisplayDurationEditDialog(GetStartTime(), GetEndTime(), - m_TimelineTranslationManager->GetDoc(), inCallback); } diff --git a/src/Authoring/Studio/Palettes/TimelineGraphicsView/TimelineControl.cpp b/src/Authoring/Studio/Palettes/TimelineGraphicsView/TimelineControl.cpp index 7c7ea968..378b20da 100644 --- a/src/Authoring/Studio/Palettes/TimelineGraphicsView/TimelineControl.cpp +++ b/src/Authoring/Studio/Palettes/TimelineGraphicsView/TimelineControl.cpp @@ -31,11 +31,8 @@ #include "RowManager.h" #include "RowTree.h" #include "Bindings/ITimelineItemBinding.h" -#include "DurationEditDlg.h" #include "StudioApp.h" #include "Dialogs.h" -#include "Core.h" -#include "Doc.h" TimelineControl::TimelineControl(TimelineGraphicsScene *scene) : m_scene(scene) @@ -54,8 +51,7 @@ void TimelineControl::setRowTimeline(RowTimeline *rowTimeline) void TimelineControl::showDurationEditDialog() { - g_StudioApp.GetDialogs()->asyncDisplayDurationEditDialog(m_startTime, m_endTime, - g_StudioApp.GetCore()->GetDoc(), this); + g_StudioApp.GetDialogs()->asyncDisplayDurationEditDialog(m_startTime, m_endTime, this); } void TimelineControl::ChangeStartTime(long inTime) diff --git a/src/Authoring/Studio/Workspace/Dialogs.cpp b/src/Authoring/Studio/Workspace/Dialogs.cpp index 96a6680a..0a462ea2 100644 --- a/src/Authoring/Studio/Workspace/Dialogs.cpp +++ b/src/Authoring/Studio/Workspace/Dialogs.cpp @@ -1383,12 +1383,12 @@ void CDialogs::asyncDisplayTimeEditDialog(long time, IDoc *doc, long objectAssoc }); } -void CDialogs::asyncDisplayDurationEditDialog(long startTime, long endTime, IDoc *doc, +void CDialogs::asyncDisplayDurationEditDialog(long startTime, long endTime, ITimeChangeCallback *callback) const { - QTimer::singleShot(0, [startTime, endTime, doc, callback]() { + QTimer::singleShot(0, [startTime, endTime, callback]() { CDurationEditDlg durationEditDlg; - durationEditDlg.showDialog(startTime, endTime, doc, callback); + durationEditDlg.showDialog(startTime, endTime, callback); }); } diff --git a/src/Authoring/Studio/Workspace/Dialogs.h b/src/Authoring/Studio/Workspace/Dialogs.h index 3f40bc50..bbac509f 100644 --- a/src/Authoring/Studio/Workspace/Dialogs.h +++ b/src/Authoring/Studio/Workspace/Dialogs.h @@ -186,7 +186,7 @@ public: void asyncDisplayTimeEditDialog(long time, IDoc *doc, long objectAssociation, KeyframeManager *keyframesManager = nullptr) const; - void asyncDisplayDurationEditDialog(long startTime, long endTime, IDoc *doc, + void asyncDisplayDurationEditDialog(long startTime, long endTime, ITimeChangeCallback *callback) const; enum class WidgetBrowserAlign { |