mirror of
				https://github.com/ciphervance/supercell-wx.git
				synced 2025-11-04 06:30:05 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			78 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			78 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
#include "animation_dock_widget.hpp"
 | 
						|
#include "ui_animation_dock_widget.h"
 | 
						|
 | 
						|
#include <scwx/util/logger.hpp>
 | 
						|
 | 
						|
#include <QTimer>
 | 
						|
 | 
						|
namespace scwx
 | 
						|
{
 | 
						|
namespace qt
 | 
						|
{
 | 
						|
namespace ui
 | 
						|
{
 | 
						|
 | 
						|
static const std::string logPrefix_ = "scwx::qt::ui::animation_dock_widget";
 | 
						|
static const auto        logger_    = scwx::util::Logger::Create(logPrefix_);
 | 
						|
 | 
						|
class AnimationDockWidgetImpl
 | 
						|
{
 | 
						|
public:
 | 
						|
   explicit AnimationDockWidgetImpl() = default;
 | 
						|
   ~AnimationDockWidgetImpl()         = default;
 | 
						|
};
 | 
						|
 | 
						|
AnimationDockWidget::AnimationDockWidget(QWidget* parent) :
 | 
						|
    QDockWidget(parent),
 | 
						|
    p {std::make_unique<AnimationDockWidgetImpl>()},
 | 
						|
    ui(new Ui::AnimationDockWidget)
 | 
						|
{
 | 
						|
   ui->setupUi(this);
 | 
						|
 | 
						|
   // Set date/time edit enabled/disabled
 | 
						|
   ui->dateEdit->setEnabled(ui->archiveViewRadioButton->isChecked());
 | 
						|
   ui->timeEdit->setEnabled(ui->archiveViewRadioButton->isChecked());
 | 
						|
 | 
						|
   // Update date/time edit enabled/disabled based on Archive View radio button
 | 
						|
   connect(ui->archiveViewRadioButton,
 | 
						|
           &QRadioButton::toggled,
 | 
						|
           this,
 | 
						|
           [this](bool checked)
 | 
						|
           {
 | 
						|
              ui->dateEdit->setEnabled(checked);
 | 
						|
              ui->timeEdit->setEnabled(checked);
 | 
						|
           });
 | 
						|
 | 
						|
   // Set current date/time
 | 
						|
   QDateTime currentDateTime = QDateTime::currentDateTimeUtc();
 | 
						|
   ui->dateEdit->setDate(currentDateTime.date());
 | 
						|
   ui->timeEdit->setTime(currentDateTime.time());
 | 
						|
   ui->dateEdit->setMaximumDate(currentDateTime.date());
 | 
						|
 | 
						|
   // Update maximum date on a timer
 | 
						|
   QTimer* maxDateTimer = new QTimer(this);
 | 
						|
   connect(maxDateTimer,
 | 
						|
           &QTimer::timeout,
 | 
						|
           this,
 | 
						|
           [this]()
 | 
						|
           {
 | 
						|
              // Update maximum date to today
 | 
						|
              QDate currentDate = QDateTime::currentDateTimeUtc().date();
 | 
						|
              if (ui->dateEdit->maximumDate() != currentDate)
 | 
						|
              {
 | 
						|
                 ui->dateEdit->setMaximumDate(currentDate);
 | 
						|
              }
 | 
						|
           });
 | 
						|
 | 
						|
   // Evaluate every 15 seconds, every second is unnecessary
 | 
						|
   maxDateTimer->start(15000);
 | 
						|
}
 | 
						|
 | 
						|
AnimationDockWidget::~AnimationDockWidget()
 | 
						|
{
 | 
						|
   delete ui;
 | 
						|
}
 | 
						|
 | 
						|
} // namespace ui
 | 
						|
} // namespace qt
 | 
						|
} // namespace scwx
 |