Search in sources :

Example 1 with PanelSlideListener

use of android.support.v4.widget.SlidingPaneLayout.PanelSlideListener in project Conversations by siacs.

the class ConversationActivity method onCreate.

@Override
protected void onCreate(final Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (savedInstanceState != null) {
        mOpenConversation = savedInstanceState.getString(STATE_OPEN_CONVERSATION, null);
        mPanelOpen = savedInstanceState.getBoolean(STATE_PANEL_OPEN, true);
        int pos = savedInstanceState.getInt(STATE_FIRST_VISIBLE, -1);
        int offset = savedInstanceState.getInt(STATE_OFFSET_FROM_TOP, 1);
        if (pos >= 0 && offset <= 0) {
            Log.d(Config.LOGTAG, "retrieved scroll position from instanceState " + pos + ":" + offset);
            mScrollPosition = new Pair<>(pos, offset);
        } else {
            mScrollPosition = null;
        }
        String pending = savedInstanceState.getString(STATE_PENDING_URI, null);
        if (pending != null) {
            Log.d(Config.LOGTAG, "ConversationsActivity.onCreate() - restoring pending image uri");
            mPendingImageUris.clear();
            mPendingImageUris.add(Uri.parse(pending));
        }
    }
    setContentView(R.layout.fragment_conversations_overview);
    this.mConversationFragment = new ConversationFragment();
    FragmentTransaction transaction = getFragmentManager().beginTransaction();
    transaction.replace(R.id.selected_conversation, this.mConversationFragment, "conversation");
    transaction.commit();
    listView = (EnhancedListView) findViewById(R.id.list);
    this.listAdapter = new ConversationAdapter(this, conversationList);
    listView.setAdapter(this.listAdapter);
    final ActionBar actionBar = getActionBar();
    if (actionBar != null) {
        actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_TITLE);
    }
    listView.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> arg0, View clickedView, int position, long arg3) {
            if (getSelectedConversation() != conversationList.get(position)) {
                setSelectedConversation(conversationList.get(position));
                ConversationActivity.this.mConversationFragment.reInit(getSelectedConversation());
                conversationWasSelectedByKeyboard = false;
            }
            hideConversationsOverview();
            openConversation();
        }
    });
    listView.setDismissCallback(new EnhancedListView.OnDismissCallback() {

        @Override
        public EnhancedListView.Undoable onDismiss(final EnhancedListView enhancedListView, final int position) {
            final int index = listView.getFirstVisiblePosition();
            View v = listView.getChildAt(0);
            final int top = (v == null) ? 0 : (v.getTop() - listView.getPaddingTop());
            try {
                swipedConversation = listAdapter.getItem(position);
            } catch (IndexOutOfBoundsException e) {
                return null;
            }
            listAdapter.remove(swipedConversation);
            xmppConnectionService.markRead(swipedConversation);
            final boolean formerlySelected = (getSelectedConversation() == swipedConversation);
            if (position == 0 && listAdapter.getCount() == 0) {
                endConversation(swipedConversation, false, true);
                return null;
            } else if (formerlySelected) {
                setSelectedConversation(listAdapter.getItem(0));
                ConversationActivity.this.mConversationFragment.reInit(getSelectedConversation());
            }
            return new EnhancedListView.Undoable() {

                @Override
                public void undo() {
                    listAdapter.insert(swipedConversation, position);
                    if (formerlySelected) {
                        setSelectedConversation(swipedConversation);
                        ConversationActivity.this.mConversationFragment.reInit(getSelectedConversation());
                    }
                    swipedConversation = null;
                    listView.setSelectionFromTop(index + (listView.getChildCount() < position ? 1 : 0), top);
                }

                @Override
                public void discard() {
                    if (!swipedConversation.isRead() && swipedConversation.getMode() == Conversation.MODE_SINGLE) {
                        swipedConversation = null;
                        return;
                    }
                    endConversation(swipedConversation, false, false);
                    swipedConversation = null;
                }

                @Override
                public String getTitle() {
                    if (swipedConversation.getMode() == Conversation.MODE_MULTI) {
                        return getResources().getString(R.string.title_undo_swipe_out_muc);
                    } else {
                        return getResources().getString(R.string.title_undo_swipe_out_conversation);
                    }
                }
            };
        }
    });
    listView.enableSwipeToDismiss();
    listView.setSwipingLayout(R.id.swipeable_item);
    listView.setUndoStyle(EnhancedListView.UndoStyle.SINGLE_POPUP);
    listView.setUndoHideDelay(5000);
    listView.setRequireTouchBeforeDismiss(false);
    mContentView = findViewById(R.id.content_view_spl);
    if (mContentView == null) {
        mContentView = findViewById(R.id.content_view_ll);
    }
    if (mContentView instanceof SlidingPaneLayout) {
        SlidingPaneLayout mSlidingPaneLayout = (SlidingPaneLayout) mContentView;
        mSlidingPaneLayout.setShadowResource(R.drawable.es_slidingpane_shadow);
        mSlidingPaneLayout.setSliderFadeColor(0);
        mSlidingPaneLayout.setPanelSlideListener(new PanelSlideListener() {

            @Override
            public void onPanelOpened(View arg0) {
                mShouldPanelBeOpen.set(true);
                updateActionBarTitle();
                invalidateOptionsMenu();
                hideKeyboard();
                if (xmppConnectionServiceBound) {
                    xmppConnectionService.getNotificationService().setOpenConversation(null);
                }
                closeContextMenu();
            }

            @Override
            public void onPanelClosed(View arg0) {
                mShouldPanelBeOpen.set(false);
                listView.discardUndo();
                openConversation();
            }

            @Override
            public void onPanelSlide(View arg0, float arg1) {
            // TODO Auto-generated method stub
            }
        });
    }
}
Also used : OnItemClickListener(android.widget.AdapterView.OnItemClickListener) PanelSlideListener(android.support.v4.widget.SlidingPaneLayout.PanelSlideListener) ConversationAdapter(eu.siacs.conversations.ui.adapter.ConversationAdapter) SlidingPaneLayout(android.support.v4.widget.SlidingPaneLayout) View(android.view.View) AdapterView(android.widget.AdapterView) EnhancedListView(de.timroes.android.listview.EnhancedListView) SuppressLint(android.annotation.SuppressLint) FragmentTransaction(android.app.FragmentTransaction) EnhancedListView(de.timroes.android.listview.EnhancedListView) ActionBar(android.app.ActionBar)

Example 2 with PanelSlideListener

use of android.support.v4.widget.SlidingPaneLayout.PanelSlideListener in project Cangol-uiframe by Cangol.

the class SlidingMenuNavigationFragmentActivityDelegate method onCreate.

@Override
public void onCreate(Bundle savedInstanceState) {
    mSlidingMenuLayout = (SlidingMenuLayout) LayoutInflater.from(mActivity).inflate(R.layout.navigation_sliding_main, null);
    mSlidingMenuLayout.setPanelSlideListener(new PanelSlideListener() {

        @Override
        public void onPanelClosed(View view) {
            // 通知menu onClose
            mActivity.notifyMenuOnClose();
            if (mActivity.getCustomFragmentManager().size() <= 1) {
                mActivity.getCustomActionBar().displayHomeIndicator();
            } else {
                mActivity.getCustomActionBar().displayUpIndicator();
            }
        }

        @Override
        public void onPanelOpened(View view) {
            // 通知menu onClose
            mActivity.notifyMenuOnClose();
            mActivity.getCustomActionBar().displayUpIndicator();
        }

        @Override
        public void onPanelSlide(View view, float slideOffset) {
            mActivity.getCustomActionBar().displayIndicator(slideOffset);
        }
    });
}
Also used : PanelSlideListener(android.support.v4.widget.SlidingPaneLayout.PanelSlideListener) View(android.view.View)

Aggregations

PanelSlideListener (android.support.v4.widget.SlidingPaneLayout.PanelSlideListener)2 View (android.view.View)2 SuppressLint (android.annotation.SuppressLint)1 ActionBar (android.app.ActionBar)1 FragmentTransaction (android.app.FragmentTransaction)1 SlidingPaneLayout (android.support.v4.widget.SlidingPaneLayout)1 AdapterView (android.widget.AdapterView)1 OnItemClickListener (android.widget.AdapterView.OnItemClickListener)1 EnhancedListView (de.timroes.android.listview.EnhancedListView)1 ConversationAdapter (eu.siacs.conversations.ui.adapter.ConversationAdapter)1