Android Open Source - AndroidShoppingList Shopping List Preview






From Project

Back to project page AndroidShoppingList.

License

The source code is released under:

Apache License

If you think the Android project AndroidShoppingList listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/**
 * Copyright 2012 C. A. Fitzgerald/*  w  w  w . jav a 2  s.c  o m*/
 *
 *  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 com.github.riotopsys.shoppinglist.activity;

import java.util.UUID;

import roboguice.activity.RoboFragmentActivity;
import roboguice.inject.InjectView;

import android.accounts.AccountManager;
import android.accounts.AccountManagerCallback;
import android.accounts.AccountManagerFuture;
import android.app.AlertDialog;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import com.github.riotopsys.shoppinglist.AppKeys;
import com.github.riotopsys.shoppinglist.Configurations;
import com.github.riotopsys.shoppinglist.IConfigurations;
import com.github.riotopsys.shoppinglist.R;
import com.github.riotopsys.shoppinglist.adapter.ShoppingListCollectionAdapter;
import com.github.riotopsys.shoppinglist.model.ShoppingList;
import com.github.riotopsys.shoppinglist.model.ShoppingListCollection;
import com.github.riotopsys.shoppinglist.server.ServerInterfaceService;
import com.github.riotopsys.shoppinglist.server.ServerTask;
import com.github.riotopsys.shoppinglist.utils.AccountUtils;
import com.google.android.gcm.GCMRegistrar;
import com.google.inject.Inject;

public class ShoppingListPreview extends RoboFragmentActivity {

  private static final String TAG = ShoppingListPreview.class.getSimpleName();

  ShoppingListCollection mShoppingListCollection;
  ShoppingListCollectionAdapter mShoppingListCollectionAdapter;

  @InjectView(R.id.pager)
  ViewPager mViewPager;

  private BroadcastReceiver mListUpdateReciever = new BroadcastReceiver() {

    @Override
    public void onReceive(Context context, Intent intent) {
      mShoppingListCollectionAdapter.notifyDataSetChanged(context);
    }

  };

  private IntentFilter mFilter = new IntentFilter(AppKeys.LIST_UPDATE_ACTION);

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_shopping_list_preview);

    AccountUtils accountUtils = new AccountUtils();
    String account = accountUtils.getAccountName(this);

    if (account == null) {
      AccountManager am = AccountManager.get(this);
      am.getAuthTokenByFeatures(AppKeys.ACCOUNT_TYPE, AppKeys.OAUTH2_SCOPE, null, this, null, null, new AccountManagerCallback<Bundle>() {
        @Override
        public void run(AccountManagerFuture<Bundle> future) {
          try {
            Bundle bundle = future.getResult();
            Log.i(TAG,
                "Got Bundle:\n" + " act name: " + bundle.getString(AccountManager.KEY_ACCOUNT_NAME) + "\n act type: "
                    + bundle.getString(AccountManager.KEY_ACCOUNT_TYPE) + "\n auth token: "
                    + bundle.getString(AccountManager.KEY_AUTHTOKEN));
            AccountUtils accountUtils = new AccountUtils();
            accountUtils.setAccountName(getBaseContext(), bundle.getString(AccountManager.KEY_ACCOUNT_NAME));
            accountUtils.setToken(getBaseContext(), bundle.getString(AccountManager.KEY_AUTHTOKEN));
          } catch (Exception e) {
            Log.i(TAG, "getAuthTokenByFeatures() cancelled or failed:", e);
            Toast.makeText(getBaseContext(), R.string.no_account, Toast.LENGTH_LONG).show();
            finish();
          }
        }
      }, null);
    }

    mShoppingListCollection = new ShoppingListCollection();

    mShoppingListCollectionAdapter = new ShoppingListCollectionAdapter(this, getSupportFragmentManager(), mShoppingListCollection);

//    mViewPager = (ViewPager) findViewById(R.id.pager);
    mViewPager.setAdapter(mShoppingListCollectionAdapter);
    
    Intent startingIntent = getIntent();
    if ( startingIntent != null ){
      Uri data = startingIntent.getData();
      if ( data != null ){
        UUID guid = UUID.fromString(data.getLastPathSegment());
        Intent i = new Intent(this, ServerInterfaceService.class);
        i.putExtra(AppKeys.SERVER_TASK_KEY, ServerTask.SUBSCRIBE);
        i.putExtra(AppKeys.GUID_KEY, guid);
        startService(i);
      }
    }
    
    IConfigurations config = new Configurations();
    
    GCMRegistrar.checkDevice(this);
    GCMRegistrar.checkManifest(this);
    final String regId = GCMRegistrar.getRegistrationId(this);
    if (regId.equals("")) {
      GCMRegistrar.register(this, config.getGCMSenderID());
    } else {
      Log.v(TAG, "Already registered");
    }

  }

  @Override
  protected void onResume() {
    registerReceiver(mListUpdateReciever, mFilter);
    super.onResume();
  }

  @Override
  protected void onPause() {
    unregisterReceiver(mListUpdateReciever);
    super.onPause();
  }

  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_shopping_list_preview, menu);
    return true;
  }

  @Override
  public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
      case R.id.menu_remove_list:
        removeList();
        break;
      case R.id.menu_new_list:
        addNewList();
        break;
      case R.id.menu_rename_list:
        renameList();
        break;
      case R.id.menu_refresh:
        refreshData();
        break;
      case R.id.menu_add_item:
        break;
      default:
        Log.e(TAG, "unsupported menu item");
        break;
    }

    return super.onOptionsItemSelected(item);
  }

  private void refreshData() {
    Intent i = new Intent(this, ServerInterfaceService.class);
    i.putExtra(AppKeys.SERVER_TASK_KEY, ServerTask.SYNC);
    startService(i);
  }

  private void removeList() {
    ShoppingList list;
    if (mShoppingListCollectionAdapter.getCount() == 0) {
      return;
    }
    list = mShoppingListCollectionAdapter.getList(mViewPager.getCurrentItem());
    mShoppingListCollection.removeItem(this, list);
    mShoppingListCollectionAdapter.notifyDataSetChanged(this);
  }

  private void addNewList() {
    LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View view = inflater.inflate(R.layout.add_list_dialog, null);

    new AlertDialog.Builder(this).setTitle(R.string.add_list_dialog_title).setView(view).setPositiveButton(R.string.done, new OnClickListener() {

      @Override
      public void onClick(DialogInterface dialog, int which) {
        EditText editText = (EditText) ((AlertDialog) dialog).findViewById(R.id.list_name);
        String text = editText.getText().toString();

        if (!text.equals("")) {
          ShoppingList shoppingList = mShoppingListCollection.createItem(ShoppingListPreview.this);
          shoppingList.setName(ShoppingListPreview.this, text);
          mShoppingListCollectionAdapter.notifyDataSetChanged(editText.getContext());
          mViewPager.setCurrentItem(mShoppingListCollectionAdapter.getPositionOf(shoppingList), true);
        } else {
          Toast.makeText(getBaseContext(), R.string.name_reqd, Toast.LENGTH_LONG).show();
        }
      }
    }).setNegativeButton(R.string.cancel, new OnClickListener() {

      @Override
      public void onClick(DialogInterface dialog, int which) {
        dialog.dismiss();
      }
    }).create().show();
  }

  private void renameList() {

    ShoppingList list;
    if (mShoppingListCollectionAdapter.getCount() == 0) {
      return;
    }
    list = mShoppingListCollectionAdapter.getList(mViewPager.getCurrentItem());

    LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View view = inflater.inflate(R.layout.add_list_dialog, null);
    ((TextView) view.findViewById(R.id.list_name)).setText(list.getName());

    new AlertDialog.Builder(this).setTitle(R.string.add_list_dialog_title).setView(view).setPositiveButton(R.string.done, new OnClickListener() {

      @Override
      public void onClick(DialogInterface dialog, int which) {
        EditText editText = (EditText) ((AlertDialog) dialog).findViewById(R.id.list_name);
        String text = editText.getText().toString();

        if (!text.equals("")) {
          ShoppingList shoppingList = mShoppingListCollectionAdapter.getList(mViewPager.getCurrentItem());
          shoppingList.setName(ShoppingListPreview.this, text);
          mShoppingListCollectionAdapter.notifyDataSetChanged(editText.getContext());
        } else {
          Toast.makeText(getBaseContext(), R.string.name_reqd, Toast.LENGTH_LONG).show();
        }
      }
    }).setNegativeButton(R.string.cancel, new OnClickListener() {

      @Override
      public void onClick(DialogInterface dialog, int which) {
        dialog.dismiss();
      }
    }).create().show();
  }

}




Java Source Code List

com.github.riotopsys.shoppinglist.AppKeys.java
com.github.riotopsys.shoppinglist.GCMIntentService.java
com.github.riotopsys.shoppinglist.IConfigurations.java
com.github.riotopsys.shoppinglist.activity.ListItemEdit.java
com.github.riotopsys.shoppinglist.activity.ShoppingListPreview.java
com.github.riotopsys.shoppinglist.adapter.ShoppingListAdapter.java
com.github.riotopsys.shoppinglist.adapter.ShoppingListCollectionAdapter.java
com.github.riotopsys.shoppinglist.comparator.ListItemNameComparator.java
com.github.riotopsys.shoppinglist.comparator.ListNameComparator.java
com.github.riotopsys.shoppinglist.fragment.ShoppingListFragment.java
com.github.riotopsys.shoppinglist.listener.CheckedChangeListener.java
com.github.riotopsys.shoppinglist.model.DatabaseHelper.java
com.github.riotopsys.shoppinglist.model.DigestRecord.java
com.github.riotopsys.shoppinglist.model.PersistedRecord.java
com.github.riotopsys.shoppinglist.model.ShoppingListCollection.java
com.github.riotopsys.shoppinglist.model.ShoppingListItem.java
com.github.riotopsys.shoppinglist.model.ShoppingList.java
com.github.riotopsys.shoppinglist.model.Work.java
com.github.riotopsys.shoppinglist.server.DigestCollection.java
com.github.riotopsys.shoppinglist.server.RestHelper.java
com.github.riotopsys.shoppinglist.server.RestResult.java
com.github.riotopsys.shoppinglist.server.ServerInterfaceService.java
com.github.riotopsys.shoppinglist.server.ServerTask.java
com.github.riotopsys.shoppinglist.server.UrlBuilder.java
com.github.riotopsys.shoppinglist.server.work.Operations.java
com.github.riotopsys.shoppinglist.server.work.WorkQueue.java
com.github.riotopsys.shoppinglist.utils.AccountUtils.java