mirror of
https://github.com/MatomoCamp/matomocamp-companion-android.git
synced 2024-09-19 16:13:46 +02:00
Added database update reminder dialog.
This commit is contained in:
parent
795bee380e
commit
f2e24e526f
4 changed files with 62 additions and 11 deletions
|
@ -4,6 +4,8 @@
|
||||||
<string name="main_menu">Main menu</string>
|
<string name="main_menu">Main menu</string>
|
||||||
<string name="close_menu">Close menu</string>
|
<string name="close_menu">Close menu</string>
|
||||||
<string name="last_update">DB last updated: %1$s</string>
|
<string name="last_update">DB last updated: %1$s</string>
|
||||||
|
<string name="download_reminder_title">Update</string>
|
||||||
|
<string name="download_reminder_message">This will update the schedule database to the latest version. Make sure you are connected to the internet.</string>
|
||||||
<string name="never">Never</string>
|
<string name="never">Never</string>
|
||||||
<string name="menu_tracks">Tracks</string>
|
<string name="menu_tracks">Tracks</string>
|
||||||
<string name="menu_bookmarks">Starred</string>
|
<string name="menu_bookmarks">Starred</string>
|
||||||
|
|
|
@ -4,15 +4,20 @@ import java.text.DateFormat;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
|
||||||
|
import android.app.AlertDialog;
|
||||||
|
import android.app.Dialog;
|
||||||
import android.content.BroadcastReceiver;
|
import android.content.BroadcastReceiver;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.DialogInterface;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.IntentFilter;
|
import android.content.IntentFilter;
|
||||||
|
import android.content.SharedPreferences;
|
||||||
import android.graphics.Color;
|
import android.graphics.Color;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.Message;
|
import android.os.Message;
|
||||||
import android.support.v4.app.ActionBarDrawerToggle;
|
import android.support.v4.app.ActionBarDrawerToggle;
|
||||||
|
import android.support.v4.app.DialogFragment;
|
||||||
import android.support.v4.app.Fragment;
|
import android.support.v4.app.Fragment;
|
||||||
import android.support.v4.app.FragmentManager;
|
import android.support.v4.app.FragmentManager;
|
||||||
import android.support.v4.app.FragmentTransaction;
|
import android.support.v4.app.FragmentTransaction;
|
||||||
|
@ -80,6 +85,10 @@ public class MainActivity extends ActionBarActivity implements ListView.OnItemCl
|
||||||
|
|
||||||
private static final int DOWNLOAD_SCHEDULE_LOADER_ID = 1;
|
private static final int DOWNLOAD_SCHEDULE_LOADER_ID = 1;
|
||||||
private static final int DOWNLOAD_SCHEDULE_RESULT_WHAT = 1;
|
private static final int DOWNLOAD_SCHEDULE_RESULT_WHAT = 1;
|
||||||
|
|
||||||
|
private static final long DATABASE_VALIDITY_DURATION = 24L * 60L * 60L * 1000L; // 24h
|
||||||
|
private static final long DOWNLOAD_REMINDER_SNOOZE_DURATION = 24L * 60L * 60L * 1000L; // 24h
|
||||||
|
private static final String PREF_LAST_DOWNLOAD_REMINDER_TIME = "last_download_reminder_time";
|
||||||
private static final String STATE_CURRENT_SECTION = "current_section";
|
private static final String STATE_CURRENT_SECTION = "current_section";
|
||||||
|
|
||||||
private static final DateFormat LAST_UPDATE_DATE_FORMAT = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM, Locale.getDefault());
|
private static final DateFormat LAST_UPDATE_DATE_FORMAT = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM, Locale.getDefault());
|
||||||
|
@ -111,6 +120,22 @@ public class MainActivity extends ActionBarActivity implements ListView.OnItemCl
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
public static class DownloadScheduleReminderDialogFragment extends DialogFragment {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Dialog onCreateDialog(Bundle savedInstanceState) {
|
||||||
|
return new AlertDialog.Builder(getActivity()).setTitle(R.string.download_reminder_title).setMessage(R.string.download_reminder_message)
|
||||||
|
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onClick(DialogInterface dialog, int which) {
|
||||||
|
((MainActivity) getActivity()).startDownloadSchedule();
|
||||||
|
}
|
||||||
|
|
||||||
|
}).setNegativeButton(android.R.string.cancel, null).create();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
@ -127,6 +152,7 @@ public class MainActivity extends ActionBarActivity implements ListView.OnItemCl
|
||||||
drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
|
drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
|
||||||
drawerLayout.setDrawerShadow(getResources().getDrawable(R.drawable.drawer_shadow), Gravity.LEFT);
|
drawerLayout.setDrawerShadow(getResources().getDrawable(R.drawable.drawer_shadow), Gravity.LEFT);
|
||||||
drawerToggle = new ActionBarDrawerToggle(this, drawerLayout, R.drawable.ic_drawer, R.string.main_menu, R.string.close_menu) {
|
drawerToggle = new ActionBarDrawerToggle(this, drawerLayout, R.drawable.ic_drawer, R.string.main_menu, R.string.close_menu) {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDrawerOpened(View drawerView) {
|
public void onDrawerOpened(View drawerView) {
|
||||||
updateActionBar();
|
updateActionBar();
|
||||||
|
@ -172,7 +198,7 @@ public class MainActivity extends ActionBarActivity implements ListView.OnItemCl
|
||||||
menuListView.setSelection(currentSection.ordinal());
|
menuListView.setSelection(currentSection.ordinal());
|
||||||
updateActionBar();
|
updateActionBar();
|
||||||
|
|
||||||
// Loaders
|
// Loader
|
||||||
if (getSupportLoaderManager().getLoader(DOWNLOAD_SCHEDULE_LOADER_ID) != null) {
|
if (getSupportLoaderManager().getLoader(DOWNLOAD_SCHEDULE_LOADER_ID) != null) {
|
||||||
// Reconnect to running loader
|
// Reconnect to running loader
|
||||||
startDownloadSchedule();
|
startDownloadSchedule();
|
||||||
|
@ -184,9 +210,9 @@ public class MainActivity extends ActionBarActivity implements ListView.OnItemCl
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateLastUpdateTime() {
|
private void updateLastUpdateTime() {
|
||||||
Date lastUpdateTime = DatabaseManager.getInstance().getLastUpdateTime();
|
long lastUpdateTime = DatabaseManager.getInstance().getLastUpdateTime();
|
||||||
lastUpdateTextView.setText(getString(R.string.last_update,
|
lastUpdateTextView.setText(getString(R.string.last_update,
|
||||||
(lastUpdateTime == null) ? getString(R.string.never) : LAST_UPDATE_DATE_FORMAT.format(lastUpdateTime)));
|
(lastUpdateTime == -1L) ? getString(R.string.never) : LAST_UPDATE_DATE_FORMAT.format(new Date(lastUpdateTime))));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -214,6 +240,27 @@ public class MainActivity extends ActionBarActivity implements ListView.OnItemCl
|
||||||
outState.putInt(STATE_CURRENT_SECTION, currentSection.ordinal());
|
outState.putInt(STATE_CURRENT_SECTION, currentSection.ordinal());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onStart() {
|
||||||
|
super.onStart();
|
||||||
|
|
||||||
|
// Download reminder
|
||||||
|
long now = System.currentTimeMillis();
|
||||||
|
long time = DatabaseManager.getInstance().getLastUpdateTime();
|
||||||
|
if ((time == -1L) || (time < (now - DATABASE_VALIDITY_DURATION))) {
|
||||||
|
SharedPreferences prefs = getPreferences(Context.MODE_PRIVATE);
|
||||||
|
time = prefs.getLong(PREF_LAST_DOWNLOAD_REMINDER_TIME, -1L);
|
||||||
|
if ((time == -1L) || (time < (now - DOWNLOAD_REMINDER_SNOOZE_DURATION))) {
|
||||||
|
prefs.edit().putLong(PREF_LAST_DOWNLOAD_REMINDER_TIME, now).commit();
|
||||||
|
|
||||||
|
FragmentManager fm = getSupportFragmentManager();
|
||||||
|
if (fm.findFragmentByTag("download_reminder") == null) {
|
||||||
|
new DownloadScheduleReminderDialogFragment().show(fm, "download_reminder");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onDestroy() {
|
protected void onDestroy() {
|
||||||
super.onDestroy();
|
super.onDestroy();
|
||||||
|
@ -261,7 +308,7 @@ public class MainActivity extends ActionBarActivity implements ListView.OnItemCl
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void startDownloadSchedule() {
|
public void startDownloadSchedule() {
|
||||||
// Start by displaying indeterminate progress, determinate will come later
|
// Start by displaying indeterminate progress, determinate will come later
|
||||||
setSupportProgressBarIndeterminate(true);
|
setSupportProgressBarIndeterminate(true);
|
||||||
setSupportProgressBarVisibility(true);
|
setSupportProgressBarVisibility(true);
|
||||||
|
|
|
@ -97,9 +97,12 @@ public class DatabaseManager {
|
||||||
return context.getSharedPreferences(DB_PREFS_FILE, Context.MODE_PRIVATE);
|
return context.getSharedPreferences(DB_PREFS_FILE, Context.MODE_PRIVATE);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Date getLastUpdateTime() {
|
/**
|
||||||
long time = getSharedPreferences().getLong(LAST_UPDATE_TIME_PREF, -1L);
|
*
|
||||||
return (time == -1L) ? null : new Date(time);
|
* @return The last update time in milliseconds since EPOCH, or -1 if not available.
|
||||||
|
*/
|
||||||
|
public long getLastUpdateTime() {
|
||||||
|
return getSharedPreferences().getLong(LAST_UPDATE_TIME_PREF, -1L);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -35,8 +35,7 @@ public class TracksFragment extends Fragment implements LoaderCallbacks<List<Day
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final int DAYS_LOADER_ID = 1;
|
private static final int DAYS_LOADER_ID = 1;
|
||||||
private static final String PREFERENCES_FILE = "tracks";
|
private static final String CURRENT_PAGE_KEY = "tracks_current_page";
|
||||||
private static final String CURRENT_PAGE_KEY = "current_page";
|
|
||||||
|
|
||||||
private DaysAdapter daysAdapter;
|
private DaysAdapter daysAdapter;
|
||||||
private ViewHolder holder;
|
private ViewHolder holder;
|
||||||
|
@ -49,7 +48,7 @@ public class TracksFragment extends Fragment implements LoaderCallbacks<List<Day
|
||||||
|
|
||||||
if (savedInstanceState == null) {
|
if (savedInstanceState == null) {
|
||||||
// Restore the current page from preferences
|
// Restore the current page from preferences
|
||||||
savedCurrentPage = getActivity().getSharedPreferences(PREFERENCES_FILE, Context.MODE_PRIVATE).getInt(CURRENT_PAGE_KEY, -1);
|
savedCurrentPage = getActivity().getPreferences(Context.MODE_PRIVATE).getInt(CURRENT_PAGE_KEY, -1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -84,7 +83,7 @@ public class TracksFragment extends Fragment implements LoaderCallbacks<List<Day
|
||||||
super.onStop();
|
super.onStop();
|
||||||
// Save the current page to preferences if it has changed
|
// Save the current page to preferences if it has changed
|
||||||
final int page = holder.pager.getCurrentItem();
|
final int page = holder.pager.getCurrentItem();
|
||||||
SharedPreferences prefs = getActivity().getSharedPreferences(PREFERENCES_FILE, Context.MODE_PRIVATE);
|
SharedPreferences prefs = getActivity().getPreferences(Context.MODE_PRIVATE);
|
||||||
if (prefs.getInt(CURRENT_PAGE_KEY, -1) != page) {
|
if (prefs.getInt(CURRENT_PAGE_KEY, -1) != page) {
|
||||||
prefs.edit().putInt(CURRENT_PAGE_KEY, page).commit();
|
prefs.edit().putInt(CURRENT_PAGE_KEY, page).commit();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue