/* * Tint Browser for Android * * Copyright (C) 2012 - to infinity and beyond J. Devauchelle and contributors. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * version 3 as published by the Free Software Foundation. * * 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. */ package com.seal.ui.activities; import java.util.List; import android.app.ActionBar; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.text.TextUtils; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.Spinner; import android.widget.TextView; import android.widget.Toast; import com.seal.R; import com.seal.model.FolderItem; import com.seal.providers.BookmarksWrapper; import com.seal.utils.Constants; public class EditBookmarkActivity extends Activity { private long mId = -1; private EditText mLabel; private EditText mUrl; private Spinner mFoldersSpinner; private EditText mNewFolderName; private Button mOk; private Button mCancel; private List<FolderItem> mFolders; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.edit_bookmark_activity); setTitle(R.string.AddBookmarkTitle); ActionBar actionBar = getActionBar(); if (actionBar != null) { actionBar.setHomeButtonEnabled(true); actionBar.setDisplayHomeAsUpEnabled(true); } mFolders = BookmarksWrapper.getFirstLevelFoldersList(getContentResolver()); mFolders.add(0, new FolderItem(-1, getString(R.string.Bookmarks))); mFolders.add(0, new FolderItem(-2, getString(R.string.NewFolder))); mLabel = (EditText) findViewById(R.id.EditBookmarkActivity_LabelEdit); mUrl = (EditText) findViewById(R.id.EditBookmarkActivity_UrlEdit); mFoldersSpinner = (Spinner) findViewById(R.id.EditBookmarkActivity_FolderSpinner); FoldersAdapter adapter = new FoldersAdapter(this, mFolders); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); mFoldersSpinner.setAdapter(adapter); mFoldersSpinner.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> arg0, View arg1, int position, long id) { if (position == 0) { mNewFolderName.setVisibility(View.VISIBLE); mNewFolderName.requestFocus(); } else { mNewFolderName.setVisibility(View.GONE); } } @Override public void onNothingSelected(AdapterView<?> arg0) { } }); // Default to root folder. mFoldersSpinner.setSelection(1); mNewFolderName = (EditText) findViewById(R.id.EditBookmarkActivity_FolderValue); mOk = (Button) findViewById(R.id.EditBookmarkActivity_OK); mOk.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { if (save()) { setResult(RESULT_OK); finish(); } } }); mCancel = (Button) findViewById(R.id.EditBookmarkActivity_Cancel); mCancel.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { setResult(RESULT_CANCELED); finish(); } }); Bundle extras = getIntent().getExtras(); if (extras != null) { String label = extras.getString(Constants.EXTRA_LABEL); if (!TextUtils.isEmpty(label)) { mLabel.setText(label); } String url = extras.getString(Constants.EXTRA_URL); if (!TextUtils.isEmpty(url)) { mUrl.setText(url); } // This is a bit dirty... long folderId = extras.getLong(Constants.EXTRA_FOLDER_ID); if (folderId != -1) { for (int i = 0; i < mFolders.size(); i++) { if (mFolders.get(i).getId() == folderId) { mFoldersSpinner.setSelection(i); break; } } } mId = extras.getLong(Constants.EXTRA_ID); } } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: setResult(RESULT_CANCELED); finish(); return true; default: return super.onContextItemSelected(item); } } private boolean save() { String label = mLabel.getText().toString(); String url = mUrl.getText().toString(); if ((!TextUtils.isEmpty(label)) && (!TextUtils.isEmpty(url))) { long folderId = -1; int folderSpinnerSelection = mFoldersSpinner.getSelectedItemPosition(); switch (folderSpinnerSelection) { case 0: if (TextUtils.isEmpty(mNewFolderName.getText().toString())) { Toast.makeText(this, R.string.ProvideNewFolderName, Toast.LENGTH_SHORT).show(); return false; } else { folderId = BookmarksWrapper.getFolderId(getContentResolver(), mNewFolderName.getText().toString(), true); } break; case 1: folderId = -1; break; default: folderId = mFolders.get(folderSpinnerSelection).getId(); break; } BookmarksWrapper.setAsBookmark(getContentResolver(), mId, folderId, label, url, true); return true; } else { Toast.makeText(this, R.string.AddBookmarkLabelOrUrlEmpty, Toast.LENGTH_SHORT).show(); return false; } } private class FoldersAdapter extends ArrayAdapter<FolderItem> { public FoldersAdapter(Context context, List<FolderItem> values) { super(context, android.R.layout.simple_spinner_item, android.R.id.text1, values); } @Override public View getView(int position, View convertView, ViewGroup parent) { View v = super.getView(position, convertView, parent); TextView tv = (TextView) v.findViewById(android.R.id.text1); tv.setText(getItem(position).getTitle()); return v; } @Override public View getDropDownView(int position, View convertView, ViewGroup parent) { View v = super.getDropDownView(position, convertView, parent); TextView tv = (TextView) v.findViewById(android.R.id.text1); tv.setText(getItem(position).getTitle()); return v; } } }