diff --git a/.gitignore b/.gitignore
index eca7ba438..b139ba88d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,129 +1,33 @@
-*/target
-target
-tmp
-*~
-bin
-*/test-output
-temp-testng-customsuite.xml
-**pom.xml.releaseBackup
-release.properties
-gen
-*/seed.txt
-notes
-logs
-gen-external-apklibs
-.idea
-*.iml
-.DS_Store
-*.swp
-out
-.gradle
-/local.properties
-/build
-
-###OSX###
-
-.DS_Store
-.AppleDouble
-.LSOverride
-
-# Icon must ends with two \r.
-Icon
-
-
-# Thumbnails
-._*
-
-# Files that might appear on external disk
-.Spotlight-V100
-.Trashes
-
-
-###Linux###
-
-*~
-
-# KDE directory preferences
-.directory
-
-
-###Android###
-
-# Built application files
+#built application files
*.apk
*.ap_
-# Files for ART and Dalvik VM
+# files for the dex VM
*.dex
# Java class files
*.class
-# Generated files
+# generated files
bin/
gen/
-# Gradle files
-.gradle/
-.gradletasknamecache
-build/
-
# Local configuration file (sdk path, etc)
local.properties
-# Proguard folder generated by Eclipse
-proguard/
-
-# Lint
-lint-report.html
-lint-report_files/
-lint_result.txt
-
-# Mobile Tools for Java (J2ME)
-.mtj.tmp/
-
-# Package Files #
-*.war
-*.ear
-
-# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
-hs_err_pid*
+# Windows thumbnail db
+Thumbs.db
+# OSX files
+.DS_Store
-###IntelliJ###
+# Eclipse project files
+.classpath
+.project
+# Android Studio
*.iml
-*.ipr
-*.iws
-.idea/
-
-
-###Eclipse###
-
-*.pydevproject
-.metadata
-tmp/
-*.tmp
-*.bak
-*.swp
-*~.nib
-.settings/
-.loadpath
-
-# External tool builders
-.externalToolBuilders/
-
-# Locally stored "Eclipse launch configurations"
-*.launch
-
-# CDT-specific
-.cproject
-
-# PDT-specific
-.buildpath
-
-# sbteclipse plugin
-.target
-
-# TeXlipse plugin
-.texlipse
+.idea
+#.idea/workspace.xml - remove # and delete .idea if it better suit your needs.
+.gradle
+build/
\ No newline at end of file
diff --git a/app/AndroidManifest.xml b/app/AndroidManifest.xml
index f89d56f60..4098cd2a0 100644
--- a/app/AndroidManifest.xml
+++ b/app/AndroidManifest.xml
@@ -11,6 +11,7 @@
+
+
\ No newline at end of file
diff --git a/app/res/values/strings.xml b/app/res/values/strings.xml
index afb0b9dbf..be0492914 100644
--- a/app/res/values/strings.xml
+++ b/app/res/values/strings.xml
@@ -302,4 +302,7 @@
Repository is deleted
Login or Email
+
+ Upload Photo
+
diff --git a/app/src/main/java/com/github/mobile/ui/NavigationDrawerFragment.java b/app/src/main/java/com/github/mobile/ui/NavigationDrawerFragment.java
index 22719f1d8..c251ff4ba 100644
--- a/app/src/main/java/com/github/mobile/ui/NavigationDrawerFragment.java
+++ b/app/src/main/java/com/github/mobile/ui/NavigationDrawerFragment.java
@@ -3,19 +3,27 @@
import android.app.Activity;
import android.content.Context;
+import android.content.Intent;
import android.content.SharedPreferences;
import android.content.res.Configuration;
+import android.database.Cursor;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
import android.graphics.Point;
+import android.net.Uri;
import android.os.Bundle;
import android.preference.PreferenceManager;
+import android.provider.MediaStore;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBarDrawerToggle;
+import android.view.ContextMenu;
import android.view.Display;
import android.view.LayoutInflater;
+import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
@@ -24,6 +32,7 @@
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
+import android.widget.Toast;
import com.github.mobile.R;
import com.github.mobile.util.AvatarLoader;
@@ -50,6 +59,9 @@ public class NavigationDrawerFragment extends Fragment implements AdapterView.On
private TextView userRealName;
private TextView userName;
+ private int PICK_IMAGE_REQUEST = 1;
+ private String mCurrentPhotoPath;
+
public NavigationDrawerFragment() {
}
@@ -87,6 +99,33 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa
return inflater.inflate(R.layout.fragment_navigation_drawer, container, false);
}
+ //created a floating menu
+ @Override
+ public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
+ super.onCreateContextMenu(menu, v, menuInfo);
+ MenuInflater inflater;
+ inflater = getActivity().getMenuInflater();
+ inflater.inflate(R.menu.floating_context_menu, menu);
+ }
+
+ @Override
+ public boolean onContextItemSelected(MenuItem item) {
+ switch (item.getItemId()) {
+ case R.id.id_upload_image:
+ Intent intent = new Intent();
+// Show only images, no videos or anything else
+ intent.setType("image/*");
+ intent.setAction(Intent.ACTION_GET_CONTENT);
+// Always show the chooser (if there are multiple options available)
+ startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE_REQUEST);
+ return true;
+
+ default:
+ return super.onContextItemSelected(item);
+ }
+ }
+
+
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
@@ -99,7 +138,7 @@ public boolean isDrawerOpen() {
}
public void setUp(int fragmentId, DrawerLayout drawerLayout, NavigationDrawerAdapter adapter, AvatarLoader avatar,
- User user) {
+ User user) {
mFragmentContainerView = getActivity().findViewById(fragmentId);
mDrawerLayout = drawerLayout;
//mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);
@@ -109,7 +148,11 @@ public void setUp(int fragmentId, DrawerLayout drawerLayout, NavigationDrawerAda
View header = getActivity().getLayoutInflater().inflate(R.layout.drawer_header, mDrawerListView, false);
+ //adding a context menu on user image icon
userImage = (ImageView) header.findViewById(R.id.user_picture);
+ registerForContextMenu(userImage);
+
+
userRealName = (TextView) header.findViewById(R.id.user_real_name);
userName = (TextView) header.findViewById(R.id.user_name);
@@ -132,9 +175,9 @@ public void setUp(int fragmentId, DrawerLayout drawerLayout, NavigationDrawerAda
actionBar.setHomeButtonEnabled(true);
mDrawerToggle = new ActionBarDrawerToggle(
- getActivity(), mDrawerLayout,
- R.string.navigation_drawer_open,
- R.string.navigation_drawer_close) {
+ getActivity(), mDrawerLayout,
+ R.string.navigation_drawer_open,
+ R.string.navigation_drawer_close) {
@Override
public void onDrawerClosed(View drawerView) {
super.onDrawerClosed(drawerView);
@@ -145,6 +188,7 @@ public void onDrawerClosed(View drawerView) {
getActivity().supportInvalidateOptionsMenu();
}
+
@Override
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
@@ -155,7 +199,7 @@ public void onDrawerOpened(View drawerView) {
if (!mUserLearnedDrawer) {
mUserLearnedDrawer = true;
SharedPreferences sp = PreferenceManager
- .getDefaultSharedPreferences(getActivity());
+ .getDefaultSharedPreferences(getActivity());
sp.edit().putBoolean(PREF_USER_LEARNED_DRAWER, true).apply();
}
@@ -207,6 +251,46 @@ public void onSaveInstanceState(Bundle outState) {
outState.putInt(STATE_SELECTED_POSITION, mCurrentSelectedPosition);
}
+ //Result activity
+
+ public void onActivityResult(int requestCode, int resultCode, Intent data) {
+ if (requestCode == 1) {
+ if (requestCode == PICK_IMAGE_REQUEST && resultCode == Activity.RESULT_OK) {
+ Bundle extras = data.getExtras();
+ Bitmap imageBitmap = (Bitmap) extras.get("data");
+ setPic();
+ userImage.setImageBitmap(imageBitmap);
+
+ }gi
+
+ }
+ }
+
+ // Scale user Image Icon
+ public void setPic() {
+ // Get the dimensions of the View
+ int targetW = userImage.getWidth();
+ int targetH = userImage.getHeight();
+
+ // Get the dimensions of the bitmap
+ BitmapFactory.Options bmOptions = new BitmapFactory.Options();
+ bmOptions.inJustDecodeBounds = true;
+ BitmapFactory.decodeFile(mCurrentPhotoPath, bmOptions);
+ int photoW = bmOptions.outWidth;
+ int photoH = bmOptions.outHeight;
+
+ // Determine how much to scale down the image
+ int scaleFactor = Math.min(photoW/targetW, photoH/targetH);
+
+ // Decode the image file into a Bitmap sized to fill the View
+ bmOptions.inJustDecodeBounds = false;
+ bmOptions.inSampleSize = scaleFactor;
+ bmOptions.inPurgeable = true;
+
+ Bitmap bitmap = BitmapFactory.decodeFile(mCurrentPhotoPath, bmOptions);
+ userImage.setImageBitmap(bitmap);
+ }
+
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
@@ -228,11 +312,11 @@ public static interface NavigationDrawerCallbacks {
public boolean checkTabletOrLandscape() {
boolean landscape = getActivity().getResources()
- .getConfiguration()
- .orientation == Configuration.ORIENTATION_LANDSCAPE;
+ .getConfiguration()
+ .orientation == Configuration.ORIENTATION_LANDSCAPE;
boolean tablet =
(getActivity().getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK)
- == Configuration.SCREENLAYOUT_SIZE_XLARGE;
+ == Configuration.SCREENLAYOUT_SIZE_XLARGE;
return landscape || tablet;
}
diff --git a/app/src/main/java/com/github/mobile/ui/roboactivities/RoboActionBarActivity.java b/app/src/main/java/com/github/mobile/ui/roboactivities/RoboActionBarActivity.java
index 19769a727..454c78da0 100644
--- a/app/src/main/java/com/github/mobile/ui/roboactivities/RoboActionBarActivity.java
+++ b/app/src/main/java/com/github/mobile/ui/roboactivities/RoboActionBarActivity.java
@@ -5,6 +5,7 @@
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
+import com.github.mobile.ui.NavigationDrawerFragment;
import com.google.inject.Key;
import java.util.HashMap;
@@ -126,9 +127,11 @@ public void onSupportContentChanged() {
@Override
protected void onActivityResult( int requestCode, int resultCode, Intent data ) {
+ if (requestCode == 2 & requestCode ==1) {
+ super.onActivityResult(requestCode, resultCode, data);
- super.onActivityResult( requestCode, resultCode, data );
- eventManager.fire( new OnActivityResultEvent( requestCode, resultCode, data ) );
+ eventManager.fire(new OnActivityResultEvent(requestCode, resultCode, data));
+ }
}
@Override
diff --git a/app/src/main/java/com/github/mobile/ui/user/UserListAdapter.java b/app/src/main/java/com/github/mobile/ui/user/UserListAdapter.java
index 8ed970bdd..693f5dffa 100644
--- a/app/src/main/java/com/github/mobile/ui/user/UserListAdapter.java
+++ b/app/src/main/java/com/github/mobile/ui/user/UserListAdapter.java
@@ -15,7 +15,14 @@
*/
package com.github.mobile.ui.user;
+import android.content.Context;
+import android.view.ContextMenu;
import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.ListView;
import com.github.kevinsawicki.wishlist.SingleTypeAdapter;
import com.github.mobile.R;
@@ -28,8 +35,12 @@
*/
public class UserListAdapter extends SingleTypeAdapter {
+
private final AvatarLoader avatars;
+
+
+
/**
* Create user list adapter
*
@@ -37,6 +48,9 @@ public class UserListAdapter extends SingleTypeAdapter {
* @param elements
* @param avatars
*/
+
+
+
public UserListAdapter(final LayoutInflater inflater,
final User[] elements, final AvatarLoader avatars) {
super(inflater, R.layout.user_item);
@@ -60,4 +74,11 @@ protected void update(final int position, final User user) {
avatars.bind(imageView(0), user);
setText(1, user.getLogin());
}
+
+
+
+
+
+
+
}