Merge branch 'develop' of s416084/find-my-tutor-android into master
@ -29,7 +29,7 @@
|
|||||||
</value>
|
</value>
|
||||||
</option>
|
</option>
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK">
|
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8 (1)" project-jdk-type="JavaSDK">
|
||||||
<output url="file://$PROJECT_DIR$/build/classes" />
|
<output url="file://$PROJECT_DIR$/build/classes" />
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectType">
|
<component name="ProjectType">
|
||||||
|
@ -10,8 +10,8 @@ android {
|
|||||||
applicationId "com.uam.wmi.findmytutor"
|
applicationId "com.uam.wmi.findmytutor"
|
||||||
minSdkVersion 22
|
minSdkVersion 22
|
||||||
targetSdkVersion 27
|
targetSdkVersion 27
|
||||||
versionCode 17
|
versionCode 19
|
||||||
versionName "0.9.2-alpha"
|
versionName "0.9.5-beta"
|
||||||
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
|
||||||
vectorDrawables.useSupportLibrary = true
|
vectorDrawables.useSupportLibrary = true
|
||||||
}
|
}
|
||||||
@ -34,6 +34,8 @@ dependencies {
|
|||||||
implementation "ch.acra:acra-http:$acraVersion"
|
implementation "ch.acra:acra-http:$acraVersion"
|
||||||
implementation "ch.acra:acra-toast:$acraVersion"
|
implementation "ch.acra:acra-toast:$acraVersion"
|
||||||
implementation "ch.acra:acra-notification:$acraVersion"
|
implementation "ch.acra:acra-notification:$acraVersion"
|
||||||
|
implementation "ch.acra:acra-limiter:$acraVersion"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
implementation fileTree(include: ['*.jar'], dir: 'libs')
|
implementation fileTree(include: ['*.jar'], dir: 'libs')
|
||||||
|
@ -28,7 +28,9 @@
|
|||||||
<activity
|
<activity
|
||||||
android:name=".activity.StartupActivity"
|
android:name=".activity.StartupActivity"
|
||||||
android:launchMode="singleInstance"
|
android:launchMode="singleInstance"
|
||||||
android:theme="@style/AppTheme.NoActionBar">
|
android:theme="@style/AppTheme.NoActionBar"
|
||||||
|
android:screenOrientation="portrait"
|
||||||
|
android:configChanges="keyboardHidden|orientation|screenSize">
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.MAIN" />
|
<action android:name="android.intent.action.MAIN" />
|
||||||
|
|
||||||
@ -37,14 +39,20 @@
|
|||||||
</activity>
|
</activity>
|
||||||
<activity
|
<activity
|
||||||
android:name=".activity.MapActivity"
|
android:name=".activity.MapActivity"
|
||||||
android:launchMode="singleTop" />
|
android:launchMode="singleTop"
|
||||||
|
android:screenOrientation="portrait"
|
||||||
|
android:configChanges="keyboardHidden|orientation|screenSize"/>
|
||||||
<activity
|
<activity
|
||||||
android:name=".activity.LoginActivity"
|
android:name=".activity.LoginActivity"
|
||||||
android:excludeFromRecents="true"
|
android:excludeFromRecents="true"
|
||||||
android:launchMode="singleTask"
|
android:launchMode="singleTask"
|
||||||
android:noHistory="true" />
|
android:noHistory="true"
|
||||||
|
android:screenOrientation="portrait"
|
||||||
|
android:configChanges="keyboardHidden|orientation|screenSize"/>
|
||||||
<activity
|
<activity
|
||||||
android:name=".activity.SettingsActivity" />
|
android:name=".activity.SettingsActivity"
|
||||||
|
android:screenOrientation="portrait"
|
||||||
|
android:configChanges="keyboardHidden|orientation|screenSize"/>
|
||||||
|
|
||||||
<service
|
<service
|
||||||
android:name=".service.BackgroundLocalizationService"
|
android:name=".service.BackgroundLocalizationService"
|
||||||
@ -54,7 +62,9 @@
|
|||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".activity.TutorTab"
|
android:name=".activity.TutorTab"
|
||||||
android:theme="@style/AppTheme"/>
|
android:theme="@style/AppTheme"
|
||||||
|
android:screenOrientation="portrait"
|
||||||
|
android:configChanges="keyboardHidden|orientation|screenSize"/>
|
||||||
</application>
|
</application>
|
||||||
|
|
||||||
</manifest>
|
</manifest>
|
@ -5,8 +5,11 @@ import android.content.Context;
|
|||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
import android.content.res.Configuration;
|
import android.content.res.Configuration;
|
||||||
|
|
||||||
|
import com.uam.wmi.findmytutor.utils.Const;
|
||||||
|
|
||||||
import static org.acra.ReportField.*;
|
import static org.acra.ReportField.*;
|
||||||
import org.acra.ACRA;
|
import org.acra.ACRA;
|
||||||
|
import org.acra.annotation.AcraLimiter;
|
||||||
import org.acra.annotation.AcraNotification;
|
import org.acra.annotation.AcraNotification;
|
||||||
import org.acra.config.CoreConfigurationBuilder;
|
import org.acra.config.CoreConfigurationBuilder;
|
||||||
import org.acra.config.HttpSenderConfigurationBuilder;
|
import org.acra.config.HttpSenderConfigurationBuilder;
|
||||||
@ -20,6 +23,7 @@ import java.util.Map;
|
|||||||
@AcraNotification(resText = R.string.notification_text,
|
@AcraNotification(resText = R.string.notification_text,
|
||||||
resTitle = R.string.notification_title,
|
resTitle = R.string.notification_title,
|
||||||
resChannelName = R.string.notification_channel)
|
resChannelName = R.string.notification_channel)
|
||||||
|
@AcraLimiter(failedReportLimit = 2)
|
||||||
public class FindMyTutor extends Application {
|
public class FindMyTutor extends Application {
|
||||||
@Override
|
@Override
|
||||||
protected void attachBaseContext(Context base) {
|
protected void attachBaseContext(Context base) {
|
||||||
@ -48,7 +52,7 @@ public class FindMyTutor extends Application {
|
|||||||
builder.getPluginConfigurationBuilder(
|
builder.getPluginConfigurationBuilder(
|
||||||
HttpSenderConfigurationBuilder.class
|
HttpSenderConfigurationBuilder.class
|
||||||
// ).setUri("http://192.168.0.15:3000/api/acra")
|
// ).setUri("http://192.168.0.15:3000/api/acra")
|
||||||
).setUri("https://s416084.projektstudencki.pl/develop/api/Feedback/autoFeedback")
|
).setUri(Const.BASE_URL +"api/Feedback/autoFeedback")
|
||||||
.setHttpMethod(HttpSender.Method.POST)
|
.setHttpMethod(HttpSender.Method.POST)
|
||||||
.setHttpHeaders(header)
|
.setHttpHeaders(header)
|
||||||
.setEnabled(true);
|
.setEnabled(true);
|
||||||
|
@ -7,6 +7,7 @@ import android.app.FragmentTransaction;
|
|||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
import android.content.res.Configuration;
|
import android.content.res.Configuration;
|
||||||
|
import android.graphics.drawable.ColorDrawable;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.support.annotation.NonNull;
|
import android.support.annotation.NonNull;
|
||||||
@ -20,10 +21,14 @@ import android.support.v7.app.ActionBarDrawerToggle;
|
|||||||
import android.support.v7.app.AppCompatActivity;
|
import android.support.v7.app.AppCompatActivity;
|
||||||
import android.support.v7.widget.SearchView;
|
import android.support.v7.widget.SearchView;
|
||||||
import android.support.v7.widget.Toolbar;
|
import android.support.v7.widget.Toolbar;
|
||||||
|
import android.util.Log;
|
||||||
|
import android.view.Gravity;
|
||||||
import android.view.Menu;
|
import android.view.Menu;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.FrameLayout;
|
import android.widget.FrameLayout;
|
||||||
|
import android.widget.LinearLayout;
|
||||||
|
import android.widget.PopupWindow;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
import com.uam.wmi.findmytutor.R;
|
import com.uam.wmi.findmytutor.R;
|
||||||
@ -46,6 +51,7 @@ import io.reactivex.functions.Function;
|
|||||||
import io.reactivex.schedulers.Schedulers;
|
import io.reactivex.schedulers.Schedulers;
|
||||||
|
|
||||||
|
|
||||||
|
import static com.mapbox.mapboxsdk.Mapbox.getApplicationContext;
|
||||||
import static com.uam.wmi.findmytutor.utils.Const.defaultMapZoom;
|
import static com.uam.wmi.findmytutor.utils.Const.defaultMapZoom;
|
||||||
import static com.uam.wmi.findmytutor.utils.Const.searchMapZoom;
|
import static com.uam.wmi.findmytutor.utils.Const.searchMapZoom;
|
||||||
import static com.uam.wmi.findmytutor.utils.PrefUtils.storeBackgroundLocationStatus;
|
import static com.uam.wmi.findmytutor.utils.PrefUtils.storeBackgroundLocationStatus;
|
||||||
@ -76,15 +82,18 @@ public abstract class BaseActivity
|
|||||||
private ActiveFragment activeFragment = ActiveFragment.NONE;
|
private ActiveFragment activeFragment = ActiveFragment.NONE;
|
||||||
private Fragment activeBottomMenu = null;
|
private Fragment activeBottomMenu = null;
|
||||||
private SearchView searchView;
|
private SearchView searchView;
|
||||||
|
public MenuItem infoMenuItem;
|
||||||
|
|
||||||
@SuppressLint("CheckResult")
|
@SuppressLint("CheckResult")
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
setContentView(getContentViewId());
|
setContentView(getContentViewId());
|
||||||
|
|
||||||
drawerNavigationView = findViewById(R.id.nav_view);
|
drawerNavigationView = findViewById(R.id.nav_view);
|
||||||
sideDrawer = findViewById(R.id.activity_container);
|
sideDrawer = findViewById(R.id.activity_container);
|
||||||
feedbackUtils = new FeedbackUtils(BaseActivity.this);
|
feedbackUtils = new FeedbackUtils(BaseActivity.this);
|
||||||
|
|
||||||
drawerNavigationView.setNavigationItemSelectedListener(
|
drawerNavigationView.setNavigationItemSelectedListener(
|
||||||
item -> {
|
item -> {
|
||||||
String itemName = (String) item.getTitle();
|
String itemName = (String) item.getTitle();
|
||||||
@ -191,7 +200,10 @@ public abstract class BaseActivity
|
|||||||
public void stopBackgroundLocalizationTask() {
|
public void stopBackgroundLocalizationTask() {
|
||||||
Intent stopIntent = new Intent(getApplicationContext(), BackgroundLocalizationService.class);
|
Intent stopIntent = new Intent(getApplicationContext(), BackgroundLocalizationService.class);
|
||||||
stopIntent.putExtra("request_stop", true);
|
stopIntent.putExtra("request_stop", true);
|
||||||
startService(stopIntent);
|
Log.e("Localization", "JEstem w stop BG");
|
||||||
|
|
||||||
|
stopService(stopIntent);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void startBackgroundLocalizationTask() {
|
public void startBackgroundLocalizationTask() {
|
||||||
@ -207,12 +219,17 @@ public abstract class BaseActivity
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void handleBackgroundTaskLifeCycle() {
|
public void handleBackgroundTaskLifeCycle() {
|
||||||
|
Log.e("Localization", String.valueOf(PrefUtils.isEnableSharingLocalization(getApplicationContext())));
|
||||||
Boolean shouldServiceRun = PrefUtils.isEnableSharingLocalization(getApplicationContext()) && isTutor;
|
Boolean shouldServiceRun = PrefUtils.isEnableSharingLocalization(getApplicationContext()) && isTutor;
|
||||||
|
Log.e("Localization", String.valueOf(shouldServiceRun));
|
||||||
|
|
||||||
if (shouldServiceRun) {
|
if (shouldServiceRun) {
|
||||||
startBackgroundLocalizationTask();
|
startBackgroundLocalizationTask();
|
||||||
|
Log.e("Localization", "JEstem i odpalam");
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
stopBackgroundLocalizationTask();
|
stopBackgroundLocalizationTask();
|
||||||
|
Log.e("Localization", "JEstem i nie odpalam");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -266,6 +283,8 @@ public abstract class BaseActivity
|
|||||||
@Override
|
@Override
|
||||||
public boolean onCreateOptionsMenu(Menu menu) {
|
public boolean onCreateOptionsMenu(Menu menu) {
|
||||||
getMenuInflater().inflate(R.menu.menu_main, menu);
|
getMenuInflater().inflate(R.menu.menu_main, menu);
|
||||||
|
infoMenuItem = menu.findItem(R.id.action_info);
|
||||||
|
|
||||||
|
|
||||||
MenuItem myActionMenuItem = menu.findItem(R.id.action_search);
|
MenuItem myActionMenuItem = menu.findItem(R.id.action_search);
|
||||||
searchView = (SearchView) myActionMenuItem.getActionView();
|
searchView = (SearchView) myActionMenuItem.getActionView();
|
||||||
@ -313,6 +332,33 @@ public abstract class BaseActivity
|
|||||||
if (actionBarDrawerToggle.onOptionsItemSelected(item)) {
|
if (actionBarDrawerToggle.onOptionsItemSelected(item)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (item.getItemId()==R.id.action_info){
|
||||||
|
int layoutID;
|
||||||
|
switch (activeFragment){
|
||||||
|
case SHARED_PREFERENCES:
|
||||||
|
layoutID = R.layout.info_popup_sharing_tab;
|
||||||
|
break;
|
||||||
|
case USER_LIST:
|
||||||
|
layoutID = R.layout.info_popup_userlist;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
layoutID = R.layout.info_popup_map;
|
||||||
|
}
|
||||||
|
|
||||||
|
View popupView = getLayoutInflater().inflate(layoutID,null);
|
||||||
|
|
||||||
|
PopupWindow popupWindow = new PopupWindow(popupView,
|
||||||
|
LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
|
||||||
|
// If the PopupWindow should be focusable
|
||||||
|
popupWindow.setFocusable(true);
|
||||||
|
// If you need the PopupWindow to dismiss when when touched outside
|
||||||
|
popupWindow.setBackgroundDrawable(new ColorDrawable());
|
||||||
|
// Get the View's(the one that was clicked in the Fragment) location
|
||||||
|
View anchorView= getWindow().getDecorView().findViewById(android.R.id.content);
|
||||||
|
popupWindow.showAtLocation(anchorView,Gravity.TOP|Gravity.END, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
return super.onOptionsItemSelected(item);
|
return super.onOptionsItemSelected(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -343,7 +389,7 @@ public abstract class BaseActivity
|
|||||||
if (itemId == R.id.nav_map) {
|
if (itemId == R.id.nav_map) {
|
||||||
removeFragment(sharingFragment);
|
removeFragment(sharingFragment);
|
||||||
removeFragment(userListFragment);
|
removeFragment(userListFragment);
|
||||||
activeFragment = ActiveFragment.NONE;
|
activeFragment = ActiveFragment.NONE;
|
||||||
} else if (itemId == R.id.nav_profile) {
|
} else if (itemId == R.id.nav_profile) {
|
||||||
loadUserSettingsFragment();
|
loadUserSettingsFragment();
|
||||||
} else if (itemId == R.id.nav_user_list) {
|
} else if (itemId == R.id.nav_user_list) {
|
||||||
|
@ -47,6 +47,9 @@ import com.uam.wmi.findmytutor.service.CoordinateService;
|
|||||||
import com.uam.wmi.findmytutor.service.PredefinedStatusesService;
|
import com.uam.wmi.findmytutor.service.PredefinedStatusesService;
|
||||||
import com.uam.wmi.findmytutor.service.UserService;
|
import com.uam.wmi.findmytutor.service.UserService;
|
||||||
import com.uam.wmi.findmytutor.utils.ApproximatedLocalization;
|
import com.uam.wmi.findmytutor.utils.ApproximatedLocalization;
|
||||||
|
|
||||||
|
import com.uam.wmi.findmytutor.utils.EnableSharingDialog;
|
||||||
|
|
||||||
import com.uam.wmi.findmytutor.utils.ManualLocationUtils;
|
import com.uam.wmi.findmytutor.utils.ManualLocationUtils;
|
||||||
import com.uam.wmi.findmytutor.utils.MapMarker;
|
import com.uam.wmi.findmytutor.utils.MapMarker;
|
||||||
import com.uam.wmi.findmytutor.utils.MapUtils;
|
import com.uam.wmi.findmytutor.utils.MapUtils;
|
||||||
@ -103,6 +106,7 @@ public class MapActivity extends BaseActivity
|
|||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
isTutor = PrefUtils.getIsTutor(this);
|
isTutor = PrefUtils.getIsTutor(this);
|
||||||
myId = PrefUtils.getUserId(getApplicationContext());
|
myId = PrefUtils.getUserId(getApplicationContext());
|
||||||
|
|
||||||
@ -146,7 +150,7 @@ public class MapActivity extends BaseActivity
|
|||||||
String id = markerUserHash.get(marker.getId());
|
String id = markerUserHash.get(marker.getId());
|
||||||
String locationLevel = PrefUtils.getLocationLevel(getApplicationContext());
|
String locationLevel = PrefUtils.getLocationLevel(getApplicationContext());
|
||||||
|
|
||||||
if (id.equals(myId) && (locationLevel.equals(SharingLevel.MANUAL.toString()) || locationLevel.equals(SharingLevel.PREDEFINED.toString()))) {
|
/* if (id.equals(myId) && (locationLevel.equals(SharingLevel.MANUAL.toString()) || locationLevel.equals(SharingLevel.PREDEFINED.toString()))) {
|
||||||
selectLocationButton.setVisibility(View.GONE);
|
selectLocationButton.setVisibility(View.GONE);
|
||||||
removeLocationButton.setVisibility(View.VISIBLE);
|
removeLocationButton.setVisibility(View.VISIBLE);
|
||||||
|
|
||||||
@ -157,9 +161,9 @@ public class MapActivity extends BaseActivity
|
|||||||
Toast.makeText(MapActivity.this, R.string.manual_marker_info, Toast.LENGTH_SHORT).show();
|
Toast.makeText(MapActivity.this, R.string.manual_marker_info, Toast.LENGTH_SHORT).show();
|
||||||
|
|
||||||
});
|
});
|
||||||
} else {
|
} else {*/
|
||||||
createMarkerModal(id);
|
createMarkerModal(id);
|
||||||
}
|
/* }*/
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
@ -211,14 +215,19 @@ public class MapActivity extends BaseActivity
|
|||||||
TextView sharingLevelView = view.findViewById(R.id.sharing_level);
|
TextView sharingLevelView = view.findViewById(R.id.sharing_level);
|
||||||
|
|
||||||
userName.setText(String.format("%s %s", user.getFirstName(), user.getLastName()));
|
userName.setText(String.format("%s %s", user.getFirstName(), user.getLastName()));
|
||||||
status.setText(String.format("%s: %s", getResources().getString(R.string.status_switch_title), cordStatus));
|
|
||||||
|
if(cordStatus.equals("")){
|
||||||
|
status.setText(String.format("%s: %s", getResources().getString(R.string.status_switch_title), getString(R.string.lack_of_status)));
|
||||||
|
}else{
|
||||||
|
status.setText(String.format("%s: %s", getResources().getString(R.string.status_switch_title), cordStatus));
|
||||||
|
}
|
||||||
|
|
||||||
sharingLevelView.setText(String.format("%s: %s", getResources().getString(R.string.settings_location_level), sharingLevel));
|
sharingLevelView.setText(String.format("%s: %s", getResources().getString(R.string.settings_location_level), sharingLevel));
|
||||||
|
|
||||||
final AlertDialog alertDialog = alertDialogBuilderUserInput.create();
|
final AlertDialog alertDialog = alertDialogBuilderUserInput.create();
|
||||||
alertDialog.show();
|
alertDialog.show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void handleError(Throwable error) {
|
private void handleError(Throwable error) {
|
||||||
showError(error);
|
showError(error);
|
||||||
}
|
}
|
||||||
@ -226,8 +235,6 @@ public class MapActivity extends BaseActivity
|
|||||||
private void showError(Throwable e) {
|
private void showError(Throwable e) {
|
||||||
String message;
|
String message;
|
||||||
|
|
||||||
Log.e("ERR", e.toString());
|
|
||||||
|
|
||||||
if (e instanceof HttpException) {
|
if (e instanceof HttpException) {
|
||||||
ResponseBody responseBody = ((HttpException) e).response().errorBody();
|
ResponseBody responseBody = ((HttpException) e).response().errorBody();
|
||||||
message = RestApiHelper.getErrorMessage(responseBody);
|
message = RestApiHelper.getErrorMessage(responseBody);
|
||||||
@ -282,6 +289,11 @@ public class MapActivity extends BaseActivity
|
|||||||
PrefUtils.getLocationLevel(getApplicationContext())
|
PrefUtils.getLocationLevel(getApplicationContext())
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if (!PrefUtils.isEnableSharingLocalization(getApplicationContext())) {
|
||||||
|
EnableSharingDialog sharingDialog = new EnableSharingDialog();
|
||||||
|
sharingDialog.show(getFragmentManager(), "Sharing");
|
||||||
|
}
|
||||||
|
|
||||||
PrefUtils.putManualLocation(this, latLng, approximatedLocation);
|
PrefUtils.putManualLocation(this, latLng, approximatedLocation);
|
||||||
|
|
||||||
handleBackgroundTaskLifeCycle();
|
handleBackgroundTaskLifeCycle();
|
||||||
@ -325,10 +337,14 @@ public class MapActivity extends BaseActivity
|
|||||||
|
|
||||||
alertDialog.setOnShowListener(dialogInterface -> {
|
alertDialog.setOnShowListener(dialogInterface -> {
|
||||||
Button sendButton = alertDialog.getButton(AlertDialog.BUTTON_POSITIVE);
|
Button sendButton = alertDialog.getButton(AlertDialog.BUTTON_POSITIVE);
|
||||||
|
|
||||||
Button dismissButton = alertDialog.getButton(AlertDialog.BUTTON_NEGATIVE);
|
Button dismissButton = alertDialog.getButton(AlertDialog.BUTTON_NEGATIVE);
|
||||||
|
|
||||||
dismissButton.setOnClickListener(view1 -> alertDialog.dismiss());
|
dismissButton.setOnClickListener(view1 -> {
|
||||||
|
PrefUtils.putCurrentManualLocationName(getApplicationContext(), "Inne");
|
||||||
|
PrefUtils.putCurrentManualLocation(getApplicationContext(), "-1");
|
||||||
|
|
||||||
|
alertDialog.dismiss();
|
||||||
|
});
|
||||||
|
|
||||||
sendButton.setOnClickListener(view1 -> {
|
sendButton.setOnClickListener(view1 -> {
|
||||||
String body = modalUserInput.getText().toString();
|
String body = modalUserInput.getText().toString();
|
||||||
@ -338,7 +354,7 @@ public class MapActivity extends BaseActivity
|
|||||||
modalUserInput.requestFocus();
|
modalUserInput.requestFocus();
|
||||||
} else {
|
} else {
|
||||||
sendLocation(body, latLng);
|
sendLocation(body, latLng);
|
||||||
PrefUtils.putCurrentManualLocationName(getApplicationContext(),body);
|
PrefUtils.putCurrentManualLocationName(getApplicationContext(), body);
|
||||||
alertDialog.dismiss();
|
alertDialog.dismiss();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -727,4 +743,5 @@ public class MapActivity extends BaseActivity
|
|||||||
public void adjustMapToSearch(Integer zoom) {
|
public void adjustMapToSearch(Integer zoom) {
|
||||||
MapUtils.setZoom(mapboxMap, zoom);
|
MapUtils.setZoom(mapboxMap, zoom);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
}
|
@ -11,6 +11,7 @@ import android.preference.Preference;
|
|||||||
import android.preference.PreferenceFragment;
|
import android.preference.PreferenceFragment;
|
||||||
import android.preference.PreferenceManager;
|
import android.preference.PreferenceManager;
|
||||||
import android.util.DisplayMetrics;
|
import android.util.DisplayMetrics;
|
||||||
|
import android.util.Log;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
|
|
||||||
import com.uam.wmi.findmytutor.R;
|
import com.uam.wmi.findmytutor.R;
|
||||||
@ -54,7 +55,7 @@ public class SettingsActivity extends AppCompatPreferenceActivity {
|
|||||||
Preference languagesList = findPreference(getResources().getString(R.string.key_language));
|
Preference languagesList = findPreference(getResources().getString(R.string.key_language));
|
||||||
languagesList.setDefaultValue(0);
|
languagesList.setDefaultValue(0);
|
||||||
|
|
||||||
if(PrefUtils.getLocale(getActivity()).equals("pl")){
|
if(PrefUtils.getLocale(getActivity()).equals("1")){
|
||||||
languagesList.setDefaultValue(1);
|
languagesList.setDefaultValue(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,11 +2,13 @@ package com.uam.wmi.findmytutor.activity;
|
|||||||
|
|
||||||
import android.annotation.SuppressLint;
|
import android.annotation.SuppressLint;
|
||||||
import android.app.FragmentTransaction;
|
import android.app.FragmentTransaction;
|
||||||
|
import android.content.SharedPreferences;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.preference.ListPreference;
|
import android.preference.ListPreference;
|
||||||
import android.preference.Preference;
|
import android.preference.Preference;
|
||||||
import android.preference.PreferenceCategory;
|
import android.preference.PreferenceCategory;
|
||||||
import android.preference.PreferenceFragment;
|
import android.preference.PreferenceFragment;
|
||||||
|
import android.preference.SwitchPreference;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
@ -20,6 +22,8 @@ import com.uam.wmi.findmytutor.R;
|
|||||||
import com.uam.wmi.findmytutor.model.PredefinedCoordViewModel;
|
import com.uam.wmi.findmytutor.model.PredefinedCoordViewModel;
|
||||||
import com.uam.wmi.findmytutor.network.ApiClient;
|
import com.uam.wmi.findmytutor.network.ApiClient;
|
||||||
import com.uam.wmi.findmytutor.service.PredefinedStatusesService;
|
import com.uam.wmi.findmytutor.service.PredefinedStatusesService;
|
||||||
|
import com.uam.wmi.findmytutor.utils.Const;
|
||||||
|
import com.uam.wmi.findmytutor.utils.EnableSharingDialog;
|
||||||
import com.uam.wmi.findmytutor.utils.PrefUtils;
|
import com.uam.wmi.findmytutor.utils.PrefUtils;
|
||||||
import com.uam.wmi.findmytutor.utils.RestApiHelper;
|
import com.uam.wmi.findmytutor.utils.RestApiHelper;
|
||||||
import com.uam.wmi.findmytutor.utils.RightButtonPreference;
|
import com.uam.wmi.findmytutor.utils.RightButtonPreference;
|
||||||
@ -39,10 +43,10 @@ import okhttp3.ResponseBody;
|
|||||||
import static com.mapbox.mapboxsdk.Mapbox.getApplicationContext;
|
import static com.mapbox.mapboxsdk.Mapbox.getApplicationContext;
|
||||||
|
|
||||||
|
|
||||||
public class SharingFragment extends PreferenceFragment {
|
public class SharingFragment extends PreferenceFragment implements SharedPreferences.OnSharedPreferenceChangeListener {
|
||||||
protected Preference locationSharing;
|
protected SwitchPreference locationSharing;
|
||||||
protected Preference locationMode;
|
protected Preference locationMode;
|
||||||
protected Preference manualLocationList;
|
protected ListPreference manualLocationList;
|
||||||
protected PreferenceCategory preferenceCategory;
|
protected PreferenceCategory preferenceCategory;
|
||||||
protected RightButtonPreference manualLocationButton;
|
protected RightButtonPreference manualLocationButton;
|
||||||
protected Preference manualStatus;
|
protected Preference manualStatus;
|
||||||
@ -66,7 +70,7 @@ public class SharingFragment extends PreferenceFragment {
|
|||||||
@Override
|
@Override
|
||||||
public void onSuccess(List<String> strings) {
|
public void onSuccess(List<String> strings) {
|
||||||
String[] statusesArray = strings.toArray(new String[strings.size()]);
|
String[] statusesArray = strings.toArray(new String[strings.size()]);
|
||||||
setListPreferenceData(statusList.getKey(), statusesArray,null);
|
setListPreferenceData(statusList, statusesArray, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -85,26 +89,27 @@ public class SharingFragment extends PreferenceFragment {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(List<PredefinedCoordViewModel> coords) {
|
public void onSuccess(List<PredefinedCoordViewModel> coords) {
|
||||||
List<String> names = Stream.of(coords).map(PredefinedCoordViewModel::getName).collect(com.annimon.stream.Collectors.toList());
|
|
||||||
predefinedCoordsList.addAll(coords);
|
|
||||||
String[] stringnames = names.toArray(new String[0]);
|
|
||||||
String currentCoordId = PrefUtils.getCurrentManualLocation(getApplicationContext());
|
String currentCoordId = PrefUtils.getCurrentManualLocation(getApplicationContext());
|
||||||
|
|
||||||
List<Integer> activeId = Stream.of(coords).indexed()
|
List<String> predefinedLocationsNames = Stream.of(coords).map(PredefinedCoordViewModel::getName).toList();
|
||||||
|
predefinedCoordsList.addAll(coords);
|
||||||
|
|
||||||
|
String[] stringnames = predefinedLocationsNames.toArray(new String[0]);
|
||||||
|
|
||||||
|
List<Integer> activesId = Stream.of(coords).indexed()
|
||||||
.filter(v -> v.getSecond().getPredefinedCoordinateId().equals(currentCoordId)).map(IntPair::getFirst).toList();
|
.filter(v -> v.getSecond().getPredefinedCoordinateId().equals(currentCoordId)).map(IntPair::getFirst).toList();
|
||||||
|
|
||||||
if(activeId.size() > 0)
|
if( activesId.size() == 0){
|
||||||
setListPreferenceData(manualLocationList.getKey(), stringnames, activeId.get(0));
|
setListPreferenceData(manualLocationList, stringnames, null);
|
||||||
else{
|
}
|
||||||
setListPreferenceData(manualLocationList.getKey(), stringnames,null);
|
else {
|
||||||
|
setListPreferenceData(manualLocationList, stringnames, activesId.get(0));
|
||||||
}
|
}
|
||||||
Log.d("sharingpref", names.toString());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onError(Throwable e) {
|
public void onError(Throwable e) {
|
||||||
Toast.makeText(getApplicationContext(), R.string.error_location_fetch, Toast.LENGTH_SHORT).show();
|
Toast.makeText(getApplicationContext(), R.string.error_location_fetch, Toast.LENGTH_SHORT).show();
|
||||||
|
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
@ -114,18 +119,17 @@ public class SharingFragment extends PreferenceFragment {
|
|||||||
public void onCreate(final Bundle savedInstanceState) {
|
public void onCreate(final Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
addPreferencesFromResource(R.layout.pref_sharing);
|
addPreferencesFromResource(R.layout.pref_sharing);
|
||||||
locationSharing = findPreference("key_sharing_enabled");
|
locationSharing = (SwitchPreference) findPreference("key_sharing_enabled");
|
||||||
locationMode = findPreference("key_location_level");
|
locationMode = findPreference("key_location_level");
|
||||||
preferenceCategory = (PreferenceCategory) findPreference("category_sharing");
|
preferenceCategory = (PreferenceCategory) findPreference("category_sharing");
|
||||||
manualLocationList = findPreference("key_manual_location_value");
|
manualLocationList = (ListPreference) findPreference("key_manual_location_value");
|
||||||
manualLocationButton = (RightButtonPreference) findPreference("manual_location_button");
|
manualLocationButton = (RightButtonPreference) findPreference("manual_location_button");
|
||||||
manualStatus = findPreference("key_manual_status");
|
manualStatus = findPreference("key_manual_status");
|
||||||
statusList = (ListPreference) findPreference("key_status_value");
|
statusList = (ListPreference) findPreference("key_status_value");
|
||||||
statusesService = ApiClient.getClient(getApplicationContext()).create(PredefinedStatusesService.class);
|
statusesService = ApiClient.getClient(getApplicationContext()).create(PredefinedStatusesService.class);
|
||||||
disposable = new CompositeDisposable();
|
disposable = new CompositeDisposable();
|
||||||
getStatuses(disposable);
|
getStatuses(disposable);
|
||||||
getLocations(disposable);
|
getLocations(disposable);
|
||||||
|
|
||||||
locationLevelMapping = new HashMap<Integer, String>();
|
locationLevelMapping = new HashMap<Integer, String>();
|
||||||
locationLevelMapping.put(0, SharingLevel.PRESENCE.toString());
|
locationLevelMapping.put(0, SharingLevel.PRESENCE.toString());
|
||||||
locationLevelMapping.put(1, SharingLevel.APPROXIMATED.toString());
|
locationLevelMapping.put(1, SharingLevel.APPROXIMATED.toString());
|
||||||
@ -139,7 +143,7 @@ public class SharingFragment extends PreferenceFragment {
|
|||||||
|
|
||||||
statusList.setSummary(PrefUtils.getUserStatus(getApplicationContext()));
|
statusList.setSummary(PrefUtils.getUserStatus(getApplicationContext()));
|
||||||
manualLocationList.setSummary(PrefUtils.getCurrentManualLocationName(getApplicationContext()));
|
manualLocationList.setSummary(PrefUtils.getCurrentManualLocationName(getApplicationContext()));
|
||||||
// manualLocationList.setSummary(PrefUtils.getManualLocation(getApplicationContext()));
|
|
||||||
/** Main sharing switch**/
|
/** Main sharing switch**/
|
||||||
locationSharing.setOnPreferenceChangeListener((buttonView, newValue) -> {
|
locationSharing.setOnPreferenceChangeListener((buttonView, newValue) -> {
|
||||||
PrefUtils.storeEnableSharingLocalization(getApplicationContext(), (Boolean) newValue);
|
PrefUtils.storeEnableSharingLocalization(getApplicationContext(), (Boolean) newValue);
|
||||||
@ -151,10 +155,11 @@ public class SharingFragment extends PreferenceFragment {
|
|||||||
locationMode.setOnPreferenceChangeListener((preference, newValue) -> {
|
locationMode.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||||
|
|
||||||
PrefUtils.storeLocationMode(getApplicationContext(), locationLevelMapping.get(Integer.parseInt((String) newValue)));
|
PrefUtils.storeLocationMode(getApplicationContext(), locationLevelMapping.get(Integer.parseInt((String) newValue)));
|
||||||
if (PrefUtils.getLocationLevel(getApplicationContext()).equals("manual")) {
|
|
||||||
if(!predefinedCoordsList.isEmpty()){
|
if (PrefUtils.getLocationLevel(getApplicationContext()).equals(SharingLevel.MANUAL.toString())) {
|
||||||
preferenceCategory.addPreference(manualLocationList);
|
if (!predefinedCoordsList.isEmpty()) {
|
||||||
}
|
preferenceCategory.addPreference(manualLocationList);
|
||||||
|
}
|
||||||
|
|
||||||
preferenceCategory.addPreference(manualLocationButton);
|
preferenceCategory.addPreference(manualLocationButton);
|
||||||
|
|
||||||
@ -169,12 +174,6 @@ public class SharingFragment extends PreferenceFragment {
|
|||||||
if (!PrefUtils.getLocationLevel(getApplicationContext()).equals("manual")) {
|
if (!PrefUtils.getLocationLevel(getApplicationContext()).equals("manual")) {
|
||||||
preferenceCategory.removePreference(manualLocationList);
|
preferenceCategory.removePreference(manualLocationList);
|
||||||
preferenceCategory.removePreference(manualLocationButton);
|
preferenceCategory.removePreference(manualLocationButton);
|
||||||
}else{
|
|
||||||
// if(predefinedCoordsList.isEmpty()){
|
|
||||||
//// preferenceCategory.removePreference(manualLocationList);
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Custom manual location list change listener **/
|
/** Custom manual location list change listener **/
|
||||||
@ -182,14 +181,24 @@ public class SharingFragment extends PreferenceFragment {
|
|||||||
ListPreference lp = (ListPreference) preference;
|
ListPreference lp = (ListPreference) preference;
|
||||||
CharSequence[] entries = lp.getEntries();
|
CharSequence[] entries = lp.getEntries();
|
||||||
PredefinedCoordViewModel temp = Stream.of(predefinedCoordsList).filter(p -> p.getName().equals(lp.getEntries()[Integer.parseInt((String) newValue)].toString())).toList().get(0);
|
PredefinedCoordViewModel temp = Stream.of(predefinedCoordsList).filter(p -> p.getName().equals(lp.getEntries()[Integer.parseInt((String) newValue)].toString())).toList().get(0);
|
||||||
PrefUtils.putManualLocation(getApplicationContext(), temp.getGeoData(), temp.getApproximatedLocation() );
|
|
||||||
PrefUtils.putCurrentManualLocation(getApplicationContext(),temp.getPredefinedCoordinateId());
|
//sharing dialog -> ask for start BG
|
||||||
PrefUtils.putCurrentManualLocationName(getApplicationContext(), (String )lp.getEntries()[Integer.parseInt((String) newValue)]);
|
if (!PrefUtils.isEnableSharingLocalization(getApplicationContext())) {
|
||||||
|
EnableSharingDialog sharingDialog = new EnableSharingDialog();
|
||||||
|
sharingDialog.show(getFragmentManager(), "Sharing");
|
||||||
|
}
|
||||||
|
|
||||||
|
PrefUtils.putManualLocation(getApplicationContext(), temp.getGeoData(), temp.getApproximatedLocation());
|
||||||
|
PrefUtils.putCurrentManualLocation(getApplicationContext(), temp.getPredefinedCoordinateId());
|
||||||
|
PrefUtils.putCurrentManualLocationName(getApplicationContext(), (String) lp.getEntries()[Integer.parseInt((String) newValue)]);
|
||||||
lp.setSummary(lp.getEntries()[Integer.parseInt((String) newValue)]);
|
lp.setSummary(lp.getEntries()[Integer.parseInt((String) newValue)]);
|
||||||
|
((MapActivity) getActivity()).handleBackgroundTaskLifeCycle();
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/** Button 'choose from map' button listener **/
|
/** Button 'choose from map' button listener **/
|
||||||
manualLocationButton.setOnPreferenceChangeListener((preference, o) -> {
|
manualLocationButton.setOnPreferenceChangeListener((preference, o) -> {
|
||||||
FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
|
FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
|
||||||
@ -206,6 +215,7 @@ public class SharingFragment extends PreferenceFragment {
|
|||||||
lp.setSummary(entries[Integer.parseInt((String) newValue)]);
|
lp.setSummary(entries[Integer.parseInt((String) newValue)]);
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
|
|
||||||
/** Custom status list change listener **/
|
/** Custom status list change listener **/
|
||||||
manualStatus.setOnPreferenceChangeListener((preference, newValue) -> {
|
manualStatus.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||||
|
|
||||||
@ -214,11 +224,8 @@ public class SharingFragment extends PreferenceFragment {
|
|||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
.subscribe(this::handleResponse, this::handleError));
|
.subscribe(this::handleResponse, this::handleError));
|
||||||
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -229,38 +236,38 @@ public class SharingFragment extends PreferenceFragment {
|
|||||||
return view;
|
return view;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void setListPreferenceData(String lp_name, String[] entries, Integer activeId) {
|
protected void setListPreferenceData(ListPreference lp, String[] entries, Integer activeId) {
|
||||||
try {
|
|
||||||
ListPreference lp = (ListPreference) findPreference(lp_name);
|
|
||||||
lp.setEntries(entries);
|
|
||||||
CharSequence[] entryValues = new CharSequence[entries.length];
|
|
||||||
|
|
||||||
for (int i = 0; i < entries.length; i++) {
|
try {
|
||||||
entryValues[i] = Integer.toString(i);
|
lp.setEntries(entries);
|
||||||
}
|
CharSequence[] entryValues = new CharSequence[entries.length];
|
||||||
|
|
||||||
lp.setDefaultValue(0);
|
for (int i = 0; i < entries.length; i++) {
|
||||||
lp.setEntryValues(entryValues);
|
entryValues[i] = Integer.toString(i);
|
||||||
|
}
|
||||||
|
|
||||||
if(entries.length > 0 && activeId != null)
|
lp.setDefaultValue(0);
|
||||||
lp.setValueIndex(activeId);
|
lp.setEntryValues(entryValues);
|
||||||
}catch (Exception e){
|
|
||||||
// Toast.makeText(getApplicationContext(),
|
|
||||||
// "duupa", Toast.LENGTH_SHORT).show();
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
if (entries.length > 0 && activeId != null)
|
||||||
|
lp.setValueIndex(activeId);
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
Log.e("Failed to set listPref", e.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
;
|
||||||
|
|
||||||
private void handleResponse(List<String> resp) {
|
private void handleResponse(List<String> resp) {
|
||||||
String[] statusesArray = resp.toArray(new String[resp.size()]);
|
String[] statusesArray = resp.toArray(new String[resp.size()]);
|
||||||
|
|
||||||
setListPreferenceData(statusList.getKey(), statusesArray,resp.size() - 1);
|
setListPreferenceData(statusList, statusesArray, resp.size() - 1);
|
||||||
|
|
||||||
statusList.setValueIndex(resp.size() - 1);
|
statusList.setValueIndex(resp.size() - 1);
|
||||||
PrefUtils.storeStatus(getApplicationContext(), resp.get(resp.size() - 1));
|
PrefUtils.storeStatus(getApplicationContext(), resp.get(resp.size() - 1));
|
||||||
statusList.setSummary(PrefUtils.getUserStatus(getApplicationContext()));
|
statusList.setSummary(PrefUtils.getUserStatus(getApplicationContext()));
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void handleError(Throwable error) {
|
private void handleError(Throwable error) {
|
||||||
@ -275,4 +282,22 @@ public class SharingFragment extends PreferenceFragment {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
|
||||||
|
locationSharing.setChecked(PrefUtils.isEnableSharingLocalization(getApplicationContext()));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onResume() {
|
||||||
|
super.onResume();
|
||||||
|
getPreferenceManager().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onPause() {
|
||||||
|
getPreferenceManager().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
|
||||||
|
super.onPause();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,6 +23,7 @@ public class StartupActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
if (PrefUtils.isLoggedIn(getApplicationContext())){
|
if (PrefUtils.isLoggedIn(getApplicationContext())){
|
||||||
Intent startupIntent = new Intent(this, MapActivity.class);
|
Intent startupIntent = new Intent(this, MapActivity.class);
|
||||||
|
PrefUtils.storeLocale(getApplicationContext(),PrefUtils.getLocale(getApplicationContext()));
|
||||||
startupIntent.putExtra(currentLang, PrefUtils.getLocale(getApplicationContext()));
|
startupIntent.putExtra(currentLang, PrefUtils.getLocale(getApplicationContext()));
|
||||||
startupIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
startupIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
||||||
startActivity(startupIntent);
|
startActivity(startupIntent);
|
||||||
|
@ -1,26 +1,36 @@
|
|||||||
package com.uam.wmi.findmytutor.activity;
|
package com.uam.wmi.findmytutor.activity;
|
||||||
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.support.design.widget.TextInputEditText;
|
||||||
|
import android.support.design.widget.TextInputLayout;
|
||||||
import android.support.v7.app.AppCompatActivity;
|
import android.support.v7.app.AppCompatActivity;
|
||||||
|
import android.support.v7.widget.LinearLayoutManager;
|
||||||
|
import android.support.v7.widget.RecyclerView;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
import android.widget.Adapter;
|
||||||
import android.widget.Button;
|
import android.widget.Button;
|
||||||
import android.widget.EditText;
|
import android.widget.EditText;
|
||||||
|
import android.widget.LinearLayout;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
import com.annimon.stream.Stream;
|
import com.annimon.stream.Stream;
|
||||||
import com.jakewharton.retrofit2.adapter.rxjava2.HttpException;
|
import com.jakewharton.retrofit2.adapter.rxjava2.HttpException;
|
||||||
import com.uam.wmi.findmytutor.R;
|
import com.uam.wmi.findmytutor.R;
|
||||||
|
import com.uam.wmi.findmytutor.adapters.DutyHoursAdapter;
|
||||||
|
import com.uam.wmi.findmytutor.model.DutyHour;
|
||||||
import com.uam.wmi.findmytutor.model.DutyHourViewModel;
|
import com.uam.wmi.findmytutor.model.DutyHourViewModel;
|
||||||
import com.uam.wmi.findmytutor.model.TutorTabViewModel;
|
import com.uam.wmi.findmytutor.model.TutorTabViewModel;
|
||||||
import com.uam.wmi.findmytutor.model.User;
|
import com.uam.wmi.findmytutor.model.User;
|
||||||
import com.uam.wmi.findmytutor.network.ApiClient;
|
import com.uam.wmi.findmytutor.network.ApiClient;
|
||||||
import com.uam.wmi.findmytutor.service.TutorTabApi;
|
import com.uam.wmi.findmytutor.service.TutorTabApi;
|
||||||
import com.uam.wmi.findmytutor.service.UserService;
|
import com.uam.wmi.findmytutor.service.UserService;
|
||||||
|
import com.uam.wmi.findmytutor.utils.InfoHelperUtils;
|
||||||
import com.uam.wmi.findmytutor.utils.PrefUtils;
|
import com.uam.wmi.findmytutor.utils.PrefUtils;
|
||||||
import com.uam.wmi.findmytutor.utils.RestApiHelper;
|
import com.uam.wmi.findmytutor.utils.RestApiHelper;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -37,31 +47,41 @@ public class TutorTab extends AppCompatActivity {
|
|||||||
private CompositeDisposable disposable = new CompositeDisposable();
|
private CompositeDisposable disposable = new CompositeDisposable();
|
||||||
private TextView userName;
|
private TextView userName;
|
||||||
private TextView userDutyHours;
|
private TextView userDutyHours;
|
||||||
private EditText userNote;
|
private TextInputEditText userNote;
|
||||||
private TextView userRoom;
|
private TextView userRoom;
|
||||||
private TextView userEmail;
|
private TextView userEmail;
|
||||||
private TextView department;
|
private TextView department;
|
||||||
|
private Button addDutyButton;
|
||||||
private Button saveButon;
|
private Button saveButon;
|
||||||
|
private Boolean ifTutorTabExists = true;
|
||||||
|
private List<DutyHourViewModel> dutyHourList;
|
||||||
|
private RecyclerView dutyHoursRecycller;
|
||||||
|
private DutyHoursAdapter dutyHoursAdapter;
|
||||||
|
private RecyclerView.LayoutManager dutyHoursLayoutManager;
|
||||||
private TutorTabViewModel newTab;
|
private TutorTabViewModel newTab;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
setContentView(R.layout.content_tutor_tab);
|
||||||
|
|
||||||
|
userName = findViewById(R.id.userName);
|
||||||
|
userNote = (TextInputEditText) findViewById(R.id.userNote);
|
||||||
|
userRoom = findViewById(R.id.userRoom);
|
||||||
|
userEmail = findViewById(R.id.userEmail);
|
||||||
|
department = findViewById(R.id.userDepartment);
|
||||||
|
saveButon = findViewById(R.id.saveButon);
|
||||||
|
addDutyButton = findViewById(R.id.addDuty);
|
||||||
|
dutyHoursRecycller = (RecyclerView) findViewById(R.id.dutyHourView);
|
||||||
|
dutyHoursLayoutManager = new LinearLayoutManager(this);
|
||||||
|
dutyHoursRecycller.setLayoutManager(dutyHoursLayoutManager);
|
||||||
|
|
||||||
|
|
||||||
tutorTabService = ApiClient.getClient(getApplicationContext())
|
tutorTabService = ApiClient.getClient(getApplicationContext())
|
||||||
.create(TutorTabApi.class);
|
.create(TutorTabApi.class);
|
||||||
userService = ApiClient.getClient(getApplicationContext())
|
userService = ApiClient.getClient(getApplicationContext())
|
||||||
.create(UserService.class);
|
.create(UserService.class);
|
||||||
setContentView(R.layout.content_tutor_tab);
|
|
||||||
TextView userName = findViewById(R.id.userName);
|
|
||||||
TextView userDutyHours = findViewById(R.id.userDutyHours);
|
|
||||||
EditText userNote = findViewById(R.id.userNote);
|
|
||||||
TextView userRoom = findViewById(R.id.userRoom);
|
|
||||||
TextView userEmail = findViewById(R.id.userEmail);
|
|
||||||
TextView department = findViewById(R.id.userDepartment);
|
|
||||||
Button saveButon = findViewById(R.id.saveButon);
|
|
||||||
|
|
||||||
userName.setText(String.format("%s %s", PrefUtils.getUserFirstName(getApplicationContext()), PrefUtils.getUserLastName(getApplicationContext())));
|
|
||||||
disposable.add(
|
disposable.add(
|
||||||
tutorTabService.apiUsersTutorTabByTutorIdGet(PrefUtils.getUserId(getApplicationContext()))
|
tutorTabService.apiUsersTutorTabByTutorIdGet(PrefUtils.getUserId(getApplicationContext()))
|
||||||
.subscribeOn(Schedulers.io())
|
.subscribeOn(Schedulers.io())
|
||||||
@ -70,26 +90,52 @@ public class TutorTab extends AppCompatActivity {
|
|||||||
@Override
|
@Override
|
||||||
public void onSuccess(TutorTabViewModel tutorTabViewModel) {
|
public void onSuccess(TutorTabViewModel tutorTabViewModel) {
|
||||||
|
|
||||||
List<String> dutyHoursList = Stream.of(tutorTabViewModel.getDutyHours())
|
dutyHourList = tutorTabViewModel.getDutyHours();
|
||||||
.map(DutyHourViewModel::getSummary).toList();
|
if(dutyHourList == null){
|
||||||
|
}else{
|
||||||
userRoom.setText(String.format("%s: %s", getString(R.string.userRoom), tutorTabViewModel.getRoom()));
|
dutyHoursAdapter = new DutyHoursAdapter(getApplicationContext(),dutyHourList);
|
||||||
userEmail.setText(String.format("%s: %s", getString(R.string.userEmail), tutorTabViewModel.getEmailTutorTab()));
|
dutyHoursRecycller.setAdapter(dutyHoursAdapter);
|
||||||
|
addDutyButton.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
addEmptyDuty(dutyHoursAdapter);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
userRoom.setText(String.format("%s", tutorTabViewModel.getRoom()));
|
||||||
|
userEmail.setText(String.format("%s", tutorTabViewModel.getEmailTutorTab()));
|
||||||
if (!tutorTabViewModel.getNote().equals("")) {
|
if (!tutorTabViewModel.getNote().equals("")) {
|
||||||
userNote.setText(String.format("%s", tutorTabViewModel.getNote()));
|
userNote.setText(String.format("%s", tutorTabViewModel.getNote()));
|
||||||
}
|
}
|
||||||
userDutyHours.setText(String.format("%s: %s", getString(R.string.userDutyHoursHeader), Arrays.toString(dutyHoursList.toArray())));
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onError(Throwable e) {
|
public void onError(Throwable e) {
|
||||||
|
int code = ((HttpException) e).response().code();
|
||||||
|
if( code == 404){
|
||||||
|
ifTutorTabExists = false;
|
||||||
|
dutyHoursAdapter = new DutyHoursAdapter(getApplicationContext(),new ArrayList<DutyHourViewModel>());
|
||||||
|
dutyHoursRecycller.setAdapter(dutyHoursAdapter);
|
||||||
|
addDutyButton.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
addEmptyDuty(dutyHoursAdapter);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
showError(e);
|
showError(e);
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
findViewById(R.id.contentTutorTabInfoImageButton).setOnClickListener(v-> InfoHelperUtils.infoPopUp(v,R.layout.info_popup_tutor_tab));
|
||||||
|
|
||||||
|
userName.setText(String.format("%s %s", PrefUtils.getUserFirstName(getApplicationContext()), PrefUtils.getUserLastName(getApplicationContext())));
|
||||||
|
|
||||||
disposable.add(
|
disposable.add(
|
||||||
|
|
||||||
userService.getUserById(PrefUtils.getUserId(getApplicationContext()))
|
userService.getUserById(PrefUtils.getUserId(getApplicationContext()))
|
||||||
.subscribeOn(Schedulers.io())
|
.subscribeOn(Schedulers.io())
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
.subscribeWith(new DisposableSingleObserver<User>() {
|
.subscribeWith(new DisposableSingleObserver<User>() {
|
||||||
@ -102,31 +148,56 @@ public class TutorTab extends AppCompatActivity {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onError(Throwable e) {
|
public void onError(Throwable e) {
|
||||||
|
|
||||||
showError(e);
|
showError(e);
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
setUpSaveListener(saveButon, userNote);
|
setUpSaveListener(saveButon);
|
||||||
|
}
|
||||||
|
private void addEmptyDuty(DutyHoursAdapter adapter){
|
||||||
|
adapter.addDuty(new DutyHourViewModel());
|
||||||
|
adapter.notifyItemInserted(adapter.getItemCount());
|
||||||
|
dutyHoursRecycller.scrollToPosition(adapter.getItemCount()-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setUpSaveListener(Button button, EditText note) {
|
private void setUpSaveListener(Button button) {
|
||||||
button.setOnClickListener(new View.OnClickListener() {
|
button.setOnClickListener(new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View view) {
|
public void onClick(View view) {
|
||||||
newTab = new TutorTabViewModel(PrefUtils.getUserId(getApplicationContext()),note.getText().toString());
|
newTab = new TutorTabViewModel(PrefUtils.getUserId(getApplicationContext()),
|
||||||
putUserTab(newTab);
|
userRoom.getText().toString(),
|
||||||
|
userEmail.getText().toString(),
|
||||||
|
userNote.getText().toString(),
|
||||||
|
dutyHoursAdapter.getDutyList());
|
||||||
|
if(ifTutorTabExists){
|
||||||
|
putUserTab(newTab);
|
||||||
|
}else{
|
||||||
|
postUserTab(newTab);
|
||||||
|
ifTutorTabExists=true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void putUserTab(TutorTabViewModel tutorTabViewModel) {
|
private void putUserTab(TutorTabViewModel tutorTabViewModel) {
|
||||||
disposable.add(tutorTabService.apiUsersTutorTabByTutorIdPut(PrefUtils.getUserId(getApplicationContext()), tutorTabViewModel)
|
disposable.add(tutorTabService.apiUsersTutorTabByTutorIdPut(PrefUtils.getUserId(getApplicationContext()), tutorTabViewModel)
|
||||||
.subscribeOn(Schedulers.io())
|
.subscribeOn(Schedulers.io())
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
.subscribe(this::handleResponse, this::handleError));
|
.subscribe(this::handleResponsePut, this::handleError));
|
||||||
|
}
|
||||||
|
private void postUserTab(TutorTabViewModel tutorTabViewModel) {
|
||||||
|
disposable.add(tutorTabService.apiUsersTutorTabByTutorIdPost(PrefUtils.getUserId(getApplicationContext()), tutorTabViewModel)
|
||||||
|
.subscribeOn(Schedulers.io())
|
||||||
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
|
.subscribe(this::handleResponsePost, this::handleError));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void handleResponse(TutorTabViewModel tutorTabViewModel) {
|
private void handleResponsePut(Response<Void> resp) {
|
||||||
Toast.makeText(getApplicationContext(), getApplicationContext().getString(R.string.modal_feedback_thankyou), Toast.LENGTH_SHORT).show();
|
Toast.makeText(getApplicationContext(), getApplicationContext().getString(R.string.updateToast), Toast.LENGTH_SHORT).show();
|
||||||
|
|
||||||
|
}
|
||||||
|
private void handleResponsePost(TutorTabViewModel tutorTabViewModel ) {
|
||||||
|
Toast.makeText(getApplicationContext(), getApplicationContext().getString(R.string.updateToast), Toast.LENGTH_SHORT).show();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -153,9 +224,6 @@ public class TutorTab extends AppCompatActivity {
|
|||||||
} else {
|
} else {
|
||||||
message = "Network Error!";
|
message = "Network Error!";
|
||||||
}
|
}
|
||||||
|
|
||||||
// Snackbar.make(coordinatorLayout, message, Snackbar.LENGTH_LONG)
|
|
||||||
// .show();
|
|
||||||
Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show();
|
Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -15,6 +15,7 @@ import android.view.ViewGroup;
|
|||||||
import android.widget.ArrayAdapter;
|
import android.widget.ArrayAdapter;
|
||||||
import android.widget.ListView;
|
import android.widget.ListView;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
import android.widget.Toast;
|
||||||
|
|
||||||
import com.annimon.stream.Stream;
|
import com.annimon.stream.Stream;
|
||||||
import com.jakewharton.retrofit2.adapter.rxjava2.HttpException;
|
import com.jakewharton.retrofit2.adapter.rxjava2.HttpException;
|
||||||
@ -27,6 +28,7 @@ import com.uam.wmi.findmytutor.model.User;
|
|||||||
import com.uam.wmi.findmytutor.network.ApiClient;
|
import com.uam.wmi.findmytutor.network.ApiClient;
|
||||||
import com.uam.wmi.findmytutor.service.TutorTabApi;
|
import com.uam.wmi.findmytutor.service.TutorTabApi;
|
||||||
import com.uam.wmi.findmytutor.service.UserService;
|
import com.uam.wmi.findmytutor.service.UserService;
|
||||||
|
import com.uam.wmi.findmytutor.utils.InfoHelperUtils;
|
||||||
import com.uam.wmi.findmytutor.utils.MyDividerItemDecoration;
|
import com.uam.wmi.findmytutor.utils.MyDividerItemDecoration;
|
||||||
import com.uam.wmi.findmytutor.utils.RecyclerTouchListener;
|
import com.uam.wmi.findmytutor.utils.RecyclerTouchListener;
|
||||||
import com.uam.wmi.findmytutor.utils.RestApiHelper;
|
import com.uam.wmi.findmytutor.utils.RestApiHelper;
|
||||||
@ -76,6 +78,7 @@ public class UsersListFragment extends Fragment {
|
|||||||
mAdapter = new TutorsListAdapter(getActivity().getApplicationContext(), tutorsFiltered);
|
mAdapter = new TutorsListAdapter(getActivity().getApplicationContext(), tutorsFiltered);
|
||||||
View view = inflater.inflate(R.layout.users_list, container, false);
|
View view = inflater.inflate(R.layout.users_list, container, false);
|
||||||
view.setBackgroundColor(getResources().getColor(android.R.color.white));
|
view.setBackgroundColor(getResources().getColor(android.R.color.white));
|
||||||
|
|
||||||
return view;
|
return view;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -151,11 +154,11 @@ public class UsersListFragment extends Fragment {
|
|||||||
List<String> dutyHoursList = Stream.of(tutorTabViewModel.getDutyHours())
|
List<String> dutyHoursList = Stream.of(tutorTabViewModel.getDutyHours())
|
||||||
.map(DutyHourViewModel::getSummary).toList();
|
.map(DutyHourViewModel::getSummary).toList();
|
||||||
|
|
||||||
if(dutyHoursList.isEmpty()){
|
if (dutyHoursList.isEmpty()) {
|
||||||
dutyHoursList.add(getString(R.string.lack_duty_hours));
|
dutyHoursList.add(getString(R.string.lack_duty_hours));
|
||||||
}
|
}
|
||||||
|
|
||||||
if(tutorTabViewModel.getNote().isEmpty()){
|
if (tutorTabViewModel.getNote().isEmpty()) {
|
||||||
userNoteText = getString(R.string.lack_note);
|
userNoteText = getString(R.string.lack_note);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -226,7 +229,7 @@ public class UsersListFragment extends Fragment {
|
|||||||
|
|
||||||
|
|
||||||
private int sortByUserName(User t1, User t2) {
|
private int sortByUserName(User t1, User t2) {
|
||||||
return plCollator.compare(t1.getLastName(),t2.getLastName());
|
return plCollator.compare(t1.getLastName(), t2.getLastName());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void showError(Throwable e) {
|
private void showError(Throwable e) {
|
||||||
@ -235,7 +238,7 @@ public class UsersListFragment extends Fragment {
|
|||||||
if (e instanceof HttpException) {
|
if (e instanceof HttpException) {
|
||||||
ResponseBody responseBody = ((HttpException) e).response().errorBody();
|
ResponseBody responseBody = ((HttpException) e).response().errorBody();
|
||||||
message = RestApiHelper.getErrorMessage(responseBody);
|
message = RestApiHelper.getErrorMessage(responseBody);
|
||||||
}else{
|
} else {
|
||||||
message = "Network Error !";
|
message = "Network Error !";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -0,0 +1,163 @@
|
|||||||
|
package com.uam.wmi.findmytutor.adapters;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.support.annotation.NonNull;
|
||||||
|
import android.support.v7.widget.RecyclerView;
|
||||||
|
import android.text.Editable;
|
||||||
|
import android.text.TextWatcher;
|
||||||
|
import android.util.Log;
|
||||||
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
|
import android.widget.ImageButton;
|
||||||
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
import com.annimon.stream.Collectors;
|
||||||
|
import com.annimon.stream.Stream;
|
||||||
|
import com.uam.wmi.findmytutor.R;
|
||||||
|
import com.uam.wmi.findmytutor.model.DutyHourViewModel;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import butterknife.BindView;
|
||||||
|
import butterknife.ButterKnife;
|
||||||
|
|
||||||
|
|
||||||
|
public class DutyHoursAdapter extends RecyclerView.Adapter<DutyHoursAdapter.MyViewHolder> {
|
||||||
|
private Context context;
|
||||||
|
private List<DutyHourViewModel> hours;
|
||||||
|
|
||||||
|
public DutyHoursAdapter(Context context, List<DutyHourViewModel> hours) {
|
||||||
|
this.context = context;
|
||||||
|
this.hours = new ArrayList<DutyHourViewModel>(hours);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public List<DutyHourViewModel> getDutyList(){
|
||||||
|
ArrayList<DutyHourViewModel> notEmpty = Stream.of(hours).filter(DutyHourViewModel::isValid).collect(Collectors.toCollection(ArrayList::new));
|
||||||
|
return notEmpty;
|
||||||
|
}
|
||||||
|
public void addDuty(DutyHourViewModel duty){
|
||||||
|
hours.add(duty);
|
||||||
|
}
|
||||||
|
private void removeDuty(int pos){
|
||||||
|
hours.remove(pos);
|
||||||
|
this.notifyItemRemoved(pos);
|
||||||
|
Log.d("DutyIndex af rm size",Integer.toString(getItemCount()));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@NonNull
|
||||||
|
@Override
|
||||||
|
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
||||||
|
View itemView = LayoutInflater.from(parent.getContext())
|
||||||
|
.inflate(R.layout.duty_hour_row, parent, false);
|
||||||
|
|
||||||
|
return new MyViewHolder(itemView);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
|
||||||
|
DutyHourViewModel duty = hours.get(position);
|
||||||
|
holder.dutyDay.setText(duty.getDay());
|
||||||
|
holder.dutyDay.addTextChangedListener(new TextWatcher() {
|
||||||
|
@Override
|
||||||
|
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void afterTextChanged(Editable s) {
|
||||||
|
duty.setDay(holder.dutyDay.getText().toString());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
holder.dutyStart.setText(duty.getStart());
|
||||||
|
holder.dutyStart.addTextChangedListener(new TextWatcher() {
|
||||||
|
@Override
|
||||||
|
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void afterTextChanged(Editable s) {
|
||||||
|
duty.setStart(holder.dutyStart.getText().toString());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
holder.dutyStop.setText(duty.getEnd());
|
||||||
|
holder.dutyStop.addTextChangedListener(new TextWatcher() {
|
||||||
|
@Override
|
||||||
|
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void afterTextChanged(Editable s) {
|
||||||
|
duty.setEnd(holder.dutyStop.getText().toString());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
holder.deleteRow.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
try{
|
||||||
|
Log.d("DutyIndex bf rm size",Integer.toString(getItemCount()));
|
||||||
|
Log.d("DutyIndex bf rm pos",Integer.toString(holder.getLayoutPosition()));
|
||||||
|
removeDuty(holder.getLayoutPosition());
|
||||||
|
Log.d("DutyIndex af rm pos",Integer.toString(holder.getLayoutPosition()));
|
||||||
|
|
||||||
|
|
||||||
|
}catch(Error e){
|
||||||
|
Log.e("DutyIndex error",e.getMessage());
|
||||||
|
Log.e("DutyIndex size",Integer.toString(getItemCount()));
|
||||||
|
Log.e("DutyIndex pos",Integer.toString(holder.getAdapterPosition()));
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getItemCount() {
|
||||||
|
return hours.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
class MyViewHolder extends RecyclerView.ViewHolder {
|
||||||
|
|
||||||
|
@BindView(R.id.duty_day_value)
|
||||||
|
TextView dutyDay;
|
||||||
|
|
||||||
|
@BindView(R.id.duty_start_value)
|
||||||
|
TextView dutyStart;
|
||||||
|
|
||||||
|
@BindView(R.id.duty_stop_value)
|
||||||
|
TextView dutyStop;
|
||||||
|
|
||||||
|
@BindView(R.id.deleteRow)
|
||||||
|
ImageButton deleteRow;
|
||||||
|
|
||||||
|
MyViewHolder(View view) {
|
||||||
|
super(view);
|
||||||
|
ButterKnife.bind(this, view);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -24,6 +24,20 @@ public class DutyHourViewModel {
|
|||||||
this.day = day;
|
this.day = day;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
public Boolean isValid(){
|
||||||
|
if(this.day.isEmpty()){
|
||||||
|
return false;
|
||||||
|
}else if( !this.start.isEmpty() && this.end.isEmpty() ){
|
||||||
|
return false;
|
||||||
|
}else{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public DutyHourViewModel(){
|
||||||
|
day="";
|
||||||
|
start="";
|
||||||
|
end="";
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get day
|
* Get day
|
||||||
@ -94,12 +108,11 @@ public class DutyHourViewModel {
|
|||||||
return Objects.hash(day, start, end);
|
return Objects.hash(day, start, end);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public String getSummary() {
|
public String getSummary() {
|
||||||
return this.getDay() + " " + this.getStart() + " " + this.getEnd();
|
return this.getDay() + ": " + this.getStart() + " - " + this.getEnd();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
|
@ -33,11 +33,12 @@ public class TutorTabViewModel {
|
|||||||
@SerializedName("dutyHours")
|
@SerializedName("dutyHours")
|
||||||
private List<DutyHourViewModel> dutyHours = null;
|
private List<DutyHourViewModel> dutyHours = null;
|
||||||
|
|
||||||
public TutorTabViewModel(String userId, String note){
|
public TutorTabViewModel(String userId, String room, String email, String note, List<DutyHourViewModel> dutyHours){
|
||||||
this.userId=userId;
|
this.userId=userId;
|
||||||
// this.room=room;
|
this.room=room;
|
||||||
// this.emailTutorTab=emailTutorTab;
|
this.emailTutorTab=email;
|
||||||
this.note=note;
|
this.note=note;
|
||||||
|
this.dutyHours = new ArrayList<DutyHourViewModel>(dutyHours);
|
||||||
}
|
}
|
||||||
|
|
||||||
public TutorTabViewModel tutorTabId(UUID tutorTabId) {
|
public TutorTabViewModel tutorTabId(UUID tutorTabId) {
|
||||||
|
@ -4,6 +4,7 @@ import android.content.Context;
|
|||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
|
|
||||||
import com.jakewharton.retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
|
import com.jakewharton.retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
|
||||||
|
import com.uam.wmi.findmytutor.utils.Const;
|
||||||
import com.uam.wmi.findmytutor.utils.PrefUtils;
|
import com.uam.wmi.findmytutor.utils.PrefUtils;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@ -26,7 +27,6 @@ public class ApiClient {
|
|||||||
private static Retrofit retrofit = null;
|
private static Retrofit retrofit = null;
|
||||||
private static int REQUEST_TIMEOUT = 60;
|
private static int REQUEST_TIMEOUT = 60;
|
||||||
private static OkHttpClient okHttpClient;
|
private static OkHttpClient okHttpClient;
|
||||||
private static final String BASE_URL = "https://s416084.projektstudencki.pl/master/";
|
|
||||||
|
|
||||||
public static Retrofit getClient(Context context) {
|
public static Retrofit getClient(Context context) {
|
||||||
|
|
||||||
@ -35,7 +35,7 @@ public class ApiClient {
|
|||||||
|
|
||||||
if (retrofit == null) {
|
if (retrofit == null) {
|
||||||
retrofit = new Retrofit.Builder()
|
retrofit = new Retrofit.Builder()
|
||||||
.baseUrl(BASE_URL)
|
.baseUrl(Const.BASE_URL)
|
||||||
.client(okHttpClient)
|
.client(okHttpClient)
|
||||||
.addConverterFactory(GsonConverterFactory.create())
|
.addConverterFactory(GsonConverterFactory.create())
|
||||||
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
|
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
|
||||||
|
@ -5,6 +5,7 @@ import com.uam.wmi.findmytutor.model.TutorTabViewModel;
|
|||||||
|
|
||||||
import io.reactivex.Observable;
|
import io.reactivex.Observable;
|
||||||
import io.reactivex.Single;
|
import io.reactivex.Single;
|
||||||
|
import retrofit2.Response;
|
||||||
import retrofit2.http.*;
|
import retrofit2.http.*;
|
||||||
|
|
||||||
|
|
||||||
@ -40,6 +41,10 @@ public interface TutorTabApi {
|
|||||||
@retrofit2.http.Path("tutorId") String tutorId
|
@retrofit2.http.Path("tutorId") String tutorId
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@POST("api/users/tutorTab/{tutorId}")
|
||||||
|
Single<TutorTabViewModel> apiUsersTutorTabByTutorIdPost(
|
||||||
|
@retrofit2.http.Path("tutorId") String tutorId, @retrofit2.http.Body TutorTabViewModel tutorTab
|
||||||
|
);
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
@ -51,7 +56,7 @@ public interface TutorTabApi {
|
|||||||
"Content-Type:application/json"
|
"Content-Type:application/json"
|
||||||
})
|
})
|
||||||
@PUT("api/users/tutorTab/{tutorId}")
|
@PUT("api/users/tutorTab/{tutorId}")
|
||||||
Observable<TutorTabViewModel> apiUsersTutorTabByTutorIdPut(
|
Observable<Response<Void>> apiUsersTutorTabByTutorIdPut(
|
||||||
@retrofit2.http.Path("tutorId") String tutorId, @retrofit2.http.Body TutorTabViewModel tutorTab
|
@retrofit2.http.Path("tutorId") String tutorId, @retrofit2.http.Body TutorTabViewModel tutorTab
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -1,25 +1,18 @@
|
|||||||
package com.uam.wmi.findmytutor.utils;
|
package com.uam.wmi.findmytutor.utils;
|
||||||
|
|
||||||
import android.support.annotation.NonNull;
|
|
||||||
|
|
||||||
import com.google.gson.GsonBuilder;
|
|
||||||
import com.mapbox.geojson.BoundingBox;
|
|
||||||
import com.mapbox.geojson.Feature;
|
import com.mapbox.geojson.Feature;
|
||||||
import com.mapbox.geojson.FeatureCollection;
|
import com.mapbox.geojson.FeatureCollection;
|
||||||
import com.mapbox.geojson.Geometry;
|
|
||||||
import com.mapbox.geojson.Point;
|
import com.mapbox.geojson.Point;
|
||||||
import com.mapbox.geojson.Polygon;
|
import com.mapbox.geojson.Polygon;
|
||||||
import com.mapbox.geojson.gson.BoundingBoxDeserializer;
|
import com.mapbox.turf.TurfClassification;
|
||||||
import com.mapbox.geojson.gson.GeoJsonAdapterFactory;
|
|
||||||
import com.mapbox.geojson.gson.GeometryDeserializer;
|
|
||||||
import com.mapbox.geojson.gson.PointDeserializer;
|
|
||||||
import com.mapbox.turf.TurfJoins;
|
import com.mapbox.turf.TurfJoins;
|
||||||
|
import com.mapbox.turf.TurfMeasurement;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
;
|
;import static com.mapbox.geojson.FeatureCollection.fromJson;
|
||||||
|
|
||||||
public class ApproximatedLocalization {
|
public class ApproximatedLocalization {
|
||||||
private FeatureCollection buildingSchema = null;
|
private FeatureCollection buildingSchema = null;
|
||||||
@ -28,17 +21,6 @@ public class ApproximatedLocalization {
|
|||||||
buildingSchema = fromJson(buildingObject);
|
buildingSchema = fromJson(buildingObject);
|
||||||
}
|
}
|
||||||
|
|
||||||
private FeatureCollection fromJson(@NonNull String json) {
|
|
||||||
GsonBuilder gson = new GsonBuilder();
|
|
||||||
|
|
||||||
gson.registerTypeAdapterFactory(GeoJsonAdapterFactory.create());
|
|
||||||
gson.registerTypeAdapter(Point.class, new PointDeserializer());
|
|
||||||
gson.registerTypeAdapter(Geometry.class, new GeometryDeserializer());
|
|
||||||
gson.registerTypeAdapter(BoundingBox.class, new BoundingBoxDeserializer());
|
|
||||||
|
|
||||||
return gson.create().fromJson(json, FeatureCollection.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getNameOfBuildingPart(Point point) {
|
public String getNameOfBuildingPart(Point point) {
|
||||||
|
|
||||||
for (Feature feature : Objects.requireNonNull(buildingSchema.features())) {
|
for (Feature feature : Objects.requireNonNull(buildingSchema.features())) {
|
||||||
@ -56,7 +38,9 @@ public class ApproximatedLocalization {
|
|||||||
for (Feature feature : Objects.requireNonNull(buildingSchema.features())) {
|
for (Feature feature : Objects.requireNonNull(buildingSchema.features())) {
|
||||||
String partName = feature.getStringProperty("name");
|
String partName = feature.getStringProperty("name");
|
||||||
|
|
||||||
|
|
||||||
if (buildingPart != null && buildingPart.equals(partName)) {
|
if (buildingPart != null && buildingPart.equals(partName)) {
|
||||||
|
|
||||||
Double longitude = feature.getNumberProperty("longitude").doubleValue();
|
Double longitude = feature.getNumberProperty("longitude").doubleValue();
|
||||||
Double latitude = feature.getNumberProperty("latitude").doubleValue();
|
Double latitude = feature.getNumberProperty("latitude").doubleValue();
|
||||||
|
|
||||||
|
@ -6,7 +6,8 @@ import java.util.Arrays;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class Const {
|
public class Const {
|
||||||
public final static Integer onlineBackgroundLocationInterval = 15000;
|
public final static String BASE_URL = "https://s416084.projektstudencki.pl/master/";
|
||||||
|
public final static Integer onlineBackgroundLocationInterval = 7000;
|
||||||
public final static Integer offlineBackgroundLocationInterval = 36000;
|
public final static Integer offlineBackgroundLocationInterval = 36000;
|
||||||
public final static Integer defaultMapZoom = 17;
|
public final static Integer defaultMapZoom = 17;
|
||||||
public final static Integer searchMapZoom = 13;
|
public final static Integer searchMapZoom = 13;
|
||||||
|
@ -0,0 +1,31 @@
|
|||||||
|
package com.uam.wmi.findmytutor.utils;
|
||||||
|
|
||||||
|
import android.app.Dialog;
|
||||||
|
import android.app.DialogFragment;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.support.v7.app.AlertDialog;
|
||||||
|
import android.widget.Toast;
|
||||||
|
|
||||||
|
import com.uam.wmi.findmytutor.R;
|
||||||
|
import com.uam.wmi.findmytutor.activity.MapActivity;
|
||||||
|
|
||||||
|
public class EnableSharingDialog extends DialogFragment {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Dialog onCreateDialog(Bundle savedInstanceState) {
|
||||||
|
return new AlertDialog.Builder(getActivity())
|
||||||
|
.setTitle(R.string.sharing_modal_title)
|
||||||
|
.setMessage(R.string.enable_sharing_question)
|
||||||
|
.setPositiveButton(R.string.possitive_dialog_button, (dialog, which) ->
|
||||||
|
dialogPositiveAnswer(getActivity())
|
||||||
|
)
|
||||||
|
.setNegativeButton(R.string.negative_dialog_button, (dialog, which) -> dialog.cancel()).create();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void dialogPositiveAnswer(Context context) {
|
||||||
|
PrefUtils.storeEnableSharingLocalization(context, true);
|
||||||
|
((MapActivity) getActivity()).handleBackgroundTaskLifeCycle();
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,35 @@
|
|||||||
|
package com.uam.wmi.findmytutor.utils;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.graphics.drawable.ColorDrawable;
|
||||||
|
import android.view.Gravity;
|
||||||
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.View;
|
||||||
|
import android.widget.LinearLayout;
|
||||||
|
import android.widget.PopupWindow;
|
||||||
|
|
||||||
|
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
import static com.mapbox.mapboxsdk.Mapbox.getApplicationContext;
|
||||||
|
|
||||||
|
public class InfoHelperUtils {
|
||||||
|
|
||||||
|
public static void infoPopUp(View anchorView, int layoutId) {
|
||||||
|
LayoutInflater layoutInflater = (LayoutInflater)getApplicationContext().getSystemService( Context.LAYOUT_INFLATER_SERVICE );
|
||||||
|
View popupView = Objects.requireNonNull(layoutInflater).inflate(layoutId, null);
|
||||||
|
|
||||||
|
PopupWindow popupWindow = new PopupWindow(popupView,
|
||||||
|
LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
|
||||||
|
// If the PopupWindow should be focusable
|
||||||
|
popupWindow.setFocusable(true);
|
||||||
|
// If you need the PopupWindow to dismiss when when touched outside
|
||||||
|
popupWindow.setBackgroundDrawable(new ColorDrawable());
|
||||||
|
int location[] = new int[2];
|
||||||
|
// Get the View's(the one that was clicked in the Fragment) location
|
||||||
|
anchorView.getLocationOnScreen(location);
|
||||||
|
// Using location, the PopupWindow will be displayed right under anchorView
|
||||||
|
popupWindow.showAtLocation(anchorView, Gravity.NO_GRAVITY,
|
||||||
|
location[0] + anchorView.getWidth() / 2, location[1] + anchorView.getHeight());
|
||||||
|
}
|
||||||
|
}
|
@ -1,15 +1,10 @@
|
|||||||
package com.uam.wmi.findmytutor.utils;
|
package com.uam.wmi.findmytutor.utils;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.res.Resources;
|
||||||
import android.os.Build;
|
import android.support.v4.os.ConfigurationCompat;
|
||||||
|
|
||||||
public class LocaleUtils {
|
public class LocaleUtils {
|
||||||
public static String getCurrentLocale(Context context){
|
public static String getCurrentLocale(){
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N){
|
return String.valueOf(ConfigurationCompat.getLocales(Resources.getSystem().getConfiguration()));
|
||||||
return String.valueOf(context.getResources().getConfiguration().getLocales().get(0));
|
|
||||||
} else{
|
|
||||||
//noinspection deprecation
|
|
||||||
return String.valueOf(context.getResources().getConfiguration().locale);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -144,7 +144,7 @@ public class PrefUtils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static String getLocale(Context context) {
|
public static String getLocale(Context context) {
|
||||||
return getSharedPreferences(context).getString("LOCALE", LocaleUtils.getCurrentLocale(context));
|
return getSharedPreferences(context).getString("LOCALE", LocaleUtils.getCurrentLocale());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Boolean isBackgroundLocationServiceRunning(Context context) {
|
public static Boolean isBackgroundLocationServiceRunning(Context context) {
|
||||||
@ -162,7 +162,7 @@ public class PrefUtils {
|
|||||||
editor.putString("key_location_level","3");
|
editor.putString("key_location_level","3");
|
||||||
editor.putString("location_mode", "manual");
|
editor.putString("location_mode", "manual");
|
||||||
editor.putString("approx_manual_loc", approximatedLocation);
|
editor.putString("approx_manual_loc", approximatedLocation);
|
||||||
editor.putBoolean("key_sharing_enabled", true);
|
/*editor.putBoolean("key_sharing_enabled", true);*/
|
||||||
editor.putLong("longitude_manual_location", Double.doubleToRawLongBits(latLng.getLongitude()));
|
editor.putLong("longitude_manual_location", Double.doubleToRawLongBits(latLng.getLongitude()));
|
||||||
editor.putLong("latitude_manual_location", Double.doubleToRawLongBits(latLng.getLatitude()));
|
editor.putLong("latitude_manual_location", Double.doubleToRawLongBits(latLng.getLatitude()));
|
||||||
editor.apply();
|
editor.apply();
|
||||||
|
@ -0,0 +1,44 @@
|
|||||||
|
package com.uam.wmi.findmytutor.utils;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.graphics.drawable.ColorDrawable;
|
||||||
|
import android.preference.Preference;
|
||||||
|
import android.util.AttributeSet;
|
||||||
|
import android.view.Gravity;
|
||||||
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
|
import android.widget.Button;
|
||||||
|
import android.widget.ImageButton;
|
||||||
|
import android.widget.LinearLayout;
|
||||||
|
import android.widget.PopupWindow;
|
||||||
|
import android.widget.Toast;
|
||||||
|
|
||||||
|
import com.uam.wmi.findmytutor.R;
|
||||||
|
|
||||||
|
import static com.mapbox.mapboxsdk.Mapbox.getApplicationContext;
|
||||||
|
|
||||||
|
public class SharingInfoPopupButtonPreference extends Preference {
|
||||||
|
|
||||||
|
public SharingInfoPopupButtonPreference(Context context, AttributeSet attrs) {
|
||||||
|
super(context, attrs);
|
||||||
|
setWidgetLayoutResource(R.layout.preference_popup_info_button_widget);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
protected View onCreateView(ViewGroup parent) {
|
||||||
|
View view = super.onCreateView(parent);
|
||||||
|
// LayoutInflater li = (LayoutInflater)getContext().getSystemService( Context.LAYOUT_INFLATER_SERVICE );
|
||||||
|
// View temp =li.inflate( R.layout.preference_button_widget, parent, false);
|
||||||
|
return view;
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
protected void onBindView(View view)
|
||||||
|
{
|
||||||
|
super.onBindView(view);
|
||||||
|
ImageButton button = view.findViewById(R.id.sharingTabInfoImageButton);
|
||||||
|
button.setOnClickListener(v-> {
|
||||||
|
InfoHelperUtils.infoPopUp(v,R.layout.info_popup_sharing_tab);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
BIN
app/src/main/res/drawable-hdpi/outline_info_white_18.png
Normal file
After Width: | Height: | Size: 381 B |
BIN
app/src/main/res/drawable-hdpi/outline_info_white_24.png
Normal file
After Width: | Height: | Size: 447 B |
BIN
app/src/main/res/drawable-hdpi/outline_info_white_36.png
Normal file
After Width: | Height: | Size: 660 B |
BIN
app/src/main/res/drawable-hdpi/outline_info_white_48.png
Normal file
After Width: | Height: | Size: 830 B |
BIN
app/src/main/res/drawable-mdpi/outline_info_white_18.png
Normal file
After Width: | Height: | Size: 259 B |
BIN
app/src/main/res/drawable-mdpi/outline_info_white_24.png
Normal file
After Width: | Height: | Size: 306 B |
BIN
app/src/main/res/drawable-mdpi/outline_info_white_36.png
Normal file
After Width: | Height: | Size: 447 B |
BIN
app/src/main/res/drawable-mdpi/outline_info_white_48.png
Normal file
After Width: | Height: | Size: 595 B |
BIN
app/src/main/res/drawable-xhdpi/outline_info_white_18.png
Normal file
After Width: | Height: | Size: 447 B |
BIN
app/src/main/res/drawable-xhdpi/outline_info_white_24.png
Normal file
After Width: | Height: | Size: 595 B |
BIN
app/src/main/res/drawable-xhdpi/outline_info_white_36.png
Normal file
After Width: | Height: | Size: 830 B |
BIN
app/src/main/res/drawable-xhdpi/outline_info_white_48.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
app/src/main/res/drawable-xxhdpi/outline_info_white_18.png
Normal file
After Width: | Height: | Size: 660 B |
BIN
app/src/main/res/drawable-xxhdpi/outline_info_white_24.png
Normal file
After Width: | Height: | Size: 830 B |
BIN
app/src/main/res/drawable-xxhdpi/outline_info_white_36.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
app/src/main/res/drawable-xxhdpi/outline_info_white_48.png
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
app/src/main/res/drawable-xxxhdpi/outline_info_white_18.png
Normal file
After Width: | Height: | Size: 830 B |
BIN
app/src/main/res/drawable-xxxhdpi/outline_info_white_24.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
app/src/main/res/drawable-xxxhdpi/outline_info_white_36.png
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
app/src/main/res/drawable-xxxhdpi/outline_info_white_48.png
Normal file
After Width: | Height: | Size: 2.3 KiB |
@ -1,9 +1,9 @@
|
|||||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:width="24dp"
|
android:width="24dp"
|
||||||
android:height="24dp"
|
android:height="24dp"
|
||||||
android:viewportHeight="24.0"
|
android:viewportHeight="24.0"
|
||||||
android:viewportWidth="24.0">
|
android:viewportWidth="24.0">
|
||||||
<path
|
<path
|
||||||
android:fillColor="#FF000000"
|
android:fillColor="#FF000000"
|
||||||
android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zm1,15h-2v-6h2v6zm0,-8h-2V7h2v2z" />
|
android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zm1,15h-2v-6h2v6zm0,-8h-2V7h2v2z" />
|
||||||
</vector>
|
</vector>
|
||||||
|
7
app/src/main/res/drawable/layout_bg.xml
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<solid android:color="#ffffff"/>
|
||||||
|
<stroke android:width="3dp" android:color="#b1bcbe" />
|
||||||
|
<corners android:radius="10dp"/>
|
||||||
|
<padding android:left="0dp" android:top="0dp" android:right="0dp" android:bottom="0dp" />
|
||||||
|
</shape>
|
10
app/src/main/res/drawable/outline_info_24.xml
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="24dp"
|
||||||
|
android:height="24dp"
|
||||||
|
android:viewportWidth="24.0"
|
||||||
|
android:viewportHeight="24.0"
|
||||||
|
android:tint="?attr/colorControlNormal">
|
||||||
|
<path
|
||||||
|
android:fillColor="@android:color/white"
|
||||||
|
android:pathData="M11,7h2v2h-2zM11,11h2v6h-2zM12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM12,20c-4.41,0 -8,-3.59 -8,-8s3.59,-8 8,-8 8,3.59 8,8 -3.59,8 -8,8z"/>
|
||||||
|
</vector>
|
@ -2,7 +2,6 @@
|
|||||||
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
xmlns:mapbox="http://schemas.android.com/apk/res-auto"
|
xmlns:mapbox="http://schemas.android.com/apk/res-auto"
|
||||||
xmlns:fab="http://schemas.android.com/apk/res-auto"
|
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
@ -22,12 +21,13 @@
|
|||||||
</com.mapbox.mapboxsdk.maps.MapView>
|
</com.mapbox.mapboxsdk.maps.MapView>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
|
android:id="@+id/linearLayout2"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:gravity="bottom"
|
android:gravity="bottom"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
tools:layout_editor_absoluteX="0dp"
|
tools:layout_editor_absoluteX="0dp"
|
||||||
tools:layout_editor_absoluteY="1dp">
|
tools:layout_editor_absoluteY="0dp">
|
||||||
|
|
||||||
<!-- Implementation of find my location button -->
|
<!-- Implementation of find my location button -->
|
||||||
|
|
||||||
|
@ -1,85 +1,171 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
|
||||||
|
<ScrollView
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:mapbox="http://schemas.android.com/apk/res-auto"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent">
|
||||||
android:orientation="vertical"
|
|
||||||
android:fontFamily="@font/lato_regular"
|
|
||||||
android:paddingLeft="@dimen/activity_margin"
|
|
||||||
android:paddingRight="@dimen/activity_margin"
|
|
||||||
android:paddingTop="@dimen/activity_margin">
|
|
||||||
|
|
||||||
<TextView android:id="@+id/userName"
|
<LinearLayout
|
||||||
android:layout_width="wrap_content"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginBottom="@dimen/dimen_10"
|
|
||||||
android:fontFamily="sans-serif-medium"
|
|
||||||
android:lineSpacingExtra="8sp"
|
|
||||||
android:textColor="@color/mapboxRedDark"
|
|
||||||
android:textSize="@dimen/lbl_new_note_title"
|
|
||||||
android:textStyle="normal" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/userDepartment"
|
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="match_parent"
|
||||||
android:lineSpacingExtra="8sp"
|
android:orientation="vertical"
|
||||||
android:paddingTop="5dp"
|
android:fontFamily="@font/lato_regular"
|
||||||
android:textColor="@color/note_list_text"
|
android:paddingLeft="@dimen/activity_margin"
|
||||||
/>
|
android:paddingRight="@dimen/activity_margin"
|
||||||
|
android:paddingTop="@dimen/activity_margin">
|
||||||
|
<ImageButton
|
||||||
|
android:id="@+id/contentTutorTabInfoImageButton"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="right"
|
||||||
|
mapbox:srcCompat="@drawable/outline_info_24"/>
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/userRoom"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:lineSpacingExtra="8sp"
|
|
||||||
android:paddingTop="5dp"
|
|
||||||
android:textColor="@color/note_list_text"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/userEmail"
|
android:id="@+id/userName"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:lineSpacingExtra="8sp"
|
android:layout_marginBottom="@dimen/dimen_10"
|
||||||
android:paddingTop="5dp"
|
android:fontFamily="sans-serif-medium"
|
||||||
android:textColor="@color/note_list_text" />
|
android:lineSpacingExtra="8sp"
|
||||||
|
android:textColor="@color/mapboxRedDark"
|
||||||
|
android:textSize="@dimen/lbl_new_note_title"
|
||||||
|
android:textStyle="normal" />
|
||||||
|
|
||||||
<TextView
|
<LinearLayout
|
||||||
android:id="@+id/userDutyHours"
|
android:layout_width="match_parent"
|
||||||
android:layout_width="match_parent"
|
android:layout_height="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:orientation="vertical"
|
||||||
android:lineSpacingExtra="8sp"
|
>
|
||||||
android:paddingTop="5dp"
|
<TextView
|
||||||
android:textColor="@color/note_list_text"
|
android:id="@+id/personalInfoTitle"
|
||||||
tools:text="@string/dutyHours" />
|
android:textSize="16sp"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:paddingTop="0dp"
|
||||||
|
android:paddingBottom="0dp"
|
||||||
|
android:textColor="@color/mapboxRedDark"
|
||||||
|
android:text="@string/personalInfoTitle"/>
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
>
|
||||||
|
<android.support.design.widget.TextInputLayout
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="0.7">
|
||||||
|
|
||||||
<TextView
|
<android.support.design.widget.TextInputEditText
|
||||||
android:id="@+id/userNoteTitle"
|
android:id="@+id/userDepartment"
|
||||||
android:layout_width="match_parent"
|
android:maxLines="1"
|
||||||
android:layout_height="wrap_content"
|
android:inputType="text"
|
||||||
android:paddingTop="0dp"
|
android:layout_width="match_parent"
|
||||||
android:paddingBottom="0dp"
|
android:layout_height="wrap_content"
|
||||||
android:paddingStart="@dimen/activity_margin"
|
android:hint="@string/hint_department"
|
||||||
android:textColor="@color/note_list_text" />
|
android:lineSpacingExtra="8sp"
|
||||||
<EditText
|
android:paddingTop="5dp"
|
||||||
android:id="@+id/userNote"
|
android:textColor="@color/note_list_text" />
|
||||||
android:layout_width="match_parent"
|
</android.support.design.widget.TextInputLayout>
|
||||||
android:layout_height="150dp"
|
<android.support.design.widget.TextInputLayout
|
||||||
android:lineSpacingExtra="8sp"
|
android:layout_width="0dp"
|
||||||
android:paddingTop="5dp"
|
android:layout_height="wrap_content"
|
||||||
android:textColor="@color/note_list_text"
|
android:layout_weight="0.3">
|
||||||
android:hint="@string/tutorTabHint"
|
|
||||||
android:inputType="textMultiLine"
|
|
||||||
android:maxLength="1000"
|
|
||||||
android:maxLines="7"
|
|
||||||
android:requiresFadingEdge="vertical"
|
|
||||||
android:scrollbars="vertical"/>
|
|
||||||
|
|
||||||
<Button
|
<android.support.design.widget.TextInputEditText
|
||||||
android:id="@+id/saveButon"
|
android:id="@+id/userRoom"
|
||||||
android:layout_width="match_parent"
|
android:maxLines="1"
|
||||||
android:layout_height="wrap_content"
|
android:inputType="text"
|
||||||
android:text="@string/saveButton" />
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:hint="@string/hint_room"
|
||||||
|
android:lineSpacingExtra="8sp"
|
||||||
|
android:paddingTop="5dp"
|
||||||
|
android:textColor="@color/note_list_text" />
|
||||||
|
</android.support.design.widget.TextInputLayout>
|
||||||
|
</LinearLayout>
|
||||||
|
<android.support.design.widget.TextInputLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content">
|
||||||
|
<android.support.design.widget.TextInputEditText
|
||||||
|
android:id="@+id/userEmail"
|
||||||
|
android:maxLines="1"
|
||||||
|
android:inputType="text"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:lineSpacingExtra="8sp"
|
||||||
|
android:paddingTop="5dp"
|
||||||
|
android:textColor="@color/note_list_text"
|
||||||
|
android:hint="@string/hint_email"
|
||||||
|
/>
|
||||||
|
</android.support.design.widget.TextInputLayout>
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/dutyTitle"
|
||||||
|
android:textSize="16sp"
|
||||||
|
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:paddingTop="0dp"
|
||||||
|
android:paddingBottom="0dp"
|
||||||
|
android:textColor="@color/mapboxRedDark"
|
||||||
|
android:text="@string/dutyTitle"/>
|
||||||
|
|
||||||
|
<android.support.v7.widget.RecyclerView
|
||||||
|
android:id="@+id/dutyHourView"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="100dp"
|
||||||
|
android:scrollbars="vertical" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/addDuty"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/addDuty"
|
||||||
|
android:layout_gravity="end"/>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:textSize="16sp"
|
||||||
|
android:id="@+id/userNoteTitle"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:paddingTop="0dp"
|
||||||
|
android:paddingBottom="0dp"
|
||||||
|
android:textColor="@color/mapboxRedDark"
|
||||||
|
android:text="@string/userNoteTitle"/>
|
||||||
|
<android.support.design.widget.TextInputLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content">
|
||||||
|
<android.support.design.widget.TextInputEditText
|
||||||
|
|
||||||
|
android:id="@+id/userNote"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="150dp"
|
||||||
|
android:lineSpacingExtra="8sp"
|
||||||
|
android:paddingTop="5dp"
|
||||||
|
android:textColor="@color/note_list_text"
|
||||||
|
android:hint="@string/tutorTabHint"
|
||||||
|
android:inputType="textMultiLine"
|
||||||
|
android:maxLength="1000"
|
||||||
|
android:maxLines="7"
|
||||||
|
android:requiresFadingEdge="vertical"
|
||||||
|
android:scrollbars="vertical"/>
|
||||||
|
</android.support.design.widget.TextInputLayout>
|
||||||
|
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/saveButon"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/saveButton" />
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</ScrollView>
|
||||||
|
|
||||||
</LinearLayout>
|
|
61
app/src/main/res/layout/duty_hour_row.xml
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
|
<android.support.design.widget.TextInputLayout
|
||||||
|
android:id="@+id/duty_day"
|
||||||
|
android:layout_width="95dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:hint="@string/hint_duty_day">
|
||||||
|
|
||||||
|
<android.support.design.widget.TextInputEditText
|
||||||
|
android:id="@+id/duty_day_value"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:inputType="text"
|
||||||
|
android:maxLines="1"
|
||||||
|
tools:text="@tools:sample/date/day_of_week" />
|
||||||
|
</android.support.design.widget.TextInputLayout>
|
||||||
|
|
||||||
|
<android.support.design.widget.TextInputLayout
|
||||||
|
android:id="@+id/duty_start"
|
||||||
|
android:layout_width="65dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:hint="@string/hint_duty_start">
|
||||||
|
|
||||||
|
<android.support.design.widget.TextInputEditText
|
||||||
|
android:id="@+id/duty_start_value"
|
||||||
|
android:maxLines="1"
|
||||||
|
android:inputType="text"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
tools:text="@tools:sample/date/hhmm" />
|
||||||
|
</android.support.design.widget.TextInputLayout>
|
||||||
|
|
||||||
|
<android.support.design.widget.TextInputLayout
|
||||||
|
android:id="@+id/duty_stop"
|
||||||
|
android:layout_width="65dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:hint="@string/hint_duty_end">
|
||||||
|
|
||||||
|
<android.support.design.widget.TextInputEditText
|
||||||
|
android:id="@+id/duty_stop_value"
|
||||||
|
android:maxLines="1"
|
||||||
|
android:inputType="text"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
tools:text="@tools:sample/date/hhmm" />
|
||||||
|
</android.support.design.widget.TextInputLayout>
|
||||||
|
|
||||||
|
<ImageButton
|
||||||
|
android:id="@+id/deleteRow"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:scaleX="0.7"
|
||||||
|
android:scaleY="0.7"
|
||||||
|
app:srcCompat="@android:drawable/ic_delete" />
|
||||||
|
</LinearLayout>
|
@ -3,8 +3,8 @@
|
|||||||
android:id="@android:id/text1"
|
android:id="@android:id/text1"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:textAppearance="?android:attr/textAppearanceListItemSmall"
|
|
||||||
android:gravity="center_vertical"
|
android:gravity="center_vertical"
|
||||||
android:textSize="16sp"
|
android:textSize="14sp"
|
||||||
|
android:paddingTop="2dp"
|
||||||
android:fontFamily="@font/lato_regular"
|
android:fontFamily="@font/lato_regular"
|
||||||
android:textColor="@color/mapboxWhite" />
|
android:textColor="@color/mapboxWhite" />
|
77
app/src/main/res/layout/info_popup_map.xml
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:background="@drawable/layout_bg"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:padding="10dp"
|
||||||
|
android:textColor="@color/half_black">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/textViewP1"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginLeft="20dp"
|
||||||
|
android:layout_marginTop="20dp"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:text="@string/map_info_text_p1"
|
||||||
|
android:textColor="@color/half_black" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/textViewP2"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginLeft="20dp"
|
||||||
|
android:layout_marginTop="20dp"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:text="@string/map_info_text_p2"
|
||||||
|
android:textColor="@color/half_black" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/textViewP3"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginLeft="20dp"
|
||||||
|
android:layout_marginTop="20dp"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:text="@string/map_info_text_p3"
|
||||||
|
android:textColor="@color/half_black" />
|
||||||
|
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/exactMarkerTextView"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginLeft="5dp"
|
||||||
|
android:drawableLeft="@drawable/exact_localization_marker"
|
||||||
|
android:drawablePadding="5dp"
|
||||||
|
android:layout_marginBottom="5dp"
|
||||||
|
android:gravity="center"
|
||||||
|
android:text="@string/map_info_text_marker_exact"
|
||||||
|
android:textColor="@color/half_black" />
|
||||||
|
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/approximateTextView"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginLeft="5dp"
|
||||||
|
android:drawableLeft="@drawable/approximate_localization_marker"
|
||||||
|
android:drawablePadding="5dp"
|
||||||
|
android:layout_marginBottom="5dp"
|
||||||
|
android:gravity="center"
|
||||||
|
android:text="@string/map_info_text_marker_approximated"
|
||||||
|
android:textColor="@color/half_black" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/manualMarkerTextView"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginLeft="5dp"
|
||||||
|
android:layout_marginBottom="5dp"
|
||||||
|
android:drawableLeft="@drawable/manual_localization_marker"
|
||||||
|
android:drawablePadding="0dp"
|
||||||
|
android:gravity="center"
|
||||||
|
android:text="@string/map_info_text_marker_manual"
|
||||||
|
android:textColor="@color/half_black" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
108
app/src/main/res/layout/info_popup_sharing_tab.xml
Normal file
@ -0,0 +1,108 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:background="@drawable/layout_bg"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:padding="10dp">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/textViewP1"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="5dp"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:text="@string/info_icon_sharing_tab_p1"
|
||||||
|
android:textColor="@color/half_black" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/textViewP2"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="5dp"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:text="@string/info_icon_sharing_tab_p2"
|
||||||
|
android:textColor="@color/half_black"/>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/textViewP3"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="5dp"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:text="@string/info_icon_sharing_tab_p3"
|
||||||
|
android:textColor="@color/half_black"/>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/textViewP3exactlvl"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="5dp"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:text="@string/info_icon_sharing_tab_p3_level_exact"
|
||||||
|
android:textColor="@color/half_black"/>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/textViewP3approximatelvl"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="5dp"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:text="@string/info_icon_sharing_tab_p3_level_approximate"
|
||||||
|
android:textColor="@color/half_black"/>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/textViewP3manuallvl"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="5dp"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:text="@string/info_icon_sharing_tab_p3_level_manual"
|
||||||
|
android:textColor="@color/half_black"/>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/textViewP3presencelvl"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="5dp"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:text="@string/info_icon_sharing_tab_p3_level_presence"
|
||||||
|
android:textColor="@color/half_black"/>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/textViewP4"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="5dp"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:text="@string/info_icon_sharing_tab_p4"
|
||||||
|
android:textColor="@color/half_black"/>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/textViewP5"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="5dp"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:text="@string/info_icon_sharing_tab_p5"
|
||||||
|
android:textColor="@color/half_black"/>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/textViewP6"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="5dp"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:text="@string/info_icon_sharing_tab_p6"
|
||||||
|
android:textColor="@color/half_black"/>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/textViewP7"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="5dp"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:text="@string/info_icon_sharing_tab_p7"
|
||||||
|
android:textColor="@color/half_black"/>
|
||||||
|
|
||||||
|
|
||||||
|
</LinearLayout>
|
49
app/src/main/res/layout/info_popup_tutor_tab.xml
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:background="@drawable/layout_bg"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:padding="10dp">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/textViewP1"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginLeft="5dp"
|
||||||
|
android:layout_marginTop="15dp"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:text="@string/info_icon_tutor_tab_p1"
|
||||||
|
android:textColor="@color/half_black"/>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/textViewP2"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginLeft="5dp"
|
||||||
|
android:layout_marginTop="15dp"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:text="@string/info_icon_tutor_tab_p2"
|
||||||
|
android:textColor="@color/half_black"/>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/textViewP3"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginLeft="5dp"
|
||||||
|
android:layout_marginTop="15dp"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:text="@string/info_icon_tutor_tab_p3"
|
||||||
|
android:textColor="@color/half_black"/>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/textViewP4"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginLeft="5dp"
|
||||||
|
android:layout_marginTop="15dp"
|
||||||
|
android:layout_marginBottom="15dp"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:text="@string/info_icon_tutor_tab_p4"
|
||||||
|
android:textColor="@color/half_black"/>
|
||||||
|
|
||||||
|
</LinearLayout>
|
75
app/src/main/res/layout/info_popup_userlist.xml
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:padding="20dp"
|
||||||
|
android:background="@drawable/layout_bg">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/userListPopupInfoTextViewP1"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:text="@string/info_icon_userlist_tab_p1"
|
||||||
|
android:textColor="@color/half_black"/>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/userListPopupInfoTextViewP2"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:text="@string/info_icon_userlist_tab_p2"
|
||||||
|
android:textColor="@color/half_black"/>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/userListPopupInfoTextViewOnline"
|
||||||
|
android:gravity="center"
|
||||||
|
android:drawableLeft="@drawable/online_user"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:drawablePadding="5dp"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:text="@string/info_icon_userlist_tab_level_status_online"
|
||||||
|
android:textColor="@color/half_black"/>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/userListPopupInfoTextVieOffline"
|
||||||
|
android:gravity="center"
|
||||||
|
android:drawableLeft="@drawable/user_list_offline"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:drawablePadding="5dp"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:text="@string/info_icon_userlist_tab_level_status_offline"
|
||||||
|
android:textColor="@color/half_black"/>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/userListPopupInfoTextViewInactive"
|
||||||
|
android:gravity="center"
|
||||||
|
android:drawableLeft="@drawable/user_list_off"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:drawablePadding="5dp"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:text="@string/info_icon_userlist_tab_level_status_inactive"
|
||||||
|
android:textColor="@color/half_black"/>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/userListPopupInfoTextViewTip"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:text="@string/info_icon_userlist_tab_level_status_inactive_tip"
|
||||||
|
android:textColor="@color/half_black"/>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/userListPopupInfoTextViewSummary"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:layout_marginTop="10dp"
|
||||||
|
android:text="@string/info_icon_userlist_summary"
|
||||||
|
android:textColor="@color/half_black"/>
|
||||||
|
|
||||||
|
</LinearLayout>
|
@ -7,7 +7,6 @@
|
|||||||
<PreferenceCategory android:title="@string/settings_category_general">
|
<PreferenceCategory android:title="@string/settings_category_general">
|
||||||
|
|
||||||
<ListPreference
|
<ListPreference
|
||||||
android:defaultValue="0"
|
|
||||||
android:dialogTitle="@string/settings_language"
|
android:dialogTitle="@string/settings_language"
|
||||||
android:entries="@array/language_entries"
|
android:entries="@array/language_entries"
|
||||||
android:entryValues="@array/language_values"
|
android:entryValues="@array/language_values"
|
||||||
@ -16,11 +15,11 @@
|
|||||||
android:title="@string/title_language" />
|
android:title="@string/title_language" />
|
||||||
|
|
||||||
<SwitchPreference
|
<SwitchPreference
|
||||||
android:key="acra.disable"
|
android:key="acra.enable"
|
||||||
android:title="@string/pref_disable_acra"
|
android:title="@string/pref_title_acra"
|
||||||
android:summaryOn="@string/pref_acra_disabled"
|
android:summaryOn="@string/pref_acra_disabled"
|
||||||
android:summaryOff="@string/pref_acra_enabled"
|
android:summaryOff="@string/pref_acra_enabled"
|
||||||
android:defaultValue="false"/>
|
android:defaultValue="true"/>
|
||||||
|
|
||||||
</PreferenceCategory>
|
</PreferenceCategory>
|
||||||
</PreferenceScreen>
|
</PreferenceScreen>
|
@ -1,7 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<PreferenceScreen xmlns:tools="http://schemas.android.com/tools"
|
<PreferenceScreen xmlns:tools="http://schemas.android.com/tools"
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
|
||||||
tools:ignore="MissingDefaultResource"
|
tools:ignore="MissingDefaultResource"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:fontFamily="@font/lato_regular"
|
android:fontFamily="@font/lato_regular"
|
||||||
@ -25,6 +24,7 @@
|
|||||||
android:summary="%s"
|
android:summary="%s"
|
||||||
android:title="@string/title_location_level" />
|
android:title="@string/title_location_level" />
|
||||||
<ListPreference
|
<ListPreference
|
||||||
|
android:defaultValue="0"
|
||||||
android:key="key_manual_location_value"
|
android:key="key_manual_location_value"
|
||||||
android:summary="%s"
|
android:summary="%s"
|
||||||
android:title="@string/title_list_manual_location" />
|
android:title="@string/title_list_manual_location" />
|
||||||
|
@ -0,0 +1,14 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:gravity="right"
|
||||||
|
xmlns:mapbox="http://schemas.android.com/apk/res-auto">
|
||||||
|
|
||||||
|
<ImageButton
|
||||||
|
android:id="@+id/sharingTabInfoImageButton"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="info"
|
||||||
|
mapbox:srcCompat="@drawable/outline_info_24"/>
|
||||||
|
</LinearLayout>
|
@ -63,6 +63,7 @@
|
|||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center_vertical"
|
android:layout_gravity="center_vertical"
|
||||||
|
android:textColor="@color/mapboxWhite"
|
||||||
android:paddingLeft="10dp"
|
android:paddingLeft="10dp"
|
||||||
/>
|
/>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
@ -83,6 +84,7 @@
|
|||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center_vertical"
|
android:layout_gravity="center_vertical"
|
||||||
|
android:textColor="@color/mapboxWhite"
|
||||||
android:paddingLeft="10dp"
|
android:paddingLeft="10dp"
|
||||||
/>
|
/>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
@ -103,6 +105,7 @@
|
|||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center_vertical"
|
android:layout_gravity="center_vertical"
|
||||||
|
android:textColor="@color/mapboxWhite"
|
||||||
android:paddingLeft="10dp"
|
android:paddingLeft="10dp"
|
||||||
/>
|
/>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
@ -124,6 +127,7 @@
|
|||||||
android:id="@+id/userDutyHoursTitle"
|
android:id="@+id/userDutyHoursTitle"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:textColor="@color/mapboxWhite"
|
||||||
android:paddingLeft="10dp"
|
android:paddingLeft="10dp"
|
||||||
/>
|
/>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
@ -147,6 +151,8 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:paddingLeft="25dp"
|
android:paddingLeft="25dp"
|
||||||
android:paddingTop="-10dp"
|
android:paddingTop="-10dp"
|
||||||
|
android:divider="@color/background_user_modal"
|
||||||
|
android:dividerHeight="1dp"
|
||||||
android:textColor="@color/mapboxWhite"
|
android:textColor="@color/mapboxWhite"
|
||||||
/>
|
/>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
@ -167,6 +173,7 @@
|
|||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center_vertical"
|
android:layout_gravity="center_vertical"
|
||||||
|
android:textColor="@color/mapboxWhite"
|
||||||
android:paddingLeft="10dp"
|
android:paddingLeft="10dp"
|
||||||
/>
|
/>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
xmlns:mapbox="http://schemas.android.com/apk/res-auto"
|
||||||
android:id="@+id/coordinator_layout"
|
android:id="@+id/coordinator_layout"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:fontFamily="@font/lato_regular"
|
android:fontFamily="@font/lato_regular"
|
||||||
tools:context=".activity.UsersListFragment">
|
tools:context=".activity.UsersListFragment">
|
||||||
|
|
||||||
|
|
||||||
<include layout="@layout/users_list_main" />
|
<include layout="@layout/users_list_main" />
|
||||||
|
|
||||||
</android.support.design.widget.CoordinatorLayout>
|
</android.support.design.widget.CoordinatorLayout>
|
||||||
|
@ -1,6 +1,4 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
||||||
|
|
||||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
@ -11,7 +9,6 @@
|
|||||||
android:fontFamily="@font/lato_regular"
|
android:fontFamily="@font/lato_regular"
|
||||||
tools:showIn="@layout/users_list_main">
|
tools:showIn="@layout/users_list_main">
|
||||||
|
|
||||||
|
|
||||||
<android.support.v7.widget.RecyclerView
|
<android.support.v7.widget.RecyclerView
|
||||||
android:id="@+id/recycler_view"
|
android:id="@+id/recycler_view"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
@ -8,4 +8,11 @@
|
|||||||
app:showAsAction="always"
|
app:showAsAction="always"
|
||||||
app:actionViewClass="android.support.v7.widget.SearchView"
|
app:actionViewClass="android.support.v7.widget.SearchView"
|
||||||
android:title="@string/search"/>
|
android:title="@string/search"/>
|
||||||
|
<item
|
||||||
|
android:id="@+id/action_info"
|
||||||
|
app:showAsAction="ifRoom|collapseActionView"
|
||||||
|
android:icon="@drawable/outline_info_24"
|
||||||
|
android:titleCondensed="@string/access_token"
|
||||||
|
android:actionLayout="@layout/info_popup_map"
|
||||||
|
android:title="Info" />
|
||||||
</menu>
|
</menu>
|
@ -121,7 +121,7 @@
|
|||||||
<string name="prompt_login">Login (Ldap)</string>
|
<string name="prompt_login">Login (Ldap)</string>
|
||||||
<string name="action_log_in">Zaloguj!</string>
|
<string name="action_log_in">Zaloguj!</string>
|
||||||
<string name="error_invalid_login_name">Niepoprawny format loginu.</string>
|
<string name="error_invalid_login_name">Niepoprawny format loginu.</string>
|
||||||
<string name="user_list_nav">Lista użytkowników</string>
|
<string name="user_list_nav">Kadra</string>
|
||||||
<string name="select_a_location">Wybierz lokalizacje</string>
|
<string name="select_a_location">Wybierz lokalizacje</string>
|
||||||
<string name="user_location_permission_not_granted">Nie dodano uprawnień do lokalizacji.</string>
|
<string name="user_location_permission_not_granted">Nie dodano uprawnień do lokalizacji.</string>
|
||||||
<string name="user_location_permission_explanation">Ta aplikacja potrzebuje uprawnień do lokalizacji.</string>
|
<string name="user_location_permission_explanation">Ta aplikacja potrzebuje uprawnień do lokalizacji.</string>
|
||||||
@ -147,7 +147,7 @@
|
|||||||
<string name="remove_manual_location">Usuń manualną lokację</string>
|
<string name="remove_manual_location">Usuń manualną lokację</string>
|
||||||
<string name="title_activity_tutor_tab">Profil</string>
|
<string name="title_activity_tutor_tab">Profil</string>
|
||||||
<string name="saveButton">Zapisz!</string>
|
<string name="saveButton">Zapisz!</string>
|
||||||
<string name="tutorTabHint">Tutaj możesz dodać swoją notatkę. Będzie widoczna dla innych użytkowników.</string>
|
<string name="tutorTabHint">Edytuj swoją notatkę. Będzie widoczna dla innych.</string>
|
||||||
<string name="modal_location_send">WYŚLIJ</string>
|
<string name="modal_location_send">WYŚLIJ</string>
|
||||||
<string name="modal_location_hint">Proszę nazwać wybraną lokację.</string>
|
<string name="modal_location_hint">Proszę nazwać wybraną lokację.</string>
|
||||||
<string name="manual_modal_title">Czy chcesz zapisać tę lokalizację?</string>
|
<string name="manual_modal_title">Czy chcesz zapisać tę lokalizację?</string>
|
||||||
@ -167,6 +167,78 @@
|
|||||||
<string name="description_awaiting">Czekam na studentów</string>
|
<string name="description_awaiting">Czekam na studentów</string>
|
||||||
<string name="description_onholidays">Na wakacjach</string>
|
<string name="description_onholidays">Na wakacjach</string>
|
||||||
<string name="title_description">Status</string>
|
<string name="title_description">Status</string>
|
||||||
|
|
||||||
|
<!--(PL) Map Activity info helper-->
|
||||||
|
<string name="map_info_text_p1">Na mapie wyświetlane są markery reprezentujące profesorów udostępniających w tej chwili swoją lokalizację.</string>
|
||||||
|
<string name="map_info_text_p2">Po kliknięciu w marker możemy sprawdzić kto udostępnia lokalizację, oraz status opisowy (jeśli profesor go ustawił).</string>
|
||||||
|
<string name="map_info_text_p3">W aplikacji dostępne są 3 rodzaje lokalizacji, które reprezentowane są przez markery różnego koloru.</string>
|
||||||
|
<string name="map_info_text_marker_exact">lokalizacja dokładna (udostępniana z GPS telefonu)</string>
|
||||||
|
<string name="map_info_text_marker_approximated">lokalizacja przybliżona</string>
|
||||||
|
<string name="map_info_text_marker_manual"> lokalizacja manualna (wybrana ręcznie)</string>
|
||||||
|
|
||||||
|
<!--(PL) Blacklist info helper-->
|
||||||
|
<string name="info_icon_blacklist_p1">W tym panelu możesz dodać użytkowników do swojej czarnej listy. Użytkownicy z czarnej listy nie będą widzieć żadnych danych które udostępniasz - lokalizacji, twojego statusu online, czy informacji o obecności.</string>
|
||||||
|
<string name="info_icon_blacklist_p2">Jedyną informacją która wciąż będzie udostępniana wszystkim jest notka w Twoim profilu.</string>
|
||||||
|
<string name="info_icon_blacklist_p3">Za pomocą powyższego przycisku możesz włączyć lub wyłączyć używanie czarnej listy. Czarna lista nie może być aktywna jednocześnie z białą listą.</string>
|
||||||
|
|
||||||
|
<!--(PL) Whitelist info helper-->
|
||||||
|
<string name="info_icon_whitelist_p1">W tym panelu możesz dodać użytkowników do swojej białej listy. Użytkownicy SPOZA listy nie będą widzieć żadnych danych które udostępniasz - lokalizacji, twojego statusu online, czy informacji o obecności.</string>
|
||||||
|
<string name="info_icon_whitelist_p2">Jedyną informacją która wciąż będzie udostępniana wszystkim jest notka w Twoim profilu.</string>
|
||||||
|
<string name="info_icon_whitelist_p3">Za pomocą powyższego przycisku możesz włączyć lub wyłączyć używanie białej listy. Biała lista nie może być aktywna jednocześnie z czarną listą.</string>
|
||||||
|
|
||||||
|
<!--(PL) Tutor tab info helper-->
|
||||||
|
<string name="info_icon_tutor_tab_p1">W tej zakładce możesz edytować swój profil widoczny dla wszystkich użytkowników.</string>
|
||||||
|
<string name="info_icon_tutor_tab_p2">Jeśli zakładka jest pusta lub zawiera nieaktualne dane, możesz je ręcznie uaktualnić.</string>
|
||||||
|
<string name="info_icon_tutor_tab_p3">W każdej chwili możesz przywrócić dane ze strony WMI za pomocą przycisku (jeśli są dostępne na stronie).</string>
|
||||||
|
<string name="info_icon_tutor_tab_p4">Dodatkowo możesz uzupełnić notkę, aby przekazać jakąś informację widoczną dla wszystkich studentów: np. “dzisiejszy dyżur odwołany” itp.</string>
|
||||||
|
|
||||||
|
<!--(PL) Sharing Tab info helper-->
|
||||||
|
<string name="info_icon_sharing_tab_p1">W tej zakładce możesz włączyć/wyłączyć udostępnianie swojej lokalizacji oraz ją skonfigurować.</string>
|
||||||
|
<string name="info_icon_sharing_tab_p2">Niektóre zmiany mogą nie być widoczne od razu! Odświeżanie informacji zajmuje do 2 minut.</string>
|
||||||
|
<string name="info_icon_sharing_tab_p3">Udostępniać możesz na jednym z 4 poziomów:</string>
|
||||||
|
<string name="info_icon_sharing_tab_p3_level_exact"><b>dokładny </b> - lokalizacja wyświetlana na mapie na podstawie GPS</string>
|
||||||
|
<string name="info_icon_sharing_tab_p3_level_approximate"><b>przybliżony</b> - przybliżona lokalizacja wyświetlana na podstawie GPS</string>
|
||||||
|
<string name="info_icon_sharing_tab_p3_level_manual"><b>manualny</b> - udostępnianie z ręcznie wybranego punktu na mapie</string>
|
||||||
|
<string name="info_icon_sharing_tab_p3_level_presence"><b>tylko obecność</b> - udostępnianie jedynie informacji o pojawieniu się na wydziale (aktywny na liście), bez udostępniania lokalizacji</string>
|
||||||
|
<string name="info_icon_sharing_tab_p4">Każdy poziom z wyjątkiem manualnie wybranej lokalizacji automatycznie zaczyna udostępniać po wejściu na wydział i przestaje udostępniać po jego opuszczeniu. Wystarczy włączyć udostępnianie, a lokalizacja nie będzie udostępniana tylko przy obecności na wydziale.</string>
|
||||||
|
<string name="info_icon_sharing_tab_p5">Udostępnianie w dowolnym momencie można wyłączyć za pomocą przełącznika.</string>
|
||||||
|
<string name="info_icon_sharing_tab_p6">Dodatkowo, do Twojej lokalizacji możesz dodać status opisowy (będzie on widoczny dla użytkowników po kliknięciu w marker).</string>
|
||||||
|
<string name="info_icon_sharing_tab_p7">Zarówno manualne lokalizacje jak i statusy możesz dodać do listy, które potem możesz wybrać w wygodny sposób.</string>
|
||||||
|
<!--(PL) Userlist Tab info helper-->
|
||||||
|
<string name="info_icon_userlist_tab_p1">W tym panelu znajduje się listę profesorów.</string>
|
||||||
|
<string name="info_icon_userlist_tab_p2">Ich status symbolizowany jest przez kolorowe kropki:</string>
|
||||||
|
<string name="info_icon_userlist_tab_level_status_online">- użytkownik jest obecnie online</string>
|
||||||
|
<string name="info_icon_userlist_tab_level_status_offline">- użytkownik jest obecnie offline</string>
|
||||||
|
<string name="info_icon_userlist_tab_level_status_inactive">- użytkownik jest nieaktywny</string>
|
||||||
|
<string name="info_icon_userlist_tab_level_status_inactive_tip">(nie udostępnił żadnych danych o lokalizacji od conajmniej tygodnia)</string>
|
||||||
|
<string name="info_icon_userlist_summary">Po kliknięciu w imię i nazwisko, wyświetli się karta zawierająca dokładne informacje o profesorze.</string>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!--ACRA ON/OFF switch-->
|
||||||
|
<string name="pref_acra_disabled" translatable="false">Pozwól na wysyłanie raportów o błędach.</string>
|
||||||
|
<string name="pref_acra_enabled" translatable="false">Pozwól na wysyłanie raportów o błędach.</string>
|
||||||
|
<string name="pref_title_acra" translatable="false">Raportowanie błędów.</string>
|
||||||
|
<string name="acra_toast_text" translatable="false">Błąd aplikacji. Informacje o błędzie zostanie wysłana do twórców.</string>
|
||||||
|
|
||||||
|
|
||||||
|
<string name="hint_duty_day">Dzień</string>
|
||||||
|
<string name="hint_duty_start">Start</string>
|
||||||
|
<string name="hint_duty_end">Koniec</string>
|
||||||
|
<string name="hint_department">Zakład</string>
|
||||||
|
<string name="hint_room">Pokój</string>
|
||||||
|
<string name="addDuty">DODAJ DYŻUR</string>
|
||||||
|
<string name="dutyTitle">Godziny dyżurów</string>
|
||||||
|
<string name="personalInfoTitle">Dane kontaktowe</string>
|
||||||
|
<string name="userNoteTitle">Twoja notka</string>
|
||||||
|
<string name="updateToast">Dziękujemy za aktualizację profilu</string>
|
||||||
|
<string name="error_location_fetch">Błąd podczas pobierania lokalizacji.</string>
|
||||||
|
|
||||||
|
<string name="lack_of_status">Użytkownik nie zdefiniował statusu.</string>
|
||||||
|
<string name="possitive_dialog_button">Tak</string>
|
||||||
|
<string name="negative_dialog_button">Nie</string>
|
||||||
|
<string name="enable_sharing_question">Aby skorzystać z tej funkcji musisz pozwolić na udostępnianie lokalizacji. Zgadzasz sie?</string>
|
||||||
|
<string name="sharing_modal_title">Udostępnianie</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
||||||
|
|
||||||
|
8
app/src/main/res/values/attrs_info_button.xml
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
<resources>
|
||||||
|
<declare-styleable name="infoButton">
|
||||||
|
<attr name="exampleString" format="string" />
|
||||||
|
<attr name="exampleDimension" format="dimension" />
|
||||||
|
<attr name="exampleColor" format="color" />
|
||||||
|
<attr name="exampleDrawable" format="color|reference" />
|
||||||
|
</declare-styleable>
|
||||||
|
</resources>
|
@ -88,7 +88,8 @@
|
|||||||
|
|
||||||
<string name="settings_description">Descrition</string>
|
<string name="settings_description">Descrition</string>
|
||||||
<string name="saveButton">Save</string>
|
<string name="saveButton">Save</string>
|
||||||
<string name="tutorTabHint">Here you can add your note. It will be visible to the other users.</string>
|
<string name="tutorTabHint">Edit your note. It will be shown in the users list.</string>
|
||||||
|
|
||||||
|
|
||||||
<string name="key_description">key_description</string>
|
<string name="key_description">key_description</string>
|
||||||
|
|
||||||
@ -235,9 +236,9 @@
|
|||||||
<string name="error_status_fetch">Error handling status fetch</string>
|
<string name="error_status_fetch">Error handling status fetch</string>
|
||||||
<string name="error_location_fetch">Error handling status fetch</string>
|
<string name="error_location_fetch">Error handling status fetch</string>
|
||||||
|
|
||||||
<string name="pref_acra_disabled" translatable="false">Auto reporting on issue is OFF</string>
|
<!--<string name="pref_acra_disabled" translatable="false">Auto reporting on issue is OFF</string>-->
|
||||||
<string name="pref_acra_enabled" translatable="false">Auto reporting on issue is ON</string>
|
<!--<string name="pref_acra_enabled" translatable="false">Auto reporting on issue is ON</string>-->
|
||||||
<string name="pref_disable_acra" translatable="false">ACRA reporting tool</string>
|
<!--<string name="pref_disable_acra" translatable="false">ACRA reporting tool</string>-->
|
||||||
<string name="acra_toast_text" translatable="false">Sorry, the application crashed. A report will be sent to the developers</string>
|
<string name="acra_toast_text" translatable="false">Sorry, the application crashed. A report will be sent to the developers</string>
|
||||||
<string name="notification_text">Sorry, the application crashed. A report will be sent to the developers</string>
|
<string name="notification_text">Sorry, the application crashed. A report will be sent to the developers</string>
|
||||||
<string name="notification_title" translatable="false">FMT Issue</string>
|
<string name="notification_title" translatable="false">FMT Issue</string>
|
||||||
@ -246,4 +247,76 @@
|
|||||||
<string name="lack_note">No note.</string>
|
<string name="lack_note">No note.</string>
|
||||||
<string name="search">Search</string>
|
<string name="search">Search</string>
|
||||||
<string name="mockup_location_string" translatable="false">mock location string</string>
|
<string name="mockup_location_string" translatable="false">mock location string</string>
|
||||||
|
|
||||||
|
<!--ACRA ON/OFF switch-->
|
||||||
|
<string name="pref_acra_disabled" translatable="false">Allow to send raport to developers is ON</string>
|
||||||
|
<string name="pref_acra_enabled" translatable="false">Allow to send raport to developers is OFF</string>
|
||||||
|
<string name="pref_disable_acra" translatable="false">App issues reporting</string>
|
||||||
|
|
||||||
|
<!--(ENG) Map Activity info helper-->
|
||||||
|
<string name="map_info_text_p1">On the map there are markers which represents tutors sharing their location right now.</string>
|
||||||
|
<string name="map_info_text_p2">After clicking on a marker, you can check who is sharing it and the descriptive status (if the tutor have set one).</string>
|
||||||
|
<string name="map_info_text_p3">In the app there are 3 possible types of localization, represented by various colors.</string>
|
||||||
|
<string name="map_info_text_marker_exact">exact localization (from mobile GPS)</string>
|
||||||
|
<string name="map_info_text_marker_approximated">approximated localization</string>
|
||||||
|
<string name="map_info_text_marker_manual">manual localization (manually picked)</string>
|
||||||
|
|
||||||
|
<!--(ENG) Blacklist info helper-->
|
||||||
|
<string name="info_icon_blacklist_p1">In this panel you can add users to your blacklist. Users from the blacklist can’t see any data that you share - localization, online status, or information about presence.</string>
|
||||||
|
<string name="info_icon_blacklist_p2">The only thing which remains public is the note in your profile.</string>
|
||||||
|
<string name="info_icon_blacklist_p3">With the switch you can turn on/off usage of the blacklist. Blacklist and whitelist cannot be active at the same time.</string>
|
||||||
|
|
||||||
|
<!--(ENG) Whitelist info helper-->
|
||||||
|
<string name="info_icon_whitelist_p1">In this panel you can add users to your whitelist. Users OUT OF the whitelist can’t see any data that you share - localization, online status, or information about presence.</string>
|
||||||
|
<string name="info_icon_whitelist_p2">The only thing which remains public is the note in your profile.</string>
|
||||||
|
<string name="info_icon_whitelist_p3">With the switch you can turn on/off usage of the whitelist. Blacklist and whitelist cannot be active at the same time.</string>
|
||||||
|
|
||||||
|
<!--(ENG) Tutor Tab info helper-->
|
||||||
|
<string name="info_icon_tutor_tab_p1">In this tab you can edit you profile visible for all the users.</string>
|
||||||
|
<string name="info_icon_tutor_tab_p2">If the tab is empty or contains outdated information, you can update them manually.</string>
|
||||||
|
<string name="info_icon_tutor_tab_p3">Any time you can restore data from the WMI website with the button (if the data is available).</string>
|
||||||
|
<string name="info_icon_tutor_tab_p4">Additionally, you can fill your note, to share a message visible for all the users: for example “today’s duty hours are cancelled” etc.</string>
|
||||||
|
|
||||||
|
<!--(ENG) Sharing Tab info helper-->
|
||||||
|
<string name="info_icon_sharing_tab_p1">In this tab you can turn on/off sharing your localization and configure it.</string>
|
||||||
|
<string name="info_icon_sharing_tab_p2">Some of the changes may not happen immediately! Refreshing information takes up to 2 minutes.</string>
|
||||||
|
<string name="info_icon_sharing_tab_p3">You can share your localization on one of the 4 levels:</string>
|
||||||
|
<string name="info_icon_sharing_tab_p3_level_exact"><b>exact</b> - localization displayed on a map, based on GPS</string>
|
||||||
|
<string name="info_icon_sharing_tab_p3_level_approximate"><b>approximated</b> - approximated localization based on GPS</string>
|
||||||
|
<string name="info_icon_sharing_tab_p3_level_manual"><b>manual</b> - sharing from manually picked point</string>
|
||||||
|
<string name="info_icon_sharing_tab_p3_level_presence"><b>presence only</b> - sharing only information whether you are present on the faculty or not, without sharing your localization</string>
|
||||||
|
<string name="info_icon_sharing_tab_p4">Each level, except from manual, will be automatically turned on when entering, and turn off when leaving the faculty. You only need to make sure that sharing is on, and the localization will be shared only when on the faculty.</string>
|
||||||
|
<string name="info_icon_sharing_tab_p5">Sharing can be turned off at any time with the switch.</string>
|
||||||
|
<string name="info_icon_sharing_tab_p6">Additionally, you can add descriptive status to your localization (visible for users after clicking on a marker).</string>
|
||||||
|
<string name="info_icon_sharing_tab_p7">Both manual localizations and statuses can be added to a list, and then used them in a convenient way. </string>
|
||||||
|
|
||||||
|
<!--(ENG) Userlist tab info helper-->
|
||||||
|
<string name="info_icon_userlist_tab_p1">This panel contains the list of tutors.</string>
|
||||||
|
<string name="info_icon_userlist_tab_p2">Their status is represented by colorful dots:</string>
|
||||||
|
<string name="info_icon_userlist_tab_level_status_online">- user is currently online</string>
|
||||||
|
<string name="info_icon_userlist_tab_level_status_offline">- user is currently offline</string>
|
||||||
|
<string name="info_icon_userlist_tab_level_status_inactive">- user is inactive </string>
|
||||||
|
<string name="info_icon_userlist_tab_level_status_inactive_tip">(didn’t share any localization data since 7 days)</string>
|
||||||
|
<string name="info_icon_userlist_summary">After clicking on a name, the tutor tab will pop up, containing details about selected tutor.</string>
|
||||||
|
|
||||||
|
<string name="possitive_dialog_button">Yes</string>
|
||||||
|
|
||||||
|
<string name="pref_title_acra" translatable="false">App issues reporting</string>
|
||||||
|
|
||||||
|
<!--(ENG) Profile Activity strings-->
|
||||||
|
<string name="hint_duty_day">Day</string>
|
||||||
|
<string name="hint_duty_start">Start</string>
|
||||||
|
<string name="hint_duty_end">End</string>
|
||||||
|
<string name="hint_department">Department</string>
|
||||||
|
<string name="hint_room">Room</string>
|
||||||
|
<string name="hint_email" translatable="false">Email</string>
|
||||||
|
<string name="addDuty">ADD DUTY</string>
|
||||||
|
<string name="dutyTitle">Duty hours</string>
|
||||||
|
<string name="personalInfoTitle">Personal info</string>
|
||||||
|
<string name="userNoteTitle">Your note</string>
|
||||||
|
<string name="updateToast">Thank you for updating your profile.</string>
|
||||||
|
<string name="negative_dialog_button">No</string>
|
||||||
|
<string name="enable_sharing_question">In order to use this function, you have to enable localization sharing. May I do it for you?</string>
|
||||||
|
<string name="sharing_modal_title">Sharing</string>
|
||||||
|
<string name="lack_of_status">The user hasn\'t defined a status.</string>
|
||||||
</resources>
|
</resources>
|
||||||
|