diff options
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.java | 230 |
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; + + } + + } +} |