Android Open Source - EverToDo Remote Client Manager






From Project

Back to project page EverToDo.

License

The source code is released under:

GNU General Public License

If you think the Android project EverToDo 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

/**
 */*from   w  w  w .  j  av  a  2s .c o m*/
 * Todo.txt Touch/src/com/todotxt/todotxttouch/remote/RemoteClientManager.java
 *
 * Copyright (c) 2011 Tim Barlotta
 *
 * LICENSE:
 *
 * This file is part of Todo.txt Touch, an Android app for managing your todo.txt file (http://todotxt.com).
 *
 * Todo.txt Touch is free software: you can redistribute it and/or modify it under the terms of the GNU General Public
 * License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any
 * later version.
 *
 * Todo.txt Touch 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.
 *
 * You should have received a copy of the GNU General Public License along with Todo.txt Touch.  If not, see
 * <http://www.gnu.org/licenses/>.
 *
 * @author Tim Barlotta <tim[at]barlotta[dot]net>
 * @license http://www.gnu.org/licenses/gpl.html
 * @copyright 2011 Tim Barlotta
 */

package com.todotxt.todotxttouch.remote;

import android.util.Log;
import android.content.SharedPreferences;

import com.todotxt.todotxttouch.TodoApplication;

/**
 * Manager for obtaining, switching, etc. remote clients
 * 
 * @author Tim Barlotta
 * @author Michael J. Waddell <michael[at]waddellnet[dot]com>
 */
public class RemoteClientManager implements
    SharedPreferences.OnSharedPreferenceChangeListener 
{
  private final static String TAG = RemoteClientManager.class.getSimpleName();

  private Client currentClientToken;
  private RemoteClient currentClient;
  private TodoApplication todoApplication;
  private SharedPreferences sharedPreferences;

  public static final RemoteClient DUMMY_CLIENT = new RemoteClient() {
    @Override public Client getClient() { return null; }
    @Override public boolean authenticate() { return false; }
    @Override public void deauthenticate() { /* NOOP */ }
    @Override public boolean isAuthenticated() { return false; }
    @Override public boolean isLoggedIn() { return false; }
    @Override public RemoteLoginTask getLoginTask() { return null; }
    @Override public File pullTodo() { return null; }
    @Override public void pushTodo(File f){ /* NOOP */ }
    @Override public boolean isAvailable() { return false; }
  };

  public RemoteClientManager(TodoApplication todoApplication,
      SharedPreferences sharedPreferences) {
    this.todoApplication = todoApplication;
    sharedPreferences.registerOnSharedPreferenceChangeListener(this);
    this.sharedPreferences = sharedPreferences;
    calculateRemoteClient(sharedPreferences);
    currentClient.authenticate();
  }

  public RemoteClient getRemoteClient() {
    return currentClient;
  }

  /**
   * Returns the client associated with the passed in token does not switch
   * the client
   * 
   * @param clientToken
   * @return
   */
  private RemoteClient getRemoteClient(Client clientToken) 
  {
    if (clientToken == Client.DROPBOX) {
      Log.v(TAG, "Creating new DROPBOX client");
      return new DropboxRemoteClient(todoApplication, sharedPreferences);
    }

    if (clientToken == Client.EVERNOTE) {
      Log.v(TAG, "Creating new EVERNOTE client");
      throw new UnsupportedOperationException();
      // return new EvernoteRemoteClient(todoApplication, sharedPreferences);
    }

    if (clientToken == Client.LOCAL) {
      Log.v(TAG, "Creating new LOCAL client");
      throw new UnsupportedOperationException();
      // return new LocalClient(todoApplication, sharedPreferences);
    }
    
    return DUMMY_CLIENT;
  }

  @Override
  public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
      String key) 
  {
    if (Constants.PREF_CLIENT_TOKEN.equals(key)) {
      Log.i(TAG, "New Client Token. Syncing!");

      this.sharedPreferences = sharedPreferences;
      calculateRemoteClient(sharedPreferences);
    } // else ignore
  }

  private void calculateRemoteClient(SharedPreferences sharedPreferences) {
    currentClientToken = Client.fromString(sharedPreferences.getString(Constants.PREF_CLIENT_TOKEN, null));
    currentClient = getRemoteClient(currentClientToken);
  }
}




Java Source Code List

com.todotxt.todotxttouch.AddTask.java
com.todotxt.todotxttouch.Constants.java
com.todotxt.todotxttouch.Filter.java
com.todotxt.todotxttouch.HelpActivity.java
com.todotxt.todotxttouch.LoginScreen.java
com.todotxt.todotxttouch.Preferences.java
com.todotxt.todotxttouch.TodoApplication.java
com.todotxt.todotxttouch.TodoException.java
com.todotxt.todotxttouch.TodoTxtTouch.java
com.todotxt.todotxttouch.remote.Client.java
com.todotxt.todotxttouch.remote.DropboxFileRemoteException.java
com.todotxt.todotxttouch.remote.DropboxLoginAsyncTask.java
com.todotxt.todotxttouch.remote.DropboxRemoteClient.java
com.todotxt.todotxttouch.remote.LocalClient.java
com.todotxt.todotxttouch.remote.RemoteClientManager.java
com.todotxt.todotxttouch.remote.RemoteClient.java
com.todotxt.todotxttouch.remote.RemoteException.java
com.todotxt.todotxttouch.remote.RemoteLoginTask.java
com.todotxt.todotxttouch.task.AndFilter.java
com.todotxt.todotxttouch.task.ByContextFilter.java
com.todotxt.todotxttouch.task.ByPriorityFilter.java
com.todotxt.todotxttouch.task.ByProjectFilter.java
com.todotxt.todotxttouch.task.ByTextFilter.java
com.todotxt.todotxttouch.task.ContextParser.java
com.todotxt.todotxttouch.task.FilterFactory.java
com.todotxt.todotxttouch.task.Filter.java
com.todotxt.todotxttouch.task.LocalFileTaskRepository.java
com.todotxt.todotxttouch.task.LocalTaskRepository.java
com.todotxt.todotxttouch.task.OrFilter.java
com.todotxt.todotxttouch.task.PriorityTextSplitter.java
com.todotxt.todotxttouch.task.Priority.java
com.todotxt.todotxttouch.task.ProjectParser.java
com.todotxt.todotxttouch.task.Sort.java
com.todotxt.todotxttouch.task.TaskBagFactory.java
com.todotxt.todotxttouch.task.TaskBagImpl.java
com.todotxt.todotxttouch.task.TaskBag.java
com.todotxt.todotxttouch.task.TaskPersistException.java
com.todotxt.todotxttouch.task.Task.java
com.todotxt.todotxttouch.task.TextSplitter.java
com.todotxt.todotxttouch.util.CursorPositionCalculator.java
com.todotxt.todotxttouch.util.RelativeDate.java
com.todotxt.todotxttouch.util.Strings.java
com.todotxt.todotxttouch.util.TaskIo.java
com.todotxt.todotxttouch.util.Util.java