diff --git a/app/build.gradle b/app/build.gradle index 570367950b18f699e4dec692eaa60f7f0025eabe..4e71f7ff09afb54d52c6142aec3d7183f699dd3c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -8,7 +8,7 @@ android { buildToolsVersion "25.0.2" defaultConfig { - applicationId "com.tecsynt.nynja" + applicationId "com.nynja.mobile.communicator" minSdkVersion 17 //noinspection OldTargetApi targetSdkVersion 25 @@ -17,6 +17,7 @@ android { testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" vectorDrawables.useSupportLibrary = true + multiDexEnabled true } compileOptions { @@ -79,6 +80,7 @@ ext { daggerVersion = "2.10" moxyVersion = "1.4.6" rxJavaVersion = '2.1.0' + gcmLibraryVersion = '11.0.0' } dependencies { @@ -89,7 +91,10 @@ dependencies { compile "com.android.support:appcompat-v7:$supportLibraryVersion" compile "com.android.support:design:$supportLibraryVersion" compile 'com.android.support.constraint:constraint-layout:1.0.2' + compile 'com.android.support:multidex:1.0.1' + + compile 'com.google.android.gms:play-services-maps:11.0.1' compile 'com.googlecode.libphonenumber:libphonenumber:8.5.2' //Logging @@ -122,12 +127,17 @@ dependencies { compile "io.reactivex.rxjava2:rxandroid:2.0.1" compile "io.reactivex.rxjava2:rxjava:$rxJavaVersion" -// MQTT + //MQTT compile 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.0.2' compile ('org.eclipse.paho:org.eclipse.paho.android.service:1.0.2') { exclude module: 'support-v4' } + //RXPermissions + compile 'com.tbruyelle.rxpermissions2:rxpermissions:0.9.4@aar' + + //Barcode scanner + compile 'me.dm7.barcodescanner:zbar:1.9.3' androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' @@ -135,3 +145,5 @@ dependencies { testCompile 'junit:junit:4.12' } + +apply plugin: 'com.google.gms.google-services' \ No newline at end of file diff --git a/app/google-services.json b/app/google-services.json new file mode 100644 index 0000000000000000000000000000000000000000..408d65ad23a40272247d513154898e2a76a69a1f --- /dev/null +++ b/app/google-services.json @@ -0,0 +1,71 @@ +{ + "project_info": { + "project_number": "812739686465", + "project_id": "test-6d28a" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:812739686465:android:f34dd5122c81bed8", + "android_client_info": { + "package_name": "test.bo.kotlin" + } + }, + "oauth_client": [ + { + "client_id": "812739686465-g5khrfjrfqp11pdnon75tk5r5se0te4f.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyAb71NYx7QM9bvFBSt--KkjQjayAsDjRu0" + } + ], + "services": { + "analytics_service": { + "status": 1 + }, + "appinvite_service": { + "status": 1, + "other_platform_oauth_client": [] + }, + "ads_service": { + "status": 1 + } + } + }, + { + "client_info": { + "mobilesdk_app_id": "1:812739686465:android:1a9adeff9fbd3f48", + "android_client_info": { + "package_name": "com.nynja.mobile.communicator" + } + }, + "oauth_client": [ + { + "client_id": "812739686465-g5khrfjrfqp11pdnon75tk5r5se0te4f.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyAb71NYx7QM9bvFBSt--KkjQjayAsDjRu0" + } + ], + "services": { + "analytics_service": { + "status": 1 + }, + "appinvite_service": { + "status": 1, + "other_platform_oauth_client": [] + }, + "ads_service": { + "status": 1 + } + } + } + ], + "configuration_version": "1" +} \ No newline at end of file diff --git a/app/src/androidTest/java/com/tecsynt/nynja/ExampleInstrumentedTest.java b/app/src/androidTest/java/com/ninja/mobile/ExampleInstrumentedTest.java similarity index 96% rename from app/src/androidTest/java/com/tecsynt/nynja/ExampleInstrumentedTest.java rename to app/src/androidTest/java/com/ninja/mobile/ExampleInstrumentedTest.java index e993f1ce3725d8f1cf541c7e1e0f29b64efdb331..7adea0d2eb7009a512aa9fdfe0b0e7e962552a5f 100644 --- a/app/src/androidTest/java/com/tecsynt/nynja/ExampleInstrumentedTest.java +++ b/app/src/androidTest/java/com/ninja/mobile/ExampleInstrumentedTest.java @@ -1,4 +1,4 @@ -package com.tecsynt.nynja; +package com.ninja.mobile; import android.content.Context; import android.support.test.InstrumentationRegistry; diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index d50fe7de70df8946d5b5d230a37558ef9fc7c412..b015e8e6d34852f5d2037f6bfd703b06b71528ca 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,18 +1,23 @@ - + + + - - + + + + + - - + + @@ -32,22 +37,37 @@ - + - + - + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/tecsynt/nynja/NynjaApp.java b/app/src/main/java/com/ninja/mobile/NynjaApp.java similarity index 78% rename from app/src/main/java/com/tecsynt/nynja/NynjaApp.java rename to app/src/main/java/com/ninja/mobile/NynjaApp.java index 8f4015101fab9997a0dcb93b6154da7b3e6c06b1..1a5d03b94010f7b6265ae9fa62fcacb54a7ccd48 100644 --- a/app/src/main/java/com/tecsynt/nynja/NynjaApp.java +++ b/app/src/main/java/com/ninja/mobile/NynjaApp.java @@ -1,11 +1,11 @@ -package com.tecsynt.nynja; +package com.ninja.mobile; -import android.app.Application; import android.content.Context; +import android.support.multidex.MultiDexApplication; -import com.tecsynt.nynja.injection.ApplicationComponent; -import com.tecsynt.nynja.injection.ApplicationModule; -import com.tecsynt.nynja.injection.DaggerApplicationComponent; +import com.ninja.mobile.injection.ApplicationComponent; +import com.ninja.mobile.injection.ApplicationModule; +import com.ninja.mobile.injection.DaggerApplicationComponent; import timber.log.Timber; @@ -14,7 +14,7 @@ import timber.log.Timber; * Email: duo.blood@gmail.com */ -public class NynjaApp extends Application { +public class NynjaApp extends MultiDexApplication { private ApplicationComponent mApplicationComponent; diff --git a/app/src/main/java/com/tecsynt/nynja/data/DataManager.java b/app/src/main/java/com/ninja/mobile/data/DataManager.java similarity index 81% rename from app/src/main/java/com/tecsynt/nynja/data/DataManager.java rename to app/src/main/java/com/ninja/mobile/data/DataManager.java index 47ee360cb397e9cee026b510ec322cdf85e1938b..c2efcf7df51b4abf25f52f6fe3e0e59a747c2ecb 100644 --- a/app/src/main/java/com/tecsynt/nynja/data/DataManager.java +++ b/app/src/main/java/com/ninja/mobile/data/DataManager.java @@ -1,8 +1,8 @@ -package com.tecsynt.nynja.data; +package com.ninja.mobile.data; import android.content.Context; -import com.tecsynt.nynja.injection.ApplicationContext; +import com.ninja.mobile.injection.ApplicationContext; import javax.inject.Inject; import javax.inject.Singleton; diff --git a/app/src/main/java/com/tecsynt/nynja/data/models/Country.java b/app/src/main/java/com/ninja/mobile/data/models/Country.java similarity index 97% rename from app/src/main/java/com/tecsynt/nynja/data/models/Country.java rename to app/src/main/java/com/ninja/mobile/data/models/Country.java index 7804ef15bd604724162a7c04b14e96225272e5f4..5f1386648d45b8a1564489325b1f5b5dcc14a7e6 100644 --- a/app/src/main/java/com/tecsynt/nynja/data/models/Country.java +++ b/app/src/main/java/com/ninja/mobile/data/models/Country.java @@ -1,4 +1,4 @@ -package com.tecsynt.nynja.data.models; +package com.ninja.mobile.data.models; /** * Created by Max Chervatiuk on 25.06.17. diff --git a/app/src/main/java/com/tecsynt/nynja/injection/ActivityContext.java b/app/src/main/java/com/ninja/mobile/injection/ActivityContext.java similarity index 89% rename from app/src/main/java/com/tecsynt/nynja/injection/ActivityContext.java rename to app/src/main/java/com/ninja/mobile/injection/ActivityContext.java index 4b56972d41b62826fa1fac3a94e3682b6d2888e0..a423d93f55f0e3583f4de66a08f71a8f5ada1c29 100644 --- a/app/src/main/java/com/tecsynt/nynja/injection/ActivityContext.java +++ b/app/src/main/java/com/ninja/mobile/injection/ActivityContext.java @@ -1,4 +1,4 @@ -package com.tecsynt.nynja.injection; +package com.ninja.mobile.injection; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; diff --git a/app/src/main/java/com/tecsynt/nynja/injection/ApplicationComponent.java b/app/src/main/java/com/ninja/mobile/injection/ApplicationComponent.java similarity index 90% rename from app/src/main/java/com/tecsynt/nynja/injection/ApplicationComponent.java rename to app/src/main/java/com/ninja/mobile/injection/ApplicationComponent.java index 8b9adc5e39c086b4338edff7a364ae3b8a49dd90..7a52298c4b157e2ddecdf25a30bf553b8b383343 100644 --- a/app/src/main/java/com/tecsynt/nynja/injection/ApplicationComponent.java +++ b/app/src/main/java/com/ninja/mobile/injection/ApplicationComponent.java @@ -1,4 +1,4 @@ -package com.tecsynt.nynja.injection; +package com.ninja.mobile.injection; import android.content.Context; diff --git a/app/src/main/java/com/tecsynt/nynja/injection/ApplicationContext.java b/app/src/main/java/com/ninja/mobile/injection/ApplicationContext.java similarity index 89% rename from app/src/main/java/com/tecsynt/nynja/injection/ApplicationContext.java rename to app/src/main/java/com/ninja/mobile/injection/ApplicationContext.java index 6ef5003e7253940e2672432c2030bf938296162e..a33c48d35eb3719b913f7cff8eb32799803dcf74 100644 --- a/app/src/main/java/com/tecsynt/nynja/injection/ApplicationContext.java +++ b/app/src/main/java/com/ninja/mobile/injection/ApplicationContext.java @@ -1,4 +1,4 @@ -package com.tecsynt.nynja.injection; +package com.ninja.mobile.injection; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; diff --git a/app/src/main/java/com/tecsynt/nynja/injection/ApplicationModule.java b/app/src/main/java/com/ninja/mobile/injection/ApplicationModule.java similarity index 94% rename from app/src/main/java/com/tecsynt/nynja/injection/ApplicationModule.java rename to app/src/main/java/com/ninja/mobile/injection/ApplicationModule.java index 137495db57d7b5db61806713e36487625cbf372c..7eb2abbd29f418536bb5d3caa67e1061340cfd6d 100644 --- a/app/src/main/java/com/tecsynt/nynja/injection/ApplicationModule.java +++ b/app/src/main/java/com/ninja/mobile/injection/ApplicationModule.java @@ -1,4 +1,4 @@ -package com.tecsynt.nynja.injection; +package com.ninja.mobile.injection; import android.app.Application; import android.content.Context; diff --git a/app/src/main/java/com/ninja/mobile/intetfaces/OnChooserPhotoDialogListener.java b/app/src/main/java/com/ninja/mobile/intetfaces/OnChooserPhotoDialogListener.java new file mode 100644 index 0000000000000000000000000000000000000000..94cd2a649dc3c3bd89be93c7c140f2a1e3db2ed2 --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/intetfaces/OnChooserPhotoDialogListener.java @@ -0,0 +1,12 @@ +package com.ninja.mobile.intetfaces; + +/* + * Created by Bo on 29.06.2017. + */ + +public interface OnChooserPhotoDialogListener { + + void onCameraClick(); + + void onGalleryClick(); +} diff --git a/app/src/main/java/com/ninja/mobile/models/Account.java b/app/src/main/java/com/ninja/mobile/models/Account.java new file mode 100644 index 0000000000000000000000000000000000000000..d623022c75b9224b980fe40a069b97a7008daa4a --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/models/Account.java @@ -0,0 +1,74 @@ +package com.ninja.mobile.models; + +import android.os.Parcel; +import android.os.Parcelable; + +/** + * Created by dmitro.boiko on 30/06/2017. + */ + +public class Account implements Parcelable { + + public long id; + public String status; + public Person person = new Person(); + public Roster roster = new Roster(); + + public Account() { + } + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public Person getPerson() { + return person; + } + + public void setPerson(Person person) { + this.person = person; + } + + public Roster getRoster() { + return roster; + } + + public void setRoster(Roster roster) { + this.roster = roster; + } + + + @Override public int describeContents() { return 0; } + + @Override public void writeToParcel(Parcel dest, int flags) { + dest.writeLong(this.id); + dest.writeString(this.status); + dest.writeParcelable(this.person, flags); + dest.writeParcelable(this.roster, flags); + } + + protected Account(Parcel in) { + this.id = in.readLong(); + this.status = in.readString(); + this.person = in.readParcelable(Person.class.getClassLoader()); + this.roster = in.readParcelable(Roster.class.getClassLoader()); + } + + public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { + @Override public Account createFromParcel(Parcel source) {return new Account(source);} + + @Override public Account[] newArray(int size) {return new Account[size];} + }; +} diff --git a/app/src/main/java/com/ninja/mobile/models/Person.java b/app/src/main/java/com/ninja/mobile/models/Person.java new file mode 100644 index 0000000000000000000000000000000000000000..f8c7aa47fb31e7cf4aadedb2ec81dd67e03209e8 --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/models/Person.java @@ -0,0 +1,82 @@ +package com.ninja.mobile.models; + +/* + * Created by Bo on 29.06.2017. + */ + +import android.os.Parcel; +import android.os.Parcelable; + +import java.util.ArrayList; +import java.util.List; + +public class Person implements Parcelable { + + private String name; + private String surname; + private String phoneNumber; + private List phoneList = new ArrayList<>(); + + public Person() { + phoneList.add(new Phone()); + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getSurname() { + return surname; + } + + public void setSurname(String surname) { + this.surname = surname; + } + + public List getPhoneList() { + return phoneList; + } + + public void setPhoneList(List phoneList) { + this.phoneList = phoneList; + } + + public String getFullName() { + return (name + " " + surname).trim(); + } + + public String getPhoneNumber() { + return phoneNumber; + } + + public void setPhoneNumber(String phoneNumber) { + this.phoneNumber = phoneNumber; + } + + + @Override public int describeContents() { return 0; } + + @Override public void writeToParcel(Parcel dest, int flags) { + dest.writeString(this.name); + dest.writeString(this.surname); + dest.writeString(this.phoneNumber); + dest.writeTypedList(this.phoneList); + } + + protected Person(Parcel in) { + this.name = in.readString(); + this.surname = in.readString(); + this.phoneNumber = in.readString(); + this.phoneList = in.createTypedArrayList(Phone.CREATOR); + } + + public static final Creator CREATOR = new Creator() { + @Override public Person createFromParcel(Parcel source) {return new Person(source);} + + @Override public Person[] newArray(int size) {return new Person[size];} + }; +} diff --git a/app/src/main/java/com/ninja/mobile/models/Phone.java b/app/src/main/java/com/ninja/mobile/models/Phone.java new file mode 100644 index 0000000000000000000000000000000000000000..e3045755fce13d2ea63cd8a1c1194b72e64f48f7 --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/models/Phone.java @@ -0,0 +1,42 @@ +package com.ninja.mobile.models; + +/* + * Created by Bo on 29.06.2017. + */ + +import android.os.Parcel; +import android.os.Parcelable; + +public class Phone implements Parcelable { + + private String phone; + + public Phone() { + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeString(this.phone); + } + + protected Phone(Parcel in) { + this.phone = in.readString(); + } + + public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { + @Override + public Phone createFromParcel(Parcel source) { + return new Phone(source); + } + + @Override + public Phone[] newArray(int size) { + return new Phone[size]; + } + }; +} diff --git a/app/src/main/java/com/ninja/mobile/models/Room.java b/app/src/main/java/com/ninja/mobile/models/Room.java new file mode 100644 index 0000000000000000000000000000000000000000..5b8896991b6ea70c833c4a076299f79b059d2223 --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/models/Room.java @@ -0,0 +1,67 @@ +package com.ninja.mobile.models; + +import android.os.Parcel; +import android.os.Parcelable; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by dmitro.boiko on 30/06/2017. + */ + +class Room implements Parcelable { + + private long id; + private String title; + private List roommembers = new ArrayList<>(); + + public Room() { + } + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public List getRoommembers() { + return roommembers; + } + + public void setRoommembers(List roommembers) { + this.roommembers = roommembers; + } + + + @Override public int describeContents() { return 0; } + + @Override public void writeToParcel(Parcel dest, int flags) { + dest.writeLong(this.id); + dest.writeString(this.title); + dest.writeList(this.roommembers); + } + + protected Room(Parcel in) { + this.id = in.readLong(); + this.title = in.readString(); + this.roommembers = new ArrayList<>(); + in.readList(this.roommembers, Account.class.getClassLoader()); + } + + public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { + @Override public Room createFromParcel(Parcel source) {return new Room(source);} + + @Override public Room[] newArray(int size) {return new Room[size];} + }; +} diff --git a/app/src/main/java/com/ninja/mobile/models/Roster.java b/app/src/main/java/com/ninja/mobile/models/Roster.java new file mode 100644 index 0000000000000000000000000000000000000000..db8bcaa08ddf1732bedb3e2e67b594c8c51eb105 --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/models/Roster.java @@ -0,0 +1,80 @@ +package com.ninja.mobile.models; + +import android.os.Parcel; +import android.os.Parcelable; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by dmitro.boiko on 30/06/2017. + */ + +public class Roster implements Parcelable { + + private List contacts = new ArrayList<>(); + private List roomlist = new ArrayList<>(); + private long contactssize; + private long roomlistsize; + + public Roster() { + roomlist.add(new Room()); + } + + + public List getContacts() { + return contacts; + } + + public void setContacts(List contacts) { + this.contacts = contacts; + } + + public List getRoomlist() { + return roomlist; + } + + public void setRoomlist(List roomlist) { + this.roomlist = roomlist; + } + + public long getContactssize() { + return contactssize; + } + + public void setContactssize(long contactssize) { + this.contactssize = contactssize; + } + + public long getRoomlistsize() { + return roomlistsize; + } + + public void setRoomlistsize(long roomlistsize) { + this.roomlistsize = roomlistsize; + } + + + @Override public int describeContents() { return 0; } + + @Override public void writeToParcel(Parcel dest, int flags) { + dest.writeList(this.contacts); + dest.writeTypedList(this.roomlist); + dest.writeLong(this.contactssize); + dest.writeLong(this.roomlistsize); + } + + protected Roster(Parcel in) { + this.contacts = new ArrayList<>(); + in.readList(this.contacts, Account.class.getClassLoader()); + this.roomlist = in.createTypedArrayList(Room.CREATOR); + this.contactssize = in.readLong(); + this.roomlistsize = in.readLong(); + } + + public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { + @Override public Roster createFromParcel(Parcel source) {return new Roster(source);} + + @Override public Roster[] newArray(int size) {return new Roster[size];} + }; +} diff --git a/app/src/main/java/com/ninja/mobile/models/User.java b/app/src/main/java/com/ninja/mobile/models/User.java new file mode 100644 index 0000000000000000000000000000000000000000..d958a544245e6496494679671dfc93f1c8fdedae --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/models/User.java @@ -0,0 +1,81 @@ +package com.ninja.mobile.models; + +import android.os.Parcel; +import android.os.Parcelable; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by dmitro.boiko on 30/06/2017. + */ + +public class User implements Parcelable { + + public long userid; + public String phonenumber; + public String status; + + public List accounts = new ArrayList<>(); + + public User() { + } + + public long getUserid() { + return userid; + } + + public void setUserid(long userid) { + this.userid = userid; + } + + public String getPhonenumber() { + return phonenumber; + } + + public void setPhonenumber(String phonenumber) { + this.phonenumber = phonenumber; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public List getAccounts() { + return accounts; + } + + public void setAccounts(List accounts) { + this.accounts = accounts; + } + + public Account getAccount() { + return getAccounts().get(0); + } + + @Override public int describeContents() { return 0; } + + @Override public void writeToParcel(Parcel dest, int flags) { + dest.writeLong(this.userid); + dest.writeString(this.phonenumber); + dest.writeString(this.status); + dest.writeTypedList(this.accounts); + } + + protected User(Parcel in) { + this.userid = in.readLong(); + this.phonenumber = in.readString(); + this.status = in.readString(); + this.accounts = in.createTypedArrayList(Account.CREATOR); + } + + public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { + @Override public User createFromParcel(Parcel source) {return new User(source);} + + @Override public User[] newArray(int size) {return new User[size];} + }; +} diff --git a/app/src/main/java/com/ninja/mobile/mvp/presenters/EditProfilePresenter.java b/app/src/main/java/com/ninja/mobile/mvp/presenters/EditProfilePresenter.java new file mode 100644 index 0000000000000000000000000000000000000000..1c3df1e4ff11ebde757df717cddacc29e1dc89ec --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/mvp/presenters/EditProfilePresenter.java @@ -0,0 +1,43 @@ +package com.ninja.mobile.mvp.presenters; + +import android.text.TextUtils; + +import com.arellomobile.mvp.InjectViewState; +import com.arellomobile.mvp.MvpPresenter; +import com.ninja.mobile.models.Person; +import com.ninja.mobile.mvp.view.EditProfileView; +import com.ninja.mobile.utils.ValidationUtils; + +/** + * Date: 25.06.17 + * Time: 04:10 + * + * @author Max Chervatiuk + * Email: duo.blood@gmail.com + */ +@InjectViewState +public class EditProfilePresenter extends MvpPresenter { + + private void showErrorMessage(String errorMessage) { + getViewState().onErrorMessage(errorMessage); + } + + public void saveClick(String firstName, String lastName) { + if (ValidationUtils.isNameVaild(firstName)) { + //// FIXME: 29.06.2017 update on server + Person userPerson = new Person(); + userPerson.setName(firstName); + userPerson.setSurname(lastName); + getViewState().onSaveClick(userPerson); + } else { + //// FIXME: 30/06/2017 add error messages + String errorMessage; + if (TextUtils.isEmpty(firstName)) { + errorMessage = "FirstName cannot be empty."; + } else { + errorMessage = "FirstName length should be at least 2 symbols."; + } + showErrorMessage(errorMessage); + } + } +} diff --git a/app/src/main/java/com/tecsynt/nynja/mvp/presenters/LoginPresenter.java b/app/src/main/java/com/ninja/mobile/mvp/presenters/LoginPresenter.java similarity index 83% rename from app/src/main/java/com/tecsynt/nynja/mvp/presenters/LoginPresenter.java rename to app/src/main/java/com/ninja/mobile/mvp/presenters/LoginPresenter.java index 9eb37a998101354dbc208750165d80b0ac03ab6e..364a7dfec6a2040b8edce374c9271c73ce796941 100644 --- a/app/src/main/java/com/tecsynt/nynja/mvp/presenters/LoginPresenter.java +++ b/app/src/main/java/com/ninja/mobile/mvp/presenters/LoginPresenter.java @@ -1,8 +1,8 @@ -package com.tecsynt.nynja.mvp.presenters; +package com.ninja.mobile.mvp.presenters; import com.arellomobile.mvp.InjectViewState; import com.arellomobile.mvp.MvpPresenter; -import com.tecsynt.nynja.mvp.view.LoginView; +import com.ninja.mobile.mvp.view.LoginView; /** * Date: 25.06.17 diff --git a/app/src/main/java/com/ninja/mobile/mvp/presenters/MyProfilePresenter.java b/app/src/main/java/com/ninja/mobile/mvp/presenters/MyProfilePresenter.java new file mode 100644 index 0000000000000000000000000000000000000000..79500c83498bb6f48d5768ff4b8378e000c58029 --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/mvp/presenters/MyProfilePresenter.java @@ -0,0 +1,33 @@ +package com.ninja.mobile.mvp.presenters; + +import com.arellomobile.mvp.InjectViewState; +import com.arellomobile.mvp.MvpPresenter; +import com.ninja.mobile.mvp.view.MyProfileView; + +/** + * Created by Max Chervatiuk on 25.06.17. + * Email: duo.blood@gmail.com + */ +@InjectViewState +public class MyProfilePresenter extends MvpPresenter { + + public void clickOnEditProfile() { + getViewState().navigateToEditProfile(); + } + + public void clickOnQrCode() { + getViewState().navigateToQqCode(); + } + + public void clickOnCamera() { + getViewState().navigateToCamera(); + } + + public void clickOnGallery() { + getViewState().navigateToGallery(); + } + + public void showChooserImageDialog() { + getViewState().showChooserImageDialog(); + } +} diff --git a/app/src/main/java/com/tecsynt/nynja/mvp/presenters/SplashPresenter.java b/app/src/main/java/com/ninja/mobile/mvp/presenters/SplashPresenter.java similarity index 74% rename from app/src/main/java/com/tecsynt/nynja/mvp/presenters/SplashPresenter.java rename to app/src/main/java/com/ninja/mobile/mvp/presenters/SplashPresenter.java index e96d8445f2b53479db6adfc4c0be97a99cd9823b..38c4f58b6b6c12e504bbfbeba9e2baead52c7760 100644 --- a/app/src/main/java/com/tecsynt/nynja/mvp/presenters/SplashPresenter.java +++ b/app/src/main/java/com/ninja/mobile/mvp/presenters/SplashPresenter.java @@ -1,8 +1,8 @@ -package com.tecsynt.nynja.mvp.presenters; +package com.ninja.mobile.mvp.presenters; import com.arellomobile.mvp.InjectViewState; import com.arellomobile.mvp.MvpPresenter; -import com.tecsynt.nynja.mvp.view.SplashView; +import com.ninja.mobile.mvp.view.SplashView; /** * Created by Max Chervatiuk on 25.06.17. diff --git a/app/src/main/java/com/ninja/mobile/mvp/view/EditProfileView.java b/app/src/main/java/com/ninja/mobile/mvp/view/EditProfileView.java new file mode 100644 index 0000000000000000000000000000000000000000..ec57500bd7ae340181f6c198d9c0170d96da7ba2 --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/mvp/view/EditProfileView.java @@ -0,0 +1,15 @@ +package com.ninja.mobile.mvp.view; + +/* + * Created by Bo on 29.06.2017. + */ + +import com.arellomobile.mvp.MvpView; +import com.ninja.mobile.models.Person; + +public interface EditProfileView extends MvpView { + + void onErrorMessage(String errorMessage); + + void onSaveClick(Person userPerson); +} diff --git a/app/src/main/java/com/tecsynt/nynja/mvp/view/LoginView.java b/app/src/main/java/com/ninja/mobile/mvp/view/LoginView.java similarity index 86% rename from app/src/main/java/com/tecsynt/nynja/mvp/view/LoginView.java rename to app/src/main/java/com/ninja/mobile/mvp/view/LoginView.java index 648f2425ad2ee28665e774a0996b486a657c8561..d3eafba92a38919d621d2294c75f99e37ee0684b 100644 --- a/app/src/main/java/com/tecsynt/nynja/mvp/view/LoginView.java +++ b/app/src/main/java/com/ninja/mobile/mvp/view/LoginView.java @@ -1,4 +1,4 @@ -package com.tecsynt.nynja.mvp.view; +package com.ninja.mobile.mvp.view; import com.arellomobile.mvp.MvpView; diff --git a/app/src/main/java/com/tecsynt/nynja/mvp/view/MyProfileView.java b/app/src/main/java/com/ninja/mobile/mvp/view/MyProfileView.java similarity index 80% rename from app/src/main/java/com/tecsynt/nynja/mvp/view/MyProfileView.java rename to app/src/main/java/com/ninja/mobile/mvp/view/MyProfileView.java index 482da5f0f689ac9d6d1a0cc8a5b7245c436dd477..dd64419201a42c2fa0c640a221a8f359179617f6 100644 --- a/app/src/main/java/com/tecsynt/nynja/mvp/view/MyProfileView.java +++ b/app/src/main/java/com/ninja/mobile/mvp/view/MyProfileView.java @@ -1,4 +1,4 @@ -package com.tecsynt.nynja.mvp.view; +package com.ninja.mobile.mvp.view; import com.arellomobile.mvp.MvpView; @@ -16,4 +16,6 @@ public interface MyProfileView extends MvpView { void navigateToCamera(); void navigateToGallery(); + + void showChooserImageDialog(); } diff --git a/app/src/main/java/com/tecsynt/nynja/mvp/view/SplashView.java b/app/src/main/java/com/ninja/mobile/mvp/view/SplashView.java similarity index 82% rename from app/src/main/java/com/tecsynt/nynja/mvp/view/SplashView.java rename to app/src/main/java/com/ninja/mobile/mvp/view/SplashView.java index f093f4943c9291631702f5f3fd5a60654931c1de..4a035fc9f7ab292d04f7f0b6910d9af834c4d60b 100644 --- a/app/src/main/java/com/tecsynt/nynja/mvp/view/SplashView.java +++ b/app/src/main/java/com/ninja/mobile/mvp/view/SplashView.java @@ -1,4 +1,4 @@ -package com.tecsynt.nynja.mvp.view; +package com.ninja.mobile.mvp.view; import com.arellomobile.mvp.MvpView; diff --git a/app/src/main/java/com/tecsynt/nynja/server/PahoService.java b/app/src/main/java/com/ninja/mobile/server/PahoService.java similarity index 98% rename from app/src/main/java/com/tecsynt/nynja/server/PahoService.java rename to app/src/main/java/com/ninja/mobile/server/PahoService.java index 8a8d645e560e28a0844a1df8051704c8b69e4617..e65f098477a30f58c0c23ace0b630c1b682c0ad1 100644 --- a/app/src/main/java/com/tecsynt/nynja/server/PahoService.java +++ b/app/src/main/java/com/ninja/mobile/server/PahoService.java @@ -1,4 +1,4 @@ -package com.tecsynt.nynja.server; +package com.ninja.mobile.server; import android.app.Service; import android.content.Context; diff --git a/app/src/main/java/com/tecsynt/nynja/server/com/softwarejoint/bert/Bert.java b/app/src/main/java/com/ninja/mobile/server/com/softwarejoint/bert/Bert.java similarity index 96% rename from app/src/main/java/com/tecsynt/nynja/server/com/softwarejoint/bert/Bert.java rename to app/src/main/java/com/ninja/mobile/server/com/softwarejoint/bert/Bert.java index 987023d8a61c4fc9048d445fed83b10f71be91a7..f2d9f1d4ac063a37d4dfa8f9c4c4d9a0ad5eeb5e 100644 --- a/app/src/main/java/com/tecsynt/nynja/server/com/softwarejoint/bert/Bert.java +++ b/app/src/main/java/com/ninja/mobile/server/com/softwarejoint/bert/Bert.java @@ -1,10 +1,7 @@ -package com.tecsynt.nynja.server.com.softwarejoint.bert; - -import android.annotation.SuppressLint; +package com.ninja.mobile.server.com.softwarejoint.bert; import java.nio.charset.Charset; import java.util.ArrayList; -import java.util.HashMap; abstract class Bert { diff --git a/app/src/main/java/com/tecsynt/nynja/server/com/softwarejoint/bert/BertAtom.java b/app/src/main/java/com/ninja/mobile/server/com/softwarejoint/bert/BertAtom.java similarity index 92% rename from app/src/main/java/com/tecsynt/nynja/server/com/softwarejoint/bert/BertAtom.java rename to app/src/main/java/com/ninja/mobile/server/com/softwarejoint/bert/BertAtom.java index 1ed50e9f39107d34e71bb37f6866bbea547b2827..c5e64a9be9efddb978825ee1d40236fea8614740 100644 --- a/app/src/main/java/com/tecsynt/nynja/server/com/softwarejoint/bert/BertAtom.java +++ b/app/src/main/java/com/ninja/mobile/server/com/softwarejoint/bert/BertAtom.java @@ -1,4 +1,4 @@ -package com.tecsynt.nynja.server.com.softwarejoint.bert; +package com.ninja.mobile.server.com.softwarejoint.bert; import android.support.annotation.NonNull; import android.text.TextUtils; diff --git a/app/src/main/java/com/tecsynt/nynja/server/com/softwarejoint/bert/BertDecoder.java b/app/src/main/java/com/ninja/mobile/server/com/softwarejoint/bert/BertDecoder.java similarity index 98% rename from app/src/main/java/com/tecsynt/nynja/server/com/softwarejoint/bert/BertDecoder.java rename to app/src/main/java/com/ninja/mobile/server/com/softwarejoint/bert/BertDecoder.java index e3f696afd0ada2062e616ada24a8cb23aa613cf7..7d5c69dc55e428ccac6640be9c4e06e36110956a 100644 --- a/app/src/main/java/com/tecsynt/nynja/server/com/softwarejoint/bert/BertDecoder.java +++ b/app/src/main/java/com/ninja/mobile/server/com/softwarejoint/bert/BertDecoder.java @@ -1,4 +1,4 @@ -package com.tecsynt.nynja.server.com.softwarejoint.bert; +package com.ninja.mobile.server.com.softwarejoint.bert; import android.text.TextUtils; @@ -8,7 +8,6 @@ import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.Map; -import java.util.Objects; @SuppressWarnings("WeakerAccess") public class BertDecoder extends Bert implements DistributionHeader { diff --git a/app/src/main/java/com/tecsynt/nynja/server/com/softwarejoint/bert/BertEncoder.java b/app/src/main/java/com/ninja/mobile/server/com/softwarejoint/bert/BertEncoder.java similarity index 99% rename from app/src/main/java/com/tecsynt/nynja/server/com/softwarejoint/bert/BertEncoder.java rename to app/src/main/java/com/ninja/mobile/server/com/softwarejoint/bert/BertEncoder.java index 3e8d25502e8cccbc5425ed3da3e2a991b19ad97d..cd8e736f33c80ef4088604786c6a8338aff42365 100644 --- a/app/src/main/java/com/tecsynt/nynja/server/com/softwarejoint/bert/BertEncoder.java +++ b/app/src/main/java/com/ninja/mobile/server/com/softwarejoint/bert/BertEncoder.java @@ -1,4 +1,4 @@ -package com.tecsynt.nynja.server.com.softwarejoint.bert; +package com.ninja.mobile.server.com.softwarejoint.bert; import java.lang.reflect.Array; import java.math.BigInteger; diff --git a/app/src/main/java/com/tecsynt/nynja/server/com/softwarejoint/bert/BertTuple.java b/app/src/main/java/com/ninja/mobile/server/com/softwarejoint/bert/BertTuple.java similarity index 70% rename from app/src/main/java/com/tecsynt/nynja/server/com/softwarejoint/bert/BertTuple.java rename to app/src/main/java/com/ninja/mobile/server/com/softwarejoint/bert/BertTuple.java index ef4399175c95645d71bb2eac4db9bbe1c6999d96..d741fab1b7a7259d7bbae534ec7f1cd209bd1d97 100644 --- a/app/src/main/java/com/tecsynt/nynja/server/com/softwarejoint/bert/BertTuple.java +++ b/app/src/main/java/com/ninja/mobile/server/com/softwarejoint/bert/BertTuple.java @@ -1,4 +1,4 @@ -package com.tecsynt.nynja.server.com.softwarejoint.bert; +package com.ninja.mobile.server.com.softwarejoint.bert; import java.util.ArrayList; diff --git a/app/src/main/java/com/tecsynt/nynja/server/com/softwarejoint/bert/DistributionHeader.java b/app/src/main/java/com/ninja/mobile/server/com/softwarejoint/bert/DistributionHeader.java similarity index 93% rename from app/src/main/java/com/tecsynt/nynja/server/com/softwarejoint/bert/DistributionHeader.java rename to app/src/main/java/com/ninja/mobile/server/com/softwarejoint/bert/DistributionHeader.java index e09f31a604d44b7c32640ee2b81a32056fbd73a5..30956241fc6e4f0666c0825de48f4a95bdd3891f 100644 --- a/app/src/main/java/com/tecsynt/nynja/server/com/softwarejoint/bert/DistributionHeader.java +++ b/app/src/main/java/com/ninja/mobile/server/com/softwarejoint/bert/DistributionHeader.java @@ -1,4 +1,4 @@ -package com.tecsynt.nynja.server.com.softwarejoint.bert; +package com.ninja.mobile.server.com.softwarejoint.bert; interface DistributionHeader { diff --git a/app/src/main/java/com/tecsynt/nynja/server/com/softwarejoint/bert/model/InitModel.java b/app/src/main/java/com/ninja/mobile/server/com/softwarejoint/bert/model/InitModel.java similarity index 67% rename from app/src/main/java/com/tecsynt/nynja/server/com/softwarejoint/bert/model/InitModel.java rename to app/src/main/java/com/ninja/mobile/server/com/softwarejoint/bert/model/InitModel.java index 0c0dc5cb436e9c8695eddef3a0eb70a4e75de325..af61e0705c0b6dd3efd9681cfb3f46fd08baac8d 100644 --- a/app/src/main/java/com/tecsynt/nynja/server/com/softwarejoint/bert/model/InitModel.java +++ b/app/src/main/java/com/ninja/mobile/server/com/softwarejoint/bert/model/InitModel.java @@ -1,4 +1,4 @@ -package com.tecsynt.nynja.server.com.softwarejoint.bert.model; +package com.ninja.mobile.server.com.softwarejoint.bert.model; public class InitModel extends ServerResponse{ diff --git a/app/src/main/java/com/tecsynt/nynja/server/com/softwarejoint/bert/model/ServerResponse.java b/app/src/main/java/com/ninja/mobile/server/com/softwarejoint/bert/model/ServerResponse.java similarity index 88% rename from app/src/main/java/com/tecsynt/nynja/server/com/softwarejoint/bert/model/ServerResponse.java rename to app/src/main/java/com/ninja/mobile/server/com/softwarejoint/bert/model/ServerResponse.java index f851127e2d2ac10db7d575c4464b71dd6066b767..0a95779fb924f7a2c48d5e0ee48227b329eb2989 100644 --- a/app/src/main/java/com/tecsynt/nynja/server/com/softwarejoint/bert/model/ServerResponse.java +++ b/app/src/main/java/com/ninja/mobile/server/com/softwarejoint/bert/model/ServerResponse.java @@ -1,12 +1,10 @@ -package com.tecsynt.nynja.server.com.softwarejoint.bert.model; +package com.ninja.mobile.server.com.softwarejoint.bert.model; import android.support.annotation.NonNull; import android.support.annotation.Nullable; -import android.util.Log; - -import com.tecsynt.nynja.server.com.softwarejoint.bert.BertAtom; -import com.tecsynt.nynja.server.com.softwarejoint.bert.BertTuple; +import com.ninja.mobile.server.com.softwarejoint.bert.BertAtom; +import com.ninja.mobile.server.com.softwarejoint.bert.BertTuple; import java.lang.reflect.Field; import java.util.ArrayList; diff --git a/app/src/main/java/com/tecsynt/nynja/ui/activities/EditProfileActivity.java b/app/src/main/java/com/ninja/mobile/ui/activities/EditProfileActivity.java similarity index 53% rename from app/src/main/java/com/tecsynt/nynja/ui/activities/EditProfileActivity.java rename to app/src/main/java/com/ninja/mobile/ui/activities/EditProfileActivity.java index 60655216bd7022361082109927950f19cd61c7e9..47b5bd44cb0d5962764c558d5d353172f990fe26 100644 --- a/app/src/main/java/com/tecsynt/nynja/ui/activities/EditProfileActivity.java +++ b/app/src/main/java/com/ninja/mobile/ui/activities/EditProfileActivity.java @@ -1,11 +1,13 @@ -package com.tecsynt.nynja.ui.activities; +package com.ninja.mobile.ui.activities; import android.content.Context; import android.content.Intent; import android.os.Bundle; -import com.tecsynt.nynja.ui.base.BaseActivity; -import com.tecsynt.nynja.ui.fragments.profile.EditProfileFragment; +import com.ninja.mobile.models.User; +import com.ninja.mobile.ui.base.BaseActivity; +import com.ninja.mobile.ui.fragments.profile.EditProfileFragment; +import com.ninja.mobile.ui.fragments.profile.MyProfileFragment; /** * Created by dmitro.boiko on 27/06/2017. @@ -13,11 +15,14 @@ import com.tecsynt.nynja.ui.fragments.profile.EditProfileFragment; public class EditProfileActivity extends BaseActivity { - public static Intent getLaunchEditProfileActivity(Context context) { - return new Intent(context, EditProfileActivity.class); + public static Intent getLaunchEditProfileActivity(Context context, User user) { + Intent intent = new Intent(context, EditProfileActivity.class); + intent.putExtra(MyProfileFragment.EDIT_PROFILE_TAG, user); + return intent; } - @Override protected void onCreate(Bundle savedInstanceState) { + @Override + protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); EditProfileFragment fragment = new EditProfileFragment(); fragment.setArguments(getIntent().getExtras()); diff --git a/app/src/main/java/com/tecsynt/nynja/ui/activities/MainActivity.java b/app/src/main/java/com/ninja/mobile/ui/activities/MainActivity.java similarity index 68% rename from app/src/main/java/com/tecsynt/nynja/ui/activities/MainActivity.java rename to app/src/main/java/com/ninja/mobile/ui/activities/MainActivity.java index aa8e07df648fcb391ff7b10d1f5f09171c514773..0f913520b7bff68fdaa6dafffca2825f0c4ec819 100644 --- a/app/src/main/java/com/tecsynt/nynja/ui/activities/MainActivity.java +++ b/app/src/main/java/com/ninja/mobile/ui/activities/MainActivity.java @@ -1,9 +1,9 @@ -package com.tecsynt.nynja.ui.activities; +package com.ninja.mobile.ui.activities; import android.os.Bundle; -import com.tecsynt.nynja.R; -import com.tecsynt.nynja.ui.base.BaseActivity; +import com.ninja.mobile.R; +import com.ninja.mobile.ui.base.BaseActivity; public class MainActivity extends BaseActivity { diff --git a/app/src/main/java/com/tecsynt/nynja/ui/activities/ProfileActivity.java b/app/src/main/java/com/ninja/mobile/ui/activities/ProfileActivity.java similarity index 85% rename from app/src/main/java/com/tecsynt/nynja/ui/activities/ProfileActivity.java rename to app/src/main/java/com/ninja/mobile/ui/activities/ProfileActivity.java index fc3633613ff93cf7d48a1f3dd9c153cfc5c83cbe..ab589aeecb7636d6446d107bf2d15f09a309df78 100644 --- a/app/src/main/java/com/tecsynt/nynja/ui/activities/ProfileActivity.java +++ b/app/src/main/java/com/ninja/mobile/ui/activities/ProfileActivity.java @@ -1,13 +1,13 @@ -package com.tecsynt.nynja.ui.activities; +package com.ninja.mobile.ui.activities; import android.content.Context; import android.content.Intent; import android.os.Bundle; -import com.tecsynt.nynja.ui.base.BaseActivity; -import com.tecsynt.nynja.ui.base.BaseFragment; -import com.tecsynt.nynja.ui.fragments.profile.MyProfileFragment; -import com.tecsynt.nynja.ui.fragments.profile.UserProfileFragment; +import com.ninja.mobile.ui.base.BaseActivity; +import com.ninja.mobile.ui.base.BaseFragment; +import com.ninja.mobile.ui.fragments.profile.MyProfileFragment; +import com.ninja.mobile.ui.fragments.profile.UserProfileFragment; /** * Created by dmitro.boiko on 27/06/2017. diff --git a/app/src/main/java/com/ninja/mobile/ui/activities/QRCodeGeneratorActivity.java b/app/src/main/java/com/ninja/mobile/ui/activities/QRCodeGeneratorActivity.java new file mode 100644 index 0000000000000000000000000000000000000000..f7ac1a7acc039ae91343db7b41e32f0198545fc9 --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/ui/activities/QRCodeGeneratorActivity.java @@ -0,0 +1,58 @@ +package com.ninja.mobile.ui.activities; + +import android.content.Context; +import android.content.Intent; +import android.graphics.Bitmap; +import android.os.Bundle; +import android.widget.ImageView; + +import com.google.zxing.WriterException; +import com.ninja.mobile.R; +import com.ninja.mobile.models.Person; +import com.ninja.mobile.models.User; +import com.ninja.mobile.ui.base.BaseActivity; +import com.ninja.mobile.ui.fragments.profile.MyProfileFragment; +import com.ninja.mobile.utils.ZxingEncoder; + +import butterknife.BindView; +import butterknife.OnClick; + + +/** + * Created by dmitro.boiko on 27/06/2017. + */ + +public class QRCodeGeneratorActivity extends BaseActivity { + + @BindView(R.id.qr_code_qrcodegeneratoractivity) + ImageView qrCode; + + public static Intent getLaunchQRCodeGeneratorActivity(Context context, User user) { + Intent intent = new Intent(context, QRCodeGeneratorActivity.class); + intent.putExtra(MyProfileFragment.EDIT_PROFILE_TAG, user); + return intent; + } + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_qr_code_generator); + if (getIntent() != null && getIntent().getExtras() != null) { + try { + //// FIXME: 29.06.2017 add real data + User user = getIntent().getParcelableExtra(MyProfileFragment.EDIT_PROFILE_TAG); + Person person = user.getAccounts().get(0).getPerson(); + String data = person.getPhoneNumber() + ";" + person.getFullName(); + Bitmap qrCodeBitmap = ZxingEncoder.getInstance().generate_QR_CODE(data); + qrCode.setImageBitmap(qrCodeBitmap); + } catch (WriterException e) { + e.printStackTrace(); + } + } + } + + @OnClick(android.R.id.content) + public void onContentClick() { + finish(); + } +} diff --git a/app/src/main/java/com/ninja/mobile/ui/activities/QRCodeReaderActivity.java b/app/src/main/java/com/ninja/mobile/ui/activities/QRCodeReaderActivity.java new file mode 100644 index 0000000000000000000000000000000000000000..2d5873884811cbae00fa9efcdf388028743e36c4 --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/ui/activities/QRCodeReaderActivity.java @@ -0,0 +1,71 @@ +package com.ninja.mobile.ui.activities; + +import android.app.AlertDialog; +import android.content.Context; +import android.content.Intent; +import android.os.Build; +import android.os.Bundle; + +import com.ninja.mobile.ui.base.BaseActivity; + +import butterknife.OnClick; +import me.dm7.barcodescanner.zbar.Result; +import me.dm7.barcodescanner.zbar.ZBarScannerView; + + +/** + * Created by dmitro.boiko on 27/06/2017. + */ + +public class QRCodeReaderActivity extends BaseActivity implements ZBarScannerView.ResultHandler { + + private ZBarScannerView mScannerView; + + public static Intent getLaunchQRCodeReaderActivity(Context context) { + return new Intent(context, QRCodeReaderActivity.class); + } + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + mScannerView = new ZBarScannerView(this); // Programmatically initialize the scanner view + setContentView(mScannerView); + } + + @Override + public void onResume() { + super.onResume(); + mScannerView.setResultHandler(this); // Register ourselves as a handler for scan results. + mScannerView.startCamera(); // Start camera on resume + } + + @Override + public void onPause() { + super.onPause(); + mScannerView.stopCamera(); // Stop camera on pause + } + + @Override + public void handleResult(Result rawResult) { + + AlertDialog.Builder builder; + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + builder = new AlertDialog.Builder(this, android.R.style.Theme_Material_Dialog_Alert); + } else { + builder = new AlertDialog.Builder(this); + } + builder.setTitle("QR Scanner") + .setMessage("Format: " + rawResult.getBarcodeFormat().getName() + + " Result: " + rawResult.getContents()) + .setPositiveButton(android.R.string.yes, (dialog, which) -> { + // continue with delete + finish(); + }) + .show(); + } + + @OnClick(android.R.id.content) + public void onContentClick() { + finish(); + } +} diff --git a/app/src/main/java/com/tecsynt/nynja/ui/activities/RegistrationActivity.java b/app/src/main/java/com/ninja/mobile/ui/activities/RegistrationActivity.java similarity index 80% rename from app/src/main/java/com/tecsynt/nynja/ui/activities/RegistrationActivity.java rename to app/src/main/java/com/ninja/mobile/ui/activities/RegistrationActivity.java index 4313ffc4f0bc7870c8c8837c163310918f2b165b..f6d7e9c16216b959ec8ecf39e3d8f05a0ef39d28 100644 --- a/app/src/main/java/com/tecsynt/nynja/ui/activities/RegistrationActivity.java +++ b/app/src/main/java/com/ninja/mobile/ui/activities/RegistrationActivity.java @@ -1,11 +1,11 @@ -package com.tecsynt.nynja.ui.activities; +package com.ninja.mobile.ui.activities; import android.content.Context; import android.content.Intent; import android.os.Bundle; -import com.tecsynt.nynja.R; -import com.tecsynt.nynja.ui.base.BaseActivity; +import com.ninja.mobile.R; +import com.ninja.mobile.ui.base.BaseActivity; public class RegistrationActivity extends BaseActivity { diff --git a/app/src/main/java/com/tecsynt/nynja/ui/activities/SplashActivity.java b/app/src/main/java/com/ninja/mobile/ui/activities/SplashActivity.java similarity index 81% rename from app/src/main/java/com/tecsynt/nynja/ui/activities/SplashActivity.java rename to app/src/main/java/com/ninja/mobile/ui/activities/SplashActivity.java index cd1a29f46262b3a79b67f7859b3c236cf88b137b..edb948d1a2ace7b3263b48d0671a32be28affe0b 100644 --- a/app/src/main/java/com/tecsynt/nynja/ui/activities/SplashActivity.java +++ b/app/src/main/java/com/ninja/mobile/ui/activities/SplashActivity.java @@ -1,13 +1,13 @@ -package com.tecsynt.nynja.ui.activities; +package com.ninja.mobile.ui.activities; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.support.annotation.Nullable; -import com.tecsynt.nynja.R; -import com.tecsynt.nynja.server.PahoService; -import com.tecsynt.nynja.ui.base.BaseActivity; +import com.ninja.mobile.R; +import com.ninja.mobile.server.PahoService; +import com.ninja.mobile.ui.base.BaseActivity; /** * Created by Max Chervatiuk on 22.06.17. diff --git a/app/src/main/java/com/tecsynt/nynja/ui/activities/WelcomeActivity.java b/app/src/main/java/com/ninja/mobile/ui/activities/WelcomeActivity.java similarity index 82% rename from app/src/main/java/com/tecsynt/nynja/ui/activities/WelcomeActivity.java rename to app/src/main/java/com/ninja/mobile/ui/activities/WelcomeActivity.java index 334ddf0698a0a678a17661bc655753507280457d..37172dc72d255c215576392ae22f3b8d65c56798 100644 --- a/app/src/main/java/com/tecsynt/nynja/ui/activities/WelcomeActivity.java +++ b/app/src/main/java/com/ninja/mobile/ui/activities/WelcomeActivity.java @@ -1,12 +1,12 @@ -package com.tecsynt.nynja.ui.activities; +package com.ninja.mobile.ui.activities; import android.os.Bundle; import android.support.v4.view.ViewPager; -import com.tecsynt.nynja.R; -import com.tecsynt.nynja.ui.adapters.WelcomePagerAdapter; -import com.tecsynt.nynja.ui.base.BaseActivity; -import com.tecsynt.nynja.ui.views.CirclePageIndicator; +import com.ninja.mobile.R; +import com.ninja.mobile.ui.adapters.WelcomePagerAdapter; +import com.ninja.mobile.ui.base.BaseActivity; +import com.ninja.mobile.ui.views.CirclePageIndicator; import butterknife.BindView; import butterknife.OnClick; diff --git a/app/src/main/java/com/tecsynt/nynja/ui/adapters/WelcomePagerAdapter.java b/app/src/main/java/com/ninja/mobile/ui/adapters/WelcomePagerAdapter.java similarity index 85% rename from app/src/main/java/com/tecsynt/nynja/ui/adapters/WelcomePagerAdapter.java rename to app/src/main/java/com/ninja/mobile/ui/adapters/WelcomePagerAdapter.java index e2d3af7d4ec8741cdb13dfb500dcf3c5b5755b03..d09d6b0eb1c80ba6713e415f84fccd5ad0097038 100644 --- a/app/src/main/java/com/tecsynt/nynja/ui/adapters/WelcomePagerAdapter.java +++ b/app/src/main/java/com/ninja/mobile/ui/adapters/WelcomePagerAdapter.java @@ -1,10 +1,10 @@ -package com.tecsynt.nynja.ui.adapters; +package com.ninja.mobile.ui.adapters; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; -import com.tecsynt.nynja.ui.fragments.welcome.WelcomeFragment; +import com.ninja.mobile.ui.fragments.welcome.WelcomeFragment; /** * Created by Max Chervatiuk on 24.06.17. diff --git a/app/src/main/java/com/ninja/mobile/ui/base/BaseActivity.java b/app/src/main/java/com/ninja/mobile/ui/base/BaseActivity.java new file mode 100644 index 0000000000000000000000000000000000000000..4b2925e6dd5411ec3d22fa1acf8b5e817b9eea89 --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/ui/base/BaseActivity.java @@ -0,0 +1,88 @@ +package com.ninja.mobile.ui.base; + +import android.app.ProgressDialog; +import android.content.Context; +import android.os.Bundle; +import android.support.annotation.LayoutRes; +import android.support.annotation.Nullable; +import android.support.annotation.StringRes; +import android.view.View; +import android.view.ViewGroup; +import android.view.inputmethod.InputMethodManager; + +import com.arellomobile.mvp.MvpAppCompatActivity; +import com.tbruyelle.rxpermissions2.RxPermissions; + +import butterknife.ButterKnife; + +/** + * Created by Max Chervatiuk on 22.06.17. + * Email: duo.blood@gmail.com + */ + +public abstract class BaseActivity extends MvpAppCompatActivity { + + private ProgressDialog mProgressDialog; + protected RxPermissions rxPermissions; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + rxPermissions = new RxPermissions(this); + } + + @Override + public void setContentView(@LayoutRes int layoutResID) { + super.setContentView(layoutResID); + ButterKnife.bind(this); + } + + @Override + public void setContentView(View view) { + super.setContentView(view); + ButterKnife.bind(this); + } + + @Override + public void setContentView(View view, ViewGroup.LayoutParams params) { + super.setContentView(view, params); + ButterKnife.bind(this); + } + + private void showDialog(@Nullable String message) { + mProgressDialog = new ProgressDialog(this, ProgressDialog.STYLE_SPINNER); + mProgressDialog.setMessage(message); + mProgressDialog.setCancelable(false); + mProgressDialog.show(); + } + + public void showProgressDialog(@StringRes int messageResId) { + showDialog(getString(messageResId)); + } + + public void showProgressDialog(@Nullable String message) { + showDialog(message); + } + + public void hideProgressDialog() { + if (mProgressDialog != null) { + mProgressDialog.cancel(); + mProgressDialog = null; + } + } + + public void hideKeyboard() { + InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); + View v = this.getCurrentFocus(); + if (v != null) { + imm.hideSoftInputFromWindow(v.getWindowToken(), 0); + v.clearFocus(); + } + } + + @Override + protected void onDestroy() { + super.onDestroy(); + hideProgressDialog(); + } +} diff --git a/app/src/main/java/com/ninja/mobile/ui/base/BaseDialogFragment.java b/app/src/main/java/com/ninja/mobile/ui/base/BaseDialogFragment.java new file mode 100644 index 0000000000000000000000000000000000000000..ca8e325eb7e64dba3e9fe11521b39042f9d7a1ee --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/ui/base/BaseDialogFragment.java @@ -0,0 +1,33 @@ +package com.ninja.mobile.ui.base; + +/* + * Created by Bo on 29.06.2017. + */ + + +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v7.app.AppCompatDialogFragment; +import android.view.View; + +import butterknife.ButterKnife; +import butterknife.Unbinder; + +public class BaseDialogFragment extends AppCompatDialogFragment { + + protected Unbinder unbinder; + + @Override + public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + unbinder = ButterKnife.bind(this, view); + } + + @Override + public void onDestroy() { + super.onDestroy(); + if (unbinder != null) { + unbinder.unbind(); + } + } +} diff --git a/app/src/main/java/com/tecsynt/nynja/ui/base/BaseFragment.java b/app/src/main/java/com/ninja/mobile/ui/base/BaseFragment.java similarity index 80% rename from app/src/main/java/com/tecsynt/nynja/ui/base/BaseFragment.java rename to app/src/main/java/com/ninja/mobile/ui/base/BaseFragment.java index 0be48943ee94d4ee72fa19819bae5f5eca2d5c8b..a5dc28de7f4b9bab2d84bad3ac11b33697f7e817 100644 --- a/app/src/main/java/com/tecsynt/nynja/ui/base/BaseFragment.java +++ b/app/src/main/java/com/ninja/mobile/ui/base/BaseFragment.java @@ -1,10 +1,11 @@ -package com.tecsynt.nynja.ui.base; +package com.ninja.mobile.ui.base; import android.os.Bundle; import android.support.annotation.Nullable; import android.view.View; import com.arellomobile.mvp.MvpAppCompatFragment; +import com.tbruyelle.rxpermissions2.RxPermissions; import butterknife.ButterKnife; import butterknife.Unbinder; @@ -17,11 +18,13 @@ import butterknife.Unbinder; public abstract class BaseFragment extends MvpAppCompatFragment { private Unbinder mUnBinder; + protected RxPermissions rxPermissions; @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); mUnBinder = ButterKnife.bind(this, view); + rxPermissions = new RxPermissions(getActivity()); } @Override diff --git a/app/src/main/java/com/ninja/mobile/ui/dialogs/ChooserPhotoDialog.java b/app/src/main/java/com/ninja/mobile/ui/dialogs/ChooserPhotoDialog.java new file mode 100644 index 0000000000000000000000000000000000000000..388c4dbfdb731d11a40736cd67347643f21d86ca --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/ui/dialogs/ChooserPhotoDialog.java @@ -0,0 +1,81 @@ +package com.ninja.mobile.ui.dialogs; + +/* + * Created by Bo on 29.06.2017. + */ + +import android.app.Dialog; +import android.app.DialogFragment; +import android.graphics.Color; +import android.graphics.drawable.ColorDrawable; +import android.os.Bundle; +import android.support.v4.app.FragmentManager; +import android.view.Gravity; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.view.Window; + +import com.ninja.mobile.R; +import com.ninja.mobile.intetfaces.OnChooserPhotoDialogListener; +import com.ninja.mobile.ui.base.BaseDialogFragment; + +import butterknife.OnClick; + +public class ChooserPhotoDialog extends BaseDialogFragment { + + private OnChooserPhotoDialogListener chooserPhotoDialogListener; + + private static ChooserPhotoDialog newInstance(OnChooserPhotoDialogListener chooserPhotoDialogListener) { + ChooserPhotoDialog chooserPhotoDialog = new ChooserPhotoDialog(); + chooserPhotoDialog.setChooserPhotoDialogListener(chooserPhotoDialogListener); + return chooserPhotoDialog; + } + + public static void show(OnChooserPhotoDialogListener onChooserPhotoDialogListener, FragmentManager fragmentManager) { + ChooserPhotoDialog chooserPhotoDialog = ChooserPhotoDialog.newInstance(onChooserPhotoDialogListener); + chooserPhotoDialog.setStyle(DialogFragment.STYLE_NO_TITLE, R.style.AppTheme_FullWidthDialog); + chooserPhotoDialog.show(fragmentManager, chooserPhotoDialog.getClass().getSimpleName()); + } + + public void setChooserPhotoDialogListener(OnChooserPhotoDialogListener chooserPhotoDialogListener) { + this.chooserPhotoDialogListener = chooserPhotoDialogListener; + } + + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + Dialog dialog = super.onCreateDialog(savedInstanceState); + Window window = dialog.getWindow(); + if (window != null) { + dialog.getWindow().setGravity(Gravity.BOTTOM); + dialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); + dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); + dialog.getWindow().getAttributes().windowAnimations = R.style.SlidingBottomDialogAnimation; + } + return dialog; + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + return inflater.inflate(R.layout.dialog_chooser_photo, container, false); + } + + + @OnClick(R.id.camera_dialog_chooser_photo) + public void onCameraClick() { + chooserPhotoDialogListener.onCameraClick(); + dismiss(); + } + + @OnClick(R.id.gallery_dialog_chooser_photo) + public void onGalleryClick() { + chooserPhotoDialogListener.onGalleryClick(); + dismiss(); + } + + @OnClick(R.id.cancel_dialog_chooser_photo) + public void onCancelClick() { + dismiss(); + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/ninja/mobile/ui/fragments/profile/EditProfileFragment.java b/app/src/main/java/com/ninja/mobile/ui/fragments/profile/EditProfileFragment.java new file mode 100644 index 0000000000000000000000000000000000000000..ac15d68b88e9af6d3bd518f72bb1989de8becf36 --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/ui/fragments/profile/EditProfileFragment.java @@ -0,0 +1,75 @@ +package com.ninja.mobile.ui.fragments.profile; + +import android.app.Activity; +import android.content.Intent; +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.design.widget.TextInputEditText; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import com.arellomobile.mvp.presenter.InjectPresenter; +import com.ninja.mobile.R; +import com.ninja.mobile.models.Person; +import com.ninja.mobile.mvp.presenters.EditProfilePresenter; +import com.ninja.mobile.mvp.view.EditProfileView; +import com.ninja.mobile.ui.base.BaseFragment; +import com.ninja.mobile.utils.StringUtils; + +import butterknife.BindView; +import butterknife.OnClick; + +/** + * Created by dmitro.boiko on 27/06/2017. + */ + +public class EditProfileFragment extends BaseFragment implements EditProfileView { + + @BindView(R.id.first_name_edt_first_name) + TextInputEditText firstName; + + @BindView(R.id.last_name_edt_first_name) + TextInputEditText lastName; + + @InjectPresenter + EditProfilePresenter editProfilePresenter; + + @Nullable + @Override + public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + return inflater.inflate(R.layout.fragment_edit_profile, container, false); + } + + @Override + public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + if (getArguments() != null) { + Person person = getArguments().getParcelable(MyProfileFragment.EDIT_PROFILE_TAG); + setUserModel(person); + } + } + + private void setUserModel(Person userPerson) { + firstName.setText(userPerson.getName()); + lastName.setText(userPerson.getSurname()); + } + + @OnClick(R.id.next_button_fragmenteditprofile) + public void onSaveButtonClick() { + editProfilePresenter.saveClick(StringUtils.getText(firstName), StringUtils.getText(lastName)); + } + + @Override + public void onErrorMessage(String errorMessage) { + + } + + @Override + public void onSaveClick(Person user) { + Intent intent = new Intent(); + intent.putExtra(MyProfileFragment.EDIT_PROFILE_TAG, user); + getActivity().setResult(Activity.RESULT_OK, intent); + getActivity().finish(); + } +} diff --git a/app/src/main/java/com/ninja/mobile/ui/fragments/profile/MyProfileFragment.java b/app/src/main/java/com/ninja/mobile/ui/fragments/profile/MyProfileFragment.java new file mode 100644 index 0000000000000000000000000000000000000000..dccb83bb8a1de651a11442fc434b24bdf0339052 --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/ui/fragments/profile/MyProfileFragment.java @@ -0,0 +1,253 @@ +package com.ninja.mobile.ui.fragments.profile; + +import android.Manifest; +import android.app.Activity; +import android.content.ContentResolver; +import android.content.Intent; +import android.database.Cursor; +import android.net.Uri; +import android.os.Bundle; +import android.provider.MediaStore; +import android.support.annotation.Nullable; +import android.support.v4.content.FileProvider; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import com.arellomobile.mvp.presenter.InjectPresenter; +import com.bumptech.glide.Glide; +import com.ninja.mobile.BuildConfig; +import com.ninja.mobile.R; +import com.ninja.mobile.intetfaces.OnChooserPhotoDialogListener; +import com.ninja.mobile.models.Account; +import com.ninja.mobile.models.Person; +import com.ninja.mobile.models.User; +import com.ninja.mobile.mvp.presenters.MyProfilePresenter; +import com.ninja.mobile.mvp.view.MyProfileView; +import com.ninja.mobile.ui.activities.EditProfileActivity; +import com.ninja.mobile.ui.activities.QRCodeGeneratorActivity; +import com.ninja.mobile.ui.activities.QRCodeReaderActivity; +import com.ninja.mobile.ui.base.BaseFragment; +import com.ninja.mobile.ui.dialogs.ChooserPhotoDialog; +import com.ninja.mobile.utils.ImageUtils; + +import java.io.File; +import java.io.IOException; + +import butterknife.BindView; +import butterknife.OnClick; +import butterknife.Optional; +import jp.wasabeef.glide.transformations.CropCircleTransformation; + +/** + * Created by dmitro.boiko on 27/06/2017. + **/ + +public class MyProfileFragment extends BaseFragment implements MyProfileView, + OnChooserPhotoDialogListener { + + private static final int IMAGE_REQUEST_CODE = 42; + private static final int GALLERY_REQUEST_CODE = 43; + private static final int EDIT_PROFILE_REQUEST_CODE = 44; + private static final int QR_SCAN_REQUEST_CODE = 45; + public static final String EDIT_PROFILE_TAG = "edit_profile"; + + @BindView(R.id.userphoto_myprofilefragment) + ImageView userPhoto; + @BindView(R.id.username_myprofilefragment) + TextView userName; + + @InjectPresenter + MyProfilePresenter mPresenter; + + private String photoPath; + private User user; + + @Nullable + @Override + public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + return inflater.inflate(R.layout.fragment_my_profile, container, false); + } + + @Override + public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + //// FIXME: 29.06.2017 set real user info + user = new User(); + Person person = new Person(); + person.setName("Marshall"); + person.setSurname("Taplits"); + person.setPhoneNumber("+380 56 234 567"); + Account account = new Account(); + account.setPerson(person); + user.getAccounts().add(account); + setPersonModel(person); + } + + @OnClick(R.id.username_myprofilefragment) + public void onEditNameClick() { + mPresenter.clickOnEditProfile(); + } + + @OnClick(R.id.qrcode_myprofilefragment) + public void oncQrCodeClick() { + mPresenter.clickOnQrCode(); + } + + @Optional + @OnClick({R.id.photo_myprofilefragment, R.id.userphoto_myprofilefragment}) + public void onPhotoClick() { + mPresenter.showChooserImageDialog(); + } + + @OnClick(R.id.scanner) + public void onScannerClick() { + //// FIXME: 29.06.2017 change place for call + rxPermissions + .request(Manifest.permission.CAMERA) + .subscribe(granted -> { + if (granted) { + startActivityForResult(QRCodeReaderActivity.getLaunchQRCodeReaderActivity(getContext()), QR_SCAN_REQUEST_CODE); + } + }); + } + + @Override + public void navigateToEditProfile() { + startActivityForResult(EditProfileActivity.getLaunchEditProfileActivity(getContext(), + user), EDIT_PROFILE_REQUEST_CODE); + } + + @Override + public void navigateToQqCode() { + startActivity(QRCodeGeneratorActivity.getLaunchQRCodeGeneratorActivity(getContext(), user)); + } + + @Override + public void navigateToCamera() { + startPhotoActivity(); + } + + private void startPhotoActivity() { + Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); + if (takePictureIntent.resolveActivity(getContext().getPackageManager()) != null) { + File photoFile = null; + try { + photoFile = ImageUtils.createImageFile(getContext()); + photoPath = photoFile.getAbsolutePath(); + } catch (IOException e) { + e.printStackTrace(); + } + if (photoFile != null) { + Uri photoURI = FileProvider.getUriForFile(getContext(), + BuildConfig.APPLICATION_ID + ".fileprovider", + photoFile); + takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI); + startActivityForResult(takePictureIntent, IMAGE_REQUEST_CODE); + } + } + } + + @Override + public void navigateToGallery() { + startGalleryActivity(); + } + + @Override + public void showChooserImageDialog() { + ChooserPhotoDialog.show(this, getChildFragmentManager()); + } + + @Override + + public void onActivityResult(int requestCode, int resultCode, Intent data) { + if (resultCode == Activity.RESULT_OK) { + if (requestCode == IMAGE_REQUEST_CODE) { + decodePhoto(); + } else if (requestCode == GALLERY_REQUEST_CODE && data != null) { + decodePhotoFromGallery(data); + } else if (requestCode == EDIT_PROFILE_REQUEST_CODE && data != null) { + Person person = data.getParcelableExtra(EDIT_PROFILE_TAG); + setPersonModel(person); + } + } + super.onActivityResult(requestCode, resultCode, data); + } + + private void setPersonModel(Person person) { + this.user.getAccount().setPerson(person); + userName.setText(person.getFullName()); + } + + private void decodePhotoFromGallery(Intent data) { + try { + String[] proj = {MediaStore.Images.Media.DATA}; + ContentResolver contentResolver = getContext().getContentResolver(); + if (contentResolver != null) { + Cursor cursor = contentResolver.query(data.getData(), proj, null, null, null); + if (cursor != null) { + int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); + cursor.moveToFirst(); + String string = cursor.getString(column_index); + File file = new File(string); + cursor.close(); + setUserAvatar(file); + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + private void startGalleryActivity() { + Intent galleryIntent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); + startActivityForResult(galleryIntent, GALLERY_REQUEST_CODE); + } + + private void decodePhoto() { + Uri imageUri = Uri.parse(photoPath); + try { + File file = new File(imageUri.getPath()); + setUserAvatar(file); + //// FIXME: 29.06.2017 should we add photo to gallery?? + } catch (Exception e) { + e.printStackTrace(); + } + } + + private void setUserAvatar(File file) { + Glide.with(this) + .load(file) + .bitmapTransform(new CropCircleTransformation(getContext())) + .into(userPhoto); + userPhoto.setPadding(0, 0, 0, 0); + } + + @Override + public void onCameraClick() { + rxPermissions + .request(Manifest.permission.CAMERA) + .subscribe(granted -> { + if (granted) { + mPresenter.clickOnCamera(); + } else { + //// FIXME: 29.06.2017 message? + } + }); + } + + @Override + public void onGalleryClick() { + rxPermissions + .request(Manifest.permission.READ_EXTERNAL_STORAGE) + .subscribe(granted -> { + if (granted) { + mPresenter.clickOnGallery(); + } else { + //// FIXME: 29.06.2017 message? + } + }); + } +} diff --git a/app/src/main/java/com/tecsynt/nynja/ui/fragments/profile/UserProfileFragment.java b/app/src/main/java/com/ninja/mobile/ui/fragments/profile/UserProfileFragment.java similarity index 80% rename from app/src/main/java/com/tecsynt/nynja/ui/fragments/profile/UserProfileFragment.java rename to app/src/main/java/com/ninja/mobile/ui/fragments/profile/UserProfileFragment.java index beb142124fbcf9d80b92510872f1091c62235a3f..71e3f4300e02c51d4ef126eed12fff4afec03a85 100644 --- a/app/src/main/java/com/tecsynt/nynja/ui/fragments/profile/UserProfileFragment.java +++ b/app/src/main/java/com/ninja/mobile/ui/fragments/profile/UserProfileFragment.java @@ -1,4 +1,4 @@ -package com.tecsynt.nynja.ui.fragments.profile; +package com.ninja.mobile.ui.fragments.profile; import android.os.Bundle; import android.support.annotation.Nullable; @@ -6,8 +6,8 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import com.tecsynt.nynja.R; -import com.tecsynt.nynja.ui.base.BaseFragment; +import com.ninja.mobile.R; +import com.ninja.mobile.ui.base.BaseFragment; /** * Created by dmitro.boiko on 27/06/2017. diff --git a/app/src/main/java/com/tecsynt/nynja/ui/fragments/signin/CodeFragment.java b/app/src/main/java/com/ninja/mobile/ui/fragments/signin/CodeFragment.java similarity index 81% rename from app/src/main/java/com/tecsynt/nynja/ui/fragments/signin/CodeFragment.java rename to app/src/main/java/com/ninja/mobile/ui/fragments/signin/CodeFragment.java index 5e4776704f98472f789aff43ace34af7d847d382..1e8ceea20dde86886c371577c4b68893079e86f3 100644 --- a/app/src/main/java/com/tecsynt/nynja/ui/fragments/signin/CodeFragment.java +++ b/app/src/main/java/com/ninja/mobile/ui/fragments/signin/CodeFragment.java @@ -1,4 +1,4 @@ -package com.tecsynt.nynja.ui.fragments.signin; +package com.ninja.mobile.ui.fragments.signin; import android.os.Bundle; import android.support.annotation.Nullable; @@ -6,8 +6,8 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import com.tecsynt.nynja.R; -import com.tecsynt.nynja.ui.base.BaseFragment; +import com.ninja.mobile.R; +import com.ninja.mobile.ui.base.BaseFragment; /** * Created by Max Chervatiuk on 23.06.17. diff --git a/app/src/main/java/com/tecsynt/nynja/ui/fragments/signin/InfoFragment.java b/app/src/main/java/com/ninja/mobile/ui/fragments/signin/InfoFragment.java similarity index 58% rename from app/src/main/java/com/tecsynt/nynja/ui/fragments/signin/InfoFragment.java rename to app/src/main/java/com/ninja/mobile/ui/fragments/signin/InfoFragment.java index 08affaea3fb37068c390ebd53b816863e2b2f2fb..dcc49fa5ab4bdcdc7a5d730b4650e49f9f0398fe 100644 --- a/app/src/main/java/com/tecsynt/nynja/ui/fragments/signin/InfoFragment.java +++ b/app/src/main/java/com/ninja/mobile/ui/fragments/signin/InfoFragment.java @@ -1,6 +1,6 @@ -package com.tecsynt.nynja.ui.fragments.signin; +package com.ninja.mobile.ui.fragments.signin; -import com.tecsynt.nynja.ui.base.BaseFragment; +import com.ninja.mobile.ui.base.BaseFragment; /** * Created by Max Chervatiuk on 23.06.17. diff --git a/app/src/main/java/com/tecsynt/nynja/ui/fragments/signin/LoginFragment.java b/app/src/main/java/com/ninja/mobile/ui/fragments/signin/LoginFragment.java similarity index 86% rename from app/src/main/java/com/tecsynt/nynja/ui/fragments/signin/LoginFragment.java rename to app/src/main/java/com/ninja/mobile/ui/fragments/signin/LoginFragment.java index b9601a9fb80a4a906017da8ee95224abb558ce2b..704edcc4254240b166c0a32e324b5200b9444ee1 100644 --- a/app/src/main/java/com/tecsynt/nynja/ui/fragments/signin/LoginFragment.java +++ b/app/src/main/java/com/ninja/mobile/ui/fragments/signin/LoginFragment.java @@ -1,4 +1,4 @@ -package com.tecsynt.nynja.ui.fragments.signin; +package com.ninja.mobile.ui.fragments.signin; import android.graphics.drawable.Drawable; import android.graphics.drawable.LayerDrawable; @@ -14,15 +14,15 @@ import com.arellomobile.mvp.presenter.InjectPresenter; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import com.google.gson.stream.JsonReader; -import com.tecsynt.nynja.R; -import com.tecsynt.nynja.data.models.Country; -import com.tecsynt.nynja.mvp.presenters.LoginPresenter; -import com.tecsynt.nynja.mvp.view.LoginView; -import com.tecsynt.nynja.ui.activities.ProfileActivity; -import com.tecsynt.nynja.ui.base.BaseFragment; -import com.tecsynt.nynja.ui.views.wheel.TextDrawable; -import com.tecsynt.nynja.ui.views.wheel.WheelView; -import com.tecsynt.nynja.ui.views.wheel.adapter.WheelArrayAdapter; +import com.ninja.mobile.R; +import com.ninja.mobile.data.models.Country; +import com.ninja.mobile.mvp.presenters.LoginPresenter; +import com.ninja.mobile.mvp.view.LoginView; +import com.ninja.mobile.ui.activities.ProfileActivity; +import com.ninja.mobile.ui.base.BaseFragment; +import com.ninja.mobile.ui.views.wheel.TextDrawable; +import com.ninja.mobile.ui.views.wheel.WheelView; +import com.ninja.mobile.ui.views.wheel.adapter.WheelArrayAdapter; import java.io.InputStream; import java.io.InputStreamReader; diff --git a/app/src/main/java/com/tecsynt/nynja/ui/fragments/welcome/WelcomeFragment.java b/app/src/main/java/com/ninja/mobile/ui/fragments/welcome/WelcomeFragment.java similarity index 83% rename from app/src/main/java/com/tecsynt/nynja/ui/fragments/welcome/WelcomeFragment.java rename to app/src/main/java/com/ninja/mobile/ui/fragments/welcome/WelcomeFragment.java index 1292a6c75a242f77c9f9e69d6b9b082b20ab14ed..e54383ea83caf663189547bbbd88a1bec2e4da44 100644 --- a/app/src/main/java/com/tecsynt/nynja/ui/fragments/welcome/WelcomeFragment.java +++ b/app/src/main/java/com/ninja/mobile/ui/fragments/welcome/WelcomeFragment.java @@ -1,4 +1,4 @@ -package com.tecsynt.nynja.ui.fragments.welcome; +package com.ninja.mobile.ui.fragments.welcome; import android.os.Bundle; import android.support.annotation.Nullable; @@ -6,8 +6,8 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import com.tecsynt.nynja.R; -import com.tecsynt.nynja.ui.base.BaseFragment; +import com.ninja.mobile.R; +import com.ninja.mobile.ui.base.BaseFragment; /** * Created by Max Chervatiuk on 24.06.17. diff --git a/app/src/main/java/com/tecsynt/nynja/ui/views/CirclePageIndicator.java b/app/src/main/java/com/ninja/mobile/ui/views/CirclePageIndicator.java similarity index 99% rename from app/src/main/java/com/tecsynt/nynja/ui/views/CirclePageIndicator.java rename to app/src/main/java/com/ninja/mobile/ui/views/CirclePageIndicator.java index edab43cb94c9ec873f4106d3ba3606d1d586e07b..ca1d66888d5a53c5648482a5312590dbcae2c003 100644 --- a/app/src/main/java/com/tecsynt/nynja/ui/views/CirclePageIndicator.java +++ b/app/src/main/java/com/ninja/mobile/ui/views/CirclePageIndicator.java @@ -1,4 +1,4 @@ -package com.tecsynt.nynja.ui.views; +package com.ninja.mobile.ui.views; import android.content.Context; import android.content.res.TypedArray; @@ -16,7 +16,7 @@ import android.view.MotionEvent; import android.view.View; import android.view.ViewConfiguration; -import com.tecsynt.nynja.R; +import com.ninja.mobile.R; import static android.graphics.Paint.ANTI_ALIAS_FLAG; import static android.graphics.Paint.Style; diff --git a/app/src/main/java/com/tecsynt/nynja/ui/views/HintEditText.java b/app/src/main/java/com/ninja/mobile/ui/views/HintEditText.java similarity index 97% rename from app/src/main/java/com/tecsynt/nynja/ui/views/HintEditText.java rename to app/src/main/java/com/ninja/mobile/ui/views/HintEditText.java index 69e9068c013c418f86eb3b43c96d6f005d64dbef..40d28ca75f53afb864eb0bf8c8eb174dc96b8026 100644 --- a/app/src/main/java/com/tecsynt/nynja/ui/views/HintEditText.java +++ b/app/src/main/java/com/ninja/mobile/ui/views/HintEditText.java @@ -1,4 +1,4 @@ -package com.tecsynt.nynja.ui.views; +package com.ninja.mobile.ui.views; import android.content.Context; import android.graphics.Canvas; @@ -7,7 +7,7 @@ import android.graphics.Rect; import android.support.v7.widget.AppCompatEditText; import android.util.AttributeSet; -import com.tecsynt.nynja.R; +import com.ninja.mobile.R; /** * Date: 25.06.17 diff --git a/app/src/main/java/com/tecsynt/nynja/ui/views/wheel/Circle.java b/app/src/main/java/com/ninja/mobile/ui/views/wheel/Circle.java old mode 100755 new mode 100644 similarity index 98% rename from app/src/main/java/com/tecsynt/nynja/ui/views/wheel/Circle.java rename to app/src/main/java/com/ninja/mobile/ui/views/wheel/Circle.java index 6d4fa881188546d2bcdb9cfef8303925563d8337..33a66766a78ac37ff734ef24a08de4016ad33a02 --- a/app/src/main/java/com/tecsynt/nynja/ui/views/wheel/Circle.java +++ b/app/src/main/java/com/ninja/mobile/ui/views/wheel/Circle.java @@ -1,4 +1,4 @@ -package com.tecsynt.nynja.ui.views.wheel; +package com.ninja.mobile.ui.views.wheel; import android.graphics.Rect; diff --git a/app/src/main/java/com/tecsynt/nynja/ui/views/wheel/DrawUtils.java b/app/src/main/java/com/ninja/mobile/ui/views/wheel/DrawUtils.java similarity index 98% rename from app/src/main/java/com/tecsynt/nynja/ui/views/wheel/DrawUtils.java rename to app/src/main/java/com/ninja/mobile/ui/views/wheel/DrawUtils.java index e48945324accdd8108a3d20f7849d72e3ae74be5..1d88068e58d8e75d63b12ee139e8ddcecba6f61e 100644 --- a/app/src/main/java/com/tecsynt/nynja/ui/views/wheel/DrawUtils.java +++ b/app/src/main/java/com/ninja/mobile/ui/views/wheel/DrawUtils.java @@ -1,4 +1,4 @@ -package com.tecsynt.nynja.ui.views.wheel; +package com.ninja.mobile.ui.views.wheel; import android.graphics.Canvas; import android.graphics.Paint; diff --git a/app/src/main/java/com/tecsynt/nynja/ui/views/wheel/TextDrawable.java b/app/src/main/java/com/ninja/mobile/ui/views/wheel/TextDrawable.java old mode 100755 new mode 100644 similarity index 96% rename from app/src/main/java/com/tecsynt/nynja/ui/views/wheel/TextDrawable.java rename to app/src/main/java/com/ninja/mobile/ui/views/wheel/TextDrawable.java index 23392329457b8c9728183a5cf9cda78dc61a0142..cfe27b80c25f0461e11bc4a4915c700d47cb79d3 --- a/app/src/main/java/com/tecsynt/nynja/ui/views/wheel/TextDrawable.java +++ b/app/src/main/java/com/ninja/mobile/ui/views/wheel/TextDrawable.java @@ -1,4 +1,4 @@ -package com.tecsynt.nynja.ui.views.wheel; +package com.ninja.mobile.ui.views.wheel; import android.graphics.Canvas; import android.graphics.Color; diff --git a/app/src/main/java/com/tecsynt/nynja/ui/views/wheel/WheelView.java b/app/src/main/java/com/ninja/mobile/ui/views/wheel/WheelView.java old mode 100755 new mode 100644 similarity index 99% rename from app/src/main/java/com/tecsynt/nynja/ui/views/wheel/WheelView.java rename to app/src/main/java/com/ninja/mobile/ui/views/wheel/WheelView.java index fd439e164f6cd2e3b9243d3c0cf635a0314c6039..64ef55802cc56154bc05878f414b4a5736c1d885 --- a/app/src/main/java/com/tecsynt/nynja/ui/views/wheel/WheelView.java +++ b/app/src/main/java/com/ninja/mobile/ui/views/wheel/WheelView.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.tecsynt.nynja.ui.views.wheel; +package com.ninja.mobile.ui.views.wheel; import android.content.Context; import android.content.res.TypedArray; @@ -35,12 +35,12 @@ import android.view.VelocityTracker; import android.view.View; import android.view.ViewGroup; -import com.tecsynt.nynja.R; -import com.tecsynt.nynja.ui.views.wheel.adapter.WheelAdapter; -import com.tecsynt.nynja.ui.views.wheel.transformer.FadingSelectionTransformer; -import com.tecsynt.nynja.ui.views.wheel.transformer.ScalingItemTransformer; -import com.tecsynt.nynja.ui.views.wheel.transformer.WheelItemTransformer; -import com.tecsynt.nynja.ui.views.wheel.transformer.WheelSelectionTransformer; +import com.ninja.mobile.R; +import com.ninja.mobile.ui.views.wheel.adapter.WheelAdapter; +import com.ninja.mobile.ui.views.wheel.transformer.FadingSelectionTransformer; +import com.ninja.mobile.ui.views.wheel.transformer.ScalingItemTransformer; +import com.ninja.mobile.ui.views.wheel.transformer.WheelItemTransformer; +import com.ninja.mobile.ui.views.wheel.transformer.WheelSelectionTransformer; import java.util.ArrayList; import java.util.List; diff --git a/app/src/main/java/com/tecsynt/nynja/ui/views/wheel/adapter/WheelAdapter.java b/app/src/main/java/com/ninja/mobile/ui/views/wheel/adapter/WheelAdapter.java old mode 100755 new mode 100644 similarity index 89% rename from app/src/main/java/com/tecsynt/nynja/ui/views/wheel/adapter/WheelAdapter.java rename to app/src/main/java/com/ninja/mobile/ui/views/wheel/adapter/WheelAdapter.java index 06c84d49f0111fc8718934533c095d324bcda6c2..354c9d5bc7f24cb92b883d8e33aef0a85f038d29 --- a/app/src/main/java/com/tecsynt/nynja/ui/views/wheel/adapter/WheelAdapter.java +++ b/app/src/main/java/com/ninja/mobile/ui/views/wheel/adapter/WheelAdapter.java @@ -1,8 +1,8 @@ -package com.tecsynt.nynja.ui.views.wheel.adapter; +package com.ninja.mobile.ui.views.wheel.adapter; import android.graphics.drawable.Drawable; -import com.tecsynt.nynja.ui.views.wheel.WheelView; +import com.ninja.mobile.ui.views.wheel.WheelView; /** *

diff --git a/app/src/main/java/com/tecsynt/nynja/ui/views/wheel/adapter/WheelArrayAdapter.java b/app/src/main/java/com/ninja/mobile/ui/views/wheel/adapter/WheelArrayAdapter.java old mode 100755 new mode 100644 similarity index 87% rename from app/src/main/java/com/tecsynt/nynja/ui/views/wheel/adapter/WheelArrayAdapter.java rename to app/src/main/java/com/ninja/mobile/ui/views/wheel/adapter/WheelArrayAdapter.java index 9b041784e1f4a19aceecfa15a00ed85c5a9ed725..acf622bcf23a501a6f3c2d9f7ca2625509aa7785 --- a/app/src/main/java/com/tecsynt/nynja/ui/views/wheel/adapter/WheelArrayAdapter.java +++ b/app/src/main/java/com/ninja/mobile/ui/views/wheel/adapter/WheelArrayAdapter.java @@ -1,4 +1,4 @@ -package com.tecsynt.nynja.ui.views.wheel.adapter; +package com.ninja.mobile.ui.views.wheel.adapter; import java.util.List; diff --git a/app/src/main/java/com/tecsynt/nynja/ui/views/wheel/transformer/FadingSelectionTransformer.java b/app/src/main/java/com/ninja/mobile/ui/views/wheel/transformer/FadingSelectionTransformer.java old mode 100755 new mode 100644 similarity index 83% rename from app/src/main/java/com/tecsynt/nynja/ui/views/wheel/transformer/FadingSelectionTransformer.java rename to app/src/main/java/com/ninja/mobile/ui/views/wheel/transformer/FadingSelectionTransformer.java index 88909d0e1c274c1db604a6dd1deb81840c9ac4ee..f352e4ed74eb4535bf60078f82a746aedb06d84f --- a/app/src/main/java/com/tecsynt/nynja/ui/views/wheel/transformer/FadingSelectionTransformer.java +++ b/app/src/main/java/com/ninja/mobile/ui/views/wheel/transformer/FadingSelectionTransformer.java @@ -1,8 +1,8 @@ -package com.tecsynt.nynja.ui.views.wheel.transformer; +package com.ninja.mobile.ui.views.wheel.transformer; import android.graphics.drawable.Drawable; -import com.tecsynt.nynja.ui.views.wheel.WheelView; +import com.ninja.mobile.ui.views.wheel.WheelView; public class FadingSelectionTransformer implements WheelSelectionTransformer { diff --git a/app/src/main/java/com/tecsynt/nynja/ui/views/wheel/transformer/ScalingItemTransformer.java b/app/src/main/java/com/ninja/mobile/ui/views/wheel/transformer/ScalingItemTransformer.java old mode 100755 new mode 100644 similarity index 80% rename from app/src/main/java/com/tecsynt/nynja/ui/views/wheel/transformer/ScalingItemTransformer.java rename to app/src/main/java/com/ninja/mobile/ui/views/wheel/transformer/ScalingItemTransformer.java index 2f40d948f12d98515e75658d97860ac9595078ee..01189df7f5cdce17ea20efeca94d8bdbb16614b0 --- a/app/src/main/java/com/tecsynt/nynja/ui/views/wheel/transformer/ScalingItemTransformer.java +++ b/app/src/main/java/com/ninja/mobile/ui/views/wheel/transformer/ScalingItemTransformer.java @@ -1,9 +1,9 @@ -package com.tecsynt.nynja.ui.views.wheel.transformer; +package com.ninja.mobile.ui.views.wheel.transformer; import android.graphics.Rect; -import com.tecsynt.nynja.ui.views.wheel.Circle; -import com.tecsynt.nynja.ui.views.wheel.WheelView; +import com.ninja.mobile.ui.views.wheel.Circle; +import com.ninja.mobile.ui.views.wheel.WheelView; public class ScalingItemTransformer implements WheelItemTransformer { diff --git a/app/src/main/java/com/tecsynt/nynja/ui/views/wheel/transformer/SimpleItemTransformer.java b/app/src/main/java/com/ninja/mobile/ui/views/wheel/transformer/SimpleItemTransformer.java old mode 100755 new mode 100644 similarity index 76% rename from app/src/main/java/com/tecsynt/nynja/ui/views/wheel/transformer/SimpleItemTransformer.java rename to app/src/main/java/com/ninja/mobile/ui/views/wheel/transformer/SimpleItemTransformer.java index 291365f413f874e4486c62991958a1e186541c7e..0f7440390c583f4ad41dbd38a6d908d457518283 --- a/app/src/main/java/com/tecsynt/nynja/ui/views/wheel/transformer/SimpleItemTransformer.java +++ b/app/src/main/java/com/ninja/mobile/ui/views/wheel/transformer/SimpleItemTransformer.java @@ -1,9 +1,9 @@ -package com.tecsynt.nynja.ui.views.wheel.transformer; +package com.ninja.mobile.ui.views.wheel.transformer; import android.graphics.Rect; -import com.tecsynt.nynja.ui.views.wheel.Circle; -import com.tecsynt.nynja.ui.views.wheel.WheelView; +import com.ninja.mobile.ui.views.wheel.Circle; +import com.ninja.mobile.ui.views.wheel.WheelView; public class SimpleItemTransformer implements WheelItemTransformer { diff --git a/app/src/main/java/com/tecsynt/nynja/ui/views/wheel/transformer/WheelItemTransformer.java b/app/src/main/java/com/ninja/mobile/ui/views/wheel/transformer/WheelItemTransformer.java old mode 100755 new mode 100644 similarity index 74% rename from app/src/main/java/com/tecsynt/nynja/ui/views/wheel/transformer/WheelItemTransformer.java rename to app/src/main/java/com/ninja/mobile/ui/views/wheel/transformer/WheelItemTransformer.java index 919d9d2b5a191b56494dcb58ac8984525221878d..47be16e626c829b114b5fda1e9a1bcd489e2d2c2 --- a/app/src/main/java/com/tecsynt/nynja/ui/views/wheel/transformer/WheelItemTransformer.java +++ b/app/src/main/java/com/ninja/mobile/ui/views/wheel/transformer/WheelItemTransformer.java @@ -1,8 +1,8 @@ -package com.tecsynt.nynja.ui.views.wheel.transformer; +package com.ninja.mobile.ui.views.wheel.transformer; import android.graphics.Rect; -import com.tecsynt.nynja.ui.views.wheel.WheelView; +import com.ninja.mobile.ui.views.wheel.WheelView; public interface WheelItemTransformer { diff --git a/app/src/main/java/com/tecsynt/nynja/ui/views/wheel/transformer/WheelSelectionTransformer.java b/app/src/main/java/com/ninja/mobile/ui/views/wheel/transformer/WheelSelectionTransformer.java old mode 100755 new mode 100644 similarity index 60% rename from app/src/main/java/com/tecsynt/nynja/ui/views/wheel/transformer/WheelSelectionTransformer.java rename to app/src/main/java/com/ninja/mobile/ui/views/wheel/transformer/WheelSelectionTransformer.java index 34c9a00550b5e335531d4c46497cfd3f618fa9f1..a63f67c9128b3c03412557bb8333aa9fe4a8a676 --- a/app/src/main/java/com/tecsynt/nynja/ui/views/wheel/transformer/WheelSelectionTransformer.java +++ b/app/src/main/java/com/ninja/mobile/ui/views/wheel/transformer/WheelSelectionTransformer.java @@ -1,8 +1,8 @@ -package com.tecsynt.nynja.ui.views.wheel.transformer; +package com.ninja.mobile.ui.views.wheel.transformer; import android.graphics.drawable.Drawable; -import com.tecsynt.nynja.ui.views.wheel.WheelView; +import com.ninja.mobile.ui.views.wheel.WheelView; public interface WheelSelectionTransformer { diff --git a/app/src/main/java/com/ninja/mobile/utils/ImageUtils.java b/app/src/main/java/com/ninja/mobile/utils/ImageUtils.java new file mode 100644 index 0000000000000000000000000000000000000000..6872a07a513b36b54345f51e62d28be1344c6959 --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/utils/ImageUtils.java @@ -0,0 +1,54 @@ +package com.ninja.mobile.utils; + +/* + * Created by Bo on 29.06.2017. + */ + +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.BitmapShader; +import android.graphics.Canvas; +import android.graphics.Paint; +import android.os.Environment; + +import java.io.File; +import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.Date; + +public class ImageUtils { + + public static File createImageFile(Context context) throws IOException { + // Create an image file name + String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); + String imageFileName = "JPEG_" + timeStamp + "_"; + File storageDir = context.getExternalFilesDir(Environment.DIRECTORY_PICTURES); + return File.createTempFile( + imageFileName, /* prefix */ + ".jpg", /* suffix */ + storageDir /* directory */ + ); + } + + public static Bitmap circleTransform(Bitmap source) { + int size = Math.min(source.getWidth(), source.getHeight()); + + int x = (source.getWidth() - size) / 2; + int y = (source.getHeight() - size) / 2; + + Bitmap squaredBitmap = Bitmap.createBitmap(source, x, y, size, size); + if (squaredBitmap != source) { + source.recycle(); + } + Bitmap bitmap = Bitmap.createBitmap(size, size, source.getConfig()); + Canvas canvas = new Canvas(bitmap); + Paint paint = new Paint(); + BitmapShader shader = new BitmapShader(squaredBitmap, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP); + paint.setShader(shader); + paint.setAntiAlias(true); + float r = size / 2f; + canvas.drawCircle(r, r, r, paint); + squaredBitmap.recycle(); + return bitmap; + } +} diff --git a/app/src/main/java/com/tecsynt/nynja/utils/PhoneWatcher.java b/app/src/main/java/com/ninja/mobile/utils/PhoneWatcher.java similarity index 97% rename from app/src/main/java/com/tecsynt/nynja/utils/PhoneWatcher.java rename to app/src/main/java/com/ninja/mobile/utils/PhoneWatcher.java index c0e16ca9bfad5b37d4f98a57322d51220a0f478c..f9ddd7b850edb68b0bfe2a0828853e8edf1492c6 100644 --- a/app/src/main/java/com/tecsynt/nynja/utils/PhoneWatcher.java +++ b/app/src/main/java/com/ninja/mobile/utils/PhoneWatcher.java @@ -1,9 +1,9 @@ -package com.tecsynt.nynja.utils; +package com.ninja.mobile.utils; import android.text.Editable; import android.text.TextWatcher; -import com.tecsynt.nynja.ui.views.HintEditText; +import com.ninja.mobile.ui.views.HintEditText; /** * Date: 25.06.17 diff --git a/app/src/main/java/com/ninja/mobile/utils/RealPathUtil.java b/app/src/main/java/com/ninja/mobile/utils/RealPathUtil.java new file mode 100644 index 0000000000000000000000000000000000000000..3ddf16297884c4761b963158b43f8b30cb07e4f1 --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/utils/RealPathUtil.java @@ -0,0 +1,67 @@ +package com.ninja.mobile.utils; + +/** + * Created by dmitro.boiko on 30/06/2017. + */ + +import android.annotation.SuppressLint; +import android.content.Context; +import android.content.CursorLoader; +import android.database.Cursor; +import android.net.Uri; +import android.os.Build; +import android.provider.MediaStore; + +import java.io.File; + +public class RealPathUtil { + + public static File getFile(Context context, Uri uri) { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) { + return new File(getRealPathFromURI_API11to18(context, uri)); + } else { + return new File(getRealPathFromURI_API19(context, uri)); + } + } + + @SuppressLint("NewApi") + private static String getRealPathFromURI_API19(Context context, Uri uri) { + String filePath = ""; + + String[] column = {MediaStore.Images.Media.DATA}; + + // where id is equal to + String sel = MediaStore.Images.Media._ID + "=?"; + + Cursor cursor = context.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, + column, sel, null, null); + if (cursor != null) { + int columnIndex = cursor.getColumnIndex(column[0]); + + if (cursor.moveToFirst()) { + filePath = cursor.getString(columnIndex); + } + cursor.close(); + } + return filePath; + } + + + @SuppressLint("NewApi") + private static String getRealPathFromURI_API11to18(Context context, Uri contentUri) { + String[] proj = {MediaStore.Images.Media.DATA}; + String result = null; + + CursorLoader cursorLoader = new CursorLoader( + context, + contentUri, proj, null, null, null); + Cursor cursor = cursorLoader.loadInBackground(); + + if (cursor != null) { + int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); + cursor.moveToFirst(); + result = cursor.getString(column_index); + } + return result; + } +} diff --git a/app/src/main/java/com/ninja/mobile/utils/StringUtils.java b/app/src/main/java/com/ninja/mobile/utils/StringUtils.java new file mode 100644 index 0000000000000000000000000000000000000000..24773ccb4844200b66d8d0e3533d8f242a9fbee7 --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/utils/StringUtils.java @@ -0,0 +1,20 @@ +package com.ninja.mobile.utils; + +/* + * Created by Bo on 29.06.2017. + */ + +import android.support.annotation.Nullable; +import android.text.TextUtils; +import android.widget.TextView; + +public class StringUtils { + + public static boolean isNotEmpty(String data) { + return data != null && !TextUtils.isEmpty(data.trim()); + } + + public static String getText(@Nullable TextView view) { + return view != null ? view.getText().toString() : ""; + } +} diff --git a/app/src/main/java/com/ninja/mobile/utils/ValidationUtils.java b/app/src/main/java/com/ninja/mobile/utils/ValidationUtils.java new file mode 100644 index 0000000000000000000000000000000000000000..bde78378674d11922d7317b7e5eb188a471cc0e7 --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/utils/ValidationUtils.java @@ -0,0 +1,24 @@ +package com.ninja.mobile.utils; + +import android.util.Patterns; + +/** + * Created by Max Chervatiuk on 22.06.17. + * Email: duo.blood@gmail.com + *

+ *

+ * A collection of fields validation. + */ + +public class ValidationUtils { + //// TODO: 22.06.17 Implement class + + public static boolean isEmailVaild(String email) { + return email != null && Patterns.EMAIL_ADDRESS.matcher(email).matches(); + } + + public static boolean isNameVaild(String data) { + return StringUtils.isNotEmpty(data) && data.length() > 2; + } + +} diff --git a/app/src/main/java/com/tecsynt/nynja/utils/ZxingEncoder.java b/app/src/main/java/com/ninja/mobile/utils/ZxingEncoder.java similarity index 99% rename from app/src/main/java/com/tecsynt/nynja/utils/ZxingEncoder.java rename to app/src/main/java/com/ninja/mobile/utils/ZxingEncoder.java index 0183746c73b5c3a717712922fb7093805f8af438..8fd0dcd07945e747427fed5040557c41f6eabcf5 100644 --- a/app/src/main/java/com/tecsynt/nynja/utils/ZxingEncoder.java +++ b/app/src/main/java/com/ninja/mobile/utils/ZxingEncoder.java @@ -1,4 +1,4 @@ -package com.tecsynt.nynja.utils; +package com.ninja.mobile.utils; import android.graphics.Bitmap; import android.graphics.Color; diff --git a/app/src/main/java/com/tecsynt/nynja/mvp/presenters/MyProfilePresenter.java b/app/src/main/java/com/tecsynt/nynja/mvp/presenters/MyProfilePresenter.java deleted file mode 100644 index 081a3334da18e40fa2ea19c060bae2b09330209b..0000000000000000000000000000000000000000 --- a/app/src/main/java/com/tecsynt/nynja/mvp/presenters/MyProfilePresenter.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.tecsynt.nynja.mvp.presenters; - -import com.arellomobile.mvp.InjectViewState; -import com.arellomobile.mvp.MvpPresenter; -import com.tecsynt.nynja.mvp.view.MyProfileView; - -/** - * Created by Max Chervatiuk on 25.06.17. - * Email: duo.blood@gmail.com - */ -@InjectViewState -public class MyProfilePresenter extends MvpPresenter { - - public void navigateToEditProfileScreen() { - getViewState().navigateToEditProfile(); - } - - public void navigateToQrCodeScreen() { - getViewState().navigateToQqCode(); - } - - public void navigateToCameraScreen() { - } - - public void navigateToGalleryScreen() { - } - - -} diff --git a/app/src/main/java/com/tecsynt/nynja/ui/activities/QRCodeGeneratorActivity.java b/app/src/main/java/com/tecsynt/nynja/ui/activities/QRCodeGeneratorActivity.java deleted file mode 100644 index 78631d301de42427cb3f449ddc48f38685651711..0000000000000000000000000000000000000000 --- a/app/src/main/java/com/tecsynt/nynja/ui/activities/QRCodeGeneratorActivity.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.tecsynt.nynja.ui.activities; - -import android.content.Context; -import android.content.Intent; -import android.graphics.Bitmap; -import android.os.Bundle; -import android.widget.ImageView; - -import com.google.zxing.WriterException; -import com.tecsynt.nynja.R; -import com.tecsynt.nynja.ui.base.BaseActivity; -import com.tecsynt.nynja.utils.ZxingEncoder; - -import butterknife.BindView; - - -/** - * Created by dmitro.boiko on 27/06/2017. - */ - -public class QRCodeGeneratorActivity extends BaseActivity { - - @BindView(R.id.qr_code_qrcodegeneratoractivity) - ImageView qrCode; - - public static Intent getLaunchQRCodeGeneratorActivity(Context context) { - return new Intent(context, QRCodeGeneratorActivity.class); - } - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_qr_code_generator); - - try { - Bitmap qrCodeBitmap = ZxingEncoder.getInstance().generate_QR_CODE("TEST DATA"); - qrCode.setImageBitmap(qrCodeBitmap); - } catch (WriterException e) { - e.printStackTrace(); - } - - } -} diff --git a/app/src/main/java/com/tecsynt/nynja/ui/base/BaseActivity.java b/app/src/main/java/com/tecsynt/nynja/ui/base/BaseActivity.java deleted file mode 100644 index f6dafecc5b7b54f9a7aa09aee1c7430585e451f4..0000000000000000000000000000000000000000 --- a/app/src/main/java/com/tecsynt/nynja/ui/base/BaseActivity.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.tecsynt.nynja.ui.base; - -import android.support.annotation.LayoutRes; - -import com.arellomobile.mvp.MvpAppCompatActivity; - -import butterknife.ButterKnife; - -/** - * Created by Max Chervatiuk on 22.06.17. - * Email: duo.blood@gmail.com - */ - -public abstract class BaseActivity extends MvpAppCompatActivity { - - @Override - public void setContentView(@LayoutRes int layoutResID) { - super.setContentView(layoutResID); - ButterKnife.bind(this); - } -} diff --git a/app/src/main/java/com/tecsynt/nynja/ui/fragments/profile/EditProfileFragment.java b/app/src/main/java/com/tecsynt/nynja/ui/fragments/profile/EditProfileFragment.java deleted file mode 100644 index 50025a9df4fd861f5ab9ac46c5d883bd5232b64d..0000000000000000000000000000000000000000 --- a/app/src/main/java/com/tecsynt/nynja/ui/fragments/profile/EditProfileFragment.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.tecsynt.nynja.ui.fragments.profile; - -import android.os.Bundle; -import android.support.annotation.Nullable; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; - -import com.tecsynt.nynja.R; -import com.tecsynt.nynja.ui.base.BaseFragment; - -/** - * Created by dmitro.boiko on 27/06/2017. - */ - -public class EditProfileFragment extends BaseFragment { - - @Nullable - @Override - public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - return inflater.inflate(R.layout.fragment_edit_profile, container, false); - } -} diff --git a/app/src/main/java/com/tecsynt/nynja/ui/fragments/profile/MyProfileFragment.java b/app/src/main/java/com/tecsynt/nynja/ui/fragments/profile/MyProfileFragment.java deleted file mode 100644 index 76520cdf06774e5a4b1c12a071d1efa7476fb9b0..0000000000000000000000000000000000000000 --- a/app/src/main/java/com/tecsynt/nynja/ui/fragments/profile/MyProfileFragment.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.tecsynt.nynja.ui.fragments.profile; - -import android.os.Bundle; -import android.support.annotation.Nullable; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; - -import com.arellomobile.mvp.presenter.InjectPresenter; -import com.tecsynt.nynja.R; -import com.tecsynt.nynja.mvp.presenters.MyProfilePresenter; -import com.tecsynt.nynja.mvp.view.MyProfileView; -import com.tecsynt.nynja.ui.activities.EditProfileActivity; -import com.tecsynt.nynja.ui.activities.QRCodeGeneratorActivity; -import com.tecsynt.nynja.ui.base.BaseFragment; - -import butterknife.OnClick; - -/** - * Created by dmitro.boiko on 27/06/2017. - **/ - -public class MyProfileFragment extends BaseFragment implements MyProfileView { - - @InjectPresenter - MyProfilePresenter mPresenter; - - @Nullable - @Override - public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - return inflater.inflate(R.layout.fragment_my_profile, container, false); - } - - @OnClick(R.id.edit_name_myprofilefragment) - public void onEditNameClick() { - mPresenter.navigateToEditProfileScreen(); - } - - @OnClick(R.id.qrcode_myprofilefragment) - public void oncQrCodeClick() { - mPresenter.navigateToQrCodeScreen(); - } - - @OnClick(R.id.photo_myprofilefragment) - public void oncPhotoClick() { - mPresenter.navigateToGalleryScreen(); - } - - @Override public void navigateToEditProfile() { - startActivity(EditProfileActivity.getLaunchEditProfileActivity(getContext())); - } - - @Override public void navigateToQqCode() { - startActivity(QRCodeGeneratorActivity.getLaunchQRCodeGeneratorActivity(getContext())); - } - - @Override public void navigateToCamera() { - - } - - @Override public void navigateToGallery() { - - } -} diff --git a/app/src/main/java/com/tecsynt/nynja/utils/ValidationUtils.java b/app/src/main/java/com/tecsynt/nynja/utils/ValidationUtils.java deleted file mode 100644 index 4ba30bd2cf58dfce316066a2ae3f756e91528f36..0000000000000000000000000000000000000000 --- a/app/src/main/java/com/tecsynt/nynja/utils/ValidationUtils.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.tecsynt.nynja.utils; - -/** - * Created by Max Chervatiuk on 22.06.17. - * Email: duo.blood@gmail.com - *

- *

- * A collection of fields validation. - */ - -public class ValidationUtils { - //// TODO: 22.06.17 Implement class -} diff --git a/app/src/main/res/anim/slide_out_down.xml b/app/src/main/res/anim/slide_out_down.xml new file mode 100644 index 0000000000000000000000000000000000000000..0f339542171f83543ab99b34f7c689abae030dc1 --- /dev/null +++ b/app/src/main/res/anim/slide_out_down.xml @@ -0,0 +1,5 @@ + + \ No newline at end of file diff --git a/app/src/main/res/anim/slide_up_dialog.xml b/app/src/main/res/anim/slide_up_dialog.xml new file mode 100644 index 0000000000000000000000000000000000000000..3c613f3bc140e9af65d571ad270837f40fac7d27 --- /dev/null +++ b/app/src/main/res/anim/slide_up_dialog.xml @@ -0,0 +1,5 @@ + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 5474db71cd44b12b22d9afbe63f5980f35621e4a..9d71988b727c9ce3982fa3150cff813bd3140cb8 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -5,7 +5,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - tools:context="com.tecsynt.nynja.ui.activities.MainActivity"> + tools:context="com.ninja.mobile.ui.activities.MainActivity"> + tools:context="com.ninja.mobile.ui.activities.RegistrationActivity"> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_welcome.xml b/app/src/main/res/layout/activity_welcome.xml index 7d8002f9f5d30c390078dface77e7aafa2edeb7e..b80b19f020b5deaf2a3bbbac7dc349d5786a2cf7 100644 --- a/app/src/main/res/layout/activity_welcome.xml +++ b/app/src/main/res/layout/activity_welcome.xml @@ -5,14 +5,14 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - tools:context="com.tecsynt.nynja.ui.activities.WelcomeActivity"> + tools:context="com.ninja.mobile.ui.activities.WelcomeActivity"> - + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_input_phone.xml b/app/src/main/res/layout/fragment_input_phone.xml index af6c39b66e78efe9ea93e1714af1b6b861656f34..49f4fc5cefdd032015915247115fd18c0a1c251d 100644 --- a/app/src/main/res/layout/fragment_input_phone.xml +++ b/app/src/main/res/layout/fragment_input_phone.xml @@ -6,7 +6,7 @@ android:layout_height="match_parent" tools:ignore="ContentDescription"> - + + + - - - + android:paddingStart="42dp" + android:textColor="@color/colorAccent" + android:textSize="31sp" + tools:text="Marshall Taplits" /> - - + android:textSize="20sp" /> \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a24595f7336996446c2e2ca807c16506e870936b..00ab602cd96dc8ecd870d9456dacd7e577baf86f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -12,4 +12,9 @@ Last Name --- --- + + Camera + Choose from gallery + Cancel + diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 1a06fc201e9e3b10be3a8989f8b718461352278f..40fec0ed2d9cae9b74f41c83a8c63f8a631f2f7a 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -25,4 +25,17 @@ + + + + diff --git a/app/src/main/res/xml/provider_paths.xml b/app/src/main/res/xml/provider_paths.xml new file mode 100644 index 0000000000000000000000000000000000000000..6dca53c9aca2cff2f8c825d5e864a1ab389beb28 --- /dev/null +++ b/app/src/main/res/xml/provider_paths.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/app/src/test/java/com/tecsynt/nynja/ExampleUnitTest.java b/app/src/test/java/com/ninja/mobile/ExampleUnitTest.java similarity index 92% rename from app/src/test/java/com/tecsynt/nynja/ExampleUnitTest.java rename to app/src/test/java/com/ninja/mobile/ExampleUnitTest.java index 15fe8beed714d448f4fa8cd8740bf390dfa5d99e..6fe237bfe57fc037faf426b9f34650c2e5abc9f4 100644 --- a/app/src/test/java/com/tecsynt/nynja/ExampleUnitTest.java +++ b/app/src/test/java/com/ninja/mobile/ExampleUnitTest.java @@ -1,4 +1,4 @@ -package com.tecsynt.nynja; +package com.ninja.mobile; import org.junit.Test; diff --git a/build.gradle b/build.gradle index 53dc8ba6a966d40fc6db8c4e2007b719dea5e076..3be8b2c8f37a0a794565db2ed06af87ad0b95799 100644 --- a/build.gradle +++ b/build.gradle @@ -5,8 +5,9 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:2.3.1' + classpath 'com.android.tools.build:gradle:2.3.3' classpath 'me.tatarka:gradle-retrolambda:3.6.1' + classpath 'com.google.gms:google-services:3.0.0' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files }