Skip to content

Commit 9e19c3d

Browse files
Harshal LehriHarshal Lehri
authored andcommitted
User able to send messages to Parse Database. Next to include Chat Activity
1 parent 4342e57 commit 9e19c3d

16 files changed

+1088
-27
lines changed

app/src/main/AndroidManifest.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,8 @@
169169
android:name=".MapsActivity"
170170
android:label="@string/title_activity_maps" >
171171
</activity>
172+
<activity android:name=".MessagingActivity" >
173+
</activity>
172174
</application>
173175

174176
</manifest>

app/src/main/java/edu/upenn/cis573/jobboard/JobCreationActivity.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -135,10 +135,13 @@ public void submitJob(View view) {
135135

136136
Criteria criteria = new Criteria();
137137
try {
138+
if(criteria != null){
138139
Location location = locationManager.getLastKnownLocation(locationManager.getBestProvider(criteria, false));
139140
if(location!=null){
140-
latitude=Double.toString(location.getLatitude());
141-
longitude=Double.toString(location.getLongitude());}
141+
latitude=Double.toString(location.getLatitude());
142+
longitude=Double.toString(location.getLongitude());
143+
}
144+
}
142145
}
143146
catch(SecurityException s)
144147
{

app/src/main/java/edu/upenn/cis573/jobboard/JobDetailsActivity.java

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import android.view.Menu;
1010
import android.view.MenuItem;
1111
import android.view.View;
12+
import android.widget.Button;
1213
import android.widget.TextView;
1314
import android.widget.Toast;
1415

@@ -85,10 +86,26 @@ public void done(Job o, ParseException e) {
8586
TextView buttonTitle = (TextView) findViewById(R.id.Request);
8687
if (isJobDoer) {
8788
//This job belongs to them.
88-
buttonTitle.setText("Completed");
89+
if(doer == null)
90+
{
91+
buttonTitle.setText("Unassigned");
92+
buttonTitle.setEnabled(false);
93+
Button sendbutton = (Button)findViewById(R.id.contactJobPosterButton);
94+
sendbutton.setVisibility(View.INVISIBLE);
95+
}
96+
else {
97+
buttonTitle.setText("Completed");
98+
buttonTitle.setEnabled(true);
99+
Button sendbutton = (Button)findViewById(R.id.contactJobPosterButton);
100+
sendbutton.setVisibility(View.VISIBLE);
101+
}
89102
isJobDoer();
90-
} else {
103+
}
104+
else {
91105
buttonTitle.setText("Request Job");
106+
buttonTitle.setEnabled(true);
107+
Button sendbutton = (Button)findViewById(R.id.contactJobPosterButton);
108+
sendbutton.setVisibility(View.VISIBLE);
92109
}
93110

94111
}
@@ -252,6 +269,19 @@ public void done(ParseUser o, ParseException e) {
252269

253270
}
254271

272+
public void openMessaging(View view)
273+
{
274+
if(!isJobDoer){
275+
Intent intent = new Intent(this, MessagingActivity.class);
276+
intent.putExtra("MessageFrom",userId);
277+
intent.putExtra("MessageTo",posterID);
278+
startActivity(intent);
279+
}
280+
else
281+
{
282+
Toast.makeText(getApplicationContext(),"No one", Toast.LENGTH_LONG).show();
283+
}
284+
}
255285
//button logic to go to the homepage screen
256286
/*public void displayHomepage(View view) {
257287
Intent intent = new Intent(this, HomepageActivity.class);
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package edu.upenn.cis573.jobboard;
2+
3+
/**
4+
* Created by harshal_lehri on 10/30/15.
5+
*/
6+
import com.parse.ParseACL;
7+
import com.parse.ParseGeoPoint;
8+
import com.parse.ParseObject;
9+
10+
import android.location.Location;
11+
import android.location.LocationListener;
12+
13+
import com.parse.ParseClassName;
14+
import com.parse.ParseUser;
15+
16+
import java.util.List;
17+
18+
@ParseClassName("Messages")
19+
public class Messages extends ParseObject {
20+
21+
public Messages()
22+
{
23+
24+
}
25+
public Messages(String messageFrom, String messageTo, String message)
26+
{
27+
put("Message_From",messageFrom);
28+
put("Message_To",messageTo);
29+
put("Message",message);
30+
ParseACL acl = new ParseACL();
31+
acl.setPublicReadAccess(true);
32+
acl.setPublicWriteAccess(true);
33+
}
34+
}
35+
36+
Lines changed: 163 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,163 @@
1+
package edu.upenn.cis573.jobboard;
2+
3+
import android.content.Intent;
4+
import android.graphics.Color;
5+
import android.support.v7.app.AppCompatActivity;
6+
import android.os.Bundle;
7+
import android.text.TextUtils;
8+
import android.util.Log;
9+
import android.view.Gravity;
10+
import android.view.View;
11+
import android.view.ViewGroup;
12+
import android.widget.AdapterView;
13+
import android.widget.ArrayAdapter;
14+
import android.widget.EditText;
15+
import android.widget.ListView;
16+
import android.widget.TextView;
17+
import android.widget.Toast;
18+
19+
import com.parse.FindCallback;
20+
import com.parse.ParseException;
21+
import com.parse.ParseObject;
22+
import com.parse.ParseQuery;
23+
import com.parse.ParseUser;
24+
25+
import java.util.ArrayList;
26+
import java.util.List;
27+
28+
public class MessagingActivity extends AppCompatActivity {
29+
30+
String message_from_user;
31+
String message_to_user;
32+
String message;
33+
String messageFromUserName;
34+
String messageToUserName;
35+
String current_user;
36+
ArrayList<String> messageList = null;
37+
ListView messageListView;
38+
ArrayAdapter<String> messageListAdapter;
39+
ArrayList<String> messageBackgroundColor = null;
40+
@Override
41+
42+
protected void onCreate(Bundle savedInstanceState) {
43+
super.onCreate(savedInstanceState);
44+
Intent intent = getIntent();
45+
message_from_user = intent.getStringExtra("MessageFrom");
46+
message_to_user = intent.getStringExtra("MessageTo");
47+
setContentView(R.layout.activity_messaging);
48+
49+
refreshChat();
50+
51+
}
52+
53+
private void refreshChat() {
54+
ParseQuery<ParseUser> user = ParseUser.getQuery();
55+
try {
56+
messageFromUserName = user.get(message_from_user).getUsername();
57+
messageToUserName = user.get(message_to_user).getUsername();
58+
current_user = ParseUser.getCurrentUser().getUsername();
59+
} catch (Exception e) {
60+
61+
}
62+
63+
64+
ParseQuery<Messages> query = ParseQuery.getQuery("Messages");
65+
66+
messageList = new ArrayList<String>();
67+
68+
List<Messages> messageObjectsFromDatabase = null;
69+
messageListView = (ListView) findViewById(R.id.message_list);
70+
try {
71+
messageObjectsFromDatabase = query.find();
72+
} catch (Exception e) {
73+
74+
}
75+
if (messageObjectsFromDatabase != null) {
76+
for (Messages m : messageObjectsFromDatabase) {
77+
final String messageFrom = m.getString("Message_From");
78+
final String messageTo = m.getString("Message_To");
79+
final String message_from_database = m.getString("Message");
80+
81+
if ((!messageFrom.equals(message_from_user)) || (!messageTo.equals(message_to_user))) {
82+
//We don't want to show this to anyone
83+
continue;
84+
}
85+
86+
//Thread used to ensure list appears properly each time it is loaded
87+
//Also adds each item to list
88+
runOnUiThread(new Runnable() {
89+
public void run() {
90+
91+
if (messageFrom.equals(message_from_user)){
92+
messageList.add(messageFromUserName + "says :\n" + message_from_database);
93+
}
94+
else
95+
messageList.add(messageToUserName + "says :\n" + message_from_database);
96+
97+
}
98+
});
99+
}
100+
101+
}
102+
103+
messageListAdapter = new ArrayAdapter<String>(
104+
this,
105+
android.R.layout.simple_list_item_2,
106+
android.R.id.text1,
107+
messageList) {
108+
109+
@Override
110+
public View getView(int position, View convertView, ViewGroup parent) {
111+
112+
// Must always return just a View.
113+
View view = super.getView(position, convertView, parent);
114+
115+
// If you look at the android.R.layout.simple_list_item_2 source, you'll see
116+
// it's a TwoLineListItem with 2 TextViews - text1 and text2.
117+
//TwoLineListItem listItem = (TwoLineListItem) view;
118+
TextView text1 = (TextView) view.findViewById(android.R.id.text1);
119+
TextView text2 = (TextView) view.findViewById(android.R.id.text2);
120+
//text2.setEllipsize(TextUtils.TruncateAt.END);
121+
//text2.setGravity(Gravity.RIGHT);
122+
//text2.setTextColor(Color.parseColor("#dc4e00"));
123+
124+
text1.setTextColor(Color.parseColor("#89cede"));
125+
text1.setSingleLine(false);
126+
text1.setMaxWidth(10);
127+
text1.setText(messageList.get(position));
128+
text2.setPadding(50, 0, 0, 0);
129+
return view;
130+
}
131+
};
132+
133+
messageListView.setAdapter(messageListAdapter);
134+
messageListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
135+
@Override
136+
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
137+
138+
}
139+
});
140+
141+
messageListView.setStackFromBottom(true);
142+
}
143+
144+
public void sendMessage(View view)
145+
{
146+
147+
EditText message_text = (EditText)findViewById(R.id.message_edit_text);
148+
message = String.valueOf(message_text.getText());
149+
150+
//Messages m = new Messages(message_from_user,message_to_user,message);
151+
//m.saveInBackground();
152+
ParseObject messageObject = ParseObject.create("Messages");
153+
messageObject.put("Message_From", message_from_user); //string
154+
messageObject.put("Message_To", message_to_user); //integer
155+
messageObject.put("Message", message); //variable
156+
messageObject.saveInBackground();
157+
message_text.setText("");
158+
messageList.add(messageFromUserName + "says :\n" + message);
159+
messageListAdapter.notifyDataSetChanged();
160+
161+
}
162+
163+
}

app/src/main/java/edu/upenn/cis573/jobboard/NotificationsPageActivity.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import com.parse.GetCallback;
2626
import com.parse.Parse;
2727
import com.parse.ParseException;
28+
import com.parse.ParseObject;
2829
import com.parse.ParseQuery;
2930
import com.parse.ParseUser;
3031

@@ -59,6 +60,8 @@ protected void onCreate(Bundle savedInstanceState) {
5960
{
6061
Log.v("Parse ERROR","INSIDE CATCH");
6162
}
63+
64+
6265
setContentView(R.layout.activity_notifications_page);
6366
super.init();
6467
super.enable("All");

app/src/main/java/edu/upenn/cis573/jobboard/ParseApplication.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public void onCreate() {
2525
//Old Parse Login
2626
//Parse.initialize(this, "rm3H0T94rlsEFyfEEojuSv29XSWrPmmzfLVCWsFb", "9tRjp0biQVhmD8nDSSKEq0jgLx6WSemFP1fOgsbc");
2727
ParseObject.registerSubclass(Job.class);
28-
28+
ParseObject.registerSubclass(Messages.class);
2929
ParseACL defaultACL = new ParseACL();
3030
// Optionally enable public read access.
3131
// defaultACL.setPublicReadAccess(true);

app/src/main/java/edu/upenn/cis573/jobboard/ParseStarterProjectActivity.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,9 @@ public void onCreate(Bundle savedInstanceState) {
2626

2727
ParseAnalytics.trackAppOpenedInBackground(getIntent());
2828

29-
ParseObject testObject = new ParseObject("TestObject");
30-
testObject.put("foo", "bar");
31-
testObject.saveInBackground();
29+
//ParseObject testObject = new ParseObject("TestObject");
30+
//testObject.put("foo", "bar");
31+
//testObject.saveInBackground();
3232

3333
// Edited by chirags
3434
//LocationFetcher locationObj=new LocationFetcher();
7.15 KB
Loading

app/src/main/res/layout/activity_job_details.xml

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -289,20 +289,32 @@
289289
</LinearLayout>
290290

291291

292-
<!--<Button
293-
android:id="@+id/buttonDashboard"
294-
android:layout_width="40dp"
295-
android:layout_height="40dp"
296-
android:background="@drawable/dashboard_icon"
297-
android:layout_marginRight="15dp"
298-
android:layout_marginLeft="0dp"
299-
android:onClick="displayHomepage"
300-
android:layout_alignParentBottom="true"
301-
/>-->
302292

303293
</RelativeLayout>
304294

305295
</ScrollView>
296+
<LinearLayout
297+
android:layout_width="wrap_content"
298+
android:layout_height="match_parent"
299+
android:layout_centerHorizontal="true"
300+
android:id="@+id/linearLayout_contact_job"
301+
>
302+
<Button
303+
android:id="@+id/contactJobPosterButton"
304+
android:layout_width="wrap_content"
305+
android:layout_height="wrap_content"
306+
android:layout_centerHorizontal="true"
307+
android:layout_marginLeft="20dp"
308+
android:layout_marginBottom="20dp"
309+
android:paddingRight="20dp"
310+
android:paddingLeft="20dp"
311+
android:text="Contact Job Poster"
312+
android:textSize="13dp"
313+
android:onClick="openMessaging"
314+
style="@style/buttonBackground"
315+
android:layout_gravity="bottom" />
316+
/>
317+
</LinearLayout>
306318
<include layout = "@layout/bottom_menu"
307319
/>
308320
</RelativeLayout>

0 commit comments

Comments
 (0)