Commit 4c582a05 authored by Varun Patil's avatar Varun Patil Committed by GitHub

Merge pull request #288 from wncc/ach

Achievements tab
parents 56844f19 fdcc8f9a
......@@ -8,8 +8,8 @@ android {
manifestPlaceholders 'appAuthRedirectScheme': 'https'
minSdkVersion 21
targetSdkVersion 28
versionCode 37
versionName "1.3.12"
versionCode 38
versionName "1.4"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
......@@ -26,7 +26,8 @@ android {
ext {
androidxVersion = '1.0.0'
playServicesVersion = '16.0.0'
playServicesVersion = '17.0.0'
playServicesVisionVersion = '18.0.0'
retrofitVersion = '2.3.0'
okhttpVersion = '3.14.0'
picassoVersion = '2.71828'
......@@ -53,6 +54,7 @@ dependencies {
implementation "com.google.android.gms:play-services-maps:${playServicesVersion}"
implementation "com.google.android.gms:play-services-location:${playServicesVersion}"
implementation "com.google.android.gms:play-services-places:${playServicesVersion}"
implementation "com.google.android.gms:play-services-vision:${playServicesVisionVersion}"
implementation "com.squareup.retrofit2:retrofit:${retrofitVersion}"
implementation "com.squareup.retrofit2:converter-gson:${retrofitVersion}"
implementation "com.squareup.okhttp3:okhttp:${okhttpVersion}"
......@@ -67,5 +69,6 @@ dependencies {
implementation "me.leolin:ShortcutBadger:$shortcutBadgerVersion"
implementation "com.github.prolificinteractive:material-calendarview:${materialCalendarViewVersion}"
implementation "com.jakewharton.threetenabp:threetenabp:${threetenBPVersion}"
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
}
apply plugin: 'com.google.gms.google-services'
......@@ -9,6 +9,8 @@
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<application
android:allowBackup="true"
......@@ -120,6 +122,10 @@
android:name="com.google.firebase.messaging.default_notification_channel_id"
android:value="@string/default_notification_channel_id" />
<meta-data
android:name="com.google.android.gms.vision.DEPENDENCIES"
android:value="barcode" />
</application>
</manifest>
\ No newline at end of file
......@@ -64,6 +64,17 @@ public class Constants {
public static final String CARD_TYPE_TITLE = "card_type_title";
public static final String CARD_TYPE_BODY_HEAD = "card_type_body_head";
/* Webview */
public static final String WV_TYPE = "webview_type";
public static final String WV_TYPE_ADD_EVENT = "add_event";
public static final String WV_TYPE_UPDATE_EVENT = "update_event";
public static final String WV_TYPE_UPDATE_BODY = "update_body";
public static final String WV_TYPE_ACHIEVEMENTS = "achievements";
public static final String WV_TYPE_NEW_OFFERED_ACHIEVEMENT = "achievements_new_offered";
public static final String WV_TYPE_URL = "url_type";
public static final String WV_ID = "id";
public static final String WV_URL = "url";
/* Map */
public static final double MAP_Xn = 19.133691, MAP_Yn = 72.916984, MAP_Zn = 4189, MAP_Zyn = 1655;
public static final double[] MAP_WEIGHTS_X = {-7.769917472065843, 159.26978694839946, 244.46989575495544, -6.003894110679995, -0.28864271213341297, 0.010398324019718075, 4.215508849724247, -0.6078830146963545, -7.0400449629241395};
......
......@@ -14,6 +14,7 @@ import android.graphics.Rect;
import android.media.RingtoneManager;
import android.net.Uri;
import android.os.Bundle;
import androidx.core.app.NotificationCompat;
import androidx.core.app.NotificationManagerCompat;
......
......@@ -7,21 +7,22 @@ import android.content.res.Resources;
import android.graphics.Color;
import android.net.Uri;
import android.os.Bundle;
import androidx.annotation.RequiresApi;
import com.google.android.material.navigation.NavigationView;
import androidx.transition.Fade;
import androidx.transition.Slide;
import androidx.transition.Transition;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
import android.util.TypedValue;
import android.view.View;
import android.webkit.CookieManager;
import android.widget.Button;
import android.widget.ImageView;
import androidx.annotation.RequiresApi;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
import androidx.transition.Fade;
import androidx.transition.Slide;
import androidx.transition.Transition;
import com.google.android.material.navigation.NavigationView;
import com.google.gson.Gson;
import com.squareup.picasso.Callback;
import com.squareup.picasso.Picasso;
......
......@@ -6,12 +6,13 @@ import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import android.util.Log;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.firebase.iid.FirebaseInstanceId;
import com.google.firebase.iid.InstanceIdResult;
......
......@@ -14,17 +14,6 @@ import android.graphics.Color;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import com.google.android.material.navigation.NavigationView;
import com.google.android.material.snackbar.Snackbar;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
import androidx.core.view.GravityCompat;
import androidx.drawerlayout.widget.DrawerLayout;
import androidx.appcompat.app.ActionBarDrawerToggle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
......@@ -34,7 +23,19 @@ import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.app.ActionBarDrawerToggle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.core.view.GravityCompat;
import androidx.drawerlayout.widget.DrawerLayout;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.android.material.navigation.NavigationView;
import com.google.android.material.snackbar.Snackbar;
import com.google.firebase.iid.FirebaseInstanceId;
import com.google.firebase.iid.InstanceIdResult;
import com.google.gson.JsonElement;
......@@ -74,6 +75,7 @@ import app.insti.fragment.QuickLinksFragment;
import app.insti.fragment.SettingsFragment;
import app.insti.fragment.TrainingBlogFragment;
import app.insti.fragment.UserFragment;
import app.insti.fragment.WebViewFragment;
import app.insti.notifications.NotificationId;
import me.leolin.shortcutbadger.ShortcutBadger;
import retrofit2.Call;
......@@ -570,6 +572,13 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
MapFragment mapFragment = new MapFragment();
updateFragment(mapFragment);
break;
case R.id.nav_achievements:
WebViewFragment webViewFragment = new WebViewFragment();
Bundle bundle = new Bundle();
bundle.putString(Constants.WV_TYPE, Constants.WV_TYPE_ACHIEVEMENTS);
webViewFragment.setArguments(bundle);
updateFragment(webViewFragment);
break;
case R.id.nav_complaint:
if (session.isLoggedIn()) {
......
package app.insti.adapter;
import androidx.recyclerview.widget.RecyclerView;
import android.view.ViewGroup;
import androidx.recyclerview.widget.RecyclerView;
import java.util.List;
import app.insti.api.model.AboutCategory;
......
package app.insti.adapter;
import androidx.fragment.app.Fragment;
import android.view.View;
import androidx.fragment.app.Fragment;
import java.util.List;
import app.insti.R;
......
package app.insti.adapter;
import android.content.Context;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
import androidx.recyclerview.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
import androidx.recyclerview.widget.RecyclerView;
import com.squareup.picasso.Picasso;
import com.squareup.picasso.RequestCreator;
......@@ -104,7 +105,7 @@ public abstract class CardAdapter<T extends CardInterface> extends RecyclerView.
// Build basic request
RequestCreator requestCreator;
if (t.getAvatarUrl() != null)
if (t.getAvatarUrl() != null && !t.getAvatarUrl().equals(""))
requestCreator = Picasso.get().load(Utils.resizeImageUrl(t.getAvatarUrl()));
else if (getAvatarPlaceholder(t) != 0) {
requestCreator = Picasso.get().load(getAvatarPlaceholder(t));
......
......@@ -4,10 +4,6 @@ import android.app.Activity;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.cardview.widget.CardView;
import androidx.recyclerview.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
......@@ -18,6 +14,11 @@ import android.widget.PopupMenu;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.cardview.widget.CardView;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.RecyclerView;
import com.squareup.picasso.Picasso;
import java.util.ArrayList;
......
......@@ -4,12 +4,6 @@ import android.app.Activity;
import android.content.DialogInterface;
import android.content.res.ColorStateList;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.core.content.res.ResourcesCompat;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.cardview.widget.CardView;
import androidx.recyclerview.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
......@@ -19,6 +13,13 @@ import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.cardview.widget.CardView;
import androidx.core.content.res.ResourcesCompat;
import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList;
import java.util.List;
......
package app.insti.adapter;
import android.view.View;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
import android.view.View;
import java.util.List;
......
package app.insti.adapter;
import androidx.fragment.app.Fragment;
import android.os.Bundle;
import android.view.View;
import androidx.fragment.app.Fragment;
import java.util.ArrayList;
import java.util.List;
import app.insti.Constants;
import app.insti.R;
import app.insti.Utils;
import app.insti.api.model.Achievement;
import app.insti.api.model.Body;
import app.insti.api.model.Event;
import app.insti.api.model.OfferedAchievement;
import app.insti.api.model.Role;
import app.insti.api.model.User;
import app.insti.fragment.WebViewFragment;
import app.insti.interfaces.CardInterface;
public class GenericAdapter extends CardAdapter<CardInterface> {
......@@ -25,6 +33,24 @@ public class GenericAdapter extends CardAdapter<CardInterface> {
Utils.openBodyFragment((Body) cardInterface, fragment, view.findViewById(R.id.object_picture));
} else if (cardInterface instanceof User) {
Utils.openUserFragment((User) cardInterface, fragment, view.findViewById(R.id.object_picture));
} else if (cardInterface instanceof Role) {
Utils.openBodyFragment(((Role) cardInterface).getRoleBodyDetails(), fragment, view.findViewById(R.id.object_picture));
} else if (cardInterface instanceof Achievement) {
Achievement a = (Achievement) cardInterface;
if (a.getAchievementEvent() != null) {
a.getAchievementEvent().setEventBodies(new ArrayList<>());
a.getAchievementEvent().getEventBodies().add(a.getAchievementBody());
Utils.openEventFragment(a.getAchievementEvent(), fragment, view.findViewById(R.id.object_picture));
} else {
Utils.openBodyFragment(a.getAchievementBody(), fragment, view.findViewById(R.id.object_picture));
}
} else if (cardInterface instanceof OfferedAchievement) {
WebViewFragment webViewFragment = new WebViewFragment();
Bundle bundle = new Bundle();
bundle.putString(Constants.WV_TYPE, Constants.WV_TYPE_NEW_OFFERED_ACHIEVEMENT);
bundle.putString(Constants.WV_ID, ((OfferedAchievement) cardInterface).getAchievementID());
webViewFragment.setArguments(bundle);
Utils.updateFragment(webViewFragment, fragment.getActivity());
}
}
......
package app.insti.adapter;
import android.content.Context;
import androidx.annotation.NonNull;
import androidx.viewpager.widget.PagerAdapter;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import androidx.annotation.NonNull;
import androidx.viewpager.widget.PagerAdapter;
import com.squareup.picasso.Picasso;
import java.util.ArrayList;
......
package app.insti.adapter;
import android.content.Context;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import java.util.List;
import app.insti.R;
......
package app.insti.adapter;
import android.content.Context;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ProgressBar;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
......
package app.insti.adapter;
import android.content.Context;
import androidx.recyclerview.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ProgressBar;
import android.widget.TextView;
import androidx.recyclerview.widget.RecyclerView;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
......
package app.insti.adapter;
import androidx.fragment.app.Fragment;
import android.view.View;
import androidx.fragment.app.Fragment;
import java.util.List;
import app.insti.R;
......
package app.insti.adapter;
import android.content.Context;
import androidx.recyclerview.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ProgressBar;
import android.widget.TextView;
import androidx.recyclerview.widget.RecyclerView;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
......
package app.insti.adapter;
import androidx.fragment.app.Fragment;
import android.view.View;
import androidx.fragment.app.Fragment;
import java.util.List;
import app.insti.R;
......
package app.insti.api.model;
import android.content.Context;
import android.view.View;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.fragment.app.FragmentActivity;
import androidx.recyclerview.widget.RecyclerView;
import android.view.View;
import android.widget.TextView;
import com.squareup.picasso.Picasso;
......
package app.insti.api.model;
import androidx.annotation.NonNull;
import com.google.gson.annotations.SerializedName;
import java.util.Objects;
import app.insti.interfaces.CardInterface;
public class Achievement implements CardInterface {
@NonNull()
@SerializedName("id")
private String achievementID;
@SerializedName("title")
private String achievementTitle;
@SerializedName("description")
private String achievementDescription;
@SerializedName("body_detail")
private Body achievementBody;
@SerializedName("event_detail")
private Event achievementEvent;
@SerializedName("dismissed")
private boolean achievementDismissed;
@SerializedName("verified")
private boolean achievementVerified;
@SerializedName("user")
private User achivementUser;
@SerializedName("body")
private String achievementBodyId;
@SerializedName("event")
private String achievementEventId;
public Achievement(@NonNull String achievementID, String achievementTitle, String achievementDescription, boolean achievementDismissed, boolean achievementVerified, String achievementBodyId, String achievementEventId) {
this.achievementID = achievementID;
this.achievementTitle = achievementTitle;
this.achievementDescription = achievementDescription;
this.achievementDismissed = achievementDismissed;
this.achievementVerified = achievementVerified;
this.achievementBodyId = achievementBodyId;
this.achievementEventId = achievementEventId;
}
@NonNull
public String getAchievementID() {
return achievementID;
}
public void setAchievementID(@NonNull String achievementID) {
this.achievementID = achievementID;
}
public String getAchievementTitle() {
return achievementTitle;
}
public void setAchievementTitle(String achievementTitle) {
this.achievementTitle = achievementTitle;
}
public String getAchievementDescription() {
return achievementDescription;
}
public void setAchievementDescription(String achievementDescription) {
this.achievementDescription = achievementDescription;
}
public Body getAchievementBody() {
return achievementBody;
}
public void setAchievementBody(Body achievementBody) {
this.achievementBody = achievementBody;
}
public Event getAchievementEvent() {
return achievementEvent;
}
public void setAchievementEvent(Event achievementEvent) {
this.achievementEvent = achievementEvent;
}
public boolean isAchievementDismissed() {
return achievementDismissed;
}
public void setAchievementDismissed(boolean achievementDismissed) {
this.achievementDismissed = achievementDismissed;
}
public boolean isAchievementVerified() {
return achievementVerified;
}
public void setAchievementVerified(boolean achievementVerified) {
this.achievementVerified = achievementVerified;
}
public User getAchivementUser() {
return achivementUser;
}
public void setAchivementUser(User achivementUser) {
this.achivementUser = achivementUser;
}
public String getAchievementBodyId() {
return achievementBodyId;
}
public void setAchievementBodyId(String achievementBodyId) {
this.achievementBodyId = achievementBodyId;
}
public String getAchievementEventId() {
return achievementEventId;
}
public void setAchievementEventId(String achievementEventId) {
this.achievementEventId = achievementEventId;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Achievement achievement = (Achievement) o;
return Objects.equals(achievementID, achievement.achievementID);
}
public long getId() {
return getAchievementID().hashCode();
}
public String getTitle() {
return getAchievementTitle();
}
public String getSubtitle() {
if (getAchievementEvent() != null) {
return getAchievementEvent().getEventName();
}
if (getAchievementBody() != null) {
return getAchievementBody().getBodyName();
}
return getAchievementDescription();
}
public String getAvatarUrl() {
String url = null;
if (getAchievementEvent() != null) {
url = getAchievementEvent().getEventImageURL();
}
if (url == null || url.equals("") && getAchievementBody() != null) {
url = getAchievementBody().getBodyImageURL();
}
return url;
}
}
......@@ -64,6 +64,9 @@ public class Event implements CardInterface {
@SerializedName("user_ues")
private int eventUserUes;
@SerializedName("offered_achievements")
private List<OfferedAchievement> eventOfferedAchievements;
private boolean eventBigImage = false;
public Event(@NonNull String eventID) {
......@@ -104,7 +107,7 @@ public class Event implements CardInterface {
public String getEventImageURL() {
// Fallback to body image if event has no image
if (eventImageURL == null) {
if (eventImageURL == null && getEventBodies() != null && getEventBodies().size() > 0) {
return getEventBodies().get(0).getBodyImageURL();
}
return eventImageURL;
......@@ -215,6 +218,14 @@ public class Event implements CardInterface {
this.eventBigImage = eventBigImage;
}
public List<OfferedAchievement> getEventOfferedAchievements() {
return eventOfferedAchievements;
}
public void setEventOfferedAchievements(List<OfferedAchievement> eventOfferedAchievements) {
this.eventOfferedAchievements = eventOfferedAchievements;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
......
package app.insti.api.model;
import android.content.Context;
import androidx.annotation.NonNull;
import android.view.View;
import androidx.annotation.NonNull;
import com.google.gson.annotations.SerializedName;
import java.sql.Timestamp;
......
package app.insti.api.model;
import androidx.annotation.NonNull;
import com.google.gson.annotations.SerializedName;
import java.util.Objects;
import app.insti.Utils;
import app.insti.interfaces.CardInterface;
public class OfferedAchievement implements CardInterface {
@NonNull()
@SerializedName("id")
private String achievementID;
@SerializedName("title")
private String achievementTitle;
@SerializedName("description")
private String achievementDescription;
@SerializedName("body")
private String achievementBodyId;
@SerializedName("event")
private String achievementEventId;
@SerializedName("generic")
private String achievementGeneric;
@NonNull
public String getAchievementID() {
return achievementID;
}
public void setAchievementID(@NonNull String achievementID) {
this.achievementID = achievementID;
}
public String getAchievementTitle() {
return achievementTitle;
}
public void setAchievementTitle(String achievementTitle) {
this.achievementTitle = achievementTitle;
}
public String getAchievementDescription() {
return achievementDescription;
}
public void setAchievementDescription(String achievementDescription) {
this.achievementDescription = achievementDescription;
}
public String getAchievementBodyId() {
return achievementBodyId;
}
public void setAchievementBodyId(String achievementBodyId) {
this.achievementBodyId = achievementBodyId;
}
public String getAchievementEventId() {
return achievementEventId;
}
public void setAchievementEventId(String achievementEventId) {
this.achievementEventId = achievementEventId;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
OfferedAchievement achievement = (OfferedAchievement) o;
return Objects.equals(achievementID, achievement.achievementID);
}
public long getId() {
return getAchievementID().hashCode();
}
public String getTitle() {
return getAchievementTitle();
}
public String getSubtitle() {
return getAchievementDescription();
}
public String getAvatarUrl() {
return String.format("https://insti.app/assets/achievements/%s%s.png",
achievementGeneric, Utils.isDarkTheme ? "_dark" : "");
}
}
package app.insti.api.model;
import android.content.Context;
import androidx.annotation.NonNull;
import android.view.View;
import androidx.annotation.NonNull;
import com.google.gson.annotations.SerializedName;
import java.sql.Timestamp;
......
package app.insti.api.model;
import android.content.Context;
import androidx.annotation.NonNull;
import android.view.View;
import androidx.annotation.NonNull;
import com.google.gson.annotations.SerializedName;
import java.sql.Timestamp;
......
......@@ -56,6 +56,9 @@ public class User implements CardInterface {
@SerializedName("former_roles")
private List<Role> userFormerRoles;
@SerializedName("achievements")
private List<Achievement> userAchievements;
@SerializedName("website_url")
private String userWebsiteURL;
......@@ -220,6 +223,14 @@ public class User implements CardInterface {
this.showContactNumber = showContactNumber;
}
public List<Achievement> getUserAchievements() {
return userAchievements;
}
public void setUserAchievements(List<Achievement> userAchievements) {
this.userAchievements = userAchievements;
}
public String getCurrentRole() {
return currentRole;
}
......
......@@ -3,13 +3,14 @@ package app.insti.fragment;
import android.content.Context;
import android.os.Bundle;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.RecyclerView;
import androidx.appcompat.widget.Toolbar;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.appcompat.widget.Toolbar;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.RecyclerView;
import com.google.android.flexbox.FlexDirection;
import com.google.android.flexbox.FlexboxLayoutManager;
import com.google.android.flexbox.JustifyContent;
......
......@@ -3,6 +3,7 @@ package app.insti.fragment;
import android.app.Activity;
import android.content.Context;
import androidx.fragment.app.Fragment;
import app.insti.ActivityBuffer;
......
......@@ -9,19 +9,20 @@ import android.graphics.Color;
import android.graphics.Point;
import android.graphics.Rect;
import android.os.Bundle;
import androidx.annotation.NonNull;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import androidx.fragment.app.Fragment;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.appcompat.widget.Toolbar;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.DecelerateInterpolator;
import android.widget.ImageView;
import androidx.annotation.NonNull;
import androidx.appcompat.widget.Toolbar;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.gson.Gson;
import com.squareup.picasso.Picasso;
......@@ -248,11 +249,12 @@ public class BodyFragment extends BackHandledFragment implements TransitionTarge
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AddEventFragment addEventFragment = new AddEventFragment();
WebViewFragment webViewFragment = new WebViewFragment();
Bundle bundle = new Bundle();
bundle.putString("bodyId", body.getBodyID());
addEventFragment.setArguments(bundle);
((MainActivity) getActivity()).updateFragment(addEventFragment);
bundle.putString(Constants.WV_TYPE, Constants.WV_TYPE_UPDATE_BODY);
bundle.putString(Constants.WV_ID, body.getBodyID());
webViewFragment.setArguments(bundle);
((MainActivity) getActivity()).updateFragment(webViewFragment);
}
});
}
......
......@@ -2,13 +2,14 @@ package app.insti.fragment;
import android.os.Bundle;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
......
......@@ -6,13 +6,6 @@ import android.graphics.drawable.GradientDrawable;
import android.graphics.drawable.InsetDrawable;
import android.os.Build;
import android.os.Bundle;
import androidx.annotation.NonNull;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import androidx.fragment.app.Fragment;
import androidx.core.widget.NestedScrollView;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.appcompat.widget.Toolbar;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
......@@ -21,6 +14,14 @@ import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.widget.Toolbar;
import androidx.core.widget.NestedScrollView;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.prolificinteractive.materialcalendarview.CalendarDay;
import com.prolificinteractive.materialcalendarview.DayViewDecorator;
import com.prolificinteractive.materialcalendarview.DayViewFacade;
......@@ -42,6 +43,7 @@ import java.util.List;
import java.util.Map;
import java.util.TimeZone;
import app.insti.Constants;
import app.insti.R;
import app.insti.Utils;
import app.insti.activity.MainActivity;
......@@ -138,8 +140,13 @@ public class CalendarFragment extends BaseFragment {
public void onClick(View v) {
CalendarDay day = ((MaterialCalendarView) view.findViewById(R.id.simpleCalendarView)).getSelectedDate();
String date = day.getYear() + "-" + day.getMonth() + "-" + day.getDay();
AddEventFragment addEventFragment = (new AddEventFragment()).withDate(date);
((MainActivity) getActivity()).updateFragment(addEventFragment);
WebViewFragment webViewFragment = (new WebViewFragment()).withDate(date);
Bundle bundle = new Bundle();
bundle.putString(Constants.WV_TYPE, Constants.WV_TYPE_ADD_EVENT);
webViewFragment.setArguments(bundle);
((MainActivity) getActivity()).updateFragment(webViewFragment);
}
});
}
......
......@@ -3,11 +3,6 @@ package app.insti.fragment;
import android.content.DialogInterface;
import android.content.res.ColorStateList;
import android.os.Bundle;
import androidx.fragment.app.Fragment;
import androidx.viewpager.widget.ViewPager;
import androidx.appcompat.app.AlertDialog;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
......@@ -19,6 +14,12 @@ import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.viewpager.widget.ViewPager;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapView;
......
......@@ -2,17 +2,19 @@ package app.insti.fragment;
import android.content.res.TypedArray;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.google.android.material.appbar.AppBarLayout;
import com.google.android.material.tabs.TabLayout;
import androidx.fragment.app.Fragment;
import androidx.viewpager.widget.ViewPager;
import android.util.DisplayMetrics;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.viewpager.widget.ViewPager;
import com.google.android.material.appbar.AppBarLayout;
import com.google.android.material.tabs.TabLayout;
import java.util.Objects;
import app.insti.R;
......
......@@ -2,18 +2,20 @@ package app.insti.fragment;
import android.content.res.TypedArray;
import android.os.Bundle;
import com.google.android.material.appbar.AppBarLayout;
import com.google.android.material.appbar.CollapsingToolbarLayout;
import com.google.android.material.tabs.TabLayout;
import androidx.fragment.app.FragmentTransaction;
import androidx.viewpager.widget.ViewPager;
import androidx.appcompat.widget.Toolbar;
import android.util.DisplayMetrics;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import androidx.appcompat.widget.Toolbar;
import androidx.fragment.app.FragmentTransaction;
import androidx.viewpager.widget.ViewPager;
import com.google.android.material.appbar.AppBarLayout;
import com.google.android.material.appbar.CollapsingToolbarLayout;
import com.google.android.material.tabs.TabLayout;
import app.insti.Constants;
import app.insti.R;
import app.insti.Utils;
......
package app.insti.fragment;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import java.util.List;
import app.insti.R;
......
package app.insti.fragment;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import java.util.List;
import app.insti.R;
......
......@@ -34,6 +34,14 @@ import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.widget.Toolbar;
import androidx.coordinatorlayout.widget.CoordinatorLayout;
import androidx.core.widget.NestedScrollView;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.google.android.material.appbar.AppBarLayout;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.gson.Gson;
......@@ -41,26 +49,21 @@ import com.squareup.picasso.Picasso;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import androidx.annotation.NonNull;
import androidx.appcompat.widget.Toolbar;
import androidx.coordinatorlayout.widget.CoordinatorLayout;
import androidx.core.widget.NestedScrollView;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import app.insti.Constants;
import app.insti.R;
import app.insti.ShareURLMaker;
import app.insti.Utils;
import app.insti.activity.MainActivity;
import app.insti.adapter.BodyAdapter;
import app.insti.adapter.GenericAdapter;
import app.insti.api.EmptyCallback;
import app.insti.api.RetrofitInterface;
import app.insti.api.model.Body;
import app.insti.api.model.Event;
import app.insti.api.model.Venue;
import app.insti.interfaces.CardInterface;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
......@@ -188,6 +191,8 @@ public class EventFragment extends BackHandledFragment implements TransitionTarg
* Set appbar to have an offset
*/
private void setAppBarOffset(int offsetPx) {
if (getView() == null || getActivity() == null) return;
AppBarLayout mAppBarLayout = getView().findViewById(R.id.appBar);
CoordinatorLayout mCoordinatorLayour = getView().findViewById(R.id.coordinator);
CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) mAppBarLayout.getLayoutParams();
......@@ -196,7 +201,24 @@ public class EventFragment extends BackHandledFragment implements TransitionTarg
behavior.onNestedPreScroll(mCoordinatorLayour, mAppBarLayout, null, 0, offsetPx, new int[]{0, 0}, 0);
}
private void refreshEvent(Event min_event) {
if (getView() == null || getActivity() == null) return;
RetrofitInterface retrofitInterface = Utils.getRetrofitInterface();
retrofitInterface.getEvent(Utils.getSessionIDHeader(), min_event.getEventID()).enqueue(new EmptyCallback<Event>() {
@Override
public void onResponse(Call<Event> call, Response<Event> response) {
if (response.isSuccessful()) {
event = response.body();
inflateViews(event);
}
}
});
}
private void inflateViews(final Event event) {
if (getActivity() == null || getView() == null) return;
eventPicture = (ImageView) getActivity().findViewById(R.id.event_picture_2);
final TextView eventTitle = (TextView) getActivity().findViewById(R.id.event_page_title);
final TextView eventDate = (TextView) getActivity().findViewById(R.id.event_page_date);
......@@ -214,16 +236,23 @@ public class EventFragment extends BackHandledFragment implements TransitionTarg
}
eventTitle.setText(event.getEventName());
Markwon.setMarkdown(eventDescription, event.getEventDescription());
Timestamp timestamp = event.getEventStartTime();
Date Date = new Date(timestamp.getTime());
SimpleDateFormat simpleDateFormatDate = new SimpleDateFormat("dd MMM");
SimpleDateFormat simpleDateFormatTime = new SimpleDateFormat("HH:mm");
final List<Body> bodyList = event.getEventBodies();
// Check for minimal event
if (event.getEventDescription() == null) {
refreshEvent(event);
return;
}
Markwon.setMarkdown(eventDescription, event.getEventDescription());
final List<CardInterface> cardList = new ArrayList<>(event.getEventOfferedAchievements());
cardList.addAll(event.getEventBodies());
final RecyclerView bodyRecyclerView = getActivity().findViewById(R.id.body_card_recycler_view);
BodyAdapter bodyAdapter = new BodyAdapter(bodyList, this);
bodyRecyclerView.setAdapter(bodyAdapter);
GenericAdapter genericAdapter = new GenericAdapter(cardList, this);
bodyRecyclerView.setAdapter(genericAdapter);
bodyRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
// Common
......@@ -330,11 +359,12 @@ public class EventFragment extends BackHandledFragment implements TransitionTarg
}
fab.setOnClickListener(v -> {
AddEventFragment addEventFragment = new AddEventFragment();
WebViewFragment webViewFragment = new WebViewFragment();
Bundle bundle = new Bundle();
bundle.putString("id", event.getEventID());
addEventFragment.setArguments(bundle);
((MainActivity) getActivity()).updateFragment(addEventFragment);
bundle.putString(Constants.WV_TYPE, Constants.WV_TYPE_UPDATE_EVENT);
bundle.putString(Constants.WV_ID, event.getEventID());
webViewFragment.setArguments(bundle);
((MainActivity) getActivity()).updateFragment(webViewFragment);
});
}
......
package app.insti.fragment;
import android.os.Bundle;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
......
......@@ -2,10 +2,6 @@ package app.insti.fragment;
import android.os.Bundle;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.appcompat.widget.Toolbar;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.KeyEvent;
......@@ -16,6 +12,11 @@ import android.view.inputmethod.EditorInfo;
import android.widget.EditText;
import android.widget.TextView;
import androidx.appcompat.widget.Toolbar;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList;
import java.util.List;
......
......@@ -3,19 +3,22 @@ package app.insti.fragment;
import android.app.Activity;
import android.os.Bundle;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import androidx.fragment.app.Fragment;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.appcompat.widget.Toolbar;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.appcompat.widget.Toolbar;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import java.util.List;
import app.insti.ActivityBuffer;
import app.insti.Constants;
import app.insti.R;
import app.insti.Utils;
import app.insti.activity.MainActivity;
......@@ -129,10 +132,11 @@ public class FeedFragment extends BaseFragment {
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AddEventFragment addEventFragment = new AddEventFragment();
WebViewFragment webViewFragment = new WebViewFragment();
Bundle bundle = new Bundle();
addEventFragment.setArguments(bundle);
((MainActivity) getActivity()).updateFragment(addEventFragment);
bundle.putString(Constants.WV_TYPE, Constants.WV_TYPE_ADD_EVENT);
webViewFragment.setArguments(bundle);
((MainActivity) getActivity()).updateFragment(webViewFragment);
}
});
feedRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
......
......@@ -14,18 +14,6 @@ import android.location.Location;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.app.ActivityCompat;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
import androidx.core.content.ContextCompat;
import androidx.viewpager.widget.ViewPager;
import androidx.core.widget.NestedScrollView;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.widget.Toolbar;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Base64;
......@@ -42,6 +30,19 @@ import android.widget.ScrollView;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.widget.Toolbar;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.core.widget.NestedScrollView;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import androidx.viewpager.widget.ViewPager;
import com.cunoraz.tagview.Tag;
import com.cunoraz.tagview.TagView;
import com.google.android.gms.common.api.ApiException;
......
package app.insti.fragment;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.List;
import app.insti.Constants;
import app.insti.R;
import app.insti.adapter.GenericAdapter;
import app.insti.interfaces.CardInterface;
/**
* A simple {@link Fragment} subclass..
* Use the {@link GenericRecyclerViewFragment#newInstance} factory method to
* create an instance of this fragment.
*/
public class GenericRecyclerViewFragment extends Fragment implements TransitionTargetFragment, TransitionTargetChild {
public static final String TAG = "GenericRecyclerViewFragment";
public Fragment parentFragment = null;
private List<CardInterface> cardInterfaces;
public GenericRecyclerViewFragment() {
// Required empty public constructor
}
@Override
public void transitionEnd() {
if (parentFragment instanceof TransitionTargetFragment) {
((TransitionTargetFragment) parentFragment).transitionEnd();
}
}
@Override
public Fragment getParent() {
return parentFragment;
}
// TODO: Rename and change types and number of parameters
public static GenericRecyclerViewFragment newInstance(List<CardInterface> cardInterfaces) {
GenericRecyclerViewFragment fragment = new GenericRecyclerViewFragment();
Bundle args = new Bundle();
/* Serialize the objects */
try {
ByteArrayOutputStream bo = new ByteArrayOutputStream();
ObjectOutputStream so = new ObjectOutputStream(bo);
so.writeObject(cardInterfaces);
so.flush();
args.putByteArray(Constants.ROLE_LIST_JSON, bo.toByteArray());
} catch (Exception e) {
Log.wtf("profile", e);
}
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
try {
byte b[] = getArguments().getByteArray(Constants.ROLE_LIST_JSON);
ByteArrayInputStream bi = new ByteArrayInputStream(b);
ObjectInputStream si = new ObjectInputStream(bi);
cardInterfaces = (List<CardInterface>) si.readObject();
} catch (Exception e) {
Log.wtf("profile", e);
cardInterfaces = new ArrayList<>();
}
}
}
@Override
public void onStart() {
super.onStart();
RecyclerView recyclerView = (RecyclerView) getActivity().findViewById(R.id.role_recycler_view);
GenericAdapter genericAdapter = new GenericAdapter(cardInterfaces, this);
genericAdapter.uid = "GRVFrag";
recyclerView.setAdapter(genericAdapter);
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_role_recycler_view, container, false);
}
}
\ No newline at end of file
......@@ -20,14 +20,6 @@ import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import androidx.annotation.NonNull;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import androidx.core.app.ActivityCompat;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
import androidx.core.content.ContextCompat;
import androidx.appcompat.widget.Toolbar;
import android.text.Editable;
import android.text.SpannableStringBuilder;
import android.text.TextPaint;
......@@ -56,6 +48,14 @@ import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.widget.Toolbar;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
import com.google.android.gms.common.api.ApiException;
import com.google.android.gms.common.api.ResolvableApiException;
import com.google.android.gms.location.FusedLocationProviderClient;
......@@ -70,6 +70,7 @@ import com.google.android.gms.location.LocationSettingsStatusCodes;
import com.google.android.gms.location.SettingsClient;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.mrane.campusmap.ExpandableListAdapter;
import com.mrane.campusmap.FuzzySearchAdapter;
import com.mrane.campusmap.ListFragment;
......
......@@ -2,11 +2,6 @@ package app.insti.fragment;
import android.os.Bundle;
import androidx.fragment.app.Fragment;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.appcompat.widget.Toolbar;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
......@@ -14,6 +9,12 @@ import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import androidx.appcompat.widget.Toolbar;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
......
package app.insti.fragment;
import android.os.Bundle;
import androidx.fragment.app.Fragment;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import androidx.appcompat.widget.Toolbar;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.appcompat.widget.Toolbar;
import androidx.fragment.app.Fragment;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import java.util.List;
import app.insti.R;
......
......@@ -3,17 +3,19 @@ package app.insti.fragment;
import android.graphics.Canvas;
import android.os.Bundle;
import androidx.annotation.Nullable;
import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.recyclerview.widget.ItemTouchHelper;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.ItemTouchHelper;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
import java.util.List;
import app.insti.R;
......
......@@ -2,13 +2,14 @@ package app.insti.fragment;
import android.os.Bundle;
import androidx.fragment.app.Fragment;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import androidx.appcompat.widget.Toolbar;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.appcompat.widget.Toolbar;
import androidx.fragment.app.Fragment;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import java.util.List;
import app.insti.R;
......
......@@ -3,12 +3,13 @@ package app.insti.fragment;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import androidx.appcompat.widget.Toolbar;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.appcompat.widget.Toolbar;
import app.insti.R;
import app.insti.Utils;
......
package app.insti.fragment;
import android.app.Activity;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.LinearSmoothScroller;
import androidx.recyclerview.widget.RecyclerView;
import androidx.appcompat.widget.SearchView;
import android.text.TextUtils;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import androidx.appcompat.widget.SearchView;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.LinearSmoothScroller;
import androidx.recyclerview.widget.RecyclerView;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import java.lang.reflect.InvocationTargetException;
import java.util.List;
import java.util.Objects;
......
package app.insti.fragment;
import android.os.Bundle;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
......
......@@ -6,11 +6,11 @@ import android.content.SharedPreferences;
import android.net.Uri;
import android.os.Bundle;
import androidx.appcompat.widget.Toolbar;
import androidx.preference.ListPreference;
import androidx.preference.Preference;
import androidx.preference.PreferenceFragmentCompat;
import androidx.preference.SwitchPreferenceCompat;
import androidx.appcompat.widget.Toolbar;
import app.insti.Constants;
import app.insti.R;
......
......@@ -2,13 +2,14 @@ package app.insti.fragment;
import android.os.Bundle;
import androidx.fragment.app.Fragment;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import androidx.appcompat.widget.Toolbar;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.appcompat.widget.Toolbar;
import androidx.fragment.app.Fragment;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import java.util.List;
import app.insti.R;
......
......@@ -11,11 +11,6 @@ import android.graphics.Point;
import android.graphics.Rect;
import android.net.Uri;
import android.os.Bundle;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.tabs.TabLayout;
import androidx.fragment.app.Fragment;
import androidx.viewpager.widget.ViewPager;
import androidx.appcompat.widget.Toolbar;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
......@@ -23,6 +18,12 @@ import android.view.animation.DecelerateInterpolator;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.appcompat.widget.Toolbar;
import androidx.fragment.app.Fragment;
import androidx.viewpager.widget.ViewPager;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.tabs.TabLayout;
import com.squareup.picasso.Picasso;
import java.util.ArrayList;
......@@ -39,6 +40,7 @@ import app.insti.api.model.Body;
import app.insti.api.model.Event;
import app.insti.api.model.Role;
import app.insti.api.model.User;
import app.insti.interfaces.CardInterface;
import retrofit2.Call;
import retrofit2.Response;
......@@ -178,17 +180,21 @@ public class UserFragment extends BackHandledFragment implements TransitionTarge
final List<Role> roleList = user.getUserRoles();
final List<Body> bodyList = user.getUserFollowedBodies();
final List<Event> eventList = user.getUserGoingEvents();
List<Role> formerRoleList = user.getUserFormerRoles();
List<Role> allRoles = new ArrayList<>(roleList);
final List<Role> formerRoleList = user.getUserFormerRoles();
/* Construct user profile */
final List<CardInterface> profile = new ArrayList<>(roleList);
for (Role role : formerRoleList) {
Role temp = new Role(role);
temp.setRoleName("Former " + role.getRoleName() + " " + role.getRoleYear());
allRoles.add(temp);
profile.add(temp);
}
profile.addAll(user.getUserAchievements());
List<Event> eventInterestedList = user.getUserInterestedEvents();
eventList.removeAll(eventInterestedList);
eventList.addAll(eventInterestedList);
RoleRecyclerViewFragment frag1 = RoleRecyclerViewFragment.newInstance(allRoles);
GenericRecyclerViewFragment frag1 = GenericRecyclerViewFragment.newInstance(profile);
BodyRecyclerViewFragment frag2 = BodyRecyclerViewFragment.newInstance(bodyList);
EventRecyclerViewFragment frag3 = EventRecyclerViewFragment.newInstance(eventList);
......@@ -197,7 +203,7 @@ public class UserFragment extends BackHandledFragment implements TransitionTarge
frag3.parentFragment = this;
TabAdapter tabAdapter = new TabAdapter(getChildFragmentManager());
tabAdapter.addFragment(frag1, "Associations");
tabAdapter.addFragment(frag1, "Profile");
tabAdapter.addFragment(frag2, "Following");
tabAdapter.addFragment(frag3, "Events");
......
package app.insti.interfaces;
public interface CardInterface {
import java.io.Serializable;
public interface CardInterface extends Serializable {
long getId();
String getTitle();
String getSubtitle();
......
......@@ -3,14 +3,15 @@ package app.insti.utils;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.RecyclerView;
import android.view.View;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.TextView;
import android.widget.Toast;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.RecyclerView;
import app.insti.R;
import app.insti.ShareURLMaker;
import app.insti.Utils;
......
package com.mrane.campusmap;
import android.os.Bundle;
import androidx.fragment.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import androidx.fragment.app.Fragment;
import app.insti.R;
import app.insti.fragment.MapFragment;
......
......@@ -10,8 +10,6 @@ import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.os.Parcel;
import android.os.Parcelable;
import androidx.core.view.MotionEventCompat;
import androidx.core.view.ViewCompat;
import android.util.AttributeSet;
import android.view.Gravity;
import android.view.MotionEvent;
......@@ -19,6 +17,9 @@ import android.view.View;
import android.view.ViewGroup;
import android.view.accessibility.AccessibilityEvent;
import androidx.core.view.MotionEventCompat;
import androidx.core.view.ViewCompat;
import app.insti.R;
public class SlidingUpPanelLayout extends ViewGroup {
......
......@@ -18,9 +18,6 @@
package com.mrane.navigation;
import android.content.Context;
import androidx.core.view.MotionEventCompat;
import androidx.core.view.VelocityTrackerCompat;
import androidx.core.widget.ScrollerCompat;
import android.view.MotionEvent;
import android.view.VelocityTracker;
import android.view.View;
......@@ -28,6 +25,10 @@ import android.view.ViewConfiguration;
import android.view.ViewGroup;
import android.view.animation.Interpolator;
import androidx.core.view.MotionEventCompat;
import androidx.core.view.VelocityTrackerCompat;
import androidx.core.widget.ScrollerCompat;
import java.util.Arrays;
/**
......
......@@ -36,7 +36,6 @@ import android.os.AsyncTask;
import android.os.Build.VERSION;
import android.os.Handler;
import android.os.Message;
import androidx.exifinterface.media.ExifInterface;
import android.util.AttributeSet;
import android.util.DisplayMetrics;
import android.util.Log;
......@@ -44,6 +43,8 @@ import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
import androidx.exifinterface.media.ExifInterface;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.Arrays;
......
<vector android:height="256dp" android:viewportHeight="24.0"
android:viewportWidth="24.0" android:width="256dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#FF000000" android:pathData="M18,7l-1.41,-1.41 -6.34,6.34 1.41,1.41L18,7zM22.24,5.59L11.66,16.17 7.48,12l-1.41,1.41L11.66,19l12,-12 -1.42,-1.41zM0.41,13.41L6,19l1.41,-1.41L1.83,12 0.41,13.41z"/>
</vector>
<vector android:height="24dp" android:viewportHeight="401.994"
android:viewportWidth="401.994" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#FFFFFFFF" android:pathData="M0,401.991h182.724V219.265H0V401.991zM36.542,255.813h109.636v109.352H36.542V255.813z"/>
<path android:fillColor="#FFFFFFFF" android:pathData="M73.089,292.355h36.544v36.549h-36.544z"/>
<path android:fillColor="#FFFFFFFF" android:pathData="M292.352,365.449h36.553v36.545h-36.553z"/>
<path android:fillColor="#FFFFFFFF" android:pathData="M365.442,365.449h36.552v36.545h-36.552z"/>
<path android:fillColor="#FFFFFFFF" android:pathData="M365.446,255.813l-36.542,0l0,-36.548l-109.639,0l0,182.726l36.548,0l0,-109.636l36.539,0l0,36.549l109.639,0l0,-109.639l0,0l-36.545,0z"/>
<path android:fillColor="#FFFFFFFF" android:pathData="M0,182.728h182.724V0H0V182.728zM36.542,36.542h109.636v109.636H36.542V36.542z"/>
<path android:fillColor="#FFFFFFFF" android:pathData="M73.089,73.089h36.544v36.547h-36.544z"/>
<path android:fillColor="#FFFFFFFF" android:pathData="M219.265,0v182.728h182.729V0H219.265zM365.446,146.178H255.813V36.542h109.633V146.178z"/>
<path android:fillColor="#FFFFFFFF" android:pathData="M292.352,73.089h36.553v36.547h-36.553z"/>
</vector>
......@@ -3,7 +3,13 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="app.insti.fragment.AddEventFragment">
tools:context="app.insti.fragment.WebViewFragment">
<SurfaceView
android:id="@+id/qr_camera_surfaceview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:visibility="gone" />
<WebView
android:id="@+id/add_event_webview"
......
......@@ -43,6 +43,11 @@
android:icon="@drawable/ic_map_black_48dp"
android:title="Map" />
<item
android:id="@+id/nav_achievements"
android:icon="@drawable/ic_done_all_black_256dp"
android:title="Achievements" />
<item
android:id="@+id/nav_complaint"
android:icon="@drawable/baseline_feedback_black_48"
......
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_qr_scan"
android:icon="@drawable/ic_qr_code"
android:iconTint="@color/colorWhite"
android:title="Scan QR"
app:showAsAction="always" />
</menu>
\ No newline at end of file
......@@ -9,7 +9,7 @@ buildscript {
}
dependencies {
classpath 'com.android.tools.build:gradle:3.4.0'
classpath 'com.android.tools.build:gradle:3.4.2'
classpath 'com.google.gms:google-services:4.2.0'
// NOTE: Do not place your application dependencies here; they belong
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment