org.kontalk.ui.AboutActivity.java Source code

Java tutorial

Introduction

Here is the source code for org.kontalk.ui.AboutActivity.java

Source

/*
 * Kontalk Android client
 * Copyright (C) 2017 Kontalk Devteam <devteam@kontalk.org>
    
 * This program 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.
    
 * 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.
    
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

package org.kontalk.ui;

import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;

import org.kontalk.R;
import org.kontalk.billing.BillingServiceManager;
import org.kontalk.billing.IBillingService;

/**
 * About activity.
 * TODO this activity should be refactored:
 * - on phones: tabbed activity with fragments (about, donations, credit)
 * - on tablets: fragments opened directly from settings activity
 * @author Daniele Ricci
 * @author Andrea Cappelli
 */
public class AboutActivity extends ToolbarActivity {

    public static final String ACTION_DONATION = "org.kontalk.DONATION";
    public static final String ACTION_CREDITS = "org.kontalk.CREDITS";

    private static final int ABOUT_ABOUT = 0;
    private static final int ABOUT_DONATION = 1;
    private static final int ABOUT_CREDITS = 2;

    private static final int NUM_ITEMS = 3;

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

        setupToolbar(true, true);

        AboutPagerAdapter adapter = new AboutPagerAdapter(getSupportFragmentManager());

        ViewPager pager = (ViewPager) findViewById(R.id.pager);
        pager.setAdapter(adapter);

        TabLayout tabs = (TabLayout) findViewById(R.id.sliding_tabs);
        tabs.setupWithViewPager(pager);

        Intent intent = getIntent();
        if (intent != null) {
            String action = intent.getAction();
            if (action != null) {

                if (ACTION_DONATION.equals(action))
                    pager.setCurrentItem(ABOUT_DONATION, true);

                else if (ACTION_CREDITS.equals(action))
                    pager.setCurrentItem(ABOUT_CREDITS, true);
            }
        }
    }

    @Override
    protected boolean isNormalUpNavigation() {
        return true;
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        IBillingService service = BillingServiceManager.getInstance(this);
        if (service == null || !service.handleActivityResult(requestCode, resultCode, data))
            super.onActivityResult(requestCode, resultCode, data);
    }

    private class AboutPagerAdapter extends FragmentPagerAdapter {
        AboutPagerAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public int getCount() {
            return NUM_ITEMS;
        }

        @Override
        public Fragment getItem(int position) {
            switch (position) {
            case ABOUT_ABOUT:
                return new AboutFragment();

            case ABOUT_DONATION:
                return new DonationFragment();

            case ABOUT_CREDITS:
                return new CreditsFragment();
            }

            // shouldn't happen, but just in case
            return new AboutFragment();
        }

        @Override
        public CharSequence getPageTitle(int position) {
            switch (position) {
            case ABOUT_ABOUT:
                return getText(R.string.title_about);

            case ABOUT_DONATION:
                return getText(R.string.title_donation);

            case ABOUT_CREDITS:
                return getText(R.string.title_credits);
            }

            // shouldn't happen, but just in case
            return super.getPageTitle(position);
        }

    }

}