aboutsummaryrefslogtreecommitdiff
path: root/WordPress/src/main/java/org/wordpress/android/ui/AddQuickPressShortcutActivity.java
diff options
context:
space:
mode:
Diffstat (limited to 'WordPress/src/main/java/org/wordpress/android/ui/AddQuickPressShortcutActivity.java')
-rw-r--r--WordPress/src/main/java/org/wordpress/android/ui/AddQuickPressShortcutActivity.java230
1 files changed, 230 insertions, 0 deletions
diff --git a/WordPress/src/main/java/org/wordpress/android/ui/AddQuickPressShortcutActivity.java b/WordPress/src/main/java/org/wordpress/android/ui/AddQuickPressShortcutActivity.java
new file mode 100644
index 000000000..bbfe83860
--- /dev/null
+++ b/WordPress/src/main/java/org/wordpress/android/ui/AddQuickPressShortcutActivity.java
@@ -0,0 +1,230 @@
+package org.wordpress.android.ui;
+
+import android.app.AlertDialog;
+import android.app.ListActivity;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.ViewGroup.LayoutParams;
+import android.widget.AdapterView;
+import android.widget.AdapterView.OnItemClickListener;
+import android.widget.BaseAdapter;
+import android.widget.EditText;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.ListView;
+import android.widget.RelativeLayout;
+import android.widget.ScrollView;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import com.android.volley.toolbox.NetworkImageView;
+
+import org.wordpress.android.R;
+import org.wordpress.android.WordPress;
+import org.wordpress.android.ui.accounts.SignInActivity;
+import org.wordpress.android.ui.posts.EditPostActivity;
+import org.wordpress.android.util.GravatarUtils;
+import org.wordpress.android.util.StringUtils;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Vector;
+
+public class AddQuickPressShortcutActivity extends ListActivity {
+ static final int ADD_ACCOUNT_REQUEST = 0;
+
+ public List<Map<String, Object>> accounts;
+ public String[] blogNames;
+ public int[] accountIDs;
+ public String[] accountUsers;
+ public String[] blavatars;
+ public List<String> accountNames = new Vector<String>();
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ setContentView(R.layout.add_quickpress_shortcut);
+ setTitle(getResources().getText(R.string.quickpress_window_title));
+
+ displayAccounts();
+ }
+
+ private void displayAccounts() {
+ accounts = WordPress.wpDB.getVisibleBlogs();
+
+ ListView listView = (ListView) findViewById(android.R.id.list);
+
+ ImageView iv = new ImageView(this);
+ iv.setBackgroundDrawable(getResources().getDrawable(R.drawable.list_divider));
+ listView.addFooterView(iv);
+ listView.setVerticalFadingEdgeEnabled(false);
+ listView.setVerticalScrollBarEnabled(true);
+
+ if (accounts.size() > 0) {
+ ScrollView sv = new ScrollView(this);
+ sv.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
+ LinearLayout layout = new LinearLayout(this);
+ layout.setPadding(10, 10, 10, 0);
+ layout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
+
+ layout.setOrientation(LinearLayout.VERTICAL);
+
+ blogNames = new String[accounts.size()];
+ accountIDs = new int[accounts.size()];
+ accountUsers = new String[accounts.size()];
+ blavatars = new String[accounts.size()];
+ int validBlogCtr = 0;
+ for (int i = 0; i < accounts.size(); i++) {
+ Map<String, Object> curHash = accounts.get(i);
+ blogNames[validBlogCtr] = curHash.get("blogName").toString();
+ accountUsers[validBlogCtr] = curHash.get("username").toString();
+ accountIDs[validBlogCtr] = (Integer)curHash.get("id");
+ String url = curHash.get("url").toString();
+ if (url != null) {
+ blavatars[validBlogCtr] = GravatarUtils.blavatarFromUrl(url, 60);
+ } else {
+ blavatars[validBlogCtr] = "";
+ }
+ accountNames.add(validBlogCtr, blogNames[i]);
+ validBlogCtr++;
+ }
+
+ if (validBlogCtr < accounts.size()){
+ accounts = WordPress.wpDB.getVisibleBlogs();
+ }
+
+ setListAdapter(new HomeListAdapter());
+
+ listView.setOnItemClickListener(new OnItemClickListener() {
+ public void onItemClick(AdapterView<?> arg0, View row, int position, long id) {
+ AddQuickPressShortcutActivity.this.buildDialog(position);
+ }
+ });
+
+ if(accounts.size() == 1) {
+ AddQuickPressShortcutActivity.this.buildDialog(0);
+ }
+
+ } else {
+ // no account, load new account view
+ Intent i = new Intent(AddQuickPressShortcutActivity.this, SignInActivity.class);
+ startActivityForResult(i, ADD_ACCOUNT_REQUEST);
+ }
+ }
+
+ private void buildDialog(int positionParam) {
+ final int position = positionParam;
+
+ AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(AddQuickPressShortcutActivity.this);
+ dialogBuilder.setTitle(R.string.quickpress_add_alert_title);
+
+ final EditText quickPressShortcutName = new EditText(AddQuickPressShortcutActivity.this);
+ quickPressShortcutName.setText("QP " + StringUtils.unescapeHTML(accountNames.get(position)));
+ dialogBuilder.setView(quickPressShortcutName);
+
+ dialogBuilder.setPositiveButton(R.string.add, new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int which) {
+ if (TextUtils.isEmpty(quickPressShortcutName.getText())) {
+ Toast t = Toast.makeText(AddQuickPressShortcutActivity.this, R.string.quickpress_add_error, Toast.LENGTH_LONG);
+ t.show();
+ } else {
+ Intent shortcutIntent = new Intent(getApplicationContext(), EditPostActivity.class);
+ shortcutIntent.setAction(Intent.ACTION_MAIN);
+ shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
+ shortcutIntent.putExtra(EditPostActivity.EXTRA_QUICKPRESS_BLOG_ID, accountIDs[position]);
+ shortcutIntent.putExtra(EditPostActivity.EXTRA_IS_QUICKPRESS, true);
+
+ Intent addIntent = new Intent();
+ addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
+ addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, quickPressShortcutName.getText().toString());
+ addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext
+ (AddQuickPressShortcutActivity.this, R.mipmap.app_icon));
+
+ WordPress.wpDB.addQuickPressShortcut(accountIDs[position], quickPressShortcutName.getText().toString());
+
+ if (WordPress.currentBlog == null) {
+ WordPress.currentBlog = WordPress.wpDB.instantiateBlogByLocalId(accountIDs[position]);
+ WordPress.wpDB.updateLastBlogId(accountIDs[position]);
+ }
+
+ addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
+ AddQuickPressShortcutActivity.this.sendBroadcast(addIntent);
+ AddQuickPressShortcutActivity.this.finish();
+ }
+ }
+ });
+ dialogBuilder.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
+ // just let the dialog close
+ public void onClick(DialogInterface dialog, int which) {}
+ });
+
+ dialogBuilder.setCancelable(false);
+ dialogBuilder.create().show();
+ }
+
+ @Override
+ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+ super.onActivityResult(requestCode, resultCode, data);
+ switch (requestCode) {
+ case ADD_ACCOUNT_REQUEST:
+ if (resultCode == RESULT_OK) {
+ accounts = WordPress.wpDB.getVisibleBlogs();
+ if (accounts.size() > 0) {
+ displayAccounts();
+ break;
+ }
+ }
+ finish();
+ break;
+ }
+ }
+
+ protected class HomeListAdapter extends BaseAdapter {
+ public HomeListAdapter() {
+ }
+
+ public int getCount() {
+ return accounts.size();
+ }
+
+ public Object getItem(int position) {
+ return position;
+ }
+
+ public long getItemId(int position) {
+ return position;
+ }
+
+ public View getView(int position, View convertView, ViewGroup parent) {
+ RelativeLayout view = (RelativeLayout) convertView;
+ if (view == null) {
+ LayoutInflater inflater = getLayoutInflater();
+ view = (RelativeLayout)inflater.inflate(R.layout.home_row, parent, false);
+ }
+ String username = accountUsers[position];
+ view.setId(Integer.valueOf(accountIDs[position]));
+
+ TextView blogName = (TextView)view.findViewById(R.id.blogName);
+ TextView blogUsername = (TextView)view.findViewById(R.id.blogUser);
+ NetworkImageView blavatar = (NetworkImageView)view.findViewById(R.id.blavatar);
+
+ blogName.setText(
+ StringUtils.unescapeHTML(blogNames[position]));
+ blogUsername.setText(
+ StringUtils.unescapeHTML(username));
+ blavatar.setErrorImageResId(R.drawable.blavatar_placeholder);
+ blavatar.setImageUrl(blavatars[position], WordPress.imageLoader);
+
+ return view;
+
+ }
+
+ }
+}