diff --git a/res/values-v11/styles.xml b/res/values-v11/styles.xml index 2c6cc4705..6a337d6e4 100644 --- a/res/values-v11/styles.xml +++ b/res/values-v11/styles.xml @@ -1,10 +1,10 @@ - - diff --git a/res/values/styles.xml b/res/values/styles.xml index 003b8f2ff..3bd939192 100644 --- a/res/values/styles.xml +++ b/res/values/styles.xml @@ -1,10 +1,10 @@ - - diff --git a/src/org/fdroid/fdroid/FDroid.java b/src/org/fdroid/fdroid/FDroid.java index a0a622c5c..e66fcc7c9 100644 --- a/src/org/fdroid/fdroid/FDroid.java +++ b/src/org/fdroid/fdroid/FDroid.java @@ -32,9 +32,9 @@ import android.database.ContentObserver; import android.net.Uri; import android.os.Build; import android.os.Bundle; -import android.support.v4.app.FragmentActivity; import android.support.v4.view.MenuItemCompat; import android.support.v4.view.ViewPager; +import android.support.v7.app.ActionBarActivity; import android.util.Log; import android.view.ContextThemeWrapper; import android.view.LayoutInflater; @@ -42,13 +42,12 @@ import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.TextView; - import org.fdroid.fdroid.compat.TabManager; import org.fdroid.fdroid.data.AppProvider; import org.fdroid.fdroid.views.AppListFragmentPageAdapter; 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_MANAGEREPOS = 1; @@ -80,6 +79,7 @@ public class FDroid extends FragmentActivity { super.onCreate(savedInstanceState); setContentView(R.layout.fdroid); createViews(); + getTabManager().createTabs(); // Start a search by just typing @@ -333,7 +333,7 @@ public class FDroid extends FragmentActivity { private TabManager getTabManager() { if (tabManager == null) { - tabManager = TabManager.create(this, viewPager); + tabManager = new TabManager(this, viewPager); } return tabManager; } diff --git a/src/org/fdroid/fdroid/FDroidApp.java b/src/org/fdroid/fdroid/FDroidApp.java index 16d936fce..ad0d5ada4 100644 --- a/src/org/fdroid/fdroid/FDroidApp.java +++ b/src/org/fdroid/fdroid/FDroidApp.java @@ -32,15 +32,12 @@ import android.os.*; import android.preference.PreferenceManager; import android.util.Log; import android.widget.Toast; - import com.nostra13.universalimageloader.cache.disc.impl.LimitedAgeDiscCache; import com.nostra13.universalimageloader.cache.disc.naming.FileNameGenerator; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; import com.nostra13.universalimageloader.utils.StorageUtils; - import de.duenndns.ssl.MemorizingTrustManager; - import org.fdroid.fdroid.Preferences.ChangeListener; import org.fdroid.fdroid.compat.PRNGFixes; 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.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.security.*; import java.util.Set; @@ -88,7 +90,7 @@ public class FDroidApp extends Application { public void applyTheme(Activity activity) { switch (curTheme) { case dark: - //activity.setTheme(R.style.AppThemeDark); + activity.setTheme(R.style.AppThemeDark); return; case light: activity.setTheme(R.style.AppThemeLight); diff --git a/src/org/fdroid/fdroid/ManageRepo.java b/src/org/fdroid/fdroid/ManageRepo.java index 64b025597..3db6c204c 100644 --- a/src/org/fdroid/fdroid/ManageRepo.java +++ b/src/org/fdroid/fdroid/ManageRepo.java @@ -26,20 +26,19 @@ import android.net.Uri; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import android.os.Bundle; -import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; import android.support.v4.app.NavUtils; +import android.support.v7.app.ActionBarActivity; import android.text.TextUtils; import android.util.Log; import android.view.MenuItem; import android.widget.LinearLayout; import android.widget.Toast; - -import org.fdroid.fdroid.compat.ActionBarCompat; import org.fdroid.fdroid.views.fragments.RepoListFragment; 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 @@ -72,7 +71,7 @@ public class ManageRepo extends FragmentActivity { .commit(); } - ActionBarCompat.create(this).setDisplayHomeAsUpEnabled(true); + getSupportActionBar().setDisplayHomeAsUpEnabled(true); } @Override diff --git a/src/org/fdroid/fdroid/NfcNotEnabledActivity.java b/src/org/fdroid/fdroid/NfcNotEnabledActivity.java index bdca0542c..bec4f3840 100644 --- a/src/org/fdroid/fdroid/NfcNotEnabledActivity.java +++ b/src/org/fdroid/fdroid/NfcNotEnabledActivity.java @@ -2,15 +2,16 @@ package org.fdroid.fdroid; import android.annotation.TargetApi; -import android.app.Activity; import android.content.Intent; import android.nfc.NfcAdapter; import android.os.Build; import android.os.Bundle; import android.provider.Settings; +import android.support.v7.app.ActionBarActivity; // 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 diff --git a/src/org/fdroid/fdroid/SearchResults.java b/src/org/fdroid/fdroid/SearchResults.java index 53f475692..545401a7a 100644 --- a/src/org/fdroid/fdroid/SearchResults.java +++ b/src/org/fdroid/fdroid/SearchResults.java @@ -20,7 +20,7 @@ package org.fdroid.fdroid; import android.content.Intent; 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.NavUtils; import android.support.v4.view.MenuItemCompat; @@ -30,7 +30,7 @@ import android.widget.LinearLayout; import org.fdroid.fdroid.compat.ActionBarCompat; import org.fdroid.fdroid.views.fragments.SearchResultsFragment; -public class SearchResults extends FragmentActivity { +public class SearchResults extends ActionBarActivity { 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) // see: http://blog.perpetumdesign.com/2011/08/strange-case-of-dr-action-and-mr-bar.html // for reason why. - ActionBarCompat.create(this).setDisplayHomeAsUpEnabled(true); + getSupportActionBar().setDisplayHomeAsUpEnabled(true); } diff --git a/src/org/fdroid/fdroid/compat/TabManager.java b/src/org/fdroid/fdroid/compat/TabManager.java index d93e9fdf3..3ddcf3ead 100644 --- a/src/org/fdroid/fdroid/compat/TabManager.java +++ b/src/org/fdroid/fdroid/compat/TabManager.java @@ -1,48 +1,38 @@ 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.List; -import android.annotation.TargetApi; -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 class TabManager { public static final int INDEX_AVAILABLE = 0; public static final int INDEX_INSTALLED = 1; public static final int INDEX_CAN_UPDATE = 2; - public static TabManager create(FDroid parent, ViewPager pager) { - if (hasApi(11)) { - return new HoneycombTabManagerImpl(parent, pager); - } else { - return new OldTabManagerImpl(parent, pager); - } + private ViewPager pager; + private FDroid parent; + private 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 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) { return pager.getAdapter().getPageTitle(index); } @@ -50,126 +40,7 @@ public abstract class TabManager extends Compatibility { public void removeNotification(int 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() { actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); for (int i = 0; i < pager.getAdapter().getCount(); i ++) { @@ -198,7 +69,6 @@ class HoneycombTabManagerImpl extends TabManager { } } - @Override public void selectTab(int index) { actionBar.setSelectedNavigationItem(index); Spinner actionBarSpinner = getActionBarSpinner(); @@ -209,13 +79,11 @@ class HoneycombTabManagerImpl extends TabManager { removeNotification(1); } - @Override public void refreshTabLabel(int index) { CharSequence text = getLabel(index); actionBar.getTabAt(index).setText(text); } - @Override public void onConfigurationChanged(Configuration newConfig) { dirtyConfig = true; } diff --git a/src/org/fdroid/fdroid/views/LocalRepoActivity.java b/src/org/fdroid/fdroid/views/LocalRepoActivity.java index 8bb5582aa..e596c4d27 100644 --- a/src/org/fdroid/fdroid/views/LocalRepoActivity.java +++ b/src/org/fdroid/fdroid/views/LocalRepoActivity.java @@ -5,7 +5,10 @@ import android.annotation.TargetApi; import android.app.Activity; import android.app.Dialog; 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.net.Uri; import android.net.wifi.WifiManager; @@ -16,12 +19,22 @@ import android.os.AsyncTask; import android.os.Build; import android.os.Bundle; import android.support.v4.content.LocalBroadcastManager; +import android.support.v7.app.ActionBarActivity; import android.text.TextUtils; import android.util.Log; -import android.view.*; -import android.widget.*; - -import org.fdroid.fdroid.*; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +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.LocalRepoService; import org.fdroid.fdroid.net.WifiStateChangeService; @@ -30,8 +43,9 @@ import java.util.Locale; import java.util.Timer; import java.util.TimerTask; -public class LocalRepoActivity extends Activity { - private static final String TAG = "LocalRepoActivity"; +public class LocalRepoActivity extends ActionBarActivity { + + private static final String TAG = "org.fdroid.fdroid.LocalRepoActivity"; private ProgressDialog repoProgress; private WifiManager wifiManager; diff --git a/src/org/fdroid/fdroid/views/QrWizardDownloadActivity.java b/src/org/fdroid/fdroid/views/QrWizardDownloadActivity.java index 2952be63a..4ebfbf0f2 100644 --- a/src/org/fdroid/fdroid/views/QrWizardDownloadActivity.java +++ b/src/org/fdroid/fdroid/views/QrWizardDownloadActivity.java @@ -1,22 +1,26 @@ package org.fdroid.fdroid.views; -import android.app.Activity; -import android.content.*; +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.content.SharedPreferences; import android.os.Build; import android.os.Bundle; import android.support.v4.content.LocalBroadcastManager; +import android.support.v7.app.ActionBarActivity; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; - import org.fdroid.fdroid.*; import org.fdroid.fdroid.net.WifiStateChangeService; -public class QrWizardDownloadActivity extends Activity { - private static final String TAG = "QrWizardDownloadActivity"; +public class QrWizardDownloadActivity extends ActionBarActivity { + + private static final String TAG = "org.fdroid.fdroid.QrWizardDownloadActivity"; @Override public void onCreate(Bundle savedInstanceState) { diff --git a/src/org/fdroid/fdroid/views/QrWizardWifiNetworkActivity.java b/src/org/fdroid/fdroid/views/QrWizardWifiNetworkActivity.java index 6e933de92..3f5c8dc4c 100644 --- a/src/org/fdroid/fdroid/views/QrWizardWifiNetworkActivity.java +++ b/src/org/fdroid/fdroid/views/QrWizardWifiNetworkActivity.java @@ -1,26 +1,28 @@ package org.fdroid.fdroid.views; -import android.app.Activity; -import android.content.*; +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import android.os.Build; import android.os.Bundle; import android.support.v4.content.LocalBroadcastManager; +import android.support.v7.app.ActionBarActivity; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; - import org.fdroid.fdroid.FDroidApp; import org.fdroid.fdroid.QrGenAsyncTask; import org.fdroid.fdroid.R; import org.fdroid.fdroid.net.WifiStateChangeService; -public class QrWizardWifiNetworkActivity extends Activity { - private static final String TAG = "QrWizardWifiNetworkActivity"; +public class QrWizardWifiNetworkActivity extends ActionBarActivity { + private static final String TAG = "org.fdroid.fdroid.QrWizardWifiNetworkActivity"; private WifiManager wifiManager; diff --git a/src/org/fdroid/fdroid/views/SelectLocalAppsActivity.java b/src/org/fdroid/fdroid/views/SelectLocalAppsActivity.java index 71fc8ee9c..d61f95d4d 100644 --- a/src/org/fdroid/fdroid/views/SelectLocalAppsActivity.java +++ b/src/org/fdroid/fdroid/views/SelectLocalAppsActivity.java @@ -1,21 +1,22 @@ package org.fdroid.fdroid.views; -import android.annotation.TargetApi; -import android.app.Activity; import android.content.Intent; 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 org.fdroid.fdroid.FDroidApp; import org.fdroid.fdroid.PreferencesActivity; import org.fdroid.fdroid.R; import org.fdroid.fdroid.views.fragments.SelectLocalAppsFragment; -@TargetApi(11) -// TODO replace with appcompat-v7 -public class SelectLocalAppsActivity extends Activity { +public class SelectLocalAppsActivity extends ActionBarActivity { + private static final String TAG = "SelectLocalAppsActivity"; private SelectLocalAppsFragment selectLocalAppsFragment = null; private SearchView searchView; @@ -31,14 +32,14 @@ public class SelectLocalAppsActivity extends Activity { protected void onResume() { super.onResume(); if (selectLocalAppsFragment == null) - selectLocalAppsFragment = (SelectLocalAppsFragment) getFragmentManager() + selectLocalAppsFragment = (SelectLocalAppsFragment) getSupportFragmentManager() .findFragmentById(R.id.fragment_app_list); } @Override public boolean onCreateOptionsMenu(Menu 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); return true; } diff --git a/src/org/fdroid/fdroid/views/fragments/SelectLocalAppsFragment.java b/src/org/fdroid/fdroid/views/fragments/SelectLocalAppsFragment.java index 785b9ac25..0429f09be 100644 --- a/src/org/fdroid/fdroid/views/fragments/SelectLocalAppsFragment.java +++ b/src/org/fdroid/fdroid/views/fragments/SelectLocalAppsFragment.java @@ -14,24 +14,25 @@ limitations under the License. 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.NameNotFoundException; import android.database.Cursor; import android.graphics.drawable.Drawable; import android.net.Uri; 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.view.ActionMode; 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.SimpleCursorAdapter; import android.widget.SimpleCursorAdapter.ViewBinder; - +import android.widget.TextView; import org.fdroid.fdroid.FDroidApp; import org.fdroid.fdroid.R; import org.fdroid.fdroid.data.InstalledAppProvider; @@ -41,10 +42,8 @@ import org.fdroid.fdroid.views.SelectLocalAppsActivity; import java.util.HashSet; -//TODO replace with appcompat-v7 -@TargetApi(11) public class SelectLocalAppsFragment extends ListFragment - implements LoaderCallbacks, OnQueryTextListener { + implements LoaderManager.LoaderCallbacks, OnQueryTextListener { private PackageManager packageManager; private Drawable defaultAppIcon; @@ -95,7 +94,7 @@ public class SelectLocalAppsFragment extends ListFragment Drawable icon; try { icon = packageManager.getApplicationIcon(packageName); - } catch (NameNotFoundException e) { + } catch (PackageManager.NameNotFoundException e) { icon = defaultAppIcon; } iconView.setImageDrawable(icon);