Migrate to gradle, appcompat as external dependency.
[mobilnebezpieczenstwo.git] / app / src / main / java / com / samsung / srpol / ui / AppInfoActivity.java
diff --git a/app/src/main/java/com/samsung/srpol/ui/AppInfoActivity.java b/app/src/main/java/com/samsung/srpol/ui/AppInfoActivity.java
new file mode 100644 (file)
index 0000000..c29ed30
--- /dev/null
@@ -0,0 +1,210 @@
+/*
+   Copyright (C) 2014  Samsung Electronics Polska Sp. z o.o.
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU AFFERO General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+    You may obtain a copy of the License at
+
+                http://www.gnu.org/licenses/agpl-3.0.txt
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+package com.samsung.srpol.ui;
+
+import java.util.List;
+
+import com.nhaarman.listviewanimations.appearance.AnimationAdapter;
+import com.nhaarman.listviewanimations.appearance.simple.AlphaInAnimationAdapter;
+import com.samsung.srpol.R;
+import com.samsung.srpol.data.Subcategory;
+import com.samsung.srpol.loader.AppDetails;
+import com.samsung.srpol.loader.AppListLoader;
+import com.samsung.srpol.loader.AppListLoader.OnAppRemoveListener;
+import com.samsung.srpol.utils.Utils;
+
+import android.support.v7.app.ActionBarActivity;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Build;
+import android.os.Bundle;
+import android.view.Menu;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.view.ViewGroup;
+import android.widget.ArrayAdapter;
+import android.widget.ImageButton;
+import android.widget.ImageView;
+import android.widget.ListView;
+import android.widget.TextView;
+
+public class AppInfoActivity extends ActionBarActivity implements OnAppRemoveListener {
+    public static final String APP_PACKAGE_NAME = "APP_PACKAGE_NAME";
+    
+    private AppDetails mAppDetails;
+    private String mPackageName = null;
+    private ThreatsArrayAdapter mAdapter;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_app_info);
+        Intent intent = getIntent();
+        if (intent != null) {
+            mPackageName = intent
+                    .getStringExtra(AppInfoActivity.APP_PACKAGE_NAME);
+        }
+        mAppDetails = AppListLoader.getAppDetails(mPackageName);
+        if(mAppDetails == null){
+            return;
+        }
+        ImageView imageView = (ImageView) findViewById(R.id.app_icon);
+        imageView.setImageDrawable(mAppDetails.getAppIcon());
+        TextView textView = (TextView) findViewById(R.id.app_name);
+        textView.setText(mAppDetails.getAppName());
+
+        grayoutText(textView);
+
+        ListView listView = (ListView) findViewById(R.id.threats_list);
+        mAdapter = new ThreatsArrayAdapter(getApplicationContext(),
+                AppListLoader.getSubcategoriesOfMask(mAppDetails
+                        .getSubcategoriesMask()));
+        AnimationAdapter adapter = new AlphaInAnimationAdapter(mAdapter);
+        adapter.setAbsListView(listView);
+        listView.setAdapter(adapter);
+
+        ImageButton uninstallButton = (ImageButton) findViewById(R.id.uninstall_button);
+        ImageButton moreInfoButton = (ImageButton) findViewById(R.id.more_info_button);
+        TextView systemAppTextView = (TextView) findViewById(R.id.system_app_text);
+        View activityLayout = findViewById(R.id.container);
+        if (mAppDetails.isSystemApp()) {
+            moreInfoButton.setVisibility(View.VISIBLE);
+            systemAppTextView.setVisibility(View.VISIBLE);
+            uninstallButton
+                    .setImageResource(R.drawable.app_info_settings_button);
+            uninstallButton.setContentDescription(getResources().getText(R.string.app_detail_settings_button));
+            activityLayout.setBackgroundResource(R.color.grayout_list_item_bg);
+        } else {
+            moreInfoButton.setVisibility(View.GONE);
+            systemAppTextView.setVisibility(View.GONE);
+            uninstallButton
+                    .setImageResource(R.drawable.app_info_uninstall_button);
+            uninstallButton.setContentDescription(getResources().getText(R.string.app_detail_uninstall_button));
+            activityLayout.setBackgroundResource(R.color.app_detail_bg);
+        }
+
+        uninstallButton.setOnClickListener(new OnClickListener() {
+
+            @Override
+            public void onClick(View v) {
+                Utils.showInstalledAppDetails(getApplicationContext(), mPackageName);
+            }
+        });
+        moreInfoButton.setOnClickListener(new OnClickListener() {
+
+            @Override
+            public void onClick(View v) {
+                Utils.startBrowser(getApplicationContext(), getResources().getString(R.string.app_info_more_info));
+            }
+        });
+        AppListLoader.setOnChangeListener(this);
+    }
+
+    @Override
+    protected void onResume() {
+        ImageView systemAppIcon = (ImageView) findViewById(R.id.list_system_app_icon);
+        if (mAppDetails.isSystemApp()) {
+            systemAppIcon.setVisibility(View.VISIBLE);
+            if (mAppDetails.isEnabled()) {
+                systemAppIcon.setImageDrawable(Utils.getmSystemIcon(this));
+            } else {
+                systemAppIcon.setImageDrawable(Utils
+                        .getmSystemIconDisable(this));
+            }
+        } else {
+            systemAppIcon.setVisibility(View.INVISIBLE);
+        }
+        super.onResume();
+    }
+
+    @Override
+    protected void onDestroy() {
+        AppListLoader.setOnChangeListener(null);
+        super.onDestroy();
+    }
+
+    class ThreatsArrayAdapter extends ArrayAdapter<Subcategory> {
+
+        public ThreatsArrayAdapter(Context context, List<Subcategory> resources) {
+            super(context, R.layout.threats_list_item, resources);
+        }
+
+        class ViewHolder {
+            public TextView textView;
+            public ImageView imageView;
+        }
+
+        @Override
+        public boolean isEnabled(int position) {
+            return false;
+        }
+        
+        @Override
+        public View getView(int position, View convertView, ViewGroup parent) {
+            ViewHolder holder;
+            if (convertView == null) {
+                convertView = getLayoutInflater().inflate(R.layout.threats_list_item,
+                        parent, false);
+                holder = new ViewHolder();
+                holder.imageView = (ImageView) convertView
+                        .findViewById(R.id.threat_icon);
+                holder.textView = (TextView) convertView
+                        .findViewById(R.id.threat_text);
+                convertView.setTag(holder);
+            } else {
+                holder = (ViewHolder) convertView.getTag();
+            }
+            Subcategory subgroupContainer = getItem(position);
+            if (subgroupContainer != null) {
+                holder.imageView
+                        .setImageDrawable(subgroupContainer.getDarkIcon());
+                holder.textView.setText(subgroupContainer.getDescription());
+            }
+            return convertView;
+        }
+    }
+
+    private void grayoutText(TextView textView){
+     // disabling and enabling apps in system application manager is
+        // available since API 4.0
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
+            if (mAppDetails.isEnabled()) {
+                textView.setTextColor(getResources().getColor(
+                        android.R.color.black));
+            } else {
+                textView.setTextColor(getResources().getColor(
+                        R.color.disabled_app_name));
+            }
+        }
+    }
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        return true;
+    }
+
+    @Override
+    public void onPackageRemoved(String packageName) {
+        if (mPackageName.equals(packageName)) {
+            finish();
+        }
+    }
+
+}