diff --git a/build.gradle b/build.gradle index eabda2d..8105272 100644 --- a/build.gradle +++ b/build.gradle @@ -3,7 +3,7 @@ buildscript { mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:2.1.0' + classpath 'com.android.tools.build:gradle:2.1.2' } } diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml index ce46e97..c404535 100644 --- a/src/main/AndroidManifest.xml +++ b/src/main/AndroidManifest.xml @@ -3,7 +3,7 @@ xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="37" android:versionName="0.21.2"> - + @@ -105,6 +105,14 @@ android:name=".activities.remote_account.ContactListActivity" android:label="@string/title_activity_select_contact"> + + + + - + \ No newline at end of file diff --git a/src/main/java/fr/unix_experience/owncloud_sms/activities/remote_account/AccountActionsActivity.java b/src/main/java/fr/unix_experience/owncloud_sms/activities/remote_account/AccountActionsActivity.java new file mode 100644 index 0000000..56efdea --- /dev/null +++ b/src/main/java/fr/unix_experience/owncloud_sms/activities/remote_account/AccountActionsActivity.java @@ -0,0 +1,49 @@ +package fr.unix_experience.owncloud_sms.activities.remote_account; + +import android.content.Intent; +import android.os.Bundle; +import android.view.View; +import android.widget.ArrayAdapter; +import android.widget.ListView; + +import java.util.ArrayList; + +import fr.unix_experience.android_lib.AppCompatListActivity; +import fr.unix_experience.owncloud_sms.R; + +public class AccountActionsActivity extends AppCompatListActivity { + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + setContentView(R.layout.activity_account_actions); + + ArrayList itemList = new ArrayList<>(); + ArrayAdapter adp = new ArrayAdapter<>(getBaseContext(), + android.R.layout.simple_dropdown_item_1line, itemList); + setListAdapter(adp); + + // Create item list + itemList.add(getBaseContext().getString(R.string.restore_all_messages)); + + adp.notifyDataSetChanged(); + + // Fetch account name from intent + _accountName = getIntent().getStringExtra("account"); + } + + @Override + protected void onListItemClick(ListView l, View v, int position, long id) { + switch (position) { + case 0: + Intent intent = new Intent(this, RestoreMessagesActivity.class); + intent.putExtra("account", _accountName); + startActivity(intent); + break; + default: break; // Unhandled + } + } + + private String _accountName = ""; + private static final String TAG = AccountActionsActivity.class.getSimpleName(); +} diff --git a/src/main/java/fr/unix_experience/owncloud_sms/activities/remote_account/AccountListActivity.java b/src/main/java/fr/unix_experience/owncloud_sms/activities/remote_account/AccountListActivity.java index 25e7b91..f80f487 100644 --- a/src/main/java/fr/unix_experience/owncloud_sms/activities/remote_account/AccountListActivity.java +++ b/src/main/java/fr/unix_experience/owncloud_sms/activities/remote_account/AccountListActivity.java @@ -12,8 +12,7 @@ import fr.unix_experience.android_lib.AppCompatListActivity; import fr.unix_experience.owncloud_sms.R; public class AccountListActivity extends AppCompatListActivity { - ArrayList listItems = new ArrayList<>(); - AndroidAccountAdapter adapter; + @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); @@ -22,16 +21,18 @@ public class AccountListActivity extends AppCompatListActivity { setContentView(R.layout.restore_activity_accountlist); - adapter = new AndroidAccountAdapter(this, + ArrayList itemList = new ArrayList<>(); + + AndroidAccountAdapter adapter = new AndroidAccountAdapter(this, android.R.layout.simple_list_item_1, - listItems, + itemList, R.layout.account_list_item, - R.id.accountname, ContactListActivity.class); + R.id.accountname, AccountActionsActivity.class); setListAdapter(adapter); Account[] accountList = _accountMgr.getAccountsByType(getString(R.string.account_type)); - Collections.addAll(listItems, accountList); + Collections.addAll(itemList, accountList); adapter.notifyDataSetChanged(); diff --git a/src/main/java/fr/unix_experience/owncloud_sms/activities/remote_account/ContactListActivity.java b/src/main/java/fr/unix_experience/owncloud_sms/activities/remote_account/ContactListActivity.java index 450f537..a98c3a4 100644 --- a/src/main/java/fr/unix_experience/owncloud_sms/activities/remote_account/ContactListActivity.java +++ b/src/main/java/fr/unix_experience/owncloud_sms/activities/remote_account/ContactListActivity.java @@ -69,13 +69,15 @@ public class ContactListActivity extends AppCompatActivity implements ASyncConta final Spinner sp = (Spinner) findViewById(R.id.contact_spinner); mContactInfos = (LinearLayout) findViewById(R.id.contactinfos_layout); final ProgressBar contactProgressBar = (ProgressBar) findViewById(R.id.contactlist_pgbar); - final ListView contactPhoneListView = (ListView) findViewById(R.id.contact_phonelistView); + ListView contactPhoneListView = (ListView) findViewById(R.id.contact_phonelistView); mContactPhoneListAdapter = new RecoveryPhoneNumberListViewAdapter(getBaseContext()); + assert contactPhoneListView != null; contactPhoneListView.setAdapter(mContactPhoneListAdapter); mContactInfos.setVisibility(View.INVISIBLE); - sp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { + assert sp != null; + sp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView parent, View view, int position, long id) { mContactInfos.setVisibility(View.INVISIBLE); @@ -97,7 +99,8 @@ public class ContactListActivity extends AppCompatActivity implements ASyncConta for (final Account element : myAccountList) { if (element.name.equals(accountName)) { // Load "contacts" - contactProgressBar.setVisibility(View.VISIBLE); + assert contactProgressBar != null; + contactProgressBar.setVisibility(View.VISIBLE); new ContactLoadTask(element, getBaseContext(), mAdapter, mObjects, mLayout, contactProgressBar, mContactInfos).execute(); // Add refresh handler diff --git a/src/main/java/fr/unix_experience/owncloud_sms/activities/remote_account/RestoreMessagesActivity.java b/src/main/java/fr/unix_experience/owncloud_sms/activities/remote_account/RestoreMessagesActivity.java new file mode 100644 index 0000000..df3dfc7 --- /dev/null +++ b/src/main/java/fr/unix_experience/owncloud_sms/activities/remote_account/RestoreMessagesActivity.java @@ -0,0 +1,15 @@ +package fr.unix_experience.owncloud_sms.activities.remote_account; + +import android.os.Bundle; +import android.support.v7.app.AppCompatActivity; + +import fr.unix_experience.owncloud_sms.R; + +public class RestoreMessagesActivity extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_restore_messages); + } +} diff --git a/src/main/java/fr/unix_experience/owncloud_sms/notifications/OCSMSNotificationUI.java b/src/main/java/fr/unix_experience/owncloud_sms/notifications/OCSMSNotificationUI.java index 3335aaa..bf92202 100644 --- a/src/main/java/fr/unix_experience/owncloud_sms/notifications/OCSMSNotificationUI.java +++ b/src/main/java/fr/unix_experience/owncloud_sms/notifications/OCSMSNotificationUI.java @@ -34,19 +34,19 @@ public class OCSMSNotificationUI { * * @see #cancel(Context) */ - public static void notify(final Context context, final String titleString, - final String contentString, final int number) { - final Resources res = context.getResources(); + public static void notify(Context context, String titleString, + String contentString, int number) { + Resources res = context.getResources(); // This image is used as the notification's large icon (thumbnail). // TODO: Remove this if your notification has no relevant thumbnail. - final Bitmap picture = BitmapFactory.decodeResource(res, R.drawable.ic_launcher); + Bitmap picture = BitmapFactory.decodeResource(res, R.drawable.ic_launcher); - final String ticker = (titleString.length() > 20) ? titleString.substring(0, 20) : titleString; - final String title = res.getString(R.string.ui_notification_title_template, titleString); + String ticker = (titleString.length() > 20) ? titleString.substring(0, 20) : titleString; + String title = res.getString(R.string.ui_notification_title_template, titleString); - final NotificationCompat.Builder builder = new NotificationCompat.Builder(context) + NotificationCompat.Builder builder = new NotificationCompat.Builder(context) // Set appropriate defaults for the notification light, sound, // and vibration. @@ -76,17 +76,17 @@ public class OCSMSNotificationUI { .setSummaryText(titleString)) .setAutoCancel(true); - notify(context, builder.build()); + OCSMSNotificationUI.notify(context, builder.build()); } @TargetApi(Build.VERSION_CODES.ECLAIR) - private static void notify(final Context context, final Notification notification) { - final NotificationManager nm = (NotificationManager) context + private static void notify(Context context, Notification notification) { + NotificationManager nm = (NotificationManager) context .getSystemService(Context.NOTIFICATION_SERVICE); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ECLAIR) { - nm.notify(NOTIFICATION_TAG, 0, notification); + nm.notify(OCSMSNotificationUI.NOTIFICATION_TAG, 0, notification); } else { - nm.notify(NOTIFICATION_TAG.hashCode(), notification); + nm.notify(OCSMSNotificationUI.NOTIFICATION_TAG.hashCode(), notification); } } @@ -95,13 +95,13 @@ public class OCSMSNotificationUI { * {@link #notify(Context, String, int)}. */ @TargetApi(Build.VERSION_CODES.ECLAIR) - public static void cancel(final Context context) { - final NotificationManager nm = (NotificationManager) context + public static void cancel(Context context) { + NotificationManager nm = (NotificationManager) context .getSystemService(Context.NOTIFICATION_SERVICE); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ECLAIR) { - nm.cancel(NOTIFICATION_TAG, 0); + nm.cancel(OCSMSNotificationUI.NOTIFICATION_TAG, 0); } else { - nm.cancel(NOTIFICATION_TAG.hashCode()); + nm.cancel(OCSMSNotificationUI.NOTIFICATION_TAG.hashCode()); } } } diff --git a/src/main/res/layout/activity_account_actions.xml b/src/main/res/layout/activity_account_actions.xml new file mode 100644 index 0000000..84744b0 --- /dev/null +++ b/src/main/res/layout/activity_account_actions.xml @@ -0,0 +1,42 @@ + + + + + + diff --git a/src/main/res/layout/activity_restore_messages.xml b/src/main/res/layout/activity_restore_messages.xml new file mode 100644 index 0000000..df1a6fb --- /dev/null +++ b/src/main/res/layout/activity_restore_messages.xml @@ -0,0 +1,39 @@ + + + + + diff --git a/src/main/res/values-en/strings.xml b/src/main/res/values-en/strings.xml index 62f5328..7c03d25 100644 --- a/src/main/res/values-en/strings.xml +++ b/src/main/res/values-en/strings.xml @@ -168,5 +168,7 @@ We cannot read your contacts. We cannot read your SMS. App Infos and permissions + Restore all messages + Account actions diff --git a/src/main/res/values-fr/strings.xml b/src/main/res/values-fr/strings.xml index fdd22bc..ded36ae 100644 --- a/src/main/res/values-fr/strings.xml +++ b/src/main/res/values-fr/strings.xml @@ -153,4 +153,6 @@ Nous ne pouvons lire vos contacts. Nous ne pouvons pas lire vos SMS. Infos et permissions + Restaurer tous les messages + Actions du compte diff --git a/src/main/res/values/google_playstore_strings.xml b/src/main/res/values/google_playstore_strings.xml index 35ccaa5..8afe57b 100644 --- a/src/main/res/values/google_playstore_strings.xml +++ b/src/main/res/values/google_playstore_strings.xml @@ -27,7 +27,7 @@ --> - 3 + 3 ownCloud SMS synchronize your local SMS on your ownCloud instance diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index 4dc692d..bef407d 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -41,7 +41,7 @@ Login logo - ownCloudSMSPrefs + ownCloudSMSPrefs last_message_date @@ -203,4 +203,6 @@ We cannot read your contacts. We cannot read your SMS. App Infos and permissions + Restore all messages + Account actions