You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@taverna.apache.org by sa...@apache.org on 2018/06/05 14:47:47 UTC

[1/2] incubator-taverna-mobile git commit: Feat: User details in nav header and New User Profile Activity

Repository: incubator-taverna-mobile
Updated Branches:
  refs/heads/master f997f57f4 -> eff635177


Feat: User details in nav header and New User Profile Activity


Project: http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/commit/e072d3ba
Tree: http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/tree/e072d3ba
Diff: http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/diff/e072d3ba

Branch: refs/heads/master
Commit: e072d3ba1720e424810ac8e0c03042ea92b62eeb
Parents: 0d46e6f
Author: Hitesh Gautam <ga...@gmail.com>
Authored: Sat May 26 04:01:48 2018 +0530
Committer: Hitesh Gautam <ga...@gmail.com>
Committed: Mon Jun 4 15:31:14 2018 +0530

----------------------------------------------------------------------
 app/build.gradle                                |   1 +
 app/src/main/AndroidManifest.xml                |   5 +-
 .../mobile/data/local/PreferencesHelper.java    |   2 +-
 .../taverna/mobile/ui/DashboardActivity.java    |  54 +++-
 .../FavouriteWorkflowsActivity.java             |  60 ++++
 .../ui/myworkflows/MyWorkflowsActivity.java     |  60 ++++
 .../ui/userprofile/UserProfileActivity.java     |  71 +++++
 .../ui/userprofile/UserProfileFragment.java     | 141 +++++++++
 .../drawable/ic_account_circle_black_24dp.xml   |   9 +
 .../main/res/drawable/ic_email_black_24dp.xml   |   9 +
 .../ic_keyboard_arrow_right_black_24dp.xml      |   9 +
 .../res/drawable/ic_language_black_24dp.xml     |   9 +
 .../drawable/ic_location_city_black_24dp.xml    |   9 +
 .../res/drawable/ic_location_on_black_24dp.xml  |   9 +
 .../main/res/drawable/ic_storage_black_24dp.xml |   9 +
 app/src/main/res/drawable/nav_header.png        | Bin 0 -> 74018 bytes
 .../res/layout/activity_favourite_workflows.xml |  33 ++
 .../main/res/layout/activity_my_workflows.xml   |  33 ++
 .../main/res/layout/activity_user_profile.xml   |  31 ++
 .../main/res/layout/fragment_user_profile.xml   | 317 +++++++++++++++++++
 app/src/main/res/layout/nav_header.xml          |  84 +++--
 app/src/main/res/values/dimens.xml              |  21 ++
 app/src/main/res/values/strings.xml             |  23 +-
 23 files changed, 961 insertions(+), 38 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/e072d3ba/app/build.gradle
----------------------------------------------------------------------
diff --git a/app/build.gradle b/app/build.gradle
index 94a9839..0daa6c6 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -115,6 +115,7 @@ dependencies {
     implementation "com.android.support:multidex:1.0.2"
     implementation "com.google.code.gson:gson:2.8.2"
 
+    implementation 'de.hdodenhof:circleimageview:2.2.0'
     implementation "com.anton46:stepsview:0.0.2"
 
     //Dependencies for LeakCanary

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/e072d3ba/app/src/main/AndroidManifest.xml
----------------------------------------------------------------------
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 5c08b8f..e4290b7 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -101,6 +101,9 @@ limitations under the License.
                   android:exported="true"
             />
         <activity android:name=".ui.usage.UsageActivity" />
+        <activity android:name=".ui.userprofile.UserProfileActivity"/>
+        <activity android:name=".ui.favouriteworkflow.FavouriteWorkflowsActivity"/>
+        <activity android:name=".ui.myworkflows.MyWorkflowsActivity"/>
     </application>
 
-</manifest>
+</manifest>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/e072d3ba/app/src/main/java/org/apache/taverna/mobile/data/local/PreferencesHelper.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/data/local/PreferencesHelper.java b/app/src/main/java/org/apache/taverna/mobile/data/local/PreferencesHelper.java
index 064d443..a4818bf 100644
--- a/app/src/main/java/org/apache/taverna/mobile/data/local/PreferencesHelper.java
+++ b/app/src/main/java/org/apache/taverna/mobile/data/local/PreferencesHelper.java
@@ -151,7 +151,7 @@ public class PreferencesHelper {
         sharedPref.edit().putString(PREF_KEY_USER_EMAIL, userEmail).apply();
     }
 
-    public String getUserAvatar() {
+    public String getUserAvatarUrl() {
         return sharedPref.getString(PREF_KEY_USER_AVATAR, null);
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/e072d3ba/app/src/main/java/org/apache/taverna/mobile/ui/DashboardActivity.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/DashboardActivity.java b/app/src/main/java/org/apache/taverna/mobile/ui/DashboardActivity.java
index d6667ad..2b32bbf 100644
--- a/app/src/main/java/org/apache/taverna/mobile/ui/DashboardActivity.java
+++ b/app/src/main/java/org/apache/taverna/mobile/ui/DashboardActivity.java
@@ -26,6 +26,7 @@ import org.apache.taverna.mobile.ui.favouriteworkflow.FavouriteWorkflowsFragment
 import org.apache.taverna.mobile.ui.login.LoginActivity;
 import org.apache.taverna.mobile.ui.myworkflows.MyWorkflowFragment;
 import org.apache.taverna.mobile.ui.usage.UsageActivity;
+import org.apache.taverna.mobile.ui.userprofile.UserProfileActivity;
 import org.apache.taverna.mobile.ui.workflow.WorkflowFragment;
 import org.apache.taverna.mobile.utils.ActivityUtils;
 
@@ -43,11 +44,23 @@ import android.support.v7.app.AppCompatActivity;
 import android.support.v7.widget.Toolbar;
 import android.view.Menu;
 import android.view.MenuItem;
+import android.view.View;
 import android.webkit.WebView;
 import android.widget.TableLayout;
+import android.widget.TextView;
+
+import com.bumptech.glide.Glide;
+import com.bumptech.glide.load.engine.DiskCacheStrategy;
+import com.bumptech.glide.load.resource.drawable.GlideDrawable;
+import com.bumptech.glide.request.animation.GlideAnimation;
+import com.bumptech.glide.request.target.SimpleTarget;
 
 import butterknife.BindView;
 import butterknife.ButterKnife;
+import butterknife.OnClick;
+import de.hdodenhof.circleimageview.CircleImageView;
+
+import static org.apache.taverna.mobile.TavernaApplication.getContext;
 
 public class DashboardActivity extends AppCompatActivity {
 
@@ -60,7 +73,6 @@ public class DashboardActivity extends AppCompatActivity {
     @BindView(R.id.toolbar)
     Toolbar toolbar;
 
-
     private Dialog dialog;
     private DataManager dataManager;
     private Fragment fragment;
@@ -78,7 +90,6 @@ public class DashboardActivity extends AppCompatActivity {
 
         dialog = new Dialog(this);
 
-
         setSupportActionBar(toolbar);
         final ActionBar ab = getSupportActionBar();
         if (ab != null) {
@@ -100,6 +111,8 @@ public class DashboardActivity extends AppCompatActivity {
         }
 
         dataManager = new DataManager(new PreferencesHelper(this));
+
+        setNavHeader();
     }
 
 
@@ -271,6 +284,43 @@ public class DashboardActivity extends AppCompatActivity {
         finish();
     }
 
+    private void setNavHeader() {
+
+        View headerView =  navigationView.getHeaderView(0);
+        String avatarUrl = dataManager.getPreferencesHelper().getUserAvatarUrl();
+        final CircleImageView navUserAvatar = headerView.findViewById(R.id.nav_user_avatar);
+
+        Glide.with(getContext())
+                .load(avatarUrl)
+                .diskCacheStrategy(DiskCacheStrategy.SOURCE)
+                .placeholder(R.drawable.ic_account_circle_black_24dp)
+                .error(R.drawable.ic_account_circle_black_24dp)
+                .into(new SimpleTarget<GlideDrawable>() {
+                    @Override
+                    public void onResourceReady(GlideDrawable resource, GlideAnimation<?
+                            super GlideDrawable> glideAnimation) {
+                        navUserAvatar.setImageDrawable(resource);
+                    }
+                });
+
+        navUserAvatar.setOnClickListener(new View.OnClickListener() {
+            @OnClick
+            public void onClick(View v) {
+                Intent intent = new Intent(DashboardActivity.this, UserProfileActivity.class);
+                startActivity(intent);
+            }
+        });
+
+        String userName = dataManager.getPreferencesHelper().getUserName();
+        TextView navUserName = headerView.findViewById(R.id.nav_user_name);
+        navUserName.setText(userName);
+
+        String userEmail = dataManager.getPreferencesHelper().getUserEmail();
+        TextView navUserEmail = headerView.findViewById(R.id.nav_user_email);
+        navUserEmail.setText(userEmail);
+
+    }
+
 
     @Override
     public boolean onOptionsItemSelected(MenuItem item) {

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/e072d3ba/app/src/main/java/org/apache/taverna/mobile/ui/favouriteworkflow/FavouriteWorkflowsActivity.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/favouriteworkflow/FavouriteWorkflowsActivity.java b/app/src/main/java/org/apache/taverna/mobile/ui/favouriteworkflow/FavouriteWorkflowsActivity.java
new file mode 100644
index 0000000..a8cceef
--- /dev/null
+++ b/app/src/main/java/org/apache/taverna/mobile/ui/favouriteworkflow/FavouriteWorkflowsActivity.java
@@ -0,0 +1,60 @@
+package org.apache.taverna.mobile.ui.favouriteworkflow;
+
+import android.support.annotation.Nullable;
+import android.support.v7.app.ActionBar;
+import android.support.v7.app.AppCompatActivity;
+import android.os.Bundle;
+import android.support.v7.widget.Toolbar;
+import android.view.Menu;
+import android.view.MenuItem;
+
+import org.apache.taverna.mobile.R;
+import org.apache.taverna.mobile.utils.ActivityUtils;
+
+import butterknife.BindView;
+import butterknife.ButterKnife;
+
+public class FavouriteWorkflowsActivity extends AppCompatActivity {
+
+    @BindView(R.id.toolbar)
+    Toolbar mToolbar;
+
+    @Override
+    protected void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_favourite_workflows);
+
+        ButterKnife.bind(this);
+
+        setSupportActionBar(mToolbar);
+        ActionBar actionbar = getSupportActionBar();
+
+        if (actionbar != null) {
+            actionbar.setHomeButtonEnabled(true);
+            actionbar.setDisplayHomeAsUpEnabled(true);
+            actionbar.setTitle(R.string.title_nav_favourite_workflows);
+        }
+
+        if (savedInstanceState == null) {
+            ActivityUtils.addFragmentToActivity(getSupportFragmentManager(),
+                    new FavouriteWorkflowsFragment(), R.id.frame_container);
+        }
+    }
+
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        getMenuInflater().inflate(R.menu.dashboard_main, menu);
+        return true;
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        switch (item.getItemId()) {
+            case android.R.id.home:
+                finish();
+                return true;
+        }
+        return super.onOptionsItemSelected(item);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/e072d3ba/app/src/main/java/org/apache/taverna/mobile/ui/myworkflows/MyWorkflowsActivity.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/myworkflows/MyWorkflowsActivity.java b/app/src/main/java/org/apache/taverna/mobile/ui/myworkflows/MyWorkflowsActivity.java
new file mode 100644
index 0000000..92aa528
--- /dev/null
+++ b/app/src/main/java/org/apache/taverna/mobile/ui/myworkflows/MyWorkflowsActivity.java
@@ -0,0 +1,60 @@
+package org.apache.taverna.mobile.ui.myworkflows;
+
+import android.support.annotation.Nullable;
+import android.support.v7.app.ActionBar;
+import android.support.v7.app.AppCompatActivity;
+import android.os.Bundle;
+import android.support.v7.widget.Toolbar;
+import android.view.Menu;
+import android.view.MenuItem;
+
+import org.apache.taverna.mobile.R;
+import org.apache.taverna.mobile.utils.ActivityUtils;
+
+import butterknife.BindView;
+import butterknife.ButterKnife;
+
+public class MyWorkflowsActivity extends AppCompatActivity {
+
+    @BindView(R.id.toolbar)
+    Toolbar mToolbar;
+
+    @Override
+    protected void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_my_workflows);
+
+        ButterKnife.bind(this);
+
+        setSupportActionBar(mToolbar);
+        ActionBar actionbar = getSupportActionBar();
+
+        if (actionbar != null) {
+            actionbar.setHomeButtonEnabled(true);
+            actionbar.setDisplayHomeAsUpEnabled(true);
+            actionbar.setTitle(R.string.title_nav_my_workflows);
+        }
+
+        if (savedInstanceState == null) {
+            ActivityUtils.addFragmentToActivity(getSupportFragmentManager(),
+                    new MyWorkflowFragment(), R.id.frame_container);
+        }
+    }
+
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        getMenuInflater().inflate(R.menu.dashboard_main, menu);
+        return true;
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        switch (item.getItemId()) {
+            case android.R.id.home:
+                finish();
+                return true;
+        }
+        return super.onOptionsItemSelected(item);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/e072d3ba/app/src/main/java/org/apache/taverna/mobile/ui/userprofile/UserProfileActivity.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/userprofile/UserProfileActivity.java b/app/src/main/java/org/apache/taverna/mobile/ui/userprofile/UserProfileActivity.java
new file mode 100644
index 0000000..9e3719f
--- /dev/null
+++ b/app/src/main/java/org/apache/taverna/mobile/ui/userprofile/UserProfileActivity.java
@@ -0,0 +1,71 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.taverna.mobile.ui.userprofile;
+
+import android.os.Bundle;
+import android.support.annotation.Nullable;
+import android.support.v7.app.ActionBar;
+import android.support.v7.app.AppCompatActivity;
+import android.support.v7.widget.Toolbar;
+import android.view.MenuItem;
+
+import org.apache.taverna.mobile.R;
+import org.apache.taverna.mobile.utils.ActivityUtils;
+import butterknife.BindView;
+import butterknife.ButterKnife;
+
+public class UserProfileActivity extends AppCompatActivity {
+
+    @BindView(R.id.toolbar)
+    Toolbar mToolbar;
+
+    @Override
+    protected void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_user_profile);
+
+        ButterKnife.bind(this);
+
+        setSupportActionBar(mToolbar);
+        ActionBar actionbar = getSupportActionBar();
+
+        if (actionbar != null) {
+            actionbar.setHomeButtonEnabled(true);
+            actionbar.setDisplayHomeAsUpEnabled(true);
+            actionbar.setTitle(R.string.title_user_profile);
+        }
+
+        if (savedInstanceState == null) {
+            ActivityUtils.addFragmentToActivity(getSupportFragmentManager(),
+                    new UserProfileFragment(), R.id.frame_container);
+        }
+
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        switch (item.getItemId()) {
+            case android.R.id.home:
+                finish();
+                return true;
+        }
+        return super.onOptionsItemSelected(item);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/e072d3ba/app/src/main/java/org/apache/taverna/mobile/ui/userprofile/UserProfileFragment.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/userprofile/UserProfileFragment.java b/app/src/main/java/org/apache/taverna/mobile/ui/userprofile/UserProfileFragment.java
new file mode 100644
index 0000000..c80a17e
--- /dev/null
+++ b/app/src/main/java/org/apache/taverna/mobile/ui/userprofile/UserProfileFragment.java
@@ -0,0 +1,141 @@
+package org.apache.taverna.mobile.ui.userprofile;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import com.bumptech.glide.Glide;
+import com.bumptech.glide.load.engine.DiskCacheStrategy;
+import com.bumptech.glide.load.resource.drawable.GlideDrawable;
+import com.bumptech.glide.request.animation.GlideAnimation;
+import com.bumptech.glide.request.target.SimpleTarget;
+
+import org.apache.taverna.mobile.R;
+import org.apache.taverna.mobile.data.DataManager;
+import org.apache.taverna.mobile.data.local.PreferencesHelper;
+import org.apache.taverna.mobile.ui.favouriteworkflow.FavouriteWorkflowsActivity;
+import org.apache.taverna.mobile.ui.myworkflows.MyWorkflowsActivity;
+
+import butterknife.BindView;
+import butterknife.ButterKnife;
+import butterknife.OnClick;
+import de.hdodenhof.circleimageview.CircleImageView;
+
+public class UserProfileFragment extends Fragment {
+
+    @BindView(R.id.user_name)
+    TextView mUserName;
+
+    @BindView(R.id.user_avatar)
+    CircleImageView mUserAvatar;
+
+    @BindView(R.id.user_email)
+    TextView mUserEmail;
+
+    @BindView(R.id.user_website)
+    TextView mUserWebsite;
+
+    @BindView(R.id.user_description)
+    TextView mUserDescription;
+
+    @BindView(R.id.user_city)
+    TextView mUserCity;
+
+    @BindView(R.id.user_country)
+    TextView mUserCountry;
+
+    private DataManager dataManager;
+
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {
+        return inflater.inflate(R.layout.fragment_user_profile, parent, false);
+
+    }
+
+    @Override
+    public void onViewCreated(View view, Bundle savedInstanceState) {
+        ButterKnife.bind(this, view);
+
+        setUserDetail();
+
+    }
+
+    @OnClick(R.id.my_workflow_layout)
+    void myWorkflows(View v) {
+        Intent intent = new Intent(getActivity(), MyWorkflowsActivity.class);
+        getActivity().startActivity(intent);
+    }
+
+    @OnClick(R.id.my_favorite_workflow_layout)
+    void myFavoriteWorkflow(View v) {
+        Intent intent = new Intent(getActivity(), FavouriteWorkflowsActivity.class);
+        getActivity().startActivity(intent);
+    }
+
+    private void setUserDetail() {
+
+        dataManager = new DataManager(new PreferencesHelper(getContext()));
+
+        String userName = dataManager.getPreferencesHelper().getUserName();
+        String userDescription = dataManager.getPreferencesHelper().getUserDescription();
+        String userEmail = dataManager.getPreferencesHelper().getUserEmail();
+        String userWebsite = dataManager.getPreferencesHelper().getUserWebsite();
+        String userCity = dataManager.getPreferencesHelper().getUserCity();
+        String userCountry = dataManager.getPreferencesHelper().getUserCountry();
+
+        String avatarUrl = dataManager.getPreferencesHelper().getUserAvatarUrl();
+        Glide.with(getContext())
+                .load(avatarUrl)
+                .diskCacheStrategy(DiskCacheStrategy.SOURCE)
+                .placeholder(R.drawable.ic_account_circle_black_24dp)
+                .error(R.drawable.ic_account_circle_black_24dp)
+                .into(new SimpleTarget<GlideDrawable>() {
+                    @Override
+                    public void onResourceReady(GlideDrawable resource, GlideAnimation<? super
+                            GlideDrawable> glideAnimation) {
+                        mUserAvatar.setImageDrawable(resource);
+                    }
+                });
+
+        if (userName != null) {
+            mUserName.setText(userName);
+        } else {
+            mUserName.setText(R.string.empty_fields);
+        }
+
+        if (userDescription != null) {
+            userDescription = android.text.Html.fromHtml(userDescription).toString();
+            mUserDescription.setText(userDescription);
+        } else {
+            mUserDescription.setText("");
+        }
+
+        if (userEmail != null) {
+            mUserEmail.setText(userEmail);
+        } else {
+            mUserEmail.setText(R.string.empty_fields);
+        }
+
+        if (userWebsite != null) {
+            mUserWebsite.setText(userWebsite);
+        } else {
+            mUserWebsite.setText(R.string.empty_fields);
+        }
+
+        if (userCity != null) {
+            mUserCity.setText(userCity);
+        } else {
+            mUserCity.setText(R.string.empty_fields);
+        }
+
+        if (userCountry != null) {
+            mUserCountry.setText(userCountry);
+        } else {
+            mUserCountry.setText(R.string.empty_fields);
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/e072d3ba/app/src/main/res/drawable/ic_account_circle_black_24dp.xml
----------------------------------------------------------------------
diff --git a/app/src/main/res/drawable/ic_account_circle_black_24dp.xml b/app/src/main/res/drawable/ic_account_circle_black_24dp.xml
new file mode 100644
index 0000000..fe5e925
--- /dev/null
+++ b/app/src/main/res/drawable/ic_account_circle_black_24dp.xml
@@ -0,0 +1,9 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportWidth="24.0"
+        android:viewportHeight="24.0">
+    <path
+        android:fillColor="#ffffff"
+        android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM12,5c1.66,0 3,1.34 3,3s-1.34,3 -3,3 -3,-1.34 -3,-3 1.34,-3 3,-3zM12,19.2c-2.5,0 -4.71,-1.28 -6,-3.22 0.03,-1.99 4,-3.08 6,-3.08 1.99,0 5.97,1.09 6,3.08 -1.29,1.94 -3.5,3.22 -6,3.22z"/>
+</vector>

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/e072d3ba/app/src/main/res/drawable/ic_email_black_24dp.xml
----------------------------------------------------------------------
diff --git a/app/src/main/res/drawable/ic_email_black_24dp.xml b/app/src/main/res/drawable/ic_email_black_24dp.xml
new file mode 100644
index 0000000..ce97ab8
--- /dev/null
+++ b/app/src/main/res/drawable/ic_email_black_24dp.xml
@@ -0,0 +1,9 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportWidth="24.0"
+        android:viewportHeight="24.0">
+    <path
+        android:fillColor="#FF000000"
+        android:pathData="M20,4L4,4c-1.1,0 -1.99,0.9 -1.99,2L2,18c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2L22,6c0,-1.1 -0.9,-2 -2,-2zM20,8l-8,5 -8,-5L4,6l8,5 8,-5v2z"/>
+</vector>

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/e072d3ba/app/src/main/res/drawable/ic_keyboard_arrow_right_black_24dp.xml
----------------------------------------------------------------------
diff --git a/app/src/main/res/drawable/ic_keyboard_arrow_right_black_24dp.xml b/app/src/main/res/drawable/ic_keyboard_arrow_right_black_24dp.xml
new file mode 100644
index 0000000..a3d1622
--- /dev/null
+++ b/app/src/main/res/drawable/ic_keyboard_arrow_right_black_24dp.xml
@@ -0,0 +1,9 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportWidth="24.0"
+        android:viewportHeight="24.0">
+    <path
+        android:fillColor="#FF000000"
+        android:pathData="M8.59,16.34l4.58,-4.59 -4.58,-4.59L10,5.75l6,6 -6,6z"/>
+</vector>

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/e072d3ba/app/src/main/res/drawable/ic_language_black_24dp.xml
----------------------------------------------------------------------
diff --git a/app/src/main/res/drawable/ic_language_black_24dp.xml b/app/src/main/res/drawable/ic_language_black_24dp.xml
new file mode 100644
index 0000000..d07324c
--- /dev/null
+++ b/app/src/main/res/drawable/ic_language_black_24dp.xml
@@ -0,0 +1,9 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportWidth="24.0"
+        android:viewportHeight="24.0">
+    <path
+        android:fillColor="#FF000000"
+        android:pathData="M11.99,2C6.47,2 2,6.48 2,12s4.47,10 9.99,10C17.52,22 22,17.52 22,12S17.52,2 11.99,2zM18.92,8h-2.95c-0.32,-1.25 -0.78,-2.45 -1.38,-3.56 1.84,0.63 3.37,1.91 4.33,3.56zM12,4.04c0.83,1.2 1.48,2.53 1.91,3.96h-3.82c0.43,-1.43 1.08,-2.76 1.91,-3.96zM4.26,14C4.1,13.36 4,12.69 4,12s0.1,-1.36 0.26,-2h3.38c-0.08,0.66 -0.14,1.32 -0.14,2 0,0.68 0.06,1.34 0.14,2L4.26,14zM5.08,16h2.95c0.32,1.25 0.78,2.45 1.38,3.56 -1.84,-0.63 -3.37,-1.9 -4.33,-3.56zM8.03,8L5.08,8c0.96,-1.66 2.49,-2.93 4.33,-3.56C8.81,5.55 8.35,6.75 8.03,8zM12,19.96c-0.83,-1.2 -1.48,-2.53 -1.91,-3.96h3.82c-0.43,1.43 -1.08,2.76 -1.91,3.96zM14.34,14L9.66,14c-0.09,-0.66 -0.16,-1.32 -0.16,-2 0,-0.68 0.07,-1.35 0.16,-2h4.68c0.09,0.65 0.16,1.32 0.16,2 0,0.68 -0.07,1.34 -0.16,2zM14.59,19.56c0.6,-1.11 1.06,-2.31 1.38,-3.56h2.95c-0.96,1.65 -2.49,2.93 -4.33,3.56zM16.36,14c0.08,-0.66 0.14,-1.32 0.14,-2 0,-0.68 -0.06,-1.34 -0.14,-2h3.38c0.16,0.64 0.26,1.31 0.26,2s-0.1,1.36 -0.26,2h-3.38z"/>
+</vector>

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/e072d3ba/app/src/main/res/drawable/ic_location_city_black_24dp.xml
----------------------------------------------------------------------
diff --git a/app/src/main/res/drawable/ic_location_city_black_24dp.xml b/app/src/main/res/drawable/ic_location_city_black_24dp.xml
new file mode 100644
index 0000000..a7c688f
--- /dev/null
+++ b/app/src/main/res/drawable/ic_location_city_black_24dp.xml
@@ -0,0 +1,9 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportWidth="24.0"
+        android:viewportHeight="24.0">
+    <path
+        android:fillColor="#FF000000"
+        android:pathData="M15,11L15,5l-3,-3 -3,3v2L3,7v14h18L21,11h-6zM7,19L5,19v-2h2v2zM7,15L5,15v-2h2v2zM7,11L5,11L5,9h2v2zM13,19h-2v-2h2v2zM13,15h-2v-2h2v2zM13,11h-2L11,9h2v2zM13,7h-2L11,5h2v2zM19,19h-2v-2h2v2zM19,15h-2v-2h2v2z"/>
+</vector>

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/e072d3ba/app/src/main/res/drawable/ic_location_on_black_24dp.xml
----------------------------------------------------------------------
diff --git a/app/src/main/res/drawable/ic_location_on_black_24dp.xml b/app/src/main/res/drawable/ic_location_on_black_24dp.xml
new file mode 100644
index 0000000..e3291a9
--- /dev/null
+++ b/app/src/main/res/drawable/ic_location_on_black_24dp.xml
@@ -0,0 +1,9 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportWidth="24.0"
+        android:viewportHeight="24.0">
+    <path
+        android:fillColor="#FF000000"
+        android:pathData="M12,2C8.13,2 5,5.13 5,9c0,5.25 7,13 7,13s7,-7.75 7,-13c0,-3.87 -3.13,-7 -7,-7zM12,11.5c-1.38,0 -2.5,-1.12 -2.5,-2.5s1.12,-2.5 2.5,-2.5 2.5,1.12 2.5,2.5 -1.12,2.5 -2.5,2.5z"/>
+</vector>

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/e072d3ba/app/src/main/res/drawable/ic_storage_black_24dp.xml
----------------------------------------------------------------------
diff --git a/app/src/main/res/drawable/ic_storage_black_24dp.xml b/app/src/main/res/drawable/ic_storage_black_24dp.xml
new file mode 100644
index 0000000..53c595c
--- /dev/null
+++ b/app/src/main/res/drawable/ic_storage_black_24dp.xml
@@ -0,0 +1,9 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportWidth="24.0"
+        android:viewportHeight="24.0">
+    <path
+        android:fillColor="#FF000000"
+        android:pathData="M2,20h20v-4L2,16v4zM4,17h2v2L4,19v-2zM2,4v4h20L22,4L2,4zM6,7L4,7L4,5h2v2zM2,14h20v-4L2,10v4zM4,11h2v2L4,13v-2z"/>
+</vector>

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/e072d3ba/app/src/main/res/drawable/nav_header.png
----------------------------------------------------------------------
diff --git a/app/src/main/res/drawable/nav_header.png b/app/src/main/res/drawable/nav_header.png
new file mode 100644
index 0000000..312c5b5
Binary files /dev/null and b/app/src/main/res/drawable/nav_header.png differ

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/e072d3ba/app/src/main/res/layout/activity_favourite_workflows.xml
----------------------------------------------------------------------
diff --git a/app/src/main/res/layout/activity_favourite_workflows.xml b/app/src/main/res/layout/activity_favourite_workflows.xml
new file mode 100644
index 0000000..4dbe6b7
--- /dev/null
+++ b/app/src/main/res/layout/activity_favourite_workflows.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You 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.
+-->
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical">
+
+    <include layout="@layout/appbar"/>
+
+    <FrameLayout
+        android:id="@+id/frame_container"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"/>
+
+</LinearLayout>
+
+

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/e072d3ba/app/src/main/res/layout/activity_my_workflows.xml
----------------------------------------------------------------------
diff --git a/app/src/main/res/layout/activity_my_workflows.xml b/app/src/main/res/layout/activity_my_workflows.xml
new file mode 100644
index 0000000..4dbe6b7
--- /dev/null
+++ b/app/src/main/res/layout/activity_my_workflows.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You 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.
+-->
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical">
+
+    <include layout="@layout/appbar"/>
+
+    <FrameLayout
+        android:id="@+id/frame_container"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"/>
+
+</LinearLayout>
+
+

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/e072d3ba/app/src/main/res/layout/activity_user_profile.xml
----------------------------------------------------------------------
diff --git a/app/src/main/res/layout/activity_user_profile.xml b/app/src/main/res/layout/activity_user_profile.xml
new file mode 100644
index 0000000..1c42c37
--- /dev/null
+++ b/app/src/main/res/layout/activity_user_profile.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You 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.
+-->
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical">
+
+    <include layout="@layout/appbar"/>
+
+    <FrameLayout
+        android:id="@+id/frame_container"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"/>
+
+</LinearLayout>

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/e072d3ba/app/src/main/res/layout/fragment_user_profile.xml
----------------------------------------------------------------------
diff --git a/app/src/main/res/layout/fragment_user_profile.xml b/app/src/main/res/layout/fragment_user_profile.xml
new file mode 100644
index 0000000..af19b7d
--- /dev/null
+++ b/app/src/main/res/layout/fragment_user_profile.xml
@@ -0,0 +1,317 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You 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.
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:orientation="vertical">
+
+    <android.support.v4.widget.NestedScrollView
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="vertical">
+
+            <RelativeLayout
+                android:layout_width="match_parent"
+                android:layout_height="@dimen/top_background_height"
+                android:orientation="vertical"
+                android:background="@color/colorPrimary"
+                android:gravity="center_vertical">
+
+                <de.hdodenhof.circleimageview.CircleImageView
+                    android:id="@+id/user_avatar"
+                    android:layout_width="@dimen/user_image_height"
+                    android:layout_height="@dimen/user_image_height"
+                    android:layout_centerHorizontal="true"
+                    android:layout_centerVertical="true"
+                    android:layout_centerInParent="true"
+                    android:layout_alignParentTop="true"
+                    app:civ_border_color="@color/white"/>
+
+                <TextView
+                    android:id="@+id/user_name"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="@string/user_name"
+                    android:textColor="@color/white"
+                    android:textSize="@dimen/user_name_text_size"
+                    android:layout_below="@+id/user_avatar"
+                    android:layout_centerHorizontal="true"
+                    android:layout_marginTop="@dimen/user_name_margin_top"/>
+
+                <TextView
+                    android:id="@+id/user_description"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:textAlignment="center"
+                    android:gravity="center"
+                    android:layout_below="@id/user_name"
+                    android:layout_marginTop="@dimen/user_description_margin_top"
+                    android:textColor="@color/white"/>
+
+            </RelativeLayout>
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:orientation="vertical">
+
+                <LinearLayout
+                    android:id="@+id/email_layout"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:orientation="horizontal">
+
+                    <LinearLayout
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_weight="1"
+                        android:padding="@dimen/coloumn_linear_layout_padding"
+                        android:orientation="horizontal">
+
+                        <ImageView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:src="@drawable/ic_email_black_24dp"/>
+
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:text="@string/user_email"
+                            android:textColor="@color/colorBlack"
+                            android:textSize="@dimen/row_title_text_size"
+                            android:layout_marginLeft="@dimen/row_title_margin_left"
+                            android:layout_gravity="center"/>
+
+                    </LinearLayout>
+
+                    <TextView
+                        android:id="@+id/user_email"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:textSize="@dimen/row_entry_text_size"
+                        android:layout_gravity="center_vertical"
+                        android:paddingRight="@dimen/row_entry_padding_right"/>
+
+                </LinearLayout>
+
+                <LinearLayout
+                    android:id="@+id/website_layout"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:orientation="horizontal">
+
+                    <LinearLayout
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_weight="1"
+                        android:padding="@dimen/coloumn_linear_layout_padding"
+                        android:orientation="horizontal">
+
+                        <ImageView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:src="@drawable/ic_language_black_24dp"/>
+
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:text="@string/user_website"
+                            android:textColor="@color/colorBlack"
+                            android:textSize="@dimen/row_title_text_size"
+                            android:layout_marginLeft="@dimen/row_title_margin_left"
+                            android:layout_gravity="center"/>
+
+                    </LinearLayout>
+
+                    <TextView
+                        android:id="@+id/user_website"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:textSize="@dimen/row_entry_text_size"
+                        android:layout_gravity="center_vertical"
+                        android:paddingRight="@dimen/row_entry_padding_right"/>
+
+                </LinearLayout>
+
+                <LinearLayout
+                    android:id="@+id/city_layout"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:orientation="horizontal">
+
+                    <LinearLayout
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_weight="1"
+                        android:padding="@dimen/coloumn_linear_layout_padding"
+                        android:orientation="horizontal">
+
+                        <ImageView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:src="@drawable/ic_location_city_black_24dp"/>
+
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:text="@string/user_city"
+                            android:textColor="@color/colorBlack"
+                            android:textSize="@dimen/row_title_text_size"
+                            android:layout_marginLeft="@dimen/row_title_margin_left"
+                            android:layout_gravity="center"/>
+
+                    </LinearLayout>
+
+                    <TextView
+                        android:id="@+id/user_city"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:textSize="@dimen/row_entry_text_size"
+                        android:layout_gravity="center_vertical"
+                        android:paddingRight="@dimen/row_entry_padding_right"/>
+
+                </LinearLayout>
+
+                <LinearLayout
+                    android:id="@+id/country_layout"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:orientation="horizontal">
+
+                    <LinearLayout
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_weight="1"
+                        android:padding="@dimen/coloumn_linear_layout_padding"
+                        android:orientation="horizontal">
+
+                        <ImageView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:src="@drawable/ic_location_on_black_24dp"/>
+
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:text="@string/user_country"
+                            android:textColor="@color/colorBlack"
+                            android:textSize="@dimen/row_title_text_size"
+                            android:layout_marginLeft="@dimen/row_title_margin_left"
+                            android:layout_gravity="center"/>
+
+                    </LinearLayout>
+
+                    <TextView
+                        android:id="@+id/user_country"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:textSize="@dimen/row_entry_text_size"
+                        android:layout_gravity="center_vertical"
+                        android:paddingRight="@dimen/row_entry_padding_right"/>
+
+                </LinearLayout>
+
+                <LinearLayout
+                    android:id="@+id/my_workflow_layout"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:orientation="horizontal">
+
+                    <LinearLayout
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_weight="1"
+                        android:padding="@dimen/coloumn_linear_layout_padding"
+                        android:orientation="horizontal">
+
+                        <ImageView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:src="@drawable/ic_storage_black_24dp"/>
+
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:text="@string/user_my_workflow"
+                            android:textColor="@color/colorBlack"
+                            android:textSize="@dimen/row_title_text_size"
+                            android:layout_marginLeft="@dimen/row_title_margin_left"
+                            android:layout_gravity="center" />
+
+                    </LinearLayout>
+
+                    <ImageView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_gravity="center_vertical"
+                        android:paddingRight="@dimen/row_entry_padding_right"
+                        android:src="@drawable/ic_keyboard_arrow_right_black_24dp"/>
+
+                </LinearLayout>
+
+                <LinearLayout
+                    android:id="@+id/my_favorite_workflow_layout"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:orientation="horizontal">
+
+                    <LinearLayout
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_weight="1"
+                        android:padding="@dimen/coloumn_linear_layout_padding"
+                        android:orientation="horizontal">
+
+                        <ImageView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:src="@drawable/ic_star_black_24dp"/>
+
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:text="@string/user_my_favorite_workflow"
+                            android:textColor="@color/colorBlack"
+                            android:textSize="@dimen/row_title_text_size"
+                            android:layout_marginLeft="@dimen/row_title_margin_left"
+                            android:layout_gravity="center"/>
+
+                    </LinearLayout>
+
+                    <ImageView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_gravity="center_vertical"
+                        android:paddingRight="@dimen/row_entry_padding_right"
+                        android:src="@drawable/ic_keyboard_arrow_right_black_24dp"/>
+
+                </LinearLayout>
+
+            </LinearLayout>
+
+        </LinearLayout>
+
+    </android.support.v4.widget.NestedScrollView>
+</LinearLayout>
+
+

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/e072d3ba/app/src/main/res/layout/nav_header.xml
----------------------------------------------------------------------
diff --git a/app/src/main/res/layout/nav_header.xml b/app/src/main/res/layout/nav_header.xml
index e31a687..ebefb1d 100644
--- a/app/src/main/res/layout/nav_header.xml
+++ b/app/src/main/res/layout/nav_header.xml
@@ -1,35 +1,65 @@
+<?xml version="1.0" encoding="utf-8"?>
 <!--
-Apache Taverna Mobile
-Copyright 2015 The Apache Software Foundation
-This product includes software developed at
-The Apache Software Foundation (http://www.apache.org/).
-
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements. See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You 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.
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You 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.
 -->
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+	android:layout_width="match_parent"
+	android:layout_height="@dimen/nav_image_height"
+	xmlns:app="http://schemas.android.com/apk/res-auto"
+	android:background="@drawable/nav_header"
+	android:orientation="vertical"
+	android:weightSum="1">
+
 <LinearLayout
-	xmlns:android="http://schemas.android.com/apk/res/android"
-	xmlns:tools="http://schemas.android.com/tools"
 	android:layout_width="match_parent"
-	android:layout_height="match_parent"
+	android:layout_height="wrap_content"
 	android:orientation="vertical"
-	android:background="#ccc">
+	android:layout_alignParentBottom="true"
+	android:layout_alignParentLeft="true"
+	android:layout_alignParentStart="true"
+	android:layout_marginBottom="@dimen/layout_marginBottom">
 
-	<LinearLayout
-		android:orientation="vertical"
-		android:layout_width="match_parent"
+	<TextView
+		android:id="@+id/nav_user_name"
+		android:layout_width="wrap_content"
 		android:layout_height="wrap_content"
-		android:background="@drawable/sliding_header">
-	</LinearLayout>
+		android:layout_marginLeft="@dimen/tv_layout_marginLeft"
+		android:textColor="@color/white"
+		android:text="@string/username"
+		android:textSize="@dimen/tv_textSize"
+		android:textStyle="bold"/>
+
+	<TextView
+		android:id="@+id/nav_user_email"
+		android:layout_width="wrap_content"
+		android:layout_height="wrap_content"
+		android:textColor="@color/white"
+		android:layout_marginLeft="@dimen/tv_layout_marginLeft"
+		android:text="@string/email"
+		android:textSize="@dimen/tv_textSize"
+		android:textStyle="normal"/>
+
+</LinearLayout>
+
+	<de.hdodenhof.circleimageview.CircleImageView
+		android:id="@+id/nav_user_avatar"
+		android:layout_width="@dimen/user_image_length"
+		android:layout_height="@dimen/user_image_length"
+		android:layout_marginLeft="@dimen/user_image_margin_left"
+		android:layout_marginTop="@dimen/user_image_margin_top"
+		app:civ_border_color="@color/white"/>
 
-</LinearLayout>
\ No newline at end of file
+</RelativeLayout>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/e072d3ba/app/src/main/res/values/dimens.xml
----------------------------------------------------------------------
diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml
index 9b33606..188c177 100644
--- a/app/src/main/res/values/dimens.xml
+++ b/app/src/main/res/values/dimens.xml
@@ -99,4 +99,25 @@ limitations under the License.
     <dimen name="margin_top">20dp</dimen>
     <dimen name="tutorialView_height">1dp</dimen>
 
+    <!-- User Profile Dimens -->
+   <dimen name="top_background_height">170dp</dimen>
+    <dimen name="user_image_height">90dp</dimen>
+    <dimen name="user_name_text_size">20dp</dimen>
+    <dimen name="user_name_margin_top">5dp</dimen>
+    <dimen name="user_description_margin_top">10dp</dimen>
+    <dimen name="coloumn_linear_layout_padding">15dp</dimen>
+    <dimen name="row_title_text_size">15dp</dimen>
+    <dimen name="row_title_margin_left">10dp</dimen>
+    <dimen name="row_entry_text_size">13dp</dimen>
+    <dimen name="row_entry_padding_right">20dp</dimen>
+
+    <!-- Navigation Header Dimens -->
+    <dimen name="nav_image_height">170dp</dimen>
+    <dimen name="layout_marginBottom">10dp</dimen>
+    <dimen name="tv_layout_marginLeft">16dp</dimen>
+    <dimen name="tv_textSize">14sp</dimen>
+    <dimen name="user_image_length">70dp</dimen>
+    <dimen name="user_image_margin_left">10dp</dimen>
+    <dimen name="user_image_margin_top">55dp</dimen>
+
 </resources>

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/e072d3ba/app/src/main/res/values/strings.xml
----------------------------------------------------------------------
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 3f42bba..21b6953 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -44,6 +44,7 @@ limitations under the License.
 
     <string name="title_explore">Workflows</string>
     <string name="title_usage">Usage</string>
+    <string name="title_user_profile">Profile</string>
     <string name="title_about">About</string>
     <string name="title_exit">Logout</string>
     <string name="menu_search">Search</string>
@@ -107,8 +108,7 @@ limitations under the License.
         The Apache Software Foundation, Licensed under the Apache License, Version 2.0.
     </string>
     <string name="about2">View, run and download workflows on your Android mobile device.</string>
-    <string name="about3">Originally developed during Google Summer of Code 2015 for the<a
-        href="http://taverna.incubator.apache.org">Apache Taverna project</a>.
+    <string name="about3">Originally developed during Google Summer of Code 2015 for the<a href="http://taverna.incubator.apache.org">Apache Taverna project</a>.
     </string>
     <string name="pref_category_title_player_config">Configure Player Account</string>
     <string name="pref_summary_player_user">Username used to login to Taverna player portal</string>
@@ -187,8 +187,6 @@ limitations under the License.
     <string name="sign_out">Sign Out</string>
     <string name="sign_out_message">Do you really want to sign out?</string>
 
-
-
     <string name="title_activity_settings">Settings</string>
 
     <!-- Strings related to Settings -->
@@ -237,11 +235,22 @@ limitations under the License.
     <string name="start">GOT IT</string>
 
     <string name="slide_1_title">Login</string>
-
     <string name="slide_2_title">Dashboard</string>
-
     <string name="slide_3_title">Workflow</string>
-
     <string name="slide_4_title">Menus</string>
 
+    <!-- Nav Header placeholders -->
+    <string name="username">Username</string>
+    <string name="email">Email</string>
+
+    <!-- User profile column titles -->
+    <string name="empty_fields">&lt;NA&gt;</string>
+    <string name="user_name">Username</string>
+    <string name="user_email">Email</string>
+    <string name="user_website">Website</string>
+    <string name="user_city">City</string>
+    <string name="user_country">Country</string>
+    <string name="user_my_workflow">My Workflow</string>
+    <string name="user_my_favorite_workflow">Favorite Workflows</string>
+
 </resources>


[2/2] incubator-taverna-mobile git commit: This Close #78

Posted by sa...@apache.org.
This Close #78


Project: http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/commit/eff63517
Tree: http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/tree/eff63517
Diff: http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/diff/eff63517

Branch: refs/heads/master
Commit: eff6351775d36c0349446665e61f67b714f07158
Parents: f997f57 e072d3b
Author: Sagar <ku...@gmail.com>
Authored: Tue Jun 5 20:10:21 2018 +0530
Committer: Sagar <ku...@gmail.com>
Committed: Tue Jun 5 20:10:21 2018 +0530

----------------------------------------------------------------------
 app/build.gradle                                |   1 +
 app/src/main/AndroidManifest.xml                |   5 +-
 .../mobile/data/local/PreferencesHelper.java    |   2 +-
 .../taverna/mobile/ui/DashboardActivity.java    |  54 +++-
 .../FavouriteWorkflowsActivity.java             |  60 ++++
 .../ui/myworkflows/MyWorkflowsActivity.java     |  60 ++++
 .../ui/userprofile/UserProfileActivity.java     |  71 +++++
 .../ui/userprofile/UserProfileFragment.java     | 141 +++++++++
 .../drawable/ic_account_circle_black_24dp.xml   |   9 +
 .../main/res/drawable/ic_email_black_24dp.xml   |   9 +
 .../ic_keyboard_arrow_right_black_24dp.xml      |   9 +
 .../res/drawable/ic_language_black_24dp.xml     |   9 +
 .../drawable/ic_location_city_black_24dp.xml    |   9 +
 .../res/drawable/ic_location_on_black_24dp.xml  |   9 +
 .../main/res/drawable/ic_storage_black_24dp.xml |   9 +
 app/src/main/res/drawable/nav_header.png        | Bin 0 -> 74018 bytes
 .../res/layout/activity_favourite_workflows.xml |  33 ++
 .../main/res/layout/activity_my_workflows.xml   |  33 ++
 .../main/res/layout/activity_user_profile.xml   |  31 ++
 .../main/res/layout/fragment_user_profile.xml   | 317 +++++++++++++++++++
 app/src/main/res/layout/nav_header.xml          |  84 +++--
 app/src/main/res/values/dimens.xml              |  21 ++
 app/src/main/res/values/strings.xml             |  23 +-
 23 files changed, 961 insertions(+), 38 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/eff63517/app/src/main/res/values/dimens.xml
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/eff63517/app/src/main/res/values/strings.xml
----------------------------------------------------------------------