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_away.svg' => ['ic_send_picture_away', 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_off_white80.svg' => ['ic_notifications_off_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
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 CONVERSATION = "conversationUuid";
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_LOCATION = 0x0305;
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_PANEL_OPEN = "state_panel_open";
private static final String STATE_PENDING_URI = "state_pending_uri";
@ -500,14 +503,17 @@ public class ConversationActivity extends XmppActivity
intent.setType("image/*");
chooser = true;
break;
case ATTACHMENT_CHOICE_RECORD_VIDEO:
intent.setAction(MediaStore.ACTION_VIDEO_CAPTURE);
break;
case ATTACHMENT_CHOICE_TAKE_PHOTO:
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_READ_URI_PERMISSION);
intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
mPendingImageUris.clear();
mPendingImageUris.add(uri);
break;
case ATTACHMENT_CHOICE_CHOOSE_FILE:
chooser = true;
@ -562,19 +568,29 @@ public class ConversationActivity extends XmppActivity
return;
}
}
final ConversationFragment.SendButtonAction action;
switch (attachmentChoice) {
case ATTACHMENT_CHOICE_LOCATION:
getPreferences().edit().putString("recently_used_quick_action", "location").apply();
action = ConversationFragment.SendButtonAction.SEND_LOCATION;
break;
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;
case ATTACHMENT_CHOICE_TAKE_PHOTO:
getPreferences().edit().putString("recently_used_quick_action", "photo").apply();
action = ConversationFragment.SendButtonAction.TAKE_PHOTO;
break;
case ATTACHMENT_CHOICE_CHOOSE_IMAGE:
getPreferences().edit().putString("recently_used_quick_action", "picture").apply();
action = ConversationFragment.SendButtonAction.CHOOSE_PICTURE;
break;
default:
action = null;
break;
}
if (action != null) {
getPreferences().edit().putString(RECENTLY_USED_QUICK_ACTION,action.toString()).apply();
}
final Conversation conversation = getSelectedConversation();
final int encryption = conversation.getNextEncryption();
@ -805,6 +821,9 @@ public class ConversationActivity extends XmppActivity
case R.id.attach_take_picture:
attachFile(ATTACHMENT_CHOICE_TAKE_PHOTO);
break;
case R.id.attach_record_video:
attachFile(ATTACHMENT_CHOICE_RECORD_VIDEO);
break;
case R.id.attach_choose_file:
attachFile(ATTACHMENT_CHOICE_CHOOSE_FILE);
break;
@ -1414,8 +1433,9 @@ public class ConversationActivity extends XmppActivity
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);
Log.d(Config.LOGTAG,"uris "+uris.toString());
final Conversation c = getSelectedConversation();
final OnPresenceSelected callback = new OnPresenceSelected() {
@Override
@ -1424,7 +1444,7 @@ public class ConversationActivity extends XmppActivity
mPendingFileUris.addAll(uris);
if (xmppConnectionServiceBound) {
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());
}
}

View File

@ -46,7 +46,6 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.ListIterator;
import java.util.UUID;
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.OnContactPictureLongClicked;
import eu.siacs.conversations.ui.widget.ListSelectionManager;
import eu.siacs.conversations.utils.GeoHelper;
import eu.siacs.conversations.utils.NickValidityChecker;
import eu.siacs.conversations.utils.UIHelper;
import eu.siacs.conversations.xmpp.XmppConnection;
@ -331,6 +329,9 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
case TAKE_PHOTO:
activity.attachFile(ConversationActivity.ATTACHMENT_CHOICE_TAKE_PHOTO);
break;
case RECORD_VIDEO:
activity.attachFile(ConversationActivity.ATTACHMENT_CHOICE_RECORD_VIDEO);
break;
case SEND_LOCATION:
activity.attachFile(ConversationActivity.ATTACHMENT_CHOICE_LOCATION);
break;
@ -1152,7 +1153,16 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
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) {
switch (action) {
@ -1169,6 +1179,19 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
default:
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:
switch (status) {
case CHAT:
@ -1268,26 +1291,14 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
} else {
String setting = activity.getPreferences().getString("quick_action", activity.getResources().getString(R.string.quick_action));
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;
break;
case "voice":
action = SendButtonAction.RECORD_VOICE;
break;
case "picture":
action = SendButtonAction.CHOOSE_PICTURE;
break;
default:
action = SendButtonAction.TEXT;
break;
} else {
if (setting.equals("recent")) {
setting = activity.getPreferences().getString(ConversationActivity.RECENTLY_USED_QUICK_ACTION, SendButtonAction.TEXT.toString());
action = SendButtonAction.valueOfOrDefault(setting,SendButtonAction.TEXT);
} else {
action = SendButtonAction.valueOfOrDefault(setting,SendButtonAction.TEXT);
}
}
}
} 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" >
<item
android:id="@+id/attach_location"
android:title="@string/send_location"
android:icon="?attr/ic_attach_location"/>
<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"/>
android:id="@+id/attach_choose_file"
android:title="@string/choose_file"
android:icon="?attr/ic_attach_document"/>
<item
android:id="@+id/attach_choose_picture"
@ -22,8 +12,23 @@
android:icon="?attr/ic_attach_photo"/>
<item
android:id="@+id/attach_choose_file"
android:title="@string/choose_file"
android:icon="?attr/ic_attach_document"/>
android:id="@+id/attach_take_picture"
android:title="@string/attach_take_picture"
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>

View File

@ -29,9 +29,11 @@
<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_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_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_location">@drawable/ic_attach_location</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_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_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_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_location">@drawable/ic_attach_location_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/recently_used</item>
<item>@string/attach_take_picture</item>
<item>@string/attach_record_video</item>
<item>@string/attach_choose_picture</item>
<item>@string/attach_record_voice</item>
<item>@string/send_location</item>
@ -60,10 +61,11 @@
<string-array name="quick_action_values">
<item>none</item>
<item>recent</item>
<item>photo</item>
<item>picture</item>
<item>voice</item>
<item>location</item>
<item>TAKE_PHOTO</item>
<item>RECORD_VIDEO</item>
<item>CHOOSE_PICTURE</item>
<item>RECORD_VOICE</item>
<item>SEND_LOCATION</item>
</string-array>
<string-array name="picture_compression_values">

View File

@ -20,9 +20,11 @@
<attr name="ic_send_photo_offline" format="reference"/>
<attr name="ic_send_picture_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_attach_camera" format="reference"/>
<attr name="ic_attach_videocam" format="reference"/>
<attr name="ic_attach_document" format="reference"/>
<attr name="ic_attach_location" 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="certificate_does_not_contain_jid">Certificate does not contain a Jabber ID</string>
<string name="server_info_partial">partial</string>
<string name="attach_record_video">Record video</string>
</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_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_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_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_location">@drawable/ic_attach_location</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_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_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_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_location">@drawable/ic_attach_location_white</item>
<item name="attr/ic_attach_photo">@drawable/ic_attach_photo_white</item>