Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
J
JoinTheCity
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Rafal
JoinTheCity
Commits
8c38aa39
Commit
8c38aa39
authored
Jan 17, 2016
by
adam
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
3/4 adam
parent
4c7196ee
Hide whitespace changes
Inline
Side-by-side
Showing
24 changed files
with
874 additions
and
40 deletions
+874
-40
AndroidManifest.xml
JoinTheCityAPP/app/src/main/AndroidManifest.xml
+16
-7
BaseActivityWithMenu.java
...erlineofcode/com/jointhecityapp/BaseActivityWithMenu.java
+51
-0
FriendsActivity.java
...anotherlineofcode/com/jointhecityapp/FriendsActivity.java
+1
-1
LoginAndRegistrationActivity.java
...code/com/jointhecityapp/LoginAndRegistrationActivity.java
+1
-1
MainActivity.java
...va/anotherlineofcode/com/jointhecityapp/MainActivity.java
+1
-29
ChatActivity.java
...e/com/jointhecityapp/discussion_support/ChatActivity.java
+132
-0
Discussion.java
...ode/com/jointhecityapp/discussion_support/Discussion.java
+75
-0
DiscussionActivity.java
...jointhecityapp/discussion_support/DiscussionActivity.java
+136
-0
Message.java
...ofcode/com/jointhecityapp/discussion_support/Message.java
+40
-0
MessageViewAdapter.java
...jointhecityapp/discussion_support/MessageViewAdapter.java
+65
-0
RecyclerDiscussionAdapter.java
...cityapp/discussion_support/RecyclerDiscussionAdapter.java
+79
-0
Tag.java
...lineofcode/com/jointhecityapp/discussion_support/Tag.java
+63
-0
in_message_bg.9.png
JoinTheCityAPP/app/src/main/res/drawable/in_message_bg.9.png
+0
-0
out_message_bg.9.png
...TheCityAPP/app/src/main/res/drawable/out_message_bg.9.png
+0
-0
activity_base_activity_with_menu.xml
.../src/main/res/layout/activity_base_activity_with_menu.xml
+34
-0
activity_chat.xml
JoinTheCityAPP/app/src/main/res/layout/activity_chat.xml
+65
-0
activity_discussion.xml
...heCityAPP/app/src/main/res/layout/activity_discussion.xml
+20
-0
bubble_message.xml
JoinTheCityAPP/app/src/main/res/layout/bubble_message.xml
+39
-0
content_base_activity_with_menu.xml
...p/src/main/res/layout/content_base_activity_with_menu.xml
+15
-0
discussion_list_view.xml
...eCityAPP/app/src/main/res/layout/discussion_list_view.xml
+22
-0
menu_chat.xml
JoinTheCityAPP/app/src/main/res/menu/menu_chat.xml
+7
-0
menu_main.xml
JoinTheCityAPP/app/src/main/res/menu/menu_main.xml
+3
-1
strings.xml
JoinTheCityAPP/app/src/main/res/values/strings.xml
+5
-1
styles.xml
JoinTheCityAPP/app/src/main/res/values/styles.xml
+4
-0
No files found.
JoinTheCityAPP/app/src/main/AndroidManifest.xml
View file @
8c38aa39
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android=
"http://schemas.android.com/apk/res/android"
<manifest
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:tools=
"http://schemas.android.com/tools"
xmlns:tools=
"http://schemas.android.com/tools"
package=
"anotherlineofcode.com.jointhecityapp"
>
package=
"anotherlineofcode.com.jointhecityapp"
>
<uses-permission
android:name=
"android.permission.INTERNET"
/>
<uses-permission
android:name=
"android.permission.INTERNET"
/>
...
@@ -17,11 +17,11 @@
...
@@ -17,11 +17,11 @@
android:icon=
"@mipmap/ic_launcher"
android:icon=
"@mipmap/ic_launcher"
android:label=
"@string/app_name"
android:label=
"@string/app_name"
android:theme=
"@style/Theme.AppCompat.Light"
android:theme=
"@style/Theme.AppCompat.Light"
tools:replace=
"android:icon"
>
tools:replace=
"android:icon"
>
<activity
<activity
android:name=
".MainActivity"
android:name=
".MainActivity"
android:label=
"@string/app_name"
android:label=
"@string/app_name"
android:screenOrientation=
"portrait"
>
android:screenOrientation=
"portrait"
>
<intent-filter>
<intent-filter>
<action
android:name=
"android.intent.action.MAIN"
/>
<action
android:name=
"android.intent.action.MAIN"
/>
...
@@ -30,8 +30,7 @@
...
@@ -30,8 +30,7 @@
</activity>
</activity>
<activity
<activity
android:name=
".LoginAndRegistrationActivity"
android:name=
".LoginAndRegistrationActivity"
android:label=
"@string/title_activity_login_and_registration"
>
android:label=
"@string/title_activity_login_and_registration"
></activity>
</activity>
<!--
<!--
The API key for Google Maps-based APIs is defined as a string resource.
The API key for Google Maps-based APIs is defined as a string resource.
(See the file "res/values/google_maps_api.xml").
(See the file "res/values/google_maps_api.xml").
...
@@ -46,7 +45,7 @@
...
@@ -46,7 +45,7 @@
<activity
<activity
android:name=
".MapsActivity"
android:name=
".MapsActivity"
android:label=
"@string/title_activity_maps"
>
android:label=
"@string/title_activity_maps"
>
<meta-data
<meta-data
android:name=
"android.support.PARENT_ACTIVITY"
android:name=
"android.support.PARENT_ACTIVITY"
android:value=
"anotherlineofcode.com.jointhecityapp.MainActivity"
/>
android:value=
"anotherlineofcode.com.jointhecityapp.MainActivity"
/>
...
@@ -55,11 +54,21 @@
...
@@ -55,11 +54,21 @@
android:name=
".FriendsActivity"
android:name=
".FriendsActivity"
android:label=
"@string/title_activity_friends"
android:label=
"@string/title_activity_friends"
android:parentActivityName=
".MainActivity"
android:parentActivityName=
".MainActivity"
android:theme=
"@style/Theme.AppCompat.Light.NoActionBar"
>
android:theme=
"@style/Theme.AppCompat.Light.NoActionBar"
>
<meta-data
<meta-data
android:name=
"android.support.PARENT_ACTIVITY"
android:name=
"android.support.PARENT_ACTIVITY"
android:value=
"anotherlineofcode.com.jointhecityapp.MainActivity"
/>
android:value=
"anotherlineofcode.com.jointhecityapp.MainActivity"
/>
</activity>
</activity>
<activity
android:name=
".discussion_support.ChatActivity"
android:label=
"@string/title_activity_chat"
></activity>
<activity
android:name=
".discussion_support.DiscussionActivity"
android:label=
"DiscussionActivity"
></activity>
<activity
android:name=
".BaseActivityWithMenu"
android:label=
"@string/title_activity_base_activity_with_menu"
android:theme=
"@style/Theme.AppCompat.Light.NoActionBar"
></activity>
</application>
</application>
</manifest>
</manifest>
JoinTheCityAPP/app/src/main/java/anotherlineofcode/com/jointhecityapp/BaseActivityWithMenu.java
0 → 100644
View file @
8c38aa39
package
anotherlineofcode
.
com
.
jointhecityapp
;
import
android.content.Intent
;
import
android.os.Bundle
;
import
android.support.v7.app.AppCompatActivity
;
import
android.view.Menu
;
import
android.view.MenuItem
;
import
anotherlineofcode.com.jointhecityapp.discussion_support.DiscussionActivity
;
public
class
BaseActivityWithMenu
extends
AppCompatActivity
{
@Override
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
setContentView
(
R
.
layout
.
activity_base_activity_with_menu
);
}
@Override
public
boolean
onOptionsItemSelected
(
MenuItem
item
)
{
int
id
=
item
.
getItemId
();
if
(
id
==
R
.
id
.
map_view
)
{
Intent
intent
=
new
Intent
(
this
,
MapsActivity
.
class
);
startActivity
(
intent
);
return
true
;
}
if
(
id
==
R
.
id
.
friends
)
{
Intent
intent
=
new
Intent
(
this
,
FriendsActivity
.
class
);
startActivity
(
intent
);
return
true
;
}
if
(
id
==
R
.
id
.
messages
)
{
Intent
intent
=
new
Intent
(
this
,
DiscussionActivity
.
class
);
startActivity
(
intent
);
return
true
;
}
return
super
.
onOptionsItemSelected
(
item
);
}
@Override
public
boolean
onCreateOptionsMenu
(
Menu
menu
)
{
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater
().
inflate
(
R
.
menu
.
menu_main
,
menu
);
return
true
;
}
}
JoinTheCityAPP/app/src/main/java/anotherlineofcode/com/jointhecityapp/FriendsActivity.java
View file @
8c38aa39
...
@@ -7,7 +7,7 @@ import android.support.v7.app.AppCompatActivity;
...
@@ -7,7 +7,7 @@ import android.support.v7.app.AppCompatActivity;
import
android.support.v7.widget.Toolbar
;
import
android.support.v7.widget.Toolbar
;
import
android.view.View
;
import
android.view.View
;
public
class
FriendsActivity
extends
AppCompatActivity
{
public
class
FriendsActivity
extends
BaseActivityWithMenu
{
@Override
@Override
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
...
...
JoinTheCityAPP/app/src/main/java/anotherlineofcode/com/jointhecityapp/LoginAndRegistrationActivity.java
View file @
8c38aa39
...
@@ -26,7 +26,7 @@ import org.json.JSONObject;
...
@@ -26,7 +26,7 @@ import org.json.JSONObject;
import
cn.pedant.SweetAlert.SweetAlertDialog
;
import
cn.pedant.SweetAlert.SweetAlertDialog
;
import
cz.msebera.android.httpclient.Header
;
import
cz.msebera.android.httpclient.Header
;
public
class
LoginAndRegistrationActivity
extends
AppCompatActivity
{
public
class
LoginAndRegistrationActivity
extends
BaseActivityWithMenu
{
private
AsyncHttpClient
client
;
private
AsyncHttpClient
client
;
private
SharedPreferences
sharedPreferences
;
private
SharedPreferences
sharedPreferences
;
...
...
JoinTheCityAPP/app/src/main/java/anotherlineofcode/com/jointhecityapp/MainActivity.java
View file @
8c38aa39
...
@@ -18,7 +18,7 @@ import java.util.ArrayList;
...
@@ -18,7 +18,7 @@ import java.util.ArrayList;
import
java.util.List
;
import
java.util.List
;
public
class
MainActivity
extends
AppCompatActivity
{
public
class
MainActivity
extends
BaseActivityWithMenu
{
public
final
static
int
LOGIN_REQUEST
=
1
;
public
final
static
int
LOGIN_REQUEST
=
1
;
private
MapFragment
mMapFragment
;
private
MapFragment
mMapFragment
;
...
@@ -47,7 +47,6 @@ public class MainActivity extends AppCompatActivity {
...
@@ -47,7 +47,6 @@ public class MainActivity extends AppCompatActivity {
if
(
savedInstanceState
==
null
)
{
if
(
savedInstanceState
==
null
)
{
// Add header and main menu fragments
// Add header and main menu fragments
getFragmentManager
().
beginTransaction
().
add
(
R
.
id
.
content
,
new
MainContentFragment
(),
"MainContentFragment"
).
commit
();
}
}
List
<
ApiObject
>
rowListItem
=
getAllItemList
();
List
<
ApiObject
>
rowListItem
=
getAllItemList
();
...
@@ -99,32 +98,5 @@ public class MainActivity extends AppCompatActivity {
...
@@ -99,32 +98,5 @@ public class MainActivity extends AppCompatActivity {
return
!
sharedPreferences
.
getString
(
"token"
,
""
).
isEmpty
();
return
!
sharedPreferences
.
getString
(
"token"
,
""
).
isEmpty
();
}
}
@Override
public
boolean
onCreateOptionsMenu
(
Menu
menu
)
{
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater
().
inflate
(
R
.
menu
.
menu_main
,
menu
);
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
();
if
(
id
==
R
.
id
.
map_view
)
{
Intent
intent
=
new
Intent
(
this
,
MapsActivity
.
class
);
startActivity
(
intent
);
return
true
;
}
if
(
id
==
R
.
id
.
friends
)
{
Intent
intent
=
new
Intent
(
this
,
FriendsActivity
.
class
);
startActivity
(
intent
);
return
true
;
}
return
super
.
onOptionsItemSelected
(
item
);
}
}
}
JoinTheCityAPP/app/src/main/java/anotherlineofcode/com/jointhecityapp/discussion_support/ChatActivity.java
0 → 100644
View file @
8c38aa39
package
anotherlineofcode
.
com
.
jointhecityapp
.
discussion_support
;
import
android.content.Intent
;
import
android.os.Bundle
;
import
android.support.v7.widget.LinearLayoutManager
;
import
android.support.v7.widget.RecyclerView
;
import
android.util.Log
;
import
com.loopj.android.http.AsyncHttpClient
;
import
com.loopj.android.http.AsyncHttpResponseHandler
;
import
com.loopj.android.http.RequestParams
;
import
org.json.JSONException
;
import
org.json.JSONObject
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.List
;
import
anotherlineofcode.com.jointhecityapp.BaseActivityWithMenu
;
import
anotherlineofcode.com.jointhecityapp.JSONParser
;
import
anotherlineofcode.com.jointhecityapp.R
;
import
cz.msebera.android.httpclient.Header
;
public
class
ChatActivity
extends
BaseActivityWithMenu
{
private
String
mDiscussionInfoLink
;
private
AsyncHttpClient
mHttpClient
;
private
Discussion
mDiscussion
;
private
List
<
Message
>
mMessages
;
private
RecyclerView
mChatView
;
private
RecyclerView
.
LayoutManager
mLayoutManager
;
@Override
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
setContentView
(
R
.
layout
.
activity_chat
);
Intent
inputIntent
=
getIntent
();
mDiscussionInfoLink
=
inputIntent
.
getExtras
().
getString
(
getString
(
R
.
string
.
discussion_link
));
mChatView
=
(
RecyclerView
)
findViewById
(
R
.
id
.
chat_recycler_view
);
mChatView
.
setHasFixedSize
(
true
);
mMessages
=
new
ArrayList
<
Message
>();
mLayoutManager
=
new
LinearLayoutManager
(
ChatActivity
.
this
);
MessageViewAdapter
mMessageViewAdapter
=
new
MessageViewAdapter
(
mMessages
);
mChatView
.
setAdapter
(
mMessageViewAdapter
);
mChatView
.
setLayoutManager
(
mLayoutManager
);
getDiscusionInfo
();
}
private
void
getDiscusionInfo
(){
mHttpClient
=
new
AsyncHttpClient
();
mHttpClient
.
get
(
mDiscussionInfoLink
,
new
AsyncHttpResponseHandler
()
{
@Override
public
void
onSuccess
(
int
statusCode
,
Header
[]
headers
,
byte
[]
responseBody
)
{
Log
.
i
(
"info"
,
"Successfuly got tags from server"
);
JSONObject
jsonDiscussion
=
JSONParser
.
parseObject
(
responseBody
);
mDiscussion
=
new
Discussion
(
jsonDiscussion
);
Log
.
i
(
"info"
,
"got discussion "
+
mDiscussion
.
toString
());
getMessages
();
}
@Override
public
void
onFailure
(
int
statusCode
,
Header
[]
headers
,
byte
[]
responseBody
,
Throwable
error
)
{
Log
.
i
(
"error"
,
"Failure while getting tags from server"
);
Log
.
i
(
"error"
,
error
.
toString
());
}
});
};
private
void
getMessages
(){
for
(
String
messageLink:
mDiscussion
.
getMessages
()){
AsyncHttpClient
client
=
new
AsyncHttpClient
();
client
.
get
(
messageLink
,
new
AsyncHttpResponseHandler
(){
@Override
public
void
onSuccess
(
int
statusCode
,
Header
[]
headers
,
byte
[]
responseBody
)
{
JSONObject
jsonResponse
=
JSONParser
.
parseObject
(
responseBody
);
try
{
mMessages
.
add
(
new
Message
(
jsonResponse
));
}
catch
(
JSONException
e
){
e
.
printStackTrace
();
}
updateView
();
}
@Override
public
void
onFailure
(
int
statusCode
,
Header
[]
headers
,
byte
[]
responseBody
,
Throwable
error
)
{
Log
.
i
(
"error"
,
"We have a failure"
);
Log
.
i
(
"error"
,
"Error: "
+
error
.
toString
());
}
});
}
}
private
void
updateView
(){
// Messages may not arive in proper sequence
// Collections.sort(mMessages, (m1, m2) -> m1.getId() > m2.getId());
MessageViewAdapter
mMessageViewAdapter
=
new
MessageViewAdapter
(
mMessages
);
mChatView
.
setAdapter
(
mMessageViewAdapter
);
}
private
void
sendMessage
(
String
text
){
AsyncHttpClient
client
=
new
AsyncHttpClient
();
RequestParams
requestParams
=
new
RequestParams
();
requestParams
.
put
(
"text"
,
text
);
requestParams
.
put
(
"user"
,
"Default user"
);
requestParams
.
put
(
"created_at"
,
)
client
.
post
()
}
}
JoinTheCityAPP/app/src/main/java/anotherlineofcode/com/jointhecityapp/discussion_support/Discussion.java
0 → 100644
View file @
8c38aa39
package
anotherlineofcode
.
com
.
jointhecityapp
.
discussion_support
;
import
org.json.JSONArray
;
import
org.json.JSONException
;
import
org.json.JSONObject
;
import
java.util.ArrayList
;
import
java.util.Collection
;
import
java.util.List
;
/**
* Created by adam on 12.01.16.
*/
public
class
Discussion
{
// Discussion title
private
String
mQuestion
;
// Discussion owner
private
String
mUser
;
private
String
mUserLink
;
// Discussion category
private
String
mTag
;
private
String
mDiscussionLink
;
private
ArrayList
<
String
>
mMessages
;
public
Discussion
(){
mQuestion
=
"Default question"
;
mUser
=
"Unknown"
;
mTag
=
"Default tag"
;
mDiscussionLink
=
"127.0.0.1"
;
}
public
void
getAuthorFromServer
(){
}
public
Discussion
(
JSONObject
json
){
try
{
mQuestion
=
(
String
)
json
.
get
(
"question"
);
mUserLink
=
(
String
)
json
.
get
(
"user"
);
mTag
=
(
String
)
json
.
get
(
"tag"
);
mDiscussionLink
=
(
String
)
json
.
get
(
"url"
);
mMessages
=
new
ArrayList
<
String
>();
JSONArray
jsonArray
=
json
.
getJSONArray
(
"message"
);
for
(
int
i
=
0
;
i
<
jsonArray
.
length
();
i
++)
{
mMessages
.
add
(
jsonArray
.
getString
(
i
)
);
}
}
catch
(
JSONException
e
)
{
e
.
printStackTrace
();
}
getAuthorFromServer
();
}
@Override
public
String
toString
(){
return
mQuestion
;
}
public
String
getUser
(){
return
mUser
;
}
public
String
getTag
(){
return
mTag
;
}
public
String
getDiscussionLink
(){
return
mDiscussionLink
;}
public
List
<
String
>
getMessages
(){
return
mMessages
;}
}
JoinTheCityAPP/app/src/main/java/anotherlineofcode/com/jointhecityapp/discussion_support/DiscussionActivity.java
0 → 100644
View file @
8c38aa39
package
anotherlineofcode
.
com
.
jointhecityapp
.
discussion_support
;
import
android.os.Bundle
;
import
android.support.v7.widget.LinearLayoutManager
;
import
android.support.v7.widget.RecyclerView
;
import
android.util.Log
;
import
com.loopj.android.http.AsyncHttpClient
;
import
com.loopj.android.http.AsyncHttpResponseHandler
;
import
org.json.JSONArray
;
import
org.json.JSONException
;
import
org.json.JSONObject
;
import
java.util.ArrayList
;
import
java.util.List
;
import
anotherlineofcode.com.jointhecityapp.BaseActivityWithMenu
;
import
anotherlineofcode.com.jointhecityapp.JSONParser
;
import
anotherlineofcode.com.jointhecityapp.R
;
import
cz.msebera.android.httpclient.Header
;
public
class
DiscussionActivity
extends
BaseActivityWithMenu
{
private
List
<
Tag
>
tags
;
private
ArrayList
<
Discussion
>
mDiscussionsList
;
private
AsyncHttpClient
mHttpClient
;
private
RecyclerView
mRecyclerView
;
private
RecyclerView
.
Adapter
mAdapter
;
private
RecyclerView
.
LayoutManager
mLayoutManager
;
@Override
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
Log
.
i
(
"info"
,
"DiscussionActivity onCreate called"
);
super
.
onCreate
(
savedInstanceState
);
setContentView
(
R
.
layout
.
activity_discussion
);
mRecyclerView
=
(
RecyclerView
)
findViewById
(
R
.
id
.
discussion_recycler_view
);
mRecyclerView
.
setHasFixedSize
(
true
);
mDiscussionsList
=
new
ArrayList
<
Discussion
>();
mLayoutManager
=
new
LinearLayoutManager
(
DiscussionActivity
.
this
);
RecyclerDiscussionAdapter
mRecyclerViewAdapter
=
new
RecyclerDiscussionAdapter
(
mDiscussionsList
);
mRecyclerView
.
setAdapter
(
mRecyclerViewAdapter
);
mRecyclerView
.
setLayoutManager
(
mLayoutManager
);
getTagsFromServer
();
getDiscussionsFromServer
();
}
private
void
getTagsFromServer
(){
Log
.
i
(
"info"
,
"DiscussionActivity getTagsFromServer called"
);
mHttpClient
=
new
AsyncHttpClient
();
tags
=
new
ArrayList
<
Tag
>();
mHttpClient
.
get
(
getString
(
R
.
string
.
api_url
)
+
"api/tag/"
,
new
AsyncHttpResponseHandler
()
{
@Override
public
void
onSuccess
(
int
statusCode
,
Header
[]
headers
,
byte
[]
responseBody
)
{
Log
.
i
(
"info"
,
"Successfuly got tags from server"
);
JSONObject
jsonResponse
=
JSONParser
.
parseObject
(
responseBody
);
try
{
JSONArray
tags_json
=
jsonResponse
.
getJSONArray
(
"results"
);
for
(
int
i
=
0
;
i
<
tags_json
.
length
();
i
++){
Tag
tag
=
new
Tag
((
JSONObject
)
tags_json
.
get
(
i
));
tags
.
add
(
tag
);
}
}
catch
(
JSONException
e
)
{
e
.
printStackTrace
();
}
Log
.
d
(
"debug"
,
"Got tags: "
+
tags
.
toString
());
updateView
();
}
@Override
public
void
onFailure
(
int
statusCode
,
Header
[]
headers
,
byte
[]
responseBody
,
Throwable
error
)
{
Log
.
i
(
"error"
,
"Failure while getting tags from server"
);
Log
.
i
(
"error"
,
error
.
toString
());
}
});
}
private
void
getDiscussionsFromServer
(){
mHttpClient
=
new
AsyncHttpClient
();
mDiscussionsList
=
new
ArrayList
<
Discussion
>();
mHttpClient
.
get
(
getString
(
R
.
string
.
api_url
)
+
"api/discussion/"
,
new
AsyncHttpResponseHandler
()
{
@Override
public
void
onSuccess
(
int
statusCode
,
Header
[]
headers
,
byte
[]
responseBody
)
{
Log
.
i
(
"info"
,
"Successfuly got tags from server"
);
JSONObject
jsonResponse
=
JSONParser
.
parseObject
(
responseBody
);
try
{
JSONArray
discussions_json
=
jsonResponse
.
getJSONArray
(
"results"
);
for
(
int
i
=
0
;
i
<
discussions_json
.
length
();
i
++){
Discussion
discussion
=
new
Discussion
((
JSONObject
)
discussions_json
.
get
(
i
));
mDiscussionsList
.
add
(
discussion
);
}
}
catch
(
JSONException
e
)
{
e
.
printStackTrace
();
}
Log
.
d
(
"debug"
,
"Got discussions: "
+
tags
.
toString
());
updateView
();
}
@Override
public
void
onFailure
(
int
statusCode
,
Header
[]
headers
,
byte
[]
responseBody
,
Throwable
error
)
{
Log
.
i
(
"error"
,
"Failure while getting tags from server"
);
Log
.
i
(
"error"
,
error
.
toString
());
}
});
}
private
void
updateView
(){
RecyclerDiscussionAdapter
mRecyclerViewAdapter
=
new
RecyclerDiscussionAdapter
(
mDiscussionsList
);
mRecyclerView
.
setAdapter
(
mRecyclerViewAdapter
);
}
}
JoinTheCityAPP/app/src/main/java/anotherlineofcode/com/jointhecityapp/discussion_support/Message.java
0 → 100644
View file @
8c38aa39
package
anotherlineofcode
.
com
.
jointhecityapp
.
discussion_support
;
import
org.json.JSONException
;
import
org.json.JSONObject
;
/**
* Created by adam on 12.01.16.
*/
public
class
Message
{
private
String
mTimestamp
;
private
String
mText
;
private
String
mUser
;
private
int
mId
;
public
Message
(){
mTimestamp
=
"1970-01-01 12:00:00"
;
mText
=
"Default text"
;
mUser
=
"Rafaello"
;
}
public
Message
(
JSONObject
jsonObject
)
throws
JSONException
{
mTimestamp
=
(
String
)
jsonObject
.
get
(
"created_at"
);
mText
=
(
String
)
jsonObject
.
get
(
"text"
);
mUser
=
(
String
)
jsonObject
.
get
(
"user"
);
mId
=
(
int
)
jsonObject
.
get
(
"id"
);
}
public
int
getId
(){
return
mId
;
}
public
String
getUser
(){
return
mUser
;
}
@Override
public
String
toString
(){
return
mText
;
}
}
JoinTheCityAPP/app/src/main/java/anotherlineofcode/com/jointhecityapp/discussion_support/MessageViewAdapter.java
0 → 100644
View file @
8c38aa39
package
anotherlineofcode
.
com
.
jointhecityapp
.
discussion_support
;
import
android.app.Activity
;
import
android.content.Intent
;
import
android.support.v7.widget.RecyclerView
;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
android.widget.LinearLayout
;
import
android.widget.TextView
;
import
android.widget.Toast
;
import
java.util.List
;
import
anotherlineofcode.com.jointhecityapp.R
;
/**
* Created by adam on 17.01.16.
*/
public
class
MessageViewAdapter
extends
RecyclerView
.
Adapter
<
MessageViewAdapter
.
ViewHolder
>
{
private
List
<
Message
>
mDataset
;
public
static
class
ViewHolder
extends
RecyclerView
.
ViewHolder
{
public
LinearLayout
mView
;
private
int
mPosition
;
public
ViewHolder
(
LinearLayout
v
)
{
super
(
v
);
mView
=
v
;
mPosition
=
getAdapterPosition
();
}
public
View
getView
(){
return
mView
;
}
}
public
MessageViewAdapter
(
List
<
Message
>
messages
){
mDataset
=
messages
;
}
@Override
public
MessageViewAdapter
.
ViewHolder
onCreateViewHolder
(
ViewGroup
parent
,
int
viewType
)
{
View
v
=
LayoutInflater
.
from
(
parent
.
getContext
())
.
inflate
(
R
.
layout
.
discussion_list_view
,
parent
,
false
);
ViewHolder
vh
=
new
ViewHolder
((
LinearLayout
)
v
);
return
vh
;
}
@Override
public
void
onBindViewHolder
(
MessageViewAdapter
.
ViewHolder
holder
,
int
position
)
{
TextView
title
=
(
TextView
)
holder
.
getView
().
findViewById
(
R
.
id
.
discussion_name
);
title
.
setText
(
mDataset
.
get
(
position
).
toString
());
TextView
author
=
(
TextView
)
holder
.
getView
().
findViewById
(
R
.
id
.
discussion_owner
);
author
.
setText
(
mDataset
.
get
(
position
).
getUser
());
}
@Override
public
int
getItemCount
()
{
return
mDataset
.
size
();
}
}
JoinTheCityAPP/app/src/main/java/anotherlineofcode/com/jointhecityapp/discussion_support/RecyclerDiscussionAdapter.java
0 → 100644
View file @
8c38aa39
package
anotherlineofcode
.
com
.
jointhecityapp
.
discussion_support
;
import
android.app.Activity
;
import
android.content.Intent
;
import
android.support.v7.widget.RecyclerView
;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
android.widget.LinearLayout
;
import
android.widget.TextView
;
import
android.widget.Toast
;
import
java.util.ArrayList
;
import
anotherlineofcode.com.jointhecityapp.R
;
/**
* Created by adam on 12.01.16.
*/
public
class
RecyclerDiscussionAdapter
extends
RecyclerView
.
Adapter
<
RecyclerDiscussionAdapter
.
ViewHolder
>
{
private
static
ArrayList
<
Discussion
>
mDataset
;
public
static
class
ViewHolder
extends
RecyclerView
.
ViewHolder
implements
View
.
OnClickListener
{
public
LinearLayout
mView
;
private
int
mPosition
;
public
ViewHolder
(
LinearLayout
v
)
{
super
(
v
);
v
.
setOnClickListener
(
this
);
mView
=
v
;
}
public
View
getView
(){
return
mView
;
}
@Override
public
void
onClick
(
View
view
)
{
mPosition
=
getAdapterPosition
();
if
(
mPosition
==
-
1
)
return
;
Activity
parentAcitivity
=
(
Activity
)
view
.
getContext
();
Toast
.
makeText
(
view
.
getContext
(),
"Item clicked"
,
Toast
.
LENGTH_SHORT
);
Intent
chatIntent
=
new
Intent
(
parentAcitivity
,
ChatActivity
.
class
);
String
discussionLink
=
mDataset
.
get
(
mPosition
).
getDiscussionLink
();
chatIntent
.
putExtra
(
parentAcitivity
.
getString
(
R
.
string
.
discussion_link
),
discussionLink
);
parentAcitivity
.
startActivity
(
chatIntent
);
}
}
public
RecyclerDiscussionAdapter
(
ArrayList
<
Discussion
>
myDataset
)
{
mDataset
=
myDataset
;
}
@Override
public
RecyclerDiscussionAdapter
.
ViewHolder
onCreateViewHolder
(
ViewGroup
parent
,
int
viewType
)
{
View
v
=
LayoutInflater
.
from
(
parent
.
getContext
())
.
inflate
(
R
.
layout
.
discussion_list_view
,
parent
,
false
);
ViewHolder
vh
=
new
ViewHolder
((
LinearLayout
)
v
);
return
vh
;
}
@Override
public
void
onBindViewHolder
(
ViewHolder
holder
,
int
position
)
{
TextView
title
=
(
TextView
)
holder
.
getView
().
findViewById
(
R
.
id
.
discussion_name
);
title
.
setText
(
mDataset
.
get
(
position
).
toString
());
TextView
author
=
(
TextView
)
holder
.
getView
().
findViewById
(
R
.
id
.
discussion_owner
);
author
.
setText
(
mDataset
.
get
(
position
).
getUser
());
}
@Override
public
int
getItemCount
()
{
return
mDataset
.
size
();
}
}
JoinTheCityAPP/app/src/main/java/anotherlineofcode/com/jointhecityapp/discussion_support/Tag.java
0 → 100644
View file @
8c38aa39
package
anotherlineofcode
.
com
.
jointhecityapp
.
discussion_support
;
import
android.content.Context
;
import
android.content.Intent
;
import
com.loopj.android.http.AsyncHttpClient
;
import
com.loopj.android.http.AsyncHttpResponseHandler
;
import
org.json.JSONException
;
import
org.json.JSONObject
;
import
anotherlineofcode.com.jointhecityapp.JSONParser
;
import
cz.msebera.android.httpclient.Header
;
/**
* Created by adam on 12.01.16.
*/
public
class
Tag
{
private
String
mName
;
private
String
mLocation_link
;
private
Float
mLatitude
;
private
Float
mLongitude
;
public
Tag
(
JSONObject
jsonObject
){
try
{
mName
=
(
String
)
jsonObject
.
get
(
"name"
);
mLocation_link
=
(
String
)
((
JSONObject
)
jsonObject
).
get
(
"localization"
);
}
catch
(
JSONException
e
)
{
e
.
printStackTrace
();
}
AsyncHttpClient
client
=
new
AsyncHttpClient
();
client
.
get
(
mLocation_link
,
new
AsyncHttpResponseHandler
()
{
@Override
public
void
onSuccess
(
int
statusCode
,
Header
[]
headers
,
byte
[]
responseBody
)
{
JSONObject
jsonResponse
=
JSONParser
.
parseObject
(
responseBody
);
try
{
mLongitude
=
Float
.
parseFloat
((
String
)
jsonResponse
.
get
(
"longitude"
));
mLatitude
=
Float
.
parseFloat
((
String
)
jsonResponse
.
get
(
"latitude"
));
}
catch
(
JSONException
e
)
{
e
.
printStackTrace
();
}
}
@Override
public
void
onFailure
(
int
statusCode
,
Header
[]
headers
,
byte
[]
responseBody
,
Throwable
error
)
{
}
});
}
public
void
startChat
(
Context
context
){
Intent
startChat
=
new
Intent
(
context
,
ChatActivity
.
class
);
}
@Override
public
String
toString
(){
return
mName
;
}
}
JoinTheCityAPP/app/src/main/res/drawable/in_message_bg.9.png
0 → 100644
View file @
8c38aa39
1.13 KB
JoinTheCityAPP/app/src/main/res/drawable/out_message_bg.9.png
0 → 100644
View file @
8c38aa39
1.04 KB
JoinTheCityAPP/app/src/main/res/layout/activity_base_activity_with_menu.xml
0 → 100644
View file @
8c38aa39
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
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"
android:fitsSystemWindows=
"true"
tools:context=
"anotherlineofcode.com.jointhecityapp.BaseActivityWithMenu"
>
<android.support.design.widget.AppBarLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:theme=
"@style/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/PopupOverlay"
/>
</android.support.design.widget.AppBarLayout>
<include
layout=
"@layout/content_base_activity_with_menu"
/>
<android.support.design.widget.FloatingActionButton
android:id=
"@+id/fab"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"bottom|end"
android:layout_margin=
"@dimen/fab_margin"
android:src=
"@android:drawable/ic_dialog_email"
/>
</android.support.design.widget.CoordinatorLayout>
JoinTheCityAPP/app/src/main/res/layout/activity_chat.xml
0 → 100644
View file @
8c38aa39
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:orientation=
"vertical"
>
<RelativeLayout
android:id=
"@+id/container"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:orientation=
"vertical"
android:padding=
"20dp"
>
<EditText
android:id=
"@+id/messageEdit"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_alignParentBottom=
"true"
android:layout_toLeftOf=
"@+id/chatSendButton"
android:autoText=
"true"
android:hint=
"type message"
/>
<Button
android:id=
"@+id/chatSendButton"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_alignParentBottom=
"true"
android:layout_alignParentRight=
"true"
android:background=
"@color/background_floating_material_dark"
android:text=
"Send MSG"
android:textColor=
"@color/background_material_light"
/>
<android.support.v7.widget.RecyclerView
android:id=
"@+id/chat_recycler_view"
android:scrollbars=
"vertical"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:layout_alignParentLeft=
"false"
android:layout_alignParentTop=
"false"
android:layout_marginBottom=
"20dp"
android:layout_above=
"@+id/messageEdit"
android:layout_below=
"@+id/meLbl"
android:layout_marginTop=
"10dp"
android:listSelector=
"@android:color/transparent"
android:transcriptMode=
"alwaysScroll"
android:divider=
"@null"
/>
<TextView
android:id=
"@+id/meLbl"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"left|center_vertical"
android:text=
"MySelf"
android:singleLine=
"false"
android:textSize=
"20dp"
/>
<TextView
android:id=
"@+id/friendLabel"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_alignParentRight=
"true"
android:text=
"Friend"
android:textSize=
"20dp"
/>
</RelativeLayout>
</LinearLayout>
\ No newline at end of file
JoinTheCityAPP/app/src/main/res/layout/activity_discussion.xml
0 → 100644
View file @
8c38aa39
<RelativeLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:paddingLeft=
"@dimen/activity_horizontal_margin"
android:paddingRight=
"@dimen/activity_horizontal_margin"
android:paddingTop=
"@dimen/activity_vertical_margin"
android:paddingBottom=
"@dimen/activity_vertical_margin"
tools:context=
".discussion_support.DiscussionActivity"
>
<Spinner
android:id=
"@+id/tags_spinner"
android:layout_width=
"fill_parent"
android:layout_height=
"wrap_content"
/>
<android.support.v7.widget.RecyclerView
android:id=
"@+id/discussion_recycler_view"
android:scrollbars=
"vertical"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
/>
</RelativeLayout>
JoinTheCityAPP/app/src/main/res/layout/bubble_message.xml
0 → 100644
View file @
8c38aa39
<RelativeLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
>
<LinearLayout
android:id=
"@+id/content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_alignParentRight=
"true"
android:orientation=
"vertical"
>
<TextView
android:id=
"@+id/txtInfo"
android:layout_width=
"wrap_content"
android:layout_height=
"30sp"
android:layout_gravity=
"right"
android:textSize=
"12sp"
android:textColor=
"@android:color/darker_gray"
/>
<LinearLayout
android:id=
"@+id/contentWithBackground"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"right"
android:background=
"@drawable/in_message_bg"
android:paddingLeft=
"10dp"
android:paddingBottom=
"10dp"
android:orientation=
"vertical"
>
<TextView
android:id=
"@+id/txtMessage"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:textColor=
"@android:color/black"
android:maxWidth=
"240dp"
/>
</LinearLayout>
</LinearLayout>
</RelativeLayout>
\ No newline at end of file
JoinTheCityAPP/app/src/main/res/layout/content_base_activity_with_menu.xml
0 → 100644
View file @
8c38aa39
<?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"
android:paddingBottom=
"@dimen/activity_vertical_margin"
android:paddingLeft=
"@dimen/activity_horizontal_margin"
android:paddingRight=
"@dimen/activity_horizontal_margin"
android:paddingTop=
"@dimen/activity_vertical_margin"
app:layout_behavior=
"@string/appbar_scrolling_view_behavior"
tools:context=
"anotherlineofcode.com.jointhecityapp.BaseActivityWithMenu"
tools:showIn=
"@layout/activity_base_activity_with_menu"
>
</RelativeLayout>
JoinTheCityAPP/app/src/main/res/layout/discussion_list_view.xml
0 → 100644
View file @
8c38aa39
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:orientation=
"vertical"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:layout_margin=
"20dp"
>
<TextView
android:id=
"@+id/discussion_name"
android:layout_height=
"match_parent"
android:layout_width=
"match_parent"
android:layout_margin=
"10dp"
/>
<TextView
android:id=
"@+id/discussion_owner"
android:layout_height=
"match_parent"
android:layout_width=
"match_parent"
android:layout_margin=
"10dp"
></TextView>
</LinearLayout>
\ No newline at end of file
JoinTheCityAPP/app/src/main/res/menu/menu_chat.xml
0 → 100644
View file @
8c38aa39
<menu
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"
tools:context=
".discussion_support.ChatActivity"
>
<item
android:id=
"@+id/action_settings"
android:title=
"@string/action_settings"
android:orderInCategory=
"100"
app:showAsAction=
"never"
/>
</menu>
JoinTheCityAPP/app/src/main/res/menu/menu_main.xml
View file @
8c38aa39
<menu
xmlns:android=
"http://schemas.android.com/apk/res/android"
<menu
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:tools=
"http://schemas.android.com/tools"
tools:context=
".MainActivity"
>
xmlns:tools=
"http://schemas.android.com/tools"
android:id=
"@+id/menu"
tools:context=
".MainActivity"
>
<item
<item
android:id=
"@+id/api_list"
android:id=
"@+id/api_list"
...
...
JoinTheCityAPP/app/src/main/res/values/strings.xml
View file @
8c38aa39
...
@@ -10,8 +10,12 @@
...
@@ -10,8 +10,12 @@
<string
name=
"api_url"
>
http://jointhecity.telemabk.pl/
</string>
<string
name=
"api_url"
>
http://jointhecity.telemabk.pl/
</string>
<string
name=
"action_sign_in"
>
Zaloguj się
</string>
<string
name=
"action_sign_in"
>
Zaloguj się
</string>
<!-- TODO: Remove or change this placeholder text -->
<!-- TODO: Remove or change this placeholder text -->
<string
name=
"hello_blank_fragment"
>
Hello blank fragment
</string>
<string
name=
"hello_blank_fragment"
>
Hello blank fragment
</string>
<string
name=
"title_activity_maps"
>
Map
</string>
<string
name=
"title_activity_maps"
>
Map
</string>
<string
name=
"title_activity_friends"
>
FriendsActivity
</string>
<string
name=
"title_activity_friends"
>
FriendsActivity
</string>
<string
name=
"title_activity_chat"
>
ChatActivity
</string>
<string
name=
"title_activity_base_activity_with_menu"
>
BaseActivityWithMenu
</string>
<string
name=
"discussion_link"
>
Discussion link
</string>
</resources>
</resources>
JoinTheCityAPP/app/src/main/res/values/styles.xml
View file @
8c38aa39
...
@@ -3,8 +3,12 @@
...
@@ -3,8 +3,12 @@
<!-- Base application theme. -->
<!-- Base application theme. -->
<style
name=
"AppTheme"
parent=
"Theme.AppCompat.Light.DarkActionBar"
>
<style
name=
"AppTheme"
parent=
"Theme.AppCompat.Light.DarkActionBar"
>
<!-- Customize your theme here. -->
<!-- Customize your theme here. -->
<item
name=
"windowActionBar"
>
false
</item>
</style>
</style>
<style
name=
"AppBarOverlay"
parent=
"ThemeOverlay.AppCompat.Dark.ActionBar"
/>
<style
name=
"AppBarOverlay"
parent=
"ThemeOverlay.AppCompat.Dark.ActionBar"
/>
<style
name=
"PopupOverlay"
parent=
"ThemeOverlay.AppCompat.Light"
/>
<style
name=
"PopupOverlay"
parent=
"ThemeOverlay.AppCompat.Light"
/>
</resources>
</resources>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment