Skip to content

Commit

Permalink
Merge pull request #20 from Slyce-Inc/general-text-item
Browse files Browse the repository at this point in the history
Added GeneralText and GeneralOption
  • Loading branch information
MatthewTPage authored Aug 11, 2016
2 parents 285d643 + efca111 commit 5df28be
Show file tree
Hide file tree
Showing 15 changed files with 311 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.Date;
Expand All @@ -14,7 +15,9 @@

import it.slyce.messaging.SlyceMessagingFragment;
import it.slyce.messaging.listeners.LoadMoreMessagesListener;
import it.slyce.messaging.listeners.OnOptionSelectedListener;
import it.slyce.messaging.listeners.UserSendsMessageListener;
import it.slyce.messaging.message.GeneralOptionsMessage;
import it.slyce.messaging.message.MediaMessage;
import it.slyce.messaging.message.Message;
import it.slyce.messaging.message.MessageSource;
Expand Down Expand Up @@ -106,8 +109,20 @@ public List<Message> loadMoreMessages() {
if (!hasLoadedMore) {
hasLoadedMore = true;
ArrayList<Message> messages = new ArrayList<>();
GeneralOptionsMessage generalTextMessage = new GeneralOptionsMessage();
generalTextMessage.setTitle("Started group");
generalTextMessage.setFinalText("Accepted");
generalTextMessage.setOptions(new String[]{"Accept", "Reject"});
generalTextMessage.setOnOptionSelectedListener(new OnOptionSelectedListener() {
@Override
public void onOptionSelected(int optionSelected) {
Toast.makeText(MainActivity.this, optionSelected + "", Toast.LENGTH_SHORT).show();
}
});
messages.add(generalTextMessage);
for (int i = 0; i < 50; i++)
messages.add(getRandomMessage());
messages.add(generalTextMessage);
Log.d("info", "loadMoreMessages() returns");
return messages;
} else {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package it.slyce.messaging.listeners;


public interface OnOptionSelectedListener {
void onOptionSelected(int optionSelected);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
package it.slyce.messaging.message;

import android.content.Context;

import it.slyce.messaging.listeners.OnOptionSelectedListener;
import it.slyce.messaging.message.messageItem.MessageItem;
import it.slyce.messaging.message.messageItem.general.generalOptions.MessageGeneralOptionsItem;

public class GeneralOptionsMessage extends Message {
private String title;
private String[] options;
private OnOptionSelectedListener onOptionSelectedListener;
private String finalText;
private boolean selected;

public GeneralOptionsMessage() {
this.selected = false;
}

public OnOptionSelectedListener getOnOptionSelectedListener() {
return onOptionSelectedListener;
}

public void setOnOptionSelectedListener(OnOptionSelectedListener onOptionSelectedListener) {
this.onOptionSelectedListener = onOptionSelectedListener;
}

public String[] getOptions() {
return options;
}

public void setOptions(String[] options) {
this.options = options;
}

public String getTitle() {
return title;
}

public void setTitle(String title) {
this.title = title;
}

public String getFinalText() {
return finalText;
}

public void setFinalText(String finalText) {
this.finalText = finalText;
}

@Override
public MessageItem toMessageItem(Context context) {
return new MessageGeneralOptionsItem(this, context);
}

public void setSelected() {
this.selected = true;
}

public boolean isSelected() {
return selected;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package it.slyce.messaging.message;

import android.content.Context;

import it.slyce.messaging.message.messageItem.MessageItem;
import it.slyce.messaging.message.messageItem.general.generalText.MessageGeneralTextItem;

public class GeneralTextMessage extends Message {
private String text;

public void setText(String text) {
this.text = text;
}

public String getText() {
return this.text;
}

@Override
public MessageItem toMessageItem(Context context) {
return new MessageGeneralTextItem(this);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,6 @@
*/
public enum MessageSource {
LOCAL_USER,
EXTERNAL_USER
EXTERNAL_USER,
GENERAL
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@ public enum MessageItemType {
INCOMING_TEXT,
OUTGOING_MEDIA,
OUTGOING_TEXT,
SPINNER;
SPINNER,
GENERAL_TEXT,
GENERAL_OPTIONS;

public static final MessageItemType values[] = values();
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,10 @@
import it.slyce.messaging.R;
import it.slyce.messaging.message.messageItem.externalUser.media.MessageExternalUserMediaViewHolder;
import it.slyce.messaging.message.messageItem.externalUser.text.MessageExternalUserTextViewHolder;
import it.slyce.messaging.message.messageItem.general.generalOptions.MessageGeneralOptionsViewHolder;
import it.slyce.messaging.message.messageItem.internalUser.media.MessageInternalUserViewHolder;
import it.slyce.messaging.message.messageItem.internalUser.text.MessageInternalUserTextViewHolder;
import it.slyce.messaging.message.messageItem.general.generalText.MessageGeneralTextViewHolder;
import it.slyce.messaging.message.messageItem.spinner.SpinnerViewHolder;
import it.slyce.messaging.utils.CustomSettings;

Expand Down Expand Up @@ -64,6 +66,16 @@ public MessageViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View spinnerView = inflater.inflate(R.layout.item_spinner, parent, false);
viewHolder = new SpinnerViewHolder(spinnerView, customSettings);
break;

case GENERAL_TEXT:
View generalTextView = inflater.inflate(R.layout.item_message_general_text, parent, false);
viewHolder = new MessageGeneralTextViewHolder(generalTextView, customSettings);
break;

case GENERAL_OPTIONS:
View generalOptionsView = inflater.inflate(R.layout.item_message_general_options, parent, false);
viewHolder = new MessageGeneralOptionsViewHolder(generalOptionsView, customSettings);
break;
}

return viewHolder;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
package it.slyce.messaging.message.messageItem.general.generalOptions;

import android.content.Context;
import android.graphics.Color;
import android.graphics.PorterDuff;
import android.support.v4.content.ContextCompat;
import android.view.View;
import android.widget.Button;

import it.slyce.messaging.R;
import it.slyce.messaging.message.GeneralOptionsMessage;
import it.slyce.messaging.message.MessageSource;
import it.slyce.messaging.message.messageItem.MessageItem;
import it.slyce.messaging.message.messageItem.MessageItemType;
import it.slyce.messaging.message.messageItem.MessageViewHolder;

public class MessageGeneralOptionsItem extends MessageItem {
private Context context;

public MessageGeneralOptionsItem(GeneralOptionsMessage generalOptionsMessage, Context context) {
super(generalOptionsMessage);
this.context = context;
}

@Override
public void buildMessageItem(MessageViewHolder messageViewHolder) {
final MessageGeneralOptionsViewHolder viewHolder = (MessageGeneralOptionsViewHolder) messageViewHolder;
final GeneralOptionsMessage generalTextMessage = (GeneralOptionsMessage) message;
if (!generalTextMessage.isSelected()) {
viewHolder.titleTextView.setText(generalTextMessage.getTitle());
viewHolder.optionsLinearLayout.removeAllViews();
for (int i = 0; i < generalTextMessage.getOptions().length; i++) {
String option = generalTextMessage.getOptions()[i];
Button button = new Button(context);
button.setText(option);
button.getBackground().setColorFilter(ContextCompat.getColor(context, R.color.background_gray_light), PorterDuff.Mode.MULTIPLY);
button.setTextColor(Color.BLUE);
final int finalI = i;
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
viewHolder.titleTextView.setText(generalTextMessage.getFinalText());
viewHolder.optionsLinearLayout.removeAllViews();
generalTextMessage.setSelected();
generalTextMessage.getOnOptionSelectedListener().onOptionSelected(finalI);
}
});
viewHolder.optionsLinearLayout.addView(button);
}
} else {
viewHolder.titleTextView.setText(generalTextMessage.getFinalText());
viewHolder.optionsLinearLayout.removeAllViews();
}
}

@Override
public MessageItemType getMessageItemType() {
return MessageItemType.GENERAL_OPTIONS;
}

@Override
public MessageSource getMessageSource() {
return MessageSource.GENERAL;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package it.slyce.messaging.message.messageItem.general.generalOptions;

import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;

import it.slyce.messaging.R;
import it.slyce.messaging.message.messageItem.MessageViewHolder;
import it.slyce.messaging.utils.CustomSettings;

/**
* @Author Matthew Page
* @Date 8/10/16
*/
public class MessageGeneralOptionsViewHolder extends MessageViewHolder {
public TextView titleTextView;
public LinearLayout optionsLinearLayout;

public MessageGeneralOptionsViewHolder(View itemView, CustomSettings customSettings) {
super(itemView, customSettings);

this.titleTextView = (TextView) itemView.findViewById(R.id.message_general_options_text_view);
this.optionsLinearLayout = (LinearLayout) itemView.findViewById(R.id.message_general_options_options_linear_layout);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package it.slyce.messaging.message.messageItem.general.generalText;

import it.slyce.messaging.message.GeneralTextMessage;
import it.slyce.messaging.message.MessageSource;
import it.slyce.messaging.message.messageItem.MessageItem;
import it.slyce.messaging.message.messageItem.MessageItemType;
import it.slyce.messaging.message.messageItem.MessageViewHolder;

public class MessageGeneralTextItem extends MessageItem {
public MessageGeneralTextItem(GeneralTextMessage message) {
super(message);
}

@Override
public void buildMessageItem(
MessageViewHolder messageViewHolder) {
MessageGeneralTextViewHolder viewHolder = (MessageGeneralTextViewHolder) messageViewHolder;
GeneralTextMessage generalTextMessage = (GeneralTextMessage) message;
viewHolder.messageTextView.setText(generalTextMessage.getText());
}

@Override
public MessageItemType getMessageItemType() {
return MessageItemType.GENERAL_TEXT;
}

@Override
public MessageSource getMessageSource() {
return MessageSource.GENERAL;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package it.slyce.messaging.message.messageItem.general.generalText;

import android.view.View;
import android.widget.TextView;

import it.slyce.messaging.R;
import it.slyce.messaging.message.messageItem.MessageViewHolder;
import it.slyce.messaging.utils.CustomSettings;

public class MessageGeneralTextViewHolder extends MessageViewHolder {
public TextView messageTextView;

public MessageGeneralTextViewHolder(View itemView, CustomSettings customSettings) {
super(itemView, customSettings);

messageTextView = (TextView) itemView.findViewById(R.id.message_general_text_text_view);
messageTextView.setTextColor(customSettings.timestampColor);
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
package it.slyce.messaging.message.messageItem.spinner;

import android.view.View;

import it.slyce.messaging.message.MessageSource;
import it.slyce.messaging.message.messageItem.MessageItem;
import it.slyce.messaging.message.messageItem.MessageItemType;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<?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="wrap_content"
android:layout_marginStart="50dp"
android:layout_marginLeft="50dp"
android:layout_marginEnd="50dp"
android:layout_marginRight="50dp">

<TextView
android:id="@+id/message_general_options_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:textAlignment="center"/>

<LinearLayout
android:id="@+id/message_general_options_options_linear_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:orientation="horizontal">

</LinearLayout>

</LinearLayout>
18 changes: 18 additions & 0 deletions slyce-messaging/src/main/res/layout/item_message_general_text.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<?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="wrap_content"
android:layout_marginStart="50dp"
android:layout_marginLeft="50dp"
android:layout_marginEnd="50dp"
android:layout_marginRight="50dp">

<TextView
android:id="@+id/message_general_text_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:textAlignment="center"/>

</LinearLayout>
1 change: 1 addition & 0 deletions slyce-messaging/src/main/res/values/colors.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

<color name="background_black">#000000</color>
<color name="background_gray_lightest">#F3F3F9</color>
<color name="background_gray_light">#BFBFBF</color>
<color name="background_white">#FFFFFF</color>
<color name="background_navy">#353556</color>
<color name="background_gray">#BDBDBD</color>
Expand Down

0 comments on commit 5df28be

Please sign in to comment.