SVG5/dialogcalendar.cpp
2025-10-12 13:55:56 +09:00

447 lines
11 KiB
C++

#include "dialogcalendar.h"
#include "ui_dialogcalendar.h"
#include <QShowEvent>
#include "mainwindow.h"
#include <QScreen>
#include <QGuiApplication>
#include <QImage>
#include <QPainter>
DialogCalendar::DialogCalendar(QWidget *parent) :
QDialog(parent),
ui(new Ui::DialogCalendar)
{
setAttribute(Qt::WA_TranslucentBackground);
//setWindowFlags(Qt::CustomizeWindowHint);
setWindowFlags(Qt::FramelessWindowHint | Qt::Dialog | Qt::Popup);
//setWindowFlags(Qt::FramelessWindowHint);
ui->setupUi(this);
connect(ui->widget, SIGNAL(SetSearchDateUpdate(int)), parent, SLOT(SetSearchDateUpdate(int)));
connect(ui->widget, SIGNAL(ExecuteClickDate()), this, SLOT(ExecuteClickDate()));
ui->verticalLayout->setSpacing(1);
QStringList strListText;
/*
strListText << "Today";
strListText << "LAST 3 DAYS";
strListText << "LAST WEEK";
strListText << "LAST 2 WEEKS";
strListText << "LAST MONTH";
strListText << "LAST 6 MONTHS";
strListText << "LAST YEAR";
*/
strListText << "Today";
strListText << "LAST 3 DAYS";
strListText << "LAST WEEK";
strListText << "LAST 2 WEEKS";
strListText << "LAST 3 WEEKS";
strListText << "LAST MONTH";
strListText << "LAST 2 MONTH";
int i=0;
for(i=0 ; i<7 ; i++)
{
SCalendarMenuView* pItem = new SCalendarMenuView(this);
pItem->SetData(i, strListText[i]);
ui->verticalLayout->addWidget(pItem);
connect(pItem, SIGNAL(ExecuteMenu(int)), this, SLOT(ExecuteMenu(int)));
m_ListMenu.push_back(pItem);
}
m_ListMonthName << "January" << "Februry" << "March" << "April" << "May" << "June" << "July" << "August" << "September" << "October" << "November" << "December";
move(0, 0);
}
DialogCalendar::~DialogCalendar()
{
int i=0;
for(i=0 ; i<7 ; i++)
{
SCalendarMenuView* pItem = m_ListMenu[i];
if(pItem!=NULL)
{
disconnect(pItem, SIGNAL(ExecuteMenu(int)), this, SLOT(ExecuteMenu(int)));
}
pItem->deleteLater();
}
m_ListMenu.clear();
delete ui;
/*
if(m_pImageBackground!=NULL)
{
delete m_pImageBackground;
}
*/
}
void DialogCalendar::SetCalendarDate(int nYear, int nMonth, int nDay)
{
m_nYear = nYear;
m_nMonth = nMonth;
QString strYear = QString::number(nYear);
QString strMonth = QString("%1(%2)").arg(m_ListMonthName[nMonth-1]).arg(QString::number(nMonth));
strMonth = strMonth.left(3);
ui->label_Year->setText(strYear);
ui->label_Month->setText(strMonth);
ui->widget->SetCalendar(nYear, nMonth);
}
void DialogCalendar::ExecuteMenu(int nID)
{
int i=0;
for(i=0 ; i<m_ListMenu.size() ; i++)
{
SCalendarMenuView* pItem = m_ListMenu[i];
if(i!=nID)
{
if(pItem->IsSelected()==true)
{
pItem->Unselect();
pItem->update();
}
}
}
QDate date = QDate::currentDate();
int nYear = date.year();
int nMonth = date.month();
SetCalendarDate(nYear, nMonth, 1);
m_nTypeSearchDuration = nID;
switch(nID)
{
case 0:
ui->widget->SetToday();
break;
case 1:
ui->widget->SetLast3Days();
break;
case 2:
ui->widget->SetLastWeek();
break;
case 3:
ui->widget->SetLast2Weeks();
break;
case 4:
//ui->widget->SetLastMonth();
ui->widget->SetLast3Weeks();
break;
case 5:
//ui->widget->SetLast6Months();
ui->widget->SetLastMonth();
break;
case 6:
//ui->widget->SetLastYear();
ui->widget->SetLast2Month();
break;
case 7:
default:
break;
}
SetSearchDateUpdate(m_nTypeSearchDuration);
}
void DialogCalendar::on_pushButton_MonthPrev_clicked()
{
m_nMonth = m_nMonth-1;
if(m_nMonth<=0)
{
m_nMonth = 12;
m_nYear = m_nYear-1;
}
ui->widget->ClearDayState();
//ui->widget->SetCalendar(m_nYear, m_nMonth);
SetCalendarDate(m_nYear, m_nMonth, 1);
ui->widget->UpdateDayState();
}
void DialogCalendar::on_pushButton_MonthNext_clicked()
{
m_nMonth = m_nMonth+1;
if(m_nMonth>12)
{
m_nMonth = 1;
m_nYear = m_nYear+1;
}
ui->widget->ClearDayState();
//ui->widget->SetCalendar(m_nYear, m_nMonth);
SetCalendarDate(m_nYear, m_nMonth, 1);
ui->widget->UpdateDayState();
}
void DialogCalendar::on_pushButton_OK_clicked()
{
QDialog::accept();
}
void DialogCalendar::on_pushButton_Cancel_clicked()
{
QDialog::reject();
}
void DialogCalendar::showEvent(QShowEvent *pEvent)
{
if(pEvent->type()==QEvent::Show)
{
}
else if(pEvent->type()==QEvent::Hide)
{
}
}
void DialogCalendar::SetModeChangeStart()
{
m_nModeChange = CHANGE_DATE_START;
ui->widget->SetModeChangeStart();
SetSearchDateUpdate(SEARCH_USER_DEFINED);
}
void DialogCalendar::SetModeChangeEnd()
{
m_nModeChange = CHANGE_DATE_END;
ui->widget->SetModeChangeEnd();
SetSearchDateUpdate(SEARCH_USER_DEFINED);
}
void DialogCalendar::resizeEvent(QResizeEvent *pEvent)
{
int nDisplayType = MainWindow::GetCommonData()->GetDisplayType();
int nFontSize = 22;
int nFontSizeCancel = 18;
int nFontMonth = 24;
int nFontMenu = 18;
int nFontYear = 20;
if(nDisplayType==SDISPLAY_1280X1024)
{
float fRatioX = 1280.0f / 1920.0f;
float fRatioY = 1024.0f / 1080.0f;
nFontMonth = 16;
nFontSize = 16;
nFontSizeCancel = 18 * fRatioX;
nFontMenu = 14;
ui->frame_background->setGeometry(0*fRatioX, 0*fRatioX, 1920*fRatioX, 1080*fRatioY);
ui->frame_calendar->setGeometry(300*fRatioX, 270*fRatioX, 1270*fRatioX, 712*fRatioX);
{
ui->frame_top->setGeometry(0, 0, 1270*fRatioX, 99*fRatioX);
{
ui->label_Month->setGeometry(582*fRatioX-30, 48*fRatioX, 60*fRatioX+60, 27*fRatioX);
ui->label_Year->setGeometry(592*fRatioX-30, 24*fRatioX, 46*fRatioX+60, 24*fRatioX);
ui->pushButton_Cancel->setGeometry(60*fRatioX, 30*fRatioX, 111*fRatioX, 33*fRatioX);
{
ui->frame_ImageCancel->setGeometry(0, 5, 17*fRatioX, 33*fRatioX-10);
ui->label_Cancel->setGeometry(17*fRatioX, 0, 71*fRatioX, 33*fRatioX);
}
ui->pushButton_MonthNext->setGeometry(660*fRatioX, 52*fRatioX, 10*fRatioX, 18*fRatioX);
{
ui->frame_next->setGeometry(0, 0, 10*fRatioX, 18*fRatioX);
}
ui->pushButton_MonthPrev->setGeometry(557*fRatioX, 52*fRatioX, 10*fRatioX, 18*fRatioX);
{
ui->frame_prev->setGeometry(0*fRatioX, 0, 10*fRatioX, 18*fRatioX);
}
ui->pushButton_OK->setGeometry(1087*fRatioX, 26*fRatioX+5, 162*fRatioX, 48*fRatioX-10);
}
ui->verticalLayoutWidget->setGeometry(0*fRatioX, 99*fRatioX, 200*fRatioX, 612*fRatioX);
ui->widget->setGeometry(200*fRatioX, 99*fRatioX, 1084*fRatioX, 612*fRatioX);
}
}
else if(nDisplayType==SDISPLAY_1920X1080)
{
ui->frame_background->setGeometry(0, 0, 1920, 1080);
ui->frame_calendar->setGeometry(300, 260, 1270, 712);
{
ui->frame_top->setGeometry(0, 0, 1270, 99);
{
ui->label_Month->setGeometry(582, 48, 60, 27);
ui->label_Year->setGeometry(592, 24, 46, 24);
ui->pushButton_Cancel->setGeometry(60, 30, 111, 33);
{
ui->frame_ImageCancel->setGeometry(0, 0, 17, 33);
ui->label_Cancel->setGeometry(17, 0, 71, 33);
}
ui->pushButton_MonthNext->setGeometry(660, 52, 10, 18);
{
ui->frame_next->setGeometry(0, 0, 10, 18);
}
ui->pushButton_MonthPrev->setGeometry(557, 52, 10, 18);
{
ui->frame_prev->setGeometry(0, 0, 10, 18);
}
ui->pushButton_OK->setGeometry(1087, 26, 162, 48);
}
ui->verticalLayoutWidget->setGeometry(0, 99, 185, 612);
ui->widget->setGeometry(185, 99, 1084, 612);
}
}
QString strPushButton = QString(
"QLabel \n"
"{ \n"
" font-family: 'Roboto'; \n"
" font-size: %1px; \n"
" font-weight: bold; \n"
" color: #102528; \n"
"} \n").arg(nFontSizeCancel);
ui->label_Cancel->setStyleSheet(strPushButton);
strPushButton = QString(
"QPushButton#pushButton_OK \n"
"{ \n"
" qproperty-autoDefault: false; \n"
" qproperty-flat: false; \n"
" background: #FFFFFF; \n"
" border: none; \n"
" border-radius: 9px; \n"
" font-family: 'Roboto'; \n"
" font-size: %1px; \n"
" font-weight: bold; \n"
"}").arg(nFontSizeCancel);
ui->pushButton_OK->setStyleSheet(strPushButton);
strPushButton = QString(
"QLabel#label_Month \n"
"{ \n"
" font-family: 'Roboto'; \n"
" font-size: %1px; \n"
" font-weight: bold; \n"
" color: white; \n"
" qproperty-alignment: 'AlignHCenter | AlignVCenter'; \n"
"}").arg(nFontMonth);
ui->label_Month->setStyleSheet(strPushButton);
strPushButton = QString(
"QLabel#label_Month \n"
"{ \n"
" font-family: 'Roboto'; \n"
" font-size: %1px; \n"
" font-weight: bold; \n"
" color: white; \n"
" qproperty-alignment: 'AlignHCenter | AlignVCenter'; \n"
"}").arg(nFontYear);
ui->label_Year->setStyleSheet(strPushButton);
int i=0;
for(i=0 ; i<7 ; i++)
{
SCalendarMenuView* pItemView = m_ListMenu[i];
pItemView->SetFontSize(nFontMenu);
}
}
/*
void DialogCalendar::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
QSize nSize = size();
int nPaddingLeft = 0;
QRect rectDisplay = QRect(nPaddingLeft, 0, nSize.width()-nPaddingLeft, nSize.height());
QColor colorBackground;
painter.setRenderHint(QPainter::SmoothPixmapTransform);
colorBackground = Qt::white;
if(m_pImageBackground!=NULL)
{
//painter.fillRect(QRect(0, 0, nSize.width(), nSize.height()), Qt::black);
painter.drawImage(rectDisplay, *m_pImageBackground);
painter.fillRect(QRect(0, 0, nSize.width(), nSize.height()), QColor(0, 0, 0, 128));
return;
}
}
*/
void DialogCalendar::SetDateStart(QDate date)
{
ui->widget->SetDateStart(date);
}
void DialogCalendar::SetDateEnd(QDate date)
{
ui->widget->SetDateEnd(date);
}
void DialogCalendar::keyReleaseEvent(QKeyEvent *event)
{
int nKey = event->key();
SThreadImageSave* pThread = MainWindow::GetCommonData()->GetThreadCaptureImage();
if(nKey==Qt::Key_F10)
{
pThread->MissCapture();
}
else if(nKey==Qt::Key_F11)
{
pThread->MissCapture();
}
}
int DialogCalendar::GetTypeSearchDuration()
{
return m_nTypeSearchDuration;
}
void DialogCalendar::ExecuteClickDate()
{
m_nTypeSearchDuration = 7;
ExecuteMenu(m_nTypeSearchDuration);
}