1
0
mirror of https://github.com/qTox/qTox.git synced 2024-03-22 14:00:36 +08:00
qTox/src/widget/form/loadhistorydialog.cpp
Jimi Huotari 6d51971c6f refactor(Qt): fix build with Qt 5.15
This fixes compile-time warnings about deprecated functions when
building with Qt 5.15.
2020-03-17 13:31:36 +02:00

109 lines
3.1 KiB
C++

/*
Copyright © 2014-2019 by The qTox Project Contributors
This file is part of qTox, a Qt-based graphical interface for Tox.
qTox is libre software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
qTox is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with qTox. If not, see <http://www.gnu.org/licenses/>.
*/
#include "loadhistorydialog.h"
#include "ui_loadhistorydialog.h"
#include "src/model/ichatlog.h"
#include "src/nexus.h"
#include "src/persistence/history.h"
#include "src/persistence/profile.h"
#include <QCalendarWidget>
#include <QDate>
#include <QTextCharFormat>
LoadHistoryDialog::LoadHistoryDialog(const IChatLog* chatLog, QWidget* parent)
: QDialog(parent)
, ui(new Ui::LoadHistoryDialog)
, chatLog(chatLog)
{
ui->setupUi(this);
highlightDates(QDate::currentDate().year(), QDate::currentDate().month());
connect(ui->fromDate, &QCalendarWidget::currentPageChanged, this,
&LoadHistoryDialog::highlightDates);
}
LoadHistoryDialog::LoadHistoryDialog(Mode mode, QWidget* parent)
: QDialog(parent)
, ui(new Ui::LoadHistoryDialog)
{
ui->setupUi(this);
if (mode == Mode::search) {
enableSearchMode();
}
}
LoadHistoryDialog::~LoadHistoryDialog()
{
delete ui;
}
QDateTime LoadHistoryDialog::getFromDate()
{
#if (QT_VERSION >= QT_VERSION_CHECK(5, 15, 0))
QDateTime res(ui->fromDate->selectedDate().startOfDay());
#else
QDateTime res(ui->fromDate->selectedDate());
#endif
if (res.date().month() != ui->fromDate->monthShown()
|| res.date().year() != ui->fromDate->yearShown()) {
QDate newDate(ui->fromDate->yearShown(), ui->fromDate->monthShown(), 1);
res.setDate(newDate);
}
return res;
}
LoadHistoryDialog::LoadType LoadHistoryDialog::getLoadType()
{
if (ui->loadTypeComboBox->currentIndex() == 0) {
return LoadType::from;
}
return LoadType::to;
}
void LoadHistoryDialog::enableSearchMode()
{
setWindowTitle(tr("Select date dialog"));
ui->fromLabel->setText(tr("Select a date"));
ui->loadTypeComboBox->setVisible(false);
ui->infoLabel->setVisible(false);
}
void LoadHistoryDialog::highlightDates(int year, int month)
{
History* history = Nexus::getProfile()->getHistory();
QDate monthStart(year, month, 1);
QDate monthEnd(year, month + 1, 1);
// Max 31 days in a month
auto dateIdxs = chatLog->getDateIdxs(monthStart, 31);
QTextCharFormat format;
format.setFontWeight(QFont::Bold);
QCalendarWidget* calendar = ui->fromDate;
for (const auto& item : dateIdxs) {
if (item.date < monthEnd) {
calendar->setDateTextFormat(item.date, format);
}
}
}