Merge branch 'master' of dev.vatsim-germany.org:vatpilotclient/client

This commit is contained in:
Roland Winklmeier
2014-01-17 20:14:37 +01:00
17 changed files with 142 additions and 60 deletions

View File

@@ -22,7 +22,7 @@ MainWindow::MainWindow(GuiModes::WindowMode windowMode, QWidget *parent) :
QMainWindow(parent, windowMode == GuiModes::WindowFrameless ? (Qt::Window | Qt::FramelessWindowHint) : Qt::Tool),
ui(new Ui::MainWindow),
m_infoWindow(nullptr),
m_windowMode(windowMode), m_init(false), m_coreMode(GuiModes::CoreExternal),
m_init(false), m_windowMode(windowMode), m_coreMode(GuiModes::CoreExternal),
m_coreAvailable(false), m_contextNetworkAvailable(false), m_contextVoiceAvailable(false),
m_dBusConnection("dummy"), m_coreRuntime(nullptr),
m_atcListOnline(nullptr), m_atcListBooked(nullptr),

View File

@@ -1538,7 +1538,7 @@ QSizeGrip {
<item>
<widget class="QTabWidget" name="tb_Settings">
<property name="currentIndex">
<number>0</number>
<number>1</number>
</property>
<widget class="QWidget" name="tb_SettingsTrafficNetwork">
<attribute name="title">
@@ -1736,14 +1736,14 @@ QSizeGrip {
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="lbl_SettingsAircraftType">
<widget class="QLabel" name="lbl_SettingsIcaoTypeDesignator">
<property name="text">
<string>ICAO type (e.g. A320)</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="lbl_SettingsAircraftType"/>
<widget class="QLineEdit" name="le_SettingsIcaoTypeDesignator"/>
</item>
<item row="2" column="0">
<widget class="QLabel" name="lbl_SettingsIcaoAirline">
@@ -1756,14 +1756,14 @@ QSizeGrip {
<widget class="QLineEdit" name="le_SettingsIcaoAirline"/>
</item>
<item row="3" column="0">
<widget class="QLabel" name="lbl_SettingsPlaneType">
<widget class="QLabel" name="lbl_SettingsIcaoType">
<property name="text">
<string>Plane type</string>
<string>Aircraft type (e.g. L2J)</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QLineEdit" name="le_SettingsPlaneType"/>
<widget class="QLineEdit" name="le_SettingsIcaoType"/>
</item>
<item row="4" column="0">
<widget class="QLabel" name="lbl_SettingsModes">

View File

@@ -42,6 +42,8 @@ bool MainWindow::reloadOwnAircraft()
if (this->m_contextVoiceAvailable)
{
CVoiceRoomList selectedRooms = this->m_contextNetwork->getSelectedVoiceRooms();
if (selectedRooms.size() == 2)
{
this->m_voiceRoomCom1 = this->ui->cb_CockpitVoiceRoom1Override->isChecked() ?
this->ui->le_CockpitVoiceRoomCom1->text().trimmed() :
selectedRooms[0];
@@ -49,6 +51,7 @@ bool MainWindow::reloadOwnAircraft()
this->ui->le_CockpitVoiceRoomCom2->text().trimmed() :
selectedRooms[1];
}
}
//
this->updateCockpitFromContext();

View File

@@ -117,6 +117,7 @@ void MainWindow::init(GuiModes::CoreMode coreMode)
// signal / slots
bool connect;
this->connect(this->m_contextNetwork, &IContextNetwork::statusMessage, this, &MainWindow::displayStatusMessage);
this->connect(this->m_contextNetwork, &IContextNetwork::statusMessages, this, &MainWindow::displayStatusMessages);
this->connect(this->m_contextNetwork, &IContextNetwork::connectionTerminated, this, &MainWindow::connectionTerminated);
this->connect(this->m_contextNetwork, &IContextNetwork::connectionStatusChanged, this, &MainWindow::connectionStatusChanged);
this->connect(this->m_contextSettings, &IContextSettings::changedNetworkSettings, this, &MainWindow::changedNetworkSettings);

View File

@@ -1,10 +1,10 @@
<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN" "http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
<node>
<interface name="blackmisctest.datacontext">
<property name="qpAtcOnlineList" type="(a((s)(dd(s))(ssss)((dd(s))(dd(s))(dd(s)))(dd(s))b((iii)(iiii)i)((iii)(iiii)i)))" access="readwrite">
<property name="qpAtcOnlineList" type="(a((ss)(dd(s))(ssss)((dd(s))(dd(s))(dd(s)))(dd(s))(dd(s))b((iii)(iiii)i)((iii)(iiii)i)(si((iii)(iiii)i))(si((iii)(iiii)i))(ssbb)))" access="readwrite">
<annotation name="org.qtproject.QtDBus.QtTypeName" value="BlackMisc::Aviation::CAtcStationList"/>
</property>
<property name="qpAtcBookedList" type="(a((s)(dd(s))(ssss)((dd(s))(dd(s))(dd(s)))(dd(s))b((iii)(iiii)i)((iii)(iiii)i)))" access="readwrite">
<property name="qpAtcBookedList" type="(a((ss)(dd(s))(ssss)((dd(s))(dd(s))(dd(s)))(dd(s))(dd(s))b((iii)(iiii)i)((iii)(iiii)i)(si((iii)(iiii)i))(si((iii)(iiii)i))(ssbb)))" access="readwrite">
<annotation name="org.qtproject.QtDBus.QtTypeName" value="BlackMisc::Aviation::CAtcStationList"/>
</property>
<property name="qpFooStrings" type="as" access="read"/>
@@ -19,14 +19,12 @@
<arg name="baz" type="s" direction="in"/>
</method>
<method name="updateBookedControllers">
<arg type="i" direction="out"/>
<arg name="condition" type="(aiavai)" direction="in"/>
<annotation name="org.qtproject.QtDBus.QtTypeName.In0" value="BlackMisc::CValueMap"/>
<arg name="values" type="(aiavai)" direction="in"/>
<annotation name="org.qtproject.QtDBus.QtTypeName.In1" value="BlackMisc::CValueMap"/>
</method>
<method name="updateOnlineControllers">
<arg type="i" direction="out"/>
<arg name="condition" type="(aiavai)" direction="in"/>
<annotation name="org.qtproject.QtDBus.QtTypeName.In0" value="BlackMisc::CValueMap"/>
<arg name="values" type="(aiavai)" direction="in"/>

View File

@@ -22,7 +22,7 @@
<annotation name="org.qtproject.QtDBus.QtTypeName.In0" value="BlackMisc::PhysicalQuantities::CSpeed"/>
</method>
<method name="receiveComUnit">
<arg name="comUnit" type="(s(dd(s))(dd(s))i)" direction="in"/>
<arg name="comUnit" type="(s(dd(s))(dd(s))iiib)" direction="in"/>
<annotation name="org.qtproject.QtDBus.QtTypeName.In0" value="BlackMisc::Aviation::CComSystem"/>
</method>
<method name="receiveAltitude">
@@ -66,21 +66,21 @@
<arg name="lengthsVariantList" type="av" direction="in"/>
</method>
<method name="receiveAtcStation">
<arg name="station" type="((s)(dd(s))(ssss)((dd(s))(dd(s))(dd(s)))(dd(s))b((iii)(iiii)i)((iii)(iiii)i))" direction="in"/>
<arg name="station" type="((ss)(dd(s))(ssss)((dd(s))(dd(s))(dd(s)))(dd(s))(dd(s))b((iii)(iiii)i)((iii)(iiii)i)(si((iii)(iiii)i))(si((iii)(iiii)i))(ssbb))" direction="in"/>
<annotation name="org.qtproject.QtDBus.QtTypeName.In0" value="BlackMisc::Aviation::CAtcStation"/>
</method>
<method name="pingAtcStation">
<arg type="((s)(dd(s))(ssss)((dd(s))(dd(s))(dd(s)))(dd(s))b((iii)(iiii)i)((iii)(iiii)i))" direction="out"/>
<arg type="((ss)(dd(s))(ssss)((dd(s))(dd(s))(dd(s)))(dd(s))(dd(s))b((iii)(iiii)i)((iii)(iiii)i)(si((iii)(iiii)i))(si((iii)(iiii)i))(ssbb))" direction="out"/>
<annotation name="org.qtproject.QtDBus.QtTypeName.Out0" value="BlackMisc::Aviation::CAtcStation"/>
<arg name="station" type="((s)(dd(s))(ssss)((dd(s))(dd(s))(dd(s)))(dd(s))b((iii)(iiii)i)((iii)(iiii)i))" direction="in"/>
<arg name="station" type="((ss)(dd(s))(ssss)((dd(s))(dd(s))(dd(s)))(dd(s))(dd(s))b((iii)(iiii)i)((iii)(iiii)i)(si((iii)(iiii)i))(si((iii)(iiii)i))(ssbb))" direction="in"/>
<annotation name="org.qtproject.QtDBus.QtTypeName.In0" value="BlackMisc::Aviation::CAtcStation"/>
</method>
<method name="receiveCallsign">
<arg name="callsign" type="(s)" direction="in"/>
<arg name="callsign" type="(ss)" direction="in"/>
<annotation name="org.qtproject.QtDBus.QtTypeName.In0" value="BlackMisc::Aviation::CCallsign"/>
</method>
<method name="getAtcStationList">
<arg type="(a((s)(dd(s))(ssss)((dd(s))(dd(s))(dd(s)))(dd(s))b((iii)(iiii)i)((iii)(iiii)i)))" direction="out"/>
<arg type="(a((ss)(dd(s))(ssss)((dd(s))(dd(s))(dd(s)))(dd(s))(dd(s))b((iii)(iiii)i)((iii)(iiii)i)(si((iii)(iiii)i))(si((iii)(iiii)i))(ssbb)))" direction="out"/>
<annotation name="org.qtproject.QtDBus.QtTypeName.Out0" value="BlackMisc::Aviation::CAtcStationList"/>
<arg name="number" type="i" direction="in"/>
</method>
@@ -89,7 +89,7 @@
<arg name="number" type="i" direction="in"/>
</method>
<method name="receiveAtcStationList">
<arg name="AtcStationList" type="(a((s)(dd(s))(ssss)((dd(s))(dd(s))(dd(s)))(dd(s))b((iii)(iiii)i)((iii)(iiii)i)))" direction="in"/>
<arg name="AtcStationList" type="(a((ss)(dd(s))(ssss)((dd(s))(dd(s))(dd(s)))(dd(s))(dd(s))b((iii)(iiii)i)((iii)(iiii)i)(si((iii)(iiii)i))(si((iii)(iiii)i))(ssbb)))" direction="in"/>
<annotation name="org.qtproject.QtDBus.QtTypeName.In0" value="BlackMisc::Aviation::CAtcStationList"/>
</method>
<method name="receiveValueMap">
@@ -97,9 +97,9 @@
<annotation name="org.qtproject.QtDBus.QtTypeName.In0" value="BlackMisc::CValueMap"/>
</method>
<method name="pingAtcStationList">
<arg type="(a((s)(dd(s))(ssss)((dd(s))(dd(s))(dd(s)))(dd(s))b((iii)(iiii)i)((iii)(iiii)i)))" direction="out"/>
<arg type="(a((ss)(dd(s))(ssss)((dd(s))(dd(s))(dd(s)))(dd(s))(dd(s))b((iii)(iiii)i)((iii)(iiii)i)(si((iii)(iiii)i))(si((iii)(iiii)i))(ssbb)))" direction="out"/>
<annotation name="org.qtproject.QtDBus.QtTypeName.Out0" value="BlackMisc::Aviation::CAtcStationList"/>
<arg name="AtcStationList" type="(a((s)(dd(s))(ssss)((dd(s))(dd(s))(dd(s)))(dd(s))b((iii)(iiii)i)((iii)(iiii)i)))" direction="in"/>
<arg name="AtcStationList" type="(a((ss)(dd(s))(ssss)((dd(s))(dd(s))(dd(s)))(dd(s))(dd(s))b((iii)(iiii)i)((iii)(iiii)i)(si((iii)(iiii)i))(si((iii)(iiii)i))(ssbb)))" direction="in"/>
<annotation name="org.qtproject.QtDBus.QtTypeName.In0" value="BlackMisc::Aviation::CAtcStationList"/>
</method>
<method name="getSpeed">
@@ -107,7 +107,7 @@
<annotation name="org.qtproject.QtDBus.QtTypeName.Out0" value="BlackMisc::PhysicalQuantities::CSpeed"/>
</method>
<method name="getAtcStation">
<arg type="((s)(dd(s))(ssss)((dd(s))(dd(s))(dd(s)))(dd(s))b((iii)(iiii)i)((iii)(iiii)i))" direction="out"/>
<arg type="((ss)(dd(s))(ssss)((dd(s))(dd(s))(dd(s)))(dd(s))(dd(s))b((iii)(iiii)i)((iii)(iiii)i)(si((iii)(iiii)i))(si((iii)(iiii)i))(ssbb))" direction="out"/>
<annotation name="org.qtproject.QtDBus.QtTypeName.Out0" value="BlackMisc::Aviation::CAtcStation"/>
</method>
</interface>

View File

@@ -82,7 +82,7 @@ namespace BlackMiscTest
/*!
* \brief Default constructor
*/
CDataContext(QObject *parent = 0) : QObject(parent) {}
CDataContext(QObject *parent = nullptr) : QObject(parent) {}
/*!
* \brief ctor for Qt meta system

View File

@@ -33,28 +33,81 @@ int main(int argc, char *argv[])
}
// some runtime settings
QString ip = "192.168.0.133";
QString port = "45000";
const QString executable = QString(cmdlineArgs.at(0)); // used as command to fork myself
const bool clientFlag = cmdlineArgs.contains("client", Qt::CaseInsensitive);
const bool useSessionBusForServer = cmdlineArgs.contains("session", Qt::CaseInsensitive); // flag for session bus
QString address(useSessionBusForServer ? "session" : "tcp:host=192.168.0.133,port=45000"); // testing with real transfer
// loopback 127.0.0.1
bool useSessionBusForServer;
if (cmdlineArgs.contains("session", Qt::CaseInsensitive))
{
// session mode
useSessionBusForServer = true;
}
else
{
// TCP/IP mode
useSessionBusForServer = false;
if (cmdlineArgs.length() > 2)
{
ip = cmdlineArgs.at(cmdlineArgs.length() - 2);
port = cmdlineArgs.at(cmdlineArgs.length() - 1);
}
}
QString addressTcp = QString("tcp:host=%1,port=%2").arg(ip).arg(port);
QString address(useSessionBusForServer ? "session" : addressTcp); // testing with real transfer
// Create a Testservice instance and register it with the session bus only if
// the service isn't already available.
if (!clientFlag)
{
// Configure tests
qDebug() << "1 .. Run testservice to test data transfer" << address;
qDebug() << "1sb. Run testservice via session bus";
qDebug() << "2 .. Data context example (via TCP)" << address;
qDebug() << "2sb. Data context example (via session bus)";
qDebug() << "3 .. Data context example, only server (via TCP)" << address;
qDebug() << "3sb. Data context example, only server (via session bus)";
Menu:
qDebug() << "1 .. Run testservice to test data transfer" << addressTcp;
qDebug() << "1sb. Run testservice via session bus";
qDebug() << "2 .. Data context example (via TCP)" << addressTcp;
qDebug() << "2sb. Data context example (via session bus)";
qDebug() << "3 .. Data context example, only server (via TCP)" << addressTcp;
qDebug() << "3sb. Data context example, only server (via session bus)";
qDebug() << "----- Change address / port (no validation, do before starting server)";
qDebug() << "loop Address to loopback, 127.0.0.1";
qDebug() << "ip some IP address, e.g 192.168.100.100";
qDebug() << "port some port, e.g 12345";
qDebug() << "-----";
qDebug() << "x .. Bye";
QTextStream qtin(stdin);
QString mode = qtin.readLine().toLower();
bool startServer = !mode.startsWith('3');
QString mode = qtin.readLine().toLower().trimmed();
if (mode.startsWith("l"))
{
ip = "127.0.0.1";
addressTcp = QString("tcp:host=%1,port=%2").arg(ip).arg(port);
goto Menu;
}
if (mode.startsWith("i"))
{
QStringList p = mode.split(QRegExp("\\s"));
if (p.length() > 1)
{
ip = p.at(1);
addressTcp = QString("tcp:host=%1,port=%2").arg(ip).arg(port);
}
goto Menu;
}
if (mode.startsWith("p"))
{
QStringList p = mode.split(QRegExp("\\s"));
if (p.length() > 1)
{
port = p.at(1);
addressTcp = QString("tcp:host=%1,port=%2").arg(ip).arg(port);
}
goto Menu;
}
// start DBus
address = QString(useSessionBusForServer ? "session" : addressTcp); // testing with real transfer
bool startClient = !mode.startsWith('3');
if (mode.contains("sb", Qt::CaseInsensitive)) address = "session";
if (mode.startsWith("1"))
{
@@ -71,6 +124,8 @@ int main(int argc, char *argv[])
// I know I am in the "server process here", so I can safely create a CDBusServer
// this runs in the original process and can be directly debugged
qDebug();
qDebug("--------------------------------------------------------");
BlackCore::CDBusServer *dBusServer = new BlackCore::CDBusServer(useSessionBusForServer ? "session" : address);
qDebug() << "server" << dBusServer->address() << "connected:" << dBusServer->isConnected();
@@ -78,9 +133,16 @@ int main(int argc, char *argv[])
QStringList args;
args << "client";
args << mode;
if (address == "session") args << address;
if (startServer) BlackMiscTest::ServiceTool::startNewProcess(executable, args, &a);
if (address == "session")
{
args << address; // set session as cmd arg
}
else
{
args << ip;
args << port;
}
if (startClient) BlackMiscTest::ServiceTool::startNewProcess(executable, args, &a);
// run tests
if (mode == "testservice")

View File

@@ -660,8 +660,7 @@ namespace BlackMiscTest
value.addValue(CAtcStation::IndexBookedUntil, QDateTime::currentDateTimeUtc().addDays(2));
qDebug() << " condition" << condition;
qDebug() << " values" << value;
qint32 c = dataContextInterface.updateOnlineControllers(condition, value);
qDebug() << c << "values changed in online controllers";
dataContextInterface.updateOnlineControllers(condition, value);
}
// display current status
@@ -679,7 +678,7 @@ namespace BlackMiscTest
// next round? Client
qDebug() << "Key x to exit";
qDebug() << "1 .. add new list via property on interface";
qDebug() << "3 .. append 1 to controllers in context (no expected to change anything)"; // add to reference
qDebug() << "3 .. append 1 to controllers in context (not expected to change anything)"; // add to reference
qDebug() << "5 .. foo signal directly on interface";
qDebug() << "7x . 7<callsign>, update if, e.g. 7EDDM_TWR";

View File

@@ -5,6 +5,10 @@
<arg name="message" type="(sii((iii)(iiii)i))" direction="in"/>
<annotation name="org.qtproject.QtDBus.QtTypeName.Out0" value="BlackMisc::CStatusMessage"/>
</signal>
<signal name="statusMessages">
<arg name="messages" type="(a(sii((iii)(iiii)i)))" direction="in"/>
<annotation name="org.qtproject.QtDBus.QtTypeName.Out0" value="BlackMisc::CStatusMessageList"/>
</signal>
<signal name="changedAtcStationsOnline">
</signal>
<signal name="changedAtcStationsBooked">

View File

@@ -246,11 +246,11 @@ namespace BlackCore
}
// send as message
QString m("connection status changed ");
m.append(this->m_network->connectionStatusToString(from)).append(" ").append(this->m_network->connectionStatusToString(to));
QString m("connection status changed from %1 to %2");
m = m.arg(INetwork::connectionStatusToString(from), INetwork::connectionStatusToString(to));
msgs.push_back(CStatusMessage(CStatusMessage::TypeTrafficNetwork,
to == INetwork::DisconnectedError ? CStatusMessage::SeverityError : CStatusMessage::SeverityInfo, m));
emit this->statusMessage(msgs[0]);
emit this->statusMessages(msgs);
// send as own signal
emit this->connectionStatusChanged(from, to);

View File

@@ -38,6 +38,8 @@ namespace BlackCore
"connectionTerminated", this, SIGNAL(connectionTerminated()));
connection.connect(serviceName, IContextNetwork::ServicePath(), IContextNetwork::InterfaceName(),
"statusMessage", this, SIGNAL(statusMessage(BlackMisc::CStatusMessage)));
connection.connect(serviceName, IContextNetwork::ServicePath(), IContextNetwork::InterfaceName(),
"statusMessages", this, SIGNAL(statusMessages(BlackMisc::CStatusMessageList)));
connection.connect(serviceName, IContextNetwork::ServicePath(), IContextNetwork::InterfaceName(),
"textMessagesReceived", this, SIGNAL(textMessagesReceived(BlackMisc::Network::CTextMessageList)));
}

View File

@@ -106,11 +106,17 @@ namespace BlackCore
signals:
/*!
* \brief ATC station list has been changed
* \brief Send status messages
* \param message
*/
void statusMessage(const BlackMisc::CStatusMessage &message);
/*!
* \brief Send status messages
* \param messages
*/
void statusMessages(const BlackMisc::CStatusMessageList &messages);
/*!
* \brief List has been changed
*/
@@ -137,8 +143,6 @@ namespace BlackCore
* \param to
*/
// If I use the enum, adaptor / interface are not created correctly
void connectionStatusChanged(uint from, uint to);
/*!

View File

@@ -64,11 +64,20 @@ namespace BlackCore
Connected
};
QString connectionStatusToString(ConnectionStatus status) const
static const QString connectionStatusToString(ConnectionStatus status)
{
int index = metaObject()->indexOfEnumerator("ConnectionStatus");
QMetaEnum metaEnum = metaObject()->enumerator(index);
return metaEnum.valueToKey(status);
// the version with metaObject, metaObject()->indexOfEnumerator does not work anymore
// an interface cannot be used with Q_DECLAREMETATYPE
switch (status)
{
case Disconnected: return "disconnected";
case DisconnectedError: return "disconnectedError";
case Connecting: return "connecting";
case Connected: return "connected";
default: break;
}
qFatal("Missing value");
return ""; // just for compiler warning
}
virtual bool isConnected() const = 0;
@@ -101,7 +110,7 @@ namespace BlackCore
virtual void setOwnAircraftPosition(const BlackMisc::Geo::CCoordinateGeodetic &position, const BlackMisc::Aviation::CAltitude &altitude) = 0;
virtual void setOwnAircraftSituation(const BlackMisc::Aviation::CAircraftSituation &situation) = 0;
virtual void setOwnAircraftAvionics(const BlackMisc::Aviation::CComSystem &com1, const BlackMisc::Aviation::CComSystem &com2,
const BlackMisc::Aviation::CTransponder &xpdr) = 0;
const BlackMisc::Aviation::CTransponder &transponder) = 0;
// Weather / flight plan
virtual void requestMetar(const QString &airportICAO) = 0;

View File

@@ -31,8 +31,8 @@ namespace BlackCore
CNetworkVatlib::CNetworkVatlib(CNetworkVatlib::LoginMode loginMode, QObject *parent)
: INetwork(parent),
m_net(Cvatlib_Network::Create()),
m_status(Cvatlib_Network::connStatus_Idle),
m_loginMode(loginMode),
m_status(Cvatlib_Network::connStatus_Idle),
m_fsdTextCodec(QTextCodec::codecForName("latin1"))
{
try

View File

@@ -37,7 +37,7 @@ namespace BlackMisc
* \brief Default constructor
*/
CModulator() :
CAvionicsBase("default"), m_volumeInput(0), m_volumeOutput(0), m_digits(2) {}
CAvionicsBase("default"), m_volumeInput(0), m_volumeOutput(0), m_enabled(true), m_digits(2) {}
/*!
* \brief Constructor
@@ -47,7 +47,7 @@ namespace BlackMisc
* \param digits
*/
CModulator(const QString &name, const BlackMisc::PhysicalQuantities::CFrequency &activeFrequency, const BlackMisc::PhysicalQuantities::CFrequency &standbyFrequency, int digits) :
CAvionicsBase(name), m_frequencyActive(activeFrequency), m_frequencyStandby(standbyFrequency), m_volumeInput(0), m_volumeOutput(0), m_digits(digits), m_enabled(true) {}
CAvionicsBase(name), m_frequencyActive(activeFrequency), m_frequencyStandby(standbyFrequency), m_volumeInput(0), m_volumeOutput(0), m_enabled(true), m_digits(digits) {}
/*!
* \brief String for converter

View File

@@ -25,7 +25,7 @@ namespace BlackMisc
* (The implicitly generated copy constructor would suffice, but for what seems to be a bug in MSVC2010 template instantiation)
*/
template <class MU, class PQ> CPhysicalQuantity<MU, PQ>::CPhysicalQuantity(const CPhysicalQuantity &other) :
m_value(other.m_value), m_unit(other.m_unit)
CValueObject(), m_value(other.m_value), m_unit(other.m_unit)
{
// void
}