WIP: Migrating activities to appcompat-v7.

Conflicts:
	src/org/fdroid/fdroid/FDroidApp.java
	src/org/fdroid/fdroid/views/LocalRepoActivity.java
	src/org/fdroid/fdroid/views/QrWizardDownloadActivity.java
This commit is contained in:
Peter Serwylo 2014-06-03 08:13:53 +09:30
parent 58ff02a3f4
commit 92421bac05
13 changed files with 105 additions and 215 deletions

View File

@ -1,10 +1,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"> <resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="AppBaseThemeDark" parent="android:Theme.Holo"> <style name="AppBaseThemeDark" parent="Theme.AppCompat">
<!-- API 11 theme customizations go here --> <!-- API 11 theme customizations go here -->
</style> </style>
<style name="AppBaseThemeLight" parent="android:Theme.Holo.Light"> <style name="AppBaseThemeLight" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- API 11 theme customizations go here --> <!-- API 11 theme customizations go here -->
</style> </style>

View File

@ -1,10 +1,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"> <resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="AppBaseThemeDark" parent="android:Theme.Black"> <style name="AppBaseThemeDark" parent="Theme.AppCompat">
<!-- backward-compatibility theme options go here --> <!-- backward-compatibility theme options go here -->
</style> </style>
<style name="AppBaseThemeLight" parent="android:Theme.Light"> <style name="AppBaseThemeLight" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- backward-compatibility theme options go here --> <!-- backward-compatibility theme options go here -->
</style> </style>

View File

@ -32,9 +32,9 @@ import android.database.ContentObserver;
import android.net.Uri; import android.net.Uri;
import android.os.Build; import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.MenuItemCompat; import android.support.v4.view.MenuItemCompat;
import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager;
import android.support.v7.app.ActionBarActivity;
import android.util.Log; import android.util.Log;
import android.view.ContextThemeWrapper; import android.view.ContextThemeWrapper;
import android.view.LayoutInflater; import android.view.LayoutInflater;
@ -42,13 +42,12 @@ import android.view.Menu;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.widget.TextView; import android.widget.TextView;
import org.fdroid.fdroid.compat.TabManager; import org.fdroid.fdroid.compat.TabManager;
import org.fdroid.fdroid.data.AppProvider; import org.fdroid.fdroid.data.AppProvider;
import org.fdroid.fdroid.views.AppListFragmentPageAdapter; import org.fdroid.fdroid.views.AppListFragmentPageAdapter;
import org.fdroid.fdroid.views.LocalRepoActivity; import org.fdroid.fdroid.views.LocalRepoActivity;
public class FDroid extends FragmentActivity { public class FDroid extends ActionBarActivity {
public static final int REQUEST_APPDETAILS = 0; public static final int REQUEST_APPDETAILS = 0;
public static final int REQUEST_MANAGEREPOS = 1; public static final int REQUEST_MANAGEREPOS = 1;
@ -80,6 +79,7 @@ public class FDroid extends FragmentActivity {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
setContentView(R.layout.fdroid); setContentView(R.layout.fdroid);
createViews(); createViews();
getTabManager().createTabs(); getTabManager().createTabs();
// Start a search by just typing // Start a search by just typing
@ -333,7 +333,7 @@ public class FDroid extends FragmentActivity {
private TabManager getTabManager() { private TabManager getTabManager() {
if (tabManager == null) { if (tabManager == null) {
tabManager = TabManager.create(this, viewPager); tabManager = new TabManager(this, viewPager);
} }
return tabManager; return tabManager;
} }

View File

@ -32,15 +32,12 @@ import android.os.*;
import android.preference.PreferenceManager; import android.preference.PreferenceManager;
import android.util.Log; import android.util.Log;
import android.widget.Toast; import android.widget.Toast;
import com.nostra13.universalimageloader.cache.disc.impl.LimitedAgeDiscCache; import com.nostra13.universalimageloader.cache.disc.impl.LimitedAgeDiscCache;
import com.nostra13.universalimageloader.cache.disc.naming.FileNameGenerator; import com.nostra13.universalimageloader.cache.disc.naming.FileNameGenerator;
import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.utils.StorageUtils; import com.nostra13.universalimageloader.utils.StorageUtils;
import de.duenndns.ssl.MemorizingTrustManager; import de.duenndns.ssl.MemorizingTrustManager;
import org.fdroid.fdroid.Preferences.ChangeListener; import org.fdroid.fdroid.Preferences.ChangeListener;
import org.fdroid.fdroid.compat.PRNGFixes; import org.fdroid.fdroid.compat.PRNGFixes;
import org.fdroid.fdroid.data.AppProvider; import org.fdroid.fdroid.data.AppProvider;
@ -52,6 +49,11 @@ import org.fdroid.fdroid.net.WifiStateChangeService;
import org.thoughtcrime.ssl.pinning.PinningTrustManager; import org.thoughtcrime.ssl.pinning.PinningTrustManager;
import org.thoughtcrime.ssl.pinning.SystemKeyStore; import org.thoughtcrime.ssl.pinning.SystemKeyStore;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.TrustManagerFactory;
import javax.net.ssl.X509TrustManager;
import java.io.File; import java.io.File;
import java.security.*; import java.security.*;
import java.util.Set; import java.util.Set;
@ -88,7 +90,7 @@ public class FDroidApp extends Application {
public void applyTheme(Activity activity) { public void applyTheme(Activity activity) {
switch (curTheme) { switch (curTheme) {
case dark: case dark:
//activity.setTheme(R.style.AppThemeDark); activity.setTheme(R.style.AppThemeDark);
return; return;
case light: case light:
activity.setTheme(R.style.AppThemeLight); activity.setTheme(R.style.AppThemeLight);

View File

@ -26,20 +26,19 @@ import android.net.Uri;
import android.net.wifi.WifiInfo; import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager; import android.net.wifi.WifiManager;
import android.os.Bundle; import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentManager;
import android.support.v4.app.NavUtils; import android.support.v4.app.NavUtils;
import android.support.v7.app.ActionBarActivity;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log; import android.util.Log;
import android.view.MenuItem; import android.view.MenuItem;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.Toast; import android.widget.Toast;
import org.fdroid.fdroid.compat.ActionBarCompat;
import org.fdroid.fdroid.views.fragments.RepoListFragment; import org.fdroid.fdroid.views.fragments.RepoListFragment;
import java.util.Locale; import java.util.Locale;
public class ManageRepo extends FragmentActivity {
public class ManageRepo extends ActionBarActivity {
/** /**
* If we have a new repo added, or the address of a repo has changed, then * If we have a new repo added, or the address of a repo has changed, then
@ -72,7 +71,7 @@ public class ManageRepo extends FragmentActivity {
.commit(); .commit();
} }
ActionBarCompat.create(this).setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayHomeAsUpEnabled(true);
} }
@Override @Override

View File

@ -2,15 +2,16 @@
package org.fdroid.fdroid; package org.fdroid.fdroid;
import android.annotation.TargetApi; import android.annotation.TargetApi;
import android.app.Activity;
import android.content.Intent; import android.content.Intent;
import android.nfc.NfcAdapter; import android.nfc.NfcAdapter;
import android.os.Build; import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.provider.Settings; import android.provider.Settings;
import android.support.v7.app.ActionBarActivity;
// aka Android 4.0 aka Ice Cream Sandwich // aka Android 4.0 aka Ice Cream Sandwich
public class NfcNotEnabledActivity extends Activity { public class NfcNotEnabledActivity extends ActionBarActivity
{
/* /*
* ACTION_NFC_SETTINGS was added in 4.1 aka Jelly Bean MR1 as a * ACTION_NFC_SETTINGS was added in 4.1 aka Jelly Bean MR1 as a

View File

@ -20,7 +20,7 @@ package org.fdroid.fdroid;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.support.v4.app.FragmentActivity; import android.support.v7.app.ActionBarActivity;
import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentManager;
import android.support.v4.app.NavUtils; import android.support.v4.app.NavUtils;
import android.support.v4.view.MenuItemCompat; import android.support.v4.view.MenuItemCompat;
@ -30,7 +30,7 @@ import android.widget.LinearLayout;
import org.fdroid.fdroid.compat.ActionBarCompat; import org.fdroid.fdroid.compat.ActionBarCompat;
import org.fdroid.fdroid.views.fragments.SearchResultsFragment; import org.fdroid.fdroid.views.fragments.SearchResultsFragment;
public class SearchResults extends FragmentActivity { public class SearchResults extends ActionBarActivity {
private static final int SEARCH = Menu.FIRST; private static final int SEARCH = Menu.FIRST;
@ -61,7 +61,7 @@ public class SearchResults extends FragmentActivity {
// Actionbar cannot be accessed until after setContentView (on 3.0 and 3.1 devices) // Actionbar cannot be accessed until after setContentView (on 3.0 and 3.1 devices)
// see: http://blog.perpetumdesign.com/2011/08/strange-case-of-dr-action-and-mr-bar.html // see: http://blog.perpetumdesign.com/2011/08/strange-case-of-dr-action-and-mr-bar.html
// for reason why. // for reason why.
ActionBarCompat.create(this).setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayHomeAsUpEnabled(true);
} }

View File

@ -1,48 +1,38 @@
package org.fdroid.fdroid.compat; package org.fdroid.fdroid.compat;
import android.content.res.Configuration;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.view.ViewPager;
import android.support.v7.app.ActionBar;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Spinner;
import org.fdroid.fdroid.FDroid;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import android.annotation.TargetApi; public class TabManager {
import android.app.ActionBar;
import android.app.FragmentTransaction;
import android.content.res.Configuration;
import android.view.View;
import android.view.ViewGroup;
import android.widget.*;
import android.support.v4.view.ViewPager;
import org.fdroid.fdroid.FDroid;
import org.fdroid.fdroid.R;
public abstract class TabManager extends Compatibility {
public static final int INDEX_AVAILABLE = 0; public static final int INDEX_AVAILABLE = 0;
public static final int INDEX_INSTALLED = 1; public static final int INDEX_INSTALLED = 1;
public static final int INDEX_CAN_UPDATE = 2; public static final int INDEX_CAN_UPDATE = 2;
public static TabManager create(FDroid parent, ViewPager pager) { private ViewPager pager;
if (hasApi(11)) { private FDroid parent;
return new HoneycombTabManagerImpl(parent, pager); private final ActionBar actionBar;
} else { private Spinner actionBarSpinner = null;
return new OldTabManagerImpl(parent, pager);
} // Used to make sure we only search for the action bar spinner once
// in each orientation.
private boolean dirtyConfig = true;
public TabManager(FDroid parent, ViewPager pager) {
actionBar = parent.getSupportActionBar();
this.parent = parent;
this.pager = pager;
} }
protected final ViewPager pager;
protected final FDroid parent;
protected TabManager(FDroid parent, ViewPager pager) {
this.parent = parent;
this.pager = pager;
}
abstract public void createTabs();
abstract public void selectTab(int index);
abstract public void refreshTabLabel(int index);
abstract public void onConfigurationChanged(Configuration newConfig);
protected CharSequence getLabel(int index) { protected CharSequence getLabel(int index) {
return pager.getAdapter().getPageTitle(index); return pager.getAdapter().getPageTitle(index);
} }
@ -50,126 +40,7 @@ public abstract class TabManager extends Compatibility {
public void removeNotification(int id) { public void removeNotification(int id) {
parent.removeNotification(id); parent.removeNotification(id);
} }
}
class OldTabManagerImpl extends TabManager {
private TabHost tabHost;
public OldTabManagerImpl(FDroid parent, ViewPager pager) {
super(parent, pager);
}
/**
* There is a bit of boiler-plate code required to get a TabWidget showing,
* which includes creating a TabHost, populating it with the TabWidget,
* and giving it a FrameLayout as a child. This will make the tabs have
* dummy empty contents and then hook them up to our ViewPager.
*/
@Override
public void createTabs() {
tabHost = new TabHost(parent, null);
tabHost.setLayoutParams(new TabHost.LayoutParams(
TabHost.LayoutParams.MATCH_PARENT, TabHost.LayoutParams.WRAP_CONTENT));
TabWidget tabWidget = new TabWidget(parent);
tabWidget.setId(android.R.id.tabs);
tabHost.setLayoutParams(new TabHost.LayoutParams(
TabWidget.LayoutParams.MATCH_PARENT, TabWidget.LayoutParams.WRAP_CONTENT));
FrameLayout layout = new FrameLayout(parent);
layout.setId(android.R.id.tabcontent);
layout.setLayoutParams(new TabWidget.LayoutParams(0, 0));
tabHost.addView(tabWidget);
tabHost.addView(layout);
tabHost.setup();
TabHost.TabContentFactory factory = new TabHost.TabContentFactory() {
@Override
public View createTabContent(String tag) {
return new View(parent);
}
};
TabHost.TabSpec availableTabSpec = tabHost.newTabSpec("available")
.setIndicator(
parent.getString(R.string.tab_noninstalled),
parent.getResources().getDrawable(android.R.drawable.ic_input_add))
.setContent(factory);
TabHost.TabSpec installedTabSpec = tabHost.newTabSpec("installed")
.setIndicator(
parent.getString(R.string.inst),
parent.getResources().getDrawable(android.R.drawable.star_off))
.setContent(factory);
TabHost.TabSpec canUpdateTabSpec = tabHost.newTabSpec("canUpdate")
.setIndicator(
parent.getString(R.string.tab_updates),
parent.getResources().getDrawable(android.R.drawable.star_on))
.setContent(factory);
tabHost.addTab(availableTabSpec);
tabHost.addTab(installedTabSpec);
tabHost.addTab(canUpdateTabSpec);
LinearLayout contentView = (LinearLayout)parent.findViewById(R.id.fdroid_layout);
contentView.addView(tabHost, 0);
tabHost.setOnTabChangedListener( new TabHost.OnTabChangeListener() {
@Override
public void onTabChanged(String tabId) {
int pos = tabHost.getCurrentTab();
pager.setCurrentItem(pos);
if (pos == INDEX_CAN_UPDATE)
removeNotification(1);
}
});
}
@Override
public void selectTab(int index) {
tabHost.setCurrentTab(index);
if (index == INDEX_CAN_UPDATE)
removeNotification(1);
}
@Override
public void refreshTabLabel(int index) {
CharSequence text = getLabel(index);
// Update the count on the 'Updates' tab to show the number available.
// This is quite unpleasant, but seems to be the only way to do it.
TextView textView = (TextView) tabHost.getTabWidget().getChildAt(index)
.findViewById(android.R.id.title);
textView.setText(text);
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
// Do nothing
}
}
@TargetApi(11)
class HoneycombTabManagerImpl extends TabManager {
protected final ActionBar actionBar;
private Spinner actionBarSpinner = null;
// Used to make sure we only search for the action bar spinner once
// in each orientation.
private boolean dirtyConfig = true;
public HoneycombTabManagerImpl(FDroid parent, ViewPager pager) {
super(parent, pager);
actionBar = parent.getActionBar();
}
@Override
public void createTabs() { public void createTabs() {
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
for (int i = 0; i < pager.getAdapter().getCount(); i ++) { for (int i = 0; i < pager.getAdapter().getCount(); i ++) {
@ -198,7 +69,6 @@ class HoneycombTabManagerImpl extends TabManager {
} }
} }
@Override
public void selectTab(int index) { public void selectTab(int index) {
actionBar.setSelectedNavigationItem(index); actionBar.setSelectedNavigationItem(index);
Spinner actionBarSpinner = getActionBarSpinner(); Spinner actionBarSpinner = getActionBarSpinner();
@ -209,13 +79,11 @@ class HoneycombTabManagerImpl extends TabManager {
removeNotification(1); removeNotification(1);
} }
@Override
public void refreshTabLabel(int index) { public void refreshTabLabel(int index) {
CharSequence text = getLabel(index); CharSequence text = getLabel(index);
actionBar.getTabAt(index).setText(text); actionBar.getTabAt(index).setText(text);
} }
@Override
public void onConfigurationChanged(Configuration newConfig) { public void onConfigurationChanged(Configuration newConfig) {
dirtyConfig = true; dirtyConfig = true;
} }

View File

@ -5,7 +5,10 @@ import android.annotation.TargetApi;
import android.app.Activity; import android.app.Activity;
import android.app.Dialog; import android.app.Dialog;
import android.app.ProgressDialog; import android.app.ProgressDialog;
import android.content.*; import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.res.Configuration; import android.content.res.Configuration;
import android.net.Uri; import android.net.Uri;
import android.net.wifi.WifiManager; import android.net.wifi.WifiManager;
@ -16,12 +19,22 @@ import android.os.AsyncTask;
import android.os.Build; import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.support.v4.content.LocalBroadcastManager; import android.support.v4.content.LocalBroadcastManager;
import android.support.v7.app.ActionBarActivity;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log; import android.util.Log;
import android.view.*; import android.view.Menu;
import android.widget.*; import android.view.MenuInflater;
import android.view.MenuItem;
import org.fdroid.fdroid.*; import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.TextView;
import android.widget.Toast;
import org.fdroid.fdroid.FDroidApp;
import org.fdroid.fdroid.PreferencesActivity;
import org.fdroid.fdroid.QrGenAsyncTask;
import org.fdroid.fdroid.R;
import org.fdroid.fdroid.Utils;
import org.fdroid.fdroid.localrepo.LocalRepoManager; import org.fdroid.fdroid.localrepo.LocalRepoManager;
import org.fdroid.fdroid.localrepo.LocalRepoService; import org.fdroid.fdroid.localrepo.LocalRepoService;
import org.fdroid.fdroid.net.WifiStateChangeService; import org.fdroid.fdroid.net.WifiStateChangeService;
@ -30,8 +43,9 @@ import java.util.Locale;
import java.util.Timer; import java.util.Timer;
import java.util.TimerTask; import java.util.TimerTask;
public class LocalRepoActivity extends Activity { public class LocalRepoActivity extends ActionBarActivity {
private static final String TAG = "LocalRepoActivity";
private static final String TAG = "org.fdroid.fdroid.LocalRepoActivity";
private ProgressDialog repoProgress; private ProgressDialog repoProgress;
private WifiManager wifiManager; private WifiManager wifiManager;

View File

@ -1,22 +1,26 @@
package org.fdroid.fdroid.views; package org.fdroid.fdroid.views;
import android.app.Activity; import android.content.BroadcastReceiver;
import android.content.*; import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.os.Build; import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.support.v4.content.LocalBroadcastManager; import android.support.v4.content.LocalBroadcastManager;
import android.support.v7.app.ActionBarActivity;
import android.util.Log; import android.util.Log;
import android.view.View; import android.view.View;
import android.view.View.OnClickListener; import android.view.View.OnClickListener;
import android.widget.Button; import android.widget.Button;
import android.widget.TextView; import android.widget.TextView;
import org.fdroid.fdroid.*; import org.fdroid.fdroid.*;
import org.fdroid.fdroid.net.WifiStateChangeService; import org.fdroid.fdroid.net.WifiStateChangeService;
public class QrWizardDownloadActivity extends Activity { public class QrWizardDownloadActivity extends ActionBarActivity {
private static final String TAG = "QrWizardDownloadActivity";
private static final String TAG = "org.fdroid.fdroid.QrWizardDownloadActivity";
@Override @Override
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {

View File

@ -1,26 +1,28 @@
package org.fdroid.fdroid.views; package org.fdroid.fdroid.views;
import android.app.Activity; import android.content.BroadcastReceiver;
import android.content.*; import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.wifi.WifiInfo; import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager; import android.net.wifi.WifiManager;
import android.os.Build; import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.support.v4.content.LocalBroadcastManager; import android.support.v4.content.LocalBroadcastManager;
import android.support.v7.app.ActionBarActivity;
import android.util.Log; import android.util.Log;
import android.view.View; import android.view.View;
import android.view.View.OnClickListener; import android.view.View.OnClickListener;
import android.widget.Button; import android.widget.Button;
import android.widget.TextView; import android.widget.TextView;
import org.fdroid.fdroid.FDroidApp; import org.fdroid.fdroid.FDroidApp;
import org.fdroid.fdroid.QrGenAsyncTask; import org.fdroid.fdroid.QrGenAsyncTask;
import org.fdroid.fdroid.R; import org.fdroid.fdroid.R;
import org.fdroid.fdroid.net.WifiStateChangeService; import org.fdroid.fdroid.net.WifiStateChangeService;
public class QrWizardWifiNetworkActivity extends Activity { public class QrWizardWifiNetworkActivity extends ActionBarActivity {
private static final String TAG = "QrWizardWifiNetworkActivity"; private static final String TAG = "org.fdroid.fdroid.QrWizardWifiNetworkActivity";
private WifiManager wifiManager; private WifiManager wifiManager;

View File

@ -1,21 +1,22 @@
package org.fdroid.fdroid.views; package org.fdroid.fdroid.views;
import android.annotation.TargetApi;
import android.app.Activity;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.view.*; import android.support.v4.view.MenuItemCompat;
import android.support.v7.app.ActionBarActivity;
import android.view.ActionMode;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.SearchView; import android.widget.SearchView;
import org.fdroid.fdroid.FDroidApp; import org.fdroid.fdroid.FDroidApp;
import org.fdroid.fdroid.PreferencesActivity; import org.fdroid.fdroid.PreferencesActivity;
import org.fdroid.fdroid.R; import org.fdroid.fdroid.R;
import org.fdroid.fdroid.views.fragments.SelectLocalAppsFragment; import org.fdroid.fdroid.views.fragments.SelectLocalAppsFragment;
@TargetApi(11) public class SelectLocalAppsActivity extends ActionBarActivity {
// TODO replace with appcompat-v7
public class SelectLocalAppsActivity extends Activity {
private static final String TAG = "SelectLocalAppsActivity"; private static final String TAG = "SelectLocalAppsActivity";
private SelectLocalAppsFragment selectLocalAppsFragment = null; private SelectLocalAppsFragment selectLocalAppsFragment = null;
private SearchView searchView; private SearchView searchView;
@ -31,14 +32,14 @@ public class SelectLocalAppsActivity extends Activity {
protected void onResume() { protected void onResume() {
super.onResume(); super.onResume();
if (selectLocalAppsFragment == null) if (selectLocalAppsFragment == null)
selectLocalAppsFragment = (SelectLocalAppsFragment) getFragmentManager() selectLocalAppsFragment = (SelectLocalAppsFragment) getSupportFragmentManager()
.findFragmentById(R.id.fragment_app_list); .findFragmentById(R.id.fragment_app_list);
} }
@Override @Override
public boolean onCreateOptionsMenu(Menu menu) { public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.select_local_apps_activity, menu); getMenuInflater().inflate(R.menu.select_local_apps_activity, menu);
searchView = (SearchView) menu.findItem(R.id.action_search).getActionView(); searchView = (SearchView) MenuItemCompat.getActionView(menu.findItem(R.id.action_search));
searchView.setOnQueryTextListener(selectLocalAppsFragment); searchView.setOnQueryTextListener(selectLocalAppsFragment);
return true; return true;
} }

View File

@ -14,24 +14,25 @@ limitations under the License.
package org.fdroid.fdroid.views.fragments; package org.fdroid.fdroid.views.fragments;
import android.annotation.TargetApi;
import android.app.ListFragment;
import android.app.LoaderManager.LoaderCallbacks;
import android.content.CursorLoader;
import android.content.Loader;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.database.Cursor; import android.database.Cursor;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.net.Uri; import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.support.v4.app.ListFragment;
import android.support.v4.app.LoaderManager;
import android.support.v4.content.CursorLoader;
import android.support.v4.content.Loader;
import android.text.TextUtils; import android.text.TextUtils;
import android.view.ActionMode; import android.view.ActionMode;
import android.view.View; import android.view.View;
import android.widget.*; import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.SearchView.OnQueryTextListener; import android.widget.SearchView.OnQueryTextListener;
import android.widget.SimpleCursorAdapter;
import android.widget.SimpleCursorAdapter.ViewBinder; import android.widget.SimpleCursorAdapter.ViewBinder;
import android.widget.TextView;
import org.fdroid.fdroid.FDroidApp; import org.fdroid.fdroid.FDroidApp;
import org.fdroid.fdroid.R; import org.fdroid.fdroid.R;
import org.fdroid.fdroid.data.InstalledAppProvider; import org.fdroid.fdroid.data.InstalledAppProvider;
@ -41,10 +42,8 @@ import org.fdroid.fdroid.views.SelectLocalAppsActivity;
import java.util.HashSet; import java.util.HashSet;
//TODO replace with appcompat-v7
@TargetApi(11)
public class SelectLocalAppsFragment extends ListFragment public class SelectLocalAppsFragment extends ListFragment
implements LoaderCallbacks<Cursor>, OnQueryTextListener { implements LoaderManager.LoaderCallbacks<Cursor>, OnQueryTextListener {
private PackageManager packageManager; private PackageManager packageManager;
private Drawable defaultAppIcon; private Drawable defaultAppIcon;
@ -95,7 +94,7 @@ public class SelectLocalAppsFragment extends ListFragment
Drawable icon; Drawable icon;
try { try {
icon = packageManager.getApplicationIcon(packageName); icon = packageManager.getApplicationIcon(packageName);
} catch (NameNotFoundException e) { } catch (PackageManager.NameNotFoundException e) {
icon = defaultAppIcon; icon = defaultAppIcon;
} }
iconView.setImageDrawable(icon); iconView.setImageDrawable(icon);