| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 package org.chromium.chrome.browser.download.ui; | 5 package org.chromium.chrome.browser.download.ui; |
| 6 | 6 |
| 7 import android.app.Activity; | 7 import android.app.Activity; |
| 8 import android.content.ComponentName; | 8 import android.content.ComponentName; |
| 9 import android.content.Intent; | 9 import android.content.Intent; |
| 10 import android.content.res.Resources; | 10 import android.content.res.Resources; |
| 11 import android.os.AsyncTask; | 11 import android.os.AsyncTask; |
| 12 import android.support.graphics.drawable.VectorDrawableCompat; | 12 import android.support.graphics.drawable.VectorDrawableCompat; |
| 13 import android.support.v4.view.GravityCompat; | 13 import android.support.v4.view.GravityCompat; |
| 14 import android.support.v4.widget.DrawerLayout; | 14 import android.support.v4.widget.DrawerLayout; |
| 15 import android.support.v4.widget.DrawerLayout.DrawerListener; | 15 import android.support.v4.widget.DrawerLayout.DrawerListener; |
| 16 import android.support.v7.widget.RecyclerView; | 16 import android.support.v7.widget.RecyclerView; |
| 17 import android.support.v7.widget.RecyclerView.ItemAnimator; | |
| 18 import android.support.v7.widget.Toolbar.OnMenuItemClickListener; | 17 import android.support.v7.widget.Toolbar.OnMenuItemClickListener; |
| 19 import android.view.Gravity; | 18 import android.view.Gravity; |
| 20 import android.view.LayoutInflater; | 19 import android.view.LayoutInflater; |
| 21 import android.view.MenuItem; | 20 import android.view.MenuItem; |
| 22 import android.view.View; | 21 import android.view.View; |
| 23 import android.view.ViewGroup; | 22 import android.view.ViewGroup; |
| 24 import android.widget.ListView; | 23 import android.widget.ListView; |
| 25 | 24 |
| 26 import org.chromium.base.ContextUtils; | 25 import org.chromium.base.ContextUtils; |
| 27 import org.chromium.base.FileUtils; | 26 import org.chromium.base.FileUtils; |
| (...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 167 | 166 |
| 168 private final DownloadHistoryAdapter mHistoryAdapter; | 167 private final DownloadHistoryAdapter mHistoryAdapter; |
| 169 private final FilterAdapter mFilterAdapter; | 168 private final FilterAdapter mFilterAdapter; |
| 170 private final ObserverList<DownloadUiObserver> mObservers = new ObserverList
<>(); | 169 private final ObserverList<DownloadUiObserver> mObservers = new ObserverList
<>(); |
| 171 private final BackendProvider mBackendProvider; | 170 private final BackendProvider mBackendProvider; |
| 172 | 171 |
| 173 private final SpaceDisplay mSpaceDisplay; | 172 private final SpaceDisplay mSpaceDisplay; |
| 174 private final ListView mFilterView; | 173 private final ListView mFilterView; |
| 175 private final UndoDeletionSnackbarController mUndoDeletionSnackbarController
; | 174 private final UndoDeletionSnackbarController mUndoDeletionSnackbarController
; |
| 176 private final RecyclerView mRecyclerView; | 175 private final RecyclerView mRecyclerView; |
| 177 private final ItemAnimator mItemAnimator; | |
| 178 | 176 |
| 179 private BasicNativePage mNativePage; | 177 private BasicNativePage mNativePage; |
| 180 private Activity mActivity; | 178 private Activity mActivity; |
| 181 private ViewGroup mMainView; | 179 private ViewGroup mMainView; |
| 182 private DownloadManagerToolbar mToolbar; | 180 private DownloadManagerToolbar mToolbar; |
| 183 private SelectableListLayout<DownloadHistoryItemWrapper> mSelectableListLayo
ut; | 181 private SelectableListLayout<DownloadHistoryItemWrapper> mSelectableListLayo
ut; |
| 184 | 182 |
| 185 @SuppressWarnings("unchecked") // mSelectableListLayout | 183 @SuppressWarnings("unchecked") // mSelectableListLayout |
| 186 public DownloadManagerUi( | 184 public DownloadManagerUi( |
| 187 Activity activity, boolean isOffTheRecord, ComponentName parentCompo
nent) { | 185 Activity activity, boolean isOffTheRecord, ComponentName parentCompo
nent) { |
| 188 mActivity = activity; | 186 mActivity = activity; |
| 189 mBackendProvider = | 187 mBackendProvider = |
| 190 sProviderForTests == null ? new DownloadBackendProvider() : sPro
viderForTests; | 188 sProviderForTests == null ? new DownloadBackendProvider() : sPro
viderForTests; |
| 191 | 189 |
| 192 mMainView = (ViewGroup) LayoutInflater.from(activity).inflate(R.layout.d
ownload_main, null); | 190 mMainView = (ViewGroup) LayoutInflater.from(activity).inflate(R.layout.d
ownload_main, null); |
| 193 | 191 |
| 194 DrawerLayout drawerLayout = null; | 192 DrawerLayout drawerLayout = null; |
| 195 if (!DeviceFormFactor.isLargeTablet(activity)) { | 193 if (!DeviceFormFactor.isLargeTablet(activity)) { |
| 196 drawerLayout = (DrawerLayout) mMainView; | 194 drawerLayout = (DrawerLayout) mMainView; |
| 197 addDrawerListener(drawerLayout); | 195 addDrawerListener(drawerLayout); |
| 198 } | 196 } |
| 199 | 197 |
| 200 mSelectableListLayout = (SelectableListLayout<DownloadHistoryItemWrapper
>) | 198 mSelectableListLayout = (SelectableListLayout<DownloadHistoryItemWrapper
>) |
| 201 mMainView.findViewById(R.id.selectable_list); | 199 mMainView.findViewById(R.id.selectable_list); |
| 202 | 200 |
| 203 mSelectableListLayout.initializeEmptyView( | 201 mSelectableListLayout.initializeEmptyView( |
| 204 VectorDrawableCompat.create(mActivity.getResources(), | 202 VectorDrawableCompat.create( |
| 205 R.drawable.downloads_big, mActivity.getTheme()), | 203 mActivity.getResources(), R.drawable.downloads_big, mAct
ivity.getTheme()), |
| 206 R.string.download_manager_ui_empty); | 204 R.string.download_manager_ui_empty, R.string.download_manager_no
_results); |
| 207 | 205 |
| 208 mHistoryAdapter = new DownloadHistoryAdapter(isOffTheRecord, parentCompo
nent); | 206 mHistoryAdapter = new DownloadHistoryAdapter(isOffTheRecord, parentCompo
nent); |
| 209 mRecyclerView = mSelectableListLayout.initializeRecyclerView(mHistoryAda
pter); | 207 mRecyclerView = mSelectableListLayout.initializeRecyclerView(mHistoryAda
pter); |
| 210 mItemAnimator = mRecyclerView.getItemAnimator(); | |
| 211 | 208 |
| 212 // Prevent every progress update from causing a transition animation. | 209 // Prevent every progress update from causing a transition animation. |
| 213 mItemAnimator.setChangeDuration(0); | 210 mRecyclerView.getItemAnimator().setChangeDuration(0); |
| 214 | 211 |
| 215 mHistoryAdapter.initialize(mBackendProvider); | 212 mHistoryAdapter.initialize(mBackendProvider); |
| 216 addObserver(mHistoryAdapter); | 213 addObserver(mHistoryAdapter); |
| 217 | 214 |
| 218 mSpaceDisplay = new SpaceDisplay(mMainView, mHistoryAdapter); | 215 mSpaceDisplay = new SpaceDisplay(mMainView, mHistoryAdapter); |
| 219 mHistoryAdapter.registerAdapterDataObserver(mSpaceDisplay); | 216 mHistoryAdapter.registerAdapterDataObserver(mSpaceDisplay); |
| 220 mSpaceDisplay.onChanged(); | 217 mSpaceDisplay.onChanged(); |
| 221 | 218 |
| 222 mFilterAdapter = new FilterAdapter(); | 219 mFilterAdapter = new FilterAdapter(); |
| 223 mFilterAdapter.initialize(this); | 220 mFilterAdapter.initialize(this); |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 303 if (item.getItemId() == R.id.close_menu_id && !DeviceFormFactor.isTablet
(mActivity)) { | 300 if (item.getItemId() == R.id.close_menu_id && !DeviceFormFactor.isTablet
(mActivity)) { |
| 304 mActivity.finish(); | 301 mActivity.finish(); |
| 305 return true; | 302 return true; |
| 306 } else if (item.getItemId() == R.id.selection_mode_delete_menu_id) { | 303 } else if (item.getItemId() == R.id.selection_mode_delete_menu_id) { |
| 307 deleteSelectedItems(); | 304 deleteSelectedItems(); |
| 308 return true; | 305 return true; |
| 309 } else if (item.getItemId() == R.id.selection_mode_share_menu_id) { | 306 } else if (item.getItemId() == R.id.selection_mode_share_menu_id) { |
| 310 shareSelectedItems(); | 307 shareSelectedItems(); |
| 311 return true; | 308 return true; |
| 312 } else if (item.getItemId() == R.id.search_menu_id) { | 309 } else if (item.getItemId() == R.id.search_menu_id) { |
| 313 mRecyclerView.setItemAnimator(null); | 310 mSelectableListLayout.onStartSearch(); |
| 314 mToolbar.showSearchView(); | 311 mToolbar.showSearchView(); |
| 315 mSelectableListLayout.setEmptyViewText(R.string.download_manager_no_
results); | |
| 316 RecordUserAction.record("Android.DownloadManager.Search"); | 312 RecordUserAction.record("Android.DownloadManager.Search"); |
| 317 return true; | 313 return true; |
| 318 } | 314 } |
| 319 return false; | 315 return false; |
| 320 } | 316 } |
| 321 | 317 |
| 322 /** | 318 /** |
| 323 * @see DrawerLayout#openDrawer(int) | 319 * @see DrawerLayout#openDrawer(int) |
| 324 */ | 320 */ |
| 325 @VisibleForTesting | 321 @VisibleForTesting |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 384 DownloadFilter.FILTER_BOUNDARY); | 380 DownloadFilter.FILTER_BOUNDARY); |
| 385 } | 381 } |
| 386 | 382 |
| 387 @Override | 383 @Override |
| 388 public void onSearchTextChanged(String query) { | 384 public void onSearchTextChanged(String query) { |
| 389 mHistoryAdapter.search(query); | 385 mHistoryAdapter.search(query); |
| 390 } | 386 } |
| 391 | 387 |
| 392 @Override | 388 @Override |
| 393 public void onEndSearch() { | 389 public void onEndSearch() { |
| 394 mSelectableListLayout.setEmptyViewText(R.string.download_manager_ui_empt
y); | 390 mSelectableListLayout.onEndSearch(); |
| 395 mHistoryAdapter.onEndSearch(); | 391 mHistoryAdapter.onEndSearch(); |
| 396 mRecyclerView.setItemAnimator(mItemAnimator); | |
| 397 } | 392 } |
| 398 | 393 |
| 399 private void shareSelectedItems() { | 394 private void shareSelectedItems() { |
| 400 List<DownloadHistoryItemWrapper> selectedItems = | 395 List<DownloadHistoryItemWrapper> selectedItems = |
| 401 mBackendProvider.getSelectionDelegate().getSelectedItems(); | 396 mBackendProvider.getSelectionDelegate().getSelectedItems(); |
| 402 assert selectedItems.size() > 0; | 397 assert selectedItems.size() > 0; |
| 403 | 398 |
| 404 mActivity.startActivity(Intent.createChooser(createShareIntent(), | 399 mActivity.startActivity(Intent.createChooser(createShareIntent(), |
| 405 mActivity.getString(R.string.share_link_chooser_title))); | 400 mActivity.getString(R.string.share_link_chooser_title))); |
| 406 | 401 |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 514 public SpaceDisplay getSpaceDisplayForTests() { | 509 public SpaceDisplay getSpaceDisplayForTests() { |
| 515 return mSpaceDisplay; | 510 return mSpaceDisplay; |
| 516 } | 511 } |
| 517 | 512 |
| 518 /** Sets a BackendProvider that is used in place of a real one. */ | 513 /** Sets a BackendProvider that is used in place of a real one. */ |
| 519 @VisibleForTesting | 514 @VisibleForTesting |
| 520 public static void setProviderForTests(BackendProvider provider) { | 515 public static void setProviderForTests(BackendProvider provider) { |
| 521 sProviderForTests = provider; | 516 sProviderForTests = provider; |
| 522 } | 517 } |
| 523 } | 518 } |
| OLD | NEW |