Added sources for Android app
This commit is contained in:
9
Android/.gitignore
vendored
Normal file
9
Android/.gitignore
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
*.iml
|
||||
.gradle
|
||||
/local.properties
|
||||
/.idea/workspace.xml
|
||||
/.idea/libraries
|
||||
.DS_Store
|
||||
/build
|
||||
/captures
|
||||
.externalNativeBuild
|
||||
1
Android/app/.gitignore
vendored
Normal file
1
Android/app/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
/build
|
||||
40
Android/app/build.gradle
Normal file
40
Android/app/build.gradle
Normal file
@@ -0,0 +1,40 @@
|
||||
apply plugin: 'com.android.application'
|
||||
|
||||
android {
|
||||
signingConfigs {
|
||||
}
|
||||
compileSdkVersion 26
|
||||
defaultConfig {
|
||||
applicationId "com.sminnovations.bookmypcr"
|
||||
minSdkVersion 17
|
||||
targetSdkVersion 26
|
||||
versionCode 1
|
||||
versionName "1.0"
|
||||
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
|
||||
}
|
||||
buildTypes {
|
||||
release {
|
||||
minifyEnabled false
|
||||
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
||||
}
|
||||
}
|
||||
buildToolsVersion '26.0.2'
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation fileTree(include: ['*.jar'], dir: 'libs')
|
||||
implementation 'com.android.support:appcompat-v7:26.1.0'
|
||||
implementation 'com.android.support:design:26.1.0'
|
||||
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
|
||||
implementation 'com.android.support:support-v4:26.1.0'
|
||||
testImplementation 'junit:junit:4.12'
|
||||
androidTestImplementation 'com.android.support.test:runner:1.0.1'
|
||||
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
|
||||
compile 'com.google.firebase:firebase-core:11.8.0'
|
||||
compile 'com.google.firebase:firebase-auth:11.8.0'
|
||||
compile 'com.google.firebase:firebase-database:11.8.0'
|
||||
compile 'com.google.firebase:firebase-invites:11.8.0'
|
||||
compile 'com.firebaseui:firebase-ui-auth:3.2.2'
|
||||
}
|
||||
|
||||
apply plugin: 'com.google.gms.google-services'
|
||||
42
Android/app/google-services.json
Normal file
42
Android/app/google-services.json
Normal file
@@ -0,0 +1,42 @@
|
||||
{
|
||||
"project_info": {
|
||||
"project_number": "1014254709438",
|
||||
"firebase_url": "https://thermocycler-2bb76.firebaseio.com",
|
||||
"project_id": "thermocycler-2bb76",
|
||||
"storage_bucket": "thermocycler-2bb76.appspot.com"
|
||||
},
|
||||
"client": [
|
||||
{
|
||||
"client_info": {
|
||||
"mobilesdk_app_id": "1:1014254709438:android:8d1ce0d4ef1274d7",
|
||||
"android_client_info": {
|
||||
"package_name": "com.sminnovations.bookmypcr"
|
||||
}
|
||||
},
|
||||
"oauth_client": [
|
||||
{
|
||||
"client_id": "1014254709438-p1gujkoi1npcbfcolofjqmruhcvpepau.apps.googleusercontent.com",
|
||||
"client_type": 3
|
||||
}
|
||||
],
|
||||
"api_key": [
|
||||
{
|
||||
"current_key": "AIzaSyC4gJHT38PjxTE40_vL0mvu8hx-c2xeq8A"
|
||||
}
|
||||
],
|
||||
"services": {
|
||||
"analytics_service": {
|
||||
"status": 1
|
||||
},
|
||||
"appinvite_service": {
|
||||
"status": 1,
|
||||
"other_platform_oauth_client": []
|
||||
},
|
||||
"ads_service": {
|
||||
"status": 2
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"configuration_version": "1"
|
||||
}
|
||||
21
Android/app/proguard-rules.pro
vendored
Normal file
21
Android/app/proguard-rules.pro
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
# Add project specific ProGuard rules here.
|
||||
# You can control the set of applied configuration files using the
|
||||
# proguardFiles setting in build.gradle.
|
||||
#
|
||||
# For more details, see
|
||||
# http://developer.android.com/guide/developing/tools/proguard.html
|
||||
|
||||
# If your project uses WebView with JS, uncomment the following
|
||||
# and specify the fully qualified class name to the JavaScript interface
|
||||
# class:
|
||||
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
|
||||
# public *;
|
||||
#}
|
||||
|
||||
# Uncomment this to preserve the line number information for
|
||||
# debugging stack traces.
|
||||
#-keepattributes SourceFile,LineNumberTable
|
||||
|
||||
# If you keep the line number information, uncomment this to
|
||||
# hide the original source file name.
|
||||
#-renamesourcefileattribute SourceFile
|
||||
94
Android/app/src/main/AndroidManifest.xml
Normal file
94
Android/app/src/main/AndroidManifest.xml
Normal file
@@ -0,0 +1,94 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.sminnovations">
|
||||
|
||||
<!-- To auto-complete the email text field in the login form with the user's emails -->
|
||||
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
|
||||
<uses-permission android:name="android.permission.READ_PROFILE" />
|
||||
<uses-permission android:name="android.permission.READ_CONTACTS" />
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||
|
||||
<application
|
||||
android:name="com.sminnovations.bookmypcr.pojo.AppDataClass"
|
||||
android:allowBackup="true"
|
||||
android:icon="@mipmap/ic_launcher"
|
||||
android:label="@string/app_name"
|
||||
android:roundIcon="@mipmap/ic_launcher"
|
||||
android:supportsRtl="true"
|
||||
android:theme="@style/AppTheme">
|
||||
<activity
|
||||
android:name="com.sminnovations.bookmypcr.activities.SplashActivity"
|
||||
android:label="@string/app_name"
|
||||
android:noHistory="true"
|
||||
android:screenOrientation="portrait"
|
||||
android:theme="@style/SplashTheme">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<activity
|
||||
android:name="com.sminnovations.bookmypcr.activities.LoginActivity"
|
||||
android:label="@string/app_name" />
|
||||
<activity
|
||||
android:name="com.sminnovations.bookmypcr.activities.CalendarActivity"
|
||||
android:label="@string/title_activity_calendar"
|
||||
android:theme="@style/AppTheme.NoActionBar" />
|
||||
<activity
|
||||
android:name="com.sminnovations.bookmypcr.activities.NewEvent"
|
||||
android:label="@string/title_activity_new_event"
|
||||
android:parentActivityName="com.sminnovations.bookmypcr.activities.CalendarActivity"
|
||||
android:theme="@style/AppTheme.NoActionBar" />
|
||||
<activity
|
||||
android:name="com.sminnovations.bookmypcr.activities.EditEvent"
|
||||
android:label="@string/title_activity_edit_event"
|
||||
android:parentActivityName="com.sminnovations.bookmypcr.activities.CalendarActivity"
|
||||
android:theme="@style/AppTheme.NoActionBar" />
|
||||
<activity android:name="com.sminnovations.bookmypcr.activities.SignUp" />
|
||||
<activity android:name="com.sminnovations.bookmypcr.activities.NoAccess" />
|
||||
<activity
|
||||
android:name="com.sminnovations.bookmypcr.activities.AddPCR"
|
||||
android:label="AddPCR"
|
||||
android:parentActivityName="com.sminnovations.bookmypcr.activities.CalendarActivity"
|
||||
android:theme="@style/AppTheme.NoActionBar" />
|
||||
<activity
|
||||
android:name="com.sminnovations.bookmypcr.activities.ViewEvent"
|
||||
android:label="@string/title_activity_view_event"
|
||||
android:parentActivityName="com.sminnovations.bookmypcr.activities.CalendarActivity"
|
||||
android:theme="@style/AppTheme.NoActionBar" />
|
||||
<activity
|
||||
android:name="com.sminnovations.bookmypcr.activities.NewUser"
|
||||
android:parentActivityName="com.sminnovations.bookmypcr.activities.LoginActivity"
|
||||
android:theme="@style/AppTheme.NoActionBar" />
|
||||
<activity
|
||||
android:name="com.sminnovations.bookmypcr.activities.Settings"
|
||||
android:parentActivityName="com.sminnovations.bookmypcr.activities.CalendarActivity"
|
||||
android:theme="@style/AppTheme.NoActionBar" />
|
||||
<activity
|
||||
android:name="com.sminnovations.bookmypcr.activities.ResetPassword"
|
||||
android:parentActivityName="com.sminnovations.bookmypcr.activities.LoginActivity"
|
||||
android:theme="@style/AppTheme.NoActionBar" />
|
||||
<activity
|
||||
android:name="com.sminnovations.bookmypcr.activities.AboutUs"
|
||||
android:label="About Us"
|
||||
android:parentActivityName="com.sminnovations.bookmypcr.activities.CalendarActivity"
|
||||
android:theme="@style/AppTheme.NoActionBar" />
|
||||
<activity
|
||||
android:name="com.sminnovations.bookmypcr.activities.CreateLab"
|
||||
android:parentActivityName="com.sminnovations.bookmypcr.activities.NoAccess"
|
||||
android:theme="@style/AppTheme.NoActionBar" />
|
||||
<activity
|
||||
android:name="com.sminnovations.bookmypcr.activities.JoinLab"
|
||||
android:parentActivityName="com.sminnovations.bookmypcr.activities.NoAccess"
|
||||
android:theme="@style/AppTheme.NoActionBar" />
|
||||
<activity android:name="com.sminnovations.bookmypcr.activities.HelpActivity"
|
||||
android:label="Help"
|
||||
android:parentActivityName="com.sminnovations.bookmypcr.activities.CalendarActivity"
|
||||
android:theme="@style/AppTheme.NoActionBar"/>
|
||||
</application>
|
||||
|
||||
</manifest>
|
||||
@@ -0,0 +1,34 @@
|
||||
package com.sminnovations.bookmypcr.activities;
|
||||
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
import android.view.MenuItem;
|
||||
|
||||
import com.sminnovations.R;
|
||||
|
||||
public class AboutUs extends AppCompatActivity {
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_about_us);
|
||||
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
|
||||
setSupportActionBar(toolbar);
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_close_white_24dp);
|
||||
this.setTitle("About Us");
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
switch (item.getItemId()) {
|
||||
case android.R.id.home:
|
||||
finish();
|
||||
onBackPressed();
|
||||
return true;
|
||||
default:
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
package com.sminnovations.bookmypcr.activities;
|
||||
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.widget.EditText;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.sminnovations.R;
|
||||
import com.sminnovations.bookmypcr.pojo.AppDataClass;
|
||||
import com.sminnovations.bookmypcr.pojo.Pcr;
|
||||
|
||||
public class AddPCR extends AppCompatActivity {
|
||||
|
||||
EditText title, manufacturer,model,location,comments;
|
||||
AppDataClass appDataClass;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_add_pcr);
|
||||
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
|
||||
setSupportActionBar(toolbar);
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_close_white_24dp);
|
||||
this.setTitle("Add PCR");
|
||||
title=(EditText)findViewById(R.id.title);
|
||||
manufacturer=(EditText)findViewById(R.id.manufacturer);
|
||||
model=(EditText)findViewById(R.id.model);
|
||||
location=(EditText)findViewById(R.id.location);
|
||||
comments=(EditText)findViewById(R.id.comments);
|
||||
appDataClass = (AppDataClass) getApplicationContext();
|
||||
}
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
switch (item.getItemId()) {
|
||||
case android.R.id.home:
|
||||
finish();
|
||||
onBackPressed();
|
||||
return true;
|
||||
default:
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
}
|
||||
public void savePCR(View v){
|
||||
if(title.getText().toString().trim().isEmpty()){
|
||||
Toast.makeText(AddPCR.this,
|
||||
"Please enter name",
|
||||
Toast.LENGTH_SHORT).show();
|
||||
return;
|
||||
}
|
||||
Pcr slot=new Pcr(title.getText().toString(),manufacturer.getText().toString(),appDataClass.getmDatabase().child(appDataClass.getLab().getLabuid()).push().getKey(),model.getText().toString(),location.getText().toString(),comments.getText().toString());
|
||||
appDataClass.getmDatabase().child(appDataClass.getLab().getLabuid()).child(slot.getEquipid()).setValue(slot);
|
||||
finish();
|
||||
onBackPressed();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,469 @@
|
||||
package com.sminnovations.bookmypcr.activities;
|
||||
|
||||
import android.app.DatePickerDialog;
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.support.design.widget.FloatingActionButton;
|
||||
import android.support.design.widget.Snackbar;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.app.FragmentTransaction;
|
||||
import android.support.v4.view.GestureDetectorCompat;
|
||||
import android.support.v4.view.MenuItemCompat;
|
||||
import android.view.View;
|
||||
import android.support.design.widget.NavigationView;
|
||||
import android.support.v4.view.GravityCompat;
|
||||
import android.support.v4.widget.DrawerLayout;
|
||||
import android.support.v7.app.ActionBarDrawerToggle;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.DatePicker;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.ScrollView;
|
||||
import android.widget.Spinner;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.google.android.gms.appinvite.AppInviteInvitation;
|
||||
import com.google.firebase.auth.FirebaseAuth;
|
||||
import com.google.firebase.database.DataSnapshot;
|
||||
import com.google.firebase.database.DatabaseError;
|
||||
import com.google.firebase.database.DatabaseReference;
|
||||
import com.google.firebase.database.FirebaseDatabase;
|
||||
import com.google.firebase.database.ValueEventListener;
|
||||
import com.sminnovations.R;
|
||||
import com.sminnovations.bookmypcr.fragmentHandler.DayFragment;
|
||||
import com.sminnovations.bookmypcr.pojo.AppDataClass;
|
||||
import com.sminnovations.bookmypcr.pojo.Booking;
|
||||
import com.sminnovations.bookmypcr.pojo.Equipment;
|
||||
import com.sminnovations.bookmypcr.pojo.Lab;
|
||||
import com.sminnovations.bookmypcr.pojo.User;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
||||
public class CalendarActivity extends AppCompatActivity
|
||||
implements NavigationView.OnNavigationItemSelectedListener, DayFragment.OnFragmentInteractionListener,View.OnClickListener,AdapterView.OnItemSelectedListener {
|
||||
|
||||
AppDataClass appDataClass;
|
||||
private Handler mHandler;
|
||||
public static String CURRENT_TAG;
|
||||
int eventCode=602;
|
||||
private SimpleDateFormat dateFormatter,timeFormat=new SimpleDateFormat("hh:mm a", Locale.US);;
|
||||
TextView datevalue;
|
||||
HashMap<String,DayFragment> loadedFrag= new HashMap<>();
|
||||
Calendar newDate=Calendar.getInstance();
|
||||
private DatePickerDialog fromDatePickerDialog;
|
||||
private DatabaseReference mDatabase;
|
||||
ArrayList<String> categories = new ArrayList<String>();
|
||||
ArrayList<Equipment> equipmentList = new ArrayList<Equipment>();
|
||||
ArrayAdapter<String> dataAdapter;
|
||||
Spinner spinner;
|
||||
boolean firstrun=true;
|
||||
NavigationView navigationView;
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_calendar);
|
||||
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
|
||||
setSupportActionBar(toolbar);
|
||||
this.setTitle("PCR Booking");
|
||||
mHandler=new Handler();
|
||||
dateFormatter = new SimpleDateFormat("dd-MM-yyyy", Locale.US);
|
||||
mDatabase = FirebaseDatabase.getInstance().getReference();
|
||||
|
||||
|
||||
// mDatabase.child("emails").push().setValue(new ChildEmail("-L81IUsqJV_A8jvWPOy2","-L81KVrIM1OreB01CcZZ","pavann3008@gmail.com"));
|
||||
// mDatabase.child("-L81IUsqJV_A8jvWPOy2").push().setValue("equipment1");
|
||||
// mDatabase.child("labs").addListenerForSingleValueEvent(new ValueEventListener() {
|
||||
// @Override
|
||||
// public void onDataChange(DataSnapshot dataSnapshot) {
|
||||
//
|
||||
// System.out.println(dataSnapshot.getValue().toString());
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void onCancelled(DatabaseError databaseError) {
|
||||
// System.out.println("The read failed: " + databaseError.getCode());
|
||||
// }
|
||||
// });
|
||||
appDataClass = (AppDataClass) getApplicationContext();
|
||||
appDataClass.setmDatabase(mDatabase);
|
||||
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
|
||||
fab.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
addEvent();
|
||||
}
|
||||
});
|
||||
|
||||
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
|
||||
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
|
||||
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
|
||||
drawer.addDrawerListener(toggle);
|
||||
toggle.syncState();
|
||||
|
||||
navigationView = (NavigationView) findViewById(R.id.nav_view);
|
||||
navigationView.setNavigationItemSelectedListener(this);
|
||||
CURRENT_TAG=dateFormatter.format(Calendar.getInstance().getTime());
|
||||
datevalue=(TextView)findViewById(R.id.display_current_date);
|
||||
|
||||
spinner = (Spinner) findViewById(R.id.spinner);
|
||||
|
||||
// Spinner click listener
|
||||
spinner.setOnItemSelectedListener(this);
|
||||
|
||||
// Spinner Drop down elements
|
||||
|
||||
// Creating adapter for spinner
|
||||
dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, categories);
|
||||
|
||||
// Drop down layout style - list view with radio button
|
||||
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
|
||||
|
||||
// attaching data adapter to spinner
|
||||
spinner.setAdapter(dataAdapter);
|
||||
|
||||
initialize();
|
||||
setDateTimeField();
|
||||
loadHomeFragment();
|
||||
|
||||
|
||||
}
|
||||
|
||||
// mDatabase.child("clubs")
|
||||
// .orderByChild("name")
|
||||
// .equalTo("efg")
|
||||
// .addListenerForSingleValueEvent(new ValueEventListener() {
|
||||
// @Override
|
||||
// public void onDataChange(DataSnapshot dataSnapshot) {
|
||||
// for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) {
|
||||
// String clubkey = childSnapshot.getKey();
|
||||
|
||||
|
||||
|
||||
private void initialize(){
|
||||
Menu nav_Menu = navigationView.getMenu();
|
||||
nav_Menu.findItem(R.id.nav_settings).setVisible(appDataClass.getChildEmail().isAdmin());
|
||||
nav_Menu.findItem(R.id.nav_addPCR).setVisible(appDataClass.getChildEmail().isAdmin());
|
||||
|
||||
mDatabase.child("labs").child(appDataClass.getChildEmail().getLabUid()).addValueEventListener(new ValueEventListener() {
|
||||
@Override
|
||||
public void onDataChange(DataSnapshot dataSnapshot) {
|
||||
appDataClass.setLab(dataSnapshot.getValue(Lab.class));
|
||||
}
|
||||
@Override
|
||||
public void onCancelled(DatabaseError databaseError) {
|
||||
System.out.println("The read failed: " + databaseError.getCode());
|
||||
}
|
||||
});
|
||||
mDatabase.child("users").child(appDataClass.getChildEmail().getUserUid()).addValueEventListener(new ValueEventListener() {
|
||||
@Override
|
||||
public void onDataChange(DataSnapshot dataSnapshot) {
|
||||
appDataClass.setUserObj(dataSnapshot.getValue(User.class));
|
||||
if(!appDataClass.getUserObj().isActive())
|
||||
redirectNoAccess();
|
||||
}
|
||||
@Override
|
||||
public void onCancelled(DatabaseError databaseError) {
|
||||
System.out.println("The read failed: " + databaseError.getCode());
|
||||
}
|
||||
});
|
||||
firstrun=true;
|
||||
mDatabase.child(appDataClass.getChildEmail().getLabUid()).addValueEventListener(new ValueEventListener() {
|
||||
@Override
|
||||
public void onDataChange(DataSnapshot dataSnapshot) {
|
||||
categories.clear();equipmentList.clear();
|
||||
for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) {
|
||||
Equipment equip=childSnapshot.getValue(Equipment.class);
|
||||
categories.add(equip.getName());equipmentList.add(equip);
|
||||
}
|
||||
if(dataAdapter!=null) {
|
||||
dataAdapter.notifyDataSetChanged();
|
||||
}
|
||||
updateview();
|
||||
}
|
||||
@Override
|
||||
public void onCancelled(DatabaseError databaseError) {
|
||||
System.out.println("The read failed: " + databaseError.getCode());
|
||||
}
|
||||
});
|
||||
// mDatabase.child("labs").child("-L81IUsqJV_A8jvWPOy2").setValue(new Lab("OMI","IISc","Sai Siva Gorthi","9740137245","Malleshwaram, Bangalore","-L81IUsqJV_A8jvWPOy2"));
|
||||
// mDatabase.child("users").child("-L81KVrIM1OreB01CcZZ").setValue(new User("Pavan",true,true,"-L81KVrIM1OreB01CcZZ"));
|
||||
// mDatabase.child("-L81IUsqJV_A8jvWPOy2").child("-L81SR-2oc4HxRI8dYOF").setValue(new Equipment("Bio-rad","Thorlabs","-L81SR-2oc4HxRI8dYOF"));
|
||||
}
|
||||
|
||||
public void redirectNoAccess(){
|
||||
Intent intent = new Intent(this, NoAccess.class);
|
||||
startActivity(intent);
|
||||
}
|
||||
|
||||
public void updateview(){
|
||||
System.out.println("Entering"+spinner.getSelectedItemPosition());
|
||||
int index;
|
||||
if(spinner.getSelectedItemPosition()<0){
|
||||
index=0;
|
||||
}
|
||||
else{
|
||||
index=spinner.getSelectedItemPosition();
|
||||
}
|
||||
mDatabase.child(equipmentList.get(index).getEquipid()).child(CURRENT_TAG).addValueEventListener(new ValueEventListener() {
|
||||
@Override
|
||||
public void onDataChange(DataSnapshot dataSnapshot) {
|
||||
List<Booking> eventList=loadedFrag.get(CURRENT_TAG).getEventList();
|
||||
eventList.clear();
|
||||
for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) {
|
||||
eventList.add(childSnapshot.getValue(Booking.class));
|
||||
}
|
||||
loadedFrag.get(CURRENT_TAG).setEventList(eventList);
|
||||
loadedFrag.get(CURRENT_TAG).notifyDataChanged();
|
||||
}
|
||||
@Override
|
||||
public void onCancelled(DatabaseError databaseError) {
|
||||
System.out.println("The read failed: " + databaseError.getCode());
|
||||
}
|
||||
});
|
||||
firstrun=false;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
|
||||
// On selecting a spinner item
|
||||
String item = parent.getItemAtPosition(position).toString();
|
||||
loadedFrag=new HashMap<>();
|
||||
loadHomeFragment();
|
||||
// Showing selected spinner item
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNothingSelected(AdapterView<?> arg0) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
private void setDateTimeField() {
|
||||
datevalue.setOnClickListener(this);
|
||||
datevalue.setText(dateFormatter.format(newDate.getTime()));
|
||||
fromDatePickerDialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
|
||||
|
||||
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
|
||||
newDate.set(year, monthOfYear, dayOfMonth);
|
||||
datevalue.setText(dateFormatter.format(newDate.getTime()));
|
||||
CURRENT_TAG=dateFormatter.format(newDate.getTime());
|
||||
loadHomeFragment();
|
||||
}
|
||||
|
||||
}, newDate.get(Calendar.YEAR), newDate.get(Calendar.MONTH), newDate.get(Calendar.DAY_OF_MONTH));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
if(view == datevalue) {
|
||||
fromDatePickerDialog.show();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void previousDay(View v){
|
||||
newDate.add(Calendar.DAY_OF_MONTH,-1);
|
||||
datevalue.setText(dateFormatter.format(newDate.getTime()));
|
||||
CURRENT_TAG=dateFormatter.format(newDate.getTime());
|
||||
fromDatePickerDialog.updateDate(newDate.get(Calendar.YEAR), newDate.get(Calendar.MONTH), newDate.get(Calendar.DAY_OF_MONTH));
|
||||
loadHomeFragment();
|
||||
|
||||
}
|
||||
public void nextDay(View v){
|
||||
newDate.add(Calendar.DAY_OF_MONTH,1);
|
||||
datevalue.setText(dateFormatter.format(newDate.getTime()));
|
||||
CURRENT_TAG=dateFormatter.format(newDate.getTime());
|
||||
fromDatePickerDialog.updateDate(newDate.get(Calendar.YEAR), newDate.get(Calendar.MONTH), newDate.get(Calendar.DAY_OF_MONTH));
|
||||
loadHomeFragment();
|
||||
}
|
||||
|
||||
public void addEvent(View v){
|
||||
Intent intent = new Intent(this, NewEvent.class);
|
||||
intent.putExtra("dateSelected", datevalue.getText());
|
||||
intent.putExtra("clickid", v.getId());
|
||||
intent.putExtra("equipment", equipmentList.get(spinner.getSelectedItemPosition()));
|
||||
// startActivityForResult(intent, eventCode);
|
||||
startActivity(intent);
|
||||
}
|
||||
|
||||
public void addEvent(){
|
||||
Intent intent = new Intent(this, NewEvent.class);
|
||||
intent.putExtra("dateSelected", datevalue.getText());
|
||||
intent.putExtra("equipment", equipmentList.get(spinner.getSelectedItemPosition()));
|
||||
intent.putExtra("clickid", 0);
|
||||
startActivity(intent);
|
||||
// startActivityForResult(intent, eventCode);
|
||||
}
|
||||
|
||||
public void editEvent(View v)throws Exception{
|
||||
Booking slot=loadedFrag.get(CURRENT_TAG).getMapping().get((LinearLayout)v);
|
||||
Intent intent;
|
||||
Calendar obj=Calendar.getInstance(),obj3=Calendar.getInstance();
|
||||
obj.setTime(dateFormatter.parse(slot.getDate()));
|
||||
Calendar obj2=Calendar.getInstance();
|
||||
obj2.setTime(timeFormat.parse(slot.getStartTime()));
|
||||
obj.set(Calendar.HOUR_OF_DAY,obj2.get(Calendar.HOUR_OF_DAY));
|
||||
obj.set(Calendar.MINUTE,obj2.get(Calendar.MINUTE));
|
||||
if(appDataClass.getUserObj().getUseruid().equals(slot.getUserid()) && obj.compareTo(obj3)>=0 )
|
||||
intent = new Intent(this, EditEvent.class);
|
||||
else
|
||||
intent = new Intent(this, ViewEvent.class);
|
||||
intent.putExtra("slot", slot);
|
||||
intent.putExtra("equipment", equipmentList.get(spinner.getSelectedItemPosition()));
|
||||
startActivity(intent);
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void loadHomeFragment() {
|
||||
|
||||
// final FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
|
||||
// if (getSupportFragmentManager().findFragmentByTag(CURRENT_TAG) != null) {
|
||||
// fragmentTransaction.attach(loadedFrag.get(CURRENT_TAG));
|
||||
// return;
|
||||
// }
|
||||
|
||||
Runnable mPendingRunnable = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
DayFragment homeFragment=loadedFrag.get(CURRENT_TAG);
|
||||
if(homeFragment==null){
|
||||
homeFragment= new DayFragment().newInstance((Calendar)newDate.clone(),appDataClass);
|
||||
loadedFrag.put(CURRENT_TAG,homeFragment);
|
||||
if(!firstrun){
|
||||
updateview();
|
||||
}
|
||||
}
|
||||
Fragment fragment = homeFragment;
|
||||
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
|
||||
fragmentTransaction.setCustomAnimations(android.R.anim.fade_in,
|
||||
android.R.anim.fade_out);
|
||||
fragmentTransaction.replace(R.id.frameitem, fragment, CURRENT_TAG);
|
||||
fragmentTransaction.commitAllowingStateLoss();
|
||||
ScrollView targetView = (ScrollView) findViewById(R.id.scroll);
|
||||
if(CURRENT_TAG.equals(dateFormatter.format(Calendar.getInstance().getTime()))) {
|
||||
int hour = Calendar.getInstance().get(Calendar.HOUR_OF_DAY);
|
||||
targetView.smoothScrollTo(0, hour * 90);
|
||||
}
|
||||
else
|
||||
targetView.smoothScrollTo(0, 0);
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
// If mPendingRunnable is not null, then add to the message queue
|
||||
if (mPendingRunnable != null) {
|
||||
mHandler.post(mPendingRunnable);
|
||||
}
|
||||
|
||||
}
|
||||
@Override
|
||||
public void onBackPressed() {
|
||||
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
|
||||
if (drawer.isDrawerOpen(GravityCompat.START)) {
|
||||
drawer.closeDrawer(GravityCompat.START);
|
||||
} else {
|
||||
super.onBackPressed();
|
||||
}
|
||||
}
|
||||
|
||||
// @Override
|
||||
// public boolean onCreateOptionsMenu(Menu menu) {
|
||||
// // Inflate the menu; this adds items to the action bar if it is present.
|
||||
// getMenuInflater().inflate(R.menu.calendar, menu);
|
||||
// MenuItem item = menu.findItem(R.id.spinner);
|
||||
// Spinner spinner = (Spinner) MenuItemCompat.getActionView(item);
|
||||
//
|
||||
// ArrayList<String> contacts = new ArrayList<>();
|
||||
// contacts.add("Test 1");
|
||||
// contacts.add("Test 2");
|
||||
//
|
||||
// ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_spinner_item, contacts);
|
||||
// adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
|
||||
// spinner.setAdapter(adapter);
|
||||
//
|
||||
// return true;
|
||||
// }
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
// Handle action bar item clicks here. The action bar will
|
||||
// automatically handle clicks on the Home/Up button, so long
|
||||
// as you specify a parent activity in AndroidManifest.xml.
|
||||
int id = item.getItemId();
|
||||
|
||||
// //noinspection SimplifiableIfStatement
|
||||
// if (id == R.id.spinner) {
|
||||
// return true;
|
||||
// }
|
||||
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
|
||||
@SuppressWarnings("StatementWithEmptyBody")
|
||||
@Override
|
||||
public boolean onNavigationItemSelected(MenuItem item) {
|
||||
// Handle navigation view item clicks here.
|
||||
int id = item.getItemId();
|
||||
|
||||
if (id == R.id.nav_addPCR) {
|
||||
Intent intent = new Intent(this, AddPCR.class);
|
||||
startActivity(intent);
|
||||
} else if (id == R.id.nav_settings) {
|
||||
Intent intent = new Intent(this, Settings.class);
|
||||
startActivity(intent);
|
||||
}else if (id == R.id.nav_invite) {
|
||||
Intent intent = new AppInviteInvitation.IntentBuilder("Invitation to join PCR Booking App")
|
||||
.setMessage("Welcome")
|
||||
// .setCustomImage(Uri.parse(getString(R.string.invitation_custom_image)))
|
||||
.setCallToActionText("Install")
|
||||
.build();
|
||||
// startActivity(intent);
|
||||
startActivityForResult(intent, 1);
|
||||
|
||||
|
||||
}else if (id == R.id.nav_help) {
|
||||
Intent intent = new Intent(this, HelpActivity.class);
|
||||
startActivity(intent);
|
||||
|
||||
} else if (id == R.id.nav_aboutUs) {
|
||||
Intent intent = new Intent(this, AboutUs.class);
|
||||
startActivity(intent);
|
||||
}
|
||||
else if (id == R.id.nav_signOut) {
|
||||
appDataClass.getmAuth().signOut();
|
||||
appDataClass=new AppDataClass();
|
||||
appDataClass.setmAuth(FirebaseAuth.getInstance());
|
||||
Intent intent = new Intent(this, LoginActivity.class);
|
||||
startActivity(intent);
|
||||
}
|
||||
|
||||
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
|
||||
drawer.closeDrawer(GravityCompat.START);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void onFragmentInteraction(Uri uri) {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,108 @@
|
||||
package com.sminnovations.bookmypcr.activities;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.widget.EditText;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.sminnovations.R;
|
||||
import com.sminnovations.bookmypcr.pojo.AppDataClass;
|
||||
import com.sminnovations.bookmypcr.pojo.ChildEmail;
|
||||
import com.sminnovations.bookmypcr.pojo.Lab;
|
||||
import com.sminnovations.bookmypcr.pojo.Pcr;
|
||||
|
||||
public class CreateLab extends AppCompatActivity {
|
||||
|
||||
EditText title, manufacturer,model,location,comments,labName,dept,univ,incharge,inchargeNo,inchargeEmail;
|
||||
AppDataClass appDataClass;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_create_lab);
|
||||
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
|
||||
setSupportActionBar(toolbar);
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_close_white_24dp);
|
||||
this.setTitle("Create a Lab Account");
|
||||
title=(EditText)findViewById(R.id.title);
|
||||
manufacturer=(EditText)findViewById(R.id.manufacturer);
|
||||
model=(EditText)findViewById(R.id.model);
|
||||
location=(EditText)findViewById(R.id.location);
|
||||
comments=(EditText)findViewById(R.id.comments);
|
||||
labName=(EditText)findViewById(R.id.labName);
|
||||
dept=(EditText)findViewById(R.id.department);
|
||||
univ=(EditText)findViewById(R.id.university);
|
||||
incharge=(EditText)findViewById(R.id.incharge);
|
||||
inchargeNo=(EditText)findViewById(R.id.inchargeNo);
|
||||
inchargeEmail=(EditText)findViewById(R.id.inchargeEmail);
|
||||
appDataClass = (AppDataClass) getApplicationContext();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
switch (item.getItemId()) {
|
||||
case android.R.id.home:
|
||||
finish();
|
||||
onBackPressed();
|
||||
return true;
|
||||
default:
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
}
|
||||
public void createLab(View v){
|
||||
if(labName.getText().toString().trim().isEmpty()){
|
||||
Toast.makeText(CreateLab.this,
|
||||
"Please enter Lab name",
|
||||
Toast.LENGTH_SHORT).show();
|
||||
return;
|
||||
}
|
||||
if(dept.getText().toString().trim().isEmpty()){
|
||||
Toast.makeText(CreateLab.this,
|
||||
"Please enter Department name",
|
||||
Toast.LENGTH_SHORT).show();
|
||||
return;
|
||||
}
|
||||
if(univ.getText().toString().trim().isEmpty()){
|
||||
Toast.makeText(CreateLab.this,
|
||||
"Please enter University name",
|
||||
Toast.LENGTH_SHORT).show();
|
||||
return;
|
||||
}
|
||||
if(incharge.getText().toString().trim().isEmpty()){
|
||||
Toast.makeText(CreateLab.this,
|
||||
"Please enter Incharge name",
|
||||
Toast.LENGTH_SHORT).show();
|
||||
return;
|
||||
}
|
||||
if(inchargeEmail.getText().toString().trim().isEmpty()){
|
||||
Toast.makeText(CreateLab.this,
|
||||
"Please enter Incharge Email ID",
|
||||
Toast.LENGTH_SHORT).show();
|
||||
return;
|
||||
}
|
||||
if(title.getText().toString().trim().isEmpty()){
|
||||
Toast.makeText(CreateLab.this,
|
||||
"Please enter PCR name",
|
||||
Toast.LENGTH_SHORT).show();
|
||||
return;
|
||||
}
|
||||
Lab obj=new Lab(labName.getText().toString().trim(),dept.getText().toString().trim(),univ.getText().toString().trim(),incharge.getText().toString().trim(),(inchargeNo.getText().toString()),inchargeEmail.getText().toString());
|
||||
obj.setLabuid(appDataClass.getmDatabase().child("labs").push().getKey());
|
||||
appDataClass.getmDatabase().child("labs").child(obj.getLabuid()).setValue(obj);
|
||||
appDataClass.setLab(obj);
|
||||
Pcr slot=new Pcr(title.getText().toString(),manufacturer.getText().toString(),appDataClass.getmDatabase().child(appDataClass.getLab().getLabuid()).push().getKey(),model.getText().toString(),location.getText().toString(),comments.getText().toString());
|
||||
appDataClass.getmDatabase().child(appDataClass.getLab().getLabuid()).child(slot.getEquipid()).setValue(slot);
|
||||
ChildEmail emailObj=appDataClass.getChildEmail();
|
||||
emailObj.setLabUid(obj.getLabuid());
|
||||
emailObj.setAdmin(true);
|
||||
appDataClass.getmDatabase().child("emails").child(emailObj.getEmailUid()).setValue(emailObj);
|
||||
appDataClass.setChildEmail(emailObj);
|
||||
Intent intent = new Intent(this, CalendarActivity.class);
|
||||
startActivity(intent);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,335 @@
|
||||
package com.sminnovations.bookmypcr.activities;
|
||||
|
||||
import android.app.DatePickerDialog;
|
||||
import android.content.Context;
|
||||
import android.graphics.Point;
|
||||
import android.os.Bundle;
|
||||
import android.support.design.widget.CoordinatorLayout;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
import android.view.Display;
|
||||
import android.view.Gravity;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.Button;
|
||||
import android.widget.DatePicker;
|
||||
import android.widget.EditText;
|
||||
import android.widget.PopupWindow;
|
||||
import android.widget.RelativeLayout;
|
||||
import android.widget.Spinner;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.google.firebase.database.DataSnapshot;
|
||||
import com.google.firebase.database.DatabaseError;
|
||||
import com.google.firebase.database.ValueEventListener;
|
||||
import com.sminnovations.R;
|
||||
import com.sminnovations.bookmypcr.pojo.AppDataClass;
|
||||
import com.sminnovations.bookmypcr.pojo.Booking;
|
||||
import com.sminnovations.bookmypcr.pojo.Equipment;
|
||||
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
||||
public class EditEvent extends AppCompatActivity implements View.OnClickListener,AdapterView.OnItemSelectedListener{
|
||||
|
||||
private Booking slot;
|
||||
private Equipment equipment;
|
||||
TextView fromdateView,enddateView;
|
||||
EditText title, reaction,comments;
|
||||
Calendar fromDate =Calendar.getInstance(), endDate =Calendar.getInstance();
|
||||
private DatePickerDialog fromDatePickerDialog,endDatePickerDialog;
|
||||
private SimpleDateFormat dateFormatter, timestampFormat=new SimpleDateFormat("dd-MM-yyyy HH:mm", Locale.US),
|
||||
timeFormat=new SimpleDateFormat("hh:mm a", Locale.US);
|
||||
AppDataClass appDataClass;
|
||||
List<String> startSpinnerArray = new ArrayList<String>();
|
||||
List<String> endSpinnerArray = new ArrayList<String>();
|
||||
ArrayAdapter<String> startAdapter,endAdapter ;
|
||||
Spinner sItems,eItems;
|
||||
RelativeLayout mainLayout;
|
||||
PopupWindow popupWindow;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_edit_event);
|
||||
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
|
||||
setSupportActionBar(toolbar);
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_close_white_24dp);
|
||||
this.setTitle("Edit Event");
|
||||
Bundle extras = getIntent().getExtras();
|
||||
mainLayout = (RelativeLayout) findViewById(R.id.mainLayout);
|
||||
if (extras != null) {
|
||||
slot= (Booking)getIntent().getSerializableExtra("slot");
|
||||
equipment = (Equipment)getIntent().getSerializableExtra("equipment");
|
||||
}
|
||||
fromdateView =(TextView)findViewById(R.id.datebar);
|
||||
title=(EditText)findViewById(R.id.title);
|
||||
reaction=(EditText)findViewById(R.id.reaction);
|
||||
comments=(EditText)findViewById(R.id.comments);
|
||||
enddateView=(TextView)findViewById(R.id.enddatebar);
|
||||
dateFormatter = new SimpleDateFormat("dd-MM-yyyy", Locale.US);
|
||||
appDataClass = (AppDataClass) getApplicationContext();
|
||||
startAdapter = new ArrayAdapter<String>(
|
||||
this, android.R.layout.simple_spinner_item, startSpinnerArray);
|
||||
endAdapter = new ArrayAdapter<String>(
|
||||
this, android.R.layout.simple_spinner_item, endSpinnerArray);
|
||||
startAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
|
||||
endAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
|
||||
setDateTimeField();
|
||||
|
||||
}
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
switch (item.getItemId()) {
|
||||
case android.R.id.home:
|
||||
finish();
|
||||
onBackPressed();
|
||||
return true;
|
||||
default:
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
}
|
||||
|
||||
private void setDateTimeField() {
|
||||
fromdateView.setOnClickListener(this);
|
||||
enddateView.setOnClickListener(this);
|
||||
fromdateView.setText(slot.getDate());
|
||||
enddateView.setText(slot.getDate());
|
||||
Calendar endTime=Calendar.getInstance();
|
||||
Calendar startTime=Calendar.getInstance();
|
||||
try{
|
||||
fromDate.setTime(dateFormatter.parse(slot.getDate()));
|
||||
endDate.setTime(dateFormatter.parse(slot.getDate()));
|
||||
endTime.setTime(timeFormat.parse(slot.getEndTime()));
|
||||
endTime.setTime(timeFormat.parse(slot.getEndTime()));
|
||||
endTime.set(fromDate.get(Calendar.YEAR), fromDate.get(Calendar.MONTH), fromDate.get(Calendar.DAY_OF_MONTH));
|
||||
startTime.setTime(timeFormat.parse("12:00 AM"));
|
||||
}catch (ParseException e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
fromDatePickerDialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
|
||||
|
||||
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
|
||||
fromDate.set(year, monthOfYear, dayOfMonth);
|
||||
fromdateView.setText(dateFormatter.format(fromDate.getTime()));
|
||||
}
|
||||
|
||||
}, fromDate.get(Calendar.YEAR), fromDate.get(Calendar.MONTH), fromDate.get(Calendar.DAY_OF_MONTH));
|
||||
|
||||
endDatePickerDialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
|
||||
|
||||
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
|
||||
endDate.set(year, monthOfYear, dayOfMonth);
|
||||
enddateView.setText(dateFormatter.format(endDate.getTime()));
|
||||
}
|
||||
|
||||
}, endDate.get(Calendar.YEAR), endDate.get(Calendar.MONTH), endDate.get(Calendar.DAY_OF_MONTH));
|
||||
|
||||
title.setText(slot.getTitle());
|
||||
reaction.setText(slot.getReactionspec());
|
||||
comments.setText(slot.getComments());
|
||||
|
||||
startSpinnerArray.add(timeFormat.format(startTime.getTime()));
|
||||
int startIndex=0;
|
||||
for(int i=0;i<48;i++){
|
||||
startTime.add(Calendar.MINUTE,30);
|
||||
startSpinnerArray.add(timeFormat.format(startTime.getTime()));
|
||||
if(timeFormat.format(startTime.getTime()).equalsIgnoreCase(slot.getStartTime())){
|
||||
startIndex=i;
|
||||
}
|
||||
}
|
||||
|
||||
for(int i=0;i<16;i++){
|
||||
endTime.add(Calendar.MINUTE,30);
|
||||
if(endTime.get(Calendar.DAY_OF_MONTH)!=fromDate.get(Calendar.DAY_OF_MONTH)){
|
||||
break;
|
||||
}
|
||||
endSpinnerArray.add(timeFormat.format(endTime.getTime()));
|
||||
}
|
||||
sItems = (Spinner) findViewById(R.id.startTime);
|
||||
sItems.setAdapter(startAdapter);
|
||||
sItems.setSelection(startIndex+1);
|
||||
sItems.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
|
||||
@Override
|
||||
public void onItemSelected(AdapterView<?> arg0, View arg1,
|
||||
int arg2, long arg3) {
|
||||
|
||||
Calendar endTime=Calendar.getInstance();
|
||||
try {
|
||||
endTime.setTime(timeFormat.parse(arg0.getSelectedItem().toString()));
|
||||
endTime.set(fromDate.get(Calendar.YEAR), fromDate.get(Calendar.MONTH), fromDate.get(Calendar.DAY_OF_MONTH));
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
endSpinnerArray.clear();
|
||||
for(int i=0;i<16;i++){
|
||||
endTime.add(Calendar.MINUTE,30);
|
||||
if(endTime.get(Calendar.DAY_OF_MONTH)!=fromDate.get(Calendar.DAY_OF_MONTH)){
|
||||
break;
|
||||
}
|
||||
endSpinnerArray.add(timeFormat.format(endTime.getTime()));
|
||||
endAdapter.notifyDataSetChanged();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNothingSelected(AdapterView<?> arg0) {
|
||||
}
|
||||
});
|
||||
eItems = (Spinner) findViewById(R.id.endTime);
|
||||
eItems.setAdapter(endAdapter);
|
||||
}
|
||||
|
||||
public void saveEvent(View v){
|
||||
if (title.getText().toString().trim().isEmpty()||eItems.getSelectedItem()==null) {
|
||||
Toast.makeText(EditEvent.this,
|
||||
"Please enter all mandatory fields",
|
||||
Toast.LENGTH_SHORT).show();
|
||||
return;
|
||||
}
|
||||
validate(appDataClass,sItems.getSelectedItem().toString(),eItems.getSelectedItem().toString(),fromdateView.getText().toString(),equipment);
|
||||
}
|
||||
|
||||
public void saveData() {
|
||||
|
||||
Calendar dateTemp = Calendar.getInstance(), dateTemp2 = Calendar.getInstance(), dateTemp3 = (Calendar) dateTemp.clone();
|
||||
try {
|
||||
dateTemp2.setTime(dateFormatter.parse(fromdateView.getText().toString()));
|
||||
dateTemp3.setTime(timeFormat.parse(sItems.getSelectedItem().toString()));
|
||||
dateTemp3.set(dateTemp2.get(Calendar.YEAR), dateTemp2.get(Calendar.MONTH), dateTemp2.get(Calendar.DAY_OF_MONTH));
|
||||
if (dateTemp3.compareTo(dateTemp) < 0) {
|
||||
LayoutInflater layoutInflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
|
||||
View customView = layoutInflater.inflate(R.layout.popup_confirmation, null);
|
||||
Button closePopupBtn = (Button) customView.findViewById(R.id.closePopupBtn);
|
||||
Button confirmPopupBtn = (Button) customView.findViewById(R.id.confirmPopupBtn);
|
||||
//instantiate popup window
|
||||
popupWindow = new PopupWindow(customView, CoordinatorLayout.LayoutParams.MATCH_PARENT, CoordinatorLayout.LayoutParams.WRAP_CONTENT);
|
||||
popupWindow.setFocusable(true);
|
||||
Display display = getWindowManager().getDefaultDisplay();
|
||||
Point size = new Point();
|
||||
display.getSize(size);
|
||||
int width = size.x;
|
||||
width = (int) (width - (double) width * 0.1);
|
||||
popupWindow.setWidth(width);
|
||||
//display the popup window
|
||||
popupWindow.showAtLocation(mainLayout, Gravity.CENTER, 0, 0);
|
||||
|
||||
//close the popup window on button click
|
||||
closePopupBtn.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
popupWindow.dismiss();
|
||||
}
|
||||
});
|
||||
confirmPopupBtn.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
saveDataFinal();
|
||||
popupWindow.dismiss();
|
||||
}
|
||||
});
|
||||
} else {
|
||||
saveDataFinal();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
|
||||
}
|
||||
}
|
||||
public void saveDataFinal() {
|
||||
Booking slotObj=new Booking(appDataClass.getUserObj().getUseruid(),appDataClass.getUserObj().getName(),title.getText().toString()
|
||||
,reaction.getText().toString(),comments.getText().toString(),fromdateView.getText().toString(),sItems.getSelectedItem().toString(),eItems.getSelectedItem().toString(),
|
||||
timestampFormat.format(Calendar.getInstance().getTime()),slot.getKey());
|
||||
slotObj.setDuration((eItems.getSelectedItemPosition()+1)*0.5);
|
||||
appDataClass.getmDatabase().child(equipment.getEquipid()).child(fromdateView.getText().toString()).child(slotObj.getKey()).setValue(slotObj);
|
||||
finish();
|
||||
onBackPressed();
|
||||
|
||||
}
|
||||
|
||||
public void deleteEvent(View v){
|
||||
Toast.makeText(EditEvent.this,
|
||||
"Event Deleted",
|
||||
Toast.LENGTH_SHORT).show();
|
||||
appDataClass.getmDatabase().child(equipment.getEquipid()).child(fromdateView.getText().toString()).child(slot.getKey()).removeValue();
|
||||
finish();
|
||||
onBackPressed();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
|
||||
// On selecting a spinner item
|
||||
String item = parent.getItemAtPosition(position).toString();
|
||||
|
||||
// Showing selected spinner item
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
if(view == fromdateView) {
|
||||
fromDatePickerDialog.show();
|
||||
}else if(view==enddateView){
|
||||
endDatePickerDialog.show();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNothingSelected(AdapterView<?> arg0) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
public boolean validate(AppDataClass appDataClass, String fromTime, String endtime, String date, Equipment equipment){
|
||||
final Calendar startTime=Calendar.getInstance(),toTime=(Calendar)startTime.clone();
|
||||
try {
|
||||
startTime.setTime(timeFormat.parse(fromTime));
|
||||
toTime.setTime(timeFormat.parse(endtime));
|
||||
}catch (Exception e){
|
||||
|
||||
}
|
||||
|
||||
appDataClass.getmDatabase().child(equipment.getEquipid()).child(date).addListenerForSingleValueEvent(new ValueEventListener() {
|
||||
@Override
|
||||
public void onDataChange(DataSnapshot dataSnapshot) {
|
||||
Calendar tempStartTime=(Calendar)startTime.clone(),tempEndTime=(Calendar)startTime.clone();
|
||||
for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) {
|
||||
Booking slot=childSnapshot.getValue(Booking.class);
|
||||
try {
|
||||
tempStartTime.setTime(timeFormat.parse(slot.getStartTime()));
|
||||
tempEndTime.setTime(timeFormat.parse(slot.getEndTime()));
|
||||
}catch (Exception e){
|
||||
|
||||
}
|
||||
if(tempStartTime.compareTo(startTime)==0 ||tempEndTime.compareTo(toTime)==0 || (tempStartTime.compareTo(startTime)>0 && tempEndTime.compareTo(toTime)<0) || (tempStartTime.compareTo(startTime)<0 && tempEndTime.compareTo(toTime)>0)
|
||||
|| (tempStartTime.compareTo(startTime)<0 && tempEndTime.compareTo(startTime)>0)|| (tempStartTime.compareTo(toTime)<0 && tempEndTime.compareTo(toTime)>0)) {
|
||||
error();
|
||||
return;
|
||||
}
|
||||
}
|
||||
saveData();
|
||||
}
|
||||
@Override
|
||||
public void onCancelled(DatabaseError databaseError) {
|
||||
System.out.println("The read failed: " + databaseError.getCode());
|
||||
}
|
||||
});
|
||||
return true;
|
||||
}
|
||||
|
||||
public void error(){
|
||||
Toast.makeText(EditEvent.this,
|
||||
"System is busy in the selected time range",
|
||||
Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package com.sminnovations.bookmypcr.activities;
|
||||
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
import android.view.MenuItem;
|
||||
|
||||
import com.sminnovations.R;
|
||||
|
||||
public class HelpActivity extends AppCompatActivity {
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_help);
|
||||
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
|
||||
setSupportActionBar(toolbar);
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_close_white_24dp);
|
||||
this.setTitle("Help");
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
switch (item.getItemId()) {
|
||||
case android.R.id.home:
|
||||
finish();
|
||||
onBackPressed();
|
||||
return true;
|
||||
default:
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,116 @@
|
||||
package com.sminnovations.bookmypcr.activities;
|
||||
|
||||
import android.app.ProgressDialog;
|
||||
import android.content.Intent;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.ListView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.google.firebase.database.DataSnapshot;
|
||||
import com.google.firebase.database.DatabaseError;
|
||||
import com.google.firebase.database.DatabaseReference;
|
||||
import com.google.firebase.database.ValueEventListener;
|
||||
import com.sminnovations.R;
|
||||
import com.sminnovations.bookmypcr.pojo.AppDataClass;
|
||||
import com.sminnovations.bookmypcr.pojo.ChildEmail;
|
||||
import com.sminnovations.bookmypcr.pojo.Lab;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class JoinLab extends AppCompatActivity {
|
||||
|
||||
TextView searchValue;
|
||||
ProgressDialog mProgress;
|
||||
AppDataClass appDataClass;
|
||||
ArrayAdapter<String> adapter;
|
||||
List<String> resultValue = new ArrayList<>();
|
||||
List<Lab> resultObj = new ArrayList<>();
|
||||
private DatabaseReference mDatabase;
|
||||
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_join_lab);
|
||||
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
|
||||
setSupportActionBar(toolbar);
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_close_white_24dp);
|
||||
this.setTitle("Join a Lab Account");
|
||||
appDataClass=(AppDataClass)this.getApplicationContext();
|
||||
searchValue=(TextView)findViewById(R.id.searchValue);
|
||||
ListView listView1 = (ListView) findViewById(R.id.resultList);
|
||||
mProgress = new ProgressDialog(this);
|
||||
mProgress.setMessage("Fetching Data ...");
|
||||
adapter = new ArrayAdapter<String>(this,
|
||||
android.R.layout.simple_list_item_1, resultValue);
|
||||
listView1.setAdapter(adapter);
|
||||
listView1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
|
||||
@Override
|
||||
public void onItemClick(AdapterView<?> adapter, View v, int position, long id) {
|
||||
joinLab(position);
|
||||
}
|
||||
});
|
||||
mDatabase=appDataClass.getmDatabase();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
switch (item.getItemId()) {
|
||||
case android.R.id.home:
|
||||
finish();
|
||||
onBackPressed();
|
||||
return true;
|
||||
default:
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
}
|
||||
|
||||
public void search(View v){
|
||||
final String search=searchValue.getText().toString().trim().toLowerCase();
|
||||
if(search.isEmpty()) {
|
||||
resultValue.clear();
|
||||
resultObj.clear();
|
||||
adapter.notifyDataSetChanged();
|
||||
return;
|
||||
}
|
||||
mProgress.show();
|
||||
mDatabase.child("labs").orderByChild("name").addListenerForSingleValueEvent(new ValueEventListener() {
|
||||
@Override
|
||||
public void onDataChange(DataSnapshot dataSnapshot) {
|
||||
resultValue.clear();
|
||||
resultObj.clear();
|
||||
for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) {
|
||||
Lab obj=childSnapshot.getValue(Lab.class);
|
||||
if(obj.getName().toLowerCase().contains(search)){
|
||||
resultValue.add(obj.getName());
|
||||
resultObj.add(obj);
|
||||
}
|
||||
}
|
||||
adapter.notifyDataSetChanged();
|
||||
mProgress.hide();
|
||||
}
|
||||
@Override
|
||||
public void onCancelled(DatabaseError databaseError) {
|
||||
mProgress.hide();
|
||||
System.out.println("The read failed: " + databaseError.getCode());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void joinLab(int position){
|
||||
ChildEmail emailObj=appDataClass.getChildEmail();
|
||||
emailObj.setLabUid(resultObj.get(position).getLabuid());
|
||||
mDatabase.child("emails").child(emailObj.getEmailUid()).setValue(emailObj);
|
||||
appDataClass.setChildEmail(emailObj);
|
||||
Intent intent = new Intent(this, CalendarActivity.class);
|
||||
startActivity(intent);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,544 @@
|
||||
package com.sminnovations.bookmypcr.activities;
|
||||
|
||||
import android.animation.Animator;
|
||||
import android.animation.AnimatorListenerAdapter;
|
||||
import android.annotation.TargetApi;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.os.Handler;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.design.widget.Snackbar;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.app.LoaderManager.LoaderCallbacks;
|
||||
|
||||
import android.content.CursorLoader;
|
||||
import android.content.Loader;
|
||||
import android.database.Cursor;
|
||||
import android.net.Uri;
|
||||
import android.os.AsyncTask;
|
||||
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.provider.ContactsContract;
|
||||
import android.text.TextUtils;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.View;
|
||||
import android.view.View.OnClickListener;
|
||||
import android.view.inputmethod.EditorInfo;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.AutoCompleteTextView;
|
||||
import android.widget.Button;
|
||||
import android.widget.EditText;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.google.android.gms.tasks.OnCompleteListener;
|
||||
import com.google.android.gms.tasks.Task;
|
||||
import com.google.firebase.auth.AuthResult;
|
||||
import com.google.firebase.auth.FirebaseAuth;
|
||||
import com.google.firebase.auth.FirebaseUser;
|
||||
import com.google.firebase.auth.UserProfileChangeRequest;
|
||||
import com.google.firebase.database.DataSnapshot;
|
||||
import com.google.firebase.database.DatabaseError;
|
||||
import com.google.firebase.database.DatabaseReference;
|
||||
import com.google.firebase.database.FirebaseDatabase;
|
||||
import com.google.firebase.database.ValueEventListener;
|
||||
import com.sminnovations.R;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.sminnovations.bookmypcr.pojo.AppDataClass;
|
||||
import com.sminnovations.bookmypcr.pojo.ChildEmail;
|
||||
import com.sminnovations.bookmypcr.pojo.User;
|
||||
|
||||
import static android.Manifest.permission.READ_CONTACTS;
|
||||
|
||||
/**
|
||||
* A login screen that offers login via email/password.
|
||||
*/
|
||||
public class LoginActivity extends AppCompatActivity implements LoaderCallbacks<Cursor> {
|
||||
|
||||
/**
|
||||
* Id to identity READ_CONTACTS permission request.
|
||||
*/
|
||||
private static final int REQUEST_READ_CONTACTS = 0;
|
||||
|
||||
/**
|
||||
* A dummy authentication store containing known user names and passwords.
|
||||
* TODO: remove after connecting to a real authentication system.
|
||||
*/
|
||||
private static final String[] DUMMY_CREDENTIALS = new String[]{
|
||||
"foo@example.com:hello", "bar@example.com:world"
|
||||
};
|
||||
/**
|
||||
* Keep track of the login task to ensure we can cancel it if requested.
|
||||
*/
|
||||
private UserLoginTask mAuthTask = null;
|
||||
|
||||
// UI references.
|
||||
private AutoCompleteTextView mEmailView;
|
||||
private EditText mPasswordView;
|
||||
private View mProgressView;
|
||||
private View mLoginFormView;
|
||||
private FirebaseAuth mAuth;
|
||||
private AppDataClass appDataClass;
|
||||
private Handler handler = new Handler();
|
||||
private DatabaseReference mDatabase;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_login);
|
||||
// Set up the login form.
|
||||
mEmailView = (AutoCompleteTextView) findViewById(R.id.email);
|
||||
populateAutoComplete();
|
||||
|
||||
mPasswordView = (EditText) findViewById(R.id.password);
|
||||
mPasswordView.setOnEditorActionListener(new TextView.OnEditorActionListener() {
|
||||
@Override
|
||||
public boolean onEditorAction(TextView textView, int id, KeyEvent keyEvent) {
|
||||
if (id == EditorInfo.IME_ACTION_DONE || id == EditorInfo.IME_NULL) {
|
||||
attemptLogin();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
Button mEmailSignInButton = (Button) findViewById(R.id.email_sign_in_button);
|
||||
mEmailSignInButton.setOnClickListener(new OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
attemptLogin();
|
||||
}
|
||||
});
|
||||
appDataClass = (AppDataClass) getApplicationContext();
|
||||
mAuth=appDataClass.getmAuth();
|
||||
mLoginFormView = findViewById(R.id.login_form);
|
||||
mProgressView = findViewById(R.id.login_progress);
|
||||
}
|
||||
|
||||
private void populateAutoComplete() {
|
||||
if (!mayRequestContacts()) {
|
||||
return;
|
||||
}
|
||||
|
||||
getLoaderManager().initLoader(0, null, this);
|
||||
}
|
||||
|
||||
private boolean mayRequestContacts() {
|
||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
|
||||
return true;
|
||||
}
|
||||
if (checkSelfPermission(READ_CONTACTS) == PackageManager.PERMISSION_GRANTED) {
|
||||
return true;
|
||||
}
|
||||
if (shouldShowRequestPermissionRationale(READ_CONTACTS)) {
|
||||
Snackbar.make(mEmailView, R.string.permission_rationale, Snackbar.LENGTH_INDEFINITE)
|
||||
.setAction(android.R.string.ok, new View.OnClickListener() {
|
||||
@Override
|
||||
@TargetApi(Build.VERSION_CODES.M)
|
||||
public void onClick(View v) {
|
||||
requestPermissions(new String[]{READ_CONTACTS}, REQUEST_READ_CONTACTS);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
requestPermissions(new String[]{READ_CONTACTS}, REQUEST_READ_CONTACTS);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Callback received when a permissions request has been completed.
|
||||
*/
|
||||
@Override
|
||||
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
|
||||
@NonNull int[] grantResults) {
|
||||
if (requestCode == REQUEST_READ_CONTACTS) {
|
||||
if (grantResults.length == 1 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
|
||||
populateAutoComplete();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Attempts to sign in or register the account specified by the login form.
|
||||
* If there are form errors (invalid email, missing fields, etc.), the
|
||||
* errors are presented and no actual login attempt is made.
|
||||
*/
|
||||
private void attemptLogin() {
|
||||
if (mAuthTask != null) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Reset errors.
|
||||
mEmailView.setError(null);
|
||||
mPasswordView.setError(null);
|
||||
|
||||
// Store values at the time of the login attempt.
|
||||
String email = mEmailView.getText().toString();
|
||||
String password = mPasswordView.getText().toString();
|
||||
|
||||
boolean cancel = false;
|
||||
View focusView = null;
|
||||
|
||||
// Check for a valid password, if the user entered one.
|
||||
if (!TextUtils.isEmpty(password) && !isPasswordValid(password)) {
|
||||
mPasswordView.setError(getString(R.string.error_invalid_password));
|
||||
focusView = mPasswordView;
|
||||
cancel = true;
|
||||
}
|
||||
|
||||
// Check for a valid email address.
|
||||
if (TextUtils.isEmpty(email)) {
|
||||
mEmailView.setError(getString(R.string.error_field_required));
|
||||
focusView = mEmailView;
|
||||
cancel = true;
|
||||
} else if (!isEmailValid(email)) {
|
||||
mEmailView.setError(getString(R.string.error_invalid_email));
|
||||
focusView = mEmailView;
|
||||
cancel = true;
|
||||
}
|
||||
|
||||
if (cancel) {
|
||||
// There was an error; don't attempt login and focus the first
|
||||
// form field with an error.
|
||||
focusView.requestFocus();
|
||||
} else {
|
||||
// Show a progress spinner, and kick off a background task to
|
||||
// perform the user login attempt.
|
||||
showProgress(true);
|
||||
|
||||
mAuth.signInWithEmailAndPassword(email, password)
|
||||
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
|
||||
@Override
|
||||
public void onComplete(@NonNull Task<AuthResult> task) {
|
||||
if (task.isSuccessful()) {
|
||||
// Sign in success, update UI with the signed-in user's information
|
||||
// Log.d(TAG, "signInWithEmail:success");
|
||||
final FirebaseUser user = mAuth.getCurrentUser();
|
||||
callCalendar(user);
|
||||
// updateUI(user);
|
||||
} else {
|
||||
// If sign in fails, display a message to the user.
|
||||
Toast.makeText(LoginActivity.this, "Authentication failed.",
|
||||
Toast.LENGTH_SHORT).show();
|
||||
showMessage("Failed");
|
||||
showProgress(false);
|
||||
// updateUI(null);
|
||||
}
|
||||
|
||||
// ...
|
||||
}
|
||||
});
|
||||
|
||||
// mAuthTask = new UserLoginTask(email, password);
|
||||
// mAuthTask.execute((Void) null);
|
||||
}
|
||||
}
|
||||
|
||||
// private void sendEmailVerification() {
|
||||
// // Disable button
|
||||
// findViewById(R.id.verify_email_button).setEnabled(false);
|
||||
//
|
||||
// // Send verification email
|
||||
// // [START send_email_verification]
|
||||
// final FirebaseUser user = mAuth.getCurrentUser();
|
||||
// user.sendEmailVerification()
|
||||
// .addOnCompleteListener(this, new OnCompleteListener<Void>() {
|
||||
// @Override
|
||||
// public void onComplete(@NonNull Task<Void> task) {
|
||||
// // [START_EXCLUDE]
|
||||
// // Re-enable button
|
||||
// findViewById(R.id.verify_email_button).setEnabled(true);
|
||||
//
|
||||
// if (task.isSuccessful()) {
|
||||
// Toast.makeText(EmailPasswordActivity.this,
|
||||
// "Verification email sent to " + user.getEmail(),
|
||||
// Toast.LENGTH_SHORT).show();
|
||||
// } else {
|
||||
// Log.e(TAG, "sendEmailVerification", task.getException());
|
||||
// Toast.makeText(EmailPasswordActivity.this,
|
||||
// "Failed to send verification email.",
|
||||
// Toast.LENGTH_SHORT).show();
|
||||
// }
|
||||
// // [END_EXCLUDE]
|
||||
// }
|
||||
// });
|
||||
// // [END send_email_verification]
|
||||
// }
|
||||
|
||||
private void callCalendar(final FirebaseUser user) {
|
||||
if(user.isEmailVerified()) {
|
||||
|
||||
appDataClass.setUser(user);
|
||||
mDatabase = FirebaseDatabase.getInstance().getReference();
|
||||
appDataClass.setmDatabase(mDatabase);
|
||||
mDatabase.child("emails").orderByChild("emailid").equalTo(user.getEmail()).addListenerForSingleValueEvent(new ValueEventListener() {
|
||||
@Override
|
||||
public void onDataChange(DataSnapshot dataSnapshot) {
|
||||
for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) {
|
||||
appDataClass.setChildEmail(childSnapshot.getValue(ChildEmail.class));
|
||||
}
|
||||
navigation(user);
|
||||
}
|
||||
@Override
|
||||
public void onCancelled(DatabaseError databaseError) {
|
||||
System.out.println("The read failed: " + databaseError.getCode());
|
||||
}
|
||||
});
|
||||
}
|
||||
else{
|
||||
showProgress(false);
|
||||
user.sendEmailVerification()
|
||||
.addOnCompleteListener(this, new OnCompleteListener() {
|
||||
@Override
|
||||
public void onComplete(@NonNull Task task) {
|
||||
// Re-enable button
|
||||
|
||||
if (task.isSuccessful()) {
|
||||
Toast.makeText(LoginActivity.this,
|
||||
"Email not verified. Verification email sent to " + user.getEmail(),
|
||||
Toast.LENGTH_SHORT).show();
|
||||
} else {
|
||||
Toast.makeText(LoginActivity.this,
|
||||
"Email not verified. Failed to send verification email.",
|
||||
Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private boolean isEmailValid(String email) {
|
||||
//TODO: Replace this with your own logic
|
||||
return email.contains("@");
|
||||
}
|
||||
|
||||
private boolean isPasswordValid(String password) {
|
||||
//TODO: Replace this with your own logic
|
||||
return password.length() > 4;
|
||||
}
|
||||
|
||||
private void navigation(FirebaseUser user){
|
||||
if(appDataClass.getChildEmail()==null){
|
||||
Toast.makeText(LoginActivity.this,
|
||||
"First time login. We are setting up your account. Please wait.",
|
||||
Toast.LENGTH_SHORT).show();
|
||||
User userObj= new User(user.getDisplayName(),true,false,user.getUid());
|
||||
mDatabase.child("users").child(user.getUid()).setValue(userObj);
|
||||
ChildEmail emailObj=new ChildEmail("",user.getUid(),user.getEmail(),mDatabase.child("emails").push().getKey());
|
||||
mDatabase.child("emails").child(emailObj.getEmailUid()).setValue(emailObj);
|
||||
appDataClass.setChildEmail(emailObj);
|
||||
}
|
||||
else if(appDataClass.getChildEmail().userUid==null ||appDataClass.getChildEmail().userUid.isEmpty()) {
|
||||
User userObj= new User(user.getDisplayName(),true,false,user.getUid());
|
||||
mDatabase.child("users").child(user.getUid()).setValue(userObj);
|
||||
appDataClass.getChildEmail().setUserUid(user.getUid());
|
||||
mDatabase.child("emails").child(appDataClass.getChildEmail().getEmailUid()).setValue(appDataClass.getChildEmail());
|
||||
}
|
||||
if(appDataClass.getChildEmail().labUid==null ||appDataClass.getChildEmail().labUid.isEmpty()){
|
||||
Intent intent = new Intent(this, NoAccess.class);
|
||||
startActivity(intent);
|
||||
}else {
|
||||
Intent intent = new Intent(this, CalendarActivity.class);
|
||||
startActivity(intent);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBackPressed() {
|
||||
|
||||
}
|
||||
/**
|
||||
* Shows the progress UI and hides the login form.
|
||||
*/
|
||||
@TargetApi(Build.VERSION_CODES.HONEYCOMB_MR2)
|
||||
private void showProgress(final boolean show) {
|
||||
// On Honeycomb MR2 we have the ViewPropertyAnimator APIs, which allow
|
||||
// for very easy animations. If available, use these APIs to fade-in
|
||||
// the progress spinner.
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) {
|
||||
int shortAnimTime = getResources().getInteger(android.R.integer.config_shortAnimTime);
|
||||
|
||||
mLoginFormView.setVisibility(show ? View.GONE : View.VISIBLE);
|
||||
mLoginFormView.animate().setDuration(shortAnimTime).alpha(
|
||||
show ? 0 : 1).setListener(new AnimatorListenerAdapter() {
|
||||
@Override
|
||||
public void onAnimationEnd(Animator animation) {
|
||||
mLoginFormView.setVisibility(show ? View.GONE : View.VISIBLE);
|
||||
}
|
||||
});
|
||||
|
||||
mProgressView.setVisibility(show ? View.VISIBLE : View.GONE);
|
||||
mProgressView.animate().setDuration(shortAnimTime).alpha(
|
||||
show ? 1 : 0).setListener(new AnimatorListenerAdapter() {
|
||||
@Override
|
||||
public void onAnimationEnd(Animator animation) {
|
||||
mProgressView.setVisibility(show ? View.VISIBLE : View.GONE);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
// The ViewPropertyAnimator APIs are not available, so simply show
|
||||
// and hide the relevant UI components.
|
||||
mProgressView.setVisibility(show ? View.VISIBLE : View.GONE);
|
||||
mLoginFormView.setVisibility(show ? View.GONE : View.VISIBLE);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Loader<Cursor> onCreateLoader(int i, Bundle bundle) {
|
||||
return new CursorLoader(this,
|
||||
// Retrieve data rows for the device user's 'profile' contact.
|
||||
Uri.withAppendedPath(ContactsContract.Profile.CONTENT_URI,
|
||||
ContactsContract.Contacts.Data.CONTENT_DIRECTORY), ProfileQuery.PROJECTION,
|
||||
|
||||
// Select only email addresses.
|
||||
ContactsContract.Contacts.Data.MIMETYPE +
|
||||
" = ?", new String[]{ContactsContract.CommonDataKinds.Email
|
||||
.CONTENT_ITEM_TYPE},
|
||||
|
||||
// Show primary email addresses first. Note that there won't be
|
||||
// a primary email address if the user hasn't specified one.
|
||||
ContactsContract.Contacts.Data.IS_PRIMARY + " DESC");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoadFinished(Loader<Cursor> cursorLoader, Cursor cursor) {
|
||||
List<String> emails = new ArrayList<>();
|
||||
cursor.moveToFirst();
|
||||
while (!cursor.isAfterLast()) {
|
||||
emails.add(cursor.getString(ProfileQuery.ADDRESS));
|
||||
cursor.moveToNext();
|
||||
}
|
||||
|
||||
addEmailsToAutoComplete(emails);
|
||||
}
|
||||
|
||||
public void newUser(View v){
|
||||
Intent intent = new Intent(this, NewUser.class);
|
||||
startActivity(intent);
|
||||
}
|
||||
|
||||
public void resetPassword(View v){
|
||||
Intent intent = new Intent(this, ResetPassword.class);
|
||||
startActivity(intent);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoaderReset(Loader<Cursor> cursorLoader) {
|
||||
|
||||
}
|
||||
|
||||
private void addEmailsToAutoComplete(List<String> emailAddressCollection) {
|
||||
//Create adapter to tell the AutoCompleteTextView what to show in its dropdown list.
|
||||
ArrayAdapter<String> adapter =
|
||||
new ArrayAdapter<>(LoginActivity.this,
|
||||
android.R.layout.simple_dropdown_item_1line, emailAddressCollection);
|
||||
|
||||
mEmailView.setAdapter(adapter);
|
||||
}
|
||||
|
||||
|
||||
private interface ProfileQuery {
|
||||
String[] PROJECTION = {
|
||||
ContactsContract.CommonDataKinds.Email.ADDRESS,
|
||||
ContactsContract.CommonDataKinds.Email.IS_PRIMARY,
|
||||
};
|
||||
|
||||
int ADDRESS = 0;
|
||||
int IS_PRIMARY = 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Represents an asynchronous login/registration task used to authenticate
|
||||
* the user.
|
||||
*/
|
||||
public class UserLoginTask extends AsyncTask<Void, Void, Boolean> {
|
||||
|
||||
private final String mEmail;
|
||||
private final String mPassword;
|
||||
|
||||
UserLoginTask(String email, String password) {
|
||||
mEmail = email;
|
||||
mPassword = password;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Boolean doInBackground(Void... params) {
|
||||
// TODO: attempt authentication against a network service.
|
||||
|
||||
try {
|
||||
// mAuth.signInWithEmailAndPassword(mEmail, mPassword)
|
||||
// .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
|
||||
// @Override
|
||||
// public void onComplete(@NonNull Task<AuthResult> task) {
|
||||
// if (task.isSuccessful()) {
|
||||
// // Sign in success, update UI with the signed-in user's information
|
||||
//// Log.d(TAG, "signInWithEmail:success");
|
||||
// FirebaseUser user = mAuth.getCurrentUser();
|
||||
//// updateUI(user);
|
||||
// } else {
|
||||
// // If sign in fails, display a message to the user.
|
||||
// Log.w(TAG, "signInWithEmail:failure", task.getException());
|
||||
// Toast.makeText(LoginActivity.this, "Authentication failed.",
|
||||
// Toast.LENGTH_SHORT).show();
|
||||
//// updateUI(null);
|
||||
// }
|
||||
//
|
||||
// // ...
|
||||
// }
|
||||
// });
|
||||
Thread.sleep(2000);
|
||||
} catch (InterruptedException e) {
|
||||
return false;
|
||||
}
|
||||
|
||||
for (String credential : DUMMY_CREDENTIALS) {
|
||||
String[] pieces = credential.split(":");
|
||||
if (pieces[0].equals(mEmail)) {
|
||||
// Account exists, return true if the password matches.
|
||||
return pieces[1].equals(mPassword);
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: register the new account here.
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPostExecute(final Boolean success) {
|
||||
mAuthTask = null;
|
||||
showProgress(false);
|
||||
|
||||
if (success) {
|
||||
finish();
|
||||
} else {
|
||||
mPasswordView.setError(getString(R.string.error_incorrect_password));
|
||||
mPasswordView.requestFocus();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onCancelled() {
|
||||
mAuthTask = null;
|
||||
showProgress(false);
|
||||
}
|
||||
}
|
||||
|
||||
public void showMessage(final String message) {
|
||||
|
||||
handler.post(new Runnable() {
|
||||
public void run() {
|
||||
Toast.makeText(getApplicationContext(), message, Toast.LENGTH_LONG).show();
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,350 @@
|
||||
package com.sminnovations.bookmypcr.activities;
|
||||
|
||||
import android.app.DatePickerDialog;
|
||||
import android.content.Context;
|
||||
import android.graphics.Point;
|
||||
import android.os.Bundle;
|
||||
import android.support.design.widget.CoordinatorLayout;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
import android.view.Display;
|
||||
import android.view.Gravity;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.Button;
|
||||
import android.widget.DatePicker;
|
||||
import android.widget.EditText;
|
||||
import android.widget.PopupWindow;
|
||||
import android.widget.RelativeLayout;
|
||||
import android.widget.Spinner;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.google.firebase.database.DataSnapshot;
|
||||
import com.google.firebase.database.DatabaseError;
|
||||
import com.google.firebase.database.ValueEventListener;
|
||||
import com.sminnovations.R;
|
||||
import com.sminnovations.bookmypcr.pojo.AppDataClass;
|
||||
import com.sminnovations.bookmypcr.pojo.Booking;
|
||||
import com.sminnovations.bookmypcr.pojo.Equipment;
|
||||
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
||||
public class NewEvent extends AppCompatActivity implements View.OnClickListener,AdapterView.OnItemSelectedListener {
|
||||
|
||||
private String selectedDate;
|
||||
private String clickId="";
|
||||
TextView fromdateView,enddateView;
|
||||
EditText title, reaction,comments;
|
||||
Calendar fromDate =Calendar.getInstance(), endDate =Calendar.getInstance();
|
||||
private DatePickerDialog fromDatePickerDialog,endDatePickerDialog;
|
||||
private SimpleDateFormat dateFormatter, timestampFormat=new SimpleDateFormat("dd-MM-yyyy HH:mm", Locale.US)
|
||||
,timeFormat=new SimpleDateFormat("hh:mm a", Locale.US);
|
||||
private Equipment equipment;
|
||||
AppDataClass appDataClass;
|
||||
List<String> startSpinnerArray = new ArrayList<String>();
|
||||
List<String> endSpinnerArray = new ArrayList<String>();
|
||||
ArrayAdapter<String> startAdapter,endAdapter ;
|
||||
Spinner sItems,eItems;
|
||||
RelativeLayout mainLayout;
|
||||
PopupWindow popupWindow;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_new_event);
|
||||
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
|
||||
this.setTitle("New Event");
|
||||
setSupportActionBar(toolbar);
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_close_white_24dp);
|
||||
Bundle extras = getIntent().getExtras();
|
||||
mainLayout = (RelativeLayout) findViewById(R.id.mainLayout);
|
||||
if (extras != null) {
|
||||
selectedDate = extras.getString("dateSelected");
|
||||
int id=extras.getInt("clickid");
|
||||
if(id==0){
|
||||
Calendar temp=Calendar.getInstance();
|
||||
temp.set(Calendar.MINUTE,0);
|
||||
clickId=timeFormat.format(temp.getTime());
|
||||
}else {
|
||||
clickId = getResources().getResourceName(extras.getInt("clickid"));
|
||||
clickId = clickId.substring(clickId.indexOf('_') + 1, clickId.lastIndexOf('_')).toUpperCase();
|
||||
if (clickId.length() == 3) {
|
||||
clickId = "0" + clickId;
|
||||
clickId = clickId.substring(0, clickId.length() - 2) + ":00 " + clickId.substring(clickId.length() - 2);
|
||||
} else if (clickId.length() == 4) {
|
||||
clickId = clickId.substring(0, clickId.length() - 2) + ":00 " + clickId.substring(clickId.length() - 2);
|
||||
} else if (clickId.length() == 6) {
|
||||
clickId = "0" + clickId;
|
||||
clickId = clickId.replace(".", ":");
|
||||
clickId = clickId.substring(0, clickId.length() - 2) + " " + clickId.substring(clickId.length() - 2);
|
||||
} else if (clickId.length() == 7) {
|
||||
clickId = clickId.replace(".", ":");
|
||||
clickId = clickId.substring(0, clickId.length() - 2) + " " + clickId.substring(clickId.length() - 2);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
equipment = (Equipment)getIntent().getSerializableExtra("equipment");
|
||||
}
|
||||
|
||||
fromdateView =(TextView)findViewById(R.id.datebar);
|
||||
title=(EditText)findViewById(R.id.title);
|
||||
reaction=(EditText)findViewById(R.id.reaction);
|
||||
comments=(EditText)findViewById(R.id.comments);
|
||||
enddateView=(TextView)findViewById(R.id.enddatebar);
|
||||
dateFormatter = new SimpleDateFormat("dd-MM-yyyy", Locale.US);
|
||||
appDataClass = (AppDataClass) getApplicationContext();
|
||||
startAdapter = new ArrayAdapter<String>(
|
||||
this, android.R.layout.simple_spinner_item, startSpinnerArray);
|
||||
endAdapter = new ArrayAdapter<String>(
|
||||
this, android.R.layout.simple_spinner_item, endSpinnerArray);
|
||||
startAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
|
||||
endAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
|
||||
setDateTimeField();
|
||||
|
||||
}
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
switch (item.getItemId()) {
|
||||
case android.R.id.home:
|
||||
finish();
|
||||
onBackPressed();
|
||||
return true;
|
||||
default:
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
}
|
||||
|
||||
private void setDateTimeField() {
|
||||
fromdateView.setOnClickListener(this);
|
||||
enddateView.setOnClickListener(this);
|
||||
fromdateView.setText(selectedDate);
|
||||
enddateView.setText(selectedDate);
|
||||
Calendar endTime=Calendar.getInstance();
|
||||
Calendar startTime=Calendar.getInstance();
|
||||
try{
|
||||
fromDate.setTime(dateFormatter.parse(selectedDate));
|
||||
endDate.setTime(dateFormatter.parse(selectedDate));
|
||||
endTime.setTime(timeFormat.parse(clickId));
|
||||
endTime.set(fromDate.get(Calendar.YEAR), fromDate.get(Calendar.MONTH), fromDate.get(Calendar.DAY_OF_MONTH));
|
||||
startTime.setTime(timeFormat.parse("12:00 AM"));
|
||||
}catch (ParseException e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
fromDatePickerDialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
|
||||
|
||||
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
|
||||
fromDate.set(year, monthOfYear, dayOfMonth);
|
||||
fromdateView.setText(dateFormatter.format(fromDate.getTime()));
|
||||
}
|
||||
|
||||
}, fromDate.get(Calendar.YEAR), fromDate.get(Calendar.MONTH), fromDate.get(Calendar.DAY_OF_MONTH));
|
||||
|
||||
endDatePickerDialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
|
||||
|
||||
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
|
||||
endDate.set(year, monthOfYear, dayOfMonth);
|
||||
enddateView.setText(dateFormatter.format(endDate.getTime()));
|
||||
}
|
||||
|
||||
}, endDate.get(Calendar.YEAR), endDate.get(Calendar.MONTH), endDate.get(Calendar.DAY_OF_MONTH));
|
||||
|
||||
|
||||
// startSpinnerArray.add(clickId);
|
||||
// startSpinnerArray.add("item2");
|
||||
startSpinnerArray.add(timeFormat.format(startTime.getTime()));
|
||||
int startIndex=0;
|
||||
for(int i=0;i<48;i++){
|
||||
startTime.add(Calendar.MINUTE,30);
|
||||
startSpinnerArray.add(timeFormat.format(startTime.getTime()));
|
||||
if(timeFormat.format(startTime.getTime()).equalsIgnoreCase(clickId)){
|
||||
startIndex=i;
|
||||
}
|
||||
}
|
||||
|
||||
for(int i=0;i<16;i++){
|
||||
endTime.add(Calendar.MINUTE,30);
|
||||
if(endTime.get(Calendar.DAY_OF_MONTH)!=fromDate.get(Calendar.DAY_OF_MONTH)){
|
||||
break;
|
||||
}
|
||||
endSpinnerArray.add(timeFormat.format(endTime.getTime()));
|
||||
}
|
||||
sItems = (Spinner) findViewById(R.id.startTime);
|
||||
sItems.setAdapter(startAdapter);
|
||||
sItems.setSelection(startIndex+1);
|
||||
sItems.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
|
||||
@Override
|
||||
public void onItemSelected(AdapterView<?> arg0, View arg1,
|
||||
int arg2, long arg3) {
|
||||
|
||||
Calendar endTime=Calendar.getInstance();
|
||||
try {
|
||||
endTime.setTime(timeFormat.parse(arg0.getSelectedItem().toString()));
|
||||
endTime.set(fromDate.get(Calendar.YEAR), fromDate.get(Calendar.MONTH), fromDate.get(Calendar.DAY_OF_MONTH));
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
endSpinnerArray.clear();
|
||||
for(int i=0;i<16;i++){
|
||||
endTime.add(Calendar.MINUTE,30);
|
||||
if(endTime.get(Calendar.DAY_OF_MONTH)!=fromDate.get(Calendar.DAY_OF_MONTH)){
|
||||
break;
|
||||
}
|
||||
endSpinnerArray.add(timeFormat.format(endTime.getTime()));
|
||||
endAdapter.notifyDataSetChanged();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNothingSelected(AdapterView<?> arg0) {
|
||||
}
|
||||
});
|
||||
eItems = (Spinner) findViewById(R.id.endTime);
|
||||
eItems.setAdapter(endAdapter);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
|
||||
// On selecting a spinner item
|
||||
String item = parent.getItemAtPosition(position).toString();
|
||||
|
||||
// Showing selected spinner item
|
||||
|
||||
}
|
||||
|
||||
public void saveEvent(View v){
|
||||
if (title.getText().toString().trim().isEmpty()||eItems.getSelectedItem()==null) {
|
||||
Toast.makeText(NewEvent.this,
|
||||
"Please enter all mandatory fields",
|
||||
Toast.LENGTH_SHORT).show();
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
validate(appDataClass,sItems.getSelectedItem().toString(),eItems.getSelectedItem().toString(),fromdateView.getText().toString(),equipment);
|
||||
}
|
||||
|
||||
public void saveData() {
|
||||
Calendar dateTemp=Calendar.getInstance(), dateTemp2=Calendar.getInstance(), dateTemp3=(Calendar)dateTemp.clone();
|
||||
try {
|
||||
dateTemp2.setTime(dateFormatter.parse(fromdateView.getText().toString()));
|
||||
dateTemp3.setTime(timeFormat.parse(sItems.getSelectedItem().toString()));
|
||||
dateTemp3.set(dateTemp2.get(Calendar.YEAR), dateTemp2.get(Calendar.MONTH), dateTemp2.get(Calendar.DAY_OF_MONTH));
|
||||
if (dateTemp3.compareTo(dateTemp)<0) {
|
||||
LayoutInflater layoutInflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
|
||||
View customView = layoutInflater.inflate(R.layout.popup_confirmation, null);
|
||||
Button closePopupBtn = (Button) customView.findViewById(R.id.closePopupBtn);
|
||||
Button confirmPopupBtn = (Button) customView.findViewById(R.id.confirmPopupBtn);
|
||||
//instantiate popup window
|
||||
popupWindow = new PopupWindow(customView, CoordinatorLayout.LayoutParams.MATCH_PARENT, CoordinatorLayout.LayoutParams.WRAP_CONTENT);
|
||||
popupWindow.setFocusable(true);
|
||||
Display display = getWindowManager().getDefaultDisplay();
|
||||
Point size = new Point();
|
||||
display.getSize(size);
|
||||
int width = size.x;
|
||||
width=(int)(width-(double)width*0.1);
|
||||
popupWindow.setWidth(width);
|
||||
//display the popup window
|
||||
popupWindow.showAtLocation(mainLayout, Gravity.CENTER, 0, 0);
|
||||
|
||||
//close the popup window on button click
|
||||
closePopupBtn.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
popupWindow.dismiss();
|
||||
}
|
||||
});
|
||||
confirmPopupBtn.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
saveDataFinal();
|
||||
popupWindow.dismiss();
|
||||
}
|
||||
});
|
||||
}
|
||||
else{
|
||||
saveDataFinal();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
|
||||
}
|
||||
}
|
||||
public void saveDataFinal(){
|
||||
|
||||
Booking slot=new Booking(appDataClass.getUserObj().getUseruid(),appDataClass.getUserObj().getName(),title.getText().toString()
|
||||
,reaction.getText().toString(),comments.getText().toString(),fromdateView.getText().toString(),sItems.getSelectedItem().toString(),eItems.getSelectedItem().toString(),
|
||||
timestampFormat.format(Calendar.getInstance().getTime()),appDataClass.getmDatabase().child(equipment.getEquipid()).child(fromdateView.getText().toString()).push().getKey());
|
||||
slot.setDuration((eItems.getSelectedItemPosition()+1)*0.5);
|
||||
appDataClass.getmDatabase().child(equipment.getEquipid()).child(fromdateView.getText().toString()).child(slot.getKey()).setValue(slot);
|
||||
finish();
|
||||
onBackPressed();
|
||||
}
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
if(view == fromdateView) {
|
||||
fromDatePickerDialog.show();
|
||||
}else if(view==enddateView){
|
||||
endDatePickerDialog.show();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNothingSelected(AdapterView<?> arg0) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
public boolean validate(AppDataClass appDataClass, String fromTime, String endtime, String date, Equipment equipment){
|
||||
final Calendar startTime=Calendar.getInstance(),toTime=(Calendar)startTime.clone();
|
||||
try {
|
||||
startTime.setTime(timeFormat.parse(fromTime));
|
||||
toTime.setTime(timeFormat.parse(endtime));
|
||||
}catch (Exception e){
|
||||
|
||||
}
|
||||
|
||||
appDataClass.getmDatabase().child(equipment.getEquipid()).child(date).addListenerForSingleValueEvent(new ValueEventListener() {
|
||||
@Override
|
||||
public void onDataChange(DataSnapshot dataSnapshot) {
|
||||
Calendar tempStartTime=(Calendar)startTime.clone(),tempEndTime=(Calendar)startTime.clone();
|
||||
for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) {
|
||||
Booking slot=childSnapshot.getValue(Booking.class);
|
||||
try {
|
||||
tempStartTime.setTime(timeFormat.parse(slot.getStartTime()));
|
||||
tempEndTime.setTime(timeFormat.parse(slot.getEndTime()));
|
||||
}catch (Exception e){
|
||||
|
||||
}
|
||||
if(tempStartTime.compareTo(startTime)==0 ||tempEndTime.compareTo(toTime)==0 || (tempStartTime.compareTo(startTime)>0 && tempEndTime.compareTo(toTime)<0) || (tempStartTime.compareTo(startTime)<0 && tempEndTime.compareTo(toTime)>0)
|
||||
|| (tempStartTime.compareTo(startTime)<0 && tempEndTime.compareTo(startTime)>0)|| (tempStartTime.compareTo(toTime)<0 && tempEndTime.compareTo(toTime)>0)) {
|
||||
error();
|
||||
return;
|
||||
}
|
||||
}
|
||||
saveData();
|
||||
}
|
||||
@Override
|
||||
public void onCancelled(DatabaseError databaseError) {
|
||||
System.out.println("The read failed: " + databaseError.getCode());
|
||||
}
|
||||
});
|
||||
return true;
|
||||
}
|
||||
|
||||
public void error(){
|
||||
Toast.makeText(NewEvent.this,
|
||||
"System is busy in the selected time range",
|
||||
Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,149 @@
|
||||
package com.sminnovations.bookmypcr.activities;
|
||||
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
import android.widget.EditText;
|
||||
import android.widget.ProgressBar;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.firebase.ui.auth.IdpResponse;
|
||||
import com.google.android.gms.tasks.OnCompleteListener;
|
||||
import com.google.android.gms.tasks.Task;
|
||||
import com.google.firebase.auth.AuthResult;
|
||||
import com.google.firebase.auth.EmailAuthProvider;
|
||||
import com.google.firebase.auth.FirebaseAuth;
|
||||
import com.google.firebase.auth.FirebaseUser;
|
||||
import com.google.firebase.auth.UserProfileChangeRequest;
|
||||
import com.sminnovations.R;
|
||||
import com.sminnovations.bookmypcr.pojo.AppDataClass;
|
||||
|
||||
public class NewUser extends AppCompatActivity {
|
||||
|
||||
private AppDataClass appDataClass;
|
||||
private FirebaseAuth auth;
|
||||
private Button btnSignUp;
|
||||
private ProgressBar progressBar;
|
||||
|
||||
private EditText inputEmail,inputPassword,confirmPassword,name;
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_new_user);
|
||||
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
|
||||
this.setTitle("Register");
|
||||
setSupportActionBar(toolbar);
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_close_white_24dp);
|
||||
appDataClass = (AppDataClass) getApplicationContext();
|
||||
auth = appDataClass.getmAuth();
|
||||
btnSignUp = (Button) findViewById(R.id.sign_up_button);
|
||||
inputEmail = (EditText) findViewById(R.id.email);
|
||||
inputPassword = (EditText) findViewById(R.id.password);
|
||||
confirmPassword = (EditText) findViewById(R.id.confirmpassword);
|
||||
name= (EditText) findViewById(R.id.name);
|
||||
progressBar = (ProgressBar) findViewById(R.id.progressBar);
|
||||
// btnResetPassword = (Button) findViewById(R.id.btn_reset_password);
|
||||
|
||||
// btnResetPassword.setOnClickListener(new View.OnClickListener() {
|
||||
// @Override
|
||||
// public void onClick(View v) {
|
||||
// startActivity(new Intent(SignupActivity.this, ResetPasswordActivity.class));
|
||||
// }
|
||||
// });
|
||||
|
||||
|
||||
btnSignUp.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
|
||||
String email = inputEmail.getText().toString().trim();
|
||||
String password = inputPassword.getText().toString().trim();
|
||||
String name2 = name.getText().toString().trim();
|
||||
String confirmpassword = confirmPassword.getText().toString().trim();
|
||||
|
||||
if (TextUtils.isEmpty(name2)) {
|
||||
Toast.makeText(getApplicationContext(), "Enter name!", Toast.LENGTH_SHORT).show();
|
||||
return;
|
||||
}
|
||||
|
||||
if (TextUtils.isEmpty(email)) {
|
||||
Toast.makeText(getApplicationContext(), "Enter email address!", Toast.LENGTH_SHORT).show();
|
||||
return;
|
||||
}
|
||||
|
||||
if (TextUtils.isEmpty(password)) {
|
||||
Toast.makeText(getApplicationContext(), "Enter password!", Toast.LENGTH_SHORT).show();
|
||||
return;
|
||||
}
|
||||
|
||||
if (password.length() < 6) {
|
||||
Toast.makeText(getApplicationContext(), "Password too short, enter minimum 6 characters!", Toast.LENGTH_SHORT).show();
|
||||
return;
|
||||
}
|
||||
|
||||
if (!password.equals(confirmpassword) ) {
|
||||
Toast.makeText(getApplicationContext(), "Password and Confirm Password do not match", Toast.LENGTH_SHORT).show();
|
||||
return;
|
||||
}
|
||||
|
||||
progressBar.setVisibility(View.VISIBLE);
|
||||
|
||||
// mHandler.startSignIn(new IdpResponse.Builder(
|
||||
// new User.Builder(EmailAuthProvider.PROVIDER_ID, email)
|
||||
// .setName(name)
|
||||
// .build())
|
||||
// .build(),
|
||||
// password);
|
||||
|
||||
//create user
|
||||
auth.createUserWithEmailAndPassword(email, password)
|
||||
.addOnCompleteListener(NewUser.this, new OnCompleteListener<AuthResult>() {
|
||||
@Override
|
||||
public void onComplete(@NonNull Task<AuthResult> task) {
|
||||
progressBar.setVisibility(View.GONE);
|
||||
// If sign in fails, display a message to the user. If sign in succeeds
|
||||
// the auth state listener will be notified and logic to handle the
|
||||
// signed in user can be handled in the listener.
|
||||
if (!task.isSuccessful()) {
|
||||
Toast.makeText(NewUser.this, "Authentication failed." + task.getException(),
|
||||
Toast.LENGTH_SHORT).show();
|
||||
} else {
|
||||
// startActivity(new Intent(SignupActivity.this, MainActivity.class));
|
||||
updateUserName(FirebaseAuth.getInstance().getCurrentUser());
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void updateUserName(FirebaseUser user) {
|
||||
UserProfileChangeRequest profileUpdates = new UserProfileChangeRequest.Builder()
|
||||
.setDisplayName(name.getText().toString())
|
||||
.build();
|
||||
|
||||
user.updateProfile(profileUpdates)
|
||||
.addOnCompleteListener(new OnCompleteListener<Void>() {
|
||||
@Override
|
||||
public void onComplete(@NonNull Task<Void> task) {
|
||||
if (task.isSuccessful()) {
|
||||
Log.d("NewUser", "User profile updated.");
|
||||
}
|
||||
finish();
|
||||
}
|
||||
});
|
||||
}
|
||||
@Override
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
progressBar.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
package com.sminnovations.bookmypcr.activities;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
|
||||
import com.google.firebase.auth.FirebaseAuth;
|
||||
import com.sminnovations.R;
|
||||
import com.sminnovations.bookmypcr.pojo.AppDataClass;
|
||||
|
||||
public class NoAccess extends AppCompatActivity {
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_no_access);
|
||||
}
|
||||
@Override
|
||||
public void onBackPressed() {
|
||||
|
||||
}
|
||||
|
||||
public void signOut(View v){
|
||||
AppDataClass appDataClass=(AppDataClass)this.getApplicationContext();
|
||||
appDataClass.getmAuth().signOut();
|
||||
appDataClass=new AppDataClass();
|
||||
appDataClass.setmAuth(FirebaseAuth.getInstance());
|
||||
Intent intent = new Intent(this, LoginActivity.class);
|
||||
startActivity(intent);
|
||||
}
|
||||
public void createLab(View v){
|
||||
Intent intent = new Intent(this, CreateLab.class);
|
||||
startActivity(intent);
|
||||
}
|
||||
public void joinLab(View v){
|
||||
Intent intent = new Intent(this, JoinLab.class);
|
||||
startActivity(intent);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
package com.sminnovations.bookmypcr.activities;
|
||||
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
import android.text.TextUtils;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
import android.widget.EditText;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.google.android.gms.tasks.OnCompleteListener;
|
||||
import com.google.android.gms.tasks.Task;
|
||||
import com.google.firebase.auth.FirebaseAuth;
|
||||
import com.sminnovations.R;
|
||||
import com.sminnovations.bookmypcr.pojo.AppDataClass;
|
||||
|
||||
public class ResetPassword extends AppCompatActivity {
|
||||
|
||||
private AppDataClass appDataClass;
|
||||
private FirebaseAuth auth;
|
||||
private Button btnReset;
|
||||
private EditText inputEmail;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_reset_password);
|
||||
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
|
||||
this.setTitle("Reset Password");
|
||||
setSupportActionBar(toolbar);
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_close_white_24dp);
|
||||
appDataClass = (AppDataClass) getApplicationContext();
|
||||
auth = appDataClass.getmAuth();
|
||||
btnReset = (Button) findViewById(R.id.reset_button);
|
||||
inputEmail = (EditText) findViewById(R.id.email);
|
||||
btnReset.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
String email = inputEmail.getText().toString().trim();
|
||||
|
||||
if (TextUtils.isEmpty(email)) {
|
||||
Toast.makeText(getApplicationContext(), "Enter email address!", Toast.LENGTH_SHORT).show();
|
||||
return;
|
||||
}
|
||||
|
||||
auth.sendPasswordResetEmail(email)
|
||||
.addOnCompleteListener(new OnCompleteListener<Void>() {
|
||||
@Override
|
||||
public void onComplete(@NonNull Task<Void> task) {
|
||||
if (task.isSuccessful()) {
|
||||
Toast.makeText(ResetPassword.this, "Check email to reset your password!", Toast.LENGTH_SHORT).show();
|
||||
finish();
|
||||
} else {
|
||||
Toast.makeText(ResetPassword.this, "Fail to send reset password email!", Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,230 @@
|
||||
package com.sminnovations.bookmypcr.activities;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Point;
|
||||
import android.support.design.widget.CoordinatorLayout;
|
||||
import android.support.design.widget.Snackbar;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
import android.view.Display;
|
||||
import android.view.Gravity;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.Button;
|
||||
import android.widget.CheckBox;
|
||||
import android.widget.EditText;
|
||||
import android.widget.ListView;
|
||||
import android.widget.PopupWindow;
|
||||
import android.widget.RelativeLayout;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.google.firebase.database.DataSnapshot;
|
||||
import com.google.firebase.database.DatabaseError;
|
||||
import com.google.firebase.database.ValueEventListener;
|
||||
import com.sminnovations.R;
|
||||
import com.sminnovations.bookmypcr.adapter.CustomAdapter;
|
||||
import com.sminnovations.bookmypcr.pojo.AppDataClass;
|
||||
import com.sminnovations.bookmypcr.pojo.ChildEmail;
|
||||
import com.sminnovations.bookmypcr.pojo.DataModel;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class Settings extends AppCompatActivity implements AdapterView.OnItemClickListener {
|
||||
|
||||
AppDataClass appDataClass;
|
||||
EditText labName;
|
||||
ListView listView;
|
||||
private static CustomAdapter adapter;
|
||||
ArrayList<DataModel> dataModels=new ArrayList<>();
|
||||
RelativeLayout mainLayout;
|
||||
PopupWindow popupWindow;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_settings);
|
||||
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
|
||||
this.setTitle("Settings");
|
||||
setSupportActionBar(toolbar);
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_close_white_24dp);
|
||||
mainLayout = (RelativeLayout) findViewById(R.id.mainLayout);
|
||||
appDataClass=(AppDataClass)this.getApplicationContext();
|
||||
labName=(EditText)findViewById(R.id.editLabName);
|
||||
labName.setText(appDataClass.getLab().getName());
|
||||
listView=(ListView)findViewById(R.id.listView1);
|
||||
adapter= new CustomAdapter(dataModels,getApplicationContext());
|
||||
listView.setAdapter(adapter);
|
||||
listView.setOnItemClickListener(this);
|
||||
initialize();
|
||||
}
|
||||
|
||||
public void saveLab(View v){
|
||||
if(labName.getText().toString().trim().isEmpty()){
|
||||
Toast.makeText(Settings.this,
|
||||
"Lab name can not be empty",
|
||||
Toast.LENGTH_SHORT).show();
|
||||
return;
|
||||
}
|
||||
appDataClass.getLab().setName(labName.getText().toString());
|
||||
appDataClass.getmDatabase().child("labs").child(appDataClass.getLab().getLabuid()).setValue(appDataClass.getLab());
|
||||
Toast.makeText(Settings.this,
|
||||
"Saved",
|
||||
Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
switch (item.getItemId()) {
|
||||
case android.R.id.home:
|
||||
finish();
|
||||
onBackPressed();
|
||||
return true;
|
||||
default:
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
}
|
||||
|
||||
public void addPopup(View v){
|
||||
|
||||
LayoutInflater layoutInflater = (LayoutInflater) Settings.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
|
||||
View customView = layoutInflater.inflate(R.layout.popup, null);
|
||||
Button closePopupBtn = (Button) customView.findViewById(R.id.closePopupBtn);
|
||||
Button confirmPopupBtn = (Button) customView.findViewById(R.id.confirmPopupBtn);
|
||||
final EditText emailid = (EditText) customView.findViewById(R.id.emailid);
|
||||
|
||||
//instantiate popup window
|
||||
popupWindow = new PopupWindow(customView, CoordinatorLayout.LayoutParams.MATCH_PARENT, CoordinatorLayout.LayoutParams.WRAP_CONTENT);
|
||||
popupWindow.setFocusable(true);
|
||||
Display display = getWindowManager().getDefaultDisplay();
|
||||
Point size = new Point();
|
||||
display.getSize(size);
|
||||
int width = size.x;
|
||||
width=(int)(width-(double)width*0.1);
|
||||
popupWindow.setWidth(width);
|
||||
//display the popup window
|
||||
popupWindow.showAtLocation(mainLayout, Gravity.CENTER, 0, 0);
|
||||
|
||||
//close the popup window on button click
|
||||
closePopupBtn.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
popupWindow.dismiss();
|
||||
}
|
||||
});
|
||||
confirmPopupBtn.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
appDataClass.getmDatabase().child("emails").orderByChild("emailid").equalTo(emailid.getText().toString()).addListenerForSingleValueEvent(new ValueEventListener() {
|
||||
@Override
|
||||
public void onDataChange(DataSnapshot dataSnapshot) {
|
||||
boolean flag=false;
|
||||
for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) {
|
||||
ChildEmail obj=childSnapshot.getValue(ChildEmail.class);
|
||||
obj.setLabUid(appDataClass.getLab().getLabuid());
|
||||
appDataClass.getmDatabase().child("emails").child(obj.getEmailUid()).setValue(obj);
|
||||
flag=true;
|
||||
}
|
||||
if(!flag){
|
||||
ChildEmail obj=new ChildEmail(appDataClass.getLab().getLabuid(),"",emailid.getText().toString(),appDataClass.getmDatabase().child("emails").push().getKey());
|
||||
appDataClass.getmDatabase().child("emails").child(obj.getEmailUid()).setValue(obj);
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public void onCancelled(DatabaseError databaseError) {
|
||||
System.out.println("The read failed: " + databaseError.getCode());
|
||||
}
|
||||
});
|
||||
ArrayList temp=(ArrayList)dataModels.clone();
|
||||
temp.add(new DataModel(emailid.getText().toString(),false));
|
||||
dataModels.clear();
|
||||
dataModels.addAll(temp);
|
||||
adapter.notifyDataSetChanged();
|
||||
popupWindow.dismiss();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
public void initialize(){
|
||||
appDataClass.getmDatabase().child("emails").orderByChild("labUid").equalTo(appDataClass.getLab().getLabuid()).addListenerForSingleValueEvent(new ValueEventListener() {
|
||||
@Override
|
||||
public void onDataChange(DataSnapshot dataSnapshot) {
|
||||
for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) {
|
||||
ChildEmail obj=childSnapshot.getValue(ChildEmail.class);
|
||||
dataModels.add(new DataModel(obj.getEmailid(),obj.isAdmin()));
|
||||
}
|
||||
adapter.notifyDataSetChanged();
|
||||
}
|
||||
@Override
|
||||
public void onCancelled(DatabaseError databaseError) {
|
||||
System.out.println("The read failed: " + databaseError.getCode());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onItemClick(AdapterView<?> adapterView, View view, final int position, long l) {
|
||||
long viewId = view.getId();
|
||||
|
||||
if (viewId == R.id.remove) {
|
||||
|
||||
appDataClass.getmDatabase().child("emails").orderByChild("emailid").equalTo(dataModels.get(position).getEmailId()).addListenerForSingleValueEvent(new ValueEventListener() {
|
||||
@Override
|
||||
public void onDataChange(DataSnapshot dataSnapshot) {
|
||||
for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) {
|
||||
ChildEmail obj=childSnapshot.getValue(ChildEmail.class);
|
||||
obj.setLabUid("");
|
||||
appDataClass.getmDatabase().child("emails").child(obj.getEmailUid()).setValue(obj);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public void onCancelled(DatabaseError databaseError) {
|
||||
System.out.println("The read failed: " + databaseError.getCode());
|
||||
}
|
||||
});
|
||||
ArrayList temp=(ArrayList)dataModels.clone();
|
||||
temp.remove(position);
|
||||
dataModels.clear();
|
||||
dataModels.addAll(temp);
|
||||
adapter.notifyDataSetChanged();
|
||||
|
||||
} else if (viewId == R.id.checkBox) {
|
||||
|
||||
final CheckBox temp=(CheckBox)view;
|
||||
appDataClass.getmDatabase().child("emails").orderByChild("emailid").equalTo(dataModels.get(position).getEmailId()).addListenerForSingleValueEvent(new ValueEventListener() {
|
||||
@Override
|
||||
public void onDataChange(DataSnapshot dataSnapshot) {
|
||||
for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) {
|
||||
ChildEmail obj=childSnapshot.getValue(ChildEmail.class);
|
||||
if(temp.isChecked()){
|
||||
obj.setAdmin(true);
|
||||
}
|
||||
else{
|
||||
obj.setAdmin(false);
|
||||
}
|
||||
appDataClass.getmDatabase().child("emails").child(obj.getEmailUid()).setValue(obj);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public void onCancelled(DatabaseError databaseError) {
|
||||
System.out.println("The read failed: " + databaseError.getCode());
|
||||
}
|
||||
});
|
||||
if(temp.isChecked()){
|
||||
Toast.makeText(this, "Admin rights granted", Toast.LENGTH_SHORT).show();
|
||||
|
||||
}
|
||||
else{
|
||||
Toast.makeText(this, "Admin rights revoked", Toast.LENGTH_SHORT).show();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
package com.sminnovations.bookmypcr.activities;
|
||||
|
||||
import android.os.Handler;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.widget.AutoCompleteTextView;
|
||||
import android.widget.EditText;
|
||||
|
||||
import com.google.android.gms.tasks.OnCompleteListener;
|
||||
import com.google.android.gms.tasks.Task;
|
||||
import com.google.firebase.auth.AuthResult;
|
||||
import com.google.firebase.auth.FirebaseAuth;
|
||||
import com.google.firebase.auth.FirebaseUser;
|
||||
import com.sminnovations.bookmypcr.pojo.AppDataClass;
|
||||
import com.sminnovations.R;
|
||||
|
||||
public class SignUp extends AppCompatActivity {
|
||||
|
||||
|
||||
private AutoCompleteTextView mEmailView;
|
||||
private EditText mPasswordView;
|
||||
private View mProgressView;
|
||||
private View mLoginFormView;
|
||||
private FirebaseAuth mAuth;
|
||||
private AppDataClass appDataClass;
|
||||
private Handler handler = new Handler();
|
||||
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_sign_up);
|
||||
}
|
||||
|
||||
private void createUser(){
|
||||
// mAuth.createUserWithEmailAndPassword(email, password)
|
||||
// .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
|
||||
// @Override
|
||||
// public void onComplete(@NonNull Task<AuthResult> task) {
|
||||
// if (task.isSuccessful()) {
|
||||
// FirebaseUser user = mAuth.getCurrentUser();
|
||||
//
|
||||
// } else {
|
||||
//
|
||||
// }
|
||||
//
|
||||
// // ...
|
||||
// }
|
||||
// });
|
||||
// mAuth.sendPasswordResetEmail(emailAddress)
|
||||
// .addOnCompleteListener(new OnCompleteListener<Void>() {
|
||||
// @Override
|
||||
// public void onComplete(@NonNull Task<Void> task) {
|
||||
// if (task.isSuccessful()) {
|
||||
// // do something when mail was sent successfully.
|
||||
// } else {
|
||||
// // ...
|
||||
// }
|
||||
// }
|
||||
// });
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,111 @@
|
||||
package com.sminnovations.bookmypcr.activities;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.net.ConnectivityManager;
|
||||
import android.net.NetworkInfo;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.google.firebase.FirebaseApp;
|
||||
import com.google.firebase.auth.FirebaseAuth;
|
||||
import com.google.firebase.auth.FirebaseUser;
|
||||
|
||||
import com.google.firebase.database.DataSnapshot;
|
||||
import com.google.firebase.database.DatabaseError;
|
||||
import com.google.firebase.database.DatabaseReference;
|
||||
import com.google.firebase.database.FirebaseDatabase;
|
||||
import com.google.firebase.database.ValueEventListener;
|
||||
import com.sminnovations.bookmypcr.pojo.AppDataClass;
|
||||
import com.sminnovations.bookmypcr.pojo.ChildEmail;
|
||||
import com.sminnovations.bookmypcr.pojo.User;
|
||||
|
||||
public class SplashActivity extends AppCompatActivity {
|
||||
|
||||
static final int REQUEST_GOOGLE_PLAY_SERVICES = 1002;
|
||||
static final int REQUEST_PERMISSION_GET_ACCOUNTS = 1003;
|
||||
private static final String PREF_ACCOUNT_NAME = "accountName";
|
||||
private FirebaseAuth mAuth;
|
||||
private DatabaseReference mDatabase;
|
||||
private AppDataClass appDataClass;
|
||||
private FirebaseUser user=null;
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
FirebaseApp.initializeApp(this);
|
||||
if(!isDeviceOnline()){
|
||||
Toast.makeText(SplashActivity.this,
|
||||
"No Internet Connection",
|
||||
Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
mAuth = FirebaseAuth.getInstance();
|
||||
user = mAuth.getCurrentUser();
|
||||
appDataClass = (AppDataClass) getApplicationContext();
|
||||
appDataClass.setmAuth(mAuth);
|
||||
if(user==null|| !user.isEmailVerified()) {
|
||||
|
||||
Intent intent = new Intent(this, LoginActivity.class);
|
||||
startActivity(intent);
|
||||
}
|
||||
else{
|
||||
appDataClass.setUser(user);
|
||||
mDatabase = FirebaseDatabase.getInstance().getReference();
|
||||
appDataClass.setmDatabase(mDatabase);
|
||||
mDatabase.child("emails").orderByChild("emailid").equalTo(user.getEmail()).addListenerForSingleValueEvent(new ValueEventListener() {
|
||||
@Override
|
||||
public void onDataChange(DataSnapshot dataSnapshot) {
|
||||
for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) {
|
||||
appDataClass.setChildEmail(childSnapshot.getValue(ChildEmail.class));
|
||||
}
|
||||
navigation();
|
||||
}
|
||||
@Override
|
||||
public void onCancelled(DatabaseError databaseError) {
|
||||
System.out.println("The read failed: " + databaseError.getCode());
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private void navigation(){
|
||||
if(appDataClass.getChildEmail()==null){
|
||||
Toast.makeText(SplashActivity.this,
|
||||
"First time login. We are setting up your account. Please wait.",
|
||||
Toast.LENGTH_SHORT).show();
|
||||
User userObj= new User(user.getDisplayName(),true,false,user.getUid());
|
||||
mDatabase.child("users").child(user.getUid()).setValue(userObj);
|
||||
ChildEmail emailObj=new ChildEmail("",user.getUid(),user.getEmail(),mDatabase.child("emails").push().getKey());
|
||||
mDatabase.child("emails").child(emailObj.getEmailUid()).setValue(emailObj);
|
||||
appDataClass.setChildEmail(emailObj);
|
||||
}
|
||||
else if(appDataClass.getChildEmail().userUid==null ||appDataClass.getChildEmail().userUid.isEmpty()) {
|
||||
User userObj= new User(user.getDisplayName(),true,false,user.getUid());
|
||||
mDatabase.child("users").child(user.getUid()).setValue(userObj);
|
||||
appDataClass.getChildEmail().setUserUid(user.getUid());
|
||||
mDatabase.child("emails").child(appDataClass.getChildEmail().getEmailUid()).setValue(appDataClass.getChildEmail());
|
||||
}
|
||||
if(appDataClass.getChildEmail().labUid==null ||appDataClass.getChildEmail().labUid.isEmpty()){
|
||||
Intent intent = new Intent(this, NoAccess.class);
|
||||
startActivity(intent);
|
||||
}else {
|
||||
Intent intent = new Intent(this, CalendarActivity.class);
|
||||
startActivity(intent);
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isDeviceOnline() {
|
||||
ConnectivityManager connMgr =
|
||||
(ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
|
||||
NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
|
||||
return (networkInfo != null && networkInfo.isConnected());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
package com.sminnovations.bookmypcr.activities;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.design.widget.FloatingActionButton;
|
||||
import android.support.design.widget.Snackbar;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
import android.view.MenuItem;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.sminnovations.R;
|
||||
import com.sminnovations.bookmypcr.pojo.AppDataClass;
|
||||
import com.sminnovations.bookmypcr.pojo.Booking;
|
||||
import com.sminnovations.bookmypcr.pojo.Equipment;
|
||||
|
||||
public class ViewEvent extends AppCompatActivity {
|
||||
|
||||
private Booking slot;
|
||||
private Equipment equipment;
|
||||
TextView fromdateView,enddateView,title, reaction,comments,endTime,startTime;
|
||||
AppDataClass appDataClass;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_view_event);
|
||||
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
|
||||
setSupportActionBar(toolbar);
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_close_white_24dp);
|
||||
this.setTitle("View Event");
|
||||
Bundle extras = getIntent().getExtras();
|
||||
if (extras != null) {
|
||||
slot= (Booking)getIntent().getSerializableExtra("slot");
|
||||
equipment = (Equipment)getIntent().getSerializableExtra("equipment");
|
||||
}
|
||||
fromdateView =(TextView)findViewById(R.id.datebar);
|
||||
title=(TextView)findViewById(R.id.title);
|
||||
reaction=(TextView)findViewById(R.id.reaction);
|
||||
comments=(TextView)findViewById(R.id.comments);
|
||||
enddateView=(TextView)findViewById(R.id.enddatebar);
|
||||
endTime=(TextView)findViewById(R.id.endTime);
|
||||
startTime=(TextView)findViewById(R.id.startTime);
|
||||
appDataClass = (AppDataClass) getApplicationContext();
|
||||
|
||||
setDateTimeField();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
switch (item.getItemId()) {
|
||||
case android.R.id.home:
|
||||
finish();
|
||||
onBackPressed();
|
||||
return true;
|
||||
default:
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
}
|
||||
|
||||
private void setDateTimeField() {
|
||||
fromdateView.setText(slot.getDate());
|
||||
enddateView.setText(slot.getDate());
|
||||
title.setText(slot.getTitle());
|
||||
reaction.setText(slot.getReactionspec());
|
||||
comments.setText(slot.getComments());
|
||||
endTime.setText(slot.getEndTime());
|
||||
startTime.setText(slot.getStartTime());
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,85 @@
|
||||
package com.sminnovations.bookmypcr.adapter;
|
||||
|
||||
import android.content.Context;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.CheckBox;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.ListView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.sminnovations.R;
|
||||
import com.sminnovations.bookmypcr.pojo.DataModel;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
/**
|
||||
* Created by Pavan on 23-Apr-18.
|
||||
*/
|
||||
|
||||
public class CustomAdapter extends ArrayAdapter<DataModel> {
|
||||
|
||||
private ArrayList<DataModel> dataSet;
|
||||
Context mContext;
|
||||
|
||||
// View lookup cache
|
||||
private static class ViewHolder {
|
||||
TextView txtName;
|
||||
CheckBox admin;
|
||||
ImageView remove;
|
||||
|
||||
}
|
||||
|
||||
public CustomAdapter(ArrayList<DataModel> data, Context context) {
|
||||
super(context, R.layout.row_item, data);
|
||||
this.dataSet = data;
|
||||
this.mContext=context;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public View getView(final int position, View convertView, final ViewGroup parent) {
|
||||
// Get the data item for this position
|
||||
DataModel dataModel = getItem(position);
|
||||
// Check if an existing view is being reused, otherwise inflate the view
|
||||
ViewHolder viewHolder; // view lookup cache stored in tag
|
||||
|
||||
final View result;
|
||||
|
||||
if (convertView == null) {
|
||||
|
||||
viewHolder = new ViewHolder();
|
||||
LayoutInflater inflater = LayoutInflater.from(getContext());
|
||||
convertView = inflater.inflate(R.layout.row_item, parent, false);
|
||||
viewHolder.txtName = (TextView) convertView.findViewById(R.id.email);
|
||||
viewHolder.admin = (CheckBox) convertView.findViewById(R.id.checkBox);
|
||||
viewHolder.remove=(ImageView)convertView.findViewById(R.id.remove);
|
||||
|
||||
result=convertView;
|
||||
|
||||
convertView.setTag(viewHolder);
|
||||
} else {
|
||||
viewHolder = (ViewHolder) convertView.getTag();
|
||||
result=convertView;
|
||||
}
|
||||
|
||||
viewHolder.txtName.setText(dataModel.getEmailId());
|
||||
viewHolder.admin.setChecked(dataModel.isAdmin());
|
||||
viewHolder.remove.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
((ListView) parent).performItemClick(v, position, 0); // Let the event be handled in onItemClick()
|
||||
}
|
||||
});
|
||||
viewHolder.admin.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
((ListView) parent).performItemClick(v, position, 0); // Let the event be handled in onItemClick()
|
||||
}
|
||||
});
|
||||
// Return the completed view to render on screen
|
||||
return convertView;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,201 @@
|
||||
package com.sminnovations.bookmypcr.fragmentHandler;
|
||||
|
||||
import android.content.Context;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.RelativeLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.sminnovations.R;
|
||||
import com.sminnovations.bookmypcr.pojo.AppDataClass;
|
||||
import com.sminnovations.bookmypcr.pojo.Booking;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
|
||||
/**
|
||||
* A simple {@link Fragment} subclass.
|
||||
* Activities that contain this fragment must implement the
|
||||
* {@link DayFragment.OnFragmentInteractionListener} interface
|
||||
* to handle interaction events.
|
||||
* Use the {@link DayFragment#newInstance} factory method to
|
||||
* create an instance of this fragment.
|
||||
*/
|
||||
public class DayFragment extends Fragment {
|
||||
|
||||
private static final String ARG_PARAM1 = "param1";
|
||||
private static final String ARG_PARAM2 = "param2";
|
||||
|
||||
private Calendar date;
|
||||
private AppDataClass appDataClass;
|
||||
private RelativeLayout realtiveView;
|
||||
private List<Booking> eventList= new ArrayList<Booking>();
|
||||
private Map<LinearLayout,Booking> mapping= new HashMap<>();
|
||||
View v;
|
||||
|
||||
private OnFragmentInteractionListener mListener;
|
||||
SimpleDateFormat timeFormatter = new SimpleDateFormat("hh:mm a",Locale.US);
|
||||
SimpleDateFormat hourFormatter = new SimpleDateFormat("hh,mm a",Locale.US);
|
||||
public DayFragment() {
|
||||
// Required empty public constructor
|
||||
}
|
||||
|
||||
public List<Booking> getEventList() {
|
||||
return eventList;
|
||||
}
|
||||
|
||||
public void setEventList(List<Booking> eventList) {
|
||||
this.eventList = eventList;
|
||||
}
|
||||
|
||||
/**
|
||||
* Use this factory method to create a new instance of
|
||||
* this fragment using the provided parameters.
|
||||
*
|
||||
// * @param param1 Parameter 1.
|
||||
// * @param param2 Parameter 2.
|
||||
* @return A new instance of fragment DayFragment.
|
||||
*/
|
||||
// TODO: Rename and change types and number of parameters
|
||||
public static DayFragment newInstance(Calendar date, AppDataClass appDataClass) {
|
||||
DayFragment fragment = new DayFragment();
|
||||
|
||||
fragment.setDate(date);
|
||||
fragment.setAppDataClass(appDataClass);
|
||||
|
||||
return fragment;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
}
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState) {
|
||||
|
||||
if(v==null) {
|
||||
v = inflater.inflate(R.layout.item_frame, container, false);
|
||||
realtiveView = (RelativeLayout) v.findViewById(R.id.realtiveViewID);
|
||||
|
||||
}
|
||||
// if(!eventList.isEmpty())
|
||||
// notifyDataChanged();
|
||||
return v;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroyView() {
|
||||
if (v.getParent() != null) {
|
||||
((ViewGroup)v.getParent()).removeView(v);
|
||||
}
|
||||
super.onDestroyView();
|
||||
}
|
||||
|
||||
// TODO: Rename method, update argument and hook method into UI event
|
||||
public void onButtonPressed(Uri uri) {
|
||||
if (mListener != null) {
|
||||
mListener.onFragmentInteraction(uri);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAttach(Context context) {
|
||||
super.onAttach(context);
|
||||
if (context instanceof OnFragmentInteractionListener) {
|
||||
mListener = (OnFragmentInteractionListener) context;
|
||||
} else {
|
||||
throw new RuntimeException(context.toString()
|
||||
+ " must implement OnFragmentInteractionListener");
|
||||
}
|
||||
}
|
||||
|
||||
public void notifyDataChanged(){
|
||||
Map<LinearLayout,Booking> mappingtemp= new HashMap<>();
|
||||
for(Booking slot:eventList){
|
||||
if(!mapping.values().contains(slot)){
|
||||
mappingtemp.put(addComponent(slot),slot);
|
||||
}
|
||||
}
|
||||
for(LinearLayout layout:mapping.keySet()){
|
||||
if(!mappingtemp.containsKey(layout)){
|
||||
realtiveView.removeView(layout);
|
||||
}
|
||||
}
|
||||
mapping.clear();
|
||||
mapping.putAll(mappingtemp);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDetach() {
|
||||
super.onDetach();
|
||||
mListener = null;
|
||||
}
|
||||
|
||||
public interface OnFragmentInteractionListener {
|
||||
// TODO: Update argument type and name
|
||||
void onFragmentInteraction(Uri uri);
|
||||
}
|
||||
|
||||
private LinearLayout addComponent(Booking slot){
|
||||
|
||||
final float scale = getContext().getResources().getDisplayMetrics().density;
|
||||
int pixels = (int) (60 * scale + 0.5f);
|
||||
double eventHeight=(slot.getDuration())*pixels/2;
|
||||
int[] androidColors = getResources().getIntArray(R.array.androidcolors);
|
||||
int randomAndroidColor = androidColors[new Random().nextInt(androidColors.length)];
|
||||
RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
|
||||
String name=slot.getStartTime();
|
||||
if(name.contains(":00")){
|
||||
name=name.replaceAll(":00","");
|
||||
}
|
||||
name=name.replaceAll(":",".").replaceAll("\\s","").toLowerCase();
|
||||
name=(name.startsWith("0"))?name.replaceFirst("0",""):name;
|
||||
int resourceId = getContext().getResources().getIdentifier("time_"+name+"_click", "id","com.thermalcycler");
|
||||
TextView test=(TextView)realtiveView.findViewById(resourceId);
|
||||
LinearLayout myText = (LinearLayout)getLayoutInflater().inflate(R.layout.tvtemplate, null);
|
||||
// myText.setClickable(slot.getUserid().equals(appDataClass.getUserObj().getUseruid()));
|
||||
// myText.setText("Dummy");
|
||||
myText.setBackgroundColor(randomAndroidColor);
|
||||
((TextView)myText.findViewById(R.id.tvTemplate)).setText(slot.getUsername());
|
||||
((TextView)myText.findViewById(R.id.tvTemplate)).setHeight((int)eventHeight);
|
||||
((TextView)myText.findViewById(R.id.moredetails)).setText(slot.getTitle()+","+slot.getReactionspec());
|
||||
((TextView)myText.findViewById(R.id.moredetails)).setHeight((int)eventHeight);
|
||||
p.addRule(RelativeLayout.ALIGN_TOP, resourceId );
|
||||
p.addRule(RelativeLayout.ALIGN_START, resourceId);
|
||||
realtiveView.addView(myText,p);
|
||||
return myText;
|
||||
}
|
||||
|
||||
public Calendar getDate() {
|
||||
return date;
|
||||
}
|
||||
|
||||
public void setDate(Calendar date) {
|
||||
this.date = date;
|
||||
}
|
||||
|
||||
public AppDataClass getAppDataClass() {
|
||||
return appDataClass;
|
||||
}
|
||||
|
||||
public void setAppDataClass(AppDataClass appDataClass) {
|
||||
this.appDataClass = appDataClass;
|
||||
}
|
||||
|
||||
public Map<LinearLayout, Booking> getMapping() {
|
||||
return mapping;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,75 @@
|
||||
package com.sminnovations.bookmypcr.pojo;
|
||||
|
||||
import android.app.Application;
|
||||
|
||||
import com.google.firebase.auth.FirebaseAuth;
|
||||
import com.google.firebase.auth.FirebaseUser;
|
||||
import com.google.firebase.database.DatabaseReference;
|
||||
|
||||
/**
|
||||
* Created by Pavan on 08-Mar-18.
|
||||
*/
|
||||
|
||||
public class AppDataClass extends Application {
|
||||
|
||||
private FirebaseAuth mAuth;
|
||||
|
||||
private FirebaseUser user;
|
||||
|
||||
private ChildEmail childEmail;
|
||||
|
||||
private Lab lab;
|
||||
|
||||
private User userObj;
|
||||
|
||||
private DatabaseReference mDatabase;
|
||||
|
||||
public DatabaseReference getmDatabase() {
|
||||
return mDatabase;
|
||||
}
|
||||
|
||||
public void setmDatabase(DatabaseReference mDatabase) {
|
||||
this.mDatabase = mDatabase;
|
||||
}
|
||||
|
||||
public FirebaseAuth getmAuth() {
|
||||
return mAuth;
|
||||
}
|
||||
|
||||
public void setmAuth(FirebaseAuth mAuth) {
|
||||
this.mAuth = mAuth;
|
||||
}
|
||||
|
||||
public FirebaseUser getUser() {
|
||||
return user;
|
||||
}
|
||||
|
||||
public void setUser(FirebaseUser user) {
|
||||
this.user = user;
|
||||
}
|
||||
|
||||
public ChildEmail getChildEmail() {
|
||||
return childEmail;
|
||||
}
|
||||
|
||||
public void setChildEmail(ChildEmail childEmail) {
|
||||
this.childEmail = childEmail;
|
||||
}
|
||||
|
||||
public Lab getLab() {
|
||||
return lab;
|
||||
}
|
||||
|
||||
public void setLab(Lab lab) {
|
||||
this.lab = lab;
|
||||
}
|
||||
|
||||
public User getUserObj() {
|
||||
return userObj;
|
||||
}
|
||||
|
||||
public void setUserObj(User userObj) {
|
||||
this.userObj = userObj;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,145 @@
|
||||
package com.sminnovations.bookmypcr.pojo;
|
||||
|
||||
import com.google.firebase.database.IgnoreExtraProperties;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Calendar;
|
||||
|
||||
/**
|
||||
* Created by Pavan on 20-Mar-18.
|
||||
*/
|
||||
@IgnoreExtraProperties
|
||||
public class Booking implements Serializable {
|
||||
|
||||
private String userid;
|
||||
private String username;
|
||||
private String title;
|
||||
private String reactionspec;
|
||||
private double duration;
|
||||
private String comments;
|
||||
private String date;
|
||||
private String bookedDate;
|
||||
private Calendar startTimeCal,endTimeCal;
|
||||
private String startTime,endTime;
|
||||
private String key;
|
||||
|
||||
public Booking(String userid, String username, String title, String reactionspec, String comments, String date, String startTime, String endTime,String bookedDate,String key) {
|
||||
this.userid = userid;
|
||||
this.username = username;
|
||||
this.title = title;
|
||||
this.reactionspec = reactionspec;
|
||||
this.comments = comments;
|
||||
this.date = date;
|
||||
this.startTime = startTime;
|
||||
this.endTime = endTime;
|
||||
this.bookedDate=bookedDate;
|
||||
this.key=key;
|
||||
}
|
||||
|
||||
public Booking() {
|
||||
}
|
||||
|
||||
public String getUserid() {
|
||||
return userid;
|
||||
}
|
||||
|
||||
public void setUserid(String userid) {
|
||||
this.userid = userid;
|
||||
}
|
||||
|
||||
public String getUsername() {
|
||||
return username;
|
||||
}
|
||||
|
||||
public void setUsername(String username) {
|
||||
this.username = username;
|
||||
}
|
||||
|
||||
public String getReactionspec() {
|
||||
return reactionspec;
|
||||
}
|
||||
|
||||
public void setReactionspec(String reactionspec) {
|
||||
this.reactionspec = reactionspec;
|
||||
}
|
||||
|
||||
public double getDuration() {
|
||||
return duration;
|
||||
}
|
||||
|
||||
public void setDuration(double duration) {
|
||||
this.duration = duration;
|
||||
}
|
||||
|
||||
public String getComments() {
|
||||
return comments;
|
||||
}
|
||||
|
||||
public void setComments(String comments) {
|
||||
this.comments = comments;
|
||||
}
|
||||
|
||||
public Calendar getStartTimeCal() {
|
||||
return startTimeCal;
|
||||
}
|
||||
|
||||
public void setStartTimeCal(Calendar startTimeCal) {
|
||||
this.startTimeCal = startTimeCal;
|
||||
}
|
||||
|
||||
public Calendar getEndTimeCal() {
|
||||
return endTimeCal;
|
||||
}
|
||||
|
||||
public void setEndTimeCal(Calendar endTimeCal) {
|
||||
this.endTimeCal = endTimeCal;
|
||||
}
|
||||
|
||||
public String getStartTime() {
|
||||
return startTime;
|
||||
}
|
||||
|
||||
public void setStartTime(String startTime) {
|
||||
this.startTime = startTime;
|
||||
}
|
||||
|
||||
public String getEndTime() {
|
||||
return endTime;
|
||||
}
|
||||
|
||||
public void setEndTime(String endTime) {
|
||||
this.endTime = endTime;
|
||||
}
|
||||
|
||||
public String getTitle() {
|
||||
return title;
|
||||
}
|
||||
|
||||
public void setTitle(String title) {
|
||||
this.title = title;
|
||||
}
|
||||
|
||||
public String getDate() {
|
||||
return date;
|
||||
}
|
||||
|
||||
public void setDate(String date) {
|
||||
this.date = date;
|
||||
}
|
||||
|
||||
public String getBookedDate() {
|
||||
return bookedDate;
|
||||
}
|
||||
|
||||
public void setBookedDate(String bookedDate) {
|
||||
this.bookedDate = bookedDate;
|
||||
}
|
||||
|
||||
public String getKey() {
|
||||
return key;
|
||||
}
|
||||
|
||||
public void setKey(String key) {
|
||||
this.key = key;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,68 @@
|
||||
package com.sminnovations.bookmypcr.pojo;
|
||||
|
||||
import com.google.firebase.database.IgnoreExtraProperties;
|
||||
|
||||
/**
|
||||
* Created by Pavan on 20-Mar-18.
|
||||
*/
|
||||
@IgnoreExtraProperties
|
||||
public class ChildEmail {
|
||||
|
||||
public String labUid;
|
||||
public String userUid;
|
||||
public String emailid;
|
||||
public String emailUid;
|
||||
public boolean admin;
|
||||
|
||||
public ChildEmail(String labUid, String userUid, String emailid,String emailUid) {
|
||||
this.labUid = labUid;
|
||||
this.userUid = userUid;
|
||||
this.emailid= emailid;
|
||||
this.emailUid=emailUid;
|
||||
}
|
||||
|
||||
public ChildEmail() {
|
||||
}
|
||||
|
||||
public String getLabUid() {
|
||||
return labUid;
|
||||
}
|
||||
|
||||
public void setLabUid(String labUid) {
|
||||
this.labUid = labUid;
|
||||
}
|
||||
|
||||
public String getUserUid() {
|
||||
return userUid;
|
||||
}
|
||||
|
||||
public void setUserUid(String userUid) {
|
||||
this.userUid = userUid;
|
||||
}
|
||||
|
||||
public String getEmailid() {
|
||||
return emailid;
|
||||
}
|
||||
|
||||
public void setEmailid(String emailid) {
|
||||
this.emailid = emailid;
|
||||
}
|
||||
|
||||
public String getEmailUid() {
|
||||
return emailUid;
|
||||
}
|
||||
|
||||
public void setEmailUid(String emailUid) {
|
||||
this.emailUid = emailUid;
|
||||
}
|
||||
|
||||
public boolean isAdmin() {
|
||||
return admin;
|
||||
}
|
||||
|
||||
public void setAdmin(boolean admin) {
|
||||
this.admin = admin;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
package com.sminnovations.bookmypcr.pojo;
|
||||
|
||||
/**
|
||||
* Created by Pavan on 23-Apr-18.
|
||||
*/
|
||||
|
||||
public class DataModel {
|
||||
|
||||
private String emailId;
|
||||
|
||||
private boolean admin;
|
||||
|
||||
public DataModel(String emailId, boolean admin) {
|
||||
this.emailId = emailId;
|
||||
this.admin = admin;
|
||||
}
|
||||
|
||||
public String getEmailId() {
|
||||
return emailId;
|
||||
}
|
||||
|
||||
public void setEmailId(String emailId) {
|
||||
this.emailId = emailId;
|
||||
}
|
||||
|
||||
public boolean isAdmin() {
|
||||
return admin;
|
||||
}
|
||||
|
||||
public void setAdmin(boolean admin) {
|
||||
this.admin = admin;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
package com.sminnovations.bookmypcr.pojo;
|
||||
|
||||
import com.google.firebase.database.IgnoreExtraProperties;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* Created by Pavan on 20-Mar-18.
|
||||
*/
|
||||
@IgnoreExtraProperties
|
||||
public class Equipment implements Serializable {
|
||||
|
||||
private String name;
|
||||
private String manufacturer;
|
||||
private String equipid;
|
||||
|
||||
public Equipment(String name, String manufacturer, String equipid) {
|
||||
this.name = name;
|
||||
this.manufacturer = manufacturer;
|
||||
this.equipid = equipid;
|
||||
}
|
||||
|
||||
public Equipment() {
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getManufacturer() {
|
||||
return manufacturer;
|
||||
}
|
||||
|
||||
public void setManufacturer(String manufacturer) {
|
||||
this.manufacturer = manufacturer;
|
||||
}
|
||||
|
||||
public String getEquipid() {
|
||||
return equipid;
|
||||
}
|
||||
|
||||
public void setEquipid(String equipid) {
|
||||
this.equipid = equipid;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,86 @@
|
||||
package com.sminnovations.bookmypcr.pojo;
|
||||
|
||||
import com.google.firebase.database.IgnoreExtraProperties;
|
||||
|
||||
/**
|
||||
* Created by Pavan on 20-Mar-18.
|
||||
*/
|
||||
@IgnoreExtraProperties
|
||||
public class Lab {
|
||||
|
||||
private String name;
|
||||
private String department;
|
||||
private String university;
|
||||
private String incharge;
|
||||
private String inchargeNo;
|
||||
private String inchargeEmail;
|
||||
private String labuid;
|
||||
|
||||
public Lab(String name, String department, String university, String incharge, String inchargeNo, String inchargeEmail) {
|
||||
this.name = name;
|
||||
this.department = department;
|
||||
this.university = university;
|
||||
this.incharge = incharge;
|
||||
this.inchargeNo = inchargeNo;
|
||||
this.inchargeEmail = inchargeEmail;
|
||||
}
|
||||
|
||||
public Lab() {
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getDepartment() {
|
||||
return department;
|
||||
}
|
||||
|
||||
public void setDepartment(String department) {
|
||||
this.department = department;
|
||||
}
|
||||
|
||||
public String getUniversity() {
|
||||
return university;
|
||||
}
|
||||
|
||||
public void setUniversity(String university) {
|
||||
this.university = university;
|
||||
}
|
||||
|
||||
public String getIncharge() {
|
||||
return incharge;
|
||||
}
|
||||
|
||||
public void setIncharge(String incharge) {
|
||||
this.incharge = incharge;
|
||||
}
|
||||
|
||||
public String getInchargeNo() {
|
||||
return inchargeNo;
|
||||
}
|
||||
|
||||
public void setInchargeNo(String inchargeNo) {
|
||||
this.inchargeNo = inchargeNo;
|
||||
}
|
||||
|
||||
public String getInchargeEmail() {
|
||||
return inchargeEmail;
|
||||
}
|
||||
|
||||
public void setInchargeEmail(String inchargeEmail) {
|
||||
this.inchargeEmail = inchargeEmail;
|
||||
}
|
||||
|
||||
public String getLabuid() {
|
||||
return labuid;
|
||||
}
|
||||
|
||||
public void setLabuid(String labuid) {
|
||||
this.labuid = labuid;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,72 @@
|
||||
package com.sminnovations.bookmypcr.pojo;
|
||||
|
||||
/**
|
||||
* Created by Pavan on 22-Apr-18.
|
||||
*/
|
||||
|
||||
public class Pcr {
|
||||
|
||||
private String name;
|
||||
private String manufacturer;
|
||||
private String equipid;
|
||||
private String model;
|
||||
private String location;
|
||||
private String comments;
|
||||
|
||||
public Pcr(String name, String manufacturer, String equipid, String model, String location, String comments) {
|
||||
this.name = name;
|
||||
this.manufacturer = manufacturer;
|
||||
this.equipid = equipid;
|
||||
this.model = model;
|
||||
this.location = location;
|
||||
this.comments = comments;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getManufacturer() {
|
||||
return manufacturer;
|
||||
}
|
||||
|
||||
public void setManufacturer(String manufacturer) {
|
||||
this.manufacturer = manufacturer;
|
||||
}
|
||||
|
||||
public String getEquipid() {
|
||||
return equipid;
|
||||
}
|
||||
|
||||
public void setEquipid(String equipid) {
|
||||
this.equipid = equipid;
|
||||
}
|
||||
|
||||
public String getModel() {
|
||||
return model;
|
||||
}
|
||||
|
||||
public void setModel(String model) {
|
||||
this.model = model;
|
||||
}
|
||||
|
||||
public String getLocation() {
|
||||
return location;
|
||||
}
|
||||
|
||||
public void setLocation(String location) {
|
||||
this.location = location;
|
||||
}
|
||||
|
||||
public String getComments() {
|
||||
return comments;
|
||||
}
|
||||
|
||||
public void setComments(String comments) {
|
||||
this.comments = comments;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
package com.sminnovations.bookmypcr.pojo;
|
||||
|
||||
import com.google.firebase.database.IgnoreExtraProperties;
|
||||
|
||||
/**
|
||||
* Created by Pavan on 20-Mar-18.
|
||||
*/
|
||||
@IgnoreExtraProperties
|
||||
public class User {
|
||||
|
||||
private String name;
|
||||
private String useruid;
|
||||
private boolean active;
|
||||
private boolean admin;
|
||||
|
||||
public User(String name, boolean active, boolean admin, String useruid) {
|
||||
this.name = name;
|
||||
this.active = active;
|
||||
this.admin = admin;
|
||||
this.useruid=useruid;
|
||||
}
|
||||
|
||||
public User() {
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public boolean isActive() {
|
||||
return active;
|
||||
}
|
||||
|
||||
public void setActive(boolean active) {
|
||||
this.active = active;
|
||||
}
|
||||
|
||||
public boolean isAdmin() {
|
||||
return admin;
|
||||
}
|
||||
|
||||
public void setAdmin(boolean admin) {
|
||||
this.admin = admin;
|
||||
}
|
||||
|
||||
public String getUseruid() {
|
||||
return useruid;
|
||||
}
|
||||
|
||||
public void setUseruid(String useruid) {
|
||||
this.useruid = useruid;
|
||||
}
|
||||
}
|
||||
BIN
Android/app/src/main/res/drawable-hdpi/ic_add_black_24dp.png
Normal file
BIN
Android/app/src/main/res/drawable-hdpi/ic_add_black_24dp.png
Normal file
Binary file not shown.
Binary file not shown.
BIN
Android/app/src/main/res/drawable-hdpi/ic_close_black_24dp.png
Normal file
BIN
Android/app/src/main/res/drawable-hdpi/ic_close_black_24dp.png
Normal file
Binary file not shown.
BIN
Android/app/src/main/res/drawable-hdpi/ic_close_white_24dp.png
Normal file
BIN
Android/app/src/main/res/drawable-hdpi/ic_close_white_24dp.png
Normal file
Binary file not shown.
BIN
Android/app/src/main/res/drawable-hdpi/ic_delete_white_24dp.png
Normal file
BIN
Android/app/src/main/res/drawable-hdpi/ic_delete_white_24dp.png
Normal file
Binary file not shown.
BIN
Android/app/src/main/res/drawable-hdpi/ic_help_black_24dp.png
Normal file
BIN
Android/app/src/main/res/drawable-hdpi/ic_help_black_24dp.png
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Android/app/src/main/res/drawable-mdpi/ic_add_black_24dp.png
Normal file
BIN
Android/app/src/main/res/drawable-mdpi/ic_add_black_24dp.png
Normal file
Binary file not shown.
Binary file not shown.
BIN
Android/app/src/main/res/drawable-mdpi/ic_close_black_24dp.png
Normal file
BIN
Android/app/src/main/res/drawable-mdpi/ic_close_black_24dp.png
Normal file
Binary file not shown.
BIN
Android/app/src/main/res/drawable-mdpi/ic_close_white_24dp.png
Normal file
BIN
Android/app/src/main/res/drawable-mdpi/ic_close_white_24dp.png
Normal file
Binary file not shown.
BIN
Android/app/src/main/res/drawable-mdpi/ic_delete_white_24dp.png
Normal file
BIN
Android/app/src/main/res/drawable-mdpi/ic_delete_white_24dp.png
Normal file
Binary file not shown.
BIN
Android/app/src/main/res/drawable-mdpi/ic_help_black_24dp.png
Normal file
BIN
Android/app/src/main/res/drawable-mdpi/ic_help_black_24dp.png
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Android/app/src/main/res/drawable-mdpi/shanmukha.jpg
Normal file
BIN
Android/app/src/main/res/drawable-mdpi/shanmukha.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 32 KiB |
BIN
Android/app/src/main/res/drawable-mdpi/shanmukha_splash.jpg
Normal file
BIN
Android/app/src/main/res/drawable-mdpi/shanmukha_splash.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 4.9 KiB |
BIN
Android/app/src/main/res/drawable-mdpi/splash.png
Normal file
BIN
Android/app/src/main/res/drawable-mdpi/splash.png
Normal file
Binary file not shown.
BIN
Android/app/src/main/res/drawable-mdpi/splash3.png
Normal file
BIN
Android/app/src/main/res/drawable-mdpi/splash3.png
Normal file
Binary file not shown.
BIN
Android/app/src/main/res/drawable-mdpi/splash4.png
Normal file
BIN
Android/app/src/main/res/drawable-mdpi/splash4.png
Normal file
Binary file not shown.
BIN
Android/app/src/main/res/drawable-mdpi/splash_2.png
Normal file
BIN
Android/app/src/main/res/drawable-mdpi/splash_2.png
Normal file
Binary file not shown.
12
Android/app/src/main/res/drawable-v21/ic_menu_camera.xml
Normal file
12
Android/app/src/main/res/drawable-v21/ic_menu_camera.xml
Normal file
@@ -0,0 +1,12 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportHeight="24.0"
|
||||
android:viewportWidth="24.0">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M12,12m-3.2,0a3.2,3.2 0,1 1,6.4 0a3.2,3.2 0,1 1,-6.4 0" />
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M9,2L7.17,4H4c-1.1,0 -2,0.9 -2,2v12c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2V6c0,-1.1 -0.9,-2 -2,-2h-3.17L15,2H9zm3,15c-2.76,0 -5,-2.24 -5,-5s2.24,-5 5,-5 5,2.24 5,5 -2.24,5 -5,5z" />
|
||||
</vector>
|
||||
@@ -0,0 +1,9 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportHeight="24.0"
|
||||
android:viewportWidth="24.0">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M22,16V4c0,-1.1 -0.9,-2 -2,-2H8c-1.1,0 -2,0.9 -2,2v12c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2zm-11,-4l2.03,2.71L16,11l4,5H8l3,-4zM2,6v14c0,1.1 0.9,2 2,2h14v-2H4V6H2z" />
|
||||
</vector>
|
||||
9
Android/app/src/main/res/drawable-v21/ic_menu_manage.xml
Normal file
9
Android/app/src/main/res/drawable-v21/ic_menu_manage.xml
Normal file
@@ -0,0 +1,9 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportHeight="24.0"
|
||||
android:viewportWidth="24.0">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M22.7,19l-9.1,-9.1c0.9,-2.3 0.4,-5 -1.5,-6.9 -2,-2 -5,-2.4 -7.4,-1.3L9,6 6,9 1.6,4.7C0.4,7.1 0.9,10.1 2.9,12.1c1.9,1.9 4.6,2.4 6.9,1.5l9.1,9.1c0.4,0.4 1,0.4 1.4,0l2.3,-2.3c0.5,-0.4 0.5,-1.1 0.1,-1.4z" />
|
||||
</vector>
|
||||
9
Android/app/src/main/res/drawable-v21/ic_menu_send.xml
Normal file
9
Android/app/src/main/res/drawable-v21/ic_menu_send.xml
Normal file
@@ -0,0 +1,9 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportHeight="24.0"
|
||||
android:viewportWidth="24.0">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M2.01,21L23,12 2.01,3 2,10l15,2 -15,2z" />
|
||||
</vector>
|
||||
9
Android/app/src/main/res/drawable-v21/ic_menu_share.xml
Normal file
9
Android/app/src/main/res/drawable-v21/ic_menu_share.xml
Normal file
@@ -0,0 +1,9 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportHeight="24.0"
|
||||
android:viewportWidth="24.0">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M18,16.08c-0.76,0 -1.44,0.3 -1.96,0.77L8.91,12.7c0.05,-0.23 0.09,-0.46 0.09,-0.7s-0.04,-0.47 -0.09,-0.7l7.05,-4.11c0.54,0.5 1.25,0.81 2.04,0.81 1.66,0 3,-1.34 3,-3s-1.34,-3 -3,-3 -3,1.34 -3,3c0,0.24 0.04,0.47 0.09,0.7L8.04,9.81C7.5,9.31 6.79,9 6,9c-1.66,0 -3,1.34 -3,3s1.34,3 3,3c0.79,0 1.5,-0.31 2.04,-0.81l7.12,4.16c-0.05,0.21 -0.08,0.43 -0.08,0.65 0,1.61 1.31,2.92 2.92,2.92 1.61,0 2.92,-1.31 2.92,-2.92s-1.31,-2.92 -2.92,-2.92z" />
|
||||
</vector>
|
||||
@@ -0,0 +1,9 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportHeight="24.0"
|
||||
android:viewportWidth="24.0">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M4,6H2v14c0,1.1 0.9,2 2,2h14v-2H4V6zm16,-4H8c-1.1,0 -2,0.9 -2,2v12c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2V4c0,-1.1 -0.9,-2 -2,-2zm-8,12.5v-9l6,4.5 -6,4.5z" />
|
||||
</vector>
|
||||
17
Android/app/src/main/res/drawable-v24/background_splash.xml
Normal file
17
Android/app/src/main/res/drawable-v24/background_splash.xml
Normal file
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<item android:drawable="@color/white" />
|
||||
|
||||
<item>
|
||||
<bitmap
|
||||
android:gravity="center"
|
||||
android:src="@drawable/splash4" />
|
||||
</item>
|
||||
<item
|
||||
android:bottom="40dp">
|
||||
<bitmap android:src="@drawable/shanmukha_splash"
|
||||
android:gravity="bottom" />
|
||||
</item>
|
||||
|
||||
</layer-list>
|
||||
@@ -0,0 +1,34 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:width="108dp"
|
||||
android:height="108dp"
|
||||
android:viewportHeight="108"
|
||||
android:viewportWidth="108">
|
||||
<path
|
||||
android:fillType="evenOdd"
|
||||
android:pathData="M32,64C32,64 38.39,52.99 44.13,50.95C51.37,48.37 70.14,49.57 70.14,49.57L108.26,87.69L108,109.01L75.97,107.97L32,64Z"
|
||||
android:strokeColor="#00000000"
|
||||
android:strokeWidth="1">
|
||||
<aapt:attr name="android:fillColor">
|
||||
<gradient
|
||||
android:endX="78.5885"
|
||||
android:endY="90.9159"
|
||||
android:startX="48.7653"
|
||||
android:startY="61.0927"
|
||||
android:type="linear">
|
||||
<item
|
||||
android:color="#44000000"
|
||||
android:offset="0.0" />
|
||||
<item
|
||||
android:color="#00000000"
|
||||
android:offset="1.0" />
|
||||
</gradient>
|
||||
</aapt:attr>
|
||||
</path>
|
||||
<path
|
||||
android:fillColor="#FFFFFF"
|
||||
android:fillType="nonZero"
|
||||
android:pathData="M66.94,46.02L66.94,46.02C72.44,50.07 76,56.61 76,64L32,64C32,56.61 35.56,50.11 40.98,46.06L36.18,41.19C35.45,40.45 35.45,39.3 36.18,38.56C36.91,37.81 38.05,37.81 38.78,38.56L44.25,44.05C47.18,42.57 50.48,41.71 54,41.71C57.48,41.71 60.78,42.57 63.68,44.05L69.11,38.56C69.84,37.81 70.98,37.81 71.71,38.56C72.44,39.3 72.44,40.45 71.71,41.19L66.94,46.02ZM62.94,56.92C64.08,56.92 65,56.01 65,54.88C65,53.76 64.08,52.85 62.94,52.85C61.8,52.85 60.88,53.76 60.88,54.88C60.88,56.01 61.8,56.92 62.94,56.92ZM45.06,56.92C46.2,56.92 47.13,56.01 47.13,54.88C47.13,53.76 46.2,52.85 45.06,52.85C43.92,52.85 43,53.76 43,54.88C43,56.01 43.92,56.92 45.06,56.92Z"
|
||||
android:strokeColor="#00000000"
|
||||
android:strokeWidth="1" />
|
||||
</vector>
|
||||
BIN
Android/app/src/main/res/drawable-xhdpi/ic_add_black_24dp.png
Normal file
BIN
Android/app/src/main/res/drawable-xhdpi/ic_add_black_24dp.png
Normal file
Binary file not shown.
Binary file not shown.
BIN
Android/app/src/main/res/drawable-xhdpi/ic_close_black_24dp.png
Normal file
BIN
Android/app/src/main/res/drawable-xhdpi/ic_close_black_24dp.png
Normal file
Binary file not shown.
BIN
Android/app/src/main/res/drawable-xhdpi/ic_close_white_24dp.png
Normal file
BIN
Android/app/src/main/res/drawable-xhdpi/ic_close_white_24dp.png
Normal file
Binary file not shown.
BIN
Android/app/src/main/res/drawable-xhdpi/ic_delete_white_24dp.png
Normal file
BIN
Android/app/src/main/res/drawable-xhdpi/ic_delete_white_24dp.png
Normal file
Binary file not shown.
BIN
Android/app/src/main/res/drawable-xhdpi/ic_help_black_24dp.png
Normal file
BIN
Android/app/src/main/res/drawable-xhdpi/ic_help_black_24dp.png
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Android/app/src/main/res/drawable-xxhdpi/ic_add_black_24dp.png
Normal file
BIN
Android/app/src/main/res/drawable-xxhdpi/ic_add_black_24dp.png
Normal file
Binary file not shown.
Binary file not shown.
BIN
Android/app/src/main/res/drawable-xxhdpi/ic_close_black_24dp.png
Normal file
BIN
Android/app/src/main/res/drawable-xxhdpi/ic_close_black_24dp.png
Normal file
Binary file not shown.
BIN
Android/app/src/main/res/drawable-xxhdpi/ic_close_white_24dp.png
Normal file
BIN
Android/app/src/main/res/drawable-xxhdpi/ic_close_white_24dp.png
Normal file
Binary file not shown.
Binary file not shown.
BIN
Android/app/src/main/res/drawable-xxhdpi/ic_help_black_24dp.png
Normal file
BIN
Android/app/src/main/res/drawable-xxhdpi/ic_help_black_24dp.png
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Android/app/src/main/res/drawable-xxxhdpi/ic_add_black_24dp.png
Normal file
BIN
Android/app/src/main/res/drawable-xxxhdpi/ic_add_black_24dp.png
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Android/app/src/main/res/drawable-xxxhdpi/ic_help_black_24dp.png
Normal file
BIN
Android/app/src/main/res/drawable-xxxhdpi/ic_help_black_24dp.png
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
170
Android/app/src/main/res/drawable/ic_launcher_background.xml
Normal file
170
Android/app/src/main/res/drawable/ic_launcher_background.xml
Normal file
@@ -0,0 +1,170 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="108dp"
|
||||
android:height="108dp"
|
||||
android:viewportHeight="108"
|
||||
android:viewportWidth="108">
|
||||
<path
|
||||
android:fillColor="#26A69A"
|
||||
android:pathData="M0,0h108v108h-108z" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M9,0L9,108"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M19,0L19,108"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M29,0L29,108"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M39,0L39,108"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M49,0L49,108"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M59,0L59,108"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M69,0L69,108"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M79,0L79,108"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M89,0L89,108"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M99,0L99,108"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M0,9L108,9"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M0,19L108,19"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M0,29L108,29"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M0,39L108,39"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M0,49L108,49"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M0,59L108,59"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M0,69L108,69"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M0,79L108,79"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M0,89L108,89"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M0,99L108,99"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M19,29L89,29"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M19,39L89,39"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M19,49L89,49"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M19,59L89,59"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M19,69L89,69"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M19,79L89,79"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M29,19L29,89"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M39,19L39,89"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M49,19L49,89"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M59,19L59,89"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M69,19L69,89"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M79,19L79,89"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
</vector>
|
||||
9
Android/app/src/main/res/drawable/side_nav_bar.xml
Normal file
9
Android/app/src/main/res/drawable/side_nav_bar.xml
Normal file
@@ -0,0 +1,9 @@
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="rectangle">
|
||||
<gradient
|
||||
android:angle="135"
|
||||
android:centerColor="#009688"
|
||||
android:endColor="#00695C"
|
||||
android:startColor="#4DB6AC"
|
||||
android:type="linear" />
|
||||
</shape>
|
||||
56
Android/app/src/main/res/layout/activity_about_us.xml
Normal file
56
Android/app/src/main/res/layout/activity_about_us.xml
Normal file
@@ -0,0 +1,56 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout 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="match_parent"
|
||||
tools:context=".bookmypcr.activities.AboutUs">
|
||||
|
||||
|
||||
<android.support.design.widget.AppBarLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/maintoolbar"
|
||||
android:theme="@style/AppTheme.AppBarOverlay">
|
||||
|
||||
<android.support.v7.widget.Toolbar
|
||||
android:id="@+id/toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
android:background="?attr/colorPrimary"
|
||||
app:popupTheme="@style/AppTheme.PopupOverlay" >
|
||||
|
||||
</android.support.v7.widget.Toolbar>
|
||||
|
||||
</android.support.design.widget.AppBarLayout>
|
||||
<ScrollView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_below="@id/maintoolbar">
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:gravity="center"
|
||||
android:layout_marginTop="15dp"
|
||||
android:layout_marginRight="10dp"
|
||||
>
|
||||
<android.support.v7.widget.AppCompatImageView
|
||||
android:layout_width="match_parent"
|
||||
android:id="@+id/shanmukhaLogo"
|
||||
android:layout_height="587px" android:src="@drawable/shanmukha"/>
|
||||
<android.support.v7.widget.AppCompatTextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="15dp"
|
||||
android:layout_marginBottom="50dp"
|
||||
android:layout_gravity="center_horizontal|center"
|
||||
android:gravity="center"
|
||||
android:autoLink="all" android:clickable="true"
|
||||
android:layout_below="@+id/shanmukhaLogo"
|
||||
android:text="@string/aboutus"
|
||||
android:id="@+id/title" />
|
||||
</RelativeLayout>
|
||||
</ScrollView>
|
||||
|
||||
</RelativeLayout>
|
||||
93
Android/app/src/main/res/layout/activity_add_pcr.xml
Normal file
93
Android/app/src/main/res/layout/activity_add_pcr.xml
Normal file
@@ -0,0 +1,93 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout 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="match_parent"
|
||||
tools:context=".bookmypcr.activities.AddPCR">
|
||||
|
||||
<android.support.design.widget.AppBarLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/maintoolbar"
|
||||
android:theme="@style/AppTheme.AppBarOverlay">
|
||||
|
||||
<android.support.v7.widget.Toolbar
|
||||
android:id="@+id/toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
android:background="?attr/colorPrimary"
|
||||
app:popupTheme="@style/AppTheme.PopupOverlay" >
|
||||
|
||||
|
||||
<Button
|
||||
android:id="@+id/Save"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="right|end"
|
||||
android:background="?android:selectableItemBackground"
|
||||
android:text="Save"
|
||||
android:onClick="savePCR"/>
|
||||
|
||||
|
||||
</android.support.v7.widget.Toolbar>
|
||||
|
||||
</android.support.design.widget.AppBarLayout>
|
||||
|
||||
<android.support.v7.widget.AppCompatEditText
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginTop="15dp"
|
||||
android:layout_marginRight="50dp"
|
||||
android:hint="PCR Name"
|
||||
android:id="@+id/title"
|
||||
android:layout_below="@+id/maintoolbar"/>
|
||||
|
||||
|
||||
<android.support.v7.widget.AppCompatEditText
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginTop="15dp"
|
||||
android:layout_marginRight="50dp"
|
||||
android:id="@+id/manufacturer"
|
||||
android:layout_below="@+id/title"
|
||||
android:hint="Manufacturer Name"/>
|
||||
|
||||
|
||||
<android.support.v7.widget.AppCompatEditText
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginTop="15dp"
|
||||
android:layout_marginRight="50dp"
|
||||
android:id="@+id/model"
|
||||
android:layout_below="@+id/manufacturer"
|
||||
android:hint="Model"/>
|
||||
|
||||
|
||||
<android.support.v7.widget.AppCompatEditText
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginTop="15dp"
|
||||
android:layout_marginRight="50dp"
|
||||
android:id="@+id/location"
|
||||
android:layout_below="@+id/model"
|
||||
android:hint="Location"/>
|
||||
|
||||
|
||||
<android.support.v7.widget.AppCompatEditText
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginTop="15dp"
|
||||
android:layout_marginRight="50dp"
|
||||
android:id="@+id/comments"
|
||||
android:layout_below="@+id/location"
|
||||
android:hint="Comments"/>
|
||||
|
||||
|
||||
|
||||
</RelativeLayout>
|
||||
25
Android/app/src/main/res/layout/activity_calendar.xml
Normal file
25
Android/app/src/main/res/layout/activity_calendar.xml
Normal file
@@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<android.support.v4.widget.DrawerLayout 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:id="@+id/drawer_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:fitsSystemWindows="true"
|
||||
tools:openDrawer="start">
|
||||
|
||||
<include
|
||||
layout="@layout/app_bar_calendar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
|
||||
<android.support.design.widget.NavigationView
|
||||
android:id="@+id/nav_view"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_gravity="start"
|
||||
android:fitsSystemWindows="true"
|
||||
app:headerLayout="@layout/nav_header_calendar"
|
||||
app:menu="@menu/activity_calendar_drawer" />
|
||||
|
||||
</android.support.v4.widget.DrawerLayout>
|
||||
169
Android/app/src/main/res/layout/activity_create_lab.xml
Normal file
169
Android/app/src/main/res/layout/activity_create_lab.xml
Normal file
@@ -0,0 +1,169 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout 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="match_parent"
|
||||
tools:context=".bookmypcr.activities.CreateLab">
|
||||
<android.support.design.widget.AppBarLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/maintoolbar"
|
||||
android:theme="@style/AppTheme.AppBarOverlay">
|
||||
<android.support.v7.widget.Toolbar
|
||||
android:id="@+id/toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
android:background="?attr/colorPrimary"
|
||||
app:popupTheme="@style/AppTheme.PopupOverlay" >
|
||||
</android.support.v7.widget.Toolbar>
|
||||
</android.support.design.widget.AppBarLayout>
|
||||
<ScrollView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/maintoolbar">
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<android.support.v7.widget.AppCompatTextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="Enter Lab Details"
|
||||
android:textSize="20dp"
|
||||
android:layout_marginTop="15dp"
|
||||
android:layout_marginRight="50dp"
|
||||
android:textStyle="bold"
|
||||
android:id="@+id/labText"
|
||||
android:layout_marginLeft="10dp"/>
|
||||
|
||||
<android.support.v7.widget.AppCompatEditText
|
||||
android:layout_width="match_parent"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginTop="15dp"
|
||||
android:layout_marginRight="50dp"
|
||||
android:hint="Lab Name"
|
||||
android:layout_below="@+id/labText"
|
||||
android:layout_height="wrap_content" android:id="@+id/labName"
|
||||
/>
|
||||
<android.support.v7.widget.AppCompatEditText
|
||||
android:layout_width="match_parent"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginTop="15dp"
|
||||
android:layout_marginRight="50dp"
|
||||
android:hint="Department"
|
||||
android:layout_height="wrap_content" android:id="@+id/department"
|
||||
android:layout_below="@+id/labName"/>
|
||||
<android.support.v7.widget.AppCompatEditText
|
||||
android:layout_width="match_parent"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:hint="University"
|
||||
android:layout_marginTop="15dp"
|
||||
android:layout_marginRight="50dp"
|
||||
android:layout_height="wrap_content" android:id="@+id/university"
|
||||
android:layout_below="@+id/department"/>
|
||||
<android.support.v7.widget.AppCompatEditText
|
||||
android:layout_width="match_parent"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginTop="15dp"
|
||||
android:layout_marginRight="50dp"
|
||||
android:hint="Incharge Name"
|
||||
android:layout_height="wrap_content" android:id="@+id/incharge"
|
||||
android:layout_below="@+id/university"/>
|
||||
<android.support.v7.widget.AppCompatEditText
|
||||
android:layout_width="match_parent"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginTop="15dp"
|
||||
android:layout_marginRight="50dp"
|
||||
android:hint="Incharge Contact Number"
|
||||
android:layout_height="wrap_content" android:id="@+id/inchargeNo"
|
||||
android:inputType="phone"
|
||||
android:layout_below="@+id/incharge"/>
|
||||
<android.support.v7.widget.AppCompatEditText
|
||||
android:layout_width="match_parent"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginTop="15dp"
|
||||
android:layout_marginRight="50dp"
|
||||
android:hint="Incharge Contact Email ID"
|
||||
android:layout_height="wrap_content" android:id="@+id/inchargeEmail"
|
||||
android:inputType="textEmailAddress"
|
||||
android:layout_below="@+id/inchargeNo"/>
|
||||
|
||||
<android.support.v7.widget.AppCompatTextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="Enter PCR Details"
|
||||
android:textSize="20dp"
|
||||
android:layout_marginTop="15dp"
|
||||
android:layout_marginRight="50dp"
|
||||
android:textStyle="bold"
|
||||
android:layout_below="@+id/inchargeEmail"
|
||||
android:id="@+id/pcrText"
|
||||
android:layout_marginLeft="10dp"/>
|
||||
<android.support.v7.widget.AppCompatEditText
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="15dp"
|
||||
android:layout_marginRight="50dp"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:hint="PCR Name"
|
||||
android:id="@+id/title"
|
||||
android:layout_below="@+id/pcrText"/>
|
||||
|
||||
|
||||
<android.support.v7.widget.AppCompatEditText
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginTop="15dp"
|
||||
android:layout_marginRight="50dp"
|
||||
android:id="@+id/manufacturer"
|
||||
android:layout_below="@+id/title"
|
||||
android:hint="Manufacturer Name"/>
|
||||
|
||||
|
||||
<android.support.v7.widget.AppCompatEditText
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginTop="15dp"
|
||||
android:layout_marginRight="50dp"
|
||||
android:id="@+id/model"
|
||||
android:layout_below="@+id/manufacturer"
|
||||
android:hint="Model"/>
|
||||
|
||||
|
||||
<android.support.v7.widget.AppCompatEditText
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginTop="15dp"
|
||||
android:layout_marginRight="50dp"
|
||||
android:id="@+id/location"
|
||||
android:layout_below="@+id/model"
|
||||
android:hint="Location"/>
|
||||
|
||||
|
||||
<android.support.v7.widget.AppCompatEditText
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginTop="15dp"
|
||||
android:layout_marginRight="50dp"
|
||||
android:id="@+id/comments"
|
||||
android:layout_below="@+id/location"
|
||||
android:hint="Comments"/>
|
||||
|
||||
<Button
|
||||
android:layout_width="match_parent"
|
||||
android:layout_marginLeft="20dp"
|
||||
android:layout_marginTop="15dp"
|
||||
android:layout_marginRight="20dp"
|
||||
android:layout_below="@+id/comments"
|
||||
android:onClick="createLab"
|
||||
android:layout_gravity="center"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="Create Lab Account"/>
|
||||
</RelativeLayout>
|
||||
</ScrollView>
|
||||
</RelativeLayout>
|
||||
147
Android/app/src/main/res/layout/activity_edit_event.xml
Normal file
147
Android/app/src/main/res/layout/activity_edit_event.xml
Normal file
@@ -0,0 +1,147 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout 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="match_parent"
|
||||
tools:context=".bookmypcr.activities.EditEvent">
|
||||
|
||||
<android.support.design.widget.AppBarLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/maintoolbar"
|
||||
android:theme="@style/AppTheme.AppBarOverlay">
|
||||
|
||||
<android.support.v7.widget.Toolbar
|
||||
android:id="@+id/toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
android:background="?attr/colorPrimary"
|
||||
app:popupTheme="@style/AppTheme.PopupOverlay" >
|
||||
|
||||
|
||||
<Button
|
||||
android:id="@+id/Save"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="right|end"
|
||||
android:background="?android:selectableItemBackground"
|
||||
android:text="Save"
|
||||
android:onClick="saveEvent"/>
|
||||
|
||||
<ImageButton
|
||||
android:paddingRight="10dp"
|
||||
android:id="@+id/ImageButton01"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="right|end"
|
||||
android:src="@drawable/ic_delete_white_24dp"
|
||||
android:onClick="deleteEvent"
|
||||
android:background="?android:selectableItemBackground" />
|
||||
|
||||
</android.support.v7.widget.Toolbar>
|
||||
|
||||
</android.support.design.widget.AppBarLayout>
|
||||
|
||||
<ScrollView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" android:layout_below="@+id/maintoolbar">
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" android:id="@+id/mainLayout">
|
||||
|
||||
<android.support.v7.widget.AppCompatEditText
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginTop="15dp"
|
||||
android:layout_marginRight="50dp"
|
||||
android:hint="Add Title"
|
||||
android:id="@+id/title" />
|
||||
|
||||
<android.support.v7.widget.AppCompatTextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" android:text="From"
|
||||
android:textStyle="bold"
|
||||
android:layout_marginTop="15dp"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:textSize="20dp"
|
||||
android:id="@+id/from"
|
||||
android:layout_below="@+id/title"/>
|
||||
|
||||
<android.support.v7.widget.AppCompatTextView
|
||||
android:layout_width="150dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginTop="15dp"
|
||||
android:layout_marginRight="10dp"
|
||||
android:textSize="20dp"
|
||||
android:id="@+id/datebar"
|
||||
android:layout_below="@+id/from" />
|
||||
|
||||
<Spinner
|
||||
android:id="@+id/startTime"
|
||||
android:layout_width="150dp"
|
||||
android:layout_marginTop="15dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@+id/from"
|
||||
android:layout_toRightOf="@id/datebar"
|
||||
/>
|
||||
|
||||
|
||||
|
||||
<android.support.v7.widget.AppCompatTextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_marginTop="15dp"
|
||||
android:layout_height="wrap_content" android:text="To"
|
||||
android:textStyle="bold"
|
||||
android:textSize="20dp"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:id="@+id/to"
|
||||
android:layout_below="@+id/datebar"/>
|
||||
|
||||
<android.support.v7.widget.AppCompatTextView
|
||||
android:layout_width="150dp"
|
||||
android:layout_marginTop="15dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginRight="10dp"
|
||||
android:textSize="20dp"
|
||||
android:id="@+id/enddatebar"
|
||||
android:layout_below="@+id/to" />
|
||||
|
||||
<Spinner
|
||||
android:id="@+id/endTime"
|
||||
android:layout_width="150dp"
|
||||
android:layout_marginTop="15dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_toRightOf="@id/enddatebar"
|
||||
android:layout_below="@+id/to"
|
||||
/>
|
||||
|
||||
<android.support.v7.widget.AppCompatEditText
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginTop="15dp"
|
||||
android:layout_marginRight="50dp"
|
||||
android:id="@+id/reaction"
|
||||
android:layout_below="@+id/endTime"
|
||||
android:hint="Reaction Specification"/>
|
||||
|
||||
<android.support.v7.widget.AppCompatEditText
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="15dp"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginRight="50dp"
|
||||
android:id="@+id/comments"
|
||||
android:layout_below="@+id/reaction"
|
||||
android:hint="Additional Comments"/>
|
||||
|
||||
|
||||
<include layout="@layout/content_edit_event" />
|
||||
|
||||
</RelativeLayout>
|
||||
</ScrollView>
|
||||
</RelativeLayout>
|
||||
106
Android/app/src/main/res/layout/activity_help.xml
Normal file
106
Android/app/src/main/res/layout/activity_help.xml
Normal file
@@ -0,0 +1,106 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout 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="match_parent"
|
||||
tools:context=".bookmypcr.activities.HelpActivity">
|
||||
|
||||
|
||||
<android.support.design.widget.AppBarLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/maintoolbar"
|
||||
android:theme="@style/AppTheme.AppBarOverlay">
|
||||
|
||||
<android.support.v7.widget.Toolbar
|
||||
android:id="@+id/toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
android:background="?attr/colorPrimary"
|
||||
app:popupTheme="@style/AppTheme.PopupOverlay" >
|
||||
|
||||
</android.support.v7.widget.Toolbar>
|
||||
|
||||
</android.support.design.widget.AppBarLayout>
|
||||
<ScrollView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_below="@id/maintoolbar">
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:gravity="center"
|
||||
android:layout_marginRight="10dp"
|
||||
>
|
||||
<android.support.v7.widget.AppCompatTextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="15dp"
|
||||
android:layout_marginBottom="15dp"
|
||||
android:autoLink="all" android:clickable="true"
|
||||
android:text="@string/help1"
|
||||
android:id="@+id/q1" />
|
||||
<View android:background="#000000"
|
||||
android:layout_width = "match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:id="@+id/line1"
|
||||
android:layout_below="@+id/q1"/>
|
||||
<android.support.v7.widget.AppCompatTextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="15dp"
|
||||
android:layout_marginBottom="15dp"
|
||||
android:layout_below="@+id/line1"
|
||||
android:autoLink="all" android:clickable="true"
|
||||
android:text="@string/help2"
|
||||
android:id="@+id/q2" />
|
||||
<View android:background="#000000"
|
||||
android:layout_width = "match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:id="@+id/line2"
|
||||
android:layout_below="@+id/q2"/>
|
||||
<android.support.v7.widget.AppCompatTextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="15dp"
|
||||
android:layout_marginBottom="15dp"
|
||||
android:layout_below="@+id/line2"
|
||||
android:autoLink="all" android:clickable="true"
|
||||
android:text="@string/help3"
|
||||
android:id="@+id/q3" />
|
||||
<View android:background="#000000"
|
||||
android:layout_width = "match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:id="@+id/line3"
|
||||
android:layout_below="@+id/q3"/>
|
||||
<android.support.v7.widget.AppCompatTextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="15dp"
|
||||
android:layout_marginBottom="15dp"
|
||||
android:layout_below="@+id/line3"
|
||||
android:autoLink="all" android:clickable="true"
|
||||
android:text="@string/help4"
|
||||
android:id="@+id/q4" />
|
||||
<View android:background="#000000"
|
||||
android:layout_width = "match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:id="@+id/line4"
|
||||
android:layout_below="@+id/q4"/>
|
||||
<android.support.v7.widget.AppCompatTextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@+id/line4"
|
||||
android:layout_marginTop="15dp"
|
||||
android:layout_marginBottom="15dp"
|
||||
android:autoLink="all" android:clickable="true"
|
||||
android:text="@string/help5"
|
||||
android:id="@+id/q5" />
|
||||
|
||||
</RelativeLayout>
|
||||
</ScrollView>
|
||||
|
||||
|
||||
</RelativeLayout>
|
||||
48
Android/app/src/main/res/layout/activity_join_lab.xml
Normal file
48
Android/app/src/main/res/layout/activity_join_lab.xml
Normal file
@@ -0,0 +1,48 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout 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="match_parent"
|
||||
tools:context=".bookmypcr.activities.JoinLab">
|
||||
<android.support.design.widget.AppBarLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/maintoolbar"
|
||||
android:theme="@style/AppTheme.AppBarOverlay">
|
||||
<android.support.v7.widget.Toolbar
|
||||
android:id="@+id/toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
android:background="?attr/colorPrimary"
|
||||
app:popupTheme="@style/AppTheme.PopupOverlay" >
|
||||
</android.support.v7.widget.Toolbar>
|
||||
</android.support.design.widget.AppBarLayout>
|
||||
<android.support.v7.widget.AppCompatEditText
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/searchValue"
|
||||
android:layout_below="@id/maintoolbar"
|
||||
android:hint="Enter Lab Name"
|
||||
android:gravity="center"
|
||||
android:padding="@dimen/activity_horizontal_margin"
|
||||
/>
|
||||
<android.support.v7.widget.AppCompatButton
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="Search"
|
||||
android:id="@+id/search_button"
|
||||
android:layout_below="@+id/searchValue"
|
||||
android:padding="@dimen/activity_horizontal_margin"
|
||||
android:onClick="search"/>
|
||||
<ScrollView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_below="@+id/search_button"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_height="wrap_content">
|
||||
<ListView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/resultList" />
|
||||
</ScrollView>
|
||||
</RelativeLayout>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user