Commit 8c38aa39 authored by adam's avatar adam

3/4 adam

parent 4c7196ee
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="anotherlineofcode.com.jointhecityapp" >
package="anotherlineofcode.com.jointhecityapp">
<uses-permission android:name="android.permission.INTERNET" />
......@@ -17,11 +17,11 @@
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/Theme.AppCompat.Light"
tools:replace="android:icon" >
tools:replace="android:icon">
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:screenOrientation="portrait" >
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
......@@ -30,8 +30,7 @@
</activity>
<activity
android:name=".LoginAndRegistrationActivity"
android:label="@string/title_activity_login_and_registration" >
</activity>
android:label="@string/title_activity_login_and_registration"></activity>
<!--
The API key for Google Maps-based APIs is defined as a string resource.
(See the file "res/values/google_maps_api.xml").
......@@ -46,7 +45,7 @@
<activity
android:name=".MapsActivity"
android:label="@string/title_activity_maps" >
android:label="@string/title_activity_maps">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="anotherlineofcode.com.jointhecityapp.MainActivity" />
......@@ -55,11 +54,21 @@
android:name=".FriendsActivity"
android:label="@string/title_activity_friends"
android:parentActivityName=".MainActivity"
android:theme="@style/Theme.AppCompat.Light.NoActionBar" >
android:theme="@style/Theme.AppCompat.Light.NoActionBar">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="anotherlineofcode.com.jointhecityapp.MainActivity" />
</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>
</manifest>
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;
}
}
......@@ -7,7 +7,7 @@ import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
public class FriendsActivity extends AppCompatActivity {
public class FriendsActivity extends BaseActivityWithMenu {
@Override
protected void onCreate(Bundle savedInstanceState) {
......
......@@ -26,7 +26,7 @@ import org.json.JSONObject;
import cn.pedant.SweetAlert.SweetAlertDialog;
import cz.msebera.android.httpclient.Header;
public class LoginAndRegistrationActivity extends AppCompatActivity {
public class LoginAndRegistrationActivity extends BaseActivityWithMenu {
private AsyncHttpClient client;
private SharedPreferences sharedPreferences;
......
......@@ -18,7 +18,7 @@ import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
public class MainActivity extends BaseActivityWithMenu {
public final static int LOGIN_REQUEST = 1;
private MapFragment mMapFragment;
......@@ -47,7 +47,6 @@ public class MainActivity extends AppCompatActivity {
if (savedInstanceState == null) {
// Add header and main menu fragments
getFragmentManager().beginTransaction().add(R.id.content, new MainContentFragment(), "MainContentFragment").commit();
}
List<ApiObject> rowListItem = getAllItemList();
......@@ -99,32 +98,5 @@ public class MainActivity extends AppCompatActivity {
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);
}
}
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()
}
}
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;}
}
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);
}
}
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;
}
}
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();
}
}
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();
}
}
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;
}
}
<?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>
<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
<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>
<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
<?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>
<?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
<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>
<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=".MainActivity">
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/menu"
tools:context=".MainActivity">
<item
android:id="@+id/api_list"
......
......@@ -10,8 +10,12 @@
<string name="api_url">http://jointhecity.telemabk.pl/</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="title_activity_maps">Map</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>
......@@ -3,8 +3,12 @@
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="windowActionBar">false</item>
</style>
<style name="AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
<style name="PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
</resources>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment