From 478dce7b2c3fb00a66592f287e5982f4496c5b3f Mon Sep 17 00:00:00 2001 From: daiboqi Date: Thu, 1 Sep 2022 17:18:14 +0800 Subject: [PATCH] =?UTF-8?q?bug=20fix=20136675=E3=80=81128359?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- about.cpp | 6 + about.h | 1 + baseverticalscroll.cpp | 37 ++++-- baseverticalscroll.h | 3 + clock.cpp | 272 ++++++++++++++++++++++----------------- clock.h | 3 +- clock_conf.ini | 2 +- debian/changelog | 17 +++ music/drip.wav | Bin 10094 -> 25454 bytes noticeAlarm.cpp | 16 ++- noticeAlarm.h | 2 + primarymanager.cpp | 69 +++++++++- primarymanager.h | 9 ++ selectbtnutil.cpp | 3 + setAlarmRepeatDialog.cpp | 62 +++++++-- setAlarmRepeatDialog.h | 3 +- tinycountdown.cpp | 42 ++++-- tinycountdown.h | 8 +- tinycountdown.ui | 12 +- verticalScroll24.cpp | 17 +++ verticalScroll24.h | 3 + verticalScroll60.cpp | 16 +++ verticalScroll60.h | 3 + verticalScroll99.cpp | 16 +++ verticalScroll99.h | 4 + 25 files changed, 454 insertions(+), 172 deletions(-) diff --git a/about.cpp b/about.cpp index 4cb6e23..237bcad 100644 --- a/about.cpp +++ b/about.cpp @@ -75,6 +75,12 @@ About::~About() { delete ui; } + +void About::showThisWindow() +{ + kdk::UkuiStyleHelper::self()->removeHeader(this); + this->show(); +} #define SYSTEM_FONT_EKY "system-font-size" /* *监听主题 diff --git a/about.h b/about.h index 41de607..3b602f6 100644 --- a/about.h +++ b/about.h @@ -46,6 +46,7 @@ class About : public QDialog public: explicit About(QWidget *parent = nullptr); ~About(); + void showThisWindow(); protected: void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE; diff --git a/baseverticalscroll.cpp b/baseverticalscroll.cpp index 25f9973..9edbd53 100644 --- a/baseverticalscroll.cpp +++ b/baseverticalscroll.cpp @@ -20,6 +20,7 @@ #include #include #include +#include #include "theme.h" BaseVerticalScroll::BaseVerticalScroll(int currentValue, int minRange, int maxRange, QWidget *parent) : QWidget(parent), m_currentValue(currentValue), @@ -83,7 +84,7 @@ void BaseVerticalScroll::paintNum(QPainter &painter, int num, int deviation) { int Width = width() - 1; int Height = height() - 1; - int size = (Height - qAbs(deviation)) / (m_numSize*1.5); //偏移量越大,数字越小 + int size = (Height - qAbs(deviation)) / (m_numSize*1.7); //偏移量越大,数字越小 //The larger the offset, the smaller the number int transparency = Utils::handelColorRange(255 - 255 * qAbs(deviation) / Height); int height = Height / devide; @@ -109,20 +110,28 @@ void BaseVerticalScroll::paintNum(QPainter &painter, int num, int deviation) Utils::handelColorRange(255-(qAbs(deviation)*2)), Utils::handelColorRange(255-(qAbs(deviation)*2)),transparency)); } - - QLinearGradient linearGradient(QPointF(5, 10), QPointF(7, 15)); - linearGradient.setColorAt(0.2, Qt::white); - linearGradient.setColorAt(0.6, Qt::green); + painter.setRenderHint(QPainter::Antialiasing); + QLinearGradient linearGradient(QPointF(110, -30), QPointF(110, 114)); + linearGradient.setColorAt(0.5, Qt::white); + linearGradient.setColorAt(0.8, Qt::gray); linearGradient.setColorAt(1.0, Qt::black); + //指定区域外的扩散方式 + linearGradient.setSpread(QGradient::ReflectSpread); + if ( y >= 0 && y + height < Height) { +// painter.drawText(QRectF(0, y, Width, height), +// Qt::AlignCenter, +// change_NUM_to_str(num)); + QFont font = painter.font(); + QFontMetrics fm(font); + QString str = change_NUM_to_str(num); + QRect rect = fm.boundingRect(0, y, Width, height,Qt::AlignCenter,str); + QPainterPath path; + path.addText(rect.x(),rect.y()+ fm.ascent() ,font,str); + painter.fillPath(path, linearGradient); + } painter.setBrush(QBrush(linearGradient)); - if ( y >= 0 && y + height < Height) { - painter.drawText(QRectF(0, y, Width, height), - Qt::AlignCenter, - change_NUM_to_str(num)); - } } - QString BaseVerticalScroll::change_NUM_to_str(int alarmHour) { QString str; @@ -201,3 +210,9 @@ void BaseVerticalScroll::mouseMoveEvent(QMouseEvent *e) repaint(); } } + +void BaseVerticalScroll::mouseDoubleClickEvent(QMouseEvent *event) +{ + emit srcollDoubleClicked(); + QWidget::mouseDoubleClickEvent(event); +} diff --git a/baseverticalscroll.h b/baseverticalscroll.h index 259346f..853aec6 100644 --- a/baseverticalscroll.h +++ b/baseverticalscroll.h @@ -23,6 +23,7 @@ #include "primarymanager.h" #include #include +#include class BaseVerticalScroll : public QWidget { Q_OBJECT @@ -55,9 +56,11 @@ public: signals: void currentValueChanged(int value); void deviationChange(int deviation); + void srcollDoubleClicked(); protected: void wheelEvent(QWheelEvent *) override; void mouseMoveEvent(QMouseEvent *) override; + void mouseDoubleClickEvent(QMouseEvent *event) override; private: diff --git a/clock.cpp b/clock.cpp index 3822592..0e9947c 100644 --- a/clock.cpp +++ b/clock.cpp @@ -380,12 +380,12 @@ void Clock::settingsStyle() void Clock::iniWaylandWinId() { connect(WindowManager::self(),&WindowManager::windowAdded,this,[=](const WindowId& windowId){ - - qDebug()<< "getpid:"<editAlarmPage); - updateCountdownSelectBtnStyle(clockEditOnClockNew,moveWidth,180); + updateCountdownSelectBtnStyle(clockEditOnClockNew,moveWidth,170); //重复 新建闹钟 - int selectHeight = 240; + int selectHeight = 230; int selectGap = 60; repeatSelectOnClockNew = new Btn_new( 0,tr(" repeat"),Btn_new::SELECT_BTN, ui->addAlarmPage); updateClockSelectBtnStyle(repeatSelectOnClockNew,selectHeight); @@ -669,14 +669,14 @@ void Clock::setupInit() //重复下拉框 int moreWidth = 20; - dialog_repeat = new set_alarm_repeat_Dialog(DIALOG_WIDTH+moreWidth,290,9,ui->editAlarmPage);dialog_repeat->hide(); + dialog_repeat = new set_alarm_repeat_Dialog(DIALOG_WIDTH+moreWidth,368,9,ui->editAlarmPage);dialog_repeat->hide(); //铃声下拉框 int bellSize = m_selectBtnUtil->getBellListSize(); - dialog_music = new set_alarm_repeat_Dialog(DIALOG_WIDTH+moreWidth,172,bellSize,ui->editAlarmPage);dialog_music->hide(); + dialog_music = new set_alarm_repeat_Dialog(DIALOG_WIDTH+moreWidth,bellSize*36+40,bellSize,ui->editAlarmPage);dialog_music->hide(); //稍后提醒下拉框 dialog_remind_late = new set_alarm_repeat_Dialog(DIALOG_WIDTH+moreWidth,258,6,ui->editAlarmPage);dialog_remind_late->hide(); //倒计时铃声选择 - count_music_sellect = new set_alarm_repeat_Dialog(DIALOG_WIDTH+moreWidth,172,bellSize,ui->countdownPage);count_music_sellect->hide(); + count_music_sellect = new set_alarm_repeat_Dialog(DIALOG_WIDTH+moreWidth,bellSize*36+40,bellSize,ui->countdownPage);count_music_sellect->hide(); setMusicSelectDialogListById(bellId,count_music_sellect->listWidget); //存储重复选择的星期,默认清零 @@ -689,6 +689,22 @@ void Clock::setupInit() connect(dialog_music->listWidget,SIGNAL(itemClicked(QListWidgetItem*)),this,SLOT(musicListclickslot())); connect(dialog_remind_late->listWidget,SIGNAL(itemClicked(QListWidgetItem*)),this,SLOT(remindLateListClickSlot())); connect(count_music_sellect->listWidget,SIGNAL(itemClicked(QListWidgetItem*)),this,SLOT(countMusicListclickslot())); + connect(dialog_repeat->listWidget,&QListWidget::itemPressed,this,[=](QListWidgetItem *item){ + int index = dialog_repeat->listWidget->row(item); + dialog_repeat->setLabelHoverStyle(index); + }); + connect(dialog_music->listWidget,&QListWidget::itemPressed,this,[=](QListWidgetItem *item){ + int index = dialog_music->listWidget->row(item); + dialog_music->setLabelHoverStyle(index); + }); + connect(dialog_remind_late->listWidget,&QListWidget::itemPressed,this,[=](QListWidgetItem *item){ + int index = dialog_remind_late->listWidget->row(item); + dialog_remind_late->setLabelHoverStyle(index); + }); + connect(count_music_sellect->listWidget,&QListWidget::itemPressed,this,[=](QListWidgetItem *item){ + int index = count_music_sellect->listWidget->row(item); + count_music_sellect->setLabelHoverStyle(index); + }); connect(dialog_repeat,&set_alarm_repeat_Dialog::dialogClose,this,[=](){ repeatSelectOnClockNew->updateIconLabel(0); }); @@ -1154,6 +1170,10 @@ void Clock::muteAllBell() if(alarmNoticeDialog->m_musicPlayer->state()!= MMediaPlayer::State::PausedState) alarmNoticeDialog->m_musicPlayer->pause(); } + //试听音乐开启静音 + if(playController::getInstance().getState() == playController::PlayState::PLAY_STATE){ + playController::getInstance().pause(); + } }else{ model_setup->setData(model_setup->index(0, 0), 0);//静音 Mute if(countdownNoticeDialog->isVisible() == 1){ @@ -1162,8 +1182,21 @@ void Clock::muteAllBell() if(alarmNoticeDialog){ ringContinueWhenMute(alarmNoticeDialog); } - } - model_setup->submitAll(); + //试听音乐取消静音 + auto sumtime = playController::getInstance().getPlayer()->duration(); + QTime time = QTime::currentTime(); + int timeH = time.hour()-musicStartTime.hour(); + int timeM = time.minute()-musicStartTime.minute(); + int timeS = time.second()-musicStartTime.second(); + auto restarttime = (timeH*3600+timeM*60+timeS) * 1000; + if(playController::getInstance().getState() == playController::PlayState::PLAY_STATE){ + playController::getInstance().getPlayer()->pause(); + } + if(restarttimesetPosition(restarttime); + } + } + model_setup->submitAll(); } void Clock::ringContinueWhenMute(Natice_alarm *tempdialog) @@ -1171,7 +1204,7 @@ void Clock::ringContinueWhenMute(Natice_alarm *tempdialog) auto startpos = tempdialog->timer_value * 1000; auto starttime = 60000-startpos; auto sumtime = tempdialog->m_musicPlayer->duration(); - int num; + int num = 0; if(tempdialog == countdownNoticeDialog){ num=count_music_sellect->listWidget->currentRow(); }else if(tempdialog == alarmNoticeDialog){ @@ -1461,10 +1494,10 @@ void Clock::menuBtnStyle() connect(m_aboutAction, &QAction::triggered, this, [=](){ About *dialog = new About(); QPointF position = this->pos(); -// XAtomHelper::setStandardWindowHint(dialog->winId()); kdk::UkuiStyleHelper::self()->removeHeader(dialog); - dialog->show(); - dialog->move(position.x()-15,position.y()+130); + dialog->showThisWindow(); + QRect aboutRect = QRect(position.x()-15,position.y()+130,dialog->width(),dialog->height()); + kdk::WindowManager::setGeometry(dialog->windowHandle(),aboutRect); dialog->exec(); }); connect(m_closeAction, SIGNAL(triggered()), this, SLOT(windowClosingClicked())); @@ -1679,14 +1712,15 @@ void Clock::noticeDialogShow(int close_time, int alarm_num, QString id) QScreen *screen=QGuiApplication::primaryScreen (); //闹钟弹窗 alarmNoticeDialog = new Natice_alarm(close_time,alarm_num,nullptr,id); + alarmNoticeDialog->showThisWindow(); if(countdownNoticeDialog != nullptr) { if (countdownNoticeDialog->isVisible() == 0) - moveUnderMultiScreen(UP_RIGHT,alarmNoticeDialog,1); + primaryManager->moveUnderMultiScreen(PrimaryManager::UP_RIGHT,alarmNoticeDialog,1); else - moveUnderMultiScreen(UP_RIGHT,alarmNoticeDialog,0); + primaryManager->moveUnderMultiScreen(PrimaryManager::UP_RIGHT,alarmNoticeDialog,0); } else - moveUnderMultiScreen(UP_RIGHT,alarmNoticeDialog,1); + primaryManager->moveUnderMultiScreen(PrimaryManager::UP_RIGHT,alarmNoticeDialog,1); alarmNoticeDialog->screenSaveStyle(); alarmNoticeDialog->playMusic(); } @@ -2481,9 +2515,11 @@ void Clock::countdownMusicSellect() musicSelectOnCountdownSet->updateIconLabel(1); musicSelectOnCountdownRun->updateIconLabel(1); QPointF position = this->pos(); - count_music_sellect->move(position.x()+DIALOG_MOVE_WIDTH,position.y()+482); + count_music_sellect->move(position.x()+DIALOG_MOVE_WIDTH-10,position.y()+464); count_music_sellect->setWindowFlags(Qt::Popup); refreshMusicSelectList(count_music_sellect); + int num = count_music_sellect->listWidget->currentRow(); + count_music_sellect->setLabelHoverStyle(num); count_music_sellect->show(); // connect(count_music_sellect->listWidget,SIGNAL(itemClicked(QListWidgetItem*)),this,SLOT(countMusicListclickslot())); } @@ -2528,8 +2564,13 @@ void Clock::playMusicFromPath(QString path) // music->setMedia(QUrl::fromLocalFile(path)); // music->play(); - playController::getInstance().playSingleSong(path,0); - + if(m_muteOn){ + playController::getInstance().playSingleSong(path,0); + playController::getInstance().pause(); + }else{ + playController::getInstance().playSingleSong(path,0); + } + musicStartTime = QTime::currentTime(); } void Clock::stopHisPlay() @@ -2546,18 +2587,21 @@ void Clock::addDivBell(set_alarm_repeat_Dialog *tempDialog, btnType type) qWarning()<<"dbq-开始复制"<copyAudioFile(filePath); - //存储到数据库 - QString bellId = m_selectBtnUtil->saveToBellTable(toPatn); - QString name = m_selectBtnUtil->getBellNameById(bellId); + if(!toPatn.isEmpty()){ + //存储到数据库 + QString bellId = m_selectBtnUtil->saveToBellTable(toPatn); + QString name = m_selectBtnUtil->getBellNameById(bellId); - if(type==Clock::count_down){ - musicSelectOnCountdownSet->textLabel->setText(name); - musicSelectOnCountdownRun->textLabel->setText(name); - }else{ - musicSelectOnClockNew->textLabel->setText(name); + if(type==Clock::count_down){ + musicSelectOnCountdownSet->textLabel->setText(name); + musicSelectOnCountdownRun->textLabel->setText(name); + }else{ + musicSelectOnClockNew->textLabel->setText(name); + } + + playMusicFromPath(toPatn); } - playMusicFromPath(toPatn); //刷新窗体 // rebuildCountdownMusicDialog(); //选中新建的铃声 @@ -2731,14 +2775,15 @@ void Clock::countdownNoticeDialogShow() countdownNoticeDialog->ui->autoCloseTime->setText(tr("60 Seconds to close")); //左上图标 // countdownNoticeDialog->ui->titleLabel->setText(tr("Alarm")); + countdownNoticeDialog->showThisWindow(); //时间到 if (alarmNoticeDialog != nullptr) { if (alarmNoticeDialog->isVisible() == 0) - moveUnderMultiScreen(UP_RIGHT,countdownNoticeDialog,1); + primaryManager->moveUnderMultiScreen(PrimaryManager::UP_RIGHT,countdownNoticeDialog,1); else - moveUnderMultiScreen(UP_RIGHT,countdownNoticeDialog,0); + primaryManager->moveUnderMultiScreen(PrimaryManager::UP_RIGHT,countdownNoticeDialog,0); } else - moveUnderMultiScreen(UP_RIGHT,countdownNoticeDialog,1); + primaryManager->moveUnderMultiScreen(PrimaryManager::UP_RIGHT,countdownNoticeDialog,1); countdownNoticeDialog->screenSaveStyle(); countdownNoticeDialog->playMusic(); } @@ -2815,7 +2860,7 @@ void Clock::startbtnCountdown(){ void Clock::tinyCountdownFinish() { - tinycountdownDia->hide(); + tinycountdownDia->set_dialog_close(); activeWindow(); startbtnCountdown(); } @@ -2947,12 +2992,17 @@ void Clock::onTinyClicked() //主窗体最小化 // kdk::WindowManager::minimizeWindow(m_pid); setWindowState(Qt::WindowMinimized); - moveUnderMultiScreen(UP_RIGHT,tinycountdownDia,0); + tinycountdownDia->showThisWindow(); + primaryManager->moveUnderMultiScreen(PrimaryManager::UP_RIGHT,tinycountdownDia,1); } void Clock::activeWindow() { - kdk::WindowManager::activateWindow(m_pid); + if(primaryManager->checkWayland()){ + kdk::WindowManager::activateWindow(m_pid); + }else{ + setWindowState(Qt::WindowActive); + } } void Clock::showThisWindow() { @@ -3083,6 +3133,10 @@ void Clock::countdownSetStartTime() secondTimeRing = new VerticalScroll_60(ui->countdownSetPage); QLabel * after_s = new QLabel (ui->countdownSetPage); + hourTimerRing->resize(60,228); + minuteTimeRing->resize(60,228); + secondTimeRing->resize(60,228); + h_in_m->resize(50,30); h_in_m->setText(tr("hour")); @@ -3093,8 +3147,8 @@ void Clock::countdownSetStartTime() after_s->resize(50,30); after_s->setText(tr("sec")); // after_s->setStyleSheet("font: 30pt 'Sans Serif';"); - int ringMoveWidth = 73; - int ringMoveHeight = 45; + int ringMoveWidth = 67; + int ringMoveHeight = 30; int timeSep = 100; int labelSep = 55; int timeLabelMoveHeight = 130; @@ -3131,6 +3185,34 @@ void Clock::countdownSetStartTime() connect(timer_count_start, SIGNAL(timeout()), this, SLOT(countStatBtnGray())); timer_count_start->setInterval(100); timer_count_start->start(); + + connect(hourTimerRing,&VerticalScroll_99::BaseVerticalScroll::srcollDoubleClicked,this,[=](){ + hourTimerRing->timeEdit_99->show(); + }); + connect(hourTimerRing->timeEdit_99,&QLineEdit::editingFinished,this,[=](){ + int timevalue = hourTimerRing->timeEdit_99->text().toInt(); + hourTimerRing->m_currentValue = timevalue; + hourTimerRing->homing(); + hourTimerRing->timeEdit_99->hide(); + }); + connect(minuteTimeRing,&VerticalScroll_99::BaseVerticalScroll::srcollDoubleClicked,this,[=](){ + minuteTimeRing->timeEdit_60->show(); + }); + connect(minuteTimeRing->timeEdit_60,&QLineEdit::editingFinished,this,[=](){ + int timevalue = minuteTimeRing->timeEdit_60->text().toInt(); + minuteTimeRing->m_currentValue = timevalue; + minuteTimeRing->homing(); + minuteTimeRing->timeEdit_60->hide(); + }); + connect(secondTimeRing,&VerticalScroll_99::BaseVerticalScroll::srcollDoubleClicked,this,[=](){ + secondTimeRing->timeEdit_60->show(); + }); + connect(secondTimeRing->timeEdit_60,&QLineEdit::editingFinished,this,[=](){ + int timevalue = secondTimeRing->timeEdit_60->text().toInt(); + secondTimeRing->m_currentValue = timevalue; + secondTimeRing->homing(); + secondTimeRing->timeEdit_60->hide(); + }); } /* @@ -3245,7 +3327,7 @@ void Clock::updateFront(const int size) } void Clock::updateRepeatStr(QLabel *label){ if(Utils::checkLocalChina()){ - updateLabelTextByLength(label,16); + updateLabelTextByLength(label,15); } if(Utils::checkLocalUs()){ updateLabelTextByLength(label,25); @@ -3287,8 +3369,8 @@ void Clock::alarmSetStartTime() //闹钟分钟滚轮 timer_alarm_start60 = new VerticalScroll_60(ui->editAlarmPage); - timer_alarm_start24->resize(63,220); - timer_alarm_start60->resize(63,220); + timer_alarm_start24->resize(63,228); + timer_alarm_start60->resize(63,228); QLabel * hour_ring = new QLabel (ui->editAlarmPage); QLabel * min_ring = new QLabel (ui->editAlarmPage); @@ -3310,11 +3392,29 @@ void Clock::alarmSetStartTime() min_ring->setText(tr("min")); min_ring->setStyleSheet("font: 13pt ;color: rgb(148, 148, 148);"); int ringMoveHeight = -30; - timer_alarm_start24->move(124, ringMoveHeight); + timer_alarm_start24->move(116, ringMoveHeight); hour_ring->move(140,7); - h_in_m->move(187,60); - timer_alarm_start60->move(196, ringMoveHeight); + h_in_m->move(189,60); + timer_alarm_start60->move(206, ringMoveHeight); min_ring->move(212,7); + connect(timer_alarm_start24,&VerticalScroll_24::BaseVerticalScroll::srcollDoubleClicked,this,[=](){ + timer_alarm_start24->timeEdit_24->show(); + }); + connect(timer_alarm_start24->timeEdit_24,&QLineEdit::editingFinished,this,[=](){ + int timevalue = timer_alarm_start24->timeEdit_24->text().toInt(); + timer_alarm_start24->m_currentValue = timevalue; + timer_alarm_start24->homing(); + timer_alarm_start24->timeEdit_24->hide(); + }); + connect(timer_alarm_start60,&VerticalScroll_99::BaseVerticalScroll::srcollDoubleClicked,this,[=](){ + timer_alarm_start60->timeEdit_60->show(); + }); + connect(timer_alarm_start60->timeEdit_60,&QLineEdit::editingFinished,this,[=](){ + int timevalue = timer_alarm_start60->timeEdit_60->text().toInt(); + timer_alarm_start60->m_currentValue = timevalue; + timer_alarm_start60->homing(); + timer_alarm_start60->timeEdit_60->hide(); + }); } /* @@ -3332,7 +3432,7 @@ void Clock::alarmRepeat() num= model->rowCount(); } QPointF position = this->pos();//446 - dialog_repeat->move(position.x()+DIALOG_MOVE_WIDTH,position.y()+420); + dialog_repeat->move(position.x()+DIALOG_MOVE_WIDTH-10,position.y()+382); dialog_repeat->setWindowFlags(Qt::Popup); dialog_repeat->widget[0]->alarmLabel0->setText(tr("No repetition")); dialog_repeat->widget[1]->alarmLabel0->setText(tr("Workingday")); @@ -3519,23 +3619,24 @@ void Clock::selectAlarmMusic() { musicSelectOnClockNew->updateIconLabel(1); QPointF position = this->pos(); - dialog_music->move(position.x()+DIALOG_MOVE_WIDTH,position.y()+482); + dialog_music->move(position.x()+DIALOG_MOVE_WIDTH-10,position.y()+442); dialog_music->setWindowFlags(Qt::Popup); refreshMusicSelectList(dialog_music); + int num = dialog_music->listWidget->currentRow(); + dialog_music->setLabelHoverStyle(num); dialog_music->show(); } void Clock::refreshMusicSelectList(set_alarm_repeat_Dialog *tempDialog) { -// tempDialog = new QList * bellList = m_selectBtnUtil->getAllBellItem(); int newSize = bellList->size(); int currentSize = tempDialog->rowNum_all; if(currentSizeset_aItem(i); - } tempDialog->rowNum_all=newSize; + for (int i=currentSize;iset_aItem(i,1); + } } for (int i=0;isize();i++) { tempDialog->widget[i]->alarmLabel0->setText(bellList->at(i)); @@ -3550,7 +3651,7 @@ void Clock::selectRemindLate() { remindSelectOnClockNew->updateIconLabel(1); QPointF position = this->pos(); - dialog_remind_late->move(position.x()+DIALOG_MOVE_WIDTH,position.y()+510); + dialog_remind_late->move(position.x()+DIALOG_MOVE_WIDTH-10,position.y()+502); dialog_remind_late->setWindowFlags(Qt::Popup); dialog_remind_late->widget[0]->alarmLabel0->setText(tr("none")); dialog_remind_late->widget[1]->alarmLabel0->setText(tr("five mins late")); @@ -3558,6 +3659,8 @@ void Clock::selectRemindLate() dialog_remind_late->widget[3]->alarmLabel0->setText(tr("twenty mins late")); dialog_remind_late->widget[4]->alarmLabel0->setText(tr("thirsty mins late")); dialog_remind_late->widget[5]->alarmLabel0->setText(tr("one hour late")); + int num = dialog_remind_late->listWidget->currentRow(); + dialog_remind_late->setLabelHoverStyle(num); dialog_remind_late->show(); } @@ -3731,74 +3834,7 @@ void Clock::showPaint7() painter.drawPath(painterPath); } } -/** - * @brief 多屏幕下,Natice_alarm移动 - * @param spostion SP_LEFT 左下角 SP_RIGHT 右下角 SP_CENTER 居中 - * @param - * - * @return 返回说明 - */ -void Clock::moveUnderMultiScreen(Clock::ScreenPosition spostion,QWidget * tempDialog,int hiddenFlag) -{ - tempDialog->hide(); - kdk::UkuiStyleHelper::self()->removeHeader(tempDialog); - tempDialog->show(); - QScreen *screen=QGuiApplication::primaryScreen (); - int screen_width = screen->geometry().width(); - int screen_height = screen->geometry().height(); - int x = primaryManager->getNScreen_x(); - int y = primaryManager->getNScreen_y(); - qWarning()<<"dbq-screen_width"<width(); - int diaHeight = tempDialog->height(); - - switch (spostion) { - case SP_LEFT: - { - moveWidth = x+round(tempDialog->width()+round(1.0/heightRadio*screen_width)); - moveHeight = y+round(screen_height-tempDialog->height()-round(1.0/widthRadio*screen_height)); - }break; - case SP_RIGHT: - { - moveWidth = x+round(screen_width-tempDialog->width()); - moveHeight = y+round(screen_height-tempDialog->height()-50); - }break; - case SP_CENTER: - { - moveWidth = x+round((screen_width-tempDialog->width())*1.0/2); - moveHeight = y+round((screen_height-tempDialog->height())*1.0/2); - }break; - case UP_LEFT: - { - moveWidth = x+round(tempDialog->width()+round(1.0/heightRadio*screen_width)); - moveHeight = y+round(tempDialog->height()+round(1.0/widthRadio*screen_height)); - }break; - case UP_RIGHT: - { - moveWidth = x+round(screen_width-tempDialog->width()-round(1.0/heightRadio*screen_width)); - moveHeight = y+round(1.0/20*screen_height); - }break; - case UP_CENTER: - { - moveWidth = x+round((screen_width-tempDialog->width())*1.0/2); - moveHeight = y+round((screen_height-tempDialog->height())*1.0/2); - }break; - default: - {} - } - if (hiddenFlag == 1){ - kdk::WindowManager::setGeometry(tempDialog->windowHandle(),QRect(moveWidth,moveHeight,diaWidth,diaHeight)); - } - else{ - kdk::WindowManager::setGeometry(tempDialog->windowHandle(),QRect(moveWidth,moveHeight-tempDialog->height(),diaWidth,diaHeight)); - } - -} void Clock::updateTinyBtn() diff --git a/clock.h b/clock.h index 9fd3db6..0a9d84a 100644 --- a/clock.h +++ b/clock.h @@ -156,7 +156,6 @@ public: count_down=1, add_clock=2 }; - void moveUnderMultiScreen(Clock::ScreenPosition,QWidget * dialog,int hiddenFlag); //多显示器下,位置移动 QString formatX_h(int x_h); Ui::Clock *ui; QString m_timeZone; @@ -531,7 +530,9 @@ private: void setDefaultTrayIconTooltip(); int localeNumBack; quint32 m_pid; + bool m_first_pid = true; void iniWaylandWinId(); + QTime musicStartTime; }; #endif // CLOCK_H diff --git a/clock_conf.ini b/clock_conf.ini index e80b3a3..5f3948e 100644 --- a/clock_conf.ini +++ b/clock_conf.ini @@ -1,2 +1,2 @@ [common] -version=3.1.4.0.0k0-0k0.3 +version=3.1.4.0.0k0-0k0.4 diff --git a/debian/changelog b/debian/changelog index 2ec3114..6238d29 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,20 @@ +ukui-clock (3.1.4.0.0k0-0k0.4) v101; urgency=medium + + [ BUG 号 ] + * Closes: # + 136675 【闹钟】弹出闹钟弹窗后点击"稍后提醒",之后再弹出的弹窗不显示在右上角 + 128359 【wayland】【闹钟】闹钟时间到,弹出的闹铃弹窗不在页面右上方 + [ 任务号] + - + [ 需求号] + - + [ 其他改动说明 ] + - + [ 影响域 ] + * 应用本身 + + -- daiboqi Tue, 30 Aug 2022 19:49:23 +0800 + ukui-clock (3.1.4.0.0k0-0k0.3) v101; urgency=medium [ BUG 号 ] diff --git a/music/drip.wav b/music/drip.wav index 5227443bdbc94f5bae9eafca4ce17939287ede06..f5f7d1e0c9b443e168cf43969b06b72585f7581f 100644 GIT binary patch delta 62 zcmaFo_wE=YTac%lTUzo&Hdm%(hRuv}xtyE(B&M)#^ixpZtR~~Z4dm@$#>N5wpDPr- delta 23 ecmaENjPacxTac%lTblYrHdiKfhRweGis}Gopa%#5 diff --git a/noticeAlarm.cpp b/noticeAlarm.cpp index 4ac77ad..4a4cf5d 100644 --- a/noticeAlarm.cpp +++ b/noticeAlarm.cpp @@ -112,8 +112,14 @@ Natice_alarm::Natice_alarm(int close_time, int num, QWidget *parent , QString cl //初始化使用不锁屏 this->setAttribute(Qt::WA_TranslucentBackground);//设置窗口背景透明 installEventFilter(this); - this->setWindowFlags(Qt::FramelessWindowHint|Qt::ToolTip); //设置无边框窗口 - this->setAttribute(Qt::WA_AlwaysShowToolTips); +// this->setWindowFlags(Qt::FramelessWindowHint|Qt::ToolTip); //设置无边框窗口 +// this->setAttribute(Qt::WA_AlwaysShowToolTips); + Qt::WindowFlags m_flags = windowFlags(); + this->setWindowFlags(m_flags | Qt::WindowStaysOnTopHint); +// 添加窗管协议 +// XAtomHelper::setStandardWindowHint(this->winId()); + kdk::UkuiStyleHelper::self()->removeHeader(this); + m_primaryManager = new PrimaryManager(); } @@ -279,6 +285,7 @@ void Natice_alarm::showThisWindow() { kdk::UkuiStyleHelper::self()->removeHeader(this); this->show(); + m_primaryManager->moveUnderMultiScreen(PrimaryManager::UP_RIGHT,this,1); } void Natice_alarm::screenSaveStyle() { @@ -314,13 +321,14 @@ void Natice_alarm::screenSaveStyle() qDebug()<<"dbq-not lock"; } }else{ - this->setWindowFlags(Qt::WindowStaysOnTopHint); + Qt::WindowFlags m_flags = windowFlags(); + this->setWindowFlags(m_flags | Qt::WindowStaysOnTopHint); // 添加窗管协议 // XAtomHelper::setStandardWindowHint(this->winId()); kdk::UkuiStyleHelper::self()->removeHeader(this); } update(); - this->show(); + this->showThisWindow(); } } diff --git a/noticeAlarm.h b/noticeAlarm.h index c6f4869..61455d9 100644 --- a/noticeAlarm.h +++ b/noticeAlarm.h @@ -33,6 +33,7 @@ #include #include "coreplayer/playcontroller.h" #include +#include "primarymanager.h" namespace Ui { class Natice_alarm; } @@ -94,6 +95,7 @@ private: int ring_num; int timer_value2; int full_flag=1; + PrimaryManager * m_primaryManager = nullptr; QSqlTableModel *model_setup; QPoint dragPosition; //拖动坐标 bool mousePressed; //鼠标是否按下 diff --git a/primarymanager.cpp b/primarymanager.cpp index ee4e09f..b415d4c 100644 --- a/primarymanager.cpp +++ b/primarymanager.cpp @@ -16,8 +16,8 @@ * */ #include "primarymanager.h" - - +#include "windowmanager/windowmanager.h" +#include PrimaryManager::PrimaryManager() @@ -182,6 +182,71 @@ int PrimaryManager::getNScreen_y() const { return m_nScreen_y; } +/** + * @brief 多屏幕下,Natice_alarm移动 + * @param spostion SP_LEFT 左下角 SP_RIGHT 右下角 SP_CENTER 居中 + * @param + * + * @return 返回说明 + */ +void PrimaryManager::moveUnderMultiScreen(PrimaryManager::ScreenPosition spostion,QWidget * tempDialog,int hiddenFlag) +{ + QScreen *screen=QGuiApplication::primaryScreen (); + int screen_width = screen->geometry().width(); + int screen_height = screen->geometry().height(); + int x = getNScreen_x(); + int y = getNScreen_y(); + qWarning()<<"dbq-screen_width"<width(); + int diaHeight = tempDialog->height(); + + switch (spostion) { + case SP_LEFT: + { + moveWidth = x+round(tempDialog->width()+round(1.0/widthRadio*screen_width)); + moveHeight = y+round(screen_height-tempDialog->height()-round(1.0/heightRadio*screen_height)); + }break; + case SP_RIGHT: + { + moveWidth = x+round(screen_width-tempDialog->width()); + moveHeight = y+round(screen_height-tempDialog->height()-50); + }break; + case SP_CENTER: + { + moveWidth = x+round((screen_width-tempDialog->width())*1.0/2); + moveHeight = y+round((screen_height-tempDialog->height())*1.0/2); + }break; + case UP_LEFT: + { + moveWidth = x+round(tempDialog->width()+round(1.0/widthRadio*screen_width)); + moveHeight = y+round(tempDialog->height()+round(1.0/heightRadio*screen_height)); + }break; + case UP_RIGHT: + { + moveWidth = x+round(screen_width-tempDialog->width()-round(1.0/widthRadio*screen_width)); + moveHeight = y+round(1.0/20*screen_height); + }break; + case UP_CENTER: + { + moveWidth = x+round((screen_width-tempDialog->width())*1.0/2); + moveHeight = y+round((screen_height-tempDialog->height())*1.0/2); + }break; + default: + {} + } + QRect finalRect = QRect(moveWidth,moveHeight,diaWidth,diaHeight); + if (hiddenFlag == 0){ + finalRect = QRect(moveWidth,moveHeight-tempDialog->height(),diaWidth,diaHeight); + } + qWarning()<<"dbq-finalRect"<windowHandle(),finalRect); + +} /** * @brief 根据环境变量判断是否支持wayland */ diff --git a/primarymanager.h b/primarymanager.h index ffff36f..80be92d 100644 --- a/primarymanager.h +++ b/primarymanager.h @@ -50,6 +50,15 @@ public: int getNScreen_y() const; bool checkWayland(); + enum ScreenPosition { + SP_LEFT = 1, + SP_CENTER = 2, + SP_RIGHT=3, + UP_LEFT=4, + UP_CENTER=5, + UP_RIGHT=6 + }; + void moveUnderMultiScreen(PrimaryManager::ScreenPosition spostion, QWidget *tempDialog, int hiddenFlag); public slots: void priScreenChanged(int x, int y, int width, int height); private: diff --git a/selectbtnutil.cpp b/selectbtnutil.cpp index 95588eb..469c062 100644 --- a/selectbtnutil.cpp +++ b/selectbtnutil.cpp @@ -219,6 +219,9 @@ QString SelectBtnUtil::copyAudioFile(QString from) QString to = path+fileName; bool res = copyFile(from,to); qWarning()<<"dbq-复制文件结束"<setStyleSheet(styleSheet); } -void set_alarm_repeat_Dialog::set_aItem(int rowNum) +void set_alarm_repeat_Dialog::set_aItem(int rowNum,int flags) { aItem[rowNum] =new QListWidgetItem; //将列表项的大小提示设置为大小。如果未设置大小提示,则item委托将基于item数据计算大小提示。 @@ -127,6 +127,40 @@ void set_alarm_repeat_Dialog::set_aItem(int rowNum) listWidget->setItemWidget(aItem[rowNum],widget[rowNum]); QScroller::grabGesture(listWidget,QScroller::LeftMouseButtonGesture); //设置鼠标左键拖动 listWidget -> setVerticalScrollMode(QAbstractItemView::ScrollPerPixel); // 设置像素级滑动 + if(flags){ + Length_num = rowNum_all*36+40; + this->resize(width_num, Length_num); + //增加圆角 + QBitmap bmp(this->size()); + bmp.fill(); + QPainter p(&bmp); + p.setPen(Qt::black); + p.setBrush(Qt::black); + p.setRenderHint(QPainter::Antialiasing); + p.drawRoundedRect(bmp.rect(),10,10); + setMask(bmp); + } + listWidget->setGeometry(QRect(0, 0, width_num-20, Length_num-22)); + //消除不使用样式表后直角和圆角重叠影响 + listWidget->setFrameShape(QListWidget::NoFrame); + listWidget->move(10,10); +} + +void set_alarm_repeat_Dialog::setLabelHoverStyle(int num) +{ + for (int i = 0;iwidget[i]; + if(i==num){ + QPalette ptext; + ptext.setColor(QPalette::Text,Qt::white); + item->alarmLabel0->setPalette(ptext); + }else{ + QPalette ptext; + ptext.setColor(QPalette::Text,Qt::black); + item->alarmLabel0->setPalette(ptext); + } + } + } void set_alarm_repeat_Dialog::setupUi(QWidget( *set_alarm_repeat_Dialog)) @@ -135,7 +169,9 @@ void set_alarm_repeat_Dialog::setupUi(QWidget( *set_alarm_repeat_Dialog)) set_alarm_repeat_Dialog->setObjectName(QString::fromUtf8("set_alarm_repeat_Dialog")); listWidget = new QListWidget(set_alarm_repeat_Dialog); listWidget->setObjectName(QString::fromUtf8("listWidget")); - listWidget->setGeometry(QRect(0, 0, width_num-20, Length_num-20)); + listWidget->setGeometry(QRect(0, 0, width_num-20, Length_num-22)); + //消除不使用样式表后直角和圆角重叠影响 + listWidget->setFrameShape(QListWidget::NoFrame); listWidget->move(10,10); retranslateUi(set_alarm_repeat_Dialog); @@ -204,21 +240,21 @@ void set_alarm_repeat_Dialog::closeEvent(QCloseEvent *event) //黑色主题 void set_alarm_repeat_Dialog::blackStyle() { - QString itemRadius = QString::number(ITEM_RADIUS); - listWidget->setStyleSheet("QListWidget{background-color: rgba(0, 0, 0, 0);}\ - QListWidget::item::selected{background-color:rgba("+hoverColor+");border-radius:"+itemRadius+"px;border:1px solid rgba(131, 131, 131,0);}\ - QListWidget::item:hover{background-color:rgba("+hoverColor+");border-radius:"+itemRadius+"px;}\ - "); +// QString itemRadius = QString::number(ITEM_RADIUS); +// listWidget->setStyleSheet("QListWidget{background-color: rgba(0, 0, 0, 0);}\ +// QListWidget::item::selected{background-color:rgba("+hoverColor+");border-radius:"+itemRadius+"px;border:1px solid rgba(131, 131, 131,0);}\ +// QListWidget::item:hover{background-color:rgba("+hoverColor+");border-radius:"+itemRadius+"px;}\ +// "); } //白色主题 void set_alarm_repeat_Dialog::whiteStyle() { - QString itemRadius = QString::number(ITEM_RADIUS); - listWidget->setStyleSheet("QListWidget{background-color: rgba(0, 0, 0, 0);}\ - QListWidget::item::selected{background-color:rgba("+hoverColor+");border-radius:"+itemRadius+"px;border:1px solid rgba(131, 131, 131,0);}\ - QListWidget::item:hover{background-color:rgba("+hoverColor+");border-radius:"+itemRadius+"px;}\ - "); +// QString itemRadius = QString::number(ITEM_RADIUS); +// listWidget->setStyleSheet("QListWidget{background-color: rgba(0, 0, 0, 0);}\ +// QListWidget::item::selected{background-color:rgba("+hoverColor+");border-radius:"+itemRadius+"px;border:1px solid rgba(131, 131, 131,0);}\ +// QListWidget::item:hover{background-color:rgba("+hoverColor+");border-radius:"+itemRadius+"px;}\ +// "); } diff --git a/setAlarmRepeatDialog.h b/setAlarmRepeatDialog.h index 609feb9..d3b5330 100644 --- a/setAlarmRepeatDialog.h +++ b/setAlarmRepeatDialog.h @@ -50,7 +50,8 @@ public: int rowNum_all ; int width_num, Length_num; QListWidget *listWidget; - void set_aItem(int rowNum); + void set_aItem(int rowNum,int flags); + void setLabelHoverStyle(int num); protected: void closeEvent(QCloseEvent *event) override; diff --git a/tinycountdown.cpp b/tinycountdown.cpp index d43f8fb..91fb8c9 100644 --- a/tinycountdown.cpp +++ b/tinycountdown.cpp @@ -51,15 +51,20 @@ void tinyCountdown::updateWidgetRadius() { this->setAttribute(Qt::WA_TranslucentBackground);//设置窗口背景透明 +#ifdef onTooltip this->setWindowFlags(Qt::FramelessWindowHint|Qt::ToolTip); //设置无边框窗口 this->setAttribute(Qt::WA_AlwaysShowToolTips); -// Qt::WindowFlags m_flags = windowFlags(); -// this->setWindowFlags(m_flags | Qt::WindowStaysOnTopHint); +#else + Qt::WindowFlags m_flags = windowFlags(); + this->setWindowFlags(m_flags | Qt::WindowStaysOnTopHint); +#endif + // 添加窗管协议 // XAtomHelper::setStandardWindowHint(this->winId()); - kdk::UkuiStyleHelper::self()->removeHeader(this); +// kdk::UkuiStyleHelper::self()->removeHeader(this); //圆角 +#ifdef onTooltip QBitmap bmp(this->size()); bmp.fill(); QPainter p(&bmp); @@ -68,6 +73,13 @@ void tinyCountdown::updateWidgetRadius() p.setBrush(palette().color(QPalette::Base)); p.drawRoundedRect(bmp.rect(),WINDOWN_RADIUS,WINDOWN_RADIUS); setMask(bmp); +#endif +} + +void tinyCountdown::showThisWindow() +{ + kdk::UkuiStyleHelper::self()->removeHeader(this); + this->show(); } tinyCountdown::~tinyCountdown() @@ -95,6 +107,7 @@ void tinyCountdown::focusInEvent(QFocusEvent *event) qDebug()<<"dbq-"<<"focusInEvent"; } */ +#ifdef onTooltip // 在鼠标光标在小部件内部时按下鼠标按钮时调用,或者当小部件使用grabMouse ()抓住鼠标时调用。按下鼠标而不释放它实际上与调用grabMouse ()相同。 void tinyCountdown::mousePressEvent(QMouseEvent *event) { @@ -118,26 +131,24 @@ void tinyCountdown::mouseReleaseEvent(QMouseEvent *event) //每当鼠标移动而按住鼠标按钮时调用。这在拖放操作期间很有用。 void tinyCountdown::mouseMoveEvent(QMouseEvent *event) { - - if (this->mousePressed) { move(event->globalPos() - this->dragPosition); this->setCursor(Qt::ClosedHandCursor); } - QWidget::mouseMoveEvent(event); } - +#endif void tinyCountdown::closeEvent(QCloseEvent *event) { event->ignore();//忽视 - this->hide(); + this->set_dialog_close(); } void tinyCountdown::paintEvent(QPaintEvent * event) { +#ifdef onTooltip Q_UNUSED(event); QPainter p(this); p.setRenderHint(QPainter::Antialiasing); @@ -179,6 +190,15 @@ void tinyCountdown::paintEvent(QPaintEvent * event) p.setBrush(palette().color(QPalette::Base)); p.drawPath(rectPath); p.restore(); +#else + Q_UNUSED(event); + QPainter p(this); + p.setRenderHint(QPainter::Antialiasing); // 反锯齿; + //绘制器路径 + QPainterPath rectPath; + rectPath.addRect(this->rect()); + p.fillPath(rectPath,palette().color(QPalette::Base)); +#endif } @@ -190,7 +210,7 @@ void tinyCountdown::paintEvent(QPaintEvent * event) void tinyCountdown::clearData() { ui->timeLabel->setText("00:00:00"); - this->hide(); + this->set_dialog_close(); updateOnRunState(true); } @@ -203,7 +223,7 @@ void tinyCountdown::set_dialog_close() void tinyCountdown::showMainWindow() { - this->hide(); + this->set_dialog_close(); emit mainWindowClick(); } @@ -211,7 +231,7 @@ void tinyCountdown::showMainWindow() void tinyCountdown::showTop() { - this->hide(); + this->set_dialog_close(); this->update(); this->show(); } diff --git a/tinycountdown.h b/tinycountdown.h index 25a21aa..6767e36 100644 --- a/tinycountdown.h +++ b/tinycountdown.h @@ -38,16 +38,16 @@ class tinyCountdown; class tinyCountdown : public QWidget { Q_OBJECT - +//#define onTooltip public: explicit tinyCountdown(QWidget *parent = nullptr); ~tinyCountdown(); void updateTimeInfo(QString str); - +#ifdef onTooltip void mousePressEvent(QMouseEvent *event) override; void mouseReleaseEvent(QMouseEvent *event) override; void mouseMoveEvent(QMouseEvent *event) override; - +#endif /* void focusOutEvent ( QFocusEvent * event ) override; void focusInEvent ( QFocusEvent * event ) override; @@ -56,7 +56,7 @@ public: void closeEvent(QCloseEvent *event) override; void paintEvent(QPaintEvent * event) override; void updateWidgetRadius(); - + void showThisWindow(); void clearData(); protected: //绘制背景 diff --git a/tinycountdown.ui b/tinycountdown.ui index b108bf1..81ac7bc 100644 --- a/tinycountdown.ui +++ b/tinycountdown.ui @@ -6,20 +6,20 @@ 0 0 - 336 - 62 + 320 + 50 - 336 - 62 + 320 + 46 - 336 - 62 + 320 + 50 diff --git a/verticalScroll24.cpp b/verticalScroll24.cpp index f793a0b..11ddd11 100644 --- a/verticalScroll24.cpp +++ b/verticalScroll24.cpp @@ -30,11 +30,13 @@ VerticalScroll_24::VerticalScroll_24(QWidget *parent, Clock *clock) : homingAni = new QPropertyAnimation(this, "deviation"); homingAni->setDuration(300); homingAni->setEasingCurve(QEasingCurve::OutQuad); + timeEditStyle_24(); } VerticalScroll_24::~VerticalScroll_24() { delete homingAni; + delete timeEdit_24; qDebug()<<"-------VerticalScroll_24---------"; //delete ui; @@ -61,6 +63,20 @@ int VerticalScroll_24::readValue() return m_currentValue; } +void VerticalScroll_24::timeEditStyle_24() +{ + timeEdit_24 = new QLineEdit(this); + timeEdit_24->resize(52,54); + timeEdit_24->move(3,height()/2-15); + QRegExp rx = QRegExp("^(((0|1)[0-9])|20|21|22|23|[0-9]|"")$"); + QRegExpValidator* validator = new QRegExpValidator(rx); + timeEdit_24->setValidator(validator); + QFont font; + font.setPixelSize(34); + timeEdit_24->setFont(font); + timeEdit_24->hide(); +} + //鼠标按压选择当前值 // Press the mouse to select the current value void VerticalScroll_24::mousePressEvent(QMouseEvent *e) @@ -87,6 +103,7 @@ void VerticalScroll_24::mouseReleaseEvent(QMouseEvent *) + //绘制当前数值轮画面 // Draw the current numerical wheel screen void VerticalScroll_24::paintEvent(QPaintEvent *) diff --git a/verticalScroll24.h b/verticalScroll24.h index 0d0d695..4fa0e4b 100644 --- a/verticalScroll24.h +++ b/verticalScroll24.h @@ -22,6 +22,7 @@ #include #include #include +#include #include "baseverticalscroll.h" namespace Ui { @@ -48,6 +49,8 @@ public: //获取当前值 // Get current value int readValue(); + QLineEdit *timeEdit_24; + void timeEditStyle_24(); Clock *m_Pclock; protected: diff --git a/verticalScroll60.cpp b/verticalScroll60.cpp index 65698c6..fb1dbc6 100644 --- a/verticalScroll60.cpp +++ b/verticalScroll60.cpp @@ -30,11 +30,13 @@ VerticalScroll_60::VerticalScroll_60(QWidget *parent) : homingAni = new QPropertyAnimation(this, "deviation"); homingAni->setDuration(300); homingAni->setEasingCurve(QEasingCurve::OutQuad); + timeEditStyle_60(); } VerticalScroll_60::~VerticalScroll_60() { delete homingAni; + delete timeEdit_60; qDebug()<<"-------VerticalScroll_60---------"; //delete ui; @@ -62,6 +64,20 @@ int VerticalScroll_60::readValue() return m_currentValue; } +void VerticalScroll_60::timeEditStyle_60() +{ + timeEdit_60 = new QLineEdit(this); + timeEdit_60->resize(52,54); + timeEdit_60->move(3,height()/2-15); + QRegExp rx = QRegExp("^(([0-5][0-9])|[0-9]|"")$"); + QRegExpValidator* validator = new QRegExpValidator(rx); + timeEdit_60->setValidator(validator); + QFont font; + font.setPixelSize(34); + timeEdit_60->setFont(font); + timeEdit_60->hide(); +} + void VerticalScroll_60::mousePressEvent(QMouseEvent *e) { qDebug()<<"mouse pressed on vertical scroll"; diff --git a/verticalScroll60.h b/verticalScroll60.h index c21668f..ca16fa4 100644 --- a/verticalScroll60.h +++ b/verticalScroll60.h @@ -50,6 +50,9 @@ public: // Get current value int readValue(); + QLineEdit *timeEdit_60; + void timeEditStyle_60(); + void setupUi(QWidget *VerticalScroll_60); void retranslateUi(QWidget *VerticalScroll_60); diff --git a/verticalScroll99.cpp b/verticalScroll99.cpp index 91d118e..3e62631 100644 --- a/verticalScroll99.cpp +++ b/verticalScroll99.cpp @@ -33,6 +33,7 @@ VerticalScroll_99::VerticalScroll_99(QWidget *parent) : timer_21111 = new QTimer(); connect(timer_21111, SIGNAL(timeout()), this, SLOT(listClickslot())); timer_21111->setInterval(1000); + timeEditStyle_99(); qDebug() << m_currentValue; } @@ -40,6 +41,7 @@ VerticalScroll_99::~VerticalScroll_99() { delete timer_21111; delete homingAni; + delete timeEdit_99; qDebug()<<"-------VerticalScroll_99---------"; } @@ -66,6 +68,20 @@ int VerticalScroll_99::readValue() return m_currentValue; } +void VerticalScroll_99::timeEditStyle_99() +{ + timeEdit_99 = new QLineEdit(this); + timeEdit_99->resize(52,54); + timeEdit_99->move(3,height()/2-15); + QRegExp rx = QRegExp("^(((0|1)[0-9])|20|21|22|23|[0-9]|"")$"); + QRegExpValidator* validator = new QRegExpValidator(rx); + timeEdit_99->setValidator(validator); + QFont font; + font.setPixelSize(34); + timeEdit_99->setFont(font); + timeEdit_99->hide(); +} + void VerticalScroll_99::listClickslot() { qDebug() << m_currentValue; diff --git a/verticalScroll99.h b/verticalScroll99.h index 22c90ac..1c00ac8 100644 --- a/verticalScroll99.h +++ b/verticalScroll99.h @@ -23,6 +23,7 @@ #include #include #include +#include #include "baseverticalscroll.h" namespace Ui { @@ -51,6 +52,9 @@ public: // Get current value int readValue(); + QLineEdit *timeEdit_99; + void timeEditStyle_99(); + void setupUi(QWidget *VerticalScroll_99); void retranslateUi(QWidget *VerticalScroll_99);