/* * Copyright (C) 2013 47 Degrees, LLC * http://47deg.com * hello@47deg.com * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.fortysevendeg.android.swipelistview.sample.activities; import android.app.ProgressDialog; import android.content.Intent; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.os.AsyncTask; import android.os.Bundle; import android.support.v4.app.FragmentActivity; import android.util.DisplayMetrics; import android.util.Log; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import com.fortysevendeg.android.swipelistview.BaseSwipeListViewListener; import com.fortysevendeg.android.swipelistview.R; import com.fortysevendeg.android.swipelistview.SwipeListView; import com.fortysevendeg.android.swipelistview.sample.adapters.PackageAdapter; import com.fortysevendeg.android.swipelistview.sample.adapters.PackageItem; import com.fortysevendeg.android.swipelistview.sample.dialogs.AboutDialog; import com.fortysevendeg.android.swipelistview.sample.utils.PreferencesManager; import com.fortysevendeg.android.swipelistview.sample.utils.SettingsManager; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class SwipeListViewExampleActivity extends FragmentActivity { private static final int REQUEST_CODE_SETTINGS = 0; private PackageAdapter adapter; private List<PackageItem> data; private SwipeListView swipeListView; private ProgressDialog progressDialog; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.swipe_list_view_activity); data = new ArrayList<PackageItem>(); adapter = new PackageAdapter(this, data); swipeListView = (SwipeListView) findViewById(R.id.example_lv_list); swipeListView.setSwipeListViewListener(new BaseSwipeListViewListener() { @Override public void onOpened(int position, boolean toRight) { } @Override public void onClosed(int position, boolean fromRight) { } @Override public void onListChanged() { } @Override public void onMove(int position, float x) { } @Override public void onStartOpen(int position, int action, boolean right) { Log.d("swipe", String.format("onStartOpen %d - action %d", position, action)); } @Override public void onStartClose(int position, boolean right) { Log.d("swipe", String.format("onStartClose %d", position)); } @Override public void onClickFrontView(int position) { Log.d("swipe", String.format("onClickFrontView %d", position)); } @Override public void onClickBackView(int position) { Log.d("swipe", String.format("onClickBackView %d", position)); } @Override public void onDismiss(int[] reverseSortedPositions) { for (int position : reverseSortedPositions) { data.remove(position); } adapter.notifyDataSetChanged(); } }); swipeListView.setAdapter(adapter); reload(); new ListAppTask().execute(); progressDialog = new ProgressDialog(this); progressDialog.setMessage(getString(R.string.loading)); progressDialog.setCancelable(false); progressDialog.show(); } private void reload() { SettingsManager settings = SettingsManager.getInstance(); swipeListView.setSwipeMode(settings.getSwipeMode()); swipeListView.setSwipeActionLeft(settings.getSwipeActionLeft()); swipeListView.setSwipeActionRight(settings.getSwipeActionRight()); swipeListView.setOffsetLeft(convertDpToPixel(settings.getSwipeOffsetLeft())); swipeListView.setOffsetRight(convertDpToPixel(settings.getSwipeOffsetRight())); swipeListView.setAnimationTime(settings.getSwipeAnimationTime()); swipeListView.setSwipeOpenOnLongPress(settings.isSwipeOpenOnLongPress()); } public int convertDpToPixel(float dp){ DisplayMetrics metrics = getResources().getDisplayMetrics(); float px = dp * (metrics.densityDpi/160f); return (int) px; } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menu_app, menu); return true; } @Override public boolean onMenuItemSelected(int featureId, MenuItem item) { boolean handled = false; switch (item.getItemId()) { case android.R.id.home: //Actionbar home/up icon finish(); break; case R.id.menu_settings: Intent intent = new Intent(this, SettingsActivity.class); startActivityForResult(intent, REQUEST_CODE_SETTINGS); break; } return handled; } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); switch (requestCode) { case REQUEST_CODE_SETTINGS: reload(); } } public class ListAppTask extends AsyncTask<Void, Void, List<PackageItem>> { protected List<PackageItem> doInBackground(Void... args) { PackageManager appInfo = getPackageManager(); List<ApplicationInfo> listInfo = appInfo.getInstalledApplications(0); Collections.sort(listInfo, new ApplicationInfo.DisplayNameComparator(appInfo)); List<PackageItem> data = new ArrayList<PackageItem>(); for (int index=0; index<listInfo.size(); index++) { try { ApplicationInfo content = listInfo.get(index); if ( (content.flags != ApplicationInfo.FLAG_SYSTEM) && content.enabled) { if (content.icon!=0) { PackageItem item = new PackageItem(); item.setName(getPackageManager().getApplicationLabel(content).toString()); item.setPackageName(content.packageName); item.setIcon(getPackageManager().getDrawable(content.packageName, content.icon, content)); data.add(item); } } } catch (Exception e) { } } return data; } protected void onPostExecute(List<PackageItem> result) { data.clear(); data.addAll(result); adapter.notifyDataSetChanged(); if (progressDialog != null) { progressDialog.dismiss(); progressDialog = null; } if (PreferencesManager.getInstance(SwipeListViewExampleActivity.this).getShowAbout()) { AboutDialog logOutDialog = new AboutDialog(); logOutDialog.show(getSupportFragmentManager(), "dialog"); } } } }