Android Open Source - hubblog Hubblog Activity






From Project

Back to project page hubblog.

License

The source code is released under:

MIT License

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

package com.donskifarrell.Hubblog.Activities;
/*ww w.j a  va2  s  .c  o  m*/
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.widget.*;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater;
import com.actionbarsherlock.view.MenuItem;
import com.donskifarrell.Hubblog.Activities.Adapters.SidebarAdapter;
import com.donskifarrell.Hubblog.Activities.Adapters.TabsAdapter;
import com.donskifarrell.Hubblog.Activities.Dialogs.*;
import com.donskifarrell.Hubblog.Interfaces.DataProvider;
import com.donskifarrell.Hubblog.Interfaces.ActivityDataListener;
import com.donskifarrell.Hubblog.Interfaces.DialogListener;
import com.donskifarrell.Hubblog.Providers.Data.Account;
import com.donskifarrell.Hubblog.Providers.Data.Article;
import com.donskifarrell.Hubblog.Providers.Data.Site;
import com.donskifarrell.Hubblog.Interfaces.OnSidebarListItemSelected;
import com.donskifarrell.Hubblog.Providers.HubblogDataProvider;
import com.donskifarrell.Hubblog.R;
import com.github.rtyley.android.sherlock.roboguice.activity.RoboSherlockFragmentActivity;
import com.viewpagerindicator.UnderlinePageIndicator;
import org.eclipse.egit.github.core.Authorization;
import org.eclipse.egit.github.core.Repository;
import org.eclipse.egit.github.core.client.GitHubClient;
import org.eclipse.egit.github.core.service.OAuthService;
import org.eclipse.egit.github.core.service.RepositoryService;
import shared.ui.actionscontentview.ActionsContentView;

import java.io.IOException;
import java.text.MessageFormat;
import java.util.Arrays;
import java.util.Collection;
import java.util.LinkedList;
import java.util.List;

/**
 * Created with IntelliJ IDEA.
 * User: donski
 * Date: 18/11/13
 * Time: 17:48
 */
public class HubblogActivity extends RoboSherlockFragmentActivity
                             implements OnSidebarListItemSelected,
                                        DialogListener,
                                        ActivityDataListener {

    private static final String STATE_POSITION = "state:layout_id";
    private static final int EDIT_ARTICLE_TAB_POSITION = 0;
    private static final int EDIT_MARKDOWN_TAB_POSITION = 1;
    private static final int COMMIT_ARTICLE_TAB_POSITION = 2;

    protected DataProvider hubblog;
    protected TabsAdapter tabsAdapter;
    protected UnderlinePageIndicator pageIndicator;
    protected ActionsContentView actionsContentView;
    protected Article currentArticle;
    protected String currentArticleTitle;
    protected String currentArticleSubTitle;

    private ListView sidebarList;
    private SidebarAdapter sidebarAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.base_layout);

        hubblog = new HubblogDataProvider(this);
        assertAccountDetailsAvailable();

        createActionBar();
        createTabPager();
        createSidebar();

        // todo: launch proper article or a help one?
        // TODO :NEED TO AS IT WILL BREAK LOTS OF THINGS!
        currentArticle = new Article();
        currentArticle.setTitle("CHANGE!");
        //showArticle(hubblog.getSites().get(0).getArticles().get(0));

        final int selectedPosition;
        if (savedInstanceState != null) {
            selectedPosition = savedInstanceState.getInt(STATE_POSITION, 0);
        } else {
            // todo: show help article?
            selectedPosition = 0;
        }
    }

    private void assertAccountDetailsAvailable() {
        // todo: assert fail?
        if (!hubblog.assertAccountDetails()) {
            editAccountDetails();
        }
    }

    private void editAccountDetails() {
        DialogFragment notificationDialog = new NotificationDialogFragment(R.string.dialog_account_needed_title, R.string.dialog_account_needed_message);
        notificationDialog.show(getSupportFragmentManager(), "NotificationDialogFragment");
        // load settings

        hubblog.getGitHubDetails();
    }

    /* Article Methods */
    public void showArticle(Article article) {
        currentArticle = article;
        currentArticleTitle = article.getTitle();
        tabsAdapter.setArticle(article);

        pageIndicator.setCurrentItem(EDIT_ARTICLE_TAB_POSITION);
        actionsContentView.showContent();

        // load edit article fragment and generate html content
        Toast.makeText(this ,article.getTitle() + " showing!", Toast.LENGTH_LONG).show();
    }

    /* Action Bar Methods */
    private void createActionBar() {
        getSupportActionBar().setHomeButtonEnabled(true);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

        currentArticleTitle = this.getResources().getString(R.string.app_name);
        setActionBarTitle(currentArticleTitle);

        currentArticleSubTitle = this.getResources().getString(R.string.edit_article_subtitle);
        setActionBarSubTitle(currentArticleSubTitle);

        setActionBarHomeIcon(false);
    }

    public void setActionBarHomeIcon(boolean show) {
        getSupportActionBar().setDisplayShowHomeEnabled(show);
    }

    public void setActionBarTitle(String title) {
        getSupportActionBar().setTitle(title);
    }

    public void setActionBarSubTitle(String subTitle) {
        getSupportActionBar().setSubtitle(subTitle);
    }

    /* Action Bar Sub Menu Methods*/
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        // todo: create 'Settings' menu item.

        MenuInflater inflater = getSupportMenuInflater();
        inflater.inflate(R.menu.menu, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case (android.R.id.home):
                if (actionsContentView.isActionsShown()) {
                    actionsContentView.showContent();
                } else {
                    actionsContentView.showActions();
                }
                break;

            case (R.id.menu_refresh_item):
                Toast.makeText(this , "Refresh!", Toast.LENGTH_LONG).show();
                break;

            case (R.id.menu_item_invert_display):
                Toast.makeText(this , "Invert!", Toast.LENGTH_LONG).show();
                break;

            case (R.id.menu_item_change_title):
                DialogFragment editArticleTitleDialog = new EditArticleTitleDialogFragment(currentArticle.getTitle());
                editArticleTitleDialog.show(getSupportFragmentManager(), "EditArticleTitleDialogFragment");
                break;

            case (R.id.menu_item_delete_article):
                DialogFragment deleteArticleDialog = new DeleteArticleDialogFragment();
                deleteArticleDialog.show(getSupportFragmentManager(), "DeleteArticleDialogFragment");
                break;

            case (R.id.menu_item_add_site):
                DialogFragment addSiteDialog = new AddSiteDialogFragment();
                addSiteDialog.show(getSupportFragmentManager(), "AddSiteDialogFragment");
                break;

            case (R.id.menu_item_default_tags):
                Toast.makeText(this , "Tags!", Toast.LENGTH_LONG).show();
                break;

            case (R.id.menu_item_about):
                DialogFragment aboutDialog = new AboutDialogFragment();
                aboutDialog.show(getSupportFragmentManager(), "AboutDialogFragment");
                break;
        }

        return super.onOptionsItemSelected(item);
    }

    /* Tab Navigation Methods */
    private void createTabPager() {
        tabsAdapter = new TabsAdapter(getSupportFragmentManager());

        ViewPager pager = (ViewPager) findViewById(R.id.view_pager);
        pager.setAdapter(tabsAdapter);
        pager.setOffscreenPageLimit(3);

        pageIndicator = (UnderlinePageIndicator) findViewById(R.id.page_indicator);
        pageIndicator.setOnPageChangeListener(getPageChangeListener());
        pageIndicator.setViewPager(pager);
    }

    private ViewPager.OnPageChangeListener getPageChangeListener(){
        return new ViewPager.OnPageChangeListener(){
            @Override
            public void onPageSelected(int position) {
                switch (position){

                    case EDIT_ARTICLE_TAB_POSITION:
                        currentArticleSubTitle = getResources().getString(R.string.edit_article_subtitle);
                        setActionBarSubTitle(currentArticleSubTitle);
                        tabsAdapter.EditArticle().triggerPageUpdate();
                        break;

                    case EDIT_MARKDOWN_TAB_POSITION:
                        currentArticleSubTitle = getResources().getString(R.string.edit_markdown_subtitle);
                        setActionBarSubTitle(currentArticleSubTitle);
                        tabsAdapter.EditMarkdown().triggerPageUpdate();
                        break;

                    case COMMIT_ARTICLE_TAB_POSITION:
                        currentArticleSubTitle = getResources().getString(R.string.commit_article_subtitle);
                        setActionBarSubTitle(currentArticleSubTitle);
                        tabsAdapter.CommitArticle().triggerPageUpdate();
                        break;

                    default:
                        setActionBarSubTitle("Unknown Page!");
                        break;
                }
            }

            @Override
            public void onPageScrolled(int i, float v, int i2) {
                // todo: put update code here? or below? might give better look and feel..
            }

            @Override
            public void onPageScrollStateChanged(int i) {
            }
        };
    }

    /* Side Bar Methods */
    private void createSidebar() {
        actionsContentView = (ActionsContentView) findViewById(R.id.base_layout);
        actionsContentView.setOnActionsContentListener(getSidebarListener());

        LinearLayout sidebar_layout = (LinearLayout) findViewById(R.id.sidebar_layout);
        Button addNew = (Button) sidebar_layout.findViewById(R.id.sidebar_add_new);
        addNew.setOnClickListener(getSidebarAddNewListener());

        sidebarList = (ListView) sidebar_layout.findViewById(R.id.sidebar_list);
        sidebarAdapter = new SidebarAdapter(this, hubblog);
        sidebarList.setAdapter(sidebarAdapter);
    }

    private ActionsContentView.OnActionsContentListener getSidebarListener() {
        return new ActionsContentView.OnActionsContentListener() {
            @Override
            public void onContentStateChanged(ActionsContentView v, boolean isContentShown) {
            }

            @Override
            public void onContentStateInAction(ActionsContentView v, boolean isContentShowing) {
                if (isContentShowing){
                    setActionBarTitle(currentArticleTitle);
                    setActionBarSubTitle(currentArticleSubTitle);
                    setActionBarHomeIcon(false);
                } else {
                    setActionBarTitle(getResources().getString(R.string.sidebar_open_title));
                    setActionBarSubTitle(getResources().getString(R.string.sidebar_open_subtitle));
                    setActionBarHomeIcon(true);
                }
            }
        };
    }

    private View.OnClickListener getSidebarAddNewListener() {
        return new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                switch (hubblog.getSites().size()) {
                    case 0:
                        DialogFragment addSiteDialog = new AddSiteDialogFragment();
                        addSiteDialog.show(getSupportFragmentManager(), "AddSiteDialogFragment");
                        break;
                    case 1:
                        addAndShowArticle(0);
                        break;
                    default:
                        DialogFragment selectSiteDialog = new SelectSiteDialogFragment(hubblog.getSiteNames());
                        selectSiteDialog.show(getSupportFragmentManager(), "SelectSiteDialogFragment");
                        break;
                }
            }
        };
    }

    public void addAndShowArticle(int selectedSite) {
        Article article = hubblog.addNewArticle(hubblog.getSites().get(selectedSite));
        showArticle(article);
    }

    @Override
    public void Refresh() {
        // todo: load last article?

        sidebarAdapter.notifyDataSetChanged();
    }

    @Override
    public Context getContext() {
        return this;
    }

    @Override
    public DataProvider getDataProvider() {
        return hubblog;
    }

    public void onSelectSitePositiveClick(int selectedSite) {
        Article article = hubblog.addNewArticle(hubblog.getSites().get(selectedSite));
        showArticle(article);
    }

    public void onAddNewSitePositiveClick(String siteName) {
        Site site = new Site(siteName);
        hubblog.getSites().add(site);

        addAndShowArticle(hubblog.getSites().indexOf(site));
    }

    @Override
    public void onSetDefaultTags() {
    }

    @Override
    public void onChangeArticleTitlePositiveClick(String newArticleTitle) {
        currentArticle.setTitle(newArticleTitle);
        setActionBarTitle(newArticleTitle);
    }

    @Override
    public void onDeleteArticlePositiveClick() {
        Toast.makeText(this , "Delete!", Toast.LENGTH_LONG).show();
    }
}




Java Source Code List

com.donskifarrell.Hubblog.BindingModule.java
com.donskifarrell.Hubblog.Activities.HubblogActivity.java
com.donskifarrell.Hubblog.Activities.LoginActivity.java
com.donskifarrell.Hubblog.Activities.StartupActivity.java
com.donskifarrell.Hubblog.Activities.Adapters.ArticleWebViewAdapter.java
com.donskifarrell.Hubblog.Activities.Adapters.ArticlesAdapter.java
com.donskifarrell.Hubblog.Activities.Adapters.MetadataAdapter.java
com.donskifarrell.Hubblog.Activities.Adapters.SidebarAdapter.java
com.donskifarrell.Hubblog.Activities.Adapters.TabsAdapter.java
com.donskifarrell.Hubblog.Activities.Dialogs.AboutDialogFragment.java
com.donskifarrell.Hubblog.Activities.Dialogs.AddSiteDialogFragment.java
com.donskifarrell.Hubblog.Activities.Dialogs.DeleteArticleDialogFragment.java
com.donskifarrell.Hubblog.Activities.Dialogs.EditArticleTitleDialogFragment.java
com.donskifarrell.Hubblog.Activities.Dialogs.LightAlertDialog.java
com.donskifarrell.Hubblog.Activities.Dialogs.LightProgressDialog.java
com.donskifarrell.Hubblog.Activities.Dialogs.NotificationDialogFragment.java
com.donskifarrell.Hubblog.Activities.Dialogs.SelectSiteDialogFragment.java
com.donskifarrell.Hubblog.Activities.Fragments.BasePageFragment.java
com.donskifarrell.Hubblog.Activities.Fragments.CommitArticleFragment.java
com.donskifarrell.Hubblog.Activities.Fragments.EditArticleFragment.java
com.donskifarrell.Hubblog.Activities.Fragments.EditMarkdownFragment.java
com.donskifarrell.Hubblog.Interfaces.ActivityDataListener.java
com.donskifarrell.Hubblog.Interfaces.ArticleWebViewJsInterface.java
com.donskifarrell.Hubblog.Interfaces.DataProvider.java
com.donskifarrell.Hubblog.Interfaces.DialogListener.java
com.donskifarrell.Hubblog.Interfaces.MetadataTagListener.java
com.donskifarrell.Hubblog.Interfaces.OnSidebarListItemSelected.java
com.donskifarrell.Hubblog.Providers.DatabaseHelper.java
com.donskifarrell.Hubblog.Providers.DatabaseProvider.java
com.donskifarrell.Hubblog.Providers.FileSystemProvider.java
com.donskifarrell.Hubblog.Providers.GitHubProvider.java
com.donskifarrell.Hubblog.Providers.HubblogDataProvider.java
com.donskifarrell.Hubblog.Providers.SharedPreferencesProvider.java
com.donskifarrell.Hubblog.Providers.Data.Account.java
com.donskifarrell.Hubblog.Providers.Data.Article.java
com.donskifarrell.Hubblog.Providers.Data.MetadataTag.java
com.donskifarrell.Hubblog.Providers.Data.Site.java
com.github.kevinsawicki.wishlist.ActivityUtils.java
com.github.kevinsawicki.wishlist.AsyncLoader.java
com.github.kevinsawicki.wishlist.CursorAdapter.java
com.github.kevinsawicki.wishlist.DatabaseHelper.java
com.github.kevinsawicki.wishlist.DecodeBitmapTask.java
com.github.kevinsawicki.wishlist.EditTextUtils.java
com.github.kevinsawicki.wishlist.Gestures.java
com.github.kevinsawicki.wishlist.ImageViewBitmapTask.java
com.github.kevinsawicki.wishlist.Keyboard.java
com.github.kevinsawicki.wishlist.LightDialog.java
com.github.kevinsawicki.wishlist.LocationUtils.java
com.github.kevinsawicki.wishlist.MultiTypeAdapter.java
com.github.kevinsawicki.wishlist.OnDoubleTapAdapter.java
com.github.kevinsawicki.wishlist.SectionFinder.java
com.github.kevinsawicki.wishlist.SectionMultiTypeAdapter.java
com.github.kevinsawicki.wishlist.SectionSingleTypeAdapter.java
com.github.kevinsawicki.wishlist.SingleTypeAdapter.java
com.github.kevinsawicki.wishlist.SingleTypeCursorAdapter.java
com.github.kevinsawicki.wishlist.Toaster.java
com.github.kevinsawicki.wishlist.TypeAdapter.java
com.github.kevinsawicki.wishlist.TypefaceUtils.java
com.github.kevinsawicki.wishlist.ViewFinder.java
com.github.kevinsawicki.wishlist.ViewUpdater.java
com.github.kevinsawicki.wishlist.ViewUtils.java
com.github.mobile.Accounts.AccountAuthenticatorService.java
com.github.mobile.Accounts.AccountAuthenticator.java
com.github.mobile.Accounts.AccountClient.java
com.github.mobile.Accounts.AccountConstants.java
com.github.mobile.Accounts.AccountScope.java
com.github.mobile.Accounts.AccountUtils.java
com.github.mobile.Accounts.AuthenticatedUserLoader.java
com.github.mobile.Accounts.AuthenticatedUserTask.java
com.github.mobile.Accounts.DefaultClient.java
com.github.mobile.Accounts.GitHubAccount.java
com.github.mobile.Accounts.ScopeBase.java
com.github.mobile.Accounts.TwoFactorAuthActivity.java
com.github.mobile.Accounts.TwoFactorAuthClient.java
com.github.mobile.Accounts.TwoFactorAuthException.java
com.github.mobile.Persistence.AccountDataManager.java
com.github.mobile.Persistence.CacheHelper.java
com.github.mobile.Persistence.DatabaseCache.java
com.github.mobile.Persistence.OrganizationLoader.java
com.github.mobile.Persistence.OrganizationRepositories.java
com.github.mobile.Persistence.Organizations.java
com.github.mobile.Persistence.PersistableResource.java
com.github.mobile.Requests.RequestCodes.java
com.github.mobile.Requests.RequestFuture.java
com.github.mobile.Requests.RequestReader.java
com.github.mobile.Requests.RequestWriter.java
com.github.mobile.Utils.IssueFilter.java
com.github.mobile.Utils.ToastUtils.java
com.github.mobile.Utils.UserComparator.java
com.viewpagerindicator.CirclePageIndicator.java
com.viewpagerindicator.IconPageIndicator.java
com.viewpagerindicator.IconPagerAdapter.java
com.viewpagerindicator.IcsLinearLayout.java
com.viewpagerindicator.LinePageIndicator.java
com.viewpagerindicator.PageIndicator.java
com.viewpagerindicator.TabPageIndicator.java
com.viewpagerindicator.TitlePageIndicator.java
com.viewpagerindicator.UnderlinePageIndicator.java