2 #include "ui_musiclrcmakerwidget.h"
15 #include <QPropertyAnimation>
16 #include <QSequentialAnimationGroup>
113 QLabel::setText(
string);
114 const int len =
string.isEmpty() ? 1 :
string.length();
132 QPainter painter(
this);
133 painter.setPen(QColor(0, 0, 0));
134 painter.drawText(
m_intervalCount, -10, w, 60, Qt::AlignLeft | Qt::AlignVCenter, text());
136 painter.setPen(QColor(144, 184, 214));
149 setFixedSize(
size());
150 setAttribute(Qt::WA_DeleteOnClose);
153 m_ui->stackedWidget->setFocusPolicy(Qt::StrongFocus);
154 m_ui->topTitleCloseButton->setIcon(QIcon(
":/functions/btn_close_hover"));
156 m_ui->topTitleCloseButton->setCursor(QCursor(Qt::PointingHandCursor));
157 m_ui->topTitleCloseButton->setToolTip(tr(
"Close"));
158 connect(
m_ui->topTitleCloseButton, SIGNAL(clicked()), SLOT(close()));
195 m_ui->timeSlider_F->blockSignals(
true);
196 m_ui->timeSlider_S->blockSignals(
true);
197 m_ui->timeSlider_T->blockSignals(
true);
199 m_ui->timeSlider_F->setValue(position);
200 m_ui->timeSlider_S->setValue(position);
201 m_ui->timeSlider_T->setValue(position);
203 m_ui->timeSlider_F->blockSignals(
false);
204 m_ui->timeSlider_S->blockSignals(
false);
205 m_ui->timeSlider_T->blockSignals(
false);
209 m_ui->labelTime_F->setText(t);
210 m_ui->labelTime_S->setText(t);
211 m_ui->labelTime_T->setText(t);
213 if(
m_ui->stackedWidget->currentIndex() == 3)
220 QString currentLrc, laterLrc;
233 m_ui->timeSlider_F->setRange(0, position);
234 m_ui->timeSlider_S->setRange(0, position);
235 m_ui->timeSlider_T->setRange(0, position);
263 message.
setText(tr(
"Are you sure that you want to remake lyrics?"));
274 message.
setText(tr(
"Go back and lyrics will be lost"));
284 const QString &text = (
m_ui->stateButton_F->text() == tr(
"Play")) ? tr(
"Pause") : tr(
"Play");
285 m_ui->stateButton_F->setText(text);
286 m_ui->stateButton_T->setText(text);
293 const bool state =
m_ui->stateButton_T->text() == tr(
"Play");
294 const QString &text = state ? tr(
"Pause") : tr(
"Play");
295 m_ui->stateButton_F->setText(text);
296 m_ui->stateButton_T->setText(text);
306 m_ui->lrcViewer->stop();
312 m_ui->stackedWidget->setCurrentIndex(0);
317 m_ui->stackedWidget->setCurrentIndex(1);
343 QTextCursor cursor =
m_ui->makeTextEdit->textCursor();
346 QTextBlockFormat textBlockFormat = cursor.blockFormat();
347 textBlockFormat.setBottomMargin(18);
348 cursor.setBlockFormat(textBlockFormat);
349 cursor.movePosition(QTextCursor::NextBlock);
351 cursor.movePosition(QTextCursor::Start);
352 m_ui->makeTextEdit->setTextCursor(cursor);
353 m_ui->makeTextEdit->setCurrentCharFormat(QTextCharFormat());
356 m_ui->stackedWidget->setCurrentIndex(2);
361 if(
m_ui->stackedWidget->currentIndex() == 2 &&
m_plainText.count() >
m_ui->makeTextEdit->textCursor().blockNumber())
368 m_ui->stackedWidget->setCurrentIndex(3);
373 for(
int i = 0; i <
m_times.count(); ++i)
417 MusicAbstractMoveWidget::keyPressEvent(event);
422 MusicAbstractMoveWidget::keyReleaseEvent(event);
425 if(event->key() == Qt::Key_Space)
433 QTextCursor cursor =
m_ui->makeTextEdit->textCursor();
446 cursor.movePosition(QTextCursor::PreviousBlock, QTextCursor::KeepAnchor);
470 cursor.movePosition(QTextCursor::NextBlock, QTextCursor::KeepAnchor);
491 m_ui->makeTextEdit->setTextCursor(cursor);
499 m_ui->nextButton_M->setFocusPolicy(Qt::NoFocus);
500 m_ui->cancelButton_M->setFocusPolicy(Qt::NoFocus);
502 connect(
m_ui->cancelButton_M, SIGNAL(clicked()), SLOT(close()));
505 QPropertyAnimation *anim1 =
new QPropertyAnimation(
m_ui->label_M5,
"geometry",
this);
506 anim1->setDuration(1500);
507 anim1->setStartValue(QRect(630, 280, 0, 30));
508 anim1->setEndValue(QRect(400, 280, 230, 30));
509 anim1->setEasingCurve(QEasingCurve::Linear);
511 QPropertyAnimation *anim2 =
new QPropertyAnimation(
m_ui->label_M6,
"geometry",
this);
512 anim2->setDuration(1500);
513 anim2->setStartValue(QRect(630, 315, 0, 30));
514 anim2->setEndValue(QRect(400, 315, 230, 30));
515 anim2->setEasingCurve(QEasingCurve::Linear);
517 QPropertyAnimation *anim3 =
new QPropertyAnimation(
m_ui->label_M7,
"geometry",
this);
518 anim3->setDuration(1500);
519 anim3->setStartValue(QRect(630, 350, 0, 30));
520 anim3->setEndValue(QRect(400, 350, 230, 30));
521 anim3->setEasingCurve(QEasingCurve::Linear);
523 QPropertyAnimation *anim4 =
new QPropertyAnimation(
m_ui->label_M8,
"geometry",
this);
524 anim4->setDuration(1500);
525 anim4->setStartValue(QRect(630, 385, 0, 30));
526 anim4->setEndValue(QRect(400, 385, 230, 30));
527 anim4->setEasingCurve(QEasingCurve::Linear);
529 QPropertyAnimation *anim5 =
new QPropertyAnimation(
m_ui->label_M9,
"geometry",
this);
530 anim5->setDuration(1500);
531 anim5->setStartValue(QRect(630, 420, 0, 30));
532 anim5->setEndValue(QRect(400, 420, 230, 30));
533 anim5->setEasingCurve(QEasingCurve::Linear);
535 QSequentialAnimationGroup *group =
new QSequentialAnimationGroup(
this);
536 group->addAnimation(anim1);
537 group->addAnimation(anim2);
538 group->addAnimation(anim3);
539 group->addAnimation(anim4);
540 group->addAnimation(anim5);
552 m_ui->lrcTextEdit->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
553 m_ui->lrcTextEdit->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
555 m_ui->lrcTextEdit->setAcceptRichText(
false);
556 m_ui->lrcTextEdit->setLineWrapMode(QTextEdit::NoWrap);
558 QTextBlockFormat fmt;
559 fmt.setLineHeight(30, QTextBlockFormat::FixedHeight);
560 QTextCursor cur =
m_ui->lrcTextEdit->textCursor();
561 cur.setBlockFormat(fmt);
562 m_ui->lrcTextEdit->setTextCursor(cur);
564 m_ui->timeSlider_F->setFocusPolicy(Qt::NoFocus);
572 m_ui->stateButton_F->setFocusPolicy(Qt::NoFocus);
573 m_ui->previousButton_F->setFocusPolicy(Qt::NoFocus);
574 m_ui->nextButton_F->setFocusPolicy(Qt::NoFocus);
575 m_ui->cancelButton_F->setFocusPolicy(Qt::NoFocus);
580 connect(
m_ui->cancelButton_F, SIGNAL(clicked()), SLOT(close()));
590 m_ui->makeTextEdit->setReadOnly(
true);
591 m_ui->makeTextEdit->setLineWrapMode(QTextEdit::NoWrap);
592 m_ui->makeTextEdit->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
593 m_ui->makeTextEdit->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
595 m_ui->makeTextEdit->setAcceptRichText(
false);
596 m_ui->makeTextEdit->setAutoFormatting(QTextEdit::AutoNone);
597 m_ui->makeTextEdit->setEnabled(
false);
599 QFont font =
m_ui->makeTextEdit->font();
600 font.setPointSize(15);
601 m_ui->makeTextEdit->setFont(font);
603 m_ui->timeSlider_S->setFocusPolicy(Qt::NoFocus);
610 m_ui->previousButton_S->setFocusPolicy(Qt::NoFocus);
611 m_ui->nextButton_S->setFocusPolicy(Qt::NoFocus);
612 m_ui->cancelButton_S->setFocusPolicy(Qt::NoFocus);
616 connect(
m_ui->cancelButton_S, SIGNAL(clicked()), SLOT(close()));
625 m_ui->lrcViewer->connectTo(
this);
631 m_ui->lrcViewer->addWidget(w);
636 m_ui->timeSlider_T->setFocusPolicy(Qt::NoFocus);
637 m_ui->lrc_make_up_T->setToolTip(tr(
"Before 1.0s"));
638 m_ui->lrc_make_down_T->setToolTip(tr(
"After 1.0s"));
653 m_ui->stateButton_T->setFocusPolicy(Qt::NoFocus);
654 m_ui->remakeButton_T->setFocusPolicy(Qt::NoFocus);
655 m_ui->uploadButton_T->setFocusPolicy(Qt::NoFocus);
656 m_ui->saveButton_T->setFocusPolicy(Qt::NoFocus);
657 m_ui->previousButton_T->setFocusPolicy(Qt::NoFocus);
658 m_ui->cancelButton_T->setFocusPolicy(Qt::NoFocus);
665 connect(
m_ui->cancelButton_T, SIGNAL(clicked()), SLOT(close()));
673 if(
m_ui->artNameEdit->text().isEmpty())
676 msg = tr(
"Art name is empty");
679 if(
m_ui->songNameEdit->text().isEmpty())
682 msg = tr(
"Song name is empty");
685 if(
m_ui->lrcTextEdit->toPlainText().isEmpty())
688 msg = tr(
"Lrc text is empty");
701 m_ui->artNameEdit->setEnabled(enabled);
702 m_ui->songNameEdit->setEnabled(enabled);
703 m_ui->authorNameEdit->setEnabled(enabled);
704 m_ui->lrcTextEdit->setEnabled(enabled);
705 m_ui->introductionTextEdit->setEnabled(enabled);
711 return QString(
"[%1.%2]").arg(t.
toString(
"mm:ss"), QString::number(t.
millionSecond()).rightJustified(3,
'0'));
733 m_ui->lrcViewer->start();
#define TTKStaticCast(x, y)
TTK_MODULE_EXPORT QString generateSongArtist(const QString &name, const QString &key=TTK_DEFAULT_STR)
static constexpr const char * InteriorMakeUp
void revertTime(qint64 pos)
static MusicApplication * instance()
void setText(const QString &text) const
int lineMax() const noexcept
void setLineMax(int max) noexcept
void setFontTransparent(int t) noexcept
void setCurrentFilePath(const QString &name) noexcept
void setFontSize(int size) noexcept
The class of the app main widget.
bool isValid() const noexcept
The class of the messagebox widget.
TTK_MODULE_EXPORT QString generateSongTitle(const QString &name, const QString &key=TTK_DEFAULT_STR)
int millionSecond() const noexcept
void playAnyTimeAt(int time)
TTK::PlayMode playMode() const noexcept
void setCurrentIndex(int index) noexcept
static void popup(const QString &text)
void setLrcPerWidth(int width) noexcept
static constexpr const char * InteriorMakeDown
static const QString TextEditStyle01
TextEdit.
int currentIndex() const noexcept
void setTransparent(int tran) noexcept
static const QString ScrollBarStyle01
ScrollBar.
static const QString SliderStyle09
bool findText(qint64 current, qint64 total, QString &pre, QString &last, qint64 &interval) const
The class of the core lrc analysis.
#define TTKRemoveSingleWidget(name)
QMap< qint64, QString > TTKIntStringMap
#define TTK_SIGNLE_SHOT(...)
The class of the interior lrc manager.
QString text(int index) const
static constexpr wchar_t key[]
TTK_MODULE_EXPORT QString lrcDirPrefix()
static const QString PushButtonStyle04
qint64 setSongTimeSpeed(qint64 time)
State setData(const TTKIntStringMap &data)
int lineMiddle() const noexcept
static const QString BackgroundStyle10
The class of the ttk time object.
static const QString LineEditStyle01
LineEdit.
static const QString BorderStyle02
static const QString ToolButtonStyle04
MusicLrcColor mapIndexToColor(MusicLrcColor::Color index)
bool isEmpty() const noexcept
void setLinearGradientColor(const MusicLrcColor &color)
static QString toString(qint64 time, const QString &format) noexcept
QList< QColor > readColorConfig(const QString &value)
static qint64 formatDuration(const QString &time) noexcept