package adullact.publicrowdfunding;
-import java.util.ArrayList;
+import java.util.List;
-import adullact.publicrowdfunding.controller.preferences.preferencesFragment;
-import adullact.publicrowdfunding.fragment.v4.register.ConnexionFragment;
+import adullact.publicrowdfunding.controller.profile.preferences.preferencesFragment;
+import adullact.publicrowdfunding.controller.project.all.ListProjectsFragment;
+import adullact.publicrowdfunding.controller.project.all.MapFragment;
+import adullact.publicrowdfunding.controller.project.details.ProjectPagerFragment;
+import adullact.publicrowdfunding.controller.register.ConnexionFragment;
import adullact.publicrowdfunding.model.exception.NoAccountExistsInLocal;
-import adullact.publicrowdfunding.model.local.callback.HoldAllToDo;
-import adullact.publicrowdfunding.model.local.callback.WhatToDo;
+import adullact.publicrowdfunding.model.local.callback.HoldToDo;
import adullact.publicrowdfunding.model.local.ressource.Account;
+import adullact.publicrowdfunding.model.local.ressource.Funding;
import adullact.publicrowdfunding.model.local.ressource.Project;
+import adullact.publicrowdfunding.model.local.ressource.Resource;
import adullact.publicrowdfunding.model.local.ressource.User;
import adullact.publicrowdfunding.model.local.utilities.Share;
-import adullact.publicrowdfunding.model.local.utilities.SyncServerToLocal;
-import adullact.publicrowdfunding.model.local.utilities.sortProjects;
+import adullact.publicrowdfunding.model.server.event.CreateEvent;
import adullact.publicrowdfunding.views.SimpleLine;
-import android.app.AlertDialog;
-import android.app.SearchManager;
+import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
import android.support.v4.app.ActionBarDrawerToggle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
+import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.widget.DrawerLayout;
-import android.view.LayoutInflater;
-import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
-import android.widget.AdapterView;
-import android.widget.AdapterView.OnItemClickListener;
-import android.widget.ArrayAdapter;
+import android.view.animation.Animation;
+import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
-import android.widget.ListView;
-import android.widget.SearchView;
-import android.widget.SearchView.OnCloseListener;
-import android.widget.SearchView.OnQueryTextListener;
import android.widget.TextView;
+import android.widget.Toast;
import com.google.android.gms.maps.model.LatLng;
+/**
+ * @author Ferrand and Nelaupe
+ */
public class MainActivity extends FragmentActivity {
private DrawerLayout mDrawerLayout;
private LinearLayout mDrawerList;
- public ActionBarDrawerToggle mDrawerToggle;
+ public static ActionBarDrawerToggle mDrawerToggle;
private Button m_button_add_projet;
private LinearLayout m_button_account;
private Button m_button_authentificate;
private Button m_button_map_projects;
private Button m_button_all_projects;
+ private Button m_button_change_account;
private Button m_button_deconnexion;
private Button m_Button_preferences;
private SimpleLine m_separator_2;
private SimpleLine m_separator_3;
- protected ArrayList<Project> p_project_displayed;
+ private User me;
- private SyncServerToLocal sync;
+ private boolean isTablet;
- private User me;
+ private android.widget.FrameLayout filter;
+
+ private Activity _this;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
- p_project_displayed = new ArrayList<Project>();
+ isTablet = isTabletDevice(this.getBaseContext());
- syncProjects();
+ _this = this;
- mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
- mDrawerList = (LinearLayout) findViewById(R.id.left);
+ if (!isTablet) {
- getActionBar().setDisplayHomeAsUpEnabled(true);
- getActionBar().setHomeButtonEnabled(true);
-
- mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
- R.drawable.ic_drawer, /* nav drawer image */
- R.string.ask, /* "open drawer" */
- R.string.ask /* "close drawer" */
- ) {
- public void onDrawerClosed(View view) {
- invalidateOptionsMenu();
- mDrawerLayout.setClickable(true);
- }
+ managerDrawerMenu(savedInstanceState);
+ }
- public void onDrawerOpened(View drawerView) {
- invalidateOptionsMenu();
- }
- };
- mDrawerLayout.setDrawerListener(mDrawerToggle);
+ mDrawerList = (LinearLayout) findViewById(R.id.left);
- if (savedInstanceState == null) {
- launchDefaultFragment();
- }
+ filter = (android.widget.FrameLayout) findViewById(R.id.big_filter);
gererPanneauMenu();
isConnect();
geolocalisation();
- }
-
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
-
- if (mDrawerToggle.onOptionsItemSelected(item)) {
- return true;
- }
-
- switch (item.getItemId()) {
- case R.id.action_sort:
- sort();
- break;
- default:
- return super.onOptionsItemSelected(item);
+ if (savedInstanceState == null) {
+ launchDefaultFragment();
}
- return true;
}
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
- mDrawerToggle.syncState();
+ if (!isTablet) {
+ mDrawerToggle.syncState();
+ }
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
- mDrawerToggle.onConfigurationChanged(newConfig);
+ if (!isTablet) {
+ mDrawerToggle.onConfigurationChanged(newConfig);
+ }
}
private void gererPanneauMenu() {
- final MainActivity _this = this;
this.invalidateOptionsMenu();
m_separator_1 = (SimpleLine) findViewById(R.id.separator_1);
FragmentTransaction ft = getSupportFragmentManager()
.beginTransaction();
- // ft.setCustomAnimations(R.anim.enter, R.anim.exit);
Fragment fragment = new ConnexionFragment();
- ft.replace(R.id.content_frame, fragment);
+ ft.replace(R.id.big_font, fragment);
+ ft.setCustomAnimations(R.anim.popup_enter, R.anim.no_anim);
ft.commit();
- mDrawerLayout.closeDrawer(mDrawerList);
+ closeDrawer();
+
+ filter.setVisibility(View.VISIBLE);
+ Animation fadeInAnimation = AnimationUtils.loadAnimation(_this,
+ R.anim.fade_enter);
+ filter.setAnimation(fadeInAnimation);
+ filter.animate();
}
});
@Override
public void onClick(View v) {
- Intent in = new Intent(
- getBaseContext().getApplicationContext(),
- adullact.publicrowdfunding.controller.addProject.MainActivity.class);
+ FragmentTransaction ft = getSupportFragmentManager()
+ .beginTransaction();
- startActivity(in);
+ // ft.setCustomAnimations(R.anim.enter, R.anim.exit);
+ Fragment fragment = new adullact.publicrowdfunding.controller.project.add.addProjectFragment();
+ ft.addToBackStack(null);
+ ft.replace(R.id.content_frame, fragment);
+ ft.commit();
+ closeDrawer();
}
});
FragmentTransaction ft = getSupportFragmentManager()
.beginTransaction();
- // ft.setCustomAnimations(R.anim.enter, R.anim.exit);
- Fragment fragment = new adullact.publicrowdfunding.fragment.v4.profile.ProfilePagerFragment();
+ Fragment fragment = new adullact.publicrowdfunding.controller.profile.ProfilePagerFragment();
Bundle bundle = new Bundle();
bundle.putString("idUser", me.getResourceId());
fragment.setArguments(bundle);
ft.replace(R.id.content_frame, fragment);
ft.commit();
- mDrawerLayout.closeDrawer(mDrawerList);
-
+ closeDrawer();
}
});
.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- /*
- * Intent in = new Intent(
- * getBaseContext().getApplicationContext(),
- * adullact.publicrowdfunding
- * .controller.validateProject.MainActivity.class);
- * startActivity(in);
- */
+
+ FragmentTransaction ft = getSupportFragmentManager()
+ .beginTransaction();
+ Fragment fragment = new adullact.publicrowdfunding.controller.project.validate.MainActivity();
+ Bundle bundle = new Bundle();
+ fragment.setArguments(bundle);
+ ft.addToBackStack(null);
+ ft.replace(R.id.content_frame, fragment);
+ ft.commit();
+
+ closeDrawer();
}
});
// ft.setCustomAnimations(R.anim.enter, R.anim.exit);
Fragment fragment = new MapFragment();
-
+ ft.addToBackStack(null);
ft.replace(R.id.content_frame, fragment);
ft.commit();
- mDrawerLayout.closeDrawer(mDrawerList);
+ closeDrawer();
}
});
FragmentTransaction ft = getSupportFragmentManager()
.beginTransaction();
Fragment fragment = new preferencesFragment();
-
ft.replace(R.id.content_frame, fragment);
+ ft.addToBackStack(null);
ft.commit();
- mDrawerLayout.closeDrawer(mDrawerList);
+ closeDrawer();
}
});
}
});
+ m_button_change_account = (Button) findViewById(R.id.button_changeAccount);
+ m_button_change_account.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+
+ FragmentTransaction ft = getSupportFragmentManager()
+ .beginTransaction();
+ Fragment fragment = new ConnexionFragment();
+ ft.replace(R.id.big_font, fragment);
+ ft.setCustomAnimations(R.anim.popup_enter, R.anim.no_anim);
+ ft.commit();
+
+ closeDrawer();
+ filter.setVisibility(View.VISIBLE);
+ Animation fadeInAnimation = AnimationUtils.loadAnimation(_this,
+ R.anim.fade_enter);
+ filter.setAnimation(fadeInAnimation);
+ filter.animate();
+
+ }
+ });
+
m_button_deconnexion = (Button) findViewById(R.id.button_deconnexion);
m_button_deconnexion.setOnClickListener(new View.OnClickListener() {
@Override
utilisateurVille = (TextView) findViewById(R.id.utilisateur_ville);
utilisateurName = (TextView) findViewById(R.id.utilisateur_name);
avatar = (ImageView) findViewById(R.id.avatar);
-
+ geolocalisation();
}
- public void setDrawerMenu(boolean connect) {
+ public void setDrawerMenu(boolean connect, boolean admin) {
if (connect) {
m_button_account.setVisibility(View.VISIBLE);
m_button_authentificate.setVisibility(View.GONE);
m_button_deconnexion.setVisibility(View.VISIBLE);
m_Button_preferences.setVisibility(View.VISIBLE);
m_button_add_projet.setVisibility(View.VISIBLE);
- m_button_validate_projects.setVisibility(View.VISIBLE);
+ m_button_change_account.setVisibility(View.VISIBLE);
m_separator_1.setVisibility(View.VISIBLE);
m_separator_2.setVisibility(View.VISIBLE);
m_separator_3.setVisibility(View.VISIBLE);
+ if (admin) {
+ m_button_validate_projects.setVisibility(View.VISIBLE);
+ } else {
+ m_button_validate_projects.setVisibility(View.GONE);
+ }
} else {
m_button_account.setVisibility(View.GONE);
m_button_authentificate.setVisibility(View.VISIBLE);
m_button_deconnexion.setVisibility(View.GONE);
m_Button_preferences.setVisibility(View.GONE);
m_button_add_projet.setVisibility(View.GONE);
+ m_button_change_account.setVisibility(View.GONE);
m_button_validate_projects.setVisibility(View.GONE);
m_separator_1.setVisibility(View.GONE);
}
public void isConnect() {
- try {
- Account account = Account.getOwn();
-
- setDrawerMenu(true);
- account.getUser(new WhatToDo<User>() {
-
- @Override
- public void hold(User resource) {
- me = resource;
- utilisateurName.setText(Share.formatString(resource
- .getPseudo()));
- utilisateurVille.setText(Share.formatString(resource
- .getCity()));
- if (resource.getGender().equals("0")) {
- avatar.setImageResource(R.drawable.male_user_icon);
- } else {
- avatar.setImageResource(R.drawable.female_user_icon);
- }
+ setDrawerMenu(false, false);
+ if (Account.isConnect()) {
+ try {
+ Account account = Account.getOwn();
+ setDrawerMenu(true, account.isAdmin());
+ account.getUser(new HoldToDo<User>() {
- }
+ @Override
+ public void hold(User resource) {
+ me = resource;
+ utilisateurName.setText(Share.formatString(resource
+ .getPseudo()));
+ utilisateurVille.setText(Share.formatString(resource
+ .getCity()));
+ if (resource.getGender().equals("0")) {
+ avatar.setImageResource(R.drawable.male_user_icon);
+ } else {
+ avatar.setImageResource(R.drawable.female_user_icon);
+ }
- @Override
- public void eventually() {
+ }
- }
+ });
+ } catch (NoAccountExistsInLocal e1) {
+
+ }
+ } else {
- });
- } catch (NoAccountExistsInLocal e1) {
- setDrawerMenu(false);
}
}
locationManager.requestLocationUpdates(locationProvider, 10000, 0,
locationListener);
} catch (Exception e) {
- System.out.println("Erreur 2");
+ e.printStackTrace();
}
}
try {
locationManager.removeUpdates(locationListener);
} catch (Exception e) {
- System.out.println("Erreur 1");
+ e.printStackTrace();
}
}
public void launchDefaultFragment() {
- FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
+ FragmentTransaction ft = getSupportFragmentManager().beginTransaction()
+ .disallowAddToBackStack();
Fragment fragment = new ListProjectsFragment();
fragment.setHasOptionsMenu(true);
ft.replace(R.id.content_frame, fragment, "allProjectFragment");
ft.commit();
- mDrawerLayout.closeDrawer(mDrawerList);
+ closeDrawer();
}
public void geolocalisation() {
.findFragmentByTag("allProjectFragment");
if (myFragment.isVisible()) {
if (Share.displayPosition == false) {
- sortProjects.sortAlmostFunded(p_project_displayed);
launchDefaultFragment();
locationManager.removeUpdates(locationListener);
locationListener = null;
}
} catch (NullPointerException e) {
- System.out.println("Initialisation");
+ e.printStackTrace();
}
}
}
- public void sort() {
- ArrayAdapter<String> adapter = null;
- if (Share.position == null) {
- String names[] = { "Le plus gros projet", "Le plus petit projet",
- "Le plus avancé" };
- adapter = new ArrayAdapter<String>(MainActivity.this,
- android.R.layout.simple_list_item_1, names);
- } else {
- String names[] = { "Le plus gros projet", "Le plus petit",
- "Le plus avancé", "Le plus proche (Défaut)" };
- adapter = new ArrayAdapter<String>(MainActivity.this,
- android.R.layout.simple_list_item_1, names);
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ if (!isTablet && MainActivity.mDrawerToggle.onOptionsItemSelected(item)) {
+ return true;
}
- AlertDialog.Builder alertDialog = new AlertDialog.Builder(
- MainActivity.this);
- LayoutInflater inflater = getLayoutInflater();
- View convertView = (View) inflater.inflate(R.layout.listeview, null);
- alertDialog.setView(convertView);
- alertDialog.setTitle("Trier par");
- ListView lv = (ListView) convertView.findViewById(R.id.liste);
-
- lv.setAdapter(adapter);
- final AlertDialog dialog = alertDialog.create();
- lv.setOnItemClickListener(new OnItemClickListener() {
-
- @Override
- public void onItemClick(AdapterView<?> parent, View view,
- int position, long id) {
-
- switch (position) {
- case 0:
-
- sortProjects.sortBiggestProjectFirst(p_project_displayed);
- launchDefaultFragment();
- dialog.dismiss();
-
- break;
- case 1:
- sortProjects.sortBiggestProjectLast(p_project_displayed);
- launchDefaultFragment();
- dialog.dismiss();
- break;
- case 2:
-
- sortProjects.sortAlmostFunded(p_project_displayed);
- launchDefaultFragment();
- dialog.dismiss();
- break;
-
- case 3:
- sortProjects.sortClothersProject(p_project_displayed);
- launchDefaultFragment();
- dialog.dismiss();
- break;
-
- }
- }
- });
-
- dialog.show();
-
+ return false;
}
- public void search(Menu menu) {
- MenuItem searchItem;
- searchItem = menu.findItem(R.id.action_search);
- assert searchItem != null;
- SearchView searchView = (SearchView) searchItem.getActionView();
- SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
- if (null != searchManager) {
- searchView.setSearchableInfo(searchManager
- .getSearchableInfo(getComponentName()));
- }
- searchView.setIconifiedByDefault(true);
- searchView.setOnCloseListener(new OnCloseListener() {
+ private boolean isTabletDevice(Context context) {
- @Override
- public boolean onClose() {
- p_project_displayed = new ArrayList<Project>(sync.getProjects());
- launchDefaultFragment();
- return false;
- }
+ if (context.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
+ return (context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_XLARGE;
+ }
- });
+ return false;
- searchView.setOnQueryTextListener(new OnQueryTextListener() {
+ }
- public boolean onQueryTextSubmit(String query) {
+ public void managerDrawerMenu(Bundle savedInstanceState) {
- p_project_displayed = sync.searchInName(query);
- launchDefaultFragment();
+ getActionBar().setDisplayHomeAsUpEnabled(true);
+ getActionBar().setHomeButtonEnabled(true);
- return false;
+ mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
+ mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
+ R.drawable.ic_drawer, /* nav drawer image */
+ R.string.ask, /* "open drawer" */
+ R.string.ask /* "close drawer" */
+ ) {
+ public void onDrawerClosed(View view) {
+ invalidateOptionsMenu();
+ mDrawerLayout.setClickable(true);
}
- @Override
- public boolean onQueryTextChange(String newText) {
- return false;
+ public void onDrawerOpened(View drawerView) {
+ invalidateOptionsMenu();
}
-
- });
+ };
+ mDrawerLayout.setDrawerListener(mDrawerToggle);
}
- public void syncProjects() {
-
- sync = SyncServerToLocal.getInstance();
- sync.sync(new HoldAllToDo<Project>() {
-
- @Override
- public void holdAll(ArrayList<Project> projects) {
-
- ArrayList<Project> allSync = new ArrayList<Project>(sync
- .getProjects());
- p_project_displayed = allSync;
+ public void closeDrawer() {
+ if (!isTablet) {
+ mDrawerLayout.closeDrawer(mDrawerList);
+ }
+ }
- launchDefaultFragment();
+ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+ if (requestCode == 1) {
+ if (resultCode == RESULT_OK) {
+ // Payement ok !
+ final String idProject = data.getStringExtra("idProject");
+ final String somme = data.getStringExtra("somme");
+ final FragmentManager fm = this.getSupportFragmentManager();
+ final List<Fragment> fragments = this
+ .getSupportFragmentManager().getFragments();
+ new Project().getCache(idProject).toResource(
+ new HoldToDo<Project>() {
+
+ @Override
+ public void hold(Project resource) {
+ try {
+ resource.finance(somme,
+ new CreateEvent<Funding>() {
+
+ @Override
+ public void errorResourceIdAlreadyUsed() {
+ // TODO Auto-generated
+ // method stub
+
+ }
+
+ @Override
+ public void onCreate(
+ Funding resource) {
+ // Tout est ok !
+
+ for (Fragment fragment : fragments) {
+ if (fragment instanceof ProjectPagerFragment) {
+ fm.beginTransaction()
+ .detach(fragment)
+ .commit();
+ }
+ }
+ Bundle bundle = new Bundle();
+ bundle.putString(
+ "idProject",
+ idProject);
+
+ FragmentTransaction ft = getSupportFragmentManager()
+ .beginTransaction();
+ Fragment fragment = new ProjectPagerFragment();
+ fragment.setArguments(bundle);
+ fragment.setHasOptionsMenu(true);
+ ft.replace(
+ R.id.content_frame,
+ fragment);
+ Toast.makeText(
+ getBaseContext(),
+ "Participation prise en compte !",
+ Toast.LENGTH_LONG)
+ .show();
+
+ ft.commitAllowingStateLoss();
+
+ }
+
+ @Override
+ public void errorAuthenticationRequired() {
+ // TODO Auto-generated
+ // method stub
+
+ }
+
+ @Override
+ public void errorNetwork() {
+ // TODO Auto-generated
+ // method stub
+
+ }
+
+ @Override
+ public void errorServer() {
+ // TODO Auto-generated
+ // method stub
+
+ }
+
+ });
+ } catch (NoAccountExistsInLocal e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ }
+
+ });
}
- });
+ if (resultCode == RESULT_CANCELED) {
+ // Echec du payement.
+ }
+ }
}
-
}
\ No newline at end of file