diff options
-rw-r--r-- | CHANGELOG.md | 6 | ||||
-rw-r--r-- | build.gradle | 24 | ||||
-rw-r--r-- | libs/MemorizingTrustManager/build.gradle | 2 | ||||
-rw-r--r-- | src/main/java/de/pixart/messenger/entities/Conversation.java | 16 | ||||
-rw-r--r-- | src/main/java/de/pixart/messenger/persistance/DatabaseBackend.java | 20 | ||||
-rw-r--r-- | src/main/java/de/pixart/messenger/persistance/FileBackend.java | 18 | ||||
-rw-r--r-- | src/main/java/de/pixart/messenger/services/EventReceiver.java | 15 | ||||
-rw-r--r-- | src/main/java/de/pixart/messenger/services/XmppConnectionService.java | 15 | ||||
-rw-r--r-- | src/main/java/de/pixart/messenger/ui/ConversationActivity.java | 4 | ||||
-rw-r--r-- | src/main/java/de/pixart/messenger/ui/ConversationFragment.java | 12 | ||||
-rw-r--r-- | src/main/java/de/pixart/messenger/ui/XmppActivity.java | 2 | ||||
-rw-r--r-- | src/main/java/de/pixart/messenger/ui/adapter/MessageAdapter.java | 23 | ||||
-rw-r--r-- | src/main/res/layout/message_content.xml | 2 | ||||
-rw-r--r-- | src/main/res/values-w384dp/dimens.xml | 7 | ||||
-rw-r--r-- | src/main/res/values/dimens.xml | 1 |
15 files changed, 91 insertions, 76 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 95bce24dc..c5419a033 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ ### Changelog +#### Version 1.19.2 +* reworked inline player for audio messages +* long press the 'add back' button to show block menu +* foregroundservice can be switched off +* bug fixes + #### Version 1.19.1 * fixed OTR encrypted file transfer * bug fixes diff --git a/build.gradle b/build.gradle index a94e0b115..b1ff11e55 100644 --- a/build.gradle +++ b/build.gradle @@ -3,10 +3,6 @@ buildscript { repositories { jcenter() - mavenCentral() - maven { - url 'https://maven.google.com' - } } dependencies { classpath 'com.android.tools.build:gradle:2.3.3' @@ -18,6 +14,9 @@ apply plugin: 'com.android.application' repositories { jcenter() mavenCentral() + maven { + url 'https://maven.google.com' + } } allprojects { @@ -31,6 +30,10 @@ configurations { standardPushCompile } +ext { + supportLibVersion = '25.4.0' +} + dependencies { compile project(':libs:MemorizingTrustManager') compile project(':libs:android-transcoder') @@ -53,9 +56,10 @@ dependencies { compile 'jetty:javax.servlet:5.1.12' compile 'com.google.code.gson:gson:2.7' compile 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2' - compile 'com.android.support:appcompat-v7:25.3.1' + compile "com.android.support:support-v13:$supportLibVersion" + compile "com.android.support:appcompat-v7:$supportLibVersion" compile 'com.android.support:multidex:1.0.1' - compile 'com.android.support:support-v4:25.3.1' + compile "com.android.support:support-v4:$supportLibVersion" compile 'com.github.bumptech.glide:glide:3.8.0' compile 'com.github.chrisbanes:PhotoView:2.0.0' compile 'com.github.rtoshiro.fullscreenvideoview:fullscreenvideoview:1.1.3' @@ -78,14 +82,14 @@ ext { android { compileSdkVersion 25 - buildToolsVersion "26.0.1" + buildToolsVersion "26.0.2" defaultConfig { - minSdkVersion 15 + minSdkVersion 16 targetSdkVersion 25 - versionCode 203 - versionName "1.19.1" + versionCode 205 + versionName "1.19.2" archivesBaseName += "-$versionName" applicationId "de.pixart.messenger" diff --git a/libs/MemorizingTrustManager/build.gradle b/libs/MemorizingTrustManager/build.gradle index 37ca64641..82dd7d0e2 100644 --- a/libs/MemorizingTrustManager/build.gradle +++ b/libs/MemorizingTrustManager/build.gradle @@ -12,7 +12,7 @@ apply plugin: 'com.android.library' android { compileSdkVersion 26 - buildToolsVersion "26.0.1" + buildToolsVersion "26.0.2" defaultConfig { minSdkVersion 14 targetSdkVersion 26 diff --git a/src/main/java/de/pixart/messenger/entities/Conversation.java b/src/main/java/de/pixart/messenger/entities/Conversation.java index 5744d67a7..833b1eb3b 100644 --- a/src/main/java/de/pixart/messenger/entities/Conversation.java +++ b/src/main/java/de/pixart/messenger/entities/Conversation.java @@ -58,6 +58,7 @@ public class Conversation extends AbstractEntity implements Blockable, Comparabl public static final String ATTRIBUTE_ALWAYS_NOTIFY = "always_notify"; private static final String ATTRIBUTE_CRYPTO_TARGETS = "crypto_targets"; public static final String ATTRIBUTE_LAST_CLEAR_HISTORY = "last_clear_history"; + public static final String ATTRIBUTE_NEXT_MESSAGE = "next_message"; private String draftMessage; private String name; @@ -80,8 +81,6 @@ public class Conversation extends AbstractEntity implements Blockable, Comparabl private transient String otrFingerprint = null; private Smp mSmp = new Smp(); - private String nextMessage; - private transient MucOptions mucOptions = null; private byte[] symmetricKey; @@ -788,19 +787,18 @@ public class Conversation extends AbstractEntity implements Blockable, Comparabl } public String getNextMessage() { - if (this.nextMessage == null) { - return ""; - } else { - return this.nextMessage; - } + final String nextMessage = getAttribute(ATTRIBUTE_NEXT_MESSAGE); + return nextMessage == null ? "" : nextMessage; } public boolean smpRequested() { return smp().status == Smp.STATUS_CONTACT_REQUESTED; } - public void setNextMessage(String message) { - this.nextMessage = message; + public boolean setNextMessage(String message) { + boolean changed = !getNextMessage().equals(message); + this.setAttribute(ATTRIBUTE_NEXT_MESSAGE, message); + return changed; } public void setSymmetricKey(byte[] key) { diff --git a/src/main/java/de/pixart/messenger/persistance/DatabaseBackend.java b/src/main/java/de/pixart/messenger/persistance/DatabaseBackend.java index 07ff600d6..e88db114a 100644 --- a/src/main/java/de/pixart/messenger/persistance/DatabaseBackend.java +++ b/src/main/java/de/pixart/messenger/persistance/DatabaseBackend.java @@ -4,7 +4,6 @@ import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.DatabaseUtils; -import android.database.sqlite.SQLiteCantOpenDatabaseException; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.os.Environment; @@ -772,25 +771,6 @@ public class DatabaseBackend extends SQLiteOpenHelper { return rows == 1; } - public boolean hasEnabledAccounts() { - SQLiteDatabase db = this.getReadableDatabase(); - Cursor cursor = db.rawQuery("select count(" + Account.UUID + ") from " - + Account.TABLENAME + " where not options & (1 <<1)", null); - try { - cursor.moveToFirst(); - int count = cursor.getInt(0); - return (count > 0); - } catch (SQLiteCantOpenDatabaseException e) { - return true; // better safe than sorry - } catch (RuntimeException e) { - return true; // better safe than sorry - } finally { - if (cursor != null) { - cursor.close(); - } - } - } - @Override public SQLiteDatabase getWritableDatabase() { SQLiteDatabase db = super.getWritableDatabase(); diff --git a/src/main/java/de/pixart/messenger/persistance/FileBackend.java b/src/main/java/de/pixart/messenger/persistance/FileBackend.java index 727892af0..350dfb7c9 100644 --- a/src/main/java/de/pixart/messenger/persistance/FileBackend.java +++ b/src/main/java/de/pixart/messenger/persistance/FileBackend.java @@ -149,17 +149,17 @@ public class FileBackend { } private static long getFileSize(Context context, Uri uri) { - Cursor cursor = context.getContentResolver().query(uri, null, null, null, null); - if (cursor != null && cursor.moveToFirst()) { - long size = cursor.getLong(cursor.getColumnIndex(OpenableColumns.SIZE)); - cursor.close(); - return size; - } else { - if (cursor != null) { + try { + final Cursor cursor = context.getContentResolver().query(uri, null, null, null, null); + if (cursor != null && cursor.moveToFirst()) { + long size = cursor.getLong(cursor.getColumnIndex(OpenableColumns.SIZE)); cursor.close(); + return size; + } else { + return -1; } - File f = new File(uri.getPath()); - return f.length(); + } catch (Exception e) { + return -1; } } diff --git a/src/main/java/de/pixart/messenger/services/EventReceiver.java b/src/main/java/de/pixart/messenger/services/EventReceiver.java index 615bc98b3..cdd1afe19 100644 --- a/src/main/java/de/pixart/messenger/services/EventReceiver.java +++ b/src/main/java/de/pixart/messenger/services/EventReceiver.java @@ -3,10 +3,15 @@ package de.pixart.messenger.services; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; +import android.preference.PreferenceManager; +import android.util.Log; -import de.pixart.messenger.persistance.DatabaseBackend; +import de.pixart.messenger.Config; public class EventReceiver extends BroadcastReceiver { + + public static final String SETTING_ENABLED_ACCOUNTS = "enabled_accounts"; + @Override public void onReceive(Context context, Intent intent) { Intent mIntentForService = new Intent(context, XmppConnectionService.class); @@ -16,9 +21,15 @@ public class EventReceiver extends BroadcastReceiver { mIntentForService.setAction("other"); } final String action = intent.getAction(); - if (action.equals("ui") || DatabaseBackend.getInstance(context).hasEnabledAccounts()) { + if (action.equals("ui") || hasEnabledAccounts(context)) { context.startService(mIntentForService); + } else { + Log.d(Config.LOGTAG, "EventReceiver ignored action " + mIntentForService.getAction()); } } + public boolean hasEnabledAccounts(Context context) { + return PreferenceManager.getDefaultSharedPreferences(context).getBoolean(SETTING_ENABLED_ACCOUNTS, true); + } + } diff --git a/src/main/java/de/pixart/messenger/services/XmppConnectionService.java b/src/main/java/de/pixart/messenger/services/XmppConnectionService.java index 519cec043..8293d39f0 100644 --- a/src/main/java/de/pixart/messenger/services/XmppConnectionService.java +++ b/src/main/java/de/pixart/messenger/services/XmppConnectionService.java @@ -1922,9 +1922,14 @@ public class XmppConnectionService extends Service { this.accounts.add(account); this.reconnectAccountInBackground(account); updateAccountUi(); + syncEnabledAccountSetting(); toggleForegroundService(); } + private void syncEnabledAccountSetting() { + getPreferences().edit().putBoolean(EventReceiver.SETTING_ENABLED_ACCOUNTS, hasEnabledAccounts()).apply(); + } + public void createAccountFromKey(final String alias, final OnAccountCreated callback) { new Thread(new Runnable() { @Override @@ -1997,6 +2002,7 @@ public class XmppConnectionService extends Service { updateAccountUi(); getNotificationService().updateErrorNotification(); toggleForegroundService(); + syncEnabledAccountSetting(); return true; } else { return false; @@ -2491,6 +2497,15 @@ public class XmppConnectionService extends Service { } } + private boolean hasEnabledAccounts() { + for(Account account : this.accounts) { + if (!account.isOptionSet(Account.OPTION_DISABLED)) { + return true; + } + } + return false; + } + public void renameInMuc(final Conversation conversation, final String nick, final UiCallback<Conversation> callback) { final MucOptions options = conversation.getMucOptions(); final Jid joinJid = options.createJoinJid(nick); diff --git a/src/main/java/de/pixart/messenger/ui/ConversationActivity.java b/src/main/java/de/pixart/messenger/ui/ConversationActivity.java index a23daa6c0..895ce5063 100644 --- a/src/main/java/de/pixart/messenger/ui/ConversationActivity.java +++ b/src/main/java/de/pixart/messenger/ui/ConversationActivity.java @@ -389,11 +389,7 @@ public class ConversationActivity extends XmppActivity SharedPreferences.Editor editor = UpdateTimeStamp.edit(); editor.putLong("lastUpdateTime", lastUpdateTime); editor.commit(); - // run AppUpdater Log.d(Config.LOGTAG, "AppUpdater: CurrentTime: " + lastUpdateTime); - //Intent AppUpdater = new Intent(this, UpdaterActivity.class); - //startActivity(AppUpdater); - UpdateService task = new UpdateService(this); task.execute("false"); Log.d(Config.LOGTAG, "AppUpdater started"); diff --git a/src/main/java/de/pixart/messenger/ui/ConversationFragment.java b/src/main/java/de/pixart/messenger/ui/ConversationFragment.java index ff023997f..d1a007e3b 100644 --- a/src/main/java/de/pixart/messenger/ui/ConversationFragment.java +++ b/src/main/java/de/pixart/messenger/ui/ConversationFragment.java @@ -909,7 +909,9 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa } if (this.conversation != null) { final String msg = mEditMessage.getText().toString(); - this.conversation.setNextMessage(msg); + if (this.conversation.setNextMessage(msg)) { + activity.xmppConnectionService.updateConversation(this.conversation); + } updateChatState(this.conversation, msg); } } @@ -930,7 +932,9 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa setupIme(); if (this.conversation != null) { final String msg = mEditMessage.getText().toString(); - this.conversation.setNextMessage(msg); + if (this.conversation.setNextMessage(msg)) { + activity.xmppConnectionService.updateConversation(conversation); + } if (this.conversation != conversation) { updateChatState(this.conversation, msg); messageListAdapter.stopAudioPlayer(); @@ -1173,7 +1177,9 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa mEditMessage.append(conversation.getDraftMessage()); conversation.setDraftMessage(null); } - conversation.setNextMessage(mEditMessage.getText().toString()); + if (conversation.setNextMessage(mEditMessage.getText().toString())) { + activity.xmppConnectionService.updateConversation(conversation); + } updateChatMsgHint(); new Handler().post(new Runnable() { @Override diff --git a/src/main/java/de/pixart/messenger/ui/XmppActivity.java b/src/main/java/de/pixart/messenger/ui/XmppActivity.java index 0fe6e7600..bdf321dc3 100644 --- a/src/main/java/de/pixart/messenger/ui/XmppActivity.java +++ b/src/main/java/de/pixart/messenger/ui/XmppActivity.java @@ -377,8 +377,6 @@ public abstract class XmppActivity extends Activity { break; case R.id.action_check_updates: if (xmppConnectionService.hasInternetConnection()) { - //startActivity(new Intent(this, UpdaterActivity.class)); - UpdateService task = new UpdateService(this); task.execute("true"); } else { diff --git a/src/main/java/de/pixart/messenger/ui/adapter/MessageAdapter.java b/src/main/java/de/pixart/messenger/ui/adapter/MessageAdapter.java index 7245a977d..c3693c24b 100644 --- a/src/main/java/de/pixart/messenger/ui/adapter/MessageAdapter.java +++ b/src/main/java/de/pixart/messenger/ui/adapter/MessageAdapter.java @@ -118,7 +118,7 @@ public class MessageAdapter extends ArrayAdapter<Message> implements CopyTextVie } }; - private ConversationActivity activity; + private final ConversationActivity activity; private DisplayMetrics metrics; @@ -815,9 +815,7 @@ public class MessageAdapter extends ArrayAdapter<Message> implements CopyTextVie viewHolder.load_more_messages = (Button) view.findViewById(R.id.load_more_messages); break; default: - view = new View(getContext()); - viewHolder = null; - break; + throw new AssertionError("Unknown view type"); } if (viewHolder.messageBody != null) { listSelectionManager.onCreate(viewHolder.messageBody, new MessageBodyActionModeCallback(viewHolder.messageBody)); @@ -913,16 +911,13 @@ public class MessageAdapter extends ArrayAdapter<Message> implements CopyTextVie } } else { displayInfoMessage(viewHolder, activity.getString(R.string.install_openkeychain), darkBackground); - if (viewHolder != null) { - viewHolder.message_box - .setOnClickListener(new OnClickListener() { - - @Override - public void onClick(View v) { - activity.showInstallPgpDialog(); - } - }); - } + viewHolder.message_box.setOnClickListener(new OnClickListener() { + + @Override + public void onClick(View v) { + activity.showInstallPgpDialog(); + } + }); } } else if (message.getEncryption() == Message.ENCRYPTION_DECRYPTION_FAILED) { displayDecryptionFailed(viewHolder, darkBackground); diff --git a/src/main/res/layout/message_content.xml b/src/main/res/layout/message_content.xml index bb9370313..d2bcb0405 100644 --- a/src/main/res/layout/message_content.xml +++ b/src/main/res/layout/message_content.xml @@ -38,7 +38,7 @@ xmlns:app="http://schemas.android.com/apk/res-auto"> <RelativeLayout android:id="@+id/audio_player" - android:layout_width="288dp" + android:layout_width="@dimen/audio_player_width" android:layout_height="wrap_content" android:visibility="gone" > diff --git a/src/main/res/values-w384dp/dimens.xml b/src/main/res/values-w384dp/dimens.xml index 7abc06d3b..c33c11232 100644 --- a/src/main/res/values-w384dp/dimens.xml +++ b/src/main/res/values-w384dp/dimens.xml @@ -1 +1,6 @@ -<resources></resources> +<resources> + <!-- 384dp is the screen width of the Nexus 4. Something like a Moto G is smaller but a Nexus 5X is larger --> + <!-- https://material.io/devices/ --> + <dimen name="fineprint_size">12sp</dimen> + <dimen name="audio_player_width">288dp</dimen> +</resources>
\ No newline at end of file diff --git a/src/main/res/values/dimens.xml b/src/main/res/values/dimens.xml index 9ef329aa8..cb103131a 100644 --- a/src/main/res/values/dimens.xml +++ b/src/main/res/values/dimens.xml @@ -5,4 +5,5 @@ <dimen name="infocard_padding">16dp</dimen> <dimen name="image_button_padding">8dp</dimen> <dimen name="elv_touch_slop">64dp</dimen> + <dimen name="audio_player_width">224dp</dimen> </resources> |