-
Notifications
You must be signed in to change notification settings - Fork 161
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
ScopyTitleManager: Add singleton for changing the title of Scopy
Signed-off-by: Andrei-Fabian-Pop <[email protected]>
- Loading branch information
1 parent
d23b5e2
commit 5df2f19
Showing
3 changed files
with
203 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,146 @@ | ||
#include "scopytitlemanager.h" | ||
|
||
#include <QApplication> | ||
#include <QDebug> | ||
|
||
#define TITLE_SEPARATOR " - " | ||
|
||
using namespace adiscope; | ||
|
||
ScopyTitleManager *ScopyTitleManager::pinstance_{nullptr}; | ||
|
||
ScopyTitleManager::ScopyTitleManager(QObject *parent) : QObject(parent) { | ||
qDebug() << "ctor"; | ||
} | ||
|
||
ScopyTitleManager::~ScopyTitleManager() { qDebug() << "dtor"; } | ||
|
||
void ScopyTitleManager::buildTitle() | ||
{ | ||
QString result; | ||
bool addSeparator = false; | ||
|
||
if (!m_title.isEmpty()) { | ||
result = m_title; | ||
addSeparator = true; | ||
} | ||
|
||
if (!m_version.isEmpty()) { | ||
if (addSeparator) { | ||
result += TITLE_SEPARATOR; | ||
} | ||
|
||
result += m_version; | ||
addSeparator = true; | ||
} | ||
|
||
if (!m_hash.isEmpty()) { | ||
if (addSeparator) { | ||
result += TITLE_SEPARATOR; | ||
} | ||
|
||
result += m_hash; | ||
addSeparator = true; | ||
} | ||
|
||
if (!m_filename.isEmpty()) { | ||
if (addSeparator) { | ||
result += TITLE_SEPARATOR; | ||
} | ||
|
||
result += m_filename; | ||
addSeparator = true; | ||
} | ||
|
||
m_currentTitle = result; | ||
auto instance = ScopyTitleManager::GetInstance(); | ||
if (instance->m_mainWindow) { | ||
instance->m_mainWindow->setWindowTitle(instance->m_currentTitle); | ||
} else { | ||
qWarning() << "Cannot set title, no mainWidget was specified"; | ||
} | ||
} | ||
|
||
ScopyTitleManager *ScopyTitleManager::GetInstance() { | ||
if (pinstance_ == nullptr) { | ||
pinstance_ = new ScopyTitleManager( | ||
QApplication::instance()); // singleton has the app as parent | ||
} else { | ||
qDebug() << "Singleton instance already created."; | ||
} | ||
return pinstance_; | ||
} | ||
|
||
void ScopyTitleManager::setApplicationName(QString title) { | ||
auto instance = ScopyTitleManager::GetInstance(); | ||
instance->m_title = title; | ||
instance->buildTitle(); | ||
} | ||
|
||
void ScopyTitleManager::clearApplicationName() | ||
{ | ||
auto instance = ScopyTitleManager::GetInstance(); | ||
instance->m_title.clear(); | ||
instance->buildTitle(); | ||
} | ||
|
||
void ScopyTitleManager::setScopyVersion(QString version) | ||
{ | ||
auto instance = ScopyTitleManager::GetInstance(); | ||
instance->m_version = version; | ||
instance->buildTitle(); | ||
} | ||
|
||
void ScopyTitleManager::clearScopyVersion() | ||
{ | ||
auto instance = ScopyTitleManager::GetInstance(); | ||
instance->m_version.clear(); | ||
instance->buildTitle(); | ||
} | ||
|
||
void ScopyTitleManager::setGitHash(QString hash) { | ||
auto instance = ScopyTitleManager::GetInstance(); | ||
instance->m_hash = hash; | ||
instance->buildTitle(); | ||
} | ||
|
||
void ScopyTitleManager::clearGitHash() | ||
{ | ||
auto instance = ScopyTitleManager::GetInstance(); | ||
instance->m_hash.clear(); | ||
instance->buildTitle(); | ||
} | ||
|
||
void ScopyTitleManager::setIniFileName(QString filename) | ||
{ | ||
auto instance = ScopyTitleManager::GetInstance(); | ||
instance->m_filename = filename; | ||
instance->buildTitle(); | ||
} | ||
|
||
void ScopyTitleManager::clearIniFileName() | ||
{ | ||
auto instance = ScopyTitleManager::GetInstance(); | ||
instance->m_filename.clear(); | ||
instance->buildTitle(); | ||
} | ||
|
||
void ScopyTitleManager::clearAll() | ||
{ | ||
auto instance = ScopyTitleManager::GetInstance(); | ||
instance->m_title.clear(); | ||
instance->m_version.clear(); | ||
instance->m_hash.clear(); | ||
instance->m_filename.clear(); | ||
} | ||
|
||
QString ScopyTitleManager::getCurrentTitle() | ||
{ | ||
return ScopyTitleManager::GetInstance()->m_currentTitle; | ||
} | ||
|
||
void ScopyTitleManager::setMainWindow(QWidget *window) | ||
{ | ||
ScopyTitleManager::GetInstance()->m_mainWindow = window; | ||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
#ifndef SCOPY_SCOPYTITLEMANAGER_H | ||
#define SCOPY_SCOPYTITLEMANAGER_H | ||
|
||
#include <QWidget> | ||
#include <mutex> | ||
|
||
namespace adiscope { | ||
class ScopyTitleManager : public QObject { | ||
Q_OBJECT | ||
protected: | ||
ScopyTitleManager(QObject *parent = nullptr); | ||
~ScopyTitleManager(); | ||
|
||
void buildTitle(); | ||
|
||
public: | ||
ScopyTitleManager(ScopyTitleManager &other) = delete; | ||
void operator=(const ScopyTitleManager &other) = delete; | ||
|
||
static ScopyTitleManager *GetInstance(); | ||
|
||
static void setApplicationName(QString title); | ||
static void clearApplicationName(); | ||
|
||
static void setScopyVersion(QString version); | ||
static void clearScopyVersion(); | ||
|
||
static void setGitHash(QString hash); | ||
static void clearGitHash(); | ||
|
||
static void setIniFileName(QString filename); | ||
static void clearIniFileName(); | ||
|
||
static void clearAll(); | ||
static QString getCurrentTitle(); | ||
|
||
static void setMainWindow(QWidget *window); | ||
|
||
private: | ||
static ScopyTitleManager *pinstance_; | ||
QString m_title; | ||
QString m_version; | ||
QString m_hash; | ||
QString m_filename; | ||
QString m_currentTitle; | ||
QWidget *m_mainWindow; | ||
}; | ||
} // namespace scopy | ||
|
||
#endif // SCOPY_SCOPYTITLEMANAGER_H |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters