android.dashboard: initial import

Change-Id: I950049d6d95f9af04c0b20a06fd2f3947cccedc1
Signed-off-by: BOLLE Sebastien <sebastien.bolle@orange.com>
Signed-off-by: BONNARDEL Gregory <gbonnardel.ext@orange.com>
Signed-off-by: BAREAU Cyrille <cyrille.bareau@orange.com>
diff --git a/org.eclipse.om2m.android.dashboard/.classpath b/org.eclipse.om2m.android.dashboard/.classpath
new file mode 100644
index 0000000..4becec1
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/.classpath
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<classpath>

+	<classpathentry kind="src" output="bin/classes" path="src/main/java">

+		<attributes>

+			<attribute name="optional" value="true"/>

+			<attribute name="maven.pomderived" value="true"/>

+		</attributes>

+	</classpathentry>

+	<classpathentry kind="src" output="target/test-classes" path="src/test/java">

+		<attributes>

+			<attribute name="optional" value="true"/>

+			<attribute name="maven.pomderived" value="true"/>

+		</attributes>

+	</classpathentry>

+	<classpathentry kind="src" path="gen">

+		<attributes>

+			<attribute name="maven.pomderived" value="true"/>

+		</attributes>

+	</classpathentry>

+	<classpathentry exported="true" kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">

+		<attributes>

+			<attribute name="maven.pomderived" value="true"/>

+		</attributes>

+	</classpathentry>

+	<classpathentry kind="con" path="me.gladwell.eclipse.m2e.android.classpath.NONRUNTIME_DEPENDENCIES">

+		<attributes>

+			<attribute name="maven.pomderived" value="true"/>

+		</attributes>

+	</classpathentry>

+	<classpathentry kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>

+	<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>

+	<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>

+	<classpathentry kind="output" path="bin/classes"/>

+</classpath>

diff --git a/org.eclipse.om2m.android.dashboard/.gitignore b/org.eclipse.om2m.android.dashboard/.gitignore
new file mode 100644
index 0000000..3f4e5ce
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/.gitignore
@@ -0,0 +1,2 @@
+/bin/
+/gen/
diff --git a/org.eclipse.om2m.android.dashboard/.project b/org.eclipse.om2m.android.dashboard/.project
new file mode 100644
index 0000000..57a4e82
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/.project
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<projectDescription>

+	<name>dashboard.sdt</name>

+	<comment></comment>

+	<projects>

+	</projects>

+	<buildSpec>

+		<buildCommand>

+			<name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+		<buildCommand>

+			<name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+		<buildCommand>

+			<name>org.eclipse.jdt.core.javabuilder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+		<buildCommand>

+			<name>org.eclipse.m2e.core.maven2Builder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+		<buildCommand>

+			<name>com.android.ide.eclipse.adt.ApkBuilder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+	</buildSpec>

+	<natures>

+		<nature>com.android.ide.eclipse.adt.AndroidNature</nature>

+		<nature>org.eclipse.jdt.core.javanature</nature>

+		<nature>org.eclipse.m2e.core.maven2Nature</nature>

+	</natures>

+	<linkedResources>

+		<link>

+			<name>AndroidManifest.xml</name>

+			<type>1</type>

+			<locationURI>PROJECT_LOC/src/main/AndroidManifest.xml</locationURI>

+		</link>

+	</linkedResources>

+</projectDescription>

diff --git a/org.eclipse.om2m.android.dashboard/pom.xml b/org.eclipse.om2m.android.dashboard/pom.xml
new file mode 100644
index 0000000..ab4627d
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/pom.xml
@@ -0,0 +1,316 @@
+<!--
+    Copyright (c) 2013, 2017 Orange.
+    All rights reserved. This program and the accompanying materials
+    are made available under the terms of the Eclipse Public License v1.0
+    which accompanies this distribution, and is available at
+    http://www.eclipse.org/legal/epl-v10.html
+   
+    Contributors:
+       BAREAU Cyrille <cyrille.bareau@orange.com>, 
+       BONNARDEL Gregory <gbonnardel.ext@orange.com>, 
+       BOLLE Sebastien <sebastien.bolle@orange.com>.
+ -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+	<modelVersion>4.0.0</modelVersion>
+
+	<artifactId>org.eclipse.om2m.android.dashboard</artifactId>
+	<packaging>apk</packaging>
+	<name>org.eclipse.om2m :: android dashboard application</name>
+	
+	<parent>
+		<artifactId>org.eclipse.om2m</artifactId>
+		<groupId>org.eclipse.om2m</groupId>
+		<version>1.1.0-SNAPSHOT</version>
+	</parent>
+
+	<properties>
+		
+		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>	
+		
+		<!-- Maven dependencies -->
+		<maven.android.plugin.version>4.4.3</maven.android.plugin.version>
+		<compiler.maven.plugin.version>2.5.1</compiler.maven.plugin.version>
+        
+		<!--  Default values: do not skip reporting  -->
+		<skip.reporting>true</skip.reporting>
+		<profile.skip.reporting>false</profile.skip.reporting>     
+		
+		<!-- Android Dependencies -->
+		<android.sdk.path>${env.ANDROID_HOME}</android.sdk.path>        
+		<api.platform>17</api.platform>
+		<annotations.version>4.1.1.4</annotations.version>
+		<android.version>4.1.1.4</android.version>
+		<support-v4-android.version>r7</support-v4-android.version>
+		
+		<maven.build.timestamp.format>yyMMdd_HHmm</maven.build.timestamp.format>
+		<!--buildNumber>${maven.build.timestamp}</buildNumber-->
+		<buildNumber>snapshot</buildNumber>
+		
+	</properties>
+	
+	<dependencies>
+	
+		<dependency>
+			<groupId>com.google.android</groupId>
+			<artifactId>android</artifactId>
+			<scope>provided</scope>
+			<version>${android.version}</version>
+		</dependency>
+		
+		<dependency>
+			<groupId>com.google.android</groupId>
+			<artifactId>support-v4</artifactId>
+			<version>${support-v4-android.version}</version>
+		</dependency>
+		
+		<dependency>
+			<groupId>com.google.android</groupId>
+			<artifactId>annotations</artifactId>
+			<version>${annotations.version}</version>
+		</dependency>
+		    
+		<dependency>
+		    <groupId>org.springframework.android</groupId>
+		    <artifactId>spring-android-rest-template</artifactId>
+		    <version>1.0.1.RELEASE</version>
+		</dependency>     
+		
+		<dependency>
+		  <groupId>com.google.code.gson</groupId>
+		  <artifactId>gson</artifactId>
+		  <version>2.0</version>
+		</dependency>
+		
+		<dependency>
+		  <groupId>com.fasterxml.jackson.core</groupId>
+		  <artifactId>jackson-databind</artifactId>
+		  <version>2.2.1</version>
+		</dependency>
+		
+		<dependency>
+			<groupId>org.eclipse.om2m</groupId>
+			<artifactId>org.eclipse.om2m.sdt.api</artifactId>
+			<scope>compile</scope>
+			<version>1.1.0-SNAPSHOT</version>
+		</dependency>
+		
+		<dependency>
+			<groupId>org.eclipse.om2m</groupId>
+			<artifactId>org.eclipse.om2m.sdt.home</artifactId>
+			<scope>compile</scope>
+			<version>1.1.0-SNAPSHOT</version>
+		</dependency>
+		
+	</dependencies>
+	
+	<build>
+	
+	    <pluginManagement>
+        	<plugins>
+	            <!--This plugin's configuration is used to store Eclipse m2e settings 
+	                only. It has no influence on the Maven build itself. -->
+	            <plugin>
+	                <groupId>org.eclipse.m2e</groupId>
+	                <artifactId>lifecycle-mapping</artifactId>
+	                <version>1.0.0</version>
+	                <configuration>
+	                    <lifecycleMappingMetadata>
+	                        <pluginExecutions>
+	                            <pluginExecution>
+	                                <pluginExecutionFilter>
+	                                    <groupId>com.google.code.maven-replacer-plugin</groupId>
+	                                    <artifactId>replacer</artifactId>
+	                                    <versionRange>[1.5.0,)</versionRange>
+	                                    <goals>
+	                                        <goal>replace</goal>
+	                                    </goals>
+	                                </pluginExecutionFilter>
+	                                <action>
+	                                    <execute></execute>
+	                                </action>
+	                            </pluginExecution>
+	                        </pluginExecutions>
+	                    </lifecycleMappingMetadata>
+	                </configuration>
+	            </plugin>
+	        </plugins>
+	    </pluginManagement>
+    
+	    <plugins>
+         
+	    	<!-- Add maven version to Android manifest -->
+			<!-- ===================================== -->
+			<!-- NE FONCTIONNE PAS AVEC ECLIPSE (???)  -->
+			<!-- Il faut le faire en ligne de commande -->
+			<!-- mvn initialize install  -->
+			<plugin>
+                <groupId>com.google.code.maven-replacer-plugin</groupId>
+                <artifactId>replacer</artifactId>
+                <version>1.5.0</version>
+                <executions>
+                    <execution>
+                        <phase>initialize</phase>
+                        <goals>
+                            <goal>replace</goal>
+                        </goals>
+                    </execution>
+                </executions>
+                <configuration>
+                    <file>./src/main/AndroidManifest.xml</file>
+                    <outputFile>${project.build.directory}/AndroidManifest.xml</outputFile>
+                    <regex>true</regex>
+                    <replacements>
+                        <replacement>
+                            <token>android:versionCode="\d*"</token>
+                            <value>android:versionCode="1"</value>
+                        </replacement>
+                        <replacement>
+                            <token>android:versionName="[^"]*"</token>
+                            <value>android:versionName="${project.version}"</value>
+                        </replacement>
+                    </replacements>
+                </configuration>
+            </plugin>
+
+			<plugin>
+				<groupId>com.simpligility.maven.plugins</groupId>
+				<artifactId>android-maven-plugin</artifactId>
+				<version>${maven.android.plugin.version}</version>
+				<extensions>true</extensions>
+			</plugin>						
+            
+			 <!-- Plugin for android projects -->
+			<plugin>
+				<groupId>com.simpligility.maven.plugins</groupId>
+				<artifactId>android-maven-plugin</artifactId>
+				<version>${maven.android.plugin.version}</version>
+				<inherited>true</inherited>
+				<configuration>
+					<resourceDirectory>${project.basedir}/res</resourceDirectory>
+					<sdk>
+						<platform>${api.platform}</platform>
+					</sdk>
+					<undeployBeforeDeploy>true</undeployBeforeDeploy>
+				</configuration>
+		
+			</plugin>
+			
+			<plugin>
+				<!-- Default java version is 1.4, for osgi
+				     This can be overridden to 1.6 for android or desktop projects-->
+				<artifactId>maven-compiler-plugin</artifactId>
+				<version>${compiler.maven.plugin.version}</version>
+				<inherited>true</inherited>
+				<configuration>
+					<source>1.6</source>
+					<target>1.6</target>
+				</configuration>
+			</plugin>
+						
+		</plugins>
+		
+	</build>
+	
+	<reporting>
+		<excludeDefaults>false</excludeDefaults>
+		
+		<plugins>
+			<!-- ======================================================= -->
+			<!-- Reports configuration for the web site. -->
+			<!-- ======================================================= -->
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-project-info-reports-plugin</artifactId>
+				<version>${maven-project-info-reports-plugin.version}</version>
+				<reportSets>
+					<reportSet>
+						<reports>
+							<report>index</report>
+							<report>dependencies</report>
+							<report>scm</report>
+							<report>plugins</report>
+							<report>summary</report>
+						</reports>
+					</reportSet>
+				</reportSets>
+				<configuration>
+					<!-- Avoid the dependency plugin to download again all jars from repositories 
+						just to report the following informations -->
+					<dependencyDetailsEnabled>false</dependencyDetailsEnabled>
+					<dependencyLocationsEnabled>false</dependencyLocationsEnabled>
+				</configuration>
+			</plugin>
+			
+			<!-- ======================================================= -->
+			<!-- Per module javadoc generation -->
+			<!-- ======================================================= -->
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-javadoc-plugin</artifactId>
+				<version>${maven-javadoc-plugin.version}</version>
+				<configuration>
+					<show>protected</show>
+				</configuration>
+			</plugin>
+			
+			<!-- ======================================================= -->
+			<!-- HTML based, cross-reference version of Java source code -->
+			<!-- ======================================================= -->
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-jxr-plugin</artifactId>
+				<version>${maven-jxr-plugin.version}</version>
+				<inherited>true</inherited>
+			</plugin>
+			
+			<!-- ======================================================= -->
+			<!-- PMD Static analysis of code -->
+			<!-- ======================================================= -->
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-pmd-plugin</artifactId>
+				<version>${maven-pmd-plugin.version}</version>
+				<configuration>
+					<linkXref>true</linkXref>
+					<sourceEncoding>utf-8</sourceEncoding>
+					<minimumTokens>100</minimumTokens>
+					<targetJdk>1.4</targetJdk>
+					<failOnViolation>false</failOnViolation>
+				</configuration>
+				<inherited>true</inherited>
+			</plugin>
+			
+			<!-- ======================================================= -->
+			<!-- FindBugs Static analysis of code -->
+			<!-- ======================================================= -->
+			<plugin>
+				<groupId>org.codehaus.mojo</groupId>
+				<artifactId>findbugs-maven-plugin</artifactId>
+				<version>${findbugs-maven-plugin.version}</version>
+				<configuration>
+					<xmlOutput>true</xmlOutput>
+					<failOnError>false</failOnError>
+				</configuration>
+				<inherited>true</inherited>
+			</plugin>
+			
+			<!-- ======================================================= -->
+			<!-- Checkstyle Static analysis of code -->
+			<!-- ======================================================= -->
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-checkstyle-plugin</artifactId>
+				<version>${maven-checkstyle-plugin.version}</version>
+				<configuration>
+					<enableRulesSummary>true</enableRulesSummary>
+				</configuration>
+				<inherited>true</inherited>
+			</plugin>
+			
+		</plugins>
+		
+	</reporting>    
+	
+</project>
diff --git a/org.eclipse.om2m.android.dashboard/project.properties b/org.eclipse.om2m.android.dashboard/project.properties
new file mode 100644
index 0000000..3073f9c
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/project.properties
@@ -0,0 +1,26 @@
+###############################################################################
+# Copyright (c) 2013, 2017 Orange.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+#    BAREAU Cyrille <cyrille.bareau@orange.com>, 
+#    BONNARDEL Gregory <gbonnardel.ext@orange.com>, 
+#    BOLLE Sebastien <sebastien.bolle@orange.com>.
+###############################################################################
+# This file is automatically generated by Android Tools.
+# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
+#
+# This file must be checked in Version Control Systems.
+#
+# To customize properties used by the Ant build system edit
+# "ant.properties", and override values to adapt the script to your
+# project structure.
+#
+# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
+#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
+
+# Project target.
+target=android-17
diff --git a/org.eclipse.om2m.android.dashboard/res/anim/animation1.xml b/org.eclipse.om2m.android.dashboard/res/anim/animation1.xml
new file mode 100644
index 0000000..23b20d3
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/anim/animation1.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!--

+    Copyright (c) 2013, 2017 Orange.

+    All rights reserved. This program and the accompanying materials

+    are made available under the terms of the Eclipse Public License v1.0

+    which accompanies this distribution, and is available at

+    http://www.eclipse.org/legal/epl-v10.html

+   

+    Contributors:

+       BAREAU Cyrille <cyrille.bareau@orange.com>, 

+       BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+       BOLLE Sebastien <sebastien.bolle@orange.com>.

+ -->
+
+<!-- <translate xmlns:android="http://schemas.android.com/apk/res/android"

+    android:fromXDelta="100%p"

+    android:toXDelta="0"

+    android:duration="500" /> -->

+<alpha xmlns:android="http://schemas.android.com/apk/res/android"

+android:fromAlpha="0.0"

+android:toAlpha="1.0"

+android:duration="1000" />

+    

diff --git a/org.eclipse.om2m.android.dashboard/res/anim/animation2.xml b/org.eclipse.om2m.android.dashboard/res/anim/animation2.xml
new file mode 100644
index 0000000..a12e627
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/anim/animation2.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!--

+    Copyright (c) 2013, 2017 Orange.

+    All rights reserved. This program and the accompanying materials

+    are made available under the terms of the Eclipse Public License v1.0

+    which accompanies this distribution, and is available at

+    http://www.eclipse.org/legal/epl-v10.html

+   

+    Contributors:

+       BAREAU Cyrille <cyrille.bareau@orange.com>, 

+       BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+       BOLLE Sebastien <sebastien.bolle@orange.com>.

+ -->
+
+<!-- <translate xmlns:android="http://schemas.android.com/apk/res/android"

+    android:fromXDelta="0"

+    android:toXDelta="-50%p"

+    android:duration="500" /> -->

+<alpha xmlns:android="http://schemas.android.com/apk/res/android"

+android:fromAlpha="1.0"

+android:toAlpha="0.0"

+android:duration="1000" />
\ No newline at end of file
diff --git a/org.eclipse.om2m.android.dashboard/res/color/sel_button_text.xml b/org.eclipse.om2m.android.dashboard/res/color/sel_button_text.xml
new file mode 100644
index 0000000..5c75cbe
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/color/sel_button_text.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!--

+    Copyright (c) 2013, 2017 Orange.

+    All rights reserved. This program and the accompanying materials

+    are made available under the terms of the Eclipse Public License v1.0

+    which accompanies this distribution, and is available at

+    http://www.eclipse.org/legal/epl-v10.html

+   

+    Contributors:

+       BAREAU Cyrille <cyrille.bareau@orange.com>, 

+       BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+       BOLLE Sebastien <sebastien.bolle@orange.com>.

+ -->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android" >

+    	<item android:state_enabled="false"

+    	    android:color="@color/soft_gray" />

+    	<item android:color="@color/otb_dark_gray" />    	

+

+</selector>
\ No newline at end of file
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/ab_bottom_solid_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/ab_bottom_solid_custom_theme.9.png
new file mode 100644
index 0000000..9f1bf68
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/ab_bottom_solid_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/ab_solid_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/ab_solid_custom_theme.9.png
new file mode 100644
index 0000000..d431708
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/ab_solid_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/ab_stacked_solid_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/ab_stacked_solid_custom_theme.9.png
new file mode 100644
index 0000000..fae720a
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/ab_stacked_solid_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/ab_texture_tile_custom_theme.png b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/ab_texture_tile_custom_theme.png
new file mode 100644
index 0000000..556c504
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/ab_texture_tile_custom_theme.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/ab_transparent_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/ab_transparent_custom_theme.9.png
new file mode 100644
index 0000000..c58997f
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/ab_transparent_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/btn_cab_done_default_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/btn_cab_done_default_custom_theme.9.png
new file mode 100644
index 0000000..c8d351e
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/btn_cab_done_default_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/btn_cab_done_focused_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/btn_cab_done_focused_custom_theme.9.png
new file mode 100644
index 0000000..d3c4628
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/btn_cab_done_focused_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/btn_cab_done_pressed_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/btn_cab_done_pressed_custom_theme.9.png
new file mode 100644
index 0000000..ef1f8f0
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/btn_cab_done_pressed_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/cab_background_bottom_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/cab_background_bottom_custom_theme.9.png
new file mode 100644
index 0000000..f7adb43
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/cab_background_bottom_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/cab_background_top_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/cab_background_top_custom_theme.9.png
new file mode 100644
index 0000000..7324285
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/cab_background_top_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/ic_action_back_to_home.png b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/ic_action_back_to_home.png
new file mode 100644
index 0000000..1700fca
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/ic_action_back_to_home.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/ic_action_help.png b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/ic_action_help.png
new file mode 100644
index 0000000..f59faac
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/ic_action_help.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/ic_action_login.png b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/ic_action_login.png
new file mode 100644
index 0000000..82963f6
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/ic_action_login.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/ic_action_settings.png b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/ic_action_settings.png
new file mode 100644
index 0000000..d6dd17e
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/ic_action_settings.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/ic_launcher.png b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/ic_launcher.png
new file mode 100644
index 0000000..600910c
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/ic_logo.png b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/ic_logo.png
new file mode 100644
index 0000000..e4c4a4a
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/ic_logo.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/list_focused_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/list_focused_custom_theme.9.png
new file mode 100644
index 0000000..426d73f
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/list_focused_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/logo.png b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/logo.png
new file mode 100644
index 0000000..b1c9f26
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/logo.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/menu_dropdown_panel_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/menu_dropdown_panel_custom_theme.9.png
new file mode 100644
index 0000000..bab5e3b
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/menu_dropdown_panel_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/otb_button_blue.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/otb_button_blue.9.png
new file mode 100644
index 0000000..d6a81f0
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/otb_button_blue.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/otb_button_blue_pressed.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/otb_button_blue_pressed.9.png
new file mode 100644
index 0000000..09a42a7
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/otb_button_blue_pressed.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/otb_button_gray.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/otb_button_gray.9.png
new file mode 100644
index 0000000..e10cc29
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/otb_button_gray.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/otb_button_green.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/otb_button_green.9.png
new file mode 100644
index 0000000..000e276
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/otb_button_green.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/otb_button_green_pressed.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/otb_button_green_pressed.9.png
new file mode 100644
index 0000000..52cb008
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/otb_button_green_pressed.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/otb_button_orange.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/otb_button_orange.9.png
new file mode 100644
index 0000000..492bee3
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/otb_button_orange.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/otb_button_orange_pressed.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/otb_button_orange_pressed.9.png
new file mode 100644
index 0000000..39d4d71
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/otb_button_orange_pressed.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/otb_button_red.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/otb_button_red.9.png
new file mode 100644
index 0000000..da4023d
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/otb_button_red.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/otb_button_red_pressed.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/otb_button_red_pressed.9.png
new file mode 100644
index 0000000..a3562ad
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/otb_button_red_pressed.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/otb_card_blue.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/otb_card_blue.9.png
new file mode 100644
index 0000000..e2377e6
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/otb_card_blue.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/otb_card_blue_pressed.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/otb_card_blue_pressed.9.png
new file mode 100644
index 0000000..2c8fca6
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/otb_card_blue_pressed.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/otb_card_gray.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/otb_card_gray.9.png
new file mode 100644
index 0000000..7071c83
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/otb_card_gray.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/otb_card_green.png b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/otb_card_green.png
new file mode 100644
index 0000000..b1be662
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/otb_card_green.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/otb_card_green_pressed.png b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/otb_card_green_pressed.png
new file mode 100644
index 0000000..91a47cc
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/otb_card_green_pressed.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/otb_card_red.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/otb_card_red.9.png
new file mode 100644
index 0000000..60bb11d
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/otb_card_red.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/otb_card_red_pressed.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/otb_card_red_pressed.9.png
new file mode 100644
index 0000000..cc26c92
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/otb_card_red_pressed.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/progress_bg_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/progress_bg_custom_theme.9.png
new file mode 100644
index 0000000..3d5c707
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/progress_bg_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/progress_primary_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/progress_primary_custom_theme.9.png
new file mode 100644
index 0000000..3bc3b3a
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/progress_primary_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/progress_secondary_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/progress_secondary_custom_theme.9.png
new file mode 100644
index 0000000..6d50e09
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/progress_secondary_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/spinner_ab_default_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/spinner_ab_default_custom_theme.9.png
new file mode 100644
index 0000000..4fd4aeb
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/spinner_ab_default_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/spinner_ab_disabled_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/spinner_ab_disabled_custom_theme.9.png
new file mode 100644
index 0000000..d42c97b
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/spinner_ab_disabled_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/spinner_ab_focused_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/spinner_ab_focused_custom_theme.9.png
new file mode 100644
index 0000000..c4b4f8c
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/spinner_ab_focused_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/spinner_ab_pressed_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/spinner_ab_pressed_custom_theme.9.png
new file mode 100644
index 0000000..39f778c
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/spinner_ab_pressed_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/tab_selected_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/tab_selected_custom_theme.9.png
new file mode 100644
index 0000000..2d78262
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/tab_selected_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/tab_selected_focused_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/tab_selected_focused_custom_theme.9.png
new file mode 100644
index 0000000..4d49b21
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/tab_selected_focused_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/tab_selected_pressed_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/tab_selected_pressed_custom_theme.9.png
new file mode 100644
index 0000000..65688cb
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/tab_selected_pressed_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/tab_unselected_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/tab_unselected_custom_theme.9.png
new file mode 100644
index 0000000..396b5dd
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/tab_unselected_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/tab_unselected_focused_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/tab_unselected_focused_custom_theme.9.png
new file mode 100644
index 0000000..57c5f18
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/tab_unselected_focused_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/tab_unselected_pressed_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/tab_unselected_pressed_custom_theme.9.png
new file mode 100644
index 0000000..f44171c
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-hdpi/tab_unselected_pressed_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/ab_bottom_solid_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/ab_bottom_solid_custom_theme.9.png
new file mode 100644
index 0000000..76f68b8
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/ab_bottom_solid_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/ab_solid_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/ab_solid_custom_theme.9.png
new file mode 100644
index 0000000..a5826a2
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/ab_solid_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/ab_stacked_solid_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/ab_stacked_solid_custom_theme.9.png
new file mode 100644
index 0000000..f72f540
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/ab_stacked_solid_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/ab_texture_tile_custom_theme.png b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/ab_texture_tile_custom_theme.png
new file mode 100644
index 0000000..d0331c0
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/ab_texture_tile_custom_theme.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/ab_transparent_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/ab_transparent_custom_theme.9.png
new file mode 100644
index 0000000..d101b07
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/ab_transparent_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/btn_cab_done_default_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/btn_cab_done_default_custom_theme.9.png
new file mode 100644
index 0000000..70f1520
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/btn_cab_done_default_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/btn_cab_done_focused_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/btn_cab_done_focused_custom_theme.9.png
new file mode 100644
index 0000000..be79484
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/btn_cab_done_focused_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/btn_cab_done_pressed_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/btn_cab_done_pressed_custom_theme.9.png
new file mode 100644
index 0000000..15cb5d8
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/btn_cab_done_pressed_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/cab_background_bottom_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/cab_background_bottom_custom_theme.9.png
new file mode 100644
index 0000000..1c49ba0
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/cab_background_bottom_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/cab_background_top_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/cab_background_top_custom_theme.9.png
new file mode 100644
index 0000000..d19d5b3
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/cab_background_top_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/ic_action_back_to_home.png b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/ic_action_back_to_home.png
new file mode 100644
index 0000000..35ef732
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/ic_action_back_to_home.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/ic_action_help.png b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/ic_action_help.png
new file mode 100644
index 0000000..8057106
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/ic_action_help.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/ic_action_login.png b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/ic_action_login.png
new file mode 100644
index 0000000..c83e540
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/ic_action_login.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/ic_action_settings.png b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/ic_action_settings.png
new file mode 100644
index 0000000..fc2bf8c
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/ic_action_settings.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/ic_launcher.png b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/ic_launcher.png
new file mode 100644
index 0000000..42cbe56
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/ic_logo.png b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/ic_logo.png
new file mode 100644
index 0000000..a33e10c
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/ic_logo.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/list_focused_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/list_focused_custom_theme.9.png
new file mode 100644
index 0000000..4d3bcbf
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/list_focused_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/logo.png b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/logo.png
new file mode 100644
index 0000000..d178937
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/logo.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/menu_dropdown_panel_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/menu_dropdown_panel_custom_theme.9.png
new file mode 100644
index 0000000..2b2458e
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/menu_dropdown_panel_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/otb_button_blue.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/otb_button_blue.9.png
new file mode 100644
index 0000000..33cf042
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/otb_button_blue.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/otb_button_blue_pressed.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/otb_button_blue_pressed.9.png
new file mode 100644
index 0000000..4e0c280
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/otb_button_blue_pressed.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/otb_button_gray.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/otb_button_gray.9.png
new file mode 100644
index 0000000..f873034
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/otb_button_gray.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/otb_button_green.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/otb_button_green.9.png
new file mode 100644
index 0000000..fd63ccf
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/otb_button_green.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/otb_button_green_pressed.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/otb_button_green_pressed.9.png
new file mode 100644
index 0000000..60c4b30
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/otb_button_green_pressed.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/otb_button_orange.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/otb_button_orange.9.png
new file mode 100644
index 0000000..5337e3b
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/otb_button_orange.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/otb_button_orange_pressed.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/otb_button_orange_pressed.9.png
new file mode 100644
index 0000000..d2cf4d2
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/otb_button_orange_pressed.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/otb_button_red.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/otb_button_red.9.png
new file mode 100644
index 0000000..9a08b7a
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/otb_button_red.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/otb_button_red_pressed.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/otb_button_red_pressed.9.png
new file mode 100644
index 0000000..550c4bc
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/otb_button_red_pressed.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/otb_card_blue.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/otb_card_blue.9.png
new file mode 100644
index 0000000..77ff662
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/otb_card_blue.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/otb_card_blue_pressed.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/otb_card_blue_pressed.9.png
new file mode 100644
index 0000000..d552f4e
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/otb_card_blue_pressed.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/otb_card_gray.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/otb_card_gray.9.png
new file mode 100644
index 0000000..b79c7d1
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/otb_card_gray.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/otb_card_red.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/otb_card_red.9.png
new file mode 100644
index 0000000..2e591eb
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/otb_card_red.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/otb_card_red_pressed.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/otb_card_red_pressed.9.png
new file mode 100644
index 0000000..05d820a
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/otb_card_red_pressed.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/progress_bg_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/progress_bg_custom_theme.9.png
new file mode 100644
index 0000000..9372a60
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/progress_bg_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/progress_primary_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/progress_primary_custom_theme.9.png
new file mode 100644
index 0000000..18a10d9
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/progress_primary_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/progress_secondary_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/progress_secondary_custom_theme.9.png
new file mode 100644
index 0000000..6196d8b
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/progress_secondary_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/spinner_ab_default_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/spinner_ab_default_custom_theme.9.png
new file mode 100644
index 0000000..9aeafee
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/spinner_ab_default_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/spinner_ab_disabled_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/spinner_ab_disabled_custom_theme.9.png
new file mode 100644
index 0000000..88dd441
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/spinner_ab_disabled_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/spinner_ab_focused_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/spinner_ab_focused_custom_theme.9.png
new file mode 100644
index 0000000..757f15b
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/spinner_ab_focused_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/spinner_ab_pressed_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/spinner_ab_pressed_custom_theme.9.png
new file mode 100644
index 0000000..7392238
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/spinner_ab_pressed_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/tab_selected_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/tab_selected_custom_theme.9.png
new file mode 100644
index 0000000..2660743
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/tab_selected_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/tab_selected_focused_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/tab_selected_focused_custom_theme.9.png
new file mode 100644
index 0000000..a6523c2
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/tab_selected_focused_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/tab_selected_pressed_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/tab_selected_pressed_custom_theme.9.png
new file mode 100644
index 0000000..1eb92c1
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/tab_selected_pressed_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/tab_unselected_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/tab_unselected_custom_theme.9.png
new file mode 100644
index 0000000..1cf3002
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/tab_unselected_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/tab_unselected_focused_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/tab_unselected_focused_custom_theme.9.png
new file mode 100644
index 0000000..0fa12db
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/tab_unselected_focused_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/tab_unselected_pressed_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/tab_unselected_pressed_custom_theme.9.png
new file mode 100644
index 0000000..2c13a55
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-mdpi/tab_unselected_pressed_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/ab_bottom_solid_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/ab_bottom_solid_custom_theme.9.png
new file mode 100644
index 0000000..8aca0fe
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/ab_bottom_solid_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/ab_solid_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/ab_solid_custom_theme.9.png
new file mode 100644
index 0000000..fb40717
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/ab_solid_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/ab_stacked_solid_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/ab_stacked_solid_custom_theme.9.png
new file mode 100644
index 0000000..b62ee13
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/ab_stacked_solid_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/ab_texture_tile_custom_theme.png b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/ab_texture_tile_custom_theme.png
new file mode 100644
index 0000000..49b5272
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/ab_texture_tile_custom_theme.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/ab_transparent_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/ab_transparent_custom_theme.9.png
new file mode 100644
index 0000000..671fa84
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/ab_transparent_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/btn_cab_done_default_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/btn_cab_done_default_custom_theme.9.png
new file mode 100644
index 0000000..3521ae3
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/btn_cab_done_default_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/btn_cab_done_focused_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/btn_cab_done_focused_custom_theme.9.png
new file mode 100644
index 0000000..2ae6ea3
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/btn_cab_done_focused_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/btn_cab_done_pressed_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/btn_cab_done_pressed_custom_theme.9.png
new file mode 100644
index 0000000..33b9d1d
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/btn_cab_done_pressed_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/cab_background_bottom_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/cab_background_bottom_custom_theme.9.png
new file mode 100644
index 0000000..19da0c6
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/cab_background_bottom_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/cab_background_top_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/cab_background_top_custom_theme.9.png
new file mode 100644
index 0000000..f469c99
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/cab_background_top_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/ic_action_back_to_home.png b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/ic_action_back_to_home.png
new file mode 100644
index 0000000..16e9d36
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/ic_action_back_to_home.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/ic_action_help.png b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/ic_action_help.png
new file mode 100644
index 0000000..afde75b
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/ic_action_help.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/ic_action_login.png b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/ic_action_login.png
new file mode 100644
index 0000000..9899d91
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/ic_action_login.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/ic_action_settings.png b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/ic_action_settings.png
new file mode 100644
index 0000000..ae91758
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/ic_action_settings.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/ic_launcher.png b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/ic_launcher.png
new file mode 100644
index 0000000..3aaf6f2
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/ic_logo.png b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/ic_logo.png
new file mode 100644
index 0000000..1dca4c0
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/ic_logo.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/list_focused_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/list_focused_custom_theme.9.png
new file mode 100644
index 0000000..011da44
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/list_focused_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/logo.png b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/logo.png
new file mode 100644
index 0000000..152b1db
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/logo.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/menu_dropdown_panel_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/menu_dropdown_panel_custom_theme.9.png
new file mode 100644
index 0000000..2974663
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/menu_dropdown_panel_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/otb_button_blue.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/otb_button_blue.9.png
new file mode 100644
index 0000000..9790b38
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/otb_button_blue.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/otb_button_blue_pressed.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/otb_button_blue_pressed.9.png
new file mode 100644
index 0000000..e3a0b81
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/otb_button_blue_pressed.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/otb_button_gray.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/otb_button_gray.9.png
new file mode 100644
index 0000000..6226720
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/otb_button_gray.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/otb_button_green.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/otb_button_green.9.png
new file mode 100644
index 0000000..284082f
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/otb_button_green.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/otb_button_green_pressed.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/otb_button_green_pressed.9.png
new file mode 100644
index 0000000..2c78a91
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/otb_button_green_pressed.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/otb_button_orange.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/otb_button_orange.9.png
new file mode 100644
index 0000000..3dc9824
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/otb_button_orange.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/otb_button_orange_pressed.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/otb_button_orange_pressed.9.png
new file mode 100644
index 0000000..9444b54
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/otb_button_orange_pressed.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/otb_button_red.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/otb_button_red.9.png
new file mode 100644
index 0000000..9b162be
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/otb_button_red.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/otb_button_red_pressed.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/otb_button_red_pressed.9.png
new file mode 100644
index 0000000..bef8956
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/otb_button_red_pressed.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/otb_card_blue.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/otb_card_blue.9.png
new file mode 100644
index 0000000..77ddc92
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/otb_card_blue.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/otb_card_blue_pressed.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/otb_card_blue_pressed.9.png
new file mode 100644
index 0000000..6b3b565
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/otb_card_blue_pressed.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/otb_card_gray.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/otb_card_gray.9.png
new file mode 100644
index 0000000..c5da422
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/otb_card_gray.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/otb_card_red.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/otb_card_red.9.png
new file mode 100644
index 0000000..5a06aa9
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/otb_card_red.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/otb_card_red_pressed.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/otb_card_red_pressed.9.png
new file mode 100644
index 0000000..51ca5b1
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/otb_card_red_pressed.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/progress_bg_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/progress_bg_custom_theme.9.png
new file mode 100644
index 0000000..8b4853a
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/progress_bg_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/progress_primary_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/progress_primary_custom_theme.9.png
new file mode 100644
index 0000000..bdca816
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/progress_primary_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/progress_secondary_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/progress_secondary_custom_theme.9.png
new file mode 100644
index 0000000..a424a14
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/progress_secondary_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/spinner_ab_default_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/spinner_ab_default_custom_theme.9.png
new file mode 100644
index 0000000..14b1401
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/spinner_ab_default_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/spinner_ab_disabled_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/spinner_ab_disabled_custom_theme.9.png
new file mode 100644
index 0000000..c9dfbd6
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/spinner_ab_disabled_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/spinner_ab_focused_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/spinner_ab_focused_custom_theme.9.png
new file mode 100644
index 0000000..1c8d33d
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/spinner_ab_focused_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/spinner_ab_pressed_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/spinner_ab_pressed_custom_theme.9.png
new file mode 100644
index 0000000..870d2be
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/spinner_ab_pressed_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/tab_selected_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/tab_selected_custom_theme.9.png
new file mode 100644
index 0000000..aec4e87
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/tab_selected_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/tab_selected_focused_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/tab_selected_focused_custom_theme.9.png
new file mode 100644
index 0000000..0b8b3e9
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/tab_selected_focused_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/tab_selected_pressed_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/tab_selected_pressed_custom_theme.9.png
new file mode 100644
index 0000000..bd51d36
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/tab_selected_pressed_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/tab_unselected_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/tab_unselected_custom_theme.9.png
new file mode 100644
index 0000000..d211e8a
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/tab_unselected_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/tab_unselected_focused_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/tab_unselected_focused_custom_theme.9.png
new file mode 100644
index 0000000..3c87dd9
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/tab_unselected_focused_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/tab_unselected_pressed_custom_theme.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/tab_unselected_pressed_custom_theme.9.png
new file mode 100644
index 0000000..fd190db
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xhdpi/tab_unselected_pressed_custom_theme.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xxhdpi/ic_action_back_to_home.png b/org.eclipse.om2m.android.dashboard/res/drawable-xxhdpi/ic_action_back_to_home.png
new file mode 100644
index 0000000..4d897cc
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xxhdpi/ic_action_back_to_home.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xxhdpi/ic_action_help.png b/org.eclipse.om2m.android.dashboard/res/drawable-xxhdpi/ic_action_help.png
new file mode 100644
index 0000000..7259a00
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xxhdpi/ic_action_help.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xxhdpi/ic_action_login.png b/org.eclipse.om2m.android.dashboard/res/drawable-xxhdpi/ic_action_login.png
new file mode 100644
index 0000000..71b8b5d
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xxhdpi/ic_action_login.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xxhdpi/ic_action_settings.png b/org.eclipse.om2m.android.dashboard/res/drawable-xxhdpi/ic_action_settings.png
new file mode 100644
index 0000000..ded5dbb
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xxhdpi/ic_action_settings.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xxhdpi/ic_launcher.png b/org.eclipse.om2m.android.dashboard/res/drawable-xxhdpi/ic_launcher.png
new file mode 100644
index 0000000..3edf724
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xxhdpi/ic_logo.png b/org.eclipse.om2m.android.dashboard/res/drawable-xxhdpi/ic_logo.png
new file mode 100644
index 0000000..559191a
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xxhdpi/ic_logo.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xxhdpi/logo.png b/org.eclipse.om2m.android.dashboard/res/drawable-xxhdpi/logo.png
new file mode 100644
index 0000000..dab161d
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xxhdpi/logo.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xxhdpi/otb_button_blue.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-xxhdpi/otb_button_blue.9.png
new file mode 100644
index 0000000..fd62d91
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xxhdpi/otb_button_blue.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xxhdpi/otb_button_blue_pressed.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-xxhdpi/otb_button_blue_pressed.9.png
new file mode 100644
index 0000000..6b9e2a9
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xxhdpi/otb_button_blue_pressed.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xxhdpi/otb_button_gray.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-xxhdpi/otb_button_gray.9.png
new file mode 100644
index 0000000..30568d9
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xxhdpi/otb_button_gray.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xxhdpi/otb_button_green.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-xxhdpi/otb_button_green.9.png
new file mode 100644
index 0000000..c7ef847
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xxhdpi/otb_button_green.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xxhdpi/otb_button_green_pressed.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-xxhdpi/otb_button_green_pressed.9.png
new file mode 100644
index 0000000..7b45ace
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xxhdpi/otb_button_green_pressed.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xxhdpi/otb_button_orange.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-xxhdpi/otb_button_orange.9.png
new file mode 100644
index 0000000..c226655
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xxhdpi/otb_button_orange.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xxhdpi/otb_button_orange_pressed.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-xxhdpi/otb_button_orange_pressed.9.png
new file mode 100644
index 0000000..e6adeea
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xxhdpi/otb_button_orange_pressed.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xxhdpi/otb_button_red.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-xxhdpi/otb_button_red.9.png
new file mode 100644
index 0000000..7545093
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xxhdpi/otb_button_red.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xxhdpi/otb_button_red_pressed.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-xxhdpi/otb_button_red_pressed.9.png
new file mode 100644
index 0000000..689bd8a
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xxhdpi/otb_button_red_pressed.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xxhdpi/otb_card_blue.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-xxhdpi/otb_card_blue.9.png
new file mode 100644
index 0000000..8d98bf7
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xxhdpi/otb_card_blue.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xxhdpi/otb_card_blue_pressed.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-xxhdpi/otb_card_blue_pressed.9.png
new file mode 100644
index 0000000..da2fdd2
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xxhdpi/otb_card_blue_pressed.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xxhdpi/otb_card_gray.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-xxhdpi/otb_card_gray.9.png
new file mode 100644
index 0000000..47dceef
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xxhdpi/otb_card_gray.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xxhdpi/otb_card_red.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-xxhdpi/otb_card_red.9.png
new file mode 100644
index 0000000..7a059b9
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xxhdpi/otb_card_red.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable-xxhdpi/otb_card_red_pressed.9.png b/org.eclipse.om2m.android.dashboard/res/drawable-xxhdpi/otb_card_red_pressed.9.png
new file mode 100644
index 0000000..8a1aa7d
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable-xxhdpi/otb_card_red_pressed.9.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/ab_background_textured_custom_theme.xml b/org.eclipse.om2m.android.dashboard/res/drawable/ab_background_textured_custom_theme.xml
new file mode 100644
index 0000000..baa55ed
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/ab_background_textured_custom_theme.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!-- File created by the Android Action Bar Style Generator

+

+     Copyright (C) 2012, 2017 readyState Software Ltd

+

+     Licensed under the Apache License, Version 2.0 (the "License");

+     you may not use this file except in compliance with the License.

+     You may obtain a copy of the License at

+  

+          http://www.apache.org/licenses/LICENSE-2.0

+  

+     Unless required by applicable law or agreed to in writing, software

+     distributed under the License is distributed on an "AS IS" BASIS,

+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+     See the License for the specific language governing permissions and

+     limitations under the License.

+-->
+

+<bitmap xmlns:android="http://schemas.android.com/apk/res/android"

+    android:src="@drawable/ab_texture_tile_custom_theme"

+    android:tileMode="repeat" />
\ No newline at end of file
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/asso_arrow.png b/org.eclipse.om2m.android.dashboard/res/drawable/asso_arrow.png
new file mode 100644
index 0000000..0e7ad75
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/asso_arrow.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/blur_shadow.xml b/org.eclipse.om2m.android.dashboard/res/drawable/blur_shadow.xml
new file mode 100644
index 0000000..e6eaaf7
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/blur_shadow.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!--

+    Copyright (c) 2013, 2017 Orange.

+    All rights reserved. This program and the accompanying materials

+    are made available under the terms of the Eclipse Public License v1.0

+    which accompanies this distribution, and is available at

+    http://www.eclipse.org/legal/epl-v10.html

+   

+    Contributors:

+       BAREAU Cyrille <cyrille.bareau@orange.com>, 

+       BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+       BOLLE Sebastien <sebastien.bolle@orange.com>.

+ -->
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

+    <item >

+        <shape 

+            android:shape="rectangle">

+        <solid android:color="@android:color/darker_gray" />

+        <corners android:radius="4dp"/>

+        </shape>

+    </item>

+    <item android:right="1dp" android:left="1dp" android:bottom="2dp">

+        <shape 

+            android:shape="rectangle">

+        <solid android:color="@android:color/white"/>

+        <corners android:radius="4dp"/>

+        </shape>

+    </item>

+</layer-list>
\ No newline at end of file
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/blur_shadow_wizard.xml b/org.eclipse.om2m.android.dashboard/res/drawable/blur_shadow_wizard.xml
new file mode 100644
index 0000000..b6eb04a
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/blur_shadow_wizard.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!--

+    Copyright (c) 2013, 2017 Orange.

+    All rights reserved. This program and the accompanying materials

+    are made available under the terms of the Eclipse Public License v1.0

+    which accompanies this distribution, and is available at

+    http://www.eclipse.org/legal/epl-v10.html

+   

+    Contributors:

+       BAREAU Cyrille <cyrille.bareau@orange.com>, 

+       BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+       BOLLE Sebastien <sebastien.bolle@orange.com>.

+ -->
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

+    <item >

+        <shape 

+            android:shape="rectangle">

+        <solid android:color="@android:color/darker_gray" />

+        <corners android:radius="4dp"/>

+        </shape>

+    </item>

+    <item android:right="1dp" android:left="1dp" android:top="1dp" android:bottom="2dp">

+        <shape 

+            android:shape="rectangle">

+        <solid android:color="@color/very_soft_gray"/>

+        <corners android:radius="4dp"/>

+        </shape>

+    </item>

+</layer-list>
\ No newline at end of file
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/btn_cab_done_custom_theme.xml b/org.eclipse.om2m.android.dashboard/res/drawable/btn_cab_done_custom_theme.xml
new file mode 100644
index 0000000..b7b4f5e
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/btn_cab_done_custom_theme.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!-- File created by the Android Action Bar Style Generator

+

+     Copyright (C) 2011, 2017 The Android Open Source Project

+     Copyright (C) 2012 readyState Software Ltd

+

+     Licensed under the Apache License, Version 2.0 (the "License");

+     you may not use this file except in compliance with the License.

+     You may obtain a copy of the License at

+  

+          http://www.apache.org/licenses/LICENSE-2.0

+  

+     Unless required by applicable law or agreed to in writing, software

+     distributed under the License is distributed on an "AS IS" BASIS,

+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+     See the License for the specific language governing permissions and

+     limitations under the License.

+-->
+

+<selector xmlns:android="http://schemas.android.com/apk/res/android">

+    <item android:state_pressed="true"

+        android:drawable="@drawable/btn_cab_done_pressed_custom_theme" />

+    <item android:state_focused="true" android:state_enabled="true"

+        android:drawable="@drawable/btn_cab_done_focused_custom_theme" />

+    <item android:state_enabled="true"

+        android:drawable="@drawable/btn_cab_done_default_custom_theme" />

+</selector>

diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/container_blue.png b/org.eclipse.om2m.android.dashboard/res/drawable/container_blue.png
new file mode 100644
index 0000000..4473ce1
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/container_blue.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/container_green.png b/org.eclipse.om2m.android.dashboard/res/drawable/container_green.png
new file mode 100644
index 0000000..c30e719
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/container_green.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/container_red.png b/org.eclipse.om2m.android.dashboard/res/drawable/container_red.png
new file mode 100644
index 0000000..3173ed1
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/container_red.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/custom_action_bar.xml b/org.eclipse.om2m.android.dashboard/res/drawable/custom_action_bar.xml
new file mode 100644
index 0000000..5d64858
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/custom_action_bar.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!--

+    Copyright (c) 2013, 2017 Orange.

+    All rights reserved. This program and the accompanying materials

+    are made available under the terms of the Eclipse Public License v1.0

+    which accompanies this distribution, and is available at

+    http://www.eclipse.org/legal/epl-v10.html

+   

+    Contributors:

+       BAREAU Cyrille <cyrille.bareau@orange.com>, 

+       BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+       BOLLE Sebastien <sebastien.bolle@orange.com>.

+ -->
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

+    <!-- Bottom line -->

+    <item>

+        <shape android:shape="rectangle">

+            <solid android:color="@color/otb_red" />

+        </shape>

+    </item>

+

+    <!-- Color of action bar -->

+    <item android:bottom="2dip" >

+        <shape android:shape="rectangle">

+            <solid android:color="@color/black" />

+        </shape>

+    </item>

+    

+</layer-list>
\ No newline at end of file
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/home_dashboard_logo.png b/org.eclipse.om2m.android.dashboard/res/drawable/home_dashboard_logo.png
new file mode 100644
index 0000000..d3e98f7
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/home_dashboard_logo.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_appicon_default.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_appicon_default.png
new file mode 100644
index 0000000..ce72094
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_appicon_default.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_appicon_fire.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_appicon_fire.png
new file mode 100644
index 0000000..cd0c42d
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_appicon_fire.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_appicon_gardening.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_appicon_gardening.png
new file mode 100644
index 0000000..e85029c
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_appicon_gardening.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_appicon_greenhome.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_appicon_greenhome.png
new file mode 100644
index 0000000..d9a2751
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_appicon_greenhome.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_appicon_heatingsystem.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_appicon_heatingsystem.png
new file mode 100644
index 0000000..2249a0e
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_appicon_heatingsystem.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_appicon_huelights.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_appicon_huelights.png
new file mode 100644
index 0000000..f924387
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_appicon_huelights.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_appicon_itydom1000.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_appicon_itydom1000.png
new file mode 100644
index 0000000..beb8ed4
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_appicon_itydom1000.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_logo.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_logo.png
new file mode 100644
index 0000000..406690e
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_logo.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_add_dev_blue.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_add_dev_blue.png
new file mode 100644
index 0000000..71b2448
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_add_dev_blue.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_add_usr_pale_green.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_add_usr_pale_green.png
new file mode 100644
index 0000000..74905e8
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_add_usr_pale_green.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_admin_red.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_admin_red.png
new file mode 100644
index 0000000..8598df7
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_admin_red.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_admin_white.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_admin_white.png
new file mode 100644
index 0000000..5f2a7f9
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_admin_white.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_asso_blue.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_asso_blue.png
new file mode 100644
index 0000000..cb0b2cd
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_asso_blue.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_asso_orange.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_asso_orange.png
new file mode 100644
index 0000000..18e7638
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_asso_orange.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_asso_red.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_asso_red.png
new file mode 100644
index 0000000..98cf38d
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_asso_red.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_asso_white.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_asso_white.png
new file mode 100644
index 0000000..25e561c
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_asso_white.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_chart_green.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_chart_green.png
new file mode 100644
index 0000000..c261547
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_chart_green.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_chart_red.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_chart_red.png
new file mode 100644
index 0000000..86ffd17
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_chart_red.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_chart_white.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_chart_white.png
new file mode 100644
index 0000000..1a298bb
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_chart_white.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_check_blue.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_check_blue.png
new file mode 100644
index 0000000..ecd778b
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_check_blue.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_check_green.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_check_green.png
new file mode 100644
index 0000000..d9167ca
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_check_green.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_check_white.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_check_white.png
new file mode 100644
index 0000000..313b74f
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_check_white.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_close_blue.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_close_blue.png
new file mode 100644
index 0000000..36f4d21
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_close_blue.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_close_red.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_close_red.png
new file mode 100644
index 0000000..55a3f04
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_close_red.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_close_white.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_close_white.png
new file mode 100644
index 0000000..e742ace
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_close_white.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_config.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_config.png
new file mode 100644
index 0000000..cb85380
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_config.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_delegate_green.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_delegate_green.png
new file mode 100644
index 0000000..f0119f0
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_delegate_green.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_delete_green.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_delete_green.png
new file mode 100644
index 0000000..5c46d6a
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_delete_green.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_delete_red.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_delete_red.png
new file mode 100644
index 0000000..c55d47c
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_delete_red.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_delete_white.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_delete_white.png
new file mode 100644
index 0000000..a79d74f
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_delete_white.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_battery.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_battery.png
new file mode 100644
index 0000000..988629c
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_battery.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_bell.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_bell.png
new file mode 100644
index 0000000..4adebb7
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_bell.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_camera.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_camera.png
new file mode 100644
index 0000000..6a470d2
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_camera.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_clock.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_clock.png
new file mode 100644
index 0000000..d2c805e
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_clock.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_coffeemachine.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_coffeemachine.png
new file mode 100644
index 0000000..b59ceeb
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_coffeemachine.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_contactdetector.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_contactdetector.png
new file mode 100644
index 0000000..f10b724
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_contactdetector.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_contactsensor.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_contactsensor.png
new file mode 100644
index 0000000..fad478f
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_contactsensor.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_default.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_default.png
new file mode 100644
index 0000000..c788ff1
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_default.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_door.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_door.png
new file mode 100644
index 0000000..fad478f
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_door.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_electriccar.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_electriccar.png
new file mode 100644
index 0000000..e722900
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_electriccar.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_enocean.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_enocean.png
new file mode 100644
index 0000000..e94a98b
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_enocean.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_flooddetector.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_flooddetector.png
new file mode 100644
index 0000000..e4979b5
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_flooddetector.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_gasvalve.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_gasvalve.png
new file mode 100644
index 0000000..7dac2ee
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_gasvalve.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_gauge.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_gauge.png
new file mode 100644
index 0000000..c96e867
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_gauge.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_greennet.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_greennet.png
new file mode 100644
index 0000000..7565516
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_greennet.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_heatingsystem.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_heatingsystem.png
new file mode 100644
index 0000000..a227486
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_heatingsystem.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_hue.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_hue.png
new file mode 100644
index 0000000..914569e
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_hue.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_ipcamera.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_ipcamera.png
new file mode 100644
index 0000000..2f6e4a7
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_ipcamera.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_kettle.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_kettle.png
new file mode 100644
index 0000000..7527449
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_kettle.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_light.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_light.png
new file mode 100644
index 0000000..d536145
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_light.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_motiondetector.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_motiondetector.png
new file mode 100644
index 0000000..f80f858
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_motiondetector.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_plug.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_plug.png
new file mode 100644
index 0000000..55e3321
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_plug.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_sdt.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_sdt.png
new file mode 100644
index 0000000..80364d6
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_sdt.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_sensors.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_sensors.png
new file mode 100644
index 0000000..66f2876
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_sensors.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_smokedetector.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_smokedetector.png
new file mode 100644
index 0000000..fd3e44b
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_smokedetector.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_smokeextractor.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_smokeextractor.png
new file mode 100644
index 0000000..0e5d191
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_smokeextractor.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_solarpanel.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_solarpanel.png
new file mode 100644
index 0000000..5ccfba7
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_solarpanel.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_switchbutton.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_switchbutton.png
new file mode 100644
index 0000000..966e2f0
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_switchbutton.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_thermometer.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_thermometer.png
new file mode 100644
index 0000000..0321de4
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_thermometer.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_upnp.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_upnp.png
new file mode 100644
index 0000000..1cd660b
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_upnp.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_warningdevice.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_warningdevice.png
new file mode 100644
index 0000000..23cb5a3
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_warningdevice.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_warningdeviceb.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_warningdeviceb.png
new file mode 100644
index 0000000..5fa6b79
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_warningdeviceb.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_warningdevicec.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_warningdevicec.png
new file mode 100644
index 0000000..663b628
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_warningdevicec.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_watervalve.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_watervalve.png
new file mode 100644
index 0000000..3ec7cc1
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_watervalve.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_weatherstation.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_weatherstation.png
new file mode 100644
index 0000000..8e29fdc
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_weatherstation.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_windturbine.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_windturbine.png
new file mode 100644
index 0000000..75f67a8
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_windturbine.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_x3d.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_x3d.png
new file mode 100644
index 0000000..994a634
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_x3d.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_zigbee.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_zigbee.png
new file mode 100644
index 0000000..9df459d
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_zigbee.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_zwave.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_zwave.png
new file mode 100644
index 0000000..44e5783
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_dev_cat_zwave.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_devcat_backgound.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_devcat_backgound.png
new file mode 100644
index 0000000..cc59832
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_devcat_backgound.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_devices.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_devices.png
new file mode 100644
index 0000000..e812ece
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_devices.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_info_red.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_info_red.png
new file mode 100644
index 0000000..7c07bdd
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_info_red.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_led_ko.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_led_ko.png
new file mode 100644
index 0000000..b4c05e7
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_led_ko.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_led_notconnected.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_led_notconnected.png
new file mode 100644
index 0000000..1704581
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_led_notconnected.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_led_ok.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_led_ok.png
new file mode 100644
index 0000000..fa2b488
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_led_ok.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_led_warn.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_led_warn.png
new file mode 100644
index 0000000..90751b2
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_led_warn.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_less_dev.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_less_dev.png
new file mode 100644
index 0000000..ef02db7
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_less_dev.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_more_app.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_more_app.png
new file mode 100644
index 0000000..271f4b3
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_more_app.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_more_dev.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_more_dev.png
new file mode 100644
index 0000000..7f89e16
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_more_dev.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_open_blue.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_open_blue.png
new file mode 100644
index 0000000..f8b6ac1
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_open_blue.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_open_red.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_open_red.png
new file mode 100644
index 0000000..597e710
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_open_red.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_permissions.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_permissions.png
new file mode 100644
index 0000000..c76bb7e
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_permissions.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_plus_blue.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_plus_blue.png
new file mode 100644
index 0000000..dc03c9d
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_plus_blue.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_plus_green.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_plus_green.png
new file mode 100644
index 0000000..33ee8fa
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_plus_green.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_plus_white.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_plus_white.png
new file mode 100644
index 0000000..831e865
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_plus_white.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_remove_blue.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_remove_blue.png
new file mode 100644
index 0000000..79feb20
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_remove_blue.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_remove_white.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_remove_white.png
new file mode 100644
index 0000000..ca944a8
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_remove_white.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_replace_blue.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_replace_blue.png
new file mode 100644
index 0000000..c6d9efc
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_replace_blue.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_services.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_services.png
new file mode 100644
index 0000000..6b81d6f
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_services.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_store.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_store.png
new file mode 100644
index 0000000..2b2c0e0
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_store.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_store_grey.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_store_grey.png
new file mode 100644
index 0000000..8016cbc
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_store_grey.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_store_red.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_store_red.png
new file mode 100644
index 0000000..b8f3ee4
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_store_red.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_uninstall_red.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_uninstall_red.png
new file mode 100644
index 0000000..5a1b4ce
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_uninstall_red.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_usercat_backgound.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_usercat_backgound.png
new file mode 100644
index 0000000..39f9784
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_usercat_backgound.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_users_green.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_users_green.png
new file mode 100644
index 0000000..a7da052
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_users_green.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_users_white.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_users_white.png
new file mode 100644
index 0000000..ad5665f
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_users_white.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_zoom_blue.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_zoom_blue.png
new file mode 100644
index 0000000..4a4c36f
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_zoom_blue.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_zoom_red.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_zoom_red.png
new file mode 100644
index 0000000..7b81bcb
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_picto_zoom_red.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_user_avatar_boy.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_user_avatar_boy.png
new file mode 100644
index 0000000..c877b02
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_user_avatar_boy.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_user_avatar_boy_sel.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_user_avatar_boy_sel.png
new file mode 100644
index 0000000..8662aea
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_user_avatar_boy_sel.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_user_avatar_businessman.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_user_avatar_businessman.png
new file mode 100644
index 0000000..e12f4f5
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_user_avatar_businessman.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_user_avatar_businessman_sel.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_user_avatar_businessman_sel.png
new file mode 100644
index 0000000..aeb11b1
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_user_avatar_businessman_sel.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_user_avatar_default.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_user_avatar_default.png
new file mode 100644
index 0000000..189a02f
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_user_avatar_default.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_user_avatar_default_sel.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_user_avatar_default_sel.png
new file mode 100644
index 0000000..0c44769
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_user_avatar_default_sel.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_user_avatar_female.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_user_avatar_female.png
new file mode 100644
index 0000000..498ed74
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_user_avatar_female.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_user_avatar_female_headset.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_user_avatar_female_headset.png
new file mode 100644
index 0000000..1a4b436
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_user_avatar_female_headset.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_user_avatar_female_headset_sel.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_user_avatar_female_headset_sel.png
new file mode 100644
index 0000000..2c7de05
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_user_avatar_female_headset_sel.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_user_avatar_female_sel.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_user_avatar_female_sel.png
new file mode 100644
index 0000000..8b068d1
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_user_avatar_female_sel.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_user_avatar_girl.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_user_avatar_girl.png
new file mode 100644
index 0000000..5d59bec
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_user_avatar_girl.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_user_avatar_girl_sel.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_user_avatar_girl_sel.png
new file mode 100644
index 0000000..e3cad05
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_user_avatar_girl_sel.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_user_avatar_grandma.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_user_avatar_grandma.png
new file mode 100644
index 0000000..24329f7
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_user_avatar_grandma.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_user_avatar_grandma_sel.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_user_avatar_grandma_sel.png
new file mode 100644
index 0000000..395ae0a
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_user_avatar_grandma_sel.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_user_avatar_grandpa.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_user_avatar_grandpa.png
new file mode 100644
index 0000000..bb88453
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_user_avatar_grandpa.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_user_avatar_grandpa_sel.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_user_avatar_grandpa_sel.png
new file mode 100644
index 0000000..2d77366
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_user_avatar_grandpa_sel.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_user_avatar_male.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_user_avatar_male.png
new file mode 100644
index 0000000..1e4aa61
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_user_avatar_male.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_user_avatar_male_headset.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_user_avatar_male_headset.png
new file mode 100644
index 0000000..2db76f9
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_user_avatar_male_headset.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_user_avatar_male_headset_sel.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_user_avatar_male_headset_sel.png
new file mode 100644
index 0000000..ecec508
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_user_avatar_male_headset_sel.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_user_avatar_male_sel.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_user_avatar_male_sel.png
new file mode 100644
index 0000000..a5860ab
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_user_avatar_male_sel.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_white_cart.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_white_cart.png
new file mode 100644
index 0000000..1e4a189
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_white_cart.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_white_gear.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_white_gear.png
new file mode 100644
index 0000000..f3a7b4f
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_white_gear.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_white_in.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_white_in.png
new file mode 100644
index 0000000..e0553ae
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_white_in.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_white_posterous.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_white_posterous.png
new file mode 100644
index 0000000..1635789
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_white_posterous.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_wizard_zigbee_1.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_wizard_zigbee_1.png
new file mode 100644
index 0000000..661bedd
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_wizard_zigbee_1.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_wizard_zigbee_2.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_wizard_zigbee_2.png
new file mode 100644
index 0000000..915ecc6
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_wizard_zigbee_2.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_wizard_zigbee_3.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_wizard_zigbee_3.png
new file mode 100644
index 0000000..a352b09
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_wizard_zigbee_3.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/otb_wizard_zigbee_4.png b/org.eclipse.om2m.android.dashboard/res/drawable/otb_wizard_zigbee_4.png
new file mode 100644
index 0000000..f8fe88c
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/otb_wizard_zigbee_4.png
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/pressed_background_custom_theme.xml b/org.eclipse.om2m.android.dashboard/res/drawable/pressed_background_custom_theme.xml
new file mode 100644
index 0000000..30f139e
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/pressed_background_custom_theme.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!-- File created by the Android Action Bar Style Generator

+

+     Copyright (C) 2011, 2017 The Android Open Source Project

+     Copyright (C) 2012 readyState Software Ltd

+

+     Licensed under the Apache License, Version 2.0 (the "License");

+     you may not use this file except in compliance with the License.

+     You may obtain a copy of the License at

+  

+          http://www.apache.org/licenses/LICENSE-2.0

+  

+     Unless required by applicable law or agreed to in writing, software

+     distributed under the License is distributed on an "AS IS" BASIS,

+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+     See the License for the specific language governing permissions and

+     limitations under the License.

+-->
+

+<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">

+    <solid android:color="@color/pressed_custom_theme" />

+</shape>

diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/progress_horizontal_custom_theme.xml b/org.eclipse.om2m.android.dashboard/res/drawable/progress_horizontal_custom_theme.xml
new file mode 100644
index 0000000..33597d8
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/progress_horizontal_custom_theme.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!-- File created by the Android Action Bar Style Generator

+

+     Copyright (C) 2011, 2017 The Android Open Source Project

+     Copyright (C) 2012 readyState Software Ltd

+

+     Licensed under the Apache License, Version 2.0 (the "License");

+     you may not use this file except in compliance with the License.

+     You may obtain a copy of the License at

+

+          http://www.apache.org/licenses/LICENSE-2.0

+

+     Unless required by applicable law or agreed to in writing, software

+     distributed under the License is distributed on an "AS IS" BASIS,

+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+     See the License for the specific language governing permissions and

+     limitations under the License.

+-->
+

+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

+

+    <item android:id="@android:id/background"

+          android:drawable="@drawable/progress_bg_custom_theme" />

+

+    <item android:id="@android:id/secondaryProgress">

+        <scale android:scaleWidth="100%"

+               android:drawable="@drawable/progress_secondary_custom_theme" />

+    </item>

+

+    <item android:id="@android:id/progress">

+        <scale android:scaleWidth="100%"

+               android:drawable="@drawable/progress_primary_custom_theme" />

+    </item>

+

+</layer-list>

diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/radio_btn_avatar_boy.xml b/org.eclipse.om2m.android.dashboard/res/drawable/radio_btn_avatar_boy.xml
new file mode 100644
index 0000000..ad258d0
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/radio_btn_avatar_boy.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+    Copyright (c) 2013, 2017 Orange.

+    All rights reserved. This program and the accompanying materials

+    are made available under the terms of the Eclipse Public License v1.0

+    which accompanies this distribution, and is available at

+    http://www.eclipse.org/legal/epl-v10.html

+   

+    Contributors:

+       BAREAU Cyrille <cyrille.bareau@orange.com>, 

+       BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+       BOLLE Sebastien <sebastien.bolle@orange.com>.

+ -->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">

+    <item android:drawable="@drawable/otb_user_avatar_boy_sel" android:state_checked="true"/>

+    <item android:drawable="@drawable/otb_user_avatar_boy" android:state_checked="false"/>

+</selector>
\ No newline at end of file
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/radio_btn_avatar_businessman.xml b/org.eclipse.om2m.android.dashboard/res/drawable/radio_btn_avatar_businessman.xml
new file mode 100644
index 0000000..5529a5d
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/radio_btn_avatar_businessman.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+    Copyright (c) 2013, 2017 Orange.

+    All rights reserved. This program and the accompanying materials

+    are made available under the terms of the Eclipse Public License v1.0

+    which accompanies this distribution, and is available at

+    http://www.eclipse.org/legal/epl-v10.html

+   

+    Contributors:

+       BAREAU Cyrille <cyrille.bareau@orange.com>, 

+       BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+       BOLLE Sebastien <sebastien.bolle@orange.com>.

+ -->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">

+    <item android:drawable="@drawable/otb_user_avatar_businessman_sel" android:state_checked="true"/>

+    <item android:drawable="@drawable/otb_user_avatar_businessman" android:state_checked="false"/>

+</selector>

diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/radio_btn_avatar_female.xml b/org.eclipse.om2m.android.dashboard/res/drawable/radio_btn_avatar_female.xml
new file mode 100644
index 0000000..ca9b5b6
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/radio_btn_avatar_female.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+    Copyright (c) 2013, 2017 Orange.

+    All rights reserved. This program and the accompanying materials

+    are made available under the terms of the Eclipse Public License v1.0

+    which accompanies this distribution, and is available at

+    http://www.eclipse.org/legal/epl-v10.html

+   

+    Contributors:

+       BAREAU Cyrille <cyrille.bareau@orange.com>, 

+       BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+       BOLLE Sebastien <sebastien.bolle@orange.com>.

+ -->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">

+    <item android:drawable="@drawable/otb_user_avatar_female_sel" android:state_checked="true"/>

+    <item android:drawable="@drawable/otb_user_avatar_female" android:state_checked="false"/>

+</selector>
\ No newline at end of file
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/radio_btn_avatar_female_headset.xml b/org.eclipse.om2m.android.dashboard/res/drawable/radio_btn_avatar_female_headset.xml
new file mode 100644
index 0000000..9ae17ef
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/radio_btn_avatar_female_headset.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+    Copyright (c) 2013, 2017 Orange.

+    All rights reserved. This program and the accompanying materials

+    are made available under the terms of the Eclipse Public License v1.0

+    which accompanies this distribution, and is available at

+    http://www.eclipse.org/legal/epl-v10.html

+   

+    Contributors:

+       BAREAU Cyrille <cyrille.bareau@orange.com>, 

+       BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+       BOLLE Sebastien <sebastien.bolle@orange.com>.

+ -->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">

+    <item android:drawable="@drawable/otb_user_avatar_female_headset_sel" android:state_checked="true"/>

+    <item android:drawable="@drawable/otb_user_avatar_female_headset" android:state_checked="false"/>

+</selector>
\ No newline at end of file
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/radio_btn_avatar_girl.xml b/org.eclipse.om2m.android.dashboard/res/drawable/radio_btn_avatar_girl.xml
new file mode 100644
index 0000000..87b5914
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/radio_btn_avatar_girl.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+    Copyright (c) 2013, 2017 Orange.

+    All rights reserved. This program and the accompanying materials

+    are made available under the terms of the Eclipse Public License v1.0

+    which accompanies this distribution, and is available at

+    http://www.eclipse.org/legal/epl-v10.html

+   

+    Contributors:

+       BAREAU Cyrille <cyrille.bareau@orange.com>, 

+       BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+       BOLLE Sebastien <sebastien.bolle@orange.com>.

+ -->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">

+    <item android:drawable="@drawable/otb_user_avatar_girl_sel" android:state_checked="true"/>

+    <item android:drawable="@drawable/otb_user_avatar_girl" android:state_checked="false"/>

+</selector>
\ No newline at end of file
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/radio_btn_avatar_grandma.xml b/org.eclipse.om2m.android.dashboard/res/drawable/radio_btn_avatar_grandma.xml
new file mode 100644
index 0000000..056106a
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/radio_btn_avatar_grandma.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+    Copyright (c) 2013, 2017 Orange.

+    All rights reserved. This program and the accompanying materials

+    are made available under the terms of the Eclipse Public License v1.0

+    which accompanies this distribution, and is available at

+    http://www.eclipse.org/legal/epl-v10.html

+   

+    Contributors:

+       BAREAU Cyrille <cyrille.bareau@orange.com>, 

+       BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+       BOLLE Sebastien <sebastien.bolle@orange.com>.

+ -->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">

+    <item android:drawable="@drawable/otb_user_avatar_grandma_sel" android:state_checked="true"/>

+    <item android:drawable="@drawable/otb_user_avatar_grandma" android:state_checked="false"/>

+</selector>
\ No newline at end of file
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/radio_btn_avatar_grandpa.xml b/org.eclipse.om2m.android.dashboard/res/drawable/radio_btn_avatar_grandpa.xml
new file mode 100644
index 0000000..aff7f79
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/radio_btn_avatar_grandpa.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+    Copyright (c) 2013, 2017 Orange.

+    All rights reserved. This program and the accompanying materials

+    are made available under the terms of the Eclipse Public License v1.0

+    which accompanies this distribution, and is available at

+    http://www.eclipse.org/legal/epl-v10.html

+   

+    Contributors:

+       BAREAU Cyrille <cyrille.bareau@orange.com>, 

+       BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+       BOLLE Sebastien <sebastien.bolle@orange.com>.

+ -->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">

+    <item android:drawable="@drawable/otb_user_avatar_grandpa_sel" android:state_checked="true"/>

+    <item android:drawable="@drawable/otb_user_avatar_grandpa" android:state_checked="false"/>

+</selector>
\ No newline at end of file
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/radio_btn_avatar_male.xml b/org.eclipse.om2m.android.dashboard/res/drawable/radio_btn_avatar_male.xml
new file mode 100644
index 0000000..2212621
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/radio_btn_avatar_male.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+    Copyright (c) 2013, 2017 Orange.

+    All rights reserved. This program and the accompanying materials

+    are made available under the terms of the Eclipse Public License v1.0

+    which accompanies this distribution, and is available at

+    http://www.eclipse.org/legal/epl-v10.html

+   

+    Contributors:

+       BAREAU Cyrille <cyrille.bareau@orange.com>, 

+       BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+       BOLLE Sebastien <sebastien.bolle@orange.com>.

+ -->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">

+    <item android:drawable="@drawable/otb_user_avatar_male_sel" android:state_checked="true"/>

+    <item android:drawable="@drawable/otb_user_avatar_male" android:state_checked="false"/>

+</selector>
\ No newline at end of file
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/radio_btn_avatar_male_headset.xml b/org.eclipse.om2m.android.dashboard/res/drawable/radio_btn_avatar_male_headset.xml
new file mode 100644
index 0000000..6182a9c
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/radio_btn_avatar_male_headset.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+    Copyright (c) 2013, 2017 Orange.

+    All rights reserved. This program and the accompanying materials

+    are made available under the terms of the Eclipse Public License v1.0

+    which accompanies this distribution, and is available at

+    http://www.eclipse.org/legal/epl-v10.html

+   

+    Contributors:

+       BAREAU Cyrille <cyrille.bareau@orange.com>, 

+       BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+       BOLLE Sebastien <sebastien.bolle@orange.com>.

+ -->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">

+    <item android:drawable="@drawable/otb_user_avatar_male_headset_sel" android:state_checked="true"/>

+    <item android:drawable="@drawable/otb_user_avatar_male_headset" android:state_checked="false"/>

+</selector>
\ No newline at end of file
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/sel_button_blue.xml b/org.eclipse.om2m.android.dashboard/res/drawable/sel_button_blue.xml
new file mode 100644
index 0000000..608c7d5
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/sel_button_blue.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!--

+    Copyright (c) 2013, 2017 Orange.

+    All rights reserved. This program and the accompanying materials

+    are made available under the terms of the Eclipse Public License v1.0

+    which accompanies this distribution, and is available at

+    http://www.eclipse.org/legal/epl-v10.html

+   

+    Contributors:

+       BAREAU Cyrille <cyrille.bareau@orange.com>, 

+       BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+       BOLLE Sebastien <sebastien.bolle@orange.com>.

+ -->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android" >

+    	<item android:state_enabled="false"

+    	    android:drawable="@drawable/otb_button_gray" />

+    	<item android:state_pressed="true"

+    	    android:drawable="@drawable/otb_button_blue_pressed" />

+    	<item android:drawable="@drawable/otb_button_blue" />    	

+

+</selector>
\ No newline at end of file
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/sel_button_green.xml b/org.eclipse.om2m.android.dashboard/res/drawable/sel_button_green.xml
new file mode 100644
index 0000000..d898ae8
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/sel_button_green.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!--

+    Copyright (c) 2013, 2017 Orange.

+    All rights reserved. This program and the accompanying materials

+    are made available under the terms of the Eclipse Public License v1.0

+    which accompanies this distribution, and is available at

+    http://www.eclipse.org/legal/epl-v10.html

+   

+    Contributors:

+       BAREAU Cyrille <cyrille.bareau@orange.com>, 

+       BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+       BOLLE Sebastien <sebastien.bolle@orange.com>.

+ -->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android" >

+    	<item android:state_enabled="false"

+    	    android:drawable="@drawable/otb_button_gray" />

+    	<item android:state_pressed="true"

+    	    android:drawable="@drawable/otb_button_green_pressed" />

+    	<item android:drawable="@drawable/otb_button_green" />    	

+

+</selector>
\ No newline at end of file
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/sel_button_orange.xml b/org.eclipse.om2m.android.dashboard/res/drawable/sel_button_orange.xml
new file mode 100644
index 0000000..cac6342
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/sel_button_orange.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!--

+    Copyright (c) 2013, 2017 Orange.

+    All rights reserved. This program and the accompanying materials

+    are made available under the terms of the Eclipse Public License v1.0

+    which accompanies this distribution, and is available at

+    http://www.eclipse.org/legal/epl-v10.html

+   

+    Contributors:

+       BAREAU Cyrille <cyrille.bareau@orange.com>, 

+       BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+       BOLLE Sebastien <sebastien.bolle@orange.com>.

+ -->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android" >

+    	<item android:state_enabled="false"

+    	    android:drawable="@drawable/otb_button_gray" />

+    	<item android:state_pressed="true"

+    	    android:drawable="@drawable/otb_button_orange_pressed" />

+    	<item android:drawable="@drawable/otb_button_orange" />    	

+

+</selector>
\ No newline at end of file
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/sel_button_red.xml b/org.eclipse.om2m.android.dashboard/res/drawable/sel_button_red.xml
new file mode 100644
index 0000000..9aa84b2
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/sel_button_red.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!--

+    Copyright (c) 2013, 2017 Orange.

+    All rights reserved. This program and the accompanying materials

+    are made available under the terms of the Eclipse Public License v1.0

+    which accompanies this distribution, and is available at

+    http://www.eclipse.org/legal/epl-v10.html

+   

+    Contributors:

+       BAREAU Cyrille <cyrille.bareau@orange.com>, 

+       BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+       BOLLE Sebastien <sebastien.bolle@orange.com>.

+ -->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android" >

+    	<item android:state_enabled="false"

+    	    android:drawable="@drawable/otb_button_gray" />

+    	<item android:state_pressed="true"

+    	    android:drawable="@drawable/otb_button_red_pressed" />

+    	<item android:drawable="@drawable/otb_button_red" />    	

+

+</selector>
\ No newline at end of file
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/sel_card_blue.xml b/org.eclipse.om2m.android.dashboard/res/drawable/sel_card_blue.xml
new file mode 100644
index 0000000..8be6571
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/sel_card_blue.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!--

+    Copyright (c) 2013, 2017 Orange.

+    All rights reserved. This program and the accompanying materials

+    are made available under the terms of the Eclipse Public License v1.0

+    which accompanies this distribution, and is available at

+    http://www.eclipse.org/legal/epl-v10.html

+   

+    Contributors:

+       BAREAU Cyrille <cyrille.bareau@orange.com>, 

+       BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+       BOLLE Sebastien <sebastien.bolle@orange.com>.

+ -->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android" >

+    	<item android:state_pressed="true"

+    	    android:drawable="@drawable/otb_card_blue_pressed" />

+    	<item android:drawable="@drawable/otb_card_blue" />    	

+

+</selector>
\ No newline at end of file
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/sel_card_green.xml b/org.eclipse.om2m.android.dashboard/res/drawable/sel_card_green.xml
new file mode 100644
index 0000000..48a9611
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/sel_card_green.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!--

+    Copyright (c) 2013, 2017 Orange.

+    All rights reserved. This program and the accompanying materials

+    are made available under the terms of the Eclipse Public License v1.0

+    which accompanies this distribution, and is available at

+    http://www.eclipse.org/legal/epl-v10.html

+   

+    Contributors:

+       BAREAU Cyrille <cyrille.bareau@orange.com>, 

+       BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+       BOLLE Sebastien <sebastien.bolle@orange.com>.

+ -->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android" >

+    	<item android:state_pressed="true"

+    	    android:drawable="@drawable/otb_card_green_pressed" />

+    	<item android:drawable="@drawable/otb_card_green" />    	

+

+</selector>
\ No newline at end of file
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/sel_card_red.xml b/org.eclipse.om2m.android.dashboard/res/drawable/sel_card_red.xml
new file mode 100644
index 0000000..c0058a7
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/sel_card_red.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!--

+    Copyright (c) 2013, 2017 Orange.

+    All rights reserved. This program and the accompanying materials

+    are made available under the terms of the Eclipse Public License v1.0

+    which accompanies this distribution, and is available at

+    http://www.eclipse.org/legal/epl-v10.html

+   

+    Contributors:

+       BAREAU Cyrille <cyrille.bareau@orange.com>, 

+       BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+       BOLLE Sebastien <sebastien.bolle@orange.com>.

+ -->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android" >

+    	<item android:state_pressed="true"

+    	    android:drawable="@drawable/otb_card_red_pressed" />

+    	<item android:drawable="@drawable/otb_card_red" />    	

+

+</selector>
\ No newline at end of file
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/selectable_background_custom_theme.xml b/org.eclipse.om2m.android.dashboard/res/drawable/selectable_background_custom_theme.xml
new file mode 100644
index 0000000..67ca19b
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/selectable_background_custom_theme.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!-- File created by the Android Action Bar Style Generator

+

+     Copyright (C) 2011, 2017 The Android Open Source Project

+     Copyright (C) 2012 readyState Software Ltd

+

+     Licensed under the Apache License, Version 2.0 (the "License");

+     you may not use this file except in compliance with the License.

+     You may obtain a copy of the License at

+  

+          http://www.apache.org/licenses/LICENSE-2.0

+  

+     Unless required by applicable law or agreed to in writing, software

+     distributed under the License is distributed on an "AS IS" BASIS,

+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+     See the License for the specific language governing permissions and

+     limitations under the License.

+-->
+

+<selector xmlns:android="http://schemas.android.com/apk/res/android"

+        android:exitFadeDuration="@android:integer/config_mediumAnimTime" >

+    <item android:state_pressed="false" android:state_focused="true" android:drawable="@drawable/list_focused_custom_theme" />

+    <item android:state_pressed="true" android:drawable="@drawable/pressed_background_custom_theme" />

+    <item android:drawable="@android:color/transparent" />

+</selector>
\ No newline at end of file
diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/spinner_background_ab_custom_theme.xml b/org.eclipse.om2m.android.dashboard/res/drawable/spinner_background_ab_custom_theme.xml
new file mode 100644
index 0000000..e48860e
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/spinner_background_ab_custom_theme.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!-- File created by the Android Action Bar Style Generator

+

+     Copyright (C) 2011, 2017 The Android Open Source Project

+     Copyright (C) 2012 readyState Software Ltd

+

+     Licensed under the Apache License, Version 2.0 (the "License");

+     you may not use this file except in compliance with the License.

+     You may obtain a copy of the License at

+  

+          http://www.apache.org/licenses/LICENSE-2.0

+  

+     Unless required by applicable law or agreed to in writing, software

+     distributed under the License is distributed on an "AS IS" BASIS,

+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+     See the License for the specific language governing permissions and

+     limitations under the License.

+-->
+

+<selector xmlns:android="http://schemas.android.com/apk/res/android">

+    <item android:state_enabled="false"

+        android:drawable="@drawable/spinner_ab_disabled_custom_theme" />

+    <item android:state_pressed="true"

+        android:drawable="@drawable/spinner_ab_pressed_custom_theme" />

+    <item android:state_pressed="false" android:state_focused="true"

+        android:drawable="@drawable/spinner_ab_focused_custom_theme" />

+    <item android:drawable="@drawable/spinner_ab_default_custom_theme" />

+</selector>

diff --git a/org.eclipse.om2m.android.dashboard/res/drawable/tab_indicator_ab_custom_theme.xml b/org.eclipse.om2m.android.dashboard/res/drawable/tab_indicator_ab_custom_theme.xml
new file mode 100644
index 0000000..403c637
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/drawable/tab_indicator_ab_custom_theme.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!-- File created by the Android Action Bar Style Generator

+

+     Copyright (C) 2011, 2017 The Android Open Source Project

+     Copyright (C) 2012 readyState Software Ltd

+

+     Licensed under the Apache License, Version 2.0 (the "License");

+     you may not use this file except in compliance with the License.

+     You may obtain a copy of the License at

+  

+          http://www.apache.org/licenses/LICENSE-2.0

+  

+     Unless required by applicable law or agreed to in writing, software

+     distributed under the License is distributed on an "AS IS" BASIS,

+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+     See the License for the specific language governing permissions and

+     limitations under the License.

+-->
+

+<selector xmlns:android="http://schemas.android.com/apk/res/android">

+    <!-- Non focused states -->

+    <item android:state_focused="false" android:state_selected="false" android:state_pressed="false" android:drawable="@android:color/transparent" />

+    <item android:state_focused="false" android:state_selected="true"  android:state_pressed="false" android:drawable="@drawable/tab_selected_custom_theme" />

+

+    <!-- Focused states -->

+    <item android:state_focused="true" android:state_selected="false" android:state_pressed="false" android:drawable="@drawable/tab_unselected_focused_custom_theme" />

+    <item android:state_focused="true" android:state_selected="true"  android:state_pressed="false" android:drawable="@drawable/tab_selected_focused_custom_theme" />

+

+    <!-- Pressed -->

+    <!--    Non focused states -->

+    <item android:state_focused="false" android:state_selected="false" android:state_pressed="true" android:drawable="@drawable/tab_unselected_pressed_custom_theme" />

+    <item android:state_focused="false" android:state_selected="true"  android:state_pressed="true" android:drawable="@drawable/tab_selected_pressed_custom_theme" />

+

+    <!--    Focused states -->

+    <item android:state_focused="true" android:state_selected="false" android:state_pressed="true" android:drawable="@drawable/tab_unselected_pressed_custom_theme" />

+    <item android:state_focused="true" android:state_selected="true"  android:state_pressed="true" android:drawable="@drawable/tab_selected_pressed_custom_theme" />

+</selector>

diff --git a/org.eclipse.om2m.android.dashboard/res/layout-land/main_activity.xml b/org.eclipse.om2m.android.dashboard/res/layout-land/main_activity.xml
new file mode 100644
index 0000000..64cc366
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/layout-land/main_activity.xml
@@ -0,0 +1,272 @@
+<!--

+    Copyright (c) 2013, 2017 Orange.

+    All rights reserved. This program and the accompanying materials

+    are made available under the terms of the Eclipse Public License v1.0

+    which accompanies this distribution, and is available at

+    http://www.eclipse.org/legal/epl-v10.html

+   

+    Contributors:

+       BAREAU Cyrille <cyrille.bareau@orange.com>, 

+       BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+       BOLLE Sebastien <sebastien.bolle@orange.com>.

+ -->
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

+    xmlns:tools="http://schemas.android.com/tools"

+    xmlns:custom="http://schemas.android.com/apk/res/org.eclipse.om2m.android.dashboard"

+    android:layout_width="match_parent"

+    android:layout_height="match_parent"

+    android:background="@color/solf_background"

+    android:keepScreenOn="true"

+    android:orientation="vertical"

+    tools:context=".Demo" >

+

+    <ScrollView

+        android:id="@+id/sv_main_dynamic_card_scroller"

+        android:layout_width="fill_parent"

+        android:layout_height="match_parent"

+        android:layout_marginBottom="10dp"

+        android:layout_marginLeft="10dp"

+        android:layout_marginRight="10dp"

+        android:layout_marginTop="10dp" >

+

+        <RelativeLayout

+            android:layout_width="fill_parent"

+            android:layout_height="wrap_content" >

+        

+        <!-- =========================================================== --> 

+		<!-- 						LEFT-SIDE							 -->

+        <!-- =========================================================== -->

+            

+            <LinearLayout

+                android:id="@+id/ll_cse_left"

+                android:layout_width="match_parent"

+                android:layout_height="match_parent"

+                android:layout_alignParentLeft="true"

+                android:layout_weight="4"

+                android:orientation="vertical" >

+

+        <!-- =========================================================== --> 

+		<!-- 							HAB								 -->

+        <!-- =========================================================== -->

+                

+                <RelativeLayout

+                    android:id="@+id/rl_main_zone_cse"

+                    android:layout_width="match_parent"

+                    android:layout_height="50dp"

+                    android:background="@drawable/blur_shadow" >

+                    

+                    <ImageView

+                        android:id="@+id/iv_cse_state_icon"

+                        android:layout_width="30dp"

+                        android:layout_height="30dp"

+                        android:layout_centerVertical="true"

+                        android:layout_gravity="center_vertical"

+                        android:layout_marginLeft="15dp"

+                        android:src="@drawable/otb_picto_led_ko" />

+

+                    <TextView

+                        android:id="@+id/tv_cse_title"

+                        android:layout_width="wrap_content"

+                        android:layout_height="wrap_content"

+                        android:layout_alignParentLeft="true"

+                        android:layout_centerVertical="true"

+                        android:layout_gravity="center_vertical"

+                        android:layout_marginLeft="60dp"

+                        android:text="@string/main_config"

+                        android:textAppearance="?android:attr/textAppearanceLarge"

+                        android:textColor="@color/otb_orange"

+                        android:textSize="@dimen/menu_title_size"

+                        android:textStyle="bold" />

+

+                    <TextView

+                        android:id="@+id/tv_cse_status_title"

+                        android:layout_width="wrap_content"

+                        android:layout_height="wrap_content"

+                        android:layout_centerVertical="true"

+                        android:layout_marginLeft="7dp"

+                        android:layout_toRightOf="@+id/tv_cse_title"

+                        android:text="@string/main_cse_state_not_detected"

+                        android:textAppearance="?android:attr/textAppearanceLarge"

+                        android:textColor="@color/otb_orange"

+                        android:textSize="@dimen/menu_title_size"

+                        android:textStyle="bold" />

+                    

+                </RelativeLayout>

+        

+        <!-- =========================================================== --> 

+		<!-- 						APPLICATIONS						 -->

+        <!-- =========================================================== -->

+                

+                <RelativeLayout                    

+                    android:id="@+id/rl_main_zone_apps"

+                    android:layout_width="match_parent"

+                    android:layout_height="match_parent"

+                    android:layout_marginTop="10dp"

+                    android:background="@drawable/blur_shadow" >

+

+                    <ImageView

+                        android:layout_width="45dp"

+                        android:layout_height="45dp"

+                        android:layout_alignParentLeft="true"

+                        android:layout_alignParentTop="true"

+                        android:layout_marginLeft="5dp"

+                        android:layout_marginTop="5dp"

+                        android:src="@drawable/otb_picto_services" />

+

+                    <TextView

+                        android:id="@+id/tv_main_counter_app"

+                        android:layout_width="wrap_content"

+                        android:layout_height="wrap_content"

+                        android:layout_alignParentTop="true"

+                        android:layout_gravity="center_vertical"

+                        android:layout_marginLeft="60dp"

+                        android:layout_marginTop="10dp"

+                        android:text="xx"

+                        android:textAppearance="?android:attr/textAppearanceLarge"

+                        android:textColor="@color/otb_red"

+                        android:textSize="26sp"

+                        android:textStyle="bold" />

+

+                    <TextView

+                        android:layout_width="wrap_content"

+                        android:layout_height="wrap_content"

+                        android:layout_alignParentTop="true"

+                        android:layout_gravity="center_vertical"

+                        android:layout_marginLeft="10dp"

+                        android:layout_marginTop="15dp"

+                        android:layout_toRightOf="@+id/tv_main_counter_app"

+                        android:text="@string/main_applications"

+                        android:textAppearance="?android:attr/textAppearanceLarge"

+                        android:textColor="@color/otb_red"

+                        android:textSize="@dimen/menu_title_size"

+                        android:textStyle="bold" />                   

+                    

+                    <org.eclipse.om2m.android.dashboard.tools.CustomLineView

+	                    android:layout_width="match_parent"

+	                    android:layout_height="2dp"

+	                    android:layout_alignParentLeft="true"

+	                    android:layout_alignParentTop="true"

+	                    android:layout_marginLeft="10dp"

+	                    android:layout_marginRight="10dp"

+	                    android:layout_marginTop="60dp"

+	                    custom:dashGap="2"

+	                    custom:dashWidth="2"

+	                    custom:dashed="true"

+	                    custom:orientation="horizontal"

+	                    custom:thickness="1"

+	                    custom:color="@color/otb_red" />

+                    

+                    <GridLayout

+                        android:id="@+id/gl_main_cse_app"

+                        android:layout_width="wrap_content"

+                        android:layout_height="wrap_content"

+                        android:layout_centerHorizontal="true"

+                        android:layout_marginBottom="10dp"

+                        android:layout_marginTop="80dp"

+                        android:animateLayoutChanges="true"

+                        android:orientation="horizontal"

+                        android:scrollbarAlwaysDrawVerticalTrack="false" />

+                

+                </RelativeLayout>

+

+            </LinearLayout>

+        

+        <!-- =========================================================== --> 

+		<!-- 						RIGHT-SIDE							 -->

+        <!-- =========================================================== -->

+

+            <LinearLayout

+                android:id="@+id/ll_cse_right"

+                android:layout_width="match_parent"

+                android:layout_height="match_parent"

+                android:layout_alignParentRight="true"

+                android:layout_weight="5"

+                android:layout_toRightOf="@id/ll_cse_left"

+                android:layout_marginLeft="10dp"

+                android:orientation="vertical" >

+        

+        <!-- =========================================================== --> 

+		<!-- 						DEVICES								 -->

+        <!-- =========================================================== -->

+

+                <RelativeLayout

+	                android:id="@+id/rl_main_zone_devs"

+	                android:layout_width="match_parent"

+                    android:layout_height="match_parent"

+	                android:background="@drawable/blur_shadow" >

+	

+	                <ImageView

+	                    android:layout_width="50dp"

+	                    android:layout_height="50dp"

+	                    android:layout_alignParentLeft="true"

+	                    android:layout_alignParentTop="true"

+	                    android:layout_marginLeft="5dp"

+	                    android:layout_marginTop="5dp"

+	                    android:src="@drawable/otb_picto_devices" />

+	

+	                <TextView

+	                    android:id="@+id/tv_main_counter_dev"

+	                    android:layout_width="wrap_content"

+	                    android:layout_height="wrap_content"

+	                    android:layout_alignParentTop="true"

+	                    android:layout_centerVertical="true"

+	                    android:layout_gravity="center_vertical"

+	                    android:layout_marginLeft="60dp"

+	                    android:layout_marginTop="15dp"

+	                    android:text="xx"

+	                    android:textAppearance="?android:attr/textAppearanceLarge"

+	                    android:textColor="@color/otb_blue"

+	                    android:textSize="26sp"

+	                    android:textStyle="bold" />

+	

+	                <TextView

+	                    android:id="@+id/tv_main_dev"

+	                    android:layout_width="160dp"

+	                    android:layout_height="wrap_content"

+	                    android:layout_alignParentTop="true"

+	                    android:layout_centerVertical="true"

+	                    android:layout_gravity="center_vertical"

+	                    android:layout_marginLeft="10dp"

+	                    android:layout_marginTop="20dp"

+	                    android:layout_toRightOf="@+id/tv_main_counter_dev"

+	                    android:text="@string/main_devices"

+	                    android:textAppearance="?android:attr/textAppearanceLarge"

+	                    android:textColor="@color/otb_blue"

+	                    android:textSize="@dimen/menu_title_size"

+	                    android:textStyle="bold" />

+	

+	                <org.eclipse.om2m.android.dashboard.tools.CustomLineView

+	                    android:layout_width="match_parent"

+	                    android:layout_height="2dp"

+	                    android:layout_alignParentLeft="true"

+	                    android:layout_alignParentTop="true"

+	                    android:layout_marginLeft="10dp"

+	                    android:layout_marginRight="10dp"

+	                    android:layout_marginTop="60dp"

+	                    custom:dashGap="2"

+	                    custom:dashWidth="2"

+	                    custom:dashed="true"

+	                    custom:orientation="horizontal"

+	                    custom:thickness="1"

+	                    custom:color="@color/otb_blue" />

+	

+	                <GridLayout

+	                    android:id="@+id/gl_main_cse_devices"

+	                    android:layout_width="wrap_content"

+	                    android:layout_height="wrap_content"

+	                    android:layout_centerHorizontal="true"

+	                    android:layout_marginBottom="10dp"

+	                    android:layout_marginTop="80dp"

+	                    android:animateLayoutChanges="true"

+	                    android:orientation="horizontal"

+	                    android:scrollbarAlwaysDrawVerticalTrack="false" />

+	                

+	            </RelativeLayout>

+	        

+            </LinearLayout>

+            

+        </RelativeLayout>

+

+    </ScrollView>

+    

+</RelativeLayout>

diff --git a/org.eclipse.om2m.android.dashboard/res/layout/application_config_activity.xml b/org.eclipse.om2m.android.dashboard/res/layout/application_config_activity.xml
new file mode 100644
index 0000000..900128a
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/layout/application_config_activity.xml
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!--

+    Copyright (c) 2013, 2017 Orange.

+    All rights reserved. This program and the accompanying materials

+    are made available under the terms of the Eclipse Public License v1.0

+    which accompanies this distribution, and is available at

+    http://www.eclipse.org/legal/epl-v10.html

+   

+    Contributors:

+       BAREAU Cyrille <cyrille.bareau@orange.com>, 

+       BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+       BOLLE Sebastien <sebastien.bolle@orange.com>.

+ -->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

+    android:layout_width="match_parent"

+    android:layout_height="match_parent"

+    android:background="@color/background"

+    android:orientation="vertical" >

+

+    <LinearLayout

+        android:layout_width="match_parent"

+        android:layout_height="wrap_content"

+        android:background="@color/otb_red" >

+

+        <ImageView

+            android:layout_width="35dp"

+            android:layout_height="35dp"

+            android:layout_marginBottom="10dp"

+            android:layout_marginLeft="10dp"

+            android:layout_marginRight="10dp"

+            android:layout_marginTop="10dp"

+            android:src="@drawable/otb_white_gear" />

+

+        <TextView

+        	android:id="@+id/tv_application_config_title"

+            android:layout_width="wrap_content"

+            android:layout_height="wrap_content"

+            android:layout_gravity="center_vertical"

+            android:layout_marginBottom="5dp"

+            android:layout_marginTop="5dp"

+            android:text="@string/application_config_title"

+            android:textAppearance="?android:attr/textAppearanceLarge"

+            android:textColor="@color/white"

+            android:textSize="20sp"

+            android:textStyle="bold" />

+

+    </LinearLayout>

+

+    <WebView

+        android:id="@+id/wv_application_config_container"

+        android:layout_width="match_parent"

+        android:layout_height="match_parent" />

+    

+</LinearLayout>

diff --git a/org.eclipse.om2m.android.dashboard/res/layout/application_details_activity.xml b/org.eclipse.om2m.android.dashboard/res/layout/application_details_activity.xml
new file mode 100644
index 0000000..6a3d276
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/layout/application_details_activity.xml
@@ -0,0 +1,728 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!--

+    Copyright (c) 2013, 2017 Orange.

+    All rights reserved. This program and the accompanying materials

+    are made available under the terms of the Eclipse Public License v1.0

+    which accompanies this distribution, and is available at

+    http://www.eclipse.org/legal/epl-v10.html

+   

+    Contributors:

+       BAREAU Cyrille <cyrille.bareau@orange.com>, 

+       BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+       BOLLE Sebastien <sebastien.bolle@orange.com>.

+ -->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

+    xmlns:custom="http://schemas.android.com/apk/res/org.eclipse.om2m.android.dashboard"

+    android:layout_width="match_parent"

+    android:layout_height="match_parent"

+    android:background="@color/solf_background"

+    android:orientation="vertical" >

+

+    <LinearLayout

+        android:layout_width="match_parent"

+        android:layout_height="wrap_content"

+        android:background="@color/otb_red" >

+

+        <ImageView

+            android:layout_width="35dp"

+            android:layout_height="35dp"

+            android:layout_marginBottom="10dp"

+            android:layout_marginLeft="10dp"

+            android:layout_marginRight="10dp"

+            android:layout_marginTop="10dp"

+            android:src="@drawable/otb_white_in" />

+

+        <TextView

+            android:id="@+id/tv_app_details_title"

+            android:layout_width="wrap_content"

+            android:layout_height="wrap_content"

+            android:layout_gravity="center_vertical"

+            android:layout_marginBottom="5dp"

+            android:layout_marginTop="5dp"

+            android:text="@string/application_details_title"

+            android:textAppearance="?android:attr/textAppearanceLarge"

+            android:textColor="@color/white"

+            android:textSize="20sp"

+            android:textStyle="bold" />

+

+    </LinearLayout>

+

+    <ScrollView

+	    android:id="@+id/sv_app_details_scrollcontainer"

+        android:layout_width="match_parent"

+        android:layout_height="0dip"

+        android:layout_weight="1" >

+

+        <LinearLayout

+	    	android:id="@+id/ll_app_details_container"

+            android:layout_width="match_parent"

+            android:layout_height="wrap_content"

+            android:layout_marginBottom="20dp"

+            android:orientation="vertical" >

+

+            <!-- ============================================================== -->            

+            <!--  Description  -->

+            <!-- ============================================================== -->

+            

+            <LinearLayout

+                android:layout_width="match_parent"

+                android:layout_height="wrap_content"

+                android:layout_marginLeft="10dp"

+                android:layout_marginRight="10dp"

+                android:layout_marginTop="10dp"

+                android:background="@drawable/blur_shadow"

+                android:orientation="vertical" >

+

+                <TextView

+                    android:id="@+id/tv_app_details_description"

+                    android:layout_width="match_parent"

+                    android:layout_height="wrap_content"

+                    android:layout_marginBottom="10dp"

+                    android:layout_marginLeft="20dp"

+                    android:layout_marginRight="20dp"

+                    android:layout_marginTop="10dp"

+                    android:lines="3"

+                    android:orientation="vertical"

+                    android:text="@string/application_details_description"

+                    android:textColor="@color/otb_dark_gray"

+                    android:textSize="15sp" />

+

+                <LinearLayout

+                    android:layout_width="match_parent"

+                    android:layout_height="wrap_content"

+                    android:layout_marginBottom="15dp" >

+

+                    <TextView

+                        android:id="@+id/tv_app_details_runningstate"

+                        android:layout_width="wrap_content"

+                        android:layout_height="wrap_content"

+                        android:layout_gravity="center_vertical"

+                        android:layout_marginLeft="20dp"

+                        android:layout_weight="1"

+                        android:lines="2"

+                        android:text="" />

+

+                    <Button

+                        android:id="@+id/btn_app_details_startstop"

+                        android:layout_width="225dp"

+                        android:layout_height="wrap_content"

+                        android:layout_marginRight="20dp"

+                        android:layout_weight="0"

+                        android:background="@drawable/sel_button_red"

+                        android:text="@string/application_details_startstop"

+                        android:textColor="@color/otb_dark_gray"

+                        android:textSize="15sp" />

+

+                </LinearLayout>

+                

+            </LinearLayout>

+                        

+            <!-- ============================================================== -->            

+            <!--  PERMISSIONS  -->

+            <!-- ============================================================== -->

+

+            <LinearLayout

+                android:layout_width="match_parent"

+                android:layout_height="wrap_content"

+                android:layout_marginLeft="10dp"

+                android:layout_marginRight="10dp"

+                android:layout_marginTop="10dp"

+                android:background="@drawable/blur_shadow"

+                android:orientation="vertical" >

+

+                <TextView

+                    android:layout_width="match_parent"

+                    android:layout_height="wrap_content"

+                    android:layout_marginBottom="5dp"

+                    android:layout_marginLeft="20dp"

+                    android:layout_marginTop="10dp"

+                    android:text="@string/application_details_permissions"

+                    android:textAppearance="?android:attr/textAppearanceLarge"

+                    android:textColor="@color/otb_red"

+                    android:textSize="17sp" />

+		

+                <org.eclipse.om2m.android.dashboard.applications.OTBApplicationPermissionsView

+			        android:id="@+id/obj_app_details_permview"

+			        android:layout_width="match_parent"

+			        android:layout_height="wrap_content" />

+			                

+		    </LinearLayout>

+           

+               

+            <!-- ============================================================== -->            

+            <!--  CONFIGURATION  -->

+            <!-- ============================================================== -->

+            

+            <LinearLayout

+                android:layout_width="match_parent"

+                android:layout_height="wrap_content"

+                android:layout_marginLeft="10dp"

+                android:layout_marginRight="10dp"

+                android:layout_marginTop="10dp"

+                android:background="@drawable/blur_shadow"

+                android:orientation="vertical" >

+

+                <LinearLayout

+                    android:layout_width="match_parent"

+                    android:layout_height="wrap_content"

+                    android:layout_marginBottom="15dp"

+                    android:layout_marginTop="10dp"

+                    android:orientation="horizontal" >

+

+                    <TextView

+                        android:layout_width="wrap_content"

+                        android:layout_height="wrap_content"

+                        android:layout_marginBottom="10dp"

+                        android:layout_marginLeft="20dp"

+                        android:layout_weight="1"

+                        android:text="@string/application_details_config"

+                        android:textAppearance="?android:attr/textAppearanceLarge"

+                        android:textColor="@color/otb_red"

+                        android:textSize="17sp" />

+

+                    <Button

+                        android:id="@+id/btn_app_details_config"

+                        android:layout_width="225dp"

+                        android:layout_height="wrap_content"

+                        android:layout_marginLeft="35dp"

+                        android:layout_marginRight="20dp"

+                        android:layout_weight="0"

+                        android:background="@drawable/sel_button_red"

+                        android:text="@string/application_details_config_btn"

+                        android:textColor="@color/otb_dark_gray"

+                        android:textSize="15sp" />

+

+                </LinearLayout>                	              

+            

+            </LinearLayout>

+                

+            <!-- ============================================================== -->            

+            <!--  UPDATE  -->

+            <!-- ============================================================== -->

+            

+            <LinearLayout

+                android:id="@+id/ll_app_details_update"

+                android:layout_width="match_parent"

+                android:layout_height="wrap_content"

+                android:layout_marginLeft="10dp"

+                android:layout_marginRight="10dp"

+                android:layout_marginTop="10dp"

+                android:background="@drawable/blur_shadow"

+                android:orientation="vertical" >

+	                

+                <TextView

+                    android:layout_width="match_parent"

+                    android:layout_height="wrap_content"

+                    android:layout_marginBottom="10dp"

+                    android:layout_marginLeft="20dp"

+                    android:layout_marginTop="10dp"

+                    android:text="@string/application_details_update"

+                    android:textAppearance="?android:attr/textAppearanceLarge"

+                    android:textColor="@color/otb_red"

+                    android:textSize="17sp" />

+

+                <LinearLayout

+                    android:layout_width="match_parent"

+                    android:layout_height="wrap_content"

+                    android:layout_marginLeft="20dp" >

+

+                    <TextView

+                        android:layout_width="wrap_content"

+                        android:layout_height="wrap_content"

+                        android:layout_gravity="center_vertical"

+                        android:layout_weight="1"

+                        android:text="@string/application_details_update_msg1"

+                        android:textAppearance="?android:attr/textAppearanceMedium"

+                        android:textColor="@color/otb_red"

+                        android:textSize="15sp" />

+

+                    <Button

+                        android:id="@+id/btn_app_details_update"

+                        android:layout_width="225dp"

+                        android:layout_height="wrap_content"

+                        android:layout_marginLeft="35dp"

+                        android:layout_marginRight="20dp"

+                        android:layout_weight="0"

+                        android:background="@drawable/sel_button_red"

+                        android:text="@string/application_details_update_btn"

+                        android:textColor="@color/otb_dark_gray"

+                        android:textSize="15sp" />

+

+                </LinearLayout>

+

+                <TextView

+                    android:layout_width="wrap_content"

+                    android:layout_height="wrap_content"

+                    android:layout_marginBottom="15dp"

+                    android:layout_marginLeft="20dp"

+                    android:layout_marginRight="20dp"

+                    android:layout_marginTop="5dp"

+                    android:text="@string/application_details_update_msg2"

+                    android:textAppearance="?android:attr/textAppearanceMedium"

+                    android:textColorHint="@color/otb_dark_gray"

+                    android:textSize="15sp" />

+	                

+            </LinearLayout>

+             

+            <!-- ============================================================== -->            

+            <!--  INFORMATIONS  -->

+            <!-- ============================================================== -->

+            

+            <LinearLayout

+                android:id="@+id/ll_app_details_informations"

+                android:layout_width="match_parent"

+                android:layout_height="wrap_content"

+                android:layout_marginLeft="10dp"

+                android:layout_marginRight="10dp"

+                android:layout_marginTop="10dp"

+                android:background="@drawable/blur_shadow"

+                android:orientation="vertical" >

+                

+	            <LinearLayout

+	                android:layout_width="match_parent"

+	                android:layout_height="wrap_content"

+	                android:layout_marginTop="10dp" >

+

+	                <TextView

+	                    android:layout_width="wrap_content"

+	                    android:layout_height="wrap_content"

+	                    android:layout_marginBottom="10dp"

+	                    android:layout_marginLeft="20dp"

+	                    android:layout_weight="1"

+	                    android:text="@string/application_details_info"

+	                    android:textAppearance="?android:attr/textAppearanceLarge"

+	                    android:textColor="@color/otb_red"

+	                    android:textSize="17sp" />

+	

+	                <ImageView

+	                    android:id="@+id/iv_app_details_informations_expandicon"

+	                    android:layout_width="20dp"

+	                    android:layout_height="20dp"

+	                    android:layout_marginRight="20dp"

+	                    android:src="@drawable/otb_picto_open_red" />

+	

+				 </LinearLayout>

+				 

+		         <LinearLayout

+		             android:id="@+id/ll_app_details_informations_content"

+		             android:layout_width="wrap_content"

+		             android:layout_height="wrap_content"

+		             android:layout_marginBottom="15dp"

+		             android:orientation="vertical"

+		             android:visibility="gone" >

+		

+		             <LinearLayout

+		                 android:layout_width="match_parent"

+		                 android:layout_height="wrap_content" >

+		

+		                 <TextView

+		                     android:layout_width="170dp"

+		                     android:layout_height="wrap_content"

+		                     android:layout_marginLeft="20dp"

+		                     android:text="@string/application_details_version"

+		                     android:textAppearance="?android:attr/textAppearanceMedium"

+		                     android:textColor="@color/otb_dark_gray"

+		                     android:textSize="15sp" />

+		

+		                 <TextView

+		                     android:id="@+id/tv_app_details_version"

+		                     android:layout_width="match_parent"

+		                     android:layout_height="wrap_content"

+		                     android:textAppearance="?android:attr/textAppearanceMedium"

+		                     android:textColor="@color/otb_dark_gray"

+		                     android:textSize="15sp" />

+		                 

+		             </LinearLayout>

+		

+		             <LinearLayout

+		                 android:layout_width="match_parent"

+		                 android:layout_height="wrap_content" >

+		

+		                 <TextView

+		                     android:layout_width="170dp"

+		                     android:layout_height="wrap_content"

+		                     android:layout_marginLeft="20dp"

+		                     android:text="@string/application_details_state"

+		                     android:textAppearance="?android:attr/textAppearanceMedium"

+		                     android:textColor="@color/otb_dark_gray"

+		                     android:textSize="15sp" />

+		

+		                 <TextView

+		                     android:id="@+id/tv_app_details_state"

+		                     android:layout_width="match_parent"

+		                     android:layout_height="wrap_content"

+		                     android:textAppearance="?android:attr/textAppearanceMedium"

+		                     android:textColor="@color/otb_dark_gray"

+		                     android:textSize="15sp" />

+		                 

+		             </LinearLayout>

+		

+		             <LinearLayout

+		                 android:layout_width="match_parent"

+		                 android:layout_height="wrap_content" >

+		

+		                 <TextView

+		                     android:layout_width="170dp"

+		                     android:layout_height="wrap_content"

+		                     android:layout_marginLeft="20dp"

+		                     android:text="@string/application_details_installdate"

+		                     android:textAppearance="?android:attr/textAppearanceMedium"

+		                     android:textColor="@color/otb_dark_gray"

+		                     android:textSize="15sp" />

+		

+		                 <TextView

+		                     android:id="@+id/tv_app_details_installDate"

+		                     android:layout_width="match_parent"

+		                     android:layout_height="wrap_content"

+		                     android:textAppearance="?android:attr/textAppearanceMedium"

+		                     android:textColor="@color/otb_dark_gray"

+		                     android:textSize="15sp" />

+		                 

+		             </LinearLayout>

+		

+		             <LinearLayout

+		                 android:layout_width="match_parent"

+		                 android:layout_height="wrap_content" >

+		

+		                 <TextView

+		                     android:layout_width="170dp"

+		                     android:layout_height="wrap_content"

+		                     android:layout_marginLeft="20dp"

+		                     android:text="@string/application_details_servicename"

+		                     android:textAppearance="?android:attr/textAppearanceMedium"

+		                     android:textColor="@color/otb_dark_gray"

+		                     android:textSize="15sp" />

+		

+		                 <TextView

+		                     android:id="@+id/tv_app_details_servicename"

+		                     android:layout_width="match_parent"

+		                     android:layout_height="wrap_content"

+		                     android:textAppearance="?android:attr/textAppearanceMedium"

+		                     android:textColor="@color/otb_dark_gray"

+		                     android:textSize="15sp" />

+		                 

+		             </LinearLayout>

+		

+		             <LinearLayout

+		                 android:layout_width="match_parent"

+		                 android:layout_height="wrap_content" >

+		

+		                 <TextView

+		                     android:layout_width="170dp"

+		                     android:layout_height="wrap_content"

+		                     android:layout_marginLeft="20dp"

+		                     android:text="@string/application_details_serviceversion"

+		                     android:textAppearance="?android:attr/textAppearanceMedium"

+		                     android:textColor="@color/otb_dark_gray"

+		                     android:textSize="15sp" />

+		

+		                 <TextView

+		                     android:id="@+id/tv_app_details_serviceversion"

+		                     android:layout_width="match_parent"

+		                     android:layout_height="wrap_content"

+		                     android:textAppearance="?android:attr/textAppearanceMedium"

+		                     android:textColor="@color/otb_dark_gray"

+		                     android:textSize="15sp" />

+		                 

+		             </LinearLayout>                

+	

+	            </LinearLayout>

+	            

+            </LinearLayout>

+

+            <!-- ============================================================== -->            

+            <!--  RESOURCES  -->

+            <!-- ============================================================== -->

+            

+            <LinearLayout

+                android:id="@+id/ll_app_details_resources"

+                android:layout_width="match_parent"

+                android:layout_height="wrap_content"

+                android:layout_marginLeft="10dp"

+                android:layout_marginRight="10dp"

+                android:layout_marginTop="10dp"

+                android:background="@drawable/blur_shadow"

+                android:orientation="vertical" >

+

+                <LinearLayout

+                    android:layout_width="match_parent"

+                    android:layout_height="wrap_content"

+                    android:layout_marginTop="10dp" >

+

+                    <TextView

+                        android:layout_width="wrap_content"

+                        android:layout_height="wrap_content"

+                        android:layout_marginBottom="10dp"

+                        android:layout_marginLeft="20dp"

+                        android:layout_weight="1"

+                        android:text="@string/application_details_resources"

+                        android:textAppearance="?android:attr/textAppearanceLarge"

+                        android:textColor="@color/otb_red"

+                        android:textSize="17sp" />

+

+                    <ImageView

+                        android:id="@+id/iv_app_details_resources_expandicon"

+                        android:layout_width="20dp"

+                        android:layout_height="20dp"

+                        android:layout_marginRight="20dp"

+                        android:src="@drawable/otb_picto_open_red" />

+

+                </LinearLayout>

+

+                <LinearLayout

+                    android:id="@+id/ll_app_details_resources_content"

+                    android:layout_width="match_parent"

+                    android:layout_height="wrap_content"

+                    android:orientation="vertical"

+                    android:visibility="gone" >

+

+                    <LinearLayout

+                        android:layout_width="wrap_content"

+                        android:layout_height="wrap_content" >

+

+                        <TextView

+                            android:layout_width="220dp"

+                            android:layout_height="wrap_content"

+                            android:layout_marginLeft="20dp"

+                            android:text="@string/application_details_ram"

+                            android:textAppearance="?android:attr/textAppearanceMedium"

+                            android:textColor="@color/otb_dark_gray"

+                            android:textSize="15sp" />

+

+                        <TextView

+                            android:id="@+id/tv_app_details_ram"

+                            android:layout_width="wrap_content"

+                            android:layout_height="wrap_content"

+                            android:layout_gravity="right"

+                            android:layout_marginLeft="20dp"

+                            android:text="-- bytes"

+                            android:textAppearance="?android:attr/textAppearanceMedium"

+                            android:textColor="@color/otb_dark_gray"

+                            android:textSize="15sp" />

+                        

+                    </LinearLayout>

+

+                    <LinearLayout

+                        android:layout_width="wrap_content"

+                        android:layout_height="wrap_content" >

+

+                        <TextView

+                            android:layout_width="220dp"

+                            android:layout_height="wrap_content"

+                            android:layout_marginLeft="20dp"

+                            android:text="@string/application_details_cpu"

+                            android:textAppearance="?android:attr/textAppearanceMedium"

+                            android:textColor="@color/otb_dark_gray"

+                            android:textSize="15sp" />

+

+                        <TextView

+                            android:id="@+id/tv_app_details_cpu"

+                            android:layout_width="wrap_content"

+                            android:layout_height="wrap_content"

+                            android:layout_gravity="right"

+                            android:layout_marginLeft="20dp"

+                            android:text="--"

+                            android:textAppearance="?android:attr/textAppearanceMedium"

+                            android:textColor="@color/otb_dark_gray"

+                            android:textSize="15sp" />

+                        

+                    </LinearLayout>

+

+                    <LinearLayout

+                        android:layout_width="wrap_content"

+                        android:layout_height="wrap_content" >

+

+                        <TextView

+                            android:layout_width="220dp"

+                            android:layout_height="wrap_content"

+                            android:layout_marginLeft="20dp"

+                            android:text="@string/application_details_sockets"

+                            android:textAppearance="?android:attr/textAppearanceMedium"

+                            android:textColor="@color/otb_dark_gray"

+                            android:textSize="15sp" />

+

+                        <TextView

+                            android:id="@+id/tv_app_details_sockets"

+                            android:layout_width="wrap_content"

+                            android:layout_height="wrap_content"

+                            android:layout_gravity="right"

+                            android:layout_marginLeft="20dp"

+                            android:text="--"

+                            android:textAppearance="?android:attr/textAppearanceMedium"

+                            android:textColor="@color/otb_dark_gray"

+                            android:textSize="15sp" />

+                        

+                    </LinearLayout>

+

+                    <LinearLayout

+                        android:layout_width="wrap_content"

+                        android:layout_height="wrap_content" >

+

+                        <TextView

+                            android:layout_width="220dp"

+                            android:layout_height="wrap_content"

+                            android:layout_marginLeft="20dp"

+                            android:text="@string/application_details_threads"

+                            android:textAppearance="?android:attr/textAppearanceMedium"

+                            android:textColor="@color/otb_dark_gray"

+                            android:textSize="15sp" />

+

+                        <TextView

+                            android:id="@+id/tv_app_details_threads"

+                            android:layout_width="wrap_content"

+                            android:layout_height="wrap_content"

+                            android:layout_gravity="right"

+                            android:layout_marginLeft="20dp"

+                            android:text="--"

+                            android:textAppearance="?android:attr/textAppearanceMedium"

+                            android:textColor="@color/otb_dark_gray"

+                            android:textSize="15sp" />

+                        

+                    </LinearLayout>

+

+                    <LinearLayout

+                        android:layout_width="wrap_content"

+                        android:layout_height="wrap_content" >

+

+                        <TextView

+                            android:layout_width="220dp"

+                            android:layout_height="wrap_content"

+                            android:layout_marginLeft="20dp"

+                            android:text="@string/application_details_flash"

+                            android:textAppearance="?android:attr/textAppearanceMedium"

+                            android:textColor="@color/otb_dark_gray"

+                            android:textSize="15sp" />

+

+                        <TextView

+                            android:id="@+id/tv_app_details_flash"

+                            android:layout_width="wrap_content"

+                            android:layout_height="wrap_content"

+                            android:layout_gravity="right"

+                            android:layout_marginLeft="20dp"

+                            android:text="-- bytes"

+                            android:textAppearance="?android:attr/textAppearanceMedium"

+                            android:textColor="@color/otb_dark_gray"

+                            android:textSize="15sp" />

+                        

+                    </LinearLayout>

+

+                    <LinearLayout

+                        android:layout_width="wrap_content"

+                        android:layout_height="wrap_content"

+                        android:layout_marginBottom="15dp" >

+

+                        <TextView

+                            android:layout_width="220dp"

+                            android:layout_height="wrap_content"

+                            android:layout_marginLeft="20dp"

+                            android:text="@string/application_details_bandwidth"

+                            android:textAppearance="?android:attr/textAppearanceMedium"

+                            android:textColor="@color/otb_dark_gray"

+                            android:textSize="15sp" />

+

+                        <TextView

+                            android:id="@+id/tv_app_details_bandwidth"

+                            android:layout_width="wrap_content"

+                            android:layout_height="wrap_content"

+                            android:layout_gravity="right"

+                            android:layout_marginLeft="20dp"

+                            android:text="-- bytes"

+                            android:textAppearance="?android:attr/textAppearanceMedium"

+                            android:textColor="@color/otb_dark_gray"

+                            android:textSize="15sp" />

+                        

+                    </LinearLayout>

+

+                </LinearLayout>

+	                

+            </LinearLayout>

+            

+            <!-- ============================================================== -->            

+            <!--  COMPOSITION  -->

+            <!-- ============================================================== -->

+

+            <LinearLayout

+                android:id="@+id/ll_app_details_composition"

+                android:layout_width="match_parent"

+                android:layout_height="wrap_content"

+                android:layout_marginBottom="10dp"

+                android:layout_marginLeft="10dp"

+                android:layout_marginRight="10dp"

+                android:layout_marginTop="10dp"

+                android:background="@drawable/blur_shadow"

+                android:orientation="vertical" >

+

+                <LinearLayout

+                    android:layout_width="match_parent"

+                    android:layout_height="wrap_content"

+                    android:layout_marginBottom="10dp"

+                    android:layout_marginTop="10dp" >

+

+                    <TextView

+                        android:layout_width="wrap_content"

+                        android:layout_height="wrap_content"

+                        android:layout_marginLeft="20dp"

+                        android:layout_weight="1"

+                        android:text="@string/application_details_compo"

+                        android:textAppearance="?android:attr/textAppearanceLarge"

+                        android:textColor="@color/otb_red"

+                        android:textSize="17sp" />

+

+                    <ImageView

+                        android:id="@+id/iv_app_details_composition_expandicon"

+                        android:layout_width="20dp"

+                        android:layout_height="20dp"

+                        android:layout_marginRight="20dp"

+                        android:src="@drawable/otb_picto_open_red" />

+

+                </LinearLayout>

+

+                <LinearLayout

+                    android:id="@+id/ll_app_details_composition_content"

+                    android:layout_width="match_parent"

+                    android:layout_height="wrap_content"

+                    android:layout_marginBottom="15dp"

+                    android:orientation="vertical"

+                    android:visibility="gone" >

+

+                    <org.eclipse.om2m.android.dashboard.tools.CustomLineView

+                        android:layout_width="match_parent"

+                        android:layout_height="2dp"

+                        android:layout_marginLeft="10dp"

+                        android:layout_marginRight="10dp"

+                        android:visibility="gone"

+                        custom:dashGap="2"

+                        custom:dashWidth="2"

+                        custom:dashed="true"

+                        custom:orientation="horizontal"

+                        custom:thickness="1"

+                        custom:color="@color/gray" />

+                    

+                </LinearLayout>

+

+            </LinearLayout>

+            

+        </LinearLayout>

+

+    </ScrollView>

+        

+    <RelativeLayout

+        android:layout_width="fill_parent"

+        android:layout_height="40dp"

+        android:layout_gravity="bottom"

+        android:background="@color/otb_red"

+        android:orientation="horizontal" >

+

+        <Button

+            android:id="@+id/btn_app_details_uninstall"

+            android:layout_width="30dp"

+            android:layout_height="30dp"

+            android:layout_alignParentLeft="true"

+            android:layout_centerVertical="true"

+            android:layout_marginLeft="20dp"

+            android:background="@drawable/otb_picto_delete_white" />                       

+        

+    </RelativeLayout>

+    

+</LinearLayout>

diff --git a/org.eclipse.om2m.android.dashboard/res/layout/config_activity.xml b/org.eclipse.om2m.android.dashboard/res/layout/config_activity.xml
new file mode 100644
index 0000000..5f9f86d
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/layout/config_activity.xml
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!--

+    Copyright (c) 2013, 2017 Orange.

+    All rights reserved. This program and the accompanying materials

+    are made available under the terms of the Eclipse Public License v1.0

+    which accompanies this distribution, and is available at

+    http://www.eclipse.org/legal/epl-v10.html

+   

+    Contributors:

+       BAREAU Cyrille <cyrille.bareau@orange.com>, 

+       BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+       BOLLE Sebastien <sebastien.bolle@orange.com>.

+ -->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

+    xmlns:custom="http://schemas.android.com/apk/res/com.orange.openthebox.dashboard"

+    android:layout_width="match_parent"

+    android:layout_height="match_parent"

+    android:background="@color/solf_background"

+    android:orientation="vertical" >

+

+    <LinearLayout

+        android:layout_width="match_parent"

+        android:layout_height="wrap_content"

+        android:background="@color/otb_orange" >

+

+        <ImageView

+            android:layout_width="35dp"

+            android:layout_height="35dp"

+            android:layout_marginBottom="10dp"

+            android:layout_marginLeft="10dp"

+            android:layout_marginRight="10dp"

+            android:layout_marginTop="10dp"

+            android:src="@drawable/otb_white_gear" />

+

+        <TextView

+            android:layout_width="wrap_content"

+            android:layout_height="wrap_content"

+            android:layout_gravity="center_vertical"

+            android:layout_marginBottom="5dp"

+            android:layout_marginTop="5dp"

+            android:text="@string/config_title"

+            android:textAppearance="?android:attr/textAppearanceLarge"

+            android:textColor="@color/white"

+            android:textSize="20sp"

+            android:textStyle="bold" />

+

+    </LinearLayout>

+

+    <LinearLayout

+        android:layout_width="match_parent"

+        android:layout_height="wrap_content"

+        android:background="@color/otb_orange"

+        android:orientation="horizontal"

+        android:visibility="gone" >

+

+        <TextView

+            android:id="@+id/textView2"

+            android:layout_width="wrap_content"

+            android:layout_height="wrap_content"

+            android:layout_marginBottom="5dp"

+            android:layout_marginLeft="50dp"

+            android:layout_weight="1"

+            android:text="@string/config_application"

+            android:textAppearance="?android:attr/textAppearanceMedium"

+            android:textColor="@color/white" />

+

+        <TextView

+            android:id="@+id/textView1"

+            android:layout_width="wrap_content"

+            android:layout_height="wrap_content"

+            android:layout_marginBottom="5dp"

+            android:layout_marginRight="70dp"

+            android:text="@string/config_devices"

+            android:textAppearance="?android:attr/textAppearanceMedium"

+            android:textColor="@color/white" />

+

+    </LinearLayout>

+

+    <ScrollView

+        android:layout_width="match_parent"

+        android:layout_height="wrap_content" >

+

+        <LinearLayout

+            android:layout_width="match_parent"

+            android:layout_height="wrap_content"

+            android:orientation="vertical" >

+        

+	        <LinearLayout

+	            android:id="@+id/ll_config_container"

+	            android:layout_width="match_parent"

+	            android:layout_height="wrap_content"

+	            android:orientation="vertical"

+	            android:paddingBottom="20dp"

+        		android:animateLayoutChanges="true" >

+	

+	        </LinearLayout>

+        </LinearLayout>

+    </ScrollView>

+

+</LinearLayout>
\ No newline at end of file
diff --git a/org.eclipse.om2m.android.dashboard/res/layout/config_view.xml b/org.eclipse.om2m.android.dashboard/res/layout/config_view.xml
new file mode 100644
index 0000000..8882076
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/layout/config_view.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!--

+    Copyright (c) 2013, 2017 Orange.

+    All rights reserved. This program and the accompanying materials

+    are made available under the terms of the Eclipse Public License v1.0

+    which accompanies this distribution, and is available at

+    http://www.eclipse.org/legal/epl-v10.html

+   

+    Contributors:

+       BAREAU Cyrille <cyrille.bareau@orange.com>, 

+       BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+       BOLLE Sebastien <sebastien.bolle@orange.com>.

+ -->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

+    android:layout_width="match_parent"

+    android:layout_height="wrap_content"

+    android:layout_marginLeft="10dp"

+    android:layout_marginRight="10dp"

+    android:layout_marginTop="10dp"

+    android:background="@drawable/blur_shadow"

+    android:orientation="vertical" >

+

+    <org.eclipse.om2m.android.dashboard.applications.OTBApplicationPermissionsView

+        android:id="@+id/obj_config_permview"

+        android:layout_width="match_parent"

+        android:layout_height="wrap_content"

+        android:layout_marginLeft="5dp"

+        android:layout_marginRight="5dp" />

+

+</LinearLayout>
\ No newline at end of file
diff --git a/org.eclipse.om2m.android.dashboard/res/layout/device_details_activity.xml b/org.eclipse.om2m.android.dashboard/res/layout/device_details_activity.xml
new file mode 100644
index 0000000..3218399
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/layout/device_details_activity.xml
@@ -0,0 +1,293 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!--

+    Copyright (c) 2013, 2017 Orange.

+    All rights reserved. This program and the accompanying materials

+    are made available under the terms of the Eclipse Public License v1.0

+    which accompanies this distribution, and is available at

+    http://www.eclipse.org/legal/epl-v10.html

+   

+    Contributors:

+       BAREAU Cyrille <cyrille.bareau@orange.com>, 

+       BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+       BOLLE Sebastien <sebastien.bolle@orange.com>.

+ -->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

+    xmlns:custom="http://schemas.android.com/apk/res/com.orange.openthebox.dashboard"

+    xmlns:app="http://schemas.android.com/apk/res/com.orange.openthebox.dashboard"

+    android:layout_width="match_parent"

+    android:layout_height="match_parent"

+    android:background="@color/solf_background"

+    android:orientation="vertical" >

+

+    <LinearLayout

+        android:layout_width="match_parent"

+        android:layout_height="wrap_content"

+        android:background="@color/otb_blue" >

+

+        <ImageView

+            android:layout_width="35dp"

+            android:layout_height="35dp"

+            android:layout_marginBottom="10dp"

+            android:layout_marginLeft="10dp"

+            android:layout_marginRight="10dp"

+            android:layout_marginTop="10dp"

+            android:src="@drawable/otb_white_posterous" />

+

+        <TextView

+            android:id="@+id/tv_device_details_title"

+            android:layout_width="wrap_content"

+            android:layout_height="wrap_content"

+            android:layout_gravity="center_vertical"

+            android:layout_marginBottom="5dp"

+            android:layout_marginTop="5dp"

+            android:text="@string/devices_title"

+            android:textAppearance="?android:attr/textAppearanceLarge"

+            android:textColor="@color/white"

+            android:textSize="20sp"

+            android:textStyle="bold" />

+        

+    </LinearLayout>

+

+    <ScrollView

+        android:layout_width="match_parent"

+        android:layout_height="0dip"

+        android:layout_weight="1" >

+

+        <LinearLayout

+            android:layout_width="match_parent"

+            android:layout_height="wrap_content"

+            android:orientation="vertical" >

+

+            <LinearLayout

+                android:layout_width="match_parent"

+                android:layout_height="wrap_content"

+                android:layout_marginLeft="10dp"

+                android:layout_marginRight="10dp"

+                android:layout_marginTop="10dp"

+                android:background="@drawable/blur_shadow"

+                android:orientation="vertical" >

+

+                <TextView

+                    android:layout_width="match_parent"

+                    android:layout_height="wrap_content"

+                    android:layout_marginBottom="20dp"

+                    android:layout_marginLeft="20dp"

+                    android:layout_marginTop="10dp"

+                    android:text="@string/device_details_info"

+                    android:textAppearance="?android:attr/textAppearanceLarge"

+                    android:textColor="@color/otb_blue"

+                    android:textSize="17sp" />

+

+                <LinearLayout

+                    android:layout_width="match_parent"

+                    android:layout_height="wrap_content" >

+

+                    <TextView

+                        android:layout_width="150dp"

+                        android:layout_height="wrap_content"

+                        android:layout_marginLeft="20dp"

+                        android:text="@string/device_details_serialNumber"

+                        android:textAppearance="?android:attr/textAppearanceMedium"

+                        android:textColor="@color/otb_dark_gray"

+                        android:textSize="15sp" />

+

+                    <TextView

+                        android:id="@+id/tv_device_details_serialNumber"

+                        android:layout_width="match_parent"

+                        android:layout_height="wrap_content"

+                        android:layout_marginRight="10dp"

+                        android:textAppearance="?android:attr/textAppearanceMedium"

+                        android:textColor="@color/otb_dark_gray"

+                        android:textSize="15sp" />

+                </LinearLayout>

+

+                <LinearLayout

+                    android:layout_width="match_parent"

+                    android:layout_height="wrap_content" >

+

+                    <TextView

+                        android:layout_width="150dp"

+                        android:layout_height="wrap_content"

+                        android:layout_marginLeft="20dp"

+                        android:text="@string/device_details_deviceName"

+                        android:textAppearance="?android:attr/textAppearanceMedium"

+                        android:textColor="@color/otb_dark_gray"

+                        android:textSize="15sp" />

+

+                    <TextView

+                        android:id="@+id/tv_device_details_deviceName"

+                        android:layout_width="match_parent"

+                        android:layout_height="wrap_content"

+                        android:layout_marginRight="10dp"

+                        android:textAppearance="?android:attr/textAppearanceMedium"

+                        android:textColor="@color/otb_dark_gray"

+                        android:textSize="15sp" />

+                </LinearLayout>

+

+                <LinearLayout

+                    android:layout_width="match_parent"

+                    android:layout_height="wrap_content" >

+

+                    <TextView

+                        android:layout_width="150dp"

+                        android:layout_height="wrap_content"

+                        android:layout_marginLeft="20dp"

+                        android:text="@string/device_details_cnd"

+                        android:textAppearance="?android:attr/textAppearanceMedium"

+                        android:textColor="@color/otb_dark_gray"

+                        android:textSize="15sp" />

+

+                    <TextView

+                        android:id="@+id/tv_device_details_cnd"

+                        android:layout_width="match_parent"

+                        android:layout_height="wrap_content"

+                        android:layout_marginRight="10dp"

+                        android:textAppearance="?android:attr/textAppearanceMedium"

+                        android:textColor="@color/otb_dark_gray"

+                        android:textSize="15sp" />

+                </LinearLayout>

+

+                <LinearLayout

+                    android:layout_width="match_parent"

+                    android:layout_height="wrap_content" >

+

+                    <TextView

+                        android:layout_width="150dp"

+                        android:layout_height="wrap_content"

+                        android:layout_marginLeft="20dp"

+                        android:text="@string/device_details_manufacturer"

+                        android:textAppearance="?android:attr/textAppearanceMedium"

+                        android:textColor="@color/otb_dark_gray"

+                        android:textSize="15sp" />

+

+                    <TextView

+                        android:id="@+id/tv_device_details_manufacturer"

+                        android:layout_width="match_parent"

+                        android:layout_height="wrap_content"

+                        android:layout_marginRight="10dp"

+                        android:textAppearance="?android:attr/textAppearanceMedium"

+                        android:textColor="@color/otb_dark_gray"

+                        android:textSize="15sp" />

+                    

+                </LinearLayout>

+

+                <LinearLayout

+                    android:id="@+id/ll_device_details_model"

+                    android:layout_width="match_parent"

+                    android:layout_height="wrap_content" >

+

+                    <TextView

+                        android:layout_width="150dp"

+                        android:layout_height="wrap_content"

+                        android:layout_marginLeft="20dp"

+                        android:text="@string/device_details_model"

+                        android:textAppearance="?android:attr/textAppearanceMedium"

+                        android:textColor="@color/otb_dark_gray"

+                        android:textSize="15sp" />

+

+                    <TextView

+                        android:id="@+id/tv_device_details_model"

+                        android:layout_width="match_parent"

+                        android:layout_height="wrap_content"

+                        android:layout_marginRight="10dp"

+                        android:textAppearance="?android:attr/textAppearanceMedium"

+                        android:textColor="@color/otb_dark_gray"

+                        android:textSize="15sp" />

+                    

+                </LinearLayout>

+                

+                <LinearLayout

+                    android:layout_width="match_parent"

+                    android:layout_height="wrap_content" >

+

+                    <TextView

+                        android:layout_width="150dp"

+                        android:layout_height="wrap_content"

+                        android:layout_marginLeft="20dp"

+                        android:text="@string/device_details_protocol"

+                        android:textAppearance="?android:attr/textAppearanceMedium"

+                        android:textColor="@color/otb_dark_gray"

+                        android:textSize="15sp" />

+

+                    <TextView

+                        android:id="@+id/tv_device_details_protocol"

+                        android:layout_width="match_parent"

+                        android:layout_height="wrap_content"

+                        android:layout_marginRight="10dp"

+                        android:textAppearance="?android:attr/textAppearanceMedium"

+                        android:textColor="@color/otb_dark_gray"

+                        android:textSize="15sp" />

+                    

+                </LinearLayout>

+                

+                <LinearLayout

+                    android:id="@+id/ll_device_details_location"

+                    android:layout_width="match_parent"

+                    android:layout_height="wrap_content" >

+

+                    <TextView

+                        android:layout_width="150dp"

+                        android:layout_height="wrap_content"

+                        android:layout_marginLeft="20dp"

+                        android:text="@string/device_details_location"

+                        android:textAppearance="?android:attr/textAppearanceMedium"

+                        android:textColor="@color/otb_dark_gray"

+                        android:textSize="15sp" />

+

+                    <TextView

+                        android:id="@+id/tv_device_details_location"

+                        android:layout_width="match_parent"

+                        android:layout_height="wrap_content"

+                        android:layout_marginRight="10dp"

+                        android:textAppearance="?android:attr/textAppearanceMedium"

+                        android:textColor="@color/otb_dark_gray"

+                        android:textSize="15sp" />

+                    

+                </LinearLayout>

+                

+                <LinearLayout

+                    android:layout_width="match_parent"

+                    android:layout_height="wrap_content"

+                    android:layout_marginBottom="15dp" >

+

+                    <TextView

+                        android:layout_width="150dp"

+                        android:layout_height="wrap_content"

+                        android:layout_marginLeft="20dp"

+                        android:text="@string/device_details_modules"

+                        android:textAppearance="?android:attr/textAppearanceMedium"

+                        android:textColor="@color/otb_dark_gray"

+                        android:textSize="15sp" />

+

+                    <LinearLayout

+                        android:id="@+id/ll_device_details_modules"

+                        android:orientation="vertical"

+                        android:layout_width="wrap_content"

+                        android:layout_height="wrap_content"

+                        android:layout_marginRight="10dp"

+                        android:textAppearance="?android:attr/textAppearanceMedium"

+                        android:textColor="@color/otb_dark_gray"

+                        android:ems="10"

+                        android:inputType="text"

+                        android:textSize="15sp" >

+

+                    </LinearLayout>

+

+                </LinearLayout>

+                

+            </LinearLayout>

+

+        </LinearLayout>

+        

+    </ScrollView>

+

+    <RelativeLayout

+        android:layout_width="fill_parent"

+        android:layout_height="40dp"

+        android:background="@color/otb_blue"

+        android:orientation="horizontal" >

+

+    </RelativeLayout>

+

+</LinearLayout>

diff --git a/org.eclipse.om2m.android.dashboard/res/layout/device_simple_view.xml b/org.eclipse.om2m.android.dashboard/res/layout/device_simple_view.xml
new file mode 100644
index 0000000..17bedab
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/layout/device_simple_view.xml
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!--

+    Copyright (c) 2013, 2017 Orange.

+    All rights reserved. This program and the accompanying materials

+    are made available under the terms of the Eclipse Public License v1.0

+    which accompanies this distribution, and is available at

+    http://www.eclipse.org/legal/epl-v10.html

+   

+    Contributors:

+       BAREAU Cyrille <cyrille.bareau@orange.com>, 

+       BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+       BOLLE Sebastien <sebastien.bolle@orange.com>.

+ -->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

+    xmlns:custom="http://schemas.android.com/apk/res/org.eclipse.om2m.android.dashboard"

+    android:layout_width="match_parent"

+    android:layout_height="match_parent"

+    android:orientation="vertical" >

+

+    <org.eclipse.om2m.android.dashboard.tools.CustomLineView

+        custom:dashed="true"

+        android:layout_width="match_parent"

+        android:layout_height="2dp"

+        custom:dashGap="2"

+        custom:dashWidth="2"

+        custom:thickness="1"

+        custom:orientation="horizontal"

+        custom:color="@color/otb_blue" />

+

+    <LinearLayout

+        android:id="@+id/ll_device_simple"

+        android:layout_width="match_parent"

+        android:layout_height="wrap_content"

+        android:layout_marginBottom="5dp"

+        android:layout_marginTop="5dp" >

+

+        <LinearLayout

+            android:layout_width="wrap_content"

+            android:layout_height="wrap_content"

+            android:layout_gravity="center_vertical"

+            android:layout_weight="1"

+            android:orientation="vertical" >

+

+            <TextView

+                android:id="@+id/tv_device_simple_name"

+                android:layout_width="wrap_content"

+                android:layout_height="wrap_content"

+                android:layout_marginLeft="20dp"

+                android:text="@string/device_name"

+                android:textAppearance="?android:attr/textAppearanceLarge"

+                android:textColor="@color/otb_dark_gray"

+                android:textSize="15sp"

+                android:textStyle="bold" />

+

+            <TextView

+                android:id="@+id/tv_device_simple_decription"

+                android:layout_width="wrap_content"

+                android:layout_height="wrap_content"

+                android:layout_marginLeft="20dp"

+                android:layout_marginRight="20dp"

+                android:text="@string/device_description"

+                android:textAppearance="?android:attr/textAppearanceSmall"

+                android:textColor="@color/otb_dark_gray"

+                android:textSize="15sp" />

+

+        </LinearLayout>

+

+        <ImageView

+            android:id="@+id/iv_main_app_entry_icon"

+            android:layout_width="25dp"

+            android:layout_height="25dp"

+            android:layout_marginBottom="5dp"

+            android:layout_marginRight="20dp"

+            android:layout_marginTop="5dp"

+            android:src="@drawable/otb_picto_zoom_blue" />

+

+    </LinearLayout>

+

+</LinearLayout>
\ No newline at end of file
diff --git a/org.eclipse.om2m.android.dashboard/res/layout/device_type_container_view.xml b/org.eclipse.om2m.android.dashboard/res/layout/device_type_container_view.xml
new file mode 100644
index 0000000..6ac0a89
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/layout/device_type_container_view.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!--

+    Copyright (c) 2013, 2017 Orange.

+    All rights reserved. This program and the accompanying materials

+    are made available under the terms of the Eclipse Public License v1.0

+    which accompanies this distribution, and is available at

+    http://www.eclipse.org/legal/epl-v10.html

+   

+    Contributors:

+       BAREAU Cyrille <cyrille.bareau@orange.com>, 

+       BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+       BOLLE Sebastien <sebastien.bolle@orange.com>.

+ -->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

+    xmlns:custom="http://schemas.android.com/apk/res/com.orange.openthebox.dashboard"

+    android:layout_width="match_parent"

+    android:layout_height="match_parent"

+    android:orientation="vertical" >

+

+    <LinearLayout

+        android:layout_width="match_parent"

+        android:layout_height="wrap_content"

+	    android:layout_marginLeft="10dp"

+	    android:layout_marginRight="10dp"

+	    android:layout_marginTop="10dp"

+	    android:background="@drawable/blur_shadow"

+        android:orientation="vertical" >

+

+        <LinearLayout

+            android:layout_width="match_parent"

+            android:layout_height="wrap_content"

+            android:layout_marginBottom="5dp" >

+

+            <RelativeLayout

+                android:layout_width="wrap_content"

+                android:layout_height="wrap_content"

+                android:layout_marginBottom="3dp"

+                android:layout_marginLeft="10dp"

+                android:layout_marginTop="3dp"

+                android:layout_weight="1" >

+		

+		        <ImageView

+		            android:id="@+id/imageView1"

+		            android:layout_width="wrap_content"

+		            android:layout_height="wrap_content"

+		            android:src="@drawable/otb_picto_devcat_backgound" />

+		

+		        <TextView

+		            android:id="@+id/tv_devType_count"

+		            android:layout_width="30dp"

+		            android:layout_height="wrap_content"

+		            android:layout_marginLeft="5dp"

+		            android:layout_marginTop="3dp"

+		            android:gravity="center_horizontal"

+		            android:text="1"

+		            android:textColor="@color/gray"

+		            android:textSize="23sp" />

+		

+		        <ImageView

+		            android:id="@+id/iv_devType_icon"

+		            android:layout_width="wrap_content"

+		            android:layout_height="72dp"

+		            android:layout_marginLeft="35dp"

+		            android:layout_marginTop="15dp"

+		            android:src="@drawable/otb_picto_dev_cat_zwave" />

+		

+		    </RelativeLayout>

+		    

+	        <TextView

+	            android:id="@+id/tv_devType_locale"

+	            android:layout_width="200dp"

+	            android:layout_height="wrap_content"

+	            android:layout_marginLeft="5dp"

+	            android:layout_marginTop="3dp"

+                android:layout_gravity="left"

+	            android:textColor="@color/gray"

+	            android:textSize="23sp" />

+	        

+	        <ImageView

+                android:id="@+id/iv_devType_moreLess"

+                android:layout_width="20dp"

+                android:layout_height="20dp"

+                android:layout_gravity="right|center_vertical"

+                android:layout_marginRight="20dp"

+                android:src="@drawable/otb_picto_close_blue" />

+

+        </LinearLayout>

+

+        <LinearLayout

+            android:id="@+id/ll_devType_container"

+            android:layout_width="match_parent"

+            android:layout_height="wrap_content"

+            android:layout_marginBottom="10dp"

+            android:orientation="vertical"

+        	android:animateLayoutChanges="true" />

+

+    </LinearLayout>

+

+</LinearLayout>

diff --git a/org.eclipse.om2m.android.dashboard/res/layout/devices_activity.xml b/org.eclipse.om2m.android.dashboard/res/layout/devices_activity.xml
new file mode 100644
index 0000000..b5452fc
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/layout/devices_activity.xml
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!--

+    Copyright (c) 2013, 2017 Orange.

+    All rights reserved. This program and the accompanying materials

+    are made available under the terms of the Eclipse Public License v1.0

+    which accompanies this distribution, and is available at

+    http://www.eclipse.org/legal/epl-v10.html

+   

+    Contributors:

+       BAREAU Cyrille <cyrille.bareau@orange.com>, 

+       BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+       BOLLE Sebastien <sebastien.bolle@orange.com>.

+ -->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

+    xmlns:custom="http://schemas.android.com/apk/res/com.orange.openthebox.dashboard"

+    android:layout_width="match_parent"

+    android:layout_height="match_parent"

+    android:background="@color/solf_background"

+    android:orientation="vertical" >

+

+    <LinearLayout

+        android:layout_width="match_parent"

+        android:layout_height="wrap_content"

+        android:background="@color/otb_blue" >

+

+        <ImageView

+            android:layout_width="35dp"

+            android:layout_height="35dp"

+            android:layout_marginBottom="10dp"

+            android:layout_marginLeft="10dp"

+            android:layout_marginRight="10dp"

+            android:layout_marginTop="10dp"

+            android:src="@drawable/otb_white_posterous" />

+

+        <TextView

+            android:layout_width="wrap_content"

+            android:layout_height="wrap_content"

+            android:layout_gravity="center_vertical"

+            android:layout_marginBottom="5dp"

+            android:layout_marginTop="5dp"

+            android:text="@string/devices_title"

+            android:textAppearance="?android:attr/textAppearanceLarge"

+            android:textColor="@color/white"

+            android:textSize="20sp"

+            android:textStyle="bold" />

+

+    </LinearLayout>

+

+    <ScrollView

+        android:layout_width="match_parent"

+        android:layout_height="wrap_content"

+        android:layout_weight="1" >

+

+        <LinearLayout

+            android:layout_width="match_parent"

+            android:layout_height="wrap_content"

+            android:orientation="vertical" >

+

+	        <LinearLayout

+	            android:id="@+id/ll_devices_container"

+	            android:layout_width="match_parent"

+	            android:layout_height="wrap_content"

+	            android:orientation="vertical"

+	            android:paddingBottom="20dp"

+        		android:animateLayoutChanges="true" />

+	

+        </LinearLayout>

+

+    </ScrollView>

+    

+</LinearLayout>

diff --git a/org.eclipse.om2m.android.dashboard/res/layout/main_activity.xml b/org.eclipse.om2m.android.dashboard/res/layout/main_activity.xml
new file mode 100644
index 0000000..c674b4f
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/layout/main_activity.xml
@@ -0,0 +1,334 @@
+<!--

+    Copyright (c) 2013, 2017 Orange.

+    All rights reserved. This program and the accompanying materials

+    are made available under the terms of the Eclipse Public License v1.0

+    which accompanies this distribution, and is available at

+    http://www.eclipse.org/legal/epl-v10.html

+   

+    Contributors:

+       BAREAU Cyrille <cyrille.bareau@orange.com>, 

+       BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+       BOLLE Sebastien <sebastien.bolle@orange.com>.

+ -->
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

+    xmlns:tools="http://schemas.android.com/tools"

+    xmlns:custom="http://schemas.android.com/apk/res/org.eclipse.om2m.android.dashboard"

+    android:layout_width="match_parent"

+    android:layout_height="match_parent"

+    android:background="@color/solf_background"

+    android:keepScreenOn="true"

+    android:orientation="vertical"

+    tools:context=".Demo" >

+

+    <LinearLayout

+        android:layout_width="fill_parent"

+        android:layout_height="fill_parent"

+        android:orientation="vertical" >

+

+        <!-- =========================================================== --> 

+		<!-- 							CSE								 -->

+        <!-- =========================================================== -->

+

+        <LinearLayout

+            android:id="@+id/ll_main_zone_cse"

+            android:layout_width="match_parent"

+            android:layout_height="wrap_content"

+            android:layout_marginLeft="10dp"

+            android:layout_marginRight="10dp"

+            android:layout_marginTop="13dp"

+            android:background="@drawable/blur_shadow"

+            android:orientation="vertical" >

+

+            <LinearLayout

+                android:layout_width="fill_parent"

+                android:layout_height="50dp"

+                android:orientation="horizontal" >

+

+                <RelativeLayout

+                    android:layout_width="match_parent"

+                    android:layout_height="match_parent" >

+

+                    <ImageView

+                        android:id="@+id/iv_cse_state_icon"

+                        android:layout_width="30dp"

+                        android:layout_height="30dp"

+                        android:layout_centerVertical="true"

+                        android:layout_gravity="center_vertical"

+                        android:layout_marginLeft="15dp"

+                        android:src="@drawable/otb_picto_led_notconnected" />

+

+                    <TextView

+                        android:id="@+id/tv_cse_title"

+                        android:layout_width="wrap_content"

+                        android:layout_height="wrap_content"

+                        android:layout_alignParentLeft="true"

+                        android:layout_centerVertical="true"

+                        android:layout_gravity="center_vertical"

+                        android:layout_marginLeft="60dp"

+                        android:text="@string/main_config"

+                        android:textAppearance="?android:attr/textAppearanceLarge"

+                        android:textColor="@color/otb_orange"

+                        android:textSize="@dimen/menu_title_size"

+                        android:textStyle="bold" />

+

+                    <TextView

+                        android:id="@+id/tv_cse_status_title"

+                        android:layout_width="wrap_content"

+                        android:layout_height="wrap_content"

+                        android:layout_centerVertical="true"

+                        android:layout_marginLeft="7dp"

+                        android:layout_toRightOf="@+id/tv_cse_title"

+                        android:text="@string/main_cse_state_not_detected"

+                        android:textAppearance="?android:attr/textAppearanceLarge"

+                        android:textColor="@color/otb_orange"

+                        android:textSize="@dimen/menu_title_size"

+                        android:textStyle="bold" />

+

+                </RelativeLayout>

+

+            </LinearLayout>

+

+        </LinearLayout>

+

+        <ScrollView

+            android:id="@+id/sv_main_dynamic_card_scroller"

+            android:layout_width="match_parent"

+            android:layout_height="match_parent"

+            android:layout_marginBottom="10dp"

+            android:layout_marginLeft="10dp"

+            android:layout_marginRight="10dp"

+            android:layout_marginTop="10dp" >

+

+            <LinearLayout

+                android:id="@+id/ll_main_dynamic_card_container"

+                android:layout_width="match_parent"

+                android:layout_height="wrap_content"

+                android:orientation="vertical" >

+

+                        

+        <!-- =========================================================== --> 

+		<!-- 						APPLICATIONS						 -->

+        <!-- =========================================================== -->

+        

+                <RelativeLayout

+                    android:layout_width="match_parent"

+                    android:layout_height="match_parent"

+                    android:layout_weight="3"

+                    android:background="@drawable/blur_shadow" >

+

+                    <ImageView

+                        android:layout_width="45dp"

+                        android:layout_height="45dp"

+                        android:layout_alignParentLeft="true"

+                        android:layout_alignParentTop="true"

+                        android:layout_marginLeft="5dp"

+                        android:layout_marginTop="5dp"

+                        android:src="@drawable/otb_picto_services" />

+

+                    <TextView

+                        android:id="@+id/tv_main_counter_app"

+                        android:layout_width="wrap_content"

+                        android:layout_height="wrap_content"

+                        android:layout_alignParentTop="true"

+                        android:layout_gravity="center_vertical"

+                        android:layout_marginLeft="60dp"

+                        android:layout_marginTop="10dp"

+                        android:text="xx"

+                        android:textAppearance="?android:attr/textAppearanceLarge"

+                        android:textColor="@color/otb_red"

+                        android:textSize="26sp"

+                        android:textStyle="bold" />

+

+                    <TextView

+                        android:id="@+id/tv_main_title_app"

+                        android:layout_width="wrap_content"

+                        android:layout_height="wrap_content"

+                        android:layout_alignParentTop="true"

+                        android:layout_gravity="center_vertical"

+                        android:layout_marginLeft="10dp"

+                        android:layout_marginTop="15dp"

+                        android:layout_toRightOf="@+id/tv_main_counter_app"

+                        android:text="@string/main_applications"

+                        android:textAppearance="?android:attr/textAppearanceLarge"

+                        android:textColor="@color/otb_red"

+                        android:textSize="@dimen/menu_title_size"

+                        android:textStyle="bold" />

+

+                    <org.eclipse.om2m.android.dashboard.tools.CustomLineView

+                        android:layout_width="match_parent"

+                        android:layout_height="2dp"

+                        android:layout_alignParentLeft="true"

+                        android:layout_alignParentTop="true"

+                        android:layout_marginLeft="10dp"

+                        android:layout_marginRight="10dp"

+                        android:layout_marginTop="60dp"

+                        custom:dashGap="2"

+                        custom:dashWidth="2"

+                        custom:dashed="true"

+                        custom:orientation="horizontal"

+                        custom:thickness="1"

+                        custom:color="@color/otb_red" />

+

+                    <GridLayout

+                        android:id="@+id/gl_main_cse_app"

+                        android:layout_width="wrap_content"

+                        android:layout_height="wrap_content"

+                        android:layout_centerHorizontal="true"

+                        android:layout_marginBottom="10dp"

+                        android:layout_marginTop="80dp"

+                        android:animateLayoutChanges="true"

+                        android:orientation="horizontal"

+                        android:scrollbarAlwaysDrawVerticalTrack="false" >

+

+                    </GridLayout>

+                

+                </RelativeLayout>

+        

+        <!-- =========================================================== --> 

+		<!-- 						DEVICES								 -->

+        <!-- =========================================================== -->

+                

+                <RelativeLayout

+                    android:id="@+id/rl_main_zone_devs"

+                    android:layout_width="match_parent"

+                    android:layout_height="match_parent"

+                    android:layout_weight="4"

+                    android:layout_marginTop="10dp"

+                    android:background="@drawable/blur_shadow" >

+

+                    <ImageView

+                        android:layout_width="50dp"

+                        android:layout_height="50dp"

+                        android:layout_alignParentLeft="true"

+                        android:layout_alignParentTop="true"

+                        android:layout_marginLeft="5dp"

+                        android:layout_marginTop="5dp"

+                        android:src="@drawable/otb_picto_devices" />

+

+                    <TextView

+                        android:id="@+id/tv_main_counter_dev"

+                        android:layout_width="wrap_content"

+                        android:layout_height="wrap_content"

+                        android:layout_alignParentTop="true"

+                        android:layout_gravity="center_vertical"

+                        android:layout_marginLeft="60dp"

+                        android:layout_marginTop="15dp"

+                        android:text="xx"

+                        android:textAppearance="?android:attr/textAppearanceLarge"

+                        android:textColor="@color/otb_blue"

+                        android:textSize="26sp"

+                        android:textStyle="bold" />

+

+                    <TextView

+                        android:id="@+id/tv_main_title_dev"

+                        android:layout_width="wrap_content"

+                        android:layout_height="wrap_content"

+                        android:layout_alignParentTop="true"

+                        android:layout_gravity="center_vertical"

+                        android:layout_marginLeft="10dp"

+                        android:layout_marginTop="20dp"

+                        android:layout_toRightOf="@+id/tv_main_counter_dev"

+                        android:text="@string/main_devices"

+                        android:textAppearance="?android:attr/textAppearanceLarge"

+                        android:textColor="@color/otb_blue"

+                        android:textSize="@dimen/menu_title_size"

+                        android:textStyle="bold" />

+

+                    <LinearLayout 

+                        android:id="@+id/ll_replace_device"

+                        android:layout_width="wrap_content"

+                        android:layout_height="wrap_content"

+	                    android:layout_centerVertical="false"

+	                    android:layout_marginTop="13dp"

+		                android:layout_toRightOf="@+id/tv_main_dev"

+                        android:orientation="horizontal" >

+                        	                

+                        <TextView

+	                        android:layout_width="120dp"

+	                        android:layout_height="wrap_content"

+	                        android:layout_alignParentRight="true"

+	                        android:layout_centerVertical="true"

+	                        android:layout_gravity="center_vertical"

+	                        android:gravity="right"

+                            android:text="@string/main_btn_replace"

+                            android:textColor="@color/otb_blue"

+                            android:textSize="14sp" />

+                        

+	                    <ImageView

+                            android:layout_width="40dp"

+                            android:layout_height="40dp"

+                            android:layout_alignParentRight="true"

+                            android:layout_marginRight="4dp"

+                            android:layout_weight="1"

+	                        android:src="@drawable/otb_picto_replace_blue" />

+                        

+	                </LinearLayout>

+                    

+                    <RelativeLayout

+                        android:id="@+id/rl_main_add_device"

+                        android:layout_width="250dp"

+                        android:layout_height="40dp"

+                        android:layout_alignParentRight="true"

+                        android:layout_marginTop="10dp"

+                        android:layout_weight="1"

+                        android:gravity="right" >

+

+                        <TextView

+                            android:layout_width="wrap_content"

+                            android:layout_height="wrap_content"

+                            android:layout_alignParentRight="true"

+                            android:layout_centerVertical="true"

+                            android:layout_gravity="center_vertical"

+                            android:layout_marginRight="60dp"

+                            android:layout_weight="1"

+                            android:text="@string/main_btn_devs"

+                            android:textColor="@color/otb_blue"

+                            android:textSize="14sp" />

+

+                        <ImageView

+                            android:layout_width="40dp"

+                            android:layout_height="40dp"

+                            android:layout_alignParentRight="true"

+                            android:layout_marginRight="20dp"

+                            android:layout_weight="1"

+                            android:src="@drawable/otb_picto_add_dev_blue" />

+                        

+                    </RelativeLayout>

+

+                    <org.eclipse.om2m.android.dashboard.tools.CustomLineView

+                        android:layout_width="match_parent"

+                        android:layout_height="2dp"

+                        android:layout_alignParentLeft="true"

+                        android:layout_alignParentTop="true"

+                        android:layout_marginLeft="10dp"

+                        android:layout_marginRight="10dp"

+                        android:layout_marginTop="60dp"

+                        custom:dashGap="2"

+                        custom:dashWidth="2"

+                        custom:dashed="true"

+                        custom:orientation="horizontal"

+                        custom:thickness="1"

+                        custom:color="@color/otb_blue" />

+

+                    <GridLayout

+                        android:id="@+id/gl_main_cse_devices"

+                        android:layout_width="wrap_content"

+                        android:layout_height="wrap_content"

+                        android:layout_centerHorizontal="true"

+                        android:layout_marginBottom="10dp"

+                        android:layout_marginTop="80dp"

+                        android:animateLayoutChanges="true"

+                        android:orientation="horizontal"

+                        android:scrollbarAlwaysDrawVerticalTrack="false" >

+

+                    </GridLayout>

+                    

+                </RelativeLayout>

+                

+            </LinearLayout>

+            

+        </ScrollView>

+        

+    </LinearLayout>

+     

+</RelativeLayout>

diff --git a/org.eclipse.om2m.android.dashboard/res/layout/main_app_entry_view.xml b/org.eclipse.om2m.android.dashboard/res/layout/main_app_entry_view.xml
new file mode 100644
index 0000000..5e8fe34
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/layout/main_app_entry_view.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!--

+    Copyright (c) 2013, 2017 Orange.

+    All rights reserved. This program and the accompanying materials

+    are made available under the terms of the Eclipse Public License v1.0

+    which accompanies this distribution, and is available at

+    http://www.eclipse.org/legal/epl-v10.html

+   

+    Contributors:

+       BAREAU Cyrille <cyrille.bareau@orange.com>, 

+       BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+       BOLLE Sebastien <sebastien.bolle@orange.com>.

+ -->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

+    android:layout_width="175dp"

+    android:layout_height="wrap_content"

+    android:minWidth="165dp"

+    android:orientation="vertical"

+    android:paddingBottom="5dp"

+    android:paddingLeft="5dp"

+    android:paddingRight="5dp"

+    android:paddingTop="5dp" >

+

+    <RelativeLayout

+        android:layout_width="match_parent"

+        android:layout_height="wrap_content" >

+

+        <ImageView

+            android:id="@+id/iv_main_app_entry_icon"

+            android:layout_width="72dp"

+            android:layout_height="72dp"

+            android:layout_centerInParent="true"

+            android:src="@drawable/otb_appicon_default" />

+

+        <RelativeLayout

+            android:id="@+id/rl_main_app_entry_stopped"

+            android:layout_width="72dp"

+            android:layout_height="72dp"

+            android:layout_centerInParent="true"

+            android:background="#aaffffff"

+            android:visibility="invisible" >

+

+        </RelativeLayout>

+

+    </RelativeLayout>

+

+    <TextView

+        android:id="@+id/tv_main_app_entry_name"

+        android:layout_width="wrap_content"

+        android:layout_height="wrap_content"

+        android:layout_gravity="center_horizontal"

+        android:gravity="center_horizontal"

+        android:text="@string/device_name"

+        android:textAppearance="?android:attr/textAppearanceLarge"

+        android:textColor="@color/otb_red"

+        android:textSize="12sp"

+        android:width="165dp" />

+    

+</LinearLayout>

diff --git a/org.eclipse.om2m.android.dashboard/res/layout/main_dev_view.xml b/org.eclipse.om2m.android.dashboard/res/layout/main_dev_view.xml
new file mode 100644
index 0000000..5975850
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/layout/main_dev_view.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!--

+    Copyright (c) 2013, 2017 Orange.

+    All rights reserved. This program and the accompanying materials

+    are made available under the terms of the Eclipse Public License v1.0

+    which accompanies this distribution, and is available at

+    http://www.eclipse.org/legal/epl-v10.html

+   

+    Contributors:

+       BAREAU Cyrille <cyrille.bareau@orange.com>, 

+       BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+       BOLLE Sebastien <sebastien.bolle@orange.com>.

+ -->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

+    android:layout_width="wrap_content"

+    android:layout_height="wrap_content"

+    android:minWidth="150dp"

+    android:orientation="horizontal" >

+

+    <LinearLayout

+        android:layout_width="wrap_content"

+        android:layout_height="wrap_content"

+        android:orientation="vertical" >

+

+	    <RelativeLayout

+	        android:layout_width="wrap_content"

+	        android:layout_height="match_parent"

+	        android:minWidth="150dp" >

+	

+	       <!--  <ImageView

+	            android:id="@+id/imageView1"

+	            android:layout_width="wrap_content"

+	            android:layout_height="wrap_content"

+	            android:src="@drawable/otb_picto_devcat_backgound" /> -->

+	        

+	        <ImageView

+	            android:id="@+id/iv_main_dev_category_icon"

+	            android:layout_width="wrap_content"

+	            android:layout_height="72dp"

+	            android:layout_centerInParent="true"

+	            android:layout_gravity="center_horizontal"

+	            android:src="@drawable/otb_picto_dev_cat_zwave" />

+	        

+	    </RelativeLayout>

+

+        <TextView

+            android:id="@+id/tv_devType_name"

+            android:layout_width="wrap_content"

+            android:layout_height="wrap_content"

+            android:layout_gravity="center_horizontal"

+            android:layout_marginLeft="5dp"

+            android:layout_marginTop="3dp"

+            android:text="TEST DEVICE"

+            android:textColor="@color/otb_blue"

+            android:textSize="11sp" />

+    

+	</LinearLayout>

+    

+</LinearLayout>

diff --git a/org.eclipse.om2m.android.dashboard/res/layout/settings_activity.xml b/org.eclipse.om2m.android.dashboard/res/layout/settings_activity.xml
new file mode 100644
index 0000000..5129fea
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/layout/settings_activity.xml
@@ -0,0 +1,378 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!--

+    Copyright (c) 2013, 2017 Orange.

+    All rights reserved. This program and the accompanying materials

+    are made available under the terms of the Eclipse Public License v1.0

+    which accompanies this distribution, and is available at

+    http://www.eclipse.org/legal/epl-v10.html

+   

+    Contributors:

+       BAREAU Cyrille <cyrille.bareau@orange.com>, 

+       BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+       BOLLE Sebastien <sebastien.bolle@orange.com>.

+ -->
+
+<LinearLayout xmlns:custom="http://schemas.android.com/apk/res/org.eclipse.om2m.android.dashboard"

+    xmlns:android="http://schemas.android.com/apk/res/android"

+    android:layout_width="match_parent"

+    android:layout_height="match_parent"

+    android:background="@color/white"

+    android:orientation="vertical" >

+

+    <LinearLayout

+        android:layout_width="match_parent"

+        android:layout_height="wrap_content"

+        android:layout_marginBottom="10dp"

+        android:background="@color/soft_gray" >

+

+        <ImageView

+            android:layout_width="35dp"

+            android:layout_height="35dp"

+            android:layout_marginBottom="10dp"

+            android:layout_marginLeft="10dp"

+            android:layout_marginRight="10dp"

+            android:layout_marginTop="10dp"

+            android:src="@drawable/otb_white_gear" />

+

+        <TextView

+            android:id="@+id/tv_title"

+            android:layout_width="wrap_content"

+            android:layout_height="wrap_content"

+            android:layout_gravity="center_vertical"

+            android:layout_marginBottom="5dp"

+            android:layout_marginTop="5dp"

+            android:layout_weight="1"

+            android:text="@string/settings_title"

+            android:textAppearance="?android:attr/textAppearanceLarge"

+            android:textColor="@color/white"

+            android:textSize="20sp"

+            android:textStyle="bold" />

+

+        <TextView

+            android:id="@+id/tv_version"

+            android:layout_width="wrap_content"

+            android:layout_height="wrap_content"

+            android:layout_gravity="right|center_vertical"

+            android:layout_marginBottom="5dp"

+            android:layout_marginRight="20dp"

+            android:layout_marginTop="5dp"

+            android:text="@string/settings_version"

+            android:textAppearance="?android:attr/textAppearanceLarge"

+            android:textColor="@color/white"

+            android:textSize="15sp" />

+    </LinearLayout>

+

+    <LinearLayout

+        android:layout_width="match_parent"

+        android:layout_height="match_parent"

+        android:orientation="vertical" >

+

+        <ScrollView

+            android:layout_width="match_parent"

+            android:layout_height="wrap_content" >

+

+            <LinearLayout

+                android:layout_width="match_parent"

+                android:layout_height="match_parent"

+                android:orientation="vertical" >

+

+                <LinearLayout

+                    android:id="@+id/ll_settings_cse"

+                    android:layout_width="match_parent"

+                    android:layout_height="wrap_content"

+                    android:layout_marginLeft="10dp"

+                    android:orientation="vertical" >

+

+                    <TextView

+                        android:id="@+id/tv_settings_cse"

+                        android:layout_width="wrap_content"

+                        android:layout_height="wrap_content"

+                        android:layout_marginLeft="20dp"

+                        android:text="@string/settings_cse"

+                        android:textAppearance="?android:attr/textAppearanceLarge"

+                        android:textSize="16sp" />

+

+                    <LinearLayout

+                        android:layout_width="match_parent"

+                        android:layout_height="wrap_content"

+                        android:layout_marginLeft="10dp" >

+

+                        <TextView

+                            android:id="@+id/tv_settings_cse_url_label"

+                            android:layout_width="150dp"

+                            android:layout_height="wrap_content"

+                            android:layout_marginLeft="60dp"

+                            android:text="@string/settings_cse_hostname"

+                            android:textAppearance="?android:attr/textAppearanceLarge"

+                            android:textSize="14sp" />

+

+                        <EditText

+                            android:id="@+id/et_settings_cse_hostname"

+                            android:layout_width="200dp"

+                            android:layout_height="wrap_content"

+                            android:layout_marginLeft="20dp"

+                            android:layout_marginRight="20dp"

+                            android:layout_weight="1"

+                            android:ems="10"

+                            android:inputType="text"

+                            android:textSize="14sp" />

+

+                        <TextView

+                            android:layout_width="150dp"

+                            android:layout_height="wrap_content"

+                            android:layout_marginLeft="60dp"

+                            android:text="@string/settings_cse_port"

+                            android:textAppearance="?android:attr/textAppearanceLarge"

+                            android:textSize="14sp" />

+

+                        <EditText

+                            android:id="@+id/et_settings_cse_port"

+                            android:layout_width="200dp"

+                            android:layout_height="wrap_content"

+                            android:layout_marginLeft="20dp"

+                            android:layout_marginRight="20dp"

+                            android:layout_weight="1"

+                            android:ems="10"

+                            android:inputType="number"

+                            android:textSize="14sp" />

+                    </LinearLayout>

+

+                    <LinearLayout

+                        android:layout_width="match_parent"

+                        android:layout_height="wrap_content"

+                        android:layout_marginLeft="10dp" >

+

+                        <TextView

+                            android:id="@+id/tv_settings_cse_cseId_label"

+                            android:layout_width="150dp"

+                            android:layout_height="wrap_content"

+                            android:layout_marginLeft="60dp"

+                            android:text="@string/settings_cse_cseId"

+                            android:textAppearance="?android:attr/textAppearanceLarge"

+                            android:textSize="14sp" />

+

+                        <EditText

+                            android:id="@+id/et_settings_cse_cseId"

+                            android:layout_width="200dp"

+                            android:layout_height="wrap_content"

+                            android:layout_marginLeft="20dp"

+                            android:layout_marginRight="20dp"

+                            android:layout_weight="1"

+                            android:ems="10"

+                            android:inputType="text"

+                            android:textSize="14sp" />

+

+                        <TextView

+                            android:layout_width="150dp"

+                            android:layout_height="wrap_content"

+                            android:layout_marginLeft="60dp"

+                            android:text="@string/settings_cse_cseName"

+                            android:textAppearance="?android:attr/textAppearanceLarge"

+                            android:textSize="14sp" />

+

+                        <EditText

+                            android:id="@+id/et_settings_cse_cseName"

+                            android:layout_width="200dp"

+                            android:layout_height="wrap_content"

+                            android:layout_marginLeft="20dp"

+                            android:layout_marginRight="20dp"

+                            android:layout_weight="1"

+                            android:ems="10"

+                            android:inputType="text"

+                            android:textSize="14sp" />

+                    </LinearLayout>

+

+                    <LinearLayout

+                        android:layout_width="match_parent"

+                        android:layout_height="wrap_content"

+                        android:layout_marginLeft="10dp" >

+

+                        <TextView

+                            android:id="@+id/tv_settings_cse_login"

+                            android:layout_width="150dp"

+                            android:layout_height="wrap_content"

+                            android:layout_marginLeft="60dp"

+                            android:text="@string/login_cse_login"

+                            android:textAppearance="?android:attr/textAppearanceLarge"

+                            android:textSize="14sp" />

+

+                        <EditText

+                            android:id="@+id/et_settings_cse_login"

+                            android:layout_width="200dp"

+                            android:layout_height="wrap_content"

+                            android:layout_marginLeft="20dp"

+                            android:layout_marginRight="20dp"

+                            android:layout_weight="1"

+                            android:ems="10"

+                            android:inputType="text"

+                            android:textSize="14sp" />

+

+                        <TextView

+                            android:id="@+id/tv_settings_cse_pwd"

+                            android:layout_width="150dp"

+                            android:layout_height="wrap_content"

+                            android:layout_marginLeft="60dp"

+                            android:text="@string/login_cse_pwd"

+                            android:textAppearance="?android:attr/textAppearanceLarge"

+                            android:textSize="14sp" />

+

+                        <EditText

+                            android:id="@+id/et_settings_cse_pwd"

+                            android:layout_width="wrap_content"

+                            android:layout_height="wrap_content"

+                            android:layout_marginLeft="20dp"

+                            android:layout_marginRight="20dp"

+                            android:layout_weight="1"

+                            android:ems="10"

+                            android:inputType="number"

+                            android:textSize="14sp" />

+                    </LinearLayout>

+                </LinearLayout>

+

+                <org.eclipse.om2m.android.dashboard.tools.CustomLineView

+                    android:layout_width="match_parent"

+                    android:layout_height="2dp"

+                    android:layout_marginBottom="25dp"

+                    android:layout_marginLeft="10dp"

+                    android:layout_marginRight="10dp"

+                    android:layout_marginTop="25dp"

+                    custom:dashGap="2"

+                    custom:dashWidth="2"

+                    custom:dashed="true"

+                    custom:orientation="horizontal"

+                    custom:thickness="1"

+                    custom:color="@color/gray" />

+

+                <LinearLayout

+                    android:id="@+id/ll_settings_device_name"

+                    android:layout_width="match_parent"

+                    android:layout_height="wrap_content"

+                    android:orientation="vertical" >

+

+                    <TextView

+                        android:id="@+id/tv_settings_device_name"

+                        android:layout_width="wrap_content"

+                        android:layout_height="wrap_content"

+                        android:layout_marginLeft="20dp"

+                        android:text="@string/settings_device_name"

+                        android:textAppearance="?android:attr/textAppearanceLarge"

+                        android:textSize="16sp" />

+

+                    <LinearLayout

+                        android:layout_width="match_parent"

+                        android:layout_height="wrap_content"

+                        android:gravity="center"

+                        android:orientation="vertical" >

+

+                        <RadioGroup

+                            android:id="@+id/radioGroup1"

+                            android:layout_width="wrap_content"

+                            android:layout_height="wrap_content" >

+

+                            <RadioButton

+                                android:id="@+id/rb_device_name_with_alias"

+                                android:layout_width="wrap_content"

+                                android:layout_height="wrap_content"

+                                android:checked="true"

+                                android:text="@string/device_name_with_alias" />

+

+                            <RadioButton

+                                android:id="@+id/rb_device_name_with_name"

+                                android:layout_width="wrap_content"

+                                android:layout_height="wrap_content"

+                                android:text="@string/device_name_with_name" />

+                        </RadioGroup>

+

+                    </LinearLayout>

+

+                </LinearLayout>

+

+                <org.eclipse.om2m.android.dashboard.tools.CustomLineView

+                    android:layout_width="match_parent"

+                    android:layout_height="2dp"

+                    android:layout_marginBottom="25dp"

+                    android:layout_marginLeft="10dp"

+                    android:layout_marginRight="10dp"

+                    android:layout_marginTop="25dp"

+                    custom:dashGap="2"

+                    custom:dashWidth="2"

+                    custom:dashed="true"

+                    custom:orientation="horizontal"

+                    custom:thickness="1"

+                    custom:color="@color/gray" />

+

+                <CheckBox

+                    android:id="@+id/cb_settings_wizards"

+                    android:layout_width="wrap_content"

+                    android:layout_height="wrap_content"

+                    android:layout_marginLeft="20dp"

+                    android:text="@string/settings_activateWizard"

+                    android:textSize="16sp" />

+

+                <org.eclipse.om2m.android.dashboard.tools.CustomLineView

+                    android:layout_width="match_parent"

+                    android:layout_height="2dp"

+                    android:layout_marginBottom="25dp"

+                    android:layout_marginLeft="10dp"

+                    android:layout_marginRight="10dp"

+                    android:layout_marginTop="25dp"

+                    custom:dashGap="2"

+                    custom:dashWidth="2"

+                    custom:dashed="true"

+                    custom:orientation="horizontal"

+                    custom:thickness="1"

+                    custom:color="@color/gray" />

+

+                <RadioGroup

+                    android:layout_width="wrap_content"

+                    android:layout_height="wrap_content" >

+

+                    <RadioButton

+                        android:id="@+id/rd_language_en"

+                        android:layout_width="wrap_content"

+                        android:layout_height="wrap_content"

+                        android:layout_marginLeft="20dp"

+                        android:text="@string/settings_language_en"

+                        android:textSize="16sp" />

+

+                    <RadioButton

+                        android:id="@+id/rd_language_fr"

+                        android:layout_width="wrap_content"

+                        android:layout_height="wrap_content"

+                        android:layout_marginLeft="20dp"

+                        android:text="@string/settings_language_fr"

+                        android:textSize="16sp" />

+                </RadioGroup>

+

+                <LinearLayout

+                    android:layout_width="match_parent"

+                    android:layout_height="wrap_content"

+                    android:layout_gravity="bottom"

+                    android:layout_marginBottom="100dp"

+                    android:layout_marginTop="20dp" >

+

+                    <Button

+                        android:id="@+id/btn_settings_validate"

+                        android:layout_width="wrap_content"

+                        android:layout_height="wrap_content"

+                        android:layout_marginLeft="50dp"

+                        android:layout_marginRight="25dp"

+                        android:layout_weight="1"

+                        android:background="@drawable/sel_button_green"

+                        android:text="@string/dialog_btn_validate" />

+

+                    <Button

+                        android:id="@+id/btn_settings_cancel"

+                        android:layout_width="wrap_content"

+                        android:layout_height="wrap_content"

+                        android:layout_marginLeft="25dp"

+                        android:layout_marginRight="50dp"

+                        android:layout_weight="1"

+                        android:background="@drawable/sel_button_red"

+                        android:text="@string/dialog_btn_cancel" />

+                </LinearLayout>

+            </LinearLayout>

+        </ScrollView>

+    </LinearLayout>

+

+</LinearLayout>
\ No newline at end of file
diff --git a/org.eclipse.om2m.android.dashboard/res/menu/menu_main.xml b/org.eclipse.om2m.android.dashboard/res/menu/menu_main.xml
new file mode 100644
index 0000000..b75526b
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/menu/menu_main.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!--

+    Copyright (c) 2013, 2017 Orange.

+    All rights reserved. This program and the accompanying materials

+    are made available under the terms of the Eclipse Public License v1.0

+    which accompanies this distribution, and is available at

+    http://www.eclipse.org/legal/epl-v10.html

+   

+    Contributors:

+       BAREAU Cyrille <cyrille.bareau@orange.com>, 

+       BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+       BOLLE Sebastien <sebastien.bolle@orange.com>.

+ -->
+
+<menu xmlns:android="http://schemas.android.com/apk/res/android" >

+

+    <item android:id="@+id/menu_settings" 

+        android:title="@string/menu_settings" 

+        android:menuCategory="system" 

+        android:showAsAction="always"

+        android:icon="@drawable/ic_action_settings"></item>

+

+</menu>

diff --git a/org.eclipse.om2m.android.dashboard/res/menu/menu_panel.xml b/org.eclipse.om2m.android.dashboard/res/menu/menu_panel.xml
new file mode 100644
index 0000000..097652f
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/menu/menu_panel.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!--

+    Copyright (c) 2013, 2017 Orange.

+    All rights reserved. This program and the accompanying materials

+    are made available under the terms of the Eclipse Public License v1.0

+    which accompanies this distribution, and is available at

+    http://www.eclipse.org/legal/epl-v10.html

+   

+    Contributors:

+       BAREAU Cyrille <cyrille.bareau@orange.com>, 

+       BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+       BOLLE Sebastien <sebastien.bolle@orange.com>.

+ -->
+
+<menu xmlns:android="http://schemas.android.com/apk/res/android" >

+

+    <item android:id="@+id/menu_login" 

+        android:title="@string/menu_login" 

+        android:menuCategory="system" 

+        android:showAsAction="always"

+        android:icon="@drawable/ic_action_login"></item>

+    

+    <item android:id="@+id/menu_help" 

+        android:title="@string/menu_help" 

+        android:menuCategory="system" 

+        android:showAsAction="always"

+        android:icon="@drawable/ic_action_help"></item>

+

+</menu>

diff --git a/org.eclipse.om2m.android.dashboard/res/menu/menu_secondary.xml b/org.eclipse.om2m.android.dashboard/res/menu/menu_secondary.xml
new file mode 100644
index 0000000..8a2eea9
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/menu/menu_secondary.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!--

+    Copyright (c) 2013, 2017 Orange.

+    All rights reserved. This program and the accompanying materials

+    are made available under the terms of the Eclipse Public License v1.0

+    which accompanies this distribution, and is available at

+    http://www.eclipse.org/legal/epl-v10.html

+   

+    Contributors:

+       BAREAU Cyrille <cyrille.bareau@orange.com>, 

+       BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+       BOLLE Sebastien <sebastien.bolle@orange.com>.

+ -->
+
+<menu xmlns:android="http://schemas.android.com/apk/res/android" >

+    

+    <item android:id="@+id/menu_help" 

+        android:title="@string/menu_help" 

+        android:menuCategory="system" 

+        android:showAsAction="always"

+        android:icon="@drawable/ic_action_help"></item>

+

+</menu>

diff --git a/org.eclipse.om2m.android.dashboard/res/values-en/strings.xml b/org.eclipse.om2m.android.dashboard/res/values-en/strings.xml
new file mode 100644
index 0000000..3021839
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/values-en/strings.xml
@@ -0,0 +1,401 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!--

+    Copyright (c) 2013, 2017 Orange.

+    All rights reserved. This program and the accompanying materials

+    are made available under the terms of the Eclipse Public License v1.0

+    which accompanies this distribution, and is available at

+    http://www.eclipse.org/legal/epl-v10.html

+   

+    Contributors:

+       BAREAU Cyrille <cyrille.bareau@orange.com>, 

+       BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+       BOLLE Sebastien <sebastien.bolle@orange.com>.

+ -->
+
+<resources>

+

+    <string name="app_name">Home Dashboard</string>

+    <string name="action_settings">Settings</string>

+    <string name="empty"></string>

+    <string name="main_applications">Installed applications</string>

+    <string name="main_store">Available applications</string>

+    <string name="main_devices">Connected devices</string>

+    <string name="main_config">Dashboard</string>

+    <string name="main_users">Users</string>

+    <string name="applications_title">Installed applications</string>

+    <string name="store_title">Applications Store</string>

+    <string name="config_title">Permissions</string>

+    <string name="devices_title">Connected devices</string>

+    <string name="users_title">Connected users</string>

+    <string name="settings_title">Settings</string>

+    <string name="login_title">Connection</string>

+    <string name="main_cse">Dashboard is </string>

+    <string name="main_cse_state">Status</string>

+    <string name="main_cse_fw">Firmware</string>

+    <string name="main_cse_state_ok">is connected</string>

+    <string name="main_cse_state_warning">is partially operational</string>

+    <string name="main_cse_state_error">is not connected</string>

+    <string name="main_cse_state_not_detected">is not detected</string>

+    <string name="main_cse_state_not_connected">is not connected</string>

+    <string name="main_btn_apps">apps</string>

+    <string name="main_btn_config">permissions</string>

+    <string name="main_btn_devs">add device</string>

+    <string name="main_btn_usrs">add user</string>

+    <string name="main_btn_delegate">delegate rights</string>

+    <string name="main_btn_replace">replace device</string>

+    <string name="main_login_titles">Login</string>

+    <string name="main_login_needed">You are not logged in. See Settings.</string>

+    <string name="main_login_wrong">Authentication failed. Retry...</string>

+    <string name="main_subtitle_app">quick access to your installed applications</string>

+    <string name="main_subtitle_dev">your connected devices by category</string>

+    <string name="main_subtitle_store">new applications can be downloaded on your HAB</string>

+    <string name="main_subtitle_config">the status of your HAB and permissions configuration</string>

+    <string name="main_dev_cat">device(s)</string>

+    <string name="main_dev_sup_cat" formatted="false">there is %sup% other category(ies)</string>

+    <string name="main_app_sup" formatted="false">there is %sup% other application(s)</string>

+    <string name="main_config_action">configure permissions</string>

+    <string name="main_store_intro">For new features and optimize your installation, you can download new applications from the Applications Store</string>

+    <string name="main_store_go">access the store</string>

+    <string name="card_cpu">CPU:</string>

+    <string name="card_ram">RAM:</string>

+    <string name="device_type_name">type</string>

+    <string name="device_name">name</string>

+    <string name="device_description">description</string>

+    <string name="device_btn_detail">details</string>

+    <string name="device_show_details">more details</string>

+    <string name="device_remove_asso" formatted="false">remove association</string>

+    <string name="device_replacement">Device Replacement</string>

+    <string name="device_replacement_select">Select the device to be replaced in the following list</string>

+    <string name="device_replacement_0_all">List of all devices</string>

+    <string name="device_replacement_0_type">List of similar devices</string>

+    <string name="device_replacement_apply" formatted="false">Do replace the device \"%dev_name%\" by another device of same type %dev_type%?</string>

+    <string name="device_replacement_select_new">Select the new device in the following list</string>

+    <string name="device_replacement_nodevice_error">No similar device</string>

+    <string name="device_replacement_error">Error during device replacement: </string>

+    <string name="device_replacement_ok" formatted="false">Device replacement performed. You can uninstall device \"%dev_name%\"</string>

+    <string name="device_details_info">Informations:</string>

+    <string name="device_details_asso">Could be used by:</string>

+    <string name="device_details_check">Check the device:</string>

+    <string name="device_details_state">Status:</string>

+    <string name="device_details_btn_update">Update associations</string>

+    <string name="device_details_btn_asso">Manage permissions</string>

+    <string name="device_details_btn_store">Subscribe to new services\nfor your devices</string>

+    <string name="device_details_msg_eject">Do you really want to disconnect this device?\n\nAssociated applications with this device could be affected.</string>

+    <string name="device_details_msg_eject_title">Disconnect this device</string>

+    <string name="device_details_permissions_update_title">Permissions update</string>

+    <string name="device_details_permissions_update_msg">During the permissions update, the selected applications will restart.\n\nDo you want to perform the update?</string>

+    <string name="device_details_no_access_rights">You are not allowed to access this device</string>

+    <string name="device_details_no_access_rights_title">Device Access</string>

+    <string name="devices_addnewone_title">Install a new device</string>

+    <string name="devices_addnewone_dev_type">Which type of device would you like to install?</string>

+    <string name="devices_addnewone_dev_procedure">Installation procedure:</string>

+    <string name="devices_addnewone_dev_type_zigbee">ZigBee</string>

+    <string name="devices_addnewone_dev_type_x3d">X3D</string>

+    <string name="devices_addnewone_dev_type_greennet">GreenNet</string>

+    <string name="devices_addnewone_dev_type_upnp">UPnP</string>

+    <string name="devices_addnewone_dev_type_agora">Agora</string>

+    <string name="devices_addnewone_dev_agora_msg">You just have to connect your Agora device on the network.\n\nIt will be automatically discovered by your HAB.</string>

+    <string name="devices_addnewone_dev_upnp_msg">You just have to connect your Upnp device on the network.\n\nIt will be automatically discovered by your HAB.</string>

+    <string name="devices_addnewone_dev_zigbee_msg" formatted="false">While adding an element in the Zigbee network requires the activation of \"pairing mode\" at its coordinator\n\nTo do this, follow these steps:</string>

+    <string name="devices_addnewone_dev_step_1">1 - </string>

+    <string name="devices_addnewone_dev_step_2">2 - </string>

+    <string name="devices_addnewone_dev_step_3">3 - </string>

+    <string name="devices_addnewone_dev_step_4">4 - </string>

+    <string name="devices_addnewone_dev_zigbee_submsg_1">Check that the Zigbee coordinator is plugged into the USB port on your HAB</string>

+    <string name="devices_addnewone_dev_zigbee_submsg_2" formatted="false">Activate the \"pairing mode\" of your coordinator</string>

+    <string name="devices_addnewone_dev_zigbee_submsg_2_1">. If your coordinator has a pairing button, press it.</string>

+    <string name="devices_addnewone_dev_zigbee_submsg_2_2">. Otherwise, press the generic pairing button on your HAB.</string>

+    <string name="devices_addnewone_dev_zigbee_submsg_3" formatted="false">Connect your new ZigBee device on the network and activate his \"pairing mode\". (see instructions)</string>

+    <string name="devices_addnewone_dev_zigbee_submsg_4">The pairing will occur between your coordinator and the new device. Once completed, your device will be visible and functional.</string>

+    <string name="application_simple_name">APP NAME</string>

+    <string name="application_simple_version">Version:</string>

+    <string name="application_simple_state">Status:</string>

+    <string name="application_simple_details">Details</string>

+    <string name="application_simple_noasso">there is no associated device with this application</string>

+    <string name="application_simple_update">an update is available</string>

+    <string name="application_show_details">more details</string>

+    <string name="application_remove_asso" formatted="false">remove association</string>

+    <string name="application_config_title" formatted="false">\"%app_name%\" configuration</string>

+    <string name="application_details_servicename">Service:</string>

+    <string name="application_details_serviceversion">Service version:</string>

+    <string name="application_details_title">Application</string>

+    <string name="application_details_info">Information:</string>

+    <string name="application_details_compo">Composition:</string>

+    <string name="application_details_version">Version:</string>

+    <string name="application_details_state">Status:</string>

+    <string name="application_details_installdate">Installation date:</string>

+    <string name="application_details_resources">Used resources:</string>

+    <string name="application_details_resource_unavailable">unavailable</string>

+    <string name="application_details_ram">RAM:</string>

+    <string name="application_details_cpu">CPU (time):</string>

+    <string name="application_details_threads">Threads count:</string>

+    <string name="application_details_sockets">Sockets count:</string>

+    <string name="application_details_flash">Flash size:</string>

+    <string name="application_details_bandwidth">Bandwidth:</string>

+    <string name="application_details_ram_value" formatted="false">%VALUE% bytes</string>

+    <string name="application_details_cpu_value" formatted="false">%VALUE% %</string>

+    <string name="application_details_threads_value" formatted="false">%VALUE% thread(s)</string>

+    <string name="application_details_sockets_value" formatted="false">%VALUE% socket(s)</string>

+    <string name="application_details_flash_value" formatted="false">%VALUE% bytes</string>

+    <string name="application_details_bandwidth_value" formatted="false">%VALUE% bytes/s</string>

+    <string name="application_details_update">Update:</string>

+    <string name="application_details_update_btn">Update</string>

+    <string name="application_details_update_msg1">An update is available.</string>

+    <string name="application_details_update_msg2">During the update, the application will be momentarily out.</string>

+    <string name="application_details_config">Configuration:</string>

+    <string name="application_details_config_btn">Configure</string>

+    <string name="application_details_permissions">Permissions:</string>

+    <string name="application_details_bundle_3rd">Partners</string>

+    <string name="application_details_bundle_op">Operator</string>

+    <string name="application_details_monitoring_activated">The application\'s resources monitoring is activated</string>

+    <string name="application_details_monitoring_unactivated">The application\'s resources monitoring is disabled</string>

+    <string name="application_details_btn_now">now</string>

+    <string name="application_details_btn_later">later</string>

+    <string name="application_details_btn_no">no</string>

+    <string name="application_details_msg_update">During the update, the application will no longer be functional.\n\nDo you want to perform the update?</string>

+    <string name="application_details_msg_update_title">Update</string>

+    <string name="application_details_msg_uninstall">Do you really want to uninstall this application?</string>

+    <string name="application_details_msg_uninstall_title">Uninstallation</string>

+    <string name="application_details_no_config">This application does not have configuration interface</string>

+    <string name="application_details_no_access_rights">You are not allowed to access this application</string>

+    <string name="application_details_no_uninstall_rights">You are not allowed to uninstall this application</string>

+    <string name="application_details_permissions_btn">Manage permissions</string>

+    <string name="application_details_permissions_msg">permissions established between</string>

+    <string name="application_details_permissions_update_title">Permissions Update</string>

+    <string name="application_details_permissions_update_msg">During the permissions update, the application will restart.\n\nDo you want to perform the update?</string>

+    <string name="application_details_startstop">Start</string>

+    <string name="application_details_description">---</string>

+    <string name="application_details_msgRunning">The application is currently running</string>

+    <string name="application_details_msgNotRunning">The application is currently stopped</string>

+    <string name="application_details_btnStop">Stop</string>

+    <string name="application_details_btnStart">Start</string>

+    <string name="application_details_stopped">(stopped)</string>

+    <string name="application_details_not_accessible">Not accessible</string>

+    <string name="dialog_btn_ok">OK</string>

+    <string name="dialog_btn_yes">Yes</string>

+    <string name="dialog_btn_no">No</string>

+    <string name="dialog_btn_cancel">Cancel</string>

+    <string name="dialog_btn_apply">Apply</string>

+    <string name="dialog_btn_validate">Validate</string>

+    <string name="dialog_btn_create">Create</string>

+    <string name="dialog_btn_modify">Modify</string>

+    <string name="config_devices">Associated Devices</string>

+    <string name="config_application">Application</string>

+    <string name="config_device_name">Device xxxx</string>

+    <string name="config_app_name">Application xxxx</string>

+    <string name="config_serv_name">Service xxxx</string>

+    <string name="config_btn_update">Update</string>

+    <string name="config_btn_associate">Associate</string>

+    <string name="config_asso">associate with</string>

+    <string name="config_update_title_dev" formatted="false">Select the applications that may use \"%dev_name%\"</string>

+    <string name="config_update_title_app" formatted="false">Select the devices that may be used by \"%app_name%\"</string>

+    <string name="config_update_noapp">There is no installed application that can use this device</string>

+    <string name="config_update_nodev">There is no connected device nor installed applications that can be used by this application</string>

+    <string name="menu_settings">options</string>

+    <string name="menu_help">help</string>

+    <string name="menu_login">Connection</string>

+    <string name="settings_hab_ip">HAB IP address:</string>

+    <string name="settings_hab_port">HAB port:</string>

+    <string name="settings_activateWizard">Active all wizards</string>

+    <string name="settings_autoDiscorevy">Auto HAB discovery</string>

+    <string name="settings_manualDiscorevy">Manual HAB discovery</string>

+    <string name="settings_discovered_ip">HAB found at the ip:</string>

+    <string name="settings_no_hab">HAB not found</string>

+    <string name="settings_version">dasboard version: %version%</string>

+    <string name="settings_language_en">english</string>

+    <string name="settings_language_fr">français</string>

+    <string name="login_current">%current%</string>

+    <string name="login_cse_login">Login</string>

+    <string name="login_cse_pwd">Password</string>

+    <string name="wizard_application_simple_mainMsg">This screen shows all installed applications on your HAB</string>

+    <string name="wizard_application_simple_actions">Actions:</string>

+    <string name="wizard_application_simple_action_uninstall">uninstall an application</string>

+    <string name="wizard_application_simple_action_config">configure an application</string>

+    <string name="wizard_application_simple_action_details">display more details about an application</string>

+    <string name="wizard_application_details_action_device">display more information about a device associated with an application. "long click" to remove association</string>

+    <string name="wizard_application_details_action_asso">associate the application with devices</string>

+    <string name="wizard_application_details_mainMsg">This screen shows the details of the application</string>

+    <string name="wizard_application_details_actions">Actions:</string>

+    <string name="wizard_application_details_action_uninstall">uninstall the application</string>

+    <string name="wizard_application_details_action_config">configure the application / update permissions</string>

+    <string name="wizard_application_details_action_openclose">open / close a section</string>

+    <string name="wizard_device_details_mainMsg">This screen shows the details of the device</string>

+    <string name="wizard_device_details_actions">Actions:</string>

+    <string name="wizard_device_details_action_eject">disconnect safely the device</string>

+    <string name="wizard_device_details_action_check">display settings and controls to test the device</string>

+    <string name="wizard_device_details_action_asso">associate the device to applications</string>

+    <string name="wizard_device_details_action_app">display more information about associated applications with the device. "long click" to remove association</string>

+    <string name="wizard_device_simple_mainMsg">This screen shows all your connected devices</string>

+    <string name="wizard_device_simple_actions">Actions:</string>

+    <string name="wizard_device_simple_action_details">display more details about a device</string>

+    <string name="wizard_device_simple_action_add">install a new device</string>

+    <string name="wizard_device_simple_action_moreless">open/close the category</string>

+    <string name="wizard_config_mainMsg">This screen shows the devices than can be used by each application</string>

+    <string name="wizard_config_actions">Actions:</string>

+    <string name="wizard_config_action_update">update the permissions</string>

+    <string name="wizard_config_action_device">display more details about a device</string>

+    <string name="wizard_config_action_app">display more details about an application</string>

+    <string name="wizard_user_simple_mainMsg">This screen shows all the existing user accounts</string>

+    <string name="wizard_user_simple_action_add">create a new user account</string>

+    <string name="wizard_user_simple_action_details">display more details about a user</string>

+    <string name="wizard_user_details_mainMsg">This screen shows the detailed access rights of a user account</string>

+    <string name="wizard_user_details_action_delete">remove the user account</string>

+    <string name="wizard_user_details_action_update">modify the access rights of the user</string>

+    <string name="usr_details_title">User</string>

+    <string name="usr_details_access_rights">Access Rights:</string>

+    <string name="usr_details_access_rights_msg">Access Rights on</string>

+    <string name="user_details_no_access_rights">You are not allowed to access users accounts</string>

+    <string name="user_details_no_access_rights_title">Users Access</string>

+    <string name="appstore_no_access_rights_title">Access to the AppStore</string>

+    <string name="appstore_no_access_rights">You are not allowed to access the AppStore</string>

+    <string name="user_add_title">Add User</string>

+    <string name="user_add_create">Create new user</string>

+    <string name="add_user_creator">Creator:</string>

+    <string name="add_user_type">Type:</string>

+    <string name="add_user_name">User name:</string>

+    <string name="add_user_empty_name">Name can not be empty</string>

+    <string name="add_user_empty_password">Password can not be empty</string>

+    <string name="add_user_image">Image:</string>

+    <string name="user_delegation">User Access Rights Delegation</string>

+    <string name="user_delegation_no_config">The delegation application is not available</string>

+    <string name="user_delegation_no_access_rights">You are not allowed to delegate rights</string>

+    <string name="user_details_msg_remove_title">User Removal</string>

+    <string name="user_details_msg_create_title">User Creation</string>

+    <string name="user_details_no_remove_rights">You are not allowed to remove this user</string>

+    <string name="user_details_no_create_rights">You are not allowed to create users</string>

+    <string name="user_details_msg_remove_user" formatted="false">Do you really want to remove user %usr_name%?</string>

+    <string name="user_details_rights_btn">Manage rights</string>

+    <string name="user_details_rights_update_title">User Access Rights Update</string>

+    <string name="user_details_rights_update_msg" formatted="false">Do you really want to modify the Access Rights of %usr_id%?</string>

+    <string name="user_details_rights_help_title">Description of User Access Rights</string>

+    <string name="user_type_admins_list">Administrators</string>

+    <string name="user_type_family_list">Family</string>

+    <string name="user_type_friends_list">Friends</string>

+    <string name="user_type_admins_icon">Admins</string>

+    <string name="user_type_family_icon">Family</string>

+    <string name="user_type_friends_icon">Friends</string>

+    <string name="user_type_admin">Administrator</string>

+    <string name="user_type_family">Family</string>

+    <string name="user_type_friend">Friend</string>

+    <string name="hello_world">Hello world!</string>

+    <string name="title_activity_otbusers">OTBUsersActivity</string>

+

+    <string-array name="avatar_imgs">

+        <item>@drawable/radio_btn_avatar_businessman</item>

+        <item>@drawable/radio_btn_avatar_male</item>

+        <item>@drawable/radio_btn_avatar_female</item>

+        <item>@drawable/radio_btn_avatar_male_headset</item>

+        <item>@drawable/radio_btn_avatar_female_headset</item>

+        <item>@drawable/radio_btn_avatar_boy</item>

+        <item>@drawable/radio_btn_avatar_girl</item>

+        <item>@drawable/radio_btn_avatar_grandpa</item>

+        <item>@drawable/radio_btn_avatar_grandma</item>

+    </string-array>

+    <string-array name="devices">

+        <item>deviceAirConditioner</item>

+        <item>Air Conditioners</item>

+        <item></item>

+        <item>deviceClothesWasher</item>

+        <item>Clothes Washers</item>

+        <item></item>

+        <item>deviceElectricVehicleCharger</item>

+        <item>Electric Vehicle Chargers</item>

+        <item></item>

+        <item>deviceLight</item>

+        <item>Lights</item>

+        <item>@drawable/otb_picto_dev_cat_light</item>

+        <item>deviceMicrogeneration</item>

+        <item>Microgenerators</item>

+        <item></item>

+        <item>deviceOven</item>

+        <item>Ovens</item>

+        <item></item>

+        <item>deviceRefrigerator</item>

+        <item>Refrigerators</item>

+        <item></item>

+        <item>deviceRobotCleaner</item>

+        <item>Robot Cleaners</item>

+        <item></item>

+        <item>deviceSmartElectricMeter</item>

+        <item>Smart Electric Meters</item>

+        <item>@drawable/otb_picto_dev_cat_gauge</item>

+        <item>deviceStorageBattery</item>

+        <item>Storage Batteries</item>

+        <item>@drawable/otb_picto_dev_cat_battery</item>

+        <item>deviceTelevision</item>

+        <item>Televisions</item>

+        <item></item>

+        <item>deviceThermostat</item>

+        <item>Thermostats</item>

+        <item></item>

+        <item>deviceWaterHeater</item>

+        <item>Water Heaters</item>

+        <item></item>

+        <item>deviceDoor</item>

+        <item>Doors</item>

+        <item>@drawable/otb_picto_dev_cat_door</item>

+        <item>deviceSmokeExtractor</item>

+        <item>Smoke Extractors</item>

+        <item>@drawable/otb_picto_dev_cat_smokeextractor</item>

+        <item>deviceSwitchButton</item>

+        <item>Switch Buttons</item>

+        <item>@drawable/otb_picto_dev_cat_switchbutton</item>

+        <item>deviceWarningDevice</item>

+        <item>Warning Devices</item>

+        <item>@drawable/otb_picto_dev_cat_warningdevice</item>

+        <item>deviceGasValve</item>

+        <item>Gas Valves</item>

+        <item>@drawable/otb_picto_dev_cat_gasvalve</item>

+        <item>deviceWaterValve</item>

+        <item>Water Valves</item>

+        <item>@drawable/otb_picto_dev_cat_watervalve</item>

+        <item>deviceFloodDetector</item>

+        <item>Flood Detectors</item>

+        <item>@drawable/otb_picto_dev_cat_flooddetector</item>

+        <item>deviceMotionDetector</item>

+        <item>Motion Detectors</item>

+        <item>@drawable/otb_picto_dev_cat_motiondetector</item>

+        <item>deviceSmokeDetector</item>

+        <item>Smoke Detectors</item>

+        <item>@drawable/otb_picto_dev_cat_smokedetector</item>

+        <item>deviceTemperatureDetector</item>

+        <item>Temperature Detectors</item>

+        <item>@drawable/otb_picto_dev_cat_thermometer</item>

+        <item>deviceContactDetector</item>

+        <item>Contact Detectors</item>

+        <item>@drawable/otb_picto_dev_cat_contactsensor</item>

+        <item>deviceCamera</item>

+        <item>Cameras</item>

+        <item>@drawable/otb_picto_dev_cat_camera</item>

+        <item>deviceWeatherStation</item>

+        <item>Weather Stations</item>

+        <item>@drawable/otb_picto_dev_cat_weatherstation</item>

+        <item>deviceCoffeeMachine</item>

+        <item>Coffee Makers</item>

+        <item>@drawable/otb_picto_dev_cat_coffeemachine</item>

+        <item>default</item>

+        <item>SDT Device</item>

+        <item>@drawable/otb_picto_dev_cat_sdt</item>

+        <item>undefined</item>

+        <item>Undefined</item>

+        <item>@drawable/otb_picto_dev_cat_sdt</item>

+    </string-array>

+

+    <string name="device_details_cnd">Container Definition</string>

+    <string name="device_details_modules">Modules</string>

+    <string name="device_details_model">Model</string>

+    <string name="device_details_manufacturer">Manufacturer</string>

+    <string name="device_details_description">Description</string>

+    <string name="device_details_type">Type</string>

+    <string name="device_details_location">Location</string>

+    <string name="device_details_protocol">Protocol</string>

+    <string name="settings_cse_url_label">URL</string>

+    <string name="settings_cse">CSE</string>

+    <string name="device_details_serialNumber">Serial number</string>

+    <string name="device_details_deviceName">Device name</string>

+    <string name="settings_cse_hostname">Hostname</string>

+    <string name="settings_cse_port">Port</string>

+    <string name="settings_cse_cseId">CSE Id</string>

+    <string name="settings_cse_cseName">CSE Name</string>

+

+</resources>
\ No newline at end of file
diff --git a/org.eclipse.om2m.android.dashboard/res/values-fr/strings.xml b/org.eclipse.om2m.android.dashboard/res/values-fr/strings.xml
new file mode 100644
index 0000000..f3c3870
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/values-fr/strings.xml
@@ -0,0 +1,400 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!--

+    Copyright (c) 2013, 2017 Orange.

+    All rights reserved. This program and the accompanying materials

+    are made available under the terms of the Eclipse Public License v1.0

+    which accompanies this distribution, and is available at

+    http://www.eclipse.org/legal/epl-v10.html

+   

+    Contributors:

+       BAREAU Cyrille <cyrille.bareau@orange.com>, 

+       BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+       BOLLE Sebastien <sebastien.bolle@orange.com>.

+ -->
+
+<resources>

+

+    <string name="app_name">Home Dashboard</string>

+    <string name="action_settings">Settings</string>

+    <string name="empty"></string>

+    <string name="main_applications">Applications installées</string>

+    <string name="main_store">Applications disponibles</string>

+    <string name="main_devices">Equipements</string>

+    <string name="main_config">Votre HAB</string>

+    <string name="main_users">Utilisateurs</string>

+    <string name="applications_title">Applications installées</string>

+    <string name="store_title">Magasin d\'applications</string>

+    <string name="config_title">Droits d\'accès</string>

+    <string name="devices_title">Equipements connectés</string>

+    <string name="users_title">Utilisateurs connectés</string>

+    <string name="settings_title">Options</string>

+    <string name="login_title">Connexion</string>

+    <string name="main_hab">votre HAB</string>

+    <string name="main_hab_state">Etat</string>

+    <string name="main_hab_fw">Firmware</string>

+    <string name="main_hab_state_ok">connecté</string>

+    <string name="main_hab_state_warning">partiellement connecté</string>

+    <string name="main_hab_state_error">non connecté</string>

+    <string name="main_hab_state_not_detected">non détecté</string>

+    <string name="main_hab_state_not_connected">non connecté</string>

+    <string name="main_btn_apps">apps</string>

+    <string name="main_btn_config">permissions</string>

+    <string name="main_btn_devs">ajouter un équipement</string>

+    <string name="main_btn_usrs">ajouter un utilisateur</string>

+    <string name="main_btn_delegate">déléguer les droits</string>

+    <string name="main_btn_replace">remplacer un équipement</string>

+    <string name="main_login_titles">Connexion</string>

+    <string name="main_login_needed">Vous n\'êtes pas connecté. Voir la configuration..</string>

+    <string name="main_login_wrong">L\'authentification a échoué. Veuillez réessayer...</string>

+    <string name="main_subtitle_app">accès rapides vers vos applications installées</string>

+    <string name="main_subtitle_dev">vos équipements connectés par catégorie</string>

+    <string name="main_subtitle_store">de nouvelles applications peuvent être téléchargées sur votre HAB</string>

+    <string name="main_subtitle_config">état de votre HAB et configuration des permissions</string>

+    <string name="main_dev_cat">équipement(s)</string>

+    <string name="main_dev_sup_cat" formatted="false">il y a %sup% autre(s) categorie(s)</string>

+    <string name="main_app_sup" formatted="false">il y a %sup% autre(s) application(s)</string>

+    <string name="main_config_action">configurer les permissions</string>

+    <string name="main_store_intro">Pour obtenir de nouvelles fonctionnalités et améliorer votre installation, vous pouvez télécharger de nouvelles applications depuis le magasin</string>

+    <string name="main_store_go">accéder au magasin</string>

+    <string name="card_cpu">CPU :</string>

+    <string name="card_ram">RAM :</string>

+    <string name="device_type_name">type</string>

+    <string name="device_name">nom</string>

+    <string name="device_description">description</string>

+    <string name="device_btn_detail">détails</string>

+    <string name="device_show_details">plus de détails</string>

+    <string name="device_remove_asso" formatted="false">supprimer l\'association</string>

+    <string name="device_replacement">Remplacement d\'un équipement</string>

+    <string name="device_replacement_select">Sélectionnez l\'équipement à remplacer dans la liste ci-dessous</string>

+    <string name="device_replacement_0_all">Liste de tous les équipements</string>

+    <string name="device_replacement_0_type">Liste des équipements de même type</string>

+    <string name="device_replacement_apply" formatted="false">Voulez-vous remplacer l\'équipement \"%dev_name%\" par un autre de même type %dev_type% ?</string>

+    <string name="device_replacement_select_new">Sélectionnez le nouvel équipement dans la liste ci-dessous</string>

+    <string name="device_replacement_nodevice_error">Aucun équipement similaire</string>

+    <string name="device_replacement_error">Erreur lors du remplacement : </string>

+    <string name="device_replacement_ok" formatted="false">Remplacement effectué. Vous pouvez désinstaller l\'équipement \"%dev_name%\"</string>

+    <string name="device_details_info">Informations :</string>

+    <string name="device_details_asso">Peut être utilisé par :</string>

+    <string name="device_details_check">Vérification de l\'équipement :</string>

+    <string name="device_details_state">Etat :</string>

+    <string name="device_details_btn_update">Modifier les associations</string>

+    <string name="device_details_btn_asso">Gérer les permissions</string>

+    <string name="device_details_btn_store">Souscrire à de nouveaux services\ncompatibles avec cet équipement</string>

+    <string name="device_details_msg_eject">Voulez vous vraiment déconnecter cet équipement ?\n\nLes applications associées à cet équipement ne fonctionneront peut être plus correctement.</string>

+    <string name="device_details_msg_eject_title">Déconnecter l\'équipement</string>

+    <string name="device_details_permissions_update_title">Mise à jour des permissions</string>

+    <string name="device_details_permissions_update_msg">Pendant la mise à jour des permissions, les applications sélectionnées vont redémarrer.\n\nVoulez vous réaliser la mise à jour ?</string>

+    <string name="device_details_no_access_rights">Vous n\'avez pas l\'autorisation d\'accéder à cet équipement</string>

+    <string name="device_details_no_access_rights_title">Device Access</string>

+    <string name="devices_addnewone_title">Installation d\'un nouvel équipement</string>

+    <string name="devices_addnewone_dev_type">Quel type d\'équipement souhaitez-vous installer ?</string>

+    <string name="devices_addnewone_dev_procedure">Procédure d\'installation :</string>

+    <string name="devices_addnewone_dev_type_zigbee">ZigBee</string>

+    <string name="devices_addnewone_dev_type_x3d">X3D</string>

+    <string name="devices_addnewone_dev_type_greennet">GreenNet</string>

+    <string name="devices_addnewone_dev_type_upnp">UPnP</string>

+    <string name="devices_addnewone_dev_type_agora">Agora</string>

+    <string name="devices_addnewone_dev_agora_msg">Il vous suffit de connecter votre équipement Agora à votre réseau.\n\nIl sera automatiquement détecté par votre HAB.</string>

+    <string name="devices_addnewone_dev_upnp_msg">Il vous suffit de connecter votre équipement UPnP à votre réseau.\n\nIl sera automatiquement détecté par votre HAB.</string>

+    <string name="devices_addnewone_dev_zigbee_msg" formatted="false">Tout ajout d\'un élément dans le réseau Zigbee nécessite l\'activation du mode \"appairage\" au niveau de son coordinateur.\n\nPour ce faire, suivez la procédure suivante :</string>

+    <string name="devices_addnewone_dev_step_1">1 - </string>

+    <string name="devices_addnewone_dev_step_2">2 - </string>

+    <string name="devices_addnewone_dev_step_3">3 - </string>

+    <string name="devices_addnewone_dev_step_4">4 - </string>

+    <string name="devices_addnewone_dev_zigbee_submsg_1">Vérifier que le coordinateur Zigbee est bien inséré dans le port USB de votre HAB</string>

+    <string name="devices_addnewone_dev_zigbee_submsg_2" formatted="false">Activer le mode \"appairage\" de votre coordinateur</string>

+    <string name="devices_addnewone_dev_zigbee_submsg_2_1">. Si votre coordinateur possède un bouton d\'appairage, appuyer sur ce dernier.</string>

+    <string name="devices_addnewone_dev_zigbee_submsg_2_2">. Sinon, appuyer sur le bouton d\'appairage générique de votre HAB.</string>

+    <string name="devices_addnewone_dev_zigbee_submsg_3" formatted="false">Connecter votre nouvel équipement ZigBee au réseau en activant son mode \"appairage\". (cf. notice)</string>

+    <string name="devices_addnewone_dev_zigbee_submsg_4">L\'appairage va s\'effectuer entre votre coordinateur et ce nouvel équipement. Une fois terminé, votre équipement sera visible et fonctionnel.</string>

+    <string name="application_simple_name">APP NAME</string>

+    <string name="application_simple_version">Version :</string>

+    <string name="application_simple_state">Etat :</string>

+    <string name="application_simple_details">Détails</string>

+    <string name="application_simple_noasso">il n\'y a pas d\'équipement associé avec cette application</string>

+    <string name="application_simple_update">une mise à jour est disponible</string>

+    <string name="application_show_details">plus de détails</string>

+    <string name="application_remove_asso" formatted="false">supprimer l \'association</string>

+    <string name="application_config_title" formatted="false">Configuration de \"%app_name%\"</string>

+    <string name="application_details_servicename">Service :</string>

+    <string name="application_details_serviceversion">Version du service :</string>

+    <string name="application_details_title">Application</string>

+    <string name="application_details_info">Informations :</string>

+    <string name="application_details_compo">Composition :</string>

+    <string name="application_details_version">Version :</string>

+    <string name="application_details_state">Etat :</string>

+    <string name="application_details_installdate">Date d\'installation :</string>

+    <string name="application_details_resources">Ressources utilisées :</string>

+    <string name="application_details_resource_unavailable">non disponible</string>

+    <string name="application_details_ram">RAM :</string>

+    <string name="application_details_cpu">CPU (temps d\'utilisation) :</string>

+    <string name="application_details_threads">Nombre de threads :</string>

+    <string name="application_details_sockets">Nombre de sockets :</string>

+    <string name="application_details_flash">Taille mémoire :</string>

+    <string name="application_details_bandwidth">Bande passante :</string>

+    <string name="application_details_ram_value" formatted="false">%VALUE% bytes</string>

+    <string name="application_details_cpu_value" formatted="false">%VALUE% %</string>

+    <string name="application_details_threads_value" formatted="false">%VALUE% thread(s)</string>

+    <string name="application_details_sockets_value" formatted="false">%VALUE% socket(s)</string>

+    <string name="application_details_flash_value" formatted="false">%VALUE% bytes</string>

+    <string name="application_details_bandwidth_value" formatted="false">%VALUE% bytes/s</string>

+    <string name="application_details_update">Mise à jour :</string>

+    <string name="application_details_update_btn">Mettre à jour</string>

+    <string name="application_details_update_msg1">Une mise à jour est disponible.</string>

+    <string name="application_details_update_msg2">Lors de l\'installation de la mise à jour, l\'application sera momentanément hors service.</string>

+    <string name="application_details_config">Configuration :</string>

+    <string name="application_details_config_btn">Configurer</string>

+    <string name="application_details_permissions">Permissions :</string>

+    <string name="application_details_bundle_3rd">Tiers</string>

+    <string name="application_details_bundle_op">Opérateur</string>

+    <string name="application_details_monitoring_activated">Le monitoring de l\'application est activé</string>

+    <string name="application_details_monitoring_unactivated">Le monitoring de l\'application est désactivé</string>

+    <string name="application_details_btn_now">maintenant</string>

+    <string name="application_details_btn_later">plus tard</string>

+    <string name="application_details_btn_no">non</string>

+    <string name="application_details_msg_update">Pendant la mise à jour, cette application ne sera plus fonctionnelle temporairement.\n\nVoulez vous réaliser la mise à jour ?</string>

+    <string name="application_details_msg_update_title">Mise à jour</string>

+    <string name="application_details_msg_uninstall">Voulez vous vraiment désinstaller cette application ?</string>

+    <string name="application_details_msg_uninstall_title">Désinstallation</string>

+    <string name="application_details_no_config">Il n\'y a pas d\'interface de configuration pour cette application</string>

+    <string name="application_details_no_access_rights">Vous n\'avez pas l\'autorisation d\'accéder à cette application</string>

+    <string name="application_details_no_uninstall_rights">Vous n\'avez pas l\'autorisation de supprimer cette application</string>

+    <string name="application_details_permissions_btn">Gérer les permissions</string>

+    <string name="application_details_permissions_msg">permissions établies entre</string>

+    <string name="application_details_permissions_update_title">Mise à jour des permissions</string>

+    <string name="application_details_permissions_update_msg">Pendant la mise à jour des permissions, l\'application va redémarrer.\n\nVoulez vous réaliser la mise à jour ?</string>

+    <string name="application_details_startstop">Démarrer</string>

+    <string name="application_details_description">---</string>

+    <string name="application_details_msgRunning">L\'application est démarrée</string>

+    <string name="application_details_msgNotRunning">L\'application est arrêtée</string>

+    <string name="application_details_btnStop">Arrêter</string>

+    <string name="application_details_btnStart">Démarrer</string>

+    <string name="application_details_stopped">(arrêtée)</string>

+    <string name="application_details_not_accessible">Non accessible</string>

+    <string name="dialog_btn_ok">OK</string>

+    <string name="dialog_btn_yes">Oui</string>

+    <string name="dialog_btn_no">Non</string>

+    <string name="dialog_btn_cancel">Annuler</string>

+    <string name="dialog_btn_apply">Appliquer</string>

+    <string name="dialog_btn_validate">Valider</string>

+    <string name="dialog_btn_create">Créer</string>

+    <string name="dialog_btn_modify">Modifier</string>

+    <string name="config_devices">Equipements associés</string>

+    <string name="config_application">Application</string>

+    <string name="config_device_name">Device xxxx</string>

+    <string name="config_app_name">Application xxxx</string>

+    <string name="config_serv_name">Service xxxx</string>

+    <string name="config_btn_update">Modifier</string>

+    <string name="config_btn_associate">Associer</string>

+    <string name="config_asso">associé à</string>

+    <string name="config_update_title_dev" formatted="false">Sélectionnez les applications ayant le droit d\'utiliser \"%dev_name%\"</string>

+    <string name="config_update_title_app" formatted="false">Sélectionnez les équipements qui peuvent être utilisés par \"%app_name%\"</string>

+    <string name="config_update_noapp">Aucune des applications installées ne peut utiliser cet équipement</string>

+    <string name="config_update_nodev">Aucun des équipements connectés ne peut être utilisé par cette application</string>

+    <string name="menu_settings">options</string>

+    <string name="menu_help">aide</string>

+    <string name="menu_login">Connexion</string>

+    <string name="settings_hab_ip">Adresse IP de la HAB :</string>

+    <string name="settings_hab_port">Port de la HAB :</string>

+    <string name="settings_activateWizard">Réactiver tous les wizards</string>

+    <string name="settings_autoDiscorevy">Découverte automatique de la HAB</string>

+    <string name="settings_manualDiscorevy">Découverte manuelle de la HAB</string>

+    <string name="settings_discovered_ip">HAB découverte à l\'ip :</string>

+    <string name="settings_no_hab">pas de HAB détectée</string>

+    <string name="settings_version">version du dasboard : %version%</string>

+    <string name="settings_language_en">english</string>

+    <string name="settings_language_fr">français</string>

+    <string name="login_current">%current%</string>

+    <string name="login_cse_login">Identifiant :</string>

+    <string name="login_cse_pwd">Mot de passe :</string>

+    <string name="wizard_application_simple_mainMsg">Cet écran regroupe toutes les applications installées sur votre HAB</string>

+    <string name="wizard_application_simple_actions">Actions :</string>

+    <string name="wizard_application_simple_action_uninstall">désinstaller une application</string>

+    <string name="wizard_application_simple_action_config">configurer une application</string>

+    <string name="wizard_application_simple_action_details">afficher plus de détails sur une application</string>

+    <string name="wizard_application_details_action_device">afficher plus d\'informations sur un équipement associé à une application. "click long" pour supprimer l\'association</string>

+    <string name="wizard_application_details_action_asso">associer cette application à des équipements</string>

+    <string name="wizard_application_details_mainMsg">Cet écran regroupe les informations détaillées de l\'application</string>

+    <string name="wizard_application_details_actions">Actions :</string>

+    <string name="wizard_application_details_action_uninstall">désinstaller l\'application</string>

+    <string name="wizard_application_details_action_config">configurer l\'application / modifier les permissions</string>

+    <string name="wizard_application_details_action_openclose">ouvrir / fermer une section</string>

+    <string name="wizard_device_details_mainMsg">Cet écran regroupe les informations détaillées de l\'équipement</string>

+    <string name="wizard_device_details_actions">Actions :</string>

+    <string name="wizard_device_details_action_eject">déconnecter l\'équipement en toute sécurité</string>

+    <string name="wizard_device_details_action_check">afficher les paramètres et commandes de l\'équipement pour le tester</string>

+    <string name="wizard_device_details_action_asso">associer l\'équipement à des applications</string>

+    <string name="wizard_device_details_action_app">afficher plus d\'informations sur une application associée à l\'équipement. "click long" pour supprimer l\'association</string>

+    <string name="wizard_device_simple_mainMsg">Cet écran regroupe tous les équipements connectés à votre HAB</string>

+    <string name="wizard_device_simple_actions">Actions :</string>

+    <string name="wizard_device_simple_action_details">afficher plus de détails sur un équipement</string>

+    <string name="wizard_device_simple_action_add">installer un nouvel équipement</string>

+    <string name="wizard_device_simple_action_moreless">ouvrir/fermer la categorie</string>

+    <string name="wizard_config_mainMsg">Cet écran présente les équipements pouvant être utilisés par chaque application</string>

+    <string name="wizard_config_actions">Actions :</string>

+    <string name="wizard_config_action_update">modifier les permissions</string>

+    <string name="wizard_config_action_device">afficher plus d\'informations sur un équipement</string>

+    <string name="wizard_config_action_app">afficher plus d\'informations sur une application</string>

+    <string name="wizard_user_simple_mainMsg">Cet écran regroupe tous les comptes utilisateurs existants</string>

+    <string name="wizard_user_simple_action_add">créer un nouveau compte utilisateur</string>

+    <string name="wizard_user_simple_action_details">afficher plus de détails sur un utilisateur</string>

+    <string name="wizard_user_details_mainMsg">Cet écran présente les droits d\'accès de l\'utilisateur sélectionné</string>

+    <string name="wizard_user_details_action_delete">supprimer le compte utilisateur</string>

+    <string name="wizard_user_details_action_update">modifier les droits d\'accès de l\'utilisateur</string>

+    <string name="usr_details_title">Utilisateur</string>

+    <string name="usr_details_access_rights">Droits d\'accès :</string>

+    <string name="usr_details_access_rights_msg">Droits d\'accès sur</string>

+    <string name="user_details_no_access_rights">Vous n\'avez pas l\'autorisation d\'accéder aux comptes utilisateurs</string>

+    <string name="user_details_no_access_rights_title">Accès aux comptes utilisateurs</string>

+    <string name="appstore_no_access_rights_title">Accès au magasin d\'applications</string>

+    <string name="appstore_no_access_rights">Vous n\'avez pas l\'autorisation d\'accéder au magasin d\'applications</string>

+    <string name="user_add_title">Ajout d\'un nouvel utilisateur</string>

+    <string name="user_add_create">Création d\'un nouvel utilisateur</string>

+    <string name="add_user_creator">Créateur :</string>

+    <string name="add_user_type">Type :</string>

+    <string name="add_user_name">Nom :</string>

+    <string name="add_user_empty_name">Le nom ne peut être vide</string>

+    <string name="add_user_empty_password">Le mot de passe ne peut être vide</string>

+    <string name="add_user_image">Image :</string>

+    <string name="user_delegation">Délégation de droits utilisateurs</string>

+    <string name="user_delegation_no_config">L\'application de délégation n\'est pas disponible</string>

+    <string name="user_delegation_no_access_rights">Vous n\'avez pas l\'autorisation d\'accéder à cette application</string>

+    <string name="user_details_msg_remove_title">Suppression d\'utilisateur</string>

+    <string name="user_details_msg_create_title">Création d\'utilisateur</string>

+    <string name="user_details_no_remove_rights">Vous n\'avez pas l\'autorisation de supprimer cet utilisateur</string>

+    <string name="user_details_no_create_rights">Vous n\'avez pas l\'autorisation de créer des utilisateurs</string>

+    <string name="user_details_msg_remove_user" formatted="false">Voulez-vous vraiment supprimer l\'utilisateur %usr_name% ?</string>

+    <string name="user_details_rights_btn">Gestion des droits d\'accès</string>

+    <string name="user_details_rights_update_title">Modification des droits d\'accès</string>

+    <string name="user_details_rights_update_msg" formatted="false">Voulez-vous vraiment modifier les droits d\'accès de %usr_id%?</string>

+    <string name="user_details_rights_help_title">Description des droits d\'accès</string>

+    <string name="user_type_admins_list">Administrateurs</string>

+    <string name="user_type_family_list">Famille</string>

+    <string name="user_type_friends_list">Amis</string>

+    <string name="user_type_admin">Administrateur</string>

+    <string name="user_type_family">Famille</string>

+    <string name="user_type_friend">Ami</string>

+    <string name="user_type_admins_icon">Admins</string>

+    <string name="user_type_family_icon">Famille</string>

+    <string name="user_type_friends_icon">Amis</string>

+    <string name="hello_world">Hello world!</string>

+    <string name="title_activity_otbusers">OTBUsersActivity</string>

+

+    <string-array name="avatar_imgs">

+        <item>@drawable/radio_btn_avatar_businessman</item>

+        <item>@drawable/radio_btn_avatar_male</item>

+        <item>@drawable/radio_btn_avatar_female</item>

+        <item>@drawable/radio_btn_avatar_male_headset</item>

+        <item>@drawable/radio_btn_avatar_female_headset</item>

+        <item>@drawable/radio_btn_avatar_boy</item>

+        <item>@drawable/radio_btn_avatar_girl</item>

+        <item>@drawable/radio_btn_avatar_grandpa</item>

+        <item>@drawable/radio_btn_avatar_grandma</item>

+    </string-array>

+    <string-array name="devices">

+        <item>deviceAirConditioner</item>

+        <item>Climatiseurs</item>

+        <item></item>

+        <item>deviceClothesWasher</item>

+        <item>Lave-linge</item>

+        <item></item>

+        <item>deviceElectricVehicleCharger</item>

+        <item>Chargeurs électriques</item>

+        <item></item>

+        <item>deviceLight</item>

+        <item>Ampoules</item>

+        <item>@drawable/otb_picto_dev_cat_light</item>

+        <item>deviceMicrogeneration</item>

+        <item>Micro-générateurs</item>

+        <item></item>

+        <item>deviceOven</item>

+        <item>Fours</item>

+        <item></item>

+        <item>deviceRefrigerator</item>

+        <item>Réfrigérateurs</item>

+        <item></item>

+        <item>deviceRobotCleaner</item>

+        <item>Robots aspirateurs</item>

+        <item></item>

+        <item>deviceSmartElectricMeter</item>

+        <item>Smart Electric Meters</item>

+        <item>@drawable/otb_picto_dev_cat_gauge</item>

+        <item>deviceStorageBattery</item>

+        <item>Batteries</item>

+        <item>@drawable/otb_picto_dev_cat_battery</item>

+        <item>deviceTelevision</item>

+        <item>Télévisionss</item>

+        <item></item>

+        <item>deviceThermostat</item>

+        <item>Thermostats</item>

+        <item></item>

+        <item>deviceWaterHeater</item>

+        <item>Bouilloires</item>

+        <item></item>

+        <item>deviceDoor</item>

+        <item>Portes</item>

+        <item>@drawable/otb_picto_dev_cat_door</item>

+        <item>deviceSmokeExtractor</item>

+        <item>Extracteurs de fumée</item>

+        <item>@drawable/otb_picto_dev_cat_smokeextractor</item>

+        <item>deviceSwitchButton</item>

+        <item>Boutons poussoirs</item>

+        <item>@drawable/otb_picto_dev_cat_switchbutton</item>

+        <item>deviceWarningDevice</item>

+        <item>Alarmes</item>

+        <item>@drawable/otb_picto_dev_cat_warningdevice</item>

+        <item>deviceGasValve</item>

+        <item>Valves de gaz</item>

+        <item>@drawable/otb_picto_dev_cat_gasvalve</item>

+        <item>deviceWaterValve</item>

+        <item>Valves d\'eau</item>

+        <item>@drawable/otb_picto_dev_cat_watervalve</item>

+        <item>deviceFloodDetector</item>

+        <item>Détecteurs d\'inondation</item>

+        <item>@drawable/otb_picto_dev_cat_flooddetector</item>

+        <item>deviceMotionDetector</item>

+        <item>Détecteurs de mouvement</item>

+        <item>@drawable/otb_picto_dev_cat_motiondetector</item>

+        <item>deviceSmokeDetector</item>

+        <item>Détecteurs de fumée</item>

+        <item>@drawable/otb_picto_dev_cat_smokedetector</item>

+        <item>deviceTemperatureDetector</item>

+        <item>Détecteurs de température</item>

+        <item>@drawable/otb_picto_dev_cat_thermometer</item>

+        <item>deviceContactDetector</item>

+        <item>Détecteurs de contact</item>

+        <item>@drawable/otb_picto_dev_cat_contactsensor</item>

+        <item>deviceCamera</item>

+        <item>Caméras</item>

+        <item>@drawable/otb_picto_dev_cat_camera</item>

+        <item>deviceWeatherStation</item>

+        <item>Stations météo</item>

+        <item>@drawable/otb_picto_dev_cat_weatherstation</item>

+        <item>deviceCoffeeMachine</item>

+        <item>Cafetières</item>

+        <item>@drawable/otb_picto_dev_cat_coffeemachine</item>

+        <item>default</item>

+        <item>Autres SDT</item>

+        <item>@drawable/otb_picto_dev_cat_sdt</item>

+        <item>undefined</item>

+        <item>Autres</item>

+        <item>@drawable/otb_picto_dev_cat_sdt</item>

+    </string-array>

+

+    <string name="device_details_cnd">Container Definition</string>

+    <string name="device_details_modules">Modules</string>

+    <string name="device_details_model">Modèle</string>

+    <string name="device_details_manufacturer">Constructeur</string>

+    <string name="device_details_description">Description</string>

+    <string name="device_details_location">Emplacement</string>

+    <string name="device_details_type">Type</string>

+    <string name="settings_cse_url_label">URL</string>

+    <string name="settings_cse">CSE</string>

+    <string name="device_details_serialNumber">Numéro de série</string>

+    <string name="device_details_deviceName">Nom de l\'équipement</string>

+    <string name="settings_cse_hostname">Serveur</string>

+    <string name="settings_cse_port">Port</string>

+    <string name="settings_cse_cseId">CSE Id</string>

+    <string name="settings_cse_cseName">CSE Name</string>

+

+</resources>
\ No newline at end of file
diff --git a/org.eclipse.om2m.android.dashboard/res/values-sw600dp/dimens.xml b/org.eclipse.om2m.android.dashboard/res/values-sw600dp/dimens.xml
new file mode 100644
index 0000000..34e7124
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/values-sw600dp/dimens.xml
@@ -0,0 +1,27 @@
+<!--

+    Copyright (c) 2013, 2017 Orange.

+    All rights reserved. This program and the accompanying materials

+    are made available under the terms of the Eclipse Public License v1.0

+    which accompanies this distribution, and is available at

+    http://www.eclipse.org/legal/epl-v10.html

+   

+    Contributors:

+       BAREAU Cyrille <cyrille.bareau@orange.com>, 

+       BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+       BOLLE Sebastien <sebastien.bolle@orange.com>.

+ -->
+<resources>

+

+    <!--

+         Customize dimensions originally defined in res/values/dimens.xml (such as

+         screen margins) for sw600dp devices (e.g. 7" tablets) here.

+    -->

+    <dimen name="title_size">28sp</dimen>

+    <dimen name="indicator_height">50dp</dimen>

+    <dimen name="indicator_width">100dp</dimen>

+    <dimen name="indicator_text_size">20sp</dimen>

+    <dimen name="list_margin_top">100dp</dimen>

+    <dimen name="indicator_text_size_big">25sp</dimen>

+    

+

+</resources>
\ No newline at end of file
diff --git a/org.eclipse.om2m.android.dashboard/res/values-sw720dp-land/dimens.xml b/org.eclipse.om2m.android.dashboard/res/values-sw720dp-land/dimens.xml
new file mode 100644
index 0000000..096a93c
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/values-sw720dp-land/dimens.xml
@@ -0,0 +1,21 @@
+<!--

+    Copyright (c) 2013, 2017 Orange.

+    All rights reserved. This program and the accompanying materials

+    are made available under the terms of the Eclipse Public License v1.0

+    which accompanies this distribution, and is available at

+    http://www.eclipse.org/legal/epl-v10.html

+   

+    Contributors:

+       BAREAU Cyrille <cyrille.bareau@orange.com>, 

+       BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+       BOLLE Sebastien <sebastien.bolle@orange.com>.

+ -->
+<resources>

+

+    <!--

+         Customize dimensions originally defined in res/values/dimens.xml (such as

+         screen margins) for sw720dp devices (e.g. 10" tablets) in landscape here.

+    -->

+    <dimen name="activity_horizontal_margin">128dp</dimen>

+

+</resources>
\ No newline at end of file
diff --git a/org.eclipse.om2m.android.dashboard/res/values-v11/styles.xml b/org.eclipse.om2m.android.dashboard/res/values-v11/styles.xml
new file mode 100644
index 0000000..17b4a46
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/values-v11/styles.xml
Binary files differ
diff --git a/org.eclipse.om2m.android.dashboard/res/values-v14/styles.xml b/org.eclipse.om2m.android.dashboard/res/values-v14/styles.xml
new file mode 100644
index 0000000..d0e6e21
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/values-v14/styles.xml
@@ -0,0 +1,24 @@
+<!--

+    Copyright (c) 2013, 2017 Orange.

+    All rights reserved. This program and the accompanying materials

+    are made available under the terms of the Eclipse Public License v1.0

+    which accompanies this distribution, and is available at

+    http://www.eclipse.org/legal/epl-v10.html

+   

+    Contributors:

+       BAREAU Cyrille <cyrille.bareau@orange.com>, 

+       BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+       BOLLE Sebastien <sebastien.bolle@orange.com>.

+ -->
+<resources>

+

+    <!--

+        Base application theme for API 14+. This theme completely replaces

+        AppBaseTheme from BOTH res/values/styles.xml and

+        res/values-v11/styles.xml on API 14+ devices.

+    -->

+    <style name="AppBaseTheme" parent="android:Theme.Holo.Light.DarkActionBar">

+        <!-- API 14 theme customizations can go here. -->

+    </style>

+

+</resources>
\ No newline at end of file
diff --git a/org.eclipse.om2m.android.dashboard/res/values-w820dp/dimens.xml b/org.eclipse.om2m.android.dashboard/res/values-w820dp/dimens.xml
new file mode 100644
index 0000000..e1abdf9
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/values-w820dp/dimens.xml
@@ -0,0 +1,22 @@
+<!--

+    Copyright (c) 2013, 2017 Orange.

+    All rights reserved. This program and the accompanying materials

+    are made available under the terms of the Eclipse Public License v1.0

+    which accompanies this distribution, and is available at

+    http://www.eclipse.org/legal/epl-v10.html

+   

+    Contributors:

+       BAREAU Cyrille <cyrille.bareau@orange.com>, 

+       BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+       BOLLE Sebastien <sebastien.bolle@orange.com>.

+ -->
+<resources>

+

+    <!--

+         Example customization of dimensions originally defined in res/values/dimens.xml

+         (such as screen margins) for screens with more than 820dp of available width. This

+         would include 7" and 10" devices in landscape (~960dp and ~1280dp respectively).

+    -->

+    <dimen name="activity_horizontal_margin">64dp</dimen>

+

+</resources>

diff --git a/org.eclipse.om2m.android.dashboard/res/values/attrs.xml b/org.eclipse.om2m.android.dashboard/res/values/attrs.xml
new file mode 100644
index 0000000..a8e88ab
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/values/attrs.xml
@@ -0,0 +1,60 @@
+<!--

+    Copyright (c) 2013, 2017 Orange.

+    All rights reserved. This program and the accompanying materials

+    are made available under the terms of the Eclipse Public License v1.0

+    which accompanies this distribution, and is available at

+    http://www.eclipse.org/legal/epl-v10.html

+   

+    Contributors:

+       BAREAU Cyrille <cyrille.bareau@orange.com>, 

+       BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+       BOLLE Sebastien <sebastien.bolle@orange.com>.

+ -->
+<resources>

+

+    <!--

+         Declare custom theme attributes that allow changing which styles are

+         used for button bars depending on the API level.

+         ?android:attr/buttonBarStyle is new as of API 11 so this is

+         necessary to support previous API levels.

+    -->

+    <declare-styleable name="ButtonBarContainerTheme">

+        <attr name="buttonBarStyle" format="reference" />

+        <attr name="buttonBarButtonStyle" format="reference" />

+    </declare-styleable>

+    <declare-styleable name="ActionComponent">

+        <attr name="actionLabel" format="string" />

+    </declare-styleable>

+

+    <!-- 

+    <declare-styleable name="DeviceTypeContainerView">

+        <attr name="name" format="string" />

+    </declare-styleable>-->        

+    

+    <declare-styleable name="CustomLine">

+        <attr name="orientation" format="enum" >

+            <enum name="horizontal" value="0" />

+            <enum name="vertical" value="1" />

+        </attr> 

+        <attr name="dashed" format="boolean" />

+        <attr name="color" format="reference" />

+        <attr name="dashWidth" format="integer" />

+        <attr name="dashGap" format="integer" />

+        <attr name="thickness" format="integer" />        

+        <attr name="shadow" format="boolean" />      

+        <attr name="toto" format="boolean" />

+    </declare-styleable>

+    

+    <declare-styleable name="WizardCard">

+        <attr name="type" format="enum" >

+            <enum name="applicationSimple" value="0" />

+            <enum name="applicationDetails" value="1" />

+            <enum name="deviceSimple" value="2" />

+            <enum name="deviceDetails" value="3" />

+            <enum name="config" value="4" />

+            <enum name="userDetails" value="5" />

+            <enum name="userSimple" value="6" />

+            </attr>         

+    </declare-styleable>

+    

+</resources>
\ No newline at end of file
diff --git a/org.eclipse.om2m.android.dashboard/res/values/colors.xml b/org.eclipse.om2m.android.dashboard/res/values/colors.xml
new file mode 100644
index 0000000..dd8964c
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/values/colors.xml
@@ -0,0 +1,36 @@
+<!--

+    Copyright (c) 2013, 2017 Orange.

+    All rights reserved. This program and the accompanying materials

+    are made available under the terms of the Eclipse Public License v1.0

+    which accompanies this distribution, and is available at

+    http://www.eclipse.org/legal/epl-v10.html

+   

+    Contributors:

+       BAREAU Cyrille <cyrille.bareau@orange.com>, 

+       BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+       BOLLE Sebastien <sebastien.bolle@orange.com>.

+ -->
+<resources>

+

+    <color name="background">#ffc6c6c6</color>    

+    <color name="list_background">#ffe0e0e0</color>

+    

+    <color name="gray">#ff878787</color>

+    <color name="soft_gray">#ffc6c6c6</color>

+    <color name="very_soft_gray">#fff2f2f2</color>

+    <color name="white">#ffffffff</color>    

+    <color name="black">#ff000000</color>    

+    <color name="transparent">#00000000</color>

+    

+    <color name="otb_red">#ffbe1f2e</color>

+    <color name="otb_green">#ff009444</color>

+    <color name="otb_orange">#fff78b1e</color>

+    <color name="otb_blue">#ff25b2ce</color>

+    <color name="otb_pale_green">#ffA6D785</color>

+    

+    

+    <color name="otb_red_transparent">#44be1f2e</color>

+    

+    <color name="otb_dark_gray">#ff404040</color>

+    <color name="solf_background">#ffe2e2e2</color>

+</resources>
\ No newline at end of file
diff --git a/org.eclipse.om2m.android.dashboard/res/values/colors_custom_theme.xml b/org.eclipse.om2m.android.dashboard/res/values/colors_custom_theme.xml
new file mode 100644
index 0000000..40e2239
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/values/colors_custom_theme.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!-- File created by the Android Action Bar Style Generator

+

+     Copyright (C) 2011, 2017 The Android Open Source Project

+     Copyright (C) 2012 readyState Software Ltd

+

+     Licensed under the Apache License, Version 2.0 (the "License");

+     you may not use this file except in compliance with the License.

+     You may obtain a copy of the License at

+  

+          http://www.apache.org/licenses/LICENSE-2.0

+  

+     Unless required by applicable law or agreed to in writing, software

+     distributed under the License is distributed on an "AS IS" BASIS,

+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+     See the License for the specific language governing permissions and

+     limitations under the License.

+-->
+

+<resources>

+    <color name="pressed_custom_theme">#CC33B5E5</color>

+</resources>

diff --git a/org.eclipse.om2m.android.dashboard/res/values/dimens.xml b/org.eclipse.om2m.android.dashboard/res/values/dimens.xml
new file mode 100644
index 0000000..c25bea8
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/values/dimens.xml
@@ -0,0 +1,26 @@
+<!--

+    Copyright (c) 2013, 2017 Orange.

+    All rights reserved. This program and the accompanying materials

+    are made available under the terms of the Eclipse Public License v1.0

+    which accompanies this distribution, and is available at

+    http://www.eclipse.org/legal/epl-v10.html

+   

+    Contributors:

+       BAREAU Cyrille <cyrille.bareau@orange.com>, 

+       BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+       BOLLE Sebastien <sebastien.bolle@orange.com>.

+ -->
+<resources>

+

+    <!-- Default screen margins, per the Android Design guidelines. -->

+    <dimen name="activity_horizontal_margin">16dp</dimen>

+    <dimen name="activity_vertical_margin">16dp</dimen>

+    <dimen name="title_size">16sp</dimen>

+    <dimen name="indicator_height">25dp</dimen>

+    <dimen name="indicator_width">50dp</dimen>

+    <dimen name="indicator_text_size">15sp</dimen>

+    <dimen name="list_margin_top">50dp</dimen>

+    <dimen name="indicator_text_size_big">17sp</dimen>

+	

+    <dimen name="menu_title_size">18sp</dimen>

+</resources>
\ No newline at end of file
diff --git a/org.eclipse.om2m.android.dashboard/res/values/strings.xml b/org.eclipse.om2m.android.dashboard/res/values/strings.xml
new file mode 100644
index 0000000..c3d939b
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/values/strings.xml
@@ -0,0 +1,404 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!--

+    Copyright (c) 2013, 2017 Orange.

+    All rights reserved. This program and the accompanying materials

+    are made available under the terms of the Eclipse Public License v1.0

+    which accompanies this distribution, and is available at

+    http://www.eclipse.org/legal/epl-v10.html

+   

+    Contributors:

+       BAREAU Cyrille <cyrille.bareau@orange.com>, 

+       BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+       BOLLE Sebastien <sebastien.bolle@orange.com>.

+ -->
+
+<resources>

+

+    <string name="app_name">Home Dashboard</string>

+    <string name="action_settings">Settings</string>

+    <string name="empty"></string>

+    <string name="main_applications">Installed applications</string>

+    <string name="main_store">Available applications</string>

+    <string name="main_devices">Connected devices</string>

+    <string name="main_config">Dashboard</string>

+    <string name="main_users">Users</string>

+    <string name="applications_title">Installed applications</string>

+    <string name="store_title">Applications Store</string>

+    <string name="config_title">Permissions</string>

+    <string name="devices_title">Connected devices</string>

+    <string name="users_title">Connected users</string>

+    <string name="settings_title">Settings</string>

+    <string name="login_title">Connection</string>

+    <string name="main_cse">Dashboard is </string>

+    <string name="main_cse_state">Status</string>

+    <string name="main_cse_fw">Firmware</string>

+    <string name="main_cse_state_ok">is connected</string>

+    <string name="main_cse_state_warning">is partially operational</string>

+    <string name="main_cse_state_error">is not connected</string>

+    <string name="main_cse_state_not_detected">is not detected</string>

+    <string name="main_cse_state_not_connected">is not connected</string>

+    <string name="main_btn_apps">apps</string>

+    <string name="main_btn_config">permissions</string>

+    <string name="main_btn_devs">add device</string>

+    <string name="main_btn_usrs">add user</string>

+    <string name="main_btn_delegate">delegate rights</string>

+    <string name="main_btn_replace">replace device</string>

+    <string name="main_login_titles">Login</string>

+    <string name="main_login_needed">You are not logged in. See Settings.</string>

+    <string name="main_login_wrong">Authentication failed. Retry...</string>

+    <string name="main_subtitle_app">quick access to your installed applications</string>

+    <string name="main_subtitle_dev">your connected devices by category</string>

+    <string name="main_subtitle_store">new applications can be downloaded on your HAB</string>

+    <string name="main_subtitle_config">the status of your HAB and permissions configuration</string>

+    <string name="main_dev_cat">device(s)</string>

+    <string name="main_dev_sup_cat" formatted="false">there is %sup% other category(ies)</string>

+    <string name="main_app_sup" formatted="false">there is %sup% other application(s)</string>

+    <string name="main_config_action">configure permissions</string>

+    <string name="main_store_intro">For new features and optimize your installation, you can download new applications from the Applications Store</string>

+    <string name="main_store_go">access the store</string>

+    <string name="card_cpu">CPU:</string>

+    <string name="card_ram">RAM:</string>

+    <string name="device_type_name">type</string>

+    <string name="device_name">name</string>

+    <string name="device_description">description</string>

+    <string name="device_btn_detail">details</string>

+    <string name="device_show_details">more details</string>

+    <string name="device_remove_asso" formatted="false">remove association</string>

+    <string name="device_replacement">Device Replacement</string>

+    <string name="device_replacement_select">Select the device to be replaced in the following list</string>

+    <string name="device_replacement_0_all">List of all devices</string>

+    <string name="device_replacement_0_type">List of similar devices</string>

+    <string name="device_replacement_apply" formatted="false">Do replace the device \"%dev_name%\" by another device of same type %dev_type%?</string>

+    <string name="device_replacement_select_new">Select the new device in the following list</string>

+    <string name="device_replacement_nodevice_error">No similar device</string>

+    <string name="device_replacement_error">Error during device replacement: </string>

+    <string name="device_replacement_ok" formatted="false">Device replacement performed. You can uninstall device \"%dev_name%\"</string>

+    <string name="device_details_info">Informations:</string>

+    <string name="device_details_asso">Could be used by:</string>

+    <string name="device_details_check">Check the device:</string>

+    <string name="device_details_state">Status:</string>

+    <string name="device_details_btn_update">Update associations</string>

+    <string name="device_details_btn_asso">Manage permissions</string>

+    <string name="device_details_btn_store">Subscribe to new services\nfor your devices</string>

+    <string name="device_details_msg_eject">Do you really want to disconnect this device?\n\nAssociated applications with this device could be affected.</string>

+    <string name="device_details_msg_eject_title">Disconnect this device</string>

+    <string name="device_details_permissions_update_title">Permissions update</string>

+    <string name="device_details_permissions_update_msg">During the permissions update, the selected applications will restart.\n\nDo you want to perform the update?</string>

+    <string name="device_details_no_access_rights">You are not allowed to access this device</string>

+    <string name="device_details_no_access_rights_title">Device Access</string>

+    <string name="devices_addnewone_title">Install a new device</string>

+    <string name="devices_addnewone_dev_type">Which type of device would you like to install?</string>

+    <string name="devices_addnewone_dev_procedure">Installation procedure:</string>

+    <string name="devices_addnewone_dev_type_zigbee">ZigBee</string>

+    <string name="devices_addnewone_dev_type_x3d">X3D</string>

+    <string name="devices_addnewone_dev_type_greennet">GreenNet</string>

+    <string name="devices_addnewone_dev_type_upnp">UPnP</string>

+    <string name="devices_addnewone_dev_type_agora">Agora</string>

+    <string name="devices_addnewone_dev_agora_msg">You just have to connect your Agora device on the network.\n\nIt will be automatically discovered by your HAB.</string>

+    <string name="devices_addnewone_dev_upnp_msg">You just have to connect your Upnp device on the network.\n\nIt will be automatically discovered by your HAB.</string>

+    <string name="devices_addnewone_dev_zigbee_msg" formatted="false">While adding an element in the Zigbee network requires the activation of \"pairing mode\" at its coordinator\n\nTo do this, follow these steps:</string>

+    <string name="devices_addnewone_dev_step_1">1 - </string>

+    <string name="devices_addnewone_dev_step_2">2 - </string>

+    <string name="devices_addnewone_dev_step_3">3 - </string>

+    <string name="devices_addnewone_dev_step_4">4 - </string>

+    <string name="devices_addnewone_dev_zigbee_submsg_1">Check that the Zigbee coordinator is plugged into the USB port on your HAB</string>

+    <string name="devices_addnewone_dev_zigbee_submsg_2" formatted="false">Activate the \"pairing mode\" of your coordinator</string>

+    <string name="devices_addnewone_dev_zigbee_submsg_2_1">. If your coordinator has a pairing button, press it.</string>

+    <string name="devices_addnewone_dev_zigbee_submsg_2_2">. Otherwise, press the generic pairing button on your HAB.</string>

+    <string name="devices_addnewone_dev_zigbee_submsg_3" formatted="false">Connect your new ZigBee device on the network and activate his \"pairing mode\". (see instructions)</string>

+    <string name="devices_addnewone_dev_zigbee_submsg_4">The pairing will occur between your coordinator and the new device. Once completed, your device will be visible and functional.</string>

+    <string name="application_simple_name">APP NAME</string>

+    <string name="application_simple_version">Version:</string>

+    <string name="application_simple_state">Status:</string>

+    <string name="application_simple_details">Details</string>

+    <string name="application_simple_noasso">there is no associated device with this application</string>

+    <string name="application_simple_update">an update is available</string>

+    <string name="application_show_details">more details</string>

+    <string name="application_remove_asso" formatted="false">remove association</string>

+    <string name="application_config_title" formatted="false">\"%app_name%\" configuration</string>

+    <string name="application_details_servicename">Service:</string>

+    <string name="application_details_serviceversion">Service version:</string>

+    <string name="application_details_title">Application</string>

+    <string name="application_details_info">Information:</string>

+    <string name="application_details_compo">Composition:</string>

+    <string name="application_details_version">Version:</string>

+    <string name="application_details_state">Status:</string>

+    <string name="application_details_installdate">Installation date:</string>

+    <string name="application_details_resources">Used resources:</string>

+    <string name="application_details_resource_unavailable">unavailable</string>

+    <string name="application_details_ram">RAM:</string>

+    <string name="application_details_cpu">CPU (time):</string>

+    <string name="application_details_threads">Threads count:</string>

+    <string name="application_details_sockets">Sockets count:</string>

+    <string name="application_details_flash">Flash size:</string>

+    <string name="application_details_bandwidth">Bandwidth:</string>

+    <string name="application_details_ram_value" formatted="false">%VALUE% bytes</string>

+    <string name="application_details_cpu_value" formatted="false">%VALUE% %</string>

+    <string name="application_details_threads_value" formatted="false">%VALUE% thread(s)</string>

+    <string name="application_details_sockets_value" formatted="false">%VALUE% socket(s)</string>

+    <string name="application_details_flash_value" formatted="false">%VALUE% bytes</string>

+    <string name="application_details_bandwidth_value" formatted="false">%VALUE% bytes/s</string>

+    <string name="application_details_update">Update:</string>

+    <string name="application_details_update_btn">Update</string>

+    <string name="application_details_update_msg1">An update is available.</string>

+    <string name="application_details_update_msg2">During the update, the application will be momentarily out.</string>

+    <string name="application_details_config">Configuration:</string>

+    <string name="application_details_config_btn">Configure</string>

+    <string name="application_details_permissions">Permissions:</string>

+    <string name="application_details_bundle_3rd">Partners</string>

+    <string name="application_details_bundle_op">Operator</string>

+    <string name="application_details_monitoring_activated">The application\'s resources monitoring is activated</string>

+    <string name="application_details_monitoring_unactivated">The application\'s resources monitoring is disabled</string>

+    <string name="application_details_btn_now">now</string>

+    <string name="application_details_btn_later">later</string>

+    <string name="application_details_btn_no">no</string>

+    <string name="application_details_msg_update">During the update, the application will no longer be functional.\n\nDo you want to perform the update?</string>

+    <string name="application_details_msg_update_title">Update</string>

+    <string name="application_details_msg_uninstall">Do you really want to uninstall this application?</string>

+    <string name="application_details_msg_uninstall_title">Uninstallation</string>

+    <string name="application_details_no_config">This application does not have configuration interface</string>

+    <string name="application_details_no_access_rights">You are not allowed to access this application</string>

+    <string name="application_details_no_uninstall_rights">You are not allowed to uninstall this application</string>

+    <string name="application_details_permissions_btn">Manage permissions</string>

+    <string name="application_details_permissions_msg">permissions established between</string>

+    <string name="application_details_permissions_update_title">Permissions Update</string>

+    <string name="application_details_permissions_update_msg">During the permissions update, the application will restart.\n\nDo you want to perform the update?</string>

+    <string name="application_details_startstop">Start</string>

+    <string name="application_details_description">---</string>

+    <string name="application_details_msgRunning">The application is currently running</string>

+    <string name="application_details_msgNotRunning">The application is currently stopped</string>

+    <string name="application_details_btnStop">Stop</string>

+    <string name="application_details_btnStart">Start</string>

+    <string name="application_details_stopped">(stopped)</string>

+    <string name="application_details_not_accessible">Not accessible</string>

+    <string name="dialog_btn_ok">OK</string>

+    <string name="dialog_btn_yes">Yes</string>

+    <string name="dialog_btn_no">No</string>

+    <string name="dialog_btn_cancel">Cancel</string>

+    <string name="dialog_btn_apply">Apply</string>

+    <string name="dialog_btn_validate">Validate</string>

+    <string name="dialog_btn_create">Create</string>

+    <string name="dialog_btn_modify">Modify</string>

+    <string name="config_devices">Associated Devices</string>

+    <string name="config_application">Application</string>

+    <string name="config_device_name">Device xxxx</string>

+    <string name="config_app_name">Application xxxx</string>

+    <string name="config_serv_name">Service xxxx</string>

+    <string name="config_btn_update">Update</string>

+    <string name="config_btn_associate">Associate</string>

+    <string name="config_asso">associate with</string>

+    <string name="config_update_title_dev" formatted="false">Select the applications that may use \"%dev_name%\"</string>

+    <string name="config_update_title_app" formatted="false">Select the devices that may be used by \"%app_name%\"</string>

+    <string name="config_update_noapp">There is no installed application that can use this device</string>

+    <string name="config_update_nodev">There is no connected device nor installed applications that can be used by this application</string>

+    <string name="menu_settings">options</string>

+    <string name="menu_help">help</string>

+    <string name="menu_login">Connection</string>

+    <string name="settings_hab_ip">HAB IP address:</string>

+    <string name="settings_hab_port">HAB port:</string>

+    <string name="settings_activateWizard">Active all wizards</string>

+    <string name="settings_autoDiscorevy">Auto HAB discovery</string>

+    <string name="settings_manualDiscorevy">Manual HAB discovery</string>

+    <string name="settings_discovered_ip">HAB found at the ip:</string>

+    <string name="settings_no_hab">HAB not found</string>

+    <string name="settings_version">dasboard version: %version%</string>

+    <string name="settings_language_en">english</string>

+    <string name="settings_language_fr">français</string>

+    <string name="login_current">%current%</string>

+    <string name="login_cse_login">Login</string>

+    <string name="login_cse_pwd">Password</string>

+    <string name="wizard_application_simple_mainMsg">This screen shows all installed applications on your HAB</string>

+    <string name="wizard_application_simple_actions">Actions:</string>

+    <string name="wizard_application_simple_action_uninstall">uninstall an application</string>

+    <string name="wizard_application_simple_action_config">configure an application</string>

+    <string name="wizard_application_simple_action_details">display more details about an application</string>

+    <string name="wizard_application_details_action_device">display more information about a device associated with an application. "long click" to remove association</string>

+    <string name="wizard_application_details_action_asso">associate the application with devices</string>

+    <string name="wizard_application_details_mainMsg">This screen shows the details of the application</string>

+    <string name="wizard_application_details_actions">Actions:</string>

+    <string name="wizard_application_details_action_uninstall">uninstall the application</string>

+    <string name="wizard_application_details_action_config">configure the application / update permissions</string>

+    <string name="wizard_application_details_action_openclose">open / close a section</string>

+    <string name="wizard_device_details_mainMsg">This screen shows the details of the device</string>

+    <string name="wizard_device_details_actions">Actions:</string>

+    <string name="wizard_device_details_action_eject">disconnect safely the device</string>

+    <string name="wizard_device_details_action_check">display settings and controls to test the device</string>

+    <string name="wizard_device_details_action_asso">associate the device to applications</string>

+    <string name="wizard_device_details_action_app">display more information about associated applications with the device. "long click" to remove association</string>

+    <string name="wizard_device_simple_mainMsg">This screen shows all your connected devices</string>

+    <string name="wizard_device_simple_actions">Actions:</string>

+    <string name="wizard_device_simple_action_details">display more details about a device</string>

+    <string name="wizard_device_simple_action_add">install a new device</string>

+    <string name="wizard_device_simple_action_moreless">open/close the category</string>

+    <string name="wizard_config_mainMsg">This screen shows the devices than can be used by each application</string>

+    <string name="wizard_config_actions">Actions:</string>

+    <string name="wizard_config_action_update">update the permissions</string>

+    <string name="wizard_config_action_device">display more details about a device</string>

+    <string name="wizard_config_action_app">display more details about an application</string>

+    <string name="wizard_user_simple_mainMsg">This screen shows all the existing user accounts</string>

+    <string name="wizard_user_simple_action_add">create a new user account</string>

+    <string name="wizard_user_simple_action_details">display more details about a user</string>

+    <string name="wizard_user_details_mainMsg">This screen shows the detailed access rights of a user account</string>

+    <string name="wizard_user_details_action_delete">remove the user account</string>

+    <string name="wizard_user_details_action_update">modify the access rights of the user</string>

+    <string name="usr_details_title">User</string>

+    <string name="usr_details_access_rights">Access Rights:</string>

+    <string name="usr_details_access_rights_msg">Access Rights on</string>

+    <string name="user_details_no_access_rights">You are not allowed to access users accounts</string>

+    <string name="user_details_no_access_rights_title">Users Access</string>

+    <string name="appstore_no_access_rights_title">Access to the AppStore</string>

+    <string name="appstore_no_access_rights">You are not allowed to access the AppStore</string>

+    <string name="user_add_title">Add User</string>

+    <string name="user_add_create">Create new user</string>

+    <string name="add_user_creator">Creator:</string>

+    <string name="add_user_type">Type:</string>

+    <string name="add_user_name">User name:</string>

+    <string name="add_user_empty_name">Name can not be empty</string>

+    <string name="add_user_empty_password">Password can not be empty</string>

+    <string name="add_user_image">Image:</string>

+    <string name="user_delegation">User Access Rights Delegation</string>

+    <string name="user_delegation_no_config">The delegation application is not available</string>

+    <string name="user_delegation_no_access_rights">You are not allowed to delegate rights</string>

+    <string name="user_details_msg_remove_title">User Removal</string>

+    <string name="user_details_msg_create_title">User Creation</string>

+    <string name="user_details_no_remove_rights">You are not allowed to remove this user</string>

+    <string name="user_details_no_create_rights">You are not allowed to create users</string>

+    <string name="user_details_msg_remove_user" formatted="false">Do you really want to remove user %usr_name%?</string>

+    <string name="user_details_rights_btn">Manage rights</string>

+    <string name="user_details_rights_update_title">User Access Rights Update</string>

+    <string name="user_details_rights_update_msg" formatted="false">Do you really want to modify the Access Rights of %usr_id%?</string>

+    <string name="user_details_rights_help_title">Description of User Access Rights</string>

+    <string name="user_type_admins_list">Administrators</string>

+    <string name="user_type_family_list">Family</string>

+    <string name="user_type_friends_list">Friends</string>

+    <string name="user_type_admins_icon">Admins</string>

+    <string name="user_type_family_icon">Family</string>

+    <string name="user_type_friends_icon">Friends</string>

+    <string name="user_type_admin">Administrator</string>

+    <string name="user_type_family">Family</string>

+    <string name="user_type_friend">Friend</string>

+    <string name="hello_world">Hello world!</string>

+    <string name="title_activity_otbusers">OTBUsersActivity</string>

+

+    <string-array name="avatar_imgs">

+        <item>@drawable/radio_btn_avatar_businessman</item>

+        <item>@drawable/radio_btn_avatar_male</item>

+        <item>@drawable/radio_btn_avatar_female</item>

+        <item>@drawable/radio_btn_avatar_male_headset</item>

+        <item>@drawable/radio_btn_avatar_female_headset</item>

+        <item>@drawable/radio_btn_avatar_boy</item>

+        <item>@drawable/radio_btn_avatar_girl</item>

+        <item>@drawable/radio_btn_avatar_grandpa</item>

+        <item>@drawable/radio_btn_avatar_grandma</item>

+    </string-array>

+    <string-array name="devices">

+        <item>deviceAirConditioner</item>

+        <item>Air Conditioners</item>

+        <item></item>

+        <item>deviceClothesWasher</item>

+        <item>Clothes Washers</item>

+        <item></item>

+        <item>deviceElectricVehicleCharger</item>

+        <item>Electric Vehicle Chargers</item>

+        <item></item>

+        <item>deviceLight</item>

+        <item>Lights</item>

+        <item>@drawable/otb_picto_dev_cat_light</item>

+        <item>deviceMicrogeneration</item>

+        <item>Microgenerators</item>

+        <item></item>

+        <item>deviceOven</item>

+        <item>Ovens</item>

+        <item></item>

+        <item>deviceRefrigerator</item>

+        <item>Refrigerators</item>

+        <item></item>

+        <item>deviceRobotCleaner</item>

+        <item>Robot Cleaners</item>

+        <item></item>

+        <item>deviceSmartElectricMeter</item>

+        <item>Smart Electric Meters</item>

+        <item>@drawable/otb_picto_dev_cat_gauge</item>

+        <item>deviceStorageBattery</item>

+        <item>Storage Batteries</item>

+        <item>@drawable/otb_picto_dev_cat_battery</item>

+        <item>deviceTelevision</item>

+        <item>Televisions</item>

+        <item></item>

+        <item>deviceThermostat</item>

+        <item>Thermostats</item>

+        <item></item>

+        <item>deviceWaterHeater</item>

+        <item>Water Heaters</item>

+        <item></item>

+        <item>deviceDoor</item>

+        <item>Doors</item>

+        <item>@drawable/otb_picto_dev_cat_door</item>

+        <item>deviceSmokeExtractor</item>

+        <item>Smoke Extractors</item>

+        <item>@drawable/otb_picto_dev_cat_smokeextractor</item>

+        <item>deviceSwitchButton</item>

+        <item>Switch Buttons</item>

+        <item>@drawable/otb_picto_dev_cat_switchbutton</item>

+        <item>deviceWarningDevice</item>

+        <item>Warning Devices</item>

+        <item>@drawable/otb_picto_dev_cat_warningdevice</item>

+        <item>deviceGasValve</item>

+        <item>Gas Valves</item>

+        <item>@drawable/otb_picto_dev_cat_gasvalve</item>

+        <item>deviceWaterValve</item>

+        <item>Water Valves</item>

+        <item>@drawable/otb_picto_dev_cat_watervalve</item>

+        <item>deviceFloodDetector</item>

+        <item>Flood Detectors</item>

+        <item>@drawable/otb_picto_dev_cat_flooddetector</item>

+        <item>deviceMotionDetector</item>

+        <item>Motion Detectors</item>

+        <item>@drawable/otb_picto_dev_cat_motiondetector</item>

+        <item>deviceSmokeDetector</item>

+        <item>Smoke Detectors</item>

+        <item>@drawable/otb_picto_dev_cat_smokedetector</item>

+        <item>deviceTemperatureDetector</item>

+        <item>Temperature Detectors</item>

+        <item>@drawable/otb_picto_dev_cat_thermometer</item>

+        <item>deviceContactDetector</item>

+        <item>Contact Detectors</item>

+        <item>@drawable/otb_picto_dev_cat_contactsensor</item>

+        <item>deviceCamera</item>

+        <item>Cameras</item>

+        <item>@drawable/otb_picto_dev_cat_camera</item>

+        <item>deviceWeatherStation</item>

+        <item>Weather Stations</item>

+        <item>@drawable/otb_picto_dev_cat_weatherstation</item>

+        <item>deviceCoffeeMachine</item>

+        <item>Coffee Makers</item>

+        <item>@drawable/otb_picto_dev_cat_coffeemachine</item>

+        <item>default</item>

+        <item>SDT Device</item>

+        <item>@drawable/otb_picto_dev_cat_sdt</item>

+        <item>undefined</item>

+        <item>Undefined</item>

+        <item>@drawable/otb_picto_dev_cat_sdt</item>

+    </string-array>

+

+    <string name="device_details_cnd">Container Definition</string>

+    <string name="device_details_modules">Modules</string>

+    <string name="device_details_model">Model</string>

+    <string name="device_details_manufacturer">Manufacturer</string>

+    <string name="device_details_description">Description</string>

+    <string name="device_details_type">Type</string>

+    <string name="device_details_location">Location</string>

+    <string name="device_details_protocol">Protocol</string>

+    <string name="settings_cse_url_label">URL</string>

+    <string name="settings_cse">CSE</string>

+    <string name="device_details_serialNumber">Serial number</string>

+    <string name="device_details_deviceName">Device name</string>

+    <string name="settings_cse_hostname">Hostname</string>

+    <string name="settings_cse_port">Port</string>

+    <string name="settings_cse_cseId">CSE Id</string>

+    <string name="settings_cse_cseName">CSE Name</string>

+    <string name="settings_device_name">Device Name</string>

+    <string name="device_name_with_alias">Using SDT alias name property (pDANe)</string>

+    <string name="device_name_with_name">Using SDT name property (prDNe)</string>

+

+</resources>
\ No newline at end of file
diff --git a/org.eclipse.om2m.android.dashboard/res/values/styles.xml b/org.eclipse.om2m.android.dashboard/res/values/styles.xml
new file mode 100644
index 0000000..71c5795
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/values/styles.xml
@@ -0,0 +1,32 @@
+<!--

+    Copyright (c) 2013, 2017 Orange.

+    All rights reserved. This program and the accompanying materials

+    are made available under the terms of the Eclipse Public License v1.0

+    which accompanies this distribution, and is available at

+    http://www.eclipse.org/legal/epl-v10.html

+   

+    Contributors:

+       BAREAU Cyrille <cyrille.bareau@orange.com>, 

+       BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+       BOLLE Sebastien <sebastien.bolle@orange.com>.

+ -->
+<resources xmlns:android="http://schemas.android.com/apk/res/android">

+

+    <!--

+        Base application theme, dependent on API level. This theme is replaced

+        by AppBaseTheme from res/values-vXX/styles.xml on newer devices.

+    -->

+    <style name="AppBaseTheme" parent="android:Theme.Light">

+        <!--

+            Theme customizations available in newer API levels can go in

+            res/values-vXX/styles.xml, while customizations related to

+            backward-compatibility can go here.

+        -->

+    </style>

+

+    <!-- Application theme. -->

+    <style name="AppTheme" parent="AppBaseTheme">

+        <!-- All customizations that are NOT specific to a particular API-level can go here. -->

+    </style>

+    

+</resources>
\ No newline at end of file
diff --git a/org.eclipse.om2m.android.dashboard/res/values/styles_custom_theme.xml b/org.eclipse.om2m.android.dashboard/res/values/styles_custom_theme.xml
new file mode 100644
index 0000000..6be1329
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/res/values/styles_custom_theme.xml
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!-- File created by the Android Action Bar Style Generator

+

+     Copyright (C) 2011, 2017 The Android Open Source Project

+     Copyright (C) 2012 readyState Software Ltd

+

+     Licensed under the Apache License, Version 2.0 (the "License");

+     you may not use this file except in compliance with the License.

+     You may obtain a copy of the License at

+  

+          http://www.apache.org/licenses/LICENSE-2.0

+  

+     Unless required by applicable law or agreed to in writing, software

+     distributed under the License is distributed on an "AS IS" BASIS,

+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+     See the License for the specific language governing permissions and

+     limitations under the License.

+-->
+

+<resources>

+

+    <style name="Theme.Custom_theme" parent="@android:style/Theme.Holo.Light.DarkActionBar">

+        <item name="android:actionBarItemBackground">@drawable/selectable_background_custom_theme</item>

+        <item name="android:popupMenuStyle">@style/PopupMenu.Custom_theme</item>

+        <item name="android:dropDownListViewStyle">@style/DropDownListView.Custom_theme</item>

+        <item name="android:actionBarTabStyle">@style/ActionBarTabStyle.Custom_theme</item>

+        <item name="android:actionDropDownStyle">@style/DropDownNav.Custom_theme</item>

+        <item name="android:actionBarStyle">@style/ActionBar.Solid.Custom_theme</item>

+        <item name="android:actionModeBackground">@drawable/cab_background_top_custom_theme</item>

+        <item name="android:actionModeSplitBackground">@drawable/cab_background_bottom_custom_theme</item>

+        <item name="android:actionModeCloseButtonStyle">@style/ActionButton.CloseMode.Custom_theme</item>

+        

+                <!-- Light.DarkActionBar specific -->

+        <item name="android:actionBarWidgetTheme">@style/Theme.Custom_theme.Widget</item>

+

+    </style>

+

+    <style name="ActionBar.Solid.Custom_theme" parent="@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse">

+        <item name="android:background">@drawable/ab_solid_custom_theme</item>

+        <item name="android:backgroundStacked">@drawable/ab_stacked_solid_custom_theme</item>

+        <item name="android:backgroundSplit">@drawable/ab_bottom_solid_custom_theme</item>

+        <item name="android:progressBarStyle">@style/ProgressBar.Custom_theme</item>

+    </style>

+

+    <style name="ActionBar.Transparent.Custom_theme" parent="@android:style/Widget.Holo.ActionBar">

+        <item name="android:background">@drawable/ab_transparent_custom_theme</item>

+        <item name="android:progressBarStyle">@style/ProgressBar.Custom_theme</item>

+    </style>

+

+    <style name="PopupMenu.Custom_theme" parent="@android:style/Widget.Holo.ListPopupWindow">

+        <item name="android:popupBackground">@drawable/menu_dropdown_panel_custom_theme</item>	

+    </style>

+

+    <style name="DropDownListView.Custom_theme" parent="@android:style/Widget.Holo.ListView.DropDown">

+        <item name="android:listSelector">@drawable/selectable_background_custom_theme</item>

+    </style>

+

+    <style name="ActionBarTabStyle.Custom_theme" parent="@android:style/Widget.Holo.ActionBar.TabView">

+        <item name="android:background">@drawable/tab_indicator_ab_custom_theme</item>

+    </style>

+

+    <style name="DropDownNav.Custom_theme" parent="@android:style/Widget.Holo.Spinner">

+        <item name="android:background">@drawable/spinner_background_ab_custom_theme</item>

+        <item name="android:popupBackground">@drawable/menu_dropdown_panel_custom_theme</item>

+        <item name="android:dropDownSelector">@drawable/selectable_background_custom_theme</item>

+    </style>

+    

+    <style name="ProgressBar.Custom_theme" parent="@android:style/Widget.Holo.ProgressBar.Horizontal">

+        <item name="android:progressDrawable">@drawable/progress_horizontal_custom_theme</item>

+    </style>

+    

+    <style name="ActionButton.CloseMode.Custom_theme" parent="@android:style/Widget.Holo.ActionButton.CloseMode">

+        <item name="android:background">@drawable/btn_cab_done_custom_theme</item>

+    </style>

+

+    <!-- this style is only referenced in a Light.DarkActionBar based theme -->

+    <style name="Theme.Custom_theme.Widget" parent="@android:style/Theme.Holo">

+        <item name="android:popupMenuStyle">@style/PopupMenu.Custom_theme</item>

+        <item name="android:dropDownListViewStyle">@style/DropDownListView.Custom_theme</item>

+    </style>

+

+</resources>
\ No newline at end of file
diff --git a/org.eclipse.om2m.android.dashboard/src/main/AndroidManifest.xml b/org.eclipse.om2m.android.dashboard/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..7909090
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/src/main/AndroidManifest.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!--

+    Copyright (c) 2013, 2017 Orange.

+    All rights reserved. This program and the accompanying materials

+    are made available under the terms of the Eclipse Public License v1.0

+    which accompanies this distribution, and is available at

+    http://www.eclipse.org/legal/epl-v10.html

+   

+    Contributors:

+       BAREAU Cyrille <cyrille.bareau@orange.com>, 

+       BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+       BOLLE Sebastien <sebastien.bolle@orange.com>.

+ -->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"

+    package="org.eclipse.om2m.android.dashboard"

+    android:versionCode="1"

+    android:versionName="1.0.0-SNAPSHOT" >

+

+    <uses-sdk

+        android:minSdkVersion="16"

+        android:targetSdkVersion="17" />

+		

+    <uses-permission android:name="android.permission.INTERNET"/>

+

+    <application

+        android:allowBackup="true"

+        android:icon="@drawable/home_dashboard_logo"

+        android:label="@string/app_name"

+        android:theme="@style/Theme.Custom_theme" android:logo="@drawable/home_dashboard_logo">

+		

+        <activity

+            android:name="org.eclipse.om2m.android.dashboard.DashboardActivity"

+        	android:icon="@drawable/home_dashboard_logo"

+            android:label="@string/app_name">

+            <intent-filter android:label="@string/app_name">

+                <action android:name="android.intent.action.MAIN" />

+                <category android:name="android.intent.category.LAUNCHER" />

+            </intent-filter>

+        </activity>

+        <activity

+            android:name="org.eclipse.om2m.android.dashboard.devices.DevicesActivity"

+        	android:icon="@drawable/home_dashboard_logo"

+            android:label="@string/app_name"

+            android:parentActivityName="OTBDashboardActivity"  >            

+        </activity>

+        <activity

+            android:name="org.eclipse.om2m.android.dashboard.devices.DeviceDetailsActivity"

+        	android:icon="@drawable/home_dashboard_logo"

+            android:label="@string/app_name"

+            android:parentActivityName="OTBDashboardActivity"  >            

+        </activity>

+        <activity

+            android:name="org.eclipse.om2m.android.dashboard.SettingsActivity"

+        	android:icon="@drawable/home_dashboard_logo"

+            android:label="@string/app_name"

+            android:parentActivityName="OTBDashboardActivity"  >            

+        </activity>

+        <activity

+            android:name="org.eclipse.om2m.android.dashboard.applications.ApplicationConfigActivity"

+        	android:icon="@drawable/home_dashboard_logo"

+            android:label="@string/app_name"

+            android:parentActivityName="OTBDashboardActivity"  >            

+        </activity>

+        

+        <service android:name="com.dg.libs.rest.services.HTTPRequestExecutorService" />

+		

+    </application>

+

+</manifest>

diff --git a/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/CustomMainActivity.java b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/CustomMainActivity.java
new file mode 100644
index 0000000..5356822
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/CustomMainActivity.java
@@ -0,0 +1,45 @@
+/*******************************************************************************

+ * Copyright (c) 2013, 2017 Orange.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    BAREAU Cyrille <cyrille.bareau@orange.com>, 

+ *    BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+ *    BOLLE Sebastien <sebastien.bolle@orange.com>.

+ *******************************************************************************/

+package org.eclipse.om2m.android.dashboard;

+

+import org.eclipse.om2m.android.dashboard.R;

+

+import android.app.Activity;

+import android.content.Intent;

+import android.view.Menu;

+import android.view.MenuInflater;

+import android.view.MenuItem;

+

+public class CustomMainActivity extends Activity {

+

+	@Override

+	public boolean onCreateOptionsMenu(Menu menu) {

+		MenuInflater inflater = getMenuInflater();

+		inflater.inflate(R.menu.menu_main, menu);

+		return true;

+	}

+

+	@Override

+	public boolean onOptionsItemSelected(MenuItem item) {

+		switch(item.getItemId()) {

+		case R.id.menu_settings:

+			Intent settingsActivity = new Intent(CustomMainActivity.this, SettingsActivity.class);	

+			startActivity(settingsActivity);

+			break;

+		default:

+			break;

+		}

+		return true;

+	}

+	

+}

diff --git a/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/CustomSecondaryActivity.java b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/CustomSecondaryActivity.java
new file mode 100644
index 0000000..c828c62
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/CustomSecondaryActivity.java
@@ -0,0 +1,49 @@
+/*******************************************************************************

+ * Copyright (c) 2013, 2017 Orange.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    BAREAU Cyrille <cyrille.bareau@orange.com>, 

+ *    BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+ *    BOLLE Sebastien <sebastien.bolle@orange.com>.

+ *******************************************************************************/

+package org.eclipse.om2m.android.dashboard;

+

+import org.eclipse.om2m.android.dashboard.R;

+

+import android.app.Activity;

+import android.content.Intent;

+import android.view.Menu;

+import android.view.MenuInflater;

+import android.view.MenuItem;

+

+public class CustomSecondaryActivity extends Activity {

+	

+	@Override

+	public boolean onCreateOptionsMenu(Menu menu) {

+		MenuInflater inflater = getMenuInflater();

+		inflater.inflate(R.menu.menu_secondary, menu);

+		return true;

+	}

+	

+	@Override

+	public boolean onOptionsItemSelected(MenuItem item) {

+		switch(item.getItemId()) {

+		case R.id.menu_help:

+			// to be overridden

+			break;

+		case android.R.id.home:

+			Intent mainActivity = new Intent(CustomSecondaryActivity.this, DashboardActivity.class);	

+			mainActivity.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

+			startActivity(mainActivity);

+			break;

+		default:

+			break;

+		}

+		return true;

+	}

+	

+}

diff --git a/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/DashboardActivity.java b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/DashboardActivity.java
new file mode 100644
index 0000000..c3c822b
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/DashboardActivity.java
@@ -0,0 +1,566 @@
+/*******************************************************************************

+ * Copyright (c) 2013, 2017 Orange.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    BAREAU Cyrille <cyrille.bareau@orange.com>, 

+ *    BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+ *    BOLLE Sebastien <sebastien.bolle@orange.com>.

+ *******************************************************************************/

+package org.eclipse.om2m.android.dashboard;

+

+import java.util.ArrayList;

+import java.util.List;

+import java.util.Locale;

+import java.util.SortedSet;

+

+import org.eclipse.om2m.android.dashboard.cse.OneM2MListener;

+import org.eclipse.om2m.android.dashboard.cse.OneM2MRequest.OneM2MReqType;

+import org.eclipse.om2m.android.dashboard.cse.OneM2MRequester;

+import org.eclipse.om2m.android.dashboard.cse.models.OneM2MApplication;

+import org.eclipse.om2m.android.dashboard.cse.models.SDTDevice;

+import org.eclipse.om2m.android.dashboard.devices.DevicesActivity;

+import org.eclipse.om2m.android.dashboard.main.MainAppEntryView;

+import org.eclipse.om2m.android.dashboard.main.MainDevView;

+import org.eclipse.om2m.android.dashboard.tools.OneM2MDeviceType;

+import org.eclipse.om2m.android.dashboard.tools.SettingsManager;

+import org.eclipse.om2m.android.dashboard.tools.Sorter;

+import org.eclipse.om2m.android.dashboard.utils.OTBUtils;

+

+import android.app.AlertDialog;

+import android.content.DialogInterface;

+import android.content.Intent;

+import android.content.res.Configuration;

+import android.content.res.Resources;

+import android.graphics.Point;

+import android.os.Bundle;

+import android.os.Handler;

+import android.os.Message;

+import android.util.DisplayMetrics;

+import android.util.Log;

+import android.util.TypedValue;

+import android.view.Display;

+import android.view.View;

+import android.view.View.OnClickListener;

+import android.view.View.OnLongClickListener;

+import android.view.ViewGroup.LayoutParams;

+import android.view.ViewTreeObserver.OnGlobalLayoutListener;

+import android.widget.GridLayout;

+import android.widget.ImageView;

+import android.widget.LinearLayout;

+import android.widget.RelativeLayout;

+import android.widget.ScrollView;

+import android.widget.TextView;

+import android.widget.Toast;

+

+public class DashboardActivity extends CustomMainActivity 

+		implements OnClickListener, OnLongClickListener, OneM2MListener {

+

+	private RelativeLayout rlDevs;

+

+	private GridLayout glApps;

+	private GridLayout glDevices;

+

+	private ImageView ivCSEState;

+

+	private ScrollView svDynamicCardScroller;

+	

+	private TextView tvCounterApp;

+	private TextView tvCounterDev;

+	private TextView tvStatusTitle;

+

+	private List<SDTDevice> devices;

+	private SortedSet<OneM2MApplication> applications;

+	

+	private boolean isInitialized = false;

+	

+	private boolean cseDetected;

+	private boolean cseConnected;

+	private int width = 0;

+	private int appCol = -1;

+	private int devCol = -1;

+	

+	// ================================================================================

+

+	Handler mDicoveryHandler = new Handler() {

+		@Override

+		public void handleMessage(Message msg) {

+			boolean discovery_succeed = msg.getData().getBoolean("DISCOVERY_SUCCEED");

+			if (discovery_succeed) {

+				init();

+			} else {

+				reset();							

+			}	

+		}

+	};

+

+	// =====================================================================================

+	// Lifecycle

+	// =====================================================================================

+

+	@Override

+	protected void onCreate(Bundle savedInstanceState) {

+		super.onCreate(savedInstanceState);

+	}

+

+	//        ||

+	//        ||

+	//        ||

+	//        \/

+

+	@Override

+	protected void onStart() {

+		super.onStart();

+	}

+

+	//        ||

+	//        ||

+	//        ||

+	//        \/

+

+	@Override

+	protected void onResume() {

+		try {

+		super.onResume();

+		

+		Log.i(getClass().getName(), "entering onResume");

+		

+		isInitialized = false;

+

+		Display display = getWindowManager().getDefaultDisplay();

+		Point size = new Point();

+		display.getSize(size);

+		width = size.x;

+		

+		String language = SettingsManager.getInstance(this).getLanguage();

+		Resources res = getApplication().getResources();

+		Configuration config = res.getConfiguration();

+		config.locale = new Locale(language);

+		res.updateConfiguration(config, null);

+		try {

+			OneM2MDeviceType.initialize(res);

+		} catch (Exception e) {

+			Toast.makeText(this, "Error " + e, Toast.LENGTH_LONG).show();

+		}

+

+		setContentView(R.layout.main_activity);

+

+		rlDevs = (RelativeLayout)findViewById(R.id.rl_main_zone_devs);

+

+		tvCounterApp = (TextView)findViewById(R.id.tv_main_counter_app);

+		tvCounterDev = (TextView)findViewById(R.id.tv_main_counter_dev);

+		

+		tvStatusTitle = (TextView)findViewById(R.id.tv_cse_status_title);

+

+		glApps = (GridLayout)findViewById(R.id.gl_main_cse_app);			

+		glDevices = (GridLayout)findViewById(R.id.gl_main_cse_devices);		

+		

+		glApps.removeAllViews();

+		glDevices.removeAllViews();

+		

+		ivCSEState = (ImageView)findViewById(R.id.iv_cse_state_icon);	

+		

+		svDynamicCardScroller = (ScrollView)findViewById(R.id.sv_main_dynamic_card_scroller);

+		

+		ivCSEState.setOnLongClickListener(this);

+

+		refreshAll();

+		

+		// add an observer to be sure that the layout is created before getting size

+		// and resize dynamically the card to take full screen size

+		tvStatusTitle.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {

+            @Override

+            public void onGlobalLayout() {

+            	//Remove it here unless you want to get this callback for EVERY

+                //layout pass, which can get you into infinite loops if you ever

+                //modify the layout from within this method.

+            	tvStatusTitle.getViewTreeObserver().removeOnGlobalLayoutListener(this);

+            	

+            	// set dynamic card container size  

+            	int svHeight = svDynamicCardScroller.getMeasuredHeight();

+            	int svWidth = svDynamicCardScroller.getMeasuredWidth();

+        		int display_mode = getResources().getConfiguration().orientation;

+        		if (display_mode == 1) { // portrait

+        			LinearLayout llDynamicCardContainer = (LinearLayout)findViewById(R.id.ll_main_dynamic_card_container);        			        			

+        			llDynamicCardContainer.setMinimumHeight(svHeight);   

+        			int appCol = svWidth / (165 + 70);	// 165 = app view width

+					  									// 70 = margin between app

+        			int devCol = svWidth / (150 + 70); 	// 150 = dev view width

+														// 70 = margin between dev

+           			glApps.setColumnCount(appCol);  

+           			glDevices.setColumnCount(devCol);

+        		} 

+        		else { 	// landscape

+        			resize();

+        			LinearLayout llLeftCardContainer = (LinearLayout)findViewById(R.id.ll_cse_left);

+        			LayoutParams params = llLeftCardContainer.getLayoutParams();

+        			

+        			double px = (double) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 175, llLeftCardContainer.getResources().getDisplayMetrics());

+        			

+        			params.width = (width * 4) / 9;  // Left  (apps) weight = 5

+        											 // Right (devs) weight = 4

+        			int cappCol = (int) Math.floor( ((double) width) * 4 / 9 / px);	// 165 = app view width

+																	// 70 = margin between app

+					appCol = cappCol;

+					devCol = ((width * 4) / 9) / (160 + 70);	// 150 = dev view width

+																// 70 = margin between dev

+					try {

+						glApps.removeAllViews();

+						glApps.setColumnCount(appCol);  

+						Log.d(getClass().getName(), "number of app col=" + appCol);

+					} catch(Exception e) {

+//    						glApps.setColumnCount(appCol+1);  

+					}

+					try {

+						glDevices.removeAllViews();

+						glDevices.setColumnCount(devCol);

+						Log.d(getClass().getName(), "number of devices col=" + devCol);

+					} catch(Exception e) {

+//    						glDevices.setColumnCount(devCol+1);

+					}

+        		}  

+        		

+        		// init data with last informations

+        		refreshAll();

+            }

+        });				

+

+			init();

+			Log.i(getClass().getName(), "leaving onResume");

+		} catch(Exception e) {

+			e.printStackTrace();

+			try {

+				AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);

+				dialogBuilder.setTitle("Error " + e);

+				dialogBuilder.setMessage(e.getMessage());

+				dialogBuilder.setPositiveButton(R.string.dialog_btn_ok, 

+					new DialogInterface.OnClickListener() {

+						@Override

+						public void onClick(DialogInterface arg0, int arg1) {

+						}

+					});

+				dialogBuilder.create().show();

+			} catch (Exception e2) {

+				Toast.makeText(this, "Error " + e, Toast.LENGTH_LONG).show();

+			}

+			

+		}

+	}

+

+	//        ||

+	//        ||

+	//        ||

+	//        \/

+

+	@Override

+	protected void onPause() {

+		super.onPause();

+	}

+

+	//        ||

+	//        ||

+	//        ||

+	//        \/

+

+	@Override

+	protected void onStop() {

+		super.onStop();

+		OneM2MRequester.getInstance().cancelMyPollingRequests();

+	}

+

+	//        ||

+	//        ||

+	//        ||

+	//        \/

+

+	@Override

+	protected void onDestroy() {

+		super.onDestroy();

+	}

+

+	// =====================================================================================

+

+	private void reset() {		

+		refreshCSE(false, false);

+

+		if (devices != null) {

+			devices.clear();

+		}

+		glDevices.removeAllViews();

+		applications = null;

+		glApps.removeAllViews();

+		

+		refreshAll();

+	}

+

+	private void init() {	

+		if (! isInitialized) {

+			OneM2MRequester.getInstance().sendPollingRequest(OneM2MReqType.INCSE_STATUS, null, 

+					getApplicationContext(), this, OneM2MRequester.DEFAULT_POLLING_DELAY);

+			OneM2MRequester.getInstance().sendPollingRequest(OneM2MReqType.DEVICES, null, 

+					getApplicationContext(), this, OneM2MRequester.DEFAULT_POLLING_DELAY);

+			OneM2MRequester.getInstance().sendPollingRequest(OneM2MReqType.APPLICATIONS, null, 

+					getApplicationContext(), this, OneM2MRequester.DEFAULT_POLLING_DELAY);

+			isInitialized = true;

+		}

+	}

+	

+	private void refreshAll() {

+		Log.i(getClass().getName(), "entering refreshAll");

+		refreshCSE(cseDetected, cseConnected);

+		refreshDevices();

+		refreshApplications();

+	}

+	

+	private synchronized void refreshCSE(boolean detected, boolean connected) {

+		Log.i(getClass().getName(), "entering refreshHab");

+		try {

+			if (! detected) {

+				ivCSEState.setImageDrawable(getResources().getDrawable(R.drawable.otb_picto_led_notconnected));

+				tvStatusTitle.setText(getResources().getString(R.string.main_cse_state_not_detected));

+				cseDetected = false;

+				cseConnected = false;

+			} else if (! connected) {

+				ivCSEState.setImageDrawable(getResources().getDrawable(R.drawable.otb_picto_led_notconnected));

+				tvStatusTitle.setText(getResources().getString(R.string.main_cse_state_not_connected));

+				cseDetected = true;

+				cseConnected = false;

+			} else {

+				ivCSEState.setImageDrawable(getResources().getDrawable(R.drawable.otb_picto_led_ok));

+				tvStatusTitle.setText(getResources().getString(R.string.main_cse_state_ok));

+				cseDetected = true;

+				cseConnected = true;

+			}

+		} catch (Exception e) {

+		}

+	}

+

+	private synchronized void refreshDevices() {

+		Log.i(getClass().getName(), "entering refreshDevices");

+		if (devices == null) {

+			if (tvCounterDev != null) {

+				tvCounterDev.setText("0");

+			}

+			glDevices.removeAllViews();

+			return;

+		}

+		

+		int deviceCounter = 0;

+		// add/update devices

+		List<MainDevView> newViews = new ArrayList<MainDevView>();

+		for (SDTDevice sdtDevice : devices) {

+			

+			deviceCounter += 1;

+			boolean deviceAlreadyKnown = false;

+			for (int i = 0; i < glDevices.getChildCount(); i++) {

+				Object obj = glDevices.getChildAt(i);

+				if (obj instanceof MainDevView) {

+					MainDevView devView = (MainDevView)obj;

+					if ((devView != null) && (sdtDevice.getRi().equals(devView.getSDTDevice().getRi()))) {

+						// same entry => refresh count

+						deviceAlreadyKnown = true;

+						devView.setData(sdtDevice);

+						break;

+					}

+				}

+			}

+

+			if (! deviceAlreadyKnown) {

+				// create a new device

+				MainDevView devView = new MainDevView(getApplicationContext(), null);

+				devView.setData(sdtDevice);

+				// add device

+				newViews.add(devView);

+			}

+		}

+		try {

+			glDevices.setColumnCount(devCol);

+		} catch(Exception e) {

+		}

+		for (MainDevView v : newViews)

+			glDevices.addView(v, 0);	

+		

+		// remove old devices

+		List<Integer> indexToRemove = new ArrayList<Integer>();

+		for (int i = 0; i < glDevices.getChildCount(); i++) {

+			Object obj = glDevices.getChildAt(i);

+			if (obj instanceof MainDevView) {

+				boolean deviceFound = false;

+				SDTDevice renderedDevice = ((MainDevView)obj).getSDTDevice();

+				if (devices.contains(renderedDevice)) {

+					deviceFound = true;

+				}

+				if (! deviceFound) {

+					indexToRemove.add(i);

+				}

+			}

+		}

+		for (Integer i : indexToRemove) {

+			try {

+				glDevices.removeViewAt(i);

+			}

+			catch(Exception e){}

+		}

+

+		if (tvCounterDev != null) {

+			tvCounterDev.setText("" + deviceCounter);

+		}

+		resize();

+	}

+

+	private synchronized void refreshApplications() {

+		Log.i(getClass().getName(), "entering refreshApplications");

+		if (OTBUtils.isEmpty(applications)) {

+			if (tvCounterApp != null) {

+				tvCounterApp.setText("0");

+			}

+			glApps.removeAllViews();

+			return;

+		}

+		if (tvCounterApp != null) {

+			tvCounterApp.setText("" + applications.size());

+		}			

+

+		// add/update applications

+		int idx = 0;

+		for (OneM2MApplication app : applications) {

+			boolean found = false;

+			for (int i = 0; i < glApps.getChildCount(); i++) {

+				Object obj = glApps.getChildAt(i);

+				if (obj instanceof MainAppEntryView) {

+					MainAppEntryView appView = (MainAppEntryView)obj;

+					if ((appView != null) && appView.app.getRi().equals(app.getRi())) {

+						// same entry => refresh count

+						found = true;

+						appView.setData(app);

+						break;

+					}

+				}

+			}

+

+			if (! found) {

+				// create a new entry

+				MainAppEntryView appView = 

+					new MainAppEntryView(getApplicationContext(), null);

+				appView.setData(app);

+				// add entry

+				glApps.addView(appView, idx);

+			}

+			idx += 1;

+		}

+

+		// remove old entries

+		List<View> indexToRemove = new ArrayList<View>();

+		for (int i = 0; i < glApps.getChildCount(); i++) {

+			Object obj = glApps.getChildAt(i);

+			if (obj instanceof MainAppEntryView) {

+				MainAppEntryView appEntryView = (MainAppEntryView)obj;

+				boolean found = false;

+				for (OneM2MApplication application : applications) {

+					if (appEntryView.app.getRi().equals(application.getRi())) {

+						found = true;

+						break;

+					}

+				}

+				if (! found) {

+					indexToRemove.add((View) obj);

+				}

+			}

+		}

+		for (View v : indexToRemove) {

+			glApps.removeView(v);

+		}	

+

+		resize();

+	}

+

+	

+	private void resize() {

+		// refresh container height

+		int display_mode = getResources().getConfiguration().orientation;

+		if (display_mode != 1) { 						

+			// landscape

+

+			int margin10dp = Math.round(10 * 

+					(getApplicationContext().getResources().getDisplayMetrics().xdpi 

+							/ DisplayMetrics.DENSITY_DEFAULT));       

+		    

+			int svMainHeight = svDynamicCardScroller.getMeasuredHeight();

+

+			LinearLayout llRightCardContainer = (LinearLayout)findViewById(R.id.ll_cse_right);

+

+			RelativeLayout rlHabCardContainer = (RelativeLayout)findViewById(R.id.rl_main_zone_cse); 

+			RelativeLayout rlAppsCardContainer = (RelativeLayout)findViewById(R.id.rl_main_zone_apps); 

+			RelativeLayout rlDevsCardContainer = (RelativeLayout)findViewById(R.id.rl_main_zone_devs);

+			

+			int svHabHeight = rlHabCardContainer.getMeasuredHeight();

+			int svAppHeight = rlAppsCardContainer.getMeasuredHeight();

+			int svDevHeight = (svHabHeight + svAppHeight); 

+

+			int svHeight = 0, appMinHeight = 0, devMinHeight = 0;

+

+			svHeight = Math.max(svAppHeight + svHabHeight, svDevHeight /*+ svUsrHeight*/);

+			svHeight = Math.max(svHeight, svMainHeight);

+			appMinHeight = svHeight - svHabHeight - margin10dp;

+			devMinHeight = svHeight ;

+

+			rlAppsCardContainer.setMinimumHeight(appMinHeight);        			        			

+			rlDevsCardContainer.setMinimumHeight(devMinHeight); 

+			

+			rlAppsCardContainer.invalidate();

+			rlDevsCardContainer.invalidate();

+		}	

+	}

+	

+	// =====================================================================================

+	// User actions

+	// =====================================================================================

+

+	@Override

+	public void onClick(View v) {

+		if (v instanceof RelativeLayout) {

+			RelativeLayout layoutClicked = (RelativeLayout)v;

+			if (layoutClicked == rlDevs) {

+				startActivity(new Intent(DashboardActivity.this,

+					DevicesActivity.class));

+			}

+		}

+	}

+

+	@Override

+	public boolean onLongClick(View v) {

+		if (v instanceof ImageView) {

+			ImageView viewClicked = (ImageView)v;

+			if (viewClicked == ivCSEState) {

+//				OTBHabRequester.getInstance().sendRequest(OTBHabReqType.DEBUG,

+//						null, getApplicationContext(), this);							

+			}

+		}

+		return false;

+	}

+

+	@SuppressWarnings("unchecked")

+	@Override

+	public void onOneM2MResponse(OneM2MReqType requestType, Object response) {

+		if (requestType == OneM2MReqType.APPLICATIONS) {

+			List<OneM2MApplication> apps = (List<OneM2MApplication>)response;

+			applications = Sorter.getSortedApplications(apps);

+			refreshApplications();

+		} else if (requestType == OneM2MReqType.DEVICES) {

+			devices = (List<SDTDevice>) response;

+			refreshDevices();

+		} else if (requestType == OneM2MReqType.INCSE_STATUS) {

+			boolean isConnected = (Boolean) response;

+			refreshCSE(isConnected, isConnected);

+		}

+	}

+

+	@Override

+	public void onOneM2MError(OneM2MReqType requestType, String msg) {

+		Toast.makeText(this, "Error " + msg, Toast.LENGTH_LONG).show();

+	}

+	

+}

diff --git a/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/SettingsActivity.java b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/SettingsActivity.java
new file mode 100644
index 0000000..e4d006b
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/SettingsActivity.java
@@ -0,0 +1,275 @@
+/*******************************************************************************

+ * Copyright (c) 2013, 2017 Orange.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    BAREAU Cyrille <cyrille.bareau@orange.com>, 

+ *    BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+ *    BOLLE Sebastien <sebastien.bolle@orange.com>.

+ *******************************************************************************/

+package org.eclipse.om2m.android.dashboard;

+

+import java.util.Locale;

+

+import org.eclipse.om2m.android.dashboard.tools.SettingsManager;

+

+import org.eclipse.om2m.android.dashboard.R;

+

+import android.content.res.Configuration;

+import android.content.res.Resources;

+import android.os.Bundle;

+import android.text.InputFilter;

+import android.text.Spanned;

+import android.view.View;

+import android.view.View.OnClickListener;

+import android.view.WindowManager;

+import android.widget.Button;

+import android.widget.CheckBox;

+import android.widget.CompoundButton;

+import android.widget.CompoundButton.OnCheckedChangeListener;

+import android.widget.EditText;

+import android.widget.RadioButton;

+import android.widget.TextView;

+

+public class SettingsActivity extends CustomSecondaryActivity 

+	implements OnClickListener, OnCheckedChangeListener {

+

+	private Button btnValidate;

+	private Button btnCancel;

+	private CheckBox cbWizards;

+	private RadioButton rbLanguageEn;

+	private RadioButton rbLanguageFr;	

+	private TextView tvTitle;

+	private TextView tvVersion;

+	private EditText etCSEHostname;

+	private EditText etCSEPort;

+	private EditText etCSEId;

+	private EditText etCSEName;

+	private EditText etCSELogin;

+	private EditText etCSEPwd;

+	

+	private RadioButton rbDeviceNameWithAlias;

+	private RadioButton rbDeviceName;

+

+	private String language = "";

+	private String currentLanguage = "";

+

+	// ================================================================================

+

+	// =====================================================================================

+	// Lifecycle

+	// =====================================================================================

+

+	@Override

+	protected void onCreate(Bundle savedInstanceState) {

+		super.onCreate(savedInstanceState);

+

+		setContentView(R.layout.settings_activity);

+		SettingsManager settings = SettingsManager.getInstance(this);

+		currentLanguage = settings.getLanguage();

+		getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

+

+		tvTitle = (TextView)findViewById(R.id.tv_title);

+		tvVersion = (TextView)findViewById(R.id.tv_version);

+		// Custom input filter to validate IP adress 

+		InputFilter[] filters = new InputFilter[1];

+	    filters[0] = new InputFilter() {

+	        public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {

+	            if (end > start) {

+	                String destTxt = dest.toString();

+	                String resultingTxt = destTxt.substring(0, dstart) 

+	                		+ source.subSequence(start, end) 

+	                		+ destTxt.substring(dend);

+	                if (! resultingTxt.matches ("^\\d{1,3}(\\.(\\d{1,3}(\\.(\\d{1,3}(\\.(\\d{1,3})?)?)?)?)?)?")) { 

+	                    return "";

+	                }

+	                String[] splits = resultingTxt.split("\\.");

+	                for (int i = 0; i < splits.length; i++) {

+	                	if (Integer.valueOf(splits[i]) > 255) {

+	                		return "";

+	                	}

+	                }

+	            }

+	            return null;

+	        }

+	    };

+	    

+		btnValidate = (Button)findViewById(R.id.btn_settings_validate);

+		btnCancel = (Button)findViewById(R.id.btn_settings_cancel);

+		cbWizards = (CheckBox)findViewById(R.id.cb_settings_wizards);

+		rbLanguageEn = (RadioButton)findViewById(R.id.rd_language_en);

+		rbLanguageFr = (RadioButton)findViewById(R.id.rd_language_fr);

+		

+		etCSEHostname = (EditText) findViewById(R.id.et_settings_cse_hostname);

+		etCSEHostname.setFilters(filters);

+		etCSEPort = (EditText) findViewById(R.id.et_settings_cse_port);

+		etCSEId = (EditText) findViewById(R.id.et_settings_cse_cseId);

+		etCSEName = (EditText) findViewById(R.id.et_settings_cse_cseName);

+		etCSELogin = (EditText) findViewById(R.id.et_settings_cse_login);

+		etCSEPwd = (EditText) findViewById(R.id.et_settings_cse_pwd);

+

+		btnValidate.setOnClickListener(this);

+		btnCancel.setOnClickListener(this);

+		rbLanguageEn.setOnCheckedChangeListener(this);	

+		rbLanguageFr.setOnCheckedChangeListener(this);	

+		

+		rbDeviceName = (RadioButton) findViewById(R.id.rb_device_name_with_name);

+		rbDeviceNameWithAlias = (RadioButton) findViewById(R.id.rb_device_name_with_alias);

+		rbDeviceName.setOnCheckedChangeListener(this);

+		rbDeviceNameWithAlias.setOnCheckedChangeListener(this);

+		

+		if (settings.getDeviceName().equals(SettingsManager.DEVICE_NAME_WITH_ALIAS)) {

+			rbDeviceNameWithAlias.setChecked(true);

+		} else {

+			rbDeviceName.setChecked(true);

+		}

+		

+

+		if (currentLanguage.equals("fr")) {

+			rbLanguageFr.setChecked(true);

+		} else {

+			rbLanguageEn.setChecked(true);

+		}	

+		

+		etCSEHostname.setText(settings.getCSEHostname());

+		etCSEPort.setText(settings.getCSEPort());

+		etCSEId.setText(settings.getCSEId());

+		etCSEName.setText(settings.getCSEName());

+		etCSELogin.setText(settings.getCSELogin());

+		etCSEPwd.setText(settings.getCSEPwd());

+	}

+

+	//        ||

+	//        ||

+	//        ||

+	//        \/

+

+	@Override

+	protected void onStart() {

+		super.onStart();

+	}

+

+	//        ||

+	//        ||

+	//        ||

+	//        \/

+

+	@Override

+	protected void onResume() {

+		super.onResume();

+

+		language = SettingsManager.getInstance(this).getLanguage();

+		Resources res = getApplication().getResources();

+		Configuration config = res.getConfiguration();

+		config.locale = new Locale(language);

+		res.updateConfiguration(config, null);

+

+		tvTitle.setText(R.string.settings_title);

+		cbWizards.setText(R.string.settings_activateWizard);

+

+		btnValidate.setText(R.string.dialog_btn_validate);

+		btnCancel.setText(R.string.dialog_btn_cancel);

+

+		try {

+			String versionName = getApplicationContext().getPackageManager()

+				.getPackageInfo(getApplicationContext().getPackageName(), 0).versionName;

+			String versionLabel = getResources().getString(R.string.settings_version)

+				.replace("%version%", versionName);

+			tvVersion.setText(versionLabel);

+		} catch(Exception ignored) {

+		}

+	}

+

+	//        ||

+	//        ||

+	//        ||

+	//        \/

+

+	@Override

+	protected void onPause() {

+		super.onPause();

+	}

+

+	//        ||

+	//        ||

+	//        ||

+	//        \/

+

+	@Override

+	protected void onStop() {

+		super.onStop();

+	}

+

+	//        ||

+	//        ||

+	//        ||

+	//        \/

+

+	@Override

+	protected void onDestroy() {

+		super.onDestroy();

+	}

+

+

+	// =====================================================================================

+	// User actions

+	// =====================================================================================

+

+	@Override

+	public void onClick(View v) {

+		Button butClicked = (Button)v;

+		final SettingsManager settings = SettingsManager.getInstance(SettingsActivity.this);

+

+		if (butClicked == btnValidate) {

+			if (cbWizards.isChecked()) {

+				settings.setWizardApplicationSimple(true);

+				settings.setWizardApplicationDetails(true);

+				settings.setWizardDeviceDetails(true);

+				settings.setWizardDeviceSimple(true);

+				settings.setWizardConfig(true);

+			}

+

+			if (! language.isEmpty()) {

+				settings.setLanguage(language);

+			}

+			

+			settings.setCSEHostname(etCSEHostname.getText().toString());

+			settings.setCSEPort(etCSEPort.getText().toString());

+			settings.setCSEId(etCSEId.getText().toString());

+			settings.setCSEName(etCSEName.getText().toString());

+			settings.setCSELogin(etCSELogin.getText().toString());

+			settings.setCSEPwd(etCSEPwd.getText().toString());

+		}

+		else if (butClicked == btnCancel) {

+			if (! currentLanguage.isEmpty()) {

+				settings.setLanguage(currentLanguage);

+			}

+		}

+

+		if ((butClicked == btnCancel) || (butClicked == btnValidate)) {

+			finish();

+		}

+	}

+

+	@Override

+	public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

+		if (! isChecked)

+			return;

+		RadioButton butClicked = (RadioButton)buttonView;

+		if ((butClicked == rbLanguageEn) || (butClicked == rbLanguageFr)) {

+			language = (butClicked == rbLanguageEn) ? "en" : "fr";

+			SettingsManager.getInstance(SettingsActivity.this).setLanguage(language);

+			onResume();

+		}

+		

+		if ((butClicked == rbDeviceName) || (butClicked == rbDeviceNameWithAlias)) {

+			String configDeviceName = (butClicked == rbDeviceName) ? SettingsManager.DEVICE_NAME_WITH_NAME  : SettingsManager.DEVICE_NAME_WITH_ALIAS;

+			SettingsManager.getInstance(SettingsActivity.this).setDeviceName(configDeviceName);

+			onResume();

+		}

+	}

+	

+}

diff --git a/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/applications/ApplicationConfigActivity.java b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/applications/ApplicationConfigActivity.java
new file mode 100644
index 0000000..e1f64e6
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/applications/ApplicationConfigActivity.java
@@ -0,0 +1,177 @@
+/*******************************************************************************

+ * Copyright (c) 2013, 2017 Orange.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    BAREAU Cyrille <cyrille.bareau@orange.com>, 

+ *    BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+ *    BOLLE Sebastien <sebastien.bolle@orange.com>.

+ *******************************************************************************/

+package org.eclipse.om2m.android.dashboard.applications;

+

+import java.util.Locale;

+

+import org.eclipse.om2m.android.dashboard.cse.OneM2MListener;

+import org.eclipse.om2m.android.dashboard.cse.OneM2MRequester;

+import org.eclipse.om2m.android.dashboard.cse.OneM2MRequest.OneM2MReqType;

+import org.eclipse.om2m.android.dashboard.cse.models.OneM2MApplication;

+import org.eclipse.om2m.android.dashboard.cse.requests.OneM2MRequestParams;

+import org.eclipse.om2m.android.dashboard.tools.SettingsManager;

+

+import org.eclipse.om2m.android.dashboard.R;

+

+import android.annotation.SuppressLint;

+import android.app.Activity;

+import android.content.res.Configuration;

+import android.content.res.Resources;

+import android.os.Bundle;

+import android.util.Log;

+import android.webkit.HttpAuthHandler;

+import android.webkit.WebChromeClient;

+import android.webkit.WebView;

+import android.webkit.WebViewClient;

+import android.widget.TextView;

+import android.widget.Toast;

+

+@SuppressLint("SetJavaScriptEnabled")

+public class ApplicationConfigActivity extends Activity implements OneM2MListener {

+	

+	static private final String PARAM = "___RES___";

+	static private final String MSG_TEMPLATE = "<html><head><style type=\"text/css\">" + 

+			"#maindiv {width:100%; height:100%; text-align:center; vertical-align:middle; border:1px solid #be1f2e;}" +

+			"#content {width:80%; height:80p%; margin-left:auto; margin-right:auto; position:relative; top:40%;}" +	

+			"h3 {color:#be1f2e; text-align:center; vertical-align:middle}" + 

+			"p {color:black; text-align:center; vertical-align:middle}" + 

+			"</style></head>" +

+			"<body><div id=\"maindiv\"><div id=\"content\"><h3>" + 

+			PARAM + 

+			"</h3></div></div></body></html>";

+

+	private WebView configContentView;

+	private TextView configTitle;

+

+	private String applicationId;

+	private OneM2MApplication application;

+	

+	// =====================================================================================

+	// Lifecycle

+	// =====================================================================================

+

+	@Override

+	protected void onCreate(Bundle savedInstanceState) {

+		super.onCreate(savedInstanceState);

+		Bundle extras = getIntent().getExtras();

+		if (extras != null) {

+			applicationId = extras.getString("applicationId");				

+		}

+	}

+

+	@Override

+	protected void onResume() {

+		super.onResume();

+		

+		String language = SettingsManager.getInstance(this).getLanguage();

+		Resources res = getApplication().getResources();

+		Configuration config = res.getConfiguration();

+		config.locale = new Locale(language);

+		res.updateConfiguration(config, null);

+

+		setContentView(R.layout.application_config_activity);

+		

+		configTitle = (TextView)findViewById(R.id.tv_application_config_title);

+		configContentView = (WebView)findViewById(R.id.wv_application_config_container);

+

+		// Retrieve the application

+		OneM2MRequester.getInstance().sendRequest(OneM2MReqType.APPLICATION, 

+				new OneM2MRequestParams(applicationId), getApplicationContext(), this);

+

+		setBanner("");

+	}

+

+	private void createWebView() {

+		setBanner(application.getApn());

+		final String name = SettingsManager.getInstance(this).getCSELogin();

+		final String password = SettingsManager.getInstance(this).getCSEPwd();

+		final String url = application.getPresentationUrl() 

+				+ "?name=" + name + "&password=" + password;

+

+		configContentView.setWebViewClient(new WebViewClient () {

+			public void onReceivedHttpAuthRequest(WebView view,

+					HttpAuthHandler handler, String host, String realm) {

+				try {

+					if (handler.useHttpAuthUsernamePassword()) {

+						handler.proceed(name, password);

+					} else {

+	            		setBanner("Error authentication.");

+						String content = MSG_TEMPLATE.replaceFirst(PARAM, 

+								getResources().getString(R.string.application_details_no_access_rights));

+						view.loadData(content, "text/html", "UTF-8");

+					}

+            	} catch (Exception e) {

+            		setBanner("Error authentication: " + e.getMessage());

+					String content = MSG_TEMPLATE.replaceFirst(PARAM, 

+							getResources().getString(R.string.application_details_no_access_rights)) + ":" + e.getMessage();

+					view.loadData(content, "text/html", "UTF-8");

+				}

+			}

+		});

+		configContentView.getSettings().setJavaScriptEnabled(true);

+		configContentView.resumeTimers();

+

+		configContentView.setWebChromeClient(new WebChromeClient() {

+			@Override

+			public void onReceivedTitle(WebView view, String title) {

+				super.onReceivedTitle(view, title);

+				if (title.contains("404")) {

+					String content = MSG_TEMPLATE.replaceFirst(PARAM, 

+							getResources().getString(R.string.application_details_no_config));

+					view.loadData(content, "text/html", "UTF-8");

+				} else if (title.contains("401")) {

+					if (title.contains("_OTB_reset_User__")) {

+						view.loadUrl(url);

+					} else {

+						String content = MSG_TEMPLATE.replaceFirst(PARAM, 

+								getResources().getString(R.string.application_details_no_access_rights));

+						view.loadData(content, "text/html", "UTF-8");

+					}

+				}

+			}

+		});

+		configContentView.loadUrl(url);

+	}

+	

+	private final void setBanner(String msg) {

+		configTitle.setText(getResources().getString(R.string.application_config_title)

+				.replace("%app_name%", msg));

+	}

+	

+	@Override

+	protected void onDestroy() {

+		super.onDestroy();

+		Log.i(getClass().getName(), "onDestroy");

+		configContentView.clearHistory();

+		configContentView.clearCache(true);

+		configContentView.loadUrl("about:blank");

+		configContentView.freeMemory(); 

+		configContentView.pauseTimers();

+		configContentView = null;

+	}

+

+	@Override

+	public void onOneM2MResponse(OneM2MReqType requestType, Object response) {

+		if (requestType == OneM2MReqType.APPLICATION) {

+			application = (OneM2MApplication)response;

+			if (application != null)

+				createWebView();

+		}

+	}

+

+	@Override

+	public void onOneM2MError(OneM2MReqType requestType, String msg) {

+		Toast.makeText(this, "getApplication " + msg, Toast.LENGTH_LONG).show();

+	}

+	

+}

diff --git a/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/cse/OneM2MConnector.java b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/cse/OneM2MConnector.java
new file mode 100644
index 0000000..f6906f1
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/cse/OneM2MConnector.java
@@ -0,0 +1,386 @@
+/*******************************************************************************

+ * Copyright (c) 2013, 2017 Orange.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    BAREAU Cyrille <cyrille.bareau@orange.com>, 

+ *    BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+ *    BOLLE Sebastien <sebastien.bolle@orange.com>.

+ *******************************************************************************/

+package org.eclipse.om2m.android.dashboard.cse;

+

+import java.net.HttpURLConnection;

+import java.net.URL;

+import java.nio.charset.Charset;

+import java.util.ArrayList;

+import java.util.HashMap;

+import java.util.List;

+import java.util.Map;

+

+import org.apache.http.HttpStatus;

+import org.eclipse.om2m.android.dashboard.cse.models.Container;

+import org.eclipse.om2m.android.dashboard.cse.models.FlexContainerAnnounced;

+import org.eclipse.om2m.android.dashboard.cse.models.OneM2MApplication;

+import org.eclipse.om2m.android.dashboard.cse.models.Response;

+import org.eclipse.om2m.android.dashboard.cse.models.SDTDevice;

+import org.eclipse.om2m.android.dashboard.cse.models.SDTModule;

+import org.eclipse.om2m.android.dashboard.cse.models.Uril;

+import org.eclipse.om2m.android.dashboard.tools.SettingsManager;

+import org.springframework.http.HttpEntity;

+import org.springframework.http.HttpHeaders;

+import org.springframework.http.HttpMethod;

+import org.springframework.http.MediaType;

+import org.springframework.http.client.ClientHttpResponse;

+import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;

+import org.springframework.http.converter.FormHttpMessageConverter;

+import org.springframework.http.converter.HttpMessageConverter;

+import org.springframework.http.converter.StringHttpMessageConverter;

+import org.springframework.http.converter.json.GsonHttpMessageConverter;

+import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;

+import org.springframework.web.client.ResponseErrorHandler;

+import org.springframework.web.client.RestTemplate;

+import org.springframework.web.util.UriComponentsBuilder;

+

+import com.fasterxml.jackson.databind.DeserializationFeature;

+

+import android.content.Context;

+import android.util.Log;

+

+public class OneM2MConnector {

+	

+	private static final String FILTER = "fu";

+	private static final String RETURN_CONTENT = "rcn";

+	private static final String LABEL = "lbl";

+	private static final String TYPE = "ty";

+	private static final String HTTP = "http://";

+	private static final String APP_TYPE = "ResourceType/Application";

+	private static final String DEV_TYPE = "object.type/device";

+

+	private static final OneM2MConnector INSTANCE = new OneM2MConnector();

+	static public List<String> errors = new ArrayList<String>();

+

+	private Map<String, SDTDevice> currentDevices = new HashMap<String, SDTDevice>();

+	

+	private RestTemplate GETRestTemplate = null;

+	private RestTemplate POSTRestTemplate = null;

+	private HttpHeaders requestHeaders;

+	private String inCseBaseUrl;

+	private String inCseUrl;

+	private String serverBaseUrl;

+	private MappingJackson2HttpMessageConverter jacksonConverter;

+	private Context context;

+

+	public static final OneM2MConnector getInstance(Context context) {

+		INSTANCE.context = context;

+		INSTANCE.requestHeaders = new HttpHeaders();

+		INSTANCE.requestHeaders.set("X-M2M-Origin", 

+				SettingsManager.getInstance(context).getCSELogin() + ":" 

+						+ SettingsManager.getInstance(context).getCSEPwd());

+		INSTANCE.requestHeaders.set("Accept", "application/json");

+		INSTANCE.requestHeaders.set("Content-Type", "application/json");

+		String srv = SettingsManager.getInstance(context).getCSEHostname() 

+				+ ":" + SettingsManager.getInstance(context).getCSEPort();

+		INSTANCE.serverBaseUrl = srv.startsWith(HTTP) ? srv : HTTP + srv;

+		INSTANCE.inCseBaseUrl = INSTANCE.serverBaseUrl + "/~" ;

+		INSTANCE.inCseUrl = INSTANCE.inCseBaseUrl + "/" 

+				+ SettingsManager.getInstance(context).getCSEId() 

+				+ "/" + SettingsManager.getInstance(context).getCSEName();

+

+		return INSTANCE;

+	}

+

+	private OneM2MConnector() {

+		List<MediaType> supportedMediaTypes = new ArrayList<MediaType>();

+//		supportedMediaTypes.add(new MediaType("application", "json", Charset.forName("UTF-8")));

+		supportedMediaTypes.add(new MediaType("application", "json", Charset.forName("ISO-8859-1")));

+		

+

+		jacksonConverter = new MappingJackson2HttpMessageConverter();

+		jacksonConverter.setSupportedMediaTypes(supportedMediaTypes);

+		jacksonConverter.getObjectMapper().configure(DeserializationFeature.UNWRAP_ROOT_VALUE, 

+				false);

+		

+		GsonHttpMessageConverter gsonConverter = new GsonHttpMessageConverter();

+		gsonConverter.setSupportedMediaTypes(supportedMediaTypes);

+

+		ResponseErrorHandler errorHandler = new ResponseErrorHandler() {

+			@Override

+			public boolean hasError(ClientHttpResponse resp) {

+				try {

+//					InputStream body = resp.getBody();

+//					BufferedReader br = new BufferedReader(new InputStreamReader(body));

+//					String line = null;

+//					while((line = br.readLine()) != null) {

+//						Log.d(OneM2MConnector.class.getName(), line);

+//					}

+					if (resp.getRawStatusCode() != HttpStatus.SC_OK) {

+						Log.e(OneM2MConnector.class.getName(), "invalid response, expected 200 OK , found " + resp.getRawStatusCode());

+						return true;

+						

+					}

+				} catch (Exception e) {

+					Log.e(OneM2MConnector.class.getName(), "hasError: " + e.getMessage(), e);

+				}

+				return false;

+			}

+

+			@Override

+			public void handleError(ClientHttpResponse resp) {

+				try {

+					

+					Log.e(OneM2MConnector.class.getName(), "handleError " + resp.getRawStatusCode() + " " 

+							+ resp.getStatusText());

+				} catch (Exception e) {

+					Log.e(OneM2MConnector.class.getName(), "handleError " + e.getMessage());

+				}

+			}

+		};

+

+		// init rest object

+		GETRestTemplate = new RestTemplate();

+		List<HttpMessageConverter<?>> getMessageConverters = new ArrayList<HttpMessageConverter<?>>();

+//		getMessageConverters.add(gsonConverter);

+		getMessageConverters.add(jacksonConverter);

+//		getMessageConverters.add(new StringHttpMessageConverter());

+//		getMessageConverters.add(new ByteArrayHttpMessageConverter());

+//		getMessageConverters.add(new ResourceHttpMessageConverter());

+		GETRestTemplate.setMessageConverters(getMessageConverters);

+		GETRestTemplate.setErrorHandler(errorHandler);

+

+		POSTRestTemplate = new RestTemplate();

+		List<HttpMessageConverter<?>> postMessageConverters = new ArrayList<HttpMessageConverter<?>>();

+		postMessageConverters.add(new FormHttpMessageConverter());

+		postMessageConverters.add(new StringHttpMessageConverter());

+//		postMessageConverters.add(gsonConverter);

+		postMessageConverters.add(jacksonConverter);

+		POSTRestTemplate.setMessageConverters(postMessageConverters);

+		POSTRestTemplate.setRequestFactory(new HttpComponentsClientHttpRequestFactory());

+		POSTRestTemplate.setErrorHandler(errorHandler);

+	}

+

+	public List<OneM2MApplication> getApplications() {

+		try {

+			List<OneM2MApplication> applications = new ArrayList<OneM2MApplication>();

+			Uril uril = discovery(APP_TYPE, 2);

+			for (String appRi : uril.getUril()) {

+				// get application

+				OneM2MApplication application = getApplication(appRi);

+				applications.add(application);

+			}

+			return applications;

+		} catch (Exception e) {

+			Log.e(OneM2MConnector.class.getName(), e.getMessage(), e);

+			return new ArrayList<OneM2MApplication>();

+		}

+	}

+

+	public OneM2MApplication getApplication(String appRi) {

+		OneM2MApplication application = null;

+		try {

+			HttpEntity<?> requestEntity = new HttpEntity<Object>(requestHeaders);

+			String url = inCseBaseUrl + appRi;

+			UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(url);

+			builder.queryParam(RETURN_CONTENT, 4);

+			Response response =  GETRestTemplate.exchange(builder.build().encode().toUri(), 

+					HttpMethod.GET, requestEntity, Response.class).getBody();

+			if (! response.getAny().isEmpty()) {

+				String key = response.getAny().keySet().iterator().next();

+				Log.d(getClass().getName(), "key=" + key);

+				Object value = response.getAny().get(key);

+				application = jacksonConverter.getObjectMapper().convertValue(value, 

+						OneM2MApplication.class);

+				

+				if (application.getContainers() != null) {

+					for (Container container :application.getContainers()) {

+						if (container.getRn().equals("ICON")) {

+							application.setIconUrl(getContent(container));

+						} else if (container.getRn().equals("PRESENTATION_URL")) {

+							application.setPresentationUrl(getContent(container));

+						}

+					}

+				}

+			}

+		} catch (Exception e) {

+			Log.e(OneM2MConnector.class.getName(), e.getMessage(), e);

+		}

+		return application;

+	}

+	

+	private final String getContent(final Container container) {

+		String ret = container.getCin().get(0).getCon();

+		return ret.startsWith(HTTP) ? ret : serverBaseUrl + ret;

+	}

+

+	public synchronized List<SDTDevice> getDevices() {

+		try {

+			// perform a discovery on SDT device FlexContainer 

+			Uril uril = discovery(DEV_TYPE, 28);

+			for (String u: uril.getUril()) {

+				Log.i(getClass().getName(), u);

+				

+				// retrieve device if it is a new device

+				if (!checkDevice(u)) {

+					SDTDevice device = getDevice(u);

+					if (device != null) {

+						device.setMapRi(u);

+						addCurrentDevice(u, device);

+					}

+				}

+			}

+				

+			// perform discovery on announced SDT device FlexContainer

+			Uril announcedUril = discovery(DEV_TYPE, 10028);

+			for (String u: announcedUril.getUril()) {

+				Log.i(getClass().getName(), "announced resource=" + u);

+				if (!checkDevice(u)) {

+					FlexContainerAnnounced fca = getAnnouncedDevice(u);

+					if (fca != null) {

+						SDTDevice device = getDevice(fca.getLnk());

+						if (device != null) {

+							device.setMapRi(u);

+							addCurrentDevice(u, device);

+						}

+					}

+				}

+			}

+			

+			// remove old devices

+			for (SDTDevice device : getCurrentDevices()) {

+				String mapRi = device.getMapRi();

+				if ((! uril.getUril().contains(mapRi)) 

+						&& (! announcedUril.getUril().contains(mapRi))) {

+					removeCurrentDevice(device);

+				}

+			}

+		} catch (Exception e) {

+			Log.e(OneM2MConnector.class.getName(), e.getMessage(), e);

+		}

+		return getCurrentDevices();

+	}

+

+	public Map<String, List<SDTDevice>> getDevicesByTypes() {

+		Map<String, List<SDTDevice>> devicesByTypes = new HashMap<String, List<SDTDevice>>();

+		try {

+			for (SDTDevice sdtDevice : getDevices()) {

+				String cnd = sdtDevice.getCnd();

+				List<SDTDevice> sdtDevicesPerCndList = devicesByTypes.get(cnd);

+				if (sdtDevicesPerCndList == null) {

+					sdtDevicesPerCndList = new ArrayList<SDTDevice>();

+					devicesByTypes.put(cnd, sdtDevicesPerCndList);

+				}

+				sdtDevicesPerCndList.add(sdtDevice);

+			}

+		} catch (Exception e) {

+			Log.e(OneM2MConnector.class.getName(), e.getMessage(), e);

+		}

+		return devicesByTypes;

+	}

+

+	public boolean isConnectedWithInCse() {

+		try {

+			URL url = new URL(inCseUrl);

+			HttpURLConnection httpUrlConnection = (HttpURLConnection) url.openConnection();

+			httpUrlConnection.setDoInput(true);

+			httpUrlConnection.setRequestMethod("GET");

+			return httpUrlConnection.getResponseCode() != -1;

+		} catch (Exception e) {

+			return false;

+		}

+	}

+

+	private Uril discovery(String label, Integer resourceType) {

+		HttpEntity<?> requestEntity = new HttpEntity<Object>(requestHeaders);

+		UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(inCseUrl);

+		builder.queryParam(FILTER, 1);

+		if (label != null) {

+			builder.queryParam(LABEL, label);

+		}

+		if (resourceType != null) {

+			builder.queryParam(TYPE, resourceType);

+		}

+		return GETRestTemplate.exchange(builder.build().encode().toUri(), 

+				HttpMethod.GET, requestEntity, Uril.class).getBody();

+	}

+

+	public SDTDevice getDevice(String deviceRi) {

+		SDTDevice sdtDevice = null;

+		try {

+			HttpEntity<?> requestEntity = new HttpEntity<Object>(requestHeaders);

+			String url = inCseBaseUrl + deviceRi;

+			UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(url);

+			builder.queryParam(RETURN_CONTENT, 4);

+			Response response =  GETRestTemplate.exchange(builder.build().encode().toUri(), 

+					HttpMethod.GET, requestEntity, Response.class).getBody();

+			if (response.getAny().isEmpty()) {

+				return null;

+			}

+

+			String key = response.getAny().keySet().iterator().next();

+			Log.d(getClass().getName(), "key=" + key);

+			sdtDevice = jacksonConverter.getObjectMapper().convertValue(response.getAny().get(key), 

+					SDTDevice.class);

+

+			for (String keyOther : sdtDevice.getOthers().keySet()) {

+				if (keyOther.startsWith("hd:")) {

+					// module

+					Object moduleValue = sdtDevice.getOthers().get(keyOther);

+					SDTModule sdtModule = jacksonConverter.getObjectMapper()

+							.convertValue(moduleValue, SDTModule.class);

+					sdtModule.setShortname(keyOther);

+					sdtDevice.addModule(sdtModule);

+				}

+			}

+		} catch (Exception e) {

+			Log.d(OneM2MConnector.class.getName(), "getDevice() failed : " + e.getMessage(), e);

+//			Toast.makeText(context, "getDevice " + e, Toast.LENGTH_LONG).show();

+		}	

+		return sdtDevice;

+	}

+	

+	private FlexContainerAnnounced getAnnouncedDevice(String announcedDeviceId) {

+		HttpEntity<?> requestEntity = new HttpEntity<Object>(requestHeaders);

+		String url = inCseBaseUrl + announcedDeviceId;

+		UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(url);

+		builder.queryParam(RETURN_CONTENT, 4);

+		Response response =  GETRestTemplate.exchange(builder.build().encode().toUri(), 

+				HttpMethod.GET, requestEntity, Response.class).getBody();

+		if (response.getAny().isEmpty()) {

+			return null;

+		}

+		String key = response.getAny().keySet().iterator().next();

+		Log.d(getClass().getName(), "key=" + key);

+		Object value = response.getAny().get(key);

+		return jacksonConverter.getObjectMapper().convertValue(value, 

+				FlexContainerAnnounced.class);

+	}

+	

+	private void addCurrentDevice(String key, SDTDevice deviceToBeAdded) {

+		synchronized (currentDevices) {

+			currentDevices.put(key, deviceToBeAdded);

+		}

+	}

+	

+	private void removeCurrentDevice(SDTDevice deviceToBeRemoved) {

+		synchronized (currentDevices) {

+			currentDevices.values().remove(deviceToBeRemoved);

+		}

+	}

+	

+	private boolean checkDevice(String ri) {

+		synchronized (currentDevices) {

+			return currentDevices.containsKey(ri);

+		}

+	}

+	

+	private List<SDTDevice> getCurrentDevices() {

+		List<SDTDevice> toBeReturned = new ArrayList<SDTDevice>();

+		synchronized (currentDevices) {

+			toBeReturned.addAll(currentDevices.values());

+		}

+		return toBeReturned;

+	}

+	

+}

diff --git a/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/cse/OneM2MListener.java b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/cse/OneM2MListener.java
new file mode 100644
index 0000000..98ae972
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/cse/OneM2MListener.java
@@ -0,0 +1,24 @@
+/*******************************************************************************

+ * Copyright (c) 2013, 2017 Orange.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    BAREAU Cyrille <cyrille.bareau@orange.com>, 

+ *    BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+ *    BOLLE Sebastien <sebastien.bolle@orange.com>.

+ *******************************************************************************/

+

+package org.eclipse.om2m.android.dashboard.cse;

+

+import org.eclipse.om2m.android.dashboard.cse.OneM2MRequest.OneM2MReqType;

+

+public interface OneM2MListener {

+		

+	public void onOneM2MResponse(OneM2MReqType requestType, Object response);

+	

+	public void onOneM2MError(OneM2MReqType requestType, String msg);

+

+}

diff --git a/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/cse/OneM2MRequest.java b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/cse/OneM2MRequest.java
new file mode 100644
index 0000000..c6f6b5e
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/cse/OneM2MRequest.java
@@ -0,0 +1,95 @@
+/*******************************************************************************

+ * Copyright (c) 2013, 2017 Orange.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    BAREAU Cyrille <cyrille.bareau@orange.com>, 

+ *    BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+ *    BOLLE Sebastien <sebastien.bolle@orange.com>.

+ *******************************************************************************/

+

+package org.eclipse.om2m.android.dashboard.cse;

+

+import java.util.HashMap;

+import java.util.Map;

+

+import org.eclipse.om2m.android.dashboard.cse.requests.OneM2MRequestParams;

+

+import com.google.gson.Gson;

+

+import android.content.Context;

+import android.os.AsyncTask;

+

+abstract public class OneM2MRequest<T> extends AsyncTask<Object, Void, T>  {

+	

+	static public Map<OneM2MReqType, String> errors = new HashMap<OneM2MReqType, String>();

+

+	public enum OneM2MReqType {

+		DEVICES,

+		DEVICES_BY_TYPES,

+		DEVICE,

+		APPLICATIONS,

+		APPLICATION,

+		DEBUG,

+		INCSE_STATUS

+	}

+		

+	// ================================================================================

+	

+	protected OneM2MReqType requestType;

+	protected OneM2MListener listener;

+	protected Context context;

+	protected String errorMessage;

+

+	protected Map<OneM2MReqType, String> requestDebug = new HashMap<OneM2MReqType, String>();

+	

+	// ================================================================================

+		

+	protected OneM2MRequest(OneM2MReqType requestType, Context context,

+			OneM2MListener listener) {

+		this.requestType = requestType;

+		this.context = context;

+		this.listener = listener;

+	}

+	

+	// ================================================================================

+	

+	@Override

+	protected T doInBackground(Object... args) {	

+		requestDebug.clear();

+		

+		OneM2MRequestParams param = null;

+		if ((args != null) && (args.length > 0))

+			param = (OneM2MRequestParams) args[0];

+		StringBuffer msg = new StringBuffer();

+		if (param != null)

+			msg.append("(").append(param).append(")");

+		try {

+			T resp = getResponse(param);

+			requestDebug.put(requestType, msg.append(new Gson().toJson(resp)).toString());

+			return resp;

+		} catch (Exception e) {

+			errorMessage = e.getMessage();

+			requestDebug.put(requestType, msg.insert(0, "ERROR " + errorMessage).toString());

+			errors.put(requestType, msg.insert(0, "ERROR " + errorMessage).toString());

+			return null;

+		}

+	}

+	

+	// Has to be implemented for each request type

+	abstract protected T getResponse(OneM2MRequestParams param);

+

+	@Override

+	protected void onPostExecute(T result) {

+		super.onPostExecute(result);

+		if (result == null) {

+			listener.onOneM2MError(requestType, errorMessage);

+		} else {

+			listener.onOneM2MResponse(requestType, result);

+		}

+	}

+

+}

diff --git a/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/cse/OneM2MRequester.java b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/cse/OneM2MRequester.java
new file mode 100644
index 0000000..109b3ca
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/cse/OneM2MRequester.java
@@ -0,0 +1,154 @@
+/*******************************************************************************

+ * Copyright (c) 2013, 2017 Orange.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    BAREAU Cyrille <cyrille.bareau@orange.com>, 

+ *    BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+ *    BOLLE Sebastien <sebastien.bolle@orange.com>.

+ *******************************************************************************/

+

+package org.eclipse.om2m.android.dashboard.cse;

+

+import java.util.HashMap;

+import java.util.Map;

+import java.util.Timer;

+import java.util.TimerTask;

+

+import org.eclipse.om2m.android.dashboard.cse.OneM2MRequest.OneM2MReqType;

+import org.eclipse.om2m.android.dashboard.cse.requests.OneM2MGetApplicationRequest;

+import org.eclipse.om2m.android.dashboard.cse.requests.OneM2MGetApplicationsRequest;

+import org.eclipse.om2m.android.dashboard.cse.requests.OneM2MGetDeviceRequest;

+import org.eclipse.om2m.android.dashboard.cse.requests.OneM2MGetDevicesRequest;

+import org.eclipse.om2m.android.dashboard.cse.requests.OneM2MGetIncseStatusRequest;

+import org.eclipse.om2m.android.dashboard.cse.requests.OneM2MRequestParams;

+

+import android.content.Context;

+

+public class OneM2MRequester   {

+

+	private static final OneM2MRequester INSTANCE = new OneM2MRequester();

+	

+	private Map<String, Map<OneM2MReqType, Timer>> currentPollings = new HashMap<String, Map<OneM2MReqType,Timer>>();

+

+	public final static int DEFAULT_POLLING_DELAY = 15;

+	

+	// ================================================================================

+

+	abstract class PollingTask extends TimerTask {

+		protected OneM2MReqType requestType;

+		protected OneM2MRequestParams params = null;

+		protected Context context = null;

+		protected OneM2MListener listener = null;

+

+		public PollingTask(OneM2MReqType requestType, OneM2MRequestParams params2, 

+				Context context, OneM2MListener listener) {

+			this.requestType = requestType;

+			this.params = params2;

+			this.context = context;

+			this.listener = listener;

+		}

+	}

+

+	// ================================================================================

+

+	private OneM2MRequester() {

+		if (INSTANCE != null) {

+			throw new IllegalStateException("Already instantiated");

+		}		

+	}

+

+	public static OneM2MRequester getInstance() {			

+		return INSTANCE;

+	}

+

+	// ================================================================================

+

+

+	public void sendRequest(OneM2MReqType requestType, OneM2MRequestParams params, 

+			Context context, OneM2MListener listener) {

+		OneM2MRequest<?> request = null;

+

+		switch(requestType) {

+		case DEVICES:

+			request = new OneM2MGetDevicesRequest(context, listener);

+			break;

+		case DEVICES_BY_TYPES:

+//			request = new OTBHabDevicesByTypesRequest(context, listener);	

+			break;

+		case DEVICE:

+			request = new OneM2MGetDeviceRequest(context, listener);

+			break;

+		case APPLICATIONS:

+			request = new OneM2MGetApplicationsRequest(context, listener);

+			break;

+		case APPLICATION:

+			request = new OneM2MGetApplicationRequest(context, listener);

+			break;	

+		case INCSE_STATUS:

+			request = new OneM2MGetIncseStatusRequest(context, listener);

+			break;

+		case DEBUG:

+//			request = new OTBHabDebugRequest(context, listener);

+			break;

+		}

+

+		request.execute(params);

+	}

+

+	public void sendPollingRequest(OneM2MReqType requestType, OneM2MRequestParams params, 

+			Context context, OneM2MListener listener, int pollingDelay) {

+		// possible cases :

+		//   1- this caller have active polling => check if it is for the same request

+		//      . yes => cancel current polling and this request and restart it with nex polling delay

+		//      . no => create a new polling for this request

+		//   2- this caller does not have active polling => no checking & create polling		

+

+		// get caller class name (= identifier)

+		String callerName = new Throwable().getStackTrace()[1].getClassName(); 

+		

+		Map<OneM2MReqType, Timer> pollingsForCaller = currentPollings.get(callerName);

+		if (pollingsForCaller == null) {

+			pollingsForCaller = new HashMap<OneM2MReqType, Timer>();

+			currentPollings.put(callerName, pollingsForCaller);

+		}

+

+		Timer pollingTimer = pollingsForCaller.get(requestType);

+		if (pollingTimer != null) {

+			// there is a polling for the same request => cancel current one + then create a new one (= restart)

+			pollingTimer.cancel();

+		}

+

+		pollingTimer = new Timer();

+		pollingTimer.scheduleAtFixedRate(

+				new PollingTask(requestType, params, context, listener) {

+					@Override

+					public void run() {

+						sendRequest(requestType, params, context, listener);					

+					}

+				}, 

+				0,  

+				pollingDelay * 1000);

+

+		// add/replace timer

+		pollingsForCaller.put(requestType, pollingTimer);

+	}

+

+	public void cancelMyPollingRequests() {

+		// get caller class name (= identifier)

+		String callerName = new Throwable().getStackTrace()[1].getClassName(); 

+		

+		Map<OneM2MReqType, Timer> pollingsForCaller = currentPollings.get(callerName);

+		if (pollingsForCaller != null) {

+			for (OneM2MReqType reqType : pollingsForCaller.keySet()) {

+				Timer pollingTimer = pollingsForCaller.get(reqType);

+				pollingTimer.cancel();

+			}

+		}

+		currentPollings.remove(callerName);

+	}

+

+}

diff --git a/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/cse/models/Container.java b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/cse/models/Container.java
new file mode 100644
index 0000000..25df8eb
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/cse/models/Container.java
@@ -0,0 +1,34 @@
+/*******************************************************************************

+ * Copyright (c) 2013, 2017 Orange.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    BAREAU Cyrille <cyrille.bareau@orange.com>, 

+ *    BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+ *    BOLLE Sebastien <sebastien.bolle@orange.com>.

+ *******************************************************************************/

+package org.eclipse.om2m.android.dashboard.cse.models;

+

+import java.util.List;

+

+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

+import com.fasterxml.jackson.annotation.JsonProperty;

+

+@JsonIgnoreProperties(ignoreUnknown=true)

+public class Container extends Resource {

+

+	@JsonProperty("m2m:cin")

+	private List<ContentInstance> cin;

+

+	public List<ContentInstance> getCin() {

+		return cin;

+	}

+

+	public void setCin(List<ContentInstance> cin) {

+		this.cin = cin;

+	}

+

+}

diff --git a/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/cse/models/ContentInstance.java b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/cse/models/ContentInstance.java
new file mode 100644
index 0000000..a26a3dd
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/cse/models/ContentInstance.java
@@ -0,0 +1,30 @@
+/*******************************************************************************

+ * Copyright (c) 2013, 2017 Orange.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    BAREAU Cyrille <cyrille.bareau@orange.com>, 

+ *    BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+ *    BOLLE Sebastien <sebastien.bolle@orange.com>.

+ *******************************************************************************/

+package org.eclipse.om2m.android.dashboard.cse.models;

+

+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

+

+@JsonIgnoreProperties(ignoreUnknown=true)

+public class ContentInstance {

+

+	private String con;

+

+	public String getCon() {

+		return con;

+	}

+

+	public void setCon(String con) {

+		this.con = con;

+	}

+	

+}

diff --git a/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/cse/models/DatapointType.java b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/cse/models/DatapointType.java
new file mode 100644
index 0000000..372e045
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/cse/models/DatapointType.java
@@ -0,0 +1,171 @@
+/*******************************************************************************
+ * Copyright (c) 2014, 2017 Orange.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.eclipse.om2m.android.dashboard.cse.models;
+
+public enum DatapointType {
+	
+	absoluteEnergyConsumption("absoluteEnergyConsumption", "abECn"),
+	absoluteStartTime("absoluteStartTime", "abSTe"),
+	absoluteStopTime("absoluteStopTime", "abST0"),
+	alarm("alarm", "alarm"),
+	alarmStatus("alarmStatus", "alaSs"),
+	availableChannels("availableChannels", "avaCs"),
+	bath("bath", "bath"),
+	batteryThreshold("batteryThreshold", "batTd"),
+	blue("blue", "blue"),
+	bone("bone", "bone"),
+	brightness("brightness", "brigs"),
+	capacity("capacity", "capay"),
+	channelId("channelId", "chaId"),
+	charging("charging", "charg"),
+	code("code", "code"),
+	colourSat("colourSat", "colSn"),
+	current("current", "currt"),
+	currentDate("currentDate", "curDe"),
+	currentTemperature("currentTemperature", "curT0"),
+	currentTime("currentTime", "curTe"),
+	defrost("defrost", "defrt"),
+	description("description", "descn"),
+	desiredHumidity("desiredHumidity", "desHy"),
+	detectedTime("detectedTime", "detTe"),
+	diastolicPressure("diastolicPressure", "diaPe"),
+	directionAuto("directionAuto", "dirAo"),
+	directionDown("directionDown", "dirDn"),
+	directionLeft("directionLeft", "dirLt"),
+	directionRight("directionRight", "dirRt"),
+	directionUp("directionUp", "dirUp"),
+	discharging("discharging", "discg"),
+	doorState("doorState", "dooSt"),
+	duration("duration", "duran"),
+	estimatedTimeToEnd("estimatedTimeToEnd", "eTTEd"),
+	fat("fat", "fat"),
+	filterLifetime("filterLifetime", "filLe"),
+	frequency("frequency", "freqy"),
+	green("green", "green"),
+	height("height", "heigt"),
+	inputSourceID("inputSourceID", "inSId"),
+	kcal("kcal", "kcal"),
+	keyNumber("keyNumber", "keyNr"),
+	level("level", "level"),
+	light("light", "light"),
+	liquidLevel("liquidLevel", "liqLv"),
+	lowBattery("lowBattery", "lowBy"),
+	lqi("lqi", "lqi"),
+	maxValue("maxValue", "maxVe"),
+	minValue("minValue", "minVe"),
+	multiplyingFactors("multiplyingFactors", "mulFs"),
+	muscle("muscle", "musce"),
+	muteEnabled("muteEnabled", "mutEd"),
+	openAlarm("openAlarm", "opeAm"),
+	openDuration("openDuration", "opeDn"),
+	operationMode("operationMode", "opeMe"),
+	oxygenSaturation("oxygenSaturation", "oxySn"),
+	power("power", "power"),
+	powerGenerationData("powerGenerationData", "poGDa"),
+	powerSaveEnabled("powerSaveEnabled", "poSEd"),
+	powerState("powerState", "powSe"),
+	previousChannel("previousChannel", "preCl"),
+	pulseRate("pulseRate", "pulRe"),
+	pushed("pushed", "pusBn"),
+	rapidCool("rapidCool", "rapCl"),
+	rapidFreeze("rapidFreeze", "rapFe"),
+	red("red", "red"),
+	referenceTimer("referenceTimer", "refTr"),
+	relativeHumidity("relativeHumidity", "relHy"),
+	resistance("resistance", "resie"),
+	rinseLevel("rinseLevel", "rinLl"),
+	roundingEnergyConsumption("roundingEnergyConsumption", "roECn"),
+	roundingEnergyGeneration("roundingEnergyGeneration", "roEGn"),
+	rssi("rssi", "rssi"),
+	runningTime("runningTime", "runTe"),
+	sensitivity("sensitivity", "sensy"),
+	significantDigits("significantDigits", "sigDs"),
+	silentTime("silentTime", "silTe"),
+	status("status", "stats"),
+	stepValue("stepValue", "steVe"),
+	strength("strength", "streh"),
+	supportedInputSources("supportedInputSources", "suISs"),
+	supportedModes("supportedModes", "supMs"),
+	systolicPressure("systolicPressure", "sysPe"),
+	targetDuration("targetDuration", "tarDn"),
+	targetTemperature("targetTemperature", "tarTe"),
+	targetTimeToStart("targetTimeToStart", "tTTSt"),
+	targetTimeToStop("targetTimeToStop", "tTTSp"),
+	temperature("temperature", "tempe"),
+	temperatureThreshhold("temperatureThreshhold", "temTd"),
+	tone("tone", "tone"),
+	turboEnabled("turboEnabled", "turEd"),
+	unit("unit", "unit"),
+	visceraFat("visceraFat", "visFt"),
+	voltage("voltage", "volte"),
+	volumePercentage("volumePercentage", "volPe"),
+	water("water", "water"),
+	weight("weight", "weigt"),
+
+	atmosphericPressure("atmosphericPressure", "atmPe"),
+	carbonDioxideValue("carbonDioxideValue", "cDeVe"),
+	coarseness("coarseness", "coass"),
+	cupsNumber("cupsNumber", "cupsN"),
+	currentJobState("currentJobState", "curJS"),
+	currentMachineState("currentMachineState", "curMS"),
+	detectedPersons("detectedPersons", "detPs"),
+	doorLock("doorLock", "dooLk"),
+	foamingStrength("foamingStrength", "foaSt"),
+	format("format", "frmt"),
+	jobStates("jobStates", "jobSt"),
+	login("login", "login"),
+	machineStates("machineStates", "mchSt"),
+	noise("noise", "noise"),
+	password("password", "psWd"),
+	progressPercentage("progressPercentage", "prgPc"),
+	url("url", "url"),
+	useGrinder("useGrinder", "useGr"),
+
+	undefinedVendorExt("undefinedVendorExt", "undef");
+	
+	private final String longDefinitionName;
+	private final String shortDefinitionName;
+	
+	DatapointType(String longDef, String shortDef) {
+		longDefinitionName = longDef;
+		shortDefinitionName = shortDef;
+	}
+
+    /**
+	 * @return the longDefinitionName
+	 */
+	public String getLongName() {
+		return longDefinitionName;
+	}
+
+	/**
+	 * @return the shortDefinitionName
+	 */
+	public String getShortName() {
+		return shortDefinitionName;
+	}
+
+    public static DatapointType fromLongName(String def) {
+        for (DatapointType c: DatapointType.values()) {
+            if (c.longDefinitionName.equals(def)) {
+                return c;
+            }
+        }
+		return null;
+    }
+
+    public static DatapointType fromShortName(String def) {
+        for (DatapointType c: DatapointType.values()) {
+            if (c.shortDefinitionName.equals(def)) {
+                return c;
+            }
+        }
+		return null;
+    }
+
+}
diff --git a/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/cse/models/FlexContainer.java b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/cse/models/FlexContainer.java
new file mode 100644
index 0000000..4e444a4
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/cse/models/FlexContainer.java
@@ -0,0 +1,83 @@
+/*******************************************************************************

+ * Copyright (c) 2013, 2017 Orange.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    BAREAU Cyrille <cyrille.bareau@orange.com>, 

+ *    BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+ *    BOLLE Sebastien <sebastien.bolle@orange.com>.

+ *******************************************************************************/

+package org.eclipse.om2m.android.dashboard.cse.models;

+

+import java.util.List;

+

+public abstract class FlexContainer extends Resource {

+	

+	private Integer ty;

+	private String pi;

+	private String ct;

+	private String lt;

+	private List<String> lbl;

+	private String et;

+	private String cnd;

+

+	public Integer getTy() {

+		return ty;

+	}

+	public void setTy(Integer ty) {

+	

+		this.ty = ty;

+	}

+	

+	public String getPi() {

+		return pi;

+	}

+	

+	public void setPi(String pi) {

+		this.pi = pi;

+	}

+	

+	public String getCt() {

+		return ct;

+	}

+	

+	public void setCt(String ct) {

+		this.ct = ct;

+	}

+	

+	public String getLt() {

+		return lt;

+	}

+	

+	public void setLt(String lt) {

+		this.lt = lt;

+	}

+	

+	public List<String> getLbl() {

+		return lbl;

+	}

+	

+	public void setLbl(List<String> lbl) {

+		this.lbl = lbl;

+	}

+	

+	public String getEt() {

+		return et;

+	}

+	

+	public void setEt(String et) {

+		this.et = et;

+	}

+	

+	public String getCnd() {

+		return cnd;

+	}

+	

+	public void setCnd(String cnd) {

+		this.cnd = cnd;

+	}

+	

+}

diff --git a/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/cse/models/FlexContainerAnnounced.java b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/cse/models/FlexContainerAnnounced.java
new file mode 100644
index 0000000..744774a
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/cse/models/FlexContainerAnnounced.java
@@ -0,0 +1,30 @@
+/*******************************************************************************

+ * Copyright (c) 2013, 2017 Orange.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    BAREAU Cyrille <cyrille.bareau@orange.com>, 

+ *    BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+ *    BOLLE Sebastien <sebastien.bolle@orange.com>.

+ *******************************************************************************/

+package org.eclipse.om2m.android.dashboard.cse.models;

+

+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

+

+@JsonIgnoreProperties(ignoreUnknown=true)

+public class FlexContainerAnnounced extends FlexContainer {

+	

+	private String lnk;

+

+	public String getLnk() {

+		return lnk;

+	}

+

+	public void setLnk(String lnk) {

+		this.lnk = lnk;

+	}

+

+}

diff --git a/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/cse/models/OneM2MApplication.java b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/cse/models/OneM2MApplication.java
new file mode 100644
index 0000000..c2c474e
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/cse/models/OneM2MApplication.java
@@ -0,0 +1,66 @@
+/*******************************************************************************

+ * Copyright (c) 2013, 2017 Orange.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    BAREAU Cyrille <cyrille.bareau@orange.com>, 

+ *    BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+ *    BOLLE Sebastien <sebastien.bolle@orange.com>.

+ *******************************************************************************/

+package org.eclipse.om2m.android.dashboard.cse.models;

+

+import java.util.List;

+

+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

+import com.fasterxml.jackson.annotation.JsonProperty;

+

+@JsonIgnoreProperties(ignoreUnknown=true)

+public class OneM2MApplication extends Resource {

+

+	private String apn;

+	private String iconUrl;

+	private String presentationUrl;

+	

+	@JsonProperty("m2m:cnt")

+	private List<Container> containers;

+	

+	public OneM2MApplication() {

+	}

+	

+	

+	public String getIconUrl() {

+		return iconUrl;

+	}

+

+	public void setIconUrl(String iconUrl) {

+		this.iconUrl = iconUrl;

+	}

+

+	public String getPresentationUrl() {

+		return presentationUrl;

+	}

+

+	public void setPresentationUrl(String presentationUrl) {

+		this.presentationUrl = presentationUrl;

+	}

+

+	public String getApn() {

+		return apn;

+	}

+

+	public void setApn(String apn) {

+		this.apn = apn;

+	}

+

+	public List<Container> getContainers() {

+		return containers;

+	}

+

+	public void setContainers(List<Container> containers) {

+		this.containers = containers;

+	}

+

+}

diff --git a/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/cse/models/Resource.java b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/cse/models/Resource.java
new file mode 100644
index 0000000..94550b8
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/cse/models/Resource.java
@@ -0,0 +1,39 @@
+/*******************************************************************************
+ * Copyright (c) 2013, 2017 Orange.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    BAREAU Cyrille <cyrille.bareau@orange.com>, 
+ *    BONNARDEL Gregory <gbonnardel.ext@orange.com>, 
+ *    BOLLE Sebastien <sebastien.bolle@orange.com>.
+ *******************************************************************************/
+package org.eclipse.om2m.android.dashboard.cse.models;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+
+@JsonIgnoreProperties(ignoreUnknown=true)
+public class Resource {
+
+	protected String rn;
+	protected String ri;
+
+	public String getRi() {
+		return ri;
+	}
+
+	public void setRi(String ri) {
+		this.ri = ri;
+	}
+
+	public String getRn() {
+		return rn;
+	}
+
+	public void setRn(String rn) {
+		this.rn = rn;
+	}
+
+}
diff --git a/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/cse/models/Response.java b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/cse/models/Response.java
new file mode 100644
index 0000000..c6be884
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/cse/models/Response.java
@@ -0,0 +1,44 @@
+/*******************************************************************************

+ * Copyright (c) 2013, 2017 Orange.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    BAREAU Cyrille <cyrille.bareau@orange.com>, 

+ *    BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+ *    BOLLE Sebastien <sebastien.bolle@orange.com>.

+ *******************************************************************************/

+package org.eclipse.om2m.android.dashboard.cse.models;

+

+import java.util.HashMap;

+import java.util.Map;

+

+import com.fasterxml.jackson.annotation.JsonAnyGetter;

+import com.fasterxml.jackson.annotation.JsonAnySetter;

+

+public class Response {

+	

+//	private SDTDevice sdtDevice;

+	private Map<String, Object> any = new HashMap<String, Object>();

+	

+//	public SDTDevice getSdtDevice() {

+//		return sdtDevice;

+//	}

+//

+//	public void setSdtDevice(SDTDevice sdtDevice) {

+//		this.sdtDevice = sdtDevice;

+//	}

+	

+	@JsonAnyGetter

+	public Map<String, Object> getAny() {

+		return any;

+	}

+	

+	@JsonAnySetter

+	public void setAny(String name, Object value) {

+		any.put(name, value);

+	}

+

+}

diff --git a/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/cse/models/SDTDevice.java b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/cse/models/SDTDevice.java
new file mode 100644
index 0000000..8caf701
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/cse/models/SDTDevice.java
@@ -0,0 +1,127 @@
+/*******************************************************************************

+ * Copyright (c) 2013, 2017 Orange.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    BAREAU Cyrille <cyrille.bareau@orange.com>, 

+ *    BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+ *    BOLLE Sebastien <sebastien.bolle@orange.com>.

+ *******************************************************************************/

+package org.eclipse.om2m.android.dashboard.cse.models;

+

+import java.util.HashMap;

+import java.util.Map;

+

+import com.fasterxml.jackson.annotation.JsonAnySetter;

+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

+import com.fasterxml.jackson.annotation.JsonProperty;

+

+@JsonIgnoreProperties(ignoreUnknown=true)

+public class SDTDevice extends FlexContainer {

+	

+	@JsonProperty("pDSNm")

+	private String serialNumber;

+	

+	@JsonProperty("prDNe")

+	private String deviceName;

+	

+	@JsonProperty("pDANe")

+	private String deviceAliasName;

+	

+	@JsonProperty("prDMr")

+	private String manufacturer;

+	

+	@JsonProperty("pDMNe")

+	private Object model;

+	

+	@JsonProperty("prDTe")

+	private String type;

+	

+//	private String description;

+	

+	@JsonProperty("proLn")

+	private String location;

+	

+	@JsonProperty("proPl")

+	private String protocol;

+	

+	private String mapRi;

+	

+	private Map<String, Object> others;

+	

+	private final Map<String, SDTModule> modules;

+	

+	

+	public SDTDevice(final String pRi, final String pCnd) {

+		this();

+		setRi(pRi);

+		setCnd(pCnd);

+	}

+	

+	public SDTDevice() {

+		this.modules = new HashMap<String, SDTModule>();

+		this.others = new HashMap<String, Object>();

+	}

+	

+

+	public String getManufacturer() {

+		return manufacturer;

+	}

+

+	public Object getModel() {

+		return model;

+	}

+

+	public String getType() {

+		return type;

+	}

+

+	public String getLocation() {

+		return location;

+	}

+

+	public String getProtocol() {

+		return protocol;

+	}

+

+	public Map<String, SDTModule> getModules() {

+		return modules;

+	}

+	

+	public void addModule(SDTModule sdtModule) {

+		this.modules.put(sdtModule.getShortname(), sdtModule);

+	}

+

+	public String getSerialNumber() {

+		return serialNumber;

+	}

+

+	public String getDeviceName() {

+		return deviceName;

+	}

+

+	public Map<String, Object> getOthers() {

+		return others;

+	}

+	

+	@JsonAnySetter

+	public void setOther(String name, Object value) {

+		others.put(name, value);

+	}

+

+	public String getDeviceAliasName() {

+		return deviceAliasName;

+	}

+

+	public String getMapRi() {

+		return mapRi;

+	}

+

+	public void setMapRi(String mapRi) {

+		this.mapRi = mapRi;

+	}

+	

+}

diff --git a/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/cse/models/SDTModule.java b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/cse/models/SDTModule.java
new file mode 100644
index 0000000..056dd14
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/cse/models/SDTModule.java
@@ -0,0 +1,51 @@
+/*******************************************************************************

+ * Copyright (c) 2013, 2017 Orange.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    BAREAU Cyrille <cyrille.bareau@orange.com>, 

+ *    BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+ *    BOLLE Sebastien <sebastien.bolle@orange.com>.

+ *******************************************************************************/

+package org.eclipse.om2m.android.dashboard.cse.models;

+

+import java.util.HashMap;

+import java.util.Map;

+

+import com.fasterxml.jackson.annotation.JsonAnySetter;

+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

+

+@JsonIgnoreProperties(ignoreUnknown=true)

+public class SDTModule extends FlexContainer {

+	

+	private String shortname;

+	private final Map<String, Object> datapoints;

+	

+	public SDTModule() {

+		datapoints = new HashMap<String, Object>();

+	}

+	

+	

+	public Map<String, Object> getDatapoints() {

+		return datapoints;

+	}

+	

+	@JsonAnySetter

+	public void setDataPoint(String name, Object value) {

+		DatapointType type = DatapointType.fromShortName(name);

+		if (type != null)

+			datapoints.put(type.getLongName(), value);

+	}

+

+	public String getShortname() {

+		return shortname;

+	}

+

+	public void setShortname(String shortname) {

+		this.shortname = shortname;

+	}

+

+}

diff --git a/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/cse/models/Uril.java b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/cse/models/Uril.java
new file mode 100644
index 0000000..448c3e9
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/cse/models/Uril.java
@@ -0,0 +1,32 @@
+/*******************************************************************************

+ * Copyright (c) 2013, 2017 Orange.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    BAREAU Cyrille <cyrille.bareau@orange.com>, 

+ *    BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+ *    BOLLE Sebastien <sebastien.bolle@orange.com>.

+ *******************************************************************************/

+package org.eclipse.om2m.android.dashboard.cse.models;

+

+import java.util.List;

+

+import com.fasterxml.jackson.annotation.JsonProperty;

+

+public class Uril {

+	

+	@JsonProperty("m2m:uril")

+	private List<String> uril;

+

+	public List<String> getUril() {

+		return uril;

+	}

+

+	public void setUril(List<String> uril) {

+		this.uril = uril;

+	}

+

+}

diff --git a/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/cse/requests/OneM2MGetApplicationRequest.java b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/cse/requests/OneM2MGetApplicationRequest.java
new file mode 100644
index 0000000..6bb45f7
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/cse/requests/OneM2MGetApplicationRequest.java
@@ -0,0 +1,35 @@
+/*******************************************************************************

+ * Copyright (c) 2013, 2017 Orange.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    BAREAU Cyrille <cyrille.bareau@orange.com>, 

+ *    BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+ *    BOLLE Sebastien <sebastien.bolle@orange.com>.

+ *******************************************************************************/

+package org.eclipse.om2m.android.dashboard.cse.requests;

+

+import org.eclipse.om2m.android.dashboard.cse.OneM2MConnector;

+import org.eclipse.om2m.android.dashboard.cse.OneM2MListener;

+import org.eclipse.om2m.android.dashboard.cse.OneM2MRequest;

+import org.eclipse.om2m.android.dashboard.cse.models.OneM2MApplication;

+

+import android.content.Context;

+

+public class OneM2MGetApplicationRequest extends OneM2MRequest<OneM2MApplication> {

+

+	public OneM2MGetApplicationRequest(Context context, OneM2MListener listener) {

+		super(OneM2MReqType.APPLICATION, context, listener);

+	}

+

+	@Override

+	protected OneM2MApplication getResponse(OneM2MRequestParams param) {

+		OneM2MApplication application = OneM2MConnector.getInstance(context).getApplication(param.getArg1());

+		return application;

+	}

+

+

+}

diff --git a/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/cse/requests/OneM2MGetApplicationsRequest.java b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/cse/requests/OneM2MGetApplicationsRequest.java
new file mode 100644
index 0000000..3164893
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/cse/requests/OneM2MGetApplicationsRequest.java
@@ -0,0 +1,36 @@
+/*******************************************************************************

+ * Copyright (c) 2013, 2017 Orange.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    BAREAU Cyrille <cyrille.bareau@orange.com>, 

+ *    BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+ *    BOLLE Sebastien <sebastien.bolle@orange.com>.

+ *******************************************************************************/

+package org.eclipse.om2m.android.dashboard.cse.requests;

+

+import java.util.List;

+

+import org.eclipse.om2m.android.dashboard.cse.OneM2MConnector;

+import org.eclipse.om2m.android.dashboard.cse.OneM2MListener;

+import org.eclipse.om2m.android.dashboard.cse.OneM2MRequest;

+import org.eclipse.om2m.android.dashboard.cse.models.OneM2MApplication;

+

+import android.content.Context;

+

+public class OneM2MGetApplicationsRequest extends OneM2MRequest<List<OneM2MApplication>> {

+

+	public OneM2MGetApplicationsRequest(Context context, OneM2MListener listener) {

+		super(OneM2MReqType.APPLICATIONS, context, listener);

+	}

+

+	@Override

+	protected List<OneM2MApplication> getResponse(OneM2MRequestParams param) {

+		return OneM2MConnector.getInstance(context).getApplications();

+	}

+

+

+}

diff --git a/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/cse/requests/OneM2MGetDeviceRequest.java b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/cse/requests/OneM2MGetDeviceRequest.java
new file mode 100644
index 0000000..c13134f
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/cse/requests/OneM2MGetDeviceRequest.java
@@ -0,0 +1,34 @@
+/*******************************************************************************

+ * Copyright (c) 2013, 2017 Orange.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    BAREAU Cyrille <cyrille.bareau@orange.com>, 

+ *    BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+ *    BOLLE Sebastien <sebastien.bolle@orange.com>.

+ *******************************************************************************/

+package org.eclipse.om2m.android.dashboard.cse.requests;

+

+

+import org.eclipse.om2m.android.dashboard.cse.OneM2MConnector;

+import org.eclipse.om2m.android.dashboard.cse.OneM2MListener;

+import org.eclipse.om2m.android.dashboard.cse.OneM2MRequest;

+import org.eclipse.om2m.android.dashboard.cse.models.SDTDevice;

+

+import android.content.Context;

+

+public class OneM2MGetDeviceRequest extends OneM2MRequest<SDTDevice> {

+

+	public OneM2MGetDeviceRequest(Context context, OneM2MListener listener) {

+		super(OneM2MReqType.DEVICE, context, listener);

+	}

+

+	@Override

+	protected SDTDevice getResponse(OneM2MRequestParams param) {

+		return OneM2MConnector.getInstance(context).getDevice(param.getArg1());

+	}

+

+}

diff --git a/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/cse/requests/OneM2MGetDevicesRequest.java b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/cse/requests/OneM2MGetDevicesRequest.java
new file mode 100644
index 0000000..292a104
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/cse/requests/OneM2MGetDevicesRequest.java
@@ -0,0 +1,35 @@
+/*******************************************************************************

+ * Copyright (c) 2013, 2017 Orange.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    BAREAU Cyrille <cyrille.bareau@orange.com>, 

+ *    BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+ *    BOLLE Sebastien <sebastien.bolle@orange.com>.

+ *******************************************************************************/

+package org.eclipse.om2m.android.dashboard.cse.requests;

+

+import java.util.List;

+

+import org.eclipse.om2m.android.dashboard.cse.OneM2MConnector;

+import org.eclipse.om2m.android.dashboard.cse.OneM2MListener;

+import org.eclipse.om2m.android.dashboard.cse.OneM2MRequest;

+import org.eclipse.om2m.android.dashboard.cse.models.SDTDevice;

+

+import android.content.Context;

+

+public class OneM2MGetDevicesRequest extends OneM2MRequest<List<SDTDevice>> {

+

+	public OneM2MGetDevicesRequest(Context context, OneM2MListener listener) {

+		super(OneM2MReqType.DEVICES, context, listener);

+	}

+

+	@Override

+	protected List<SDTDevice> getResponse(OneM2MRequestParams param) {

+		return OneM2MConnector.getInstance(context).getDevices();

+	}

+

+}

diff --git a/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/cse/requests/OneM2MGetIncseStatusRequest.java b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/cse/requests/OneM2MGetIncseStatusRequest.java
new file mode 100644
index 0000000..0ea0e2f
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/cse/requests/OneM2MGetIncseStatusRequest.java
@@ -0,0 +1,32 @@
+/*******************************************************************************

+ * Copyright (c) 2013, 2017 Orange.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    BAREAU Cyrille <cyrille.bareau@orange.com>, 

+ *    BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+ *    BOLLE Sebastien <sebastien.bolle@orange.com>.

+ *******************************************************************************/

+package org.eclipse.om2m.android.dashboard.cse.requests;

+

+import org.eclipse.om2m.android.dashboard.cse.OneM2MConnector;

+import org.eclipse.om2m.android.dashboard.cse.OneM2MListener;

+import org.eclipse.om2m.android.dashboard.cse.OneM2MRequest;

+

+import android.content.Context;

+

+public class OneM2MGetIncseStatusRequest extends OneM2MRequest<Boolean> {

+

+	public OneM2MGetIncseStatusRequest(Context context, OneM2MListener listener) {

+		super(OneM2MReqType.INCSE_STATUS, context, listener);

+	}

+

+	@Override

+	protected Boolean getResponse(OneM2MRequestParams param) {

+		return OneM2MConnector.getInstance(context).isConnectedWithInCse();

+	}

+

+}

diff --git a/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/cse/requests/OneM2MRequestParams.java b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/cse/requests/OneM2MRequestParams.java
new file mode 100644
index 0000000..f450370
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/cse/requests/OneM2MRequestParams.java
@@ -0,0 +1,42 @@
+/*******************************************************************************

+ * Copyright (c) 2013, 2017 Orange.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    BAREAU Cyrille <cyrille.bareau@orange.com>, 

+ *    BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+ *    BOLLE Sebastien <sebastien.bolle@orange.com>.

+ *******************************************************************************/

+package org.eclipse.om2m.android.dashboard.cse.requests;

+

+public class OneM2MRequestParams {

+	

+	private String arg1;

+	private String arg2;

+	

+	public OneM2MRequestParams(final String arg1) {

+		this.arg1 = arg1;

+	}

+	

+	public OneM2MRequestParams(final String arg1, final String arg2) {

+		this.arg1 = arg1;

+		this.arg2 = arg2;

+	}

+

+	public String getArg1() {

+		return arg1;

+	}

+

+	public String getArg2() {

+		return arg2;

+	}

+	

+	@Override

+	public String toString() {

+		return arg1 + ":" + arg2;

+	}

+

+}

diff --git a/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/devices/DeviceDetailsActivity.java b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/devices/DeviceDetailsActivity.java
new file mode 100644
index 0000000..d4e13d0
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/devices/DeviceDetailsActivity.java
@@ -0,0 +1,280 @@
+/*******************************************************************************

+ * Copyright (c) 2013, 2017 Orange.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    BAREAU Cyrille <cyrille.bareau@orange.com>, 

+ *    BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+ *    BOLLE Sebastien <sebastien.bolle@orange.com>.

+ *******************************************************************************/

+package org.eclipse.om2m.android.dashboard.devices;

+

+import java.util.Locale;

+import java.util.Map;

+

+import org.eclipse.om2m.android.dashboard.CustomSecondaryActivity;

+import org.eclipse.om2m.android.dashboard.cse.OneM2MListener;

+import org.eclipse.om2m.android.dashboard.cse.OneM2MRequester;

+import org.eclipse.om2m.android.dashboard.cse.OneM2MRequest.OneM2MReqType;

+import org.eclipse.om2m.android.dashboard.cse.models.SDTDevice;

+import org.eclipse.om2m.android.dashboard.cse.models.SDTModule;

+import org.eclipse.om2m.android.dashboard.cse.requests.OneM2MRequestParams;

+import org.eclipse.om2m.android.dashboard.tools.SettingsManager;

+import org.eclipse.om2m.android.dashboard.utils.OTBUtils;

+

+import org.eclipse.om2m.android.dashboard.R;

+

+import android.content.DialogInterface;

+import android.content.res.Configuration;

+import android.content.res.Resources;

+import android.os.Bundle;

+import android.view.MenuItem;

+import android.view.View;

+import android.view.View.OnClickListener;

+import android.widget.LinearLayout;

+import android.widget.LinearLayout.LayoutParams;

+import android.widget.TextView;

+import android.widget.Toast;

+

+public class DeviceDetailsActivity extends CustomSecondaryActivity 

+	implements OnClickListener, DialogInterface.OnClickListener, OneM2MListener {

+

+	private TextView tvDeviceDetailsTitle;

+	private TextView tvDeviceDetailsModel;

+	private TextView tvDeviceDetailsProtocol;

+	private TextView tvDeviceDetailsCnd;

+	private TextView tvDeviceDetailsManufacturer;

+	private TextView tvDeviceDetailsLocation;

+	private TextView tvDeviceDetailsSerialNumber;

+	private TextView tvDeviceDetailsDeviceName;

+

+	private LinearLayout llDevDetailsModules;

+	private LinearLayout llDeviceDetailsModel;

+	private LinearLayout llDeviceDetailsLocation;

+	

+	private SDTDevice device;

+	private String deviceRi;

+		

+//	private String newLocation;

+

+	// =====================================================================================

+	// Lifecycle

+	// =====================================================================================

+

+	@Override

+	protected void onCreate(Bundle savedInstanceState) {

+		super.onCreate(savedInstanceState);

+

+		Bundle extras = getIntent().getExtras();

+		if (extras != null) {

+			deviceRi = extras.getString("deviceRi");			

+		}		

+	}

+

+	//        ||

+	//        ||

+	//        ||

+	//        \/

+

+	@Override

+	protected void onStart() {

+		super.onStart();

+	}

+

+	//        ||

+	//        ||

+	//        ||

+	//        \/

+

+	@Override

+	protected void onResume() {

+		super.onResume();	

+

+		String language = SettingsManager.getInstance(this).getLanguage();

+		Resources res = getApplication().getResources();

+		Configuration config = res.getConfiguration();

+		config.locale = new Locale(language);

+		res.updateConfiguration(config, null);

+

+		setContentView(R.layout.device_details_activity);

+

+		tvDeviceDetailsSerialNumber = (TextView) findViewById(R.id.tv_device_details_serialNumber);

+		tvDeviceDetailsDeviceName = (TextView) findViewById(R.id.tv_device_details_deviceName);

+		tvDeviceDetailsTitle = (TextView)findViewById(R.id.tv_device_details_title);

+		tvDeviceDetailsModel = (TextView)findViewById(R.id.tv_device_details_model);

+		tvDeviceDetailsProtocol = (TextView)findViewById(R.id.tv_device_details_protocol);

+		tvDeviceDetailsManufacturer = (TextView)findViewById(R.id.tv_device_details_manufacturer);

+		tvDeviceDetailsCnd = (TextView) findViewById(R.id.tv_device_details_cnd);

+		tvDeviceDetailsLocation = (TextView)findViewById(R.id.tv_device_details_location);

+		llDevDetailsModules = (LinearLayout) findViewById(R.id.ll_device_details_modules);

+		llDeviceDetailsModel = (LinearLayout) findViewById(R.id.ll_device_details_model);

+		llDeviceDetailsLocation = (LinearLayout) findViewById(R.id.ll_device_details_location);

+

+

+		// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+

+		if (deviceRi != null) {

+			OneM2MRequester.getInstance().sendRequest(OneM2MReqType.DEVICE, 

+					new OneM2MRequestParams(deviceRi), 

+					getApplicationContext(), this);

+			// Retrieve the current rights

+		}

+	}

+

+	//        ||

+	//        ||

+	//        ||

+	//        \/

+

+	@Override

+	protected void onPause() {

+		super.onPause();

+	}

+

+	//        ||

+	//        ||

+	//        ||

+	//        \/

+

+	@Override

+	protected void onStop() {

+		super.onStop();

+	}

+

+	//        ||

+	//        ||

+	//        ||

+	//        \/

+

+	@Override

+	protected void onDestroy() {

+		super.onDestroy();

+	}

+

+

+	// =====================================================================================

+

+	@Override

+	public boolean onOptionsItemSelected(MenuItem item) {

+		super.onOptionsItemSelected(item);

+		switch(item.getItemId()) {

+		case R.id.menu_help:

+			if (SettingsManager.getInstance(this).isWizardDeviceDetailsActivated()) {

+				SettingsManager.getInstance(this).setWizardDeviceDetails(false);

+			} else {

+				SettingsManager.getInstance(this).setWizardDeviceDetails(true);

+			}

+			break;

+		}

+		return true;

+	}

+

+

+	

+	// =====================================================================================

+	// User actions

+	// =====================================================================================

+

+	@Override

+	public void onClick(View v) {

+//		Button btnClicked = (Button)v;

+//		if (btnClicked == btnLocation) {

+//			if (etDeviceDetailsLocation.isActivated()) {

+//				newLocation = etDeviceDetailsLocation.getText().toString();

+//			} else {

+//				etDeviceDetailsLocation.setActivated(true);

+//				etDeviceDetailsLocation.setVisibility(View.VISIBLE);

+//				etDeviceDetailsLocation.setText(device.getLocation());

+//				btnLocation.setText(getResources().getString(R.string.dialog_btn_ok));

+//			}

+//		}

+	}

+

+	@Override

+	public void onClick(DialogInterface dialog, int which) {

+//		if (which == DialogInterface.BUTTON_POSITIVE) {						

+//			// send update

+//			for (String appId : appIdsToSet) {

+//				OTBHabRequestParam_PostPermissionsUpdate params = new OTBHabRequestParam_PostPermissionsUpdate(appId);

+//				params.setDeviceIdsToSet(Collections.singletonList(this.deviceId));

+//			}

+//			

+//			for (String appId : appIdsToRemove) {

+//				OTBHabRequestParam_PostPermissionsUpdate params = new OTBHabRequestParam_PostPermissionsUpdate(appId);

+//				params.setDeviceIdsToRemove(Collections.singletonList(this.deviceId));

+//			}

+//		}	

+	}

+

+	// =====================================================================================

+	// CSE listener

+	// =====================================================================================

+

+	@Override

+	public void onOneM2MResponse(OneM2MReqType requestType, Object response) {

+		if (requestType == OneM2MReqType.DEVICE) {

+			device = (SDTDevice)response;

+			tvDeviceDetailsTitle.setText(device.getDeviceAliasName());

+			String m = null;

+			Object model = device.getModel();

+			if (model != null) {

+				if (model instanceof Map<?,?>) {

+					if (! ((Map<?,?>)model).isEmpty()) {

+						m = model.toString();

+					}

+				} else {

+					m = model.toString();

+				}

+			}

+			if (OTBUtils.isEmpty(m))

+				((LinearLayout)llDeviceDetailsModel.getParent()).removeView(llDeviceDetailsModel);

+			else

+				tvDeviceDetailsModel.setText(m);

+			

+			tvDeviceDetailsProtocol.setText(device.getProtocol());

+			tvDeviceDetailsCnd.setText(device.getCnd());

+			tvDeviceDetailsManufacturer.setText(device.getManufacturer());

+			tvDeviceDetailsSerialNumber.setText(device.getSerialNumber());

+			tvDeviceDetailsDeviceName.setText(OTBUtils.isEmpty(device.getDeviceName()) 

+					? device.getRn() : device.getDeviceName());

+

+			String location = device.getLocation();

+			if (OTBUtils.isEmpty(location))

+				((LinearLayout)llDeviceDetailsLocation.getParent()).removeView(llDeviceDetailsLocation);

+			else

+				tvDeviceDetailsLocation.setText(location);

+

+			for (SDTModule module : device.getModules().values()) {

+				LinearLayout ll = new LinearLayout(this);

+				ll.setOrientation(LinearLayout.HORIZONTAL);

+				LinearLayout.LayoutParams linearParams = new LinearLayout.LayoutParams(

+				        LayoutParams.WRAP_CONTENT,

+				        LayoutParams.WRAP_CONTENT);

+				    ll.setLayoutParams(linearParams);

+				

+				TextView moduleTv = new TextView(this);

+				String dps = null;

+				for (Map.Entry<String, Object> entry : module.getDatapoints().entrySet()) {

+					if (dps == null) dps = " (";

+					else dps += ", ";

+					dps += entry.getKey() + "=" + entry.getValue();

+				}

+				dps += ")";

+				moduleTv.setText(module.getCnd() + dps);	

+				moduleTv.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,

+						LayoutParams.WRAP_CONTENT));

+				ll.addView(moduleTv);

+				llDevDetailsModules.addView(ll);

+			}

+		}

+	}

+

+	@Override

+	public void onOneM2MError(OneM2MReqType requestType, String msg) {

+		Toast.makeText(this, "getDevice " + msg, Toast.LENGTH_LONG).show();

+	}

+

+}

diff --git a/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/devices/DeviceSimpleView.java b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/devices/DeviceSimpleView.java
new file mode 100644
index 0000000..e0ef17c
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/devices/DeviceSimpleView.java
@@ -0,0 +1,111 @@
+/*******************************************************************************

+ * Copyright (c) 2013, 2017 Orange.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    BAREAU Cyrille <cyrille.bareau@orange.com>, 

+ *    BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+ *    BOLLE Sebastien <sebastien.bolle@orange.com>.

+ *******************************************************************************/

+package org.eclipse.om2m.android.dashboard.devices;

+

+import org.eclipse.om2m.android.dashboard.cse.models.SDTDevice;

+

+import org.eclipse.om2m.android.dashboard.R;

+

+import android.app.AlertDialog;

+import android.content.Context;

+import android.content.DialogInterface;

+import android.content.Intent;

+import android.graphics.Typeface;

+import android.util.AttributeSet;

+import android.view.LayoutInflater;

+import android.view.View;

+import android.view.View.OnClickListener;

+import android.widget.LinearLayout;

+import android.widget.TextView;

+import android.widget.Toast;

+

+public class DeviceSimpleView extends LinearLayout implements OnClickListener {

+

+	private TextView tvDeviceName;

+	private TextView tvDeviceDescription;

+	private LinearLayout llDetails;

+	private SDTDevice device;

+	private Context context;

+

+	public DeviceSimpleView(Context context, AttributeSet attrs) {

+		super(context, attrs);

+

+		this.context = context;

+

+		LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

+		inflater.inflate(R.layout.device_simple_view, this, true);

+

+		tvDeviceName = (TextView)findViewById(R.id.tv_device_simple_name);

+		tvDeviceDescription = (TextView)findViewById(R.id.tv_device_simple_decription);

+		llDetails = (LinearLayout)findViewById(R.id.ll_device_simple);

+

+		llDetails.setOnClickListener(this);

+	}

+

+	public SDTDevice getDevice() {

+		return this.device;

+	}

+	

+	public void setDevice(SDTDevice device) {

+		this.device = device;

+		if (device != null) {

+			if (tvDeviceName != null) {

+//				String name = device.getFriendlyName();

+//				String model = device.getSubModel();

+//				if (! model.isEmpty())

+//					name += " (" + model + ")";

+				tvDeviceName.setText(device.getDeviceName());

+				tvDeviceName.setTypeface(null, Typeface.BOLD);

+			}

+			if (tvDeviceDescription != null) {

+				tvDeviceDescription.setText(device.getDeviceAliasName());

+				tvDeviceDescription.setTypeface(null, Typeface.NORMAL);

+			}

+		}

+	}

+

+	// =====================================================================================

+	// User actions

+	// =====================================================================================

+

+	@Override

+	public void onClick(View v) {

+		if (v instanceof LinearLayout) {

+			LinearLayout layoutClicked = (LinearLayout)v;

+			if (layoutClicked == llDetails) {

+				if (device != null) {

+					Intent detailsActivity = new Intent(this.context, DeviceDetailsActivity.class);	

+					detailsActivity.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // because we are not in activity context

+					detailsActivity.putExtra("deviceRi", this.device.getRi());

+					this.context.startActivity(detailsActivity);

+				} else {

+					AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(DeviceSimpleView.this.getContext());

+					dialogBuilder.setTitle(R.string.device_details_no_access_rights_title);

+					dialogBuilder.setMessage(getResources().getString(R.string.device_details_no_access_rights));

+					dialogBuilder.setPositiveButton(R.string.dialog_btn_ok, 

+						new DialogInterface.OnClickListener() {

+							@Override

+							public void onClick(DialogInterface arg0, int arg1) {

+							}

+						});

+					try {

+						dialogBuilder.create().show();

+					} catch (Exception e) {

+						Toast.makeText(context, getResources().getString(R.string.device_details_no_access_rights), Toast.LENGTH_LONG).show();

+					}

+				}

+			}

+		}

+	}

+	

+}

diff --git a/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/devices/DeviceTypeContainerView.java b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/devices/DeviceTypeContainerView.java
new file mode 100644
index 0000000..0a04975
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/devices/DeviceTypeContainerView.java
@@ -0,0 +1,165 @@
+/*******************************************************************************

+ * Copyright (c) 2013, 2017 Orange.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    BAREAU Cyrille <cyrille.bareau@orange.com>, 

+ *    BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+ *    BOLLE Sebastien <sebastien.bolle@orange.com>.

+ *******************************************************************************/

+package org.eclipse.om2m.android.dashboard.devices;

+

+import java.util.ArrayList;

+import java.util.List;

+import java.util.SortedSet;

+

+import org.eclipse.om2m.android.dashboard.cse.models.SDTDevice;

+import org.eclipse.om2m.android.dashboard.tools.OneM2MDeviceType;

+import org.eclipse.om2m.android.dashboard.tools.Sorter;

+

+import org.eclipse.om2m.android.dashboard.R;

+

+import android.content.Context;

+import android.util.AttributeSet;

+import android.view.LayoutInflater;

+import android.view.View;

+import android.view.View.OnClickListener;

+import android.widget.ImageView;

+import android.widget.LinearLayout;

+import android.widget.TextView;

+

+public class DeviceTypeContainerView extends LinearLayout implements OnClickListener {

+

+	private LinearLayout container;

+	private ImageView ivDevCatIcon;

+	private ImageView ivDevCatMoreLess;

+	private TextView tvDevCatCount;

+	private TextView tvDevLocale;

+	private Context context;

+

+	private OneM2MDeviceType type;

+	private List<String> visibleDevIds = new ArrayList<String>();

+

+

+	public DeviceTypeContainerView(Context context, AttributeSet attrs) {

+		super(context, attrs);

+

+		this.context = context;

+

+		visibleDevIds.clear();

+

+		LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

+		inflater.inflate(R.layout.device_type_container_view, this, true);

+

+		container = (LinearLayout)findViewById(R.id.ll_devType_container);

+		ivDevCatIcon = (ImageView)findViewById(R.id.iv_devType_icon);

+		ivDevCatMoreLess = (ImageView)findViewById(R.id.iv_devType_moreLess);

+		tvDevCatCount = (TextView)findViewById(R.id.tv_devType_count);

+		tvDevLocale = (TextView)findViewById(R.id.tv_devType_locale);

+

+		this.setOnClickListener(this);

+	}

+

+	public OneM2MDeviceType getDeviceType() {

+		return type;

+	}

+

+	public String getTypeName() {

+		return (type == null) ? "" : type.getType();

+	}

+

+	public void setDeviceType(OneM2MDeviceType type) {

+		this.type = type;

+		if (ivDevCatIcon != null) {		

+			ivDevCatIcon.setImageDrawable(getResources().getDrawable(type.getIcon()));

+		}

+	}

+

+	public void setDevices(List<SDTDevice> devs) {

+		SortedSet<SDTDevice> devices = Sorter.getSortedDevices(devs);

+		if (tvDevCatCount != null) {		

+			tvDevCatCount.setText("" + devices.size());						

+		}

+		if (tvDevLocale != null) {		

+			tvDevLocale.setText(type.getLocale());

+		}

+		

+		// 1- add/update devices

+		for (SDTDevice device : devices) {

+			if (visibleDevIds.contains(device.getRi())) {

+				// this device already in container => just find his view and refresh it

+				for (int i = 0; i < container.getChildCount(); i++) {

+					DeviceSimpleView devView = (DeviceSimpleView)container.getChildAt(i);

+					if ((devView.getDevice() != null) 

+							&& devView.getDevice().getRi().equals(device.getRi())) {

+						devView.setDevice(device);

+						break;

+					}

+				}

+			}

+			else {

+				DeviceSimpleView devView = new DeviceSimpleView(this.context, null);

+				devView.setDevice(device);

+

+				// add container

+				container.addView(devView);	

+

+				// memorize it

+				visibleDevIds.add(device.getRi());

+			}			

+		}

+

+		// remove old devices

+		List<String> devIdsToRemove = new ArrayList<String>();

+		for (String devId : visibleDevIds) {

+			boolean devFound = false;

+			for (SDTDevice dev : devices) {

+				if (dev.getRi().equals(devId)) {

+					devFound = true;

+					break;

+				}

+			}

+			if (! devFound) {

+				devIdsToRemove.add(devId);

+			}

+		}

+		for (String devId : devIdsToRemove) {

+			DeviceSimpleView devView = null;

+			for (int i = 0; i < container.getChildCount(); i++) {

+				DeviceSimpleView view = (DeviceSimpleView)container.getChildAt(i);

+				if ((view.getDevice() != null)

+						&& view.getDevice().getRi().equals(devId)) {

+					devView = view;

+					break;

+				}

+			}

+			if (devView != null) {

+				container.removeView(devView);

+			}

+			visibleDevIds.remove(devId);

+		}

+	}

+

+	@Override

+	public void onClick(View v) {

+		if (container.getVisibility() == View.VISIBLE) {

+			close();

+		} else {

+			open();

+		}

+	}

+	

+	public void open() {

+		ivDevCatMoreLess.setImageDrawable(getResources().getDrawable(R.drawable.otb_picto_close_blue));

+		container.setVisibility(View.VISIBLE);

+	}

+	

+	public void close() {

+		ivDevCatMoreLess.setImageDrawable(getResources().getDrawable(R.drawable.otb_picto_open_blue));

+		container.setVisibility(View.GONE);

+	}

+	

+}

diff --git a/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/devices/DevicesActivity.java b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/devices/DevicesActivity.java
new file mode 100644
index 0000000..23fe48e
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/devices/DevicesActivity.java
@@ -0,0 +1,257 @@
+/*******************************************************************************

+ * Copyright (c) 2013, 2017 Orange.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    BAREAU Cyrille <cyrille.bareau@orange.com>, 

+ *    BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+ *    BOLLE Sebastien <sebastien.bolle@orange.com>.

+ *******************************************************************************/

+package org.eclipse.om2m.android.dashboard.devices;

+

+import java.util.ArrayList;

+import java.util.List;

+import java.util.Locale;

+import java.util.Map;

+

+import org.eclipse.om2m.android.dashboard.CustomSecondaryActivity;

+import org.eclipse.om2m.android.dashboard.cse.models.SDTDevice;

+import org.eclipse.om2m.android.dashboard.tools.OneM2MDeviceType;

+import org.eclipse.om2m.android.dashboard.tools.SettingsManager;

+import org.eclipse.om2m.android.dashboard.utils.OTBUtils;

+

+import org.eclipse.om2m.android.dashboard.R;

+

+import android.content.res.Configuration;

+import android.content.res.Resources;

+import android.os.Bundle;

+import android.view.MenuItem;

+import android.view.View;

+import android.view.View.OnClickListener;

+import android.widget.LinearLayout;

+

+public class DevicesActivity extends CustomSecondaryActivity 

+	implements OnClickListener {

+

+	// =====================================================================================

+

+	private LinearLayout llDevicesContainer;

+	private List<String> visibleDevCat = new ArrayList<String>();

+

+	private Map<String, List<SDTDevice>> deviceCategories;

+	private List<String> basedrivers; 

+			

+	private String focusedCategory;

+

+	// =====================================================================================

+	// Lifecycle

+	// =====================================================================================

+

+	@Override

+	protected void onCreate(Bundle savedInstanceState) {

+		super.onCreate(savedInstanceState);

+		Bundle extras = getIntent().getExtras();

+		if (extras != null) {

+			focusedCategory = extras.getString("focusedCategory");			

+		}	

+	}

+

+	//        ||

+	//        ||

+	//        ||

+	//        \/

+

+	@Override

+	protected void onStart() {

+		super.onStart();

+	}

+

+	//        ||

+	//        ||

+	//        ||

+	//        \/

+

+	@Override

+	protected void onResume() {

+		super.onResume();

+

+		String language = SettingsManager.getInstance(this).getLanguage();

+		Resources res = getApplication().getResources();

+		Configuration config = res.getConfiguration();

+		config.locale = new Locale(language);

+		res.updateConfiguration(config, null);

+

+		setContentView(R.layout.devices_activity);

+

+		visibleDevCat.clear();

+

+		llDevicesContainer = (LinearLayout)findViewById(R.id.ll_devices_container);

+

+		// init data with last informations

+		refreshCategories();

+	}

+

+	//        ||

+	//        ||

+	//        ||

+	//        \/

+

+	@Override

+	protected void onPause() {

+		super.onPause();

+	}

+

+	//        ||

+	//        ||

+	//        ||

+	//        \/

+

+	@Override

+	protected void onStop() {

+		super.onStop();

+	}

+

+	//        ||

+	//        ||

+	//        ||

+	//        \/

+

+	@Override

+	protected void onDestroy() {

+		super.onDestroy();

+	}

+

+	// =====================================================================================

+

+	private void refreshCategories() {

+		if ((deviceCategories == null) || (basedrivers == null)) {

+			return;

+		}

+		// 1- add/update device categories

+		for (Map.Entry<String, List<SDTDevice>> entry : deviceCategories.entrySet()) {

+			OneM2MDeviceType dt = OneM2MDeviceType.fromValue(entry.getKey());

+			if (! visibleDevCat.contains(dt.getType())) {

+				addDeviceCategoryContainer(dt);

+			} else {

+				// this device category already in container => just find her view and refresh it

+				for (int i = 0; i < llDevicesContainer.getChildCount(); i++) {

+					DeviceTypeContainerView devCatView = 

+							(DeviceTypeContainerView)llDevicesContainer.getChildAt(i);

+					if (devCatView.getDeviceType() == dt) {

+

+						// device for this type

+						List<SDTDevice>  devicesForType = entry.getValue();

+						devCatView.setDevices(devicesForType);

+						break;

+					}

+				}

+			}

+		}

+		// add categories from basedrivers

+		// this will only add cat for basedrivers with no device currently detected

+		// otherwise the cat should have already been created by previous bloc

+		for (String basedriverType : basedrivers) {

+			OneM2MDeviceType dt = OneM2MDeviceType.fromValue(basedriverType);

+			if ((dt != null) && ! visibleDevCat.contains(dt.getType())) {

+				addDeviceCategoryContainer(dt);	

+			}					

+		}	

+		// remove old device categories

+		List<String> devCatToRemove = new ArrayList<String>();

+		for (String catName : visibleDevCat) {

+			boolean catFound = false;

+			for (String key : deviceCategories.keySet()) {

+				if (catName.equals(key)) {

+					catFound = true;

+					break;

+				}

+			}

+			if (! catFound) {

+				for (String key : basedrivers) {

+					if (catName.equals(key)) {

+						catFound = true;

+						break;

+					}

+				}

+			}

+			if (! catFound) {

+				devCatToRemove.add(catName);

+			}								

+		}

+		for (String devCat : devCatToRemove) {

+			DeviceTypeContainerView devCatView = null;

+			for (int i = 0; i < llDevicesContainer.getChildCount(); i++) {

+				DeviceTypeContainerView view = 

+						(DeviceTypeContainerView)llDevicesContainer.getChildAt(i);

+				if (view.getTypeName().equals(devCat)) {

+					devCatView = view;

+					break;

+				}

+			}

+			if (devCatView != null) {

+				llDevicesContainer.removeView(devCatView);

+			}

+			visibleDevCat.remove(devCat);

+		}

+	}

+

+	private void addDeviceCategoryContainer(OneM2MDeviceType type) {

+		DeviceTypeContainerView typeContainerView = 

+				new DeviceTypeContainerView(getApplicationContext(), null);

+		typeContainerView.setDeviceType(type);

+		String catName = type.getType();

+		if (OTBUtils.equals(focusedCategory, catName)) {

+			typeContainerView.open();

+		} else {

+			typeContainerView.close();

+		}

+

+		List<SDTDevice>  devicesForType = null;

+		// devices for this type

+		for (Map.Entry<String, List<SDTDevice>> entry : deviceCategories.entrySet()) {

+			if (OneM2MDeviceType.fromValue(entry.getKey()) == type) {

+				devicesForType = entry.getValue();

+				break;

+			}

+		}				

+		if (devicesForType == null) {

+			devicesForType= new ArrayList<SDTDevice>();

+		}																	

+		typeContainerView.setDevices(devicesForType);

+		

+		// add container

+		llDevicesContainer.addView(typeContainerView);	

+

+		// memorize it

+		visibleDevCat.add(catName);

+	}

+

+	// =====================================================================================

+	// User actions

+	// =====================================================================================

+

+	@Override

+	public boolean onOptionsItemSelected(MenuItem item) {

+		super.onOptionsItemSelected(item);

+		switch(item.getItemId()) {

+		case R.id.menu_help:

+			if (SettingsManager.getInstance(this).isWizardDeviceSimpleActivated()) {

+				SettingsManager.getInstance(this).setWizardDeviceSimple(false);

+			} else {

+				SettingsManager.getInstance(this).setWizardDeviceSimple(true);

+			}

+			break;

+		}

+		return true;

+	}

+

+	@Override

+	public void onClick(View v) {

+//		if (v == btnAdd) {

+//		}

+	}	

+	

+}

diff --git a/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/main/MainAppEntryView.java b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/main/MainAppEntryView.java
new file mode 100644
index 0000000..2121201
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/main/MainAppEntryView.java
@@ -0,0 +1,148 @@
+/*******************************************************************************

+ * Copyright (c) 2013, 2017 Orange.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    BAREAU Cyrille <cyrille.bareau@orange.com>, 

+ *    BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+ *    BOLLE Sebastien <sebastien.bolle@orange.com>.

+ *******************************************************************************/

+package org.eclipse.om2m.android.dashboard.main;

+

+import java.io.InputStream;

+

+import org.eclipse.om2m.android.dashboard.applications.ApplicationConfigActivity;

+import org.eclipse.om2m.android.dashboard.cse.models.OneM2MApplication;

+

+import org.eclipse.om2m.android.dashboard.R;

+

+import android.content.Context;

+import android.content.Intent;

+import android.graphics.Bitmap;

+import android.graphics.BitmapFactory;

+import android.os.AsyncTask;

+import android.util.AttributeSet;

+import android.util.Log;

+import android.view.LayoutInflater;

+import android.view.View;

+import android.widget.ImageView;

+import android.widget.LinearLayout;

+import android.widget.RelativeLayout;

+import android.widget.TextView;

+

+public class MainAppEntryView extends LinearLayout {

+

+	private TextView tvAppName;

+	private ImageView ivAppIcon;

+	private RelativeLayout rlUnactivable;

+

+	private boolean canOpenDetails = true;

+

+	public OneM2MApplication app;

+

+	private static Context context;

+

+	public MainAppEntryView(Context context, AttributeSet attrs) {

+		super(context, attrs);

+

+		MainAppEntryView.context = context;

+

+		LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

+		inflater.inflate(R.layout.main_app_entry_view, this, true);

+

+		rlUnactivable = (RelativeLayout) findViewById(R.id.rl_main_app_entry_stopped);

+		tvAppName = (TextView) findViewById(R.id.tv_main_app_entry_name);

+		ivAppIcon = (ImageView) findViewById(R.id.iv_main_app_entry_icon);

+	}

+

+	public OneM2MApplication getApplication() {

+		return app;

+	}

+

+	public void setData(final OneM2MApplication app, boolean canOpenDetails) {

+		this.canOpenDetails = canOpenDetails;

+		setData(app);

+	}

+

+	public void setData(final OneM2MApplication app) {

+		this.app = app;

+

+		if (tvAppName != null) {

+			tvAppName.setText(this.app.getApn());

+		}

+		if (ivAppIcon != null) {

+			// ivAppIcon.setImageDrawable(OTBIconManager.getInstance().getIconForApp(app.getRi(),

+			// getResources()));

+			new DownloadImageTask(ivAppIcon).execute(app.getIconUrl());

+		}

+

+		this.setClickable(true);

+

+		if (canOpenDetails /* && app.isAccessible() */) {

+			this.setOnLongClickListener(new OnLongClickListener() {

+				@Override

+				public boolean onLongClick(View arg0) {

+					// Intent detailsActivity = new Intent(OTBMainAppEntryView.context,

+					// OTBApplicationDetailsActivity.class);

+					// detailsActivity.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

+					// detailsActivity.putExtra("applicationId", app.getId());

+					// OTBMainAppEntryView.context.startActivity(detailsActivity);

+					return true;

+				}

+			});

+//			if (OTBConstants.ACTIVE.equals("Active"/* app.getStatus() */)) {

+				this.setOnClickListener(new OnClickListener() {

+					@Override

+					public void onClick(View arg0) {

+						Intent configActivity = new Intent(MainAppEntryView.context,

+								ApplicationConfigActivity.class);

+						configActivity.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

+						configActivity.putExtra("applicationId", app.getRi());

+						MainAppEntryView.context.startActivity(configActivity);

+					}

+				});

+//			}

+		}

+

+		rlUnactivable.setVisibility(View.INVISIBLE);

+	}

+

+	private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {

+		ImageView bmImage;

+

+		public DownloadImageTask(ImageView bmImage) {

+			this.bmImage = bmImage;

+		}

+

+		protected Bitmap doInBackground(String... urls) {

+			Bitmap mIcon11 = null;

+			String urldisplay = urls[0];

+			if (urldisplay != null) {

+				try {

+					InputStream in = new java.net.URL(urldisplay).openStream();

+					mIcon11 = BitmapFactory.decodeStream(in);

+				} catch (Exception e) {

+					Log.e("Error", e.getMessage());

+					e.printStackTrace();

+				}

+			}

+			

+			return mIcon11;

+		}

+

+		protected void onPostExecute(Bitmap result) {

+			if (result != null) {

+				bmImage.setImageBitmap(result);	

+			} else {

+				bmImage.setImageDrawable(getResources().getDrawable(R.drawable.otb_appicon_default));

+			}

+			

+			

+			

+		}

+	}

+

+}

diff --git a/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/main/MainDevView.java b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/main/MainDevView.java
new file mode 100644
index 0000000..cfc3352
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/main/MainDevView.java
@@ -0,0 +1,102 @@
+/*******************************************************************************

+ * Copyright (c) 2013, 2017 Orange.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    BAREAU Cyrille <cyrille.bareau@orange.com>, 

+ *    BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+ *    BOLLE Sebastien <sebastien.bolle@orange.com>.

+ *******************************************************************************/

+package org.eclipse.om2m.android.dashboard.main;

+

+import org.eclipse.om2m.android.dashboard.cse.models.SDTDevice;

+import org.eclipse.om2m.android.dashboard.devices.DeviceDetailsActivity;

+import org.eclipse.om2m.android.dashboard.tools.OneM2MDeviceType;

+import org.eclipse.om2m.android.dashboard.tools.SettingsManager;

+

+import org.eclipse.om2m.android.dashboard.R;

+

+import android.content.Context;

+import android.content.Intent;

+import android.util.AttributeSet;

+import android.view.Gravity;

+import android.view.LayoutInflater;

+import android.view.View;

+import android.widget.ImageView;

+import android.widget.LinearLayout;

+import android.widget.TextView;

+

+public class MainDevView extends LinearLayout {

+

+	private TextView tvName;

+	private ImageView ivIcon;

+	private OneM2MDeviceType type;

+	private SDTDevice sdtDevice;

+	

+	private static Context context;

+	

+	public MainDevView(Context context, AttributeSet attrs) {

+		super(context, attrs);

+

+		MainDevView.context = context;

+		LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

+		inflater.inflate(R.layout.main_dev_view, this, true);

+		

+		ivIcon = (ImageView)findViewById(R.id.iv_main_dev_category_icon);

+		tvName = (TextView)findViewById(R.id.tv_devType_name);

+		tvName.setLines(2);

+		tvName.setWidth(250);

+		tvName.setGravity(Gravity.CENTER_HORIZONTAL);

+	}

+

+	public void setData(final SDTDevice sdtDevice) {

+		this.sdtDevice = sdtDevice;

+		String cnd = sdtDevice.getCnd();

+		String text = null;

+		if (SettingsManager.DEVICE_NAME_WITH_ALIAS.equals(SettingsManager.getInstance(context).getDeviceName())) {

+			text = sdtDevice.getDeviceAliasName();

+		} else {

+			text = sdtDevice.getDeviceName();

+		}

+		

+		sdtDevice.getDeviceAliasName();

+		if (text == null) {

+			text = sdtDevice.getDeviceName();

+		}

+		if (text == null)

+			text = sdtDevice.getRn();

+		if (text == null) {

+			// compute text from container def

+			text = cnd.substring(cnd.lastIndexOf(".") + 7)

+					+ " " + sdtDevice.getSerialNumber();

+		}

+		if (text.indexOf(cnd) >= 0) {

+			text.replaceAll(cnd, cnd.substring(cnd.lastIndexOf(".") + 7));

+		}

+		tvName.setText(text);

+		

+		type = OneM2MDeviceType.fromValue(cnd);

+		if (ivIcon != null) {

+			ivIcon.setImageDrawable(getResources().getDrawable(type.getIcon()));

+		}

+		

+		this.setOnClickListener(new OnClickListener() {

+			@Override

+			public void onClick(View arg0) {

+				Intent detailsActivity = new Intent(MainDevView.context, 

+						DeviceDetailsActivity.class);	

+				detailsActivity.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // because we are not in activity context

+				detailsActivity.putExtra("deviceRi", sdtDevice.getRi());

+				MainDevView.context.startActivity(detailsActivity);

+			}

+		});

+	}

+	

+	public SDTDevice getSDTDevice() {

+		return sdtDevice;

+	}

+

+}

diff --git a/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/tools/CustomLineView.java b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/tools/CustomLineView.java
new file mode 100644
index 0000000..1f702ce
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/tools/CustomLineView.java
@@ -0,0 +1,105 @@
+/*******************************************************************************

+ * Copyright (c) 2013, 2017 Orange.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    BAREAU Cyrille <cyrille.bareau@orange.com>, 

+ *    BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+ *    BOLLE Sebastien <sebastien.bolle@orange.com>.

+ *******************************************************************************/

+package org.eclipse.om2m.android.dashboard.tools;

+

+import org.eclipse.om2m.android.dashboard.R;

+

+import android.annotation.SuppressLint;

+import android.content.Context;

+import android.content.res.TypedArray;

+import android.graphics.Canvas;

+import android.graphics.DashPathEffect;

+import android.graphics.Paint;

+import android.util.AttributeSet;

+import android.view.View;

+import android.widget.ImageView;

+

+/*

+ * pour utiliser ce control dans le xml, 

+ * ne pas oublier d'ajouter un custom namespace dans l'entête pour pouvoir utiliser les attributs

+ * exemple :

+ * 

+ * xmlns:custom="http://schemas.android.com/apk/res/com.orange.openthebox.dashboard"

+ * 

+ * <com.orange.openthebox.dashboard.OTBCustomLineView

+        custom:dashed="true"

+        android:layout_width="match_parent"

+        android:layout_height="2dp"

+        custom:dashGap="2"

+        custom:dashWidth="2"

+        custom:thickness="1"

+        custom:orientation="horizontal"

+        custom:color="@color/otb_red" />

+ */

+

+public class CustomLineView extends ImageView {

+

+	private Paint paint = new Paint();

+

+	private int color = -1;

+	private int thickness = -1;

+	private boolean dashed = false;

+	private int dashWidth = -1;

+	private int dashGap = -1;

+	private int orientation = 0; // 0 = horizontal, 1 = vertical

+	private boolean shadow = false;

+

+

+	public CustomLineView(Context context, AttributeSet attrs) {

+		super(context, attrs);	

+

+		TypedArray myAttrs = context.obtainStyledAttributes(attrs, R.styleable.CustomLine);

+

+		color = myAttrs.getResourceId(R.styleable.CustomLine_color, R.color.soft_gray);

+		thickness = myAttrs.getInt(R.styleable.CustomLine_thickness, 2);

+		dashWidth = myAttrs.getInt(R.styleable.CustomLine_dashWidth, 10);

+		dashGap = myAttrs.getInt(R.styleable.CustomLine_dashGap, 5);

+		dashed = myAttrs.getBoolean(R.styleable.CustomLine_dashed, false);

+		orientation = myAttrs.getInt(R.styleable.CustomLine_orientation, 0);

+		shadow = myAttrs.getBoolean(R.styleable.CustomLine_shadow, false);

+		

+		myAttrs.recycle();

+		

+		// patch pour android > 4.0

+		// pour réussir à dessiner des ligne en pointillés, 

+		// il faut désactiver l'accélération matérielle sur la vue 

+		if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB) {

+			setLayerType(View.LAYER_TYPE_SOFTWARE, null);			

+		}		

+	}

+

+	@SuppressLint("DrawAllocation")

+	@Override

+	protected void onDraw(Canvas canvas) {

+		super.onDraw(canvas);

+		try {

+			paint.setColor(getResources().getColor(color));

+		} catch(Exception ignored) {}

+		

+		paint.setStyle(Paint.Style.STROKE);

+		paint.setStrokeWidth(thickness);

+

+		if (dashed) {

+			paint.setPathEffect(new DashPathEffect(new float[]{dashWidth, dashGap}, 0));

+		}

+		if (shadow) {

+			paint.setShadowLayer(8, 0, 0, getResources().getColor(color));

+		}

+		if (orientation == 0) { // horizontal

+			canvas.drawLine(0, 0, getWidth(), 0, paint);

+		} else if (orientation == 1) { // vertical

+			canvas.drawLine(0, getHeight(), 0 , 0, paint);

+		}

+	}

+	

+}

diff --git a/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/tools/DashboardWebViewClient.java b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/tools/DashboardWebViewClient.java
new file mode 100644
index 0000000..fa4a775
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/tools/DashboardWebViewClient.java
@@ -0,0 +1,93 @@
+/*******************************************************************************

+ * Copyright (c) 2013, 2017 Orange.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    BAREAU Cyrille <cyrille.bareau@orange.com>, 

+ *    BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+ *    BOLLE Sebastien <sebastien.bolle@orange.com>.

+ *******************************************************************************/

+package org.eclipse.om2m.android.dashboard.tools;

+

+import android.content.Context;

+import android.graphics.Bitmap;

+import android.net.http.SslError;

+import android.util.Log;

+import android.view.View;

+import android.view.animation.AlphaAnimation;

+import android.view.animation.Animation;

+import android.webkit.HttpAuthHandler;

+import android.webkit.SslErrorHandler;

+import android.webkit.WebView;

+import android.webkit.WebViewClient;

+import android.widget.Toast;

+

+public class DashboardWebViewClient extends WebViewClient {

+

+	private Context context;

+	

+	private int loadCount = 0;

+

+	public DashboardWebViewClient(Context context) {

+		super();

+		this.context = context;

+	}

+

+	@Override

+	public void onPageStarted(WebView view, String url, Bitmap favicon) {

+		Log.d("OTBWebViewClient", "onPageStarted(url=" + url + ")");

+		view.setVisibility(View.VISIBLE);

+	}

+

+	@Override

+	public void onPageFinished(WebView view, String url) {

+		Log.d("OTBWebViewClient", "onPageFinished(url=" + url + ")");

+		if (loadCount == 0) {

+			Log.d("OTBWebViewClient", "loadCount == 0 ==> execute customJavascript");

+			view.loadUrl("javascript:document.getElementsByName('j_username')[0].value = '"

+//					+ OTBSettingsManager.getInstance(this.context).getOASLogin() + "';"

+					+ "javascript:document.getElementsByName('j_password')[0].value = '"

+//					+ OTBSettingsManager.getInstance(this.context).getOASPwd() + "';"

+					+ "javascript:document.getElementsByName('logon')[0].click();");

+			loadCount++;

+		}

+		

+		view.setVisibility(View.VISIBLE);

+		final Animation fade = new AlphaAnimation(0.0f, 1.0f);

+		fade.setDuration(200);

+		view.startAnimation(fade);

+		view.setVisibility(View.VISIBLE);

+	}

+

+	@Override

+	public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {

+		Toast.makeText(view.getContext(), "Authentication Error", Toast.LENGTH_LONG).show();

+	}

+

+	@Override

+	public void onLoadResource(WebView view, String url) {

+		Log.d("OTBWebViewClient", "onLoadResource(url=" + url + ")");

+	}

+

+	@Override

+	public boolean shouldOverrideUrlLoading(WebView view, String url) {

+		return super.shouldOverrideUrlLoading(view, url);

+	}

+

+	@Override

+	public void onReceivedHttpAuthRequest(WebView view,

+			final HttpAuthHandler handler, final String host, final String realm) {

+		Log.d("OTBWebViewClient", "onReceivedHttpAuthRequest");

+//		handler.proceed(OTBSettingsManager.getInstance(this.context).getOASLogin(), 

+//				OTBSettingsManager.getInstance(this.context).getOASPwd());

+	}

+

+	@Override

+	public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {

+		handler.proceed();

+	}

+

+}

diff --git a/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/tools/IconManager.java b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/tools/IconManager.java
new file mode 100644
index 0000000..9795634
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/tools/IconManager.java
@@ -0,0 +1,73 @@
+/*******************************************************************************

+ * Copyright (c) 2013, 2017 Orange.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    BAREAU Cyrille <cyrille.bareau@orange.com>, 

+ *    BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+ *    BOLLE Sebastien <sebastien.bolle@orange.com>.

+ *******************************************************************************/

+package org.eclipse.om2m.android.dashboard.tools;

+

+import java.util.HashMap;

+import java.util.Map;

+

+import org.eclipse.om2m.android.dashboard.R;

+

+import android.content.res.Resources;

+import android.graphics.Bitmap;

+import android.graphics.drawable.BitmapDrawable;

+

+public class IconManager {

+

+	private static final IconManager INSTANCE = new IconManager();

+

+	// ================================================================================

+

+	private IconManager() {

+		if (INSTANCE != null)  {

+			throw new IllegalStateException("Already instantiated");

+		}		

+	}

+

+	public static IconManager getInstance() {			

+		return INSTANCE;

+	}

+

+	// ================================================================================

+

+	private Map<String, Bitmap> appIcons = new HashMap<String, Bitmap>();

+	private Map<String, Bitmap> userIcons = new HashMap<String, Bitmap>();

+	

+	public void setIconForApp(String app, Bitmap bitmap) {

+		appIcons.put(app, bitmap);

+	}

+	

+	public boolean hasIconForApp(String app) {

+		return appIcons.get(app) != null;

+	}

+	

+	public BitmapDrawable getIconForApp(String app, Resources res) {

+		Bitmap bitmap = appIcons.get(app);

+		return (bitmap != null) ? new BitmapDrawable(res, bitmap)

+			: (BitmapDrawable) res.getDrawable(R.drawable.otb_appicon_default);

+	}

+	

+	public void setIconForUser(String user, Bitmap bitmap) {

+		userIcons.put(user, bitmap);

+	}

+	

+	public boolean hasIconForUser(String user) {

+		return userIcons.get(user) != null;

+	}

+	

+	public BitmapDrawable getIconForUser(String user, Resources res) {

+		Bitmap bitmap = userIcons.get(user);

+		return (bitmap != null) ? new BitmapDrawable(res, bitmap)

+			: (BitmapDrawable) res.getDrawable(R.drawable.otb_user_avatar_default);

+	}

+	

+}

diff --git a/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/tools/OneM2MDeviceType.java b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/tools/OneM2MDeviceType.java
new file mode 100644
index 0000000..f570edf
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/tools/OneM2MDeviceType.java
@@ -0,0 +1,104 @@
+/*******************************************************************************

+ * Copyright (c) 2013, 2017 Orange.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    BAREAU Cyrille <cyrille.bareau@orange.com>, 

+ *    BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+ *    BOLLE Sebastien <sebastien.bolle@orange.com>.

+ *******************************************************************************/

+package org.eclipse.om2m.android.dashboard.tools;

+

+import java.util.ArrayList;

+import java.util.List;

+

+import org.eclipse.om2m.sdt.home.types.DeviceType;

+

+import org.eclipse.om2m.android.dashboard.R;

+

+import android.content.res.Resources;

+import android.content.res.TypedArray;

+

+public class OneM2MDeviceType {

+	

+	private static final String DEFAULT = "Device";

+	

+	private static OneM2MDeviceType UNDEFINED;

+	

+	private static List<OneM2MDeviceType> values = new ArrayList<OneM2MDeviceType>();

+	

+	private String key;

+	private String locale;

+	private int icon;

+

+	static public void initialize(Resources res) {

+		values.clear();

+		TypedArray deviceItems = res.obtainTypedArray(R.array.devices);

+		for (int i = 0; i < deviceItems.length(); i += 3) {

+			String dev = deviceItems.getString(i);

+			if (dev.equals("undefined"))

+				UNDEFINED = new OneM2MDeviceType(dev,

+						deviceItems.getString(i+1),

+						deviceItems.getResourceId(i+2, -1));

+			else if (dev.equals("default"))

+				values.add(new OneM2MDeviceType(DEFAULT,

+						deviceItems.getString(i+1),

+						deviceItems.getResourceId(i+2, -1)));

+			else for (DeviceType dt : DeviceType.values()) {

+				if (dev.equals(dt.name())) {

+					values.add(new OneM2MDeviceType(dev.substring(6), // remove device prefix

+							deviceItems.getString(i+1),

+							deviceItems.getResourceId(i+2, -1)));

+					break;

+				}

+			}

+		}

+	}

+	

+	private OneM2MDeviceType(String key, String locale, int icon) {

+		this.key = key;

+		this.locale = locale;

+		this.icon = (icon < 0) ? R.drawable.otb_picto_dev_cat_sdt : icon;

+	}

+

+    public int getIcon() {

+        return icon;

+    }

+

+    public String getLocale() {

+        return locale;

+    }

+    

+    public String getType() {

+    	return key;

+    }

+

+    public static OneM2MDeviceType fromValue(final String s) {

+    	int idx = s.lastIndexOf('.');

+    	String dev = (idx < 0) ? s : s.substring(idx+1);

+    	if (dev.startsWith("device"))

+    		dev = dev.substring(6);

+        for (OneM2MDeviceType dt : values) {

+       		if (dt.key.equals(dev))

+       			return dt;

+        }

+        return UNDEFINED;

+    }

+    

+    public static String getConvertedType(final String type) {

+		OneM2MDeviceType dt = fromValue(type);

+		return (dt == null) ? DEFAULT : dt.getType();

+	}

+

+	public static List<OneM2MDeviceType> getValues() {

+		return values;

+	}

+	

+	public String toString() {

+		return "<OTBDeviceType " + key + " " + locale + " " + icon + "/>";

+	}

+

+}

diff --git a/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/tools/SettingsManager.java b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/tools/SettingsManager.java
new file mode 100644
index 0000000..65d8728
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/tools/SettingsManager.java
@@ -0,0 +1,193 @@
+/*******************************************************************************

+ * Copyright (c) 2013, 2017 Orange.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    BAREAU Cyrille <cyrille.bareau@orange.com>, 

+ *    BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+ *    BOLLE Sebastien <sebastien.bolle@orange.com>.

+ *******************************************************************************/

+package org.eclipse.om2m.android.dashboard.tools;

+

+import android.content.Context;

+import android.content.SharedPreferences;

+import android.content.SharedPreferences.Editor;

+

+public final class SettingsManager {

+

+	private static final SettingsManager INSTANCE = new SettingsManager();

+	

+	private static SharedPreferences settings = null;

+	

+	private static String WIZARD_APPLICATION_SIMPLE 	= "wiz_application_simple";

+	private static String WIZARD_APPLICATION_DETAILS 	= "wiz_application_details";

+	private static String WIZARD_DEVICE_SIMPLE 			= "wiz_device_simple";

+	private static String WIZARD_DEVICE_DETAILS 		= "wiz_device_details";

+	private static String WIZARD_CONFIG 				= "wiz_config";

+	

+	private static String LANGUAGE 						= "language";

+	private static String DEFAULT_LANGUAGE 				= "en";

+	

+	private static String DEVICE_NAME                   = "deviceName";

+	public static String DEVICE_NAME_WITH_ALIAS        = "pDANe";

+	public static String DEVICE_NAME_WITH_NAME         = "prDNe";

+	private static String DEFAULT_DEVICE_NAME           = DEVICE_NAME_WITH_NAME;

+	

+	private static String CSE_HOSTNAME                = "cse_hostname";              

+	private static String DEFAULT_CSE_HOSTNAME        = "10.0.10.103"; //"http://192.168.1.11:8080/~/dt-in-cse/dt-in-name";

+	private static String CSE_PORT                    = "cse_port";

+	private static String DEFAULT_CSE_PORT            = "8080";

+	private static String CSE_ID                      = "cse_id";

+	private static String DEFAULT_CSE_ID              = "in-cse";

+	private static String CSE_NAME                    = "cse_name";

+	private static String DEFAULT_CSE_NAME            = "in-name";

+	private static String CSE_LOGIN                   = "cse_login";

+	private static String DEFAULT_CSE_LOGIN           = "admin";

+	private static String CSE_PWD                     = "cse_pwd";

+	private static String DEFAULT_CSE_PWD             = "admin";

+	

+	private static boolean DEFAULT_WIZARD_ACTIVATION = false;

+	

+	private SettingsManager() {

+	}

+	

+	public static SettingsManager getInstance(Context context) {

+    	// get ip in options

+        settings = context.getSharedPreferences("MyOTBSettings", Context.MODE_PRIVATE);		

+        return INSTANCE;

+    }

+	

+	public boolean isWizardApplicationSimpleActivated() {

+		return settings.getBoolean(WIZARD_APPLICATION_SIMPLE, DEFAULT_WIZARD_ACTIVATION);

+	}

+	

+	public void setWizardApplicationSimple(boolean activated) {

+		Editor editor = settings.edit();

+		editor.putBoolean(WIZARD_APPLICATION_SIMPLE, activated);

+		editor.commit();

+	}

+	

+	public boolean isWizardApplicationDetailsActivated() {

+		return settings.getBoolean(WIZARD_APPLICATION_DETAILS, DEFAULT_WIZARD_ACTIVATION);

+	}

+	

+	public void setWizardApplicationDetails(boolean activated) {

+		Editor editor = settings.edit();

+		editor.putBoolean(WIZARD_APPLICATION_DETAILS, activated);

+		editor.commit();

+	}

+	

+	public boolean isWizardDeviceSimpleActivated() {

+		return settings.getBoolean(WIZARD_DEVICE_SIMPLE, DEFAULT_WIZARD_ACTIVATION);

+	}

+	

+	public void setWizardDeviceSimple(boolean activated) {

+		Editor editor = settings.edit();

+		editor.putBoolean(WIZARD_DEVICE_SIMPLE, activated);

+		editor.commit();

+	}

+	

+	public boolean isWizardDeviceDetailsActivated() {

+		return settings.getBoolean(WIZARD_DEVICE_DETAILS, DEFAULT_WIZARD_ACTIVATION);

+	}

+	

+	public void setWizardDeviceDetails(boolean activated) {

+		Editor editor = settings.edit();

+		editor.putBoolean(WIZARD_DEVICE_DETAILS, activated);

+		editor.commit();

+	}

+	

+	public boolean isWizardConfigActivated() {

+		return settings.getBoolean(WIZARD_CONFIG, DEFAULT_WIZARD_ACTIVATION);

+	}

+	

+	public void setWizardConfig(boolean activated) {

+		Editor editor = settings.edit();

+		editor.putBoolean(WIZARD_CONFIG, activated);

+		editor.commit();

+	}

+

+	public String getLanguage() {

+		return settings.getString(LANGUAGE, DEFAULT_LANGUAGE);

+	}

+	

+	public void setLanguage(String language) {

+		Editor editor = settings.edit();

+		editor.putString(LANGUAGE, language);

+		editor.commit();

+	}

+	

+	public String getCSEHostname() {

+		return settings.getString(CSE_HOSTNAME, DEFAULT_CSE_HOSTNAME);

+	}

+	

+	public void setCSEHostname(String cseHostname) {

+		Editor editor = settings.edit();

+		editor.putString(CSE_HOSTNAME, cseHostname);

+		editor.commit();

+	}

+	

+	public String getCSEPort() {

+		return settings.getString(CSE_PORT, DEFAULT_CSE_PORT);

+	}

+	

+	public void setCSEPort(String csePort) {

+		Editor editor = settings.edit();

+		editor.putString(CSE_PORT, csePort);

+		editor.commit();

+	}

+	

+	public String getCSEId() {

+		return settings.getString(CSE_ID, DEFAULT_CSE_ID);

+	}

+	

+	public void setCSEId(String cseId) {

+		Editor editor = settings.edit();

+		editor.putString(CSE_ID, cseId);

+		editor.commit();

+	}

+	

+	public String getCSEName() {

+		return settings.getString(CSE_NAME, DEFAULT_CSE_NAME);

+	}

+	

+	public void setCSEName(String cseName) {

+		Editor editor = settings.edit();

+		editor.putString(CSE_NAME, cseName);

+		editor.commit();

+	}

+	

+	public String getCSELogin() {

+		return settings.getString(CSE_LOGIN, DEFAULT_CSE_LOGIN);

+	}

+	

+	public void setCSELogin(String login) {

+		Editor editor = settings.edit();

+		editor.putString(CSE_LOGIN, login);

+		editor.commit();

+	}

+	

+	public String getCSEPwd() {

+		return settings.getString(CSE_PWD, DEFAULT_CSE_PWD);

+	}

+	

+	public void setCSEPwd(String pwd) {

+		Editor editor = settings.edit();

+		editor.putString(CSE_PWD, pwd);

+		editor.commit();

+	}

+	

+	public void setDeviceName(String deviceName) {

+		Editor editor = settings.edit();

+		editor.putString(DEVICE_NAME, deviceName);

+		editor.commit();

+	}

+	

+	public String getDeviceName() {

+		return settings.getString(DEVICE_NAME, DEFAULT_DEVICE_NAME);

+	}

+	

+}

diff --git a/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/tools/Sorter.java b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/tools/Sorter.java
new file mode 100644
index 0000000..9fdb36f
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/tools/Sorter.java
@@ -0,0 +1,58 @@
+/*******************************************************************************

+ * Copyright (c) 2013, 2017 Orange.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    BAREAU Cyrille <cyrille.bareau@orange.com>, 

+ *    BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+ *    BOLLE Sebastien <sebastien.bolle@orange.com>.

+ *******************************************************************************/

+package org.eclipse.om2m.android.dashboard.tools;

+

+import java.util.Collection;

+import java.util.Comparator;

+import java.util.List;

+import java.util.SortedSet;

+import java.util.TreeSet;

+

+import org.eclipse.om2m.android.dashboard.cse.models.OneM2MApplication;

+import org.eclipse.om2m.android.dashboard.cse.models.SDTDevice;

+

+public class Sorter {

+	

+	private static final Comparator<SDTDevice> DEV_COMPARATOR = new Comparator<SDTDevice>() {

+        @Override

+        public int compare(SDTDevice o1, SDTDevice o2) {

+        	return o1.getSerialNumber().compareTo(o2.getSerialNumber());

+        }

+    };

+	

+    private static final Comparator<OneM2MApplication> APP_COMPARATOR = new Comparator<OneM2MApplication>() {

+        @Override

+        public int compare(OneM2MApplication o1, OneM2MApplication o2) {

+            return o1.getRn().compareTo(o2.getRn());

+        }

+    };

+	

+	public static final SortedSet<SDTDevice> getSortedDevices(final Collection<SDTDevice> devices) {

+		SortedSet<SDTDevice> ret = new TreeSet<SDTDevice>(DEV_COMPARATOR);

+		ret.addAll(devices);

+		return ret;

+	}

+	

+	public static final SortedSet<OneM2MApplication> getSortedApplications() {

+		return new TreeSet<OneM2MApplication>(APP_COMPARATOR);

+	}

+	

+	public static SortedSet<OneM2MApplication> getSortedApplications(final List<OneM2MApplication> apps) {

+		SortedSet<OneM2MApplication> ret = new TreeSet<OneM2MApplication>(APP_COMPARATOR);

+		if (apps != null)

+			for (OneM2MApplication a : apps)

+				ret.add(a);

+		return ret;

+	}

+	

+}

diff --git a/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/utils/OTBUtils.java b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/utils/OTBUtils.java
new file mode 100644
index 0000000..67a54bb
--- /dev/null
+++ b/org.eclipse.om2m.android.dashboard/src/main/java/org/eclipse/om2m/android/dashboard/utils/OTBUtils.java
@@ -0,0 +1,40 @@
+/*******************************************************************************

+ * Copyright (c) 2013, 2017 Orange.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    BAREAU Cyrille <cyrille.bareau@orange.com>, 

+ *    BONNARDEL Gregory <gbonnardel.ext@orange.com>, 

+ *    BOLLE Sebastien <sebastien.bolle@orange.com>.

+ *******************************************************************************/

+package org.eclipse.om2m.android.dashboard.utils;

+

+import java.util.Collection;

+import java.util.Map;

+

+public class OTBUtils {

+	

+	static public final boolean equals(final String s1, final String s2) {

+		return (s1 == null) ? (s2 == null) : s1.equals(s2);

+	}

+	

+	static public final boolean isEmpty(final String s) {

+		return (s == null) || s.trim().isEmpty();

+	}

+	

+	static public final boolean isEmpty(final Collection<?> c) {

+		return (c == null) || c.isEmpty();

+	}

+	

+	static public final boolean isEmpty(final Map<?,?> c) {

+		return (c == null) || c.isEmpty();

+	}

+	

+	static public final boolean isEmpty(final Object[] c) {

+		return (c == null) || (c.length == 0);

+	}

+

+}

diff --git a/pom.xml b/pom.xml
index e0ac078..994418e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -51,6 +51,7 @@
 			<url>http://download.eclipse.org/tools/orbit/downloads/drops/R20160520211859/repository</url>
 		</repository>
 	</repositories>
+
 	<build>
 		<plugins>
 			<plugin>
@@ -165,5 +166,6 @@
 		<module>org.eclipse.om2m.dal</module>
 		<module>org.eclipse.om2m.dal.driver.sample</module>
 		<module>org.eclipse.om2m.ipe.dal</module>
+		<module>org.eclipse.om2m.android.dashboard</module>
 	</modules>
 </project>