mobile/android/base/home/PanelGridView.java

Wed, 31 Dec 2014 07:22:50 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 07:22:50 +0100
branch
TOR_BUG_3246
changeset 4
fc2d59ddac77
permissions
-rw-r--r--

Correct previous dual key logic pending first delivery installment.

     1 /* -*- Mode: Java; c-basic-offset: 4; tab-width: 20; indent-tabs-mode: nil; -*-
     2  * This Source Code Form is subject to the terms of the Mozilla Public
     3  * License, v. 2.0. If a copy of the MPL was not distributed with this
     4  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
     6 package org.mozilla.gecko.home;
     8 import java.util.EnumSet;
    10 import org.mozilla.gecko.R;
    11 import org.mozilla.gecko.db.BrowserContract.HomeItems;
    12 import org.mozilla.gecko.home.HomeConfig.ItemHandler;
    13 import org.mozilla.gecko.home.HomeConfig.ViewConfig;
    14 import org.mozilla.gecko.home.HomePager.OnUrlOpenListener;
    15 import org.mozilla.gecko.home.PanelLayout.DatasetBacked;
    16 import org.mozilla.gecko.home.PanelLayout.FilterManager;
    17 import org.mozilla.gecko.home.PanelLayout.OnItemOpenListener;
    18 import org.mozilla.gecko.home.PanelLayout.PanelView;
    20 import android.content.Context;
    21 import android.database.Cursor;
    22 import android.util.Log;
    23 import android.view.View;
    24 import android.widget.AdapterView;
    25 import android.widget.GridView;
    27 public class PanelGridView extends GridView
    28                            implements DatasetBacked, PanelView {
    29     private static final String LOGTAG = "GeckoPanelGridView";
    31     private final ViewConfig viewConfig;
    32     private final PanelViewAdapter adapter;
    33     private PanelViewItemHandler itemHandler;
    34     private OnItemOpenListener itemOpenListener;
    35     private HomeContextMenuInfo mContextMenuInfo;
    36     private HomeContextMenuInfo.Factory mContextMenuInfoFactory;
    38     public PanelGridView(Context context, ViewConfig viewConfig) {
    39         super(context, null, R.attr.panelGridViewStyle);
    41         this.viewConfig = viewConfig;
    42         itemHandler = new PanelViewItemHandler(viewConfig);
    44         adapter = new PanelViewAdapter(context, viewConfig);
    45         setAdapter(adapter);
    47         setOnItemClickListener(new PanelGridItemClickListener());
    48         setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
    49             @Override
    50             public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
    51                 Cursor cursor = (Cursor) parent.getItemAtPosition(position);
    52                 if (cursor == null || mContextMenuInfoFactory == null) {
    53                     mContextMenuInfo = null;
    54                     return false;
    55                 }
    57                 mContextMenuInfo = mContextMenuInfoFactory.makeInfoForCursor(view, position, id, cursor);
    58                 return showContextMenuForChild(PanelGridView.this);
    59             }
    60         });
    61     }
    63     @Override
    64     public void onAttachedToWindow() {
    65         super.onAttachedToWindow();
    66         itemHandler.setOnItemOpenListener(itemOpenListener);
    67     }
    69     @Override
    70     public void onDetachedFromWindow() {
    71         super.onDetachedFromWindow();
    72         itemHandler.setOnItemOpenListener(null);
    73     }
    75     @Override
    76     public void setDataset(Cursor cursor) {
    77         Log.d(LOGTAG, "Setting dataset: " + viewConfig.getDatasetId());
    78         adapter.swapCursor(cursor);
    79     }
    81     @Override
    82     public void setOnItemOpenListener(OnItemOpenListener listener) {
    83         itemHandler.setOnItemOpenListener(listener);
    84         itemOpenListener = listener;
    85     }
    87     @Override
    88     public void setFilterManager(FilterManager filterManager) {
    89         adapter.setFilterManager(filterManager);
    90         itemHandler.setFilterManager(filterManager);
    91     }
    93     private class PanelGridItemClickListener implements AdapterView.OnItemClickListener {
    94         @Override
    95         public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    96             itemHandler.openItemAtPosition(adapter.getCursor(), position);
    97         }
    98     }
   100     @Override
   101     public HomeContextMenuInfo getContextMenuInfo() {
   102         return mContextMenuInfo;
   103     }
   105     @Override
   106     public void setContextMenuInfoFactory(HomeContextMenuInfo.Factory factory) {
   107         mContextMenuInfoFactory = factory;
   108     }
   109 }

mercurial