Add update all button (no functionality yet)
This commit is contained in:
parent
b3ca915459
commit
d7203535e7
@ -240,5 +240,6 @@
|
|||||||
<string name="requesting_root_access_body">Requesting root access…</string>
|
<string name="requesting_root_access_body">Requesting root access…</string>
|
||||||
<string name="root_access_denied_title">Root access denied</string>
|
<string name="root_access_denied_title">Root access denied</string>
|
||||||
<string name="root_access_denied_body">Either your Android device is not rooted or you have denied root access for F-Droid.</string>
|
<string name="root_access_denied_body">Either your Android device is not rooted or you have denied root access for F-Droid.</string>
|
||||||
|
<string name="update_all">Update all</string>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
|
@ -117,4 +117,9 @@ public class DefaultInstaller extends Installer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean supportsUnattendedOperations() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -211,4 +211,6 @@ abstract public class Installer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public abstract boolean handleOnActivityResult(int requestCode, int resultCode, Intent data);
|
public abstract boolean handleOnActivityResult(int requestCode, int resultCode, Intent data);
|
||||||
|
|
||||||
|
public abstract boolean supportsUnattendedOperations();
|
||||||
}
|
}
|
||||||
|
@ -241,6 +241,11 @@ public class RootInstaller extends Installer {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean supportsUnattendedOperations() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* pm install [-l] [-r] [-t] [-i INSTALLER_PACKAGE_NAME] [-s] [-f] [--algo
|
* pm install [-l] [-r] [-t] [-i INSTALLER_PACKAGE_NAME] [-s] [-f] [--algo
|
||||||
* <algorithm name> --key <key-in-hex> --iv <IV-in-hex>] [--originating-uri
|
* <algorithm name> --key <key-in-hex> --iv <IV-in-hex>] [--originating-uri
|
||||||
|
@ -167,6 +167,11 @@ public class SystemPermissionInstaller extends Installer {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean supportsUnattendedOperations() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
public final int INSTALL_REPLACE_EXISTING = 2;
|
public final int INSTALL_REPLACE_EXISTING = 2;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,13 +1,39 @@
|
|||||||
|
|
||||||
package org.fdroid.fdroid.views.fragments;
|
package org.fdroid.fdroid.views.fragments;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.view.Gravity;
|
||||||
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.View.OnClickListener;
|
||||||
|
import android.view.ViewGroup;
|
||||||
|
import android.widget.Button;
|
||||||
|
import android.widget.FrameLayout;
|
||||||
|
import android.widget.LinearLayout;
|
||||||
|
import android.widget.ListView;
|
||||||
|
import android.widget.ProgressBar;
|
||||||
|
import android.widget.TextView;
|
||||||
|
|
||||||
import org.fdroid.fdroid.R;
|
import org.fdroid.fdroid.R;
|
||||||
import org.fdroid.fdroid.data.AppProvider;
|
import org.fdroid.fdroid.data.AppProvider;
|
||||||
|
import org.fdroid.fdroid.installer.Installer;
|
||||||
import org.fdroid.fdroid.views.AppListAdapter;
|
import org.fdroid.fdroid.views.AppListAdapter;
|
||||||
import org.fdroid.fdroid.views.CanUpdateAppListAdapter;
|
import org.fdroid.fdroid.views.CanUpdateAppListAdapter;
|
||||||
|
|
||||||
public class CanUpdateAppsFragment extends AppListFragment {
|
public class CanUpdateAppsFragment extends AppListFragment {
|
||||||
|
|
||||||
|
// copied from ListFragment
|
||||||
|
static final int INTERNAL_EMPTY_ID = 0x00ff0001;
|
||||||
|
static final int INTERNAL_PROGRESS_CONTAINER_ID = 0x00ff0002;
|
||||||
|
static final int INTERNAL_LIST_CONTAINER_ID = 0x00ff0003;
|
||||||
|
// added for update button
|
||||||
|
static final int UPDATE_ALL_BUTTON_ID = 0x00ff0004;
|
||||||
|
|
||||||
|
private Button mUpdateAllButton;
|
||||||
|
private Installer mInstaller;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected AppListAdapter getAppListAdapter() {
|
protected AppListAdapter getAppListAdapter() {
|
||||||
return new CanUpdateAppListAdapter(getActivity(), null);
|
return new CanUpdateAppListAdapter(getActivity(), null);
|
||||||
@ -23,4 +49,114 @@ public class CanUpdateAppsFragment extends AppListFragment {
|
|||||||
return AppProvider.getCanUpdateUri();
|
return AppProvider.getCanUpdateUri();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
|
mInstaller = Installer.getActivityInstaller(getActivity(), getActivity()
|
||||||
|
.getPackageManager(), null);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onActivityCreated(Bundle savedInstanceState) {
|
||||||
|
super.onActivityCreated(savedInstanceState);
|
||||||
|
|
||||||
|
mUpdateAllButton.setOnClickListener(new OnClickListener() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
// TODO
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: not really called again after coming back from preference
|
||||||
|
@Override
|
||||||
|
public void onResume() {
|
||||||
|
super.onResume();
|
||||||
|
|
||||||
|
if (mInstaller.supportsUnattendedOperations()) {
|
||||||
|
mUpdateAllButton.setVisibility(View.VISIBLE);
|
||||||
|
} else {
|
||||||
|
mUpdateAllButton.setVisibility(View.GONE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copied from ListFragment and added EditText for search on top of list. We
|
||||||
|
* do not use a custom layout here, because this breaks the progress bar
|
||||||
|
* functionality of ListFragment.
|
||||||
|
*
|
||||||
|
* @param inflater
|
||||||
|
* @param container
|
||||||
|
* @param savedInstanceState
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||||
|
final Context context = getActivity();
|
||||||
|
|
||||||
|
FrameLayout root = new FrameLayout(context);
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------
|
||||||
|
|
||||||
|
LinearLayout pframe = new LinearLayout(context);
|
||||||
|
pframe.setId(INTERNAL_PROGRESS_CONTAINER_ID);
|
||||||
|
pframe.setOrientation(LinearLayout.VERTICAL);
|
||||||
|
pframe.setVisibility(View.GONE);
|
||||||
|
pframe.setGravity(Gravity.CENTER);
|
||||||
|
|
||||||
|
ProgressBar progress = new ProgressBar(context, null,
|
||||||
|
android.R.attr.progressBarStyleLarge);
|
||||||
|
pframe.addView(progress, new FrameLayout.LayoutParams(
|
||||||
|
ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
|
||||||
|
|
||||||
|
root.addView(pframe, new FrameLayout.LayoutParams(
|
||||||
|
ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT));
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------
|
||||||
|
|
||||||
|
FrameLayout lframe = new FrameLayout(context);
|
||||||
|
lframe.setId(INTERNAL_LIST_CONTAINER_ID);
|
||||||
|
|
||||||
|
TextView tv = new TextView(getActivity());
|
||||||
|
tv.setId(INTERNAL_EMPTY_ID);
|
||||||
|
tv.setGravity(Gravity.CENTER);
|
||||||
|
lframe.addView(tv, new FrameLayout.LayoutParams(
|
||||||
|
ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT));
|
||||||
|
|
||||||
|
// Added update all button
|
||||||
|
LinearLayout linearLayout = new LinearLayout(context);
|
||||||
|
linearLayout.setOrientation(LinearLayout.VERTICAL);
|
||||||
|
|
||||||
|
mUpdateAllButton = new Button(context);
|
||||||
|
mUpdateAllButton.setId(UPDATE_ALL_BUTTON_ID);
|
||||||
|
mUpdateAllButton.setText(R.string.update_all);
|
||||||
|
mUpdateAllButton.setCompoundDrawablesWithIntrinsicBounds(
|
||||||
|
getResources().getDrawable(R.drawable.ic_menu_refresh), null, null, null);
|
||||||
|
|
||||||
|
linearLayout.addView(mUpdateAllButton, new FrameLayout.LayoutParams(
|
||||||
|
ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
|
||||||
|
|
||||||
|
ListView lv = new ListView(getActivity());
|
||||||
|
lv.setId(android.R.id.list);
|
||||||
|
lv.setDrawSelectorOnTop(false);
|
||||||
|
linearLayout.addView(lv, new FrameLayout.LayoutParams(
|
||||||
|
ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT));
|
||||||
|
|
||||||
|
lframe.addView(linearLayout, new FrameLayout.LayoutParams(
|
||||||
|
ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT));
|
||||||
|
|
||||||
|
root.addView(lframe, new FrameLayout.LayoutParams(
|
||||||
|
ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT));
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------
|
||||||
|
|
||||||
|
root.setLayoutParams(new FrameLayout.LayoutParams(
|
||||||
|
ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT));
|
||||||
|
|
||||||
|
return root;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user