Added update conversation settings button

This commit is contained in:
Pierre HUBERT 2018-08-22 10:40:49 +02:00
parent 94f8ecf746
commit 3f3fa95d72
5 changed files with 133 additions and 29 deletions

View File

@ -1,10 +1,6 @@
package org.communiquons.android.comunic.client.ui.fragments;
import android.app.AlertDialog;
import android.graphics.PorterDuff;
import android.graphics.drawable.Drawable;
import android.support.design.widget.AppBarLayout;
import android.support.v4.app.Fragment;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Bitmap;
@ -12,10 +8,8 @@ import android.os.AsyncTask;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v4.app.Fragment;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.util.ArrayMap;
import android.util.Log;
import android.view.KeyEvent;
@ -44,6 +38,7 @@ import org.communiquons.android.comunic.client.ui.adapters.ConversationMessageAd
import org.communiquons.android.comunic.client.ui.listeners.OnScrollChangeDetectListener;
import org.communiquons.android.comunic.client.ui.utils.BitmapUtils;
import org.communiquons.android.comunic.client.ui.utils.UiUtils;
import org.communiquons.android.comunic.client.ui.views.AppBarLayout;
import org.communiquons.android.comunic.client.ui.views.ScrollRecyclerView;
import java.io.FileNotFoundException;
@ -107,7 +102,7 @@ public class ConversationFragment extends Fragment
/**
* Fragment toolbar
*/
private Toolbar mToolbar;
private AppBarLayout mAppBar;
/**
* Fragment main progress bar
@ -239,23 +234,26 @@ public class ConversationFragment extends Fragment
//Get views
convMessRecyclerView = view.findViewById(R.id.fragment_conversation_messageslist);
mToolbar = view.findViewById(R.id.toolbar);
mAppBar = view.findViewById(R.id.appbar);
//Need user ID
int userID = new AccountUtils(getActivity()).get_current_user_id();
//Initialize toolbar
Drawable backDrawable = UiUtils.getDrawable(getActivity(), R.drawable.ic_back);
backDrawable.setColorFilter(UiUtils.getColor(getActivity(), android.R.color.white),
PorterDuff.Mode.SRC_IN);
mToolbar.setNavigationIcon(backDrawable);
mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
mAppBar.addBackButton(new View.OnClickListener() {
@Override
public void onClick(View v) {
MainActivity.goBackward(getActivity());
}
});
mAppBar.addButton(R.drawable.ic_settings, new View.OnClickListener() {
@Override
public void onClick(View v) {
((MainActivity)getActivity()).updateConversation(conversation_id);
}
});
//Create the adapter
convMessAdapter = new ConversationMessageAdapter(getActivity(),
@ -317,6 +315,7 @@ public class ConversationFragment extends Fragment
//Set a listener to detect when the user reaches the top of the conversation
convMessRecyclerView.setOnScrollChangeDetectListener(this);
}
@Override
@ -645,7 +644,7 @@ public class ConversationFragment extends Fragment
return;
getActivity().setTitle(title);
mToolbar.setTitle(title);
mAppBar.setTitle(title);
}
/**

View File

@ -0,0 +1,89 @@
package org.communiquons.android.comunic.client.ui.views;
import android.content.Context;
import android.graphics.PorterDuff;
import android.graphics.drawable.Drawable;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v7.widget.AppCompatImageButton;
import android.support.v7.widget.Toolbar;
import android.util.AttributeSet;
import android.view.View;
import org.communiquons.android.comunic.client.R;
import org.communiquons.android.comunic.client.ui.utils.UiUtils;
/**
* Generic AppBarLayout base class for the fragments of this application
*/
public class AppBarLayout extends BaseFrameLayoutView {
private android.support.design.widget.AppBarLayout mAppBarLayout;
private Toolbar mToolbar;
public AppBarLayout(@NonNull Context context) {
this(context, null);
}
public AppBarLayout(@NonNull Context context, @Nullable AttributeSet attrs) {
this(context, attrs, 0);
}
public AppBarLayout(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
//Set the view
View view = inflate(getContext(), R.layout.view_appbarlayout, this);
mAppBarLayout = view.findViewById(R.id.app_bar_layout);
mToolbar = view.findViewById(R.id.toolbar);
}
/**
* @return Toolbar view
*/
public Toolbar getToolbar() {
return mToolbar;
}
/**
* Update the title of the appbar
*
* @param title The new title
*/
public void setTitle(String title){
mToolbar.setTitle(title);
}
/**
* Add back button to the view
*
* @param listener The listener to use when the button is clicked
*/
public void addBackButton(View.OnClickListener listener){
Drawable backDrawable = UiUtils.getDrawable(getActivity(), R.drawable.ic_back);
backDrawable.setColorFilter(UiUtils.getColor(getActivity(), android.R.color.white),
PorterDuff.Mode.SRC_IN);
mToolbar.setNavigationIcon(backDrawable);
mToolbar.setNavigationOnClickListener(listener);
}
/**
* Add a button to the toolbar
*
* @param icon The icon associated to the button
* @param listener OnClickListener for the button
*/
public void addButton(int icon, @Nullable OnClickListener listener) {
Drawable drawable = UiUtils.getDrawable(getContext(), icon);
drawable.setColorFilter(UiUtils.getColor(getContext(), android.R.color.white),
PorterDuff.Mode.SRC_IN);
AppCompatImageButton btn = new AppCompatImageButton(getActivity(),
null, android.support.v7.appcompat.R.attr.toolbarStyle);
btn.setPadding(5, 0, 5, 0);
btn.setImageDrawable(drawable);
btn.setOnClickListener(listener);
getToolbar().addView(btn);
}
}

View File

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="@color/default_drawable_color"
android:pathData="M19.43,12.98c0.04,-0.32 0.07,-0.64 0.07,-0.98s-0.03,-0.66 -0.07,-0.98l2.11,-1.65c0.19,-0.15 0.24,-0.42 0.12,-0.64l-2,-3.46c-0.12,-0.22 -0.39,-0.3 -0.61,-0.22l-2.49,1c-0.52,-0.4 -1.08,-0.73 -1.69,-0.98l-0.38,-2.65C14.46,2.18 14.25,2 14,2h-4c-0.25,0 -0.46,0.18 -0.49,0.42l-0.38,2.65c-0.61,0.25 -1.17,0.59 -1.69,0.98l-2.49,-1c-0.23,-0.09 -0.49,0 -0.61,0.22l-2,3.46c-0.13,0.22 -0.07,0.49 0.12,0.64l2.11,1.65c-0.04,0.32 -0.07,0.65 -0.07,0.98s0.03,0.66 0.07,0.98l-2.11,1.65c-0.19,0.15 -0.24,0.42 -0.12,0.64l2,3.46c0.12,0.22 0.39,0.3 0.61,0.22l2.49,-1c0.52,0.4 1.08,0.73 1.69,0.98l0.38,2.65c0.03,0.24 0.24,0.42 0.49,0.42h4c0.25,0 0.46,-0.18 0.49,-0.42l0.38,-2.65c0.61,-0.25 1.17,-0.59 1.69,-0.98l2.49,1c0.23,0.09 0.49,0 0.61,-0.22l2,-3.46c0.12,-0.22 0.07,-0.49 -0.12,-0.64l-2.11,-1.65zM12,15.5c-1.93,0 -3.5,-1.57 -3.5,-3.5s1.57,-3.5 3.5,-3.5 3.5,1.57 3.5,3.5 -1.57,3.5 -3.5,3.5z"/>
</vector>

View File

@ -1,8 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto">
android:layout_height="match_parent">
<!-- Loading wheel -->
<ProgressBar
@ -25,19 +24,11 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
<!-- Application bar -->
<org.communiquons.android.comunic.client.ui.views.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay" />
</android.support.design.widget.AppBarLayout>
android:layout_height="wrap_content" />
<!-- Messages -->
<org.communiquons.android.comunic.client.ui.views.ScrollRecyclerView

View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.AppBarLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay"
android:id="@+id/app_bar_layout">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay" />
</android.support.design.widget.AppBarLayout>