Please select another one.]]>
+ Open in Alfresco Text Editor
+
+
\ No newline at end of file
From 1e82456f95efa40386a370c2a1783885a2606dd0 Mon Sep 17 00:00:00 2001
From: jmpascal
Date: Tue, 5 Apr 2016 11:21:22 +0200
Subject: [PATCH 07/25] ANDROID-284
---
.../fragments/help/HelpDialogFragment.java | 2 +-
.../src/main/res/values-de/strings.xml | 45 +++++----
.../src/main/res/values-es/strings.xml | 21 ++--
.../src/main/res/values-fr/strings.xml | 51 +++++-----
.../src/main/res/values-it/strings.xml | 97 +++++++++----------
.../src/main/res/values-ja/strings.xml | 29 +++---
.../src/main/res/values-zh-rCN/strings.xml | 5 +-
.../src/main/res/values/strings.xml | 5 +-
.../main/res/values-de/samsung_strings.xml | 2 +-
.../main/res/values-fr/samsung_strings.xml | 2 +-
.../main/res/values-it/samsung_strings.xml | 8 +-
.../main/res/values-ja/samsung_strings.xml | 2 +-
.../main/res/values-it/scansnap_strings.xml | 33 ++++---
.../main/res/values-de/alfresco_strings.xml | 22 ++---
.../main/res/values-es/alfresco_strings.xml | 32 +++---
.../main/res/values-fr/alfresco_strings.xml | 16 +--
.../main/res/values-it/alfresco_strings.xml | 62 ++++++------
.../main/res/values-ja/alfresco_strings.xml | 10 +-
18 files changed, 220 insertions(+), 224 deletions(-)
diff --git a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/help/HelpDialogFragment.java b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/help/HelpDialogFragment.java
index b2f7e444..79b22228 100644
--- a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/help/HelpDialogFragment.java
+++ b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/help/HelpDialogFragment.java
@@ -208,7 +208,7 @@ public void onStop()
// ///////////////////////////////////////////////////////////////////////////
private String getUrl(FragmentActivity activity)
{
- String prefix = activity.getString(R.string.docs_prefix);
+ String prefix = activity.getString(R.string.asset_folder_prefix);
String urlValue = null;
if (TextUtils.isEmpty(prefix))
{
diff --git a/alfresco-mobile-android/src/main/res/values-de/strings.xml b/alfresco-mobile-android/src/main/res/values-de/strings.xml
index 6ce671aa..0abccd17 100644
--- a/alfresco-mobile-android/src/main/res/values-de/strings.xml
+++ b/alfresco-mobile-android/src/main/res/values-de/strings.xml
@@ -106,7 +106,7 @@
SitesMeine DateienFreigegebene Dateien
- Site-Suche
+ Site-FinderAlle SitesMeine SitesFavoriten-Sites
@@ -165,7 +165,6 @@
de
- Version
@@ -245,19 +244,19 @@
Beitritt beantragenAbmeldenFavorit
- Markierung als Favorit aufheben
+ Aus Favoriten entfernenSie sind nun Mitglied von \"%s\".Sie haben sich bei \"%s\" abgemeldet.\"%s\" ist jetzt ein Favorit.
- Die Markierung von \"%s\" als Favorit wurde aufgehoben.
+ \"%s\" wurde aus Ihren Favoriten entfernt.Sie haben den Beitritt zu \"%s\" beantragt.Liste ausstehender AnfragenAnfrage, der Site %s beizutreten, verwerfenIhre Anfrage, \"%s\" beizutreten, wurde verworfen.Aufgrund eines Problems konnten Sie der Site \"%s\" nicht beitreten.Aufgrund eines Problems konnten Sie sich nicht bei der Site \"%s\" abmelden.
- Aufgrund eines Problems konnten Sie die Site \"%s\" nicht als Favorit festlegen.
- Aufgrund eines Problems konnten Sie die Markierung der Site \"%s\" als Favorit nicht aufheben.
+ Aufgrund eines Problems konnte die Site \"%s\" nicht zu Ihren Favoriten hinzugefügt werden.
+ Aufgrund eines Problems konnte die Site \"%s\" nicht aus Ihren Favoriten entfernt werden.Mit Alfresco Mobile hochladen
@@ -452,7 +451,7 @@
SynchronisierungswarnungSynchronisierungsfehler Sie sind im Begriff, %s über eine Carrier-Verbindung zu synchronisieren. Möchten Sie fortfahren?]]>
- Sie versuchen, %1$s zu synchronisieren; nur %2$s sind verfügbar. Sie müssen Speicherplatz auf Ihrem Gerät freigeben oder für einige Inhalte die Markierung als Favoriten aufheben.]]>
+ Sie versuchen, %1$s zu synchronisieren, es sind jedoch nur %2$s verfügbar. Sie müssen Speicherplatz auf Ihrem Gerät freigeben oder Inhalte aus Ihren Favoriten entfernen.]]> Sie sind im Begriff, %1$s zu synchronisieren; nur noch %2$s auf Ihrem Gerät. Möchten Sie fortfahren?]]>Das Dokument ist auf Ihrem Gerät nicht verfügbar.
@@ -467,7 +466,7 @@
"Gefällt mir"-Vorgang abgeschlossen"Gefällt mir"-Vorgang abgeschlossenFavorit
- Markierung als Favorit aufheben
+ Aus Favoriten entfernenAusstehend
@@ -541,7 +540,7 @@
ZusammenfassungKontaktinformationenE-Mail
- Festnetz
+ TelefonHandySkypeIM
@@ -552,7 +551,7 @@
NameAdressePostleitzahl
- Festnetz
+ TelefonFaxE-MailAnruf
@@ -606,7 +605,7 @@
Aufgaben anzeigenValidieren
- Geringe Priorität
+ Niedrige PrioritätMittlere PrioritätHohe Prioritäthat den Inhalt genehmigt]]>
@@ -619,8 +618,8 @@
AntwortFertigAufgabe wird abgeschlossen
- Erneut zuweisen
- Diese Aufgabe erneut zuweisen an…
+ Neu zuweisen
+ Diese Aufgabe neu zuweisen an…AnspruchAn Pool freigebenPriorität
@@ -631,7 +630,7 @@
Aktive Aufgaben
- Von mir gestartete Aufgaben
+ Von mir begonnene AufgabenAbgeschlossene AufgabenAufgaben mit hoher PrioritätHeute fällige Aufgaben
@@ -655,7 +654,7 @@
{0,choice,0#Keine zugewiesenen Personen|1#1 zugewiesene Person|1<{0} zugewiesene Personen}Zugewiesene PersonenZugewiesene Personen auswählen…
- {0,choice,0#Keine genehmigende Personen|1#1 von 1 genehmigende Person|1<%s von {0} genehmigenden Personen}
+ {0,choice,0#Keine Genehmiger|1#1 von 1 Genehmiger|1<%s von {0} Genehmigern}{0,choice,0#Keine Anhänge|1#1 Anhang|1<{0} Anhänge}Anhänge auswählen…Anhänge
@@ -665,16 +664,16 @@
Keinen Inhalt angehängtPrioritätE-Mail-Benachrichtigung
- Genehmigende Personen
- Keine genehmigenden Personen
+ Genehmiger
+ Keine GenehmigerProzess wird gestartetAufgabe erstellenZu erledigende AufgabenEiner Person eine Aufgabe zuweisenÜberprüfen und genehmigenWeisen Sie einer oder mehreren Personen eine Aufgabe zu, um Inhalt zu überprüfen und zu genehmigen.
- Erneute Zuweisung wird durchgeführt…
- Erneute Zuweisung abgeschlossen
+ Neuzuweisung wird durchgeführt…
+ Neuzuweisung abgeschlossenZugewiesene Personen auswählenFälligkeitsdatum auswählenAnhänge auswählen
@@ -684,9 +683,9 @@
Ad-hoc-Workflow
- Gleichzeitige Überprüfung und Genehmigung
+ Paralleles Überprüfen und GenehmigenÜberprüfen und genehmigen
- Zusammengefasste Überprüfung und Genehmigung
+ Gebündeltes Überprüfen und GenehmigenSuche
@@ -811,7 +810,7 @@
Keine Favoriten gefundenSie können Dateien und Ordner zu Ihren Favoriten hinzufügen, um schneller darauf zugreifen zu können.Sie haben noch keine Sites hinzugefügt
- Über die Site-Suche können Sie nach Sites suchen und sie hinzufügen.
+ Über Site-Finder können Sie nach Sites suchen und sie hinzufügen.Keine Favoriten gefundenSie können Sites zu Ihren Favoriten hinzufügen, um schneller darauf zugreifen zu können.Keine Sites gefunden
@@ -827,7 +826,7 @@
Keine Sites verfügbar
- Keine Versionshistorie verfügbar
+ Kein Versionsverlauf verfügbarKeine Sitzung verfügbarKeine Aktivitäten gefundenKein Tag gefunden
diff --git a/alfresco-mobile-android/src/main/res/values-es/strings.xml b/alfresco-mobile-android/src/main/res/values-es/strings.xml
index ddd0e816..07d7a562 100644
--- a/alfresco-mobile-android/src/main/res/values-es/strings.xml
+++ b/alfresco-mobile-android/src/main/res/values-es/strings.xml
@@ -165,7 +165,6 @@
es
- Versión
@@ -344,7 +343,7 @@
Su administrador de Alfresco ha deshabilitado esta función.ComentariosEnviar diagnósticos
- Para ayudarnos a mejorar Alfresco Mobile, recopilamos datos de diagnósticos técnicos anónimos. Puede desactivar esta opción si lo prefiere.
+ Para ayudarnos a mejorar Alfresco Mobile, recogemos datos de diagnóstico técnicos de forma anónima. Puede desactivar esta opción si lo prefiere.Enviar comentarios
@@ -576,8 +575,8 @@
Perfil de %s
- Sin tareas
- Sin adjuntos
+ Ninguna tarea
+ Ningún adjuntoAdjunto(s)Crear tareaRespuesta
@@ -593,7 +592,7 @@
MañanaPróximos 7 díasVencido
- Sin fecha
+ Ninguna fechaPrioridadBajaMedia
@@ -606,9 +605,9 @@
Ver tareasValidar
- Prioridad baja
+ Baja prioridadPrioridad media
- Prioridad alta
+ Alta prioridadaprobó el contenido]]>rechazó el contenido]]>y comentó:
@@ -633,7 +632,7 @@
Tareas activasTareas que he iniciadoTareas completadas
- Tareas de prioridad alta
+ Tareas de alta prioridadTareas que vencen hoyTareas vencidasTareas que se me han asignado
@@ -683,14 +682,14 @@
- Flujo de trabajo adhoc
- Revisión y aprobación paralelas
+ Flujo de trabajo ad hoc
+ Revisión y aprobación en paraleloRevisión y aprobaciónRevisión y aprobación en grupoBuscar
- Gente
+ PersonasFicherosCarpetasSitio
diff --git a/alfresco-mobile-android/src/main/res/values-fr/strings.xml b/alfresco-mobile-android/src/main/res/values-fr/strings.xml
index 7d213159..acab1730 100644
--- a/alfresco-mobile-android/src/main/res/values-fr/strings.xml
+++ b/alfresco-mobile-android/src/main/res/values-fr/strings.xml
@@ -165,7 +165,6 @@
fr
- Version
@@ -243,11 +242,11 @@
Aucun site trouvéRejoindreDemander à rejoindre
- Quitter
+ Se désabonnerFavori
- Retirer des favoris
+ Supprimer des favorisVous êtes maintenant membre de \"%s\".
- Vous avez quitté \"%s\".
+ Vous vous êtes désabonné de \"%s\".\"%s\" fait maintenant partie des favoris.\"%s\" ne figure plus dans les favoris.Vous avez demandé à rejoindre \"%s\"
@@ -255,13 +254,13 @@
Annuler votre demande à rejoindre le site \"%s\"Votre demande à rejoindre \"%s\" a été annulée.Un problème vous a empêché de rejoindre le site \"%s\".
- Un problème vous a empêché de quitter le site \"%s\".
+ Un problème vous a empêché de vous désabonner du site \"%s\".Un problème vous a empêché d\'inclure le site \"%s\" dans les favoris.Un problème vous a empêché de supprimer le site \"%s\" de vos favoris.Ajouter avec Alfresco Mobile
- Nom du fichier
+ Nom de fichierFichierCompteDossier Ajout
@@ -467,7 +466,7 @@
J\'aime effectuéJ\'aime terminéFavori
- Retirer des favoris
+ Supprimer des favorisEn attente
@@ -522,7 +521,7 @@
Le fichier a été modifié. Toutes vos modifications non enregistrées seront perdues.]]>Enregistrer
- Ignorer
+ AnnulerLe fichier a été enregistré.EncodageTaille du texte
@@ -539,7 +538,7 @@
Intitulé du posteEmplacementRécapitulatif
- Informations du contact
+ Informations de contactE-mailTéléphoneMobile
@@ -555,7 +554,7 @@
TéléphoneFaxE-mail
- Appeler
+ AppelSkypeDémarrer un chatDémarrer un appel
@@ -597,8 +596,8 @@
PrioritéBasseMoyenne
- Élevée
- Acteur
+ Elevée
+ Personne assignéeMoiToutNon assignée
@@ -622,7 +621,7 @@
RéassignerRéassigner cette tâche à…Récupérer
- Remettre dans le pot commun
+ Replacer dans le pot communPrioritéType de tâcheInitiateur de la tâche
@@ -631,7 +630,7 @@
Tâches actives
- Tâches que j\'ai démarrées
+ Tâches que j\'ai initiéesTâches terminéesTâches de priorité élevéeTâches pour aujourd\'hui
@@ -641,22 +640,22 @@
Envoyer pour révision
- Choisir un type de tâche
+ Choisir le type de tâcheCréer une tâche
- Choisir les éléments attachés
- Démarrer la tâche
+ Sélectionner les pièces jointes
+ Démarrer le processusTitreNouveau titre de tâche (requis)
- À échéance le
- Acteurs
+ A échéance le
+ Personnes assignéesDiagramme du processusVeuillez réviser %sVeuillez réviser ce contenu
- {0,choice,0#Aucun acteur|1#1 acteur|1<{0} acteurs}
- Acteurs
- Sélectionner les acteurs…
+ {0,choice,0#Aucune personne assignée|1#1 personne assignée|1<{0} personnes assignées}
+ Personnes assignées
+ Sélectionner les personnes assignées…{0,choice,0#Aucun approbateur|1#1 sur 1 approbateur|1<%s sur {0} approbateurs}
- {0,choice,0#Aucun pièce jointe|1#1 pièce jointe|1<{0} pièces jointes}
+ {0,choice,0#Aucune pièce jointe|1#1 pièce jointe|1<{0} pièces jointes}Sélectionner les pièces jointes…Pièces jointes(aucun message)
@@ -675,7 +674,7 @@
Assigner une tâche à une ou plusieurs personnes pour revoir et approuver les contenus.Réaffectation en cours…Réaffectation terminée
- Sélectionner les acteurs
+ Sélectionner les personnes assignéesSélectionner une date d\'échéanceSélectionner les pièces jointesSupprimer un approbateur
@@ -780,7 +779,7 @@
Chargement de la configuration en cours...ConnexionLa configuration de votre application semble incorrecte. Si le problème persiste, contactez votre administrateur. Erreur : %s]]>
- Ignorer
+ AnnulerNom de fichier non valideMes tâchesVeuillez patienter
@@ -827,7 +826,7 @@
Aucun site disponible
- Aucun historique de version disponible
+ Aucun historique des versions disponibleAucune session disponibleAucune activité trouvéeAucun tag trouvé
diff --git a/alfresco-mobile-android/src/main/res/values-it/strings.xml b/alfresco-mobile-android/src/main/res/values-it/strings.xml
index 864e8f80..0ab88763 100644
--- a/alfresco-mobile-android/src/main/res/values-it/strings.xml
+++ b/alfresco-mobile-android/src/main/res/values-it/strings.xml
@@ -114,7 +114,7 @@
CercaDownloadFile locali
- Informazioni su
+ InformazioniImpostazioniAccountViste
@@ -157,15 +157,14 @@
Formato file non supportato. È necessario installare un\'applicazione in grado di leggere il formato.
- Non mi piace più
- Impossibile recuperare il tag Mi piace/Non mi piace più per questo contenuto.
+ Non mi piace
+ Impossibile recuperare il tag Mi piace/Non mi piace per questo contenuto.ContinuaSalvaCondividi contenuto con…it
- Versione
@@ -173,9 +172,9 @@
SDK:
Alfresco Mobile si connette ad Alfresco in the Cloud e on premise (v3.4 e successive) per garantire un accesso sicuro ai contenuti aziendali sempre e ovunque.
+
Alfresco Mobile si connette ad Alfresco in the Cloud e on premise (v. 3.4 e successive) per garantire un accesso sicuro ai contenuti aziendali sempre e ovunque.
-
Alfresco Mobile si connette al repository Alfresco con le credenziali di accesso ad Alfresco (su HTTP o HTTPS) e gestisce l\'accesso degli utenti in base ai permessi utente.
+
Alfresco Mobile si connette al repository Alfresco tramite le credenziali di accesso di Alfresco (su HTTP o HTTPS) e gestisce gli accessi in base ai permessi degli utenti.
]]>
@@ -209,14 +208,14 @@
Apri Google Play StoreCrea…Crea…
- Immetti qui il nome del file
+ Digita qui il nome del fileNome già utilizzato.Completa azione conNessuna applicazione disponibile
- Non si dispone di un\'applicazione per creare questo tipo di file.
+ Non hai un\'applicazione per creare questo tipo di file.Anteprima non disponibile.La scheda SD deve essere accessibile per l\'operazione
- Accedere prima all\'account Alfresco
+ Accedi prima all\'account AlfrescoAggiungi qui un commento…
@@ -235,28 +234,28 @@
Apri come…Immagine
- File audio
- File video
+ Audio
+ VideoDocumento di testoNessun sito trovatoPartecipa
- Richiedi partecipazione
+ Posso partecipare?AbbandonaPreferitoRimuovi dai preferitiOra sei membro di \"%s\".Hai abbandonato \"%s\".
- \"%s\" è ora un preferito.
+ \"%s\" è stato aggiunto ai preferiti.\"%s\" è stato rimosso dai preferiti.
- Hai richiesto la partecipazione a \"%s\"
+ Hai richiesto di partecipare a \"%s\"Elenco di richieste in sospeso
- Annulla la richiesta di partecipazione al sito %s
- La richiesta di partecipazione a \"%s\" è stata annullata.
+ Annulla la richiesta di partecipare al sito %s
+ La richiesta di partecipare a \"%s\" è stata annullata.Impossibile partecipare al sito \"%s\" a causa di un problema.Impossibile abbandonare il sito \"%s\" a causa di un problema.
- Impossibile inserire il sito \"%s\" tra i preferiti a causa di un problema.
+ Impossibile aggiungere il sito \"%s\" ai preferiti a causa di un problema.Impossibile rimuovere il sito \"%s\" dai preferiti a causa di un problema.
@@ -285,9 +284,9 @@
Scadenza{0,choice,0#Dopo 0 minuti|1#Dopo 1 minuto|1<Dopo {0} minuti}Cancella dati
- Cancella tutti i dati di Alfresco Mobile da questo dispositivo dopo 10 tentativi non riusciti di immissione del passcode.
+ Cancella tutti i dati di Alfresco Mobile dal dispositivo dopo 10 tentativi non riusciti di immissione del passcode.Immetti nuovo passcode
- Immetti nuovamente il passcode
+ Immetti di nuovo il passcodeI passcode non corrispondono.Passcode errato.Tutti i dati locali sono stati cancellati.
@@ -319,7 +318,7 @@
ImpostazioniImpostazioni Enterprise
- La protezione dati rende l\'intero contenuto scaricato leggibile solo dall\'applicazione Alfresco. (solo clienti Enterprise)
+ La protezione dati rende l\'intero contenuto scaricato leggibile solo dall\'applicazione Alfresco (solo Enterprise)Protezione datiLinkAlfresco
@@ -344,7 +343,7 @@
Funzione disabilitata dall\'amministratore Alfresco.CommentiInvia diagnostica
- Al fine di migliorare Alfresco Mobile, vengono raccolti dati tecnici anonimi relativi alla diagnostica. Disattiva l\'opzione, se lo preferisci.
+ Al fine di migliorare Alfresco Mobile, raccogliamo dati tecnici di diagnostica in modo anonimo. L\'opzione può essere disattivata.Invia commenti
@@ -377,9 +376,9 @@
Disattiva sincronizzazioneDisattivare la sincronizzazione? Tutti i contenuti sincronizzati saranno rimossi dal dispositivo.]]>Errori di sincronizzazione
- Il contenuto è stato desincronizzato%s perché modificato. Sincronizzare la versione modificata con il server o salvarla nella cartella \"Download\". ]]>
+ Il contenuto è stato desincronizzato%s perché modificato. Sincronizza la versione modificata con il server o salvala nella cartella \"Download\". ]]>%s è stato cancellato dal server, ma una copia è stata salvata nella cartella \"Download\".]]>
- Non si dispone dei permessi necessari per caricare la versione modificata di %s. È possibile salvarla nella cartella \"Download\", oppure sovrascriverla con la versione presente sul server, che annullerà le modifiche.]]>
+ Non hai i permessi necessari per caricare la versione modificata di %s. Puoi salvarla nella cartella \"Download\" o sovrascriverla con la versione presente sul server, che annullerà le modifiche.]]>Errori di sincronizzazioneSincronizzaSovrascrivi
@@ -396,20 +395,20 @@
DesincronizzaPreferitiMantieni file sincronizzati
- Sarà possibile visualizzare e modificare i file sincronizzati anche offline.
+ Per visualizzare e modificare i file sincronizzati anche offline.La sincronizzazione è stata migliorata!
- È ora possibile sincronizzare diversi file su diversi dispositivi. È sufficiente trovare un file e sincronizzarlo!
- È possibile visualizzare e modificare i file sincronizzati anche offline. Quando si è di nuovo online, i file verranno sincronizzati automaticamente con Alfresco.
- E per i file già contrassegnati come preferiti?
+ Ora puoi sincronizzare diversi file su diversi dispositivi. È sufficiente trovare un file e sincronizzarlo!
+ Puoi visualizzare e modificare i file sincronizzati anche offline. Quando sei di nuovo online, i file verranno sincronizzati automaticamente con Alfresco.
+ E per i file già aggiunti ai preferiti?Nessun problema, tutti i file continuano a essere sincronizzati!
- Se d\'ora in poi si contrassegnano file come preferiti, verranno inseriti nella scheda Preferiti, ma sarà necessario sincronizzarli per aprirli offline.
+ Se d\'ora in poi aggiungi dei file ai preferiti, verranno inseriti nella scheda Preferiti, ma dovrai sincronizzarli per aprirli offline.Dove si trovano i file sincronizzati?Tutti i file sincronizzati si trovano nella nuova vista Contenuti sincronizzati.Contenuti sincronizzatiOK, chiaro.Maggiori informazioni
- Salta
+ IgnoraContinua
@@ -451,9 +450,9 @@
Avviso di sincronizzazioneErrore di sincronizzazione
- Si sta per eseguire la sincronizzazione di %s su una connessione portante. Continuare?]]>
- Si sta tentando di sincronizzare %1$s, ma sono disponibili solo %2$s. Liberare un po\' di spazio sul dispositivo o rimuovere alcuni contenuti dai preferiti.]]>
- Si sta per eseguire la sincronizzazione di %1$s, ma sul dispositivo rimane soltanto %2$s. Continuare?]]>
+ Stai per sincronizzare %s su una connessione portante. Continuare?]]>
+ Stai tentando di sincronizzare %1$s, ma sono disponibili solo %2$s. Libera spazio sul dispositivo o rimuovi alcuni contenuti dai preferiti.]]>
+ Stai per sincronizzare %1$s, ma sul dispositivo rimangono solo %2$s. Continuare?]]>Questo documento non è disponibile sul dispositivo.
@@ -539,7 +538,7 @@
ProfessioneLuogoRiepilogo
- Informazioni di contatto
+ ContattiE-mailTelefonoCellulare
@@ -555,7 +554,7 @@
TelefonoFaxE-mail
- Chiama
+ ChiamataSkypeAvvia chatAvvia telefonata
@@ -647,7 +646,7 @@
Avvia processoTitoloTitolo del nuovo compito (obbligatorio)
- Scade il
+ ScadenzaAssegnatariDiagramma del processoEsaminare %s
@@ -670,7 +669,7 @@
Avvio del processoCrea compitoDa fare
- Assegna compito a una persona
+ Assegna un compito a una personaEsamina e approvaAssegna un compito a una o più persone per l\'esame e l\'approvazione di contenuti.Riassegnazione in corso…
@@ -684,9 +683,9 @@
Workflow ad hoc
- Esame e approvazione in parallelo
- Esame e approvazione
- Esame e approvazione in pool
+ Esamina e approva in parallelo
+ Esamina e approva
+ Esamina e approva in poolCerca
@@ -726,7 +725,7 @@
VideoMusicaTesto
- Compilare almeno un campo
+ Compila almeno un campoSeleziona una personaSeleziona una data daSeleziona una data a
@@ -779,13 +778,13 @@
Gestito dall\'amministratoreCaricamento configurazione...Accedi
- La configurazione dell\'applicazione è errata. Se il problema persiste, contattare l\'amministratore. Errore: %s]]>
+ La configurazione dell\'applicazione è errata. Se il problema persiste, contatta l\'amministratore. Errore: %s]]>EliminaNome file non validoI miei compitiAttendereAlfresco
- Impossibile accedere alla sezione Aiuto di Alfresco Mobile perché si è offline. Riprovare quando si è di nuovo online.]]>
+ Impossibile accedere alla sezione Aiuto di Alfresco Mobile perché sei offline. Riprova quando sei di nuovo online.]]>Questa funzione non è supportata o è stata disabilitata sul dispositivo.
@@ -809,17 +808,17 @@
@string/nodebrowser_empty_ro_titleUtilizza + per aggiungere file alla cartella.Nessun preferito trovato
- È possibile inserire file e cartelle tra i preferiti per accedervi rapidamente.
+ È possibile aggiungere file e cartelle ai preferiti per accedervi rapidamente.Non hai ancora aderito a nessun sito
- Apri Ricerca sito per trovare nuovi siti a cui è possibile aderire.
+ Apri Ricerca sito per trovare nuovi siti a cui puoi partecipare.Nessun preferito trovato
- È possibile inserire i siti tra i preferiti per accedervi rapidamente.
+ È possibile aggiungere siti ai preferiti per accedervi rapidamente.Nessun sito trovatoProva a utilizzare un termine di ricerca diverso.In questo momento non hai alcun compitoCrea un compito da assegnare a te stesso o a qualcun altro.Non ci sono attività da mostrare
- È possibile aderire a nuovi siti Alfresco per consultare le attività dei colleghi.
+ È possibile aderire a nuovi siti Alfresco per visualizzare le attività dei colleghi.Nessun risultato trovatoProva a utilizzare un termine di ricerca diverso.Nessun utente trovato
@@ -827,7 +826,7 @@
Nessun sito disponibile
- Nessuna cronologia delle versioni disponibile
+ Nessuna cronologia versioni disponibileNessuna sessione disponibileNessuna attività trovataNessun tag trovato
@@ -902,9 +901,9 @@
Trasformazione non supportataQuesto tipo di campo di input non è supportato sul dispositivo mobileModulo non supportato
- Questo modulo contiene uno o più campi obbligatori che non sono attualmente supportati sui dispositivi mobili. Utilizzare l\'app web per questa operazione.]]>
+ Questo modulo contiene uno o più campi obbligatori che non sono attualmente supportati sui dispositivi mobili. Utilizza l\'app web per questa operazione.]]>Link non supportato
- Questi contenuti non provengono da una fonte supportata. Selezionare altri contenuti.]]>
+ Questi contenuti non provengono da una fonte supportata. Seleziona altri contenuti.]]>
diff --git a/alfresco-mobile-android/src/main/res/values-ja/strings.xml b/alfresco-mobile-android/src/main/res/values-ja/strings.xml
index 3da8c961..01b491be 100644
--- a/alfresco-mobile-android/src/main/res/values-ja/strings.xml
+++ b/alfresco-mobile-android/src/main/res/values-ja/strings.xml
@@ -157,15 +157,14 @@
このファイル形式は使用できません。 このファイルを読み取ることができるアプリをインストールしてください。
- [いいね !] の取り消し
- このコンテンツの[いいね!]/[いいね!の取り消し] タグを取得できませんでした。
+ [いいね!] の削除
+ このコンテンツの[いいね!]/[[いいね!] の削除] タグを取得できませんでした。次へ保存コンテンツの共有…ja
- バージョン
@@ -173,7 +172,7 @@
SDK:
Alfresco Mobile は Alfresco in the Cloud とオンプレミスの Alfresco サーバー (3.4 以上) に接続して、外出先からでも社内のコンテンツに安全にアクセスできるようにします。
+
Alfresco Mobile は Alfresco in the Cloud とオンプレミスの Alfresco サーバー (3.4 以上) に接続して、社内のコンテンツに外出先から安全にアクセスできるようにします。
Alfresco Mobile は、Alfresco のログイン資格情報を使用して (HTTP または HTTPS 経由で) Alfresco のリポジトリに接続し、権限に基づいてユーザーのアクセスを管理します。
]]>
@@ -242,7 +241,7 @@
サイトが見つかりません参加
- 参加のリクエスト
+ 参加リクエストの送信退会お気に入りお気に入りの解除
@@ -542,7 +541,7 @@
連絡先E メール電話
- 携帯
+ 携帯電話SkypeIMインスタントメッセージング
@@ -555,7 +554,7 @@
電話ファックスE メール
- 通話
+ 電話Skypeチャットの開始通話の開始
@@ -641,8 +640,8 @@
レビューの開始
- タスクのタイプを選択
- タスクを作成
+ タスクの種類の選択
+ タスクの作成添付ファイルの選択プロセスの開始タイトル
@@ -668,8 +667,8 @@
承認者承認者なしプロセスの開始
- タスクを作成
- 作業リスト
+ タスクの作成
+ タスクの割り当てタスクを担当者に割り当てますレビューと承認タスクをコンテンツのレビューと承認を行う担当者に割り当てます。
@@ -684,9 +683,9 @@
アドホックワークフロー
- 並列のレビューと承認 (Activiti)
+ 並列のレビューと承認レビューと承認
- プールされたレビューと承認 (Activiti)
+ プールされたレビューと承認検索
@@ -772,8 +771,8 @@
ショートカットの作成...アクションの定義...関連付けられているアクション
- 写真を撮影する
- テキストを書く
+ 写真の撮影
+ テキストの入力音声入力管理者によって管理されています
diff --git a/alfresco-mobile-android/src/main/res/values-zh-rCN/strings.xml b/alfresco-mobile-android/src/main/res/values-zh-rCN/strings.xml
index 07aa836a..e01a1dd5 100644
--- a/alfresco-mobile-android/src/main/res/values-zh-rCN/strings.xml
+++ b/alfresco-mobile-android/src/main/res/values-zh-rCN/strings.xml
@@ -164,8 +164,7 @@
与…共享内容
- zh_cn
-
+ 版本
@@ -542,7 +541,7 @@
联系信息电子邮件电话
- 移动电话
+ 手机SkypeIM即时消息
diff --git a/alfresco-mobile-android/src/main/res/values/strings.xml b/alfresco-mobile-android/src/main/res/values/strings.xml
index 47723603..b83d5448 100644
--- a/alfresco-mobile-android/src/main/res/values/strings.xml
+++ b/alfresco-mobile-android/src/main/res/values/strings.xml
@@ -164,8 +164,7 @@
Share Content with…
- en
-
+ Version
@@ -464,6 +463,8 @@
View PropertiesEdit Properties"Like" in progress
+ Like completed
+ Like completeFavoriteUnfavorite
diff --git a/extensions/samsung/src/main/res/values-de/samsung_strings.xml b/extensions/samsung/src/main/res/values-de/samsung_strings.xml
index 077ea6f8..e65e43cc 100644
--- a/extensions/samsung/src/main/res/values-de/samsung_strings.xml
+++ b/extensions/samsung/src/main/res/values-de/samsung_strings.xml
@@ -22,7 +22,7 @@
AbbrechenSucheSuchbegriff eingeben
- Kommentar hier eingeben...
+ Kommentar hier eingeben…Hinzufügen
diff --git a/extensions/samsung/src/main/res/values-fr/samsung_strings.xml b/extensions/samsung/src/main/res/values-fr/samsung_strings.xml
index d1fca91c..b1a254c9 100644
--- a/extensions/samsung/src/main/res/values-fr/samsung_strings.xml
+++ b/extensions/samsung/src/main/res/values-fr/samsung_strings.xml
@@ -72,7 +72,7 @@
Le S Note a été modifié. Toutes vos modifications non enregistrées seront perdues.]]>Enregistrer
- Ignorer
+ AnnulerS Note a été enregistré.Page %1$s/%2$s
diff --git a/extensions/samsung/src/main/res/values-it/samsung_strings.xml b/extensions/samsung/src/main/res/values-it/samsung_strings.xml
index 4b2a83f2..775a9625 100644
--- a/extensions/samsung/src/main/res/values-it/samsung_strings.xml
+++ b/extensions/samsung/src/main/res/values-it/samsung_strings.xml
@@ -22,7 +22,7 @@
AnnullaCercaImmetti termine da cercare
- Immetti qui un commento...
+ Digita qui il commento…Aggiungi
@@ -82,8 +82,8 @@
Requisiti S NoteQuesto dispositivo non supporta l\'S Pen
- Per utilizzare questa funzione, installare il software aggiuntivo dell\'S Pen. La schermata di installazione verrà aperta. Dopo l\'installazione del software, riavviare l\'applicazione.]]>
- Per utilizzare questa funzione, aggiornare il software dell\'S Pen. La schermata di installazione verrà aperta. Dopo l\'installazione del software, riavviare l\'applicazione.]]>
- Prima di utilizzare questa funzione, si consiglia di aggiornare il software dell\'S Pen. La schermata di installazione verrà aperta. Dopo l\'installazione del software, riavviare l\'applicazione.]]>
+ È necessario installare il software aggiuntivo dell\'S Pen per utilizzare questa funzione. Verrà aperta la schermata di installazione. Dopo l\'installazione, riavvia l\'applicazione.]]>
+ È necessario aggiornare il software dell\'S Pen per utilizzare questa funzione. Verrà aperta la schermata di installazione. Dopo l\'installazione, riavvia l\'applicazione.]]>
+ Si consiglia di aggiornare il software dell\'S Pen prima di utilizzare questa funzione. Verrà aperta la schermata di installazione. Dopo l\'installazione, riavvia l\'applicazione.]]>
\ No newline at end of file
diff --git a/extensions/samsung/src/main/res/values-ja/samsung_strings.xml b/extensions/samsung/src/main/res/values-ja/samsung_strings.xml
index 40a1bcca..8392e49c 100644
--- a/extensions/samsung/src/main/res/values-ja/samsung_strings.xml
+++ b/extensions/samsung/src/main/res/values-ja/samsung_strings.xml
@@ -22,7 +22,7 @@
キャンセル検索検索キーワードを入力してください
- ここにコメントを入力してください...
+ ここにコメントを入力してください…追加
diff --git a/extensions/scansnap/src/main/res/values-it/scansnap_strings.xml b/extensions/scansnap/src/main/res/values-it/scansnap_strings.xml
index d9010057..bbb8315e 100644
--- a/extensions/scansnap/src/main/res/values-it/scansnap_strings.xml
+++ b/extensions/scansnap/src/main/res/values-it/scansnap_strings.xml
@@ -1,26 +1,27 @@
+ ~ Copyright (C) 2005-2016 Alfresco Software Limited.
+ ~
+ ~ This file is part of Alfresco Mobile for Android.
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
Impossibile avviare l\'applicazione ScanSnap Connect.
- Impossibile analizzare l\'URL. Verificare che i parametri dell\'URL specificato siano corretti, quindi riprovare.
+ Impossibile analizzare l\'URL. Verifica che i parametri dell\'URL specificato siano corretti e riprova.Impostazioni predefinite scansione
diff --git a/platform/foundation/src/main/res/values-de/alfresco_strings.xml b/platform/foundation/src/main/res/values-de/alfresco_strings.xml
index 0391e3cb..663a8404 100644
--- a/platform/foundation/src/main/res/values-de/alfresco_strings.xml
+++ b/platform/foundation/src/main/res/values-de/alfresco_strings.xml
@@ -95,12 +95,12 @@
{0} Wiki-Seite aktualisiert von {1}{2} Wiki-Seite umbenannt in {0} von {1}{0} Wiki-Seite gelöscht von {1}
- {1} Gruppe zur Site {4} mit Rolle {2} hinzugefügt
- {1} Gruppe von Site {4} entfernt
- {1} Rolle der Gruppe in {2} geändert
+ Gruppe {1} zur Site {4} mit Rolle {2} hinzugefügt
+ Gruppe {1} von Site {4} entfernt
+ Rolle der Gruppe von {1} zu {2} geändert{1} trat der Site {4} mit der Rolle {2} bei{1} hat Site {4} verlassen
- {1} Rolle geändert in {2}
+ Rolle von {1} zu {2} geändert{0} Link erstellt von {1}{0} Link aktualisiert von {1}{0} Link gelöscht von {1}
@@ -110,7 +110,7 @@
{1} folgt jetzt {5}{1} hat {2} abonniert{1}: {6}
- {1} hat Dokument {0} zur Vorschau angezeigt
+ {1} hat eine Vorschau auf Dokument {0} angezeigt{1} hat Dokument {0} heruntergeladenKeine BerechtigungenVerbraucher
@@ -208,7 +208,7 @@
Keine Benutzer gefundenKeine Dateien gefundenKeine Sites verfügbar
- Keine Versionshistorie verfügbar
+ Kein Versionsverlauf verfügbarKeine Sitzung verfügbarKeine Aktivitäten gefundenKein Tag gefunden
@@ -234,7 +234,7 @@
Foto aufnehmenVideo aufnehmenAudio aufnehmen
- Versionshistorie
+ VersionsverlaufTagsFreigebenAktualisieren
@@ -318,8 +318,8 @@
Keine AufgabenNicht zugewiesen
- Erneute Zuweisung wird durchgeführt…
- Erneute Zuweisung abgeschlossen
+ Neuzuweisung wird durchgeführt…
+ Neuzuweisung abgeschlossen\"%s\" wurde erfolgreich aktualisiert.
@@ -391,7 +391,7 @@
Synchronisierung deaktivierenMöchten Sie die Synchronisierung deaktivieren? Alle synchronisierten Inhalte werden von Ihrem Gerät gelöscht.]]>Synchronisierungsfehler
- Sie haben die Auswahl von %s als Favorit aufgehoben, da Sie begonnen haben, dieses Element zu bearbeiten. Synchronisieren Sie Ihre bearbeitete Version auf dem Server oder speichern Sie diese im Ordner \"Downloads\". ]]>
+ Sie haben %s aus Ihren Favoriten entfernt, seit Sie begonnen haben, dieses Element zu bearbeiten. Synchronisieren Sie Ihre bearbeitete Version auf dem Server oder speichern Sie sie im Ordner \"Downloads\". ]]>%s wurde auf dem Server gelöscht, jedoch wurde eine Kopie im Ordner \"Downloads\" gespeichert.]]> Sie besitzen nicht die erforderliche Berechtigung, um Ihre bearbeitete Version von %s hochzuladen. Sie können diese in Ihrem Ordner \"Downloads\" speichern oder mit der Serverversion überschreiben. Dadurch werden Ihre Bearbeitungen verworfen.]]>Synchronisierungsfehler
@@ -444,7 +444,7 @@
SynchronisierungswarnungSynchronisierungsfehler Sie sind im Begriff, %s über eine Carrier-Verbindung zu synchronisieren. Möchten Sie fortfahren?]]>
- Sie versuchen, %1$s zu synchronisieren; nur %2$s sind verfügbar. Sie müssen Speicherplatz auf Ihrem Gerät freigeben oder für einige Inhalte die Markierung als Favoriten aufheben.]]>
+ Sie versuchen, %1$s zu synchronisieren, es sind jedoch nur %2$s verfügbar. Sie müssen Speicherplatz auf Ihrem Gerät freigeben oder Inhalte aus Ihren Favoriten entfernen.]]> Sie sind im Begriff, %1$s zu synchronisieren; nur noch %2$s auf Ihrem Gerät. Möchten Sie fortfahren?]]>Das Dokument ist auf Ihrem Gerät nicht verfügbar.
diff --git a/platform/foundation/src/main/res/values-es/alfresco_strings.xml b/platform/foundation/src/main/res/values-es/alfresco_strings.xml
index 50a04d68..71d66069 100644
--- a/platform/foundation/src/main/res/values-es/alfresco_strings.xml
+++ b/platform/foundation/src/main/res/values-es/alfresco_strings.xml
@@ -22,7 +22,7 @@
- hace un momento
+ en este momentohace menos de un minuto
@@ -54,7 +54,7 @@
Cargar más…Carga en curso…
- Sin datos.
+ Ningún dato.AceptarCancelar
@@ -64,14 +64,14 @@
Entrada {0} del blog creada por {1}Entrada {0} del blog actualizada por {1}Entrada {0} del blog eliminada por {1}
- {1} ha comentado sobre {0}
- {1} ha actualizado el comentario sobre {0}
- {1} ha eliminado el comentario de {0}
+ {1} comentó sobre {0}
+ {1} actualizó el comentario sobre {0}
+ {1} eliminó el comentario sobre {0}{0} foro iniciado por {1}{0} foro actualizado por {1}{0} foro eliminado por {1}
- {1} ha respondido al foro {0}
- {1} ha actualizado una respuesta a {0}
+ {1} respondió al foro {0}
+ {1} actualizó la respuesta a {0}Evento {0} del calendario creado por {1}Evento {0} del calendario actualizado por {1}Evento {0} del calendario eliminado por {1}
@@ -86,8 +86,8 @@
{0} carpetas añadidas por {1}{0} fue eliminado por {1}{0} carpetas eliminadas por {1}
- Fichero {0} descargado de Google Docs por {1}
- Fichero {0} cargado a Google Docs por {1}
+ Fichero {0} bloqueado en Google Docs por {1}
+ Fichero {0} desbloqueado de Google Docs por {1}Fichero {0} editado por {1}A {1} le gusta el fichero {0}A {1} le gusta la carpeta {0}
@@ -99,7 +99,7 @@
Grupo {1} eliminado del sitio {4}Rol del grupo {1} cambiado a {2}{1} se unió al sitio {4} con el rol {2}
- {1} dejó el sitio {4}
+ {1} abandonó el sitio {4}Rol {1} cambiado a {2}Enlace {0} creado por {1}Enlace {0} actualizado por {1}
@@ -107,11 +107,11 @@
Lista de datos {0} creada por {1}Detalles de la lista de datos {0} actualizados por {1}Lista de datos {0} eliminada por {1}
- {1} ahora es seguidor de {5}
+ {1} está siguiendo a {5}{1} se ha suscrito a {2}{1}: {6}
- {1} documento previsualizado {0}
- {1} documento descargado {0}
+ {1} previsualizó el documento {0}
+ {1} descargó el documento {0}Ningún privilegioConsumidorAdministrador
@@ -167,7 +167,7 @@
IngenieroGéneroNúmero de pista
- Fecha de lanzamiento
+ Fecha de publicaciónFrecuencia de muestreoTipo de muestreoTipo de canal
@@ -250,7 +250,7 @@
No se puede abrir el mapa
- Intentar de nuevo
+ ReintentarGuardar cuentaError de conexiónNo se puede autenticar. Compruebe la configuración de su cuenta de Alfresco.
@@ -316,7 +316,7 @@
Crear carpeta completado
- Sin tareas
+ Ninguna tareaNo asignadoReasignación en curso…Reasignación completada
diff --git a/platform/foundation/src/main/res/values-fr/alfresco_strings.xml b/platform/foundation/src/main/res/values-fr/alfresco_strings.xml
index f0654235..0038a2a4 100644
--- a/platform/foundation/src/main/res/values-fr/alfresco_strings.xml
+++ b/platform/foundation/src/main/res/values-fr/alfresco_strings.xml
@@ -22,7 +22,7 @@
- à l\'instant
+ maintenantil y a moins d\'une minute
@@ -64,8 +64,8 @@
Article de blog {0} créé par {1}Article de blog {0} mis à jour par {1}Article de blog {0} supprimé par {1}
- {1} commenté {0}
- {1} a mis à jour le commentaire sur {0}
+ {1} a commenté {0}
+ {1} a mis à jour son commentaire sur {0}{1} a supprimé un commentaire de {0}Discussion {0} démarrée par {1}Discussion {0} mise à jour par {1}
@@ -97,10 +97,10 @@
Page wiki {0} supprimée par {1}Groupe {1} ajouté au site {4} avec le rôle {2}Groupe {1} supprimé du site {4}
- Rôle du groupe {1} modifié pour {2}
+ Rôle du groupe {1} changé en {2}{1} a rejoint le site {4} avec le rôle {2}{1} a quitté le site {4}
- Le rôle de {1} a changé pour {2}
+ Rôle {1} changé en {2}Lien {0} créé par {1}Lien {0} mis à jour par {1}Lien {0} supprimé par {1}
@@ -108,7 +108,7 @@
Détails de la liste des données {0} mis à jour par {1}Liste des données {0} supprimée par {1}{1} suit maintenant {5}
- {1} s\'est inscrit à {2}
+ {1} s\'est abonné à {2}{1} : {6}{1} a prévisualisé le document {0}{1} a téléchargé le document {0}
@@ -208,7 +208,7 @@
Aucun utilisateur trouvéAucun fichier trouvéAucun site disponible
- Aucun historique de version disponible
+ Aucun historique des versions disponibleAucune session disponibleAucune activité trouvéeAucun tag trouvé
@@ -234,7 +234,7 @@
Prendre une photoEnregistrer vidéoEnregistrer audio
- Historique de version
+ Historique des versionsTagsPartagerActualiser
diff --git a/platform/foundation/src/main/res/values-it/alfresco_strings.xml b/platform/foundation/src/main/res/values-it/alfresco_strings.xml
index c6f590e2..abfe4da6 100644
--- a/platform/foundation/src/main/res/values-it/alfresco_strings.xml
+++ b/platform/foundation/src/main/res/values-it/alfresco_strings.xml
@@ -71,7 +71,7 @@
Discussione {0} aggiornata da {1}Discussione {0} eliminata da {1}{1} ha risposto alla discussione {0}
- {1} ha aggiornato una risposta in {0}
+ {1} ha aggiornato la risposta a {0}Evento del calendario {0} creato da {1}Evento del calendario {0} aggiornato da {1}Evento del calendario {0} eliminato da {1}
@@ -164,7 +164,7 @@
AlbumArtistaCompositore
- Ingegnere
+ TecnicoGenereNumero di tracciaData di pubblicazione
@@ -175,7 +175,7 @@
VersioneData di modifica
- Ultima modifica effettuata da
+ Ultima modifica diCommentoVersione attuale
@@ -194,7 +194,7 @@
Crea una nuova cartellaNome
- Immetti qui il nome della cartella…
+ Digita qui il nome della cartella…ModificaAggiorna
@@ -225,7 +225,7 @@
Immetti termine da cercareCommenti
- Immetti qui il commento…
+ Digita qui il commento…CreaAggiungi
@@ -234,7 +234,7 @@
Scatta fotoRegistra videoRegistra audio
- Cronologia delle versioni
+ Cronologia versioniTagCondividiAggiorna
@@ -242,7 +242,7 @@
Salva
- Si è verificato un errore. Riprovare.
+ Si è verificato un errore. Riprova.Si è verificato un errore.Impossibile aprire il fileImpossibile condividere il link
@@ -253,41 +253,41 @@
RiprovaSalva accountErrore di connessione
- Impossibile eseguire l\'autenticazione. Verificare le impostazioni dell\'account Alfresco.
+ Impossibile eseguire l\'autenticazione. Verifica le impostazioni dell\'account Alfresco.Il valore del nome host è probabilmente errato.
- nome host è probabilmente errato o è necessario attivare il VPN. Verificare i valori e le impostazioni.]]>
+ nome host è probabilmente errato o è necessario attivare il VPN. Verifica i valori e le impostazioni.]]>La connessione dati del dispositivo è assente.
- La connessione dati del dispositivo è assente. Controllare le impostazioni del dispositivo e abilitare la connessione dati.]]>
- Verificare le impostazioni dell\'account Alfresco (Nome utente/Password).]]>
- URL servizio è errato. Verificare le impostazioni dell\'account Alfresco.]]>
- Riprovare più tardi.]]>
- Verificare le impostazioni dell\'account Alfresco.]]>
- porta è errato. Verificare le impostazioni dell\'account Alfresco.]]>
+ La connessione dati del dispositivo è assente. Controlla le impostazioni del dispositivo e abilita la connessione dati.]]>
+ Verifica le impostazioni dell\'account Alfresco (Nome utente/Password).]]>
+ URL servizio è errato. Verifica le impostazioni dell\'account Alfresco.]]>
+ Riprova più tardi.]]>
+ Verifica le impostazioni dell\'account Alfresco.]]>
+ porta è errato. Verifica le impostazioni dell\'account Alfresco.]]>Il certificato di sicurezza del server non è attendibile.
L\'organizzazione di terzi che ha emesso il certificato di destinazione del server non è riconosciuta dal dispositivo.
- Alfresco Mobile può verificare che si sta effettuando la connessione al server giusto solo se il certificato è emesso da un\'organizzazione attendibile.
- Se il server ha un certificato autofirmato, aggiungerlo al dispositivo per poter effettuare la connessione. ]]>
+ Alfresco Mobile può verificare che ti stai connettendo al server giusto solo se il certificato è emesso da un\'organizzazione attendibile.
+ Se il server ha un certificato autofirmato, aggiungilo al dispositivo per poterti connettere. ]]>
Il certificato di sicurezza del server è scaduto o non è più valido.
- Verificare la data e l\'ora del dispositivo. Se il problema persiste, contattare l\'amministratore. ]]>
+ Verifica la data e l\'ora del dispositivo. Se il problema persiste, contatta l\'amministratore. ]]>
Si è verificato un errore con il protocollo SSL.
- Verificare le impostazioni dell\'account Alfresco e riprovare. Se il problema persiste, contattare l\'amministratore.]]>
+ Verifica le impostazioni dell\'account Alfresco e riprova. Se il problema persiste, contatta l\'amministratore.]]>
Il carico di lavoro di Alfresco in the Cloud è al momento eccessivo.
- Riprovare tra qualche minuto. ]]>
+ Riprova tra qualche minuto. ]]>
- La sessione è scaduta. Ripetere l\'accesso.
+ La sessione è scaduta. Accedi di nuovo.Aggiornamento sessione.
- Ricaricare l\'account.]]>
+ Ricarica l\'account.]]>
- URL errato. Verificare le impostazioni dell\'account Alfresco.
+ URL errato. Verifica le impostazioni dell\'account Alfresco.Impossibile trovare la risorsa.
- Impossibile rinominare il file. Potrebbe esistere un altro file con lo stesso nome.
+ Impossibile rinominare il file. Forse esiste già un altro file con lo stesso nome.Si è verificato un errore: %sSi è verificato un errore: %s
@@ -301,8 +301,8 @@
Convalida certificato SSL disabilitata.
- Verifica delle informazioni account in corso…
- Account pronto per l\'utilizzo.
+ Verifica informazioni account in corso…
+ Account pronto per l\'uso.Server AlfrescoAlfresco in the Cloud
@@ -391,9 +391,9 @@
Disattiva sincronizzazioneDisattivare la sincronizzazione? Tutti i contenuti sincronizzati saranno rimossi dal dispositivo.]]>Errori di sincronizzazione
- %s è stato rimosso dai preferiti perché modificato. Sincronizzare la versione modificata con il server o salvarla nella cartella \"Download\". ]]>
+ %s è stato rimosso dai preferiti perché modificato. Sincronizza la versione modificata con il server o salvala nella cartella \"Download\". ]]>%s è stato cancellato dal server, ma una copia è stata salvata nella cartella \"Download\".]]>
- Non si dispone dei permessi necessari per caricare la versione modificata di %s. È possibile salvarla nella cartella \"Download\", oppure sovrascriverla con la versione presente sul server, che annullerà le modifiche.]]>
+ Non hai i permessi necessari per caricare la versione modificata di %s. Puoi salvarla nella cartella \"Download\" o sovrascriverla con la versione presente sul server, che annullerà le modifiche.]]>Errori di sincronizzazioneSincronizzaSovrascrivi
@@ -443,9 +443,9 @@
Avviso di sincronizzazioneErrore di sincronizzazione
- Si sta per eseguire la sincronizzazione di %s su una connessione portante. Continuare?]]>
- Si sta tentando di sincronizzare %1$s, ma sono disponibili solo %2$s. Liberare un po\' di spazio sul dispositivo o rimuovere alcuni contenuti dai preferiti.]]>
- Si sta per eseguire la sincronizzazione di %1$s, ma sul dispositivo rimane soltanto %2$s. Continuare?]]>
+ Stai per sincronizzare %s su una connessione portante. Continuare?]]>
+ Stai tentando di sincronizzare %1$s, ma sono disponibili solo %2$s. Libera spazio sul dispositivo o rimuovi alcuni contenuti dai preferiti.]]>
+ Stai per sincronizzare %1$s, ma sul dispositivo rimangono solo %2$s. Continuare?]]>Questo documento non è disponibile sul dispositivo.
diff --git a/platform/foundation/src/main/res/values-ja/alfresco_strings.xml b/platform/foundation/src/main/res/values-ja/alfresco_strings.xml
index e5fc2c81..495b0a37 100644
--- a/platform/foundation/src/main/res/values-ja/alfresco_strings.xml
+++ b/platform/foundation/src/main/res/values-ja/alfresco_strings.xml
@@ -86,7 +86,7 @@
{0} 個のフォルダが {1} によって追加されました{0} が {1} によって削除されました{0} 個のフォルダが {1} によって削除されました
- {0} ファイルが {1} によってGoogle ドキュメント™ にチェックアウトされました
+ {0} ファイルが {1} によって Google ドキュメント™ にチェックアウトされました{0} ファイルが {1} によって Google ドキュメント™ からチェックインされました{0} ファイルが {1} によって編集されました{1} がファイル {0} に [いいね !] を付けました
@@ -108,7 +108,7 @@
{0} データリストの詳細が {1} によって更新されました{0} データリストが {1} によって削除されました{1} は現在 {5} をフォローしています
- {1} が {2} を購読しました
+ {1} は {2} を購読しています{1}: {6}{1} が文書 {0} をプレビューしました{1} が文書 {0} をダウンロードしました
@@ -231,9 +231,9 @@
追加いいね!プログラムから開く
- 写真を撮影する
- ビデオを録画する
- オーディオを録音する
+ 写真の撮影
+ ビデオの録画
+ オーディオの録音バージョン履歴タグ共有
From f1ebb054d9d013ec7caeb39c5081d777b2b8ec67 Mon Sep 17 00:00:00 2001
From: jmpascal
Date: Mon, 18 Apr 2016 10:20:52 +0200
Subject: [PATCH 08/25] ANDROID-284
---
.../fragments/help/HelpDialogFragment.java | 2 +-
.../node/details/NodeDetailsActionMode.java | 2 +-
.../node/details/NodeDetailsFragment.java | 5 +++--
.../src/main/res/drawable-xhdpi/ic_properties.png | Bin 0 -> 585 bytes
.../src/main/res/values-de/strings.xml | 2 +-
.../src/main/res/values-es/strings.xml | 2 +-
.../src/main/res/values-fr/strings.xml | 2 +-
.../src/main/res/values-it/strings.xml | 2 +-
.../src/main/res/values-ja/strings.xml | 2 +-
.../src/main/res/values-zh-rCN/strings.xml | 2 +-
.../src/main/res/values/strings.xml | 2 +-
11 files changed, 12 insertions(+), 11 deletions(-)
create mode 100644 alfresco-mobile-android/src/main/res/drawable-xhdpi/ic_properties.png
diff --git a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/help/HelpDialogFragment.java b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/help/HelpDialogFragment.java
index 79b22228..b2f7e444 100644
--- a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/help/HelpDialogFragment.java
+++ b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/help/HelpDialogFragment.java
@@ -208,7 +208,7 @@ public void onStop()
// ///////////////////////////////////////////////////////////////////////////
private String getUrl(FragmentActivity activity)
{
- String prefix = activity.getString(R.string.asset_folder_prefix);
+ String prefix = activity.getString(R.string.docs_prefix);
String urlValue = null;
if (TextUtils.isEmpty(prefix))
{
diff --git a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/node/details/NodeDetailsActionMode.java b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/node/details/NodeDetailsActionMode.java
index cb216989..fe4eec4e 100644
--- a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/node/details/NodeDetailsActionMode.java
+++ b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/node/details/NodeDetailsActionMode.java
@@ -114,7 +114,7 @@ protected void getMenu(FragmentActivity activity, Menu menu)
ConfigurableActionHelper.ACTION_NODE_EDIT))
{
mi = menu.add(Menu.NONE, R.id.menu_action_edit, Menu.FIRST + 50, R.string.edit);
- mi.setIcon(R.drawable.ic_edit);
+ mi.setIcon(R.drawable.ic_properties);
mi.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
}
diff --git a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/node/details/NodeDetailsFragment.java b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/node/details/NodeDetailsFragment.java
index c4b91ead..a736d948 100644
--- a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/node/details/NodeDetailsFragment.java
+++ b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/node/details/NodeDetailsFragment.java
@@ -1205,7 +1205,8 @@ public void getMenu(Context context, AlfrescoSession session, Menu menu, Node no
{
mi = menu.add(Menu.NONE, R.id.menu_action_open_with_alfresco_editor, Menu.FIRST + 50,
R.string.open_in_alfresco_editor);
- mi.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
+ mi.setIcon(R.drawable.ic_edit);
+ mi.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
}
}
catch (Exception e)
@@ -1220,7 +1221,7 @@ public void getMenu(Context context, AlfrescoSession session, Menu menu, Node no
ConfigurableActionHelper.ACTION_NODE_EDIT))
{
mi = menu.add(Menu.NONE, R.id.menu_action_edit, Menu.FIRST + 10, R.string.edit);
- mi.setIcon(R.drawable.ic_edit);
+ mi.setIcon(R.drawable.ic_properties);
mi.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
}
diff --git a/alfresco-mobile-android/src/main/res/drawable-xhdpi/ic_properties.png b/alfresco-mobile-android/src/main/res/drawable-xhdpi/ic_properties.png
new file mode 100644
index 0000000000000000000000000000000000000000..1246a8114387ac649f2aa175015d5aa15b8beecc
GIT binary patch
literal 585
zcmV-P0=E5$P)O%yczqZ(d62mmpl;RK`w8ZLkgL1_VLfrb;17H}aznx?w|
zaICdHK*UYvnvbnkYd9K>Cd_rL(%A;gi|;F?cC5Z}b(hkL02CrcK1~P_z&8Y6CWH#Wn+YKU@M1#f07^HZ3IIwqp(+6W
zG+};ylAj?}0`RK|wE;jqLILpef+T-}X#r{lVt^PREfDq$;Pz;iWp~Tw19yEFL$K5h
z3IH*n;w?bE-)-}Pp8>XoP~!wZ01u(1w*d8IZS#URfV)At2IU&8_%+!07O)*=)Hp8S
z(tit33$x7=0P+s_=RZU`oz4{^ZrCd8GEOP=F&>WxoHf}qpxthtX{`@Ao1o?*;!B?A
z_tg9%j}0J6lD#;N`-r&B*~q%Ni1-cw*Lj}5t(&_T&jwH|RzOfnokUTzUv@hb+RtXQ
zR{$7ti+5rGhkgjTP7Da45b7QT0F_)_^2C6;oFuglF@Q?0E_q@=T~3l(hZsO5SC_mm
XF?K~zd1c8D00000NkvXXu0mjfi2(2x
literal 0
HcmV?d00001
diff --git a/alfresco-mobile-android/src/main/res/values-de/strings.xml b/alfresco-mobile-android/src/main/res/values-de/strings.xml
index 0abccd17..67c9fdb3 100644
--- a/alfresco-mobile-android/src/main/res/values-de/strings.xml
+++ b/alfresco-mobile-android/src/main/res/values-de/strings.xml
@@ -164,7 +164,7 @@
Inhalt freigeben für…
- de
+ deVersion
diff --git a/alfresco-mobile-android/src/main/res/values-es/strings.xml b/alfresco-mobile-android/src/main/res/values-es/strings.xml
index 07d7a562..486f9991 100644
--- a/alfresco-mobile-android/src/main/res/values-es/strings.xml
+++ b/alfresco-mobile-android/src/main/res/values-es/strings.xml
@@ -164,7 +164,7 @@
Compartir contenido con…
- es
+ esVersión
diff --git a/alfresco-mobile-android/src/main/res/values-fr/strings.xml b/alfresco-mobile-android/src/main/res/values-fr/strings.xml
index acab1730..57b2cf78 100644
--- a/alfresco-mobile-android/src/main/res/values-fr/strings.xml
+++ b/alfresco-mobile-android/src/main/res/values-fr/strings.xml
@@ -164,7 +164,7 @@
Partager le contenu avec…
- fr
+ frVersion
diff --git a/alfresco-mobile-android/src/main/res/values-it/strings.xml b/alfresco-mobile-android/src/main/res/values-it/strings.xml
index 0ab88763..81561e86 100644
--- a/alfresco-mobile-android/src/main/res/values-it/strings.xml
+++ b/alfresco-mobile-android/src/main/res/values-it/strings.xml
@@ -164,7 +164,7 @@
Condividi contenuto con…
- it
+ itVersione
diff --git a/alfresco-mobile-android/src/main/res/values-ja/strings.xml b/alfresco-mobile-android/src/main/res/values-ja/strings.xml
index 01b491be..f9eaa215 100644
--- a/alfresco-mobile-android/src/main/res/values-ja/strings.xml
+++ b/alfresco-mobile-android/src/main/res/values-ja/strings.xml
@@ -164,7 +164,7 @@
コンテンツの共有…
- ja
+ jaバージョン
diff --git a/alfresco-mobile-android/src/main/res/values-zh-rCN/strings.xml b/alfresco-mobile-android/src/main/res/values-zh-rCN/strings.xml
index e01a1dd5..0d0da175 100644
--- a/alfresco-mobile-android/src/main/res/values-zh-rCN/strings.xml
+++ b/alfresco-mobile-android/src/main/res/values-zh-rCN/strings.xml
@@ -164,7 +164,7 @@
与…共享内容
-
+ 版本
diff --git a/alfresco-mobile-android/src/main/res/values/strings.xml b/alfresco-mobile-android/src/main/res/values/strings.xml
index b83d5448..f49c1ae5 100644
--- a/alfresco-mobile-android/src/main/res/values/strings.xml
+++ b/alfresco-mobile-android/src/main/res/values/strings.xml
@@ -164,7 +164,7 @@
Share Content with…
-
+ Version
From 7eec63d8c9cdd82dbe069d09c6b91a3992ce9069 Mon Sep 17 00:00:00 2001
From: jmpascal
Date: Tue, 19 Apr 2016 10:49:09 +0200
Subject: [PATCH 09/25] ANDROID-301
---
.../fragments/node/browser/NodeAdapter.java | 8 ++---
.../workflow/task/TaskDetailsFragment.java | 4 +--
.../utils/NodeSyncPlaceHolderFormatter.java | 30 +++++++++----------
.../mobile/android/ui/utils/Formatter.java | 30 +++++++++----------
4 files changed, 36 insertions(+), 36 deletions(-)
diff --git a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/node/browser/NodeAdapter.java b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/node/browser/NodeAdapter.java
index 02a5b973..fc464837 100644
--- a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/node/browser/NodeAdapter.java
+++ b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/node/browser/NodeAdapter.java
@@ -352,9 +352,9 @@ private String createContentBottomText(Context context, Node node)
{
String s = "";
- if (node.getCreatedAt() != null)
+ if (node.getModifiedAt() != null)
{
- s = formatDate(context, node.getCreatedAt().getTime());
+ s = formatDate(context, node.getModifiedAt().getTime());
if (node.isDocument())
{
Document doc = (Document) node;
@@ -368,10 +368,10 @@ private String createContentDescriptionBottomText(Context context, Node node)
{
StringBuilder s = new StringBuilder();
- if (node.getCreatedAt() != null)
+ if (node.getModifiedAt() != null)
{
s.append(context.getString(R.string.metadata_modified));
- s.append(formatDate(context, node.getCreatedAt().getTime()));
+ s.append(formatDate(context, node.getModifiedAt().getTime()));
if (node.isDocument())
{
Document doc = (Document) node;
diff --git a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/workflow/task/TaskDetailsFragment.java b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/workflow/task/TaskDetailsFragment.java
index c2ebcba2..3a2840a5 100644
--- a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/workflow/task/TaskDetailsFragment.java
+++ b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/workflow/task/TaskDetailsFragment.java
@@ -429,9 +429,9 @@ private String createContentBottomText(Context context, Node node)
{
String s = "";
- if (node.getCreatedAt() != null)
+ if (node.getModifiedAt() != null)
{
- s = Formatter.formatToRelativeDate(context, node.getCreatedAt().getTime());
+ s = Formatter.formatToRelativeDate(context, node.getModifiedAt().getTime());
if (node.isDocument())
{
Document doc = (Document) node;
diff --git a/platform/foundation/src/main/java/org/alfresco/mobile/android/sync/utils/NodeSyncPlaceHolderFormatter.java b/platform/foundation/src/main/java/org/alfresco/mobile/android/sync/utils/NodeSyncPlaceHolderFormatter.java
index 05187650..44cad306 100644
--- a/platform/foundation/src/main/java/org/alfresco/mobile/android/sync/utils/NodeSyncPlaceHolderFormatter.java
+++ b/platform/foundation/src/main/java/org/alfresco/mobile/android/sync/utils/NodeSyncPlaceHolderFormatter.java
@@ -1,20 +1,20 @@
-/*******************************************************************************
- * Copyright (C) 2005-2014 Alfresco Software Limited.
+/*
+ * Copyright (C) 2005-2016 Alfresco Software Limited.
*
- * This file is part of Alfresco Mobile for Android.
+ * This file is part of Alfresco Mobile for Android.
*
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *******************************************************************************/
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.alfresco.mobile.android.sync.utils;
import org.alfresco.mobile.android.ui.utils.Formatter;
@@ -34,9 +34,9 @@ private NodeSyncPlaceHolderFormatter()
public static String createContentBottomText(Context context, NodeSyncPlaceHolder node, boolean extended)
{
StringBuilder s = new StringBuilder();
- if (node.getCreatedAt() != null)
+ if (node.getModifiedAt() != null)
{
- s.append(Formatter.formatToRelativeDate(context, node.getCreatedAt().getTime()));
+ s.append(Formatter.formatToRelativeDate(context, node.getModifiedAt().getTime()));
if (node.isDocument())
{
s.append(" - ");
diff --git a/platform/foundation/src/main/java/org/alfresco/mobile/android/ui/utils/Formatter.java b/platform/foundation/src/main/java/org/alfresco/mobile/android/ui/utils/Formatter.java
index 1d818ce6..c2fe3d27 100644
--- a/platform/foundation/src/main/java/org/alfresco/mobile/android/ui/utils/Formatter.java
+++ b/platform/foundation/src/main/java/org/alfresco/mobile/android/ui/utils/Formatter.java
@@ -1,20 +1,20 @@
-/*******************************************************************************
- * Copyright (C) 2005-2014 Alfresco Software Limited.
+/*
+ * Copyright (C) 2005-2016 Alfresco Software Limited.
*
- * This file is part of Alfresco Mobile for Android.
+ * This file is part of Alfresco Mobile for Android.
*
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *******************************************************************************/
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.alfresco.mobile.android.ui.utils;
import java.util.Date;
@@ -120,9 +120,9 @@ public static String createContentBottomText(Context context, Node node)
public static String createContentBottomText(Context context, Node node, boolean extended)
{
StringBuilder s = new StringBuilder();
- if (node.getCreatedAt() != null)
+ if (node.getModifiedAt() != null)
{
- s.append(formatToRelativeDate(context, node.getCreatedAt().getTime()));
+ s.append(formatToRelativeDate(context, node.getModifiedAt().getTime()));
if (node.isDocument())
{
Document doc = (Document) node;
From 541188a55f9b0504ea6bd99ddfddea96b0696155 Mon Sep 17 00:00:00 2001
From: jmpascal
Date: Tue, 19 Apr 2016 11:06:12 +0200
Subject: [PATCH 10/25] ANDROID-306
---
.../node/details/NodeDetailsFragment.java | 25 +++++++++++++++----
.../platform/extensions/AnalyticsManager.java | 2 ++
2 files changed, 22 insertions(+), 5 deletions(-)
diff --git a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/node/details/NodeDetailsFragment.java b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/node/details/NodeDetailsFragment.java
index a736d948..3d52aeaa 100644
--- a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/node/details/NodeDetailsFragment.java
+++ b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/node/details/NodeDetailsFragment.java
@@ -1033,11 +1033,25 @@ public void onActivityNotFoundException(ActivityNotFoundException e)
}
// Analytics
- AnalyticsHelper.reportOperationEvent(getActivity(), AnalyticsManager.CATEGORY_DOCUMENT_MANAGEMENT,
- AnalyticsManager.ACTION_OPEN,
- node.isDocument() ? ((Document) node).getContentStreamMimeType() : AnalyticsManager.TYPE_FOLDER, 1,
- false, AnalyticsManager.INDEX_FILE_SIZE,
- node.isDocument() ? ((Document) node).getContentStreamLength() : 0);
+ if (node instanceof Document)
+ {
+ AnalyticsHelper.reportOperationEvent(getActivity(), AnalyticsManager.CATEGORY_DOCUMENT_MANAGEMENT,
+ AnalyticsManager.ACTION_OPEN,
+ node.isDocument() ? ((Document) node).getContentStreamMimeType() : AnalyticsManager.TYPE_FOLDER, 1,
+ false, AnalyticsManager.INDEX_FILE_SIZE,
+ node.isDocument() ? ((Document) node).getContentStreamLength() : 0);
+ }
+ else if (node instanceof NodeSyncPlaceHolder)
+ {
+ AnalyticsHelper.reportOperationEvent(getActivity(), AnalyticsManager.CATEGORY_DOCUMENT_MANAGEMENT,
+ AnalyticsManager.ACTION_OPEN_OFFLINE,
+ node.getPropertyValue(PropertyIds.CONTENT_STREAM_MIME_TYPE) != null
+ ? node.getPropertyValue(PropertyIds.CONTENT_STREAM_MIME_TYPE).toString()
+ : AnalyticsManager.TYPE_FOLDER,
+ 1, false, AnalyticsManager.INDEX_FILE_SIZE,
+ node.getPropertyValue(PropertyIds.CONTENT_STREAM_LENGTH) != null
+ ? Long.parseLong(node.getPropertyValue(PropertyIds.CONTENT_STREAM_LENGTH).toString()) : 0);
+ }
}
public void setDownloadDateTime(Date downloadDateTime)
@@ -1602,6 +1616,7 @@ protected Fragment getFragment(String tag)
{
return getActivity().getSupportFragmentManager().findFragmentByTag(tag);
}
+
// ///////////////////////////////////////////////////////////////////////////
// BUILDER
// ///////////////////////////////////////////////////////////////////////////
diff --git a/platform/foundation/src/main/java/org/alfresco/mobile/android/platform/extensions/AnalyticsManager.java b/platform/foundation/src/main/java/org/alfresco/mobile/android/platform/extensions/AnalyticsManager.java
index 23426985..e817a2bc 100644
--- a/platform/foundation/src/main/java/org/alfresco/mobile/android/platform/extensions/AnalyticsManager.java
+++ b/platform/foundation/src/main/java/org/alfresco/mobile/android/platform/extensions/AnalyticsManager.java
@@ -75,6 +75,8 @@ public abstract class AnalyticsManager extends Manager
public static final String ACTION_OPEN = "Open";
+ public static final String ACTION_OPEN_OFFLINE = "Open Offline";
+
public static final String ACTION_DOWNLOAD = "Download";
public static final String ACTION_EDIT = "Edit";
From 7e79051a282654f2eb34bd7977648c3af1b02950 Mon Sep 17 00:00:00 2001
From: jmpascal
Date: Mon, 25 Apr 2016 17:21:24 +0200
Subject: [PATCH 11/25] ANDROID-271 ANDROID-309 ANDROID-310 ANDROID-296
---
.../assets/Configuration/embedded_config.json | 15 ++
.../application/activity/MainActivity.java | 27 ++-
.../features/AbstractConfigFeature.java | 228 ++++++++++++++++++
.../features/ConfigFeatureHelper.java | 84 +++++++
.../features/DataProtectionConfigFeature.java | 76 ++++++
.../features/PasscodeConfigFeature.java | 81 +++++++
.../features/SyncCellularConfigFeature.java | 114 +++++++++
.../preferences/AccountSettingsFragment.java | 15 ++
.../preferences/GeneralPreferences.java | 53 ++--
.../preferences/PasscodePreferences.java | 36 +--
.../security/PassCodeActivity.java | 22 +-
.../security/PassCodeDialogFragment.java | 54 ++++-
.../main/res/layout/app_passcode_simple.xml | 27 +++
.../src/main/res/values/strings.xml | 1 +
.../api/model/config/FeatureConfig.java | 20 ++
.../platform/extensions/AnalyticsHelper.java | 1 +
.../platform/extensions/AnalyticsManager.java | 8 +
.../android/ui/activity/AlfrescoActivity.java | 16 --
18 files changed, 808 insertions(+), 70 deletions(-)
create mode 100644 alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/configuration/features/AbstractConfigFeature.java
create mode 100644 alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/configuration/features/ConfigFeatureHelper.java
create mode 100644 alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/configuration/features/DataProtectionConfigFeature.java
create mode 100644 alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/configuration/features/PasscodeConfigFeature.java
create mode 100644 alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/configuration/features/SyncCellularConfigFeature.java
diff --git a/alfresco-mobile-android/src/main/assets/Configuration/embedded_config.json b/alfresco-mobile-android/src/main/assets/Configuration/embedded_config.json
index 9ab55261..68bce454 100644
--- a/alfresco-mobile-android/src/main/assets/Configuration/embedded_config.json
+++ b/alfresco-mobile-android/src/main/assets/Configuration/embedded_config.json
@@ -16,6 +16,21 @@
"id": "feature-analytics-default",
"type": "org.alfresco.client.feature.analytics",
"enable": false
+ },
+ {
+ "id": "feature-sync-cellular-default",
+ "type": "org.alfresco.client.feature.sync.cellular",
+ "enable": true
+ },
+ {
+ "id": "feature-data_protection-default",
+ "type": "org.alfresco.client.feature.data.protection",
+ "enable": false
+ },
+ {
+ "id": "feature-passcode-default",
+ "type": "org.alfresco.client.feature.passcode",
+ "enable": false
}
],
"action-groups": [
diff --git a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/activity/MainActivity.java b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/activity/MainActivity.java
index 24c2883f..7e182324 100644
--- a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/activity/MainActivity.java
+++ b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/activity/MainActivity.java
@@ -30,6 +30,7 @@
import org.alfresco.mobile.android.application.R;
import org.alfresco.mobile.android.application.capture.DeviceCapture;
import org.alfresco.mobile.android.application.configuration.ConfigurationConstant;
+import org.alfresco.mobile.android.application.configuration.features.ConfigFeatureHelper;
import org.alfresco.mobile.android.application.fragments.DisplayUtils;
import org.alfresco.mobile.android.application.fragments.FragmentDisplayer;
import org.alfresco.mobile.android.application.fragments.about.AboutFragment;
@@ -49,6 +50,7 @@
import org.alfresco.mobile.android.application.managers.RenditionManagerImpl;
import org.alfresco.mobile.android.application.managers.extensions.AnalyticHelper;
import org.alfresco.mobile.android.application.security.DataProtectionUserDialogFragment;
+import org.alfresco.mobile.android.application.security.PassCodeActivity;
import org.alfresco.mobile.android.async.Operator;
import org.alfresco.mobile.android.async.account.CreateAccountEvent;
import org.alfresco.mobile.android.async.configuration.ConfigurationEvent;
@@ -367,6 +369,12 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data)
.post(new ConfigManager.ConfigurationMenuEvent(getCurrentAccount().getId()));
}
}
+
+ if (requestCode == PassCodeActivity.REQUEST_CODE_PASSCODE && sessionState == SESSION_LOADING
+ && getCurrentSession() != null)
+ {
+ onAccountLoaded(new LoadAccountCompletedEvent("-1", getCurrentAccount()));
+ }
}
@Override
@@ -854,6 +862,7 @@ public void onAccountLoaded(LoadAccountCompletedEvent event)
{
// Avoid collision with PublicDispatcherActivity when selecting an
// account.
+ Log.i(TAG, "ON Account Loaded");
if (event.requestId == null || getCurrentSession() == null) { return; }
if (event.requestId == LoadAccountCompletedEvent.SWAP)
@@ -868,10 +877,10 @@ public void onAccountLoaded(LoadAccountCompletedEvent event)
ServiceRegistry registry = getCurrentSession().getServiceRegistry();
- ConfigManager config = ConfigManager.getInstance(this);
- if (!config.hasConfig(getCurrentAccount().getId()))
+ ConfigManager configManager = ConfigManager.getInstance(this);
+ if (!configManager.hasConfig(getCurrentAccount().getId()))
{
- config.init(getCurrentAccount());
+ configManager.init(getCurrentAccount());
}
if (registry instanceof AlfrescoServiceRegistry)
{
@@ -884,10 +893,14 @@ public void onAccountLoaded(LoadAccountCompletedEvent event)
}
else
{
- config.loadRemote(getCurrentAccount().getId(), ((AlfrescoServiceRegistry) registry).getConfigService());
+ configManager.loadRemote(getCurrentAccount().getId(),
+ ((AlfrescoServiceRegistry) registry).getConfigService());
+
+ // Check feature config
+ ConfigFeatureHelper.check(this, getCurrentAccount(), getCurrentSession());
}
}
- config.setSession(getCurrentAccount().getId(), getCurrentSession());
+ configManager.setSession(getCurrentAccount().getId(), getCurrentSession());
// Retrieve latest avatar
Operator.with(this).load(new AvatarRequest.Builder(getCurrentAccount().getUsername()));
@@ -996,7 +1009,6 @@ public void onAccountLoaded(LoadAccountCompletedEvent event)
}
invalidateOptionsMenu();
-
}
@Subscribe
@@ -1082,7 +1094,8 @@ else if (sessionState == SESSION_ERROR && getCurrentSession() == null)
}
invalidateOptionsMenu();
- // If connectivity is better (or reopen) we can try to sync all pending request
+ // If connectivity is better (or reopen) we can try to sync
+ // all pending request
if (getCurrentSession() != null && SyncContentManager.hasPendingSync(context, getCurrentAccount()))
{
if (!isSyncActive(AlfrescoAccountManager.getInstance(context)
diff --git a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/configuration/features/AbstractConfigFeature.java b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/configuration/features/AbstractConfigFeature.java
new file mode 100644
index 00000000..ac7957c3
--- /dev/null
+++ b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/configuration/features/AbstractConfigFeature.java
@@ -0,0 +1,228 @@
+/*
+ * Copyright (C) 2005-2016 Alfresco Software Limited.
+ *
+ * This file is part of Alfresco Mobile for Android.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.alfresco.mobile.android.application.configuration.features;
+
+import java.util.List;
+
+import org.alfresco.mobile.android.api.model.config.FeatureConfig;
+import org.alfresco.mobile.android.api.services.ConfigService;
+import org.alfresco.mobile.android.api.services.impl.AlfrescoServiceRegistry;
+import org.alfresco.mobile.android.api.session.AlfrescoSession;
+import org.alfresco.mobile.android.api.session.RepositorySession;
+import org.alfresco.mobile.android.platform.accounts.AlfrescoAccount;
+import org.alfresco.mobile.android.platform.accounts.AlfrescoAccountManager;
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.preference.PreferenceManager;
+
+/**
+ * Created by jpascal on 25/04/2016.
+ */
+public abstract class AbstractConfigFeature
+{
+
+ // ////////////////////////////////////////////////////
+ // SETTINGS
+ // ////////////////////////////////////////////////////
+ public static final int STATUS_BLOCKED = -1;
+
+ public static final int STATUS_DISABLE = 0;
+
+ public static final int STATUS_ENABLE = 1;
+
+ protected SharedPreferences.Editor editor;
+
+ protected Integer status = null;
+
+ protected final Activity activity;
+
+ // ////////////////////////////////////////////////////
+ // CONSTRUCTOR
+ // ////////////////////////////////////////////////////
+ public AbstractConfigFeature(Activity appContext)
+ {
+ this.activity = appContext;
+ }
+
+ // ///////////////////////////////////////////////////////////////////////////
+ // O
+ // ///////////////////////////////////////////////////////////////////////////
+ public void userProtectedByConfig(AlfrescoAccount account)
+ {
+ editor = PreferenceManager.getDefaultSharedPreferences(activity).edit();
+ editor.putInt(getFeaturePrefix() + account.getId(), STATUS_BLOCKED).apply();
+ status = getStatus();
+ }
+
+ public void userVisibileByConfig(AlfrescoAccount account)
+ {
+ editor = PreferenceManager.getDefaultSharedPreferences(activity).edit();
+ editor.putInt(getFeaturePrefix() + account.getId(), STATUS_ENABLE).apply();
+ status = getStatus();
+ }
+
+ public void enable()
+ {
+ setStatus(STATUS_ENABLE);
+ status = getStatus();
+ }
+
+ public void disable()
+ {
+ setStatus(STATUS_DISABLE);
+ status = getStatus();
+ }
+
+ public void cleanUserVisibility(AlfrescoAccount account)
+ {
+ if (editor == null)
+ {
+ editor = PreferenceManager.getDefaultSharedPreferences(activity).edit();
+ }
+ if (account != null)
+ {
+ editor.remove(getFeaturePrefix() + account.getId());
+ editor.apply();
+ }
+ status = getStatus();
+ }
+
+ private void changeUserVisibility(Context context, int value, AlfrescoAccount account)
+ {
+ if (editor == null)
+ {
+ editor = PreferenceManager.getDefaultSharedPreferences(context).edit();
+ }
+ if (account != null)
+ {
+ editor.putInt(getFeaturePrefix() + account.getId(), value);
+ editor.apply();
+ }
+ }
+
+ public boolean isEnable()
+ {
+ if (status == null)
+ {
+ getStatus();
+ }
+ return status == STATUS_ENABLE;
+ }
+
+ public boolean isEnable(AlfrescoAccount account)
+ {
+ return PreferenceManager.getDefaultSharedPreferences(activity).getInt(getFeaturePrefix() + account.getId(),
+ STATUS_ENABLE) == STATUS_ENABLE;
+ }
+
+ public boolean isProtected(AlfrescoAccount account)
+ {
+ return PreferenceManager.getDefaultSharedPreferences(activity).getInt(getFeaturePrefix() + account.getId(),
+ STATUS_ENABLE) == STATUS_BLOCKED;
+ }
+
+ public boolean isProtected()
+ {
+ if (status == null)
+ {
+ getStatus();
+ }
+ return status == STATUS_BLOCKED;
+ }
+
+ private int getStatus()
+ {
+ SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(activity);
+ List accounts = AlfrescoAccountManager.retrieveAccounts(activity);
+ int tempStatus = STATUS_ENABLE;
+ Integer resultStatus = null;
+ for (AlfrescoAccount account : accounts)
+ {
+ tempStatus = sharedPref.getInt(getFeaturePrefix() + account.getId(), STATUS_ENABLE);
+ switch (tempStatus)
+ {
+ case STATUS_BLOCKED:
+ status = STATUS_BLOCKED;
+ return STATUS_BLOCKED;
+ case STATUS_DISABLE:
+ resultStatus = STATUS_DISABLE;
+ break;
+ default:
+ continue;
+ }
+ }
+ status = resultStatus != null ? resultStatus : STATUS_ENABLE;
+ return status;
+ }
+
+ private void setStatus(int status)
+ {
+ List accounts = AlfrescoAccountManager.retrieveAccounts(activity);
+ for (AlfrescoAccount account : accounts)
+ {
+ changeUserVisibility(activity, status, account);
+ }
+ }
+
+ public abstract String getFeatureType();
+
+ public abstract String getFeaturePrefix();
+
+ public void check(AlfrescoSession session, AlfrescoAccount acc, FeatureConfig feature)
+ {
+ try
+ {
+ // Analytics
+ if (session instanceof RepositorySession && session.getServiceRegistry() instanceof AlfrescoServiceRegistry)
+ {
+ ConfigService configService = ((AlfrescoServiceRegistry) session.getServiceRegistry())
+ .getConfigService();
+ if (configService != null)
+ {
+ if (feature == null && isProtected(acc))
+ {
+ // When server config has been removed we revert
+ userVisibileByConfig(acc);
+ }
+ else if (feature != null)
+ {
+ checkFeatureState(feature, acc);
+ }
+ }
+ else if (isProtected(acc))
+ {
+ // When server config has been removed we revert analytics
+ // to true
+ userVisibileByConfig(acc);
+ }
+ }
+ }
+ catch (Exception e)
+ {
+ // DO Nothing
+ }
+ }
+
+ public void checkFeatureState(FeatureConfig feature, AlfrescoAccount acc)
+ {
+ }
+
+}
diff --git a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/configuration/features/ConfigFeatureHelper.java b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/configuration/features/ConfigFeatureHelper.java
new file mode 100644
index 00000000..f695a46f
--- /dev/null
+++ b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/configuration/features/ConfigFeatureHelper.java
@@ -0,0 +1,84 @@
+/*
+ * Copyright (C) 2005-2016 Alfresco Software Limited.
+ *
+ * This file is part of Alfresco Mobile for Android.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.alfresco.mobile.android.application.configuration.features;
+
+import java.util.List;
+
+import org.alfresco.mobile.android.api.constants.OnPremiseConstant;
+import org.alfresco.mobile.android.api.model.config.FeatureConfig;
+import org.alfresco.mobile.android.api.services.ConfigService;
+import org.alfresco.mobile.android.api.services.impl.AlfrescoServiceRegistry;
+import org.alfresco.mobile.android.api.session.AlfrescoSession;
+import org.alfresco.mobile.android.api.session.RepositorySession;
+import org.alfresco.mobile.android.platform.accounts.AlfrescoAccount;
+
+import android.app.Activity;
+
+/**
+ * Created by jpascal on 21/04/2016.
+ */
+public class ConfigFeatureHelper
+{
+ public static void check(Activity activity, AlfrescoAccount acc, AlfrescoSession session)
+ {
+ try
+ {
+ FeatureConfig passcodeFeature = null, cellularFeature = null, dataProtectionFeature = null;
+
+ if (session instanceof RepositorySession && session.getServiceRegistry() instanceof AlfrescoServiceRegistry)
+ {
+ ConfigService configService = ((AlfrescoServiceRegistry) session.getServiceRegistry())
+ .getConfigService();
+ if (configService != null)
+ {
+ List configs = configService.getFeatureConfig();
+
+ for (FeatureConfig feature : configs)
+ {
+ if (FeatureConfig.FEATURE_PASSCODE.equals(feature.getType()))
+ {
+ passcodeFeature = feature;
+ }
+ else if (FeatureConfig.FEATURE_CELLULAR_SYNC.equals(feature.getType()))
+ {
+ cellularFeature = feature;
+ }
+ else if (FeatureConfig.FEATURE_DATA_PROTECTION.equals(feature.getType()))
+ {
+ dataProtectionFeature = feature;
+ }
+ }
+ }
+
+ new PasscodeConfigFeature(activity).check(session, acc, passcodeFeature);
+ new SyncCellularConfigFeature(activity).check(session, acc, cellularFeature);
+
+ if (OnPremiseConstant.ALFRESCO_EDITION_ENTERPRISE.equals(session.getRepositoryInfo().getEdition()))
+ {
+ new DataProtectionConfigFeature(activity).check(session, acc, dataProtectionFeature);
+ }
+ }
+ }
+ catch (Exception e)
+ {
+ // DO Nothing
+ }
+ }
+
+}
diff --git a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/configuration/features/DataProtectionConfigFeature.java b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/configuration/features/DataProtectionConfigFeature.java
new file mode 100644
index 00000000..9afb4559
--- /dev/null
+++ b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/configuration/features/DataProtectionConfigFeature.java
@@ -0,0 +1,76 @@
+/*
+ * Copyright (C) 2005-2016 Alfresco Software Limited.
+ *
+ * This file is part of Alfresco Mobile for Android.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.alfresco.mobile.android.application.configuration.features;
+
+import org.alfresco.mobile.android.api.model.config.FeatureConfig;
+import org.alfresco.mobile.android.platform.accounts.AlfrescoAccount;
+import org.alfresco.mobile.android.platform.extensions.AnalyticsManager;
+import org.alfresco.mobile.android.platform.security.DataProtectionManager;
+
+import android.app.Activity;
+
+/**
+ * Created by jpascal on 25/04/2016.
+ */
+public class DataProtectionConfigFeature extends AbstractConfigFeature
+{
+ public DataProtectionConfigFeature(Activity appContext)
+ {
+ super(appContext);
+ }
+
+ @Override
+ public String getFeatureType()
+ {
+ return FeatureConfig.FEATURE_DATA_PROTECTION;
+ }
+
+ @Override
+ public String getFeaturePrefix()
+ {
+ return FeatureConfig.FEATURE_DATA_PROTECTION;
+ }
+
+ @Override
+ public void checkFeatureState(FeatureConfig feature, AlfrescoAccount acc)
+ {
+ // When analytics enable via server config
+ if (feature.isEnable() && !isProtected(acc))
+ {
+ userProtectedByConfig(acc);
+
+ // Request Data Protection
+ if (!DataProtectionManager.getInstance(activity).hasDataProtectionEnable())
+ {
+ DataProtectionManager.getInstance(activity).encrypt(acc);
+ }
+
+ AnalyticsManager.getInstance(activity).reportEvent(AnalyticsManager.CATEGORY_SETTINGS,
+ AnalyticsManager.ACTION_DATA_PROTECTION, AnalyticsManager.LABEL_ENABLE_BY_CONFIG, 1);
+ }
+ else if (!feature.isEnable() && isProtected(acc))
+ {
+ userVisibileByConfig(acc);
+
+ AnalyticsManager.getInstance(activity).reportEvent(AnalyticsManager.CATEGORY_SETTINGS,
+ AnalyticsManager.ACTION_DATA_PROTECTION, AnalyticsManager.LABEL_DISABLE_BY_CONFIG, 1);
+ }
+ }
+
+}
diff --git a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/configuration/features/PasscodeConfigFeature.java b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/configuration/features/PasscodeConfigFeature.java
new file mode 100644
index 00000000..e8d009d3
--- /dev/null
+++ b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/configuration/features/PasscodeConfigFeature.java
@@ -0,0 +1,81 @@
+/*
+ * Copyright (C) 2005-2016 Alfresco Software Limited.
+ *
+ * This file is part of Alfresco Mobile for Android.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.alfresco.mobile.android.application.configuration.features;
+
+import org.alfresco.mobile.android.api.model.config.FeatureConfig;
+import org.alfresco.mobile.android.application.fragments.preferences.PasscodePreferences;
+import org.alfresco.mobile.android.application.security.PassCodeActivity;
+import org.alfresco.mobile.android.platform.accounts.AlfrescoAccount;
+import org.alfresco.mobile.android.platform.extensions.AnalyticsManager;
+
+import android.app.Activity;
+import android.content.Intent;
+
+/**
+ * Created by jpascal on 25/04/2016.
+ */
+public class PasscodeConfigFeature extends AbstractConfigFeature
+{
+ public PasscodeConfigFeature(Activity appContext)
+ {
+ super(appContext);
+ }
+
+ @Override
+ public String getFeatureType()
+ {
+ return FeatureConfig.FEATURE_PASSCODE;
+ }
+
+ @Override
+ public String getFeaturePrefix()
+ {
+ return FeatureConfig.FEATURE_PASSCODE;
+ }
+
+ @Override
+ public void checkFeatureState(FeatureConfig feature, AlfrescoAccount acc)
+ {
+ // When analytics enable via server config
+ if (feature.isEnable() && !isProtected(acc))
+ {
+ userProtectedByConfig(acc);
+
+ // Request Passcode Definition
+
+ AnalyticsManager.getInstance(activity).reportEvent(AnalyticsManager.CATEGORY_SETTINGS,
+ AnalyticsManager.ACTION_PASSCODE, AnalyticsManager.LABEL_ENABLE_BY_CONFIG, 1);
+ }
+ else if (!feature.isEnable() && isProtected(acc))
+ {
+ userVisibileByConfig(acc);
+
+ AnalyticsManager.getInstance(activity).reportEvent(AnalyticsManager.CATEGORY_SETTINGS,
+ AnalyticsManager.ACTION_PASSCODE, AnalyticsManager.LABEL_DISABLE_BY_CONFIG, 1);
+ }
+
+ if (isProtected() && !PasscodePreferences.hasPasscode(activity))
+ {
+ Intent i = new Intent(activity, PassCodeActivity.class);
+ i.setAction(PassCodeActivity.REQUEST_DEFINE_PASSCODE);
+ activity.startActivityForResult(i, PassCodeActivity.REQUEST_CODE_PASSCODE);
+ }
+ }
+
+}
diff --git a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/configuration/features/SyncCellularConfigFeature.java b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/configuration/features/SyncCellularConfigFeature.java
new file mode 100644
index 00000000..7ebecb36
--- /dev/null
+++ b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/configuration/features/SyncCellularConfigFeature.java
@@ -0,0 +1,114 @@
+/*
+ * Copyright (C) 2005-2016 Alfresco Software Limited.
+ *
+ * This file is part of Alfresco Mobile for Android.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.alfresco.mobile.android.application.configuration.features;
+
+import org.alfresco.mobile.android.api.model.config.FeatureConfig;
+import org.alfresco.mobile.android.api.services.ConfigService;
+import org.alfresco.mobile.android.api.services.impl.AlfrescoServiceRegistry;
+import org.alfresco.mobile.android.api.session.AlfrescoSession;
+import org.alfresco.mobile.android.api.session.RepositorySession;
+import org.alfresco.mobile.android.platform.accounts.AlfrescoAccount;
+import org.alfresco.mobile.android.platform.extensions.AnalyticsManager;
+import org.alfresco.mobile.android.sync.SyncContentManager;
+
+import android.app.Activity;
+
+/**
+ * Created by jpascal on 25/04/2016.
+ */
+public class SyncCellularConfigFeature extends AbstractConfigFeature
+{
+ public SyncCellularConfigFeature(Activity appContext)
+ {
+ super(appContext);
+ }
+
+ @Override
+ public String getFeatureType()
+ {
+ return FeatureConfig.FEATURE_CELLULAR_SYNC;
+ }
+
+ @Override
+ public String getFeaturePrefix()
+ {
+ return FeatureConfig.FEATURE_CELLULAR_SYNC;
+ }
+
+ @Override
+ public void check(AlfrescoSession session, AlfrescoAccount acc, FeatureConfig feature)
+ {
+ try
+ {
+ // Analytics
+ if (session instanceof RepositorySession && session.getServiceRegistry() instanceof AlfrescoServiceRegistry)
+ {
+ ConfigService configService = ((AlfrescoServiceRegistry) session.getServiceRegistry())
+ .getConfigService();
+ if (configService != null)
+ {
+ if (feature == null && isProtected(acc))
+ {
+ // When server config has been removed we revert
+ userVisibileByConfig(acc);
+ }
+ else if (feature != null)
+ {
+ checkFeatureState(feature, acc);
+ }
+ }
+ else if (isProtected(acc))
+ {
+ // When server config has been removed we revert user
+ // visibility
+ userVisibileByConfig(acc);
+ }
+ }
+ }
+ catch (Exception e)
+ {
+ // DO Nothing
+ }
+ }
+
+ @Override
+ public void checkFeatureState(FeatureConfig feature, AlfrescoAccount acc)
+ {
+ // When analytics enable via server config
+ if (feature.isEnable() && !isEnable(acc))
+ {
+ userVisibileByConfig(acc);
+ }
+ // When analytics disable via server config
+ else if (!feature.isEnable())
+ {
+ if (isEnable())
+ {
+ AnalyticsManager.getInstance(activity).reportEvent(AnalyticsManager.CATEGORY_SETTINGS,
+ AnalyticsManager.ACTION_SYNC_CELLULAR, AnalyticsManager.LABEL_DISABLE_BY_CONFIG, 1);
+ }
+
+ if (!isProtected(acc))
+ {
+ userProtectedByConfig(acc);
+ SyncContentManager.getInstance(activity).setWifiOnlySync(acc, true);
+ }
+ }
+ }
+}
diff --git a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/preferences/AccountSettingsFragment.java b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/preferences/AccountSettingsFragment.java
index d0d4dbdd..af821f0e 100644
--- a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/preferences/AccountSettingsFragment.java
+++ b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/preferences/AccountSettingsFragment.java
@@ -28,6 +28,7 @@
import org.alfresco.mobile.android.application.activity.BaseActivity;
import org.alfresco.mobile.android.application.activity.BaseAppCompatActivity;
import org.alfresco.mobile.android.application.activity.WelcomeActivity;
+import org.alfresco.mobile.android.application.configuration.features.SyncCellularConfigFeature;
import org.alfresco.mobile.android.application.fragments.DisplayUtils;
import org.alfresco.mobile.android.application.fragments.FragmentDisplayer;
import org.alfresco.mobile.android.application.fragments.account.AccountEditFragment;
@@ -253,6 +254,13 @@ public void onClick(View v)
}
});
}
+
+ SyncCellularConfigFeature feature = new SyncCellularConfigFeature(getActivity());
+ if (feature.isProtected(account))
+ {
+ syncFavoritesVH.bottomText.setText(R.string.mdm_managed);
+ syncFavoritesVH.choose.setEnabled(false);
+ }
}
// ///////////////////////////////////////////////////////////////////////////
@@ -534,6 +542,13 @@ private void setCurrentAccount(AlfrescoAccount account)
}
}
+ // ///////////////////////////////////////////////////////////////////////////
+ // CONFIG
+ // ///////////////////////////////////////////////////////////////////////////
+ private void getSyncWifi()
+ {
+ }
+
// ///////////////////////////////////////////////////////////////////////////
// BUILDER
// ///////////////////////////////////////////////////////////////////////////
diff --git a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/preferences/GeneralPreferences.java b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/preferences/GeneralPreferences.java
index 88cefd6a..3b7cfb26 100644
--- a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/preferences/GeneralPreferences.java
+++ b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/preferences/GeneralPreferences.java
@@ -25,6 +25,8 @@
import org.alfresco.mobile.android.application.activity.MainActivity;
import org.alfresco.mobile.android.application.activity.PrivateDialogActivity;
import org.alfresco.mobile.android.application.activity.WelcomeActivity;
+import org.alfresco.mobile.android.application.configuration.features.DataProtectionConfigFeature;
+import org.alfresco.mobile.android.application.configuration.features.PasscodeConfigFeature;
import org.alfresco.mobile.android.application.fragments.about.AboutFragment;
import org.alfresco.mobile.android.application.fragments.account.AccountsAdapter;
import org.alfresco.mobile.android.application.fragments.builder.LeafFragmentBuilder;
@@ -289,25 +291,36 @@ public void onClick(View v)
? R.string.data_protection_on : R.string.data_protection_off);
}
- viewById(R.id.settings_privatefolder_container).setOnClickListener(new View.OnClickListener()
+ DataProtectionConfigFeature feature = new DataProtectionConfigFeature(getActivity());
+ if (feature.isProtected())
{
- @Override
- public void onClick(View v)
+ viewById(R.id.settings_privatefolder_container).setFocusable(false);
+ viewById(R.id.settings_privatefolder_container).setClickable(false);
+ viewById(R.id.settings_privatefolder_container).setEnabled(false);
+ dataProtectionVH.bottomText.setText(R.string.mdm_managed);
+ }
+ else if (sharedPref.getBoolean(HAS_ACCESSED_PAID_SERVICES, false))
+ {
+ viewById(R.id.settings_privatefolder_container).setOnClickListener(new View.OnClickListener()
{
- final File folder = AlfrescoStorageManager.getInstance(getActivity()).getPrivateFolder("", null);
- if (folder != null)
- {
- DataProtectionUserDialogFragment.newInstance(false).show(getActivity().getSupportFragmentManager(),
- DataProtectionUserDialogFragment.TAG);
- }
- else
+ @Override
+ public void onClick(View v)
{
- AlfrescoNotificationManager.getInstance(getActivity())
- .showLongToast(getString(R.string.sdinaccessible));
- }
+ final File folder = AlfrescoStorageManager.getInstance(getActivity()).getPrivateFolder("", null);
+ if (folder != null)
+ {
+ DataProtectionUserDialogFragment.newInstance(false)
+ .show(getActivity().getSupportFragmentManager(), DataProtectionUserDialogFragment.TAG);
+ }
+ else
+ {
+ AlfrescoNotificationManager.getInstance(getActivity())
+ .showLongToast(getString(R.string.sdinaccessible));
+ }
- }
- });
+ }
+ });
+ }
// PASSCODE
passcodeVH = HolderUtils.configure(viewById(R.id.passcode_preference), getString(R.string.passcode_title),
@@ -329,6 +342,12 @@ public void onClick(View v)
}
});
+ PasscodeConfigFeature passcodeConfig = new PasscodeConfigFeature(getActivity());
+ if (passcodeConfig.isProtected())
+ {
+ passcodeVH.bottomText.setText(R.string.mdm_managed);
+ }
+
// In case of MDM we disable all enterprise feature
if (mdmManager.hasConfig())
{
@@ -379,9 +398,9 @@ public void onClick(View v)
}
}
- private void startPlayStore()
+ private void retrieveServerConfigFeature()
{
- ActionUtils.startPlayStore(getActivity(), getString(R.string.settings_rating_packagename));
+
}
// ///////////////////////////////////////////////////////////////////////////
diff --git a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/preferences/PasscodePreferences.java b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/preferences/PasscodePreferences.java
index 09405dcf..403ea1b8 100644
--- a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/preferences/PasscodePreferences.java
+++ b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/preferences/PasscodePreferences.java
@@ -26,6 +26,7 @@
import org.alfresco.mobile.android.application.R;
import org.alfresco.mobile.android.application.activity.MainActivity;
import org.alfresco.mobile.android.application.activity.WelcomeActivity;
+import org.alfresco.mobile.android.application.configuration.features.PasscodeConfigFeature;
import org.alfresco.mobile.android.application.fragments.builder.LeafFragmentBuilder;
import org.alfresco.mobile.android.application.security.PassCodeActivity;
import org.alfresco.mobile.android.application.security.PassCodeDialogFragment;
@@ -174,8 +175,8 @@ public void onClick(View v)
passcodeTimeoutVH = HolderUtils.configure(viewById(R.id.passcode_timeout),
getString(R.string.passcode_timeout_title), getString(R.string.passcode_timeout_title), -1);
int minutes = Math.round(timeout / ONE_MINUTE);
- passcodeTimeoutVH.bottomText.setText(String.format(
- MessageFormat.format(getString(R.string.passcode_timeout_summary), minutes), minutes));
+ passcodeTimeoutVH.bottomText.setText(
+ String.format(MessageFormat.format(getString(R.string.passcode_timeout_summary), minutes), minutes));
HolderUtils.makeMultiLine(passcodeTimeoutVH.bottomText, 3);
if (passcodeEnable)
@@ -188,21 +189,20 @@ public void onClick(View v)
MaterialDialog.Builder builder = new MaterialDialog.Builder(getActivity()).cancelable(false)
.title(R.string.passcode_timeout_title).items(R.array.passcode_timeout_entries)
.itemsCallbackSingleChoice(index, new MaterialDialog.ListCallbackSingleChoice()
- {
- @Override
- public boolean onSelection(MaterialDialog dialog, View view, int which,
- CharSequence text)
- {
- String newValue = getResources().getStringArray(R.array.passcode_timeout_values)[which];
- index = which;
+ {
+ @Override
+ public boolean onSelection(MaterialDialog dialog, View view, int which, CharSequence text)
+ {
+ String newValue = getResources().getStringArray(R.array.passcode_timeout_values)[which];
+ index = which;
sharedPref.edit().putString(KEY_PASSCODE_TIMEOUT, (String) newValue).apply();
- int minutes = Math.round(Long.parseLong((String) newValue) / ONE_MINUTE);
- passcodeTimeoutVH.bottomText.setText(String.format(
- MessageFormat.format(getString(R.string.passcode_timeout_summary), minutes),
- minutes));
- return true;
- }
- }).negativeText(R.string.cancel);
+ int minutes = Math.round(Long.parseLong((String) newValue) / ONE_MINUTE);
+ passcodeTimeoutVH.bottomText.setText(String.format(
+ MessageFormat.format(getString(R.string.passcode_timeout_summary), minutes),
+ minutes));
+ return true;
+ }
+ }).negativeText(R.string.cancel);
builder.show();
}
});
@@ -255,6 +255,10 @@ public void onClick(View v)
// PASSCODE ENABLE
passcodeEnableVH = HolderUtils.configure(viewById(R.id.passcode_enable_key),
getString(R.string.passcode_enable_title), -1, passcodeEnable);
+
+ PasscodeConfigFeature feature = new PasscodeConfigFeature(getActivity());
+ passcodeEnableVH.switcher.setEnabled(!feature.isProtected());
+
passcodeEnableVH.switcher.setOnClickListener(new View.OnClickListener()
{
@Override
diff --git a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/security/PassCodeActivity.java b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/security/PassCodeActivity.java
index 50be2b37..1e036acb 100644
--- a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/security/PassCodeActivity.java
+++ b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/security/PassCodeActivity.java
@@ -18,6 +18,7 @@
package org.alfresco.mobile.android.application.security;
import org.alfresco.mobile.android.application.R;
+import org.alfresco.mobile.android.application.configuration.features.PasscodeConfigFeature;
import org.alfresco.mobile.android.application.fragments.FragmentDisplayer;
import org.alfresco.mobile.android.application.fragments.preferences.PasscodePreferences;
@@ -30,6 +31,8 @@ public class PassCodeActivity extends FragmentActivity
{
public static final int REQUEST_CODE_PASSCODE = 48976;
+ public static final String REQUEST_DEFINE_PASSCODE = "definePasscode";
+
// ///////////////////////////////////////////
// LIFECYCLE
// ///////////////////////////////////////////
@@ -42,14 +45,29 @@ public void onCreate(Bundle savedInstanceState)
if (getSupportFragmentManager().findFragmentByTag(PassCodeDialogFragment.TAG) == null)
{
- PassCodeDialogFragment f = PassCodeDialogFragment.requestPasscode();
+ PassCodeDialogFragment f;
+ if (getIntent() != null && getIntent().getAction() != null)
+ {
+ f = PassCodeDialogFragment.define();
+ }
+ else
+ {
+ f = PassCodeDialogFragment.requestPasscode();
+ }
FragmentDisplayer.with(this).load(f).back(false).animate(null).into(FragmentDisplayer.PANEL_LEFT);
}
}
public static void requestUserPasscode(FragmentActivity activity)
{
- if (PasscodePreferences.hasPasscodeEnable(activity))
+ PasscodeConfigFeature feature = new PasscodeConfigFeature(activity);
+ if (feature.isProtected() && !PasscodePreferences.hasPasscode(activity))
+ {
+ Intent i = new Intent(activity, PassCodeActivity.class);
+ i.setAction(REQUEST_DEFINE_PASSCODE);
+ activity.startActivityForResult(i, REQUEST_CODE_PASSCODE);
+ }
+ else if (PasscodePreferences.hasPasscodeEnable(activity))
{
activity.startActivityForResult(new Intent(activity, PassCodeActivity.class), REQUEST_CODE_PASSCODE);
}
diff --git a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/security/PassCodeDialogFragment.java b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/security/PassCodeDialogFragment.java
index 01e94c86..d2a97a76 100644
--- a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/security/PassCodeDialogFragment.java
+++ b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/security/PassCodeDialogFragment.java
@@ -58,6 +58,10 @@ public class PassCodeDialogFragment extends DialogFragment
{
public static final String ARGUMENT_MODE = "Mode";
+ public static final String ARGUMENT_INFO = "info";
+
+ public static final int MODE_INFO = 1;
+
public static final int MODE_CREATE = 1;
public static final int MODE_UPDATE = 2;
@@ -110,6 +114,16 @@ public static PassCodeDialogFragment enable()
return fragment;
}
+ public static PassCodeDialogFragment define()
+ {
+ PassCodeDialogFragment fragment = new PassCodeDialogFragment();
+ Bundle b = new Bundle();
+ b.putInt(ARGUMENT_MODE, MODE_CREATE);
+ b.putInt(ARGUMENT_INFO, MODE_INFO);
+ fragment.setArguments(b);
+ return fragment;
+ }
+
public static PassCodeDialogFragment modify()
{
PassCodeDialogFragment fragment = new PassCodeDialogFragment();
@@ -144,6 +158,17 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa
final View v = inflater.inflate(R.layout.app_passcode, (ViewGroup) this.getView());
title = (TextView) v.findViewById(R.id.passcode_hint);
+
+ if (getArguments().containsKey(ARGUMENT_INFO))
+ {
+ ((TextView) v.findViewById(R.id.passcode_admin)).setText(R.string.passcode_admin_title);
+ v.findViewById(R.id.passcode_admin).setVisibility(View.VISIBLE);
+ }
+ else
+ {
+
+ }
+
errorMessage = (TextView) v.findViewById(R.id.passcode_error);
passwordEditText = (EditText) v.findViewById(R.id.passcode);
@@ -162,7 +187,8 @@ public void onClick(View v)
});
int[] ids = new int[] { R.id.keyboard_0, R.id.keyboard_1, R.id.keyboard_2, R.id.keyboard_3, R.id.keyboard_4,
- R.id.keyboard_5, R.id.keyboard_6, R.id.keyboard_7, R.id.keyboard_8, R.id.keyboard_9, R.id.keyboard_back };
+ R.id.keyboard_5, R.id.keyboard_6, R.id.keyboard_7, R.id.keyboard_8, R.id.keyboard_9,
+ R.id.keyboard_back };
Button key = null;
for (int i = 0; i < ids.length; i++)
@@ -173,8 +199,7 @@ public void onClick(View v)
return v;
}
-
-
+
@Override
public void onResume()
{
@@ -189,9 +214,8 @@ public void onResume()
}
if (getDialog() != null)
{
- getActivity().getWindow().setSoftInputMode(
- WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE
- | WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
+ getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE
+ | WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
UIUtils.hideKeyboard(getActivity());
}
}
@@ -345,9 +369,16 @@ else if (needConfirmation && getUserPassCode(true) != null)
errorMessage.setVisibility(View.INVISIBLE);
if (getActivity().getSupportFragmentManager().findFragmentByTag(PasscodePreferences.TAG) != null)
{
- ((PasscodePreferences) getActivity().getSupportFragmentManager().findFragmentByTag(
- PasscodePreferences.TAG))
- .refresh();
+ ((PasscodePreferences) getActivity().getSupportFragmentManager()
+ .findFragmentByTag(PasscodePreferences.TAG)).refresh();
+ }
+ else
+ {
+ editor.putLong(KEY_PASSCODE_ACTIVATED_AT, -1);
+ editor.remove(KEY_PASSCODE_ATTEMPT);
+ editor.apply();
+ getActivity().setResult(FragmentActivity.RESULT_OK);
+ getActivity().finish();
}
}
else
@@ -374,9 +405,8 @@ private void delete()
errorMessage.setVisibility(View.INVISIBLE);
if (getActivity().getSupportFragmentManager().findFragmentByTag(PasscodePreferences.TAG) != null)
{
- ((PasscodePreferences) getActivity().getSupportFragmentManager().findFragmentByTag(
- PasscodePreferences.TAG))
- .refresh();
+ ((PasscodePreferences) getActivity().getSupportFragmentManager()
+ .findFragmentByTag(PasscodePreferences.TAG)).refresh();
}
}
else
diff --git a/alfresco-mobile-android/src/main/res/layout/app_passcode_simple.xml b/alfresco-mobile-android/src/main/res/layout/app_passcode_simple.xml
index 0c96d35c..bc7d4fc1 100644
--- a/alfresco-mobile-android/src/main/res/layout/app_passcode_simple.xml
+++ b/alfresco-mobile-android/src/main/res/layout/app_passcode_simple.xml
@@ -1,4 +1,22 @@
+
+
+
+
Enter Passcode
+ Your Alfresco Administrator requires you to protect Alfresco Mobile with a Passcode.Enable PasscodePasscode ProtectionEnabled
diff --git a/platform/foundation/src/main/java/org/alfresco/mobile/android/api/model/config/FeatureConfig.java b/platform/foundation/src/main/java/org/alfresco/mobile/android/api/model/config/FeatureConfig.java
index 2429fd8a..1e599cbd 100644
--- a/platform/foundation/src/main/java/org/alfresco/mobile/android/api/model/config/FeatureConfig.java
+++ b/platform/foundation/src/main/java/org/alfresco/mobile/android/api/model/config/FeatureConfig.java
@@ -29,7 +29,27 @@ public interface FeatureConfig extends ItemConfig
// ///////////////////////////////////////////////////////////////////////////
String PREFIX_FEATURE = "org.alfresco.client.feature";
+ // If ON ==> user can define the value
+ // If OFF ==> analytics is OFF
String FEATURE_ANALYTICS = PREFIX_FEATURE.concat(".analytics");
+ // If ON ==> data protection is activated and cant be changed
+ // If OFF ==> user can define the value
+ // If ON then OFF ==> protection is still active but can be deactivated by
+ // the user.
+ String FEATURE_DATA_PROTECTION = PREFIX_FEATURE.concat(".data.protection");
+
+ // If ON ==> passcode is activated by default and cant be changed
+ // If OFF ==> user can define the value
+ // If ON then OFF ==> passcode is still active but can be deactivated by the
+ // user.
+ String FEATURE_PASSCODE = PREFIX_FEATURE.concat(".passcode");
+
+ // If ON ==> user can define the value
+ // If OFF ==> cellular sync is OFF / Sync only on Wifi and cant be changed
+ // If OFF then ON ==> cellular sync is still OFF but can be reactivated by
+ // the user.
+ String FEATURE_CELLULAR_SYNC = PREFIX_FEATURE.concat(".sync.cellular");
+
boolean isEnable();
}
diff --git a/platform/foundation/src/main/java/org/alfresco/mobile/android/platform/extensions/AnalyticsHelper.java b/platform/foundation/src/main/java/org/alfresco/mobile/android/platform/extensions/AnalyticsHelper.java
index e31f6df2..51e26777 100644
--- a/platform/foundation/src/main/java/org/alfresco/mobile/android/platform/extensions/AnalyticsHelper.java
+++ b/platform/foundation/src/main/java/org/alfresco/mobile/android/platform/extensions/AnalyticsHelper.java
@@ -280,6 +280,7 @@ else if (!feature.isEnable())
AnalyticsManager.getInstance(context).optOutByConfig(context, acc);
}
}
+ break;
}
}
}
diff --git a/platform/foundation/src/main/java/org/alfresco/mobile/android/platform/extensions/AnalyticsManager.java b/platform/foundation/src/main/java/org/alfresco/mobile/android/platform/extensions/AnalyticsManager.java
index e817a2bc..44eb9ee1 100644
--- a/platform/foundation/src/main/java/org/alfresco/mobile/android/platform/extensions/AnalyticsManager.java
+++ b/platform/foundation/src/main/java/org/alfresco/mobile/android/platform/extensions/AnalyticsManager.java
@@ -95,6 +95,12 @@ public abstract class AnalyticsManager extends Manager
public static final String ACTION_ANALYTICS = "Analytics";
+ public static final String ACTION_SYNC_CELLULAR = "Sync Cellular";
+
+ public static final String ACTION_DATA_PROTECTION = "Data Protection";
+
+ public static final String ACTION_PASSCODE = "Passcode";
+
public static final String ACTION_FAVORITE = "Favorite";
public static final String ACTION_UNFAVORITE = "UnFavorite";
@@ -176,6 +182,8 @@ public abstract class AnalyticsManager extends Manager
public static final String LABEL_DISABLE = "Disable";
+ public static final String LABEL_ENABLE_BY_CONFIG = "Enable By Config";
+
public static final String LABEL_DISABLE_BY_CONFIG = "Disable By Config";
public static final String LABEL_JOIN = "Join";
diff --git a/platform/foundation/src/main/java/org/alfresco/mobile/android/ui/activity/AlfrescoActivity.java b/platform/foundation/src/main/java/org/alfresco/mobile/android/ui/activity/AlfrescoActivity.java
index 30794f20..eb8c3276 100644
--- a/platform/foundation/src/main/java/org/alfresco/mobile/android/ui/activity/AlfrescoActivity.java
+++ b/platform/foundation/src/main/java/org/alfresco/mobile/android/ui/activity/AlfrescoActivity.java
@@ -290,22 +290,6 @@ public void cleanUp()
// ////////////////////////////////////////////////////////
// BROADCAST RECEIVER
// ///////////////////////////////////////////////////////
- /**
- * Register a broadcast receiver to this specific activity. If used this
- * methods is responsible to unregister the receiver during on stop().
- *
- * @param receiver
- * @param filter
- */
- public void registerPrivateReceiver(BroadcastReceiver receiver, IntentFilter filter)
- {
- if (receiver != null && filter != null)
- {
- broadcastManager.registerReceiver(receiver, filter);
- receivers.add(receiver);
- }
- }
-
public void registerPublicReceiver(BroadcastReceiver receiver, IntentFilter filter)
{
if (receiver != null && filter != null)
From da9037192e075d78ee92fda973354bdb39014c0f Mon Sep 17 00:00:00 2001
From: jmpascal
Date: Wed, 27 Apr 2016 11:18:28 +0200
Subject: [PATCH 12/25] Quick Fix
---
.../ui/form/fields/BooleanField.java | 20 ++++++++++++++++++-
1 file changed, 19 insertions(+), 1 deletion(-)
diff --git a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/ui/form/fields/BooleanField.java b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/ui/form/fields/BooleanField.java
index f20709f0..d187dd04 100644
--- a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/ui/form/fields/BooleanField.java
+++ b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/ui/form/fields/BooleanField.java
@@ -1,3 +1,21 @@
+/*
+ * Copyright (C) 2005-2016 Alfresco Software Limited.
+ *
+ * This file is part of Alfresco Mobile for Android.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
package org.alfresco.mobile.android.application.ui.form.fields;
import org.alfresco.mobile.android.api.model.Property;
@@ -81,7 +99,7 @@ public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
// ///////////////////////////////////////////////////////////////////////////
public boolean isValid()
{
- if (isRequired && (getEditionValue() != null && getEditionValue() == true)) { return true; }
+ if (isRequired && (getEditionValue() != null && ((Boolean) getEditionValue()))) { return true; }
return false;
}
From 77fb8d736aadddd0937f31e5a454e763ba24400a Mon Sep 17 00:00:00 2001
From: jmpascal
Date: Tue, 3 May 2016 10:30:18 +0200
Subject: [PATCH 13/25] ANDROID-283
---
.../node/details/NodeDetailsFragment.java | 38 +++---
.../res/layout/fr_node_details_header.xml | 115 +++++++++++-------
extensions/tools/build.gradle | 2 +-
3 files changed, 92 insertions(+), 63 deletions(-)
diff --git a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/node/details/NodeDetailsFragment.java b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/node/details/NodeDetailsFragment.java
index 3d52aeaa..40d94919 100644
--- a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/node/details/NodeDetailsFragment.java
+++ b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/node/details/NodeDetailsFragment.java
@@ -683,6 +683,25 @@ public void onClick(View v)
b.setVisibility(View.GONE);
}
hideActionIfNecessary(b, ConfigurableActionHelper.ACTION_NODE_SHARE);
+
+ b = (ImageView) viewById(R.id.action_open_in_alfresco_editor);
+ String mimetype = ((Document) node).getContentStreamMimeType();
+ if (node.isDocument() && !TextUtils.isEmpty(mimetype) && mimetype.startsWith(MimeType.TYPE_TEXT))
+ {
+ b.setOnClickListener(new OnClickListener()
+ {
+ @Override
+ public void onClick(View v)
+ {
+ openin(true);
+ }
+ });
+ }
+ else
+ {
+ b.setVisibility(View.GONE);
+ }
+ hideActionIfNecessary(b, ConfigurableActionHelper.ACTION_NODE_EDIT);
}
protected void displayTabs()
@@ -1211,22 +1230,6 @@ public void getMenu(Context context, AlfrescoSession session, Menu menu, Node no
mi.setIcon(R.drawable.ic_start_review);
mi.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
}
-
- try
- {
- String mimetype = ((Document) node).getContentStreamMimeType();
- if (!TextUtils.isEmpty(mimetype) && mimetype.startsWith(MimeType.TYPE_TEXT))
- {
- mi = menu.add(Menu.NONE, R.id.menu_action_open_with_alfresco_editor, Menu.FIRST + 50,
- R.string.open_in_alfresco_editor);
- mi.setIcon(R.drawable.ic_edit);
- mi.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
- }
- }
- catch (Exception e)
- {
-
- }
}
if (session == null) { return; }
@@ -1302,9 +1305,6 @@ public boolean onOptionsItemSelected(MenuItem item)
node.getProperty(ContentModel.PROP_LATITUDE).getValue().toString(),
node.getProperty(ContentModel.PROP_LONGITUDE).getValue().toString());
return true;
- case R.id.menu_action_open_with_alfresco_editor:
- openin(true);
- return true;
case R.id.menu_workflow_add:
Intent in = new Intent(PrivateIntent.ACTION_START_PROCESS, null, getActivity(),
PrivateDialogActivity.class);
diff --git a/alfresco-mobile-android/src/main/res/layout/fr_node_details_header.xml b/alfresco-mobile-android/src/main/res/layout/fr_node_details_header.xml
index f743b6f3..12533f4b 100644
--- a/alfresco-mobile-android/src/main/res/layout/fr_node_details_header.xml
+++ b/alfresco-mobile-android/src/main/res/layout/fr_node_details_header.xml
@@ -1,4 +1,22 @@
+
+
-
-
+
-
+
-
+
+ android:contentDescription="@string/sync_mark"
+ android:src="@drawable/ic_sync_light" />
-
-
+ android:layout_height="wrap_content"
+ android:gravity="center">
-
+
-
+
+
+ android:contentDescription="@string/share"
+ android:src="@drawable/ic_share" />
-
-
-
+ android:layout_height="wrap_content"
+ android:gravity="center">
+
+
+
+
+
+
+
diff --git a/extensions/tools/build.gradle b/extensions/tools/build.gradle
index 67b52eb8..1144b4b3 100644
--- a/extensions/tools/build.gradle
+++ b/extensions/tools/build.gradle
@@ -20,7 +20,7 @@ apply plugin: 'com.android.library'
android {
compileSdkVersion 23
- buildToolsVersion "23.0.1"
+ buildToolsVersion "23.0.2"
defaultConfig {
minSdkVersion 15
From 9826e8019712fe72cd5c12c00d00652a6afcbdab Mon Sep 17 00:00:00 2001
From: jmpascal
Date: Tue, 3 May 2016 11:06:17 +0200
Subject: [PATCH 14/25] ANDROID-307
---
.../managers/extensions/AnalyticHelper.java | 51 ++++++++++++++-----
.../platform/extensions/AnalyticsManager.java | 14 +++++
2 files changed, 53 insertions(+), 12 deletions(-)
diff --git a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/managers/extensions/AnalyticHelper.java b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/managers/extensions/AnalyticHelper.java
index fdebabfe..e4fb9029 100644
--- a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/managers/extensions/AnalyticHelper.java
+++ b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/managers/extensions/AnalyticHelper.java
@@ -21,6 +21,7 @@
import java.util.List;
import org.alfresco.mobile.android.api.model.config.ProfileConfig;
+import org.alfresco.mobile.android.api.services.ConfigService;
import org.alfresco.mobile.android.api.session.AlfrescoSession;
import org.alfresco.mobile.android.application.fragments.preferences.PasscodePreferences;
import org.alfresco.mobile.android.application.managers.ConfigManager;
@@ -110,11 +111,6 @@ public static void analyzeSession(Context context, AlfrescoAccount account, Alfr
for (int i = 0; i < syncInfo.size(); i++)
{
int key = syncInfo.keyAt(i);
- if (key == AnalyticsManager.INDEX_SYNCED_FILES)
- {
- customDimensions.append(AnalyticsManager.INDEX_SYNC_FILE_COUNT,
- getSyncFileLabel(syncInfo.get(key)));
- }
customMetrics.append(key, syncInfo.get(key));
}
@@ -122,7 +118,9 @@ public static void analyzeSession(Context context, AlfrescoAccount account, Alfr
customMetrics.append(AnalyticsManager.INDEX_LOCAL_FILES, getDownloadedFilesCount(context, account));
// Profiles
- customMetrics.append(AnalyticsManager.INDEX_PROFILES, getProfilesCount(context, account));
+ Long profileCount = getProfilesCount(context, account);
+ customMetrics.append(AnalyticsManager.INDEX_PROFILES, profileCount);
+ customDimensions.append(AnalyticsManager.INDEX_PROFILE_COUNT, getProfileLabel(profileCount));
AnalyticsManager.getInstance(context).reportInfo(AnalyticsManager.ACTION_INFO, customDimensions,
customMetrics);
@@ -141,11 +139,18 @@ protected static Long getProfilesCount(Context context, AlfrescoAccount account)
if (ConfigManager.getInstance(context) != null
&& ConfigManager.getInstance(context).hasConfig(account.getId()))
{
- List profileListing = ConfigManager.getInstance(context).getConfig(account.getId())
- .getProfiles();
- size = profileListing.size();
- }
+ ConfigService remoteConfig = ConfigManager.getInstance(context).getRemoteConfig(account.getId());
+ if (remoteConfig != null)
+ {
+ // Number of profiles
+ List profileListing = ConfigManager.getInstance(context).getConfig(account.getId())
+ .getProfiles();
+ size = profileListing.size();
+
+ // Profile Usage TBD
+ }
+ }
}
catch (Exception e)
{
@@ -154,9 +159,30 @@ protected static Long getProfilesCount(Context context, AlfrescoAccount account)
return (long) size;
}
+ protected static String getProfileLabel(Long valueLong)
+ {
+ if (valueLong == null) { return AnalyticsManager.INDEX_PROFILE_COUNT_0; }
+ switch (valueLong.intValue())
+ {
+ case 0:
+ return AnalyticsManager.INDEX_PROFILE_COUNT_0;
+ case 1:
+ return AnalyticsManager.INDEX_PROFILE_COUNT_1;
+ case 2:
+ return AnalyticsManager.INDEX_PROFILE_COUNT_2;
+ case 3:
+ return AnalyticsManager.INDEX_PROFILE_COUNT_3;
+ case 4:
+ return AnalyticsManager.INDEX_PROFILE_COUNT_4;
+ case 5:
+ return AnalyticsManager.INDEX_PROFILE_COUNT_5;
+ default:
+ return AnalyticsManager.INDEX_PROFILE_COUNT_5;
+ }
+ }
+
protected static String getAccountLabel(int value)
{
- String label = AnalyticsManager.INDEX_ACCOUNT_COUNT_1;
switch (value)
{
case 1:
@@ -169,8 +195,9 @@ protected static String getAccountLabel(int value)
return AnalyticsManager.INDEX_ACCOUNT_COUNT_4;
case 5:
return AnalyticsManager.INDEX_ACCOUNT_COUNT_5;
+ default:
+ return AnalyticsManager.INDEX_ACCOUNT_COUNT_5;
}
- return label;
}
protected static String getSyncFileLabel(long value)
diff --git a/platform/foundation/src/main/java/org/alfresco/mobile/android/platform/extensions/AnalyticsManager.java b/platform/foundation/src/main/java/org/alfresco/mobile/android/platform/extensions/AnalyticsManager.java
index 44eb9ee1..6a6edb2d 100644
--- a/platform/foundation/src/main/java/org/alfresco/mobile/android/platform/extensions/AnalyticsManager.java
+++ b/platform/foundation/src/main/java/org/alfresco/mobile/android/platform/extensions/AnalyticsManager.java
@@ -256,6 +256,20 @@ public abstract class AnalyticsManager extends Manager
public static final String INDEX_ACCOUNT_COUNT_5 = "5+";
+ public static final int INDEX_PROFILE_COUNT = 4;
+
+ public static final String INDEX_PROFILE_COUNT_0 = "0";
+
+ public static final String INDEX_PROFILE_COUNT_1 = "1";
+
+ public static final String INDEX_PROFILE_COUNT_2 = "2";
+
+ public static final String INDEX_PROFILE_COUNT_3 = "3";
+
+ public static final String INDEX_PROFILE_COUNT_4 = "4";
+
+ public static final String INDEX_PROFILE_COUNT_5 = "5+";
+
///////////////////////////////////////////////////////////
// CUSTOM METRICS
///////////////////////////////////////////////////////////
From f42763924d04e4d17a9b715a2e1dca9e5893c9d9 Mon Sep 17 00:00:00 2001
From: jmpascal
Date: Mon, 9 May 2016 14:37:44 +0200
Subject: [PATCH 15/25] ANDROID-303
---
.../fileexplorer/FileExplorerFragment.java | 12 +++++++++-
.../DocumentFolderBrowserFragment.java | 13 +++++++++-
.../node/details/NodeDetailsFragment.java | 24 ++++++++++++-------
3 files changed, 39 insertions(+), 10 deletions(-)
diff --git a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/fileexplorer/FileExplorerFragment.java b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/fileexplorer/FileExplorerFragment.java
index f43a5a9f..aead4633 100644
--- a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/fileexplorer/FileExplorerFragment.java
+++ b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/fileexplorer/FileExplorerFragment.java
@@ -55,6 +55,7 @@
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
+import android.provider.MediaStore;
import android.support.v4.app.DialogFragment;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
@@ -87,6 +88,8 @@ public class FileExplorerFragment extends FileExplorerFoundationFragment
private int menuId;
+ private boolean hasAudioRecorder = false;
+
// ///////////////////////////////////////////////////////////////////////////
// CONSTRUCTORS & HELPERS
// ///////////////////////////////////////////////////////////////////////////
@@ -168,6 +171,10 @@ public void onActivityCreated(Bundle savedInstanceState)
privateFolder = AlfrescoStorageManager.getInstance(getActivity()).getRootPrivateFolder().getParentFile();
}
displayTitle();
+
+ // Test Audio Recording
+ Intent intent = new Intent(MediaStore.Audio.Media.RECORD_SOUND_ACTION);
+ hasAudioRecorder = intent.resolveActivity(getActivity().getPackageManager()) != null;
}
@Override
@@ -370,7 +377,10 @@ public void onClick(View v)
builder.sheet(R.id.menu_create_document, R.drawable.ic_doc_light, R.string.create_document);
builder.sheet(R.id.menu_device_capture_camera_photo, R.drawable.ic_camera, R.string.take_photo);
builder.sheet(R.id.menu_device_capture_camera_video, R.drawable.ic_videos, R.string.make_video);
- builder.sheet(R.id.menu_device_capture_mic_audio, R.drawable.ic_microphone, R.string.record_audio);
+ if (hasAudioRecorder)
+ {
+ builder.sheet(R.id.menu_device_capture_mic_audio, R.drawable.ic_microphone, R.string.record_audio);
+ }
if (ScanSnapManager.getInstance(getActivity()) != null
&& ScanSnapManager.getInstance(getActivity()).hasScanSnapApplication())
{
diff --git a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/node/browser/DocumentFolderBrowserFragment.java b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/node/browser/DocumentFolderBrowserFragment.java
index 5f50afbb..38bb33a7 100644
--- a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/node/browser/DocumentFolderBrowserFragment.java
+++ b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/node/browser/DocumentFolderBrowserFragment.java
@@ -103,6 +103,7 @@
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
+import android.provider.MediaStore;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v7.app.ActionBar;
@@ -166,6 +167,8 @@ public class DocumentFolderBrowserFragment extends NodeBrowserFragment implement
private Permissions permission;
+ private boolean hasAudioRecorder = false;
+
// //////////////////////////////////////////////////////////////////////
// CONSTRUCTORS
// //////////////////////////////////////////////////////////////////////
@@ -247,6 +250,10 @@ else if (getActivity() instanceof BaseShortcutActivity)
{
setActivateThumbnail(true);
}
+
+ // Test Audio Recording
+ Intent intent = new Intent(MediaStore.Audio.Media.RECORD_SOUND_ACTION);
+ hasAudioRecorder = intent.resolveActivity(getActivity().getPackageManager()) != null;
}
@Override
@@ -986,7 +993,11 @@ public void onClick(View v)
builder.sheet(R.id.menu_create_document, R.drawable.ic_doc_light, R.string.create_document);
builder.sheet(R.id.menu_device_capture_camera_photo, R.drawable.ic_camera, R.string.take_photo);
builder.sheet(R.id.menu_device_capture_camera_video, R.drawable.ic_videos, R.string.make_video);
- builder.sheet(R.id.menu_device_capture_mic_audio, R.drawable.ic_microphone, R.string.record_audio);
+ if (hasAudioRecorder)
+ {
+ builder.sheet(R.id.menu_device_capture_mic_audio, R.drawable.ic_microphone,
+ R.string.record_audio);
+ }
if (ScanSnapManager.getInstance(getActivity()) != null
&& ScanSnapManager.getInstance(getActivity()).hasScanSnapApplication())
{
diff --git a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/node/details/NodeDetailsFragment.java b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/node/details/NodeDetailsFragment.java
index 40d94919..ce04ca86 100644
--- a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/node/details/NodeDetailsFragment.java
+++ b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/node/details/NodeDetailsFragment.java
@@ -685,17 +685,25 @@ public void onClick(View v)
hideActionIfNecessary(b, ConfigurableActionHelper.ACTION_NODE_SHARE);
b = (ImageView) viewById(R.id.action_open_in_alfresco_editor);
- String mimetype = ((Document) node).getContentStreamMimeType();
- if (node.isDocument() && !TextUtils.isEmpty(mimetype) && mimetype.startsWith(MimeType.TYPE_TEXT))
+
+ if (node.isDocument())
{
- b.setOnClickListener(new OnClickListener()
+ String mimetype = ((Document) node).getContentStreamMimeType();
+ if (!TextUtils.isEmpty(mimetype) && mimetype.startsWith(MimeType.TYPE_TEXT))
{
- @Override
- public void onClick(View v)
+ b.setOnClickListener(new OnClickListener()
{
- openin(true);
- }
- });
+ @Override
+ public void onClick(View v)
+ {
+ openin(true);
+ }
+ });
+ }
+ else
+ {
+ b.setVisibility(View.GONE);
+ }
}
else
{
From 82d1c67aa89c2be31f61e29e72eb877a8c5062ab Mon Sep 17 00:00:00 2001
From: jmpascal
Date: Wed, 11 May 2016 10:14:33 +0200
Subject: [PATCH 16/25] ANDROID-321
---
.../ConfigurableActionHelper.java | 25 +++++++++++++------
.../configuration/ConfigurationConstant.java | 2 ++
.../node/details/NodeDetailsFragment.java | 2 +-
3 files changed, 21 insertions(+), 8 deletions(-)
diff --git a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/configuration/ConfigurableActionHelper.java b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/configuration/ConfigurableActionHelper.java
index 5c8a7bf1..f0c9a240 100644
--- a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/configuration/ConfigurableActionHelper.java
+++ b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/configuration/ConfigurableActionHelper.java
@@ -39,12 +39,6 @@ public final class ConfigurableActionHelper
// public static final int ACTION_NODE_CREATE = 0;
- public static final int ACTION_CREATE_FOLDER = 13;
-
- public static final int ACTION_CREATE_DOC = 14;
-
- public static final int ACTION_NODE_UPLOAD = 15;
-
public static final int ACTION_NODE_DELETE = 1;
public static final int ACTION_NODE_FAVORITE = 2;
@@ -69,6 +63,14 @@ public final class ConfigurableActionHelper
public static final int ACTION_NODE_SHARE = 12;
+ public static final int ACTION_CREATE_FOLDER = 13;
+
+ public static final int ACTION_CREATE_DOC = 14;
+
+ public static final int ACTION_NODE_UPLOAD = 15;
+
+ public static final int ACTION_NODE_EDIT_WITH_ALFRESCO = 16;
+
public static final boolean isVisible(Context context, AlfrescoAccount account, int actionId)
{
return isVisible(context, account, null, null, actionId);
@@ -88,9 +90,13 @@ public static final boolean isVisible(Context context, AlfrescoAccount account,
&& configManager.getConfig(account.getId()).hasActionConfig())
{
ConfigService service = configManager.getConfig(account.getId());
+ if (service == null) { return true; }
String profileId = configManager.getCurrentProfileId();
- if (profileId == null) { return true; }
+ if (profileId == null)
+ {
+ profileId = service.getDefaultProfile().getIdentifier();
+ }
String rootActionId = service.getProfile(profileId).getRootActionId();
if (rootActionId == null || service.getActionConfig(rootActionId) == null) { return true; }
@@ -148,6 +154,10 @@ public static final boolean isVisible(Context context, AlfrescoAccount account,
case ACTION_NODE_SHARE:
actionNameId = ConfigurationConstant.KEY_ACTION_NODE_SHARE;
break;
+ case ACTION_NODE_EDIT_WITH_ALFRESCO:
+ actionNameId = ConfigurationConstant.KEY_ACTION_NODE_EDIT_WITH_ALFRESCO;
+ permissionRequired = true;
+ break;
}
ActionConfig config = ((ActionGroupConfig) service.getActionConfig(rootActionId))
.getChildById(actionNameId);
@@ -172,6 +182,7 @@ public static final boolean isVisible(Context context, AlfrescoAccount account,
hasPermission = permission.canAddChildren();
break;
case ACTION_NODE_EDIT:
+ case ACTION_NODE_EDIT_WITH_ALFRESCO:
hasPermission = permission.canEdit();
break;
case ACTION_NODE_UPDATE:
diff --git a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/configuration/ConfigurationConstant.java b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/configuration/ConfigurationConstant.java
index 52242ef5..5d6788c7 100644
--- a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/configuration/ConfigurationConstant.java
+++ b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/configuration/ConfigurationConstant.java
@@ -115,6 +115,8 @@ public interface ConfigurationConstant
String KEY_ACTION_NODE_EDIT = PREFIX_ACTION.concat(".node.edit");
+ String KEY_ACTION_NODE_EDIT_WITH_ALFRESCO = PREFIX_ACTION.concat(".node.edit-with-alfresco");
+
String KEY_ACTION_NODE_DOWNLOAD = PREFIX_ACTION.concat(".document.download");
String KEY_ACTION_NODE_SYNC = PREFIX_ACTION.concat(".node.sync");
diff --git a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/node/details/NodeDetailsFragment.java b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/node/details/NodeDetailsFragment.java
index ce04ca86..803f5a59 100644
--- a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/node/details/NodeDetailsFragment.java
+++ b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/node/details/NodeDetailsFragment.java
@@ -709,7 +709,7 @@ public void onClick(View v)
{
b.setVisibility(View.GONE);
}
- hideActionIfNecessary(b, ConfigurableActionHelper.ACTION_NODE_EDIT);
+ hideActionIfNecessary(b, ConfigurableActionHelper.ACTION_NODE_EDIT_WITH_ALFRESCO);
}
protected void displayTabs()
From 7506425a7ab6246a98c689938da0ea150b2c342f Mon Sep 17 00:00:00 2001
From: jmpascal
Date: Wed, 11 May 2016 10:21:59 +0200
Subject: [PATCH 17/25] ANDROID-321
---
.../src/main/res/layout/app_passcode_tab.xml | 27 +++++++++++++++++++
1 file changed, 27 insertions(+)
diff --git a/alfresco-mobile-android/src/main/res/layout/app_passcode_tab.xml b/alfresco-mobile-android/src/main/res/layout/app_passcode_tab.xml
index de07cead..a8ce46d2 100644
--- a/alfresco-mobile-android/src/main/res/layout/app_passcode_tab.xml
+++ b/alfresco-mobile-android/src/main/res/layout/app_passcode_tab.xml
@@ -1,4 +1,22 @@
+
+
+
+
Date: Wed, 11 May 2016 12:40:52 +0200
Subject: [PATCH 18/25] ANDROID-294
---
.../application/activity/MainActivity.java | 6 ++-
.../editors/text/TextEditorActivity.java | 2 +
.../node/details/NodeDetailsFragment.java | 3 +-
.../fragments/sync/SyncFragment.java | 4 +-
.../intent/IntentAPIDispatcherActivity.java | 53 +++++++++++++------
.../StorageAccessDocumentsProvider.java | 3 +-
.../widgets/ToolbarWidgetProvider.java | 16 ++----
.../node/create/CreateDocumentOperation.java | 2 +-
.../async/node/sync/SyncNodeOperation.java | 2 +-
.../platform/extensions/AnalyticsHelper.java | 8 +--
.../platform/extensions/AnalyticsManager.java | 28 +++++++++-
.../android/sync/SyncContentManager.java | 14 ++++-
.../android/sync/SyncContentSyncAdapter.java | 14 ++++-
13 files changed, 111 insertions(+), 44 deletions(-)
diff --git a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/activity/MainActivity.java b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/activity/MainActivity.java
index 7e182324..f9eac51d 100644
--- a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/activity/MainActivity.java
+++ b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/activity/MainActivity.java
@@ -999,7 +999,8 @@ public void onAccountLoaded(LoadAccountCompletedEvent event)
SyncContentManager.getInstance(this).setActivateSync(getCurrentAccount(), true);
if (SyncContentManager.getInstance(this).canSync(getCurrentAccount()))
{
- SyncContentManager.getInstance(this).sync(getCurrentAccount());
+ SyncContentManager.getInstance(this).sync(AnalyticsManager.LABEL_SYNC_SESSION_LOADED, getCurrentAccount());
+
}
FavoritesManager.getInstance(this).setActivateSync(getCurrentAccount(), true);
@@ -1101,7 +1102,8 @@ else if (sessionState == SESSION_ERROR && getCurrentSession() == null)
if (!isSyncActive(AlfrescoAccountManager.getInstance(context)
.getAndroidAccount(getCurrentAccount().getId()), SyncContentProvider.AUTHORITY))
{
- SyncContentManager.getInstance(context).sync(getCurrentAccount());
+ SyncContentManager.getInstance(context).sync(AnalyticsManager.LABEL_SYNC_NETWORK,
+ getCurrentAccount());
}
}
diff --git a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/editors/text/TextEditorActivity.java b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/editors/text/TextEditorActivity.java
index 5bd4a827..6fec1393 100644
--- a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/editors/text/TextEditorActivity.java
+++ b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/editors/text/TextEditorActivity.java
@@ -149,6 +149,8 @@ public void onCreate(Bundle savedInstanceState)
setTextShown(false);
retrieveTitle();
+ // Analytics
+
return;
}
diff --git a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/node/details/NodeDetailsFragment.java b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/node/details/NodeDetailsFragment.java
index 803f5a59..5c364995 100644
--- a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/node/details/NodeDetailsFragment.java
+++ b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/node/details/NodeDetailsFragment.java
@@ -1498,7 +1498,8 @@ else if (event.data)
}
else
{
- SyncContentManager.getInstance(getActivity()).sync(SessionUtils.getAccount(getActivity()));
+ SyncContentManager.getInstance(getActivity()).sync(AnalyticsManager.LABEL_SYNC_ACTION,
+ SessionUtils.getAccount(getActivity()));
}
}
}
diff --git a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/sync/SyncFragment.java b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/sync/SyncFragment.java
index adef81b9..a183de2c 100644
--- a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/sync/SyncFragment.java
+++ b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/sync/SyncFragment.java
@@ -248,7 +248,7 @@ public void onActivityResult(int requestCode, int resultCode, Intent data)
// Start sync if possible
if (SyncContentManager.getInstance(getActivity()).canSync(acc))
{
- SyncContentManager.getInstance(getActivity()).sync(acc);
+ SyncContentManager.getInstance(getActivity()).sync(AnalyticsManager.LABEL_SYNC_SAVE_BACK, acc);
}
}
break;
@@ -709,7 +709,7 @@ public void refresh()
return;
}
- SyncContentManager.getInstance(getActivity()).sync(acc);
+ SyncContentManager.getInstance(getActivity()).sync(AnalyticsManager.LABEL_SYNC_REFRESH, acc);
if (mi != null)
{
// Display spinning wheel instead of refresh
diff --git a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/intent/IntentAPIDispatcherActivity.java b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/intent/IntentAPIDispatcherActivity.java
index 608f0cf8..0a3f9573 100644
--- a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/intent/IntentAPIDispatcherActivity.java
+++ b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/intent/IntentAPIDispatcherActivity.java
@@ -1,20 +1,20 @@
-/*******************************************************************************
- * Copyright (C) 2005-2014 Alfresco Software Limited.
- *
- * This file is part of Alfresco Mobile for Android.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- ******************************************************************************/
+/*
+ * Copyright (C) 2005-2016 Alfresco Software Limited.
+ *
+ * This file is part of Alfresco Mobile for Android.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.alfresco.mobile.android.application.intent;
import java.io.File;
@@ -37,6 +37,8 @@
import org.alfresco.mobile.android.platform.AlfrescoNotificationManager;
import org.alfresco.mobile.android.platform.accounts.AlfrescoAccount;
import org.alfresco.mobile.android.platform.accounts.AlfrescoAccountManager;
+import org.alfresco.mobile.android.platform.extensions.AnalyticsHelper;
+import org.alfresco.mobile.android.platform.extensions.AnalyticsManager;
import org.alfresco.mobile.android.platform.intent.AlfrescoIntentAPI;
import org.alfresco.mobile.android.platform.intent.PrivateIntent;
import org.alfresco.mobile.android.platform.io.AlfrescoStorageManager;
@@ -144,6 +146,10 @@ public void onCreate(Bundle savedInstanceState)
mOutputFileUri = Uri.fromFile(payload);
startActivityForResult(intent, REQUEST_IMAGE_CAPTURE);
+ // Analytics
+ AnalyticsHelper.reportOperationEvent(this, AnalyticsManager.CATEGORY_WIDGET,
+ AnalyticsManager.ACTION_TOOLBAR, AnalyticsManager.LABEL_TAKE_PHOTO, 1, false);
+
return;
}
@@ -175,6 +181,19 @@ public void onCreate(Bundle savedInstanceState)
intent.setType("text/plain");
startActivity(intent);
finish();
+
+ // Analytics
+ if (isSpeechToText)
+ {
+ AnalyticsHelper.reportOperationEvent(this, AnalyticsManager.CATEGORY_WIDGET,
+ AnalyticsManager.ACTION_TOOLBAR, AnalyticsManager.LABEL_SPEECH_2_TEXT, 1, false);
+ }
+ else
+ {
+ AnalyticsHelper.reportOperationEvent(this, AnalyticsManager.CATEGORY_WIDGET,
+ AnalyticsManager.ACTION_TOOLBAR, AnalyticsManager.LABEL_CREATE_TEXT, 1, false);
+ }
+
return;
}
}
diff --git a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/providers/storage/StorageAccessDocumentsProvider.java b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/providers/storage/StorageAccessDocumentsProvider.java
index f60e8d2e..477048b1 100644
--- a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/providers/storage/StorageAccessDocumentsProvider.java
+++ b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/providers/storage/StorageAccessDocumentsProvider.java
@@ -1781,7 +1781,8 @@ private void onCloseEvent()
}
else
{
- SyncContentManager.getInstance(getContext()).sync(SessionUtils.getAccount(getContext()));
+ SyncContentManager.getInstance(getContext()).sync(AnalyticsManager.LABEL_SYNC_DOC_PROVIDER,
+ SessionUtils.getAccount(getContext()));
}
return;
}
diff --git a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/widgets/ToolbarWidgetProvider.java b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/widgets/ToolbarWidgetProvider.java
index 3333145c..cbd5d732 100644
--- a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/widgets/ToolbarWidgetProvider.java
+++ b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/widgets/ToolbarWidgetProvider.java
@@ -92,36 +92,28 @@ public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] a
private PendingIntent createAlfrescoIntent(Context context)
{
+ // Analytics
+ AnalyticsHelper.reportOperationEvent(context, AnalyticsManager.CATEGORY_WIDGET, AnalyticsManager.ACTION_TOOLBAR,
+ AnalyticsManager.LABEL_ADD, 1, false);
+
Intent intent = new Intent(context, MainActivity.class);
return PendingIntent.getActivity(context, 0, intent, 0);
}
private PendingIntent createSpeechTextEditorIntent(Context context)
{
- // Analytics
- AnalyticsHelper.reportOperationEvent(context, AnalyticsManager.CATEGORY_WIDGET, AnalyticsManager.ACTION_TOOLBAR,
- AnalyticsManager.LABEL_SPEECH_2_TEXT, 1, false);
-
return PendingIntent.getActivity(context, 1, PublicIntentAPIUtils.speechToTextIntent(),
PendingIntent.FLAG_UPDATE_CURRENT);
}
private PendingIntent createTextEditorIntent(Context context)
{
- // Analytics
- AnalyticsHelper.reportOperationEvent(context, AnalyticsManager.CATEGORY_WIDGET, AnalyticsManager.ACTION_TOOLBAR,
- AnalyticsManager.LABEL_CREATE_TEXT, 1, false);
-
return PendingIntent.getActivity(context, 0, PublicIntentAPIUtils.createTextIntent(),
PendingIntent.FLAG_UPDATE_CURRENT);
}
private PendingIntent createPhotoCaptureIntent(Context context)
{
- // Analytics
- AnalyticsHelper.reportOperationEvent(context, AnalyticsManager.CATEGORY_WIDGET, AnalyticsManager.ACTION_TOOLBAR,
- AnalyticsManager.LABEL_TAKE_PHOTO, 1, false);
-
return PendingIntent.getActivity(context, 2, PublicIntentAPIUtils.captureImageIntent(),
PendingIntent.FLAG_UPDATE_CURRENT);
}
diff --git a/platform/foundation/src/main/java/org/alfresco/mobile/android/async/node/create/CreateDocumentOperation.java b/platform/foundation/src/main/java/org/alfresco/mobile/android/async/node/create/CreateDocumentOperation.java
index 536b7630..2426794b 100644
--- a/platform/foundation/src/main/java/org/alfresco/mobile/android/async/node/create/CreateDocumentOperation.java
+++ b/platform/foundation/src/main/java/org/alfresco/mobile/android/async/node/create/CreateDocumentOperation.java
@@ -133,7 +133,7 @@ protected LoaderResult doInBackground()
// Sync if necessary
if (SyncContentManager.getInstance(context).isRootSynced(getAccount(), parentFolder))
{
- SyncContentManager.getInstance(context).sync(getAccount());
+ SyncContentManager.getInstance(context).sync(AnalyticsManager.LABEL_SYNC_ACTION, getAccount());
}
}
catch (Exception e)
diff --git a/platform/foundation/src/main/java/org/alfresco/mobile/android/async/node/sync/SyncNodeOperation.java b/platform/foundation/src/main/java/org/alfresco/mobile/android/async/node/sync/SyncNodeOperation.java
index c06c5c75..f14e58cb 100644
--- a/platform/foundation/src/main/java/org/alfresco/mobile/android/async/node/sync/SyncNodeOperation.java
+++ b/platform/foundation/src/main/java/org/alfresco/mobile/android/async/node/sync/SyncNodeOperation.java
@@ -339,7 +339,7 @@ protected void onPostExecute(LoaderResult result)
{
// Analytics
AnalyticsHelper.reportOperationEvent(context, AnalyticsManager.CATEGORY_DOCUMENT_MANAGEMENT,
- !markSync ? AnalyticsManager.ACTION_SYNC : AnalyticsManager.ACTION_UNSYNC,
+ markSync ? AnalyticsManager.ACTION_SYNC : AnalyticsManager.ACTION_UNSYNC,
node.isDocument() ? ((Document) node).getContentStreamMimeType() : AnalyticsManager.TYPE_FOLDER, 1,
result.hasException());
}
diff --git a/platform/foundation/src/main/java/org/alfresco/mobile/android/platform/extensions/AnalyticsHelper.java b/platform/foundation/src/main/java/org/alfresco/mobile/android/platform/extensions/AnalyticsHelper.java
index 51e26777..701b4c78 100644
--- a/platform/foundation/src/main/java/org/alfresco/mobile/android/platform/extensions/AnalyticsHelper.java
+++ b/platform/foundation/src/main/java/org/alfresco/mobile/android/platform/extensions/AnalyticsHelper.java
@@ -87,7 +87,7 @@ protected static SparseArray retrieveSyncInfo(Context context, AlfrescoAcc
return customMetrics;
}
- public static void analyzeSync(Context context, AlfrescoAccount account)
+ public static void analyzeSync(Context context, AlfrescoAccount account, String analyticInfo)
{
if (AnalyticsManager.getInstance(context) == null
|| !AnalyticsManager.getInstance(context).isEnable()) { return; }
@@ -109,10 +109,12 @@ public static void analyzeSync(Context context, AlfrescoAccount account)
// Via EVENT
AnalyticsManager.getInstance(context).reportEvent(AnalyticsManager.CATEGORY_SYNC,
- AnalyticsManager.ACTION_RUN, AnalyticsManager.SYNCED_FILES, syncedFile, customDimensions,
+ analyticInfo,
+ AnalyticsManager.SYNCED_FILES, syncedFile, customDimensions,
customMetrics);
AnalyticsManager.getInstance(context).reportEvent(AnalyticsManager.CATEGORY_SYNC,
- AnalyticsManager.ACTION_RUN, AnalyticsManager.SYNCED_FOLDERS, syncedFolder, customDimensions, null);
+ analyticInfo,
+ AnalyticsManager.SYNCED_FOLDERS, syncedFolder, customDimensions, null);
}
catch (Exception e)
diff --git a/platform/foundation/src/main/java/org/alfresco/mobile/android/platform/extensions/AnalyticsManager.java b/platform/foundation/src/main/java/org/alfresco/mobile/android/platform/extensions/AnalyticsManager.java
index 6a6edb2d..a98dde54 100644
--- a/platform/foundation/src/main/java/org/alfresco/mobile/android/platform/extensions/AnalyticsManager.java
+++ b/platform/foundation/src/main/java/org/alfresco/mobile/android/platform/extensions/AnalyticsManager.java
@@ -115,7 +115,7 @@ public abstract class AnalyticsManager extends Manager
public static final String ACTION_SHARE = "Share";
- public static final String ACTION_SHARE_AS_LINK = "Share";
+ public static final String ACTION_SHARE_AS_LINK = "Share Link";
public static final String ACTION_MEMBERSHIP = "Membership";
@@ -206,6 +206,32 @@ public abstract class AnalyticsManager extends Manager
public static final String LABEL_STORAGE = "Storage";
+ public static final String LABEL_ADD = "Add";
+
+ // Default
+ public static final String LABEL_SYNC_SYSTEM = "System";
+
+ // After network reconnection if there's pending sync
+ public static final String LABEL_SYNC_NETWORK = "Network";
+
+ // After session creation (start of the app)
+ public static final String LABEL_SYNC_SESSION_LOADED = "Session";
+
+ // After 60 min if the session is still active
+ public static final String LABEL_SYNC_CRON = "Cron";
+
+ // After a node has been synced
+ public static final String LABEL_SYNC_ACTION = "Sync Action";
+
+ // After a sync node has been edited
+ public static final String LABEL_SYNC_SAVE_BACK = "Save Back";
+
+ // Pull to refresh on sync screen
+ public static final String LABEL_SYNC_REFRESH = "Refresh";
+
+ // From the SAF
+ public static final String LABEL_SYNC_DOC_PROVIDER = "Doc Provider";
+
///////////////////////////////////////////////////////////
// CUSTOM DIMENSIONS
///////////////////////////////////////////////////////////
diff --git a/platform/foundation/src/main/java/org/alfresco/mobile/android/sync/SyncContentManager.java b/platform/foundation/src/main/java/org/alfresco/mobile/android/sync/SyncContentManager.java
index 5eb40b7f..a37a742c 100644
--- a/platform/foundation/src/main/java/org/alfresco/mobile/android/sync/SyncContentManager.java
+++ b/platform/foundation/src/main/java/org/alfresco/mobile/android/sync/SyncContentManager.java
@@ -38,6 +38,7 @@
import org.alfresco.mobile.android.platform.Manager;
import org.alfresco.mobile.android.platform.accounts.AlfrescoAccount;
import org.alfresco.mobile.android.platform.accounts.AlfrescoAccountManager;
+import org.alfresco.mobile.android.platform.extensions.AnalyticsManager;
import org.alfresco.mobile.android.platform.io.AlfrescoStorageManager;
import org.alfresco.mobile.android.platform.provider.CursorUtils;
import org.alfresco.mobile.android.platform.provider.MapUtil;
@@ -92,6 +93,8 @@ public class SyncContentManager extends Manager
public static final String ARGUMENT_IGNORE_WARNING = "ignoreWarning";
+ public static final String ARGUMENT_ANALYTIC = "analytic";
+
public static final String ARGUMENT_NODE = "node";
public static final String ARGUMENT_NODE_ID = "nodeId";
@@ -269,11 +272,12 @@ public static Uri getUri(long id)
return Uri.parse(SyncContentProvider.CONTENT_URI + "/" + id);
}
- public void sync(AlfrescoAccount account)
+ public void sync(String analyticInfo, AlfrescoAccount account)
{
if (account == null) { return; }
Bundle settingsBundle = new Bundle();
settingsBundle.putInt(ARGUMENT_MODE, SyncContentManager.MODE_BOTH);
+ settingsBundle.putString(ARGUMENT_ANALYTIC, analyticInfo);
settingsBundle.putBoolean(ContentResolver.SYNC_EXTRAS_MANUAL, true);
settingsBundle.putBoolean(ContentResolver.SYNC_EXTRAS_EXPEDITED, true);
settingsBundle.putBoolean(ARGUMENT_IGNORE_WARNING, false);
@@ -281,10 +285,16 @@ public void sync(AlfrescoAccount account)
SyncContentProvider.AUTHORITY, settingsBundle);
}
+ public void sync(AlfrescoAccount account)
+ {
+ sync(AnalyticsManager.LABEL_SYNC_SYSTEM, account);
+ }
+
public void sync(AlfrescoAccount account, String nodeIdentifier)
{
if (account == null) { return; }
Bundle settingsBundle = new Bundle();
+ settingsBundle.putString(ARGUMENT_ANALYTIC, AnalyticsManager.LABEL_SYNC_ACTION);
settingsBundle.putBoolean(ContentResolver.SYNC_EXTRAS_MANUAL, true);
settingsBundle.putBoolean(ContentResolver.SYNC_EXTRAS_EXPEDITED, true);
settingsBundle.putInt(ARGUMENT_MODE, SyncContentManager.MODE_NODE);
@@ -493,7 +503,7 @@ public void cronSync(AlfrescoAccount account)
long lastTime = sharedPref.getLong(LAST_SYNC_ACTIVATED_AT + account.getId(), now);
if ((lastTime + 3600000) < now && canSync(account))
{
- sync(account);
+ sync(AnalyticsManager.LABEL_SYNC_CRON, account);
}
}
diff --git a/platform/foundation/src/main/java/org/alfresco/mobile/android/sync/SyncContentSyncAdapter.java b/platform/foundation/src/main/java/org/alfresco/mobile/android/sync/SyncContentSyncAdapter.java
index 93b3a410..cd0bc19c 100644
--- a/platform/foundation/src/main/java/org/alfresco/mobile/android/sync/SyncContentSyncAdapter.java
+++ b/platform/foundation/src/main/java/org/alfresco/mobile/android/sync/SyncContentSyncAdapter.java
@@ -28,6 +28,7 @@
import org.alfresco.mobile.android.platform.SessionManager;
import org.alfresco.mobile.android.platform.accounts.AlfrescoAccount;
import org.alfresco.mobile.android.platform.extensions.AnalyticsHelper;
+import org.alfresco.mobile.android.platform.extensions.AnalyticsManager;
import org.alfresco.mobile.android.sync.operations.SyncContent;
import org.alfresco.mobile.android.sync.prepare.PrepareSyncHelper;
@@ -61,6 +62,8 @@ public class SyncContentSyncAdapter extends AbstractThreadedSyncAdapter
private String nodeIdentifier;
+ private String analyticInfo;
+
// ///////////////////////////////////////////////////////////////////////////
// CONSTRUCTOR
// ///////////////////////////////////////////////////////////////////////////
@@ -122,6 +125,15 @@ public void onPerformSync(Account account, Bundle extras, String authority, Cont
{
nodeIdentifier = null;
}
+
+ if (extras.containsKey(SyncContentManager.ARGUMENT_ANALYTIC))
+ {
+ analyticInfo = extras.getString(SyncContentManager.ARGUMENT_ANALYTIC);
+ }
+ else
+ {
+ analyticInfo = AnalyticsManager.LABEL_SYNC_SYSTEM;
+ }
}
try
@@ -237,7 +249,7 @@ protected void sync(SyncResult syncResult)
if (node == null && nodeIdentifier == null)
{
- AnalyticsHelper.analyzeSync(getContext(), acc);
+ AnalyticsHelper.analyzeSync(getContext(), acc, analyticInfo);
}
Log.d("SYNC", "Total:" + syncResult.stats.numEntries);
From a4664d17c117e3d279028285be14d919e56db91b Mon Sep 17 00:00:00 2001
From: jmpascal
Date: Tue, 17 May 2016 16:28:49 +0200
Subject: [PATCH 19/25] ANDROID-306
---
.../fragments/node/details/NodeDetailsFragment.java | 12 ++++--------
1 file changed, 4 insertions(+), 8 deletions(-)
diff --git a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/node/details/NodeDetailsFragment.java b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/node/details/NodeDetailsFragment.java
index 5c364995..3952d79e 100644
--- a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/node/details/NodeDetailsFragment.java
+++ b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/node/details/NodeDetailsFragment.java
@@ -688,7 +688,7 @@ public void onClick(View v)
if (node.isDocument())
{
- String mimetype = ((Document) node).getContentStreamMimeType();
+ String mimetype = node.getPropertyValue(PropertyIds.CONTENT_STREAM_MIME_TYPE);
if (!TextUtils.isEmpty(mimetype) && mimetype.startsWith(MimeType.TYPE_TEXT))
{
b.setOnClickListener(new OnClickListener()
@@ -1029,20 +1029,16 @@ public void onActivityNotFoundException(ActivityNotFoundException e)
}
else
{
- // Log.e(TAG, "[OBSERVER] CREATE");
- // observer = new SyncedFileObserver(syncFile.getPath(),
- // getActivity().getApplicationContext(), node, acc);
- // observer.startWatching();
- // If sync file + sync activate
if (withAlfresco)
{
- ActionUtils.openIn(this, syncFile,
+ ActionUtils.openWithAlfrescoTextEditor(this, syncFile,
MimeTypeManager.getInstance(getActivity()).getMIMEType(syncFile.getName()),
RequestCode.SAVE_BACK);
+
}
else
{
- ActionUtils.openWithAlfrescoTextEditor(this, syncFile,
+ ActionUtils.openIn(this, syncFile,
MimeTypeManager.getInstance(getActivity()).getMIMEType(syncFile.getName()),
RequestCode.SAVE_BACK);
}
From 7481fbd12ee7ee79a99d12bd52e0760af3d5ab36 Mon Sep 17 00:00:00 2001
From: jmpascal
Date: Tue, 17 May 2016 17:13:56 +0200
Subject: [PATCH 20/25] ANDROID-324
---
.../fragments/preferences/AccountSettingsFragment.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/preferences/AccountSettingsFragment.java b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/preferences/AccountSettingsFragment.java
index af821f0e..9fe24da0 100644
--- a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/preferences/AccountSettingsFragment.java
+++ b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/preferences/AccountSettingsFragment.java
@@ -242,7 +242,7 @@ else if (syncEnable)
viewById(R.id.settings_sync_container).setVisibility(View.VISIBLE);
syncFavoritesVH = HolderUtils.configure(viewById(R.id.favorite_sync_wifi),
getString(R.string.settings_favorite_sync_data),
- getString(R.string.settings_favorite_sync_data_all), !syncWifiEnable);
+ getString(R.string.settings_favorite_sync_data_all), syncWifiEnable);
syncFavoritesVH.choose.setOnClickListener(new View.OnClickListener()
{
From b62aa9b877e110d0066520522a1c997aad953d9d Mon Sep 17 00:00:00 2001
From: jmpascal
Date: Thu, 19 May 2016 11:44:17 +0200
Subject: [PATCH 21/25] ANDROID-328
---
.../application/configuration/features/ConfigFeatureHelper.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/configuration/features/ConfigFeatureHelper.java b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/configuration/features/ConfigFeatureHelper.java
index f695a46f..aac891d2 100644
--- a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/configuration/features/ConfigFeatureHelper.java
+++ b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/configuration/features/ConfigFeatureHelper.java
@@ -66,11 +66,11 @@ else if (FeatureConfig.FEATURE_DATA_PROTECTION.equals(feature.getType()))
}
}
- new PasscodeConfigFeature(activity).check(session, acc, passcodeFeature);
new SyncCellularConfigFeature(activity).check(session, acc, cellularFeature);
if (OnPremiseConstant.ALFRESCO_EDITION_ENTERPRISE.equals(session.getRepositoryInfo().getEdition()))
{
+ new PasscodeConfigFeature(activity).check(session, acc, passcodeFeature);
new DataProtectionConfigFeature(activity).check(session, acc, dataProtectionFeature);
}
}
From 207add2e0ab963f1b1d2be15e7d2d8a1bf358c32 Mon Sep 17 00:00:00 2001
From: jmpascal
Date: Fri, 20 May 2016 15:20:01 +0200
Subject: [PATCH 22/25] ANDROID-312
---
.../src/main/AndroidManifest.xml | 19 ++
.../application/activity/MainActivity.java | 34 +---
.../activity/PublicDispatcherActivity.java | 167 +++++++++++++++++-
.../fragments/account/AccountsFragment.java | 146 +++++++++++++++
.../DocumentFolderBrowserFragment.java | 21 ++-
.../details/PagerNodeDetailsFragment.java | 17 +-
.../fragments/user/UserProfileFragment.java | 16 +-
.../workflow/task/TasksFragment.java | 10 +-
.../intent/PublicIntentAPIUtils.java | 100 ++++++++++-
.../src/main/res/layout/fr_accounts.xml | 61 +++++++
.../src/main/res/values/strings.xml | 12 ++
.../node/browse/NodeChildrenOperation.java | 3 +
.../android/async/person/PersonOperation.java | 26 +--
.../platform/extensions/AnalyticsManager.java | 4 +
.../platform/intent/AlfrescoIntentAPI.java | 28 +++
.../ui/fragments/CommonGridFragment.java | 5 +-
.../task/TasksFoundationFragment.java | 41 +++--
17 files changed, 626 insertions(+), 84 deletions(-)
create mode 100644 alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/account/AccountsFragment.java
create mode 100644 alfresco-mobile-android/src/main/res/layout/fr_accounts.xml
diff --git a/alfresco-mobile-android/src/main/AndroidManifest.xml b/alfresco-mobile-android/src/main/AndroidManifest.xml
index fe7737fd..08f75b64 100644
--- a/alfresco-mobile-android/src/main/AndroidManifest.xml
+++ b/alfresco-mobile-android/src/main/AndroidManifest.xml
@@ -119,6 +119,15 @@
+
+
+
@@ -214,6 +223,16 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/activity/MainActivity.java b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/activity/MainActivity.java
index f9eac51d..314fe3f0 100644
--- a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/activity/MainActivity.java
+++ b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/activity/MainActivity.java
@@ -36,15 +36,14 @@
import org.alfresco.mobile.android.application.fragments.about.AboutFragment;
import org.alfresco.mobile.android.application.fragments.builder.AlfrescoFragmentBuilder;
import org.alfresco.mobile.android.application.fragments.builder.FragmentBuilderFactory;
-import org.alfresco.mobile.android.application.fragments.fileexplorer.FileExplorerFragment;
import org.alfresco.mobile.android.application.fragments.help.HelpDialogFragment;
import org.alfresco.mobile.android.application.fragments.menu.MainMenuFragment;
import org.alfresco.mobile.android.application.fragments.node.browser.DocumentFolderBrowserFragment;
-import org.alfresco.mobile.android.application.fragments.node.details.NodeDetailsFragment;
import org.alfresco.mobile.android.application.fragments.preferences.GeneralPreferences;
import org.alfresco.mobile.android.application.fragments.signin.AccountOAuthFragment;
import org.alfresco.mobile.android.application.fragments.sync.SyncFragment;
import org.alfresco.mobile.android.application.fragments.sync.SyncMigrationFragment;
+import org.alfresco.mobile.android.application.intent.PublicIntentAPIUtils;
import org.alfresco.mobile.android.application.intent.RequestCode;
import org.alfresco.mobile.android.application.managers.ConfigManager;
import org.alfresco.mobile.android.application.managers.RenditionManagerImpl;
@@ -72,7 +71,6 @@
import org.alfresco.mobile.android.platform.accounts.AlfrescoAccountManager;
import org.alfresco.mobile.android.platform.extensions.AnalyticsManager;
import org.alfresco.mobile.android.platform.favorite.FavoritesManager;
-import org.alfresco.mobile.android.platform.intent.AlfrescoIntentAPI;
import org.alfresco.mobile.android.platform.intent.PrivateIntent;
import org.alfresco.mobile.android.platform.mdm.MDMManager;
import org.alfresco.mobile.android.platform.security.DataProtectionManager;
@@ -84,6 +82,9 @@
import org.alfresco.mobile.android.ui.node.browse.NodeBrowserTemplate;
import org.alfresco.mobile.android.ui.utils.UIUtils;
+import com.afollestad.materialdialogs.MaterialDialog;
+import com.squareup.otto.Subscribe;
+
import android.accounts.Account;
import android.annotation.TargetApi;
import android.content.BroadcastReceiver;
@@ -111,9 +112,6 @@
import android.view.View;
import android.view.ViewGroup;
-import com.afollestad.materialdialogs.MaterialDialog;
-import com.squareup.otto.Subscribe;
-
/**
* Main activity of the application.
*
@@ -310,7 +308,7 @@ public void onResume()
}
// Is it from an alfresco shortcut ?
- openShortcut(getIntent());
+ PublicIntentAPIUtils.openShortcut(this, getIntent());
}
@Override
@@ -427,7 +425,7 @@ protected void onNewIntent(Intent intent)
}
// Is it from an alfresco shortcut ?
- openShortcut(intent);
+ PublicIntentAPIUtils.openShortcut(this, intent);
}
catch (Exception e)
{
@@ -443,26 +441,6 @@ protected void onSaveInstanceState(Bundle outState)
MainActivityHelper.createBundle(outState, getCurrentAccount(), capture, fragmentQueue, importParent));
}
- public void openShortcut(Intent intent)
- {
- if (AlfrescoIntentAPI.ACTION_VIEW.equals(intent.getAction()) && intent.getData() != null)
- {
- if (AlfrescoIntentAPI.AUTHORITY_FOLDER.equals(intent.getData().getAuthority()))
- {
- DocumentFolderBrowserFragment.with(this).folderIdentifier(intent.getData().getPathSegments().get(0))
- .shortcut(true).display();
- }
- else if (AlfrescoIntentAPI.AUTHORITY_FILE.equals(intent.getData().getAuthority()))
- {
- FileExplorerFragment.with(this).file(new File(intent.getData().getPathSegments().get(0))).display();
- }
- else if (AlfrescoIntentAPI.AUTHORITY_DOCUMENT.equals(intent.getData().getAuthority()))
- {
- NodeDetailsFragment.with(this).nodeId(intent.getData().getPathSegments().get(0)).back(false).display();
- }
- }
- }
-
// ///////////////////////////////////////////////////////////////////////////
// SLIDE MENU
// ///////////////////////////////////////////////////////////////////////////
diff --git a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/activity/PublicDispatcherActivity.java b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/activity/PublicDispatcherActivity.java
index 8793b9f5..c2957a8a 100644
--- a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/activity/PublicDispatcherActivity.java
+++ b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/activity/PublicDispatcherActivity.java
@@ -20,9 +20,11 @@
import java.io.File;
import java.util.List;
+import org.alfresco.mobile.android.api.utils.NodeRefUtils;
import org.alfresco.mobile.android.application.R;
import org.alfresco.mobile.android.application.configuration.ConfigurationConstant;
import org.alfresco.mobile.android.application.fragments.FragmentDisplayer;
+import org.alfresco.mobile.android.application.fragments.account.AccountsFragment;
import org.alfresco.mobile.android.application.fragments.builder.AlfrescoFragmentBuilder;
import org.alfresco.mobile.android.application.fragments.builder.FragmentBuilderFactory;
import org.alfresco.mobile.android.application.fragments.fileexplorer.FileExplorerFragment;
@@ -32,23 +34,29 @@
import org.alfresco.mobile.android.application.fragments.preferences.PasscodePreferences;
import org.alfresco.mobile.android.application.fragments.signin.AccountOAuthFragment;
import org.alfresco.mobile.android.application.fragments.sync.SyncFragment;
+import org.alfresco.mobile.android.application.intent.PublicIntentAPIUtils;
+import org.alfresco.mobile.android.application.managers.NotificationManager;
import org.alfresco.mobile.android.application.security.PassCodeActivity;
import org.alfresco.mobile.android.async.node.favorite.FavoriteNodesRequest;
import org.alfresco.mobile.android.async.session.LoadSessionCallBack.LoadAccountCompletedEvent;
import org.alfresco.mobile.android.async.session.RequestSessionEvent;
+import org.alfresco.mobile.android.platform.accounts.AlfrescoAccount;
+import org.alfresco.mobile.android.platform.accounts.AlfrescoAccountManager;
+import org.alfresco.mobile.android.platform.intent.AlfrescoIntentAPI;
import org.alfresco.mobile.android.platform.intent.PrivateIntent;
import org.alfresco.mobile.android.ui.ListingModeFragment;
+import com.squareup.otto.Subscribe;
+
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.FragmentManager;
import android.support.v7.widget.Toolbar;
+import android.text.TextUtils;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
-import com.squareup.otto.Subscribe;
-
/**
* Activity responsible to manage public intent from 3rd party application. This
* activity is "open" to public Intent.
@@ -90,7 +98,15 @@ public void onCreate(Bundle savedInstanceState)
if ((Intent.ACTION_SEND.equals(action) || Intent.ACTION_SEND_MULTIPLE.equals(action))
&& getFragment(UploadFormFragment.TAG) == null)
{
- FragmentDisplayer.with(this).load(new UploadFormFragment()).back(false).animate(null).into(FragmentDisplayer.PANEL_LEFT);
+ FragmentDisplayer.with(this).load(new UploadFormFragment()).back(false).animate(null)
+ .into(FragmentDisplayer.PANEL_LEFT);
+ return;
+ }
+
+ if (Intent.ACTION_VIEW.equals(action)
+ && AlfrescoIntentAPI.SCHEME.equals(getIntent().getData().getScheme().toLowerCase()))
+ {
+ managePublicIntent(null);
return;
}
@@ -144,6 +160,151 @@ protected void onStop()
super.onStop();
}
+ private boolean validateIntentId()
+ {
+ List pathSegments = getIntent().getData().getPathSegments();
+ if (pathSegments == null || pathSegments.isEmpty())
+ {
+ NotificationManager.getInstance(this).showLongToast(R.string.public_url_wrong_format);
+ finish();
+ return false;
+ }
+
+ if (!AlfrescoIntentAPI.ID.equals(pathSegments.get(0)))
+ {
+ NotificationManager.getInstance(this).showLongToast(R.string.public_url_file_missing_id);
+ finish();
+ return false;
+ }
+
+ return true;
+ }
+
+ private boolean validateIntentFilter()
+ {
+ List pathSegments = getIntent().getData().getPathSegments();
+ if (pathSegments == null || pathSegments.isEmpty())
+ {
+ NotificationManager.getInstance(this).showLongToast(R.string.public_url_wrong_format);
+ finish();
+ return false;
+ }
+
+ if (!AlfrescoIntentAPI.FILTER.equals(pathSegments.get(0)))
+ {
+ NotificationManager.getInstance(this).showLongToast(R.string.public_url_tasks_missing_filter);
+ finish();
+ return false;
+ }
+
+ return true;
+ }
+
+ private String retrieveNodeRef()
+ {
+ String nodeRefIntent = getIntent().getData().getLastPathSegment();
+ if (NodeRefUtils.isIdentifier(nodeRefIntent))
+ {
+ return NodeRefUtils.createNodeRefByIdentifier(getIntent().getData().getLastPathSegment());
+ }
+ else if (NodeRefUtils.isNodeRef(nodeRefIntent))
+ {
+ return nodeRefIntent;
+ }
+ else
+ {
+ NotificationManager.getInstance(this).showLongToast(R.string.public_url_noderef_format);
+ finish();
+ return null;
+ }
+ }
+
+ public void managePublicIntent(AlfrescoAccount accountSelected)
+ {
+ if (Intent.ACTION_VIEW.equals(getIntent().getAction())
+ && AlfrescoIntentAPI.SCHEME.equals(getIntent().getData().getScheme().toLowerCase()))
+ {
+ Intent i = null;
+ try
+ {
+ // Check Hostname
+ // If no Hostname we just open the App
+ String hostname = getIntent().getData().getHost();
+ if (TextUtils.isEmpty(hostname))
+ {
+ i = new Intent(this, MainActivity.class);
+ startActivity(i);
+ finish();
+ return;
+ }
+
+ // If multiple account we have to request the user to select one
+ if (AlfrescoAccountManager.getInstance(this).hasMultipleAccount() && accountSelected == null)
+ {
+
+ FragmentDisplayer.with(this).animate(null).load(AccountsFragment.with(this).createFragment())
+ .back(false).into(FragmentDisplayer.PANEL_LEFT);
+ return;
+ }
+
+ // Check URL Pattern
+ // We support only ids for the moment
+ // alfresco://document/id/
+ AlfrescoAccount acc = accountSelected != null ? accountSelected : getCurrentAccount();
+ if (acc == null)
+ {
+ acc = AlfrescoAccountManager.getInstance(this).getDefaultAccount();
+ }
+
+ if (AlfrescoIntentAPI.AUTHORITY_DOCUMENT.equals(hostname))
+ {
+ // Check Id
+ if (!validateIntentId()) { return; }
+ if (retrieveNodeRef() == null) { return; }
+
+ i = PublicIntentAPIUtils.viewDocument(acc.getId(), retrieveNodeRef());
+ }
+ else if (AlfrescoIntentAPI.AUTHORITY_FOLDER.equals(hostname))
+ {
+ // Check Id
+ if (!validateIntentId()) { return; }
+ if (retrieveNodeRef() == null) { return; }
+
+ i = PublicIntentAPIUtils.viewFolder(acc.getId(), retrieveNodeRef());
+ }
+ else if (AlfrescoIntentAPI.AUTHORITY_SITE.equals(hostname))
+ {
+ // Check Id
+ if (!validateIntentId()) { return; }
+ i = PublicIntentAPIUtils.viewSite(acc.getId(), getIntent().getData().getLastPathSegment());
+ }
+ else if (AlfrescoIntentAPI.AUTHORITY_USER.equals(hostname))
+ {
+ // Check Id
+ if (!validateIntentId()) { return; }
+ i = PublicIntentAPIUtils.viewUser(acc.getId(), getIntent().getData().getLastPathSegment());
+ }
+ else if (AlfrescoIntentAPI.AUTHORITY_TASKS.equals(hostname))
+ {
+ if (!validateIntentFilter()) { return; }
+ i = PublicIntentAPIUtils.viewTasks(acc.getId(), getIntent().getData());
+ }
+ else
+ {
+ i = new Intent(this, MainActivity.class);
+ }
+ }
+ catch (Exception e)
+ {
+ i = new Intent(this, MainActivity.class);
+ }
+
+ startActivity(i);
+ finish();
+ return;
+ }
+ }
+
// ///////////////////////////////////////////////////////////////////////////
// UI Public Method
// ///////////////////////////////////////////////////////////////////////////
diff --git a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/account/AccountsFragment.java b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/account/AccountsFragment.java
new file mode 100644
index 00000000..a723d4ca
--- /dev/null
+++ b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/account/AccountsFragment.java
@@ -0,0 +1,146 @@
+/*
+ * Copyright (C) 2005-2016 Alfresco Software Limited.
+ *
+ * This file is part of Alfresco Mobile for Android.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.alfresco.mobile.android.application.fragments.account;
+
+import java.util.List;
+import java.util.Map;
+
+import org.alfresco.mobile.android.application.R;
+import org.alfresco.mobile.android.application.activity.PublicDispatcherActivity;
+import org.alfresco.mobile.android.application.fragments.builder.LeafFragmentBuilder;
+import org.alfresco.mobile.android.platform.accounts.AlfrescoAccount;
+import org.alfresco.mobile.android.platform.accounts.AlfrescoAccountManager;
+import org.alfresco.mobile.android.platform.extensions.AnalyticsManager;
+import org.alfresco.mobile.android.ui.fragments.AlfrescoFragment;
+import org.alfresco.mobile.android.ui.holder.HolderUtils;
+import org.alfresco.mobile.android.ui.holder.TwoLinesViewHolder;
+
+import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.support.v4.app.FragmentActivity;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.LinearLayout;
+
+public class AccountsFragment extends AlfrescoFragment
+{
+ public static final String TAG = AccountsFragment.class.getName();
+
+ // //////////////////////////////////////////////////////////////////////
+ // CONSTRUCTORS
+ // //////////////////////////////////////////////////////////////////////
+ public AccountsFragment()
+ {
+ requiredSession = false;
+ checkSession = false;
+ eventBusRequired = false;
+ screenName = AnalyticsManager.SCREEN_ACCOUNTS_LISTING;
+ }
+
+ protected static AccountsFragment newInstanceByTemplate(Bundle b)
+ {
+ AccountsFragment cbf = new AccountsFragment();
+ cbf.setArguments(b);
+ return cbf;
+ }
+
+ // //////////////////////////////////////////////////////////////////////
+ // LIFE CYCLE
+ // //////////////////////////////////////////////////////////////////////
+ @Override
+ public String onPrepareTitle()
+ {
+ return getString(R.string.accounts_title_select);
+ }
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
+ {
+ setRootView(inflater.inflate(R.layout.fr_accounts, container, false));
+
+ // Accounts
+ List accounts = AlfrescoAccountManager.retrieveAccounts(getActivity());
+ View accountView;
+ LinearLayout accountContainer = (LinearLayout) viewById(R.id.settings_accounts_container);
+ accountContainer.removeAllViews();
+ TwoLinesViewHolder vh;
+ for (AlfrescoAccount account : accounts)
+ {
+ accountView = LayoutInflater.from(getActivity()).inflate(R.layout.row_two_lines_borderless_rounded,
+ accountContainer, false);
+ accountView.setTag(account.getId());
+ vh = HolderUtils.configure(accountView, account.getUsername(), account.getTitle(),
+ R.drawable.ic_account_circle_grey);
+ AccountsAdapter.displayAvatar(getActivity(), account, R.drawable.ic_account_light, vh.icon);
+
+ vh.choose.setVisibility(View.GONE);
+
+ accountView.setOnClickListener(new View.OnClickListener()
+ {
+ @Override
+ public void onClick(View v)
+ {
+ if (getActivity() instanceof PublicDispatcherActivity)
+ {
+ AlfrescoAccount selectedAccount = AlfrescoAccountManager.getInstance(getActivity())
+ .retrieveAccount((Long) v.getTag());
+ ((PublicDispatcherActivity) getActivity()).managePublicIntent(selectedAccount);
+ }
+ }
+ });
+ accountContainer.addView(accountView);
+ }
+
+ return getRootView();
+ }
+
+ // ///////////////////////////////////////////////////////////////////////////
+ // BUILDER
+ // ///////////////////////////////////////////////////////////////////////////
+ public static Builder with(FragmentActivity activity)
+ {
+ return new Builder(activity);
+ }
+
+ public static class Builder extends LeafFragmentBuilder
+ {
+ // ///////////////////////////////////////////////////////////////////////////
+ // CONSTRUCTORS
+ // ///////////////////////////////////////////////////////////////////////////
+ public Builder(FragmentActivity activity)
+ {
+ super(activity);
+ this.extraConfiguration = new Bundle();
+ }
+
+ public Builder(FragmentActivity appActivity, Map configuration)
+ {
+ super(appActivity, configuration);
+ }
+
+ // ///////////////////////////////////////////////////////////////////////////
+ // SETTERS
+ // ///////////////////////////////////////////////////////////////////////////
+ protected Fragment createFragment(Bundle b)
+ {
+ return newInstanceByTemplate(b);
+ }
+ }
+
+}
diff --git a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/node/browser/DocumentFolderBrowserFragment.java b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/node/browser/DocumentFolderBrowserFragment.java
index 38bb33a7..bdf5096a 100644
--- a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/node/browser/DocumentFolderBrowserFragment.java
+++ b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/node/browser/DocumentFolderBrowserFragment.java
@@ -97,8 +97,12 @@
import org.alfresco.mobile.android.ui.node.browse.NodeBrowserTemplate;
import org.alfresco.mobile.android.ui.operation.OperationWaitingDialogFragment;
import org.apache.chemistry.opencmis.commons.PropertyIds;
+import org.apache.chemistry.opencmis.commons.exceptions.CmisObjectNotFoundException;
import org.apache.chemistry.opencmis.commons.impl.JSONConverter;
+import com.cocosw.bottomsheet.BottomSheet;
+import com.squareup.otto.Subscribe;
+
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
@@ -122,9 +126,6 @@
import android.widget.SpinnerAdapter;
import android.widget.TextView;
-import com.cocosw.bottomsheet.BottomSheet;
-import com.squareup.otto.Subscribe;
-
/**
* Display a dialogFragment to retrieve information about the content of a
* specific folder.
@@ -772,7 +773,19 @@ public void onResult(NodeChildrenEvent event)
{
ev.setVisibility(View.VISIBLE);
}
- onResultError(event.exception);
+
+ if (event.exception != null && event.exception.getCause() instanceof CmisObjectNotFoundException)
+ {
+ displayEmptyView();
+ if (viewById(R.id.empty_text) != null)
+ {
+ ((TextView) viewById(R.id.empty_text)).setText(R.string.node_browser_folder_not_found);
+ }
+ }
+ else
+ {
+ onResultError(event.exception);
+ }
}
else
{
diff --git a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/node/details/PagerNodeDetailsFragment.java b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/node/details/PagerNodeDetailsFragment.java
index 59466718..5aa504dc 100644
--- a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/node/details/PagerNodeDetailsFragment.java
+++ b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/node/details/PagerNodeDetailsFragment.java
@@ -43,6 +43,9 @@
import org.alfresco.mobile.android.platform.extensions.AnalyticsManager;
import org.alfresco.mobile.android.sync.utils.NodeSyncPlaceHolder;
+import com.astuetz.PagerSlidingTabStrip;
+import com.squareup.otto.Subscribe;
+
import android.annotation.TargetApi;
import android.content.Intent;
import android.os.Build;
@@ -55,9 +58,6 @@
import android.util.Log;
import android.widget.TextView;
-import com.astuetz.PagerSlidingTabStrip;
-import com.squareup.otto.Subscribe;
-
/**
* Responsible to display details of a specific Node.
*
@@ -231,9 +231,16 @@ public void onResult(RetrieveNodeEvent event)
{
show(R.id.pager_empty);
displayEmptyView();
- if (((TextView) viewById(R.id.empty_text)) != null)
+ if (viewById(R.id.empty_text) != null)
{
- ((TextView) viewById(R.id.empty_text)).setText(R.string.empty_child);
+ if (event.exception != null && event.exception instanceof NullPointerException)
+ {
+ ((TextView) viewById(R.id.empty_text)).setText(R.string.node_details_file_not_found);
+ }
+ else
+ {
+ ((TextView) viewById(R.id.empty_text)).setText(R.string.empty_child);
+ }
}
}
else
diff --git a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/user/UserProfileFragment.java b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/user/UserProfileFragment.java
index ab7504b9..768cb2e0 100644
--- a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/user/UserProfileFragment.java
+++ b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/user/UserProfileFragment.java
@@ -19,6 +19,7 @@
import java.util.Map;
+import org.alfresco.mobile.android.api.exceptions.AlfrescoServiceException;
import org.alfresco.mobile.android.api.model.Company;
import org.alfresco.mobile.android.api.model.Person;
import org.alfresco.mobile.android.api.session.AlfrescoSession;
@@ -41,6 +42,8 @@
import org.alfresco.mobile.android.ui.rendition.RenditionManager;
import org.alfresco.mobile.android.ui.utils.UIUtils;
+import com.squareup.otto.Subscribe;
+
import android.content.ActivityNotFoundException;
import android.content.ComponentName;
import android.content.Context;
@@ -64,8 +67,6 @@
import android.widget.PopupMenu.OnMenuItemClickListener;
import android.widget.TextView;
-import com.squareup.otto.Subscribe;
-
/**
* @since 1.3
* @author jm.pascal
@@ -203,8 +204,15 @@ public void onResult(PersonEvent event)
{
hide(R.id.progressbar);
show(R.id.empty);
- ((TextView) viewById(R.id.empty_text)).setText(R.string.empty_child);
- CloudExceptionUtils.handleCloudException(getActivity(), event.exception, false);
+ if (event.exception instanceof AlfrescoServiceException
+ && event.exception.getMessage().contains("not found"))
+ {
+ ((TextView) viewById(R.id.empty_text)).setText(R.string.empty_users);
+ }
+ else
+ {
+ CloudExceptionUtils.handleCloudException(getActivity(), event.exception, false);
+ }
}
else
{
diff --git a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/workflow/task/TasksFragment.java b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/workflow/task/TasksFragment.java
index ca90d2f9..dcb1e7d4 100644
--- a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/workflow/task/TasksFragment.java
+++ b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/workflow/task/TasksFragment.java
@@ -43,6 +43,8 @@
import org.alfresco.mobile.android.ui.workflow.task.TasksFoundationAdapter;
import org.alfresco.mobile.android.ui.workflow.task.TasksFoundationFragment;
+import com.squareup.otto.Subscribe;
+
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
@@ -57,8 +59,6 @@
import android.widget.ImageView;
import android.widget.TextView;
-import com.squareup.otto.Subscribe;
-
public class TasksFragment extends TasksFoundationFragment
{
private static final String ARGUMENT_MENU_ID = "menuId";
@@ -292,6 +292,12 @@ protected void retrieveCustomArgument(Map properties, Bundle b)
TasksFoundationFragment.addFilter(properties, b);
}
+ public Builder retrieveFilter(Intent intent)
+ {
+ TasksFoundationFragment.addFilter(intent, extraConfiguration);
+ return this;
+ }
+
// ///////////////////////////////////////////////////////////////////////////
// SETTERS
// ///////////////////////////////////////////////////////////////////////////
diff --git a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/intent/PublicIntentAPIUtils.java b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/intent/PublicIntentAPIUtils.java
index e0c00d67..3af5d704 100644
--- a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/intent/PublicIntentAPIUtils.java
+++ b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/intent/PublicIntentAPIUtils.java
@@ -1,14 +1,38 @@
+/*
+ * Copyright (C) 2005-2016 Alfresco Software Limited.
+ *
+ * This file is part of Alfresco Mobile for Android.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
package org.alfresco.mobile.android.application.intent;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
+import org.alfresco.mobile.android.application.fragments.fileexplorer.FileExplorerFragment;
+import org.alfresco.mobile.android.application.fragments.node.browser.DocumentFolderBrowserFragment;
+import org.alfresco.mobile.android.application.fragments.node.details.NodeDetailsFragment;
+import org.alfresco.mobile.android.application.fragments.user.UserProfileFragment;
+import org.alfresco.mobile.android.application.fragments.workflow.task.TasksFragment;
import org.alfresco.mobile.android.platform.intent.AlfrescoIntentAPI;
import org.alfresco.mobile.android.platform.intent.PrivateIntent;
import android.content.Intent;
import android.net.Uri;
+import android.support.v4.app.FragmentActivity;
public class PublicIntentAPIUtils
{
@@ -63,25 +87,85 @@ private static Intent uploadFilesIntent(ArrayList filePaths, long accoun
// ///////////////////////////////////////////////////////////////////////////
public static Intent viewFolder(long accountId, String folderId)
{
- Uri.Builder b = new Uri.Builder().scheme(AlfrescoIntentAPI.SCHEME)
- .authority(AlfrescoIntentAPI.AUTHORITY_FOLDER).appendPath(folderId);
- return new Intent(AlfrescoIntentAPI.ACTION_VIEW).setData(b.build()).putExtra(
- AlfrescoIntentAPI.EXTRA_ACCOUNT_ID, accountId);
+ Uri.Builder b = new Uri.Builder().scheme(AlfrescoIntentAPI.SCHEME).authority(AlfrescoIntentAPI.AUTHORITY_FOLDER)
+ .appendPath(folderId);
+ return new Intent(AlfrescoIntentAPI.ACTION_VIEW).setData(b.build()).putExtra(AlfrescoIntentAPI.EXTRA_ACCOUNT_ID,
+ accountId);
}
public static Intent viewDocument(long accountId, String documentId)
{
Uri.Builder b = new Uri.Builder().scheme(AlfrescoIntentAPI.SCHEME)
.authority(AlfrescoIntentAPI.AUTHORITY_DOCUMENT).appendPath(documentId);
- return new Intent(AlfrescoIntentAPI.ACTION_VIEW).setData(b.build()).putExtra(
- AlfrescoIntentAPI.EXTRA_ACCOUNT_ID, accountId);
+ return new Intent(AlfrescoIntentAPI.ACTION_VIEW).setData(b.build()).putExtra(AlfrescoIntentAPI.EXTRA_ACCOUNT_ID,
+ accountId);
+ }
+
+ public static Intent viewSite(long accountId, String siteShortName)
+ {
+ Uri.Builder b = new Uri.Builder().scheme(AlfrescoIntentAPI.SCHEME).authority(AlfrescoIntentAPI.AUTHORITY_SITE)
+ .appendPath(siteShortName);
+ return new Intent(AlfrescoIntentAPI.ACTION_VIEW).setData(b.build()).putExtra(AlfrescoIntentAPI.EXTRA_ACCOUNT_ID,
+ accountId);
}
public static Intent viewFile(long accountId, File file)
{
Uri.Builder b = new Uri.Builder().scheme(AlfrescoIntentAPI.SCHEME).authority(AlfrescoIntentAPI.AUTHORITY_FILE)
.appendPath(file.getPath());
- return new Intent(AlfrescoIntentAPI.ACTION_VIEW).setData(b.build()).putExtra(
- AlfrescoIntentAPI.EXTRA_ACCOUNT_ID, accountId);
+ return new Intent(AlfrescoIntentAPI.ACTION_VIEW).setData(b.build()).putExtra(AlfrescoIntentAPI.EXTRA_ACCOUNT_ID,
+ accountId);
+ }
+
+ public static Intent viewUser(long accountId, String userId)
+ {
+ Uri.Builder b = new Uri.Builder().scheme(AlfrescoIntentAPI.SCHEME).authority(AlfrescoIntentAPI.AUTHORITY_USER)
+ .appendPath(userId);
+ return new Intent(AlfrescoIntentAPI.ACTION_VIEW).setData(b.build()).putExtra(AlfrescoIntentAPI.EXTRA_ACCOUNT_ID,
+ accountId);
+ }
+
+ public static Intent viewTasks(long accountId, Uri data)
+ {
+ return new Intent(AlfrescoIntentAPI.ACTION_VIEW).setData(data).putExtra(AlfrescoIntentAPI.EXTRA_ACCOUNT_ID,
+ accountId);
+ }
+
+ // ///////////////////////////////////////////////////////////////////////////
+ // DISPATCH VIEW
+ // ///////////////////////////////////////////////////////////////////////////
+ public static void openShortcut(FragmentActivity context, Intent intent)
+ {
+ if (AlfrescoIntentAPI.ACTION_VIEW.equals(intent.getAction()) && intent.getData() != null)
+ {
+ if (AlfrescoIntentAPI.AUTHORITY_FOLDER.equals(intent.getData().getAuthority()))
+ {
+ DocumentFolderBrowserFragment.with(context).folderIdentifier(intent.getData().getPathSegments().get(0))
+ .shortcut(true).display();
+ }
+ else if (AlfrescoIntentAPI.AUTHORITY_FILE.equals(intent.getData().getAuthority()))
+ {
+ FileExplorerFragment.with(context).file(new File(intent.getData().getPathSegments().get(0))).display();
+ }
+ else if (AlfrescoIntentAPI.AUTHORITY_DOCUMENT.equals(intent.getData().getAuthority()))
+ {
+ NodeDetailsFragment.with(context).nodeId(intent.getData().getPathSegments().get(0)).back(true)
+ .display();
+ }
+ else if (AlfrescoIntentAPI.AUTHORITY_SITE.equals(intent.getData().getAuthority()))
+ {
+ DocumentFolderBrowserFragment.with(context).siteShortName(intent.getData().getPathSegments().get(0))
+ .back(true).display();
+ }
+ else if (AlfrescoIntentAPI.AUTHORITY_USER.equals(intent.getData().getAuthority()))
+ {
+ UserProfileFragment.with(context).personId(intent.getData().getPathSegments().get(0)).back(true)
+ .display();
+ }
+ else if (AlfrescoIntentAPI.AUTHORITY_TASKS.equals(intent.getData().getAuthority()))
+ {
+ TasksFragment.with(context).retrieveFilter(intent).back(true).display();
+ }
+ }
}
}
diff --git a/alfresco-mobile-android/src/main/res/layout/fr_accounts.xml b/alfresco-mobile-android/src/main/res/layout/fr_accounts.xml
new file mode 100644
index 00000000..9918917b
--- /dev/null
+++ b/alfresco-mobile-android/src/main/res/layout/fr_accounts.xml
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/alfresco-mobile-android/src/main/res/values/strings.xml b/alfresco-mobile-android/src/main/res/values/strings.xml
index f6304ff1..0ac5ac3e 100644
--- a/alfresco-mobile-android/src/main/res/values/strings.xml
+++ b/alfresco-mobile-android/src/main/res/values/strings.xml
@@ -834,6 +834,18 @@
No comments foundNo files foundSign in
+ No file found
+ No folder found
+ No user found
+ We didn\'t recognize this link. Try contacting your Alfresco administrator
+ Filter information is missing. Try contacting your Alfresco administrator
+ Id information is missing. Try contacting your Alfresco administrator
+ NodeRef information seems wrong. Try contacting your Alfresco administrator
+
+
+
+ Select an account
+ No accounts found. Try adding one.
diff --git a/platform/foundation/src/main/java/org/alfresco/mobile/android/async/node/browse/NodeChildrenOperation.java b/platform/foundation/src/main/java/org/alfresco/mobile/android/async/node/browse/NodeChildrenOperation.java
index 47ab584d..482a591a 100644
--- a/platform/foundation/src/main/java/org/alfresco/mobile/android/async/node/browse/NodeChildrenOperation.java
+++ b/platform/foundation/src/main/java/org/alfresco/mobile/android/async/node/browse/NodeChildrenOperation.java
@@ -22,6 +22,7 @@
import java.util.List;
import java.util.Map;
+import org.alfresco.mobile.android.api.exceptions.AlfrescoException;
import org.alfresco.mobile.android.api.exceptions.AlfrescoServiceException;
import org.alfresco.mobile.android.api.model.Folder;
import org.alfresco.mobile.android.api.model.Node;
@@ -40,6 +41,7 @@
import org.alfresco.mobile.android.async.utils.ISO9075;
import org.alfresco.mobile.android.platform.EventBusManager;
import org.apache.chemistry.opencmis.client.bindings.spi.http.Response;
+import org.apache.chemistry.opencmis.commons.exceptions.CmisObjectNotFoundException;
import org.apache.chemistry.opencmis.commons.impl.JSONConverter;
import org.apache.chemistry.opencmis.commons.impl.UrlBuilder;
@@ -100,6 +102,7 @@ protected LoaderResult> doInBackground()
if (siteId != null && site == null)
{
site = session.getServiceRegistry().getSiteService().getSite(siteId);
+ if (site == null) { throw new AlfrescoServiceException(AlfrescoException.DOCFOLDER_GENERIC, new CmisObjectNotFoundException()); }
}
if (site != null)
{
diff --git a/platform/foundation/src/main/java/org/alfresco/mobile/android/async/person/PersonOperation.java b/platform/foundation/src/main/java/org/alfresco/mobile/android/async/person/PersonOperation.java
index 5f257e8d..f3a7501c 100644
--- a/platform/foundation/src/main/java/org/alfresco/mobile/android/async/person/PersonOperation.java
+++ b/platform/foundation/src/main/java/org/alfresco/mobile/android/async/person/PersonOperation.java
@@ -1,20 +1,20 @@
-/*******************************************************************************
- * Copyright (C) 2005-2014 Alfresco Software Limited.
+/*
+ * Copyright (C) 2005-2016 Alfresco Software Limited.
*
- * This file is part of Alfresco Mobile for Android.
+ * This file is part of Alfresco Mobile for Android.
*
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *******************************************************************************/
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.alfresco.mobile.android.async.person;
import org.alfresco.mobile.android.api.model.Person;
diff --git a/platform/foundation/src/main/java/org/alfresco/mobile/android/platform/extensions/AnalyticsManager.java b/platform/foundation/src/main/java/org/alfresco/mobile/android/platform/extensions/AnalyticsManager.java
index a98dde54..3c160e5d 100644
--- a/platform/foundation/src/main/java/org/alfresco/mobile/android/platform/extensions/AnalyticsManager.java
+++ b/platform/foundation/src/main/java/org/alfresco/mobile/android/platform/extensions/AnalyticsManager.java
@@ -525,6 +525,10 @@ public abstract class AnalyticsManager extends Manager
public static final String SCREEN_TEXT_EDITOR_TEXT_SIZE = "Text Editor - Text Size";
+ public static final String PREFIX_ACCOUNTS = "Accounts - ";
+
+ public static final String SCREEN_ACCOUNTS_LISTING = PREFIX_ACCOUNTS + "Listing";
+
// ////////////////////////////////////////////////////
// SETTINGS
// ////////////////////////////////////////////////////
diff --git a/platform/foundation/src/main/java/org/alfresco/mobile/android/platform/intent/AlfrescoIntentAPI.java b/platform/foundation/src/main/java/org/alfresco/mobile/android/platform/intent/AlfrescoIntentAPI.java
index c26dd0b3..02bc8fcf 100644
--- a/platform/foundation/src/main/java/org/alfresco/mobile/android/platform/intent/AlfrescoIntentAPI.java
+++ b/platform/foundation/src/main/java/org/alfresco/mobile/android/platform/intent/AlfrescoIntentAPI.java
@@ -1,3 +1,21 @@
+/*
+ * Copyright (C) 2005-2016 Alfresco Software Limited.
+ *
+ * This file is part of Alfresco Mobile for Android.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
package org.alfresco.mobile.android.platform.intent;
/**
@@ -8,6 +26,10 @@ public interface AlfrescoIntentAPI
{
String SCHEME = "alfresco";
+ String ID = "id";
+
+ String FILTER = "filter";
+
// ///////////////////////////////////////////////////////////////////////////
// PREFIX
// ///////////////////////////////////////////////////////////////////////////
@@ -23,6 +45,12 @@ public interface AlfrescoIntentAPI
String AUTHORITY_FILE = "file";
+ String AUTHORITY_SITE = "site";
+
+ String AUTHORITY_TASKS = "tasks";
+
+ String AUTHORITY_USER = "user";
+
// EXTRA
// ///////////////////////////////////////////////////////////////////////////
String EXTRA_ACCOUNT_ID = PREFIX_EXTRA.concat(".ACCOUNT_ID");
diff --git a/platform/foundation/src/main/java/org/alfresco/mobile/android/ui/fragments/CommonGridFragment.java b/platform/foundation/src/main/java/org/alfresco/mobile/android/ui/fragments/CommonGridFragment.java
index da2c3222..3a5421f8 100644
--- a/platform/foundation/src/main/java/org/alfresco/mobile/android/ui/fragments/CommonGridFragment.java
+++ b/platform/foundation/src/main/java/org/alfresco/mobile/android/ui/fragments/CommonGridFragment.java
@@ -32,6 +32,8 @@
import org.alfresco.mobile.android.ui.RefreshFragment;
import org.alfresco.mobile.android.ui.template.ListingTemplate;
+import com.github.clans.fab.FloatingActionButton;
+
import android.os.Bundle;
import android.text.TextUtils;
import android.util.DisplayMetrics;
@@ -49,8 +51,6 @@
import android.widget.ImageView;
import android.widget.TextView;
-import com.github.clans.fab.FloatingActionButton;
-
import de.keyboardsurfer.android.widget.crouton.Crouton;
import de.keyboardsurfer.android.widget.crouton.Style;
@@ -413,6 +413,7 @@ protected void displayEmptyView()
{
if (!isVisible()) { return; }
gv.setEmptyView(ev);
+ pb.setVisibility(View.GONE);
isFullLoad = Boolean.TRUE;
if (adapter != null)
{
diff --git a/platform/foundation/src/main/java/org/alfresco/mobile/android/ui/workflow/task/TasksFoundationFragment.java b/platform/foundation/src/main/java/org/alfresco/mobile/android/ui/workflow/task/TasksFoundationFragment.java
index 58d622d9..63e245ef 100644
--- a/platform/foundation/src/main/java/org/alfresco/mobile/android/ui/workflow/task/TasksFoundationFragment.java
+++ b/platform/foundation/src/main/java/org/alfresco/mobile/android/ui/workflow/task/TasksFoundationFragment.java
@@ -1,20 +1,20 @@
-/*******************************************************************************
- * Copyright (C) 2005-2014 Alfresco Software Limited.
+/*
+ * Copyright (C) 2005-2016 Alfresco Software Limited.
*
- * This file is part of Alfresco Mobile for Android.
+ * This file is part of Alfresco Mobile for Android.
*
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *******************************************************************************/
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.alfresco.mobile.android.ui.workflow.task;
import java.util.ArrayList;
@@ -34,11 +34,12 @@
import org.alfresco.mobile.android.foundation.R;
import org.alfresco.mobile.android.ui.fragments.BaseGridFragment;
+import com.squareup.otto.Subscribe;
+
+import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
-import com.squareup.otto.Subscribe;
-
/**
* Displays a fragment list of document and folders.
*
@@ -147,6 +148,16 @@ public static void addFilter(Map json, Bundle b)
}
}
+ public static void addFilter(Intent intent, Bundle b)
+ {
+ Map filter = new HashMap<>(intent.getData().getQueryParameterNames().size());
+ for (String key : intent.getData().getQueryParameterNames())
+ {
+ filter.put(key, intent.getData().getQueryParameter(key));
+ }
+ b.putAll(createFilterBundle(filter));
+ }
+
public static Bundle createFilterBundle(Map properties)
{
Bundle b = new Bundle();
From 6d41cd81e2cef186667ef2a107e1bc230b0bbc17 Mon Sep 17 00:00:00 2001
From: jmpascal
Date: Fri, 20 May 2016 16:06:26 +0200
Subject: [PATCH 23/25] ANDROID-326
---
alfresco-mobile-android/build.gradle | 2 +-
.../mobile/android/application/VersionNumber.java | 10 +++++-----
build.gradle | 2 +-
gradle.properties | 2 +-
4 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/alfresco-mobile-android/build.gradle b/alfresco-mobile-android/build.gradle
index cfca74f8..014c7c54 100644
--- a/alfresco-mobile-android/build.gradle
+++ b/alfresco-mobile-android/build.gradle
@@ -27,7 +27,7 @@ android {
minSdkVersion 15
targetSdkVersion 23
- versionCode 63
+ versionCode 70
versionName VERSION_NAME
diff --git a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/VersionNumber.java b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/VersionNumber.java
index 5663990a..031a04b7 100644
--- a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/VersionNumber.java
+++ b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/VersionNumber.java
@@ -61,14 +61,14 @@ public interface VersionNumber
/** Release 19 Nov 2015. */
int VERSION_1_6_0 = 50;
- /** Release 11 March 2015. */
+ /** Release 11 March 2016. */
int VERSION_1_6_1 = 60;
- /** Release April 2015. */
+ /** Release April 2016. */
int VERSION_1_6_2 = 61;
- /** Release XXX 2015. */
- int VERSION_1_6_3 = 63;
+ /** Release XXX 2016. */
+ int VERSION_1_7_0 = 70;
- int LATEST_VERSION = VERSION_1_6_3;
+ int LATEST_VERSION = VERSION_1_7_0;
}
diff --git a/build.gradle b/build.gradle
index 14295a9a..bcc18ce1 100644
--- a/build.gradle
+++ b/build.gradle
@@ -22,7 +22,7 @@ buildscript {
mavenCentral()
}
dependencies {
- classpath 'com.android.tools.build:gradle:1.5.0'
+ classpath 'com.android.tools.build:gradle:2.1.0'
classpath 'com.google.gms:google-services:1.5.0'
}
}
diff --git a/gradle.properties b/gradle.properties
index 98bb703f..322bbbe0 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -39,7 +39,7 @@
## DEFAULT BUILD VARIANT
####################################################################
# Current Version number of the application
-VERSION_NAME=1.6.3
+VERSION_NAME=1.7.0
# Build Number of the application
# Overrides by Continuous Integration System during build
From 3d93088d970de8b4d7e657b2b6dca8d2a0f1873f Mon Sep 17 00:00:00 2001
From: jmpascal
Date: Fri, 20 May 2016 16:18:53 +0200
Subject: [PATCH 24/25] ANDROID-326
---
gradle/wrapper/gradle-wrapper.properties | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index b4425f95..f3609984 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -21,4 +21,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
+distributionUrl=https://services.gradle.org/distributions/gradle-2.10-all.zip
From 4078f03d9fadc007d78dfa79a29ea4b13a99bd3f Mon Sep 17 00:00:00 2001
From: jmpascal
Date: Thu, 26 May 2016 08:56:31 +0100
Subject: [PATCH 25/25] ANDROID-323
---
.../application/activity/MainActivity.java | 11 +++++++----
.../activity/PrivateDialogActivity.java | 16 ++++++++++++++--
.../preferences/AccountSettingsFragment.java | 16 ++++++++++++++--
.../application/security/DataCleaner.java | 1 +
.../application/security/PassCodeActivity.java | 11 +++++++++++
.../security/PassCodeDialogFragment.java | 1 +
6 files changed, 48 insertions(+), 8 deletions(-)
diff --git a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/activity/MainActivity.java b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/activity/MainActivity.java
index 314fe3f0..59ecdfe0 100644
--- a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/activity/MainActivity.java
+++ b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/activity/MainActivity.java
@@ -361,10 +361,13 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data)
((MainMenuFragment) getFragment(MainMenuFragment.TAG)).refreshAccount();
((MainMenuFragment) getFragment(MainMenuFragment.SLIDING_TAG)).refreshAccount();
- // Send Event
- // ConfigManager.getInstance(this).loadAndUseCustom(getCurrentAccount());
- EventBusManager.getInstance()
- .post(new ConfigManager.ConfigurationMenuEvent(getCurrentAccount().getId()));
+ if (getCurrentAccount() != null)
+ {
+ // Send Event
+ // ConfigManager.getInstance(this).loadAndUseCustom(getCurrentAccount());
+ EventBusManager.getInstance()
+ .post(new ConfigManager.ConfigurationMenuEvent(getCurrentAccount().getId()));
+ }
}
}
diff --git a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/activity/PrivateDialogActivity.java b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/activity/PrivateDialogActivity.java
index 6fca7aa2..5237d5fe 100644
--- a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/activity/PrivateDialogActivity.java
+++ b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/activity/PrivateDialogActivity.java
@@ -32,12 +32,16 @@
import org.alfresco.mobile.android.application.fragments.preferences.GeneralPreferences;
import org.alfresco.mobile.android.application.fragments.workflow.CreateTaskFragment;
import org.alfresco.mobile.android.application.fragments.workflow.CreateTaskTypePickerFragment;
+import org.alfresco.mobile.android.application.security.PassCodeActivity;
import org.alfresco.mobile.android.application.ui.form.picker.DocumentPickerFragment.onPickDocumentFragment;
import org.alfresco.mobile.android.async.file.encryption.AccountProtectionEvent;
import org.alfresco.mobile.android.platform.extensions.AnalyticsHelper;
import org.alfresco.mobile.android.platform.extensions.AnalyticsManager;
import org.alfresco.mobile.android.platform.intent.PrivateIntent;
+import com.squareup.otto.Subscribe;
+
+import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
@@ -45,8 +49,6 @@
import android.view.MenuItem;
import android.view.View;
-import com.squareup.otto.Subscribe;
-
/**
* @author Jean Marie Pascal
*/
@@ -173,6 +175,16 @@ protected void onStop()
super.onStop();
}
+ @Override
+ protected void onActivityResult(int requestCode, int resultCode, Intent data)
+ {
+ if (requestCode == PassCodeActivity.REQUEST_CODE_PASSCODE && resultCode == RESULT_CANCELED)
+ {
+ setResult(Activity.RESULT_CANCELED);
+ finish();
+ }
+ }
+
// ///////////////////////////////////////////////////////////////////////////
// MENU
// ///////////////////////////////////////////////////////////////////////////
diff --git a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/preferences/AccountSettingsFragment.java b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/preferences/AccountSettingsFragment.java
index 9fe24da0..8c509a01 100644
--- a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/preferences/AccountSettingsFragment.java
+++ b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/fragments/preferences/AccountSettingsFragment.java
@@ -58,6 +58,8 @@
import org.alfresco.mobile.android.ui.holder.TwoLinesViewHolder;
import org.alfresco.mobile.android.ui.utils.UIUtils;
+import com.afollestad.materialdialogs.MaterialDialog;
+
import android.accounts.Account;
import android.accounts.AccountManager;
import android.content.Intent;
@@ -75,8 +77,6 @@
import android.view.ViewGroup;
import android.widget.TextView;
-import com.afollestad.materialdialogs.MaterialDialog;
-
/**
* Manage global application preferences.
*
@@ -193,6 +193,18 @@ public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
}
+ @Override
+ public void onStart()
+ {
+ super.onStart();
+ if (AlfrescoAccountManager.getInstance(getActivity()).isEmpty()
+ && AlfrescoAccountManager.getInstance(getActivity()).hasData())
+ {
+ dismiss();
+ getActivity().finish();
+ }
+ }
+
// ///////////////////////////////////////////////////////////////////////////
// INTERNAL
// ///////////////////////////////////////////////////////////////////////////
diff --git a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/security/DataCleaner.java b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/security/DataCleaner.java
index 95681118..294e883a 100644
--- a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/security/DataCleaner.java
+++ b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/security/DataCleaner.java
@@ -80,6 +80,7 @@ protected Boolean doInBackground(String... params)
// Delete loaded accounts
SessionManager.getInstance(activityRef.get()).shutdown();
+ AlfrescoAccountManager.getInstance(activityRef.get()).shutdown();
// Find folders
File cache = activityRef.get().getCacheDir();
diff --git a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/security/PassCodeActivity.java b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/security/PassCodeActivity.java
index 1e036acb..e0cbed32 100644
--- a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/security/PassCodeActivity.java
+++ b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/security/PassCodeActivity.java
@@ -21,6 +21,7 @@
import org.alfresco.mobile.android.application.configuration.features.PasscodeConfigFeature;
import org.alfresco.mobile.android.application.fragments.FragmentDisplayer;
import org.alfresco.mobile.android.application.fragments.preferences.PasscodePreferences;
+import org.alfresco.mobile.android.platform.accounts.AlfrescoAccountManager;
import android.app.Activity;
import android.content.Intent;
@@ -58,6 +59,16 @@ public void onCreate(Bundle savedInstanceState)
}
}
+ @Override
+ protected void onStart()
+ {
+ super.onStart();
+ if (AlfrescoAccountManager.getInstance(this).isEmpty() && AlfrescoAccountManager.getInstance(this).hasData())
+ {
+ finish();
+ }
+ }
+
public static void requestUserPasscode(FragmentActivity activity)
{
PasscodeConfigFeature feature = new PasscodeConfigFeature(activity);
diff --git a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/security/PassCodeDialogFragment.java b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/security/PassCodeDialogFragment.java
index d2a97a76..24198c2d 100644
--- a/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/security/PassCodeDialogFragment.java
+++ b/alfresco-mobile-android/src/main/java/org/alfresco/mobile/android/application/security/PassCodeDialogFragment.java
@@ -461,6 +461,7 @@ private void checkAttempts()
if (maxAttempts > 0 && attempts >= maxAttempts)
{
WaitingDialogFragment fr = new WaitingDialogFragment();
+ fr.setCancelable(false);
fr.show(getActivity().getSupportFragmentManager(), WaitingDialogFragment.TAG);
DataCleaner cleaner = new DataCleaner(getActivity());