linuxOS_D21X/source/artinchip/qtlauncher/widgets/aicstatusbar.cpp
2024-11-29 16:33:21 +08:00

116 lines
2.5 KiB
C++

/*
* Copyright (C) 2024 Artinchip Technology Co. Ltd
*
* SPDX-License-Identifier: Apache-2.0
*
* Author: artinchip
*/
#include "aicstatusbar.h"
#include "utils/aicconsts.h"
#include <QHBoxLayout>
#include <QPushButton>
#include <QPainter>
#include <QLabel>
#include <QIcon>
#include <QTime>
#include <QDebug>
AiCStatusBar::AiCStatusBar(QWidget *parent) : QWidget(parent)
{
mSize = QSize(AIC_STATUS_BAR_WIDTH, AIC_STATUS_BAR_HEIGHT);
initBar();
}
AiCStatusBar::AiCStatusBar(QSize size, QWidget *parent) : QWidget(parent)
{
mSize = size;
initBar();
}
void AiCStatusBar::initBar()
{
mBGPixmap = QPixmap(":/resources/statusbar/bg.png");
mWiFiOnPixmap = QPixmap(":/resources/statusbar/wifi_on.png");
mWiFiOffPixmap = QPixmap(":/resources/statusbar/wifi_on.png");
mLayout = new QHBoxLayout(this);
mLayout->setSpacing(5);
mLayout->setContentsMargins(10,0,10,0);
QFont font = this->font();
font.setPointSize(FONT_NORMAL);
mTimeLabel = new QLabel(this);
mTimeLabel->setFont(font);
mLayout->addWidget(mTimeLabel, 0, Qt::AlignLeft | Qt::AlignVCenter);
mTitleLabel = new QLabel(this);
mTitleLabel->setFont(font);
mTitleLabel->setAlignment(Qt::AlignCenter);
mTitleLabel->setFixedWidth(mSize.width() - mSize.height() * 5);
mLayout->addWidget(mTitleLabel, 0, Qt::AlignCenter);
mWifiStatus = WIFI_ON;
mWiFiLabel = new QLabel(this);
mLayout->addWidget(mWiFiLabel, 0, Qt::AlignRight | Qt::AlignVCenter);
updateTime();
updateTitle("Music Title");
updateWiFi(mWifiStatus);
setFixedSize(mSize);
this->setLayout(mLayout);
setupTimer();
}
void AiCStatusBar::updateTitle(QString strTitle)
{
mTitleLabel->setText(strTitle);
}
void AiCStatusBar::updateWiFi(WifiStatusType status)
{
if (status == WIFI_ON) {
mWiFiLabel->setPixmap(mWiFiOnPixmap);
} else {
mWiFiLabel->setPixmap(mWiFiOffPixmap);
}
mWifiStatus = status;
}
void AiCStatusBar::updateTime()
{
QTime time = QTime::currentTime();
QString strTime = time.toString("hh:mm");
mTimeLabel->setText(strTime);
}
void AiCStatusBar::setupTimer()
{
mTimer = new QTimer(this);
connect(mTimer, SIGNAL(timeout()), this, SLOT(onTimeOut()));
mTimer->start(60 * 1000);
}
void AiCStatusBar::onTimeOut()
{
updateTime();
}
void AiCStatusBar::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
painter.drawPixmap(0, 0, mBGPixmap.scaled(size()));
QWidget::paintEvent(event);
}
AiCStatusBar::~AiCStatusBar()
{
delete mWiFiLabel;
delete mTimeLabel;
delete mLayout;
}