com.deliciousdroid.activity.BrowseBookmarks.java Source code

Java tutorial

Introduction

Here is the source code for com.deliciousdroid.activity.BrowseBookmarks.java

Source

/*
 * DeliciousDroid - http://code.google.com/p/DeliciousDroid/
 *
 * Copyright (C) 2010 Matt Schmidt
 *
 * DeliciousDroid 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 3 of the License,
 * or (at your option) any later version.
 *
 * DeliciousDroid 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 DeliciousDroid; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 * USA
 */

package com.deliciousdroid.activity;

import android.app.SearchManager;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.View;

import com.deliciousdroid.fragment.AddBookmarkFragment;
import com.deliciousdroid.fragment.BrowseBookmarkFeedFragment;
import com.deliciousdroid.fragment.BrowseBookmarksFragment;
import com.deliciousdroid.fragment.BrowseTagsFragment;
import com.deliciousdroid.fragment.ViewBookmarkFragment;
import com.deliciousdroid.fragment.AddBookmarkFragment.OnBookmarkSaveListener;
import com.deliciousdroid.fragment.BrowseBookmarksFragment.OnBookmarkSelectedListener;
import com.deliciousdroid.fragment.BrowseTagsFragment.OnTagSelectedListener;
import com.deliciousdroid.fragment.ViewBookmarkFragment.OnBookmarkActionListener;
import com.deliciousdroid.Constants;
import com.deliciousdroid.Constants.BookmarkViewType;
import com.deliciousdroid.R;
import com.deliciousdroid.action.IntentHelper;
import com.deliciousdroid.platform.BookmarkManager;
import com.deliciousdroid.providers.BookmarkContent.Bookmark;

public class BrowseBookmarks extends FragmentBaseActivity implements OnBookmarkSelectedListener,
        OnBookmarkActionListener, OnBookmarkSaveListener, OnTagSelectedListener {

    private String query = "";
    private String tagname = "";
    private Boolean unread = false;
    private String path = "";
    private Bookmark lastSelected = null;
    private BookmarkViewType lastViewType = null;

    static final String STATE_LASTBOOKMARK = "lastBookmark";
    static final String STATE_LASTVIEWTYPE = "lastViewType";
    static final String STATE_USERNAME = "username";
    static final String STATE_TAGNAME = "tagname";
    static final String STATE_UNREAD = "unread";
    static final String STATE_QUERY = "query";
    static final String STATE_PATH = "path";

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

        Intent intent = getIntent();

        Uri data = intent.getData();
        FragmentManager fm = getSupportFragmentManager();
        FragmentTransaction t = fm.beginTransaction();

        Fragment bookmarkFrag;

        if (fm.findFragmentById(R.id.listcontent) == null) {
            if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
                Bundle searchData = intent.getBundleExtra(SearchManager.APP_DATA);

                if (searchData != null) {
                    tagname = searchData.getString("tagname");
                    username = searchData.getString("username");
                    unread = searchData.getBoolean("unread");
                }

                query = intent.getStringExtra(SearchManager.QUERY);

                if (intent.hasExtra("username")) {
                    username = intent.getStringExtra("username");
                }

                if (data != null && data.getUserInfo() != null) {
                    username = data.getUserInfo();
                }
            } else {
                if (data != null) {
                    if (data.getUserInfo() != "") {
                        username = data.getUserInfo();
                    } else
                        username = mAccount.name;
                    tagname = data.getQueryParameter("tagname");
                    unread = data.getQueryParameter("unread") != null;
                    path = data.getPath();
                }
            }

            if (isMyself()) {
                bookmarkFrag = new BrowseBookmarksFragment();
            } else {
                bookmarkFrag = new BrowseBookmarkFeedFragment();
            }

            t.add(R.id.listcontent, bookmarkFrag);
        } else {
            if (savedInstanceState != null) {
                username = savedInstanceState.getString(STATE_USERNAME);
                tagname = savedInstanceState.getString(STATE_TAGNAME);
                unread = savedInstanceState.getBoolean(STATE_UNREAD);
                query = savedInstanceState.getString(STATE_QUERY);
                path = savedInstanceState.getString(STATE_PATH);
            }

            bookmarkFrag = fm.findFragmentById(R.id.listcontent);
        }

        if (isMyself()) {
            if (query != null && !query.equals("")) {
                ((BrowseBookmarksFragment) bookmarkFrag).setSearchQuery(query, username, tagname, unread);
            } else {
                ((BrowseBookmarksFragment) bookmarkFrag).setQuery(username, tagname, unread);
            }
        } else {
            if (query != null && !query.equals("")) {
                ((BrowseBookmarkFeedFragment) bookmarkFrag).setQuery(username, tagname);
            } else {
                ((BrowseBookmarkFeedFragment) bookmarkFrag).setQuery(username, query);
            }
        }

        BrowseTagsFragment tagFrag = (BrowseTagsFragment) fm.findFragmentById(R.id.tagcontent);
        if (tagFrag != null) {
            tagFrag.setAccount(username);
        }

        if (path != null && path.contains("tags")) {
            t.hide(fm.findFragmentById(R.id.maincontent));
            findViewById(R.id.panel_collapse_button).setVisibility(View.GONE);
        } else {
            if (tagFrag != null) {
                t.hide(tagFrag);
            }
        }

        Fragment addFrag = fm.findFragmentById(R.id.addcontent);
        if (addFrag != null) {
            t.hide(addFrag);
        }

        t.commit();
    }

    @Override
    public boolean onSearchRequested() {
        if (isMyself()) {
            Bundle contextData = new Bundle();
            contextData.putString("tagname", tagname);
            contextData.putString("username", username);
            contextData.putBoolean("unread", unread);
            startSearch(null, false, contextData, false);
        } else {
            startSearch(null, false, Bundle.EMPTY, false);
        }
        return true;
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        super.onCreateOptionsMenu(menu);
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.main_menu, menu);
        setupSearch(menu);
        return true;
    }

    @Override
    public void onSaveInstanceState(Bundle savedInstanceState) {
        if (lastSelected != null && lastViewType != null) {
            savedInstanceState.putSerializable(STATE_LASTBOOKMARK, lastSelected);
            savedInstanceState.putSerializable(STATE_LASTVIEWTYPE, lastViewType);
        }

        savedInstanceState.putString(STATE_USERNAME, username);
        savedInstanceState.putString(STATE_TAGNAME, tagname);
        savedInstanceState.putBoolean(STATE_UNREAD, unread);
        savedInstanceState.putString(STATE_QUERY, query);

        super.onSaveInstanceState(savedInstanceState);
    }

    public void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);

        if (findViewById(R.id.maincontent) != null) {
            lastSelected = (Bookmark) savedInstanceState.getSerializable(STATE_LASTBOOKMARK);
            lastViewType = (BookmarkViewType) savedInstanceState.getSerializable(STATE_LASTVIEWTYPE);
            setBookmarkView(lastSelected, lastViewType);
        }
    }

    @Override
    public void onBackPressed() {
        super.onBackPressed();

        Fragment tagFrag = getSupportFragmentManager().findFragmentById(R.id.tagcontent);
        View panelBtn = findViewById(R.id.panel_collapse_button);

        if (tagFrag != null && panelBtn != null) {
            if (tagFrag.isVisible())
                findViewById(R.id.panel_collapse_button).setVisibility(View.GONE);
            else
                findViewById(R.id.panel_collapse_button).setVisibility(View.VISIBLE);
        }
    }

    public void onBookmarkView(Bookmark b) {
        if (b != null) {
            if (findViewById(R.id.maincontent) != null || findViewById(R.id.tagcontent) != null) {
                lastSelected = b;
                lastViewType = BookmarkViewType.VIEW;
                setBookmarkView(b, BookmarkViewType.VIEW);
            } else {
                startActivity(IntentHelper.ViewBookmark(b, BookmarkViewType.VIEW, username, this));
            }
        }
    }

    public void onBookmarkRead(Bookmark b) {
        if (b != null) {
            if (findViewById(R.id.maincontent) != null) {
                lastSelected = b;
                lastViewType = BookmarkViewType.READ;
                setBookmarkView(b, BookmarkViewType.READ);
            } else {
                startActivity(IntentHelper.ViewBookmark(b, BookmarkViewType.READ, username, this));
            }
        }
    }

    public void onBookmarkOpen(Bookmark b) {
        if (b != null) {
            if (findViewById(R.id.maincontent) != null) {
                lastSelected = b;
                lastViewType = BookmarkViewType.WEB;
                setBookmarkView(b, BookmarkViewType.WEB);
            } else {
                startActivity(IntentHelper.OpenInBrowser(b.getUrl()));
            }
        }
    }

    public void onBookmarkAdd(Bookmark b) {
        if (b != null) {
            startActivity(IntentHelper.AddBookmark(b.getUrl(), mAccount.name, this));
        }
    }

    public void onBookmarkShare(Bookmark b) {
        if (b != null) {
            Intent sendIntent = IntentHelper.SendBookmark(b.getUrl(), b.getDescription());
            startActivity(Intent.createChooser(sendIntent, getString(R.string.share_chooser_title)));
        }
    }

    public void onBookmarkEdit(Bookmark b) {
        if (b != null) {
            if (findViewById(R.id.maincontent) != null) {
                AddBookmarkFragment addFrag = (AddBookmarkFragment) getSupportFragmentManager()
                        .findFragmentById(R.id.addcontent);
                addFrag.loadBookmark(b, null);
                addFrag.refreshView();
                FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
                if (getSupportFragmentManager().findFragmentById(R.id.tagcontent).isVisible()) {
                    transaction.hide(getSupportFragmentManager().findFragmentById(R.id.tagcontent));
                    transaction.show(getSupportFragmentManager().findFragmentById(R.id.maincontent));
                    transaction.addToBackStack(null);
                }
                transaction.show(getSupportFragmentManager().findFragmentById(R.id.addcontent));
                transaction.commit();
                transaction = getSupportFragmentManager().beginTransaction();
                transaction.hide(getSupportFragmentManager().findFragmentById(R.id.maincontent));
                transaction.commit();
            } else {
                startActivity(IntentHelper.EditBookmark(b, mAccount.name, this));
            }
        }
    }

    public void onBookmarkDelete(Bookmark b) {
        BookmarkManager.LazyDelete(b, mAccount.name, this);
    }

    public void onViewTagSelected(String tag) {
        if (findViewById(R.id.maincontent) != null) {
            BrowseBookmarksFragment frag = new BrowseBookmarksFragment();
            frag.setQuery(username, tag, false);
            FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
            transaction.replace(R.id.listcontent, frag);
            transaction.addToBackStack(null);
            transaction.commit();
        } else {
            startActivity(IntentHelper.ViewBookmarks(tag, username, this));
        }
    }

    public void onUserTagSelected(String tag, String user) {
        if (findViewById(R.id.maincontent) != null) {
            BrowseBookmarkFeedFragment frag = new BrowseBookmarkFeedFragment();
            frag.setQuery(user, tag);
            FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
            transaction.replace(R.id.listcontent, frag);
            transaction.addToBackStack(null);
            transaction.commit();
        } else {
            startActivity(IntentHelper.ViewBookmarks(tag, user, this));
        }
    }

    public void onAccountSelected(String account) {
        if (findViewById(R.id.maincontent) != null) {
            BrowseBookmarkFeedFragment frag = new BrowseBookmarkFeedFragment();
            frag.setQuery(account, null);
            FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
            transaction.replace(R.id.listcontent, frag);
            transaction.addToBackStack(null);
            transaction.commit();
        } else {
            startActivity(IntentHelper.ViewBookmarks(null, account, this));
        }
    }

    public void onBookmarkSave(Bookmark b) {
        if (getSupportFragmentManager().findFragmentById(R.id.maincontent).isHidden()) {
            FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
            transaction.hide(getSupportFragmentManager().findFragmentById(R.id.addcontent));
            transaction.show(getSupportFragmentManager().findFragmentById(R.id.maincontent));
            transaction.commit();
        }

        onBookmarkView(b);
    }

    public void onBookmarkCancel(Bookmark b) {
        if (getSupportFragmentManager().findFragmentById(R.id.maincontent).isHidden()) {
            FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
            transaction.hide(getSupportFragmentManager().findFragmentById(R.id.addcontent));
            transaction.show(getSupportFragmentManager().findFragmentById(R.id.maincontent));
            transaction.commit();
        }

        onBookmarkView(b);
    }

    public void onTagSelected(String tag) {
        FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
        BrowseBookmarksFragment frag = new BrowseBookmarksFragment();
        frag.setQuery(username, tag, false);
        transaction.replace(R.id.listcontent, frag);
        transaction.commit();
    }

    private void setBookmarkView(Bookmark b, BookmarkViewType viewType) {
        if (getSupportFragmentManager().findFragmentById(R.id.maincontent).isHidden()
                && getSupportFragmentManager().findFragmentById(R.id.addcontent).isHidden()) {
            FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
            if (getSupportFragmentManager().findFragmentById(R.id.tagcontent).isVisible()) {
                transaction.hide(getSupportFragmentManager().findFragmentById(R.id.tagcontent));
                findViewById(R.id.panel_collapse_button).setVisibility(View.VISIBLE);
            }
            transaction.show(getSupportFragmentManager().findFragmentById(R.id.maincontent));
            transaction.addToBackStack(null);
            transaction.commit();
        } else if (getSupportFragmentManager().findFragmentById(R.id.maincontent).isHidden()
                && getSupportFragmentManager().findFragmentById(R.id.addcontent).isVisible()) {
            FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
            transaction.hide(getSupportFragmentManager().findFragmentById(R.id.addcontent));
            transaction.show(getSupportFragmentManager().findFragmentById(R.id.maincontent));
            transaction.commit();
        }

        ViewBookmarkFragment viewFrag = (ViewBookmarkFragment) getSupportFragmentManager()
                .findFragmentById(R.id.maincontent);
        viewFrag.setBookmark(b, viewType);
        viewFrag.loadBookmark();
    }

    public void collapsePanel(View v) {

        if (findViewById(R.id.listcontent) != null) {
            View bookmarkList = findViewById(R.id.listcontent);

            if (bookmarkList.getVisibility() == View.VISIBLE)
                bookmarkList.setVisibility(View.GONE);
            else
                bookmarkList.setVisibility(View.VISIBLE);
        }
    }

    public void saveHandler(View v) {
        FragmentManager fm = getSupportFragmentManager();
        AddBookmarkFragment addFrag = (AddBookmarkFragment) fm.findFragmentById(R.id.addcontent);

        if (addFrag != null) {
            addFrag.saveHandler(v);
        }
    }

    public void cancelHandler(View v) {
        FragmentManager fm = getSupportFragmentManager();
        AddBookmarkFragment addFrag = (AddBookmarkFragment) fm.findFragmentById(R.id.addcontent);

        if (addFrag != null) {
            addFrag.cancelHandler(v);
        }
    }
}