Remove preference plugin capabilities

pull/253/head
Alex Baker 9 years ago
parent 5cb67fee96
commit 9c0c2b7bba

@ -261,13 +261,7 @@
<activity
android:name="com.todoroo.astrid.core.DefaultsPreferences"
android:theme="@android:style/Theme"
android:label="@string/task_defaults">
<intent-filter>
<action android:name="org.tasks.SETTINGS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
android:theme="@android:style/Theme"/>
<activity
android:name="com.todoroo.astrid.activity.BeastModePreferences"
@ -345,20 +339,7 @@
<activity
android:name="com.todoroo.astrid.gtasks.GtasksPreferences"
android:theme="@android:style/Theme"
android:label="@string/gtasks_GPr_header"
android:screenOrientation="portrait">
<meta-data
android:name="category"
android:resource="@string/SyP_label" />
<meta-data
android:name="syncAction"
android:value="true" />
<intent-filter>
<action android:name="org.tasks.SETTINGS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
android:screenOrientation="portrait"/>
<!-- repeats -->
@ -401,31 +382,13 @@
<!-- old tasks -->
<activity
android:name="com.todoroo.astrid.core.OldTaskPreferences"
android:theme="@android:style/Theme"
android:label="@string/EPr_manage_header">
<meta-data
android:name="category"
android:resource="@string/SyP_label" />
<intent-filter>
<action android:name="org.tasks.SETTINGS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
android:theme="@android:style/Theme"/>
<!-- backup -->
<activity
android:name="com.todoroo.astrid.backup.BackupPreferences"
android:theme="@android:style/Theme"
android:label="@string/backup_BPr_header">
<meta-data
android:name="category"
android:resource="@string/SyP_label" />
<intent-filter>
<action android:name="org.tasks.SETTINGS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
android:theme="@android:style/Theme"/>
<!-- premium -->
<activity
@ -446,13 +409,7 @@
<!-- reminders -->
<activity
android:name="com.todoroo.astrid.reminders.ReminderPreferences"
android:theme="@android:style/Theme"
android:label="@string/notifications">
<intent-filter>
<action android:name="org.tasks.SETTINGS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
android:theme="@android:style/Theme"/>
<activity
android:name=".voice.VoiceCommandActivity"

@ -6,26 +6,25 @@
package com.todoroo.astrid.activity;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.content.res.Resources;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceChangeListener;
import android.preference.Preference.OnPreferenceClickListener;
import android.preference.PreferenceGroup;
import android.preference.PreferenceManager;
import android.preference.PreferenceScreen;
import android.speech.tts.TextToSpeech;
import android.text.TextUtils;
import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.backup.BackupPreferences;
import com.todoroo.astrid.core.DefaultsPreferences;
import com.todoroo.astrid.core.OldTaskPreferences;
import com.todoroo.astrid.data.TaskAttachment;
import com.todoroo.astrid.files.FileExplore;
import com.todoroo.astrid.gcal.CalendarAlarmScheduler;
import com.todoroo.astrid.gtasks.GtasksPreferences;
import com.todoroo.astrid.helper.MetadataHelper;
import com.todoroo.astrid.service.MarketStrategy.AmazonMarketStrategy;
import com.todoroo.astrid.reminders.ReminderPreferences;
import com.todoroo.astrid.service.StartupService;
import com.todoroo.astrid.utility.Constants;
import com.todoroo.astrid.utility.TodorooPreferenceActivity;
@ -37,10 +36,7 @@ import org.tasks.R;
import org.tasks.preferences.Preferences;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map.Entry;
import javax.inject.Inject;
@ -55,7 +51,6 @@ import static com.todoroo.andlib.utility.AndroidUtilities.preFroyo;
public class EditPreferences extends TodorooPreferenceActivity {
private static final Logger log = LoggerFactory.getLogger(EditPreferences.class);
private static final int REQUEST_CODE_SYNC = 0;
private static final int REQUEST_CODE_FILES_DIR = 2;
private static final int REQUEST_CODE_TTS_CHECK = 2534;
@ -94,7 +89,7 @@ public class EditPreferences extends TodorooPreferenceActivity {
PreferenceScreen screen = getPreferenceScreen();
addPluginPreferences(screen);
addPreferences(screen);
addPreferencesFromResource(R.xml.preferences_misc);
@ -163,82 +158,27 @@ public class EditPreferences extends TodorooPreferenceActivity {
startActivity(intent);
}
private static final HashMap<Class<?>, Integer> PREFERENCE_REQUEST_CODES = new HashMap<>();
static {
PREFERENCE_REQUEST_CODES.put(GtasksPreferences.class, REQUEST_CODE_SYNC);
}
private void addPluginPreferences(PreferenceScreen screen) {
Intent queryIntent = new Intent(AstridApiConstants.ACTION_SETTINGS);
PackageManager pm = getPackageManager();
List<ResolveInfo> resolveInfoList = pm.queryIntentActivities(queryIntent,
PackageManager.GET_META_DATA);
LinkedHashMap<String, ArrayList<Preference>> categoryPreferences =
new LinkedHashMap<>();
// Loop through a list of all packages (including plugins, addons)
// that have a settings action
for (ResolveInfo resolveInfo : resolveInfoList) {
final Intent intent = new Intent(AstridApiConstants.ACTION_SETTINGS);
intent.setClassName(resolveInfo.activityInfo.packageName,
resolveInfo.activityInfo.name);
if (GtasksPreferences.class.getName().equals(resolveInfo.activityInfo.name)
&& AmazonMarketStrategy.isKindleFire()) {
continue;
}
Preference preference = new Preference(this);
preference.setTitle(resolveInfo.activityInfo.loadLabel(pm));
try {
Class<?> intentComponent = Class.forName(intent.getComponent().getClassName());
if (intentComponent.getSuperclass().equals(GtasksPreferences.class)) {
intentComponent = GtasksPreferences.class;
}
if (PREFERENCE_REQUEST_CODES.containsKey(intentComponent)) {
final int code = PREFERENCE_REQUEST_CODES.get(intentComponent);
preference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference pref) {
startActivityForResult(intent, code);
return true;
}
});
} else {
preference.setIntent(intent);
}
} catch (ClassNotFoundException e) {
log.error(e.getMessage(), e);
preference.setIntent(intent);
}
String category = MetadataHelper.resolveActivityCategoryName(resolveInfo, pm);
if (!categoryPreferences.containsKey(category)) {
categoryPreferences.put(category, new ArrayList<Preference>());
}
ArrayList<Preference> arrayList = categoryPreferences.get(category);
arrayList.add(preference);
private void addPreferences(PreferenceScreen screen) {
List<Preference> preferences = new ArrayList<Preference>() {{
add(getPreference(ReminderPreferences.class, R.string.notifications));
add(getPreference(DefaultsPreferences.class, R.string.task_defaults));
add(getPreference(GtasksPreferences.class, R.string.gtasks_GPr_header));
add(getPreference(BackupPreferences.class, R.string.backup_BPr_header));
add(getPreference(OldTaskPreferences.class, R.string.EPr_manage_header));
}};
for (Preference preference : preferences) {
screen.addPreference(preference);
}
}
for(Entry<String, ArrayList<Preference>> entry : categoryPreferences.entrySet()) {
if (entry.getKey().equals(getString(R.string.app_name))) {
for(Preference preference : entry.getValue()) {
screen.addPreference(preference);
}
} else {
PreferenceManager manager = getPreferenceManager();
PreferenceScreen header = manager.createPreferenceScreen(this);
header.setTitle(entry.getKey());
screen.addPreference(header);
for(Preference preference : entry.getValue()) {
header.addPreference(preference);
}
}
}
private Preference getPreference(final Class<? extends TodorooPreferenceActivity> klass, final int label) {
return new Preference(this) {{
setTitle(getResources().getString(label));
setIntent(new Intent(EditPreferences.this, klass) {{
setAction(AstridApiConstants.ACTION_SETTINGS);
}});
}};
}
@SuppressWarnings("StatementWithEmptyBody")
@ -265,11 +205,7 @@ public class EditPreferences extends TodorooPreferenceActivity {
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE_SYNC && resultCode == GtasksPreferences.RESULT_CODE_SYNCHRONIZE) {
setResult(GtasksPreferences.RESULT_CODE_SYNCHRONIZE);
finish();
return;
} else if (requestCode == REQUEST_CODE_FILES_DIR && resultCode == RESULT_OK) {
if (requestCode == REQUEST_CODE_FILES_DIR && resultCode == RESULT_OK) {
if (data != null) {
String dir = data.getStringExtra(FileExplore.RESULT_DIR_SELECTED);
preferences.setString(TaskAttachment.FILES_DIRECTORY_PREF, dir);

@ -1,50 +0,0 @@
/**
* Copyright (c) 2012 Todoroo Inc
*
* See the file "LICENSE" for the full license governing this code.
*/
package com.todoroo.astrid.helper;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @author joshuagross
*/
public class MetadataHelper {
private static final Logger log = LoggerFactory.getLogger(MetadataHelper.class);
private static final String CATEGORY_KEY = "category"; //$NON-NLS-1$
public static String resolveActivityCategoryName (ResolveInfo resolveInfo, PackageManager pm) {
// category - either from metadata, or the application name
String category = null;
if (resolveInfo.activityInfo.metaData != null && resolveInfo.activityInfo.metaData.containsKey(CATEGORY_KEY)) {
int resource = resolveInfo.activityInfo.metaData.getInt(
CATEGORY_KEY, -1);
if (resource > -1) {
// category stored as integer in Manifest
try {
category = pm.getResourcesForApplication(
resolveInfo.activityInfo.applicationInfo).getString(
resource);
} catch (Exception e) {
log.error(e.getMessage(), e);
}
} else {
// category stored as String in Manifest
category = resolveInfo.activityInfo.metaData.getString(CATEGORY_KEY);
}
}
// If category is null at this point, we use the name of the application this activity is found in
if (category == null) {
category = resolveInfo.activityInfo.applicationInfo.loadLabel(pm).toString();
}
return category;
}
}

@ -85,7 +85,6 @@
<string name="DLG_information_title">معلومة</string>
<string name="DLG_close">إغلاق</string>
<string name="DLG_wait">إنتظر من فضلك...</string>
<string name="SyP_label">تحيين و نسخ احتياطي</string>
<string name="sync_SPr_group_status">الحالة</string>
<string name="sync_SPr_status_subtitle">الحالة: %s</string>
<string name="sync_status_loggedout">لم يتم تسجيل الدخول</string>

@ -492,7 +492,6 @@
<string name="DLG_close">Затвори</string>
<string name="DLG_error">Ами сега, изглежда е станала грешка! Ето какво се случи:\n\n%s</string>
<string name="DLG_wait">Моля, изчакайте...</string>
<string name="SyP_label">Синхронизиране и Резервни копия</string>
<string name="sync_SPr_group_status">Състояние</string>
<string name="sync_SPr_status_subtitle">Състояние: %s</string>
<string name="sync_status_loggedout">Не сте влезнали</string>

@ -472,7 +472,6 @@
<string name="DLG_close">Zavřít</string>
<string name="DLG_error">Jejda, vypadá to, že se vyskytla chyba! Tady je co se stalo:\n\n%s</string>
<string name="DLG_wait">Čekejte prosím...</string>
<string name="SyP_label">Synchronizace</string>
<string name="sync_SPr_group_status">Stav</string>
<string name="sync_SPr_status_subtitle">Stav: %s</string>
<string name="sync_status_loggedout">Nepřihlášen</string>

@ -243,7 +243,6 @@
<string name="DLG_question_title">Spørsmål:</string>
<string name="DLG_close">Luk</string>
<string name="DLG_wait">Vent venligst...</string>
<string name="SyP_label">Synkronisering</string>
<string name="sync_SPr_group_options">Indstillinger</string>
<string name="sync_SPr_interval_title">Baggrunds Synk</string>
<string name="sync_SPr_interval_desc_disabled">Baggrunds synkronisering er slået fra</string>

@ -481,7 +481,6 @@
<string name="DLG_close">Schließen</string>
<string name="DLG_error">Ups, sieht aus, als ob ein Fehler aufgetreten ist! Folgendes ist passiert:\n\n%s</string>
<string name="DLG_wait">Bitte warten...</string>
<string name="SyP_label">Synchronisation &amp; Backup</string>
<string name="sync_status_loggedout">Nicht angemeldet</string>
<string name="sync_status_ongoing">Synchronisierung läuft...</string>
<string name="sync_status_success">Letzte Synchronisierung:\n%s</string>

@ -480,7 +480,6 @@
<string name="DLG_close">Κλείσε</string>
<string name="DLG_error">Ωπ, προέκυψε σφάλμα!! Νά τι έγινε :\n\n%s</string>
<string name="DLG_wait">Παρακαλώ περιμένετε...</string>
<string name="SyP_label">Συγχρονισμός και αντίγ.ασφαλείας</string>
<string name="sync_SPr_group_status">Κατάσταση</string>
<string name="sync_SPr_status_subtitle">Κατάσταση: %s</string>
<string name="sync_status_loggedout">Δεν συνδέθηκατε</string>

@ -484,7 +484,6 @@
<string name="DLG_close">Cerrar</string>
<string name="DLG_error">¡Uy, parece que ocurró un error! Esto es lo que pasó:\n\n%s</string>
<string name="DLG_wait">Por favor, espere...</string>
<string name="SyP_label">Sincronización y copia de seguridad</string>
<string name="sync_SPr_group_status">Estado</string>
<string name="sync_SPr_status_subtitle">Estado: %s</string>
<string name="sync_status_loggedout">Sesión no iniciada</string>

@ -484,7 +484,6 @@
<string name="DLG_close">Fermer</string>
<string name="DLG_error">Oups, une erreur est survenue ! Voici ce qu\'il s\'est passé :\n\n%s</string>
<string name="DLG_wait">Veuillez patienter...</string>
<string name="SyP_label">Synchronisation</string>
<string name="sync_SPr_group_status">Statut</string>
<string name="sync_SPr_status_subtitle">État : %s</string>
<string name="sync_status_loggedout">Non connecté</string>

@ -428,7 +428,6 @@ Se visualizzi questo errore più volte, ti consigliamo di cancellare tutti i dat
<string name="DLG_close">Chiudi</string>
<string name="DLG_error">Oops, sembra che ci sia stato un errore! E\' successo questo:\n\n%s</string>
<string name="DLG_wait">Attendi...</string>
<string name="SyP_label">Sincronizza &amp; archivia</string>
<string name="sync_SPr_group_status">Stato</string>
<string name="sync_SPr_status_subtitle">Stato: %s</string>
<string name="sync_status_loggedout">Non connesso</string>

@ -478,7 +478,6 @@
<string name="DLG_close">סגור</string>
<string name="DLG_error">אוּפְּס, נראה שארעה שגיאה! הנה מה שקה:\n\n%s</string>
<string name="DLG_wait">אנא המתן...</string>
<string name="SyP_label">סינכרון וגיבוי</string>
<string name="sync_SPr_group_status">מצב</string>
<string name="sync_SPr_status_subtitle">מצב: %s</string>
<string name="sync_status_loggedout">לא מחובר</string>

@ -490,7 +490,6 @@
<string name="DLG_close">閉じる</string>
<string name="DLG_error">エラーが発生しました! 発生した内容\n\n%s</string>
<string name="DLG_wait">お待ちください</string>
<string name="SyP_label">同期</string>
<string name="sync_SPr_group_status">状況</string>
<string name="sync_SPr_status_subtitle">状況: %s</string>
<string name="sync_status_loggedout">ログインしていません</string>

@ -485,7 +485,6 @@
<string name="DLG_close">닫기</string>
<string name="DLG_error">에러가 발생한 것 같습니다! 발생한 에러는 다음과 같습니다:\n\n%s</string>
<string name="DLG_wait">잠시 기다리세요...</string>
<string name="SyP_label">동기화 &amp; 백업</string>
<string name="sync_SPr_group_status">상태</string>
<string name="sync_SPr_status_subtitle">상태: %s</string>
<string name="sync_status_loggedout">로그인 안 됨</string>

@ -484,7 +484,6 @@
<string name="DLG_close">Sluit</string>
<string name="DLG_error">Er is een fout opgetreden:\n\n%s</string>
<string name="DLG_wait">Even geduld a.u.b.</string>
<string name="SyP_label">Synchronisatie</string>
<string name="sync_status_loggedout">Niet aangemeld</string>
<string name="sync_status_ongoing">Synchronisatie bezig...</string>
<string name="sync_status_success">Vorige:\n%s</string>

@ -488,7 +488,6 @@ i odzyskanie zadań z kopi zapasowej (Settings-&gt;Sync and backup-&gt;Backup-&g
<string name="DLG_close">Zamknij</string>
<string name="DLG_error">Ups! Wygląda na to, że wystąpił jakiś błąd! Oto, co się stało:\n\n%s</string>
<string name="DLG_wait">Proszę czekać...</string>
<string name="SyP_label">Synchronizacja</string>
<string name="sync_SPr_group_status">Stan</string>
<string name="sync_status_loggedout">Niezalogowany</string>
<string name="sync_status_ongoing">Synchronizacja trwa...</string>

@ -484,7 +484,6 @@
<string name="DLG_close">Fechar</string>
<string name="DLG_error">Opa, parece que ocorreu um erro! Aqui está o que aconteceu:\n\n%s</string>
<string name="DLG_wait">Por favor, aguarde...</string>
<string name="SyP_label">Sincronização</string>
<string name="sync_SPr_group_status">Estado</string>
<string name="sync_SPr_status_subtitle">Estado: %s</string>
<string name="sync_status_loggedout">Não Registrado</string>

@ -490,7 +490,6 @@ das tarefas através de um backup em Definições-&gt;Sincronização e backup-&
<string name="DLG_close">Fechar</string>
<string name="DLG_error">Parece que ocorreu um erro! Isto foi o que aconteceu:\n\n%s</string>
<string name="DLG_wait">Por favor aguarde...</string>
<string name="SyP_label">Sincronização e backup</string>
<string name="sync_SPr_group_status">Estado</string>
<string name="sync_SPr_status_subtitle">Estado: %s</string>
<string name="sync_status_loggedout">Sessão não iniciada</string>

@ -491,7 +491,6 @@
<string name="DLG_close">Закрыть</string>
<string name="DLG_error">Ой, похоже произошла ошибка! Подробности ниже:\n\n%s</string>
<string name="DLG_wait">Пожалуйста, подождите…</string>
<string name="SyP_label">Синхронизация и резервное копирование</string>
<string name="sync_SPr_group_status">Состояние</string>
<string name="sync_SPr_status_subtitle">Состояние: %s</string>
<string name="sync_status_loggedout">Вход не выполнен</string>

@ -485,7 +485,6 @@
<string name="DLG_close">Zapri</string>
<string name="DLG_error">Ups, zdi se, da je prišlo do napake! Tole se je zgodilo:\n\n%s</string>
<string name="DLG_wait">Prosimo, počakajte...</string>
<string name="SyP_label">Uskladitev &amp; varnostna kopija</string>
<string name="sync_status_loggedout">Niste prijavljeni</string>
<string name="sync_status_ongoing">Usklajevanje poteka...</string>
<string name="sync_status_success">Najnovejše usklajevanje:\n%s</string>

@ -473,7 +473,6 @@ och återställer dina aktuella uppgifter från en backup
<string name="DLG_close">Stäng</string>
<string name="DLG_error">Oj, det uppstod ett fel! Detta hände:\n\n%s</string>
<string name="DLG_wait">Var god vänta...</string>
<string name="SyP_label">Synkronisering</string>
<string name="sync_status_loggedout">Ej inloggad</string>
<string name="sync_status_ongoing">Synkronisering pågår...</string>
<string name="sync_status_success">Synkroniserades senast:\n%s</string>

@ -469,7 +469,6 @@
<string name="DLG_close">Закрити</string>
<string name="DLG_error">На жаль, схоже, сталася помилка! Ось що вийшло:\n\n%s</string>
<string name="DLG_wait">Будь ласка, зачекайте...</string>
<string name="SyP_label">Синхронізація і резерв. копіювання</string>
<string name="sync_SPr_group_status">Статус</string>
<string name="sync_SPr_status_subtitle">Статус: %s</string>
<string name="sync_status_loggedout">Не залогований</string>

@ -416,7 +416,6 @@
<string name="DLG_close">关闭</string>
<string name="DLG_error">糟糕,发生错误!状况是:\n\n%s</string>
<string name="DLG_wait">请稍候...</string>
<string name="SyP_label">同步和备份</string>
<string name="sync_SPr_group_status">状态</string>
<string name="sync_SPr_status_subtitle">状态:%s</string>
<string name="sync_status_loggedout">未登陆</string>

@ -460,7 +460,6 @@
<string name="DLG_close">關閉</string>
<string name="DLG_error">糟糕,發生錯誤!狀況是:\n\n%s</string>
<string name="DLG_wait">請稍候...</string>
<string name="SyP_label">同步和備份</string>
<string name="sync_SPr_group_status">狀態</string>
<string name="sync_SPr_status_subtitle">狀態:%s</string>
<string name="sync_status_loggedout">未登陸</string>

@ -53,11 +53,6 @@
<!-- Progress dialog shown when doing something slow -->
<string name="DLG_wait">Please wait...</string>
<!-- ====================================================== SyncProvider == -->
<!-- Sync Label: used in menu to denote synchronization -->
<string name="SyP_label">Sync &amp; backup</string>
<!-- ================================================== SyncPreferences == -->
<!-- Status Group Label -->

Loading…
Cancel
Save