diff --git a/app/src/main/java/com/philliphsu/clock2/MainActivity.java b/app/src/main/java/com/philliphsu/clock2/MainActivity.java index ef3343d..b953e33 100644 --- a/app/src/main/java/com/philliphsu/clock2/MainActivity.java +++ b/app/src/main/java/com/philliphsu/clock2/MainActivity.java @@ -161,6 +161,29 @@ public class MainActivity extends BaseActivity { } } + @Override + protected void onNewIntent(Intent intent) { + super.onNewIntent(intent); + Log.d(TAG, "Got new intent " + intent); + // TODO: Make actual action const +// if ("RecyclerViewFragment.ACTION_SCROLL_TO_STABLE_ID".equals(intent.getAction())) { + // TODO: Get int extra for the page of the exact RVFrag this scrolling should be applied to. + // Requires making RVFrag.EXTRA_SCROLL_TARGET_PAGE. + final int targetPage = PAGE_ALARMS; + if (targetPage >= 0 && targetPage <= mSectionsPagerAdapter.getCount() - 1) { + mViewPager.setCurrentItem(targetPage, true/*smoothScroll*/); + // TODO: Make generic extra RVFrag.EXTRA_SCROLL_TO_STABLE_ID + final long scrollToStableId = intent.getLongExtra(AlarmsFragment.EXTRA_SCROLL_TO_ALARM_ID, -1); + if (scrollToStableId != -1) { + RecyclerViewFragment rvFrag = (RecyclerViewFragment) + mSectionsPagerAdapter.getFragment(targetPage); + Log.d(TAG, "Scrolling to stable id"); + rvFrag.performScrollToStableId(scrollToStableId); + } + } +// } + } + @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode != RESULT_OK) diff --git a/app/src/main/java/com/philliphsu/clock2/alarms/misc/AlarmController.java b/app/src/main/java/com/philliphsu/clock2/alarms/misc/AlarmController.java index e940570..4d75be1 100644 --- a/app/src/main/java/com/philliphsu/clock2/alarms/misc/AlarmController.java +++ b/app/src/main/java/com/philliphsu/clock2/alarms/misc/AlarmController.java @@ -79,6 +79,9 @@ public final class AlarmController { final PendingIntent alarmIntent = alarmIntent(alarm, false); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { Intent viewAlarm = new Intent(mAppContext, MainActivity.class); + // TODO: Use RVFrag.ACTION_...... + viewAlarm.setAction("viewAlarm"); + // TODO: Pass int extra for the alarms page to RVFrag.EXTRA_SCROLL_TARGET_PAGE. viewAlarm.putExtra(AlarmsFragment.EXTRA_SCROLL_TO_ALARM_ID, alarm.getId()); PendingIntent showIntent = PendingIntent.getActivity(mAppContext, alarm.getIntId(), viewAlarm, FLAG_CANCEL_CURRENT); diff --git a/app/src/main/java/com/philliphsu/clock2/alarms/ui/AlarmsFragment.java b/app/src/main/java/com/philliphsu/clock2/alarms/ui/AlarmsFragment.java index baa7418..6276817 100644 --- a/app/src/main/java/com/philliphsu/clock2/alarms/ui/AlarmsFragment.java +++ b/app/src/main/java/com/philliphsu/clock2/alarms/ui/AlarmsFragment.java @@ -4,6 +4,7 @@ import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.content.Loader; import android.support.v7.widget.RecyclerView; +import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -47,10 +48,10 @@ public class AlarmsFragment extends RecyclerViewFragment loader, AlarmCursor data) { super.onLoadFinished(loader, data); + Log.d(TAG, "onLoadFinished()"); // TODO: If this was a content change due to an update, verify that // we scroll to the updated alarm if its sort order changes. diff --git a/app/src/main/java/com/philliphsu/clock2/list/RecyclerViewFragment.java b/app/src/main/java/com/philliphsu/clock2/list/RecyclerViewFragment.java index 2afc410..e1d9afa 100644 --- a/app/src/main/java/com/philliphsu/clock2/list/RecyclerViewFragment.java +++ b/app/src/main/java/com/philliphsu/clock2/list/RecyclerViewFragment.java @@ -168,7 +168,7 @@ public abstract class RecyclerViewFragment< mList.smoothScrollToPosition(position); } - protected final void performScrollToStableId(long stableId) { + public final void performScrollToStableId(long stableId) { if (stableId != RecyclerView.NO_ID) { int position = -1; for (int i = 0; i < mAdapter.getItemCount(); i++) {