/*
- * Copyright (c) 2020 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2021 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
#include "dali-table-view.h"
// EXTERNAL INCLUDES
-#include <dali/devel-api/actors/actor-devel.h>
-#include <dali/devel-api/images/distance-field.h>
-#include <dali-toolkit/devel-api/controls/control-devel.h>
-#include <dali-toolkit/devel-api/shader-effects/alpha-discard-effect.h>
-#include <dali-toolkit/devel-api/shader-effects/distance-field-effect.h>
#include <dali-toolkit/dali-toolkit.h>
#include <dali-toolkit/devel-api/accessibility-manager/accessibility-manager.h>
+#include <dali-toolkit/devel-api/controls/control-devel.h>
#include <dali-toolkit/devel-api/controls/table-view/table-view.h>
#include <dali-toolkit/devel-api/shader-effects/alpha-discard-effect.h>
#include <dali-toolkit/devel-api/shader-effects/distance-field-effect.h>
#include "shared/utility.h"
#include "shared/view.h"
+
+#include <ifaddrs.h>
+#include <net/if.h>
+#include <netdb.h>
+#include <sys/ioctl.h>
+#include <sys/types.h>
+#include <cstdio>
+#include <cstring>
+
+
using namespace Dali;
using namespace Dali::Toolkit;
const int EXAMPLES_PER_ROW = 3;
const int ROWS_PER_PAGE = 3;
const int EXAMPLES_PER_PAGE = EXAMPLES_PER_ROW * ROWS_PER_PAGE;
-const Vector3 TABLE_RELATIVE_SIZE(0.95f, 0.9f, 0.8f); ///< TableView's relative size to the entire stage. The Y value means sum of the logo and table relative heights.
+const Vector3 TABLE_RELATIVE_SIZE(0.95f, 0.9f, 0.8f); ///< TableView's relative size to the entire stage. The Y value means sum of the logo and table relative heights.
const char* const DEMO_BUILD_DATE = __DATE__ " " __TIME__;
float mTileXOffset;
};
-/**
- * Creates a popup that shows the version information of the DALi libraries and demo
- */
-Dali::Toolkit::Popup CreateVersionPopup(Application& application, ConnectionTrackerInterface& connectionTracker)
+void AppendVersionString(std::ostringstream& stream)
{
- std::ostringstream stream;
stream << "DALi Core: " << CORE_MAJOR_VERSION << "." << CORE_MINOR_VERSION << "." << CORE_MICRO_VERSION << std::endl
<< "(" << CORE_BUILD_DATE << ")\n";
stream << "DALi Adaptor: " << ADAPTOR_MAJOR_VERSION << "." << ADAPTOR_MINOR_VERSION << "." << ADAPTOR_MICRO_VERSION << std::endl
stream << "DALi Toolkit: " << TOOLKIT_MAJOR_VERSION << "." << TOOLKIT_MINOR_VERSION << "." << TOOLKIT_MICRO_VERSION << std::endl
<< "(" << TOOLKIT_BUILD_DATE << ")\n";
stream << "DALi Demo:"
- << "\n(" << DEMO_BUILD_DATE << ")\n";
+ << "\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);
Dali::Toolkit::Popup popup = Dali::Toolkit::Popup::New();
// Hide the popup when touched outside
popup.OutsideTouchedSignal().Connect(
&connectionTracker,
- [popup]() mutable
- {
+ [popup]() mutable {
if(popup && (popup.GetDisplayState() == Toolkit::Popup::SHOWN))
{
popup.SetDisplayState(Popup::HIDDEN);
if(windowSize.GetWidth() <= windowSize.GetHeight())
{
- winHandle.AddAvailableOrientation(Dali::Window::PORTRAIT);
- winHandle.RemoveAvailableOrientation(Dali::Window::LANDSCAPE);
- winHandle.AddAvailableOrientation(Dali::Window::PORTRAIT_INVERSE);
- winHandle.RemoveAvailableOrientation(Dali::Window::LANDSCAPE_INVERSE);
+ winHandle.AddAvailableOrientation(Dali::WindowOrientation::PORTRAIT);
+ winHandle.RemoveAvailableOrientation(Dali::WindowOrientation::LANDSCAPE);
+ winHandle.AddAvailableOrientation(Dali::WindowOrientation::PORTRAIT_INVERSE);
+ winHandle.RemoveAvailableOrientation(Dali::WindowOrientation::LANDSCAPE_INVERSE);
}
else
{
- winHandle.AddAvailableOrientation(Dali::Window::LANDSCAPE);
- winHandle.RemoveAvailableOrientation(Dali::Window::PORTRAIT);
- winHandle.AddAvailableOrientation(Dali::Window::LANDSCAPE_INVERSE);
- winHandle.RemoveAvailableOrientation(Dali::Window::PORTRAIT_INVERSE);
+ winHandle.AddAvailableOrientation(Dali::WindowOrientation::LANDSCAPE);
+ winHandle.RemoveAvailableOrientation(Dali::WindowOrientation::PORTRAIT);
+ winHandle.AddAvailableOrientation(Dali::WindowOrientation::LANDSCAPE_INVERSE);
+ winHandle.RemoveAvailableOrientation(Dali::WindowOrientation::PORTRAIT_INVERSE);
}
CreateFocusEffect();
{
if(mSortAlphabetically)
{
- sort(mExampleList.begin(), mExampleList.end(), [](auto& lhs, auto& rhs)->bool { return lhs.title < rhs.title; } );
+ sort(mExampleList.begin(), mExampleList.end(), [](auto& lhs, auto& rhs) -> bool { return lhs.title < rhs.title; });
}
unsigned int exampleCount = 0;
focusableTile.TouchedSignal().Connect(this, &DaliTableView::OnTilePressed);
focusableTile.HoveredSignal().Connect(this, &DaliTableView::OnTileHovered);
focusableTile.SetProperty(Toolkit::DevelControl::Property::ACCESSIBILITY_ROLE, Dali::Accessibility::Role::PUSH_BUTTON);
- DevelControl::AccessibilityActivateSignal(focusableTile).Connect(this, [=](){
+ DevelControl::AccessibilityActivateSignal(focusableTile).Connect(this, [=]() {
DoTilePress(focusableTile, PointState::DOWN);
DoTilePress(focusableTile, PointState::UP);
});
// ignore Example button presses when scrolling or button animating.
if((!mScrolling) && (!mPressedAnimation))
{
- std::string name = actor.GetProperty<std::string>(Dali::Actor::Property::NAME);
+ std::string name = actor.GetProperty<std::string>(Dali::Actor::Property::NAME);
for(Example& example : mExampleList)
{
if(example.name == name)