added dedicated 'record video' attachment button. fixes #2592

thank you @BlauerHunger
This commit is contained in:
Daniel Gultsch 2017-09-18 11:51:47 +02:00
parent 22a058ff61
commit d4c16b5a85
49 changed files with 377 additions and 52 deletions

View File

@ -0,0 +1,54 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="48"
height="48"
viewBox="0 0 24 24"
id="svg2"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="ic_send_videocam_away.svg">
<metadata
id="metadata12">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs10" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="956"
inkscape:window-height="567"
id="namedview8"
showgrid="false"
inkscape:zoom="4.9166667"
inkscape:cx="-8.3389831"
inkscape:cy="24"
inkscape:window-x="960"
inkscape:window-y="609"
inkscape:window-maximized="0"
inkscape:current-layer="svg2" />
<path
d="M17 10.5V7c0-.55-.45-1-1-1H4c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h12c.55 0 1-.45 1-1v-3.5l4 4v-11l-4 4z"
id="path6"
style="fill:#ff9800;fill-opacity:0.627451" />
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@ -0,0 +1,54 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="48"
height="48"
viewBox="0 0 24 24"
id="svg2"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="ic_send_videocam_dnd.svg">
<metadata
id="metadata12">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs10" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="956"
inkscape:window-height="567"
id="namedview8"
showgrid="false"
inkscape:zoom="4.9166667"
inkscape:cx="-8.3389831"
inkscape:cy="24"
inkscape:window-x="960"
inkscape:window-y="609"
inkscape:window-maximized="0"
inkscape:current-layer="svg2" />
<path
d="M17 10.5V7c0-.55-.45-1-1-1H4c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h12c.55 0 1-.45 1-1v-3.5l4 4v-11l-4 4z"
id="path6"
style="fill:#f44336;fill-opacity:0.627451" />
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@ -0,0 +1,54 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="48"
height="48"
viewBox="0 0 24 24"
id="svg2"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="ic_send_videocam_offline.svg">
<metadata
id="metadata12">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs10" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="956"
inkscape:window-height="567"
id="namedview8"
showgrid="false"
inkscape:zoom="4.9166667"
inkscape:cx="-8.3389831"
inkscape:cy="24"
inkscape:window-x="960"
inkscape:window-y="609"
inkscape:window-maximized="0"
inkscape:current-layer="svg2" />
<path
d="M17 10.5V7c0-.55-.45-1-1-1H4c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h12c.55 0 1-.45 1-1v-3.5l4 4v-11l-4 4z"
id="path6"
style="fill:#000000;fill-opacity:0.627451" />
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@ -0,0 +1,54 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="48"
height="48"
viewBox="0 0 24 24"
id="svg2"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="ic_send_videocam_offline_white.svg">
<metadata
id="metadata12">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs10" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="956"
inkscape:window-height="567"
id="namedview8"
showgrid="false"
inkscape:zoom="4.9166667"
inkscape:cx="10.5688"
inkscape:cy="23.898305"
inkscape:window-x="960"
inkscape:window-y="609"
inkscape:window-maximized="0"
inkscape:current-layer="svg2" />
<path
d="M17 10.5V7c0-.55-.45-1-1-1H4c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h12c.55 0 1-.45 1-1v-3.5l4 4v-11l-4 4z"
id="path6"
style="fill:#ffffff;fill-opacity:0.627451" />
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@ -0,0 +1,55 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="48"
height="48"
viewBox="0 0 24 24"
id="svg2"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="ic_send_videocam_online.svg">
<metadata
id="metadata10">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1916"
inkscape:window-height="1036"
id="namedview6"
showgrid="false"
inkscape:zoom="4.9166667"
inkscape:cx="6.5084746"
inkscape:cy="24"
inkscape:window-x="0"
inkscape:window-y="20"
inkscape:window-maximized="0"
inkscape:current-layer="svg2" />
<path
d="M17 10.5V7c0-.55-.45-1-1-1H4c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h12c.55 0 1-.45 1-1v-3.5l4 4v-11l-4 4z"
id="path4"
style="fill:#259b24;fill-opacity:0.627451" />
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@ -47,6 +47,11 @@ images = {
'ic_send_picture_offline_white.svg' => ['ic_send_picture_offline_white', 36], 'ic_send_picture_offline_white.svg' => ['ic_send_picture_offline_white', 36],
'ic_send_picture_away.svg' => ['ic_send_picture_away', 36], 'ic_send_picture_away.svg' => ['ic_send_picture_away', 36],
'ic_send_picture_dnd.svg' => ['ic_send_picture_dnd', 36], 'ic_send_picture_dnd.svg' => ['ic_send_picture_dnd', 36],
'ic_send_videocam_online.svg' => ['ic_send_videocam_online', 36],
'ic_send_videocam_offline.svg' => ['ic_send_videocam_offline', 36],
'ic_send_videocam_offline_white.svg' => ['ic_send_videocam_offline_white', 36],
'ic_send_videocam_away.svg' => ['ic_send_videocam_away', 36],
'ic_send_videocam_dnd.svg' => ['ic_send_videocam_dnd', 36],
'ic_notifications_none_white80.svg' => ['ic_notifications_none_white80', 24], 'ic_notifications_none_white80.svg' => ['ic_notifications_none_white80', 24],
'ic_notifications_off_white80.svg' => ['ic_notifications_off_white80', 24], 'ic_notifications_off_white80.svg' => ['ic_notifications_off_white80', 24],
'ic_notifications_paused_white80.svg' => ['ic_notifications_paused_white80', 24], 'ic_notifications_paused_white80.svg' => ['ic_notifications_paused_white80', 24],

View File

@ -72,6 +72,8 @@ import eu.siacs.conversations.xmpp.jid.Jid;
public class ConversationActivity extends XmppActivity public class ConversationActivity extends XmppActivity
implements OnAccountUpdate, OnConversationUpdate, OnRosterUpdate, OnUpdateBlocklist, XmppConnectionService.OnShowErrorToast { implements OnAccountUpdate, OnConversationUpdate, OnRosterUpdate, OnUpdateBlocklist, XmppConnectionService.OnShowErrorToast {
public static final String RECENTLY_USED_QUICK_ACTION = "recently_used_quick_action";
public static final String ACTION_VIEW_CONVERSATION = "eu.siacs.conversations.action.VIEW"; public static final String ACTION_VIEW_CONVERSATION = "eu.siacs.conversations.action.VIEW";
public static final String CONVERSATION = "conversationUuid"; public static final String CONVERSATION = "conversationUuid";
public static final String EXTRA_DOWNLOAD_UUID = "eu.siacs.conversations.download_uuid"; public static final String EXTRA_DOWNLOAD_UUID = "eu.siacs.conversations.download_uuid";
@ -92,6 +94,7 @@ public class ConversationActivity extends XmppActivity
public static final int ATTACHMENT_CHOICE_RECORD_VOICE = 0x0304; public static final int ATTACHMENT_CHOICE_RECORD_VOICE = 0x0304;
public static final int ATTACHMENT_CHOICE_LOCATION = 0x0305; public static final int ATTACHMENT_CHOICE_LOCATION = 0x0305;
public static final int ATTACHMENT_CHOICE_INVALID = 0x0306; public static final int ATTACHMENT_CHOICE_INVALID = 0x0306;
public static final int ATTACHMENT_CHOICE_RECORD_VIDEO = 0x0307;
private static final String STATE_OPEN_CONVERSATION = "state_open_conversation"; private static final String STATE_OPEN_CONVERSATION = "state_open_conversation";
private static final String STATE_PANEL_OPEN = "state_panel_open"; private static final String STATE_PANEL_OPEN = "state_panel_open";
private static final String STATE_PENDING_URI = "state_pending_uri"; private static final String STATE_PENDING_URI = "state_pending_uri";
@ -500,14 +503,17 @@ public class ConversationActivity extends XmppActivity
intent.setType("image/*"); intent.setType("image/*");
chooser = true; chooser = true;
break; break;
case ATTACHMENT_CHOICE_RECORD_VIDEO:
intent.setAction(MediaStore.ACTION_VIDEO_CAPTURE);
break;
case ATTACHMENT_CHOICE_TAKE_PHOTO: case ATTACHMENT_CHOICE_TAKE_PHOTO:
Uri uri = xmppConnectionService.getFileBackend().getTakePhotoUri(); Uri uri = xmppConnectionService.getFileBackend().getTakePhotoUri();
mPendingImageUris.clear();
mPendingImageUris.add(uri);
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION); intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE); intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
mPendingImageUris.clear();
mPendingImageUris.add(uri);
break; break;
case ATTACHMENT_CHOICE_CHOOSE_FILE: case ATTACHMENT_CHOICE_CHOOSE_FILE:
chooser = true; chooser = true;
@ -562,19 +568,29 @@ public class ConversationActivity extends XmppActivity
return; return;
} }
} }
final ConversationFragment.SendButtonAction action;
switch (attachmentChoice) { switch (attachmentChoice) {
case ATTACHMENT_CHOICE_LOCATION: case ATTACHMENT_CHOICE_LOCATION:
getPreferences().edit().putString("recently_used_quick_action", "location").apply(); action = ConversationFragment.SendButtonAction.SEND_LOCATION;
break; break;
case ATTACHMENT_CHOICE_RECORD_VOICE: case ATTACHMENT_CHOICE_RECORD_VOICE:
getPreferences().edit().putString("recently_used_quick_action", "voice").apply(); action = ConversationFragment.SendButtonAction.RECORD_VOICE;
break;
case ATTACHMENT_CHOICE_RECORD_VIDEO:
action = ConversationFragment.SendButtonAction.RECORD_VIDEO;
break; break;
case ATTACHMENT_CHOICE_TAKE_PHOTO: case ATTACHMENT_CHOICE_TAKE_PHOTO:
getPreferences().edit().putString("recently_used_quick_action", "photo").apply(); action = ConversationFragment.SendButtonAction.TAKE_PHOTO;
break; break;
case ATTACHMENT_CHOICE_CHOOSE_IMAGE: case ATTACHMENT_CHOICE_CHOOSE_IMAGE:
getPreferences().edit().putString("recently_used_quick_action", "picture").apply(); action = ConversationFragment.SendButtonAction.CHOOSE_PICTURE;
break; break;
default:
action = null;
break;
}
if (action != null) {
getPreferences().edit().putString(RECENTLY_USED_QUICK_ACTION,action.toString()).apply();
} }
final Conversation conversation = getSelectedConversation(); final Conversation conversation = getSelectedConversation();
final int encryption = conversation.getNextEncryption(); final int encryption = conversation.getNextEncryption();
@ -805,6 +821,9 @@ public class ConversationActivity extends XmppActivity
case R.id.attach_take_picture: case R.id.attach_take_picture:
attachFile(ATTACHMENT_CHOICE_TAKE_PHOTO); attachFile(ATTACHMENT_CHOICE_TAKE_PHOTO);
break; break;
case R.id.attach_record_video:
attachFile(ATTACHMENT_CHOICE_RECORD_VIDEO);
break;
case R.id.attach_choose_file: case R.id.attach_choose_file:
attachFile(ATTACHMENT_CHOICE_CHOOSE_FILE); attachFile(ATTACHMENT_CHOICE_CHOOSE_FILE);
break; break;
@ -1414,8 +1433,9 @@ public class ConversationActivity extends XmppActivity
attachImageToConversation(getSelectedConversation(), i.next()); attachImageToConversation(getSelectedConversation(), i.next());
} }
} }
} else if (requestCode == ATTACHMENT_CHOICE_CHOOSE_FILE || requestCode == ATTACHMENT_CHOICE_RECORD_VOICE) { } else if (requestCode == ATTACHMENT_CHOICE_CHOOSE_FILE || requestCode == ATTACHMENT_CHOICE_RECORD_VOICE || requestCode == ATTACHMENT_CHOICE_RECORD_VIDEO) {
final List<Uri> uris = extractUriFromIntent(data); final List<Uri> uris = extractUriFromIntent(data);
Log.d(Config.LOGTAG,"uris "+uris.toString());
final Conversation c = getSelectedConversation(); final Conversation c = getSelectedConversation();
final OnPresenceSelected callback = new OnPresenceSelected() { final OnPresenceSelected callback = new OnPresenceSelected() {
@Override @Override
@ -1424,7 +1444,7 @@ public class ConversationActivity extends XmppActivity
mPendingFileUris.addAll(uris); mPendingFileUris.addAll(uris);
if (xmppConnectionServiceBound) { if (xmppConnectionServiceBound) {
for (Iterator<Uri> i = mPendingFileUris.iterator(); i.hasNext(); i.remove()) { for (Iterator<Uri> i = mPendingFileUris.iterator(); i.hasNext(); i.remove()) {
Log.d(Config.LOGTAG,"ConversationsActivity.onActivityResult() - attaching file to conversations. CHOOSE_FILE/RECORD_VOICE"); Log.d(Config.LOGTAG,"ConversationsActivity.onActivityResult() - attaching file to conversations. CHOOSE_FILE/RECORD_VOICE/RECORD_VIDEO");
attachFileToConversation(c, i.next()); attachFileToConversation(c, i.next());
} }
} }

View File

@ -46,7 +46,6 @@ import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.ListIterator;
import java.util.UUID; import java.util.UUID;
import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicBoolean;
@ -72,7 +71,6 @@ import eu.siacs.conversations.ui.adapter.MessageAdapter;
import eu.siacs.conversations.ui.adapter.MessageAdapter.OnContactPictureClicked; import eu.siacs.conversations.ui.adapter.MessageAdapter.OnContactPictureClicked;
import eu.siacs.conversations.ui.adapter.MessageAdapter.OnContactPictureLongClicked; import eu.siacs.conversations.ui.adapter.MessageAdapter.OnContactPictureLongClicked;
import eu.siacs.conversations.ui.widget.ListSelectionManager; import eu.siacs.conversations.ui.widget.ListSelectionManager;
import eu.siacs.conversations.utils.GeoHelper;
import eu.siacs.conversations.utils.NickValidityChecker; import eu.siacs.conversations.utils.NickValidityChecker;
import eu.siacs.conversations.utils.UIHelper; import eu.siacs.conversations.utils.UIHelper;
import eu.siacs.conversations.xmpp.XmppConnection; import eu.siacs.conversations.xmpp.XmppConnection;
@ -331,6 +329,9 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
case TAKE_PHOTO: case TAKE_PHOTO:
activity.attachFile(ConversationActivity.ATTACHMENT_CHOICE_TAKE_PHOTO); activity.attachFile(ConversationActivity.ATTACHMENT_CHOICE_TAKE_PHOTO);
break; break;
case RECORD_VIDEO:
activity.attachFile(ConversationActivity.ATTACHMENT_CHOICE_RECORD_VIDEO);
break;
case SEND_LOCATION: case SEND_LOCATION:
activity.attachFile(ConversationActivity.ATTACHMENT_CHOICE_LOCATION); activity.attachFile(ConversationActivity.ATTACHMENT_CHOICE_LOCATION);
break; break;
@ -1152,7 +1153,16 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
mSendingPgpMessage.set(false); mSendingPgpMessage.set(false);
} }
enum SendButtonAction {TEXT, TAKE_PHOTO, SEND_LOCATION, RECORD_VOICE, CANCEL, CHOOSE_PICTURE} enum SendButtonAction {TEXT, TAKE_PHOTO, SEND_LOCATION, RECORD_VOICE, CANCEL, CHOOSE_PICTURE, RECORD_VIDEO;
public static SendButtonAction valueOfOrDefault(String setting, SendButtonAction text) {
try {
return valueOf(setting);
} catch (IllegalArgumentException e) {
return TEXT;
}
}
}
private int getSendButtonImageResource(SendButtonAction action, Presence.Status status) { private int getSendButtonImageResource(SendButtonAction action, Presence.Status status) {
switch (action) { switch (action) {
@ -1169,6 +1179,19 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
default: default:
return activity.getThemeResource(R.attr.ic_send_text_offline, R.drawable.ic_send_text_offline); return activity.getThemeResource(R.attr.ic_send_text_offline, R.drawable.ic_send_text_offline);
} }
case RECORD_VIDEO:
switch (status) {
case CHAT:
case ONLINE:
return R.drawable.ic_send_videocam_online;
case AWAY:
return R.drawable.ic_send_videocam_away;
case XA:
case DND:
return R.drawable.ic_send_videocam_dnd;
default:
return activity.getThemeResource(R.attr.ic_send_videocam_offline, R.drawable.ic_send_videocam_offline);
}
case TAKE_PHOTO: case TAKE_PHOTO:
switch (status) { switch (status) {
case CHAT: case CHAT:
@ -1268,26 +1291,14 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
} else { } else {
String setting = activity.getPreferences().getString("quick_action", activity.getResources().getString(R.string.quick_action)); String setting = activity.getPreferences().getString("quick_action", activity.getResources().getString(R.string.quick_action));
if (!setting.equals("none") && UIHelper.receivedLocationQuestion(conversation.getLatestMessage())) { if (!setting.equals("none") && UIHelper.receivedLocationQuestion(conversation.getLatestMessage())) {
setting = "location";
} else if (setting.equals("recent")) {
setting = activity.getPreferences().getString("recently_used_quick_action", "text");
}
switch (setting) {
case "photo":
action = SendButtonAction.TAKE_PHOTO;
break;
case "location":
action = SendButtonAction.SEND_LOCATION; action = SendButtonAction.SEND_LOCATION;
break; } else {
case "voice": if (setting.equals("recent")) {
action = SendButtonAction.RECORD_VOICE; setting = activity.getPreferences().getString(ConversationActivity.RECENTLY_USED_QUICK_ACTION, SendButtonAction.TEXT.toString());
break; action = SendButtonAction.valueOfOrDefault(setting,SendButtonAction.TEXT);
case "picture": } else {
action = SendButtonAction.CHOOSE_PICTURE; action = SendButtonAction.valueOfOrDefault(setting,SendButtonAction.TEXT);
break; }
default:
action = SendButtonAction.TEXT;
break;
} }
} }
} else { } else {

Binary file not shown.

After

Width:  |  Height:  |  Size: 277 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 173 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 487 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 540 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 435 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 447 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 533 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 215 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 131 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 365 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 397 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 341 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 340 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 401 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 276 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 502 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 542 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 479 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 470 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 543 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 373 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 234 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 705 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 777 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 650 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 670 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 775 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 429 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 290 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 821 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 884 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 772 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 777 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 897 B

View File

@ -2,19 +2,9 @@
<menu xmlns:android="http://schemas.android.com/apk/res/android" > <menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item <item
android:id="@+id/attach_location" android:id="@+id/attach_choose_file"
android:title="@string/send_location" android:title="@string/choose_file"
android:icon="?attr/ic_attach_location"/> android:icon="?attr/ic_attach_document"/>
<item
android:id="@+id/attach_record_voice"
android:title="@string/attach_record_voice"
android:icon="?attr/ic_attach_record"/>
<item
android:id="@+id/attach_take_picture"
android:title="@string/attach_take_picture"
android:icon="?attr/ic_attach_camera"/>
<item <item
android:id="@+id/attach_choose_picture" android:id="@+id/attach_choose_picture"
@ -22,8 +12,23 @@
android:icon="?attr/ic_attach_photo"/> android:icon="?attr/ic_attach_photo"/>
<item <item
android:id="@+id/attach_choose_file" android:id="@+id/attach_take_picture"
android:title="@string/choose_file" android:title="@string/attach_take_picture"
android:icon="?attr/ic_attach_document"/> android:icon="?attr/ic_attach_camera"/>
<item
android:id="@+id/attach_record_video"
android:title="@string/attach_record_video"
android:icon="?attr/ic_attach_videocam"/>
<item
android:id="@+id/attach_record_voice"
android:title="@string/attach_record_voice"
android:icon="?attr/ic_attach_record"/>
<item
android:id="@+id/attach_location"
android:title="@string/send_location"
android:icon="?attr/ic_attach_location"/>
</menu> </menu>

View File

@ -29,9 +29,11 @@
<item name="attr/ic_send_photo_offline">@drawable/ic_send_photo_offline</item> <item name="attr/ic_send_photo_offline">@drawable/ic_send_photo_offline</item>
<item name="attr/ic_send_picture_offline">@drawable/ic_send_picture_offline</item> <item name="attr/ic_send_picture_offline">@drawable/ic_send_picture_offline</item>
<item name="attr/ic_send_text_offline">@drawable/ic_send_text_offline</item> <item name="attr/ic_send_text_offline">@drawable/ic_send_text_offline</item>
<item name="attr/ic_send_videocam_offline">@drawable/ic_send_videocam_offline</item>
<item name="attr/ic_send_voice_offline">@drawable/ic_send_voice_offline</item> <item name="attr/ic_send_voice_offline">@drawable/ic_send_voice_offline</item>
<item name="attr/ic_attach_camera">@drawable/ic_attach_camera</item> <item name="attr/ic_attach_camera">@drawable/ic_attach_camera</item>
<item name="attr/ic_attach_videocam">@drawable/ic_attach_videocam</item>
<item name="attr/ic_attach_document">@drawable/ic_attach_document</item> <item name="attr/ic_attach_document">@drawable/ic_attach_document</item>
<item name="attr/ic_attach_location">@drawable/ic_attach_location</item> <item name="attr/ic_attach_location">@drawable/ic_attach_location</item>
<item name="attr/ic_attach_photo">@drawable/ic_attach_photo</item> <item name="attr/ic_attach_photo">@drawable/ic_attach_photo</item>
@ -107,9 +109,11 @@
<item name="attr/ic_send_photo_offline">@drawable/ic_send_photo_offline_white</item> <item name="attr/ic_send_photo_offline">@drawable/ic_send_photo_offline_white</item>
<item name="attr/ic_send_picture_offline">@drawable/ic_send_picture_offline_white</item> <item name="attr/ic_send_picture_offline">@drawable/ic_send_picture_offline_white</item>
<item name="attr/ic_send_text_offline">@drawable/ic_send_text_offline_white</item> <item name="attr/ic_send_text_offline">@drawable/ic_send_text_offline_white</item>
<item name="attr/ic_send_videocam_offline">@drawable/ic_send_videocam_offline_white</item>
<item name="attr/ic_send_voice_offline">@drawable/ic_send_voice_offline_white</item> <item name="attr/ic_send_voice_offline">@drawable/ic_send_voice_offline_white</item>
<item name="attr/ic_attach_camera">@drawable/ic_attach_camera_white</item> <item name="attr/ic_attach_camera">@drawable/ic_attach_camera_white</item>
<item name="attr/ic_attach_videocam">@drawable/ic_attach_videocam_white</item>
<item name="attr/ic_attach_document">@drawable/ic_attach_document_white</item> <item name="attr/ic_attach_document">@drawable/ic_attach_document_white</item>
<item name="attr/ic_attach_location">@drawable/ic_attach_location_white</item> <item name="attr/ic_attach_location">@drawable/ic_attach_location_white</item>
<item name="attr/ic_attach_photo">@drawable/ic_attach_photo_white</item> <item name="attr/ic_attach_photo">@drawable/ic_attach_photo_white</item>

View File

@ -52,6 +52,7 @@
<item>@string/none</item> <item>@string/none</item>
<item>@string/recently_used</item> <item>@string/recently_used</item>
<item>@string/attach_take_picture</item> <item>@string/attach_take_picture</item>
<item>@string/attach_record_video</item>
<item>@string/attach_choose_picture</item> <item>@string/attach_choose_picture</item>
<item>@string/attach_record_voice</item> <item>@string/attach_record_voice</item>
<item>@string/send_location</item> <item>@string/send_location</item>
@ -60,10 +61,11 @@
<string-array name="quick_action_values"> <string-array name="quick_action_values">
<item>none</item> <item>none</item>
<item>recent</item> <item>recent</item>
<item>photo</item> <item>TAKE_PHOTO</item>
<item>picture</item> <item>RECORD_VIDEO</item>
<item>voice</item> <item>CHOOSE_PICTURE</item>
<item>location</item> <item>RECORD_VOICE</item>
<item>SEND_LOCATION</item>
</string-array> </string-array>
<string-array name="picture_compression_values"> <string-array name="picture_compression_values">

View File

@ -20,9 +20,11 @@
<attr name="ic_send_photo_offline" format="reference"/> <attr name="ic_send_photo_offline" format="reference"/>
<attr name="ic_send_picture_offline" format="reference"/> <attr name="ic_send_picture_offline" format="reference"/>
<attr name="ic_send_text_offline" format="reference"/> <attr name="ic_send_text_offline" format="reference"/>
<attr name="ic_send_videocam_offline" format="reference"/>
<attr name="ic_send_voice_offline" format="reference"/> <attr name="ic_send_voice_offline" format="reference"/>
<attr name="ic_attach_camera" format="reference"/> <attr name="ic_attach_camera" format="reference"/>
<attr name="ic_attach_videocam" format="reference"/>
<attr name="ic_attach_document" format="reference"/> <attr name="ic_attach_document" format="reference"/>
<attr name="ic_attach_location" format="reference"/> <attr name="ic_attach_location" format="reference"/>
<attr name="ic_attach_photo" format="reference"/> <attr name="ic_attach_photo" format="reference"/>

View File

@ -724,4 +724,5 @@
<string name="network_is_unreachable">Network is unreachable</string> <string name="network_is_unreachable">Network is unreachable</string>
<string name="certificate_does_not_contain_jid">Certificate does not contain a Jabber ID</string> <string name="certificate_does_not_contain_jid">Certificate does not contain a Jabber ID</string>
<string name="server_info_partial">partial</string> <string name="server_info_partial">partial</string>
<string name="attach_record_video">Record video</string>
</resources> </resources>

View File

@ -25,9 +25,11 @@
<item name="attr/ic_send_photo_offline">@drawable/ic_send_photo_offline</item> <item name="attr/ic_send_photo_offline">@drawable/ic_send_photo_offline</item>
<item name="attr/ic_send_picture_offline">@drawable/ic_send_picture_offline</item> <item name="attr/ic_send_picture_offline">@drawable/ic_send_picture_offline</item>
<item name="attr/ic_send_text_offline">@drawable/ic_send_text_offline</item> <item name="attr/ic_send_text_offline">@drawable/ic_send_text_offline</item>
<item name="attr/ic_send_videocam_offline">@drawable/ic_send_videocam_offline</item>
<item name="attr/ic_send_voice_offline">@drawable/ic_send_voice_offline</item> <item name="attr/ic_send_voice_offline">@drawable/ic_send_voice_offline</item>
<item name="attr/ic_attach_camera">@drawable/ic_attach_camera</item> <item name="attr/ic_attach_camera">@drawable/ic_attach_camera</item>
<item name="attr/ic_attach_videocam">@drawable/ic_attach_videocam</item>
<item name="attr/ic_attach_document">@drawable/ic_attach_document</item> <item name="attr/ic_attach_document">@drawable/ic_attach_document</item>
<item name="attr/ic_attach_location">@drawable/ic_attach_location</item> <item name="attr/ic_attach_location">@drawable/ic_attach_location</item>
<item name="attr/ic_attach_photo">@drawable/ic_attach_photo</item> <item name="attr/ic_attach_photo">@drawable/ic_attach_photo</item>
@ -100,9 +102,11 @@
<item name="attr/ic_send_photo_offline">@drawable/ic_send_photo_offline_white</item> <item name="attr/ic_send_photo_offline">@drawable/ic_send_photo_offline_white</item>
<item name="attr/ic_send_picture_offline">@drawable/ic_send_picture_offline_white</item> <item name="attr/ic_send_picture_offline">@drawable/ic_send_picture_offline_white</item>
<item name="attr/ic_send_text_offline">@drawable/ic_send_text_offline_white</item> <item name="attr/ic_send_text_offline">@drawable/ic_send_text_offline_white</item>
<item name="attr/ic_send_videocam_offline">@drawable/ic_send_videocam_offline_white</item>
<item name="attr/ic_send_voice_offline">@drawable/ic_send_voice_offline_white</item> <item name="attr/ic_send_voice_offline">@drawable/ic_send_voice_offline_white</item>
<item name="attr/ic_attach_camera">@drawable/ic_attach_camera_white</item> <item name="attr/ic_attach_camera">@drawable/ic_attach_camera_white</item>
<item name="attr/ic_attach_videocam">@drawable/ic_attach_videocam_white</item>
<item name="attr/ic_attach_document">@drawable/ic_attach_document_white</item> <item name="attr/ic_attach_document">@drawable/ic_attach_document_white</item>
<item name="attr/ic_attach_location">@drawable/ic_attach_location_white</item> <item name="attr/ic_attach_location">@drawable/ic_attach_location_white</item>
<item name="attr/ic_attach_photo">@drawable/ic_attach_photo_white</item> <item name="attr/ic_attach_photo">@drawable/ic_attach_photo_white</item>