Merge branch 'development' of https://github.com/siacs/Conversations into development

iNPUTmice created

Change summary

src/main/AndroidManifest.xml                                 | 56 +++--
src/main/java/eu/siacs/conversations/ui/AboutActivity.java   | 15 +
src/main/java/eu/siacs/conversations/ui/AboutPreference.java | 41 ++++
src/main/res/layout/activity_about.xml                       | 21 ++
src/main/res/values-w820dp/dimens.xml                        |  7 
src/main/res/values/dimens.xml                               |  5 
src/main/res/values/strings.xml                              | 39 +++
src/main/res/xml/preferences.xml                             |  3 
8 files changed, 156 insertions(+), 31 deletions(-)

Detailed changes

src/main/AndroidManifest.xml 🔗

@@ -19,10 +19,10 @@
         android:icon="@drawable/ic_launcher"
         android:label="@string/app_name"
         android:theme="@style/ConversationsTheme"
-        tools:replace="android:label">
-        <service android:name="eu.siacs.conversations.services.XmppConnectionService" />
+        tools:replace="android:label" >
+        <service android:name=".services.XmppConnectionService" />
 
-        <receiver android:name="eu.siacs.conversations.services.EventReceiver">
+        <receiver android:name=".services.EventReceiver" >
             <intent-filter>
                 <action android:name="android.intent.action.BOOT_COMPLETED" />
                 <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
@@ -31,10 +31,10 @@
         </receiver>
 
         <activity
-            android:name="eu.siacs.conversations.ui.ConversationActivity"
+            android:name=".ui.ConversationActivity"
             android:label="@string/title_activity_conversations"
             android:launchMode="singleTask"
-            android:windowSoftInputMode="stateHidden">
+            android:windowSoftInputMode="stateHidden" >
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
 
@@ -42,9 +42,9 @@
             </intent-filter>
         </activity>
         <activity
-            android:name="eu.siacs.conversations.ui.StartConversationActivity"
+            android:name=".ui.StartConversationActivity"
             android:configChanges="orientation|screenSize"
-            android:label="@string/title_activity_start_conversation">
+            android:label="@string/title_activity_start_conversation" >
             <intent-filter>
                 <action android:name="android.intent.action.SENDTO" />
 
@@ -63,38 +63,40 @@
             </intent-filter>
             <intent-filter>
                 <action android:name="android.nfc.action.NDEF_DISCOVERED" />
+
                 <category android:name="android.intent.category.DEFAULT" />
+
                 <data android:scheme="xmpp" />
             </intent-filter>
         </activity>
         <activity
-            android:name="eu.siacs.conversations.ui.SettingsActivity"
-            android:label="@string/title_activity_settings"></activity>
+            android:name=".ui.SettingsActivity"
+            android:label="@string/title_activity_settings" />
         <activity
-            android:name="eu.siacs.conversations.ui.ChooseContactActivity"
-            android:label="@string/title_activity_choose_contact"></activity>
+            android:name=".ui.ChooseContactActivity"
+            android:label="@string/title_activity_choose_contact" />
         <activity
-            android:name="eu.siacs.conversations.ui.ManageAccountActivity"
+            android:name=".ui.ManageAccountActivity"
             android:configChanges="orientation|screenSize"
-            android:label="@string/title_activity_manage_accounts"></activity>
+            android:label="@string/title_activity_manage_accounts" />
         <activity
-            android:name="eu.siacs.conversations.ui.EditAccountActivity"
-            android:windowSoftInputMode="stateHidden|adjustResize"></activity>
+            android:name=".ui.EditAccountActivity"
+            android:windowSoftInputMode="stateHidden|adjustResize" />
         <activity
-            android:name="eu.siacs.conversations.ui.ConferenceDetailsActivity"
+            android:name=".ui.ConferenceDetailsActivity"
             android:label="@string/title_activity_conference_details"
-            android:windowSoftInputMode="stateHidden"></activity>
+            android:windowSoftInputMode="stateHidden" />
         <activity
-            android:name="eu.siacs.conversations.ui.ContactDetailsActivity"
+            android:name=".ui.ContactDetailsActivity"
             android:label="@string/title_activity_contact_details"
-            android:windowSoftInputMode="stateHidden"></activity>
+            android:windowSoftInputMode="stateHidden" />
         <activity
-            android:name="eu.siacs.conversations.ui.PublishProfilePictureActivity"
+            android:name=".ui.PublishProfilePictureActivity"
             android:label="@string/mgmt_account_publish_avatar"
-            android:windowSoftInputMode="stateHidden"></activity>
+            android:windowSoftInputMode="stateHidden" />
         <activity
-            android:name="eu.siacs.conversations.ui.ShareWithActivity"
-            android:label="@string/title_activity_conversations">
+            android:name=".ui.ShareWithActivity"
+            android:label="@string/title_activity_conversations" >
             <intent-filter>
                 <action android:name="android.intent.action.SEND" />
 
@@ -111,6 +113,14 @@
             </intent-filter>
         </activity>
         <activity android:name="de.duenndns.ssl.MemorizingActivity" />
+        <activity
+            android:name=".ui.AboutActivity"
+            android:label="@string/title_activity_about"
+            android:parentActivityName=".ui.SettingsActivity" >
+            <meta-data
+                android:name="android.support.PARENT_ACTIVITY"
+                android:value="eu.siacs.conversations.ui.SettingsActivity" />
+        </activity>
     </application>
 
 </manifest>

src/main/java/eu/siacs/conversations/ui/AboutActivity.java 🔗

@@ -0,0 +1,15 @@
+package eu.siacs.conversations.ui;
+
+import android.app.Activity;
+import android.os.Bundle;
+
+import eu.siacs.conversations.R;
+
+public class AboutActivity extends Activity {
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_about);
+    }
+}

src/main/java/eu/siacs/conversations/ui/AboutPreference.java 🔗

@@ -0,0 +1,41 @@
+package eu.siacs.conversations.ui;
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.preference.Preference;
+import android.util.AttributeSet;
+
+public class AboutPreference extends Preference {
+	public AboutPreference(final Context context, final AttributeSet attrs, final int defStyle) {
+		super(context, attrs, defStyle);
+		setSummary();
+	}
+
+	public AboutPreference(final Context context, final AttributeSet attrs) {
+		super(context, attrs);
+		setSummary();
+	}
+
+    @Override
+    protected void onClick() {
+        super.onClick();
+        final Intent intent = new Intent(getContext(), AboutActivity.class);
+        getContext().startActivity(intent);
+    }
+
+    private void setSummary() {
+		if (getContext() != null && getContext().getPackageManager() != null) {
+			final String packageName = getContext().getPackageName();
+			final String versionName;
+			try {
+				versionName = getContext().getPackageManager().getPackageInfo(packageName, 0).versionName;
+				setSummary("Conversations " + versionName);
+			} catch (final PackageManager.NameNotFoundException e) {
+				// Using try/catch as part of the logic is sort of like this:
+				// https://xkcd.com/292/
+			}
+		}
+	}
+}
+

src/main/res/layout/activity_about.xml 🔗

@@ -0,0 +1,21 @@
+<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    tools:context="eu.siacs.conversations.ui.AboutActivity"
+    android:background="@color/secondarybackground"
+    android:paddingLeft="@dimen/activity_horizontal_margin"
+    android:paddingRight="@dimen/activity_horizontal_margin"
+    android:paddingTop="@dimen/activity_vertical_margin"
+    android:paddingBottom="@dimen/activity_vertical_margin"
+    android:layout_width="fill_parent"
+    android:layout_height="fill_parent">
+
+    <TextView
+        android:text="@string/pref_about_message"
+        android:autoLink="web"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:linksClickable="true"
+        android:textColor="@color/primarytext"
+        android:textSize="?attr/TextSizeBody" />
+
+</ScrollView>

src/main/res/values-w820dp/dimens.xml 🔗

@@ -0,0 +1,7 @@
+<resources>
+    <!-- Customization of dimensions originally defined in res/values/dimens.xml
+				 (such as screen margins) for screens with more than 820dp of available
+				 width. This would include 7" and 10" devices in landscape (~960dp and
+				 ~1280dp respectively). -->
+    <dimen name="activity_horizontal_margin">64dp</dimen>
+</resources>

src/main/res/values/dimens.xml 🔗

@@ -0,0 +1,5 @@
+<resources>
+    <!-- Default screen margins, per the Android Design guidelines. -->
+    <dimen name="activity_horizontal_margin">16dp</dimen>
+    <dimen name="activity_vertical_margin">16dp</dimen>
+</resources>

src/main/res/values/strings.xml 🔗

@@ -25,8 +25,8 @@
     <string name="minute_ago">1 min ago</string>
     <string name="minutes_ago">%d mins ago</string>
     <string name="unread_conversations">unread Conversations</string>
-    <string name="sending">sending&#8230;</string>
-    <string name="encrypted_message">Decrypting message. Please wait&#8230;</string>
+    <string name="sending">sending…</string>
+    <string name="encrypted_message">Decrypting message. Please wait…</string>
     <string name="nick_in_use">Nickname is already in use</string>
     <string name="admin">Admin</string>
     <string name="owner">Owner</string>
@@ -58,7 +58,7 @@
     <string name="add_contact">Add contact</string>
     <string name="send_failed">delivery failed</string>
     <string name="send_rejected">rejected</string>
-    <string name="receiving_image">Receiving image file. Please wait&#8230;</string>
+    <string name="receiving_image">Receiving image file. Please wait…</string>
     <string name="preparing_image">Preparing image for transmission</string>
     <string name="action_clear_history">Clear history</string>
     <string name="clear_conversation_history">Clear Conversation History</string>
@@ -78,8 +78,8 @@
     <string name="openkeychain_required_long">Conversations utilizes a third party app called <b>OpenKeychain</b> to encrypt and decrypt messages and to manage your public keys.\n\nOpenKeychain is licensed under GPLv3 and available on F-Droid and Google Play.\n\n<small>(Please restart Conversations afterwards.)</small></string>
     <string name="restart">Restart</string>
     <string name="install">Install</string>
-    <string name="offering">offering&#8230;</string>
-    <string name="waiting">waiting&#8230;</string>
+    <string name="offering">offering…</string>
+    <string name="waiting">waiting…</string>
     <string name="no_pgp_key">No OpenPGP Key found</string>
     <string name="contact_has_no_pgp_key">Conversations is unable to encrypt your messages because your contact is not announcing his or hers public key.\n\n<small>Please ask your contact to setup OpenPGP.</small></string>
     <string name="no_pgp_keys">No OpenPGP Keys found</string>
@@ -91,7 +91,7 @@
     <string name="pref_xmpp_resource">XMPP resource</string>
     <string name="pref_xmpp_resource_summary">The name this client identifies itself with</string>
     <string name="pref_accept_files">Accept files</string>
-    <string name="pref_accept_files_summary">Automatically accept files smaller than&#8230;</string>
+    <string name="pref_accept_files_summary">Automatically accept files smaller than…</string>
     <string name="pref_notification_settings">Notification Settings</string>
     <string name="pref_notifications">Notifications</string>
     <string name="pref_notifications_summary">Notify when a new message arrives</string>
@@ -217,7 +217,7 @@
     <string name="publish">Publish</string>
     <string name="touch_to_choose_picture">Touch avatar to select picture from gallery</string>
     <string name="publish_avatar_explanation">Please note: Everyone subscribed to your presence updates will be allowed to see this picture.</string>
-    <string name="publishing">Publishing&#8230;</string>
+    <string name="publishing">Publishing…</string>
     <string name="error_publish_avatar_server_reject">The server rejected your publication</string>
     <string name="error_publish_avatar_converting">Something went wrong while converting your picture</string>
     <string name="error_saving_avatar">Could not save avatar to disk</string>
@@ -254,6 +254,29 @@
     <string name="pref_enable_legacy_ssl_summary">Enables SSLv3 support for legacy servers. Warning: SSLv3 is considered insecure.</string>
     <string name="pref_expert_options">Expert options</string>
     <string name="pref_expert_options_summary">Please be careful with these</string>
+    <string name="title_activity_about">About Conversations</string>
+    <string name="pref_about_conversations_summary">Build and licensing information</string>
+    <string name="pref_about_message">
+			This program is free software; you can redistribute it and/or modify it
+			under the terms of the GNU General Public License version 3 as published
+			by the Free Software Foundation.\n
+			\n
+			https://www.gnu.org/licenses/gpl-3.0.html\n
+			\n
+			OpenPGP API is licensed under the Apache License, Version 2.0; You may
+			obtain a copy of the License at:\n
+			\n
+			https://www.apache.org/licenses/LICENSE-2.0\n
+			\n
+			Minidns © 2014 Rene Treffer and is provided under the WTFPL\n
+			\n
+			http://wtfpl.org\n
+			\n
+			MemorizingTrustManager © 2010 Georg Lukas under the terms of the MIT
+			License\n
+			\n
+			http://opensource.org/licenses/MIT\n
+			</string>
     <string name="pref_use_larger_font">Increase font size</string>
     <string name="pref_use_larger_font_summary">Use larger font sizes across the entire app</string>
     <string name="pref_use_send_button_to_indicate_status">Send button indicates status</string>
@@ -285,4 +308,4 @@
     <string name="scan_qr_code">Scan QR code</string>
     <string name="show_qr_code">Show QR code</string>
     <string name="account_details">Account details</string>
-</resources>
+</resources>

src/main/res/xml/preferences.xml 🔗

@@ -110,5 +110,8 @@
             android:summary="@string/pref_never_send_crash_summary"
             android:title="@string/pref_never_send_crash" />
     </PreferenceCategory>
+		<eu.siacs.conversations.ui.AboutPreference
+			android:summary="@string/pref_about_conversations_summary"
+			android:title="@string/title_activity_about" />
 
 </PreferenceScreen>