mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-03-31 12:55:33 +08:00
refs #901, utility class for single UI widgets
(disables widget when >1 swift application runs)
This commit is contained in:
committed by
Mathew Sutcliffe
parent
0e923780ce
commit
57ede8b04c
33
src/blackgui/singleapplicationui.cpp
Normal file
33
src/blackgui/singleapplicationui.cpp
Normal file
@@ -0,0 +1,33 @@
|
||||
/* Copyright (C) 2017
|
||||
* swift project Community / Contributors
|
||||
*
|
||||
* This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level
|
||||
* directory of this distribution and at http://www.swift-project.org/license.html. No part of swift project,
|
||||
* including this file, may be copied, modified, propagated, or distributed except according to the terms
|
||||
* contained in the LICENSE file.
|
||||
*/
|
||||
|
||||
#include "singleapplicationui.h"
|
||||
#include "guiapplication.h"
|
||||
#include <QWidget>
|
||||
|
||||
using namespace BlackMisc;
|
||||
|
||||
namespace BlackGui
|
||||
{
|
||||
CSingleApplicationUi::CSingleApplicationUi(QWidget *ui) : m_ui(ui)
|
||||
{
|
||||
QObject::connect(&m_timer, &QTimer::timeout, [ = ] { this->evaluate(); });
|
||||
m_timer.setInterval(5000);
|
||||
m_timer.start();
|
||||
}
|
||||
|
||||
void CSingleApplicationUi::evaluate()
|
||||
{
|
||||
if (!sGui) { return; }
|
||||
if (!m_ui) { return; }
|
||||
const CApplicationInfoList apps = sGui->getRunningApplications();
|
||||
const bool enable = apps.size() < 2;
|
||||
m_ui->setEnabled(enable);
|
||||
}
|
||||
} // ns
|
||||
42
src/blackgui/singleapplicationui.h
Normal file
42
src/blackgui/singleapplicationui.h
Normal file
@@ -0,0 +1,42 @@
|
||||
/* Copyright (C) 2017
|
||||
* swift project Community / Contributors
|
||||
*
|
||||
* This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level
|
||||
* directory of this distribution and at http://www.swift-project.org/license.html. No part of swift project,
|
||||
* including this file, may be copied, modified, propagated, or distributed except according to the terms
|
||||
* contained in the LICENSE file.
|
||||
*/
|
||||
|
||||
//! \file
|
||||
|
||||
#ifndef BLACKGUI_SINGLEAPPLICATIONUI_H
|
||||
#define BLACKGUI_SINGLEAPPLICATIONUI_H
|
||||
|
||||
#include <QTimer>
|
||||
|
||||
class QWidget;
|
||||
|
||||
namespace BlackGui
|
||||
{
|
||||
/**
|
||||
* Enable / disable UI depending on how many swift applications are running
|
||||
*/
|
||||
class CSingleApplicationUi
|
||||
{
|
||||
public:
|
||||
//! Constructor
|
||||
CSingleApplicationUi(QWidget *ui);
|
||||
|
||||
//! Set UI widget
|
||||
void setWidget(QWidget *ui) { m_ui = ui; }
|
||||
|
||||
private:
|
||||
//! Evaluate if
|
||||
void evaluate();
|
||||
|
||||
QTimer m_timer;
|
||||
QWidget *m_ui = nullptr; //!< enabled/disabled UI
|
||||
};
|
||||
} // ns
|
||||
|
||||
#endif // guard
|
||||
Reference in New Issue
Block a user