
Originally Posted by
anda_skoa
Of course there is, I just pointing out that in this case it is unnecessary since it can be done much more elegantly using a property binding.
But if you insist on doing it the ugly way
Connections
{
target: ueApplicationStatus
onUeSignalDatabaseConnectionChanged:
{
state=(status===UeTypeDatabaseConnectionStatus.CONNECTED) ?
"ueStatusIndicatorDabaseConnected" : "ueStatusIndicatorDabaseNotConnected"
}
} // Connections
Connections
{
target: ueApplicationStatus
onUeSignalDatabaseConnectionChanged:
{
state=(status===UeTypeDatabaseConnectionStatus.CONNECTED) ?
"ueStatusIndicatorDabaseConnected" : "ueStatusIndicatorDabaseNotConnected"
}
} // Connections
To copy to clipboard, switch view to plain text mode
- you want to handle the signal of the ueApplicationStatus object (which has a nice property that you should be using instead)
- the syntax for the conditional assignment is:
condition ? valueIf : valueElse
condition ? valueIf : valueElse
To copy to clipboard, switch view to plain text mode
Cheers,
_
Hmm, now I have following code - UeStatus header:
#ifndef UESTATUS_H
#define UESTATUS_H
#include <QObject>
#include <QList>
#include "../core/uetypes.h"
#include "../core/uedatabaseconnectionstatus.h"
{
Q_OBJECT
Q_PROPERTY(UeTypeLoggedUsers* m_ueLoginCandidates
READ ueLoginCandidates
WRITE ueSetLoginCandidates
NOTIFY ueSignalLoginCandidatesChanged)
Q_PROPERTY(UeTypeLoggedUsers* m_ueLoggedUsers
READ ueLoggedUsers
WRITE ueSetLoggedUsers
NOTIFY ueSignalLoggedUsersChanged)
Q_PROPERTY(UeDatabaseConnectionStatus::UeTypeDatabaseConnectionStatus m_ueDatabaseConnectionStatus
READ ueDbConnectionStatus
WRITE ueSetDbConnectionStatus
NOTIFY ueSignalDatabaseConnectionChanged)
private:
UeTypeLoggedUsers* m_ueLoginCandidates;
UeTypeLoggedUsers* m_ueLoggedUsers;
UeDatabaseConnectionStatus::UeTypeDatabaseConnectionStatus m_ueDatabaseConnectionStatus;
public:
explicit UeStatus
(QObject *parent
= 0);
~UeStatus();
inline UeTypeLoggedUsers* ueLoginCandidates() const
{ return this->m_ueLoginCandidates; }
inline UeTypeLoggedUsers* ueLoggedUsers() const
{ return this->m_ueLoggedUsers; }
inline UeDatabaseConnectionStatus::UeTypeDatabaseConnectionStatus ueDbConnectionStatus() const
{ return this->m_ueDatabaseConnectionStatus; }
inline void ueSetLoginCandidates(UeTypeLoggedUsers* const m_ueLoginCandidates)
{ this->m_ueLoginCandidates=m_ueLoginCandidates; }
inline void ueSetLoggedUsers(UeTypeLoggedUsers* const loggedUsers)
{ this->m_ueLoggedUsers=loggedUsers; }
inline void ueSetDbConnectionStatus(const UeDatabaseConnectionStatus::UeTypeDatabaseConnectionStatus& status)
{ this->m_ueDatabaseConnectionStatus=status; }
signals:
void ueSignalLoginCandidatesChanged();
void ueSignalLoggedUsersChanged();
void ueSignalDatabaseConnectionChanged(const UeDatabaseConnectionStatus::UeTypeDatabaseConnectionStatus& newStatus);
public slots:
void ueSlotDatabaseConnectionChanged(const UeDatabaseConnectionStatus::UeTypeDatabaseConnectionStatus& newStatus);
};
#endif // UESTATUS_H
#ifndef UESTATUS_H
#define UESTATUS_H
#include <QObject>
#include <QList>
#include "../core/uetypes.h"
#include "../core/uedatabaseconnectionstatus.h"
class UeStatus : public QObject
{
Q_OBJECT
Q_PROPERTY(UeTypeLoggedUsers* m_ueLoginCandidates
READ ueLoginCandidates
WRITE ueSetLoginCandidates
NOTIFY ueSignalLoginCandidatesChanged)
Q_PROPERTY(UeTypeLoggedUsers* m_ueLoggedUsers
READ ueLoggedUsers
WRITE ueSetLoggedUsers
NOTIFY ueSignalLoggedUsersChanged)
Q_PROPERTY(UeDatabaseConnectionStatus::UeTypeDatabaseConnectionStatus m_ueDatabaseConnectionStatus
READ ueDbConnectionStatus
WRITE ueSetDbConnectionStatus
NOTIFY ueSignalDatabaseConnectionChanged)
private:
UeTypeLoggedUsers* m_ueLoginCandidates;
UeTypeLoggedUsers* m_ueLoggedUsers;
UeDatabaseConnectionStatus::UeTypeDatabaseConnectionStatus m_ueDatabaseConnectionStatus;
public:
explicit UeStatus(QObject *parent = 0);
~UeStatus();
inline UeTypeLoggedUsers* ueLoginCandidates() const
{ return this->m_ueLoginCandidates; }
inline UeTypeLoggedUsers* ueLoggedUsers() const
{ return this->m_ueLoggedUsers; }
inline UeDatabaseConnectionStatus::UeTypeDatabaseConnectionStatus ueDbConnectionStatus() const
{ return this->m_ueDatabaseConnectionStatus; }
inline void ueSetLoginCandidates(UeTypeLoggedUsers* const m_ueLoginCandidates)
{ this->m_ueLoginCandidates=m_ueLoginCandidates; }
inline void ueSetLoggedUsers(UeTypeLoggedUsers* const loggedUsers)
{ this->m_ueLoggedUsers=loggedUsers; }
inline void ueSetDbConnectionStatus(const UeDatabaseConnectionStatus::UeTypeDatabaseConnectionStatus& status)
{ this->m_ueDatabaseConnectionStatus=status; }
signals:
void ueSignalLoginCandidatesChanged();
void ueSignalLoggedUsersChanged();
void ueSignalDatabaseConnectionChanged(const UeDatabaseConnectionStatus::UeTypeDatabaseConnectionStatus& newStatus);
public slots:
void ueSlotDatabaseConnectionChanged(const UeDatabaseConnectionStatus::UeTypeDatabaseConnectionStatus& newStatus);
};
#endif // UESTATUS_H
To copy to clipboard, switch view to plain text mode
and its implementation:
#include "uestatus.h"
UeStatus
::UeStatus(QObject *parent
){
this->ueSetLoginCandidates(new UeTypeLoggedUsers());
this->ueSetLoggedUsers(new UeTypeLoggedUsers());
//this->ueSetDbConnectionStatus(NOT_CONNECTED);
} // constructor
UeStatus::~UeStatus()
{
delete this->ueLoginCandidates();
delete this->ueLoggedUsers();
} // destructor
void UeStatus::ueSlotDatabaseConnectionChanged(const UeDatabaseConnectionStatus::UeTypeDatabaseConnectionStatus& newStatus)
{
this->ueSetDbConnectionStatus(newStatus);
emit this->ueSignalDatabaseConnectionChanged(newStatus);
} // ueSignalDatabaseConnectionChanged
#include "uestatus.h"
UeStatus::UeStatus(QObject *parent)
: QObject(parent)
{
this->ueSetLoginCandidates(new UeTypeLoggedUsers());
this->ueSetLoggedUsers(new UeTypeLoggedUsers());
//this->ueSetDbConnectionStatus(NOT_CONNECTED);
} // constructor
UeStatus::~UeStatus()
{
delete this->ueLoginCandidates();
delete this->ueLoggedUsers();
} // destructor
void UeStatus::ueSlotDatabaseConnectionChanged(const UeDatabaseConnectionStatus::UeTypeDatabaseConnectionStatus& newStatus)
{
this->ueSetDbConnectionStatus(newStatus);
emit this->ueSignalDatabaseConnectionChanged(newStatus);
} // ueSignalDatabaseConnectionChanged
To copy to clipboard, switch view to plain text mode
and here is item:
import QtQuick 2.0
import si.mikroelektronika 1.0
Item
{
id: ueStatusIndicator
property string ueParamImageStatusOn
property string ueParamImageStatusOff
state: "ueStatusIndicatorDabaseNotConnected"
Image
{
id: ueStatusIndicatorCurrentImage
smooth: true
fillMode: Image.PreserveAspectFit
width: 96
height: 96
sourceSize.width: 96
sourceSize.height: 96
} // Image
Connections
{
target: ueApplicationStatus
onUeSignalDatabaseConnectionChanged:
{
state=(newStatus===UeTypeDatabaseConnectionStatus.CONNECTED)?
"ueStatusIndicatorDabaseConnected":
"ueStatusIndicatorDabaseNotConnected"
}
} // Connections
states:
[
State
{
name: "ueStatusIndicatorDabaseConnected"
PropertyChanges
{
target: ueStatusIndicatorCurrentImage
source: ueParamImageStatusOn
} // PropertyChanges
}, // State
State
{
name: "ueStatusIndicatorDabaseNotConnected"
PropertyChanges
{
target: ueStatusIndicatorCurrentImage
source: ueParamImageStatusOff
} // PropertyChanges
} // State
] // states
} // Item
import QtQuick 2.0
import si.mikroelektronika 1.0
Item
{
id: ueStatusIndicator
property string ueParamImageStatusOn
property string ueParamImageStatusOff
state: "ueStatusIndicatorDabaseNotConnected"
Image
{
id: ueStatusIndicatorCurrentImage
smooth: true
fillMode: Image.PreserveAspectFit
width: 96
height: 96
sourceSize.width: 96
sourceSize.height: 96
} // Image
Connections
{
target: ueApplicationStatus
onUeSignalDatabaseConnectionChanged:
{
state=(newStatus===UeTypeDatabaseConnectionStatus.CONNECTED)?
"ueStatusIndicatorDabaseConnected":
"ueStatusIndicatorDabaseNotConnected"
}
} // Connections
states:
[
State
{
name: "ueStatusIndicatorDabaseConnected"
PropertyChanges
{
target: ueStatusIndicatorCurrentImage
source: ueParamImageStatusOn
} // PropertyChanges
}, // State
State
{
name: "ueStatusIndicatorDabaseNotConnected"
PropertyChanges
{
target: ueStatusIndicatorCurrentImage
source: ueParamImageStatusOff
} // PropertyChanges
} // State
] // states
} // Item
To copy to clipboard, switch view to plain text mode
and this code combo DOES NOT work, i.e., signal code does not get executed in UeStatusIndicator. What did we still miss?
Bookmarks