mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-05-03 16:25:54 +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