+ << "\n(" << DEMO_BUILD_DATE << ")\n\n";
+}
+
+void AppendIpAddress(std::ostringstream& stream)
+{
+ // Append IP addresses
+ struct ifaddrs *interfaceAddresses, *head;
+ if(!getifaddrs(&interfaceAddresses))
+ {
+ head = interfaceAddresses;
+
+ char host[NI_MAXHOST];
+ int n = 0;
+ while(interfaceAddresses)
+ {
+ if(strcmp(interfaceAddresses->ifa_name, "lo"))
+ {
+ struct sockaddr* address = interfaceAddresses->ifa_addr;
+ if(address != nullptr && address->sa_family == AF_INET)
+ {
+ if(getnameinfo(address, sizeof(struct sockaddr_in), host, NI_MAXHOST, nullptr, 0, NI_NUMERICHOST) == 0)
+ {
+ stream<<interfaceAddresses->ifa_name<<": "<<host<<std::endl;
+ ++n;
+ }
+ }
+ }
+ interfaceAddresses = interfaceAddresses->ifa_next;
+ }
+ freeifaddrs(head);
+ }
+}
+
+/**
+ * Creates a popup that shows the version information of the DALi libraries and demo
+ */
+Dali::Toolkit::Popup CreateVersionPopup(Application& application, ConnectionTrackerInterface& connectionTracker)
+{
+ std::ostringstream stream;
+ AppendVersionString(stream);
+ AppendIpAddress(stream);