Compare commits

...

336 commits

Author SHA1 Message Date
de7631e300 @Overrides added 2016-04-17 17:02:50 +02:00
4b11fa4c69 Merge tag '1.11.7' into trz/merge_1.11.7
Conflicts:
	README.md
	build.gradle
	gradle/wrapper/gradle-wrapper.properties
	src/main/java/eu/siacs/conversations/crypto/axolotl/AxolotlService.java
	src/main/java/eu/siacs/conversations/persistance/FileBackend.java
	src/main/java/eu/siacs/conversations/services/AvatarService.java
	src/main/java/eu/siacs/conversations/services/ContactChooserTargetService.java
	src/main/java/eu/siacs/conversations/services/NotificationService.java
	src/main/java/eu/siacs/conversations/services/XmppConnectionService.java
	src/main/java/eu/siacs/conversations/ui/ConversationActivity.java
	src/main/java/eu/siacs/conversations/ui/EditAccountActivity.java
	src/main/java/eu/siacs/conversations/ui/PublishProfilePictureActivity.java
	src/main/java/eu/siacs/conversations/ui/ShareWithActivity.java
	src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java
	src/main/res/values-cs/strings.xml
	src/main/res/values-de/strings.xml
	src/main/res/values-es/strings.xml
	src/main/res/values-fr/strings.xml
	src/main/res/values-it/strings.xml
	src/main/res/values-pt-rBR/strings.xml
	src/main/res/values-zh-rCN/strings.xml
	src/main/res/values/strings.xml
	src/main/res/xml/preferences.xml
2016-04-17 16:54:19 +02:00
steckbrief
2fdd4e6518 Merge remote-tracking branch 'remotes/origin/trz/rename' into trz/rebase 2016-04-16 21:43:01 +02:00
steckbrief
c854f659db Fixed null pointer exception in case of IOException before uploading file to http host 2016-04-16 21:37:19 +02:00
steckbrief
aeda55ba7c Fixes FS#197: Decrease verbosity of logging of 'skipping duplicate message' 2016-04-07 16:13:03 +02:00
steckbrief
36f3bed2ec Merge remote-tracking branch 'remotes/origin/trz/rename' into trz/rebase
Conflicts:
	src/main/java/de/thedevstack/conversationsplus/ui/LogCatOutputActivity.java
2016-04-07 15:36:16 +02:00
steckbrief
8c3245dd1f Implements FS#187: Add single line copy to logcat view 2016-04-07 14:28:19 +02:00
steckbrief
4ace80d39a Merge remote-tracking branch 'remotes/origin/trz/rename' into trz/rebase
Conflicts:
	src/main/java/eu/siacs/conversations/ui/ConferenceDetailsActivity.java
2016-04-06 22:51:21 +02:00
steckbrief
b55ce9ee90 Merge commit 'remotes/origin/trz/rename~1' into trz/rebase 2016-04-06 22:47:48 +02:00
steckbrief
18548e9ebb Implements FS#189: Move calls of getPreferences to ConversationsPlusPreferences 2016-04-06 22:41:21 +02:00
1e1f7f419e Merge branch 'trz/rebase' into trz/rename (skip beta logo) 2016-04-06 00:09:38 +02:00
aa9b5036d2 update to beta-2 and new logo for beta 2016-04-06 00:08:12 +02:00
0beb3ca30b Merge branch 'trz/rebase' into trz/rename 2016-04-05 23:35:38 +02:00
6899b9b01e Merge branch 'trz/rebase' (early part) into trz/rename 2016-04-05 23:25:52 +02:00
d6a076e112 Merge tag '1.11.3' into trz/rebase 2016-04-05 23:24:49 +02:00
bfb3cb8445 Merge branch 'trz/rename' into trz/rebase (skip translation) 2016-04-03 20:49:51 +02:00
f82adbac65 conversations->conversations+ 2016-04-03 20:47:22 +02:00
d2834ccfd1 fixed installation error "W/PackageManager: Can't install because provider name de.thedevstack.conversationsplus (in package eu.siacs.conversations) is already used by de.thedevstack.conversationsplus" 2016-04-03 16:24:47 +02:00
62b87d0796 update build.gradle for beta 2016-04-03 15:47:32 +02:00
ea9e456583 fixed build error 2016-04-03 15:47:04 +02:00
157c1ee2e1 Pulled translations from transifex 2016-04-01 16:18:39 +02:00
1282896ae8 Fixes FS#180: Conference notification icon missing 2016-04-01 16:18:39 +02:00
4fcefc8788 Merge branch 'trz/rename' into trz/rebase 2016-04-01 16:18:10 +02:00
5f78282135 Pulled translations from transifex 2016-04-01 16:14:32 +02:00
3f38eb3bf4 Fixes FS#180: Conference notification icon missing 2016-04-01 16:10:12 +02:00
steckbrief
933905767c Merge remote-tracking branch 'remotes/origin/trz/rename' into trz/rebase 2016-03-30 22:57:17 +02:00
steckbrief
7c0c1b7e49 Fixes FS#179: Avoid showing always empty list of ressources for mucs 2016-03-30 22:54:05 +02:00
a8f667e11f Merge branch 'trz/rename' into trz/rebase 2016-03-30 01:02:32 +02:00
51d1d2226a no resize of input field when inserting emojicon (FS#175) 2016-03-30 01:02:00 +02:00
b8f97a7072 Fixes FS#174: Displaying of ASCII emoticons differs 2016-03-30 01:02:00 +02:00
403e5696d2 Logging for FS#80 to identify calling method 2016-03-30 01:02:00 +02:00
steckbrief
5021c1c194 Merge remote-tracking branch 'remotes/origin/trz/rename' into trz/rebase 2016-03-29 23:10:31 +02:00
steckbrief
75659ddc12 Fixes FS#172: Conversations list not updated on status changes 2016-03-29 23:09:43 +02:00
steckbrief
074ff79fd9 Merge remote-tracking branch 'remotes/origin/trz/rename' into trz/rebase
Conflicts:
	src/main/java/eu/siacs/conversations/ui/TrustKeysActivity.java
2016-03-29 22:38:11 +02:00
steckbrief
37c5a7c522 Removed unnecessary import 2016-03-29 22:36:40 +02:00
steckbrief
a0c4b022de Merge remote-tracking branch 'remotes/origin/trz/rename' into trz/rebase
Conflicts:
	src/main/java/eu/siacs/conversations/ui/ChangePasswordActivity.java
	src/main/java/eu/siacs/conversations/ui/EditAccountActivity.java
	src/main/java/eu/siacs/conversations/ui/PublishProfilePictureActivity.java
	src/main/java/eu/siacs/conversations/ui/TrustKeysActivity.java
	src/main/java/eu/siacs/conversations/ui/VerifyOTRActivity.java
2016-03-29 22:35:28 +02:00
steckbrief
bcf0d929dd Avoid unnecessary text change on activate account button 2016-03-29 22:30:13 +02:00
steckbrief
1d5d94080a Introduction of a TextViewUtil to easily set attributes for TextViews 2016-03-29 22:28:19 +02:00
steckbrief
e388dfc0b8 Merge remote-tracking branch 'remotes/origin/trz/rename' into trz/rebase
Conflicts:
	src/main/java/de/thedevstack/conversationsplus/ui/dialogs/MessageDetailsDialog.java
	src/main/java/eu/siacs/conversations/ui/ChangePasswordActivity.java
	src/main/java/eu/siacs/conversations/ui/TrustKeysActivity.java
	src/main/java/eu/siacs/conversations/ui/VerifyOTRActivity.java
	src/main/java/eu/siacs/conversations/ui/adapter/AccountAdapter.java
	src/main/java/eu/siacs/conversations/ui/forms/FormFieldWrapper.java
	src/main/java/eu/siacs/conversations/utils/UIHelper.java
2016-03-29 11:53:34 +02:00
steckbrief
6244834096 Implements FS#173: Move access to colors to separate helper class 2016-03-29 11:43:22 +02:00
steckbrief
77b1f2138e Merge remote-tracking branch 'remotes/origin/trz/rename' into trz/rebase 2016-03-28 23:20:44 +02:00
steckbrief
0c0676b7db Merge branch 'master' of repos.thedevstack.de:conversations-plus 2016-03-28 23:19:19 +02:00
steckbrief
f2e361d273 Fixes FS#170: Message Details: Status display has different Text color 2016-03-28 23:17:24 +02:00
steckbrief
eda5a98448 Implements FS#176: error logging for httpupload improved 2016-03-28 23:15:24 +02:00
27ca7f72d1 wrong import in new class 2016-03-27 17:27:06 +02:00
0fab4767fd Merge branch 'trz/rename' into trz/rebase 2016-03-27 17:18:52 +02:00
fd6f0a842b adjusted changelog and corrected wrong version in build.gradle due to merge 2016-03-27 17:17:07 +02:00
a3bfd4a302 Merge branch 'trz/rename' into trz/rebase 2016-03-27 14:46:54 +02:00
903bf55b5e Merge branch 'trz/rename' (early part) into trz/rebase 2016-03-27 14:45:46 +02:00
9773b16a98 Fixes FS#166 - Images cannot be opened since storing in private image folder 2016-03-27 14:41:25 +02:00
711ab9f2b1 Merge branch 'trz/rebase' into trz/rename 2016-03-25 20:13:51 +01:00
d25ab854da Merge branch 'trz/rebase' (early part) into trz/rename 2016-03-25 20:06:01 +01:00
27c16b4b9a FS#169 - Merge Conversations 1.11.2 into Conversations+ dev 2016-03-25 20:04:37 +01:00
86d16b030b Merge branch 'trz/rename' into trz/rebase 2016-03-23 13:41:58 +01:00
f306292ed6 deleted unused library (FS#51) 2016-03-23 13:40:53 +01:00
f3bebf5927 Merge branch 'trz/rename' into trz/rebase 2016-03-23 13:17:45 +01:00
977ffc5f48 pulled from transifex 2016-03-23 13:16:05 +01:00
4085f2a80e Merge branch 'trz/rename' into trz/rebase 2016-03-22 00:58:52 +01:00
02f958ce76 Correct notifications to user if swiping with disabled or not connected account (FS#159) 2016-03-22 00:53:00 +01:00
c0267bb8f6 Fixes FS#87 - Crash on load messages after delete account 2016-03-22 00:16:54 +01:00
de3894f77c Merge branch 'trz/rename' into trz/rebase 2016-03-21 03:12:34 +01:00
47b982524e One more fix in Message.equals() (FS#104) 2016-03-21 03:11:02 +01:00
dd8dac73d2 Merge branch 'trz/rename' into trz/rebase 2016-03-20 20:16:35 +01:00
00fc37b326 changed configuration to conversations+ project (FS#32) 2016-03-20 20:13:59 +01:00
1d9a840c0b Merge branch 'trz/rename' into trz/rebase 2016-03-20 17:57:22 +01:00
9bcacdb8b9 Show file name instead of mime type (FS#102) 2016-03-20 17:56:01 +01:00
a8db6be4eb Merge branch 'trz/rename' into trz/rebase 2016-03-20 17:37:44 +01:00
ea6564c81a FS#104 - Fix Message.equals() 2016-03-20 17:28:39 +01:00
d1e2023bd9 Merge branch 'trz/rename' into trz/rebase 2016-03-20 16:15:43 +01:00
90bbe035e9 Fixes FS#143 - Displaying of emoticons too large 2016-03-20 16:15:17 +01:00
50dad467ee Merge branch 'trz/rename' into trz/rebase 2016-03-20 15:14:42 +01:00
d535496598 Merge branch 'trz/rename' (early part) into trz/rebase 2016-03-20 15:14:36 +01:00
89082f1c68 Fixes FS#168 - Not possible to share more than one picture at once 2016-03-20 13:04:27 +01:00
a92ef6f077 fixed merge error 2016-03-20 02:34:01 +01:00
75c8a4a695 Merge branch 'trz/rebase' (early part) into trz/rename 2016-03-20 02:31:09 +01:00
ad8e8344c0 Merge branch 'trz/rebase' (early part) into trz/rename 2016-03-20 02:29:46 +01:00
6de11f38ea Merge branch 'trz/rebase' (early part) into trz/rename 2016-03-20 02:27:01 +01:00
c9b7ed3d3f Merge branch 'trz/rebase' into trz/merge_1.11.1 2016-03-20 02:14:45 +01:00
d89d7a3000 Merge branch 'trz/rename' into trz/rebase 2016-03-20 02:13:20 +01:00
98e61f189c fixed merge errors 2016-03-20 01:59:41 +01:00
steckbrief
b99714161b Fixes FS#167: Resized images are larger than original images 2016-03-18 17:19:37 +01:00
steckbrief
f5b684ab6b Merge branch 'master' of git.fucktheforce.de:conversations-plus 2016-03-18 17:13:36 +01:00
6758676691 Fixes FS#164 2016-03-18 09:08:18 +01:00
b5d1ee194c Fixes FS#156 and FS#135 (occured again) 2016-03-17 23:08:58 +01:00
cb55d2af52 completely implements FS#161
save state of treatAsDownloadable() and set on error to specified value
2016-03-17 22:14:49 +01:00
fb00372269 Merge tag '1.11.1' into trz/merge_1.11.1
Conflicts:
	README.md
	build.gradle
	src/main/java/eu/siacs/conversations/ui/PublishProfilePictureActivity.java
	src/main/java/eu/siacs/conversations/ui/ShareWithActivity.java
	src/main/java/eu/siacs/conversations/ui/XmppActivity.java
	src/main/java/eu/siacs/conversations/utils/FileUtils.java
	src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java
	src/main/res/values-de/strings.xml
	src/main/res/values-eu/strings.xml
	src/main/res/values-ja/strings.xml
	src/main/res/values-ru/strings.xml
2016-03-17 15:56:54 +01:00
0de9c2aa23 partially implements FS#161
do not show download button on 404
2016-03-16 18:45:18 +01:00
25d3aba4d7 Merge branch 'trz/rename' into trz/rebase 2016-03-15 09:18:03 +01:00
76a1937745 once again: FS#34 - review all calls for String.trim() 2016-03-14 23:39:44 +01:00
steckbrief
74582979b3 Refs FS#140: Rework message display
hide own avatar in message display
2016-03-13 16:25:19 +01:00
steckbrief
340272ba84 Merge remote-tracking branch 'remotes/origin/trz/rename' into trz/rebase 2016-03-12 21:22:44 +01:00
steckbrief
86afdc7aaf Merge commit 'remotes/origin/trz/rename~1' into trz/rebase 2016-03-12 21:21:32 +01:00
steckbrief
a95d2d9134 Fixes FS#155: Check FileHelper vs. FileUtils 2016-03-12 21:14:55 +01:00
14c2c72bc1 Merge branch 'trz/rebase' into trz/rename 2016-03-12 15:51:17 +01:00
2a486c667a Merge branch 'trz/rebase' (early part) into trz/rename 2016-03-12 15:46:09 +01:00
dc26c95b40 fixed possible NPE 2016-03-12 15:36:54 +01:00
3dc635c6fd small bugfixes 2016-03-12 15:04:07 +01:00
e72f409197 removed duplicated source 2016-03-12 14:15:39 +01:00
bf49abe865 Added method to get body from message if hasMeCommand and harmonized extraction of fileextension (FS#38) 2016-03-12 02:28:22 +01:00
steckbrief
3041cc74ce Merge remote-tracking branch 'remotes/origin/trz/rename' into trz/rebase
Conflicts:
	src/main/java/eu/siacs/conversations/ui/XmppActivity.java
	src/main/java/eu/siacs/conversations/ui/adapter/AccountAdapter.java
	src/main/java/eu/siacs/conversations/ui/widget/Switch.java
	src/main/res/layout/account_row.xml
	src/main/res/layout/contact_key.xml
2016-03-11 23:51:10 +01:00
steckbrief
a444402644 Fixes FS#51: Change toggle in Account Management back to standard 2016-03-11 23:44:59 +01:00
steckbrief
864bb77883 Merge remote-tracking branch 'remotes/origin/trz/rename' into trz/rebase
Conflicts:
	src/main/java/eu/siacs/conversations/entities/Message.java
2016-03-11 21:34:10 +01:00
steckbrief
bfc5000b6a Fixes FS#139: Do not merge messages at all 2016-03-11 21:31:30 +01:00
steckbrief
8585231be2 Merge remote-tracking branch 'remotes/origin/trz/rename' into trz/rebase
Conflicts:
	src/main/java/de/thedevstack/conversationsplus/ui/listeners/ResizePictureUserDecisionListener.java
2016-03-10 23:03:19 +01:00
steckbrief
27c9c0aa21 Fixes FS#157: Trigger loading messages from MAM in MUC does not end 2016-03-10 22:54:13 +01:00
steckbrief
58ddfef266 Fixes FS#158: user decision dialog heading configurable and translateable 2016-03-10 21:13:59 +01:00
steckbrief
07c2aba59b Merge remote-tracking branch 'remotes/origin/trz/rename' into trz/rebase
Conflicts:
	build.gradle
2016-03-08 23:35:59 +01:00
steckbrief
9af0794911 Merge remote branch 'master' 2016-03-08 23:22:36 +01:00
steckbrief
a5243a8160 Fixes FS#145: Dialog for decision in Android 5 2016-03-08 23:15:05 +01:00
85bb3f537a incremented version code 2016-03-08 22:47:54 +01:00
a6442dd3ac Merge branch 'trz/rename' into trz/rebase 2016-03-08 22:24:47 +01:00
b0e651aa93 Merge branch 'trz/rename' (early part) into trz/rebase 2016-03-08 22:24:21 +01:00
steckbrief
4b4ba6cff8 reset link and highlight colors to system default 2016-03-08 22:13:52 +01:00
74d6d10cb7 Merge branch 'trz/rebase' into trz/rename 2016-03-08 21:13:24 +01:00
f051dd0bcd Fixes FS#153 - Check if url, phone and email are linkified correctly 2016-03-08 20:36:41 +01:00
steckbrief
d80e433e42 Use ImageUtil instead of old stupid generic FileBackend for cropCenterSquare 2016-03-08 12:56:02 +01:00
steckbrief
48f3922fe6 Fixed merge issue with AxolotlService (differentiation between impl and interface) 2016-03-08 12:55:03 +01:00
2b86b686c5 Merge tag '1.11.0' into trz/merge_1.11.0
Conflicts:
	README.md
	build.gradle
	src/main/java/eu/siacs/conversations/crypto/axolotl/AxolotlService.java
	src/main/java/eu/siacs/conversations/entities/Conversation.java
	src/main/java/eu/siacs/conversations/http/HttpDownloadConnection.java
	src/main/java/eu/siacs/conversations/parser/MessageParser.java
	src/main/java/eu/siacs/conversations/ui/ConversationActivity.java
	src/main/java/eu/siacs/conversations/ui/ConversationFragment.java
	src/main/java/eu/siacs/conversations/ui/EditAccountActivity.java
	src/main/java/eu/siacs/conversations/ui/PublishProfilePictureActivity.java
	src/main/java/eu/siacs/conversations/ui/SettingsActivity.java
	src/main/java/eu/siacs/conversations/ui/XmppActivity.java
	src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java
	src/main/res/values-bg/strings.xml
	src/main/res/values-de/strings.xml
	src/main/res/values-es/strings.xml
	src/main/res/values-fr/strings.xml
	src/main/res/values-it/strings.xml
	src/main/res/values-nl/strings.xml
	src/main/res/values-pl/strings.xml
	src/main/res/values-ro-rRO/strings.xml
	src/main/res/values-sr/strings.xml
	src/main/res/values-sv/strings.xml
	src/main/res/values-tr-rTR/strings.xml
	src/main/res/values-zh-rCN/strings.xml
	src/main/res/values/strings.xml
2016-03-08 10:49:47 +01:00
7be757de90 Merge branch 'trz/rebase' into trz/rename 2016-03-08 01:01:33 +01:00
f767a06842 use Build.VERSION_CODES.KITKAT instead of hard coded 19 2016-03-08 00:58:30 +01:00
5eda297b14 Merge branch 'trz/rebase' into trz/rename 2016-03-07 23:42:13 +01:00
c8759af913 Fixes FS#151 - Missing button on image-links 2016-03-07 23:39:41 +01:00
6578ecfe0e corrected getRealPathFromUri 2016-03-07 23:37:51 +01:00
e9b5793cef Finally fixes FS#142 2016-03-07 23:35:35 +01:00
d620dcdc57 Merge branch 'trz/rebase' into trz/rename 2016-03-07 14:24:07 +01:00
739ae02106 Fixes FS#150 - Swipe out conversation kills app
stacktrace told "java.lang.NoClassDefFoundError: com.nineoldandroids.view.ViewHelper"
2016-03-07 14:22:48 +01:00
steckbrief
e9536210d7 Version bump to 0.0.6 2016-03-06 21:52:49 +01:00
3c400703e0 Merge branch 'trz/rebase' into trz/rename 2016-03-06 19:42:55 +01:00
f28d77dc42 Fixes: FS#94 - wrong size on emojicon keyboard 2016-03-06 17:28:50 +01:00
83cbc2b33b Implements: FS#142 - Fix Conference notifications 2016-03-06 17:28:09 +01:00
steckbrief
5d21abac1d Fixes FS#147: Disable OMEMO 2016-03-02 16:54:18 +01:00
steckbrief
c26f907263 Readme updated 2016-03-02 10:28:21 +01:00
steckbrief
6fb7738757 Fixes FS#146: Remove Tor-Support 2016-03-02 10:28:06 +01:00
steckbrief
f58407d0b8 Fixes FS#148: Remove 'store' hint from chat-markers 2016-03-02 09:36:31 +01:00
steckbrief
59f47485cf externalized string 'Retry decryption' 2016-02-28 21:54:47 +01:00
steckbrief
cd0c6ce48e Merge tag '1.10.1' into trz/merge_1.10.1
Conflicts:
	README.md
	build.gradle
	src/main/java/eu/siacs/conversations/entities/ListItem.java
	src/main/java/eu/siacs/conversations/parser/MessageParser.java
	src/main/java/eu/siacs/conversations/services/XmppConnectionService.java
	src/main/java/eu/siacs/conversations/ui/ConversationFragment.java
	src/main/res/menu/message_context.xml
	src/main/res/xml/preferences.xml
2016-02-28 21:48:09 +01:00
8fb6204288 Fixes FS#48 and FS#136
- corrected preference "confirm_messages" to "confirm_messages_list"
- removed unused "heart message" garbage
2016-02-28 19:17:03 +01:00
steckbrief
bad1569136 Unused imports / methods removed 2016-02-24 13:22:24 +01:00
steckbrief
2803cbda26 Fixes FS#89 after merge conflict 2016-02-24 13:11:24 +01:00
steckbrief
8b0ffd048e Fixed merge issue for resolving FS#47 (preferences involved in the decision for auto downloading image links moved to global Utility Class) 2016-02-24 13:02:33 +01:00
steckbrief
7d95bb6038 Readded MessageDetailsDialog to message context menu after merge 2016-02-24 12:53:17 +01:00
steckbrief
a2fe9f151a Reviewed commit for FS#34 after merge 2016-02-24 12:24:46 +01:00
steckbrief
5fcd69c68b Packet sending helper moved to XmppSendUtil and methods in XmppConnectionService marked as deprecated 2016-02-23 22:40:43 +01:00
steckbrief
6d4a55a087 Removed stupid message correction 2016-02-23 14:33:40 +01:00
steckbrief
303a3a1621 Removed useless 'button-message' to load more messages. Implementation already done with a more convenient method 2016-02-23 13:40:24 +01:00
steckbrief
1c983b3b0f Changed access to presences according to new Presence representation in C 2016-02-23 13:12:48 +01:00
steckbrief
cbec38f02d Removed non-existing member variable 2016-02-23 13:11:50 +01:00
steckbrief
e429ba245e Explicit applicationId removed 2016-02-23 13:10:51 +01:00
steckbrief
5a351d9c11 Fix visibility of updateStatusMessages method that LoadMoreMessages can work 2016-02-23 13:10:09 +01:00
steckbrief
ccd352fa86 Resolved problem with closing sockets (java.lang.IncompatibleClassChangeError) 2016-02-23 13:08:51 +01:00
steckbrief
64049eb335 Removed unnecessary dependencies to XmppConnectionService and added allowMessageCorrection to preferences 2016-02-23 13:07:20 +01:00
steckbrief
0c22f68aef merged string resources 2016-02-23 13:02:37 +01:00
c5e60b43b8 Merge tag '1.10.0' into trz/merge_1.10.0
Conflicts:
	README.md
	build.gradle
	src/main/java/eu/siacs/conversations/generator/AbstractGenerator.java
	src/main/java/eu/siacs/conversations/parser/MessageParser.java
	src/main/java/eu/siacs/conversations/services/XmppConnectionService.java
	src/main/java/eu/siacs/conversations/ui/ConversationFragment.java
	src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java
	src/main/res/layout/activity_edit_account.xml
	src/main/res/values-cs/strings.xml
	src/main/res/values-de/strings.xml
	src/main/res/values-es/strings.xml
	src/main/res/values-eu/strings.xml
	src/main/res/values-gl/strings.xml
	src/main/res/values-it/strings.xml
	src/main/res/values-ja/strings.xml
	src/main/res/values-nb-rNO/strings.xml
	src/main/res/values-nl/strings.xml
	src/main/res/values-pl/strings.xml
	src/main/res/values-sr/strings.xml
	src/main/res/values-zh-rCN/strings.xml
	src/main/res/values-zh-rTW/strings.xml
	src/main/res/values/strings.xml
2016-02-22 14:36:35 +01:00
1e40764b20 Merge tag '1.9.4' into trz/merge_1.9.4
Conflicts:
	build.gradle
	src/main/java/eu/siacs/conversations/generator/PresenceGenerator.java
	src/main/java/eu/siacs/conversations/parser/PresenceParser.java
	src/main/java/eu/siacs/conversations/services/MessageArchiveService.java
	src/main/java/eu/siacs/conversations/services/XmppConnectionService.java
	src/main/java/eu/siacs/conversations/ui/ConversationFragment.java
	src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java
	src/main/res/values/arrays.xml
2016-02-16 11:41:54 +01:00
steckbrief
a049aff638 Fixes FS#105: XHTML par for images added 2016-02-13 21:50:19 +01:00
steckbrief
4829c301e6 Fix flagging no more messages on server for conversation 2016-02-13 21:22:14 +01:00
steckbrief
0af30b4aec Implements FS#64: Show who wrote last message in conversation overview 2016-02-13 21:18:31 +01:00
steckbrief
d84151487e Partially implements FS#6: Conference ID changed to c+bugs@conference.thedevstack.de 2016-02-13 21:11:45 +01:00
steckbrief
d2cafe58fa Fixes FS#135: condition NOT message.isRead() added to check if notification should be shown for a message 2016-02-13 21:08:28 +01:00
steckbrief
6a2c1a0dd5 Unused preference 'picture_compression'. This feature is configured in our variant via 'resize_picture' 2016-02-13 21:03:35 +01:00
steckbrief
3ac3917897 Fixed overwriting of changes for fixing FS#70. Unused method removed from generator classes. 2016-02-13 20:52:11 +01:00
steckbrief
65c2822dac Fixed settings synchronization 2016-02-12 22:55:27 +01:00
steckbrief
f24130321e Imports organized 2016-02-12 22:54:48 +01:00
steckbrief
c1069873ac Fixed parent activity for logoutput activity 2016-02-12 22:37:20 +01:00
steckbrief
3b6d3ee192 Simplification of DNS requests.
Originally introduced for FS#92, but now extended with retrieval for XEP-0368 (http://xmpp.org/extensions/xep-0368.html)
2016-02-12 22:20:57 +01:00
steckbrief
2028bb9b58 green bubbles and setting to choose green or white bubbles removed 2016-02-12 20:48:28 +01:00
steckbrief
2f1ac5ad18 Fixed placeholder string for message input box 2016-02-12 20:34:43 +01:00
steckbrief
fb06783aa6 Fixed layout issue with emojicon tastatur button 2016-02-12 19:29:04 +01:00
steckbrief
2168c73786 Fixed NPE while loading messages via MAM 2016-02-12 19:28:29 +01:00
steckbrief
97749cd8f7 Fixed runtime errors with axolotl libraries.
Now the libraries from maven are added.
2016-02-12 19:27:51 +01:00
steckbrief
9f6fa1ce91 database error while upgrading from db version 14 fixed 2016-02-12 10:03:29 +01:00
steckbrief
e98d999b94 axolotl resources changed from maven to jcenter 2016-02-12 10:03:02 +01:00
steckbrief
9c87e2269c Compilation errors and merge mixups fixed 2016-02-11 22:40:48 +01:00
steckbrief
d38b3c2cf2 Some runtime dependencies added 2016-02-11 22:35:22 +01:00
steckbrief
73084c9cd3 Fixed XML errors after merge 2016-02-11 21:20:51 +01:00
steckbrief
f7abd4237f Fixed third party library references in gradle 2016-02-11 21:20:06 +01:00
3824eb172b Merge tag '1.9.3' into trz/merge_1.9.3
Conflicts:
	.travis.yml
	CHANGELOG.md
	README.md
	art/render.rb
	build.gradle
	libs/openpgp-api-lib/build.gradle
	settings.gradle
	src/main/AndroidManifest.xml
	src/main/java/eu/siacs/conversations/Config.java
	src/main/java/eu/siacs/conversations/crypto/OtrService.java
	src/main/java/eu/siacs/conversations/crypto/PgpEngine.java
	src/main/java/eu/siacs/conversations/entities/Account.java
	src/main/java/eu/siacs/conversations/entities/Contact.java
	src/main/java/eu/siacs/conversations/entities/Conversation.java
	src/main/java/eu/siacs/conversations/entities/DownloadableFile.java
	src/main/java/eu/siacs/conversations/entities/Message.java
	src/main/java/eu/siacs/conversations/entities/MucOptions.java
	src/main/java/eu/siacs/conversations/entities/Transferable.java
	src/main/java/eu/siacs/conversations/generator/AbstractGenerator.java
	src/main/java/eu/siacs/conversations/generator/IqGenerator.java
	src/main/java/eu/siacs/conversations/generator/MessageGenerator.java
	src/main/java/eu/siacs/conversations/generator/PresenceGenerator.java
	src/main/java/eu/siacs/conversations/http/HttpConnectionManager.java
	src/main/java/eu/siacs/conversations/http/HttpDownloadConnection.java
	src/main/java/eu/siacs/conversations/http/HttpUploadConnection.java
	src/main/java/eu/siacs/conversations/parser/AbstractParser.java
	src/main/java/eu/siacs/conversations/parser/IqParser.java
	src/main/java/eu/siacs/conversations/parser/MessageParser.java
	src/main/java/eu/siacs/conversations/parser/PresenceParser.java
	src/main/java/eu/siacs/conversations/persistance/DatabaseBackend.java
	src/main/java/eu/siacs/conversations/persistance/FileBackend.java
	src/main/java/eu/siacs/conversations/services/AbstractConnectionManager.java
	src/main/java/eu/siacs/conversations/services/AvatarService.java
	src/main/java/eu/siacs/conversations/services/MessageArchiveService.java
	src/main/java/eu/siacs/conversations/services/NotificationService.java
	src/main/java/eu/siacs/conversations/services/XmppConnectionService.java
	src/main/java/eu/siacs/conversations/ui/ConferenceDetailsActivity.java
	src/main/java/eu/siacs/conversations/ui/ContactDetailsActivity.java
	src/main/java/eu/siacs/conversations/ui/ConversationActivity.java
	src/main/java/eu/siacs/conversations/ui/ConversationFragment.java
	src/main/java/eu/siacs/conversations/ui/EditAccountActivity.java
	src/main/java/eu/siacs/conversations/ui/ManageAccountActivity.java
	src/main/java/eu/siacs/conversations/ui/PublishProfilePictureActivity.java
	src/main/java/eu/siacs/conversations/ui/SettingsActivity.java
	src/main/java/eu/siacs/conversations/ui/ShareWithActivity.java
	src/main/java/eu/siacs/conversations/ui/XmppActivity.java
	src/main/java/eu/siacs/conversations/ui/adapter/AccountAdapter.java
	src/main/java/eu/siacs/conversations/ui/adapter/ConversationAdapter.java
	src/main/java/eu/siacs/conversations/ui/adapter/ListItemAdapter.java
	src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java
	src/main/java/eu/siacs/conversations/utils/CryptoHelper.java
	src/main/java/eu/siacs/conversations/utils/DNSHelper.java
	src/main/java/eu/siacs/conversations/utils/ExceptionHelper.java
	src/main/java/eu/siacs/conversations/utils/MimeUtils.java
	src/main/java/eu/siacs/conversations/utils/PhoneHelper.java
	src/main/java/eu/siacs/conversations/utils/UIHelper.java
	src/main/java/eu/siacs/conversations/utils/Xmlns.java
	src/main/java/eu/siacs/conversations/xml/XmlReader.java
	src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java
	src/main/java/eu/siacs/conversations/xmpp/jingle/JingleConnection.java
	src/main/java/eu/siacs/conversations/xmpp/jingle/JingleConnectionManager.java
	src/main/java/eu/siacs/conversations/xmpp/jingle/JingleInbandTransport.java
	src/main/java/eu/siacs/conversations/xmpp/jingle/JingleSocks5Transport.java
	src/main/java/eu/siacs/conversations/xmpp/stanzas/MessagePacket.java
	src/main/res/drawable-hdpi/ic_launcher.png
	src/main/res/drawable-hdpi/ic_notification.png
	src/main/res/drawable-mdpi/ic_launcher.png
	src/main/res/drawable-mdpi/ic_notification.png
	src/main/res/drawable-xhdpi/ic_launcher.png
	src/main/res/drawable-xhdpi/ic_notification.png
	src/main/res/drawable-xxhdpi/ic_launcher.png
	src/main/res/drawable-xxhdpi/ic_notification.png
	src/main/res/drawable-xxxhdpi/ic_launcher.png
	src/main/res/drawable-xxxhdpi/ic_notification.png
	src/main/res/layout/account_row.xml
	src/main/res/layout/activity_about.xml
	src/main/res/layout/activity_change_password.xml
	src/main/res/layout/activity_contact_details.xml
	src/main/res/layout/activity_edit_account.xml
	src/main/res/layout/activity_muc_details.xml
	src/main/res/layout/activity_publish_profile_picture.xml
	src/main/res/layout/activity_verify_otr.xml
	src/main/res/layout/contact.xml
	src/main/res/layout/contact_key.xml
	src/main/res/layout/conversation_list_row.xml
	src/main/res/layout/enter_jid_dialog.xml
	src/main/res/layout/fragment_conversation.xml
	src/main/res/layout/join_conference_dialog.xml
	src/main/res/layout/message_received.xml
	src/main/res/layout/message_sent.xml
	src/main/res/layout/message_status.xml
	src/main/res/layout/quickedit.xml
	src/main/res/values-ar-rEG/strings.xml
	src/main/res/values-bg/strings.xml
	src/main/res/values-ca/strings.xml
	src/main/res/values-cs/strings.xml
	src/main/res/values-de/strings.xml
	src/main/res/values-el/strings.xml
	src/main/res/values-es/strings.xml
	src/main/res/values-eu/strings.xml
	src/main/res/values-fa-rIR/strings.xml
	src/main/res/values-fr/strings.xml
	src/main/res/values-id/strings.xml
	src/main/res/values-it/strings.xml
	src/main/res/values-iw/strings.xml
	src/main/res/values-ja/strings.xml
	src/main/res/values-ko/strings.xml
	src/main/res/values-nl/strings.xml
	src/main/res/values-pl/strings.xml
	src/main/res/values-pt/strings.xml
	src/main/res/values-ru/strings.xml
	src/main/res/values-sk/strings.xml
	src/main/res/values-sr/strings.xml
	src/main/res/values-sv/strings.xml
	src/main/res/values-v21/themes.xml
	src/main/res/values-zh-rCN/strings.xml
	src/main/res/values/arrays.xml
	src/main/res/values/colors.xml
	src/main/res/values/dimens.xml
	src/main/res/values/strings.xml
	src/main/res/values/themes.xml
	src/main/res/xml/preferences.xml
2016-02-11 10:45:27 +01:00
steckbrief
cec1b0f1f8 Merge remote-tracking branch 'remotes/origin/trz/rename' into trz/rebase 2016-02-09 22:13:35 +01:00
steckbrief
72114d7324 Fixes FS#135: condition NOT message.isRead() added to check if notification should be shown for a message 2016-02-09 22:08:43 +01:00
steckbrief
899a39cbf7 implementation hint for FS#96 added 2016-02-09 21:57:44 +01:00
steckbrief
e0219ae4ce Merge remote-tracking branch 'remotes/origin/trz/rename' into trz/rebase 2016-02-09 21:51:44 +01:00
steckbrief
362c00d31b Fixes FS#135: condition NOT message.isRead() added to check if notification should be shown for a message 2016-02-09 21:48:09 +01:00
steckbrief
0594e1f8f8 Fixed minor class cast issue 2016-01-16 19:18:29 +01:00
steckbrief
69145c02f2 Merge remote-tracking branch 'remotes/origin/trz/rename' into trz/rebase
Cast problem fixed
2016-01-15 22:15:00 +01:00
steckbrief
d44debab67 Introducing some specialized IqPacketGenerators
- IqPacketGenerator
- PubSubPacketGenerator
- AvatarPacketGenerator
2016-01-15 21:57:36 +01:00
steckbrief
424477dfbc Merge remote-tracking branch 'remotes/origin/trz/rename' into trz/rebase 2016-01-15 13:58:07 +01:00
steckbrief
1f40166b31 Moved all avatar related work to AvatarService
- publishAvatar moved from XmppConnectionService to AvatarService
2016-01-15 13:52:32 +01:00
steckbrief
63a40ed65f Merge remote-tracking branch 'remotes/origin/trz/rename' into trz/rebase 2016-01-15 12:58:58 +01:00
steckbrief
34cd66e8e0 Notification icon source svg file added 2016-01-15 12:58:17 +01:00
steckbrief
2a14176b80 Implements FS#111: Compress resized picture with PNG format 2016-01-15 12:57:49 +01:00
steckbrief
732de65479 Merge remote-tracking branch 'remotes/origin/trz/rename' into trz/rebase 2016-01-15 11:46:58 +01:00
steckbrief
0e2cd3e142 Implements FS#64: Show who wrote last message in conversation overview 2016-01-15 11:46:21 +01:00
steckbrief
d9af7dca54 Merge remote-tracking branch 'remotes/origin/trz/rename' into trz/rebase 2016-01-14 20:19:19 +01:00
steckbrief
203d72e963 Fixes FS#76: Notification adapted to new logo 2016-01-14 17:17:43 +01:00
steckbrief
7e44ff92d7 Merge remote-tracking branch 'remotes/origin/trz/rename' into trz/rebase 2016-01-13 16:49:06 +01:00
steckbrief
8644c4676a Moved all avatar related work to AvatarService
- fetchAvatar, fetchAvatarPep, fetchAvatarVcard, checkForAvatar moved from XmppConnectionService to AvatarService
- Several unused imports removed
- XmppSendUtil introduced to enable presencePacket and iqPacket sending without using XmppConnectionService since the account has everything needed
- UiUpdateHelper introduced to enable UI updates without using XmppConnectionService directly
2016-01-13 16:10:09 +01:00
steckbrief
0fe5ce481f Publish avatars as PNG 2016-01-13 15:53:32 +01:00
steckbrief
06398afd40 Merge remote-tracking branch 'remotes/origin/trz/rename' into trz/rebase 2016-01-08 17:29:15 +01:00
steckbrief
9b20223655 Fixes FS#107, Implements FS#77
Show the number of online resources in account view and enable show resources by clicking on the account jid
2016-01-08 17:17:36 +01:00
steckbrief
40afa7c9ee Merge remote-tracking branch 'remotes/origin/trz/rename' into trz/rebase 2016-01-04 22:11:21 +01:00
steckbrief
65be0f1b2d Fixes FS#99: Adjust namespace according to XEP-0363
Value of namespace constant changed to 'urn:xmpp:http:upload'
2016-01-04 22:07:19 +01:00
steckbrief
eb1cad39a6 Merge remote-tracking branch 'remotes/origin/trz/rename' into trz/rebase 2015-12-17 21:10:14 +01:00
steckbrief
2fb31bcc3f Log error in case logcat command could not be executed; Show toast in case nothing is copied 2015-12-17 21:09:18 +01:00
steckbrief
4f0061293e Merge remote-tracking branch 'remotes/origin/trz/rename' into trz/rebase 2015-12-16 21:55:02 +01:00
steckbrief
c26335f3e3 Implements FS#19, FS#84; Introduces ImageResizeException, MessageUtil and distinguishes between image resizing and compressing/saving 2015-12-16 00:53:04 +01:00
steckbrief
556697c47e Fixes FS#95: NPE when opening message details for failed file transfer 2015-12-16 00:39:45 +01:00
steckbrief
dcf951e48e Fixes FS#88, Code cleanup 2015-12-14 19:13:30 +01:00
steckbrief
1c44fd8a4b Fixes FS#88: Avoid smilie repacement in time messages 2015-12-14 15:15:00 +01:00
steckbrief
9d0dedc6ce Build cleanup: libraries added as local resources, removed unused proguard configs, removed SwipyRefreshLayout as module and added as binary dependency, moved 3rd party binaries to separate folder 2015-12-14 14:56:46 +01:00
steckbrief
f49b979cbe Merge remote-tracking branch 'remotes/origin/trz/rename' into trz/rebase 2015-12-11 00:44:33 +01:00
steckbrief
8ed95d0595 Removed unnecessary files 2015-12-11 00:42:30 +01:00
steckbrief
74b7588e62 Merge remote-tracking branch 'remotes/origin/trz/rename' into trz/rebase 2015-12-11 00:27:27 +01:00
steckbrief
258732c9df Removed stupid DNS query code 2015-12-11 00:14:49 +01:00
steckbrief
3b1723dcf1 Merge remote-tracking branch 'remotes/origin/trz/rename' into trz/rebase 2015-12-10 20:37:34 +01:00
steckbrief
a745422300 Moved logcat to a module, increased error robustness for loading last messages 2015-12-10 20:01:50 +01:00
steckbrief
aa6a2e1c18 Merge remote-tracking branch 'remotes/origin/trz/rename' into trz/rebase 2015-12-06 16:21:39 +01:00
steckbrief
eb5a7a5392 Fix flagging no more messages on server for conversation 2015-12-06 16:20:11 +01:00
steckbrief
734511b0fa Merge remote-tracking branch 'remotes/origin/trz/rename' into trz/rebase 2015-12-04 23:19:33 +01:00
steckbrief
0086d5dc80 Implements FS#83: Reload from last received message 2015-12-04 23:18:36 +01:00
steckbrief
9265d6718e Merge remote-tracking branch 'remotes/origin/trz/rename' into trz/rebase 2015-12-04 19:57:46 +01:00
steckbrief
909dac7ac2 Implements FS#89 - Change about information 2015-12-04 19:55:45 +01:00
steckbrief
ca0d68224e Merge remote-tracking branch 'remotes/origin/trz/rename' into trz/rebase 2015-12-04 16:35:40 +01:00
steckbrief
96e6604d9e Fixes FS#75 - Change color names to reasonable names 2015-12-04 16:34:50 +01:00
steckbrief
274a689dce Merge remote-tracking branch 'remotes/origin/trz/rename' into trz/rebase 2015-12-04 11:01:15 +01:00
steckbrief
b405ba7106 Merge remote-tracking branch 'remotes/origin/trz/rename' into trz/rebase 2015-12-02 23:02:39 +01:00
steckbrief
a0dcdf5c76 Merge remote-tracking branch 'remotes/origin/trz/rename' into trz/rebase 2015-12-02 23:02:10 +01:00
steckbrief
6fdc38911c Fixed compile error in inner class 2015-12-02 23:00:44 +01:00
steckbrief
9efc139835 Partially implements FS#6: Conference ID changed to c+bugs@confere
nce.thedevstack.de
2015-11-20 22:49:56 +01:00
steckbrief
2531c88f2c Implements FS#67: Introduce central logging class to use log prefix, new activity to show logcat output and button to copy contents 2015-11-20 22:41:30 +01:00
steckbrief
6bc277152a Merge remote-tracking branch 'remotes/origin/trz/rename' into trz/rebase 2015-11-06 21:41:29 +01:00
steckbrief
8838a50948 FileBackend splitted into several util classes for separate concerns: AvatarUtil, StreamUtil, ImageUtil. Unused imports removed. 2015-11-06 20:23:43 +01:00
steckbrief
0575767152 Merge remote-tracking branch 'remotes/origin/trz/rename' into trz/rebase 2015-11-03 21:33:14 +01:00
steckbrief
b22d863c36 Implements FS#26: Introduction of dialog to choose whether to resize a picture or not 2015-11-03 21:09:36 +01:00
steckbrief
11659eadb0 Implements FS#24: Introduce setting for picture resizing 2015-10-30 20:05:36 +01:00
steckbrief
389e3d4f0f Merge remote-tracking branch 'remotes/origin/trz/rename' into trz/rebase 2015-10-23 22:26:55 +02:00
steckbrief
7aed735df2 Fixes FS#47: WiFi only setting in unencrypted chats bug fixed, typo in values for the setting fixed, preferences involved in the decision for auto downloading image links moved to global Utility Class 2015-10-23 22:20:54 +02:00
steckbrief
bdc211a67a Merge remote-tracking branch 'remotes/origin/trz/rename' into trz/rebase 2015-10-22 00:57:21 +02:00
steckbrief
57cfcefd52 Implements FS#78: Allow installation on SD card 2015-10-22 00:55:48 +02:00
steckbrief
01bfe0c59a Merge trz/rename into trz/rebase 2015-10-22 00:19:44 +02:00
steckbrief
85a25984f4 Access to preferences moved to global utility class ConversationsPlusPreferences. Unused imports removed. Unnecessary references to XmppConnectionService removed. Bug in call order in StartConversationActivity for the setting hide_offline fixed. 2015-10-21 23:49:06 +02:00
steckbrief
1d9b4e959d added comment for clarification, why the timestamp of the first msg of msg list is needed to query older msgs with mam 2015-10-17 14:16:08 +02:00
steckbrief
0a5a985cbe Merge remote-tracking branch 'remotes/origin/trz/rename' into trz/rebase 2015-10-16 16:06:51 +02:00
steckbrief
0759a78727 C+ changelog updated 2015-10-16 16:04:46 +02:00
steckbrief
7435852acb Fixes FS#82: Background color of conversation list item set to primary background color 2015-10-16 16:03:18 +02:00
steckbrief
464e084d28 Conversations Plus ChangeLog added 2015-10-16 14:40:28 +02:00
steckbrief
e891f076f2 Merge remote-tracking branch 'remotes/origin/trz/rename' into trz/rebase 2015-10-15 22:40:05 +02:00
steckbrief
7206541a7b Removed unused imports 2015-10-15 22:31:14 +02:00
steckbrief
8c450d17a4 Fixes FS#81 - avoid jumps after loading messages 2015-10-15 22:30:47 +02:00
steckbrief
0265bd05bf fix imports and namespaces 2015-10-05 16:27:08 +02:00
steckbrief
383d1aa9e6 Merge remote-tracking branch 'remotes/origin/trz/rename' into trz/rebase
Manually merged conflicting files:
	src/main/AndroidManifest.xml
	src/main/java/eu/siacs/conversations/generator/AbstractGenerator.java
	src/main/java/eu/siacs/conversations/generator/IqGenerator.java
	src/main/java/eu/siacs/conversations/ui/AboutPreference.java
2015-10-05 16:05:56 +02:00
c3c42e415d fixed imports 2015-10-05 14:09:30 +02:00
b98478e57c Merge branch 'trz/rename' into trz/rebase
Conflicts:
	build.gradle
	src/main/java/eu/siacs/conversations/ui/ContactDetailsActivity.java
	src/main/java/eu/siacs/conversations/ui/ConversationFragment.java
2015-10-05 13:55:43 +02:00
5850cbcf9c Merge branch 'trz/rename' (early part) into trz/rebase 2015-10-05 13:50:26 +02:00
steckbrief
1db6e6d5ea Merge branch 'master' of ssh://git.fucktheforce.de/conversations-plus 2015-10-05 13:01:46 +02:00
steckbrief
df05605f03 Fixes FS#70 - Introduction of a ConversationsPlusApplication to get global access to app information 2015-10-05 13:00:21 +02:00
6f17b06ad0 version bump to 0.0.5 2015-10-05 12:57:33 +02:00
steckbrief
dafb125a4f Publishing additional information in message details dialog such as message type and message status 2015-10-04 20:34:52 +02:00
steckbrief
0e272042d5 Note added where to change sth. for FS#70 2015-10-04 15:25:30 +02:00
steckbrief
52aa81e82e Implements FS#72, FS#72, FS#73, FS#65, FS#66 - Resource List Dialog added, Open resource
list on long click in conversations overview, open resource list on click
on bare jid in contact details view, Message details dialog added
2015-10-04 15:24:44 +02:00
steckbrief
a3d62e6a10 New logo added, fixes FS#56 2015-10-04 14:49:45 +02:00
steckbrief
38dfb6d6c7 Fixes FS#49: Highlight the selected conversation in list 2015-09-02 21:29:23 +02:00
steckbrief
6598759597 Fixes FS#50: Replace phone numbers and email addresses in messages with links 2015-09-02 20:56:03 +02:00
c103d37549 version bump to 0.0.4 2015-08-21 20:08:53 +02:00
2dac6c8f36 Merge branch 'trz/rebase' into trz/rename 2015-08-21 20:08:23 +02:00
ef0f8d4507 fixes FS#42 - Smilie replacement in url 2015-08-21 19:58:16 +02:00
b4006541f3 fixes FS#44 - IOException if content-length is not present 2015-08-21 19:26:47 +02:00
075448f764 modified readme 2015-08-17 00:12:33 +02:00
3eb1387299 Merge branch 'trz/rebase' into trz/rename 2015-08-16 23:44:01 +02:00
b936af529f fix wrong class type usage 2015-08-16 22:39:26 +02:00
caefd38f96 moved merged files to correct location 2015-08-16 19:14:01 +02:00
9181767ac6 version bump to 0.0.3 2015-08-16 18:47:25 +02:00
89b28a4965 Merge branch 'trz/rebase' into trz/rename
Conflicts:
	src/main/java/de/thedevstack/conversationsplus/ui/ConversationFragment.java
	src/main/java/de/thedevstack/conversationsplus/ui/SettingsActivity.java
2015-08-16 18:45:08 +02:00
0321ebb7a6 fixes FS#35 - Shortcut Badger compatible to setting always_notify_in_conference 2015-08-16 18:33:10 +02:00
3be4dbf66a fixes FS#13 - Change smiley replacement patterns to be case insensitive 2015-08-16 17:56:46 +02:00
ea1debd8f7 Fixes FS#12 - Move smiley replacement from UIHelper to Emojicon module 2015-08-16 17:30:06 +02:00
b670609893 Fixes FS#15 - Adding smiley only possible at the end
Removed unnecessary ClickedListeners
2015-08-16 00:32:12 +02:00
fe3a3c2471 Fixes FS#37 - Remove special treatment of unicode hearts
Fixes FS#34 - review all calls for String.trim()
2015-08-16 00:02:14 +02:00
cfefe9a0bd Merged https://github.com/ankushsachdeva/emojicon/pull/16 2015-08-15 23:45:43 +02:00
a76de90fe7 resolve of some compiler errors 2015-08-13 16:15:14 +02:00
a9279c2001 adjust version code to match fdroid regex 2015-08-13 16:04:04 +02:00
steckbrief
79c585144d - Introduction of SwipeRefreshLayout for conversation view
- OnScrollListener for ListView of messages removed and replaced with swipe refresh
- Loading of messages now possible even if no message is present in conversation
2015-08-12 23:01:37 +02:00
0ee1992da2 Fixes FS#38 - Issues with URLs with multiple dots in file name 2015-08-12 19:20:24 +02:00
473f035355 Fixes FS#33 - Get back the comment 2015-08-12 18:28:56 +02:00
steckbrief
b085643555 Fixes FS#20: Limitation of end conversation swipe to left side 2015-08-11 22:19:48 +02:00
639babfdb5 Merge branch 'trz/rebase' into trz/rename
Conflicts:
	build.gradle
	src/main/java/de/thedevstack/conversationsplus/crypto/OtrEngine.java
	src/main/java/de/thedevstack/conversationsplus/entities/Account.java
	src/main/java/de/thedevstack/conversationsplus/entities/Contact.java
	src/main/java/de/thedevstack/conversationsplus/entities/Downloadable.java
	src/main/java/de/thedevstack/conversationsplus/entities/DownloadableFile.java
	src/main/java/de/thedevstack/conversationsplus/entities/DownloadablePlaceholder.java
	src/main/java/de/thedevstack/conversationsplus/entities/Message.java
	src/main/java/de/thedevstack/conversationsplus/generator/IqGenerator.java
	src/main/java/de/thedevstack/conversationsplus/http/HttpConnection.java
	src/main/java/de/thedevstack/conversationsplus/http/HttpConnectionManager.java
	src/main/java/de/thedevstack/conversationsplus/parser/AbstractParser.java
	src/main/java/de/thedevstack/conversationsplus/parser/MessageParser.java
	src/main/java/de/thedevstack/conversationsplus/parser/PresenceParser.java
	src/main/java/de/thedevstack/conversationsplus/persistance/DatabaseBackend.java
	src/main/java/de/thedevstack/conversationsplus/persistance/FileBackend.java
	src/main/java/de/thedevstack/conversationsplus/services/NotificationService.java
	src/main/java/de/thedevstack/conversationsplus/services/XmppConnectionService.java
	src/main/java/de/thedevstack/conversationsplus/ui/ConversationActivity.java
	src/main/java/de/thedevstack/conversationsplus/ui/ConversationFragment.java
	src/main/java/de/thedevstack/conversationsplus/ui/SettingsActivity.java
	src/main/java/de/thedevstack/conversationsplus/ui/StartConversationActivity.java
	src/main/java/de/thedevstack/conversationsplus/ui/adapter/AccountAdapter.java
	src/main/java/de/thedevstack/conversationsplus/ui/adapter/ConversationAdapter.java
	src/main/java/de/thedevstack/conversationsplus/ui/adapter/ListItemAdapter.java
	src/main/java/de/thedevstack/conversationsplus/ui/adapter/MessageAdapter.java
	src/main/java/de/thedevstack/conversationsplus/utils/UIHelper.java
	src/main/java/de/thedevstack/conversationsplus/xmpp/jingle/JingleConnection.java
	src/main/java/de/thedevstack/conversationsplus/xmpp/jingle/JingleConnectionManager.java
	src/main/java/de/thedevstack/conversationsplus/xmpp/jingle/JingleInbandTransport.java
	src/main/java/de/thedevstack/conversationsplus/xmpp/jingle/JingleSocks5Transport.java
	src/main/java/de/thedevstack/conversationsplus/xmpp/stanzas/MessagePacket.java
	src/main/java/eu/siacs/conversations/crypto/OtrEngine.java
	src/main/java/eu/siacs/conversations/crypto/OtrService.java
	src/main/java/eu/siacs/conversations/entities/DownloadablePlaceholder.java
	src/main/java/eu/siacs/conversations/entities/TransferablePlaceholder.java
	src/main/java/eu/siacs/conversations/http/HttpConnection.java
	src/main/java/eu/siacs/conversations/http/HttpDownloadConnection.java
	src/main/res/layout/activity_about.xml
2015-08-11 20:30:11 +02:00
8fd688ca96 Merge tag '1.5.2' into trz/rebase 2015-08-11 17:35:53 +02:00
steckbrief
553f41a2db Show Online status in contact list with respect to SHOW_ONLINE_STATUS preference 2015-06-19 23:12:24 +02:00
steckbrief
a73ce32e27 Status color added to "create conversation" (refers to ticket #22 in flyspray) 2015-06-19 23:11:44 +02:00
steckbrief
1b5966ae3b App-Name changed to "Conversations+" in strings.xml 2015-06-19 09:47:04 +02:00
steckbrief
a7121b51b8 Show Online status in contact list with respect to SHOW_ONLINE_STATUS preference 2015-06-19 09:47:04 +02:00
steckbrief
b6584dfd0b Status color added to "create conversation" (refers to ticket #22 in flyspray) 2015-06-19 09:47:04 +02:00
steckbrief
7382e3af97 renaming eu.siacs.conversations to de.thedevstack.conversationsplus
"renaming eu.siacs.conversations to de.thedevstack.conversationsplus"

package renaming completed
2015-06-19 09:46:40 +02:00
b3b4a2902e moved color picker to libs 2015-04-15 21:43:53 +02:00
549810783c changed received and read confirmation setting to one list and put it to settings class 2015-04-14 23:48:28 +02:00
8932dd9fb3 adjusted todo 2015-04-14 00:06:53 +02:00
516c343e8a check with lowercase to also match JPEG, JPeg ... 2015-04-13 15:55:00 +02:00
12486e9a29 adjusted todo 2015-04-13 11:19:42 +02:00
ae8a2467aa changed last message in overview also to EmojiconTextView for displaying smileys correctly 2015-04-12 23:37:58 +02:00
573bfed961 adjusted todo 2015-04-12 23:10:21 +02:00
3ef609cfbd better and perhaps faster way for checking if a message is downloadable 2015-04-12 23:09:53 +02:00
03bc7dcdc9 new settings to initialisation of Settings 2015-04-12 23:09:10 +02:00
7405d50c70 implementation for downloading only when enabled wlan 2015-04-12 21:28:45 +02:00
56e695cf1b added settings for accepting and downloading files
fix in Settings, initialize with same values like in preferences.xml
2015-04-12 20:59:12 +02:00
98c09f18a2 add missing resource files 2015-04-12 17:25:50 +02:00
d64aa6407c Merge remote-tracking branch 'origin/trz/master' into trz/master 2015-04-12 17:24:10 +02:00
cae106e310 whatsapp-like smiley implementation 2015-04-12 17:22:53 +02:00
972c65b775 whatsapp-like smiley implemantation 2015-04-12 17:21:35 +02:00
fd5f36b864 adjusted todo 2015-04-12 12:09:18 +02:00
steckbrief
deac0df707 Merge branch 'trz/master' of ssh://git.fucktheforce.de/conversations into trz/master 2015-04-11 23:00:31 +02:00
steckbrief
17779e7700 Color choose dialog 2015-04-11 23:00:10 +02:00
82bfd8ac33 show online status under avatar in same way for muc as the send button does 2015-04-11 21:49:48 +02:00
ae520c2957 differ between received and read message 2015-04-11 21:48:55 +02:00
94a669fcb8 no trim of messages or password
check password with only spaces separately
2015-04-11 20:53:25 +02:00
3a814addab correct parsing of led color 2015-04-11 20:23:25 +02:00
c829f612cd todo added 2015-04-11 17:24:06 +02:00
df63c14617 Merge branch 'trz/master' of ssh://git.fucktheforce.de/conversations into trz/master 2015-04-11 14:15:07 +02:00
87e56b534a changed distribution url due to bug: http://stackoverflow.com/questions/29576097/gradle-sync-error-in-android-studio-when-importing-project/29576568#29576568 2015-04-11 14:14:43 +02:00
steckbrief
e17b75511e timestamp parsing reverted 2015-03-31 16:30:47 +02:00
steckbrief
6220260df3 Configurable LED color (Attention: Expert setting because currently only text input) 2015-03-31 15:26:26 +02:00
steckbrief
52ed924a13 Changes for emoticon parser reactivated 2015-03-31 14:13:12 +02:00
steckbrief
75c5275f7e Merge tag '1.2.0' into trz/master
Conflicts:
	src/main/java/eu/siacs/conversations/parser/AbstractParser.java
	src/main/java/eu/siacs/conversations/ui/SettingsActivity.java
	src/main/java/eu/siacs/conversations/ui/adapter/ConversationAdapter.java
	src/main/res/values-de/strings.xml
	src/main/res/xml/preferences.xml
2015-03-30 22:12:49 +02:00
steckbrief
c8fe93cf0a - Some comments to refer to the XEPs added
- parseTimestamp method changed to use the XMLGregorianCalendar (refer to XEP-0082 and subsequently Date/DateTime definition of XML Schema Part 2, http://www.w3.org/TR/xmlschema-2/#date, http://www.w3.org/TR/xmlschema-2/#dateTime)
  a small test comparing the original implementation with the XMLGregorianCalendar implementation showed a significant performance improvement (about 0.1s on windows 7 64bit, AMD-A6 1.8GHz, 16GB RAM, Android Studio + Eclipse + Firefox running)
2015-02-21 00:12:15 +01:00
steckbrief
20eae39557 Merge master-origin
Conflicts:
	src/main/java/eu/siacs/conversations/ui/SettingsActivity.java
	src/main/java/eu/siacs/conversations/ui/XmppActivity.java
	src/main/java/eu/siacs/conversations/ui/adapter/ConversationAdapter.java
	src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java
	src/main/java/eu/siacs/conversations/utils/UIHelper.java
	src/main/res/values-de/strings.xml
2015-02-20 22:19:31 +01:00
steckbrief
980a84a6ce ToDo modified 2015-02-20 21:09:20 +01:00
c67ed416a1 modified TODO 2015-02-19 10:14:17 +01:00
0f169e8dbe added section to TODO 2015-02-13 09:22:50 +01:00
77c19f81dc some more in TODO 2015-02-13 00:25:10 +01:00
aed8c64e54 add TODO 2015-02-07 13:06:15 +01:00
steckbrief
46bbf1ce5f - Avoiding accessing shared preferences to know if emoticons should be parsed for every single message
- Adding support to show online status in Conversations overview (configurable via the setting "send_button_status")
2015-01-20 22:42:53 +01:00
Tristan Zur
e8ca2a1ae3 Merge branch 'master' of ssh://git.fucktheforce.de/conversations
Conflicts:
	src/main/java/eu/siacs/conversations/ui/adapter/ConversationAdapter.java
	src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java
2015-01-11 02:39:39 +01:00
Tristan Zur
5a860416b5 Setting added for parsing emoticons or not 2015-01-11 01:40:25 +01:00
71bb1e90b0 changes to get it working under eclipse 2015-01-10 23:11:07 +01:00
Tristan Zur
0464a6a3fa Fixed missing symbol for eu.siacs.conversations.Config and wrong parameter for method eu.siacs.conversations.utils.UIHelper.transformAscii.. 2015-01-10 22:17:51 +01:00
95e2a53951 Merge branch 'master' of ssh://git.fucktheforce.de/conversations
Conflicts:
	src/main/java/eu/siacs/conversations/Config.java
	src/main/java/eu/siacs/conversations/ui/adapter/ConversationAdapter.java
	src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java
	src/main/java/eu/siacs/conversations/utils/UIHelper.java
2015-01-03 23:19:05 +01:00
48717dd7d3 remaining part of my patch 2015-01-03 21:31:56 +01:00
6e3e58e3c8 added smilies from patch. remaining changes will follow later 2015-01-03 17:43:42 +01:00
1344 changed files with 15016 additions and 5265 deletions

View file

@ -2,7 +2,8 @@
host = https://www.transifex.com
lang_map = af_ZA: af-rZA, am_ET: am-rET, ar_AE: ar-rAE, ar_BH: ar-rBH, ar_DZ: ar-rDZ, ar_EG: ar-rEG, ar_IQ: ar-rIQ, ar_JO: ar-rJO, ar_KW: ar-rKW, ar_LB: ar-rLB, ar_LY: ar-rLY, ar_MA: ar-rMA, ar_OM: ar-rOM, ar_QA: ar-rQA, ar_SA: ar-rSA, ar_SY: ar-rSY, ar_TN: ar-rTN, ar_YE: ar-rYE, arn_CL: arn-rCL, as_IN: as-rIN, az_AZ: az-rAZ, ba_RU: ba-rRU, be_BY: be-rBY, bg_BG: bg-rBG, bn_BD: bn-rBD, bn_IN: bn-rIN, bo_CN: bo-rCN, br_FR: br-rFR, bs_BA: bs-rBA, ca_ES: ca-rES, co_FR: co-rFR, cs_CZ: cs-rCZ, cy_GB: cy-rGB, da_DK: da-rDK, de_AT: de-rAT, de_CH: de-rCH, de_DE: de-rDE, de_LI: de-rLI, de_LU: de-rLU, dsb_DE: dsb-rDE, dv_MV: dv-rMV, el_GR: el-rGR, en_AU: en-rAU, en_BZ: en-rBZ, en_CA: en-rCA, en_GB: en-rGB, en_IE: en-rIE, en_IN: en-rIN, en_JM: en-rJM, en_MY: en-rMY, en_NZ: en-rNZ, en_PH: en-rPH, en_SG: en-rSG, en_TT: en-rTT, en_US: en-rUS, en_ZA: en-rZA, en_ZW: en-rZW, es_AR: es-rAR, es_BO: es-rBO, es_CL: es-rCL, es_CO: es-rCO, es_CR: es-rCR, es_DO: es-rDO, es_EC: es-rEC, es_ES: es-rES, es_GT: es-rGT, es_HN: es-rHN, es_MX: es-rMX, es_NI: es-rNI, es_PA: es-rPA, es_PE: es-rPE, es_PR: es-rPR, es_PY: es-rPY, es_SV: es-rSV, es_US: es-rUS, es_UY: es-rUY, es_VE: es-rVE, et_EE: et-rEE, eu_ES: eu-rES, fa_IR: fa-rIR, fi_FI: fi-rFI, fil_PH: fil-rPH, fo_FO: fo-rFO, fr_BE: fr-rBE, fr_CA: fr-rCA, fr_CH: fr-rCH, fr_FR: fr-rFR, fr_LU: fr-rLU, fr_MC: fr-rMC, fy_NL: fy-rNL, ga_IE: ga-rIE, gd_GB: gd-rGB, gl_ES: gl-rES, gsw_FR: gsw-rFR, gu_IN: gu-rIN, ha_NG: ha-rNG, hi_IN: hi-rIN, hr_BA: hr-rBA, hr_HR: hr-rHR, hsb_DE: hsb-rDE, hu_HU: hu-rHU, hy_AM: hy-rAM, id_ID: id-rID, ig_NG: ig-rNG, ii_CN: ii-rCN, is_IS: is-rIS, it_CH: it-rCH, it_IT: it-rIT, iu_CA: iu-rCA, ja_JP: ja-rJP, ka_GE: ka-rGE, kk_KZ: kk-rKZ, kl_GL: kl-rGL, km_KH: km-rKH, kn_IN: kn-rIN, ko_KR: ko-rKR, kok_IN: kok-rIN, ky_KG: ky-rKG, lb_LU: lb-rLU, lo_LA: lo-rLA, lt_LT: lt-rLT, lv_LV: lv-rLV, mi_NZ: mi-rNZ, mk_MK: mk-rMK, ml_IN: ml-rIN, mn_CN: mn-rCN, mn_MN: mn-rMN, moh_CA: moh-rCA, mr_IN: mr-rIN, ms_BN: ms-rBN, ms_MY: ms-rMY, mt_MT: mt-rMT, nb_NO: nb-rNO, ne_NP: ne-rNP, nl_BE: nl-rBE, nl_NL: nl-rNL, nn_NO: nn-rNO, nso_ZA: nso-rZA, oc_FR: oc-rFR, or_IN: or-rIN, pa_IN: pa-rIN, pl_PL: pl-rPL, prs_AF: prs-rAF, ps_AF: ps-rAF, pt_BR: pt-rBR, pt_PT: pt-rPT, qut_GT: qut-rGT, quz_BO: quz-rBO, quz_EC: quz-rEC, quz_PE: quz-rPE, rm_CH: rm-rCH, ro_RO: ro-rRO, ru_RU: ru-rRU, rw_RW: rw-rRW, sa_IN: sa-rIN, sah_RU: sah-rRU, se_FI: se-rFI, se_NO: se-rNO, se_SE: se-rSE, si_LK: si-rLK, sk_SK: sk-rSK, sl_SI: sl-rSI, sma_NO: sma-rNO, sma_SE: sma-rSE, smj_NO: smj-rNO, smj_SE: smj-rSE, smn_FI: smn-rFI, sms_FI: sms-rFI, sq_AL: sq-rAL, sr_BA: sr-rBA, sr_CS: sr-rCS, sr_ME: sr-rME, sr_RS: sr-rRS, sv_FI: sv-rFI, sv_SE: sv-rSE, sw_KE: sw-rKE, syr_SY: syr-rSY, ta_IN: ta-rIN, te_IN: te-rIN, tg_TJ: tg-rTJ, th_TH: th-rTH, tk_TM: tk-rTM, tn_ZA: tn-rZA, tr_TR: tr-rTR, tt_RU: tt-rRU, tzm_DZ: tzm-rDZ, ug_CN: ug-rCN, uk_UA: uk-rUA, ur_PK: ur-rPK, uz_UZ: uz-rUZ, vi_VN: vi-rVN, wo_SN: wo-rSN, xh_ZA: xh-rZA, yo_NG: yo-rNG, zh_CN: zh-rCN, zh_HK: zh-rHK, zh_MO: zh-rMO, zh_SG: zh-rSG, zh_TW: zh-rTW, zu_ZA: zu-rZA, no_NO: no-rNO, he_IL: iw-rIL, he: iw
[conversations.strings]
[conversations-1.strings]
file_filter = src/main/res/values-<lang>/strings.xml
source_file = src/main/res/values/strings.xml
source_lang = en
type = ANDROID

View file

@ -0,0 +1,41 @@
###Conversations+ ChangeLog
####Version 0.0.7
* Fixes FS#139: Do not merge messages at all
* Fixes FS#51: Change toggle in Account Management back to standard
* Fixes FS#167: Resized images are larger than original images
* Fixes FS#135: disable notification for received/downloaded images when link is received through mam or carbons
* Fixes FS#156: load of mam messages result in unread messages
* Fixes FS#166: Images cannot be opened since storing in private image folder
####Version 0.0.6
* Implements FS#111: Compress resized picture with PNG format
* Fixes FS#107: Account can be edited while online
* Implements FS#77: Open list of resources for own jid
* Fixes FS#99: Adjust namespace according to XEP-0363
* Fixes FS#95: NPE when opening message details for failed file transfer
* Implements FS#89: Change about information
* Implements FS#84: Setting for location to store received pictures
* Implements FS#83: Reload from last received message
* Fixes FS#82: Strange layout in share with activity
* Fixes FS#81: Interactive message loading causes "jumps"
* Implements FS#78: Allow installation on SD card
* Implements FS#77: Open list of resources for own jid
* Implements FS#76: Adapt notification icon to new logo
* Fixes FS#75: Change color names to reasonable names
* Fixes FS#70: Fixed Identity Strings
* Implements FS#67: Display logcat within application
* Implements FS#64: Show who wrote last message in conversation overview
* Fixes FS#47: Setting "WLAN only" no longer works for received links
* Implements FS#26: Introduce dialog to choose whether to send resized picture or original picture
* Implements FS#24: Introduce setting for picture resizing
* Implements FS#19: Received and Sent pictures are automatically stored in public picture folder
* Partially implements FS#6: Change "Report bug to developer" - Reporting conference changed to c+bugs@conference.thedevstack.de
####Version 0.0.5
* Fixes FS#73: Open list of resources while clicking on JID in contact details
* Fixes FS#72: Open list of resources while long clicking on avatar in conversation overview
* Fixes FS#66: Add option to popup menu to open message details
* Fixes FS#65: Message Details
* Fixes FS#56: Create new logo
* Fixes FS#54: Add new options to message menu

10
ManualBuildForFdroid.md Normal file
View file

@ -0,0 +1,10 @@
### Build with Android Studio
1. Adjust build.gradle
a. increment versionCode
b. enter new versionName
2. Generate APK
a. (menu) Build -> Generate Signed APK
b. choose Key store path (AndroidKeystore.jks) -> choose key alias (android-key) -> Next -> Finish
3. Upload APK to VM with installed FDroid into folder /var/www/fdroid/repo (Repo Folder)
4. Run fdroid update --create-metadata in directory /var/www/fdroid
5. Rsync Repo Folder to public F-Droid Repo

405
README.md
View file

@ -1,382 +1,31 @@
# Conversations
# Conversations+
Conversations: the very last word in instant messaging
[![Google Play](https://conversations.im/images/en-play-badge.png)](https://play.google.com/store/apps/details?id=eu.siacs.conversations&referrer=utm_source%3Dgithub) [![Amazon App Store](https://images-na.ssl-images-amazon.com/images/G/01/AmazonMobileApps/amazon-apps-store-us-black.png)](http://www.amazon.com/dp/B00WD35AAC/)
![screenshots](https://raw.githubusercontent.com/siacs/Conversations/master/screenshots.png)
## Design principles
* Be as beautiful and easy to use as possible without sacrificing security or
privacy
* Rely on existing, well established protocols (XMPP)
* Do not require a Google Account or specifically Google Cloud Messaging (GCM)
* Require as few permissions as possible
Conversations+: the improved version of [Conversations](https://github.com/siacs/Conversations/)
## Features
* End-to-end encryption with [OMEMO](http://conversations.im/omemo/), [OTR](https://otr.cypherpunks.ca/), or [OpenPGP](http://www.openpgp.org/about_openpgp/)
* Send and receive images as well as other kind of files
* Share your location via an external [plug-in](https://play.google.com/store/apps/details?id=eu.siacs.conversations.sharelocation&referrer=utm_source%3Dgithub)
* Indication when your contact has read your message
* Intuitive UI that follows Android Design guidelines
* Pictures / Avatars for your Contacts
* Syncs with desktop client
* Conferences (with support for bookmarks)
* Address book integration
* Multiple accounts / unified inbox
* Very low impact on battery life
### XMPP Features
Conversations works with every XMPP server out there. However XMPP is an
extensible protocol. These extensions are standardized as well in so called
XEP's. Conversations supports a couple of these to make the overall user
experience better. There is a chance that your current XMPP server does not
support these extensions; therefore to get the most out of Conversations you
should consider either switching to an XMPP server that does or — even better —
run your own XMPP server for you and your friends. These XEP's are:
* [XEP-0065: SOCKS5 Bytestreams](http://xmpp.org/extensions/xep-0065.html) (or mod_proxy65). Will be used to transfer
files if both parties are behind a firewall (NAT).
* [XEP-0163: Personal Eventing Protocol](http://xmpp.org/extensions/xep-0163.html) for avatars and OMEMO.
* [XEP-0191: Blocking command](http://xmpp.org/extensions/xep-0191.html) lets you blacklist spammers or block contacts
without removing them from your roster.
* [XEP-0198: Stream Management](http://xmpp.org/extensions/xep-0198.html) allows XMPP to survive small network outages and
changes of the underlying TCP connection.
* [XEP-0280: Message Carbons](http://xmpp.org/extensions/xep-0280.html) which automatically syncs the messages you send to
your desktop client and thus allows you to switch seamlessly from your mobile
client to your desktop client and back within one conversation.
* [XEP-0237: Roster Versioning](http://xmpp.org/extensions/xep-0237.html) mainly to save bandwidth on poor mobile connections
* [XEP-0313: Message Archive Management](http://xmpp.org/extensions/xep-0313.html) synchronize message history with the
server. Catch up with messages that were sent while Conversations was
offline.
* [XEP-0352: Client State Indication](http://xmpp.org/extensions/xep-0352.html) lets the server know whether or not
Conversations is in the background. Allows the server to save bandwidth by
withholding unimportant packages.
* [XEP-0363: HTTP File Upload](http://xmpp.org/extensions/xep-0363.html) allows you to share files in conferences
and with offline contacts.
## Team
#### Head of Development
* [Daniel Gultsch](https://github.com/inputmice)
#### Code Contributions
(In order of appearance)
* [Rene Treffer](https://github.com/rtreffer) ([PRs](https://github.com/siacs/Conversations/pulls?utf8=%E2%9C%93&q=is%3Apr+author%3Artreffer+is%3Amerged))
* [Andreas Straub](https://github.com/strb) ([PRs](https://github.com/siacs/Conversations/pulls?utf8=%E2%9C%93&q=is%3Apr+author%3Astrb+is%3Amerged))
* [Alethea Butler](https://github.com/alethea) ([PRs](https://github.com/siacs/Conversations/pulls?utf8=%E2%9C%93&q=is%3Apr+author%3Aalethea+is%3Amerged))
* [M. Dietrich](https://github.com/emdete) ([PRs](https://github.com/siacs/Conversations/pulls?utf8=%E2%9C%93&q=is%3Apr+author%3Aemdete+is%3Amerged))
* [betheg](https://github.com/betheg) ([PRs](https://github.com/siacs/Conversations/pulls?utf8=%E2%9C%93&q=is%3Apr+author%3Abetheg+is%3Amerged))
* [Sam Whited](https://github.com/SamWhited) ([PRs](https://github.com/siacs/Conversations/pulls?utf8=%E2%9C%93&q=is%3Apr+author%3ASamWhited+is%3Amerged))
* [BrianBlade](https://github.com/BrianBlade) ([PRs](https://github.com/siacs/Conversations/pulls?utf8=%E2%9C%93&q=is%3Apr+author%3ABrianBlade+is%3Amerged))
#### Logo
* [Ilia Rostovtsev](https://github.com/qooob) (Progress)
* [Diego Turtulici](http://efesto.eigenlab.org/~diesys) (Original)
* [fiaxh](https://github.com/fiaxh) (OMEMO)
#### Translations
Translations are managed on [Transifex](https://www.transifex.com/projects/p/conversations/)
## FAQ
### General
#### How do I install Conversations?
Conversations is entirely open source and licensed under GPLv3. So if you are a
software developer you can check out the sources from GitHub and use Gradle to
build your apk file.
The more convenient way — which not only gives you automatic updates but also
supports the further development of Conversations — is to buy the App in the
Google [Play Store](https://play.google.com/store/apps/details?id=eu.siacs.conversations&referrer=utm_source%3Dgithub).
Buying the App from the Play Store will also give you access to our [beta test](#beta).
#### I don't have a Google Account but I would still like to make a contribution
I accept donations over PayPal, Bitcoin and Flattr. For donations via PayPal you
can use the email address `donate@siacs.eu` or the button below.
[![Donate with PayPal](https://www.paypalobjects.com/en_US/i/btn/btn_donate_LG.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=CW3SYT3KG5PDL)
**Disclaimer:** I'm not a huge fan of PayPal and their business policies. For
larger contributions please get in touch with me beforehand and we can talk
about bank transfer (SEPA).
My Bitcoin Address is: `1NxSU1YxYzJVDpX1rcESAA3NJki7kRgeeu`
[![Flattr this!](http://api.flattr.com/button/flattr-badge-large.png)](https://flattr.com/submit/auto?user_id=inputmice&url=http%3A%2F%2Fconversations.siacs.eu&title=Conversations&tags=github&category=software)
#### How do I create an account?
XMPP, like email, is a federated protocol which means that there is not one
company you can create an 'official XMPP account' with. Instead there are
hundreds, or even thousands, of provider out there. To find one use a web search
engine of your choice. Or maybe your university has one. Or you can run your
own. Or ask a friend to run one. Once you've found one, you can use
Conversations to create an account. Just select 'register new account on server'
within the create account dialog.
#### Where can I set up a custom hostname / port
Conversations will automatically look up the SRV records for your domain name
which can point to any hostname port combination. If your server doesnt provide
those please contact your admin and have them read
[this](http://prosody.im/doc/dns#srv_records). If your server operator is unwilling
to fix this you can enable advanced server settings in the expert settings of
Conversations.
#### I get 'Incompatible Server'
As regular user you should be picking a different server. The server you selected
is probably insecure and/or very old.
If you are a server administrator you should make sure that your server provides
STARTTLS. XMPP over TLS (on a different port) is not sufficient.
On rare occasions this error message might also be caused by a server not providing
a login (SASL) mechanism that Conversations is able to handle. Conversations supports
SCRAM-SHA1, PLAIN, EXTERNAL (client certs) and DIGEST-MD5.
#### How do XEP-0357: Push Notifications work?
You need to be running the Play Store version of Conversations and your server needs to support push notifications.¹ Because *Google Cloud Notifications (GCM)* are tied with an API key to a specific app your server can not initiate the push message directly. Instead your server will send the push notification to the Conversations App server (operated by us) which then acts as a proxy and initiates the push message for you. The push message sent from our App server through GCM doesnt contain any personal information. It is just an empty message which will wake up your device and tell Conversations to reconnect to your server. The information send from your server to our App server depends on the configuration of your server but can be limited to your account name. (In any case the Conversations App server won't redirect any information through GCM even if your server sends this information.)
In summary Google will never get hold of any personal information besides that *something* happened. (Which doesnt even have to be a message but can be some automated event as well.) We - as the operator of the App server - will just get hold of your account name (without being able to tie this to your specific device).
If you dont want this simply pick a server which does not offer Push Notifications or build Conversations yourself without support for push notifications. (This is available via a gradle build flavor.) Non-play store source of Conversations like the Amazon App store will also offer a version without push notifications. Conversations will just work as before and maintain its own TCP connection in the background.
¹ Your server only needs to support the server side of [XEP-0357: Push Notifications](http://xmpp.org/extensions/xep-0357.html). If you use the Play Store version you do **not** need to run your own app server. The server modules are called *mod_cloud_notify* on Prosody and *mod_push* on ejabberd.
#### Conversations doesn't work for me. Where can I get help?
You can join our conference room on `conversations@conference.siacs.eu`.
A lot of people in there are able to answer basic questions about the usage of
Conversations or can provide you with tips on running your own XMPP server. If
you found a bug or your app crashes please read the Developer / Report Bugs
section of this document.
#### I need professional support with Conversations or setting up my server
I'm available for hire. Contact me at `inputmice@siacs.eu`.
#### How does the address book integration work?
The address book integration was designed to protect your privacy. Conversations
neither uploads contacts from your address book to your server nor fills your
address book with unnecessary contacts from your online roster. If you manually
add a Jabber ID to your phones address book Conversations will use the name and
the profile picture of this contact. To make the process of adding Jabber IDs to
your address book easier you can click on the profile picture in the contact
details within Conversations. This will start an "add to address book" intent
with the JID as the payload. This doesn't require Conversations to have write
permissions on your address book but also doesn't require you to copy/paste a
JID from one app to another.
#### I get 'delivery failed' on my messages
If you get delivery failed on images it's probably because the recipient lost
network connectivity during reception. In that case you can try it again at a
later time.
For text messages the answer to your question is a little bit more complex.
When you see 'delivery failed' on text messages, it is always something that is
being reported by the server. The most common reason for this is that the
recipient failed to resume a connection. When a client loses connectivity for a
short time the client usually has a five minute window to pick up that
connection again. When the client fails to do so because the network
connectivity is out for longer than that all messages sent to that client will
be returned to the sender resulting in a delivery failed.
Instead of returning a message to the sender both ejabberd and prosody have the
ability to store messages in offline storage when the disconnecting client is
the only client. In prosody this is available via an extra module called
```mod_smacks_offline```. In ejabberd this is available via some configuration
settings.
Other less common reasons are that the message you sent didn't meet some
criteria enforced by the server (too large, too many). Another reason could be
that the recipient is offline and the server doesn't provide offline storage.
Usually you are able to distinguish between these two groups in the fact that
the first one happens always after some time and the second one happens almost
instantly.
#### Where can I see the status of my contacts? How can I set a status or priority?
Statuses are a horrible metric. Setting them manually to a proper value rarely
works because users are either lazy or just forget about them. Setting them
automatically does not provide quality results either. Keyboard or mouse
activity as indicator for example fails when the user is just looking at
something (reading an article, watching a movie). Furthermore automatic setting
of status always implies an impact on your privacy (are you sure you want
everybody in your contact list to know that you have been using your computer at
4am‽).
In the past status has been used to judge the likelihood of whether or not your
messages are being read. This is no longer necessary. With Chat Markers
(XEP-0333, supported by Conversations since 0.4) we have the ability to **know**
whether or not your messages are being read. Similar things can be said for
priorities. In the past priorities have been used (by servers, not by clients!)
to route your messages to one specific client. With carbon messages (XEP-0280,
supported by Conversations since 0.1) this is no longer necessary. Using
priorities to route OTR messages isn't practical either because they are not
changeable on the fly. Metrics like last active client (the client which sent
the last message) are much better.
Unfortunately these modern replacements for legacy XMPP features are not widely
adopted. However Conversations should be an instant messenger for the future and
instead of making Conversations compatible with the past we should work on
implementing new, improved technologies and getting them into other XMPP clients
as well.
Making these status and priority optional isn't a solution either because
Conversations is trying to get rid of old behaviours and set an example for
other clients.
#### Conversations is missing a certain feature
I'm open for new feature suggestions. You can use the [issue tracker][issues] on
GitHub. Please take some time to browse through the issues to see if someone
else already suggested it. Be assured that I read each and every ticket. If I
like it I will leave it open until it's implemented. If I don't like it I will
close it (usually with a short comment). If I don't comment on an feature
request that's probably a good sign because this means I agree with you.
Commenting with +1 on either open or closed issues won't change my mind, nor
will it accelerate the development.
#### You closed my feature request but I want it really really badly
Just write it yourself and send me a pull request. If I like it I will happily
merge it if I don't at least you and like minded people get to enjoy it.
#### I need a feature and I need it now!
I am available for hire. Contact me via XMPP: `inputmice@siacs.eu`
### Security
#### Why are there three end-to-end encryption methods and which one should I choose?
* OTR is a legacy encryption method. It works out of the box with most contacts as long as they are online.
* OMEMO works even when a contact is offline, and works with multiple devices. It also allows asynchronous file-transfer when the server has [HTTP File Upload](http://xmpp.org/extensions/xep-0363.html). However, OMEMO is not as widely supported as OTR and is currently implemented only by Conversations and Gajim. OMEMO should be preferred over OTR for contacts who use Conversations.
* OpenPGP (XEP-0027) is a very old encryption method that has some advantages over OTR but should only be used by experts who know what they are doing.
#### How do I use OpenPGP
Before you continue reading you should note that the OpenPGP support in
Conversations is experimental. This is not because it will make the app unstable
but because the fundamental concepts of PGP aren't ready for widespread use.
The way PGP works is that you trust Key IDs instead of JID's or email addresses.
So in theory your contact list should consist of Public-Key-IDs instead of
JID's. But of course no email or XMPP client out there implements these
concepts. Plus PGP in the context of instant messaging has a couple of
downsides: It is vulnerable to replay attacks, it is rather verbose, and
decrypting and encrypting takes longer than OTR. It is however asynchronous and
works well with message carbons.
To use OpenPGP you have to install the open source app
[OpenKeychain](http://www.openkeychain.org) and then long press on the account in
manage accounts and choose renew PGP announcement from the contextual menu.
#### How does the encryption for conferences work?
For conferences only OMEMO and OpenPGP are suppored as encryption method. (OTR
does not work with multiple participants).
##### OMEMO
OMEMO encryption works only in private (members only) conferences that are non-anonymous.
You need to have presence subscription with every member of the conference.
You can verify that by going into the conference details, long press every member and start
a conversation with them. (Or select 'contact details' if they are already in your contact
list)
The owner of a conference can make a public conference private by going into the conference
details and hit the settings button (the one with the gears) and select both *private* and
*members only*.
##### OpenPGP
Every participant has to announce their OpenPGP key (see answer above).
If you would like to send encrypted messages to a conference you have to make
sure that you have every participant's public key in your OpenKeychain.
Right now there is no check in Conversations to ensurethat.
You have to take care of that yourself. Go to the conference details and
touch every key id (The hexadecimal number below a contact). This will send you
to OpenKeychain which will assist you on adding the key. This works best in
very small conferences with contacts you are already using OpenPGP with. This
feature is regarded experimental. Conversations is the only client that uses
XEP-0027 with conferences. (The XEP neither specifically allows nor disallows
this.)
### Development
<a name="beta"></a>
#### Beta testing
If you bought the App on [Google Play](https://play.google.com/store/apps/details?id=eu.siacs.conversations)
you can get access to the latest beta version by joining the
[Conversations Beta Testers](https://plus.google.com/communities/107649347599361240873)
community on Google+ and then using [this link](https://play.google.com/apps/testing/eu.siacs.conversations)
to sign up for the beta test.
#### How do I build Conversations
Make sure to have ANDROID_HOME point to your Android SDK. Use the Android SDK Manager to install missing dependencies.
git clone https://github.com/siacs/Conversations.git
cd Conversations
./gradlew assembleFreeDebug
There are two build flavors available. *free* and *playstore*. Unless you know what you are doing you only need *free*.
[![Build Status](https://travis-ci.org/siacs/Conversations.svg?branch=development)](https://travis-ci.org/siacs/Conversations)
### How do I update/add external libraries?
If the library you want to update is in Maven Central or JCenter (or has its own
Maven repo), add it or update its version in `build.gradle`. If the library is
in the `libs/` directory, you can update it using a subtree merge by doing the
following (using `minidns` as an example):
git remote add minidns https://github.com/rtreffer/minidns.git
git fetch minidns
git merge -s subtree minidns master
To add a new dependency to the `libs/` directory (replacing "name", "branch" and
"url" as necessary):
git remote add name url
git merge -s ours --no-commit name/branch
git read-tree --prefix=libs/name -u name/branch
git commit -m "Subtree merged in name"
#### How do I debug Conversations
If something goes wrong Conversations usually exposes very little information in
the UI (other than the fact that something didn't work). However with adb
(android debug bridge) you squeeze some more information out of Conversations.
These information are especially useful if you are experiencing trouble with
your connection or with file transfer.
adb -d logcat -v time -s conversations
#### I found a bug
Please report it to our [issue tracker][issues]. If your app crashes please
provide a stack trace. If you are experiencing misbehavior please provide
detailed steps to reproduce. Always mention whether you are running the latest
Play Store version or the current HEAD. If you are having problems connecting to
your XMPP server your file transfer doesnt work as expected please always
include a logcat debug output with your issue (see above).
[issues]: https://github.com/siacs/Conversations/issues
Of course Conversations+ supports [all features of Conversations](https://github.com/siacs/Conversations/#features) and in addition:
* smileys like Whatsapp
* change of LED notification color
* online status in contact and conversation list
* Manual loading of last messages from MAM
* Sending of original images
* Show list of online resources per contact and for the own account
* Message details dialog
* Indication who wrote last message in a conversation
## Modifications
* unread count badges take care of setting "Conference notifications"
* swipe to end conversation only in one direction
* replace ASCII-smileys
* Swipe to refresh for loading archived messages using MAM
* settings
* confirmation for received and/or read messages
* automatically download picture links
* automatically download only when wifi enabled
* sending original or resized images
* Removed hard coded tor support
* Removed support for last message correction (XEP-0308)
* bugfixes and code improvements

10
TODO Normal file
View file

@ -0,0 +1,10 @@
settings:
- cleanup and structure
- remove/fix "enter is send" and "show enter key"
code:
- check parseTimestamp
- change crash reports
- notification with emojicon textview
general:
- add comments to code of XEPs
- add comments in general

View file

@ -0,0 +1,447 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<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:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="512"
height="512"
id="svg2"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="conversations_plus_baloons.svg"
inkscape:export-filename="/home/diesys/diesys/grafica/conversation/conversation_bubble.png"
inkscape:export-xdpi="100"
inkscape:export-ydpi="100">
<defs
id="defs4">
<linearGradient
inkscape:collect="always"
id="linearGradient3874">
<stop
style="stop-color:#00a000;stop-opacity:1;"
offset="0"
id="stop3876" />
<stop
style="stop-color:#00a000;stop-opacity:0;"
offset="1"
id="stop3878" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient3913">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop3915" />
<stop
style="stop-color:#ffffff;stop-opacity:0;"
offset="1"
id="stop3917" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient3818">
<stop
style="stop-color:#669900;stop-opacity:1"
offset="0"
id="stop3820" />
<stop
style="stop-color:#99cc00;stop-opacity:1"
offset="1"
id="stop3822" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3818"
id="radialGradient3824"
cx="212.07048"
cy="1045.9178"
fx="212.07048"
fy="1045.9178"
r="238.57143"
gradientTransform="matrix(1.9491621,-0.90817722,0.65829208,1.4128498,-879.63121,-248.98648)"
gradientUnits="userSpaceOnUse" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3913"
id="radialGradient3919"
cx="362.98563"
cy="379.77524"
fx="362.98563"
fy="379.77524"
r="139.95312"
gradientTransform="matrix(1.3800477,1.0445431,-1.3325077,1.7605059,339.09383,-577.83938)"
gradientUnits="userSpaceOnUse" />
<linearGradient
gradientUnits="userSpaceOnUse"
y2="-155.75885"
x2="114.59022"
y1="35.545681"
x1="114.55434"
id="linearGradient3794"
xlink:href="#linearGradient3788"
inkscape:collect="always" />
<linearGradient
id="linearGradient3788">
<stop
id="stop3790"
offset="0"
style="stop-color:#1eed00;stop-opacity:1;" />
<stop
id="stop3792"
offset="1"
style="stop-color:#abff28;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient3821">
<stop
style="stop-color:#ff283d;stop-opacity:1;"
offset="0"
id="stop3823" />
<stop
style="stop-color:#ff28ae;stop-opacity:1;"
offset="1"
id="stop3825" />
</linearGradient>
<linearGradient
id="linearGradient4543">
<stop
style="stop-color:#2e45bf;stop-opacity:1;"
offset="0"
id="stop4545" />
<stop
style="stop-color:#28a7ff;stop-opacity:1;"
offset="1"
id="stop4547" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient4098">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop4100" />
<stop
style="stop-color:#e6e6e6;stop-opacity:1"
offset="1"
id="stop4102" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4098"
id="linearGradient3833"
x1="273.81851"
y1="764.74677"
x2="304.14023"
y2="936.47272"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4098"
id="linearGradient3853"
gradientUnits="userSpaceOnUse"
x1="273.81851"
y1="764.74677"
x2="304.14023"
y2="936.47272" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3818"
id="radialGradient3863"
cx="262.33273"
cy="945.23846"
fx="262.33273"
fy="945.23846"
r="185.49754"
gradientTransform="matrix(1.2253203,-0.54206726,0.43090148,0.97403458,-466.4135,170.11831)"
gradientUnits="userSpaceOnUse" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3818"
id="radialGradient3866"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.2253203,-0.54206726,0.43090148,0.97403458,-466.4135,170.11831)"
cx="262.33273"
cy="945.23846"
fx="262.33273"
fy="945.23846"
r="185.49754" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3913"
id="radialGradient3873"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.3800477,1.0445431,-1.3325077,1.7605059,339.09383,-577.83938)"
cx="321.75275"
cy="386.38751"
fx="321.75275"
fy="386.38751"
r="139.95312" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3818"
id="radialGradient3880"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.2253203,-0.54206726,0.43090148,0.97403458,-466.4135,-370.24387)"
cx="262.33273"
cy="945.23846"
fx="262.33273"
fy="945.23846"
r="185.49754" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3913"
id="radialGradient3883"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.1091694,-0.44385763,0.39005536,0.79756286,-331.32325,189.97334)"
cx="262.33273"
cy="945.23846"
fx="262.33273"
fy="945.23846"
r="185.49754" />
<filter
inkscape:collect="always"
id="filter3895">
<feGaussianBlur
inkscape:collect="always"
stdDeviation="2.0013623"
id="feGaussianBlur3897" />
</filter>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3874"
id="radialGradient3881"
cx="150.35715"
cy="236.28571"
fx="150.35715"
fy="236.28571"
r="26.887305"
gradientTransform="matrix(1,0,0,0.98671703,0,3.1385771)"
gradientUnits="userSpaceOnUse" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3913"
id="radialGradient3883-8"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-0.94668007,-0.41802431,-0.33291364,0.75114325,727.90951,-151.09719)"
cx="262.33273"
cy="945.23846"
fx="262.33273"
fy="945.23846"
r="185.49754" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.7071068"
inkscape:cx="-63.341475"
inkscape:cy="288.28557"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1366"
inkscape:window-height="684"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
showguides="true"
inkscape:guide-bbox="true"
inkscape:snap-to-guides="true"
inkscape:snap-grids="false"
inkscape:object-paths="true"
inkscape:object-nodes="false"
inkscape:snap-nodes="false">
<sodipodi:guide
orientation="1,0"
position="0,534.28571"
id="guide3004" />
<sodipodi:guide
orientation="0,1"
position="394.28571,511.42857"
id="guide3006" />
<sodipodi:guide
orientation="1,0"
position="511.42857,320"
id="guide3008" />
<sodipodi:guide
orientation="0,1"
position="401.42857,0"
id="guide3010" />
<sodipodi:guide
orientation="1,0"
position="17.142857,258.57143"
id="guide3012" />
<sodipodi:guide
orientation="0,1"
position="327.14286,494.28571"
id="guide3014" />
<sodipodi:guide
orientation="0,1"
position="324.28571,17.142857"
id="guide3016" />
<sodipodi:guide
orientation="1,0"
position="494.28571,237.14286"
id="guide3018" />
<sodipodi:guide
orientation="1,0"
position="255.71429,302.85714"
id="guide3022" />
<sodipodi:guide
orientation="1,0"
position="660,-315"
id="guide3904" />
<sodipodi:guide
orientation="0,1"
position="554.28571,475.71429"
id="guide3931" />
<sodipodi:guide
orientation="0,1"
position="581.42857,244.28571"
id="guide3933" />
</sodipodi:namedview>
<metadata
id="metadata7">
<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>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-540.36218)"
style="display:inline">
<path
d="m 253.34375,605.76562 c -107.90463,0 -195.953125,85.87684 -195.953125,191.85938 0,105.98253 88.043415,191.92187 195.953125,191.92188 33.56396,0 59.43822,-6.90343 88.98047,-17.63672 l 93.80664,37.80274 a 12.359798,12.359798 0 0 0 16.61719,-14.4297 L 427.35352,892.57031 c 16.32005,-28.65755 21.9121,-61.28733 21.9121,-94.94531 0,-105.97994 -88.0172,-191.85938 -195.92187,-191.85938 z"
id="path3885"
style="opacity:0.6;fill:#000000;fill-opacity:1;stroke:none;filter:url(#filter3895)"
inkscape:original="M 253.34375 618.125 C 151.96941 618.125 69.75 698.4746 69.75 797.625 C 69.75 896.77539 151.96941 977.1875 253.34375 977.1875 C 287.00054 977.1875 311.5728 970.27778 342.65625 958.71875 L 440.75 998.25 L 414.1875 890.8125 C 431.0772 863.65332 436.90625 831.73711 436.90625 797.625 C 436.90625 698.4746 354.71813 618.125 253.34375 618.125 z "
inkscape:radius="12.358562"
sodipodi:type="inkscape:offset"
transform="matrix(0.90520781,0,0,0.81882383,90.877888,53.951708)" />
<path
sodipodi:type="inkscape:offset"
inkscape:radius="12.358562"
inkscape:original="M 253.34375 618.125 C 151.96941 618.125 69.75 698.4746 69.75 797.625 C 69.75 896.77539 151.96941 977.1875 253.34375 977.1875 C 287.00054 977.1875 311.5728 970.27778 342.65625 958.71875 L 440.75 998.25 L 414.1875 890.8125 C 431.0772 863.65332 436.90625 831.73711 436.90625 797.625 C 436.90625 698.4746 354.71813 618.125 253.34375 618.125 z "
style="fill:#0066ff;fill-opacity:1;stroke:none"
id="path3868"
d="m 253.34375,605.76562 c -107.90463,0 -195.953125,85.87684 -195.953125,191.85938 0,105.98253 88.043415,191.92187 195.953125,191.92188 33.56396,0 59.43822,-6.90343 88.98047,-17.63672 l 93.80664,37.80274 a 12.359798,12.359798 0 0 0 16.61719,-14.4297 L 427.35352,892.57031 c 16.32005,-28.65755 21.9121,-61.28733 21.9121,-94.94531 0,-105.97994 -88.0172,-191.85938 -195.92187,-191.85938 z"
transform="matrix(0.90520781,0,0,0.81882383,90.877888,50.676388)" />
<path
style="opacity:0.19211821;fill:url(#radialGradient3883);fill-opacity:1;stroke:none"
d="m 465.37929,645.95092 c -99.66655,0 -180.44749,71.72047 -180.44749,160.18241 0,18.66021 3.60043,36.57544 10.21189,53.2232 8.1887,1.03054 16.56083,1.56103 25.06293,1.56103 30.37749,0 53.79867,-5.64549 80.53519,-14.43157 l 84.91981,30.96145 a 11.188184,10.120499 0 0 0 15.04907,-11.82159 l -22.99792,-84.08283 c 14.78214,-23.46997 19.8297,-50.19542 19.8297,-77.76269 0,-20.04753 -4.25121,-39.20586 -11.994,-56.83149 -6.62195,-0.65358 -13.3526,-0.99792 -20.16918,-0.99792 z"
id="path3878"
inkscape:connector-curvature="0" />
<path
sodipodi:nodetypes="ccsssscc"
inkscape:connector-curvature="0"
id="path3845"
d="m 493.47738,871.35334 -24.04389,-87.99322 c 15.28869,-22.23857 20.55595,-48.35175 20.55595,-76.28358 0,-81.18671 -74.40499,-146.97946 -166.16989,-146.97946 -91.76484,0 -166.16981,65.79275 -166.16981,146.97946 0,81.18672 74.40497,147.02794 166.16981,147.02794 30.46639,0 52.72061,-5.65874 80.85763,-15.12352 z"
style="opacity:0;fill:none;stroke:#000000;stroke-width:17.21866226;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:68.87464583, 68.87464583;stroke-dashoffset:0;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3855"
d="m 320.17833,548.76674 c -4.13827,-9.4e-4 -8.25632,0.0605 -9.81586,0.15351 -12.92075,0.76954 -22.81917,2.12193 -34.11502,4.70824 -4.34132,0.99402 -7.66199,1.87532 -11.68283,3.07059 -2.5677,0.76329 -6.47023,1.98325 -6.6759,2.09824 -0.0631,0.0352 2.55734,6.48362 6.13843,15.14825 0.0358,0.0868 0.13111,0.0961 0.2546,0.0511 0.85568,-0.31146 4.96317,-1.59671 6.87391,-2.14942 16.44697,-4.75734 33.78787,-7.08565 50.97451,-6.85765 2.42028,0.0321 5.48294,0.11062 6.78907,0.17914 1.30611,0.0686 2.39944,0.10688 2.43274,0.0767 0.0526,-0.0476 1.17785,-16.13384 1.13152,-16.1718 -0.01,-0.008 -1.08429,-0.0761 -2.40448,-0.15351 -1.60409,-0.0941 -5.76244,-0.15187 -9.90069,-0.15351 z m 85.17439,19.57499 c -0.0778,0.0759 -8.57119,14.09759 -8.57119,14.15032 0,0.0128 0.38971,0.21991 0.8769,0.46056 6.4421,3.18205 13.4978,7.39333 19.91497,11.84882 2.48679,1.7266 4.87769,3.48988 7.09982,5.24414 3.2378,2.55607 6.46633,5.33835 9.55245,8.21414 4.9072,4.57277 9.45432,9.38196 13.10605,13.89411 0.50173,0.62001 0.608,0.70303 0.79207,0.58852 0.87167,-0.54223 14.14115,-9.56974 14.14386,-9.62116 0.004,-0.0695 -2.56391,-3.14501 -3.64912,-4.37562 -4.33822,-4.91937 -8.14593,-8.7511 -13.26695,-13.38263 -6.3529,-5.74565 -12.40806,-10.50897 -19.23603,-15.09142 -1.9729,-1.32405 -4.01031,-2.63303 -6.13807,-3.94623 -5.07411,-3.13161 -14.3826,-8.21954 -14.62476,-7.98355 z m -211.19629,27.76323 -1.86699,1.79122 c -16.58679,15.77185 -29.26131,34.2146 -37.25495,54.24707 -0.39127,0.98058 -0.7358,1.85972 -0.76377,1.97029 -0.0367,0.14529 2.27287,0.91046 8.2883,2.73794 4.57858,1.39099 8.39743,2.52833 8.48633,2.53327 0.0889,0.005 0.70476,-1.35221 1.3861,-3.01945 6.99352,-17.11289 17.82285,-32.84295 32.02173,-46.51941 l 2.34786,-2.27736 -6.30817,-5.73177 z m 298.4074,80.04008 -7.60942,1.33057 c -4.18792,0.7436 -8.12463,1.43993 -8.76921,1.53529 -0.80487,0.1191 -1.18807,0.24336 -1.18807,0.38383 0,0.1125 0.17929,1.13426 0.39603,2.27735 2.07747,10.95686 2.52391,24.06935 1.30123,38.40797 -0.55966,6.56324 -1.80497,14.62573 -2.9985,19.47266 -0.17944,0.72877 -0.2917,1.37377 -0.25457,1.40735 0.0371,0.0335 3.93999,0.80348 8.68429,1.71443 4.74436,0.9109 8.69153,1.65348 8.74095,1.66321 0.0493,0.01 0.35153,-1.20446 0.67889,-2.71235 2.58164,-11.8915 3.70992,-23.06661 3.734,-37.02617 0.0169,-9.79205 -0.60847,-16.92701 -2.20646,-25.69062 z m -328.42069,44.52355 -0.59404,0.0767 c -0.32426,0.0425 -4.30309,0.47062 -8.82578,0.94676 -4.52269,0.47615 -8.27005,0.90467 -8.3166,0.94677 -0.10914,0.0987 0.19395,2.02928 0.87693,5.78293 3.74286,20.5706 11.55924,39.09836 24.24259,57.42003 0.34643,0.50043 0.71596,0.88794 0.82035,0.87001 0.27802,-0.0476 14.92958,-8.4814 14.93592,-8.59767 0.003,-0.0541 -0.61241,-0.97536 -1.35781,-2.04705 -3.27958,-4.71514 -7.63657,-12.12967 -10.04215,-17.09296 -5.78721,-11.94039 -9.59955,-24.12581 -11.56969,-37.02614 z m 316.85099,82.03592 c -0.36048,0.007 -16.97617,3.73907 -17.08581,3.83822 -0.0753,0.0682 16.94207,62.59192 17.19896,63.25382 0.30965,0.798 2.86925,7.31813 10.42538,6.19627 8.42278,-1.62864 7.56799,-10.19392 6.91501,-10.06007 -0.0867,0.0174 -3.86345,-14.3273 -8.59948,-31.67794 -6.7623,-24.77405 -8.66138,-31.55359 -8.85406,-31.5503 z m -244.80211,18.57706 c -0.31471,0.009 -0.93458,0.92267 -4.83721,6.70413 -2.54758,3.77402 -4.63919,6.89516 -4.63919,6.93441 0,0.095 2.63539,1.52222 5.43123,2.96823 17.18076,8.88581 36.19242,15.16537 55.6703,18.37201 2.75979,0.45453 4.36027,0.69944 8.48631,1.25377 0.53344,0.0717 1.05269,0.14407 1.15981,0.15373 0.242,0.0216 0.18744,0.43638 1.44268,-7.95778 0.57722,-3.86012 1.0799,-7.25173 1.13152,-7.54849 0.0906,-0.52038 0.0663,-0.53984 -0.45265,-0.6141 -0.29582,-0.0422 -2.06498,-0.28682 -3.93198,-0.53739 -17.1444,-2.30049 -34.78834,-7.57763 -50.21072,-14.99469 -2.7318,-1.3138 -7.81528,-3.92179 -9.10866,-4.68264 -0.0408,-0.024 -0.0965,-0.0525 -0.14144,-0.0512 z m 164.66293,6.32028 c -1.52266,0.0905 -3.53738,0.70727 -8.03371,2.175 -8.68549,2.83522 -18.54878,5.74416 -22.99794,6.7809 -0.64367,0.15 -1.18718,0.35231 -1.18807,0.43501 -0.002,0.14944 4.40029,15.44773 4.46946,15.532 0.0424,0.0521 4.87869,-1.18335 7.89228,-2.02144 3.91758,-1.08954 10.50973,-3.08747 15.2188,-4.60587 l 4.6675,-1.50969 17.14236,6.2435 c 13.94595,5.08505 17.14167,6.22073 17.22724,6.03865 0.69647,-1.48186 6.62352,-14.82249 6.59105,-14.84098 -0.29825,-0.17022 -37.77097,-13.74416 -38.3582,-13.89441 -0.96682,-0.2474 -1.71716,-0.3869 -2.63077,-0.33267 z"
style="opacity:0.5;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:4.30466557;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
sodipodi:nodetypes="ccssccssscccccccssssscccsssscccscsssccccccssssssssssccccscssccsscccsscsscsssssccsccsscsscsccscccccssc" />
</g>
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="Layer 2"
style="display:inline">
<path
sodipodi:type="inkscape:offset"
inkscape:radius="12.358562"
inkscape:original="M 253.34375 618.125 C 151.96941 618.125 69.75 698.4746 69.75 797.625 C 69.75 896.77539 151.96941 977.1875 253.34375 977.1875 C 287.00054 977.1875 311.5728 970.27778 342.65625 958.71875 L 440.75 998.25 L 414.1875 890.8125 C 431.0772 863.65332 436.90625 831.73711 436.90625 797.625 C 436.90625 698.4746 354.71813 618.125 253.34375 618.125 z "
style="display:inline;fill:#ff8000;fill-opacity:1;stroke:none"
id="path3868-5"
d="m 253.34375,605.76562 c -107.90463,0 -195.953125,85.87684 -195.953125,191.85938 0,105.98253 88.043415,191.92187 195.953125,191.92188 33.56396,0 59.43822,-6.90343 88.98047,-17.63672 l 93.80664,37.80274 a 12.359798,12.359798 0 0 0 16.61719,-14.4297 L 427.35352,892.57031 c 16.32005,-28.65755 21.9121,-61.28733 21.9121,-94.94531 0,-105.97994 -88.0172,-191.85938 -195.92187,-191.85938 z"
transform="matrix(-0.77259808,0,0,0.77116679,367.55932,-282.28679)" />
<path
style="display:inline;opacity:0.19211821;fill:url(#radialGradient3883-8);fill-opacity:1;stroke:none"
d="m 47.92104,278.34166 c 85.06576,0 154.01258,67.54622 154.01258,150.8595 0,17.57416 -3.07299,34.44668 -8.71589,50.12552 -6.98908,0.97055 -14.13472,1.47017 -21.3913,1.47017 -25.9273,0 -45.91736,-5.31691 -68.73708,-13.59163 L 30.609993,496.36466 A 9.5491555,9.5314668 0 0 1 17.765567,485.2311 l 19.6288,-79.18904 C 24.777759,383.93808 20.469653,358.7681 20.469653,332.8053 c 0,-18.88073 3.628423,-36.92402 10.236917,-53.5238 5.65186,-0.61553 11.396492,-0.93984 17.21447,-0.93984 z"
id="path3878-3"
inkscape:connector-curvature="0" />
<path
sodipodi:nodetypes="ccsssscc"
inkscape:connector-curvature="0"
id="path3845-7"
d="M 23.939214,490.62525 44.460762,407.7534 C 31.411813,386.80914 26.916189,362.2158 26.916189,335.90966 c 0,-76.4615 63.504925,-138.42498 141.826591,-138.42498 78.32162,0 141.82653,61.96348 141.82653,138.42498 0,76.4615 -63.50491,138.47065 -141.82653,138.47065 -26.00317,0 -44.99723,-5.3294 -69.012271,-14.24332 z"
style="display:inline;opacity:0;fill:none;stroke:#000000;stroke-width:15.43764114;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:61.75056976, 61.75056976;stroke-dashoffset:0;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3855-0"
d="m 171.85058,186.81378 c 3.53202,-0.001 7.0468,0.057 8.37786,0.14458 11.02792,0.72475 19.47625,1.99843 29.1173,4.43421 3.70534,0.93617 6.53954,1.76617 9.97134,2.89187 2.19153,0.71887 5.52236,1.86783 5.6979,1.97612 0.0538,0.0332 -2.18271,6.10627 -5.23917,14.2666 -0.0306,0.0818 -0.1119,0.0905 -0.2173,0.0482 -0.73033,-0.29333 -4.23609,-1.50378 -5.86691,-2.02432 -14.03755,-4.48046 -28.83807,-6.67326 -43.50693,-6.45851 -2.06572,0.0302 -4.6797,0.10417 -5.7945,0.1687 -1.11476,0.0646 -2.04792,0.10066 -2.07634,0.0722 -0.045,-0.0448 -1.0053,-15.19482 -0.96576,-15.23057 0.008,-0.008 0.92544,-0.0716 2.05223,-0.14458 1.3691,-0.0887 4.91826,-0.14303 8.45028,-0.14457 z m -72.696647,18.43569 c 0.06643,0.0714 7.315537,13.27709 7.315537,13.32675 0,0.012 -0.33262,0.20711 -0.74844,0.43375 -5.49836,2.99686 -11.520423,6.96303 -16.997493,11.15921 -2.122486,1.6261 -4.163129,3.28675 -6.059727,4.93891 -2.763466,2.4073 -5.519031,5.02765 -8.153046,7.73607 -4.188314,4.30662 -8.069301,8.83591 -11.18606,13.08544 -0.428228,0.58393 -0.518926,0.66211 -0.676036,0.55427 -0.743971,-0.51067 -12.069524,-9.01277 -12.07184,-9.0612 -0.0032,-0.0654 2.188315,-2.96196 3.114542,-4.12094 3.702693,-4.63305 6.952577,-8.24177 11.323395,-12.60374 5.422218,-5.41124 10.590321,-9.89733 16.418014,-14.21307 1.68388,-1.247 3.422814,-2.47978 5.238862,-3.71655 4.330773,-2.94935 12.27561,-7.74115 12.482292,-7.5189 z m 180.256787,26.14737 1.59348,1.68696 c 14.15689,14.8539 24.97464,32.22325 31.79723,51.08979 0.33396,0.9235 0.62801,1.75148 0.65189,1.85562 0.0314,0.13682 -1.93992,0.85746 -7.0741,2.57859 -3.90783,1.31002 -7.16723,2.38116 -7.24311,2.38582 -0.0759,0.005 -0.60152,-1.2735 -1.18304,-2.84371 -5.969,-16.11689 -15.21187,-30.93143 -27.33066,-43.81189 l -2.00392,-2.14481 5.38405,-5.39818 z m -254.691788,75.38159 6.494676,1.25313 c 3.574397,0.70032 6.934399,1.35613 7.484553,1.44593 0.686953,0.11217 1.014012,0.2292 1.014012,0.36149 0,0.10595 -0.153023,1.06824 -0.338008,2.14481 -1.77313,10.31915 -2.154169,22.66846 -1.110602,36.17254 0.477667,6.18126 1.540548,13.7745 2.559231,18.33932 0.153154,0.68636 0.248963,1.29382 0.21727,1.32544 -0.03169,0.0316 -3.362797,0.75672 -7.412074,1.61465 -4.049328,0.85789 -7.418252,1.55725 -7.460429,1.56642 -0.04205,0.009 -0.300037,-1.13437 -0.579433,-2.5545 -2.203444,-11.19939 -3.166429,-21.72408 -3.186982,-34.87117 -0.01437,-9.22213 0.519332,-15.94183 1.88322,-24.19538 z m 280.308238,41.9322 0.50701,0.0722 c 0.27676,0.0401 3.6727,0.44323 7.53284,0.89166 3.86013,0.44843 7.05852,0.85201 7.09824,0.89167 0.0932,0.0929 -0.16553,1.91116 -0.74845,5.44635 -3.19455,19.37336 -9.86586,36.82275 -20.69114,54.07808 -0.29568,0.4713 -0.61108,0.83626 -0.70017,0.81936 -0.2373,-0.0448 -12.74246,-7.98776 -12.74787,-8.09727 -0.003,-0.051 0.5227,-0.91859 1.15889,-1.9279 2.79915,-4.44071 6.51785,-11.42371 8.57102,-16.09812 4.93941,-11.24543 8.19324,-22.72164 9.87477,-34.87114 z M 34.593711,425.97191 c 0.307673,0.006 14.489227,3.52144 14.582798,3.61483 0.06429,0.0642 -14.460111,58.94894 -14.679361,59.57234 -0.264295,0.75154 -2.448917,6.89219 -8.89811,5.83562 -7.188866,-1.53385 -6.459303,-9.60062 -5.901978,-9.47455 0.07403,0.0164 3.297467,-13.49343 7.339677,-29.83423 5.771655,-23.33215 7.392523,-29.71712 7.556974,-29.71401 z m 208.939479,17.49584 c 0.26861,0.009 0.79767,0.86897 4.12858,6.31393 2.17437,3.55436 3.95956,6.49385 3.95956,6.53082 0,0.0895 -2.24931,1.43362 -4.63558,2.79547 -14.66383,8.36864 -30.89035,14.28272 -47.5148,17.30273 -2.35548,0.42806 -3.72149,0.65873 -7.24309,1.18079 -0.4553,0.0675 -0.89848,0.13569 -0.9899,0.14479 -0.20655,0.0203 -0.15998,0.41098 -1.23133,-7.49463 -0.49266,-3.63545 -0.9217,-6.82967 -0.96575,-7.10914 -0.0773,-0.4901 -0.0566,-0.50843 0.38632,-0.57837 0.25249,-0.0397 1.76248,-0.27013 3.35596,-0.5061 14.63282,-2.1666 29.69198,-7.13661 42.85504,-14.12199 2.3316,-1.23733 6.67037,-3.69353 7.77427,-4.4101 0.0348,-0.0226 0.0823,-0.0494 0.12072,-0.0482 z m -140.5404,5.95243 c 1.2996,0.0852 3.01916,0.6661 6.8568,2.04841 7.41309,2.6702 15.83145,5.40983 19.62883,6.38623 0.54937,0.14127 1.01325,0.3318 1.01402,0.4097 0.001,0.14074 -3.75566,14.54864 -3.8147,14.628 -0.0362,0.0491 -4.16398,-1.11446 -6.73609,-1.90379 -3.34367,-1.02612 -8.97009,-2.90777 -12.9893,-4.33779 l -3.98373,-1.42183 -14.631058,5.88012 c -11.902923,4.78909 -14.630484,5.85868 -14.703523,5.68719 -0.594444,-1.39562 -5.653196,-13.95979 -5.625485,-13.97721 0.254566,-0.16031 32.237656,-12.94422 32.738866,-13.08573 0.82518,-0.233 1.4656,-0.36438 2.24537,-0.3133 z"
style="display:inline;opacity:0.5;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:3.85941029;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
sodipodi:nodetypes="ccssccssscccccccssssscccsssscccscsssccccccssssssssssccccscssccsscccsscsscsssssccsccsscsscsccscccccssc" />
<ellipse
cy="334.93869"
cx="-242.26097"
style="opacity:0.928;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path3047-7"
rx="16.401163"
ry="16.363543"
transform="scale(-1,1)" />
<ellipse
cy="334.93869"
cx="-170.28149"
style="opacity:0.928;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path3047-1-89"
rx="16.401163"
ry="16.363543"
transform="scale(-1,1)" />
<ellipse
cy="334.93869"
cx="-98.116379"
style="opacity:0.928;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path3047-1-8-8"
rx="16.401163"
ry="16.363543"
transform="scale(-1,1)" />
</g>
<g
inkscape:groupmode="layer"
id="layer4"
inkscape:label="Dots">
<ellipse
style="opacity:0.928;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path3047"
cx="237.68259"
cy="165.68341"
rx="19.21628"
ry="17.374786" />
<ellipse
style="opacity:0.928;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path3047-1"
cx="322.01675"
cy="165.68341"
rx="19.21628"
ry="17.374786" />
<ellipse
style="opacity:0.928;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path3047-1-8"
cx="406.56836"
cy="165.68341"
rx="19.21628"
ry="17.374786" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 26 KiB

View file

@ -0,0 +1,229 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<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:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="512"
height="512"
id="svg2"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="conversations_plus_baloons.svg"
inkscape:export-filename="/home/diesys/diesys/grafica/conversation/conversation_bubble.png"
inkscape:export-xdpi="100"
inkscape:export-ydpi="100">
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.7071068"
inkscape:cx="-63.341475"
inkscape:cy="288.28557"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1366"
inkscape:window-height="684"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
showguides="true"
inkscape:guide-bbox="true"
inkscape:snap-to-guides="true"
inkscape:snap-grids="false"
inkscape:object-paths="true"
inkscape:object-nodes="false"
inkscape:snap-nodes="false">
<sodipodi:guide
orientation="1,0"
position="0,534.28571"
id="guide3004" />
<sodipodi:guide
orientation="0,1"
position="394.28571,511.42857"
id="guide3006" />
<sodipodi:guide
orientation="1,0"
position="511.42857,320"
id="guide3008" />
<sodipodi:guide
orientation="0,1"
position="401.42857,0"
id="guide3010" />
<sodipodi:guide
orientation="1,0"
position="17.142857,258.57143"
id="guide3012" />
<sodipodi:guide
orientation="0,1"
position="327.14286,494.28571"
id="guide3014" />
<sodipodi:guide
orientation="0,1"
position="324.28571,17.142857"
id="guide3016" />
<sodipodi:guide
orientation="1,0"
position="494.28571,237.14286"
id="guide3018" />
<sodipodi:guide
orientation="1,0"
position="255.71429,302.85714"
id="guide3022" />
<sodipodi:guide
orientation="1,0"
position="660,-315"
id="guide3904" />
<sodipodi:guide
orientation="0,1"
position="554.28571,475.71429"
id="guide3931" />
<sodipodi:guide
orientation="0,1"
position="581.42857,244.28571"
id="guide3933" />
</sodipodi:namedview>
<metadata
id="metadata7">
<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>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-540.36218)"
style="display:inline">
<path
d="m 253.34375,605.76562 c -107.90463,0 -195.953125,85.87684 -195.953125,191.85938 0,105.98253 88.043415,191.92187 195.953125,191.92188 33.56396,0 59.43822,-6.90343 88.98047,-17.63672 l 93.80664,37.80274 a 12.359798,12.359798 0 0 0 16.61719,-14.4297 L 427.35352,892.57031 c 16.32005,-28.65755 21.9121,-61.28733 21.9121,-94.94531 0,-105.97994 -88.0172,-191.85938 -195.92187,-191.85938 z"
id="path3885"
style="opacity:0.6;fill:#000000;fill-opacity:1;stroke:#000000"
inkscape:original="M 253.34375 618.125 C 151.96941 618.125 69.75 698.4746 69.75 797.625 C 69.75 896.77539 151.96941 977.1875 253.34375 977.1875 C 287.00054 977.1875 311.5728 970.27778 342.65625 958.71875 L 440.75 998.25 L 414.1875 890.8125 C 431.0772 863.65332 436.90625 831.73711 436.90625 797.625 C 436.90625 698.4746 354.71813 618.125 253.34375 618.125 z "
inkscape:radius="12.358562"
sodipodi:type="inkscape:offset"
transform="matrix(0.90520781,0,0,0.81882383,90.877888,53.951708)" />
<path
sodipodi:type="inkscape:offset"
inkscape:radius="12.358562"
inkscape:original="M 253.34375 618.125 C 151.96941 618.125 69.75 698.4746 69.75 797.625 C 69.75 896.77539 151.96941 977.1875 253.34375 977.1875 C 287.00054 977.1875 311.5728 970.27778 342.65625 958.71875 L 440.75 998.25 L 414.1875 890.8125 C 431.0772 863.65332 436.90625 831.73711 436.90625 797.625 C 436.90625 698.4746 354.71813 618.125 253.34375 618.125 z "
style="fill:#ffffff;fill-opacity:1;stroke:#000000"
id="path3868"
d="m 253.34375,605.76562 c -107.90463,0 -195.953125,85.87684 -195.953125,191.85938 0,105.98253 88.043415,191.92187 195.953125,191.92188 33.56396,0 59.43822,-6.90343 88.98047,-17.63672 l 93.80664,37.80274 a 12.359798,12.359798 0 0 0 16.61719,-14.4297 L 427.35352,892.57031 c 16.32005,-28.65755 21.9121,-61.28733 21.9121,-94.94531 0,-105.97994 -88.0172,-191.85938 -195.92187,-191.85938 z"
transform="matrix(0.90520781,0,0,0.81882383,90.877888,50.676388)" />
<path
style="opacity:0.19211821;fill:url(#radialGradient3883);fill-opacity:1;stroke:none"
d="m 465.37929,645.95092 c -99.66655,0 -180.44749,71.72047 -180.44749,160.18241 0,18.66021 3.60043,36.57544 10.21189,53.2232 8.1887,1.03054 16.56083,1.56103 25.06293,1.56103 30.37749,0 53.79867,-5.64549 80.53519,-14.43157 l 84.91981,30.96145 a 11.188184,10.120499 0 0 0 15.04907,-11.82159 l -22.99792,-84.08283 c 14.78214,-23.46997 19.8297,-50.19542 19.8297,-77.76269 0,-20.04753 -4.25121,-39.20586 -11.994,-56.83149 -6.62195,-0.65358 -13.3526,-0.99792 -20.16918,-0.99792 z"
id="path3878"
inkscape:connector-curvature="0" />
<path
sodipodi:nodetypes="ccsssscc"
inkscape:connector-curvature="0"
id="path3845"
d="m 493.47738,871.35334 -24.04389,-87.99322 c 15.28869,-22.23857 20.55595,-48.35175 20.55595,-76.28358 0,-81.18671 -74.40499,-146.97946 -166.16989,-146.97946 -91.76484,0 -166.16981,65.79275 -166.16981,146.97946 0,81.18672 74.40497,147.02794 166.16981,147.02794 30.46639,0 52.72061,-5.65874 80.85763,-15.12352 z"
style="opacity:0;fill:none;stroke:#000000;stroke-width:17.21866226;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:68.87464583, 68.87464583;stroke-dashoffset:0;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3855"
d="m 320.17833,548.76674 c -4.13827,-9.4e-4 -8.25632,0.0605 -9.81586,0.15351 -12.92075,0.76954 -22.81917,2.12193 -34.11502,4.70824 -4.34132,0.99402 -7.66199,1.87532 -11.68283,3.07059 -2.5677,0.76329 -6.47023,1.98325 -6.6759,2.09824 -0.0631,0.0352 2.55734,6.48362 6.13843,15.14825 0.0358,0.0868 0.13111,0.0961 0.2546,0.0511 0.85568,-0.31146 4.96317,-1.59671 6.87391,-2.14942 16.44697,-4.75734 33.78787,-7.08565 50.97451,-6.85765 2.42028,0.0321 5.48294,0.11062 6.78907,0.17914 1.30611,0.0686 2.39944,0.10688 2.43274,0.0767 0.0526,-0.0476 1.17785,-16.13384 1.13152,-16.1718 -0.01,-0.008 -1.08429,-0.0761 -2.40448,-0.15351 -1.60409,-0.0941 -5.76244,-0.15187 -9.90069,-0.15351 z m 85.17439,19.57499 c -0.0778,0.0759 -8.57119,14.09759 -8.57119,14.15032 0,0.0128 0.38971,0.21991 0.8769,0.46056 6.4421,3.18205 13.4978,7.39333 19.91497,11.84882 2.48679,1.7266 4.87769,3.48988 7.09982,5.24414 3.2378,2.55607 6.46633,5.33835 9.55245,8.21414 4.9072,4.57277 9.45432,9.38196 13.10605,13.89411 0.50173,0.62001 0.608,0.70303 0.79207,0.58852 0.87167,-0.54223 14.14115,-9.56974 14.14386,-9.62116 0.004,-0.0695 -2.56391,-3.14501 -3.64912,-4.37562 -4.33822,-4.91937 -8.14593,-8.7511 -13.26695,-13.38263 -6.3529,-5.74565 -12.40806,-10.50897 -19.23603,-15.09142 -1.9729,-1.32405 -4.01031,-2.63303 -6.13807,-3.94623 -5.07411,-3.13161 -14.3826,-8.21954 -14.62476,-7.98355 z m -211.19629,27.76323 -1.86699,1.79122 c -16.58679,15.77185 -29.26131,34.2146 -37.25495,54.24707 -0.39127,0.98058 -0.7358,1.85972 -0.76377,1.97029 -0.0367,0.14529 2.27287,0.91046 8.2883,2.73794 4.57858,1.39099 8.39743,2.52833 8.48633,2.53327 0.0889,0.005 0.70476,-1.35221 1.3861,-3.01945 6.99352,-17.11289 17.82285,-32.84295 32.02173,-46.51941 l 2.34786,-2.27736 -6.30817,-5.73177 z m 298.4074,80.04008 -7.60942,1.33057 c -4.18792,0.7436 -8.12463,1.43993 -8.76921,1.53529 -0.80487,0.1191 -1.18807,0.24336 -1.18807,0.38383 0,0.1125 0.17929,1.13426 0.39603,2.27735 2.07747,10.95686 2.52391,24.06935 1.30123,38.40797 -0.55966,6.56324 -1.80497,14.62573 -2.9985,19.47266 -0.17944,0.72877 -0.2917,1.37377 -0.25457,1.40735 0.0371,0.0335 3.93999,0.80348 8.68429,1.71443 4.74436,0.9109 8.69153,1.65348 8.74095,1.66321 0.0493,0.01 0.35153,-1.20446 0.67889,-2.71235 2.58164,-11.8915 3.70992,-23.06661 3.734,-37.02617 0.0169,-9.79205 -0.60847,-16.92701 -2.20646,-25.69062 z m -328.42069,44.52355 -0.59404,0.0767 c -0.32426,0.0425 -4.30309,0.47062 -8.82578,0.94676 -4.52269,0.47615 -8.27005,0.90467 -8.3166,0.94677 -0.10914,0.0987 0.19395,2.02928 0.87693,5.78293 3.74286,20.5706 11.55924,39.09836 24.24259,57.42003 0.34643,0.50043 0.71596,0.88794 0.82035,0.87001 0.27802,-0.0476 14.92958,-8.4814 14.93592,-8.59767 0.003,-0.0541 -0.61241,-0.97536 -1.35781,-2.04705 -3.27958,-4.71514 -7.63657,-12.12967 -10.04215,-17.09296 -5.78721,-11.94039 -9.59955,-24.12581 -11.56969,-37.02614 z m 316.85099,82.03592 c -0.36048,0.007 -16.97617,3.73907 -17.08581,3.83822 -0.0753,0.0682 16.94207,62.59192 17.19896,63.25382 0.30965,0.798 2.86925,7.31813 10.42538,6.19627 8.42278,-1.62864 7.56799,-10.19392 6.91501,-10.06007 -0.0867,0.0174 -3.86345,-14.3273 -8.59948,-31.67794 -6.7623,-24.77405 -8.66138,-31.55359 -8.85406,-31.5503 z m -244.80211,18.57706 c -0.31471,0.009 -0.93458,0.92267 -4.83721,6.70413 -2.54758,3.77402 -4.63919,6.89516 -4.63919,6.93441 0,0.095 2.63539,1.52222 5.43123,2.96823 17.18076,8.88581 36.19242,15.16537 55.6703,18.37201 2.75979,0.45453 4.36027,0.69944 8.48631,1.25377 0.53344,0.0717 1.05269,0.14407 1.15981,0.15373 0.242,0.0216 0.18744,0.43638 1.44268,-7.95778 0.57722,-3.86012 1.0799,-7.25173 1.13152,-7.54849 0.0906,-0.52038 0.0663,-0.53984 -0.45265,-0.6141 -0.29582,-0.0422 -2.06498,-0.28682 -3.93198,-0.53739 -17.1444,-2.30049 -34.78834,-7.57763 -50.21072,-14.99469 -2.7318,-1.3138 -7.81528,-3.92179 -9.10866,-4.68264 -0.0408,-0.024 -0.0965,-0.0525 -0.14144,-0.0512 z m 164.66293,6.32028 c -1.52266,0.0905 -3.53738,0.70727 -8.03371,2.175 -8.68549,2.83522 -18.54878,5.74416 -22.99794,6.7809 -0.64367,0.15 -1.18718,0.35231 -1.18807,0.43501 -0.002,0.14944 4.40029,15.44773 4.46946,15.532 0.0424,0.0521 4.87869,-1.18335 7.89228,-2.02144 3.91758,-1.08954 10.50973,-3.08747 15.2188,-4.60587 l 4.6675,-1.50969 17.14236,6.2435 c 13.94595,5.08505 17.14167,6.22073 17.22724,6.03865 0.69647,-1.48186 6.62352,-14.82249 6.59105,-14.84098 -0.29825,-0.17022 -37.77097,-13.74416 -38.3582,-13.89441 -0.96682,-0.2474 -1.71716,-0.3869 -2.63077,-0.33267 z"
style="opacity:0.5;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:4.30466557;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
sodipodi:nodetypes="ccssccssscccccccssssscccsssscccscsssccccccssssssssssccccscssccsscccsscsscsssssccsccsscsscsccscccccssc" />
</g>
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="Layer 2"
style="display:inline">
<path
sodipodi:type="inkscape:offset"
inkscape:radius="12.358562"
inkscape:original="M 253.34375 618.125 C 151.96941 618.125 69.75 698.4746 69.75 797.625 C 69.75 896.77539 151.96941 977.1875 253.34375 977.1875 C 287.00054 977.1875 311.5728 970.27778 342.65625 958.71875 L 440.75 998.25 L 414.1875 890.8125 C 431.0772 863.65332 436.90625 831.73711 436.90625 797.625 C 436.90625 698.4746 354.71813 618.125 253.34375 618.125 z "
style="display:inline;fill:#ffffff;fill-opacity:1;stroke:#000000"
id="path3868-5"
d="m 253.34375,605.76562 c -107.90463,0 -195.953125,85.87684 -195.953125,191.85938 0,105.98253 88.043415,191.92187 195.953125,191.92188 33.56396,0 59.43822,-6.90343 88.98047,-17.63672 l 93.80664,37.80274 a 12.359798,12.359798 0 0 0 16.61719,-14.4297 L 427.35352,892.57031 c 16.32005,-28.65755 21.9121,-61.28733 21.9121,-94.94531 0,-105.97994 -88.0172,-191.85938 -195.92187,-191.85938 z"
transform="matrix(-0.77259808,0,0,0.77116679,367.55932,-282.28679)" />
<path
style="display:inline;opacity:0.19211821;fill:url(#radialGradient3883-8);fill-opacity:1;stroke:none"
d="m 47.92104,278.34166 c 85.06576,0 154.01258,67.54622 154.01258,150.8595 0,17.57416 -3.07299,34.44668 -8.71589,50.12552 -6.98908,0.97055 -14.13472,1.47017 -21.3913,1.47017 -25.9273,0 -45.91736,-5.31691 -68.73708,-13.59163 L 30.609993,496.36466 A 9.5491555,9.5314668 0 0 1 17.765567,485.2311 l 19.6288,-79.18904 C 24.777759,383.93808 20.469653,358.7681 20.469653,332.8053 c 0,-18.88073 3.628423,-36.92402 10.236917,-53.5238 5.65186,-0.61553 11.396492,-0.93984 17.21447,-0.93984 z"
id="path3878-3"
inkscape:connector-curvature="0" />
<path
sodipodi:nodetypes="ccsssscc"
inkscape:connector-curvature="0"
id="path3845-7"
d="M 23.939214,490.62525 44.460762,407.7534 C 31.411813,386.80914 26.916189,362.2158 26.916189,335.90966 c 0,-76.4615 63.504925,-138.42498 141.826591,-138.42498 78.32162,0 141.82653,61.96348 141.82653,138.42498 0,76.4615 -63.50491,138.47065 -141.82653,138.47065 -26.00317,0 -44.99723,-5.3294 -69.012271,-14.24332 z"
style="display:inline;opacity:0;fill:none;stroke:#000000;stroke-width:15.43764114;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:61.75056976, 61.75056976;stroke-dashoffset:0;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3855-0"
d="m 171.85058,186.81378 c 3.53202,-0.001 7.0468,0.057 8.37786,0.14458 11.02792,0.72475 19.47625,1.99843 29.1173,4.43421 3.70534,0.93617 6.53954,1.76617 9.97134,2.89187 2.19153,0.71887 5.52236,1.86783 5.6979,1.97612 0.0538,0.0332 -2.18271,6.10627 -5.23917,14.2666 -0.0306,0.0818 -0.1119,0.0905 -0.2173,0.0482 -0.73033,-0.29333 -4.23609,-1.50378 -5.86691,-2.02432 -14.03755,-4.48046 -28.83807,-6.67326 -43.50693,-6.45851 -2.06572,0.0302 -4.6797,0.10417 -5.7945,0.1687 -1.11476,0.0646 -2.04792,0.10066 -2.07634,0.0722 -0.045,-0.0448 -1.0053,-15.19482 -0.96576,-15.23057 0.008,-0.008 0.92544,-0.0716 2.05223,-0.14458 1.3691,-0.0887 4.91826,-0.14303 8.45028,-0.14457 z m -72.696647,18.43569 c 0.06643,0.0714 7.315537,13.27709 7.315537,13.32675 0,0.012 -0.33262,0.20711 -0.74844,0.43375 -5.49836,2.99686 -11.520423,6.96303 -16.997493,11.15921 -2.122486,1.6261 -4.163129,3.28675 -6.059727,4.93891 -2.763466,2.4073 -5.519031,5.02765 -8.153046,7.73607 -4.188314,4.30662 -8.069301,8.83591 -11.18606,13.08544 -0.428228,0.58393 -0.518926,0.66211 -0.676036,0.55427 -0.743971,-0.51067 -12.069524,-9.01277 -12.07184,-9.0612 -0.0032,-0.0654 2.188315,-2.96196 3.114542,-4.12094 3.702693,-4.63305 6.952577,-8.24177 11.323395,-12.60374 5.422218,-5.41124 10.590321,-9.89733 16.418014,-14.21307 1.68388,-1.247 3.422814,-2.47978 5.238862,-3.71655 4.330773,-2.94935 12.27561,-7.74115 12.482292,-7.5189 z m 180.256787,26.14737 1.59348,1.68696 c 14.15689,14.8539 24.97464,32.22325 31.79723,51.08979 0.33396,0.9235 0.62801,1.75148 0.65189,1.85562 0.0314,0.13682 -1.93992,0.85746 -7.0741,2.57859 -3.90783,1.31002 -7.16723,2.38116 -7.24311,2.38582 -0.0759,0.005 -0.60152,-1.2735 -1.18304,-2.84371 -5.969,-16.11689 -15.21187,-30.93143 -27.33066,-43.81189 l -2.00392,-2.14481 5.38405,-5.39818 z m -254.691788,75.38159 6.494676,1.25313 c 3.574397,0.70032 6.934399,1.35613 7.484553,1.44593 0.686953,0.11217 1.014012,0.2292 1.014012,0.36149 0,0.10595 -0.153023,1.06824 -0.338008,2.14481 -1.77313,10.31915 -2.154169,22.66846 -1.110602,36.17254 0.477667,6.18126 1.540548,13.7745 2.559231,18.33932 0.153154,0.68636 0.248963,1.29382 0.21727,1.32544 -0.03169,0.0316 -3.362797,0.75672 -7.412074,1.61465 -4.049328,0.85789 -7.418252,1.55725 -7.460429,1.56642 -0.04205,0.009 -0.300037,-1.13437 -0.579433,-2.5545 -2.203444,-11.19939 -3.166429,-21.72408 -3.186982,-34.87117 -0.01437,-9.22213 0.519332,-15.94183 1.88322,-24.19538 z m 280.308238,41.9322 0.50701,0.0722 c 0.27676,0.0401 3.6727,0.44323 7.53284,0.89166 3.86013,0.44843 7.05852,0.85201 7.09824,0.89167 0.0932,0.0929 -0.16553,1.91116 -0.74845,5.44635 -3.19455,19.37336 -9.86586,36.82275 -20.69114,54.07808 -0.29568,0.4713 -0.61108,0.83626 -0.70017,0.81936 -0.2373,-0.0448 -12.74246,-7.98776 -12.74787,-8.09727 -0.003,-0.051 0.5227,-0.91859 1.15889,-1.9279 2.79915,-4.44071 6.51785,-11.42371 8.57102,-16.09812 4.93941,-11.24543 8.19324,-22.72164 9.87477,-34.87114 z M 34.593711,425.97191 c 0.307673,0.006 14.489227,3.52144 14.582798,3.61483 0.06429,0.0642 -14.460111,58.94894 -14.679361,59.57234 -0.264295,0.75154 -2.448917,6.89219 -8.89811,5.83562 -7.188866,-1.53385 -6.459303,-9.60062 -5.901978,-9.47455 0.07403,0.0164 3.297467,-13.49343 7.339677,-29.83423 5.771655,-23.33215 7.392523,-29.71712 7.556974,-29.71401 z m 208.939479,17.49584 c 0.26861,0.009 0.79767,0.86897 4.12858,6.31393 2.17437,3.55436 3.95956,6.49385 3.95956,6.53082 0,0.0895 -2.24931,1.43362 -4.63558,2.79547 -14.66383,8.36864 -30.89035,14.28272 -47.5148,17.30273 -2.35548,0.42806 -3.72149,0.65873 -7.24309,1.18079 -0.4553,0.0675 -0.89848,0.13569 -0.9899,0.14479 -0.20655,0.0203 -0.15998,0.41098 -1.23133,-7.49463 -0.49266,-3.63545 -0.9217,-6.82967 -0.96575,-7.10914 -0.0773,-0.4901 -0.0566,-0.50843 0.38632,-0.57837 0.25249,-0.0397 1.76248,-0.27013 3.35596,-0.5061 14.63282,-2.1666 29.69198,-7.13661 42.85504,-14.12199 2.3316,-1.23733 6.67037,-3.69353 7.77427,-4.4101 0.0348,-0.0226 0.0823,-0.0494 0.12072,-0.0482 z m -140.5404,5.95243 c 1.2996,0.0852 3.01916,0.6661 6.8568,2.04841 7.41309,2.6702 15.83145,5.40983 19.62883,6.38623 0.54937,0.14127 1.01325,0.3318 1.01402,0.4097 0.001,0.14074 -3.75566,14.54864 -3.8147,14.628 -0.0362,0.0491 -4.16398,-1.11446 -6.73609,-1.90379 -3.34367,-1.02612 -8.97009,-2.90777 -12.9893,-4.33779 l -3.98373,-1.42183 -14.631058,5.88012 c -11.902923,4.78909 -14.630484,5.85868 -14.703523,5.68719 -0.594444,-1.39562 -5.653196,-13.95979 -5.625485,-13.97721 0.254566,-0.16031 32.237656,-12.94422 32.738866,-13.08573 0.82518,-0.233 1.4656,-0.36438 2.24537,-0.3133 z"
style="display:inline;opacity:0.5;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:3.85941029;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
sodipodi:nodetypes="ccssccssscccccccssssscccsssscccscsssccccccssssssssssccccscssccsscccsscsscsssssccsccsscsscsccscccccssc" />
<ellipse
cy="334.93869"
cx="-242.26097"
style="opacity:0.928;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000"
id="path3047-7"
rx="16.401163"
ry="16.363543"
transform="scale(-1,1)" />
<ellipse
cy="334.93869"
cx="-170.28149"
style="opacity:0.928;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000"
id="path3047-1-89"
rx="16.401163"
ry="16.363543"
transform="scale(-1,1)" />
<ellipse
cy="334.93869"
cx="-98.116379"
style="opacity:0.928;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000"
id="path3047-1-8-8"
rx="16.401163"
ry="16.363543"
transform="scale(-1,1)" />
</g>
<g
inkscape:groupmode="layer"
id="layer4"
inkscape:label="Dots">
<ellipse
style="opacity:0.928;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000"
id="path3047"
cx="237.68259"
cy="165.68341"
rx="19.21628"
ry="17.374786" />
<ellipse
style="opacity:0.928;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000"
id="path3047-1"
cx="322.01675"
cy="165.68341"
rx="19.21628"
ry="17.374786" />
<ellipse
style="opacity:0.928;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000"
id="path3047-1-8"
cx="406.56836"
cy="165.68341"
rx="19.21628"
ry="17.374786" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 20 KiB

View file

@ -0,0 +1,476 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<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:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="512"
height="512"
id="svg2"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="conversations_plus_beta_baloons.svg"
inkscape:export-filename="/home/diesys/diesys/grafica/conversation/conversation_bubble.png"
inkscape:export-xdpi="100"
inkscape:export-ydpi="100">
<defs
id="defs4">
<linearGradient
inkscape:collect="always"
id="linearGradient3874">
<stop
style="stop-color:#00a000;stop-opacity:1;"
offset="0"
id="stop3876" />
<stop
style="stop-color:#00a000;stop-opacity:0;"
offset="1"
id="stop3878" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient3913">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop3915" />
<stop
style="stop-color:#ffffff;stop-opacity:0;"
offset="1"
id="stop3917" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient3818">
<stop
style="stop-color:#669900;stop-opacity:1"
offset="0"
id="stop3820" />
<stop
style="stop-color:#99cc00;stop-opacity:1"
offset="1"
id="stop3822" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3818"
id="radialGradient3824"
cx="212.07048"
cy="1045.9178"
fx="212.07048"
fy="1045.9178"
r="238.57143"
gradientTransform="matrix(1.9491621,-0.90817722,0.65829208,1.4128498,-879.63121,-248.98648)"
gradientUnits="userSpaceOnUse" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3913"
id="radialGradient3919"
cx="362.98563"
cy="379.77524"
fx="362.98563"
fy="379.77524"
r="139.95312"
gradientTransform="matrix(1.3800477,1.0445431,-1.3325077,1.7605059,339.09383,-577.83938)"
gradientUnits="userSpaceOnUse" />
<linearGradient
gradientUnits="userSpaceOnUse"
y2="-155.75885"
x2="114.59022"
y1="35.545681"
x1="114.55434"
id="linearGradient3794"
xlink:href="#linearGradient3788"
inkscape:collect="always" />
<linearGradient
id="linearGradient3788">
<stop
id="stop3790"
offset="0"
style="stop-color:#1eed00;stop-opacity:1;" />
<stop
id="stop3792"
offset="1"
style="stop-color:#abff28;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient3821">
<stop
style="stop-color:#ff283d;stop-opacity:1;"
offset="0"
id="stop3823" />
<stop
style="stop-color:#ff28ae;stop-opacity:1;"
offset="1"
id="stop3825" />
</linearGradient>
<linearGradient
id="linearGradient4543">
<stop
style="stop-color:#2e45bf;stop-opacity:1;"
offset="0"
id="stop4545" />
<stop
style="stop-color:#28a7ff;stop-opacity:1;"
offset="1"
id="stop4547" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient4098">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop4100" />
<stop
style="stop-color:#e6e6e6;stop-opacity:1"
offset="1"
id="stop4102" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4098"
id="linearGradient3833"
x1="273.81851"
y1="764.74677"
x2="304.14023"
y2="936.47272"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4098"
id="linearGradient3853"
gradientUnits="userSpaceOnUse"
x1="273.81851"
y1="764.74677"
x2="304.14023"
y2="936.47272" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3818"
id="radialGradient3863"
cx="262.33273"
cy="945.23846"
fx="262.33273"
fy="945.23846"
r="185.49754"
gradientTransform="matrix(1.2253203,-0.54206726,0.43090148,0.97403458,-466.4135,170.11831)"
gradientUnits="userSpaceOnUse" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3818"
id="radialGradient3866"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.2253203,-0.54206726,0.43090148,0.97403458,-466.4135,170.11831)"
cx="262.33273"
cy="945.23846"
fx="262.33273"
fy="945.23846"
r="185.49754" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3913"
id="radialGradient3873"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.3800477,1.0445431,-1.3325077,1.7605059,339.09383,-577.83938)"
cx="321.75275"
cy="386.38751"
fx="321.75275"
fy="386.38751"
r="139.95312" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3818"
id="radialGradient3880"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.2253203,-0.54206726,0.43090148,0.97403458,-466.4135,-370.24387)"
cx="262.33273"
cy="945.23846"
fx="262.33273"
fy="945.23846"
r="185.49754" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3913"
id="radialGradient3883"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.1091694,-0.44385763,0.39005536,0.79756286,-331.32325,189.97334)"
cx="262.33273"
cy="945.23846"
fx="262.33273"
fy="945.23846"
r="185.49754" />
<filter
inkscape:collect="always"
id="filter3895">
<feGaussianBlur
inkscape:collect="always"
stdDeviation="2.0013623"
id="feGaussianBlur3897" />
</filter>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3874"
id="radialGradient3881"
cx="150.35715"
cy="236.28571"
fx="150.35715"
fy="236.28571"
r="26.887305"
gradientTransform="matrix(1,0,0,0.98671703,0,3.1385771)"
gradientUnits="userSpaceOnUse" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3913"
id="radialGradient3883-8"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-0.94668007,-0.41802431,-0.33291364,0.75114325,727.90951,-151.09719)"
cx="262.33273"
cy="945.23846"
fx="262.33273"
fy="945.23846"
r="185.49754" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="2.0000001"
inkscape:cx="238.14573"
inkscape:cy="130.29797"
inkscape:document-units="px"
inkscape:current-layer="layer4"
showgrid="false"
inkscape:window-width="1366"
inkscape:window-height="728"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
showguides="true"
inkscape:guide-bbox="true"
inkscape:snap-to-guides="true"
inkscape:snap-grids="false"
inkscape:object-paths="true"
inkscape:object-nodes="false"
inkscape:snap-nodes="false">
<sodipodi:guide
orientation="1,0"
position="0,534.28571"
id="guide3004" />
<sodipodi:guide
orientation="0,1"
position="394.28571,511.42857"
id="guide3006" />
<sodipodi:guide
orientation="1,0"
position="511.42857,320"
id="guide3008" />
<sodipodi:guide
orientation="0,1"
position="401.42857,0"
id="guide3010" />
<sodipodi:guide
orientation="1,0"
position="17.142857,258.57143"
id="guide3012" />
<sodipodi:guide
orientation="0,1"
position="327.14286,494.28571"
id="guide3014" />
<sodipodi:guide
orientation="0,1"
position="324.28571,17.142857"
id="guide3016" />
<sodipodi:guide
orientation="1,0"
position="494.28571,237.14286"
id="guide3018" />
<sodipodi:guide
orientation="1,0"
position="255.71429,302.85714"
id="guide3022" />
<sodipodi:guide
orientation="1,0"
position="660,-315"
id="guide3904" />
<sodipodi:guide
orientation="0,1"
position="554.28571,475.71429"
id="guide3931" />
<sodipodi:guide
orientation="0,1"
position="581.42857,244.28571"
id="guide3933" />
</sodipodi:namedview>
<metadata
id="metadata7">
<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 />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-540.36218)"
style="display:inline">
<path
d="m 253.34375,605.76562 c -107.90463,0 -195.953125,85.87684 -195.953125,191.85938 0,105.98253 88.043415,191.92187 195.953125,191.92188 33.56396,0 59.43822,-6.90343 88.98047,-17.63672 l 93.80664,37.80274 a 12.359798,12.359798 0 0 0 16.61719,-14.4297 L 427.35352,892.57031 c 16.32005,-28.65755 21.9121,-61.28733 21.9121,-94.94531 0,-105.97994 -88.0172,-191.85938 -195.92187,-191.85938 z"
id="path3885"
style="opacity:0.6;fill:#000000;fill-opacity:1;stroke:none;filter:url(#filter3895)"
inkscape:original="M 253.34375 618.125 C 151.96941 618.125 69.75 698.4746 69.75 797.625 C 69.75 896.77539 151.96941 977.1875 253.34375 977.1875 C 287.00054 977.1875 311.5728 970.27778 342.65625 958.71875 L 440.75 998.25 L 414.1875 890.8125 C 431.0772 863.65332 436.90625 831.73711 436.90625 797.625 C 436.90625 698.4746 354.71813 618.125 253.34375 618.125 z "
inkscape:radius="12.358562"
sodipodi:type="inkscape:offset"
transform="matrix(0.90520781,0,0,0.81882383,90.877888,53.951708)" />
<path
sodipodi:type="inkscape:offset"
inkscape:radius="12.358562"
inkscape:original="M 253.34375 618.125 C 151.96941 618.125 69.75 698.4746 69.75 797.625 C 69.75 896.77539 151.96941 977.1875 253.34375 977.1875 C 287.00054 977.1875 311.5728 970.27778 342.65625 958.71875 L 440.75 998.25 L 414.1875 890.8125 C 431.0772 863.65332 436.90625 831.73711 436.90625 797.625 C 436.90625 698.4746 354.71813 618.125 253.34375 618.125 z "
style="fill:#0066ff;fill-opacity:1;stroke:none"
id="path3868"
d="m 253.34375,605.76562 c -107.90463,0 -195.953125,85.87684 -195.953125,191.85938 0,105.98253 88.043415,191.92187 195.953125,191.92188 33.56396,0 59.43822,-6.90343 88.98047,-17.63672 l 93.80664,37.80274 a 12.359798,12.359798 0 0 0 16.61719,-14.4297 L 427.35352,892.57031 c 16.32005,-28.65755 21.9121,-61.28733 21.9121,-94.94531 0,-105.97994 -88.0172,-191.85938 -195.92187,-191.85938 z"
transform="matrix(0.90520781,0,0,0.81882383,90.877888,50.676388)" />
<path
style="opacity:0.19211821;fill:url(#radialGradient3883);fill-opacity:1;stroke:none"
d="m 465.37929,645.95092 c -99.66655,0 -180.44749,71.72047 -180.44749,160.18241 0,18.66021 3.60043,36.57544 10.21189,53.2232 8.1887,1.03054 16.56083,1.56103 25.06293,1.56103 30.37749,0 53.79867,-5.64549 80.53519,-14.43157 l 84.91981,30.96145 a 11.188184,10.120499 0 0 0 15.04907,-11.82159 l -22.99792,-84.08283 c 14.78214,-23.46997 19.8297,-50.19542 19.8297,-77.76269 0,-20.04753 -4.25121,-39.20586 -11.994,-56.83149 -6.62195,-0.65358 -13.3526,-0.99792 -20.16918,-0.99792 z"
id="path3878"
inkscape:connector-curvature="0" />
<path
sodipodi:nodetypes="ccsssscc"
inkscape:connector-curvature="0"
id="path3845"
d="m 493.47738,871.35334 -24.04389,-87.99322 c 15.28869,-22.23857 20.55595,-48.35175 20.55595,-76.28358 0,-81.18671 -74.40499,-146.97946 -166.16989,-146.97946 -91.76484,0 -166.16981,65.79275 -166.16981,146.97946 0,81.18672 74.40497,147.02794 166.16981,147.02794 30.46639,0 52.72061,-5.65874 80.85763,-15.12352 z"
style="opacity:0;fill:none;stroke:#000000;stroke-width:17.21866226;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:68.87464583, 68.87464583;stroke-dashoffset:0;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3855"
d="m 320.17833,548.76674 c -4.13827,-9.4e-4 -8.25632,0.0605 -9.81586,0.15351 -12.92075,0.76954 -22.81917,2.12193 -34.11502,4.70824 -4.34132,0.99402 -7.66199,1.87532 -11.68283,3.07059 -2.5677,0.76329 -6.47023,1.98325 -6.6759,2.09824 -0.0631,0.0352 2.55734,6.48362 6.13843,15.14825 0.0358,0.0868 0.13111,0.0961 0.2546,0.0511 0.85568,-0.31146 4.96317,-1.59671 6.87391,-2.14942 16.44697,-4.75734 33.78787,-7.08565 50.97451,-6.85765 2.42028,0.0321 5.48294,0.11062 6.78907,0.17914 1.30611,0.0686 2.39944,0.10688 2.43274,0.0767 0.0526,-0.0476 1.17785,-16.13384 1.13152,-16.1718 -0.01,-0.008 -1.08429,-0.0761 -2.40448,-0.15351 -1.60409,-0.0941 -5.76244,-0.15187 -9.90069,-0.15351 z m 85.17439,19.57499 c -0.0778,0.0759 -8.57119,14.09759 -8.57119,14.15032 0,0.0128 0.38971,0.21991 0.8769,0.46056 6.4421,3.18205 13.4978,7.39333 19.91497,11.84882 2.48679,1.7266 4.87769,3.48988 7.09982,5.24414 3.2378,2.55607 6.46633,5.33835 9.55245,8.21414 4.9072,4.57277 9.45432,9.38196 13.10605,13.89411 0.50173,0.62001 0.608,0.70303 0.79207,0.58852 0.87167,-0.54223 14.14115,-9.56974 14.14386,-9.62116 0.004,-0.0695 -2.56391,-3.14501 -3.64912,-4.37562 -4.33822,-4.91937 -8.14593,-8.7511 -13.26695,-13.38263 -6.3529,-5.74565 -12.40806,-10.50897 -19.23603,-15.09142 -1.9729,-1.32405 -4.01031,-2.63303 -6.13807,-3.94623 -5.07411,-3.13161 -14.3826,-8.21954 -14.62476,-7.98355 z m -211.19629,27.76323 -1.86699,1.79122 c -16.58679,15.77185 -29.26131,34.2146 -37.25495,54.24707 -0.39127,0.98058 -0.7358,1.85972 -0.76377,1.97029 -0.0367,0.14529 2.27287,0.91046 8.2883,2.73794 4.57858,1.39099 8.39743,2.52833 8.48633,2.53327 0.0889,0.005 0.70476,-1.35221 1.3861,-3.01945 6.99352,-17.11289 17.82285,-32.84295 32.02173,-46.51941 l 2.34786,-2.27736 -6.30817,-5.73177 z m 298.4074,80.04008 -7.60942,1.33057 c -4.18792,0.7436 -8.12463,1.43993 -8.76921,1.53529 -0.80487,0.1191 -1.18807,0.24336 -1.18807,0.38383 0,0.1125 0.17929,1.13426 0.39603,2.27735 2.07747,10.95686 2.52391,24.06935 1.30123,38.40797 -0.55966,6.56324 -1.80497,14.62573 -2.9985,19.47266 -0.17944,0.72877 -0.2917,1.37377 -0.25457,1.40735 0.0371,0.0335 3.93999,0.80348 8.68429,1.71443 4.74436,0.9109 8.69153,1.65348 8.74095,1.66321 0.0493,0.01 0.35153,-1.20446 0.67889,-2.71235 2.58164,-11.8915 3.70992,-23.06661 3.734,-37.02617 0.0169,-9.79205 -0.60847,-16.92701 -2.20646,-25.69062 z m -328.42069,44.52355 -0.59404,0.0767 c -0.32426,0.0425 -4.30309,0.47062 -8.82578,0.94676 -4.52269,0.47615 -8.27005,0.90467 -8.3166,0.94677 -0.10914,0.0987 0.19395,2.02928 0.87693,5.78293 3.74286,20.5706 11.55924,39.09836 24.24259,57.42003 0.34643,0.50043 0.71596,0.88794 0.82035,0.87001 0.27802,-0.0476 14.92958,-8.4814 14.93592,-8.59767 0.003,-0.0541 -0.61241,-0.97536 -1.35781,-2.04705 -3.27958,-4.71514 -7.63657,-12.12967 -10.04215,-17.09296 -5.78721,-11.94039 -9.59955,-24.12581 -11.56969,-37.02614 z m 316.85099,82.03592 c -0.36048,0.007 -16.97617,3.73907 -17.08581,3.83822 -0.0753,0.0682 16.94207,62.59192 17.19896,63.25382 0.30965,0.798 2.86925,7.31813 10.42538,6.19627 8.42278,-1.62864 7.56799,-10.19392 6.91501,-10.06007 -0.0867,0.0174 -3.86345,-14.3273 -8.59948,-31.67794 -6.7623,-24.77405 -8.66138,-31.55359 -8.85406,-31.5503 z m -244.80211,18.57706 c -0.31471,0.009 -0.93458,0.92267 -4.83721,6.70413 -2.54758,3.77402 -4.63919,6.89516 -4.63919,6.93441 0,0.095 2.63539,1.52222 5.43123,2.96823 17.18076,8.88581 36.19242,15.16537 55.6703,18.37201 2.75979,0.45453 4.36027,0.69944 8.48631,1.25377 0.53344,0.0717 1.05269,0.14407 1.15981,0.15373 0.242,0.0216 0.18744,0.43638 1.44268,-7.95778 0.57722,-3.86012 1.0799,-7.25173 1.13152,-7.54849 0.0906,-0.52038 0.0663,-0.53984 -0.45265,-0.6141 -0.29582,-0.0422 -2.06498,-0.28682 -3.93198,-0.53739 -17.1444,-2.30049 -34.78834,-7.57763 -50.21072,-14.99469 -2.7318,-1.3138 -7.81528,-3.92179 -9.10866,-4.68264 -0.0408,-0.024 -0.0965,-0.0525 -0.14144,-0.0512 z m 164.66293,6.32028 c -1.52266,0.0905 -3.53738,0.70727 -8.03371,2.175 -8.68549,2.83522 -18.54878,5.74416 -22.99794,6.7809 -0.64367,0.15 -1.18718,0.35231 -1.18807,0.43501 -0.002,0.14944 4.40029,15.44773 4.46946,15.532 0.0424,0.0521 4.87869,-1.18335 7.89228,-2.02144 3.91758,-1.08954 10.50973,-3.08747 15.2188,-4.60587 l 4.6675,-1.50969 17.14236,6.2435 c 13.94595,5.08505 17.14167,6.22073 17.22724,6.03865 0.69647,-1.48186 6.62352,-14.82249 6.59105,-14.84098 -0.29825,-0.17022 -37.77097,-13.74416 -38.3582,-13.89441 -0.96682,-0.2474 -1.71716,-0.3869 -2.63077,-0.33267 z"
style="opacity:0.5;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:4.30466557;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
sodipodi:nodetypes="ccssccssscccccccssssscccsssscccscsssccccccssssssssssccccscssccsscccsscsscsssssccsccsscsscsccscccccssc" />
</g>
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="Layer 2"
style="display:inline">
<path
sodipodi:type="inkscape:offset"
inkscape:radius="12.358562"
inkscape:original="M 253.34375 618.125 C 151.96941 618.125 69.75 698.4746 69.75 797.625 C 69.75 896.77539 151.96941 977.1875 253.34375 977.1875 C 287.00054 977.1875 311.5728 970.27778 342.65625 958.71875 L 440.75 998.25 L 414.1875 890.8125 C 431.0772 863.65332 436.90625 831.73711 436.90625 797.625 C 436.90625 698.4746 354.71813 618.125 253.34375 618.125 z "
style="display:inline;fill:#ff8000;fill-opacity:1;stroke:none"
id="path3868-5"
d="m 253.34375,605.76562 c -107.90463,0 -195.953125,85.87684 -195.953125,191.85938 0,105.98253 88.043415,191.92187 195.953125,191.92188 33.56396,0 59.43822,-6.90343 88.98047,-17.63672 l 93.80664,37.80274 a 12.359798,12.359798 0 0 0 16.61719,-14.4297 L 427.35352,892.57031 c 16.32005,-28.65755 21.9121,-61.28733 21.9121,-94.94531 0,-105.97994 -88.0172,-191.85938 -195.92187,-191.85938 z"
transform="matrix(-0.77259808,0,0,0.77116679,367.55932,-282.28679)" />
<path
style="display:inline;opacity:0.19211821;fill:url(#radialGradient3883-8);fill-opacity:1;stroke:none"
d="m 47.92104,278.34166 c 85.06576,0 154.01258,67.54622 154.01258,150.8595 0,17.57416 -3.07299,34.44668 -8.71589,50.12552 -6.98908,0.97055 -14.13472,1.47017 -21.3913,1.47017 -25.9273,0 -45.91736,-5.31691 -68.73708,-13.59163 L 30.609993,496.36466 A 9.5491555,9.5314668 0 0 1 17.765567,485.2311 l 19.6288,-79.18904 C 24.777759,383.93808 20.469653,358.7681 20.469653,332.8053 c 0,-18.88073 3.628423,-36.92402 10.236917,-53.5238 5.65186,-0.61553 11.396492,-0.93984 17.21447,-0.93984 z"
id="path3878-3"
inkscape:connector-curvature="0" />
<path
sodipodi:nodetypes="ccsssscc"
inkscape:connector-curvature="0"
id="path3845-7"
d="M 23.939214,490.62525 44.460762,407.7534 C 31.411813,386.80914 26.916189,362.2158 26.916189,335.90966 c 0,-76.4615 63.504925,-138.42498 141.826591,-138.42498 78.32162,0 141.82653,61.96348 141.82653,138.42498 0,76.4615 -63.50491,138.47065 -141.82653,138.47065 -26.00317,0 -44.99723,-5.3294 -69.012271,-14.24332 z"
style="display:inline;opacity:0;fill:none;stroke:#000000;stroke-width:15.43764114;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:61.75056976, 61.75056976;stroke-dashoffset:0;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3855-0"
d="m 171.85058,186.81378 c 3.53202,-0.001 7.0468,0.057 8.37786,0.14458 11.02792,0.72475 19.47625,1.99843 29.1173,4.43421 3.70534,0.93617 6.53954,1.76617 9.97134,2.89187 2.19153,0.71887 5.52236,1.86783 5.6979,1.97612 0.0538,0.0332 -2.18271,6.10627 -5.23917,14.2666 -0.0306,0.0818 -0.1119,0.0905 -0.2173,0.0482 -0.73033,-0.29333 -4.23609,-1.50378 -5.86691,-2.02432 -14.03755,-4.48046 -28.83807,-6.67326 -43.50693,-6.45851 -2.06572,0.0302 -4.6797,0.10417 -5.7945,0.1687 -1.11476,0.0646 -2.04792,0.10066 -2.07634,0.0722 -0.045,-0.0448 -1.0053,-15.19482 -0.96576,-15.23057 0.008,-0.008 0.92544,-0.0716 2.05223,-0.14458 1.3691,-0.0887 4.91826,-0.14303 8.45028,-0.14457 z m -72.696647,18.43569 c 0.06643,0.0714 7.315537,13.27709 7.315537,13.32675 0,0.012 -0.33262,0.20711 -0.74844,0.43375 -5.49836,2.99686 -11.520423,6.96303 -16.997493,11.15921 -2.122486,1.6261 -4.163129,3.28675 -6.059727,4.93891 -2.763466,2.4073 -5.519031,5.02765 -8.153046,7.73607 -4.188314,4.30662 -8.069301,8.83591 -11.18606,13.08544 -0.428228,0.58393 -0.518926,0.66211 -0.676036,0.55427 -0.743971,-0.51067 -12.069524,-9.01277 -12.07184,-9.0612 -0.0032,-0.0654 2.188315,-2.96196 3.114542,-4.12094 3.702693,-4.63305 6.952577,-8.24177 11.323395,-12.60374 5.422218,-5.41124 10.590321,-9.89733 16.418014,-14.21307 1.68388,-1.247 3.422814,-2.47978 5.238862,-3.71655 4.330773,-2.94935 12.27561,-7.74115 12.482292,-7.5189 z m 180.256787,26.14737 1.59348,1.68696 c 14.15689,14.8539 24.97464,32.22325 31.79723,51.08979 0.33396,0.9235 0.62801,1.75148 0.65189,1.85562 0.0314,0.13682 -1.93992,0.85746 -7.0741,2.57859 -3.90783,1.31002 -7.16723,2.38116 -7.24311,2.38582 -0.0759,0.005 -0.60152,-1.2735 -1.18304,-2.84371 -5.969,-16.11689 -15.21187,-30.93143 -27.33066,-43.81189 l -2.00392,-2.14481 5.38405,-5.39818 z m -254.691788,75.38159 6.494676,1.25313 c 3.574397,0.70032 6.934399,1.35613 7.484553,1.44593 0.686953,0.11217 1.014012,0.2292 1.014012,0.36149 0,0.10595 -0.153023,1.06824 -0.338008,2.14481 -1.77313,10.31915 -2.154169,22.66846 -1.110602,36.17254 0.477667,6.18126 1.540548,13.7745 2.559231,18.33932 0.153154,0.68636 0.248963,1.29382 0.21727,1.32544 -0.03169,0.0316 -3.362797,0.75672 -7.412074,1.61465 -4.049328,0.85789 -7.418252,1.55725 -7.460429,1.56642 -0.04205,0.009 -0.300037,-1.13437 -0.579433,-2.5545 -2.203444,-11.19939 -3.166429,-21.72408 -3.186982,-34.87117 -0.01437,-9.22213 0.519332,-15.94183 1.88322,-24.19538 z m 280.308238,41.9322 0.50701,0.0722 c 0.27676,0.0401 3.6727,0.44323 7.53284,0.89166 3.86013,0.44843 7.05852,0.85201 7.09824,0.89167 0.0932,0.0929 -0.16553,1.91116 -0.74845,5.44635 -3.19455,19.37336 -9.86586,36.82275 -20.69114,54.07808 -0.29568,0.4713 -0.61108,0.83626 -0.70017,0.81936 -0.2373,-0.0448 -12.74246,-7.98776 -12.74787,-8.09727 -0.003,-0.051 0.5227,-0.91859 1.15889,-1.9279 2.79915,-4.44071 6.51785,-11.42371 8.57102,-16.09812 4.93941,-11.24543 8.19324,-22.72164 9.87477,-34.87114 z M 34.593711,425.97191 c 0.307673,0.006 14.489227,3.52144 14.582798,3.61483 0.06429,0.0642 -14.460111,58.94894 -14.679361,59.57234 -0.264295,0.75154 -2.448917,6.89219 -8.89811,5.83562 -7.188866,-1.53385 -6.459303,-9.60062 -5.901978,-9.47455 0.07403,0.0164 3.297467,-13.49343 7.339677,-29.83423 5.771655,-23.33215 7.392523,-29.71712 7.556974,-29.71401 z m 208.939479,17.49584 c 0.26861,0.009 0.79767,0.86897 4.12858,6.31393 2.17437,3.55436 3.95956,6.49385 3.95956,6.53082 0,0.0895 -2.24931,1.43362 -4.63558,2.79547 -14.66383,8.36864 -30.89035,14.28272 -47.5148,17.30273 -2.35548,0.42806 -3.72149,0.65873 -7.24309,1.18079 -0.4553,0.0675 -0.89848,0.13569 -0.9899,0.14479 -0.20655,0.0203 -0.15998,0.41098 -1.23133,-7.49463 -0.49266,-3.63545 -0.9217,-6.82967 -0.96575,-7.10914 -0.0773,-0.4901 -0.0566,-0.50843 0.38632,-0.57837 0.25249,-0.0397 1.76248,-0.27013 3.35596,-0.5061 14.63282,-2.1666 29.69198,-7.13661 42.85504,-14.12199 2.3316,-1.23733 6.67037,-3.69353 7.77427,-4.4101 0.0348,-0.0226 0.0823,-0.0494 0.12072,-0.0482 z m -140.5404,5.95243 c 1.2996,0.0852 3.01916,0.6661 6.8568,2.04841 7.41309,2.6702 15.83145,5.40983 19.62883,6.38623 0.54937,0.14127 1.01325,0.3318 1.01402,0.4097 0.001,0.14074 -3.75566,14.54864 -3.8147,14.628 -0.0362,0.0491 -4.16398,-1.11446 -6.73609,-1.90379 -3.34367,-1.02612 -8.97009,-2.90777 -12.9893,-4.33779 l -3.98373,-1.42183 -14.631058,5.88012 c -11.902923,4.78909 -14.630484,5.85868 -14.703523,5.68719 -0.594444,-1.39562 -5.653196,-13.95979 -5.625485,-13.97721 0.254566,-0.16031 32.237656,-12.94422 32.738866,-13.08573 0.82518,-0.233 1.4656,-0.36438 2.24537,-0.3133 z"
style="display:inline;opacity:0.5;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:3.85941029;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
sodipodi:nodetypes="ccssccssscccccccssssscccsssscccscsssccccccssssssssssccccscssccsscccsscsscsssssccsccsscsscsccscccccssc" />
<ellipse
cy="334.93869"
cx="-242.26097"
style="opacity:0.928;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path3047-7"
rx="16.401163"
ry="16.363543"
transform="scale(-1,1)" />
<ellipse
cy="334.93869"
cx="-170.28149"
style="opacity:0.928;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path3047-1-89"
rx="16.401163"
ry="16.363543"
transform="scale(-1,1)" />
<ellipse
cy="334.93869"
cx="-98.116379"
style="opacity:0.928;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path3047-1-8-8"
rx="16.401163"
ry="16.363543"
transform="scale(-1,1)" />
<path
sodipodi:type="star"
style="fill:#ffff00;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="path3409"
sodipodi:sides="10"
sodipodi:cx="-291.32794"
sodipodi:cy="72.179588"
sodipodi:r1="89.286057"
sodipodi:r2="66.964546"
sodipodi:arg1="1.0575441"
sodipodi:arg2="1.3717033"
inkscape:flatsided="false"
inkscape:rounded="0"
inkscape:randomized="0"
d="m -247.48733,149.96134 -30.59634,-12.14 -23.49543,23.05387 -17.61726,-27.80554 -32.55892,4.8407 2.09103,-32.85031 -29.18603,-15.221449 21.00062,-25.347389 -14.66505,-29.469521 31.88867,-8.162619 5.45748,-32.4612411 30.59635,12.1399946 23.49543,-23.0538705 17.61725,27.805542 32.55893,-4.8407045 -2.09103,32.8503175 29.18602,15.221446 -21.00061,25.347389 14.66505,29.469525 -31.88868,8.16261 z"
transform="matrix(0.87747641,0.4796198,-0.4796198,0.87747641,697.98935,480.8689)" />
</g>
<g
inkscape:groupmode="layer"
id="layer4"
inkscape:label="Dots">
<ellipse
style="opacity:0.928;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path3047"
cx="231.68259"
cy="161.68341"
rx="19.21628"
ry="17.374786" />
<ellipse
style="opacity:0.928;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path3047-1"
cx="316.01675"
cy="161.68341"
rx="19.21628"
ry="17.374786" />
<ellipse
style="opacity:0.928;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path3047-1-8"
cx="400.56836"
cy="161.68341"
rx="19.21628"
ry="17.374786" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="495.09454"
y="174.28543"
id="text3401"
sodipodi:linespacing="125%"
transform="matrix(0.87747641,0.4796198,-0.4796198,0.87747641,0,0)"><tspan
sodipodi:role="line"
id="tspan3403"
x="495.09454"
y="174.28543"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';letter-spacing:0px;writing-mode:lr-tb;fill:#ffffff">BETA</tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 28 KiB

View file

@ -0,0 +1,259 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<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="512"
height="512"
id="svg2"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="conversations_plus_beta_baloons_notification.svg"
inkscape:export-filename="/home/diesys/diesys/grafica/conversation/conversation_bubble.png"
inkscape:export-xdpi="100"
inkscape:export-ydpi="100">
<defs
id="defs35" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="2.8284272"
inkscape:cx="376.51354"
inkscape:cy="140.66148"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1366"
inkscape:window-height="728"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
showguides="true"
inkscape:guide-bbox="true"
inkscape:snap-to-guides="true"
inkscape:snap-grids="false"
inkscape:object-paths="true"
inkscape:object-nodes="false"
inkscape:snap-nodes="false">
<sodipodi:guide
orientation="1,0"
position="0,534.28571"
id="guide3004" />
<sodipodi:guide
orientation="0,1"
position="394.28571,511.42857"
id="guide3006" />
<sodipodi:guide
orientation="1,0"
position="511.42857,320"
id="guide3008" />
<sodipodi:guide
orientation="0,1"
position="401.42857,0"
id="guide3010" />
<sodipodi:guide
orientation="1,0"
position="17.142857,258.57143"
id="guide3012" />
<sodipodi:guide
orientation="0,1"
position="327.14286,494.28571"
id="guide3014" />
<sodipodi:guide
orientation="0,1"
position="324.28571,17.142857"
id="guide3016" />
<sodipodi:guide
orientation="1,0"
position="494.28571,237.14286"
id="guide3018" />
<sodipodi:guide
orientation="1,0"
position="255.71429,302.85714"
id="guide3022" />
<sodipodi:guide
orientation="1,0"
position="660,-315"
id="guide3904" />
<sodipodi:guide
orientation="0,1"
position="554.28571,475.71429"
id="guide3931" />
<sodipodi:guide
orientation="0,1"
position="581.42857,244.28571"
id="guide3933" />
</sodipodi:namedview>
<metadata
id="metadata7">
<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 />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-540.36218)"
style="display:inline">
<path
d="m 253.34375,605.76562 c -107.90463,0 -195.953125,85.87684 -195.953125,191.85938 0,105.98253 88.043415,191.92187 195.953125,191.92188 33.56396,0 59.43822,-6.90343 88.98047,-17.63672 l 93.80664,37.80274 a 12.359798,12.359798 0 0 0 16.61719,-14.4297 L 427.35352,892.57031 c 16.32005,-28.65755 21.9121,-61.28733 21.9121,-94.94531 0,-105.97994 -88.0172,-191.85938 -195.92187,-191.85938 z"
id="path3885"
style="opacity:0.6;fill:#000000;fill-opacity:1;stroke:#000000"
inkscape:original="M 253.34375 618.125 C 151.96941 618.125 69.75 698.4746 69.75 797.625 C 69.75 896.77539 151.96941 977.1875 253.34375 977.1875 C 287.00054 977.1875 311.5728 970.27778 342.65625 958.71875 L 440.75 998.25 L 414.1875 890.8125 C 431.0772 863.65332 436.90625 831.73711 436.90625 797.625 C 436.90625 698.4746 354.71813 618.125 253.34375 618.125 z "
inkscape:radius="12.358562"
sodipodi:type="inkscape:offset"
transform="matrix(0.90520781,0,0,0.81882383,90.877888,53.951708)" />
<path
sodipodi:type="inkscape:offset"
inkscape:radius="12.358562"
inkscape:original="M 253.34375 618.125 C 151.96941 618.125 69.75 698.4746 69.75 797.625 C 69.75 896.77539 151.96941 977.1875 253.34375 977.1875 C 287.00054 977.1875 311.5728 970.27778 342.65625 958.71875 L 440.75 998.25 L 414.1875 890.8125 C 431.0772 863.65332 436.90625 831.73711 436.90625 797.625 C 436.90625 698.4746 354.71813 618.125 253.34375 618.125 z "
style="fill:#ffffff;fill-opacity:1;stroke:#000000"
id="path3868"
d="m 253.34375,605.76562 c -107.90463,0 -195.953125,85.87684 -195.953125,191.85938 0,105.98253 88.043415,191.92187 195.953125,191.92188 33.56396,0 59.43822,-6.90343 88.98047,-17.63672 l 93.80664,37.80274 a 12.359798,12.359798 0 0 0 16.61719,-14.4297 L 427.35352,892.57031 c 16.32005,-28.65755 21.9121,-61.28733 21.9121,-94.94531 0,-105.97994 -88.0172,-191.85938 -195.92187,-191.85938 z"
transform="matrix(0.90520781,0,0,0.81882383,90.877888,50.676388)" />
<path
style="opacity:0.19211821;fill:url(#radialGradient3883);fill-opacity:1;stroke:none"
d="m 465.37929,645.95092 c -99.66655,0 -180.44749,71.72047 -180.44749,160.18241 0,18.66021 3.60043,36.57544 10.21189,53.2232 8.1887,1.03054 16.56083,1.56103 25.06293,1.56103 30.37749,0 53.79867,-5.64549 80.53519,-14.43157 l 84.91981,30.96145 a 11.188184,10.120499 0 0 0 15.04907,-11.82159 l -22.99792,-84.08283 c 14.78214,-23.46997 19.8297,-50.19542 19.8297,-77.76269 0,-20.04753 -4.25121,-39.20586 -11.994,-56.83149 -6.62195,-0.65358 -13.3526,-0.99792 -20.16918,-0.99792 z"
id="path3878"
inkscape:connector-curvature="0" />
<path
sodipodi:nodetypes="ccsssscc"
inkscape:connector-curvature="0"
id="path3845"
d="m 493.47738,871.35334 -24.04389,-87.99322 c 15.28869,-22.23857 20.55595,-48.35175 20.55595,-76.28358 0,-81.18671 -74.40499,-146.97946 -166.16989,-146.97946 -91.76484,0 -166.16981,65.79275 -166.16981,146.97946 0,81.18672 74.40497,147.02794 166.16981,147.02794 30.46639,0 52.72061,-5.65874 80.85763,-15.12352 z"
style="opacity:0;fill:none;stroke:#000000;stroke-width:17.21866226;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:68.87464583, 68.87464583;stroke-dashoffset:0;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3855"
d="m 320.17833,548.76674 c -4.13827,-9.4e-4 -8.25632,0.0605 -9.81586,0.15351 -12.92075,0.76954 -22.81917,2.12193 -34.11502,4.70824 -4.34132,0.99402 -7.66199,1.87532 -11.68283,3.07059 -2.5677,0.76329 -6.47023,1.98325 -6.6759,2.09824 -0.0631,0.0352 2.55734,6.48362 6.13843,15.14825 0.0358,0.0868 0.13111,0.0961 0.2546,0.0511 0.85568,-0.31146 4.96317,-1.59671 6.87391,-2.14942 16.44697,-4.75734 33.78787,-7.08565 50.97451,-6.85765 2.42028,0.0321 5.48294,0.11062 6.78907,0.17914 1.30611,0.0686 2.39944,0.10688 2.43274,0.0767 0.0526,-0.0476 1.17785,-16.13384 1.13152,-16.1718 -0.01,-0.008 -1.08429,-0.0761 -2.40448,-0.15351 -1.60409,-0.0941 -5.76244,-0.15187 -9.90069,-0.15351 z m 85.17439,19.57499 c -0.0778,0.0759 -8.57119,14.09759 -8.57119,14.15032 0,0.0128 0.38971,0.21991 0.8769,0.46056 6.4421,3.18205 13.4978,7.39333 19.91497,11.84882 2.48679,1.7266 4.87769,3.48988 7.09982,5.24414 3.2378,2.55607 6.46633,5.33835 9.55245,8.21414 4.9072,4.57277 9.45432,9.38196 13.10605,13.89411 0.50173,0.62001 0.608,0.70303 0.79207,0.58852 0.87167,-0.54223 14.14115,-9.56974 14.14386,-9.62116 0.004,-0.0695 -2.56391,-3.14501 -3.64912,-4.37562 -4.33822,-4.91937 -8.14593,-8.7511 -13.26695,-13.38263 -6.3529,-5.74565 -12.40806,-10.50897 -19.23603,-15.09142 -1.9729,-1.32405 -4.01031,-2.63303 -6.13807,-3.94623 -5.07411,-3.13161 -14.3826,-8.21954 -14.62476,-7.98355 z m -211.19629,27.76323 -1.86699,1.79122 c -16.58679,15.77185 -29.26131,34.2146 -37.25495,54.24707 -0.39127,0.98058 -0.7358,1.85972 -0.76377,1.97029 -0.0367,0.14529 2.27287,0.91046 8.2883,2.73794 4.57858,1.39099 8.39743,2.52833 8.48633,2.53327 0.0889,0.005 0.70476,-1.35221 1.3861,-3.01945 6.99352,-17.11289 17.82285,-32.84295 32.02173,-46.51941 l 2.34786,-2.27736 -6.30817,-5.73177 z m 298.4074,80.04008 -7.60942,1.33057 c -4.18792,0.7436 -8.12463,1.43993 -8.76921,1.53529 -0.80487,0.1191 -1.18807,0.24336 -1.18807,0.38383 0,0.1125 0.17929,1.13426 0.39603,2.27735 2.07747,10.95686 2.52391,24.06935 1.30123,38.40797 -0.55966,6.56324 -1.80497,14.62573 -2.9985,19.47266 -0.17944,0.72877 -0.2917,1.37377 -0.25457,1.40735 0.0371,0.0335 3.93999,0.80348 8.68429,1.71443 4.74436,0.9109 8.69153,1.65348 8.74095,1.66321 0.0493,0.01 0.35153,-1.20446 0.67889,-2.71235 2.58164,-11.8915 3.70992,-23.06661 3.734,-37.02617 0.0169,-9.79205 -0.60847,-16.92701 -2.20646,-25.69062 z m -328.42069,44.52355 -0.59404,0.0767 c -0.32426,0.0425 -4.30309,0.47062 -8.82578,0.94676 -4.52269,0.47615 -8.27005,0.90467 -8.3166,0.94677 -0.10914,0.0987 0.19395,2.02928 0.87693,5.78293 3.74286,20.5706 11.55924,39.09836 24.24259,57.42003 0.34643,0.50043 0.71596,0.88794 0.82035,0.87001 0.27802,-0.0476 14.92958,-8.4814 14.93592,-8.59767 0.003,-0.0541 -0.61241,-0.97536 -1.35781,-2.04705 -3.27958,-4.71514 -7.63657,-12.12967 -10.04215,-17.09296 -5.78721,-11.94039 -9.59955,-24.12581 -11.56969,-37.02614 z m 316.85099,82.03592 c -0.36048,0.007 -16.97617,3.73907 -17.08581,3.83822 -0.0753,0.0682 16.94207,62.59192 17.19896,63.25382 0.30965,0.798 2.86925,7.31813 10.42538,6.19627 8.42278,-1.62864 7.56799,-10.19392 6.91501,-10.06007 -0.0867,0.0174 -3.86345,-14.3273 -8.59948,-31.67794 -6.7623,-24.77405 -8.66138,-31.55359 -8.85406,-31.5503 z m -244.80211,18.57706 c -0.31471,0.009 -0.93458,0.92267 -4.83721,6.70413 -2.54758,3.77402 -4.63919,6.89516 -4.63919,6.93441 0,0.095 2.63539,1.52222 5.43123,2.96823 17.18076,8.88581 36.19242,15.16537 55.6703,18.37201 2.75979,0.45453 4.36027,0.69944 8.48631,1.25377 0.53344,0.0717 1.05269,0.14407 1.15981,0.15373 0.242,0.0216 0.18744,0.43638 1.44268,-7.95778 0.57722,-3.86012 1.0799,-7.25173 1.13152,-7.54849 0.0906,-0.52038 0.0663,-0.53984 -0.45265,-0.6141 -0.29582,-0.0422 -2.06498,-0.28682 -3.93198,-0.53739 -17.1444,-2.30049 -34.78834,-7.57763 -50.21072,-14.99469 -2.7318,-1.3138 -7.81528,-3.92179 -9.10866,-4.68264 -0.0408,-0.024 -0.0965,-0.0525 -0.14144,-0.0512 z m 164.66293,6.32028 c -1.52266,0.0905 -3.53738,0.70727 -8.03371,2.175 -8.68549,2.83522 -18.54878,5.74416 -22.99794,6.7809 -0.64367,0.15 -1.18718,0.35231 -1.18807,0.43501 -0.002,0.14944 4.40029,15.44773 4.46946,15.532 0.0424,0.0521 4.87869,-1.18335 7.89228,-2.02144 3.91758,-1.08954 10.50973,-3.08747 15.2188,-4.60587 l 4.6675,-1.50969 17.14236,6.2435 c 13.94595,5.08505 17.14167,6.22073 17.22724,6.03865 0.69647,-1.48186 6.62352,-14.82249 6.59105,-14.84098 -0.29825,-0.17022 -37.77097,-13.74416 -38.3582,-13.89441 -0.96682,-0.2474 -1.71716,-0.3869 -2.63077,-0.33267 z"
style="opacity:0.5;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:4.30466557;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
sodipodi:nodetypes="ccssccssscccccccssssscccsssscccscsssccccccssssssssssccccscssccsscccsscsscsssssccsccsscsscsccscccccssc" />
<path
sodipodi:type="star"
style="display:inline;fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="path3409"
sodipodi:sides="10"
sodipodi:cx="-291.32794"
sodipodi:cy="72.179588"
sodipodi:r1="89.286057"
sodipodi:r2="66.964546"
sodipodi:arg1="1.0575441"
sodipodi:arg2="1.3717033"
inkscape:flatsided="false"
inkscape:rounded="0"
inkscape:randomized="0"
d="m -247.48733,149.96134 -30.59634,-12.14 -23.49543,23.05387 -17.61726,-27.80554 -32.55892,4.8407 2.09103,-32.85031 -29.18603,-15.221449 21.00062,-25.347389 -14.66505,-29.469521 31.88867,-8.162619 5.45748,-32.4612411 30.59635,12.1399946 23.49543,-23.0538705 17.61725,27.805542 32.55893,-4.8407045 -2.09103,32.8503175 29.18602,15.221446 -21.00061,25.347389 14.66505,29.469525 -31.88868,8.16261 z"
transform="matrix(0.87747641,0.4796198,-0.4796198,0.87747641,697.30301,1021.4737)" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="753.77692"
y="648.98254"
id="text3401"
sodipodi:linespacing="125%"
transform="matrix(0.87747641,0.4796198,-0.4796198,0.87747641,0,0)"><tspan
sodipodi:role="line"
id="tspan3403"
x="753.77692"
y="648.98254"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';letter-spacing:0px;writing-mode:lr-tb;fill:#ffffff;opacity:1;stroke:#000000;stroke-opacity:1">BETA</tspan></text>
</g>
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="Layer 2"
style="display:inline">
<path
sodipodi:type="inkscape:offset"
inkscape:radius="12.358562"
inkscape:original="M 253.34375 618.125 C 151.96941 618.125 69.75 698.4746 69.75 797.625 C 69.75 896.77539 151.96941 977.1875 253.34375 977.1875 C 287.00054 977.1875 311.5728 970.27778 342.65625 958.71875 L 440.75 998.25 L 414.1875 890.8125 C 431.0772 863.65332 436.90625 831.73711 436.90625 797.625 C 436.90625 698.4746 354.71813 618.125 253.34375 618.125 z "
style="display:inline;fill:#ffffff;fill-opacity:1;stroke:#000000"
id="path3868-5"
d="m 253.34375,605.76562 c -107.90463,0 -195.953125,85.87684 -195.953125,191.85938 0,105.98253 88.043415,191.92187 195.953125,191.92188 33.56396,0 59.43822,-6.90343 88.98047,-17.63672 l 93.80664,37.80274 a 12.359798,12.359798 0 0 0 16.61719,-14.4297 L 427.35352,892.57031 c 16.32005,-28.65755 21.9121,-61.28733 21.9121,-94.94531 0,-105.97994 -88.0172,-191.85938 -195.92187,-191.85938 z"
transform="matrix(-0.77259808,0,0,0.77116679,367.55932,-282.28679)" />
<path
style="display:inline;opacity:0.19211821;fill:url(#radialGradient3883-8);fill-opacity:1;stroke:none"
d="m 47.92104,278.34166 c 85.06576,0 154.01258,67.54622 154.01258,150.8595 0,17.57416 -3.07299,34.44668 -8.71589,50.12552 -6.98908,0.97055 -14.13472,1.47017 -21.3913,1.47017 -25.9273,0 -45.91736,-5.31691 -68.73708,-13.59163 L 30.609993,496.36466 A 9.5491555,9.5314668 0 0 1 17.765567,485.2311 l 19.6288,-79.18904 C 24.777759,383.93808 20.469653,358.7681 20.469653,332.8053 c 0,-18.88073 3.628423,-36.92402 10.236917,-53.5238 5.65186,-0.61553 11.396492,-0.93984 17.21447,-0.93984 z"
id="path3878-3"
inkscape:connector-curvature="0" />
<path
sodipodi:nodetypes="ccsssscc"
inkscape:connector-curvature="0"
id="path3845-7"
d="M 23.939214,490.62525 44.460762,407.7534 C 31.411813,386.80914 26.916189,362.2158 26.916189,335.90966 c 0,-76.4615 63.504925,-138.42498 141.826591,-138.42498 78.32162,0 141.82653,61.96348 141.82653,138.42498 0,76.4615 -63.50491,138.47065 -141.82653,138.47065 -26.00317,0 -44.99723,-5.3294 -69.012271,-14.24332 z"
style="display:inline;opacity:0;fill:none;stroke:#000000;stroke-width:15.43764114;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:61.75056976, 61.75056976;stroke-dashoffset:0;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3855-0"
d="m 171.85058,186.81378 c 3.53202,-0.001 7.0468,0.057 8.37786,0.14458 11.02792,0.72475 19.47625,1.99843 29.1173,4.43421 3.70534,0.93617 6.53954,1.76617 9.97134,2.89187 2.19153,0.71887 5.52236,1.86783 5.6979,1.97612 0.0538,0.0332 -2.18271,6.10627 -5.23917,14.2666 -0.0306,0.0818 -0.1119,0.0905 -0.2173,0.0482 -0.73033,-0.29333 -4.23609,-1.50378 -5.86691,-2.02432 -14.03755,-4.48046 -28.83807,-6.67326 -43.50693,-6.45851 -2.06572,0.0302 -4.6797,0.10417 -5.7945,0.1687 -1.11476,0.0646 -2.04792,0.10066 -2.07634,0.0722 -0.045,-0.0448 -1.0053,-15.19482 -0.96576,-15.23057 0.008,-0.008 0.92544,-0.0716 2.05223,-0.14458 1.3691,-0.0887 4.91826,-0.14303 8.45028,-0.14457 z m -72.696647,18.43569 c 0.06643,0.0714 7.315537,13.27709 7.315537,13.32675 0,0.012 -0.33262,0.20711 -0.74844,0.43375 -5.49836,2.99686 -11.520423,6.96303 -16.997493,11.15921 -2.122486,1.6261 -4.163129,3.28675 -6.059727,4.93891 -2.763466,2.4073 -5.519031,5.02765 -8.153046,7.73607 -4.188314,4.30662 -8.069301,8.83591 -11.18606,13.08544 -0.428228,0.58393 -0.518926,0.66211 -0.676036,0.55427 -0.743971,-0.51067 -12.069524,-9.01277 -12.07184,-9.0612 -0.0032,-0.0654 2.188315,-2.96196 3.114542,-4.12094 3.702693,-4.63305 6.952577,-8.24177 11.323395,-12.60374 5.422218,-5.41124 10.590321,-9.89733 16.418014,-14.21307 1.68388,-1.247 3.422814,-2.47978 5.238862,-3.71655 4.330773,-2.94935 12.27561,-7.74115 12.482292,-7.5189 z m 180.256787,26.14737 1.59348,1.68696 c 14.15689,14.8539 24.97464,32.22325 31.79723,51.08979 0.33396,0.9235 0.62801,1.75148 0.65189,1.85562 0.0314,0.13682 -1.93992,0.85746 -7.0741,2.57859 -3.90783,1.31002 -7.16723,2.38116 -7.24311,2.38582 -0.0759,0.005 -0.60152,-1.2735 -1.18304,-2.84371 -5.969,-16.11689 -15.21187,-30.93143 -27.33066,-43.81189 l -2.00392,-2.14481 5.38405,-5.39818 z m -254.691788,75.38159 6.494676,1.25313 c 3.574397,0.70032 6.934399,1.35613 7.484553,1.44593 0.686953,0.11217 1.014012,0.2292 1.014012,0.36149 0,0.10595 -0.153023,1.06824 -0.338008,2.14481 -1.77313,10.31915 -2.154169,22.66846 -1.110602,36.17254 0.477667,6.18126 1.540548,13.7745 2.559231,18.33932 0.153154,0.68636 0.248963,1.29382 0.21727,1.32544 -0.03169,0.0316 -3.362797,0.75672 -7.412074,1.61465 -4.049328,0.85789 -7.418252,1.55725 -7.460429,1.56642 -0.04205,0.009 -0.300037,-1.13437 -0.579433,-2.5545 -2.203444,-11.19939 -3.166429,-21.72408 -3.186982,-34.87117 -0.01437,-9.22213 0.519332,-15.94183 1.88322,-24.19538 z m 280.308238,41.9322 0.50701,0.0722 c 0.27676,0.0401 3.6727,0.44323 7.53284,0.89166 3.86013,0.44843 7.05852,0.85201 7.09824,0.89167 0.0932,0.0929 -0.16553,1.91116 -0.74845,5.44635 -3.19455,19.37336 -9.86586,36.82275 -20.69114,54.07808 -0.29568,0.4713 -0.61108,0.83626 -0.70017,0.81936 -0.2373,-0.0448 -12.74246,-7.98776 -12.74787,-8.09727 -0.003,-0.051 0.5227,-0.91859 1.15889,-1.9279 2.79915,-4.44071 6.51785,-11.42371 8.57102,-16.09812 4.93941,-11.24543 8.19324,-22.72164 9.87477,-34.87114 z M 34.593711,425.97191 c 0.307673,0.006 14.489227,3.52144 14.582798,3.61483 0.06429,0.0642 -14.460111,58.94894 -14.679361,59.57234 -0.264295,0.75154 -2.448917,6.89219 -8.89811,5.83562 -7.188866,-1.53385 -6.459303,-9.60062 -5.901978,-9.47455 0.07403,0.0164 3.297467,-13.49343 7.339677,-29.83423 5.771655,-23.33215 7.392523,-29.71712 7.556974,-29.71401 z m 208.939479,17.49584 c 0.26861,0.009 0.79767,0.86897 4.12858,6.31393 2.17437,3.55436 3.95956,6.49385 3.95956,6.53082 0,0.0895 -2.24931,1.43362 -4.63558,2.79547 -14.66383,8.36864 -30.89035,14.28272 -47.5148,17.30273 -2.35548,0.42806 -3.72149,0.65873 -7.24309,1.18079 -0.4553,0.0675 -0.89848,0.13569 -0.9899,0.14479 -0.20655,0.0203 -0.15998,0.41098 -1.23133,-7.49463 -0.49266,-3.63545 -0.9217,-6.82967 -0.96575,-7.10914 -0.0773,-0.4901 -0.0566,-0.50843 0.38632,-0.57837 0.25249,-0.0397 1.76248,-0.27013 3.35596,-0.5061 14.63282,-2.1666 29.69198,-7.13661 42.85504,-14.12199 2.3316,-1.23733 6.67037,-3.69353 7.77427,-4.4101 0.0348,-0.0226 0.0823,-0.0494 0.12072,-0.0482 z m -140.5404,5.95243 c 1.2996,0.0852 3.01916,0.6661 6.8568,2.04841 7.41309,2.6702 15.83145,5.40983 19.62883,6.38623 0.54937,0.14127 1.01325,0.3318 1.01402,0.4097 0.001,0.14074 -3.75566,14.54864 -3.8147,14.628 -0.0362,0.0491 -4.16398,-1.11446 -6.73609,-1.90379 -3.34367,-1.02612 -8.97009,-2.90777 -12.9893,-4.33779 l -3.98373,-1.42183 -14.631058,5.88012 c -11.902923,4.78909 -14.630484,5.85868 -14.703523,5.68719 -0.594444,-1.39562 -5.653196,-13.95979 -5.625485,-13.97721 0.254566,-0.16031 32.237656,-12.94422 32.738866,-13.08573 0.82518,-0.233 1.4656,-0.36438 2.24537,-0.3133 z"
style="display:inline;opacity:0.5;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:3.85941029;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
sodipodi:nodetypes="ccssccssscccccccssssscccsssscccscsssccccccssssssssssccccscssccsscccsscsscsssssccsccsscsscsccscccccssc" />
<ellipse
cy="334.93869"
cx="-242.26097"
style="opacity:0.928;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000"
id="path3047-7"
rx="16.401163"
ry="16.363543"
transform="scale(-1,1)" />
<ellipse
cy="334.93869"
cx="-170.28149"
style="opacity:0.928;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000"
id="path3047-1-89"
rx="16.401163"
ry="16.363543"
transform="scale(-1,1)" />
<ellipse
cy="334.93869"
cx="-98.116379"
style="opacity:0.928;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000"
id="path3047-1-8-8"
rx="16.401163"
ry="16.363543"
transform="scale(-1,1)" />
</g>
<g
inkscape:groupmode="layer"
id="layer4"
inkscape:label="Dots">
<ellipse
style="opacity:0.928;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000"
id="path3047"
cx="237.68259"
cy="165.68341"
rx="19.21628"
ry="17.374786" />
<ellipse
style="opacity:0.928;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000"
id="path3047-1"
cx="322.01675"
cy="165.68341"
rx="19.21628"
ry="17.374786" />
<ellipse
style="opacity:0.928;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000"
id="path3047-1-8"
cx="406.56836"
cy="165.68341"
rx="19.21628"
ry="17.374786" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 22 KiB

View file

@ -1,4 +1,4 @@
#!/bin/env ruby
#!/usr/bin/env ruby
require 'xml'
@ -11,8 +11,8 @@ resolutions = {
}
images = {
'conversations_baloon.svg' => ['ic_launcher', 48],
'conversations_mono.svg' => ['ic_notification', 24],
'conversations_plus_beta_baloons.svg' => ['ic_launcher', 48],
'conversations_plus_beta_baloons_notification.svg' => ['ic_notification', 24],
'ic_received_indicator.svg' => ['ic_received_indicator', 12],
'ic_send_text_offline.svg' => ['ic_send_text_offline', 36],
'ic_send_text_online.svg' => ['ic_send_text_online', 36],

View file

@ -12,43 +12,49 @@ buildscript {
allprojects {
repositories {
jcenter()
mavenCentral()
maven {
url 'http://lorenzo.villani.me/android-cropimage/'
}
}
}
apply plugin: 'com.android.application'
repositories {
jcenter()
mavenCentral()
}
configurations {
playstoreCompile
flatDir {
dirs 'libs/3rdParty/jcenter', 'libs/3rdParty/maven'
}
}
dependencies {
compile project(':libs:MemorizingTrustManager')
compile 'org.sufficientlysecure:openpgp-api:10.0'
compile 'com.soundcloud.android:android-crop:1.0.1@aar'
compile 'com.android.support:support-v13:23.2.0'
compile 'org.bouncycastle:bcprov-jdk15on:1.52'
compile 'org.bouncycastle:bcmail-jdk15on:1.52'
compile 'org.jitsi:org.otr4j:0.22'
compile 'org.gnu.inet:libidn:1.15'
compile 'com.google.zxing:core:3.2.1'
compile 'com.google.zxing:android-integration:3.2.1'
compile 'de.measite.minidns:minidns:0.1.7'
compile 'de.timroes.android:EnhancedListView:0.3.4'
compile 'me.leolin:ShortcutBadger:1.1.4@aar'
compile 'com.kyleduo.switchbutton:library:1.2.8'
compile 'org.whispersystems:axolotl-android:1.3.4'
compile 'com.makeramen:roundedimageview:2.2.0'
playstoreCompile 'com.google.android.gms:play-services-gcm:8.4.0'
// Local JAR files
//compile fileTree(dir: 'libs/zxing', includes: ['core-3.1.0.jar', 'android-integration-3.1.0.jar'])
compile name: 'zxing-core-3.2.1' //zxing
compile name: 'zxing-android-integration-3.2.1' //zxing
compile name: 'libidn-1.15'
compile name: 'minidns-0.1.7'
compile name: 'org.otr4j-0.22'
compile name: 'bcprov-jdk15on-1.52'
compile name: 'bcmail-jdk15on-1.52'
compile name: 'bcpkix-jdk15on-1.52'
compile name: 'EnhancedListView-0.3.4', ext: 'aar'
compile name: 'com.nineoldandroids.view.ViewHelper-2.4.0'
compile name: 'ShortcutBadger-1.1.4', ext: 'aar'
compile name: 'swipy-1.2.1', ext: 'aar'
compile name: 'axolotl-android-1.3.4', ext: 'aar'
compile name: 'axolotl-java-1.3.4'
compile name: 'curve25519-android-0.2.4', ext: 'aar' // axolotl, loaded from jcenter
compile name: 'curve25519-java-0.2.4' // axolotl, loaded from jcenter
compile name: 'protobuf-java-2.5.0' // axolotl, loaded from maven
compile name: 'android-crop-1.0.1', ext: 'aar'
compile name: 'roundedimageview-2.2.0', ext: 'aar'
compile name: 'openpgp-api-10.0', ext: 'aar' // loaded from jcenter
// Local modules
compile project(':libs:MemorizingTrustManager')
compile project(':libs:emojicon')
compile project(':libs:colorpicker')
compile project(':libs:thedevstacklogcat')
// Android dependencies
compile 'com.android.support:support-v13:23.2.0'
}
ext {
@ -67,7 +73,6 @@ android {
versionCode 140
versionName "1.11.7"
archivesBaseName += "-$versionName"
applicationId "eu.siacs.conversations"
}
dexOptions {

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
libs/3rdParty/maven/libidn-1.15.jar vendored Normal file

Binary file not shown.

BIN
libs/3rdParty/maven/minidns-0.1.7.jar vendored Normal file

Binary file not shown.

BIN
libs/3rdParty/maven/org.otr4j-0.22.jar vendored Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
libs/3rdParty/maven/swipy-1.2.1.aar vendored Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
libs/3rdParty/maven/zxing-core-3.2.1.jar vendored Normal file

Binary file not shown.

1
libs/colorpicker/.gitignore vendored Normal file
View file

@ -0,0 +1 @@
/build

View file

@ -0,0 +1,18 @@
apply plugin: 'com.android.library'
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
minSdkVersion 7
targetSdkVersion 21
versionCode 2
versionName "2.0"
}
buildTypes {
release {
minifyEnabled false
}
}
}

View file

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest package="yuku.ambilwarna" />

View file

@ -0,0 +1,298 @@
package yuku.ambilwarna;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnCancelListener;
import android.graphics.Color;
import android.graphics.drawable.GradientDrawable;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewTreeObserver;
import android.widget.ImageView;
import android.widget.RelativeLayout;
public class AmbilWarnaDialog {
public interface OnAmbilWarnaListener {
void onCancel(AmbilWarnaDialog dialog);
void onOk(AmbilWarnaDialog dialog, int color);
}
final AlertDialog dialog;
private final boolean supportsAlpha;
final OnAmbilWarnaListener listener;
final View viewHue;
final AmbilWarnaSquare viewSatVal;
final ImageView viewCursor;
final ImageView viewAlphaCursor;
final View viewOldColor;
final View viewNewColor;
final View viewAlphaOverlay;
final ImageView viewTarget;
final ImageView viewAlphaCheckered;
final ViewGroup viewContainer;
final float[] currentColorHsv = new float[3];
int alpha;
/**
* Create an AmbilWarnaDialog.
*
* @param context activity context
* @param color current color
* @param listener an OnAmbilWarnaListener, allowing you to get back error or OK
*/
public AmbilWarnaDialog(final Context context, int color, OnAmbilWarnaListener listener) {
this(context, color, false, listener);
}
/**
* Create an AmbilWarnaDialog.
*
* @param context activity context
* @param color current color
* @param supportsAlpha whether alpha/transparency controls are enabled
* @param listener an OnAmbilWarnaListener, allowing you to get back error or OK
*/
public AmbilWarnaDialog(final Context context, int color, boolean supportsAlpha, OnAmbilWarnaListener listener) {
this.supportsAlpha = supportsAlpha;
this.listener = listener;
if (!supportsAlpha) { // remove alpha if not supported
color = color | 0xff000000;
}
Color.colorToHSV(color, currentColorHsv);
alpha = Color.alpha(color);
final View view = LayoutInflater.from(context).inflate(R.layout.ambilwarna_dialog, null);
viewHue = view.findViewById(R.id.ambilwarna_viewHue);
viewSatVal = (AmbilWarnaSquare) view.findViewById(R.id.ambilwarna_viewSatBri);
viewCursor = (ImageView) view.findViewById(R.id.ambilwarna_cursor);
viewOldColor = view.findViewById(R.id.ambilwarna_oldColor);
viewNewColor = view.findViewById(R.id.ambilwarna_newColor);
viewTarget = (ImageView) view.findViewById(R.id.ambilwarna_target);
viewContainer = (ViewGroup) view.findViewById(R.id.ambilwarna_viewContainer);
viewAlphaOverlay = view.findViewById(R.id.ambilwarna_overlay);
viewAlphaCursor = (ImageView) view.findViewById(R.id.ambilwarna_alphaCursor);
viewAlphaCheckered = (ImageView) view.findViewById(R.id.ambilwarna_alphaCheckered);
{ // hide/show alpha
viewAlphaOverlay.setVisibility(supportsAlpha? View.VISIBLE: View.GONE);
viewAlphaCursor.setVisibility(supportsAlpha? View.VISIBLE: View.GONE);
viewAlphaCheckered.setVisibility(supportsAlpha? View.VISIBLE: View.GONE);
}
viewSatVal.setHue(getHue());
viewOldColor.setBackgroundColor(color);
viewNewColor.setBackgroundColor(color);
viewHue.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_MOVE
|| event.getAction() == MotionEvent.ACTION_DOWN
|| event.getAction() == MotionEvent.ACTION_UP) {
float y = event.getY();
if (y < 0.f) y = 0.f;
if (y > viewHue.getMeasuredHeight()) {
y = viewHue.getMeasuredHeight() - 0.001f; // to avoid jumping the cursor from bottom to top.
}
float hue = 360.f - 360.f / viewHue.getMeasuredHeight() * y;
if (hue == 360.f) hue = 0.f;
setHue(hue);
// update view
viewSatVal.setHue(getHue());
moveCursor();
viewNewColor.setBackgroundColor(getColor());
updateAlphaView();
return true;
}
return false;
}
});
if (supportsAlpha) viewAlphaCheckered.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if ((event.getAction() == MotionEvent.ACTION_MOVE)
|| (event.getAction() == MotionEvent.ACTION_DOWN)
|| (event.getAction() == MotionEvent.ACTION_UP)) {
float y = event.getY();
if (y < 0.f) {
y = 0.f;
}
if (y > viewAlphaCheckered.getMeasuredHeight()) {
y = viewAlphaCheckered.getMeasuredHeight() - 0.001f; // to avoid jumping the cursor from bottom to top.
}
final int a = Math.round(255.f - ((255.f / viewAlphaCheckered.getMeasuredHeight()) * y));
AmbilWarnaDialog.this.setAlpha(a);
// update view
moveAlphaCursor();
int col = AmbilWarnaDialog.this.getColor();
int c = a << 24 | col & 0x00ffffff;
viewNewColor.setBackgroundColor(c);
return true;
}
return false;
}
});
viewSatVal.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_MOVE
|| event.getAction() == MotionEvent.ACTION_DOWN
|| event.getAction() == MotionEvent.ACTION_UP) {
float x = event.getX(); // touch event are in dp units.
float y = event.getY();
if (x < 0.f) x = 0.f;
if (x > viewSatVal.getMeasuredWidth()) x = viewSatVal.getMeasuredWidth();
if (y < 0.f) y = 0.f;
if (y > viewSatVal.getMeasuredHeight()) y = viewSatVal.getMeasuredHeight();
setSat(1.f / viewSatVal.getMeasuredWidth() * x);
setVal(1.f - (1.f / viewSatVal.getMeasuredHeight() * y));
// update view
moveTarget();
viewNewColor.setBackgroundColor(getColor());
return true;
}
return false;
}
});
dialog = new AlertDialog.Builder(context)
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (AmbilWarnaDialog.this.listener != null) {
AmbilWarnaDialog.this.listener.onOk(AmbilWarnaDialog.this, getColor());
}
}
})
.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (AmbilWarnaDialog.this.listener != null) {
AmbilWarnaDialog.this.listener.onCancel(AmbilWarnaDialog.this);
}
}
})
.setOnCancelListener(new OnCancelListener() {
// if back button is used, call back our listener.
@Override
public void onCancel(DialogInterface paramDialogInterface) {
if (AmbilWarnaDialog.this.listener != null) {
AmbilWarnaDialog.this.listener.onCancel(AmbilWarnaDialog.this);
}
}
})
.create();
// kill all padding from the dialog window
dialog.setView(view, 0, 0, 0, 0);
// move cursor & target on first draw
ViewTreeObserver vto = view.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
moveCursor();
if (AmbilWarnaDialog.this.supportsAlpha) moveAlphaCursor();
moveTarget();
if (AmbilWarnaDialog.this.supportsAlpha) updateAlphaView();
view.getViewTreeObserver().removeGlobalOnLayoutListener(this);
}
});
}
protected void moveCursor() {
float y = viewHue.getMeasuredHeight() - (getHue() * viewHue.getMeasuredHeight() / 360.f);
if (y == viewHue.getMeasuredHeight()) y = 0.f;
RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) viewCursor.getLayoutParams();
layoutParams.leftMargin = (int) (viewHue.getLeft() - Math.floor(viewCursor.getMeasuredWidth() / 2) - viewContainer.getPaddingLeft());
layoutParams.topMargin = (int) (viewHue.getTop() + y - Math.floor(viewCursor.getMeasuredHeight() / 2) - viewContainer.getPaddingTop());
viewCursor.setLayoutParams(layoutParams);
}
protected void moveTarget() {
float x = getSat() * viewSatVal.getMeasuredWidth();
float y = (1.f - getVal()) * viewSatVal.getMeasuredHeight();
RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) viewTarget.getLayoutParams();
layoutParams.leftMargin = (int) (viewSatVal.getLeft() + x - Math.floor(viewTarget.getMeasuredWidth() / 2) - viewContainer.getPaddingLeft());
layoutParams.topMargin = (int) (viewSatVal.getTop() + y - Math.floor(viewTarget.getMeasuredHeight() / 2) - viewContainer.getPaddingTop());
viewTarget.setLayoutParams(layoutParams);
}
protected void moveAlphaCursor() {
final int measuredHeight = this.viewAlphaCheckered.getMeasuredHeight();
float y = measuredHeight - ((this.getAlpha() * measuredHeight) / 255.f);
final RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) this.viewAlphaCursor.getLayoutParams();
layoutParams.leftMargin = (int) (this.viewAlphaCheckered.getLeft() - Math.floor(this.viewAlphaCursor.getMeasuredWidth() / 2) - this.viewContainer.getPaddingLeft());
layoutParams.topMargin = (int) ((this.viewAlphaCheckered.getTop() + y) - Math.floor(this.viewAlphaCursor.getMeasuredHeight() / 2) - this.viewContainer.getPaddingTop());
this.viewAlphaCursor.setLayoutParams(layoutParams);
}
private int getColor() {
final int argb = Color.HSVToColor(currentColorHsv);
return alpha << 24 | (argb & 0x00ffffff);
}
private float getHue() {
return currentColorHsv[0];
}
private float getAlpha() {
return this.alpha;
}
private float getSat() {
return currentColorHsv[1];
}
private float getVal() {
return currentColorHsv[2];
}
private void setHue(float hue) {
currentColorHsv[0] = hue;
}
private void setSat(float sat) {
currentColorHsv[1] = sat;
}
private void setAlpha(int alpha) {
this.alpha = alpha;
}
private void setVal(float val) {
currentColorHsv[2] = val;
}
public void show() {
dialog.show();
}
public AlertDialog getDialog() {
return dialog;
}
private void updateAlphaView() {
final GradientDrawable gd = new GradientDrawable(GradientDrawable.Orientation.TOP_BOTTOM, new int[] {
Color.HSVToColor(currentColorHsv), 0x0
});
viewAlphaOverlay.setBackgroundDrawable(gd);
}
}

View file

@ -0,0 +1,46 @@
package yuku.ambilwarna;
import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.ComposeShader;
import android.graphics.LinearGradient;
import android.graphics.Paint;
import android.graphics.PorterDuff;
import android.graphics.Shader;
import android.graphics.Shader.TileMode;
import android.util.AttributeSet;
import android.view.View;
public class AmbilWarnaSquare extends View {
Paint paint;
Shader luar;
final float[] color = { 1.f, 1.f, 1.f };
public AmbilWarnaSquare(Context context, AttributeSet attrs) {
super(context, attrs);
}
public AmbilWarnaSquare(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@SuppressLint("DrawAllocation") @Override protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if (paint == null) {
paint = new Paint();
luar = new LinearGradient(0.f, 0.f, 0.f, this.getMeasuredHeight(), 0xffffffff, 0xff000000, TileMode.CLAMP);
}
int rgb = Color.HSVToColor(color);
Shader dalam = new LinearGradient(0.f, 0.f, this.getMeasuredWidth(), 0.f, 0xffffffff, rgb, TileMode.CLAMP);
ComposeShader shader = new ComposeShader(luar, dalam, PorterDuff.Mode.MULTIPLY);
paint.setShader(shader);
canvas.drawRect(0.f, 0.f, this.getMeasuredWidth(), this.getMeasuredHeight(), paint);
}
void setHue(float hue) {
color[0] = hue;
invalidate();
}
}

View file

@ -0,0 +1,34 @@
package yuku.ambilwarna.widget;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.util.AttributeSet;
import android.util.FloatMath;
import android.view.View;
public class AmbilWarnaPrefWidgetView extends View {
Paint paint;
float rectSize;
float strokeWidth;
public AmbilWarnaPrefWidgetView(Context context, AttributeSet attrs) {
super(context, attrs);
float density = context.getResources().getDisplayMetrics().density;
rectSize = FloatMath.floor(24.f * density + 0.5f);
strokeWidth = FloatMath.floor(1.f * density + 0.5f);
paint = new Paint();
paint.setColor(0xffffffff);
paint.setStyle(Style.STROKE);
paint.setStrokeWidth(strokeWidth);
}
@Override protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawRect(strokeWidth, strokeWidth, rectSize - strokeWidth, rectSize - strokeWidth, paint);
}
}

View file

@ -0,0 +1,134 @@
package yuku.ambilwarna.widget;
import android.content.Context;
import android.content.res.TypedArray;
import android.os.Parcel;
import android.os.Parcelable;
import android.preference.Preference;
import android.util.AttributeSet;
import android.view.View;
import yuku.ambilwarna.AmbilWarnaDialog;
import yuku.ambilwarna.R;
public class AmbilWarnaPreference extends Preference {
private final boolean supportsAlpha;
int value;
public AmbilWarnaPreference(Context context, AttributeSet attrs) {
super(context, attrs);
final TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.AmbilWarnaPreference);
supportsAlpha = ta.getBoolean(R.styleable.AmbilWarnaPreference_supportsAlpha, false);
setWidgetLayoutResource(R.layout.ambilwarna_pref_widget);
}
@Override protected void onBindView(View view) {
super.onBindView(view);
// Set our custom views inside the layout
final View box = view.findViewById(R.id.ambilwarna_pref_widget_box);
if (box != null) {
box.setBackgroundColor(value);
}
}
@Override protected void onClick() {
new AmbilWarnaDialog(getContext(), value, supportsAlpha, new AmbilWarnaDialog.OnAmbilWarnaListener() {
@Override public void onOk(AmbilWarnaDialog dialog, int color) {
if (!callChangeListener(color)) return; // They don't want the value to be set
value = color;
persistInt(value);
notifyChanged();
}
@Override public void onCancel(AmbilWarnaDialog dialog) {
// nothing to do
}
}).show();
}
public void forceSetValue(int value) {
this.value = value;
persistInt(value);
notifyChanged();
}
@Override protected Object onGetDefaultValue(TypedArray a, int index) {
// This preference type's value type is Integer, so we read the default value from the attributes as an Integer.
return a.getInteger(index, 0);
}
@Override protected void onSetInitialValue(boolean restoreValue, Object defaultValue) {
if (restoreValue) { // Restore state
value = getPersistedInt(value);
} else { // Set state
int value = (Integer) defaultValue;
this.value = value;
persistInt(value);
}
}
/*
* Suppose a client uses this preference type without persisting. We
* must save the instance state so it is able to, for example, survive
* orientation changes.
*/
@Override protected Parcelable onSaveInstanceState() {
final Parcelable superState = super.onSaveInstanceState();
if (isPersistent()) return superState; // No need to save instance state since it's persistent
final SavedState myState = new SavedState(superState);
myState.value = value;
return myState;
}
@Override protected void onRestoreInstanceState(Parcelable state) {
if (!state.getClass().equals(SavedState.class)) {
// Didn't save state for us in onSaveInstanceState
super.onRestoreInstanceState(state);
return;
}
// Restore the instance state
SavedState myState = (SavedState) state;
super.onRestoreInstanceState(myState.getSuperState());
this.value = myState.value;
notifyChanged();
}
/**
* SavedState, a subclass of {@link android.preference.Preference.BaseSavedState}, will store the state
* of MyPreference, a subclass of Preference.
* <p>
* It is important to always call through to super methods.
*/
private static class SavedState extends BaseSavedState {
int value;
public SavedState(Parcel source) {
super(source);
value = source.readInt();
}
@Override public void writeToParcel(Parcel dest, int flags) {
super.writeToParcel(dest, flags);
dest.writeInt(value);
}
public SavedState(Parcelable superState) {
super(superState);
}
@SuppressWarnings("unused") public static final Creator<SavedState> CREATOR = new Creator<SavedState>() {
public SavedState createFromParcel(Parcel in) {
return new SavedState(in);
}
public SavedState[] newArray(int size) {
return new SavedState[size];
}
};
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 666 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 983 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 748 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 751 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 480 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 607 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 889 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 814 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 579 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 455 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 816 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 782 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/ambilwarna_alphacheckered"
android:tileMode="repeat" >
</bitmap>

View file

@ -0,0 +1,127 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/ambilwarna_viewContainer"
android:paddingTop="@dimen/ambilwarna_spacer"
android:paddingRight="@dimen/ambilwarna_spacer"
android:paddingBottom="0dp"
android:paddingLeft="@dimen/ambilwarna_spacer"
android:clipToPadding="false"
android:layout_gravity="center"
>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/ambilwarna_state"
android:orientation="vertical"
android:paddingRight="@dimen/ambilwarna_spacer"
android:gravity="center"
android:layout_centerVertical="true"
>
<FrameLayout
android:layout_width="60dp"
android:layout_height="30dp">
<View
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/ambilwarna_alphacheckered_tiled" />
<View
android:id="@+id/ambilwarna_oldColor"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#faa" />
</FrameLayout>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ambilwarna_arrow_down"
android:paddingTop="@dimen/ambilwarna_spacer"
android:paddingBottom="@dimen/ambilwarna_spacer"
/>
<FrameLayout
android:layout_width="60dp"
android:layout_height="30dp">
<View
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/ambilwarna_alphacheckered_tiled" />
<View
android:id="@+id/ambilwarna_newColor"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#aaf" />
</FrameLayout>
</LinearLayout>
<yuku.ambilwarna.AmbilWarnaSquare
android:id="@+id/ambilwarna_viewSatBri"
android:layout_width="@dimen/ambilwarna_hsvWidth"
android:layout_height="@dimen/ambilwarna_hsvHeight"
android:layout_toRightOf="@id/ambilwarna_state"
android:layerType="software"
/>
<!-- needed because i can't get parent keeping its bottom layout
and its wrap_content height. This view will serve as a bottom spacer. -->
<View
android:layout_width="@dimen/ambilwarna_spacer"
android:layout_height="@dimen/ambilwarna_spacer"
android:layout_below="@id/ambilwarna_viewSatBri"
/>
<ImageView
android:id="@+id/ambilwarna_viewHue"
android:layout_width="@dimen/ambilwarna_hueWidth"
android:layout_height="@dimen/ambilwarna_hsvHeight"
android:layout_toRightOf="@id/ambilwarna_viewSatBri"
android:layout_marginLeft="@dimen/ambilwarna_spacer"
android:src="@drawable/ambilwarna_hue"
android:scaleType="fitXY"
/>
<ImageView
android:id="@+id/ambilwarna_alphaCheckered"
android:layout_width="@dimen/ambilwarna_hueWidth"
android:layout_height="@dimen/ambilwarna_hsvHeight"
android:layout_marginLeft="@dimen/ambilwarna_spacer"
android:layout_toRightOf="@id/ambilwarna_viewHue"
android:scaleType="fitXY"
android:src="@drawable/ambilwarna_alphacheckered_tiled" />
<View
android:id="@+id/ambilwarna_overlay"
android:layout_width="@dimen/ambilwarna_hueWidth"
android:layout_height="@dimen/ambilwarna_hsvHeight"
android:layout_marginLeft="@dimen/ambilwarna_spacer"
android:layout_toRightOf="@id/ambilwarna_viewHue" />
<ImageView
android:id="@+id/ambilwarna_cursor"
android:layout_width="9dp"
android:layout_height="9dp"
android:src="@drawable/ambilwarna_cursor"
android:scaleType="matrix"
/>
<ImageView
android:id="@+id/ambilwarna_alphaCursor"
android:layout_width="9dp"
android:layout_height="9dp"
android:scaleType="matrix"
android:src="@drawable/ambilwarna_cursor" />
<ImageView
android:id="@+id/ambilwarna_target"
android:layout_width="15dp"
android:layout_height="15dp"
android:src="@drawable/ambilwarna_target"
android:scaleType="matrix"
/>
</RelativeLayout>

View file

@ -0,0 +1,122 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ambilwarna_dialogView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center" >
<RelativeLayout
android:id="@+id/ambilwarna_viewContainer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:clipToPadding="false"
android:paddingBottom="@dimen/ambilwarna_spacer"
android:paddingLeft="@dimen/ambilwarna_spacer"
android:paddingRight="@dimen/ambilwarna_spacer"
android:paddingTop="@dimen/ambilwarna_spacer" >
<yuku.ambilwarna.AmbilWarnaSquare
android:id="@+id/ambilwarna_viewSatBri"
android:layout_width="@dimen/ambilwarna_hsvWidth"
android:layout_height="@dimen/ambilwarna_hsvHeight"
android:layerType="software" />
<ImageView
android:id="@+id/ambilwarna_viewHue"
android:layout_width="@dimen/ambilwarna_hueWidth"
android:layout_height="@dimen/ambilwarna_hsvHeight"
android:layout_marginLeft="@dimen/ambilwarna_spacer"
android:layout_toRightOf="@id/ambilwarna_viewSatBri"
android:scaleType="fitXY"
android:src="@drawable/ambilwarna_hue" />
<ImageView
android:id="@+id/ambilwarna_alphaCheckered"
android:layout_width="@dimen/ambilwarna_hueWidth"
android:layout_height="@dimen/ambilwarna_hsvHeight"
android:layout_marginLeft="@dimen/ambilwarna_spacer"
android:layout_toRightOf="@id/ambilwarna_viewHue"
android:scaleType="fitXY"
android:src="@drawable/ambilwarna_alphacheckered_tiled" />
<View
android:id="@+id/ambilwarna_overlay"
android:layout_width="@dimen/ambilwarna_hueWidth"
android:layout_height="@dimen/ambilwarna_hsvHeight"
android:layout_marginLeft="@dimen/ambilwarna_spacer"
android:layout_toRightOf="@id/ambilwarna_viewHue" />
<ImageView
android:id="@+id/ambilwarna_cursor"
android:layout_width="9dp"
android:layout_height="9dp"
android:scaleType="matrix"
android:src="@drawable/ambilwarna_cursor" />
<ImageView
android:id="@+id/ambilwarna_alphaCursor"
android:layout_width="9dp"
android:layout_height="9dp"
android:scaleType="matrix"
android:src="@drawable/ambilwarna_cursor" />
<ImageView
android:id="@+id/ambilwarna_target"
android:layout_width="15dp"
android:layout_height="15dp"
android:scaleType="matrix"
android:src="@drawable/ambilwarna_target" />
<LinearLayout
android:id="@+id/ambilwarna_state"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/ambilwarna_viewSatBri"
android:layout_centerHorizontal="true"
android:layout_marginTop="@dimen/ambilwarna_spacer"
android:gravity="center"
android:orientation="horizontal" >
<FrameLayout
android:layout_width="60dp"
android:layout_height="30dp" >
<View
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/ambilwarna_alphacheckered_tiled" />
<View
android:id="@+id/ambilwarna_oldColor"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#faa" />
</FrameLayout>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="@dimen/ambilwarna_spacer"
android:paddingRight="@dimen/ambilwarna_spacer"
android:src="@drawable/ambilwarna_arrow_right" />
<FrameLayout
android:layout_width="60dp"
android:layout_height="30dp" >
<View
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/ambilwarna_alphacheckered_tiled" />
<View
android:id="@+id/ambilwarna_newColor"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#aaf" />
</FrameLayout>
</LinearLayout>
</RelativeLayout>
</FrameLayout>

View file

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_gravity="center_vertical"
android:layout_marginRight="6dp"
android:focusable="false"
android:clickable="false">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitXY"
android:src="@drawable/ambilwarna_alphacheckered_tiled"/>
<yuku.ambilwarna.widget.AmbilWarnaPrefWidgetView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/ambilwarna_pref_widget_box"
/>
</FrameLayout>

View file

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="ambilwarna_hsvWidth">240dp</dimen>
<dimen name="ambilwarna_hsvHeight">120dp</dimen>
</resources>

View file

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="ambilwarna_hsvWidth">240dp</dimen>
<dimen name="ambilwarna_hsvHeight">240dp</dimen>
</resources>

View file

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="AmbilWarnaPreference">
<attr name="supportsAlpha"
format="boolean"/>
</declare-styleable>
</resources>

View file

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="ambilwarna_hsvHeight">240dp</dimen>
<dimen name="ambilwarna_hsvWidth">240dp</dimen>
<dimen name="ambilwarna_hueWidth">30dp</dimen>
<dimen name="ambilwarna_spacer">8dp</dimen>
</resources>

View file

@ -0,0 +1,21 @@
apply plugin: 'com.android.library'
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
minSdkVersion 8
targetSdkVersion 19
}
buildTypes {
release {
minifyEnabled false
}
}
}
dependencies {
compile 'com.android.support:support-v4:19.1.0'
}

3
libs/emojicon/lint.xml Normal file
View file

@ -0,0 +1,3 @@
<?xml version="1.0" encoding="utf-8"?>
<lint>
</lint>

View file

@ -0,0 +1,12 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="github.ankushsachdeva.emojicon">
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="19"/>
<application android:allowBackup="true"
android:label="@string/app_name"
android:icon="@drawable/ic_launcher">
</application>
</manifest>

View file

@ -0,0 +1,74 @@
/*
* Copyright 2014 Ankush Sachdeva
*
* 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 github.ankushsachdeva.emojicon;
import github.ankushsachdeva.emojicon.EmojiconGridView.OnEmojiconClickedListener;
import github.ankushsachdeva.emojicon.emoji.Emojicon;
import java.util.List;
import android.content.Context;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import github.ankushsachdeva.emojicon.R;
/**
* @author Ankush Sachdeva (sankush@yahoo.co.in)
*/
class EmojiAdapter extends ArrayAdapter<Emojicon> {
OnEmojiconClickedListener emojiClickListener;
public EmojiAdapter(Context context, List<Emojicon> data) {
super(context, R.layout.emojicon_item, data);
}
public EmojiAdapter(Context context, Emojicon[] data) {
super(context, R.layout.emojicon_item, data);
}
public void setEmojiClickListener(OnEmojiconClickedListener listener){
this.emojiClickListener = listener;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
v = View.inflate(getContext(), R.layout.emojicon_item, null);
ViewHolder holder = new ViewHolder();
holder.icon = (TextView) v.findViewById(R.id.emojicon_icon);
v.setTag(holder);
}
Emojicon emoji = getItem(position);
ViewHolder holder = (ViewHolder) v.getTag();
holder.icon.setText(emoji.getEmoji());
holder.icon.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
emojiClickListener.onEmojiconClicked(getItem(position));
}
});
return v;
}
class ViewHolder {
TextView icon;
}
}

View file

@ -0,0 +1,36 @@
package github.ankushsachdeva.emojicon;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.text.style.DynamicDrawableSpan;
/**
* Created by lookshe on 29.03.16.
*/
public abstract class EmojiconAbstractSpan extends DynamicDrawableSpan {
private final Context mContext;
private final int mResourceId;
private final int mSize;
private Drawable mDrawable;
public EmojiconAbstractSpan(Context context, int resourceId, int size) {
super();
mContext = context;
mResourceId = resourceId;
mSize = size;
}
@Override
public Drawable getDrawable() {
if (mDrawable == null) {
try {
mDrawable = mContext.getResources().getDrawable(mResourceId);
int size = mSize;
mDrawable.setBounds(0, 0, size, size);
} catch (Exception e) {
// swallow
}
}
return mDrawable;
}
}

View file

@ -0,0 +1,67 @@
/*
* Copyright 2014 Ankush Sachdeva
*
* 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 github.ankushsachdeva.emojicon;
import github.ankushsachdeva.emojicon.R;
import android.content.Context;
import android.content.res.TypedArray;
import android.util.AttributeSet;
import android.widget.EditText;
/**
* @author Hieu Rocker (rockerhieu@gmail.com).
*/
public class EmojiconEditText extends EditText {
private int mEmojiconSize;
public EmojiconEditText(Context context) {
super(context);
mEmojiconSize = (int) getTextSize();
}
public EmojiconEditText(Context context, AttributeSet attrs) {
super(context, attrs);
init(attrs);
}
public EmojiconEditText(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init(attrs);
}
private void init(AttributeSet attrs) {
TypedArray a = getContext().obtainStyledAttributes(attrs, R.styleable.Emojicon);
mEmojiconSize = (int) a.getDimension(R.styleable.Emojicon_emojiconSize, getTextSize());
a.recycle();
setText(getText());
}
@Override
protected void onTextChanged(CharSequence text, int start, int lengthBefore, int lengthAfter) {
super.onTextChanged(text,start,lengthBefore,lengthAfter);
EmojiconHandler.addEmojis(getContext(), getText(), mEmojiconSize);
}
/**
* Set the size of emojicon in pixels.
*/
public void setEmojiconSize(int pixels) {
mEmojiconSize = pixels;
}
}

View file

@ -0,0 +1,78 @@
/*
* Copyright 2014 Ankush Sachdeva
*
* 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 github.ankushsachdeva.emojicon;
import github.ankushsachdeva.emojicon.emoji.Emojicon;
import github.ankushsachdeva.emojicon.emoji.People;
import java.util.Arrays;
import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.GridView;
import github.ankushsachdeva.emojicon.R;
/**
* @author Hieu Rocker (rockerhieu@gmail.com)
* @author Ankush Sachdeva (sankush@yahoo.co.in)
*/
public class EmojiconGridView{
public View rootView;
EmojiconsPopup mEmojiconPopup;
EmojiconRecents mRecents;
Emojicon[] mData;
public EmojiconGridView(Context context, Emojicon[] emojicons, EmojiconRecents recents, EmojiconsPopup emojiconPopup) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
mEmojiconPopup = emojiconPopup;
rootView = inflater.inflate(R.layout.emojicon_grid, null);
setRecents(recents);
GridView gridView = (GridView) rootView.findViewById(R.id.Emoji_GridView);
if (emojicons== null) {
mData = People.DATA;
} else {
Object[] o = (Object[]) emojicons;
mData = Arrays.asList(o).toArray(new Emojicon[o.length]);
}
EmojiAdapter mAdapter = new EmojiAdapter(rootView.getContext(), mData);
mAdapter.setEmojiClickListener(new OnEmojiconClickedListener() {
@Override
public void onEmojiconClicked(Emojicon emojicon) {
if (mEmojiconPopup.onEmojiconClickedListener != null) {
mEmojiconPopup.onEmojiconClickedListener.onEmojiconClicked(emojicon);
}
if (mRecents != null) {
mRecents.addRecentEmoji(rootView.getContext(), emojicon);
}
}
});
gridView.setAdapter(mAdapter);
}
private void setRecents(EmojiconRecents recents) {
mRecents = recents;
}
public interface OnEmojiconClickedListener {
void onEmojiconClicked(Emojicon emojicon);
}
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,14 @@
package github.ankushsachdeva.emojicon;
import android.content.Context;
import android.text.style.ImageSpan;
/**
* Created by lookshe on 16.08.2015.
*/
public class EmojiconImageSpan extends EmojiconAbstractSpan {
EmojiconImageSpan(Context context, int resourceId, int size) {
super(context, resourceId, size);
}
}

View file

@ -0,0 +1,28 @@
/*
* Copyright 2014 Ankush Sachdeva
*
* 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 github.ankushsachdeva.emojicon;
import github.ankushsachdeva.emojicon.emoji.Emojicon;
import android.content.Context;
/**
* @author Daniele Ricci
*/
public interface EmojiconRecents {
public void addRecentEmoji(Context context, Emojicon emojicon);
}

View file

@ -0,0 +1,62 @@
/*
* Copyright 2014 Ankush Sachdeva
*
* 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 github.ankushsachdeva.emojicon;
import github.ankushsachdeva.emojicon.emoji.Emojicon;
import android.content.Context;
import android.widget.GridView;
import github.ankushsachdeva.emojicon.R;
/**
* @author Daniele Ricci
* @author Ankush Sachdeva (sankush@yahoo.co.in)
*/
public class EmojiconRecentsGridView extends EmojiconGridView implements EmojiconRecents {
EmojiAdapter mAdapter;
public EmojiconRecentsGridView(Context context, Emojicon[] emojicons,
EmojiconRecents recents,EmojiconsPopup emojiconsPopup) {
super(context, emojicons, recents, emojiconsPopup);
EmojiconRecentsManager recents1 = EmojiconRecentsManager
.getInstance(rootView.getContext());
mAdapter = new EmojiAdapter(rootView.getContext(), recents1);
mAdapter.setEmojiClickListener(new OnEmojiconClickedListener() {
@Override
public void onEmojiconClicked(Emojicon emojicon) {
if (mEmojiconPopup.onEmojiconClickedListener != null) {
mEmojiconPopup.onEmojiconClickedListener.onEmojiconClicked(emojicon);
}
}
});
GridView gridView = (GridView) rootView.findViewById(R.id.Emoji_GridView);
gridView.setAdapter(mAdapter);
}
@Override
public void addRecentEmoji(Context context, Emojicon emojicon) {
EmojiconRecentsManager recents = EmojiconRecentsManager
.getInstance(context);
recents.push(emojicon);
// notify dataset changed
if (mAdapter != null)
mAdapter.notifyDataSetChanged();
}
}

View file

@ -0,0 +1,124 @@
/*
* Copyright 2014 Ankush Sachdeva
*
* 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 github.ankushsachdeva.emojicon;
import github.ankushsachdeva.emojicon.emoji.Emojicon;
import java.util.ArrayList;
import java.util.StringTokenizer;
import android.content.Context;
import android.content.SharedPreferences;
/**
* @author Daniele Ricci
*/
public class EmojiconRecentsManager extends ArrayList<Emojicon> {
private static final String PREFERENCE_NAME = "emojicon";
private static final String PREF_RECENTS = "recent_emojis";
private static final String PREF_PAGE = "recent_page";
private static final Object LOCK = new Object();
private static EmojiconRecentsManager sInstance;
private Context mContext;
private EmojiconRecentsManager(Context context) {
mContext = context.getApplicationContext();
loadRecents();
}
public static EmojiconRecentsManager getInstance(Context context) {
if (sInstance == null) {
synchronized (LOCK) {
if (sInstance == null) {
sInstance = new EmojiconRecentsManager(context);
}
}
}
return sInstance;
}
public int getRecentPage() {
return getPreferences().getInt(PREF_PAGE, 0);
}
public void setRecentPage(int page) {
getPreferences().edit().putInt(PREF_PAGE, page).commit();
}
public void push(Emojicon object) {
// FIXME totally inefficient way of adding the emoji to the adapter
// TODO this should be probably replaced by a deque
if (contains(object)) {
super.remove(object);
}
add(0, object);
}
@Override
public boolean add(Emojicon object) {
boolean ret = super.add(object);
return ret;
}
@Override
public void add(int index, Emojicon object) {
super.add(index, object);
}
@Override
public boolean remove(Object object) {
boolean ret = super.remove(object);
return ret;
}
private SharedPreferences getPreferences() {
return mContext.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE);
}
private void loadRecents() {
SharedPreferences prefs = getPreferences();
String str = prefs.getString(PREF_RECENTS, "");
StringTokenizer tokenizer = new StringTokenizer(str, "~");
while (tokenizer.hasMoreTokens()) {
try {
add(new Emojicon(tokenizer.nextToken()));
}
catch (NumberFormatException e) {
// ignored
}
}
}
public void saveRecents() {
StringBuilder str = new StringBuilder();
int c = size();
for (int i = 0; i < c; i++) {
Emojicon e = get(i);
str.append(e.getEmoji());
if (i < (c - 1)) {
str.append('~');
}
}
SharedPreferences prefs = getPreferences();
prefs.edit().putString(PREF_RECENTS, str.toString()).commit();
}
}

View file

@ -0,0 +1,31 @@
/*
* Copyright 2014 Ankush Sachdeva
*
* 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 github.ankushsachdeva.emojicon;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.text.style.DynamicDrawableSpan;
/**
* @author Hieu Rocker (rockerhieu@gmail.com)
*/
class EmojiconSpan extends EmojiconAbstractSpan {
public EmojiconSpan(Context context, int resourceId, int size) {
super(context, resourceId, size);
}
}

View file

@ -0,0 +1,80 @@
/*
* Copyright 2014 Ankush Sachdeva
*
* 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 github.ankushsachdeva.emojicon;
import github.ankushsachdeva.emojicon.R;
import android.content.Context;
import android.content.res.TypedArray;
import android.text.SpannableStringBuilder;
import android.util.AttributeSet;
import android.widget.TextView;
/**
* @author Hieu Rocker (rockerhieu@gmail.com).
*/
public class EmojiconTextView extends TextView {
private int mEmojiconSize;
private int mTextStart = 0;
private int mTextLength = -1;
public EmojiconTextView(Context context) {
super(context);
init(null);
}
public EmojiconTextView(Context context, AttributeSet attrs) {
super(context, attrs);
init(attrs);
}
public EmojiconTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init(attrs);
}
private void init(AttributeSet attrs) {
if (attrs == null) {
mEmojiconSize = (int) getTextSize();
} else {
TypedArray a = getContext().obtainStyledAttributes(attrs, R.styleable.Emojicon);
mEmojiconSize = (int) a.getDimension(R.styleable.Emojicon_emojiconSize, getTextSize());
mTextStart = a.getInteger(R.styleable.Emojicon_emojiconTextStart, 0);
mTextLength = a.getInteger(R.styleable.Emojicon_emojiconTextLength, -1);
a.recycle();
}
setText(getText());
}
@Override
public void setText(CharSequence text, BufferType type) {
SpannableStringBuilder builder = new SpannableStringBuilder(text);
boolean hasChanges = EmojiconHandler.addEmojis(getContext(), builder, mEmojiconSize, mTextStart, mTextLength);
if (hasChanges) {
super.setText(builder, BufferType.SPANNABLE);
} else {
super.setText(text, type);
}
}
/**
* Set the size of emojicon in pixels.
*/
public void setEmojiconSize(int pixels) {
mEmojiconSize = pixels;
}
}

View file

@ -0,0 +1,445 @@
/*
* Copyright 2014 Ankush Sachdeva
*
* 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 github.ankushsachdeva.emojicon;
import github.ankushsachdeva.emojicon.EmojiconGridView.OnEmojiconClickedListener;
import github.ankushsachdeva.emojicon.emoji.Emojicon;
import github.ankushsachdeva.emojicon.emoji.Nature;
import github.ankushsachdeva.emojicon.emoji.Objects;
import github.ankushsachdeva.emojicon.emoji.People;
import github.ankushsachdeva.emojicon.emoji.Places;
import github.ankushsachdeva.emojicon.emoji.Symbols;
import java.util.Arrays;
import java.util.List;
import android.annotation.TargetApi;
import android.app.Activity;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Point;
import android.graphics.Rect;
import android.os.Build;
import android.os.Handler;
import android.os.SystemClock;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.Display;
import android.view.Gravity;
import android.view.KeyCharacterMap;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewConfiguration;
import android.view.ViewGroup;
import android.view.ViewTreeObserver.OnGlobalLayoutListener;
import android.view.WindowManager;
import android.view.WindowManager.LayoutParams;
import android.widget.PopupWindow;
/**
* @author Ankush Sachdeva (sankush@yahoo.co.in).
*/
public class EmojiconsPopup extends PopupWindow implements ViewPager.OnPageChangeListener, EmojiconRecents {
private int mEmojiTabLastSelectedIndex = -1;
private View[] mEmojiTabs;
private PagerAdapter mEmojisAdapter;
private EmojiconRecentsManager mRecentsManager;
private int keyBoardHeight = 0;
private Boolean pendingOpen = false;
private Boolean isOpened = false;
OnEmojiconClickedListener onEmojiconClickedListener;
OnEmojiconBackspaceClickedListener onEmojiconBackspaceClickedListener;
OnSoftKeyboardOpenCloseListener onSoftKeyboardOpenCloseListener;
View rootView;
Context mContext;
private ViewPager emojisPager;
/**
* Constructor
* @param rootView The top most layout in your view hierarchy. The difference of this view and the screen height will be used to calculate the keyboard height.
* @param mContext The context of current activity.
*/
public EmojiconsPopup(View rootView, Context mContext){
super(mContext);
this.mContext = mContext;
this.rootView = rootView;
View customView = createCustomView();
setContentView(customView);
setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
//default size
setSize((int) mContext.getResources().getDimension(R.dimen.keyboard_height), LayoutParams.MATCH_PARENT);
}
/**
* Set the listener for the event of keyboard opening or closing.
*/
public void setOnSoftKeyboardOpenCloseListener(OnSoftKeyboardOpenCloseListener listener){
this.onSoftKeyboardOpenCloseListener = listener;
}
/**
* Set the listener for the event when any of the emojicon is clicked
*/
public void setOnEmojiconClickedListener(OnEmojiconClickedListener listener){
this.onEmojiconClickedListener = listener;
}
/**
* Set the listener for the event when backspace on emojicon popup is clicked
*/
public void setOnEmojiconBackspaceClickedListener(OnEmojiconBackspaceClickedListener listener){
this.onEmojiconBackspaceClickedListener = listener;
}
/**
* Use this function to show the emoji popup.
* NOTE: Since, the soft keyboard sizes are variable on different android devices, the
* library needs you to open the soft keyboard atleast once before calling this function.
* If that is not possible see showAtBottomPending() function.
*
*/
public void showAtBottom(){
showAtLocation(rootView, Gravity.BOTTOM, 0, 0);
}
/**
* Use this function when the soft keyboard has not been opened yet. This
* will show the emoji popup after the keyboard is up next time.
* Generally, you will be calling InputMethodManager.showSoftInput function after
* calling this function.
*/
public void showAtBottomPending(){
if(isKeyBoardOpen())
showAtBottom();
else
pendingOpen = true;
}
/**
*
* @return Returns true if the soft keyboard is open, false otherwise.
*/
public Boolean isKeyBoardOpen(){
return isOpened;
}
/**
* Dismiss the popup
*/
@Override
public void dismiss() {
super.dismiss();
EmojiconRecentsManager
.getInstance(mContext).saveRecents();
}
@TargetApi(Build.VERSION_CODES.HONEYCOMB_MR2)
public int calculateScreenHeightForLollipop() {
WindowManager wm = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
Point size = new Point();
display.getSize(size);
return size.y;
}
/**
* Call this function to resize the emoji popup according to your soft keyboard size
*/
public void setSizeForSoftKeyboard(){
rootView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
Rect r = new Rect();
rootView.getWindowVisibleDisplayFrame(r);
int screenHeight = 0;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
screenHeight = calculateScreenHeightForLollipop();
} else {
screenHeight = rootView.getRootView().getHeight();
}
int heightDifference = screenHeight
- (r.bottom - r.top);
Resources resources = mContext.getResources();
int statusBarId = resources
.getIdentifier("status_bar_height",
"dimen", "android");
if (statusBarId > 0) {
heightDifference -= resources
.getDimensionPixelSize(statusBarId);
}
//Resolved using http://stackoverflow.com/a/16608481/2853322
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
int navBarId = resources.getIdentifier("navigation_bar_height", "dimen", "android");
boolean hasMenuKey;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
hasMenuKey = ViewConfiguration.get(mContext).hasPermanentMenuKey();
} else hasMenuKey = true; //Skip has menu key below ICS
boolean hasBackKey = KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_BACK);
if (navBarId > 0 && !hasMenuKey && !hasBackKey) {
heightDifference -= resources.getDimensionPixelSize(navBarId);
}
}
if (heightDifference > 100) {
keyBoardHeight = heightDifference;
setSize(LayoutParams.MATCH_PARENT, keyBoardHeight);
if(isOpened == false){
if(onSoftKeyboardOpenCloseListener!=null)
onSoftKeyboardOpenCloseListener.onKeyboardOpen(keyBoardHeight);
}
isOpened = true;
if(pendingOpen){
showAtBottom();
pendingOpen = false;
}
}
else{
isOpened = false;
if(onSoftKeyboardOpenCloseListener!=null)
onSoftKeyboardOpenCloseListener.onKeyboardClose();
}
}
});
}
/**
* Manually set the popup window size
* @param width Width of the popup
* @param height Height of the popup
*/
public void setSize(int width, int height){
setWidth(width);
setHeight(height);
}
private View createCustomView() {
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.emojicons, null, false);
emojisPager = (ViewPager) view.findViewById(R.id.emojis_pager);
emojisPager.setOnPageChangeListener(this);
EmojiconRecents recents = this;
mEmojisAdapter = new EmojisPagerAdapter(
Arrays.asList(
new EmojiconRecentsGridView(mContext, null, null, this),
new EmojiconGridView(mContext, People.DATA, recents, this),
new EmojiconGridView(mContext, Nature.DATA, recents, this),
new EmojiconGridView(mContext, Objects.DATA, recents, this),
new EmojiconGridView(mContext, Places.DATA, recents, this),
new EmojiconGridView(mContext, Symbols.DATA, recents, this)
)
);
emojisPager.setAdapter(mEmojisAdapter);
mEmojiTabs = new View[6];
mEmojiTabs[0] = view.findViewById(R.id.emojis_tab_0_recents);
mEmojiTabs[1] = view.findViewById(R.id.emojis_tab_1_people);
mEmojiTabs[2] = view.findViewById(R.id.emojis_tab_2_nature);
mEmojiTabs[3] = view.findViewById(R.id.emojis_tab_3_objects);
mEmojiTabs[4] = view.findViewById(R.id.emojis_tab_4_cars);
mEmojiTabs[5] = view.findViewById(R.id.emojis_tab_5_punctuation);
for (int i = 0; i < mEmojiTabs.length; i++) {
final int position = i;
mEmojiTabs[i].setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
emojisPager.setCurrentItem(position);
}
});
}
view.findViewById(R.id.emojis_backspace).setOnTouchListener(new RepeatListener(1000, 50, new OnClickListener() {
@Override
public void onClick(View v) {
if(onEmojiconBackspaceClickedListener != null)
onEmojiconBackspaceClickedListener.onEmojiconBackspaceClicked(v);
}
}));
// get last selected page
mRecentsManager = EmojiconRecentsManager.getInstance(view.getContext());
int page = mRecentsManager.getRecentPage();
// last page was recents, check if there are recents to use
// if none was found, go to page 1
if (page == 0 && mRecentsManager.size() == 0) {
page = 1;
}
if (page == 0) {
onPageSelected(page);
}
else {
emojisPager.setCurrentItem(page, false);
}
return view;
}
@Override
public void addRecentEmoji(Context context, Emojicon emojicon) {
EmojiconRecentsGridView fragment = ((EmojisPagerAdapter)emojisPager.getAdapter()).getRecentFragment();
fragment.addRecentEmoji(context, emojicon);
}
@Override
public void onPageScrolled(int i, float v, int i2) {
}
@Override
public void onPageSelected(int i) {
if (mEmojiTabLastSelectedIndex == i) {
return;
}
switch (i) {
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
if (mEmojiTabLastSelectedIndex >= 0 && mEmojiTabLastSelectedIndex < mEmojiTabs.length) {
mEmojiTabs[mEmojiTabLastSelectedIndex].setSelected(false);
}
mEmojiTabs[i].setSelected(true);
mEmojiTabLastSelectedIndex = i;
mRecentsManager.setRecentPage(i);
break;
}
}
@Override
public void onPageScrollStateChanged(int i) {
}
private static class EmojisPagerAdapter extends PagerAdapter {
private List<EmojiconGridView> views;
public EmojiconRecentsGridView getRecentFragment(){
for (EmojiconGridView it : views) {
if(it instanceof EmojiconRecentsGridView)
return (EmojiconRecentsGridView)it;
}
return null;
}
public EmojisPagerAdapter(List<EmojiconGridView> views) {
super();
this.views = views;
}
@Override
public int getCount() {
return views.size();
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
View v = views.get(position).rootView;
((ViewPager)container).addView(v, 0);
return v;
}
@Override
public void destroyItem(ViewGroup container, int position, Object view) {
((ViewPager)container).removeView((View)view);
}
@Override
public boolean isViewFromObject(View view, Object key) {
return key == view;
}
}
/**
* A class, that can be used as a TouchListener on any view (e.g. a Button).
* It cyclically runs a clickListener, emulating keyboard-like behaviour. First
* click is fired immediately, next before initialInterval, and subsequent before
* normalInterval.
* <p/>
* <p>Interval is scheduled before the onClick completes, so it has to run fast.
* If it runs slow, it does not generate skipped onClicks.
*/
public static class RepeatListener implements View.OnTouchListener {
private Handler handler = new Handler();
private int initialInterval;
private final int normalInterval;
private final View.OnClickListener clickListener;
private Runnable handlerRunnable = new Runnable() {
@Override
public void run() {
if (downView == null) {
return;
}
handler.removeCallbacksAndMessages(downView);
handler.postAtTime(this, downView, SystemClock.uptimeMillis() + normalInterval);
clickListener.onClick(downView);
}
};
private View downView;
/**
* @param initialInterval The interval before first click event
* @param normalInterval The interval before second and subsequent click
* events
* @param clickListener The OnClickListener, that will be called
* periodically
*/
public RepeatListener(int initialInterval, int normalInterval, View.OnClickListener clickListener) {
if (clickListener == null)
throw new IllegalArgumentException("null runnable");
if (initialInterval < 0 || normalInterval < 0)
throw new IllegalArgumentException("negative interval");
this.initialInterval = initialInterval;
this.normalInterval = normalInterval;
this.clickListener = clickListener;
}
public boolean onTouch(View view, MotionEvent motionEvent) {
switch (motionEvent.getAction()) {
case MotionEvent.ACTION_DOWN:
downView = view;
handler.removeCallbacks(handlerRunnable);
handler.postAtTime(handlerRunnable, downView, SystemClock.uptimeMillis() + initialInterval);
clickListener.onClick(view);
return true;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL:
case MotionEvent.ACTION_OUTSIDE:
handler.removeCallbacksAndMessages(downView);
downView = null;
return true;
}
return false;
}
}
public interface OnEmojiconBackspaceClickedListener {
void onEmojiconBackspaceClicked(View v);
}
public interface OnSoftKeyboardOpenCloseListener{
void onKeyboardOpen(int keyBoardHeight);
void onKeyboardClose();
}
}

View file

@ -0,0 +1,74 @@
/*
* Copyright 2014 Ankush Sachdeva
*
* 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 github.ankushsachdeva.emojicon.emoji;
import java.io.Serializable;
/**
* @author Hieu Rocker (rockerhieu@gmail.com)
*/
public class Emojicon implements Serializable {
private static final long serialVersionUID = 1L;
private String emoji;
private Emojicon() {
}
public static Emojicon fromCodePoint(int codePoint) {
Emojicon emoji = new Emojicon();
emoji.emoji = newString(codePoint);
return emoji;
}
public static Emojicon fromChar(char ch) {
Emojicon emoji = new Emojicon();
emoji.emoji = Character.toString(ch);
return emoji;
}
public static Emojicon fromChars(String chars) {
Emojicon emoji = new Emojicon();
emoji.emoji = chars;
return emoji;
}
public Emojicon(String emoji) {
this.emoji = emoji;
}
public String getEmoji() {
return emoji;
}
@Override
public boolean equals(Object o) {
return o instanceof Emojicon && emoji.equals(((Emojicon) o).emoji);
}
@Override
public int hashCode() {
return emoji.hashCode();
}
public static final String newString(int codePoint) {
if (Character.charCount(codePoint) == 1) {
return String.valueOf(codePoint);
} else {
return new String(Character.toChars(codePoint));
}
}
}

View file

@ -0,0 +1,141 @@
/*
* Copyright 2014 Ankush Sachdeva
*
* 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 github.ankushsachdeva.emojicon.emoji;
/**
* @author Hieu Rocker (rockerhieu@gmail.com)
*/
public class Nature {
public static final Emojicon[] DATA = new Emojicon[]{
Emojicon.fromCodePoint(0x1f436),
Emojicon.fromCodePoint(0x1f43a),
Emojicon.fromCodePoint(0x1f431),
Emojicon.fromCodePoint(0x1f42d),
Emojicon.fromCodePoint(0x1f439),
Emojicon.fromCodePoint(0x1f430),
Emojicon.fromCodePoint(0x1f438),
Emojicon.fromCodePoint(0x1f42f),
Emojicon.fromCodePoint(0x1f428),
Emojicon.fromCodePoint(0x1f43b),
Emojicon.fromCodePoint(0x1f437),
Emojicon.fromCodePoint(0x1f43d),
Emojicon.fromCodePoint(0x1f42e),
Emojicon.fromCodePoint(0x1f417),
Emojicon.fromCodePoint(0x1f435),
Emojicon.fromCodePoint(0x1f412),
Emojicon.fromCodePoint(0x1f434),
Emojicon.fromCodePoint(0x1f411),
Emojicon.fromCodePoint(0x1f418),
Emojicon.fromCodePoint(0x1f43c),
Emojicon.fromCodePoint(0x1f427),
Emojicon.fromCodePoint(0x1f426),
Emojicon.fromCodePoint(0x1f424),
Emojicon.fromCodePoint(0x1f425),
Emojicon.fromCodePoint(0x1f423),
Emojicon.fromCodePoint(0x1f414),
Emojicon.fromCodePoint(0x1f40d),
Emojicon.fromCodePoint(0x1f422),
Emojicon.fromCodePoint(0x1f41b),
Emojicon.fromCodePoint(0x1f41d),
Emojicon.fromCodePoint(0x1f41c),
Emojicon.fromCodePoint(0x1f41e),
Emojicon.fromCodePoint(0x1f40c),
Emojicon.fromCodePoint(0x1f419),
Emojicon.fromCodePoint(0x1f41a),
Emojicon.fromCodePoint(0x1f420),
Emojicon.fromCodePoint(0x1f41f),
Emojicon.fromCodePoint(0x1f42c),
Emojicon.fromCodePoint(0x1f433),
Emojicon.fromCodePoint(0x1f40b),
Emojicon.fromCodePoint(0x1f404),
Emojicon.fromCodePoint(0x1f40f),
Emojicon.fromCodePoint(0x1f400),
Emojicon.fromCodePoint(0x1f403),
Emojicon.fromCodePoint(0x1f405),
Emojicon.fromCodePoint(0x1f407),
Emojicon.fromCodePoint(0x1f409),
Emojicon.fromCodePoint(0x1f40e),
Emojicon.fromCodePoint(0x1f410),
Emojicon.fromCodePoint(0x1f413),
Emojicon.fromCodePoint(0x1f415),
Emojicon.fromCodePoint(0x1f416),
Emojicon.fromCodePoint(0x1f401),
Emojicon.fromCodePoint(0x1f402),
Emojicon.fromCodePoint(0x1f432),
Emojicon.fromCodePoint(0x1f421),
Emojicon.fromCodePoint(0x1f40a),
Emojicon.fromCodePoint(0x1f42b),
Emojicon.fromCodePoint(0x1f42a),
Emojicon.fromCodePoint(0x1f406),
Emojicon.fromCodePoint(0x1f408),
Emojicon.fromCodePoint(0x1f429),
Emojicon.fromCodePoint(0x1f43e),
Emojicon.fromCodePoint(0x1f490),
Emojicon.fromCodePoint(0x1f338),
Emojicon.fromCodePoint(0x1f337),
Emojicon.fromCodePoint(0x1f340),
Emojicon.fromCodePoint(0x1f339),
Emojicon.fromCodePoint(0x1f33b),
Emojicon.fromCodePoint(0x1f33a),
Emojicon.fromCodePoint(0x1f341),
Emojicon.fromCodePoint(0x1f343),
Emojicon.fromCodePoint(0x1f342),
Emojicon.fromCodePoint(0x1f33f),
Emojicon.fromCodePoint(0x1f33e),
Emojicon.fromCodePoint(0x1f344),
Emojicon.fromCodePoint(0x1f335),
Emojicon.fromCodePoint(0x1f334),
Emojicon.fromCodePoint(0x1f332),
Emojicon.fromCodePoint(0x1f333),
Emojicon.fromCodePoint(0x1f330),
Emojicon.fromCodePoint(0x1f331),
Emojicon.fromCodePoint(0x1f33c),
Emojicon.fromCodePoint(0x1f310),
Emojicon.fromCodePoint(0x1f31e),
Emojicon.fromCodePoint(0x1f31d),
Emojicon.fromCodePoint(0x1f31a),
Emojicon.fromCodePoint(0x1f311),
Emojicon.fromCodePoint(0x1f312),
Emojicon.fromCodePoint(0x1f313),
Emojicon.fromCodePoint(0x1f314),
Emojicon.fromCodePoint(0x1f315),
Emojicon.fromCodePoint(0x1f316),
Emojicon.fromCodePoint(0x1f317),
Emojicon.fromCodePoint(0x1f318),
Emojicon.fromCodePoint(0x1f31c),
Emojicon.fromCodePoint(0x1f31b),
Emojicon.fromCodePoint(0x1f319),
Emojicon.fromCodePoint(0x1f30d),
Emojicon.fromCodePoint(0x1f30e),
Emojicon.fromCodePoint(0x1f30f),
Emojicon.fromCodePoint(0x1f30b),
Emojicon.fromCodePoint(0x1f30c),
Emojicon.fromCodePoint(0x1f320),
Emojicon.fromChar((char) 0x2b50),
Emojicon.fromChar((char) 0x2600),
Emojicon.fromChar((char) 0x26c5),
Emojicon.fromChar((char) 0x2601),
Emojicon.fromChar((char) 0x26a1),
Emojicon.fromChar((char) 0x2614),
Emojicon.fromChar((char) 0x2744),
Emojicon.fromChar((char) 0x26c4),
Emojicon.fromCodePoint(0x1f300),
Emojicon.fromCodePoint(0x1f301),
Emojicon.fromCodePoint(0x1f308),
Emojicon.fromCodePoint(0x1f30a),
};
}

View file

@ -0,0 +1,255 @@
/*
* Copyright 2014 Ankush Sachdeva
*
* 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 github.ankushsachdeva.emojicon.emoji;
/**
* @author Hieu Rocker (rockerhieu@gmail.com)
*/
public class Objects {
public static final Emojicon[] DATA = new Emojicon[]{
Emojicon.fromCodePoint(0x1f38d),
Emojicon.fromCodePoint(0x1f49d),
Emojicon.fromCodePoint(0x1f38e),
Emojicon.fromCodePoint(0x1f392),
Emojicon.fromCodePoint(0x1f393),
Emojicon.fromCodePoint(0x1f38f),
Emojicon.fromCodePoint(0x1f386),
Emojicon.fromCodePoint(0x1f387),
Emojicon.fromCodePoint(0x1f390),
Emojicon.fromCodePoint(0x1f391),
Emojicon.fromCodePoint(0x1f383),
Emojicon.fromCodePoint(0x1f47b),
Emojicon.fromCodePoint(0x1f385),
Emojicon.fromCodePoint(0x1f384),
Emojicon.fromCodePoint(0x1f381),
Emojicon.fromCodePoint(0x1f38b),
Emojicon.fromCodePoint(0x1f389),
Emojicon.fromCodePoint(0x1f38a),
Emojicon.fromCodePoint(0x1f388),
Emojicon.fromCodePoint(0x1f38c),
Emojicon.fromCodePoint(0x1f52e),
Emojicon.fromCodePoint(0x1f3a5),
Emojicon.fromCodePoint(0x1f4f7),
Emojicon.fromCodePoint(0x1f4f9),
Emojicon.fromCodePoint(0x1f4fc),
Emojicon.fromCodePoint(0x1f4bf),
Emojicon.fromCodePoint(0x1f4c0),
Emojicon.fromCodePoint(0x1f4bd),
Emojicon.fromCodePoint(0x1f4be),
Emojicon.fromCodePoint(0x1f4bb),
Emojicon.fromCodePoint(0x1f4f1),
Emojicon.fromChar((char) 0x260e),
Emojicon.fromCodePoint(0x1f4de),
Emojicon.fromCodePoint(0x1f4df),
Emojicon.fromCodePoint(0x1f4e0),
Emojicon.fromCodePoint(0x1f4e1),
Emojicon.fromCodePoint(0x1f4fa),
Emojicon.fromCodePoint(0x1f4fb),
Emojicon.fromCodePoint(0x1f508),
Emojicon.fromCodePoint(0x1f509),
Emojicon.fromCodePoint(0x1f50a),
Emojicon.fromCodePoint(0x1f507),
Emojicon.fromCodePoint(0x1f514),
Emojicon.fromCodePoint(0x1f515),
Emojicon.fromCodePoint(0x1f4e2),
Emojicon.fromCodePoint(0x1f4e3),
Emojicon.fromChar((char) 0x23f3),
Emojicon.fromChar((char) 0x231b),
Emojicon.fromChar((char) 0x23f0),
Emojicon.fromChar((char) 0x231a),
Emojicon.fromCodePoint(0x1f513),
Emojicon.fromCodePoint(0x1f512),
Emojicon.fromCodePoint(0x1f50f),
Emojicon.fromCodePoint(0x1f510),
Emojicon.fromCodePoint(0x1f511),
Emojicon.fromCodePoint(0x1f50e),
Emojicon.fromCodePoint(0x1f4a1),
Emojicon.fromCodePoint(0x1f526),
Emojicon.fromCodePoint(0x1f506),
Emojicon.fromCodePoint(0x1f505),
Emojicon.fromCodePoint(0x1f50c),
Emojicon.fromCodePoint(0x1f50b),
Emojicon.fromCodePoint(0x1f50d),
Emojicon.fromCodePoint(0x1f6c1),
Emojicon.fromCodePoint(0x1f6c0),
Emojicon.fromCodePoint(0x1f6bf),
Emojicon.fromCodePoint(0x1f6bd),
Emojicon.fromCodePoint(0x1f527),
Emojicon.fromCodePoint(0x1f529),
Emojicon.fromCodePoint(0x1f528),
Emojicon.fromCodePoint(0x1f6aa),
Emojicon.fromCodePoint(0x1f6ac),
Emojicon.fromCodePoint(0x1f4a3),
Emojicon.fromCodePoint(0x1f52b),
Emojicon.fromCodePoint(0x1f52a),
Emojicon.fromCodePoint(0x1f48a),
Emojicon.fromCodePoint(0x1f489),
Emojicon.fromCodePoint(0x1f4b0),
Emojicon.fromCodePoint(0x1f4b4),
Emojicon.fromCodePoint(0x1f4b5),
Emojicon.fromCodePoint(0x1f4b7),
Emojicon.fromCodePoint(0x1f4b6),
Emojicon.fromCodePoint(0x1f4b3),
Emojicon.fromCodePoint(0x1f4b8),
Emojicon.fromCodePoint(0x1f4f2),
Emojicon.fromCodePoint(0x1f4e7),
Emojicon.fromCodePoint(0x1f4e5),
Emojicon.fromCodePoint(0x1f4e4),
Emojicon.fromChar((char) 0x2709),
Emojicon.fromCodePoint(0x1f4e9),
Emojicon.fromCodePoint(0x1f4e8),
Emojicon.fromCodePoint(0x1f4ef),
Emojicon.fromCodePoint(0x1f4eb),
Emojicon.fromCodePoint(0x1f4ea),
Emojicon.fromCodePoint(0x1f4ec),
Emojicon.fromCodePoint(0x1f4ed),
Emojicon.fromCodePoint(0x1f4ee),
Emojicon.fromCodePoint(0x1f4e6),
Emojicon.fromCodePoint(0x1f4dd),
Emojicon.fromCodePoint(0x1f4c4),
Emojicon.fromCodePoint(0x1f4c3),
Emojicon.fromCodePoint(0x1f4d1),
Emojicon.fromCodePoint(0x1f4ca),
Emojicon.fromCodePoint(0x1f4c8),
Emojicon.fromCodePoint(0x1f4c9),
Emojicon.fromCodePoint(0x1f4dc),
Emojicon.fromCodePoint(0x1f4cb),
Emojicon.fromCodePoint(0x1f4c5),
Emojicon.fromCodePoint(0x1f4c6),
Emojicon.fromCodePoint(0x1f4c7),
Emojicon.fromCodePoint(0x1f4c1),
Emojicon.fromCodePoint(0x1f4c2),
Emojicon.fromChar((char) 0x2702),
Emojicon.fromCodePoint(0x1f4cc),
Emojicon.fromCodePoint(0x1f4ce),
Emojicon.fromChar((char) 0x2712),
Emojicon.fromChar((char) 0x270f),
Emojicon.fromCodePoint(0x1f4cf),
Emojicon.fromCodePoint(0x1f4d0),
Emojicon.fromCodePoint(0x1f4d5),
Emojicon.fromCodePoint(0x1f4d7),
Emojicon.fromCodePoint(0x1f4d8),
Emojicon.fromCodePoint(0x1f4d9),
Emojicon.fromCodePoint(0x1f4d3),
Emojicon.fromCodePoint(0x1f4d4),
Emojicon.fromCodePoint(0x1f4d2),
Emojicon.fromCodePoint(0x1f4da),
Emojicon.fromCodePoint(0x1f4d6),
Emojicon.fromCodePoint(0x1f516),
Emojicon.fromCodePoint(0x1f4db),
Emojicon.fromCodePoint(0x1f52c),
Emojicon.fromCodePoint(0x1f52d),
Emojicon.fromCodePoint(0x1f4f0),
Emojicon.fromCodePoint(0x1f3a8),
Emojicon.fromCodePoint(0x1f3ac),
Emojicon.fromCodePoint(0x1f3a4),
Emojicon.fromCodePoint(0x1f3a7),
Emojicon.fromCodePoint(0x1f3bc),
Emojicon.fromCodePoint(0x1f3b5),
Emojicon.fromCodePoint(0x1f3b6),
Emojicon.fromCodePoint(0x1f3b9),
Emojicon.fromCodePoint(0x1f3bb),
Emojicon.fromCodePoint(0x1f3ba),
Emojicon.fromCodePoint(0x1f3b7),
Emojicon.fromCodePoint(0x1f3b8),
Emojicon.fromCodePoint(0x1f47e),
Emojicon.fromCodePoint(0x1f3ae),
Emojicon.fromCodePoint(0x1f0cf),
Emojicon.fromCodePoint(0x1f3b4),
Emojicon.fromCodePoint(0x1f004),
Emojicon.fromCodePoint(0x1f3b2),
Emojicon.fromCodePoint(0x1f3af),
Emojicon.fromCodePoint(0x1f3c8),
Emojicon.fromCodePoint(0x1f3c0),
Emojicon.fromChar((char) 0x26bd),
Emojicon.fromChar((char) 0x26be),
Emojicon.fromCodePoint(0x1f3be),
Emojicon.fromCodePoint(0x1f3b1),
Emojicon.fromCodePoint(0x1f3c9),
Emojicon.fromCodePoint(0x1f3b3),
Emojicon.fromChar((char) 0x26f3),
Emojicon.fromCodePoint(0x1f6b5),
Emojicon.fromCodePoint(0x1f6b4),
Emojicon.fromCodePoint(0x1f3c1),
Emojicon.fromCodePoint(0x1f3c7),
Emojicon.fromCodePoint(0x1f3c6),
Emojicon.fromCodePoint(0x1f3bf),
Emojicon.fromCodePoint(0x1f3c2),
Emojicon.fromCodePoint(0x1f3ca),
Emojicon.fromCodePoint(0x1f3c4),
Emojicon.fromCodePoint(0x1f3a3),
Emojicon.fromChar((char) 0x2615),
Emojicon.fromCodePoint(0x1f375),
Emojicon.fromCodePoint(0x1f376),
Emojicon.fromCodePoint(0x1f37c),
Emojicon.fromCodePoint(0x1f37a),
Emojicon.fromCodePoint(0x1f37b),
Emojicon.fromCodePoint(0x1f378),
Emojicon.fromCodePoint(0x1f379),
Emojicon.fromCodePoint(0x1f377),
Emojicon.fromCodePoint(0x1f374),
Emojicon.fromCodePoint(0x1f355),
Emojicon.fromCodePoint(0x1f354),
Emojicon.fromCodePoint(0x1f35f),
Emojicon.fromCodePoint(0x1f357),
Emojicon.fromCodePoint(0x1f356),
Emojicon.fromCodePoint(0x1f35d),
Emojicon.fromCodePoint(0x1f35b),
Emojicon.fromCodePoint(0x1f364),
Emojicon.fromCodePoint(0x1f371),
Emojicon.fromCodePoint(0x1f363),
Emojicon.fromCodePoint(0x1f365),
Emojicon.fromCodePoint(0x1f359),
Emojicon.fromCodePoint(0x1f358),
Emojicon.fromCodePoint(0x1f35a),
Emojicon.fromCodePoint(0x1f35c),
Emojicon.fromCodePoint(0x1f372),
Emojicon.fromCodePoint(0x1f362),
Emojicon.fromCodePoint(0x1f361),
Emojicon.fromCodePoint(0x1f373),
Emojicon.fromCodePoint(0x1f35e),
Emojicon.fromCodePoint(0x1f369),
Emojicon.fromCodePoint(0x1f36e),
Emojicon.fromCodePoint(0x1f366),
Emojicon.fromCodePoint(0x1f368),
Emojicon.fromCodePoint(0x1f367),
Emojicon.fromCodePoint(0x1f382),
Emojicon.fromCodePoint(0x1f370),
Emojicon.fromCodePoint(0x1f36a),
Emojicon.fromCodePoint(0x1f36b),
Emojicon.fromCodePoint(0x1f36c),
Emojicon.fromCodePoint(0x1f36d),
Emojicon.fromCodePoint(0x1f36f),
Emojicon.fromCodePoint(0x1f34e),
Emojicon.fromCodePoint(0x1f34f),
Emojicon.fromCodePoint(0x1f34a),
Emojicon.fromCodePoint(0x1f34b),
Emojicon.fromCodePoint(0x1f352),
Emojicon.fromCodePoint(0x1f347),
Emojicon.fromCodePoint(0x1f349),
Emojicon.fromCodePoint(0x1f353),
Emojicon.fromCodePoint(0x1f351),
Emojicon.fromCodePoint(0x1f348),
Emojicon.fromCodePoint(0x1f34c),
Emojicon.fromCodePoint(0x1f350),
Emojicon.fromCodePoint(0x1f34d),
Emojicon.fromCodePoint(0x1f360),
Emojicon.fromCodePoint(0x1f346),
Emojicon.fromCodePoint(0x1f345),
Emojicon.fromCodePoint(0x1f33d),
};
}

View file

@ -0,0 +1,214 @@
/*
* Copyright 2014 Ankush Sachdeva
*
* 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 github.ankushsachdeva.emojicon.emoji;
/**
* @author Hieu Rocker (rockerhieu@gmail.com)
*/
public class People {
public static final Emojicon[] DATA = new Emojicon[]{
Emojicon.fromCodePoint(0x1f604),
Emojicon.fromCodePoint(0x1f603),
Emojicon.fromCodePoint(0x1f600),
Emojicon.fromCodePoint(0x1f60a),
Emojicon.fromChar((char) 0x263a),
Emojicon.fromCodePoint(0x1f609),
Emojicon.fromCodePoint(0x1f60d),
Emojicon.fromCodePoint(0x1f618),
Emojicon.fromCodePoint(0x1f61a),
Emojicon.fromCodePoint(0x1f617),
Emojicon.fromCodePoint(0x1f619),
Emojicon.fromCodePoint(0x1f61c),
Emojicon.fromCodePoint(0x1f61d),
Emojicon.fromCodePoint(0x1f61b),
Emojicon.fromCodePoint(0x1f633),
Emojicon.fromCodePoint(0x1f601),
Emojicon.fromCodePoint(0x1f614),
Emojicon.fromCodePoint(0x1f60c),
Emojicon.fromCodePoint(0x1f612),
Emojicon.fromCodePoint(0x1f61e),
Emojicon.fromCodePoint(0x1f623),
Emojicon.fromCodePoint(0x1f622),
Emojicon.fromCodePoint(0x1f602),
Emojicon.fromCodePoint(0x1f62d),
Emojicon.fromCodePoint(0x1f62a),
Emojicon.fromCodePoint(0x1f625),
Emojicon.fromCodePoint(0x1f630),
Emojicon.fromCodePoint(0x1f605),
Emojicon.fromCodePoint(0x1f613),
Emojicon.fromCodePoint(0x1f629),
Emojicon.fromCodePoint(0x1f62b),
Emojicon.fromCodePoint(0x1f628),
Emojicon.fromCodePoint(0x1f631),
Emojicon.fromCodePoint(0x1f620),
Emojicon.fromCodePoint(0x1f621),
Emojicon.fromCodePoint(0x1f624),
Emojicon.fromCodePoint(0x1f616),
Emojicon.fromCodePoint(0x1f606),
Emojicon.fromCodePoint(0x1f60b),
Emojicon.fromCodePoint(0x1f637),
Emojicon.fromCodePoint(0x1f60e),
Emojicon.fromCodePoint(0x1f634),
Emojicon.fromCodePoint(0x1f635),
Emojicon.fromCodePoint(0x1f632),
Emojicon.fromCodePoint(0x1f61f),
Emojicon.fromCodePoint(0x1f626),
Emojicon.fromCodePoint(0x1f627),
Emojicon.fromCodePoint(0x1f608),
Emojicon.fromCodePoint(0x1f47f),
Emojicon.fromCodePoint(0x1f62e),
Emojicon.fromCodePoint(0x1f62c),
Emojicon.fromCodePoint(0x1f610),
Emojicon.fromCodePoint(0x1f615),
Emojicon.fromCodePoint(0x1f62f),
Emojicon.fromCodePoint(0x1f636),
Emojicon.fromCodePoint(0x1f607),
Emojicon.fromCodePoint(0x1f60f),
Emojicon.fromCodePoint(0x1f611),
Emojicon.fromCodePoint(0x1f472),
Emojicon.fromCodePoint(0x1f473),
Emojicon.fromCodePoint(0x1f46e),
Emojicon.fromCodePoint(0x1f477),
Emojicon.fromCodePoint(0x1f482),
Emojicon.fromCodePoint(0x1f476),
Emojicon.fromCodePoint(0x1f466),
Emojicon.fromCodePoint(0x1f467),
Emojicon.fromCodePoint(0x1f468),
Emojicon.fromCodePoint(0x1f469),
Emojicon.fromCodePoint(0x1f474),
Emojicon.fromCodePoint(0x1f475),
Emojicon.fromCodePoint(0x1f471),
Emojicon.fromCodePoint(0x1f47c),
Emojicon.fromCodePoint(0x1f478),
Emojicon.fromCodePoint(0x1f63a),
Emojicon.fromCodePoint(0x1f638),
Emojicon.fromCodePoint(0x1f63b),
Emojicon.fromCodePoint(0x1f63d),
Emojicon.fromCodePoint(0x1f63c),
Emojicon.fromCodePoint(0x1f640),
Emojicon.fromCodePoint(0x1f63f),
Emojicon.fromCodePoint(0x1f639),
Emojicon.fromCodePoint(0x1f63e),
Emojicon.fromCodePoint(0x1f479),
Emojicon.fromCodePoint(0x1f47a),
Emojicon.fromCodePoint(0x1f648),
Emojicon.fromCodePoint(0x1f649),
Emojicon.fromCodePoint(0x1f64a),
Emojicon.fromCodePoint(0x1f480),
Emojicon.fromCodePoint(0x1f47d),
Emojicon.fromCodePoint(0x1f4a9),
Emojicon.fromCodePoint(0x1f525),
Emojicon.fromChar((char) 0x2728),
Emojicon.fromCodePoint(0x1f31f),
Emojicon.fromCodePoint(0x1f4ab),
Emojicon.fromCodePoint(0x1f4a5),
Emojicon.fromCodePoint(0x1f4a2),
Emojicon.fromCodePoint(0x1f4a6),
Emojicon.fromCodePoint(0x1f4a7),
Emojicon.fromCodePoint(0x1f4a4),
Emojicon.fromCodePoint(0x1f4a8),
Emojicon.fromCodePoint(0x1f442),
Emojicon.fromCodePoint(0x1f440),
Emojicon.fromCodePoint(0x1f443),
Emojicon.fromCodePoint(0x1f445),
Emojicon.fromCodePoint(0x1f444),
Emojicon.fromCodePoint(0x1f44d),
Emojicon.fromCodePoint(0x1f44e),
Emojicon.fromCodePoint(0x1f44c),
Emojicon.fromCodePoint(0x1f44a),
Emojicon.fromChar((char) 0x270a),
Emojicon.fromChar((char) 0x270c),
Emojicon.fromCodePoint(0x1f44b),
Emojicon.fromChar((char) 0x270b),
Emojicon.fromCodePoint(0x1f450),
Emojicon.fromCodePoint(0x1f446),
Emojicon.fromCodePoint(0x1f447),
Emojicon.fromCodePoint(0x1f449),
Emojicon.fromCodePoint(0x1f448),
Emojicon.fromCodePoint(0x1f64c),
Emojicon.fromCodePoint(0x1f64f),
Emojicon.fromChar((char) 0x261d),
Emojicon.fromCodePoint(0x1f44f),
Emojicon.fromCodePoint(0x1f4aa),
Emojicon.fromCodePoint(0x1f6b6),
Emojicon.fromCodePoint(0x1f3c3),
Emojicon.fromCodePoint(0x1f483),
Emojicon.fromCodePoint(0x1f46b),
Emojicon.fromCodePoint(0x1f46a),
Emojicon.fromCodePoint(0x1f46c),
Emojicon.fromCodePoint(0x1f46d),
Emojicon.fromCodePoint(0x1f48f),
Emojicon.fromCodePoint(0x1f491),
Emojicon.fromCodePoint(0x1f46f),
Emojicon.fromCodePoint(0x1f646),
Emojicon.fromCodePoint(0x1f645),
Emojicon.fromCodePoint(0x1f481),
Emojicon.fromCodePoint(0x1f64b),
Emojicon.fromCodePoint(0x1f486),
Emojicon.fromCodePoint(0x1f487),
Emojicon.fromCodePoint(0x1f485),
Emojicon.fromCodePoint(0x1f470),
Emojicon.fromCodePoint(0x1f64e),
Emojicon.fromCodePoint(0x1f64d),
Emojicon.fromCodePoint(0x1f647),
Emojicon.fromCodePoint(0x1f3a9),
Emojicon.fromCodePoint(0x1f451),
Emojicon.fromCodePoint(0x1f452),
Emojicon.fromCodePoint(0x1f45f),
Emojicon.fromCodePoint(0x1f45e),
Emojicon.fromCodePoint(0x1f461),
Emojicon.fromCodePoint(0x1f460),
Emojicon.fromCodePoint(0x1f462),
Emojicon.fromCodePoint(0x1f455),
Emojicon.fromCodePoint(0x1f454),
Emojicon.fromCodePoint(0x1f45a),
Emojicon.fromCodePoint(0x1f457),
Emojicon.fromCodePoint(0x1f3bd),
Emojicon.fromCodePoint(0x1f456),
Emojicon.fromCodePoint(0x1f458),
Emojicon.fromCodePoint(0x1f459),
Emojicon.fromCodePoint(0x1f4bc),
Emojicon.fromCodePoint(0x1f45c),
Emojicon.fromCodePoint(0x1f45d),
Emojicon.fromCodePoint(0x1f45b),
Emojicon.fromCodePoint(0x1f453),
Emojicon.fromCodePoint(0x1f380),
Emojicon.fromCodePoint(0x1f302),
Emojicon.fromCodePoint(0x1f484),
Emojicon.fromCodePoint(0x1f49b),
Emojicon.fromCodePoint(0x1f499),
Emojicon.fromCodePoint(0x1f49c),
Emojicon.fromCodePoint(0x1f49a),
Emojicon.fromChar((char) 0x2764),
Emojicon.fromCodePoint(0x1f494),
Emojicon.fromCodePoint(0x1f497),
Emojicon.fromCodePoint(0x1f493),
Emojicon.fromCodePoint(0x1f495),
Emojicon.fromCodePoint(0x1f496),
Emojicon.fromCodePoint(0x1f49e),
Emojicon.fromCodePoint(0x1f498),
Emojicon.fromCodePoint(0x1f48c),
Emojicon.fromCodePoint(0x1f48b),
Emojicon.fromCodePoint(0x1f48d),
Emojicon.fromCodePoint(0x1f48e),
Emojicon.fromCodePoint(0x1f464),
Emojicon.fromCodePoint(0x1f465),
Emojicon.fromCodePoint(0x1f4ac),
Emojicon.fromCodePoint(0x1f463),
Emojicon.fromCodePoint(0x1f4ad),
};
}

View file

@ -0,0 +1,126 @@
/*
* Copyright 2014 Ankush Sachdeva
*
* 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 github.ankushsachdeva.emojicon.emoji;
/**
* @author Hieu Rocker (rockerhieu@gmail.com)
*/
public class Places {
public static final Emojicon[] DATA = new Emojicon[]{
Emojicon.fromCodePoint(0x1f3e0),
Emojicon.fromCodePoint(0x1f3e1),
Emojicon.fromCodePoint(0x1f3eb),
Emojicon.fromCodePoint(0x1f3e2),
Emojicon.fromCodePoint(0x1f3e3),
Emojicon.fromCodePoint(0x1f3e5),
Emojicon.fromCodePoint(0x1f3e6),
Emojicon.fromCodePoint(0x1f3ea),
Emojicon.fromCodePoint(0x1f3e9),
Emojicon.fromCodePoint(0x1f3e8),
Emojicon.fromCodePoint(0x1f492),
Emojicon.fromChar((char) 0x26ea),
Emojicon.fromCodePoint(0x1f3ec),
Emojicon.fromCodePoint(0x1f3e4),
Emojicon.fromCodePoint(0x1f307),
Emojicon.fromCodePoint(0x1f306),
Emojicon.fromCodePoint(0x1f3ef),
Emojicon.fromCodePoint(0x1f3f0),
Emojicon.fromChar((char) 0x26fa),
Emojicon.fromCodePoint(0x1f3ed),
Emojicon.fromCodePoint(0x1f5fc),
Emojicon.fromCodePoint(0x1f5fe),
Emojicon.fromCodePoint(0x1f5fb),
Emojicon.fromCodePoint(0x1f304),
Emojicon.fromCodePoint(0x1f305),
Emojicon.fromCodePoint(0x1f303),
Emojicon.fromCodePoint(0x1f5fd),
Emojicon.fromCodePoint(0x1f309),
Emojicon.fromCodePoint(0x1f3a0),
Emojicon.fromCodePoint(0x1f3a1),
Emojicon.fromChar((char) 0x26f2),
Emojicon.fromCodePoint(0x1f3a2),
Emojicon.fromCodePoint(0x1f6a2),
Emojicon.fromChar((char) 0x26f5),
Emojicon.fromCodePoint(0x1f6a4),
Emojicon.fromCodePoint(0x1f6a3),
Emojicon.fromChar((char) 0x2693),
Emojicon.fromCodePoint(0x1f680),
Emojicon.fromChar((char) 0x2708),
Emojicon.fromCodePoint(0x1f4ba),
Emojicon.fromCodePoint(0x1f681),
Emojicon.fromCodePoint(0x1f682),
Emojicon.fromCodePoint(0x1f68a),
Emojicon.fromCodePoint(0x1f689),
Emojicon.fromCodePoint(0x1f69e),
Emojicon.fromCodePoint(0x1f686),
Emojicon.fromCodePoint(0x1f684),
Emojicon.fromCodePoint(0x1f685),
Emojicon.fromCodePoint(0x1f688),
Emojicon.fromCodePoint(0x1f687),
Emojicon.fromCodePoint(0x1f69d),
Emojicon.fromCodePoint(0x1f68b),
Emojicon.fromCodePoint(0x1f683),
Emojicon.fromCodePoint(0x1f68e),
Emojicon.fromCodePoint(0x1f68c),
Emojicon.fromCodePoint(0x1f68d),
Emojicon.fromCodePoint(0x1f699),
Emojicon.fromCodePoint(0x1f698),
Emojicon.fromCodePoint(0x1f697),
Emojicon.fromCodePoint(0x1f695),
Emojicon.fromCodePoint(0x1f696),
Emojicon.fromCodePoint(0x1f69b),
Emojicon.fromCodePoint(0x1f69a),
Emojicon.fromCodePoint(0x1f6a8),
Emojicon.fromCodePoint(0x1f693),
Emojicon.fromCodePoint(0x1f694),
Emojicon.fromCodePoint(0x1f692),
Emojicon.fromCodePoint(0x1f691),
Emojicon.fromCodePoint(0x1f690),
Emojicon.fromCodePoint(0x1f6b2),
Emojicon.fromCodePoint(0x1f6a1),
Emojicon.fromCodePoint(0x1f69f),
Emojicon.fromCodePoint(0x1f6a0),
Emojicon.fromCodePoint(0x1f69c),
Emojicon.fromCodePoint(0x1f488),
Emojicon.fromCodePoint(0x1f68f),
Emojicon.fromCodePoint(0x1f3ab),
Emojicon.fromCodePoint(0x1f6a6),
Emojicon.fromCodePoint(0x1f6a5),
Emojicon.fromChar((char) 0x26a0),
Emojicon.fromCodePoint(0x1f6a7),
Emojicon.fromCodePoint(0x1f530),
Emojicon.fromChar((char) 0x26fd),
Emojicon.fromCodePoint(0x1f3ee),
Emojicon.fromCodePoint(0x1f3b0),
Emojicon.fromChar((char) 0x2668),
Emojicon.fromCodePoint(0x1f5ff),
Emojicon.fromCodePoint(0x1f3aa),
Emojicon.fromCodePoint(0x1f3ad),
Emojicon.fromCodePoint(0x1f4cd),
Emojicon.fromCodePoint(0x1f6a9),
Emojicon.fromChars("\ud83c\uddef\ud83c\uddf5"),
Emojicon.fromChars("\ud83c\uddf0\ud83c\uddf7"),
Emojicon.fromChars("\ud83c\udde9\ud83c\uddea"),
Emojicon.fromChars("\ud83c\udde8\ud83c\uddf3"),
Emojicon.fromChars("\ud83c\uddfa\ud83c\uddf8"),
Emojicon.fromChars("\ud83c\uddeb\ud83c\uddf7"),
Emojicon.fromChars("\ud83c\uddea\ud83c\uddf8"),
Emojicon.fromChars("\ud83c\uddee\ud83c\uddf9"),
Emojicon.fromChars("\ud83c\uddf7\ud83c\uddfa"),
Emojicon.fromChars("\ud83c\uddec\ud83c\udde7"),
};
}

View file

@ -0,0 +1,237 @@
/*
* Copyright 2014 Ankush Sachdeva
*
* 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 github.ankushsachdeva.emojicon.emoji;
/**
* @author Hieu Rocker (rockerhieu@gmail.com)
*/
public class Symbols {
public static final Emojicon[] DATA = new Emojicon[]{
Emojicon.fromChars("\u0031\u20e3"),
Emojicon.fromChars("\u0032\u20e3"),
Emojicon.fromChars("\u0033\u20e3"),
Emojicon.fromChars("\u0034\u20e3"),
Emojicon.fromChars("\u0035\u20e3"),
Emojicon.fromChars("\u0036\u20e3"),
Emojicon.fromChars("\u0037\u20e3"),
Emojicon.fromChars("\u0038\u20e3"),
Emojicon.fromChars("\u0039\u20e3"),
Emojicon.fromChars("\u0030\u20e3"),
Emojicon.fromCodePoint(0x1f51f),
Emojicon.fromCodePoint(0x1f522),
Emojicon.fromChars("\u0023\u20e3"),
Emojicon.fromCodePoint(0x1f523),
Emojicon.fromChar((char) 0x2b06),
Emojicon.fromChar((char) 0x2b07),
Emojicon.fromChar((char) 0x2b05),
Emojicon.fromChar((char) 0x27a1),
Emojicon.fromCodePoint(0x1f520),
Emojicon.fromCodePoint(0x1f521),
Emojicon.fromCodePoint(0x1f524),
Emojicon.fromChar((char) 0x2197),
Emojicon.fromChar((char) 0x2196),
Emojicon.fromChar((char) 0x2198),
Emojicon.fromChar((char) 0x2199),
Emojicon.fromChar((char) 0x2194),
Emojicon.fromChar((char) 0x2195),
Emojicon.fromCodePoint(0x1f504),
Emojicon.fromChar((char) 0x25c0),
Emojicon.fromChar((char) 0x25b6),
Emojicon.fromCodePoint(0x1f53c),
Emojicon.fromCodePoint(0x1f53d),
Emojicon.fromChar((char) 0x21a9),
Emojicon.fromChar((char) 0x21aa),
Emojicon.fromChar((char) 0x2139),
Emojicon.fromChar((char) 0x23ea),
Emojicon.fromChar((char) 0x23e9),
Emojicon.fromChar((char) 0x23eb),
Emojicon.fromChar((char) 0x23ec),
Emojicon.fromChar((char) 0x2935),
Emojicon.fromChar((char) 0x2934),
Emojicon.fromCodePoint(0x1f197),
Emojicon.fromCodePoint(0x1f500),
Emojicon.fromCodePoint(0x1f501),
Emojicon.fromCodePoint(0x1f502),
Emojicon.fromCodePoint(0x1f195),
Emojicon.fromCodePoint(0x1f199),
Emojicon.fromCodePoint(0x1f192),
Emojicon.fromCodePoint(0x1f193),
Emojicon.fromCodePoint(0x1f196),
Emojicon.fromCodePoint(0x1f4f6),
Emojicon.fromCodePoint(0x1f3a6),
Emojicon.fromCodePoint(0x1f201),
Emojicon.fromCodePoint(0x1f22f),
Emojicon.fromCodePoint(0x1f233),
Emojicon.fromCodePoint(0x1f235),
Emojicon.fromCodePoint(0x1f234),
Emojicon.fromCodePoint(0x1f232),
Emojicon.fromCodePoint(0x1f250),
Emojicon.fromCodePoint(0x1f239),
Emojicon.fromCodePoint(0x1f23a),
Emojicon.fromCodePoint(0x1f236),
Emojicon.fromCodePoint(0x1f21a),
Emojicon.fromCodePoint(0x1f6bb),
Emojicon.fromCodePoint(0x1f6b9),
Emojicon.fromCodePoint(0x1f6ba),
Emojicon.fromCodePoint(0x1f6bc),
Emojicon.fromCodePoint(0x1f6be),
Emojicon.fromCodePoint(0x1f6b0),
Emojicon.fromCodePoint(0x1f6ae),
Emojicon.fromCodePoint(0x1f17f),
Emojicon.fromChar((char) 0x267f),
Emojicon.fromCodePoint(0x1f6ad),
Emojicon.fromCodePoint(0x1f237),
Emojicon.fromCodePoint(0x1f238),
Emojicon.fromCodePoint(0x1f202),
Emojicon.fromChar((char) 0x24c2),
Emojicon.fromCodePoint(0x1f6c2),
Emojicon.fromCodePoint(0x1f6c4),
Emojicon.fromCodePoint(0x1f6c5),
Emojicon.fromCodePoint(0x1f6c3),
Emojicon.fromCodePoint(0x1f251),
Emojicon.fromChar((char) 0x3299),
Emojicon.fromChar((char) 0x3297),
Emojicon.fromCodePoint(0x1f191),
Emojicon.fromCodePoint(0x1f198),
Emojicon.fromCodePoint(0x1f194),
Emojicon.fromCodePoint(0x1f6ab),
Emojicon.fromCodePoint(0x1f51e),
Emojicon.fromCodePoint(0x1f4f5),
Emojicon.fromCodePoint(0x1f6af),
Emojicon.fromCodePoint(0x1f6b1),
Emojicon.fromCodePoint(0x1f6b3),
Emojicon.fromCodePoint(0x1f6b7),
Emojicon.fromCodePoint(0x1f6b8),
Emojicon.fromChar((char) 0x26d4),
Emojicon.fromChar((char) 0x2733),
Emojicon.fromChar((char) 0x2747),
Emojicon.fromChar((char) 0x274e),
Emojicon.fromChar((char) 0x2705),
Emojicon.fromChar((char) 0x2734),
Emojicon.fromCodePoint(0x1f49f),
Emojicon.fromCodePoint(0x1f19a),
Emojicon.fromCodePoint(0x1f4f3),
Emojicon.fromCodePoint(0x1f4f4),
Emojicon.fromCodePoint(0x1f170),
Emojicon.fromCodePoint(0x1f171),
Emojicon.fromCodePoint(0x1f18e),
Emojicon.fromCodePoint(0x1f17e),
Emojicon.fromCodePoint(0x1f4a0),
Emojicon.fromChar((char) 0x27bf),
Emojicon.fromChar((char) 0x267b),
Emojicon.fromChar((char) 0x2648),
Emojicon.fromChar((char) 0x2649),
Emojicon.fromChar((char) 0x264a),
Emojicon.fromChar((char) 0x264b),
Emojicon.fromChar((char) 0x264c),
Emojicon.fromChar((char) 0x264d),
Emojicon.fromChar((char) 0x264e),
Emojicon.fromChar((char) 0x264f),
Emojicon.fromChar((char) 0x2650),
Emojicon.fromChar((char) 0x2651),
Emojicon.fromChar((char) 0x2652),
Emojicon.fromChar((char) 0x2653),
Emojicon.fromChar((char) 0x26ce),
Emojicon.fromCodePoint(0x1f52f),
Emojicon.fromCodePoint(0x1f3e7),
Emojicon.fromCodePoint(0x1f4b9),
Emojicon.fromCodePoint(0x1f4b2),
Emojicon.fromCodePoint(0x1f4b1),
// Emoji.fromChar((char)0x00a9),
// Emoji.fromChar((char)0x00ae),
Emojicon.fromChar((char) 0xe24e),
Emojicon.fromChar((char) 0xe24f),
Emojicon.fromChar((char) 0x2122),
Emojicon.fromChar((char) 0x274c),
Emojicon.fromChar((char) 0x203c),
Emojicon.fromChar((char) 0x2049),
Emojicon.fromChar((char) 0x2757),
Emojicon.fromChar((char) 0x2753),
Emojicon.fromChar((char) 0x2755),
Emojicon.fromChar((char) 0x2754),
Emojicon.fromChar((char) 0x2b55),
Emojicon.fromCodePoint(0x1f51d),
Emojicon.fromCodePoint(0x1f51a),
Emojicon.fromCodePoint(0x1f519),
Emojicon.fromCodePoint(0x1f51b),
Emojicon.fromCodePoint(0x1f51c),
Emojicon.fromCodePoint(0x1f503),
Emojicon.fromCodePoint(0x1f55b),
Emojicon.fromCodePoint(0x1f567),
Emojicon.fromCodePoint(0x1f550),
Emojicon.fromCodePoint(0x1f55c),
Emojicon.fromCodePoint(0x1f551),
Emojicon.fromCodePoint(0x1f55d),
Emojicon.fromCodePoint(0x1f552),
Emojicon.fromCodePoint(0x1f55e),
Emojicon.fromCodePoint(0x1f553),
Emojicon.fromCodePoint(0x1f55f),
Emojicon.fromCodePoint(0x1f554),
Emojicon.fromCodePoint(0x1f560),
Emojicon.fromCodePoint(0x1f555),
Emojicon.fromCodePoint(0x1f556),
Emojicon.fromCodePoint(0x1f557),
Emojicon.fromCodePoint(0x1f558),
Emojicon.fromCodePoint(0x1f559),
Emojicon.fromCodePoint(0x1f55a),
Emojicon.fromCodePoint(0x1f561),
Emojicon.fromCodePoint(0x1f562),
Emojicon.fromCodePoint(0x1f563),
Emojicon.fromCodePoint(0x1f564),
Emojicon.fromCodePoint(0x1f565),
Emojicon.fromCodePoint(0x1f566),
Emojicon.fromChar((char) 0x2716),
Emojicon.fromChar((char) 0x2795),
Emojicon.fromChar((char) 0x2796),
Emojicon.fromChar((char) 0x2797),
Emojicon.fromChar((char) 0x2660),
Emojicon.fromChar((char) 0x2665),
Emojicon.fromChar((char) 0x2663),
Emojicon.fromChar((char) 0x2666),
Emojicon.fromCodePoint(0x1f4ae),
Emojicon.fromCodePoint(0x1f4af),
Emojicon.fromChar((char) 0x2714),
Emojicon.fromChar((char) 0x2611),
Emojicon.fromCodePoint(0x1f518),
Emojicon.fromCodePoint(0x1f517),
Emojicon.fromChar((char) 0x27b0),
Emojicon.fromChar((char) 0x3030),
Emojicon.fromChar((char) 0x303d),
Emojicon.fromCodePoint(0x1f531),
Emojicon.fromChar((char) 0x25fc),
Emojicon.fromChar((char) 0x25fb),
Emojicon.fromChar((char) 0x25fe),
Emojicon.fromChar((char) 0x25fd),
Emojicon.fromChar((char) 0x25aa),
Emojicon.fromChar((char) 0x25ab),
Emojicon.fromCodePoint(0x1f53a),
Emojicon.fromCodePoint(0x1f532),
Emojicon.fromCodePoint(0x1f533),
Emojicon.fromChar((char) 0x26ab),
Emojicon.fromChar((char) 0x26aa),
Emojicon.fromCodePoint(0x1f534),
Emojicon.fromCodePoint(0x1f535),
Emojicon.fromCodePoint(0x1f53b),
Emojicon.fromChar((char) 0x2b1c),
Emojicon.fromChar((char) 0x2b1b),
Emojicon.fromCodePoint(0x1f536),
Emojicon.fromCodePoint(0x1f537),
Emojicon.fromCodePoint(0x1f538),
Emojicon.fromCodePoint(0x1f539),
};
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 227 B

Some files were not shown because too many files have changed in this diff Show more