/*
* Copyright 2014 Klinker Apps Inc.
*
* 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 xyz.klinker.blur.addons.settings.page_picker;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Fragment;
import android.content.Context;
import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.view.*;
import android.widget.ImageButton;
import android.widget.ListAdapter;
import android.widget.TextView;
import xyz.klinker.blur.R;
import xyz.klinker.blur.addons.settings.SettingsActivity;
import xyz.klinker.blur.addons.utils.BlurPagesUtils;
import xyz.klinker.blur.addons.utils.Item;
import xyz.klinker.blur.addons.utils.Utils;
import xyz.klinker.blur.extra_pages.BaseLauncherPage;
public class ChooserFragment extends Fragment {
public static final String POSITION = "position";
protected Context context;
protected SharedPreferences sharedPrefs;
private ImageButton addNew;
private int position = 0;
private String appTitle;
private String packageName;
private String classPath;
private Drawable icon;
public ChooserFragment getFragment(int position) {
ChooserFragment fragment = new ChooserFragment();
Bundle args = new Bundle(1);
args.putInt(POSITION, position);
fragment.setArguments(args);
return fragment;
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
context = activity;
sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.position = getArguments().getInt(BaseLauncherPage.ARG_POSITION);
appTitle = sharedPrefs.getString("launcher_title_" + position, "None");
packageName = sharedPrefs.getString("launcher_package_name_" + position, "");
classPath = sharedPrefs.getString("launcher_class_path_" + position, "");
final PackageManager pm = context.getPackageManager();
if (packageName.equals("xyz.klinker.blur")) {
icon = null;
} else {
try {
icon = pm.getApplicationIcon(packageName);
} catch (PackageManager.NameNotFoundException e) {
icon = null;
}
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
View rootView = inflater.inflate(R.layout.page_picker, null);
final TextView current = (TextView) rootView.findViewById(R.id.current_text);
current.setText(getString(R.string.current) + ": " + getString(R.string.none));
final ImageButton none = (ImageButton) rootView.findViewById(R.id.dont_use_button);
none.setOnTouchListener(mHapticFeedbackTouchListener);
none.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
appTitle = "None";
packageName = "";
classPath = "";
icon = null;
setCurrent(current);
}
});
addNew = (ImageButton) rootView.findViewById(R.id.add_button);
addNew.setOnTouchListener(mHapticFeedbackTouchListener);
addNew.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final Item[] items = BlurPagesUtils.getAvailablePages(context);
ListAdapter adapter = BlurPagesUtils.getPackagesAdapter(context, items);
AlertDialog.Builder attachBuilder = new AlertDialog.Builder(context, AlertDialog.THEME_HOLO_DARK);
attachBuilder.setAdapter(adapter, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int i) {
appTitle = items[i].text;
classPath = items[i].classPath;
packageName = items[i].packageName;
if (packageName.equals("xyz.klinker.blur")) {
icon = null;
} else {
icon = items[i].actualIcon;
}
setCurrent(current);
dialog.dismiss();
}
});
attachBuilder.create().show();
}
});
setCurrent(current);
return rootView;
}
View.OnTouchListener mHapticFeedbackTouchListener = new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if ((event.getAction() & MotionEvent.ACTION_MASK) == MotionEvent.ACTION_DOWN) {
v.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY);
}
return false;
}
};
public void setCurrent(TextView tv) {
tv.setText(getResources().getString(R.string.current) + ": " + appTitle);
if (icon != null) {
addNew.setImageDrawable(icon);
} else {
addNew.setImageDrawable(getResources().getDrawable(android.R.drawable.ic_menu_add));
}
writeToSharedPrefs();
}
public void writeToSharedPrefs() {
SharedPreferences.Editor e = sharedPrefs.edit();
e.putString("launcher_title_" + position, appTitle);
e.putString("launcher_package_name_" + position, packageName);
e.putString("launcher_class_path_" + position, classPath);
e.commit();
SettingsActivity.prefChanged = true;
}
}