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.setRenderHint(QPainter::TextAntialiasing);
134 painter.setPen(QColor(0, 0, 0));
135 painter.drawText(
m_intervalCount, -10, w, 60, Qt::AlignLeft | Qt::AlignVCenter, text());
137 painter.setPen(QColor(144, 184, 214));
150 setFixedSize(
size());
151 setAttribute(Qt::WA_DeleteOnClose);
154 m_ui->stackedWidget->setFocusPolicy(Qt::StrongFocus);
155 m_ui->topTitleCloseButton->setIcon(QIcon(
":/functions/btn_close_hover"));
157 m_ui->topTitleCloseButton->setCursor(QCursor(Qt::PointingHandCursor));
158 m_ui->topTitleCloseButton->setToolTip(tr(
"Close"));
159 connect(
m_ui->topTitleCloseButton, SIGNAL(clicked()), SLOT(close()));
196 m_ui->timeSlider_F->blockSignals(
true);
197 m_ui->timeSlider_S->blockSignals(
true);
198 m_ui->timeSlider_T->blockSignals(
true);
200 m_ui->timeSlider_F->setValue(position);
201 m_ui->timeSlider_S->setValue(position);
202 m_ui->timeSlider_T->setValue(position);
204 m_ui->timeSlider_F->blockSignals(
false);
205 m_ui->timeSlider_S->blockSignals(
false);
206 m_ui->timeSlider_T->blockSignals(
false);
210 m_ui->labelTime_F->setText(t);
211 m_ui->labelTime_S->setText(t);
212 m_ui->labelTime_T->setText(t);
214 if(
m_ui->stackedWidget->currentIndex() == 3)
221 QString currentLrc, laterLrc;
234 m_ui->timeSlider_F->setRange(0, position);
235 m_ui->timeSlider_S->setRange(0, position);
236 m_ui->timeSlider_T->setRange(0, position);
264 message.
setText(tr(
"Are you sure that you want to remake lyrics?"));
275 message.
setText(tr(
"Go back and lyrics will be lost"));
285 const QString &text = (
m_ui->stateButton_F->text() == tr(
"Play")) ? tr(
"Pause") : tr(
"Play");
286 m_ui->stateButton_F->setText(text);
287 m_ui->stateButton_T->setText(text);
294 const bool state =
m_ui->stateButton_T->text() == tr(
"Play");
295 const QString &text = state ? tr(
"Pause") : tr(
"Play");
296 m_ui->stateButton_F->setText(text);
297 m_ui->stateButton_T->setText(text);
307 m_ui->lrcViewer->stop();
313 m_ui->stackedWidget->setCurrentIndex(0);
318 m_ui->stackedWidget->setCurrentIndex(1);
344 QTextCursor cursor =
m_ui->makeTextEdit->textCursor();
347 QTextBlockFormat textBlockFormat = cursor.blockFormat();
348 textBlockFormat.setBottomMargin(18);
349 cursor.setBlockFormat(textBlockFormat);
350 cursor.movePosition(QTextCursor::NextBlock);
352 cursor.movePosition(QTextCursor::Start);
353 m_ui->makeTextEdit->setTextCursor(cursor);
354 m_ui->makeTextEdit->setCurrentCharFormat(QTextCharFormat());
357 m_ui->stackedWidget->setCurrentIndex(2);
362 if(
m_ui->stackedWidget->currentIndex() == 2 &&
m_plainText.count() >
m_ui->makeTextEdit->textCursor().blockNumber())
369 m_ui->stackedWidget->setCurrentIndex(3);
374 for(
int i = 0; i <
m_times.count(); ++i)
418 MusicAbstractMoveWidget::keyPressEvent(event);
423 MusicAbstractMoveWidget::keyReleaseEvent(event);
426 if(event->key() == Qt::Key_Space)
434 QTextCursor cursor =
m_ui->makeTextEdit->textCursor();
447 cursor.movePosition(QTextCursor::PreviousBlock, QTextCursor::KeepAnchor);
471 cursor.movePosition(QTextCursor::NextBlock, QTextCursor::KeepAnchor);
492 m_ui->makeTextEdit->setTextCursor(cursor);
500 m_ui->nextButton_M->setFocusPolicy(Qt::NoFocus);
501 m_ui->cancelButton_M->setFocusPolicy(Qt::NoFocus);
503 connect(
m_ui->cancelButton_M, SIGNAL(clicked()), SLOT(close()));
506 QPropertyAnimation *anim1 =
new QPropertyAnimation(
m_ui->label_M5,
"geometry",
this);
507 anim1->setDuration(1500);
508 anim1->setStartValue(QRect(630, 280, 0, 30));
509 anim1->setEndValue(QRect(400, 280, 230, 30));
510 anim1->setEasingCurve(QEasingCurve::Linear);
512 QPropertyAnimation *anim2 =
new QPropertyAnimation(
m_ui->label_M6,
"geometry",
this);
513 anim2->setDuration(1500);
514 anim2->setStartValue(QRect(630, 315, 0, 30));
515 anim2->setEndValue(QRect(400, 315, 230, 30));
516 anim2->setEasingCurve(QEasingCurve::Linear);
518 QPropertyAnimation *anim3 =
new QPropertyAnimation(
m_ui->label_M7,
"geometry",
this);
519 anim3->setDuration(1500);
520 anim3->setStartValue(QRect(630, 350, 0, 30));
521 anim3->setEndValue(QRect(400, 350, 230, 30));
522 anim3->setEasingCurve(QEasingCurve::Linear);
524 QPropertyAnimation *anim4 =
new QPropertyAnimation(
m_ui->label_M8,
"geometry",
this);
525 anim4->setDuration(1500);
526 anim4->setStartValue(QRect(630, 385, 0, 30));
527 anim4->setEndValue(QRect(400, 385, 230, 30));
528 anim4->setEasingCurve(QEasingCurve::Linear);
530 QPropertyAnimation *anim5 =
new QPropertyAnimation(
m_ui->label_M9,
"geometry",
this);
531 anim5->setDuration(1500);
532 anim5->setStartValue(QRect(630, 420, 0, 30));
533 anim5->setEndValue(QRect(400, 420, 230, 30));
534 anim5->setEasingCurve(QEasingCurve::Linear);
536 QSequentialAnimationGroup *group =
new QSequentialAnimationGroup(
this);
537 group->addAnimation(anim1);
538 group->addAnimation(anim2);
539 group->addAnimation(anim3);
540 group->addAnimation(anim4);
541 group->addAnimation(anim5);
553 m_ui->lrcTextEdit->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
554 m_ui->lrcTextEdit->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
556 m_ui->lrcTextEdit->setAcceptRichText(
false);
557 m_ui->lrcTextEdit->setLineWrapMode(QTextEdit::NoWrap);
559 QTextBlockFormat fmt;
560 fmt.setLineHeight(30, QTextBlockFormat::FixedHeight);
561 QTextCursor cur =
m_ui->lrcTextEdit->textCursor();
562 cur.setBlockFormat(fmt);
563 m_ui->lrcTextEdit->setTextCursor(cur);
565 m_ui->timeSlider_F->setFocusPolicy(Qt::NoFocus);
573 m_ui->stateButton_F->setFocusPolicy(Qt::NoFocus);
574 m_ui->previousButton_F->setFocusPolicy(Qt::NoFocus);
575 m_ui->nextButton_F->setFocusPolicy(Qt::NoFocus);
576 m_ui->cancelButton_F->setFocusPolicy(Qt::NoFocus);
581 connect(
m_ui->cancelButton_F, SIGNAL(clicked()), SLOT(close()));
591 m_ui->makeTextEdit->setReadOnly(
true);
592 m_ui->makeTextEdit->setLineWrapMode(QTextEdit::NoWrap);
593 m_ui->makeTextEdit->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
594 m_ui->makeTextEdit->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
596 m_ui->makeTextEdit->setAcceptRichText(
false);
597 m_ui->makeTextEdit->setAutoFormatting(QTextEdit::AutoNone);
598 m_ui->makeTextEdit->setEnabled(
false);
600 QFont font =
m_ui->makeTextEdit->font();
601 font.setPointSize(15);
602 m_ui->makeTextEdit->setFont(font);
604 m_ui->timeSlider_S->setFocusPolicy(Qt::NoFocus);
611 m_ui->previousButton_S->setFocusPolicy(Qt::NoFocus);
612 m_ui->nextButton_S->setFocusPolicy(Qt::NoFocus);
613 m_ui->cancelButton_S->setFocusPolicy(Qt::NoFocus);
617 connect(
m_ui->cancelButton_S, SIGNAL(clicked()), SLOT(close()));
626 m_ui->lrcViewer->connectTo(
this);
632 m_ui->lrcViewer->addWidget(w);
637 m_ui->timeSlider_T->setFocusPolicy(Qt::NoFocus);
638 m_ui->lrc_make_up_T->setToolTip(tr(
"Before 1.0s"));
639 m_ui->lrc_make_down_T->setToolTip(tr(
"After 1.0s"));
654 m_ui->stateButton_T->setFocusPolicy(Qt::NoFocus);
655 m_ui->remakeButton_T->setFocusPolicy(Qt::NoFocus);
656 m_ui->uploadButton_T->setFocusPolicy(Qt::NoFocus);
657 m_ui->saveButton_T->setFocusPolicy(Qt::NoFocus);
658 m_ui->previousButton_T->setFocusPolicy(Qt::NoFocus);
659 m_ui->cancelButton_T->setFocusPolicy(Qt::NoFocus);
666 connect(
m_ui->cancelButton_T, SIGNAL(clicked()), SLOT(close()));
674 if(
m_ui->artNameEdit->text().isEmpty())
677 msg = tr(
"Art name is empty");
680 if(
m_ui->songNameEdit->text().isEmpty())
683 msg = tr(
"Song name is empty");
686 if(
m_ui->lrcTextEdit->toPlainText().isEmpty())
689 msg = tr(
"Lrc text is empty");
702 m_ui->artNameEdit->setEnabled(enabled);
703 m_ui->songNameEdit->setEnabled(enabled);
704 m_ui->authorNameEdit->setEnabled(enabled);
705 m_ui->lrcTextEdit->setEnabled(enabled);
706 m_ui->introductionTextEdit->setEnabled(enabled);
712 return QString(
"[%1.%2]").arg(t.
toString(
"mm:ss"), QString::number(t.
millionSecond()).rightJustified(3,
'0'));
734 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
static QString message(const TTK::Attribute attr)
static MusicApplication * instance()
void setText(const QString &text) const
void setFontTransparent(int t) 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
The class of the music player.
int maximum() const noexcept
TTK::PlayMode playMode() const noexcept
void setTimePosition(qint64 pos)
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.
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
void setMaximum(int max) noexcept
#define TTK_REMOVE_SINGLE_WIDGET(object)
void setFilePath(const QString &name) noexcept
qint64 findTimePosition(qint64 time)
#define TTK_CONNECTIONPOOL_UNREGISTER(object)
static const QString BackgroundStyle10
The class of the ttk time object.
static const QString LineEditStyle01
LineEdit.
static const QString BorderStyle02
void playTimePosition(int time)
static const QString ToolButtonStyle04
MusicLrcColor mapIndexToColor(MusicLrcColor::Color index)
#define TTK_CONNECTIONPOOL_BIND_FROM(object)
bool isEmpty() const noexcept
void setLinearGradientColor(const MusicLrcColor &color)
static QString toString(qint64 time, const QString &format) noexcept
State loadFromBuffer(const TTKIntStringMap &data)
QList< QColor > readColorConfig(const QString &value)
#define TTK_CONNECTIONPOOL_REGISTER(object)
static qint64 formatDuration(const QString &time) noexcept
int middle() const noexcept