4040import android .preference .PreferenceManager ;
4141import android .preference .PreferenceScreen ;
4242import android .preference .SwitchPreference ;
43+ import android .text .TextUtils ;
4344import android .view .Menu ;
4445import android .view .MenuInflater ;
4546import android .view .MenuItem ;
@@ -188,6 +189,10 @@ public void onCreate(Bundle savedInstanceState) {
188189 // More
189190 setupMoreCategory (titleColor );
190191
192+ // About
193+ // Not required in NMC
194+ //setupAboutCategory(appVersion);
195+
191196 // Data Privacy
192197 setupDataPrivacyCategory (titleColor );
193198
@@ -247,15 +252,103 @@ private void setupDevCategory(PreferenceScreen preferenceScreen) {
247252 }
248253 }
249254
255+ private void setupAboutCategory (String appVersion ) {
256+ final PreferenceCategory preferenceCategoryAbout = (PreferenceCategory ) findPreference ("about" );
257+ viewThemeUtils .files .themePreferenceCategory (preferenceCategoryAbout );
258+
259+ /* About App */
260+ Preference pAboutApp = findPreference ("about_app" );
261+ if (pAboutApp != null ) {
262+ pAboutApp .setTitle (String .format (getString (R .string .about_android ), getString (R .string .app_name )));
263+
264+ String buildNumber = getResources ().getString (R .string .buildNumber );
265+
266+ if (TextUtils .isEmpty (buildNumber )) {
267+ pAboutApp .setSummary (String .format (getString (R .string .about_version ), appVersion ));
268+ } else {
269+ pAboutApp .setSummary (String .format (getString (R .string .about_version_with_build ),
270+ appVersion ,
271+ buildNumber ));
272+ }
273+ }
274+
275+ // license
276+ boolean licenseEnabled = getResources ().getBoolean (R .bool .license_enabled );
277+ Preference licensePreference = findPreference ("license" );
278+ if (licensePreference != null ) {
279+ if (licenseEnabled ) {
280+ licensePreference .setSummary (R .string .prefs_gpl_v2 );
281+ licensePreference .setOnPreferenceClickListener (preference -> {
282+ DisplayUtils .startLinkIntent (this , R .string .license_url );
283+ return true ;
284+ });
285+ } else {
286+ preferenceCategoryAbout .removePreference (licensePreference );
287+ }
288+ }
289+
290+ // privacy
291+ boolean privacyEnabled = getResources ().getBoolean (R .bool .privacy_enabled );
292+ Preference privacyPreference = findPreference ("privacy" );
293+ if (privacyPreference != null ) {
294+ if (privacyEnabled && URLUtil .isValidUrl (getString (R .string .privacy_url ))) {
295+ privacyPreference .setOnPreferenceClickListener (preference -> {
296+ try {
297+ Uri privacyUrl = Uri .parse (getString (R .string .privacy_url ));
298+ String mimeType = MimeTypeUtil .getBestMimeTypeByFilename (privacyUrl .getLastPathSegment ());
299+
300+ Intent intent ;
301+ if (MimeTypeUtil .isPDF (mimeType )) {
302+ intent = new Intent (Intent .ACTION_VIEW , privacyUrl );
303+ DisplayUtils .startIntentIfAppAvailable (intent , this , R .string .no_pdf_app_available );
304+ } else {
305+ intent = new Intent (getApplicationContext (), ExternalSiteWebView .class );
306+ intent .putExtra (ExternalSiteWebView .EXTRA_TITLE ,
307+ getResources ().getString (R .string .privacy ));
308+ intent .putExtra (ExternalSiteWebView .EXTRA_URL , privacyUrl .toString ());
309+ intent .putExtra (ExternalSiteWebView .EXTRA_SHOW_SIDEBAR , false );
310+ intent .putExtra (ExternalSiteWebView .EXTRA_MENU_ITEM_ID , -1 );
311+ }
312+
313+ startActivity (intent );
314+ } catch (Exception e ) {
315+ Log_OC .e (TAG , "Could not parse privacy url" );
316+ preferenceCategoryAbout .removePreference (privacyPreference );
317+ }
318+ return true ;
319+ });
320+ } else {
321+ preferenceCategoryAbout .removePreference (privacyPreference );
322+ }
323+ }
324+
325+ // source code
326+ boolean sourcecodeEnabled = getResources ().getBoolean (R .bool .sourcecode_enabled );
327+ Preference sourcecodePreference = findPreference ("sourcecode" );
328+ if (sourcecodePreference != null ) {
329+ if (sourcecodeEnabled ) {
330+ sourcecodePreference .setOnPreferenceClickListener (preference -> {
331+ DisplayUtils .startLinkIntent (this , R .string .sourcecode_url );
332+ return true ;
333+ });
334+ } else {
335+ preferenceCategoryAbout .removePreference (sourcecodePreference );
336+ }
337+ }
338+ }
339+
340+ /**
341+ * NMC customization
342+ */
250343 private void setupDataPrivacyCategory (int titleColor ) {
251344 PreferenceCategory preferenceCategoryAbout = (PreferenceCategory ) findPreference ("data_protection" );
252- preferenceCategoryAbout .setTitle (StringUtils .getColoredSpan (getString (R .string .prefs_category_data_privacy ),
345+ preferenceCategoryAbout .setTitle (StringUtils .getColorSpan (getString (R .string .prefs_category_data_privacy ),
253346 titleColor ));
254347
255348 //privacy settings
256349 Preference privacySettingPreference = findPreference ("privacy_settings" );
257350 if (privacySettingPreference != null ) {
258- privacySettingPreference .setTitle (StringUtils .getColoredSpan (getString (R .string .privacy_settings ),
351+ privacySettingPreference .setTitle (StringUtils .getColorSpan (getString (R .string .privacy_settings ),
259352 titleColor ));
260353 privacySettingPreference .setOnPreferenceClickListener (preference -> {
261354
@@ -267,7 +360,7 @@ private void setupDataPrivacyCategory(int titleColor) {
267360 Preference privacyPolicyPreference = findPreference ("privacy_policy" );
268361
269362 if (privacyPolicyPreference != null ) {
270- privacyPolicyPreference .setTitle (StringUtils .getColoredSpan (getString (R .string .privacy_policy ),
363+ privacyPolicyPreference .setTitle (StringUtils .getColorSpan (getString (R .string .privacy_policy ),
271364 titleColor ));
272365 if (URLUtil .isValidUrl (getString (R .string .privacy_url ))) {
273366 privacyPolicyPreference .setOnPreferenceClickListener (preference -> {
@@ -303,7 +396,7 @@ private void setupDataPrivacyCategory(int titleColor) {
303396 // source code
304397 Preference sourcecodePreference = findPreference ("sourcecode" );
305398 if (sourcecodePreference != null ) {
306- sourcecodePreference .setTitle (StringUtils .getColoredSpan (getString (R .string .prefs_open_source ),
399+ sourcecodePreference .setTitle (StringUtils .getColorSpan (getString (R .string .prefs_open_source ),
307400 titleColor ));
308401 if (URLUtil .isValidUrl (getString (R .string .sourcecode_url ))) {
309402 sourcecodePreference .setOnPreferenceClickListener (preference -> {
@@ -324,13 +417,13 @@ private void setupDataPrivacyCategory(int titleColor) {
324417
325418 private void setUpInfoCategory (int titleColor ) {
326419 PreferenceCategory preferenceCategoryAbout = (PreferenceCategory ) findPreference ("info" );
327- preferenceCategoryAbout .setTitle (StringUtils .getColoredSpan (getString (R .string .prefs_category_info ),
420+ preferenceCategoryAbout .setTitle (StringUtils .getColorSpan (getString (R .string .prefs_category_info ),
328421 titleColor ));
329422 }
330423
331424 private void setupMoreCategory (int titleColor ) {
332425 PreferenceCategory preferenceCategoryMore = (PreferenceCategory ) findPreference ("more" );
333- preferenceCategoryMore .setTitle (StringUtils .getColoredSpan (getString (R .string .prefs_category_more ),
426+ preferenceCategoryMore .setTitle (StringUtils .getColorSpan (getString (R .string .prefs_category_more ),
334427 titleColor ));
335428
336429 setupAutoUploadPreference (preferenceCategoryMore , titleColor );
@@ -359,7 +452,7 @@ private void setupLoggingPreference(PreferenceCategory preferenceCategoryMore, i
359452 boolean loggerEnabled = getResources ().getBoolean (R .bool .logger_enabled ) || BuildConfig .DEBUG ;
360453 Preference pLogger = findPreference ("logger" );
361454 if (pLogger != null ) {
362- pLogger .setTitle (StringUtils .getColoredSpan (getString (R .string .logs_title ),
455+ pLogger .setTitle (StringUtils .getColorSpan (getString (R .string .logs_title ),
363456 titleColor ));
364457 if (loggerEnabled ) {
365458 pLogger .setOnPreferenceClickListener (preference -> {
@@ -513,7 +606,7 @@ private void removeE2E(PreferenceCategory preferenceCategoryMore) {
513606
514607 private void setupAutoUploadPreference (PreferenceCategory preferenceCategoryMore , int titleColor ) {
515608 Preference autoUpload = findPreference ("syncedFolders" );
516- autoUpload .setTitle (StringUtils .getColoredSpan (getString (R .string .drawer_synced_folders ),
609+ autoUpload .setTitle (StringUtils .getColorSpan (getString (R .string .drawer_synced_folders ),
517610 titleColor ));
518611 if (getResources ().getBoolean (R .bool .syncedFolder_light )) {
519612 preferenceCategoryMore .removePreference (autoUpload );
@@ -534,8 +627,8 @@ private void setupBackupPreference(int titleColor) {
534627 ? StringUtils .getColorSpan (getString (R .string .backup_title ), titleColor )
535628 : StringUtils .getColorSpan (getString (R .string .contact_backup_title ), titleColor ));
536629 pContactsBackup .setSummary (showCalendarBackup
537- ? StringUtils . getColorSpan ( getString (R .string .prefs_daily_backup_summary ), titleColor )
538- : StringUtils . getColorSpan ( getString (R .string .prefs_daily_contact_backup_summary ), titleColor ));
630+ ? getString (R .string .prefs_daily_backup_summary )
631+ : getString (R .string .prefs_daily_contact_backup_summary ));
539632 pContactsBackup .setOnPreferenceClickListener (preference -> {
540633 ContactsPreferenceActivity .startActivityWithoutSidebar (this );
541634 return true ;
@@ -568,7 +661,7 @@ private void setupCalendarPreference(PreferenceCategory preferenceCategoryMore)
568661
569662 private void setupDetailsCategory (int titleColor , PreferenceScreen preferenceScreen ) {
570663 PreferenceCategory preferenceCategoryDetails = (PreferenceCategory ) findPreference ("details" );
571- preferenceCategoryDetails .setTitle (StringUtils .getColoredSpan (getString (R .string .prefs_category_details ),
664+ preferenceCategoryDetails .setTitle (StringUtils .getColorSpan (getString (R .string .prefs_category_details ),
572665 titleColor ));
573666
574667 boolean fPassCodeEnabled = getResources ().getBoolean (R .bool .passcode_enabled );
@@ -592,7 +685,7 @@ private void setupDetailsCategory(int titleColor, PreferenceScreen preferenceScr
592685 private void setupShowMediaScanNotifications (PreferenceCategory preferenceCategoryDetails ,
593686 boolean fShowMediaScanNotifications , int titleColor ) {
594687 SwitchPreference mShowMediaScanNotifications = (SwitchPreference ) findPreference (PREFERENCE_SHOW_MEDIA_SCAN_NOTIFICATIONS );
595- mShowMediaScanNotifications .setTitle (StringUtils .getColoredSpan (getString (R .string .prefs_storage_path ),
688+ mShowMediaScanNotifications .setTitle (StringUtils .getColorSpan (getString (R .string .prefs_storage_path ),
596689 titleColor ));
597690 if (fShowMediaScanNotifications ) {
598691 preferenceCategoryDetails .removePreference (mShowMediaScanNotifications );
@@ -602,7 +695,7 @@ private void setupShowMediaScanNotifications(PreferenceCategory preferenceCatego
602695 private void setupHiddenFilesPreference (PreferenceCategory preferenceCategoryDetails ,
603696 boolean fShowHiddenFilesEnabled , int titleColor ) {
604697 showHiddenFiles = (ThemeableSwitchPreference ) findPreference ("show_hidden_files" );
605- showHiddenFiles .setTitle (StringUtils .getColoredSpan (getString (R .string .prefs_show_hidden_files ),
698+ showHiddenFiles .setTitle (StringUtils .getColorSpan (getString (R .string .prefs_show_hidden_files ),
606699 titleColor ));
607700 if (fShowHiddenFilesEnabled ) {
608701 showHiddenFiles .setOnPreferenceClickListener (preference -> {
@@ -618,7 +711,7 @@ private void setupLockPreference(PreferenceCategory preferenceCategoryDetails,
618711 boolean passCodeEnabled ,
619712 boolean deviceCredentialsEnabled , int titleColor ) {
620713 lock = (ListPreference ) findPreference (PREFERENCE_LOCK );
621- lock .setTitle (StringUtils .getColoredSpan (getString (R .string .prefs_lock ),
714+ lock .setTitle (StringUtils .getColorSpan (getString (R .string .prefs_lock ),
622715 titleColor ));
623716 if (lock != null && (passCodeEnabled || deviceCredentialsEnabled )) {
624717 ArrayList <String > lockEntries = new ArrayList <>(3 );
@@ -669,7 +762,7 @@ private void setupLockPreference(PreferenceCategory preferenceCategoryDetails,
669762 private void setupAutoUploadCategory (int titleColor , PreferenceScreen preferenceScreen ) {
670763 PreferenceCategory preferenceCategorySyncedFolders =
671764 (PreferenceCategory ) findPreference ("synced_folders_category" );
672- preferenceCategorySyncedFolders .setTitle (StringUtils .getColoredSpan (getString (R .string .drawer_synced_folders ),
765+ preferenceCategorySyncedFolders .setTitle (StringUtils .getColorSpan (getString (R .string .drawer_synced_folders ),
673766 titleColor ));
674767
675768 if (!getResources ().getBoolean (R .bool .syncedFolder_light )) {
@@ -679,7 +772,7 @@ private void setupAutoUploadCategory(int titleColor, PreferenceScreen preference
679772 final ArbitraryDataProvider arbitraryDataProvider = new ArbitraryDataProviderImpl (this );
680773
681774 final SwitchPreference pUploadOnWifiCheckbox = (SwitchPreference ) findPreference ("synced_folder_on_wifi" );
682- pUploadOnWifiCheckbox .setTitle (StringUtils .getColoredSpan (getString (R .string .auto_upload_on_wifi ),
775+ pUploadOnWifiCheckbox .setTitle (StringUtils .getColorSpan (getString (R .string .auto_upload_on_wifi ),
683776 titleColor ));
684777 pUploadOnWifiCheckbox .setChecked (
685778 arbitraryDataProvider .getBooleanValue (user , SYNCED_FOLDER_LIGHT_UPLOAD_ON_WIFI ));
@@ -708,7 +801,7 @@ private void setupAutoUploadCategory(int titleColor, PreferenceScreen preference
708801
709802 private void setUpServiceCategory (int titleColor ) {
710803 PreferenceCategory preferenceCategoryService = (PreferenceCategory ) findPreference ("service" );
711- preferenceCategoryService .setTitle (StringUtils .getColoredSpan (getString (R .string .prefs_category_service ),
804+ preferenceCategoryService .setTitle (StringUtils .getColorSpan (getString (R .string .prefs_category_service ),
712805 titleColor ));
713806 setupHelpPreference (titleColor );
714807 setupImprintPreference (titleColor );
@@ -717,7 +810,7 @@ private void setUpServiceCategory(int titleColor) {
717810 private void setupHelpPreference (int titleColor ) {
718811 Preference pHelp = findPreference ("help" );
719812 if (pHelp != null ) {
720- pHelp .setTitle (StringUtils .getColoredSpan (getString (R .string .prefs_help ),
813+ pHelp .setTitle (StringUtils .getColorSpan (getString (R .string .prefs_help ),
721814 titleColor ));
722815 pHelp .setOnPreferenceClickListener (preference -> {
723816 String helpWeb = getString (R .string .url_help );
@@ -733,7 +826,7 @@ private void setupHelpPreference(int titleColor) {
733826 private void setupImprintPreference (int titleColor ) {
734827 Preference pImprint = findPreference ("imprint" );
735828 if (pImprint != null ) {
736- pImprint .setTitle (StringUtils .getColoredSpan (getString (R .string .prefs_imprint ),
829+ pImprint .setTitle (StringUtils .getColorSpan (getString (R .string .prefs_imprint ),
737830 titleColor ));
738831 pImprint .setOnPreferenceClickListener (preference -> {
739832 String imprintWeb = getString (R .string .url_imprint );
@@ -792,21 +885,21 @@ private void disableLock(String lock) {
792885
793886 private void setupAccountInfoCategory (int titleColor ) {
794887 PreferenceCategory preferenceCategoryAccountInfo = (PreferenceCategory ) findPreference ("account_info" );
795- preferenceCategoryAccountInfo .setTitle (StringUtils .getColoredSpan (getString (R .string .prefs_category_account_info ),
888+ preferenceCategoryAccountInfo .setTitle (StringUtils .getColorSpan (getString (R .string .prefs_category_account_info ),
796889 titleColor ));
797890
798891 Preference autoUpload = findPreference ("user_name" );
799- autoUpload .setTitle (StringUtils .getColoredSpan (accountManager .getUser ().toOwnCloudAccount ().getDisplayName (),
892+ autoUpload .setTitle (StringUtils .getColorSpan (accountManager .getUser ().toOwnCloudAccount ().getDisplayName (),
800893 titleColor ));
801894 }
802895
803896 private void setupGeneralCategory (int titleColor ) {
804897 PreferenceCategory preferenceCategoryGeneral = (PreferenceCategory ) findPreference ("general" );
805- preferenceCategoryGeneral .setTitle (StringUtils .getColoredSpan (getString (R .string .prefs_category_general ),
898+ preferenceCategoryGeneral .setTitle (StringUtils .getColorSpan (getString (R .string .prefs_category_general ),
806899 titleColor ));
807900
808901 prefStoragePath = (ListPreference ) findPreference (AppPreferencesImpl .STORAGE_PATH );
809- prefStoragePath .setTitle (StringUtils .getColoredSpan (getString (R .string .prefs_storage_path ),
902+ prefStoragePath .setTitle (StringUtils .getColorSpan (getString (R .string .prefs_storage_path ),
810903 titleColor ));
811904 if (prefStoragePath != null ) {
812905 StoragePoint [] storageOptions = DataStorageProvider .getInstance ().getAvailableStoragePoints ();
0 commit comments