Skip to content

Commit

Permalink
Show done button when only single news is available
Browse files Browse the repository at this point in the history
  • Loading branch information
przybylski committed Dec 21, 2015
1 parent 7e64583 commit d9cb8cc
Showing 1 changed file with 195 additions and 194 deletions.
389 changes: 195 additions & 194 deletions src/com/owncloud/android/ui/activity/WhatsNewActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -53,199 +53,200 @@
*/
public class WhatsNewActivity extends Activity {

private static final String KEY_LAST_SEEN_VERSION_CODE = "lastSeenVersionCode";

private ImageButton mForwardFinishButton;
private ProgressIndicator mProgress;
private LinearLayout mContentPanel;

private int mCurrentStep;

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

mCurrentStep = 0;
mProgress = (ProgressIndicator) findViewById(R.id.progressIndicator);

final int listLength = FeatureList.getFiltered(getLastSeenVersionCode(), isFirstRun()).length;

mProgress.setNumberOfSteps(listLength);

mForwardFinishButton = (ImageButton) findViewById(R.id.forward);
mForwardFinishButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (mProgress.hasNextStep()) {
mProgress.animateToNextStep();
mContentPanel.animate().x(-mContentPanel.getChildAt(++mCurrentStep).getLeft());
} else {
onFinish();
finish();
}
updateNextButtonIfNeeded();
}
});
Button skipButton = (Button) findViewById(R.id.skip);
skipButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
onFinish();
finish();
}
});

TextView tv = (TextView)findViewById(R.id.welcomeText);
tv.setText(isFirstRun() ? R.string.welcome_to_oc_title : R.string.whats_new_title);


mContentPanel = (LinearLayout)findViewById(R.id.contentPanel);
LinearLayout.LayoutParams ll2 = (LinearLayout.LayoutParams) mContentPanel.getLayoutParams();
ll2.width = getScreenWidth()*listLength;
mContentPanel.setLayoutParams(ll2);

fillContentPanelWithFeatureData();
}

private void fillContentPanelWithFeatureData() {
LayoutInflater inflater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);

for (FeatureItem item : FeatureList.getFiltered(getLastSeenVersionCode(), isFirstRun())) {
LinearLayout newElement = (LinearLayout)inflater.inflate(R.layout.whats_new_element, null);

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(getScreenWidth(), ViewGroup.LayoutParams.MATCH_PARENT);
newElement.setLayoutParams(params);

mContentPanel.addView(newElement);
ImageView iv = (ImageView)newElement.findViewById(R.id.whatsNewImage);
if (item.shouldShowImage())
iv.setImageResource(item.getImage());

TextView tv2 = (TextView)newElement.findViewById(R.id.whatsNewTitle);
if (item.shouldShowTitleText())
tv2.setText(item.getTitleText());

tv2 = (TextView)newElement.findViewById(R.id.whatsNewText);
if (item.shouldShowContentText())
tv2.setText(item.getContentText());
}
mContentPanel.setOnTouchListener(new OnSwipeTouchListener(getApplicationContext()) {

@Override
public void onSwipeLeft() {
handleMoveToNext();
}

@Override
public void onSwipeRight() {
handleMoveToPrev();
}
});
}

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


private void updateNextButtonIfNeeded() {
if (!mProgress.hasNextStep())
mForwardFinishButton.setImageResource(R.drawable.ic_ok);
else
mForwardFinishButton.setImageResource(R.drawable.ic_menu_forward);
}

private void handleMoveToNext() {
if (mProgress.hasNextStep()) {
mProgress.animateToNextStep();
mContentPanel.animate().x(-mContentPanel.getChildAt(++mCurrentStep).getLeft());
updateNextButtonIfNeeded();
}
}

private void handleMoveToPrev() {
if (mProgress.hasPrevStep()) {
mProgress.animateToPrevStep();
mContentPanel.animate().x(-mContentPanel.getChildAt(--mCurrentStep).getLeft());
updateNextButtonIfNeeded();
}
}

private void onFinish() {
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = pref.edit();
editor.putInt(KEY_LAST_SEEN_VERSION_CODE, BuildConfig.VERSION_CODE);
editor.apply();
}

private int getScreenWidth() {
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
return dm.widthPixels;
}

static private int getLastSeenVersionCode() {
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(MainApp.getAppContext());
return pref.getInt(KEY_LAST_SEEN_VERSION_CODE, 0);
}

static private boolean isFirstRun() {
if (getLastSeenVersionCode() != 0)
return false;
return AccountUtils.getCurrentOwnCloudAccount(MainApp.getAppContext()) == null;

}

static public void runIfNeeded(Context context) {
if (context instanceof WhatsNewActivity)
return;

if (FeatureList.getFiltered(getLastSeenVersionCode(), isFirstRun()).length > 0)
context.startActivity(new Intent(context, WhatsNewActivity.class));
}


public abstract class OnSwipeTouchListener implements View.OnTouchListener {

private final GestureDetector gestureDetector;

public OnSwipeTouchListener(Context context) {
gestureDetector = new GestureDetector(context, new GestureListener());
}

abstract public void onSwipeLeft();

abstract public void onSwipeRight();

public boolean onTouch(View v, MotionEvent event) {
return gestureDetector.onTouchEvent(event);
}

private final class GestureListener extends GestureDetector.SimpleOnGestureListener {

private static final int SWIPE_DISTANCE_THRESHOLD = 100;
private static final int SWIPE_VELOCITY_THRESHOLD = 100;

@Override
public boolean onDown(MotionEvent e) { return true; }

@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
final float distanceX = e2.getX() - e1.getX();
final float distanceY = e2.getY() - e1.getY();
if (Math.abs(distanceX) > Math.abs(distanceY) && Math.abs(distanceX) > SWIPE_DISTANCE_THRESHOLD && Math.abs(velocityX) > SWIPE_VELOCITY_THRESHOLD) {
if (distanceX > 0)
onSwipeRight();
else
onSwipeLeft();
return true;
}
return false;
}
}
}
private static final String KEY_LAST_SEEN_VERSION_CODE = "lastSeenVersionCode";

private ImageButton mForwardFinishButton;
private ProgressIndicator mProgress;
private LinearLayout mContentPanel;

private int mCurrentStep;

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

mCurrentStep = 0;
mProgress = (ProgressIndicator) findViewById(R.id.progressIndicator);

final int listLength = FeatureList.getFiltered(getLastSeenVersionCode(), isFirstRun()).length;

mProgress.setNumberOfSteps(listLength);

mForwardFinishButton = (ImageButton) findViewById(R.id.forward);
mForwardFinishButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (mProgress.hasNextStep()) {
mProgress.animateToNextStep();
mContentPanel.animate().x(-mContentPanel.getChildAt(++mCurrentStep).getLeft());
} else {
onFinish();
finish();
}
updateNextButtonIfNeeded();
}
});
Button skipButton = (Button) findViewById(R.id.skip);
skipButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
onFinish();
finish();
}
});

TextView tv = (TextView)findViewById(R.id.welcomeText);
tv.setText(isFirstRun() ? R.string.welcome_to_oc_title : R.string.whats_new_title);


mContentPanel = (LinearLayout)findViewById(R.id.contentPanel);
LinearLayout.LayoutParams ll2 = (LinearLayout.LayoutParams) mContentPanel.getLayoutParams();
ll2.width = getScreenWidth()*listLength;
mContentPanel.setLayoutParams(ll2);

fillContentPanelWithFeatureData();
updateNextButtonIfNeeded();
}

private void fillContentPanelWithFeatureData() {
LayoutInflater inflater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);

for (FeatureItem item : FeatureList.getFiltered(getLastSeenVersionCode(), isFirstRun())) {
LinearLayout newElement = (LinearLayout)inflater.inflate(R.layout.whats_new_element, null);

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(getScreenWidth(), ViewGroup.LayoutParams.MATCH_PARENT);
newElement.setLayoutParams(params);

mContentPanel.addView(newElement);
ImageView iv = (ImageView)newElement.findViewById(R.id.whatsNewImage);
if (item.shouldShowImage())
iv.setImageResource(item.getImage());

TextView tv2 = (TextView)newElement.findViewById(R.id.whatsNewTitle);
if (item.shouldShowTitleText())
tv2.setText(item.getTitleText());

tv2 = (TextView)newElement.findViewById(R.id.whatsNewText);
if (item.shouldShowContentText())
tv2.setText(item.getContentText());
}
mContentPanel.setOnTouchListener(new OnSwipeTouchListener(getApplicationContext()) {

@Override
public void onSwipeLeft() {
handleMoveToNext();
}

@Override
public void onSwipeRight() {
handleMoveToPrev();
}
});
}

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


private void updateNextButtonIfNeeded() {
if (!mProgress.hasNextStep())
mForwardFinishButton.setImageResource(R.drawable.ic_ok);
else
mForwardFinishButton.setImageResource(R.drawable.ic_menu_forward);
}

private void handleMoveToNext() {
if (mProgress.hasNextStep()) {
mProgress.animateToNextStep();
mContentPanel.animate().x(-mContentPanel.getChildAt(++mCurrentStep).getLeft());
updateNextButtonIfNeeded();
}
}

private void handleMoveToPrev() {
if (mProgress.hasPrevStep()) {
mProgress.animateToPrevStep();
mContentPanel.animate().x(-mContentPanel.getChildAt(--mCurrentStep).getLeft());
updateNextButtonIfNeeded();
}
}

private void onFinish() {
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = pref.edit();
editor.putInt(KEY_LAST_SEEN_VERSION_CODE, BuildConfig.VERSION_CODE);
editor.apply();
}

private int getScreenWidth() {
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
return dm.widthPixels;
}

static private int getLastSeenVersionCode() {
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(MainApp.getAppContext());
return pref.getInt(KEY_LAST_SEEN_VERSION_CODE, 0);
}

static private boolean isFirstRun() {
if (getLastSeenVersionCode() != 0)
return false;
return AccountUtils.getCurrentOwnCloudAccount(MainApp.getAppContext()) == null;

}

static public void runIfNeeded(Context context) {
if (context instanceof WhatsNewActivity)
return;

if (FeatureList.getFiltered(getLastSeenVersionCode(), isFirstRun()).length > 0)
context.startActivity(new Intent(context, WhatsNewActivity.class));
}


public abstract class OnSwipeTouchListener implements View.OnTouchListener {

private final GestureDetector gestureDetector;

public OnSwipeTouchListener(Context context) {
gestureDetector = new GestureDetector(context, new GestureListener());
}

abstract public void onSwipeLeft();

abstract public void onSwipeRight();

public boolean onTouch(View v, MotionEvent event) {
return gestureDetector.onTouchEvent(event);
}

private final class GestureListener extends GestureDetector.SimpleOnGestureListener {

private static final int SWIPE_DISTANCE_THRESHOLD = 100;
private static final int SWIPE_VELOCITY_THRESHOLD = 100;

@Override
public boolean onDown(MotionEvent e) { return true; }

@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
final float distanceX = e2.getX() - e1.getX();
final float distanceY = e2.getY() - e1.getY();
if (Math.abs(distanceX) > Math.abs(distanceY) && Math.abs(distanceX) > SWIPE_DISTANCE_THRESHOLD && Math.abs(velocityX) > SWIPE_VELOCITY_THRESHOLD) {
if (distanceX > 0)
onSwipeRight();
else
onSwipeLeft();
return true;
}
return false;
}
}
}

}

0 comments on commit d9cb8cc

Please sign in to comment.