/*
* Copyright (C) 2014 AChep@xda <artemchep@gmail.com>
*
* 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 2
* 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, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301, USA.
*/
package com.achep.acdisplay.ui.activities;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import com.achep.acdisplay.Presenter;
import com.achep.acdisplay.R;
import com.achep.acdisplay.Timeout;
import com.achep.acdisplay.ui.fragments.PocketFragment;
/**
* Created by Artem on 25.01.14.
*/
public class AcDisplayActivity extends KeyguardActivity implements
Timeout.OnTimeoutEventListener,
PocketFragment.OnSleepRequestListener {
private static final String TAG = "AcDisplayActivity";
private final Presenter mPresenter = Presenter.getInstance();
private PocketFragment mPocketFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
if (getConfig().isWallpaperShown()) setTheme(R.style.MaterialTheme_AcDisplay_Wallpaper);
super.onCreate(savedInstanceState);
mPresenter.onCreate(this);
setContentView(R.layout.acdisplay);
// Initialize non-UI fragments.
if (savedInstanceState == null) {
initInternalFragments();
} else {
// Find fragments.
FragmentManager fm = getSupportFragmentManager();
mPocketFragment = (PocketFragment) fm.findFragmentByTag(PocketFragment.TAG);
// TODO: Maybe remove PocketFragment if active mode is disabled?
}
// Setup fragments.
if (mPocketFragment != null) {
mPocketFragment.setListener(this);
}
// mPulsingThread = new PulsingThread(getContentResolver());
// mPulsingThread.start();
}
@Override
public void onStart() {
super.onStart();
mPresenter.onStart();
getConfig().getTriggers().incrementLaunchCount(this, null);
}
@Override
protected void onResume() {
super.onResume();
mPresenter.onResume();
hideHeadsUpApp(true);
}
@Override
protected void onPause() {
hideHeadsUpApp(false);
mPresenter.onPause();
super.onPause();
}
@Override
public void onStop() {
mPresenter.onStop();
super.onStop();
}
@Override
protected void onDestroy() {
mPresenter.onDestroy();
super.onDestroy();
}
/**
* Asks HeadsUp (https://play.google.com/store/apps/details?id=com.achep.headsup) to
* pause or continue showing its floating notifications.
*
* @param hideHeadsUp {@code true} to disallow showing floating notifications,
* {@code false} to allow.
*/
private void hideHeadsUpApp(boolean hideHeadsUp) {
Intent intent = new Intent(hideHeadsUp
? "com.achep.headsup.ACTION_DISALLOW_HEADSUP"
: "com.achep.headsup.ACTION_ALLOW_HEADSUP");
sendBroadcast(intent);
}
/**
* Initializes non-UI fragments such as {@link com.achep.acdisplay.ui.fragments.PocketFragment}.
*/
private void initInternalFragments() {
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
// Turns screen off inside of your pocket.
if (getConfig().isActiveModeEnabled()) {
mPocketFragment = PocketFragment.newInstance();
ft.add(mPocketFragment, PocketFragment.TAG);
}
ft.commit();
}
/**
* {@inheritDoc}
*/
@Override
public boolean onSleepRequest() {
// Probably it's not the best solution, but not worst too.
// Check if user does not interact with app before locking.
if (!getTimeout().isPaused()) {
return lock();
}
return false;
}
}