From: HyungKyu Song Date: Fri, 15 Feb 2013 15:52:35 +0000 (+0900) Subject: Tizen 2.0 Release X-Git-Tag: accepted/tizen_2.0/20130215.202451^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d1d62a817ac83e69de85b329ff00f155e255a162;p=apps%2Fhome%2Fmobileprint.git Tizen 2.0 Release --- diff --git a/AUTHORS b/AUTHORS new file mode 100644 index 0000000..16d062b --- /dev/null +++ b/AUTHORS @@ -0,0 +1,8 @@ +GangHeok Kim +Taeksu Shin +Dongwook Lee +Oleg Lekarev +Dmitriy Gonzha +Timofei Khirianov +Ilya Mankaev +Victor Malov diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..d92358b --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,32 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 2.6) + +INCLUDE(FindPkgConfig) +pkg_check_modules(pkgs REQUIRED + elementary + appcore-efl + bundle + syspopup-caller + glib-2.0 + ecore + eina + ecore-input + ecore-x + evas + dlog + edje + print-service + ui-gadget-1 + appsvc + capi-appfw-application + vconf + notification + pmapi + sysman + ) + +FOREACH(flag ${pkgs_CFLAGS}) + SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}") +ENDFOREACH(flag) + +ADD_SUBDIRECTORY(mobileprint) +ADD_SUBDIRECTORY(usb-printer-detector) diff --git a/LICENSE.Flora b/LICENSE.Flora new file mode 100644 index 0000000..9c95663 --- /dev/null +++ b/LICENSE.Flora @@ -0,0 +1,206 @@ +Flora License + +Version 1.0, May, 2012 + +http://floralicense.org/license/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, +and distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by +the copyright owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and +all other entities that control, are controlled by, or are +under common control with that entity. For the purposes of +this definition, "control" means (i) the power, direct or indirect, +to cause the direction or management of such entity, +whether by contract or otherwise, or (ii) ownership of fifty percent (50%) +or more of the outstanding shares, or (iii) beneficial ownership of +such entity. + +"You" (or "Your") shall mean an individual or Legal Entity +exercising permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, +including but not limited to software source code, documentation source, +and configuration files. + +"Object" form shall mean any form resulting from mechanical +transformation or translation of a Source form, including but +not limited to compiled object code, generated documentation, +and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or Object form, +made available under the License, as indicated by a copyright notice +that is included in or attached to the work (an example is provided +in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object form, +that is based on (or derived from) the Work and for which the editorial +revisions, annotations, elaborations, or other modifications represent, +as a whole, an original work of authorship. For the purposes of this License, +Derivative Works shall not include works that remain separable from, +or merely link (or bind by name) to the interfaces of, the Work and +Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including the original +version of the Work and any modifications or additions to that Work or +Derivative Works thereof, that is intentionally submitted to Licensor +for inclusion in the Work by the copyright owner or by an individual or +Legal Entity authorized to submit on behalf of the copyright owner. +For the purposes of this definition, "submitted" means any form of +electronic, verbal, or written communication sent to the Licensor or +its representatives, including but not limited to communication on +electronic mailing lists, source code control systems, and issue +tracking systems that are managed by, or on behalf of, the Licensor +for the purpose of discussing and improving the Work, but excluding +communication that is conspicuously marked or otherwise designated +in writing by the copyright owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity +on behalf of whom a Contribution has been received by Licensor and +subsequently incorporated within the Work. + +"Tizen Certified Platform" shall mean a software platform that complies +with the standards set forth in the Compatibility Definition Document +and passes the Compatibility Test Suite as defined from time to time +by the Tizen Technical Steering Group and certified by the Tizen +Association or its designated agent. + +2. Grant of Copyright License. Subject to the terms and conditions of +this License, each Contributor hereby grants to You a perpetual, +worldwide, non-exclusive, no-charge, royalty-free, irrevocable +copyright license to reproduce, prepare Derivative Works of, +publicly display, publicly perform, sublicense, and distribute the +Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of +this License, each Contributor hereby grants to You a perpetual, +worldwide, non-exclusive, no-charge, royalty-free, irrevocable +(except as stated in this section) patent license to make, have made, +use, offer to sell, sell, import, and otherwise transfer the Work +solely as incorporated into a Tizen Certified Platform, where such +license applies only to those patent claims licensable by such +Contributor that are necessarily infringed by their Contribution(s) +alone or by combination of their Contribution(s) with the Work solely +as incorporated into a Tizen Certified Platform to which such +Contribution(s) was submitted. If You institute patent litigation +against any entity (including a cross-claim or counterclaim +in a lawsuit) alleging that the Work or a Contribution incorporated +within the Work constitutes direct or contributory patent infringement, +then any patent licenses granted to You under this License for that +Work shall terminate as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the +Work or Derivative Works thereof pursuant to the copyright license +above, in any medium, with or without modifications, and in Source or +Object form, provided that You meet the following conditions: + + 1. You must give any other recipients of the Work or Derivative Works + a copy of this License; and + 2. You must cause any modified files to carry prominent notices stating + that You changed the files; and + 3. You must retain, in the Source form of any Derivative Works that + You distribute, all copyright, patent, trademark, and attribution + notices from the Source form of the Work, excluding those notices + that do not pertain to any part of the Derivative Works; and + 4. If the Work includes a "NOTICE" text file as part of its distribution, + then any Derivative Works that You distribute must include a readable + copy of the attribution notices contained within such NOTICE file, + excluding those notices that do not pertain to any part of + the Derivative Works, in at least one of the following places: + within a NOTICE text file distributed as part of the Derivative Works; + within the Source form or documentation, if provided along with the + Derivative Works; or, within a display generated by the Derivative Works, + if and wherever such third-party notices normally appear. + The contents of the NOTICE file are for informational purposes only + and do not modify the License. + +You may add Your own attribution notices within Derivative Works +that You distribute, alongside or as an addendum to the NOTICE text +from the Work, provided that such additional attribution notices +cannot be construed as modifying the License. You may add Your own +copyright statement to Your modifications and may provide additional or +different license terms and conditions for use, reproduction, or +distribution of Your modifications, or for any such Derivative Works +as a whole, provided Your use, reproduction, and distribution of +the Work otherwise complies with the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, +any Contribution intentionally submitted for inclusion in the Work +by You to the Licensor shall be under the terms and conditions of +this License, without any additional terms or conditions. +Notwithstanding the above, nothing herein shall supersede or modify +the terms of any separate license agreement you may have executed +with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade +names, trademarks, service marks, or product names of the Licensor, +except as required for reasonable and customary use in describing the +origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or +agreed to in writing, Licensor provides the Work (and each +Contributor provides its Contributions) on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +implied, including, without limitation, any warranties or conditions +of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A +PARTICULAR PURPOSE. You are solely responsible for determining the +appropriateness of using or redistributing the Work and assume any +risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, +whether in tort (including negligence), contract, or otherwise, +unless required by applicable law (such as deliberate and grossly +negligent acts) or agreed to in writing, shall any Contributor be +liable to You for damages, including any direct, indirect, special, +incidental, or consequential damages of any character arising as a +result of this License or out of the use or inability to use the +Work (including but not limited to damages for loss of goodwill, +work stoppage, computer failure or malfunction, or any and all +other commercial damages or losses), even if such Contributor +has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing +the Work or Derivative Works thereof, You may choose to offer, +and charge a fee for, acceptance of support, warranty, indemnity, +or other liability obligations and/or rights consistent with this +License. However, in accepting such obligations, You may act only +on Your own behalf and on Your sole responsibility, not on behalf +of any other Contributor, and only if You agree to indemnify, +defend, and hold each Contributor harmless for any liability +incurred by, or claims asserted against, such Contributor by reason +of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Flora License to your work + +To apply the Flora License to your work, attach the following +boilerplate notice, with the fields enclosed by brackets "[]" +replaced with your own identifying information. (Don't include +the brackets!) The text should be enclosed in the appropriate +comment syntax for the file format. We also recommend that a +file or class name and description of purpose be included on the +same "printed page" as the copyright notice for easier +identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Flora License, Version 1.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://floralicense.org/license/ + + 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. + diff --git a/NOTICE.Flora b/NOTICE.Flora new file mode 100644 index 0000000..f37f329 --- /dev/null +++ b/NOTICE.Flora @@ -0,0 +1,4 @@ +Copyright (c) Samsung Electronics Co., Ltd. All rights reserved. +Except as noted, this software is licensed under Flora License, Version 1. +Please, see the LICENSE.Flora file for Flora License terms and conditions. + diff --git a/debian/changelog b/debian/changelog new file mode 100755 index 0000000..9746981 --- /dev/null +++ b/debian/changelog @@ -0,0 +1,1190 @@ +mobileprint (0.2.15-55) unstable; urgency=low + + * Changed Flora license url + * Git: magnolia/apps/home/mobileprint + * Tag: mobileprint_0.2.15-55 + + -- GangHeok Kim Thu, 17 Jan 2013 18:52:25 +0900 + +mobileprint (0.2.15-54) unstable; urgency=low + + * Updated job processing routine in case of exception scenario + * Fixed PLM issues + * Disabled taskmanage + * Git: magnolia/apps/home/mobileprint + * Tag: mobileprint_0.2.15-54 + + -- Taeksu Shin Wed, 02 Jan 2013 20:50:28 +0900 + +mobileprint (0.2.15-53) unstable; urgency=low + + * Applied GUI icon images + * Git: magnolia/apps/home/mobileprint + * Tag: mobileprint_0.2.15-53 + + -- Taeksu Shin Fri, 21 Dec 2012 16:01:41 +0900 + +mobileprint (0.2.15-52) unstable; urgency=low + + * Changed log macro + * Git: magnolia/apps/home/mobileprint + * Tag: mobileprint_0.2.15-52 + + -- GangHeok Kim Mon, 17 Dec 2012 23:15:31 +0900 + +mobileprint (0.2.15-51) unstable; urgency=low + + * Updated no found popup routine + * Git: magnolia/apps/home/mobileprint + * Tag: mobileprint_0.2.15-51 + + -- Taeksu Shin Thu, 13 Dec 2012 19:24:04 +0900 + +mobileprint (0.2.15-50) unstable; urgency=low + + * Fixed the bug that preview is failed initially + * Git: magnolia/apps/home/mobileprint + * Tag: mobileprint_0.2.15-50 + + -- GangHeok Kim Fri, 07 Dec 2012 16:30:28 +0900 + +mobileprint (0.2.15-49) unstable; urgency=low + + * Updated Tag for SR + * Git: magnolia/apps/home/mobileprint + * Tag: mobileprint_0.2.15-49 + + -- GangHeok Kim Thu, 06 Dec 2012 20:44:10 +0900 + +mobileprint (0.2.15-48) unstable; urgency=low + + * Updated Tag for SR + * Git: magnolia/apps/home/mobileprint + * Tag: mobileprint_0.2.15-48 + + -- Taeksu Shin Wed, 05 Dec 2012 14:37:20 +0900 + +mobileprint (0.2.15-47) unstable; urgency=low + + * Updated display routine for printer label information + * Git: magnolia/apps/home/mobileprint + * Tag: mobileprint_0.2.15-47 + + -- Taeksu Shin Tue, 04 Dec 2012 22:18:49 +0900 + +mobileprint (0.2.15-46) unstable; urgency=low + + * Modified updating routine of printer label + * Applied min_menustyle in printer list popup + * Applied refresh button in printer list popup + * Git: magnolia/apps/home/mobileprint + * Tag: mobileprint_0.2.15-46 + + -- Taeksu Shin Sat, 24 Nov 2012 20:34:17 +0900 + +mobileprint (0.2.15-45) unstable; urgency=low + + * Fixed routine to show copies ctx popup in new conformant policy + * Git: magnolia/apps/home/mobileprint + * Tag: mobileprint_0.2.15-45 + + -- Taeksu Shin Fri, 23 Nov 2012 17:30:59 +0900 + +mobileprint (0.2.15-44) unstable; urgency=low + + * Applied custom theme of genlist item style to follow custom popup UX + * Git: magnolia/apps/home/mobileprint + * Tag: mobileprint_0.2.15-44 + + -- Taeksu Shin Thu, 15 Nov 2012 22:45:01 +0900 + +mobileprint (0.2.15-43) unstable; urgency=low + + * Update version to SR + * Git: magnolia/apps/home/mobileprint + * Tag: mobileprint_0.2.15-43 + + -- GangHeok Kim Tue, 13 Nov 2012 20:13:04 +0900 + +mobileprint (0.2.15-42) unstable; urgency=low + + * Modified get_file_type function + * Git: magnolia/apps/home/mobileprint + * Tag: mobileprint_0.2.15-42 + + -- GangHeok Kim Fri, 09 Nov 2012 19:47:09 +0900 + +mobileprint (0.2.15-41) unstable; urgency=low + + * Fixed to support desktop mode + * Git: magnolia/apps/home/mobileprint + * Tag: mobileprint_0.2.15-41 + + -- GangHeok Kim Wed, 07 Nov 2012 13:43:11 +0900 + +mobileprint (0.2.15-40) unstable; urgency=low + + * Fixed color option crash by garbage value + * Git: magnolia/apps/home/mobileprint + * Tag: mobileprint_0.2.15-40 + + -- Taeksu Shin Sat, 03 Nov 2012 20:13:53 +0900 + +mobileprint (0.2.15-39) unstable; urgency=low + + * Applied mobile print UX 2.0 based on new winset + * Git: magnolia/apps/home/mobileprint + * Tag: mobileprint_0.2.15-39 + + -- Taeksu Shin Sat, 03 Nov 2012 14:42:49 +0900 + +mobileprint (0.2.15-38) unstable; urgency=low + + * Fixed prevent error + * Git: magnolia/apps/home/mobileprint + * Tag: mobileprint_0.2.15-38 + + -- GangHeok Kim Fri, 02 Nov 2012 18:28:07 +0900 + +mobileprint (0.2.15-37) unstable; urgency=low + + * Fixed PLM issue (P121025-5769) + * Git: magnolia/apps/home/mobileprint + * Tag: mobileprint_0.2.15-37 + + -- Taeksu Shin Fri, 02 Nov 2012 00:41:31 +0900 + +mobileprint (0.2.15-36) unstable; urgency=low + + * Fixed to show setting view + * Git: magnolia/apps/home/mobileprint + * Tag: mobileprint_0.2.15-36 + + -- GangHeok Kim Thu, 01 Nov 2012 23:17:48 +0900 + +mobileprint (0.2.15-35) unstable; urgency=low + + * Applied New indicator + * Git: magnolia/apps/home/mobileprint + * Tag: mobileprint_0.2.15-35 + + -- GangHeok Kim Thu, 01 Nov 2012 00:05:29 +0900 + +mobileprint (0.2.15-34) unstable; urgency=low + + * Changed directory(/opt -> /opt/usr) + * Git: magnolia/apps/home/mobileprint + * Tag: mobileprint_0.2.15-34 + + -- GangHeok Kim Mon, 29 Oct 2012 18:33:40 +0900 + +mobileprint (0.2.15-33) unstable; urgency=low + + * Unified job progress routine + * Git: magnolia/apps/home/mobileprint + * Tag: mobileprint_0.2.15-33 + + -- Taeksu Shin Sat, 27 Oct 2012 16:36:52 +0900 + +mobileprint (0.2.15-32) unstable; urgency=low + + * Fixed PLM issues (P121025-5719, P121025-5720) + * Git: magnolia/apps/home/mobileprint + * Tag: mobileprint_0.2.15-32 + + -- Taeksu Shin Fri, 26 Oct 2012 16:31:27 +0900 + +mobileprint (0.2.15-31) unstable; urgency=low + + * Changed vconf key value(VCONFKEY_SYSMEN... -> VCONFKEY_SYSMAN...) + * Git: magnolia/apps/home/mobileprint + * Tag: mobileprint_0.2.15-31 + + -- GangHeok Kim Wed, 24 Oct 2012 14:29:00 +0900 + +mobileprint (0.2.15-30) unstable; urgency=low + + * Fixed crash in seleting printer in lists + * Git: magnolia/apps/home/mobileprint + * Tag: mobileprint_0.2.15-30 + + -- GangHeok Kim Tue, 23 Oct 2012 14:39:03 +0900 + +mobileprint (0.2.15-29) unstable; urgency=low + + * Recovered previous height value of custom popup + * Git: magnolia/apps/home/mobileprint + * Tag: mobileprint_0.2.15-29 + + -- Taeksu Shin Fri, 19 Oct 2012 18:47:18 +0900 + +mobileprint (0.2.15-28) unstable; urgency=low + + * Deleted smack rules + * Git: magnolia/apps/home/mobileprint + * Tag: mobileprint_0.2.15-28 + + -- GangHeok Kim Tue, 16 Oct 2012 15:30:00 +0900 + +mobileprint (0.2.15-27) unstable; urgency=low + + * Fixed smack manifest + * Git: magnolia/apps/home/mobileprint + * Tag: mobileprint_0.2.15-27 + + -- GangHeok Kim Mon, 15 Oct 2012 11:25:37 +0900 + +mobileprint (0.2.15-26) unstable; urgency=low + + * Fixed that after canceling custom size, preview image is changed to custom size + * Git: magnolia/apps/home/mobileprint + * Tag: mobileprint_0.2.15-26 + + -- GangHeok Kim Fri, 12 Oct 2012 21:26:44 +0900 + +mobileprint (0.2.15-25) unstable; urgency=low + + * Fixed custom size popup height + * Git: magnolia/apps/home/mobileprint + * Tag: mobileprint_0.2.15-25 + + -- GangHeok Kim Fri, 12 Oct 2012 21:11:29 +0900 + +mobileprint (0.2.15-24) unstable; urgency=low + + * Applied image custom size printing + * Git: magnolia/apps/home/mobileprint + * Tag: mobileprint_0.2.15-24 + + -- GangHeok Kim Fri, 12 Oct 2012 17:19:14 +0900 + +mobileprint (0.2.15-23) unstable; urgency=low + + * Added license file + * Git: magnolia/apps/home/mobileprint + * Tag: mobileprint_0.2.15-23 + + -- GangHeok Kim Fri, 12 Oct 2012 10:54:39 +0900 + +mobileprint (0.2.15-22) unstable; urgency=low + + * Code Clean up + * Git: magnolia/apps/home/mobileprint + * Tag: mobileprint_0.2.15-22 + + -- GangHeok Kim Wed, 10 Oct 2012 19:37:19 +0900 + +mobileprint (0.2.15-21) unstable; urgency=low + + * Applied SLP Coding Style + * Git: magnolia/apps/home/mobileprint + * Tag: mobileprint_0.2.15-21 + + -- GangHeok Kim Mon, 08 Oct 2012 11:08:17 +0900 + +mobileprint (0.2.15-20) unstable; urgency=low + + * Fixed CCR issues(17085, 17530) + * Git: magnolia/apps/home/mobileprint + * Tag: mobileprint_0.2.15-20 + + -- Taeksu Shin Thu, 04 Oct 2012 18:29:11 +0900 + +mobileprint (0.2.15-19) unstable; urgency=low + + * Applied image size printing without custom + * Git: magnolia/apps/home/mobileprint + * Tag: mobileprint_0.2.15-19 + + -- GangHeok Kim Thu, 27 Sep 2012 16:29:17 +0900 + +mobileprint (0.2.15-18) unstable; urgency=low + + * Added domain request in smack manifest file + * Git: magnolia/apps/home/mobileprint + * Tag: mobileprint_0.2.15-18 + + -- GangHeok Kim Fri, 21 Sep 2012 16:46:43 +0900 + +mobileprint (0.2.15-17) unstable; urgency=low + + * Added smack manifest file + * Git: magnolia/apps/home/mobileprint + * Tag: mobileprint_0.2.15-17 + + -- GangHeok Kim Fri, 21 Sep 2012 14:35:19 +0900 + +mobileprint (0.2.15-16) unstable; urgency=low + + * Added exception of HP printer modelname that include "Hewlett-Packard" + * Git: magnolia/apps/home/mobileprint + * Tag: mobileprint_0.2.15-16 + + -- GangHeok Kim Tue, 11 Sep 2012 15:53:34 +0900 + +mobileprint (0.2.15-15) unstable; urgency=low + + * Changed system() to popen or fork/exec function because of security + * Git: magnolia/apps/home/mobileprint + * Tag: mobileprint_0.2.15-15 + + -- GangHeok Kim Tue, 11 Sep 2012 13:39:47 +0900 + +mobileprint (0.2.15-14) unstable; urgency=low + + * Added pt_files field in job_spooling to do proper spooling operation + * Fixed compilation warning + * Added n_up field in job_spooling + * Fixed some crash by missed parameter checking + * Changed time of hiding main view to get better UX + * Git: magnolia/apps/home/mobileprint + * Tag: mobileprint_0.2.15-14 + + -- Taeksu Shin Thu, 06 Sep 2012 21:47:36 +0900 + +mobileprint (0.2.15-13) unstable; urgency=low + + * Fixed total page numer of quickpanel notification in case of n-up scenario + * Git: magnolia/apps/home/mobileprint + * Tag: mobileprint_0.2.15-13 + + -- Taeksu Shin Wed, 05 Sep 2012 16:59:55 +0900 + +mobileprint (0.2.15-12) unstable; urgency=low + + * Changed appsvc string to appcontrol + * Git: magnolia/apps/home/mobileprint + * Tag: mobileprint_0.2.15-12 + + -- GangHeok Kim Tue, 04 Sep 2012 21:38:23 +0900 + +mobileprint (0.2.15-11) unstable; urgency=low + + * Fixed incorrect size_popup/custom popup height in rotating + * Fixed crash in exiting mobileprint + * Git: magnolia/apps/home/mobileprint + * Tag: mobileprint_0.2.15-11 + + -- GangHeok Kim Tue, 04 Sep 2012 13:40:37 +0900 + +mobileprint (0.2.15-10) unstable; urgency=low + + * Changed updating notification routine + * Git: magnolia/apps/home/mobileprint + * Tag: mobileprint_0.2.15-10 + + -- Taeksu Shin Mon, 03 Sep 2012 20:29:29 +0900 + +mobileprint (0.2.15-9) unstable; urgency=low + + * Fixed n-up printing for PDF document + * Git: magnolia/apps/home/mobileprint + * Tag: mobileprint_0.2.15-9 + + -- GangHeok Kim Mon, 03 Sep 2012 14:58:40 +0900 + +mobileprint (0.2.15-8) unstable; urgency=low + + * Recover wrongly reverted page update routine + * Added dummy notification during image converting time + * Git: magnolia/apps/home/mobileprint + * Tag: mobileprint_0.2.15-8 + + -- Taeksu Shin Mon, 03 Sep 2012 14:00:11 +0900 + +mobileprint (0.2.15-7) unstable; urgency=low + + * Updated tag value for SR + * Updated page count routine for printing + * Added termination routine in case of no more job + * Git: magnolia/apps/home/mobileprint + * Tag: mobileprint_0.2.15-7 + + -- Taeksu Shin Sun, 02 Sep 2012 03:44:59 +0900 + +mobileprint (0.2.15-6) unstable; urgency=low + + * Updated page count routine + * Changed printer searching UX from view to popup in setting view + * Git: magnolia/apps/home/mobileprint + * Tag: mobileprint_0.2.15-6 + + -- Taeksu Shin Sat, 01 Sep 2012 18:48:00 +0900 + +mobileprint (0.2.15-5) unstable; urgency=low + + * Updated page count routine of job spooling to show properly in case of multiple page pdf + * Git: magnolia/apps/home/mobileprint + * Tag: mobileprint_0.2.15-5 + + -- Taeksu Shin Fri, 31 Aug 2012 19:11:25 +0900 + +mobileprint (0.2.15-4) unstable; urgency=low + + * Updated 51 languages po file + * Git: magnolia/apps/home/mobileprint + * Tag: mobileprint_0.2.15-4 + + -- GangHeok Kim Fri, 31 Aug 2012 13:55:06 +0900 + +mobileprint (0.2.15-3) unstable; urgency=low + + * Fixed popup height to change according to genlist item + * Git: magnolia/apps/home/mobileprint + * Tag: mobileprint_0.2.15-3 + + -- GangHeok Kim Fri, 31 Aug 2012 12:08:56 +0900 + +mobileprint (0.2.14-3) unstable; urgency=low + + * Fixed to show incorrect printer name in connecting USB printer + * Git: magnolia/apps/home/mobileprint + * Tag: mobileprint_0.2.14-3 + + -- GangHeok Kim Mon, 27 Aug 2012 19:57:51 +0900 + +mobileprint (0.2.13-3) unstable; urgency=low + + * Added removing routine of job_spooling_list + * Updated notification routine + * Fixed display bug between waiting and printing + * Git: magnolia/apps/home/mobileprint + * Tag: mobileprint_0.2.13-3 + + -- Taeksu Shin Sat, 25 Aug 2012 20:48:56 +0900 + +mobileprint (0.2.13-2) unstable; urgency=low + + * Updated job spooling routine + * Fixed crash bug of usb-printer-detector + * Git: magnolia/apps/home/mobileprint + * Tag: mobileprint_0.2.13-2 + + -- Taeksu Shin Fri, 24 Aug 2012 18:36:02 +0900 + +mobileprint (0.2.13-1) unstable; urgency=low + + * Printer searching flow is modified. Cleanup warning. + * Git: magnolia/apps/home/mobileprint. + * Tag: mobileprint_0.2.13-1 + + -- Dongwook Lee Mon, 20 Aug 2012 01:07:29 +0900 + +mobileprint (0.2.12-5) unstable; urgency=low + + * Applied ecore main loop pause/resume routine for safe evas operation in thread + * Updated custom size popup to follow UX + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.12-5 + + -- Taeksu Shin Mon, 20 Aug 2012 17:42:48 +0900 + +mobileprint (0.2.12-4) unstable; urgency=low + + * Changed to use cups usb backend to get usb printer name instead of usb-devices utility. + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.12-4 + + -- GangHeok Kim Sat, 18 Aug 2012 19:48:29 +0900 + +mobileprint (0.2.12-3) unstable; urgency=low + + * Replace contextpopup, "timepicker", with "datetime/default" according to EFL team's recommandation. + * "timepicker" style does not have "dismiss" event, which is causing ctxpot is not disappeared when it loose focus. + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.12-3 + + -- GangHeok Kim Fri, 17 Aug 2012 00:33:26 +0900 + +mobileprint (0.2.12-2) unstable; urgency=low + + * Added epson printer paper size case + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.12-2 + + -- GangHeok Kim Mon, 13 Aug 2012 11:18:38 +0900 + +mobileprint (0.2.12-1) unstable; urgency=low + + * Fixed setting view bug + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.12-1 + + -- Taeksu Shin Sun, 12 Aug 2012 22:50:51 +0900 + +mobileprint (0.2.11-21) unstable; urgency=low + + * Disabled to show main-view in wifi-qs case + * Added NULL check routine in preview source + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.11-21 + + -- GangHeok Kim Fri, 10 Aug 2012 14:44:08 +0900 + +mobileprint (0.2.11-20) unstable; urgency=low + + * Fixed PLM defect(P120806-3900) that mobileprint was crashed in search printer popup after rotating device + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.11-20 + + -- GangHeok Kim Fri, 10 Aug 2012 14:25:56 +0900 + +mobileprint (0.2.11-19) unstable; urgency=low + + * Added printer image for mobileprint noti + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.11-19 + + -- GangHeok Kim Fri, 10 Aug 2012 13:16:37 +0900 + +mobileprint (0.2.11-18) unstable; urgency=low + + * Applied winset GUI guide(margin, title Uppercase, ctxpopup) + * Removed unused image file + * Changed edc for whilt bg color + * Changed tickernoti position to top of screen + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.11-18 + + -- GangHeok Kim Wed, 08 Aug 2012 18:37:09 +0900 + +mobileprint (0.2.11-17) unstable; urgency=low + + * Applied new printing progress UX + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.11-17 + + -- Taeksu Shin Wed, 08 Aug 2012 00:34:59 +0900 + +mobileprint (0.2.11-16) unstable; urgency=low + + * Fixed issue that mobileprint is crashed in changing orientation after set size option. + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.11-16 + + -- GangHeok Kim Tue, 07 Aug 2012 18:00:24 +0900 + +mobileprint (0.2.11-15) unstable; urgency=low + + * Fixed missing winset popup button style in custom size popup and size popup + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.11-15 + + -- GangHeok Kim Tue, 07 Aug 2012 09:38:52 +0900 + +mobileprint (0.2.11-14) unstable; urgency=low + + * Added USB printer device name + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.11-14 + + -- GangHeok Kim Tue, 07 Aug 2012 00:21:57 +0900 + +mobileprint (0.2.11-13) unstable; urgency=low + + * Fixed winset popup button color and Changed print setting option according + to UX Guide + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.11-13 + + -- GangHeok Kim Mon, 06 Aug 2012 17:46:35 +0900 + +mobileprint (0.2.11-12) unstable; urgency=low + + * Applied scaling preview when selected predefiend size in size popup + * Recovered UG_INIT_EFL to launch UG properly + * Fixed radio button set bug of size popup in case of cancelation + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.11-12 + + -- Taeksu Shin Fri, 03 Aug 2012 21:52:45 +0900 + +mobileprint (0.2.11-11) unstable; urgency=low + + * fixed PLM defect(P120802-4098) that do not check device orientation in launching + * fixed that mobileprint is not raised when mobileprint is called by app_service in background + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.11-11 + + -- GangHeok Kim Thu, 02 Aug 2012 20:46:19 +0900 + +mobileprint (0.2.11-10) unstable; urgency=low + + * Changed appfw manifest install directory + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.11-10 + + -- GangHeok Kim Wed, 01 Aug 2012 11:21:27 +0900 + +mobileprint (0.2.11-9) unstable; urgency=low + + * Applied appfw manifest + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.11-9 + + -- GangHeok Kim Tue, 31 Jul 2012 11:17:04 +0900 + +mobileprint (0.2.11-8) unstable; urgency=low + + * Fixed elm_win_alpha_set bug in case of runtime changing + * Applied WEB type UX change + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.11-8 + + -- GangHeok Kim Sun, 29 Jul 2012 13:27:11 +0900 + +mobileprint (0.2.11-7) unstable; urgency=low + + * Enabled scaling button in main view + * Fixed not expandable bug of setting view + * Fixed shrinked bug of top/bottom menu in case of landscape mode + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.11-7 + + -- Taeksu Shin Thu, 26 Jul 2012 23:52:50 +0900 + +mobileprint (0.2.11-6) unstable; urgency=low + + * Applied multi-threaded multi-page preview generation patch of SMRC + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.11-6 + + -- Taeksu Shin Tue, 24 Jul 2012 19:49:53 +0900 + +mobileprint (0.2.11-5) unstable; urgency=low + + * Fixed to use DLOG for normal developer + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.11-5 + + -- GangHeok Kim Tue, 24 Jul 2012 14:17:53 +0900 + +mobileprint (0.2.10-5) unstable; urgency=low + + * Updated and Disabled appfw manifest file(com.samsung.mobileprint.xml / com.samsung.usb-printer-detector.xml) + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.10-5 + + -- GangHeok Kim Mon, 23 Jul 2012 20:53:47 +0900 + +mobileprint (0.2.10-4) unstable; urgency=low + + * Applied new UX 2nd time + * Fixed landscape BS + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.10-4 + + -- Taeksu Shin Sat, 21 Jul 2012 05:52:10 +0900 + +mobileprint (0.2.10-3) unstable; urgency=low + + * Applied new UX + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.10-3 + + -- Taeksu Shin Thu, 19 Jul 2012 20:22:54 +0900 + +mobileprint (0.2.10-2) unstable; urgency=low + + * Applied new ui-gadget package + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.10-2 + + -- Taeksu Shin Thu, 19 Jul 2012 19:44:33 +0900 + +mobileprint (0.2.10-1) unstable; urgency=low + + * Disabled auto rotation for new UX + * Replaced printer name label from optionheader(winset) to normal content + * Disabled file browse popup in case of USB OTG + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.10-1 + + -- Taeksu Shin Tue, 17 Jul 2012 10:18:44 +0900 + +mobileprint (0.2.9-22) unstable; urgency=low + + * Applied new tag for OBS SR + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.9-22 + + -- Taeksu Shin Wed, 11 Jul 2012 21:19:15 +0900 + +mobileprint (0.2.9-21) unstable; urgency=low + + * Fixed epson filter crash in case of unsupported papaer size + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.9-21 + + -- Taeksu Shin Wed, 11 Jul 2012 18:05:53 +0900 + +mobileprint (0.2.9-20) unstable; urgency=low + + * Fixed some jira defects + * Applied new UX + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.9-20 + + -- Taeksu Shin Tue, 10 Jul 2012 11:10:24 +0900 + +mobileprint (0.2.9-19) unstable; urgency=low + + * Fixed to accept filetype as app_service argument + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.9-19 + + -- GangHeok Kim Thu, 05 Jul 2012 21:36:32 +0900 + +mobileprint (0.2.8-18) unstable; urgency=low + + * Fixed crash by wrong checking routine of paper size for preview generation + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.8-18 + + -- Taeksu Shin Wed, 04 Jul 2012 21:51:04 +0900 + +mobileprint (0.2.8-17) unstable; urgency=low + + * Changed wifi operation from wifi-efl-UG to wifi-qs + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.8-17 + + -- Taeksu Shin Wed, 04 Jul 2012 13:58:21 +0900 + +mobileprint (0.2.8-16) unstable; urgency=low + + * Disabled new preview generation during printing state until spooling feature is applied. + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.8-16 + + -- Taeksu Shin Sat, 30 Jun 2012 16:14:49 +0900 + +mobileprint (0.2.8-15) unstable; urgency=low + + * Updated manifest for maintaining and disabled manifest + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.8-15 + + -- GangHeok Kim Tue, 26 Jun 2012 20:50:53 +0900 + +mobileprint (0.2.8-14) unstable; urgency=low + + * libpreviewgen speed-up hack by decreasing resolutions + * Print settings menu bugfixes + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.8-14 + + -- Dmitriy Gonzha Fri, 22 Jun 2012 18:56:31 +0400 + +mobileprint (0.2.8-13) unstable; urgency=low + + * Fixed some wrong used parameter and compilation warning + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.8-13 + + -- Taeksu Shin Thu, 21 Jun 2012 23:41:50 +0900 + +mobileprint (0.2.8-12) unstable; urgency=low + + * Applied preview and setting patch of SMRC + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.8-12 + + -- Taeksu Shin Tue, 19 Jun 2012 01:11:50 +0900 + +mobileprint (0.2.8-11) unstable; urgency=low + + * Fixed preview reset bug when launched by printing progress noti + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.8-11 + + -- Taeksu Shin Sat, 16 Jun 2012 00:18:59 +0900 + +mobileprint (0.2.8-10) unstable; urgency=low + + * Fixed preview generation bug in case of white space included file + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.8-10 + + -- Taeksu Shin Fri, 15 Jun 2012 19:45:00 +0900 + +mobileprint (0.2.8-9) unstable; urgency=low + + * Fixed preview options(i.e. fit-to-page and gray) in case of no active printer + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.8-9 + + -- Taeksu Shin Thu, 14 Jun 2012 17:47:16 +0900 + +mobileprint (0.2.8-8) unstable; urgency=low + + * Fixed preview image checking bug in case of used capital letter + * Commented out smack manifest field of spec file until policy is activated + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.8-8 + + -- Taeksu Shin Wed, 13 Jun 2012 10:59:36 +0900 + +mobileprint (0.2.8-7) unstable; urgency=low + + * Applied smack labeling + * Removed unused commented codes + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.8-7 + + -- Taeksu Shin Sat, 09 Jun 2012 01:26:35 +0900 + +mobileprint (0.2.8-6) unstable; urgency=low + + * Fixed cancel routine to remove spooling job progress noti + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.8-6 + + -- Taeksu Shin Fri, 08 Jun 2012 22:52:12 +0900 + +mobileprint (0.2.8-5) unstable; urgency=low + + * Fixed wrong update of USB printer noti + * Applied printer icon + * Fixed compilation warnings + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.8-5 + + -- Taeksu Shin Fri, 08 Jun 2012 15:35:14 +0900 + +mobileprint (0.2.8-4) unstable; urgency=low + + * Applied SMRC preview patch for gray + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.8-4 + + -- Taeksu Shin Tue, 05 Jun 2012 20:30:22 +0900 + +mobileprint (0.2.8-3) unstable; urgency=low + + * Applied SMRC preview patch + * Updated UPD string + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.8-3 + + -- Taeksu Shin Sat, 02 Jun 2012 14:44:40 +0900 + +mobileprint (0.2.8-2) unstable; urgency=low + + * Applied latest SMRC patch to support PDF preview and setting operation + * Updated UI based on UX document + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.8-2 + + -- Taeksu Shin Fri, 01 Jun 2012 17:43:18 +0900 + +mobileprint (0.2.8-1) unstable; urgency=low + + * Changed elm_win_activate() to evas_object_raise() with BT popup issue + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.8-1 + + -- GangHeok Kim Thu, 31 May 2012 11:06:59 +0900 + +mobileprint (0.2.7-9) unstable; urgency=low + + * Added missing desktop icon file in spec + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.7-9 + + -- GangHeok Kim Thu, 31 May 2012 10:43:46 +0900 + +mobileprint (0.2.7-8) unstable; urgency=low + + * changed desktop icon file path + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.7-8 + + -- GangHeok Kim Wed, 30 May 2012 20:06:21 +0900 + +mobileprint (0.2.7-7) unstable; urgency=low + + * Updated spooling job progress for popup + * Removed unused code + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.7-7 + + -- Taeksu Shin Fri, 25 May 2012 21:25:21 +0900 + +mobileprint (0.2.7-6) unstable; urgency=low + + * Added spooling job notification of quickpanel + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.7-6 + + -- Taeksu Shin Fri, 25 May 2012 15:27:12 +0900 + +mobileprint (0.2.7-5) unstable; urgency=low + + * added pm control routine for usb-printer-detector + * applied wifi connecting popup for mobileprint + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.7-5 + + -- Taeksu Shin Tue, 15 May 2012 21:48:28 +0900 + +mobileprint (0.2.7-4) unstable; urgency=low + + * added usb-printer-detector pacakge + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.7-4 + + -- GangHeok Kim Thu, 10 May 2012 15:32:03 +0900 + +mobileprint (0.2.7-3) unstable; urgency=low + + * fixed crash in calling by aul on background(Crash 18357, Bucket 45310) + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.7-3 + + -- GangHeok Kim Thu, 03 May 2012 21:49:09 +0900 + +mobileprint (0.2.6-3) unstable; urgency=low + + * changed desktop file to hide app icon + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.6-3 + + -- GangHeok Kim Thu, 26 Apr 2012 21:33:14 +0900 + +mobileprint (0.2.6-2) unstable; urgency=low + + * disabled to make mobileprint icon + * fixed obs build error + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.6-2 + + -- GangHeok Kim Thu, 26 Apr 2012 18:16:44 +0900 + +mobileprint (0.2.6-1) unstable; urgency=low + + * fixed mobileprint.spec to match version + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.6-1 + + -- GangHeok Kim Thu, 26 Apr 2012 13:16:28 +0900 + +mobileprint (0.2.5.3-1) unstable; urgency=low + + * disabled print setting view + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.5.3-1 + + -- GangHeok Kim Mon, 23 Apr 2012 17:57:36 +0900 + +mobileprint (0.2.5.2-1) unstable; urgency=low + + * Added pdf preview feature and color printing + * disabled print setting option + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.5.2-1 + + -- GangHeok Kim Mon, 16 Apr 2012 21:52:49 +0900 + +mobileprint (0.2.5.1-5) unstable; urgency=low + + * Added Build-Require to build rpm package + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.5.1-5 + + -- GangHeok Kim Fri, 13 Apr 2012 17:28:19 +0900 + +mobileprint (0.2.5.1-4) unstable; urgency=low + + * Changed Elementary API as EFL migration + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.5.1-4 + + -- GangHeok Kim Wed, 15 Feb 2012 17:28:52 +0900 + +mobileprint (0.2.5.0-4) unstable; urgency=low + + * Add usb hot-spot and multifile support + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.5.0-4 + + -- GangHeok Kim Wed, 08 Feb 2012 15:22:47 +0900 + +mobileprint (0.2.4.2-4) unstable; urgency=low + + * Modified CMakelist.txt + * Git: slp/apps/m/mobileprint + * Tag: mobileprint_0.2.4.2-4 + + -- GangHeok Kim Tue, 13 Dec 2011 18:58:17 +0900 + +mobileprint (0.2.4.2-3) unstable; urgency=low + + * Added job cancel feature + * Git: 165.213.180.234:slp/apps/m/mobileprint + * Tag: mobileprint_0.2.4.2-3 + + -- GangHeok Kim Fri, 09 Dec 2011 16:44:13 +0900 + +mobileprint (0.2.4.1-2) unstable; urgency=low + + * Added LICENSE + * Git: 165.213.180.234:slp/apps/m/mobileprint + * Tag: mobileprint_0.2.4.1-2 + + -- GangHeok Kim Fri, 02 Dec 2011 18:41:44 +0900 + +mobileprint (0.2.4.1-1) unstable; urgency=low + + * Added boilerplate + * Git: 165.213.180.234:slp/apps/m/mobileprint + * Tag: mobileprint_0.2.4.1-1 + + -- GangHeok Kim Fri, 02 Dec 2011 15:45:43 +0900 + +mobileprint (0.2.4.0-1) unstable; urgency=low + + * Changed internal api to Capi + * Git: 165.213.180.234:slp/apps/m/mobileprint + * Tag: mobileprint_0.2.4.0-1 + + -- GangHeok Kim Wed, 30 Nov 2011 14:20:52 +0900 + +ug-cups-printer-efl (0.2.3.4-5) unstable; urgency=low + + * Modified debian/changelog + * Git: 165.213.180.234:slp/apps/u/ug-cups-printer-efl + * Tag: ug-cups-printer-efl_0.2.3.4-5 + + -- GangHeok Kim Tue, 22 Nov 2011 09:39:18 +0900 + +ug-cups-printer-efl (0.2.3.4-4) unstable; urgency=low + + * Modified Maintainer email + * Git: 165.213.180.234:slp/apps/u/ug-cups-printer-efl + * Tag: mobileprint_0.2.3.4-4 + + -- GangHeok Kim Fri, 11 Nov 2011 21:23:23 +0900 + +ug-cups-printer-efl (0.2.3.4-3) unstable; urgency=low + + * Added disable ug_effect code + * Modified print tab bar position + * Git: 165.213.180.234:slp/apps/u/ug-cups-printer-efl + * Tag: mobileprint_0.2.3.4-3 + + -- GangHeok Kim Fri, 11 Nov 2011 21:23:23 +0900 + +ug-cups-printer-efl (0.2.3.3-3) unstable; urgency=low + + * Modified control file + * Git: 165.213.180.234:slp/apps/u/ug-cups-printer-efl + * Tag: mobileprint_0.2.3.3-3 + + -- GangHeok Kim Fri, 11 Nov 2011 21:23:23 +0900 + +mobileprint (0.2.3.3-2) unstable; urgency=low + + * Modified depends in control file + * Git: 165.213.180.234:slp/apps/u/ug-cups-printer-efl + * Tag: mobileprint_0.2.3.3-2 + + -- GangHeok Kim Fri, 11 Nov 2011 21:02:30 +0900 + +mobileprint (0.2.3.3-1) unstable; urgency=low + + * Changed navigationbar to naviframe + * Git: 165.213.180.234:slp/apps/u/ug-cups-printer-efl + * Tag: mobileprint_0.2.3.3-1 + + -- GangHeok Kim Sat, 05 Nov 2011 13:21:22 +0900 + +mobileprint (0.2.3.2-3) unstable; urgency=low + + * Added build-depends + * Git: 165.213.180.234:slp/apps/u/ug-cups-printer-efl + * Tag: mobileprint_0.2.3.2-3 + + -- GangHeok Kim Fri, 04 Nov 2011 16:41:54 +0900 + +mobileprint (0.2.3.2-2) unstable; urgency=low + + * Added maintainer + * Git: 165.213.180.234:slp/apps/u/ug-cups-printer-efl + * Tag: mobileprint_0.2.3.2-2 + + -- GangHeok Kim Fri, 04 Nov 2011 10:08:49 +0900 + +mobileprint (0.2.3.2-1) unstable; urgency=low + + * initial commit + * Git: 165.213.180.234:slp/apps/u/ug-cups-printer-efl + * Tag: mobileprint_0.2.3.2-1 + + -- GangHeok Kim Wed, 02 Nov 2011 20:25:14 +0900 + +mobileprint (0.2.3.2) unstable; urgency=low + + * hide the app icon and fix some bugs + * Git: slp-source.sec.samsung.net:slp/pkgs/m/mobileprint + * Tag: mobileprint_0.2.3.1 + + -- Shouchen Yin Thu, 27 Oct 2011 15:30:00 +0800 + +mobileprint (0.2.3.1) unstable; urgency=low + + * support pdf format + * Git: slp-source.sec.samsung.net:slp/pkgs/m/mobileprint + * Tag: mobileprint_0.2.3.1 + + -- Shouchen Yin Fri, 21 Oct 2011 15:30:00 +0800 + +mobileprint (0.2.0.3) unstable; urgency=low + + * change to new UI + * Git: slp-source.sec.samsung.net:slp/pkgs/m/mobileprint + * Tag: mobileprint_0.2.0.3 + + -- Shouchen Yin Mon, 17 Oct 2011 15:30:00 +0800 + +mobileprint (0.2.0.2) unstable; urgency=low + + * update for change ug to app + * Git: slp-source.sec.samsung.net:slp/pkgs/m/mobileprint + * Tag: mobileprint_0.2.0.2 + + -- Shouchen Yin Wed, 12 Oct 2011 14:00:51 +0800 + +mobileprint (0.2.0.1) unstable; urgency=low + + * update for change ug to app + * Git: slp-source.sec.samsung.net:slp/pkgs/m/mobileprint + * Tag: mobileprint_0.2.0.1 + + -- Shouchen Yin Wed, 28 Sep 2011 14:00:51 +0800 + +mobileprint (0.1.3.1) unstable; urgency=low + + * update for change ug to app + * Git: slp-source.sec.samsung.net:slp/pkgs/m/mobileprint + * Tag: mobileprint_0.1.3.1 + + -- Shouchen Yin Wed, 7 Sep 2011 14:00:51 +0800 + +mobileprint (0.1.1.1) unstable; urgency=low + + * update for change ug to app + * Git: slp-source.sec.samsung.net:slp/pkgs/m/mobileprint + * Tag: mobileprint_0.1.1.1 + + -- Shouchen Yin Wed, 24 Sep 2011 14:00:51 +0800 + +mobileprint (0.1.0.1) unstable; urgency=low + + * update for regarding media svc changes + * Git: slp-source.sec.samsung.net:slp/pkgs/m/mobileprint + * Tag: mobileprint_0.1.0.1 + + -- Hanwu Chen Fri, 12 Aug 2011 14:00:51 +0800 + + diff --git a/debian/compat b/debian/compat new file mode 100644 index 0000000..7ed6ff8 --- /dev/null +++ b/debian/compat @@ -0,0 +1 @@ +5 diff --git a/debian/control b/debian/control new file mode 100755 index 0000000..6b17dbb --- /dev/null +++ b/debian/control @@ -0,0 +1,47 @@ +Source: mobileprint +Section: devel +Priority: extra +Maintainer: GangHeok Kim , Taeksu Shin , Dongwook Lee +Uploaders: GangHeok Kim , Taeksu Shin , Dongwook Lee +Build-Depends: debhelper (>= 5), + libelm-dev, + dlog-dev, + libappsvc-dev, + print-service-dev, + libslp-utilx-dev, + libui-gadget-dev, + libappcore-efl-dev, + capi-appfw-application, + capi-appfw-application-dev, + syspopup-caller-dev, + libnotification-dev, + libslp-pm-dev, +Standards-Version: 0.1.0 + +Package: org.tizen.mobileprint +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends}, + print-service, + poppler-utils, +Description: Mobile Print application + +Package: org.tizen.mobileprint-dbg +Section: debug +Architecture: any +Depends: org.tizen.mobileprint(= ${Source-Version}) +Description: SLP Mobile Print UI Gadget(unstripped) + +Package: org.tizen.usb-printer-detector +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends}, + print-service, + poppler-utils, +Description: USB OTG Printer popup application + +Package: org.tizen.usb-printer-detector-dbg +Section: debug +Architecture: any +Depends: org.tizen.usb-printer-detector(= ${Source-Version}) +Description: USB OTG Printer popup application debug pkg + + diff --git a/debian/docs b/debian/docs new file mode 100644 index 0000000..a0f0008 --- /dev/null +++ b/debian/docs @@ -0,0 +1 @@ +CMakeLists.txt diff --git a/debian/org.tizen.mobileprint.install.in b/debian/org.tizen.mobileprint.install.in new file mode 100755 index 0000000..0a10ccd --- /dev/null +++ b/debian/org.tizen.mobileprint.install.in @@ -0,0 +1,2 @@ +@PREFIX@/* +/opt/share/applications/org.tizen.mobileprint.desktop diff --git a/debian/org.tizen.mobileprint.postinst.in b/debian/org.tizen.mobileprint.postinst.in new file mode 100755 index 0000000..0d11bb0 --- /dev/null +++ b/debian/org.tizen.mobileprint.postinst.in @@ -0,0 +1,10 @@ +#!/bin/sh + +if [ ${USER} = "root" ] +then +# Change file owner + chown -R 5000:5000 @PREFIX@/data + chown -R 5000:5000 @PREFIX@/cache +fi + +echo "Done" diff --git a/debian/org.tizen.usb-printer-detector.install.in b/debian/org.tizen.usb-printer-detector.install.in new file mode 100644 index 0000000..b2bc537 --- /dev/null +++ b/debian/org.tizen.usb-printer-detector.install.in @@ -0,0 +1,2 @@ +/opt/usr/apps/org.tizen.usb-printer-detector/* +/opt/share/applications/org.tizen.usb-printer-detector.desktop diff --git a/debian/rules b/debian/rules new file mode 100755 index 0000000..1fb88f6 --- /dev/null +++ b/debian/rules @@ -0,0 +1,116 @@ +#!/usr/bin/make -f +# -*- makefile -*- +# Sample debian/rules that uses debhelper. +# This file was originally written by Joey Hess and Craig Small. +# As a special exception, when this file is copied by dh-make into a +# dh-make output file, you may use that output file without restriction. +# This special exception was added by Craig Small in version 0.37 of dh-make. + +# Uncomment this to turn on verbose mode. +export DH_VERBOSE=1 + +CFLAGS += -Wall -g +LDFLAGS ?= +PREFIX ?= /opt/usr/apps/org.tizen.mobileprint +RESDIR ?= ${PREFIX}/res +UGDIR ?= /opt/ug + +ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) + CFLAGS += -O0 +else + CFLAGS += -O2 +endif + +LDFLAGS += -Wl,--hash-style=both -Wl,--rpath=/usr/lib -Wl,--rpath=${UGDIR}/lib -Wl,--as-needed + +CMAKE_BUILD_DIR ?= $(CURDIR)/cmake_build_tmp + +configure: configure-stamp +configure-stamp: + dh_testdir + # Add here commands to configure the package. + mkdir -p $(CMAKE_BUILD_DIR) && cd $(CMAKE_BUILD_DIR) && \ + CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" cmake .. -DCMAKE_INSTALL_PREFIX="$(PREFIX)" + + touch configure-stamp + +build: build-stamp + +build-stamp: configure-stamp + dh_testdir + + # Add here commands to compile the package. + cd $(CMAKE_BUILD_DIR) && $(MAKE) + + for f in `find $(CURDIR)/debian/ -name "*.in"`; do \ + cat $$f > $${f%.in}; \ + sed -i -e "s#@PREFIX@#$(PREFIX)#g" $${f%.in}; \ + sed -i -e "s#@RESDIR@#$(RESDIR)#g" $${f%.in}; \ + sed -i -e "s#@UGDATADIR@#$(UGDATADIR)#g" $${f%.in}; \ + sed -i -e "s#@UGDIR@#$(UGDIR)#g" $${f%.in}; \ + done + + + touch $@ + +clean: + dh_testdir + dh_testroot + rm -f build-stamp configure-stamp + + # Add here commands to clean up after the build process. + rm -rf $(CMAKE_BUILD_DIR) + + for f in `find $(CURDIR)/debian/ -name "*.in"`; do \ + rm -f $${f%.in}; \ + done + + dh_clean + +install: build + dh_testdir + dh_testroot + dh_clean -k + dh_installdirs + + # Add here commands to install the package into debian/mobileprint. + cd $(CMAKE_BUILD_DIR) && $(MAKE) DESTDIR=$(CURDIR)/debian/tmp install + + +# Build architecture-independent files here. +binary-indep: build install +# We have nothing to do by default. + +# Build architecture-dependent files here. +binary-arch: build install + dh_testdir + dh_testroot +# dh_installchangelogs +# dh_installdocs + dh_installexamples + dh_install --sourcedir=debian/tmp +# dh_installmenu +# dh_installdebconf +# dh_installlogrotate +# dh_installemacsen +# dh_installpam +# dh_installmime +# dh_python +# dh_installinit +# dh_installcron +# dh_installinfo + dh_installman + dh_link + dh_strip --dbg-package=org.tizen.mobileprint-dbg --dbg-package=org.tizen.usb-printer-detector-dbg + dh_compress + dh_fixperms +# dh_perl + dh_makeshlibs + dh_installdeb + dh_shlibdeps + dh_gencontrol + dh_md5sums + dh_builddeb + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary install configure diff --git a/mobileprint/CMakeLists.txt b/mobileprint/CMakeLists.txt new file mode 100644 index 0000000..7b7f6a9 --- /dev/null +++ b/mobileprint/CMakeLists.txt @@ -0,0 +1,74 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 2.6) +PROJECT(mobileprint C) + +#################################### +########## SET Directory ########### +#################################### +SET(VENDOR "tizen") +SET(PACKAGE ${PROJECT_NAME}) +SET(PKGNAME "org.${VENDOR}.${PACKAGE}") +SET(PREFIX ${CMAKE_INSTALL_PREFIX}) +SET(BINDIR "${PREFIX}/bin") +SET(RESDIR "${PREFIX}/res") +SET(DATADIR "${PREFIX}/data") +SET(CACHEDIR "${PREFIX}/cache") +SET(LOCALEDIR "${RESDIR}/locale") +SET(EDC_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/edc") +SET(EDJDIR "${RESDIR}/edje/") +SET(IMGDIR "${RESDIR}/images/") +set(VERSION "0.2.6") + + +IF("${CMAKE_BUILD_TYPE}" STREQUAL "") + SET(CMAKE_BUILD_TYPE "Release") +ENDIF("${CMAKE_BUILD_TYPE}" STREQUAL "") +MESSAGE("Build type: ${CMAKE_BUILD_TYPE}") + +#################################### +########### SET INCLUDE ############ +#################################### +INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/include) +INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/previewgen/include) + +SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden") +SET(CMAKE_C_FLAGS_DEBUG "-O0 -g") +SET(CMAKE_C_FLAGS_RELEASE "-O2") + +FIND_PROGRAM(UNAME NAMES uname) +EXEC_PROGRAM("${UNAME}" ARGS "-m" OUTPUT_VARIABLE "ARCH") +IF("${ARCH}" STREQUAL "arm") + ADD_DEFINITIONS("-DTARGET") + MESSAGE("add -DTARGET") +ENDIF("${ARCH}" STREQUAL "arm") + + +ADD_DEFINITIONS("-DVENDOR=\"${VENDOR}\"") +ADD_DEFINITIONS("-DPACKAGE=\"${PACKAGE}\"") +ADD_DEFINITIONS("-DPACKAGE_NAME=\"${PKGNAME}\"") +ADD_DEFINITIONS("-DPREFIX=\"${PREFIX}\"") +ADD_DEFINITIONS("-DLOCALEDIR=\"${LOCALEDIR}\"") +ADD_DEFINITIONS("-DEDJDIR=\"${EDJDIR}\"") +ADD_DEFINITIONS("-DRESDIR=\"${RESDIR}\"") +ADD_DEFINITIONS("-DIMGDIR=\"${IMGDIR}\"") +ADD_DEFINITIONS("-DDATADIR=\"${DATADIR}\"") +ADD_DEFINITIONS("-DUGDATADIR=\"${UGDATADIR}\"") +ADD_DEFINITIONS("-DCONFIG_PRINT_SETTING") + + +##################################################### +########### install desktop file & icon ############# +##################################################### +#CONFIGURE_FILE(${PROJECT_NAME}.desktop.in ${PKGNAME}.desktop) +#INSTALL(FILES ${CMAKE_BINARY_DIR}/${PACKAGE}/${PKGNAME}.desktop DESTINATION "/opt/share/applications") +#for appfw new manifest +CONFIGURE_FILE(${PROJECT_NAME}.xml ${PKGNAME}.xml) +INSTALL(FILES ${CMAKE_BINARY_DIR}/${PACKAGE}/${PKGNAME}.xml DESTINATION "/opt/share/packages/") +INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/images/ DESTINATION ${IMGDIR}) +INSTALL(DIRECTORY DESTINATION ${DATADIR}) +INSTALL(DIRECTORY DESTINATION ${CACHEDIR}) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/previewgen/rasterview.ppd DESTINATION ${DATADIR}) + +ADD_SUBDIRECTORY(previewgen) +ADD_SUBDIRECTORY(app) +ADD_SUBDIRECTORY(po) + diff --git a/mobileprint/app/CMakeLists.txt b/mobileprint/app/CMakeLists.txt new file mode 100644 index 0000000..1132603 --- /dev/null +++ b/mobileprint/app/CMakeLists.txt @@ -0,0 +1,43 @@ +LINK_DIRECTORIES(${CMAKE_BINARY_DIR}/mobileprint) +LINK_DIRECTORIES(${CMAKE_BINARY_DIR}/mobileprint/previewgen/lib) + +FILE(GLOB SRCS *.c) + +INCLUDE(FindPkgConfig) +pkg_check_modules(app_pkgs REQUIRED utilX) + +FOREACH(flag ${app_pkgs_CFLAGS}) + SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}") +ENDFOREACH(flag) + +SET(app_pkgs_LDFLAGS "${pkgs_LDFLAGS} ${app_pkgs_LDFLAGS}") + +ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_BINARY_DIR}/mobileprint.edj + COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/images + ${EDC_SRC_DIR}/mobileprint.edc ${CMAKE_BINARY_DIR}/mobileprint.edj + DEPENDS ${EDC_SRC_DIR}/mobileprint.edc ${EDC_SRC_DIR}/mobileprint.edc + ) + +ADD_CUSTOM_TARGET(mobileprint_edj_build DEPENDS ${CMAKE_BINARY_DIR}/mobileprint.edj) + +INSTALL(FILES ${CMAKE_BINARY_DIR}/mobileprint.edj DESTINATION ${EDJDIR}) + +ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_BINARY_DIR}/genlist_custom.edj + COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/images + ${EDC_SRC_DIR}/genlist_custom.edc ${CMAKE_BINARY_DIR}/genlist_custom.edj + DEPENDS ${EDC_SRC_DIR}/genlist_custom.edc ${EDC_SRC_DIR}/genlist_custom.edc + ) + +ADD_CUSTOM_TARGET(genlist_custom_edj_build DEPENDS ${CMAKE_BINARY_DIR}/genlist_custom.edj) + +INSTALL(FILES ${CMAKE_BINARY_DIR}/genlist_custom.edj DESTINATION ${EDJDIR}) + + +ADD_EXECUTABLE(${PROJECT_NAME} ${SRCS}) +SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES COMPILE_FLAGS "${EXTRA_CFLAGS} -fpie") +TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${app_pkgs_LDFLAGS} -lprint-service -lpreviewgen -lecore_evas) + +ADD_DEPENDENCIES(${PROJECT_NAME} mobileprint_edj_build genlist_custom_edj_build) + +INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${BINDIR}) +INSTALL(FILES icon_${PROJECT_NAME}.png DESTINATION "/opt/share/icons/default/small" RENAME "${PKGNAME}.png") diff --git a/mobileprint/app/icon_mobileprint.png b/mobileprint/app/icon_mobileprint.png new file mode 100644 index 0000000..e32c752 Binary files /dev/null and b/mobileprint/app/icon_mobileprint.png differ diff --git a/mobileprint/app/image_editor_conn.c b/mobileprint/app/image_editor_conn.c new file mode 100644 index 0000000..877d197 --- /dev/null +++ b/mobileprint/app/image_editor_conn.c @@ -0,0 +1,139 @@ +/* +* Mobileprint +* +* Copyright 2012 Samsung Electronics Co., Ltd + +* Licensed under the Flora License, Version 1.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://floralicense.org/license/ + +* 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. +* +*/ + +#include +#include "pts_common.h" +#include "pts_main_view.h" +#include "image_editor_conn.h" + +#define IMAGE_EDITOR_STR_MAX_LEN 64 + +extern int size_index; + +void image_editor_layout_cb(ui_gadget_h ug, enum ug_mode mode, void *priv) +{ + PTS_TRACE_BEGIN; + Evas_Object *base; + Evas_Object *win; + + base = (Evas_Object *) ug_get_layout(ug); + win = ug_get_window(); + evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_win_resize_object_add(win, base); + + /* Disable effect to avoid BS caused by ui-gadget to + unset ug layout after deleting it */ + ug_disable_effect(ug); + evas_object_show(base); + + PTS_TRACE_END; +} + + +void image_editor_result_cb(ui_gadget_h ug, service_h result, void *priv) +{ + PTS_TRACE_BEGIN; + pts_core_data_t *ugd = (pts_core_data_t *)priv; + PTS_RET_IF(ugd == NULL, "ugd is NULL"); + + char *path = NULL; + service_get_extra_data(result, "crop_image_path", &path); + + if (path) { + /* save path */ + PTS_IF_FREE_MEM(ugd->pt_files.request_files[0]); + ugd->pt_files.request_files[0] = strdup(path); + PTS_DEBUG("crop_image_path: %s", path); + pts_main_view_rotate_image(ugd, app_get_device_orientation()); + size_index = ugd->image_size; // When crop is done, then save the index. + } else { + PTS_DEBUG("no crop_image_path"); + } + PTS_TRACE_END; +} + + +void image_editor_destroy_cb(ui_gadget_h ug, void *priv) +{ + PTS_TRACE_BEGIN; + pts_core_data_t *ugd = (pts_core_data_t *)priv; + PTS_RET_IF(ugd == NULL || ug == NULL, "Invalid argument"); + ug_destroy(ug); + PTS_TRACE_END; +} + + +int load_image_editor_ug(pts_core_data_t *ugd) +{ + PTS_TRACE_BEGIN; + PTS_RETV_IF(ugd == NULL, -1, "ugd is NULL"); + + struct ug_cbs image_editor_cbs; + ui_gadget_h ug = NULL; + service_h service = NULL; + char reso_str[IMAGE_EDITOR_STR_MAX_LEN + 1]; + int w = 300; + int h = 300; + + switch (ugd->image_size) { + case PTS_SIZE_FIT_TO_PAPER: + break; + case PTS_SIZE_5X7: + w = w * 1.2; + break; + case PTS_SIZE_4X6: + w = w * 1.5; + break; + case PTS_SIZE_3_5X5: + w = w * 1.43; + break; + case PTS_SIZE_WALLET: + w = w * 1.31; + break; + case PTS_SIZE_CUSTOM: + w = w * (ugd->custom_width / ugd->custom_height); + PTS_DEBUG("Passed custom ratio : %dx%d", w, h); + break; + default: + break; + } + + memset(&image_editor_cbs,0x00,sizeof(struct ug_cbs)); + image_editor_cbs.layout_cb = image_editor_layout_cb; + image_editor_cbs.result_cb = image_editor_result_cb; + image_editor_cbs.destroy_cb = image_editor_destroy_cb; + image_editor_cbs.priv = ugd; + + service_create(&service); + service_add_extra_data(service, "View Mode", "SETAS"); + service_add_extra_data(service, "Path", ugd->input_file); + service_add_extra_data(service, "Setas type", "Crop"); + service_add_extra_data(service, "Fixed ratio", "TRUE"); + + snprintf(reso_str, IMAGE_EDITOR_STR_MAX_LEN, "%dx%d", w, h); + service_add_extra_data(service, "Resolution", reso_str); + PTS_DEBUG("Passed resolution : %s", reso_str); + + ug_create(ug, "image-viewer-efl", UG_MODE_FULLVIEW, service, &image_editor_cbs); + service_destroy(service); + + PTS_TRACE_END; + return 0; +} + diff --git a/mobileprint/app/loading_animation.c b/mobileprint/app/loading_animation.c new file mode 100644 index 0000000..95570df --- /dev/null +++ b/mobileprint/app/loading_animation.c @@ -0,0 +1,51 @@ +/* +* Mobileprint +* +* Copyright 2012 Samsung Electronics Co., Ltd + +* Licensed under the Flora License, Version 1.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://floralicense.org/license/ + +* 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. +* +*/ + +#include "loading_animation.h" + +Evas_Object *loading_animation_add(Evas_Object *parent) +{ + Evas_Object *res; + res = elm_progressbar_add(parent); + PTS_RETV_IF(res == NULL, NULL, "res is NULL"); + + elm_object_style_set(res, "list_process"); + evas_object_size_hint_align_set(res, EVAS_HINT_FILL, 0.5); + evas_object_size_hint_weight_set(res, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_progressbar_pulse(res, EINA_TRUE); + elm_object_part_content_set(parent, "process_animation", res); + return res; +} + +void show_loading_animation(pts_core_data_t *ugd) +{ + PTS_RET_IF(ugd == NULL, "ugd is NULL"); + PTS_RET_IF(ugd->loading_animation != NULL, "Already shown"); + ugd->loading_animation = loading_animation_add(ugd->img_layout); + evas_object_show(ugd->loading_animation); +} + +void hide_loading_animation(pts_core_data_t *ugd) +{ + PTS_RET_IF(ugd == NULL, "ugd is NULL"); + PTS_RET_IF(ugd->loading_animation == NULL, "Already removed"); + evas_object_hide(ugd->loading_animation); + evas_object_del(ugd->loading_animation); + ugd->loading_animation = NULL; +} diff --git a/mobileprint/app/mobileprint.c b/mobileprint/app/mobileprint.c new file mode 100644 index 0000000..29168ef --- /dev/null +++ b/mobileprint/app/mobileprint.c @@ -0,0 +1,701 @@ +/* +* Mobileprint +* +* Copyright 2012 Samsung Electronics Co., Ltd + +* Licensed under the Flora License, Version 1.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://floralicense.org/license/ + +* 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. +* +*/ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include "mobileprint.h" +#include "pts_main_view.h" + +#include +#include +#include +#include + +/*Global variable */ +pts_appdata_t g_mobile_print_app_data; + +pts_appdata_t *pts_get_appdata() +{ + return &g_mobile_print_app_data; +} + +/* +* delete the main window +*/ +static void _win_del(void *data, Evas_Object *obj, void *event) +{ + PTS_TRACE_BEGIN; + app_efl_exit(); + PTS_TRACE_END; +} + +/* +* the response callback when quit the main function +*/ +void main_quit_cb(void *data, Evas_Object *obj, + const char *emission, const char *source) +{ + PTS_TRACE_BEGIN; + app_efl_exit(); + PTS_TRACE_END; +} + +/* +* the registered callback function is called +* when the orientation of device changes +*/ +static void _app_rotate(app_device_orientation_e orientation, void *user_data) +{ + PTS_TRACE_BEGIN; + pts_appdata_t *ad = (pts_appdata_t *)user_data; + PTS_RET_IF(ad == NULL,"appdata is NULL"); + PTS_RET_IF(ad->win == NULL,"appdata->win is NULL"); + + elm_win_rotation_with_resize_set(ad->win, orientation); + /* HACK based on ugd memsetting to 0 to avoid crash on rotation */ + if (NULL != ad->ugd && NULL != ad->ugd->active_printer) { + clear_preview_image(ad->ugd); + pts_main_view_rotate_image(ad->ugd, orientation); + + if (NULL != ad->ugd->size_popup) { + PTS_DEBUG("Found size popup. Let's rotate and resize it"); + if (APP_DEVICE_ORIENTATION_0 == orientation || + APP_DEVICE_ORIENTATION_180 == orientation) { + evas_object_size_hint_min_set(ad->ugd->size_popup_box, + 400 * elm_config_scale_get(), (6 * 114) * elm_config_scale_get()); + } else { + evas_object_size_hint_min_set(ad->ugd->size_popup_box, + 400 * elm_config_scale_get(), ad->ugd->size_popup_landscape_height); + } + } else if (NULL != ad->ugd->custom_popup) { + PTS_DEBUG("Found custom popup. Let's rotate and resize it"); + if (APP_DEVICE_ORIENTATION_0 == orientation || + APP_DEVICE_ORIENTATION_180 == orientation) { + evas_object_size_hint_min_set(ad->ugd->custom_popup_box, + (5 * 114 + 4) * elm_config_scale_get(), ad->ugd->custom_popup_portrait_height); + } else { + evas_object_size_hint_min_set(ad->ugd->custom_popup_box, + 400 * elm_config_scale_get(), ad->ugd->custom_popup_landscape_height); + } + } + } else { + PTS_DEBUG("Just ignore preview regeneration by device orientation"); + } + + PTS_TRACE_END; +} + +/* +* create the main window +*/ +static Evas_Object *_create_win(const char *name) +{ + PTS_TRACE_BEGIN; + PTS_RETV_IF(name == NULL, NULL, "name is NULL"); + + Evas_Object *eo = NULL; + int w = 0; + int h = 0; + + eo = elm_win_add(NULL, name, ELM_WIN_BASIC); + PTS_RETV_IF(eo == NULL, NULL, "Failed to elm_win_add"); + + elm_win_conformant_set(eo, EINA_TRUE); + elm_win_autodel_set(eo, EINA_TRUE); + elm_win_title_set(eo, name); + + elm_win_borderless_set(eo, EINA_TRUE); + elm_win_indicator_mode_set(eo, ELM_WIN_INDICATOR_SHOW); + + elm_win_alpha_set(eo, EINA_TRUE); + evas_object_smart_callback_add(eo, "delete,request", _win_del, NULL); + + ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h); + evas_object_resize(eo, w, h); + + PTS_TRACE_END; + return eo; +} + +static int __get_window_property(Display *dpy, Window win, Atom atom, + Atom type, unsigned int *val, + unsigned int len) +{ + PTS_TRACE_BEGIN; + unsigned char *prop_ret; + Atom type_ret; + unsigned long bytes_after; + unsigned long num_ret; + int format_ret; + unsigned int i; + int num; + + prop_ret = NULL; + if (XGetWindowProperty(dpy, win, atom, 0, 0x7fffffff, False, + type, &type_ret, &format_ret, &num_ret, + &bytes_after, &prop_ret) != Success) { + return -1; + } + + if (type_ret != type || format_ret != 32) { + num = -1; + } else if (num_ret == 0 || !prop_ret) { + num = 0; + } else { + if (num_ret < len) { + len = num_ret; + } + for (i = 0; i < len; i++) { + val[i] = ((unsigned long *)prop_ret)[i]; + } + num = len; + } + + if (prop_ret) { + XFree(prop_ret); + } + + PTS_TRACE_END; + return num; +} + +static int __x_rotation_get(Display *dpy, Window win) +{ + PTS_TRACE_BEGIN; + Window active_win; + Window root_win; + int rotation = -1; + int ret; + + Atom atom_active_win; + Atom atom_win_rotate_angle; + + root_win = XDefaultRootWindow(dpy); + + atom_active_win = XInternAtom(dpy, "_NET_ACTIVE_WINDOW", False); + ret = __get_window_property(dpy, root_win, atom_active_win, + XA_WINDOW, + (unsigned int *)&active_win, 1); + + /*printf("[SYSPOPUP] Active win : %x, Window %x\n", active_win, win);*/ + + /*active_win = get_active_win(dpy, root_win, atom_active_win);*/ + if (ret < 0) { + return ret; + } + + atom_win_rotate_angle = + XInternAtom(dpy, "_E_ILLUME_ROTATE_WINDOW_ANGLE", False); + ret = __get_window_property(dpy, active_win, + atom_win_rotate_angle, XA_CARDINAL, + (unsigned int *)&rotation, 1); + + /*printf("[SYSPOPUP] Rotation %d\n", rotation);*/ + + PTS_TRACE_END; + + if (ret != -1) { + return rotation; + } + + return -1; +} + + +static int __as_rotate(Display *dpy, Window xwin, Evas_Object *win, void *data) +{ + PTS_TRACE_BEGIN; + int rotation; + + ecore_x_icccm_hints_set(xwin, 0, 0, 0, 0, 0, 0, 0); + + rotation = __x_rotation_get(dpy, xwin); + PTS_DEBUG("rotation of focused window : %d", rotation); + + if (rotation == -1) { + rotation = 0; + } + + if (rotation >= 0) { + elm_win_rotation_with_resize_set(win, rotation); + } + + PTS_TRACE_END; + return 0; +} + +/* +* this callback function is called +* at the start of the application. +*/ +static bool _app_create(void *user_data) +{ + PTS_TRACE_BEGIN; + PTS_RETV_IF(user_data == NULL, false, "user_data is NULL"); + + pts_appdata_t *ad = (pts_appdata_t *)user_data; + char *name; + + /* create window */ + app_get_name(&name); + ad->win = _create_win(name); + PTS_RETV_IF(ad->win == NULL, false, "ad->win is NULL"); + + //app_device_orientation_e rotation_state = app_get_device_orientation(); + //_app_rotate(rotation_state, ad); + //DBG("device orientation : %d", rotation_state); + + __as_rotate(ecore_x_display_get(), elm_win_xwindow_get(ad->win), ad->win, ad); + + UG_INIT_EFL(ad->win, UG_OPT_INDICATOR_ENABLE); + + PTS_IF_FREE_MEM(name); + + PTS_TRACE_END; + return true; +} + +/* +* this callback function is called once after +* the main loop of application exits. +*/ +static void _app_terminate(void *user_data) +{ + PTS_TRACE_BEGIN; +#if 0 + pts_appdata_t *ad = (pts_appdata_t *)user_data; + + PTS_RET_IF(ad == NULL, "data is NULL"); + + if (ad->ugd->main_win) { + PTS_DEBUG("ad->lymain is not NULL"); + //evas_object_del(ad->ugd->main_win); + } + + if (ad->win) { + PTS_DEBUG("ad->lymain is not NULL"); + //evas_object_del(ad->ugd->root_win); + } +#endif + + PTS_TRACE_END; +} + +/* +* this callback function is called each time the application +* is completely obscured by another application and becomes +* invisible to the user. +*/ +static void _app_pause(void *user_data) +{ + PTS_TRACE_BEGIN; + pts_appdata_t *ad = (pts_appdata_t *)user_data; + PTS_RET_IF(ad == NULL,"ad is NULL"); + PTS_RET_IF(ad->ugd == NULL,"ad->ugd is NULL"); + if (ad->ugd->job_spooling_list == NULL) { + PTS_DEBUG("Without active job spooling, mobileprint will terminate when moved background."); + app_efl_exit(); + } else { + PTS_DEBUG("Active job spooling list is existed. So don't terminate mobileprint."); + } + PTS_TRACE_END; +} + +/* +* this callback function is called each time the application +* becomes visible to the user. +*/ +static void _app_resume(void *user_data) +{ + PTS_TRACE_BEGIN; + PTS_TRACE_END; +} + +/* +* popup when machine is unsupported +*/ +static Eina_Bool unsupported_exit(void *data) +{ + PTS_TRACE_BEGIN; + pts_ug_list_data *ld = (pts_ug_list_data *) data; + PTS_RETV_IF(ld == NULL , ECORE_CALLBACK_CANCEL , "data is NULL"); + + PTS_IF_FREE_MEM(ld); + elm_exit(); + + PTS_TRACE_END; + return ECORE_CALLBACK_CANCEL; +} + +void load_main_view(void *userdata) +{ + PTS_TRACE_BEGIN; + + pts_appdata_t *ad = pts_get_appdata(); + pts_core_data_t *ugd = ad->ugd; + + // XXX - show main view after set active/default printer + pts_create_main_view(ugd); + elm_win_resize_object_add(ugd->root_win, ugd->main_win); + edje_object_signal_callback_add(elm_layout_edje_get(ugd->main_win), + "EXIT", "*", main_quit_cb, NULL); + + pts_main_view_update_printer_label(ugd); + pts_main_view_rotate_image(ugd, app_get_device_orientation()); + + evas_object_show(ugd->main_win); + evas_object_show(ugd->root_win); + PTS_TRACE_END; +} + + +/* +* load the app +*/ +static void __app_load_app(pts_appdata_t *ad, pts_printing_data_t *pt_files) +{ + PTS_TRACE_BEGIN; + PTS_RET_IF((ad == NULL) || (ad->win == NULL) || (pt_files == NULL), "error parameters"); + + pts_core_data_t *ugd; + int ret; + + if (ad->ugd == NULL) { + PTS_DEBUG("ad->ugd is NULL"); + ugd = calloc(1, sizeof(pts_core_data_t)); + PTS_RET_IF(ugd == NULL, "ugd is NULL"); + + memset(ugd, 0, sizeof(pts_core_data_t)); + ad->ugd = ugd; + ugd->root_win = ad->win; + pts_set_ugd(ugd); + } + + ret = pt_init(__pts_event_cb, ad->ugd); + PTS_RET_IF(ret != PT_ERR_NONE,"pt_init error"); + + /* + * prepare load print files + */ + pts_main_view_load_print_files(ad->ugd, pt_files); + + //Not supported in Emulator + struct utsname buf; + ret = uname(&buf); + if (ret == -1) { + PTS_DEBUG("failed to get uname"); + } else if (strstr(buf.machine,"arm") == NULL) { + PTS_DEBUG("not supported on %s",buf.machine); + Evas_Object *unsupported_popup; + unsupported_popup = elm_popup_add(ad->ugd->root_win); + evas_object_size_hint_weight_set(unsupported_popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_object_text_set(unsupported_popup, _("IDS_COM_POP_UNSUPPORTED")); + evas_object_show(unsupported_popup); + evas_object_show(ad->ugd->root_win); + ecore_timer_add(1, (Ecore_Task_Cb)unsupported_exit, (void *)ad->ugd); + return; + } else { + PTS_DEBUG("ARM target"); + } + pts_search_printer(ad->ugd, ad->ugd->root_win, PTS_SEARCH_INITIAL, load_main_view, (void *)NULL); + + PTS_TRACE_END; +} + +static Eina_Bool show_dummy_noti_popup(service_h *service, void *user_data, pts_printing_data_t *printing_data) +{ +//noti_mode: + PTS_TRACE_BEGIN; + pts_appdata_t *ad = (pts_appdata_t *)user_data; + PTS_RETV_IF(ad == NULL, EINA_FALSE, "ad is NULL"); + PTS_RETV_IF(ad->win == NULL, EINA_FALSE, "ad->win is NULL"); + + int ret = -1; + char *value = NULL; + + ret = service_get_extra_data(*service, SERVICE_FILES, &value); + if (ret != SERVICE_ERROR_NONE) { + PTS_DEBUG("get extra data failed!, errno: %d", ret); + return EINA_FALSE; + } else { + char *files = strdup(value); + if (files == NULL) { + return EINA_FALSE; + } + PTS_DEBUG("files[%s]", files); + ret = service_get_extra_data(*service, SERVICE_PAGE_COUNT, &value); + if (ret != SERVICE_ERROR_NONE) { + PTS_DEBUG("get extra data failed!, errno: %d", ret); + return EINA_FALSE; + } else { + int page_count = atoi(value); + PTS_DEBUG("page_count[%d]", page_count); + __pts_print_dummy_popup(ad->ugd, files, page_count); + } + } + + if (ad->win) { + evas_object_raise(ad->win); + } + + PTS_TRACE_END; + return EINA_TRUE; +} + +static Eina_Bool show_progress_noti_popup(service_h *service, void *user_data) +{ +//noti_mode: + PTS_TRACE_BEGIN; + pts_appdata_t *ad = (pts_appdata_t *)user_data; + PTS_RETV_IF(ad == NULL, EINA_FALSE, "ad is NULL"); + PTS_RETV_IF(ad->win == NULL, EINA_FALSE, "ad->win is NULL"); + + int ret = -1; + char *value = NULL; + + ret = service_get_extra_data(*service, SERVICE_JOB_ID, &value); + if (ret != SERVICE_ERROR_NONE) { + PTS_DEBUG("get extra data failed!, errno: %d", ret); + return EINA_FALSE; + } else { + if (NULL != value) { + int job_id = atoi(value); + PTS_DEBUG("job_id[%d]", job_id); + ret = service_get_extra_data(*service, SERVICE_PAGE_COUNT, &value); + if (ret != SERVICE_ERROR_NONE) { + PTS_DEBUG("get extra data failed!, errno: %d", ret); + return EINA_FALSE; + } else { + int page_count = atoi(value); + PTS_DEBUG("page_count[%d]", page_count); + __pts_print_progress_popup(ad->ugd, job_id, page_count); + } + } + } + + if (ad->win) { + evas_object_raise(ad->win); + } + + PTS_TRACE_END; + return EINA_TRUE; +} + +static Eina_Bool get_extra_data_by_single_content(service_h *service, void *user_data, pts_printing_data_t *printing_data) +{ + PTS_TRACE_BEGIN; + pts_appdata_t *ad = (pts_appdata_t *)user_data; + PTS_RETV_IF(ad == NULL, EINA_FALSE, "ad is NULL"); + PTS_RETV_IF(ad->win == NULL, EINA_FALSE, "ad->win is NULL"); + + Eina_Bool bret = EINA_FALSE; + int ret = -1; + char *value = NULL; + char *uri_temp = NULL; + + ret = service_get_extra_data(*service, SERVICE_PRINT_FILES_TYPE, &value); +#ifdef PTS_IMAGE_SELFTEST + if (ret != SERVICE_ERROR_NONE) { + printing_data = (pts_printing_data_t *)calloc(1, sizeof(pts_printing_data_t)); + PTS_RETV_IF(printing_data == NULL, EINA_FALSE, "printing_data is NULL"); + printing_data->type = strdup("IMG"); + printing_data->num_of_files = 1; + uri_temp = strdup("/opt/usr/media/Images/image1.jpg"); + printing_data->request_files = &uri_temp; + } else { +#endif /* end of IMAGE_SELFTEST */ + PTS_RETV_IF(ret != SERVICE_ERROR_NONE, EINA_FALSE, "get the type of print files failed!, errno: %d", ret); + + bret = _pts_printing_data_set_type(value, printing_data); + PTS_IF_FREE_MEM(value); + PTS_RETV_IF(bret == EINA_FALSE, EINA_FALSE, "Failed to set type"); + + bret = _pts_printing_data_set_files_count("1", printing_data); + PTS_RETV_IF(bret == EINA_FALSE, EINA_FALSE, "Failed to set files count"); + + ret = service_get_uri(*service, &value); + PTS_RETV_IF(ret != SERVICE_ERROR_NONE, EINA_FALSE, "get the uri failed!, errno: %d", ret); + + uri_temp = (char *)pt_utils_filename_from_URI(value); + PTS_IF_FREE_MEM(value); + bret = _pts_printing_data_set_request_files((const char **)&uri_temp, 1, printing_data); + PTS_RETV_IF(bret == EINA_FALSE, EINA_FALSE, "Failed to set request_files"); + +#ifdef PTS_IMAGE_SELFTEST + } +#endif /* end of IMAGE_SELFTEST */ + + __app_load_app(ad, printing_data); + evas_object_raise(ad->win); + + PTS_TRACE_END; + return EINA_TRUE; +} + +static Eina_Bool get_extra_data_by_multi_contents(service_h *service, void *user_data, pts_printing_data_t *printing_data) +{ + PTS_TRACE_BEGIN; + pts_appdata_t *ad = (pts_appdata_t *)user_data; + PTS_RETV_IF(ad == NULL, EINA_FALSE, "ad is NULL"); + PTS_RETV_IF(ad->win == NULL, EINA_FALSE, "ad->win is NULL"); + + Eina_Bool bret = EINA_FALSE; + int ret = -1; + int length = 0; + char *value = NULL; + char **filesname = NULL; + + ret = service_get_extra_data(*service, SERVICE_PRINT_FILES_COUNT, &value); + PTS_RETV_IF(ret != SERVICE_ERROR_NONE, EINA_FALSE, "get the count of print files failed!, errno: %d", ret); + + bret = _pts_printing_data_set_files_count(value, printing_data); + PTS_IF_FREE_MEM(value); + PTS_RETV_IF(bret == EINA_FALSE, EINA_FALSE, "Failed to set files count"); + + ret = service_get_extra_data(*service, SERVICE_PRINT_FILES_TYPE, &value); + PTS_RETV_IF(ret != SERVICE_ERROR_NONE, EINA_FALSE, "get the type of print files failed!, errno: %d", ret); + + bret = _pts_printing_data_set_type(value, printing_data); + PTS_IF_FREE_MEM(value); + PTS_RETV_IF(bret == EINA_FALSE, EINA_FALSE, "Failed to set type"); + + ret = service_get_extra_data(*service, SERVICE_PRINT_FILES_CURRENT_INDEX, &value); + if (ret == SERVICE_ERROR_NONE) { + bret = _pts_printing_data_set_index(value, printing_data); + PTS_IF_FREE_MEM(value); + PTS_RETV_IF(bret == EINA_FALSE, EINA_FALSE, "Failed to set current index"); + } else { + PTS_DEBUG("get the current index of print files failed!, errno: %d", ret); + } + + ret = service_get_extra_data(*service, SERVICE_PRINT_FILES_FOLDER_NAME, &value); + PTS_RETV_IF(ret != SERVICE_ERROR_NONE, EINA_FALSE, "get extra data failed!, errno: %d", ret); + + bret = _pts_printing_data_set_directory(value, printing_data); + PTS_IF_FREE_MEM(value); + PTS_RETV_IF(bret == EINA_FALSE, EINA_FALSE, "Failed to set directory"); + + ret = service_get_extra_data_array(*service, SERVICE_PRINT_FILES_FILES_NAME, &filesname, &length); + PTS_RETV_IF(ret != SERVICE_ERROR_NONE, EINA_FALSE, "get extra data failed!, errno: %d", ret); + + bret = _pts_printing_data_set_request_files((const char **) filesname, length, printing_data); + PTS_IF_FREE_MEM(filesname); + PTS_RETV_IF(bret == EINA_FALSE, EINA_FALSE, "Failed to set request files"); + + __app_load_app(ad, printing_data); + evas_object_raise(ad->win); + + return EINA_TRUE; +} + +/* +* this callback function is called when other application +* send the launch request to the application. +*/ +static void _app_service(service_h service, void *user_data) +{ + PTS_TRACE_BEGIN; + pts_appdata_t *ad = (pts_appdata_t *)user_data; + PTS_RET_IF(ad == NULL, "ad is NULL"); + PTS_RET_IF(ad->win == NULL, "ad->win is NULL"); + + int ret = -1; + char *value = NULL; + pts_printing_data_t printing_data; + service_h reply_service; + Eina_Bool is_success = EINA_FALSE; + + memset(&printing_data, 0, sizeof(printing_data)); + service_create(&reply_service); + + ret = service_get_extra_data(service, SERVICE_LAUNCH_TYPE, &value); + if (ret == SERVICE_ERROR_KEY_NOT_FOUND) { + ret = service_get_extra_data(service, SERVICE_PRINT_FILES_COUNT, &value); + if (ret == SERVICE_ERROR_NONE) { + PTS_DEBUG("***** APP_SERVICE MODE(MULTI) *****"); + is_success = get_extra_data_by_multi_contents(&service, user_data, &printing_data); + } else if (ret == SERVICE_ERROR_KEY_NOT_FOUND) { + PTS_DEBUG("***** APP_SERVICE MODE(SINGLE) *****"); + is_success = get_extra_data_by_single_content(&service, user_data, &printing_data); + } else { + PTS_DEBUG("SERVICE_PRINT_FILES_COUNT ERROR(%d) ", ret); + } + } else if (ret == SERVICE_ERROR_NONE) { + if (!strcmp(value, LAUNCH_FROM_DUMMY_NOTI)) { + PTS_DEBUG("***** DUMMY NOTI MODE *****"); + is_success = show_dummy_noti_popup(&service, user_data, &printing_data); + } else if (!strcmp(value, LAUNCH_FROM_PROGRESS_NOTI)) { + PTS_DEBUG("***** NOTI MODE *****"); + is_success = show_progress_noti_popup(&service, user_data); + } else { + PTS_DEBUG("SERVICE_LAUNCH_TYPE ERROR(%s) ", value); + } + } else if (ret == SERVICE_ERROR_OUT_OF_MEMORY + || ret == SERVICE_ERROR_INVALID_DATA_TYPE + || ret == SERVICE_ERROR_INVALID_PARAMETER) { + PTS_DEBUG("APP_SERVICE ERROR(%d)", ret); + } else { + PTS_DEBUG("***** Undefined *****"); + } + PTS_IF_FREE_MEM(value); + + if (is_success == EINA_TRUE) { + service_reply_to_launch_request(reply_service, service, SERVICE_RESULT_SUCCEEDED); + } else { + service_reply_to_launch_request(reply_service, service, SERVICE_RESULT_FAILED); + elm_exit(); + } + PTS_TRACE_END; + return; +} + +/* +* the main function +*/ +int main(int argc, char *argv[]) +{ + PTS_TRACE_BEGIN; + pts_appdata_t *pts_appdata = pts_get_appdata(); + + app_event_callback_s event_callback; + + event_callback.create = _app_create; + event_callback.terminate = _app_terminate; + event_callback.pause = _app_pause; + event_callback.resume = _app_resume; + event_callback.service = _app_service; + event_callback.low_memory = NULL; + event_callback.low_battery = NULL; + event_callback.device_orientation = _app_rotate; + event_callback.language_changed = NULL; + event_callback.region_format_changed = NULL; + + memset(pts_appdata, 0x00, sizeof(pts_appdata_t)); + + PTS_TRACE_END; + return app_efl_main(&argc, &argv, &event_callback, pts_appdata); +} diff --git a/mobileprint/app/preview_content.c b/mobileprint/app/preview_content.c new file mode 100644 index 0000000..cda87d8 --- /dev/null +++ b/mobileprint/app/preview_content.c @@ -0,0 +1,255 @@ +/* +* Mobileprint +* +* Copyright 2012 Samsung Electronics Co., Ltd + +* Licensed under the Flora License, Version 1.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://floralicense.org/license/ + +* 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. +* +*/ + +#include +#include + +#include +#include +#include +#include + +#include "pts_common.h" +#include "pts_main_view.h" + +#include "preview_content.h" + +#define DEFAULT_PPD_FILE DATADIR "/rasterview.ppd" + +int is_printer_grayscale(const pt_printer_mgr_t *active_printer) +{ + switch (pt_get_selected(PT_OPTION_ID_GRAYSCALE)) { + case PT_GRAYSCALE_COLOUR: + return 0; + default: + return 1; + } +} + +enum page_orientation printer_get_setting_orientation( + const pt_printer_mgr_t *active_printer) +{ + /* should be taken from settings */ + switch (active_printer->landscape) { +// case PT_ORIENTATION_AUTO: + /* TODO: check for page size, n-up */ +// return PAGE_ORIENTATION_AUTO; + case PT_ORIENTATION_PORTRAIT: + return PAGE_ORIENTATION_PORTRAIT; + case PT_ORIENTATION_LANDSCAPE: + return PAGE_ORIENTATION_LANDSCAPE; + } + return PAGE_ORIENTATION_PORTRAIT; +} + +int printer_get_setting_n_up(const pt_printer_mgr_t *active_printer) +{ + /* should be taken from settings */ + switch (active_printer->scaling) { + case PT_SCALING_2_PAGES: + return 2; + case PT_SCALING_4_PAGES: + return 4; +#if 0 + case PT_SCALING_8_PAGES: + return 8; +#endif + default: + break; + } + return 1; +} + +/** + * @brief Get paper size and paper name for CUPS utilities cmd usage + * @param[out] paper_size paper_size should be local variable + * to keep further store we should provide a copy + */ +int printer_get_paper_size(struct paper_size_pts *paper_size) +{ + PTS_TRACE_BEGIN; + /* get paper size of active printer from print-service */ + pt_pagesize_t current_pagesize; + int result = pt_get_selected_paper_size_pts(¤t_pagesize); + PTS_RETV_IF(result < 0, -1, "pt_get_selected_paper_size_pts returns error"); + + /* get really selected papersize name for command line commands */ + paper_size->name = pt_get_print_option_papersize_cmd( + pt_get_selected(PT_OPTION_ID_PAPERSIZE)); + paper_size->s.x = current_pagesize.x; + paper_size->s.y = current_pagesize.y; + + PTS_TRACE_END; + return 0; +} + +int printer_get_setting_is_original_zoom( + const pt_printer_mgr_t *active_printer) +{ +#if 0 + if (active_printer->scaling == PT_SCALING_ORIGINAL_SIZE) { + return 1; + } +#endif + return 0; +} + + +int pts_image_size_t2page_scale(pts_image_size_e pts_size, + struct page_scale *scale) +{ + PTS_RETV_IF(scale == NULL, -1, "scale is NULL"); + + scale->w = 0; + scale->h = 0; + + switch (pts_size) { + case PTS_SIZE_FIT_TO_PAPER: + scale->type = SCALE_FIT_TO_PAPER; + return 0; + case PTS_SIZE_5X7: + scale->w = 5; + scale->h = 7; + break; + case PTS_SIZE_4X6: + scale->w = 4; + scale->h = 6; + break; + case PTS_SIZE_3_5X5: + scale->w = 3.5; + scale->h = 5; + break; + case PTS_SIZE_WALLET: + /* 6.4x8.4 cm */ + scale->w = 3.30709; + scale->h = 2.51969; + break; + //TODO : CUSTOM SIZE + default: + scale->type = SCALE_FIT_TO_PAPER; + return 1; + } + + scale->type = SCALE_CUSTOM; + return 0; +} + + +/** + * @brief This function generates preview images + * @param[in] ugd the pointer to the main data structure + * @return + */ +int generate_preview_images(pts_core_data_t *ugd, + app_device_orientation_e dev_orientation) +{ + PTS_TRACE_BEGIN; + PTS_RETV_IF(ugd == NULL , -1 , "ugd is NULL"); + + int result = 0; + + struct paper_size_pts paper_size; + enum page_orientation orientation; + //int is_original_zoom; + struct page_scale scale = {0, 0, 0}; + int n_up; + int is_grayscale; + struct size_px client_size; + pt_printer_mgr_t *active_printer = ugd->active_printer; + char *ppd; + //char *first_file_path; + + /* currently supported: only one PDF or multiple images; + mixed images-pdf unsupported */ + + PTS_RETV_IF(ugd == NULL || ugd->pt_files.num_of_files <= 0, -1 , "Invalid argument"); + + /* TODO: use widget maximum size */ + //evas_object_geometry_get(ugd->img_layout, NULL, NULL, + // &(client_size.x), &(client_size.y)); + //evas_object_geometry_get(ugd->root_win, NULL, NULL, + // &(client_size.x), &(client_size.y)); + + ecore_x_window_size_get(ecore_x_window_root_first_get(), &(client_size.x), &(client_size.y)); + + PTS_DEBUG("rotating orientation, dev_orientation = %d," + " app_get_device_orientation() = %d", + dev_orientation, app_get_device_orientation()); + if (APP_DEVICE_ORIENTATION_0 == dev_orientation + || APP_DEVICE_ORIENTATION_180 == dev_orientation) { + if (client_size.x > client_size.y) { + switch_size_px_coords(&client_size); + } + } else { + if (client_size.x < client_size.y) { + switch_size_px_coords(&client_size); + } + } + + /* WARNING: potential problem here: geometry calculation sometimes + are incorrect, but with wide pictures currently it works */ + if (client_size.x > client_size.y && client_size.y > 320) { + client_size.y = 320; /* ugly hack */ + } + + /* should be taken from settings */ + if (active_printer != NULL) { + ppd = active_printer->ppd; + printer_get_paper_size(&paper_size); + orientation = printer_get_setting_orientation(active_printer); + n_up = printer_get_setting_n_up(active_printer); + pts_image_size_t2page_scale(ugd->image_size, &scale); + if (ugd->image_size == PTS_SIZE_CUSTOM) { + scale.w = ugd->custom_width; + scale.h = ugd->custom_height; + scale.type = SCALE_CUSTOM; + } + is_grayscale = is_printer_grayscale(active_printer); + } else { + PTS_DEBUG("No active printer preview"); + + ppd = DEFAULT_PPD_FILE; + get_paper_size_pts("A4", &paper_size); + orientation = PAGE_ORIENTATION_PORTRAIT; + //is_original_zoom = 0; + scale.type = SCALE_FIT_TO_PAPER; + n_up = 1; + is_grayscale = 1; + } + + //first_file_path = ugd->pt_files.files[0]; + //DBG("PDF_PATH IS: %s", first_file_path); + PTS_DEBUG("USING PPD: %s", ppd); + PTS_DEBUG("PAPER NAME: %s", paper_size.name); + PTS_DEBUG("PAPER SIZE: %f, %f", paper_size.s.x, paper_size.s.y); + PTS_DEBUG("ALBUM, N_UP, ZOOM: %d, %d, %d", orientation, n_up, scale.type); + PTS_DEBUG("CLIENT SIZE: %d : %d", client_size.x, client_size.y); + + result = process_preview_engine_file(&(ugd->engine), + ugd->pt_files.request_files[0], ppd, + &paper_size, + &client_size, orientation, n_up, + &scale, is_grayscale); + PTS_DEBUG("process_preview_engine_file: %d", result); + + PTS_TRACE_END; + + return result; +} + diff --git a/mobileprint/app/preview_engine.c b/mobileprint/app/preview_engine.c new file mode 100644 index 0000000..bac2645 --- /dev/null +++ b/mobileprint/app/preview_engine.c @@ -0,0 +1,157 @@ +/* +* Mobileprint +* +* Copyright 2012 Samsung Electronics Co., Ltd + +* Licensed under the Flora License, Version 1.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://floralicense.org/license/ + +* 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. +* +*/ + +#include + +#include +#include +#include + +#include "pts_debug.h" +#include "preview_engine.h" + +int init_preview_engine(struct preview_engine *engine) +{ + PTS_TRACE_BEGIN; + PTS_RETV_IF(engine == NULL, -1, "engine is NULL"); + + /*engine->fname = NULL; + DBG("preview_engine: fname = %s", fname);*/ + + engine->state = PREVIEW_ENGINE_STATE_INITIAL; + engine->initial_thread = NULL; + engine->next_preview_data = NULL; + + memset(&(engine->p_model), 0, sizeof(struct preview_model)); + + if (init_preview_task_model(&(engine->task_model), engine) < 0) { + PTS_TRACE_BEGIN; + return -1; + } + /*if (init_preview_model(&(engine->p_model)) < 0) + return -1;*/ + + /*engine->preview_data.pages_count = -1; + engine->preview_data.fname = strdup(fname);*/ + + engine->page_ready_event_type = ecore_event_type_new(); + + PTS_TRACE_END; + return 0; +} + +/* TODO: engine destruction */ +int preview_engine_init_done(struct preview_engine *engine, + const struct preview_conf *conf) +{ + PTS_TRACE_BEGIN; + if (conf->pages_count > 0) { + engine->state = PREVIEW_ENGINE_STATE_READY; + if (init_preview_model(&(engine->p_model), + conf, engine) < 0) { + PTS_DEBUG("ERROR in preview model initialization"); + engine->state = PREVIEW_ENGINE_STATE_ERROR; + preview_engine_send_page_message(engine, + PREVIEW_ENGINE_EVENT_INITIAL_ERROR, -1); + PTS_TRACE_END; + return -1; + } + preview_engine_send_page_message(engine, + PREVIEW_ENGINE_EVENT_INITIAL_READY, 0); + PTS_TRACE_END; + return 0; + } + + PTS_DEBUG("ERROR: no pages"); + engine->state = PREVIEW_ENGINE_STATE_ERROR; + preview_engine_send_page_message(engine, + PREVIEW_ENGINE_EVENT_INITIAL_ERROR, -1); + PTS_TRACE_END; + return 0; +} + +int process_preview_engine_file(struct preview_engine *engine, + char *fname, + const char *ppd, + const struct paper_size_pts *paper_size, + const struct size_px *max_available_size_px, + enum page_orientation orientation, int n_up, + const struct page_scale *scale, int is_grayscale) +{ + PTS_TRACE_BEGIN; + PTS_RETV_IF(NULL == engine || + NULL == fname || + NULL == ppd || + NULL == paper_size || + NULL == scale || + NULL == max_available_size_px + , -1 , "Invalid argument"); + + struct initial_preview_data *data; + + data = malloc(sizeof(struct initial_preview_data)); + PTS_RETV_IF(data == NULL, -1, "Insufficient memory"); + + data->conf.initial_fname = strdup(fname); + data->conf.ppd = strdup(ppd); + data->conf.fname = strdup(TEMP_PDFTOPDF_FNAME); + data->conf.paper_size = *paper_size; + data->conf.paper_size.name = strdup(paper_size->name); + data->conf.max_available_size_px = *max_available_size_px; + data->conf.orientation = orientation; + data->conf.n_up = n_up; + data->conf.scale = *scale; + data->conf.is_grayscale = is_grayscale; + data->engine = engine; + + //careful memory release: + if (data->conf.initial_fname == NULL || data->conf.ppd == NULL || + data->conf.fname == NULL || data->conf.paper_size.name == NULL) { + PTS_IF_FREE_MEM(data->conf.initial_fname); + PTS_IF_FREE_MEM(data->conf.ppd); + PTS_IF_FREE_MEM(data->conf.fname); + PTS_IF_FREE_MEM(data->conf.paper_size.name); + PTS_IF_FREE_MEM(data); + PTS_RETV_IF(1, -1, "Insufficient memory"); + } + + engine->state = PREVIEW_ENGINE_STATE_PROCESSING; + add_preview_task_initial(&(engine->task_model), &(data->conf)); + PTS_IF_FREE_MEM(data); + + PTS_TRACE_END; + return 0; +} + +void preview_engine_send_page_message(struct preview_engine *engine, + enum preview_engine_event_status status, int page) +{ + PTS_RET_IF(engine == NULL, "engine is NULL"); + + struct preview_engine_event *event_data = malloc(sizeof(*event_data)); + PTS_TRACE_BEGIN; + + PTS_DEBUG("Send event: [%d, %d]", page, status); + + /* TODO: check for active preview model */ + event_data->page = page; + event_data->status = status; + ecore_event_add(engine->page_ready_event_type, event_data, NULL, NULL); + PTS_TRACE_END; +} diff --git a/mobileprint/app/preview_model.c b/mobileprint/app/preview_model.c new file mode 100644 index 0000000..114645a --- /dev/null +++ b/mobileprint/app/preview_model.c @@ -0,0 +1,117 @@ +/* +* Mobileprint +* +* Copyright 2012 Samsung Electronics Co., Ltd + +* Licensed under the Flora License, Version 1.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://floralicense.org/license/ + +* 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. +* +*/ + +#include + +#include "pts_debug.h" +#include "preview_model.h" + +int init_preview_model(struct preview_model *model, + const struct preview_conf *conf, + struct preview_engine *engine) +{ + PTS_TRACE_BEGIN; + PTS_RETV_IF(model == NULL || conf == NULL || engine == NULL, -1 , "Invalid argument"); + + model->conf = *conf; + model->pages_state = malloc(sizeof(enum preview_page_state) + * (conf->pages_count + 1)); + PTS_RETV_IF(model->pages_state == NULL, -1, "Insufficient memory"); + + model->conf.initial_fname = strdup(conf->initial_fname); + model->conf.ppd = strdup(conf->ppd); + model->conf.fname = strdup(conf->fname); + model->conf.paper_size.name = strdup(conf->paper_size.name); + + //careful memory release: + if (model->conf.initial_fname == NULL || model->conf.ppd == NULL || + model->conf.fname == NULL || model->conf.paper_size.name == NULL) { + PTS_IF_FREE_MEM(model->conf.initial_fname); + PTS_IF_FREE_MEM(model->conf.ppd); + PTS_IF_FREE_MEM(model->conf.fname); + PTS_IF_FREE_MEM(model->conf.paper_size.name); + PTS_RETV_IF(1, -1, "Insufficient memory"); + } + + int i; + for (i = 1; i <= conf->pages_count; ++i) { + model->pages_state[i] = PREVIEW_PAGE_STATE_NA; + } + + model->engine = engine; + + PTS_TRACE_END; + return 0; +} + +void destroy_preview_model(struct preview_model *model) +{ + PTS_TRACE_BEGIN; + PTS_RET_IF(model == NULL, "Invalid argument"); + + PTS_IF_FREE_MEM(model->pages_state); + model->conf.pages_count = 0; + PTS_IF_FREE_MEM(model->conf.fname); + PTS_IF_FREE_MEM(model->conf.initial_fname); + PTS_IF_FREE_MEM(model->conf.ppd); + PTS_IF_FREE_MEM(model->conf.paper_size.name); + + PTS_TRACE_END; +} + +int preview_model_request_page(struct preview_model *model, int page) +{ + PTS_TRACE_BEGIN; + PTS_RETV_IF(model == NULL, -1, "model is NULL"); + PTS_RETV_IF(model->pages_state == NULL, -1, "model is not initialized"); + PTS_RETV_IF(model->conf.pages_count - 1 < page - 1, -1 , "page is incorrect"); + + if (PREVIEW_PAGE_STATE_NA == model->pages_state[page]) { + add_preview_task(&(model->engine->task_model), page, model); + model->pages_state[page] = PREVIEW_PAGE_STATE_PROCESSING; + } else if (PREVIEW_PAGE_STATE_READY == model->pages_state[page]) { + preview_engine_send_page_message(model->engine, + PREVIEW_ENGINE_EVENT_PAGE_READY, page); + } + + /* send message for empty page */ + if (model->pages_state[page] != PREVIEW_PAGE_STATE_READY) { + preview_engine_send_page_message(model->engine, + PREVIEW_ENGINE_EVENT_PAGE_PROCESSING, page); + } + + PTS_TRACE_END; + return 0; +} + +int preview_model_page_available(struct preview_model *model, + enum preview_engine_event_status status, int page) +{ + PTS_TRACE_BEGIN; + PTS_RETV_IF(model == NULL || model->pages_state == NULL, -1, "model is not initialized"); + + model->pages_state[page] = PREVIEW_PAGE_STATE_READY; + /* TODO: send message */ + + preview_engine_send_page_message(model->engine, + PREVIEW_ENGINE_EVENT_PAGE_READY, page); + + PTS_TRACE_END; + return 0; +} diff --git a/mobileprint/app/preview_task_model.c b/mobileprint/app/preview_task_model.c new file mode 100644 index 0000000..13b6927 --- /dev/null +++ b/mobileprint/app/preview_task_model.c @@ -0,0 +1,393 @@ +/* +* Mobileprint +* +* Copyright 2012 Samsung Electronics Co., Ltd + +* Licensed under the Flora License, Version 1.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://floralicense.org/license/ + +* 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. +* +*/ + +#include + +#include +#include +#include + +#include "pts_debug.h" +#include "preview_task_model.h" + +/* TODO: task model destruction */ +enum preview_task_type { + PREVIEW_TASK_GENERIC, + PREVIEW_TASK_INITIAL +}; + +struct preview_task_data { + int page; + enum preview_task_type task_type; + struct preview_conf conf; + char out_pic_fname[sizeof("/tmp/mobileprint_xxxx.ppm ")]; + int is_task_ok; + + /* not for use in thread */ + struct preview_model *pmodel; + struct preview_task_model *task_model; +}; + +int init_preview_task_model(struct preview_task_model *model, + struct preview_engine *engine) +{ + PTS_TRACE_BEGIN; + PTS_RETV_IF(model == NULL || engine == NULL, -1 , "Invalid argument"); + + /*model->task_count = MAX_PREVIEW_TASK_COUNT; + model->tasks = malloc(sizeof(struct preview_task) * model->task_count); + if (NULL == model->tasks) { + model->task_count = 0; + return -1; + }*/ + /* TODO: thread queue */ + model->task_list = NULL; + model->thread = NULL; + model->is_stop_processing = 0; + model->engine = engine; + + //model->pdata = pdata; + PTS_TRACE_END; + return 0; +} + +int preview_task_thread_generic(struct preview_task_data *ptd) +{ + PTS_TRACE_BEGIN; + + struct size_px shadow_size_px = {10, 10}; + struct preview_page_req settings_req; + struct preview_settings_px settings_px; + void *img_buf; + int img_size; + + PTS_TRACE_BEGIN; + PTS_RETV_IF(ptd == NULL || ptd->task_type != PREVIEW_TASK_GENERIC, -1 , "Invalid argument"); + + settings_req.paper_size = ptd->conf.paper_size.s; + /* TODO: switch to real size */ + settings_req.available_size_px = ptd->conf.max_available_size_px; + settings_req.shadow_offset = shadow_size_px; + settings_req.is_rotate90 = + (PAGE_ORIENTATION_LANDSCAPE == ptd->conf.orientation); + settings_req.is_grayscale = ptd->conf.is_grayscale; + + if (get_preview_settings(&settings_req, &settings_px) < 0) { + //DBG("ERROR in get_preview_settings()"); + PTS_TRACE_END; + return -1; + } + + if (load_pdf_page_img(ptd->conf.fname, ptd->page, + &(settings_px.page_px), + &img_buf, &img_size) < 0) { + PTS_TRACE_END; + return -1; + } + struct pdf_preview_page_image_data test_data = { + img_buf, img_size, ptd->page, ptd->conf.pages_count, + &settings_px, ptd->out_pic_fname, 0 + }; + ecore_main_loop_thread_safe_call_sync( + save_pdf_preview_page_image_w_np_thread, + &test_data); + + PTS_TRACE_END; + return test_data.res; +} + +int preview_task_thread_initial(struct preview_task_data *ptd) +{ + PTS_TRACE_BEGIN; + + PTS_RETV_IF(ptd == NULL || ptd->task_type != PREVIEW_TASK_INITIAL , -1, "Invalid argument"); + + int res; + enum file_type ftype; + char *fname; + struct preview_conf *conf; + struct process_image_downscale_data downscale_data; + + conf = &(ptd->conf); + fname = conf->initial_fname; + ftype = get_file_type(fname); + + PTS_DEBUG("conf->max_available_size_px (%d, %d)", conf->max_available_size_px.x, conf->max_available_size_px.y); + + switch (ftype) { + case FILE_TYPE_IMAGE: + PTS_DEBUG("processing image"); + + /* downscale call parameters */ + downscale_data.fname = fname; + downscale_data.out_fname = IMAGE_CONVERT_TEMP_FILE; + downscale_data.available_size_px = &(conf->max_available_size_px); + downscale_data.res = 0; + + ecore_main_loop_thread_safe_call_sync( + process_image_downscale_thread, + &downscale_data); + res = downscale_data.res; + if (0 == res) + res = img2pdf_preview_pages(downscale_data.out_fname, + TEMP_PDFTOPDF_FNAME, conf->ppd, + &(conf->paper_size), + &(conf->max_available_size_px), + conf->orientation, conf->n_up, + &(conf->scale), conf->is_grayscale); + PTS_DEBUG("img2pdf_preview_pages res = %d", res); + break; + case FILE_TYPE_PDF: + PTS_DEBUG("processing PDF"); + res = pdf2pdf_preview_pages(fname, + TEMP_PDFTOPDF_FNAME, conf->ppd, + &(conf->paper_size), + conf->orientation, conf->n_up, + &(conf->scale), conf->is_grayscale); + PTS_DEBUG("pdf2pdf_preview_pages res = %d", res); + break; + default: + /* error condition */ + res = -1; + break; + } + + if (res == 0) { + conf->pages_count = get_pdf_pages_count(TEMP_PDFTOPDF_FNAME); + PTS_DEBUG("conf->pages_count = %d", conf->pages_count); + } else { + conf->pages_count = 0; + } + + return res; +} + +void preview_task_thread_cb(void *d, Ecore_Thread *thread) +{ + PTS_TRACE_BEGIN; + PTS_RET_IF(d == NULL, "Invalid argument"); + + /* TODO: work with thread-safe copy */ + struct preview_task_data *ptd = (struct preview_task_data *)d; + int res = -1; + + //struct size_px shadow_size_px = {10, 10}; + //struct preview_page_req settings_req; + + //PTS_TRACE_BEGIN; + switch (ptd->task_type) { + case PREVIEW_TASK_GENERIC: + res = preview_task_thread_generic(ptd); + break; + case PREVIEW_TASK_INITIAL: + res = preview_task_thread_initial(ptd); + break; + } + + if (0 == res) { + ptd->is_task_ok = 1; + } else { + ptd->is_task_ok = 0; + } + PTS_DEBUG("ptd->is_task_ok = %d", ptd->is_task_ok); + + PTS_TRACE_END; +} + +int clear_preview_task_queue(struct preview_task_model *task_model) +{ + PTS_TRACE_BEGIN; + PTS_RETV_IF(task_model == NULL , -1 , "Invalid argument"); + + struct preview_task_data *ptd; + Eina_List *cur; + + if (task_model->task_list != NULL) { + /* clean task list */ + EINA_LIST_FOREACH(task_model->task_list, cur, ptd) { + PTS_IF_FREE_MEM(ptd); + } + eina_list_free(task_model->task_list); + } + task_model->task_list = NULL; + PTS_TRACE_END; + return 0; +} + +void preview_task_cancel_cb(void *d, Ecore_Thread *thread) +{ + PTS_TRACE_BEGIN; + + PTS_TRACE_END; +} + +void preview_task_end_cb(void *d, Ecore_Thread *thread) +{ + PTS_TRACE_BEGIN; + + PTS_RET_IF(d == NULL, "Invalid argument"); + + struct preview_task_data *ptd = (struct preview_task_data *)d; + struct preview_task_data *next_ptd; + struct preview_task_model *task_model = ptd->task_model; + int is_init_engine = 1; + //struct preview_task_model *model = (struct preview_task_model*)d; + PTS_TRACE_BEGIN; + + /* TODO: check for next initialization in queue */ + + switch (ptd->task_type) { + case PREVIEW_TASK_GENERIC: + if (ptd->is_task_ok) { + preview_model_page_available(ptd->pmodel, + PREVIEW_ENGINE_EVENT_PAGE_READY, + ptd->page); + } else { + preview_model_page_available(ptd->pmodel, + PREVIEW_ENGINE_EVENT_PAGE_ERROR, + ptd->page); + } + break; + case PREVIEW_TASK_INITIAL: + if (task_model->task_list != NULL) { + next_ptd = (struct preview_task_data *) + eina_list_data_get(task_model->task_list); + if (PREVIEW_TASK_INITIAL == next_ptd->task_type) { + is_init_engine = 0; + } + } + if (is_init_engine) + preview_engine_init_done(task_model->engine, + &(ptd->conf)); + PTS_DEBUG("releasing memory"); + PTS_IF_FREE_MEM(ptd->conf.initial_fname); + PTS_IF_FREE_MEM(ptd->conf.ppd); + PTS_IF_FREE_MEM(ptd->conf.fname); + PTS_IF_FREE_MEM(ptd->conf.paper_size.name); + PTS_DEBUG("memory released"); + break; + } + + PTS_IF_FREE_MEM(ptd); + task_model->thread = NULL; + + /* manage tasks queue */ + if (task_model->task_list != NULL) { + ptd = (struct preview_task_data *) + eina_list_data_get(task_model->task_list); + task_model->task_list = eina_list_remove_list( + task_model->task_list, task_model->task_list); + task_model->thread = ecore_thread_run( + preview_task_thread_cb, + preview_task_end_cb, + preview_task_cancel_cb, + ptd); + } + + PTS_TRACE_END; +} + +int add_preview_task_initial(struct preview_task_model *model, + const struct preview_conf *conf) +{ + PTS_TRACE_BEGIN; + PTS_RETV_IF(model == NULL || conf == NULL, -1, "Invalid argument"); + + struct preview_task_data *ptd; + + /* fill the preview_task_data structure */ + ptd = malloc(sizeof(struct preview_task_data)); + PTS_RETV_IF(ptd == NULL, -1, "malloc failed"); + + memset(ptd, 0, sizeof(struct preview_task_data)); + ptd->task_type = PREVIEW_TASK_INITIAL; + ptd->conf = *conf; + ptd->task_model = model; + + /* TODO: clear task queue, disable generic tasks */ + clear_preview_task_queue(model); + + /* manage task queue */ + if (NULL != model->thread) { + /* plan task for calculation in future */ + /* TODO: check, does we have current tasks in task model */ + model->task_list = eina_list_append(model->task_list, ptd); + /* TODO: leave only 4 last page requests in queue */ + } else { + /* this task is a top task - just process */ + model->thread = ecore_thread_run( + preview_task_thread_cb, + preview_task_end_cb, + NULL, ptd); + } + + PTS_TRACE_END; + return 0; +} + +int add_preview_task(struct preview_task_model *model, int page, + struct preview_model *pmodel) +{ + PTS_TRACE_BEGIN; + PTS_RETV_IF(model == NULL || pmodel == NULL , -1 , "Invalid argument"); + PTS_RETV_IF(model->is_stop_processing, -1, "is_stop_processing is %d", model->is_stop_processing); + + /* fill the preview_task_data structure */ + struct preview_task_data *ptd; + struct preview_task_data *next_ptd; + ptd = malloc(sizeof(struct preview_task_data)); + PTS_RETV_IF(ptd == NULL, -1, "malloc failed"); + + ptd->page = page; + ptd->task_type = PREVIEW_TASK_GENERIC; + sprintf(ptd->out_pic_fname, "/tmp/mobileprint_%04d.ppm", page); + ptd->is_task_ok = 0; + ptd->conf = pmodel->conf; + ptd->pmodel = pmodel; + ptd->task_model = model; + + /* manage task queue */ + if (NULL != model->thread) { + next_ptd = (struct preview_task_data *) + eina_list_data_get(model->task_list); + if (next_ptd == NULL) { + PTS_IF_FREE_MEM(ptd); + return 0; + } + if (PREVIEW_TASK_INITIAL == next_ptd->task_type) { + /* do not add this task: initialization is planned */ + PTS_IF_FREE_MEM(ptd); + } else { + /* plan task for calculation in future */ + model->task_list = eina_list_append( + model->task_list, ptd); + } + /* TODO: leave only 4 last page requests in queue */ + } else { + /* this task is a top task - just process */ + model->thread = ecore_thread_run( + preview_task_thread_cb, + preview_task_end_cb, + preview_task_cancel_cb, + ptd); + } + + PTS_TRACE_END; + return 0; +} diff --git a/mobileprint/app/preview_widget.c b/mobileprint/app/preview_widget.c new file mode 100644 index 0000000..ad34a7a --- /dev/null +++ b/mobileprint/app/preview_widget.c @@ -0,0 +1,80 @@ +/* +* Mobileprint +* +* Copyright 2012 Samsung Electronics Co., Ltd + +* Licensed under the Flora License, Version 1.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://floralicense.org/license/ + +* 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. +* +*/ + +#include "loading_animation.h" +#include "pts_common.h" +#include "pts_debug.h" +#include "preview_widget.h" + +extern int g_pages_count; + +Evas_Object *pts_main_view_load_preview_img(pts_core_data_t *ugd); + +/* just simple stub for 1-page documents */ +Eina_Bool page_ready_cb(void *data, int type, void *event) +{ + PTS_TRACE_BEGIN; + pts_core_data_t *ugd = (pts_core_data_t *)data; + struct preview_engine_event *event_data = (struct preview_engine_event *) event; + PTS_RETV_IF(ugd == NULL || event_data == NULL, ECORE_CALLBACK_DONE, "Invalid argument"); + + PTS_DEBUG("event:%d page: %d", event_data->status, event_data->page); + + switch (event_data->status) { + case PREVIEW_ENGINE_EVENT_INITIAL_READY: + /* initialization done: request for page */ + ugd->pt_files.current_index = 0; + g_pages_count = ugd->engine.p_model.conf.pages_count; + preview_model_request_page(&(ugd->engine.p_model), 1); + /* TODO: change preview image to fit it's size */ + break; + + case PREVIEW_ENGINE_EVENT_PAGE_READY: + /* load page */ + if (event_data->page == ugd->pt_files.current_index + 1) { + hide_loading_animation(ugd); + pts_main_view_load_preview_img(ugd); + if (event_data->page > 1) + preview_model_request_page( + &(ugd->engine.p_model), + event_data->page - 1); + if (event_data->page < (ugd->engine + .p_model.conf.pages_count)) + preview_model_request_page( + &(ugd->engine.p_model), + event_data->page + 1); + } + break; + + case PREVIEW_ENGINE_EVENT_PAGE_PROCESSING: + /* TODO: show empty page */ + if (event_data->page == ugd->pt_files.current_index + 1) { + show_loading_animation(ugd); + } + break; + + case PREVIEW_ENGINE_EVENT_INITIAL_ERROR: + case PREVIEW_ENGINE_EVENT_PAGE_ERROR: + /* TODO: something in error case */ + break; + } + + PTS_TRACE_END; + return ECORE_CALLBACK_DONE; +} diff --git a/mobileprint/app/pts_common.c b/mobileprint/app/pts_common.c new file mode 100644 index 0000000..70de8bd --- /dev/null +++ b/mobileprint/app/pts_common.c @@ -0,0 +1,1344 @@ +/* +* Mobileprint +* +* Copyright 2012 Samsung Electronics Co., Ltd + +* Licensed under the Flora License, Version 1.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://floralicense.org/license/ + +* 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. +* +*/ + +#include +#include +#include +#include +#include +#include +#include "pts_common.h" +#include "image_editor_conn.h" +#include "pts_main_view.h" +#include "preview_util.h" + +pts_core_data_t *g_ugd; +Evas_Object *pts_create_custom_popup(Evas_Object *parent, pts_core_data_t *ugd); +void __pts_main_view_create_list_view(pts_core_data_t *ugd); +void main_quit_cb(void *data, Evas_Object *obj, + const char *emission, const char *source); + +static Evas_Object *scaling_radio_main = NULL; +static Evas_Object *size_radio_main = NULL; +static Elm_Genlist_Item_Class scaling_itc; +static Elm_Genlist_Item_Class size_itc; +static Elm_Genlist_Item_Class title_itc; +static Elm_Genlist_Item_Class text_itc; +static Elm_Genlist_Item_Class check_itc; +static Elm_Genlist_Item_Class button_itc; +static int scaling_index = 0; +int size_index = 0; + +static Eina_Bool aspect_ratio = 0; + +static Evas_Object *width_layout; +static Evas_Object *width_entry; +static Evas_Object *height_layout; +static Evas_Object *height_entry; + +void pts_set_ugd(pts_core_data_t *ugd) +{ + g_ugd = ugd; +} + +pts_core_data_t *pts_get_ugd(void) +{ + return g_ugd; +} + +int pts_unstandardization(char *name) +{ + char *ptr = NULL;/* Pointer into name */ + PTS_RETV_IF(name == NULL, -1, "Invalid argument"); + + for (ptr = name; *ptr; ptr++) { + if (*ptr == '@') { + return 0; + } else if ((*ptr >= 0 && *ptr < ' ') || + *ptr == 127 || *ptr == '/' ||*ptr == '#') { + return -1; + } else if (*ptr == 0x5F) { + *ptr = 0x20; /*convert _ to space*/ + } else if (*ptr == '[' || *ptr == '(') { + *ptr='\0'; + while (name <= ptr) { + ptr--; + if (*ptr==0x20) { + *ptr='\0'; + } else { + return 0; + } + } + return 0; + } + } + return 0; +} + +char* pts_parse_protocol(char *addr) +{ + PTS_TRACE_BEGIN; + char *printer_protocol = NULL; + + PTS_RETV_IF(addr == NULL, NULL, "Invalid argument"); + + if (strstr(addr, "_pdl-datastream.") != NULL) { + printer_protocol = strdup("Network (RAW)"); + } else if (strstr(addr, "_ipp.") != NULL) { + printer_protocol = strdup("Network (IPP)"); + } else if (strstr(addr, "_printer.") != NULL) { + printer_protocol = strdup("Network (LPD)"); + } else if (strstr(addr, "usb") != NULL) { + printer_protocol = strdup("USB"); + } else { + printer_protocol = strdup("Unknown"); + } + + PTS_TRACE_END; + return printer_protocol; +} + + +/** + * This function let the app create the label + * @return void + * @param[in] parent the pointer to the parent of the label + * @param[in] desc the pointer to label text + */ +Evas_Object *pts_create_label_btn(Evas_Object *parent, const char *label) +{ + PTS_TRACE_BEGIN; + Evas_Object *btn = elm_button_add(parent); + elm_object_text_set(btn, label); + evas_object_show(btn); + PTS_TRACE_END; + return btn; +} + + +/** + * This function let the app create the base layout + * @return void + * @param[in] parent the pointer to the parent of the base layout + * @param[in] desc the pointer to group of the base layout + */ +Evas_Object *pts_create_base_layout_with_conform(Evas_Object *parent, const char *group) +{ + PTS_TRACE_BEGIN; + char edj_file[128] = {0}; + Evas_Object *base = NULL; + Evas_Object *conform = NULL; + int r = 0; + + /* load edje */ + app_get_resource("edje/mobileprint.edj", edj_file, 128); + + conform = elm_conformant_add(parent); + evas_object_size_hint_weight_set(conform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_win_resize_object_add(parent, conform); + evas_object_show(conform); + + base = elm_layout_add(conform); + //base = elm_layout_add(parent); + if (base) { + r = elm_layout_file_set(base, edj_file, group); + if (!r) { + evas_object_del(base); + return NULL; + } + elm_object_content_set(conform, base); + //evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + } + PTS_TRACE_END; + + return base; +} + +Evas_Object *pts_create_base_layout(Evas_Object *parent, const char *group) +{ + PTS_TRACE_BEGIN; + char edj_file[128] = {0}; + Evas_Object *base = NULL; + int r = 0; + + /* load edje */ + app_get_resource("edje/mobileprint.edj", edj_file, 128); + + base = elm_layout_add(parent); + if (base) { + r = elm_layout_file_set(base, edj_file, group); + if (!r) { + evas_object_del(base); + return NULL; + } + evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + } + PTS_TRACE_END; + + return base; +} + + +/** + * This function let the app create the popup element + * @return void + * @param[in] parent the pointer to the parent of the popup element + * @param[in] desc the pointer to description of the popup element + * @param[in] timeout the timeout value + */ +Evas_Object *pts_create_popup(Evas_Object *parent, const char *desc, double timeout) +{ + PTS_TRACE_BEGIN; + Evas_Object *notify = NULL; + notify = elm_popup_add(parent); + evas_object_size_hint_weight_set(notify, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + //elm_popup_mode_set(notify, ELM_POPUP_TYPE_ALERT); + elm_popup_timeout_set(notify, timeout); + elm_object_text_set(notify, desc); + evas_object_show(notify); + PTS_TRACE_END; + return notify; +} + +static void _pts_scaling_set_cb(void *data, Evas_Object *obj, void *event_info) +{ + PTS_TRACE_BEGIN; + + pts_core_data_t *ugd = (pts_core_data_t *)data; + PTS_RET_IF(ugd == NULL, "ugd is NULL"); + + if (NULL != scaling_radio_main) { + evas_object_del(scaling_radio_main); + scaling_radio_main = NULL; + } + + if (NULL != ugd->scaling_popup) { + evas_object_del(ugd->scaling_popup); + ugd->scaling_popup = NULL; + } + + pts_main_view_rotate_image(ugd, app_get_device_orientation()); + + PTS_TRACE_END; +} + +static char *__pts_scaling_label_get(void *data, Evas_Object *obj, const char *part) +{ + PTS_TRACE_BEGIN; + int index = (int)data; + char *label = NULL; + char temp[1024] = {0}; + + if (strcmp(part, "elm.text") == 0) { + switch (index) { + case PT_SCALING_FIT_TO_PAGE: + label = strdup(_("IDS_BT_OPT_FIT_TO_PAPER")); + break; + case PT_SCALING_2_PAGES: + snprintf(temp,1024,_("IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB"),2); + label = strdup(temp); + break; + case PT_SCALING_4_PAGES: + snprintf(temp,1024,_("IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB"),4); + label = strdup(temp); + break; + default: + label = strdup("Unknown option"); + break; + } + } + + PTS_TRACE_END; + return label; +} + +static Evas_Object *__pts_scaling_icon_get(void *data, Evas_Object *obj, const char *part) +{ + PTS_TRACE_BEGIN; + + int index = (int)data; + PTS_DEBUG("Passed index : %d", index); + Evas_Object *radio; + + if (!strcmp(part, "elm.icon") || !strcmp(part, "elm.swallow.icon")) { + radio = elm_radio_add(obj); + elm_radio_state_value_set(radio, index); + elm_radio_group_add(radio, scaling_radio_main); + PTS_DEBUG("scaling_index[%d]", scaling_index); + // It's filter to avoid all radio selection + if (scaling_index == index) { + elm_radio_value_set(radio, scaling_index); + PTS_DEBUG("OK...Set radio button using scaling_index[%d]", scaling_index); + } + + evas_object_size_hint_weight_set(radio, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(radio, EVAS_HINT_FILL, EVAS_HINT_FILL); + + return radio; + } + + PTS_TRACE_END; + return NULL; +} + +static void __pts_scaling_sel(void *data, Evas_Object *obj, void *event_info) +{ + PTS_TRACE_BEGIN; + + pts_core_data_t *ugd = (pts_core_data_t *)data; + PTS_RET_IF(NULL == ugd, "ugd is NULL"); + + int scaling = -1; + Elm_Object_Item *item = event_info; + + if (item != NULL) { + elm_genlist_item_selected_set(item, EINA_FALSE); + + scaling = (int)elm_object_item_data_get(item); + if (scaling > -1) { + PTS_DEBUG("Selected scaling : %d", scaling); + + scaling_index = ugd->active_printer->scaling = scaling; + + // Now call real event trigger to update radio button when selected. + elm_genlist_item_update(item); + } + } + PTS_TRACE_END; +} + +Evas_Object *pts_create_scaling_popup(Evas_Object *parent, pts_core_data_t *ugd) +{ + PTS_TRACE_BEGIN; + Evas_Object *popup; + Evas_Object *genlist; + Evas_Object *btn1; + int index; + + popup = elm_popup_add(parent); + elm_object_style_set(popup,"min_menustyle"); + elm_object_part_text_set(popup, "title,text", _("IDS_PRT_BODY_SCALING_ABB")); + + evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + + btn1 = elm_button_add(popup); + elm_object_style_set(btn1,"popup_button/default"); + elm_object_text_set(btn1, _("IDS_PRT_BODY_SCALING_ABB")); + elm_object_part_content_set(popup, "button1", btn1); + evas_object_smart_callback_add(btn1, "clicked", _pts_scaling_set_cb, ugd); + + genlist = elm_genlist_add(ugd->navi); + evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL); + + if (!scaling_radio_main) { + scaling_radio_main = elm_radio_add(genlist); + elm_radio_state_value_set(scaling_radio_main, scaling_index); + elm_radio_value_set(scaling_radio_main, scaling_index); + } + + scaling_itc.item_style = "1text.1icon.2"; + scaling_itc.func.text_get = __pts_scaling_label_get; + scaling_itc.func.content_get = __pts_scaling_icon_get; + scaling_itc.func.state_get = NULL; + scaling_itc.func.del = NULL; + + Elm_Object_Item *item = NULL; + for (index = 0; index < (PT_SCALING_4_PAGES+1); index++) { + item = elm_genlist_item_append(genlist, &scaling_itc, (void *)index, NULL, ELM_GENLIST_ITEM_NONE, __pts_scaling_sel, ugd); + PTS_DEBUG("index[%d] - item added : %s", index, (NULL == item)? "FAILURE" : "SUCCESS"); + } + + Evas_Object *box = elm_box_add(popup); + evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + + elm_box_pack_end(box, genlist); + evas_object_size_hint_min_set(box, 400 * elm_config_scale_get(), elm_genlist_items_count(genlist) * 114 * elm_config_scale_get()); + elm_object_content_set(popup, box); + + evas_object_show(genlist); + evas_object_show(popup); + + ugd->scaling_popup = popup; + + PTS_TRACE_END; + return genlist; +} + +static void _pts_size_cancel_cb(void *data, Evas_Object *obj, void *event_info) +{ + PTS_TRACE_BEGIN; + + pts_core_data_t *ugd = (pts_core_data_t *)data; + PTS_RET_IF(NULL == ugd, "ugd is NULL"); + + if (NULL != size_radio_main) { + evas_object_del(size_radio_main); + size_radio_main = NULL; + } + + evas_object_del(obj); + evas_object_del(ugd->size_popup); + ugd->size_popup = NULL; + + PTS_TRACE_END; +} + +static char *__pts_size_label_get(void *data, Evas_Object *obj, const char *part) +{ + PTS_TRACE_BEGIN; + int index = (int)data; + char *label = NULL; + char custom[32] = {0,}; + pts_core_data_t *ugd = pts_get_ugd(); + + if (strcmp(part, "elm.text") == 0) { + switch (index) { + case PTS_SIZE_FIT_TO_PAPER: + label = strdup(_("IDS_BT_OPT_FIT_TO_PAPER")); + break; + case PTS_SIZE_5X7: + label = strdup(IDS_BR_OPT_5X7); + break; + case PTS_SIZE_4X6: + label = strdup(IDS_BR_OPT_4X6); + break; + case PTS_SIZE_3_5X5: + label = strdup(IDS_BR_OPT_3_5X5); + break; + case PTS_SIZE_WALLET: + label = strdup(IDS_BR_OPT_WALLET); + break; + case PTS_SIZE_CUSTOM: + if (ugd->custom_unit == 1) { // cm unit + snprintf(custom, 32, "%s (%.1lfx%.1lfcm)", _("IDS_COM_SK_CUSTOM"), ugd->custom_height, ugd->custom_width); + } else if (ugd->custom_unit == 2) { // inch unit + snprintf(custom, 32, "%s (%.1lf\"x%.1lf\")", _("IDS_COM_SK_CUSTOM"), ugd->custom_height, ugd->custom_width); + } else { + snprintf(custom, 32, "%s (%.1lfx%.1lf)", _("IDS_COM_SK_CUSTOM"), ugd->custom_height, ugd->custom_width); + } + + label = strdup(custom); + break; + default: + label = strdup("Unknown option"); + break; + } + } + + PTS_TRACE_END; + return label; +} + +static Evas_Object *__pts_size_icon_get(void *data, Evas_Object *obj, const char *part) +{ + PTS_TRACE_BEGIN; + + int index = (int)data; + PTS_DEBUG("Passed index : %d", index); + Evas_Object *radio; + + if (!strcmp(part, "elm.icon") || !strcmp(part, "elm.swallow.icon")) { + radio = elm_radio_add(obj); + elm_radio_state_value_set(radio, index); + elm_radio_group_add(radio, size_radio_main); + PTS_DEBUG("size_index[%d]", size_index); + // It's filter to avoid all radio selection + if (size_index == index) { + elm_radio_value_set(radio, size_index); + PTS_DEBUG("OK...Set radio button using size_index[%d]", size_index); + } + + evas_object_size_hint_weight_set(radio, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(radio, EVAS_HINT_FILL, EVAS_HINT_FILL); + + return radio; + } + + PTS_TRACE_END; + return NULL; +} + +static void __pts_size_sel(void *data, Evas_Object *obj, void *event_info) +{ + PTS_TRACE_BEGIN; + + pts_core_data_t *ugd = (pts_core_data_t *)data; + PTS_RET_IF(ugd == NULL, "ugd is NULL"); + + int size = -1; + Elm_Object_Item *item = event_info; + + if (item != NULL) { + elm_genlist_item_selected_set(item, EINA_FALSE); + + size = (int)elm_object_item_data_get(item); + if (size > PTS_SIZE_FIT_TO_PAPER && size < PTS_SIZE_CUSTOM) { + PTS_DEBUG("Selected size : %d", size); + + ugd->image_size = size; + + // Now call real event trigger to update radio button when selected. + elm_genlist_item_update(item); + + load_image_editor_ug(ugd); + } else if (size == PTS_SIZE_CUSTOM) { + //ugd->image_size = size; + pts_create_custom_popup(ugd->navi, ugd); + } else if (size == PTS_SIZE_FIT_TO_PAPER) { + size_index = ugd->image_size = size; + // just back to fit-to-paper of original image + PTS_IF_FREE_MEM(ugd->pt_files.request_files[0]); + ugd->pt_files.request_files[0] = strdup(ugd->input_file); + PTS_DEBUG("original_image_path: %s", ugd->pt_files.request_files[0]); + pts_main_view_rotate_image(ugd, app_get_device_orientation()); + } else { + PTS_DEBUG("Unknown size"); + } + evas_object_del(obj); + evas_object_del(ugd->size_popup); + ugd->size_popup = NULL; + + if (NULL != size_radio_main) { + evas_object_del(size_radio_main); + size_radio_main = NULL; + } + } + PTS_TRACE_END; +} + +Evas_Object *pts_create_size_popup(Evas_Object *parent, pts_core_data_t *ugd) +{ + PTS_TRACE_BEGIN; + Evas_Object *popup; + Evas_Object *genlist; + Evas_Object *btn1; + int index; + + popup = elm_popup_add(parent); + elm_object_style_set(popup,"min_menustyle"); + elm_object_part_text_set(popup, "title,text", _("IDS_IMGE_BODY_SIZE")); + + evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + + btn1 = elm_button_add(popup); + elm_object_style_set(btn1, "popup_button/default"); + elm_object_text_set(btn1, _("IDS_COM_SK_CANCEL")); + elm_object_part_content_set(popup, "button1", btn1); + evas_object_smart_callback_add(btn1, "clicked", _pts_size_cancel_cb, ugd); + + genlist = elm_genlist_add(popup); + evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL); + + if (!size_radio_main) { + size_radio_main = elm_radio_add(genlist); + elm_radio_state_value_set(size_radio_main, size_index); + elm_radio_value_set(size_radio_main, size_index); + } + + size_itc.item_style = "1text.1icon.2"; + size_itc.func.text_get = __pts_size_label_get; + size_itc.func.content_get = __pts_size_icon_get; + size_itc.func.state_get = NULL; + size_itc.func.del = NULL; + + Elm_Object_Item *item = NULL; + for (index = 0; index < PTS_SIZE_MAX; index++) { + item = elm_genlist_item_append(genlist, &size_itc, (void *)index, NULL, ELM_GENLIST_ITEM_NONE, __pts_size_sel, ugd); + PTS_DEBUG("index[%d] - item added : %s", index, (NULL == item)? "FAILURE" : "SUCCESS"); + } + + Evas_Object *box = elm_box_add(popup); + evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + + elm_box_pack_end(box, genlist); + + ugd->size_popup_portrait_height = elm_genlist_items_count(genlist) * 114 * elm_config_scale_get(); + ugd->size_popup_landscape_height = 300; + + app_device_orientation_e orientation = app_get_device_orientation(); + + if (APP_DEVICE_ORIENTATION_0 == orientation || + APP_DEVICE_ORIENTATION_180 == orientation) { + evas_object_size_hint_min_set(box, 400 * elm_config_scale_get(), ugd->size_popup_portrait_height); + } else { + evas_object_size_hint_min_set(box, 400 * elm_config_scale_get(), ugd->size_popup_landscape_height); + } + + elm_object_content_set(popup, box); + ugd->size_popup_box = box; + + evas_object_show(genlist); + evas_object_show(popup); + + ugd->size_popup = popup; + + PTS_TRACE_END; + return genlist; +} + +static void _pts_custom_ok_cb(void *data, Evas_Object *obj, void *event_info) +{ + PTS_TRACE_BEGIN; + + pts_core_data_t *ugd = (pts_core_data_t *)data; + PTS_RET_IF(ugd == NULL, "ugd is NULL"); + + ugd->image_size = PTS_SIZE_CUSTOM; + load_image_editor_ug(ugd); + + evas_object_del(obj); + evas_object_del(ugd->custom_popup); + ugd->custom_popup = NULL; + + elm_theme_extension_del(NULL, RESDIR"/edje/genlist_custom.edj"); + + PTS_TRACE_END; +} + +static void _pts_custom_cancel_cb(void *data, Evas_Object *obj, void *event_info) +{ + PTS_TRACE_BEGIN; + + pts_core_data_t *ugd = (pts_core_data_t *)data; + PTS_RET_IF(ugd == NULL, "ugd is NULL"); + + evas_object_del(obj); + evas_object_del(ugd->custom_popup); + ugd->custom_popup = NULL; + + // FIXME - just back to original size + int tmp_width = 0; + int tmp_height = 0; + + get_image_resolution(ugd->input_file, &tmp_width, &tmp_height); + ugd->custom_width = (double)tmp_width; + ugd->custom_height = (double)tmp_height; + ugd->custom_w_ratio = ugd->custom_width / ugd->custom_height; + PTS_DEBUG("Original image size : %lfx%lf(%lfx1)", ugd->custom_width, ugd->custom_height, ugd->custom_w_ratio); + // original image size (unit cm) calculated by 300dpi + ugd->custom_width = (ugd->custom_width / 300) * 2.54; + ugd->custom_height = (ugd->custom_height / 300) * 2.54; + ugd->custom_unit = 1; // cm unit + + elm_theme_extension_del(NULL, RESDIR"/edje/genlist_custom.edj"); + + PTS_TRACE_END; +} + +static char *__pts_custom_label_get(void *data, Evas_Object *obj, const char *part) +{ + PTS_TRACE_BEGIN; + int index = (int)data; + char *label = NULL; + + if (strcmp(part, "elm.text") == 0) { + if (index == 0) { + label = strdup(_("IDS_IMGE_BODY_WIDTH")); + } else if (index == 2) { + label = strdup(_("IDS_IMGE_BODY_HEIGHT")); + } else if (index == 4) { + label = strdup(_("IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB")); + } else { + label = strdup("Unknown label"); + } + } + + PTS_TRACE_END; + return label; +} + +static void _changed_cb(void *data, Evas_Object *obj, void *event_info) +{ + PTS_TRACE_BEGIN; + char *input_str = NULL; + const char *entry_text = NULL; + int index = (int)data; + + entry_text = elm_entry_entry_get(obj); + if ((input_str = elm_entry_markup_to_utf8(entry_text))) { + pts_core_data_t *ugd = pts_get_ugd(); + + if (index == 1) { + ugd->custom_width = atoi(input_str); + } else if (index == 3) { + ugd->custom_height = atoi(input_str); + } else { + PTS_DEBUG("Unknown index : %d", index); + } + + PTS_DEBUG("Typed custom value : width[%lf] x height[%lf]", ugd->custom_width, ugd->custom_height); + + PTS_IF_FREE_MEM(input_str); + } + PTS_TRACE_END; +} + +static void _focused_cb(void *data, Evas_Object *obj, void *event_info) // Focused callback will show X marked button and hide guidetext. +{ + PTS_TRACE_BEGIN; + elm_object_signal_emit(data, "elm,state,guidetext,hide", "elm"); + PTS_TRACE_END; +} + +static void _unfocused_cb(void *data, Evas_Object *obj, void *event_info) // Unfocused callback will show guidetext and hide X marked button. +{ + PTS_TRACE_BEGIN; + char temp_size[32] = {0,}; + + if (elm_entry_is_empty(obj)) { + elm_object_signal_emit(data, "elm,state,guidetext,show", "elm"); + } + + if (aspect_ratio) { + pts_core_data_t *ugd = pts_get_ugd(); + + if (obj == width_entry) { + ugd->custom_height = ugd->custom_width / ugd->custom_w_ratio; + snprintf(temp_size, 32, "%.1lf", ugd->custom_height); + elm_object_signal_emit(height_layout, "elm,state,guidetext,hide", "elm"); + elm_entry_entry_set(height_entry, temp_size); + } else if (obj == height_entry) { + ugd->custom_width = ugd->custom_height * ugd->custom_w_ratio; + snprintf(temp_size, 32, "%.1lf", ugd->custom_width); + elm_object_signal_emit(width_layout, "elm,state,guidetext,hide", "elm"); + elm_entry_entry_set(width_entry, temp_size); + } else { + PTS_DEBUG("Unknown entry : %p", obj); + } + } + PTS_TRACE_END; +} + +static void _eraser_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source) // When X marked button clicked, make string as empty. +{ + PTS_TRACE_BEGIN; + elm_entry_entry_set(data, ""); + PTS_TRACE_END; +} + +static Evas_Object *__pts_singleline_editfield_add(Evas_Object *parent, int index) // For single lined editfield without top title. +{ + PTS_TRACE_BEGIN; + Evas_Object *layout, *entry; + static Elm_Entry_Filter_Accept_Set digits_filter_data; + char temp_size[32] = {0,}; + pts_core_data_t *ugd = pts_get_ugd(); + + layout = elm_layout_add(parent); + elm_layout_theme_set(layout, "layout", "editfield", "default"); // Default editfield layout style without top title. + + entry = elm_entry_add(parent); + elm_entry_input_panel_layout_set(entry, ELM_INPUT_PANEL_LAYOUT_NUMBER); + elm_entry_scrollable_set(entry, EINA_TRUE); // Make entry as scrollable single line. + elm_entry_single_line_set(entry, EINA_TRUE); + elm_object_signal_emit(layout, "elm,state,eraser,show", "elm"); + evas_object_smart_callback_add(entry, "changed", _changed_cb, (void *)index); + evas_object_smart_callback_add(entry, "focused", _focused_cb, layout); + evas_object_smart_callback_add(entry, "unfocused", _unfocused_cb, layout); + + digits_filter_data.accepted = "0123456789."; + digits_filter_data.rejected = NULL; + elm_entry_markup_filter_append(entry, elm_entry_filter_accept_set, &digits_filter_data); + + elm_object_part_content_set(layout, "elm.swallow.content", entry); + if (index == 1) { + snprintf(temp_size, 32, "%.1lf", ugd->custom_width); + elm_object_part_text_set(layout, "elm.guidetext", temp_size); + width_layout = layout; + width_entry = entry; + } else if (index == 3) { + snprintf(temp_size, 32, "%.1lf", ugd->custom_height); + elm_object_part_text_set(layout, "elm.guidetext", temp_size); + height_layout = layout; + height_entry = entry; + } else { + elm_object_part_text_set(layout, "elm.guidetext", "Custom Size"); + } + + elm_object_signal_callback_add(layout, "elm,eraser,clicked", "elm", _eraser_clicked_cb, entry); + + PTS_TRACE_END; + return layout; +} + +static void _pts_custom_unit_cb(void *data, Evas_Object *obj, void *event_info) +{ + PTS_TRACE_BEGIN; + char temp[32] = {0,}; + pts_core_data_t *ugd = pts_get_ugd(); + PTS_DEBUG("Current unit : %d", ugd->custom_unit); + + if (ugd->custom_unit == 1) { // cm to inch + ugd->custom_unit = 2; + ugd->custom_width = ugd->custom_width / 2.54; + ugd->custom_height = ugd->custom_height / 2.54; + snprintf(temp, 32, "%s", _("IDS_COM_BODY_UNIT_CM")); + } else if (ugd->custom_unit == 2) { // inch to cm + ugd->custom_unit = 1; + ugd->custom_width = ugd->custom_width * 2.54; + ugd->custom_height = ugd->custom_height * 2.54; + snprintf(temp, 32, "%s", _("IDS_COM_BODY_UNIT_INCH")); + } else { + PTS_DEBUG("Unknown unit"); + PTS_TRACE_END; + return; + } + + elm_object_text_set(obj, temp); + + snprintf(temp, 32, "%.1lf", ugd->custom_width); + elm_object_signal_emit(width_layout, "elm,state,guidetext,hide", "elm"); + elm_entry_entry_set(width_entry, temp); + snprintf(temp, 32, "%.1lf", ugd->custom_height); + elm_object_signal_emit(height_layout, "elm,state,guidetext,hide", "elm"); + elm_entry_entry_set(height_entry, temp); + + PTS_DEBUG("Changed unit : %d", ugd->custom_unit); + PTS_TRACE_END; +} + +static void _pts_custom_unit_inch_cb(void *data, Evas_Object *obj, void *event_info) +{ + PTS_TRACE_BEGIN; + char temp[32] = {0,}; + pts_core_data_t *ugd = pts_get_ugd(); + PTS_DEBUG("Current unit : %d", ugd->custom_unit); + + if (ugd->custom_unit == 1) { // cm to inch + ugd->custom_unit = 2; + ugd->custom_width = ugd->custom_width / 2.54; + ugd->custom_height = ugd->custom_height / 2.54; + } else { + PTS_DEBUG("Unknown unit"); + PTS_TRACE_END; + return; + } + + snprintf(temp, 32, "%.1lf", ugd->custom_width); + elm_object_signal_emit(width_layout, "elm,state,guidetext,hide", "elm"); + elm_entry_entry_set(width_entry, temp); + snprintf(temp, 32, "%.1lf", ugd->custom_height); + elm_object_signal_emit(height_layout, "elm,state,guidetext,hide", "elm"); + elm_entry_entry_set(height_entry, temp); + + PTS_DEBUG("Changed unit : %d", ugd->custom_unit); + PTS_TRACE_END; +} + +static void _pts_custom_unit_cm_cb(void *data, Evas_Object *obj, void *event_info) +{ + PTS_TRACE_BEGIN; + char temp[32] = {0,}; + pts_core_data_t *ugd = pts_get_ugd(); + PTS_DEBUG("Current unit : %d", ugd->custom_unit); + + if (ugd->custom_unit == 2) { // inch to cm + ugd->custom_unit = 1; + ugd->custom_width = ugd->custom_width * 2.54; + ugd->custom_height = ugd->custom_height * 2.54; + } else { + PTS_DEBUG("Unknown unit"); + PTS_TRACE_END; + return; + } + + snprintf(temp, 32, "%.1lf", ugd->custom_width); + elm_object_signal_emit(width_layout, "elm,state,guidetext,hide", "elm"); + elm_entry_entry_set(width_entry, temp); + snprintf(temp, 32, "%.1lf", ugd->custom_height); + elm_object_signal_emit(height_layout, "elm,state,guidetext,hide", "elm"); + elm_entry_entry_set(height_entry, temp); + + PTS_DEBUG("Changed unit : %d", ugd->custom_unit); + PTS_TRACE_END; +} + +static Evas_Object *__pts_custom_icon_get(void *data, Evas_Object *obj, const char *part) +{ + PTS_TRACE_BEGIN; + Evas_Object *editfield = NULL; + Evas_Object *check = NULL; + Evas_Object *button = NULL; + int index = (int)data; + char unit[32] = {0,}; + + PTS_DEBUG("index: %d, passed part: %s", index, part); + if (!strcmp(part, "elm.icon")) { + switch (index) { + case 1: // width text field + case 3: // height text field + editfield = __pts_singleline_editfield_add(obj, index); + return editfield; + case 4: // check aspect ratio + check = elm_check_add(obj); + //set the State pointer to keep the current UI state of Checkbox. + elm_check_state_pointer_set(check, &aspect_ratio); + + evas_object_size_hint_weight_set(check, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(check, EVAS_HINT_FILL, EVAS_HINT_FILL); + return check; + case 5: // change unit button + button = elm_button_add(obj); + snprintf(unit, 32, "%s", _("IDS_COM_BODY_UNIT_INCH")); + elm_object_text_set(button, unit); + elm_object_part_content_set(obj, "button1", button); + evas_object_smart_callback_add(button, "clicked", _pts_custom_unit_cb, obj); + return button; + } + } else if (!strcmp(part, "elm.icon.1")) { + button = elm_button_add(obj); + snprintf(unit, 32, "%s", _("IDS_COM_BODY_UNIT_INCH")); + elm_object_text_set(button, unit); + elm_object_part_content_set(obj, "button1", button); + evas_object_smart_callback_add(button, "clicked", _pts_custom_unit_inch_cb, obj); + return button; + } else if (!strcmp(part, "elm.icon.2")) { + button = elm_button_add(obj); + snprintf(unit, 32, "%s", _("IDS_COM_BODY_UNIT_CM")); + elm_object_text_set(button, unit); + elm_object_part_content_set(obj, "button2", button); + evas_object_smart_callback_add(button, "clicked", _pts_custom_unit_cm_cb, obj); + return button; + } else { + PTS_DEBUG("Index: %d, Unknown part: %s", index, part); + } + + PTS_TRACE_END; + return NULL; +} + +static void __pts_custom_sel(void *data, Evas_Object *obj, void *event_info) +{ + PTS_TRACE_BEGIN; + + pts_core_data_t *ugd = (pts_core_data_t *)data; + PTS_RET_IF(ugd == NULL, "ugd is NULL"); + + int index = -1; + Elm_Object_Item *item = event_info; + + if (item != NULL) { + elm_genlist_item_selected_set(item, EINA_FALSE); + + index = (int)elm_object_item_data_get(item); + if (index == 4) { + aspect_ratio = !aspect_ratio; + PTS_DEBUG("Preserve aspect ratio : %d", aspect_ratio); + + elm_genlist_item_update(item); + } else { + PTS_DEBUG("Unknown index"); + } + } + PTS_TRACE_END; +} + +Evas_Object *pts_create_custom_popup(Evas_Object *parent, pts_core_data_t *ugd) +{ + PTS_TRACE_BEGIN; + Evas_Object *popup; + Evas_Object *genlist; + Evas_Object *btn1; + Evas_Object *btn2; + int index = -1; + + popup = elm_popup_add(parent); + elm_object_style_set(popup,"min_menustyle"); + elm_object_part_text_set(popup, "title,text", _("IDS_COM_SK_CUSTOM")); + + evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + + btn1 = elm_button_add(popup); + elm_object_style_set(btn1,"popup_button/default"); + elm_object_text_set(btn1, _("IDS_COM_SK_OK")); + elm_object_part_content_set(popup, "button1", btn1); + evas_object_smart_callback_add(btn1, "clicked", _pts_custom_ok_cb, ugd); + + btn2 = elm_button_add(popup); + elm_object_style_set(btn2,"popup_button/default"); + elm_object_text_set(btn2, _("IDS_COM_SK_CANCEL")); + elm_object_part_content_set(popup, "button2", btn2); + evas_object_smart_callback_add(btn2, "clicked", _pts_custom_cancel_cb, ugd); + + elm_theme_extension_add(NULL, RESDIR"/edje/genlist_custom.edj"); + PTS_DEBUG("Added extension theme"); + + genlist = elm_genlist_add(ugd->navi); + evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL); + + title_itc.item_style = "dialogue/title"; + title_itc.func.text_get = __pts_custom_label_get; + title_itc.func.content_get = NULL; + title_itc.func.state_get = NULL; + title_itc.func.del = NULL; + + text_itc.item_style = "1icon"; + text_itc.func.text_get = NULL; + text_itc.func.content_get = __pts_custom_icon_get; + text_itc.func.state_get = NULL; + text_itc.func.del = NULL; + + check_itc.item_style = "1text.1icon.2"; + check_itc.func.text_get = __pts_custom_label_get; + check_itc.func.content_get = __pts_custom_icon_get; + check_itc.func.state_get = NULL; + check_itc.func.del = NULL; + + //button_itc.item_style = "dialogue/bg/2icon"; + button_itc.item_style = "custom/2icon"; + button_itc.func.text_get = NULL; + button_itc.func.content_get = __pts_custom_icon_get; + button_itc.func.state_get = NULL; + button_itc.func.del = NULL; + + Elm_Object_Item *item = NULL; + Elm_Genlist_Item_Class *temp_itc = NULL; + Evas_Smart_Cb temp_cb = NULL; + + for (index = 0; index < 6; index++) { + temp_cb = __pts_custom_sel; + if (index == 0 || index == 2) { // width&height title + temp_itc = &title_itc; + temp_cb = NULL; + } else if (index == 1 || index == 3) { // width&height text field + temp_itc = &text_itc; + } else if (index == 4) { // aspect ratio check + temp_itc = &check_itc; + } else if (index == 5) { // change unit button + temp_itc = &button_itc; + } else { + temp_itc = &title_itc; + } + + item = elm_genlist_item_append(genlist, temp_itc, (void *)index, NULL, ELM_GENLIST_ITEM_NONE, temp_cb, ugd); + PTS_DEBUG("index[%d] - item added : %s", index, (NULL == item)? "FAILURE" : "SUCCESS"); + } + + Evas_Object *box = elm_box_add(popup); + evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + + elm_box_pack_end(box, genlist); + + ugd->custom_popup_portrait_height = (5 * 114 + 4) * elm_config_scale_get(); + //ugd->custom_popup_portrait_height = (4 * 114 + 13 )* elm_config_scale_get(); + ugd->custom_popup_landscape_height = 300; + app_device_orientation_e orientation = app_get_device_orientation(); + + if (APP_DEVICE_ORIENTATION_0 == orientation || + APP_DEVICE_ORIENTATION_180 == orientation) { + evas_object_size_hint_min_set(box, 400 * elm_config_scale_get(), ugd->custom_popup_portrait_height); + } else { + evas_object_size_hint_min_set(box, 400 * elm_config_scale_get(), ugd->custom_popup_landscape_height); + } + + elm_object_content_set(popup, box); + ugd->custom_popup_box = box; + + evas_object_show(genlist); + evas_object_show(popup); + + ugd->custom_popup = popup; + + PTS_TRACE_END; + return genlist; +} + +#if 1 +static Evas_Object *__pts_utils_create_conformant(Evas_Object *parent) +{ + + Evas_Object *conform = NULL; + elm_win_conformant_set(parent, TRUE); + conform = elm_conformant_add(parent); + + elm_object_style_set(conform, "internal_layout"); + + //evas_object_size_hint_weight_set(conform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + //evas_object_size_hint_align_set(conform, EVAS_HINT_FILL, EVAS_HINT_FILL); + + evas_object_show(conform); + + return conform; +} + +Evas_Object *pts_utils_create_layout(Evas_Object *navi_frame) +{ + Evas_Object *layout; + layout = elm_layout_add(navi_frame); + elm_layout_theme_set(layout, "layout", "application", "default"); + evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + + //Evas_Object *bg = elm_bg_add(layout); + //evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + //elm_object_style_set(bg, "group_list"); + //elm_object_part_content_set(layout, "elm.swallow.bg", bg); + + //Evas_Object *conform = __pts_utils_create_conformant(layout); + //assertm_if(NULL == conform, "NULL!!"); + //elm_object_part_content_set(layout, "elm.swallow.content", conform); + //elm_object_part_content_set(layout, "elm.swallow.content", layout); + evas_object_show(layout); + + return layout; +} + +#else +static Evas_Object *__pts_utils_create_conformant(Evas_Object *parent) +{ + + Evas_Object *conform = NULL; + elm_win_conformant_set(parent, TRUE); + conform = elm_conformant_add(parent); + + elm_object_style_set(conform, "internal_layout"); + + evas_object_size_hint_weight_set(conform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(conform, EVAS_HINT_FILL, EVAS_HINT_FILL); + + evas_object_show(conform); + + return conform; +} + +Evas_Object *pts_utils_create_layout(Evas_Object *navi_frame) +{ + Evas_Object *layout; + layout = elm_layout_add(navi_frame); + elm_layout_theme_set(layout, "layout", "application", "noindicator"); + evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + + Evas_Object *bg = elm_bg_add(layout); + evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_object_style_set(bg, "group_list"); + elm_object_part_content_set(layout, "elm.swallow.bg", bg); + + Evas_Object *conform = __pts_utils_create_conformant(layout); + //assertm_if(NULL == conform, "NULL!!"); + elm_object_part_content_set(layout, "elm.swallow.content", conform); + evas_object_show(layout); + + return layout; +} +#endif + +/* +* this function is used to compose folder and filename. +*/ +char **__compose_image_files_path(char *folder, const char **filesname, const int num_of_files) +{ + PTS_TRACE_BEGIN; + PTS_RETV_IF(folder == NULL, NULL, "folder is NULL"); + PTS_RETV_IF(filesname == NULL, NULL, "filesname is NULL"); + PTS_RETV_IF(num_of_files <= 0, NULL, "num is invalid(%d)",num_of_files); + + char **paths = NULL; + paths = (char **)malloc(sizeof(char *)*num_of_files); + PTS_RETV_IF(paths == NULL , NULL, "malloc failed!"); + + int count = 0; + int index = 0; + char filepath[512] = {0}; + + for (; count < num_of_files ; count++) { + snprintf(filepath, 512, "%s/%s", folder, filesname[count]); + + paths[count] = strdup(filepath); + if (paths[count] == NULL) { + PTS_DEBUG("Failed to strdup"); + for (index = 0 ; index < count ; index++) { + PTS_IF_FREE_MEM(paths[index]); + } + PTS_IF_FREE_MEM(paths); + return NULL; + } + PTS_DEBUG("files[%d]: %s", count, paths[count]); + } + + PTS_TRACE_END; + return paths; +} + +/* +* validate the path of image files. +*/ +bool __validate_file_type(char **files, int num) +{ + PTS_TRACE_BEGIN; + + PTS_RETV_IF(files == NULL || num <= 0, false, "the input param is invalid!"); + + int i = 0; + char *path = NULL; + const int filters_num = 16; + /* the image type that cups supports */ + const char *filters[] = {".gif", ".bmp", ".sgi", ".ras", ".pbm", ".pgm", ".ppm", ".pcd", + ".pix", ".png", ".jpeg", ".jpg", ".jpe", ".tiff", ".tif", ".pdf" + }; + + for (; i < num; i++) { + path = *(files + i); + + /* check whether the file is exist */ + int ret = -1; + struct stat buf; + + ret = stat(path, &buf); + PTS_RETV_IF(ret != 0, false, "get file(%s) status failed!", path); + + /* check whether the file can be supported */ + char *p = NULL; + p = strrchr(path, '.'); + PTS_RETV_IF(p == NULL, false, "get file(%s) filter failed!", path); + + int j = 0; + int tag = 0; + + for (; j < filters_num; j++) { + if (0 == strcasecmp(p, filters[j])) { + tag = 1; + break; + } + } + PTS_RETV_IF(tag == 0, false, "the file(%s) can't be supported!", path); + } + + PTS_TRACE_END; + return true; +} + +inline char *_pts_printing_data_get_directory(pts_printing_data_t *data) +{ + return data->directory; +} + +inline char **_pts_printing_data_get_request_files(pts_printing_data_t *data) +{ + return data->request_files; +} +inline int _pts_printing_data_get_files_count(pts_printing_data_t *data) +{ + return data->num_of_files; +} + +inline int _pts_printing_data_get_index(pts_printing_data_t *data) +{ + return data->current_index; +} + +inline char *_pts_printing_data_get_type(pts_printing_data_t *data) +{ + return data->type; +} + +Eina_Bool _pts_printing_data_set_directory(const char *directory, pts_printing_data_t *data) +{ + PTS_RETV_IF(directory == NULL, EINA_FALSE, "directory is NULL"); + PTS_RETV_IF(data == NULL, EINA_FALSE, "data is NULL"); + + data->directory = strdup(directory); + + PTS_RETV_IF(data->directory == NULL, EINA_FALSE, "Failed to strdup"); + return EINA_TRUE; +} + +Eina_Bool _pts_printing_data_set_request_files(const char **request_files, const int files_count, pts_printing_data_t *data) +{ + PTS_RETV_IF(request_files == NULL, EINA_FALSE, "request_files is NULL"); + PTS_RETV_IF(files_count <= 0, EINA_FALSE, "files_count is less than zero"); + + int count = 0; + count = _pts_printing_data_get_files_count(data); + PTS_RETV_IF(count != files_count, EINA_FALSE, "files count is not same with argument"); + + char *temp = NULL; + char **composite_files = NULL; + bool ret = false; + + temp = _pts_printing_data_get_directory(data); + if (temp != NULL) { + composite_files = __compose_image_files_path(temp, request_files, count); + PTS_RETV_IF(composite_files == NULL, EINA_FALSE, "compose the path of print files failed!"); + data->request_files = composite_files; + } else { + data->request_files = (char **)calloc(count, sizeof(char *)); + PTS_RETV_IF(data->request_files == NULL, EINA_FALSE, "Failed to calloc"); + + int index = 0; + for (index = 0 ; index < count ; index++) { + temp = strdup(request_files[index]); + PTS_RETV_IF(temp == NULL, EINA_FALSE, "Failed to strdup"); + data->request_files[index] = temp; + temp = NULL; + } + } + + ret = __validate_file_type(data->request_files, files_count); + PTS_RETV_IF(ret != true, EINA_FALSE, "files is invalid"); + + + return EINA_TRUE; +} + +Eina_Bool _pts_printing_data_set_files_count(const char *num_of_files, pts_printing_data_t *data) +{ + PTS_RETV_IF(num_of_files == NULL, EINA_FALSE,"num_of_files is NULL"); + PTS_RETV_IF(data == NULL, EINA_FALSE, "data is NULL"); + + int count = 0; + count = atoi(num_of_files); + PTS_RETV_IF(count <=0, EINA_FALSE, "num_of_files is less or equal than zero"); + data->num_of_files = count; + return EINA_TRUE; +} + +Eina_Bool _pts_printing_data_set_index(const char *current_index, pts_printing_data_t *data) +{ + PTS_RETV_IF(current_index == NULL, EINA_FALSE,"current_index is NULL"); + PTS_RETV_IF(data == NULL, EINA_FALSE, "data is NULL"); + + int index = -1; + index = atoi(current_index); + + PTS_RETV_IF(index < 0, EINA_FALSE, "index is less than zero"); + if (index >= _pts_printing_data_get_files_count(data)) { + PTS_DEBUG("the current index of print files(%s) is invalid!", index); + return EINA_FALSE; + } else { + data->current_index = index; + return EINA_TRUE; + } +} + +Eina_Bool _pts_printing_data_set_type(const char *type, pts_printing_data_t *data) +{ + PTS_RETV_IF(type == NULL, EINA_FALSE, "type is NULL"); + PTS_RETV_IF(data == NULL, EINA_FALSE, "data is NULL"); + + if (strcasecmp(type, "IMG") && strcasecmp(type,"DOC") && strcasecmp(type,"WEB")) { + PTS_DEBUG("the type of print files(%s) is invalid!", type); + return EINA_FALSE; + } else { + data->type = strdup(type); + PTS_RETV_IF(data->type == NULL, EINA_FALSE, "Failed to strdup"); + return EINA_TRUE; + } +} diff --git a/mobileprint/app/pts_list_view.c b/mobileprint/app/pts_list_view.c new file mode 100644 index 0000000..09d8a89 --- /dev/null +++ b/mobileprint/app/pts_list_view.c @@ -0,0 +1,440 @@ +/* +* Mobileprint +* +* Copyright 2012 Samsung Electronics Co., Ltd + +* Licensed under the Flora License, Version 1.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://floralicense.org/license/ + +* 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. +* +*/ + +#include "pts_common.h" +#include "pts_main_view.h" +#include "pts_list_view.h" +#include "pts_setting_view.h" +#if 0 + +//static Elm_Genlist_Item_Class list_itc; + +void main_quit_cb(void *data, Evas_Object *obj, + const char *emission, const char *source); + +/* +* release the list data +*/ +static void __pts_list_view_delete_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + PTS_TRACE_BEGIN; + pts_ug_list_data *ld = (pts_ug_list_data *)data; + ug_printer_retm_if(ld == NULL, "data is NULL"); + + if (ld->popup) { + evas_object_del(ld->popup); + ld->popup = NULL; + } + + if (ld != NULL) { + free(ld); + ld = NULL; + } + PTS_TRACE_END; +} + +/* +* the response callback when click the "back" button +*/ +static void __pts_list_view_btn_back_cb(void *data, Evas_Object *obj, void *event_info) +{ + PTS_TRACE_BEGIN; + pts_ug_list_data *ld = (pts_ug_list_data *)data; + ug_printer_retm_if(ld == NULL, "data is NULL"); + + elm_naviframe_item_pop(ld->ugd->navi); + PTS_TRACE_END; +} + + + +#if 0 +/* +* create the content of the list view +*/ +Evas_Object *__pts_list_view_create_content(pts_ug_list_data *ld) +{ + PTS_TRACE_BEGIN; + + if (NULL == ld) { + return NULL; + } + + Evas_Object *genlist = NULL; + + genlist = elm_genlist_add(ld->ugd->navi); + + if (!list_radio_main) { + list_radio_main = elm_radio_add(genlist); + elm_radio_state_value_set(list_radio_main, 0); + elm_radio_value_set(list_radio_main, 0); + } + + list_itc.item_style = "2text.1icon.4"; // Left Icon, Right Main/Sub Text + list_itc.func.text_get = __pts_list_view_label_get; + list_itc.func.content_get = __pts_list_view_icon_get; + list_itc.func.state_get = NULL; + list_itc.func.del = NULL; + + pt_printer_mgr_t *it = NULL; + Eina_List *cursor = NULL; + + int index = 1; + EINA_LIST_FOREACH(ld->printer_list, cursor, it) { + elm_genlist_item_append(genlist, &list_itc, (void *)it, NULL, ELM_GENLIST_ITEM_NONE, __pts_list_view_sel, ld); + //elm_genlist_item_append(genlist, &list_itc, (void *)index, NULL, ELM_GENLIST_ITEM_NONE, __pts_list_view_sel, ld); + index++; + } + + evas_object_show(genlist); + PTS_TRACE_END; + return genlist; +} +#endif + + + +#if 0 +static void _pts_printer_list_cancel_cb(void *data, Evas_Object *obj, void *event_info) +{ + PTS_TRACE_BEGIN; + evas_object_del(data); + pt_deinit(); + elm_exit(); + PTS_TRACE_END; +} + +Evas_Object *pts_create_printer_list_popup(Evas_Object *parent, pts_ug_list_data *ld) +{ + PTS_TRACE_BEGIN; + Evas_Object *popup; + Evas_Object *genlist; + Evas_Object *btn1; + Evas_Object *btn2; + + popup = elm_popup_add(parent); + elm_object_style_set(popup,"menustyle"); + elm_object_part_text_set(popup, "title,text", _("IDS_PRT_BODY_SELECT_PRINTER")); + + evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + + btn1 = elm_button_add(popup); + elm_object_style_set(btn1,"popup_button/default"); + elm_object_text_set(btn1, _("IDS_COM_SK_OK")); + elm_object_part_content_set(popup, "button1", btn1); + evas_object_smart_callback_add(btn1, "clicked", _pts_printer_list_ok_cb, ld); + + btn2 = elm_button_add(popup); + elm_object_style_set(btn2,"popup_button/default"); + elm_object_text_set(btn2, _("IDS_COM_SK_CANCEL")); + elm_object_part_content_set(popup, "button2", btn2); + evas_object_smart_callback_add(btn2, "clicked", _pts_printer_list_cancel_cb, popup); + + genlist = __pts_list_view_create_content(ld); + + elm_object_content_set(popup, genlist); + evas_object_show(popup); + evas_object_show(parent); + + ld->ugd->printer_list_popup = popup; + + PTS_TRACE_END; + return genlist; +} +#endif + +#if 0 +/* +* the response callback when search the printer +*/ +static void __pts_list_view_get_printer_cb(pt_response_data_t *cb) +{ + PTS_TRACE_BEGIN; + + //Evas_Object *back_btn = NULL; + //Evas_Object *content = NULL; + + if (NULL == cb) { + PTS_DEBUG("response data is NULL"); + return; + } + + int pt_count = 0; + pts_ug_list_data *ld = cb->userdata; + ug_printer_retm_if(ld == NULL, "data is NULL"); + + ld->printer_list = cb->printerlist; + ld->ugd->is_process = 0;/*process is complete*/ + + /* + * Not found any printer + */ + if (NULL == ld->printer_list) { + /* + * destroy popup progress bar + */ + evas_object_del(ld->popup); + ld->popup = NULL; + PTS_DEBUG("search printer failed"); + + pts_create_no_found_popup(ld->ugd->root_win, ld->ugd, (void *) _pts_refresh_cb, (void *) _pts_cancel_cb); + + if (ld != NULL) { + free(ld); + ld = NULL; + } + + return; + } + + /* get printer list count */ + pt_count = eina_list_count(ld->printer_list); + PTS_DEBUG("Printer count is %d, connect_type %d", pt_count, ld->ugd->connect_type); + + /* destroy popup progress bar */ + evas_object_del(ld->popup); + + /* USB mode or only first search only get one printer */ + if ((PT_CONNECTION_USB == ld->ugd->connect_type) || (1 == pt_count)) { + int ret = 0; + + /* get the usb printer info */ + pt_printer_mgr_t *pt = eina_list_data_get(ld->printer_list); + + PTS_DEBUG("pt name is %s", pt->name); + + PTS_DEBUG("pt address %x", pt); + + ret = pt_set_active_printer(pt); + if (PT_ERR_NONE != ret) { + pts_create_popup(ld->ugd->navi, PTS_2, 1.0); + if (ld != NULL) { + free(ld); + ld = NULL; + } + return; + } + + pt_set_default_printer(pt); + + if (NULL == ld->ugd->active_printer) { + ld->ugd->active_printer = (pt_printer_mgr_t *)malloc(sizeof(pt_printer_mgr_t)); + } else { + memset(ld->ugd->active_printer, 0, sizeof(ld->ugd->active_printer)); + } + + if (NULL != ld->ugd->active_printer) { + memset(ld->ugd->active_printer, 0, sizeof(pt_printer_mgr_t)); + memcpy(ld->ugd->active_printer, pt, sizeof(pt_printer_mgr_t)); + } else { + pts_create_popup(ld->ugd->navi, _("No Memory"), 1.0); + if (ld != NULL) { + free(ld); + ld = NULL; + } + return; + } + + // XXX - show main view after set active/default printer + pts_create_main_view(ld->ugd); + elm_win_resize_object_add(ld->ugd->root_win, ld->ugd->main_win); + edje_object_signal_callback_add(elm_layout_edje_get(ld->ugd->main_win), + "EXIT", "*", main_quit_cb, NULL); + + pts_main_view_update_printer_label(ugd); + + pts_main_view_rotate_image(ld->ugd, app_get_device_orientation()); + + evas_object_show(ld->ugd->main_win); + evas_object_show(ld->ugd->root_win); + + if (ld != NULL) { + free(ld); + ld = NULL; + } + } else { // Show printer list popup +#if 0 + back_btn = pts_create_label_btn(ld->ugd->navi, _("IDS_COM_SK_BACK")); + evas_object_smart_callback_add(back_btn, "clicked", __pts_list_view_btn_back_cb, ld); + + content = __pts_list_view_create_content(ld); + + evas_object_event_callback_add(content, EVAS_CALLBACK_DEL, __pts_list_view_delete_cb, ld); + + elm_naviframe_item_push(ld->ugd->navi, PTS_4, back_btn, NULL, content, NULL); + elm_object_style_set(back_btn, "naviframe/back_btn/default"); +#endif + + pts_create_printer_list_popup(ld->ugd->root_win, ld); + } + + PTS_TRACE_END; +} +#endif + +/* +* the response callback when searching popup +*/ +#if 0 +static void __pts_list_view_popup_response_cb(void *data, Evas_Object *obj, void *event_info) +{ + PTS_TRACE_BEGIN; + pts_ug_list_data *ld = (pts_ug_list_data *)data; + ug_printer_retm_if(ld == NULL, "setting is NULL"); + + /* cancel searching printers */ + if (ELM_POPUP_RESPONSE_CANCEL == (int)event_info) { + if (ld->search_err_timer != NULL) { + ecore_timer_del(ld->search_err_timer); + ld->search_err_timer = NULL; + } + pt_cancel_get_printers(); + } + + evas_object_del(ld->popup); + ld->popup = NULL; + + if (ld != NULL) { + free(ld); + ld = NULL; + } + PTS_TRACE_END; +} +#else +# if 0 +static void __pts_list_view_popup_ok_cb(void *data, Evas_Object *obj, void *event_info) +{ + PTS_TRACE_BEGIN; + pts_ug_list_data *ld = (pts_ug_list_data *)data; + ug_printer_retm_if(ld == NULL, "setting is NULL"); + + evas_object_del(ld->popup); + ld->popup = NULL; + + if (ld != NULL) { + free(ld); + ld = NULL; + } + PTS_TRACE_END; +} + +static void __pts_list_view_popup_close_cb(void *data, Evas_Object *obj, void *event_info) +{ + PTS_TRACE_BEGIN; + pts_ug_list_data *ld = (pts_ug_list_data *)data; + ug_printer_retm_if(ld == NULL, "setting is NULL"); + + evas_object_del(ld->popup); + ld->popup = NULL; + + if (ld != NULL) { + free(ld); + ld = NULL; + } + PTS_TRACE_END; +} +# endif + +static void __pts_list_view_popup_cancel_cb(void *data, Evas_Object *obj, void *event_info) +{ + PTS_TRACE_BEGIN; + pts_ug_list_data *ld = (pts_ug_list_data *)data; + ug_printer_retm_if(ld == NULL, "setting is NULL"); + + /* cancel searching printers */ + if (ld->search_err_timer != NULL) { + ecore_timer_del(ld->search_err_timer); + ld->search_err_timer = NULL; + } + pt_cancel_get_printers(); + + evas_object_del(ld->popup); + ld->popup = NULL; + + if (ld != NULL) { + free(ld); + ld = NULL; + } + PTS_TRACE_END; +} +#endif + +#if 0 +/** + * This function let the app create the printers list view + * @return void + * @param[in] ld the pointer to the ug list structure + */ +void pts_create_list_view(pts_ug_list_data *ld) +{ + PTS_TRACE_BEGIN; + if (NULL == ld) { + PTS_DEBUG("ld is NULL"); + return; + } + + int ret = 0; + Evas_Object *layout = NULL; + Evas_Object *progressbar = NULL; + + printer_index = -1; // Initialize value when start searching everytime + prev_printer_index = -1; // Initialize value when start searching everytime + + ld->popup = elm_popup_add(ld->ugd->root_win); + layout = pts_create_base_layout(ld->popup, "popup_search"); + ld->search_err_timer = NULL; + ld->ugd->is_process = 1; /* in process */ + + progressbar = elm_progressbar_add(ld->popup); + elm_object_style_set(progressbar, "list_process"); + elm_progressbar_horizontal_set(progressbar, EINA_TRUE); + evas_object_size_hint_align_set(progressbar, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_size_hint_weight_set(progressbar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_progressbar_pulse(progressbar, EINA_TRUE); + + evas_object_show(progressbar); + + elm_object_part_content_set(layout, "elm.swallow.content", progressbar); + elm_object_part_text_set(layout, "elm.text", _("IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING")); + +#if 0 + /* add cancel button */ + Evas_Object *btn1 = NULL; + btn1 = elm_button_add(ld->popup); + elm_object_text_set(btn1, S_("Cancel")); + elm_object_part_content_set(ld->popup, "button1", btn1); + + evas_object_smart_callback_add(btn1, "clicked", __pts_list_view_popup_cancel_cb, ld); +#endif + + elm_object_content_set(ld->popup, layout); + evas_object_show(layout); + evas_object_show(ld->popup); + evas_object_show(ld->ugd->root_win); + + ret = pt_get_printers(__pts_list_view_get_printer_cb, ld); + if (PT_ERR_NONE != ret) { + ld->search_err_timer = ecore_timer_add(2.0, (Ecore_Task_Cb)__pts_list_view_popup_error, (void *)ld); + } + + PTS_TRACE_END; +} +#endif + +#endif diff --git a/mobileprint/app/pts_main_view.c b/mobileprint/app/pts_main_view.c new file mode 100644 index 0000000..ee1a8a6 --- /dev/null +++ b/mobileprint/app/pts_main_view.c @@ -0,0 +1,2042 @@ +/* +* Mobileprint +* +* Copyright 2012 Samsung Electronics Co., Ltd + +* Licensed under the Flora License, Version 1.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://floralicense.org/license/ + +* 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. +* +*/ + +#define _GNU_SOURCE +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include "pt_api.h" + +#include "loading_animation.h" +#include "pts_common.h" +#include "pts_main_view.h" +#include "pts_list_view.h" +#include "pts_setting_view.h" +#include "preview_content.h" +#include "preview_widget.h" +#include "preview_util.h" + + +#define MOBILEPRINT_PACKAGENAME "org.tizen.mobileprint" +#define ICON_DIR "/opt/usr/apps/org.tizen.mobileprint/res/images" +#define ICON_SETTING "/opt/usr/apps/org.tizen.mobileprint/res/images/pt_printer_setting.png" +#define MOBILEPRINT_DEFAULTIMG "/opt/share/icons/default/small/org.tizen.mobileprint.png" +#define MOBILEPRINT_TMP_STR "_mobileprint.pdf" + +char *g_current_preview_path = NULL; +int g_pages_count = 0; + +void _wifi_qs_monitoring_cb(keynode_t *key, void *data); + +static void __pts_main_view_btn_setting_cb(void *data, Evas_Object *obj, void *event_info); +static Eina_Bool __pts_main_view_start_print(void *data); + +static void __pts_main_view_check_usb_printer_online(void *userdata); +static void __pts_main_view_check_usb_printer_offline(void *userdata); +static void __pts_main_view_check_printer_online(void *userdata); +static void __pts_main_view_check_printer_offline(void *userdata); +static void __pts_main_view_remove_job(void *userdata, int job_id); +static void __pts_main_view_job_error(void *userdata, int job_id); +static void __pts_main_view_last_job_error(void *user_data); +static Eina_Bool __pts_hide_main_view(void *data); +static int __pts_create_notification_by_page(pts_core_data_t *ugd, pts_job_spooling_t *job_spooling); + +static int __pts_get_real_total_pages(int original_total_pages, int n_up_number) +{ + return (int)ceil((double)original_total_pages / (double)n_up_number); +} + +static pts_job_spooling_t *__pts_get_job_spooling(pts_core_data_t *ugd, int job_id) +{ + PTS_TRACE_BEGIN; + PTS_RETV_IF(ugd == NULL, NULL, "Invalid parameter for __pts_get_last_job_spooling"); + PTS_RETV_IF(job_id <= 0, NULL, "job_id is invalid(%d)", job_id); + + Eina_List *job_spooling_list = NULL; + pts_job_spooling_t *job_spooling = NULL; + + EINA_LIST_FOREACH(ugd->job_spooling_list, job_spooling_list, job_spooling) { + if (job_spooling->job_id == job_id) { + PTS_DEBUG("Found job_spooling for job_id[%d]", job_id); + break; + } + } + + PTS_RETV_IF(job_spooling == NULL, NULL, "job_spooling is NULL"); + PTS_RETV_IF(job_spooling->job_id <= 0, NULL, "job_spooling->job_id is invalid(%d)", job_spooling->job_id); + PTS_TRACE_END; + return job_spooling; +} + +static pts_job_spooling_t *__pts_get_last_job_spooling(pts_core_data_t *ugd) +{ + PTS_TRACE_BEGIN; + PTS_RETV_IF(ugd == NULL, NULL, "Invalid parameter for __pts_get_last_job_spooling"); + + Eina_List *job_spooling_list = NULL; + pts_job_spooling_t *job_spooling = NULL; + + job_spooling_list = eina_list_last(ugd->job_spooling_list); + PTS_RETV_IF(job_spooling_list == NULL, NULL, "No found job_spooling_list for last job"); + + job_spooling = (pts_job_spooling_t *)eina_list_data_get(job_spooling_list); + PTS_RETV_IF(job_spooling == NULL || job_spooling->noti_id == NOTIFICATION_PRIV_ID_NONE + , NULL, "No found job_spooling for last job"); + + PTS_TRACE_END; + return job_spooling; +} + +int __pts_update_popup_progress(pts_core_data_t *ugd, pt_progress_info_t *progress_info, pts_job_spooling_t *job_spooling) +{ + PTS_TRACE_BEGIN; + PTS_RETV_IF(ugd == NULL || ugd->progressbar == NULL || progress_info == NULL || job_spooling == NULL + , 1, "Invalid parameter for __pts_update_popup_progress"); + + PTS_DEBUG("progress popup [%d]\n", progress_info->progress); + double rate = progress_info->progress * 0.01; + char progress_value[8] = {0,}; + char page_value[8] = {0,}; + + if (EINA_TRUE == elm_progressbar_pulse_get(ugd->progressbar)) { + PTS_DEBUG("Stop pulsing mode\n"); + elm_progressbar_pulse_set(ugd->progressbar, EINA_FALSE); + elm_object_style_set(ugd->progressbar, "list_progress"); + elm_progressbar_value_set(ugd->progressbar, 0.00); + } + + elm_progressbar_value_set(ugd->progressbar, rate); + + if (rate > 0) { + elm_object_text_set(ugd->progress_label, _("IDS_PRT_HEADER_MEDIABOX_PRINTING")); + } + + snprintf(progress_value, 8, "%d%%", progress_info->progress); + elm_object_part_text_set(ugd->progress_layout, "elm.text.subtext1", progress_value); + int real_total_pages = __pts_get_real_total_pages(job_spooling->pt_files.range.total_pages, job_spooling->n_up); + if (job_spooling->page_printed < real_total_pages) { + PTS_DEBUG("real_total_pages:%d, page_printed:%d\n", real_total_pages, job_spooling->page_printed); + snprintf(page_value, 8, "%d/%d", + (job_spooling->page_printed > real_total_pages)? real_total_pages : job_spooling->page_printed+1, real_total_pages); + elm_object_part_text_set(ugd->progress_layout, "elm.text.subtext2", page_value); + } + + if (rate >= 1.00 && job_spooling->page_printed == real_total_pages) { + if (ugd->progressbar != NULL) { + evas_object_del(ugd->progressbar); + ugd->progressbar = NULL; + } + + if (ugd->popup != NULL) { + evas_object_del(ugd->popup); + ugd->popup = NULL; + } + + if (ugd->root_win != NULL) { + evas_object_hide(ugd->root_win); + } + } + + PTS_TRACE_END; + return 0; +} + +int __pts_update_notification(pts_core_data_t *ugd, + pt_progress_info_t *progress_info, + pts_job_spooling_t *job_spooling) +{ + PTS_TRACE_BEGIN; + PTS_RETV_IF(ugd == NULL || progress_info == NULL || job_spooling == NULL + , -1 ,"Invalid parameters for update_notification"); + + double rate = progress_info->progress * 0.01; + PTS_RETV_IF(job_spooling->noti_id == NOTIFICATION_PRIV_ID_NONE || job_spooling->noti_handle == NULL + , -1 , "Invalid noti parameters for update_notification"); + + // Remove notification after all page is printed + if (progress_info->page_printed > job_spooling->page_printed) { + if (job_spooling->noti_id != NOTIFICATION_PRIV_ID_NONE) { + int ret; + notification_delete_by_priv_id(MOBILEPRINT_PACKAGENAME, NOTIFICATION_TYPE_ONGOING, job_spooling->noti_id); + PTS_DEBUG("Notification is deleted"); + job_spooling->noti_id = NOTIFICATION_PRIV_ID_NONE; + ret = notification_free(job_spooling->noti_handle); + if (ret != NOTIFICATION_ERROR_NONE) { + PTS_DEBUG("Failed to free notification handle [%d]", ret); + } + job_spooling->noti_handle = NULL; + job_spooling->page_printed = progress_info->page_printed; // XXX + } + } + + if (job_spooling->noti_id == NOTIFICATION_PRIV_ID_NONE && job_spooling->noti_handle == NULL) { + int real_total_pages = __pts_get_real_total_pages(job_spooling->pt_files.range.total_pages, job_spooling->n_up); + if (job_spooling->page_printed < real_total_pages) { + PTS_DEBUG("Create new notification for page %d", job_spooling->page_printed+1); + __pts_create_notification_by_page(ugd, job_spooling); + } + PTS_TRACE_END; + return 0; + } + + notification_update_progress(NULL, job_spooling->noti_id, rate); + + PTS_TRACE_END; + return 0; +} + +int __pts_remove_notification(int noti_id) +{ + PTS_TRACE_BEGIN; + + if (noti_id != NOTIFICATION_PRIV_ID_NONE) { + notification_delete_by_priv_id(MOBILEPRINT_PACKAGENAME, NOTIFICATION_TYPE_ONGOING, noti_id); + PTS_DEBUG("Notification is deleted"); + } + + PTS_TRACE_END; + return 0; +} + +int __pts_create_dummy_notification(pts_core_data_t *ugd) +{ + PTS_TRACE_BEGIN; + PTS_RETV_IF(ugd == NULL, -1, "Invalid paramter for __pts_create_dummy_notification"); + + int res = -1; + notification_h noti = NULL; + + noti = notification_new(NOTIFICATION_TYPE_ONGOING, + NOTIFICATION_GROUP_ID_NONE, + NOTIFICATION_PRIV_ID_NONE); + + PTS_RETV_IF(noti == NULL, -1, "Failed to create Notification"); + + res = notification_set_text(noti, NOTIFICATION_TEXT_TYPE_TITLE, _("IDS_PRT_POP_WAITING_TO_PRINT_ING"), + NULL, NOTIFICATION_VARIABLE_TYPE_NONE); + if (res != NOTIFICATION_ERROR_NONE) { + PTS_DEBUG("Failed to set Notification title [%d]", res); + goto ERR_CASE; + } + + char *printer_label = strdup(ugd->active_printer->name); + pts_unstandardization(printer_label); + res = notification_set_text(noti, NOTIFICATION_TEXT_TYPE_CONTENT, printer_label, NULL, NOTIFICATION_VARIABLE_TYPE_NONE); + if (res != NOTIFICATION_ERROR_NONE) { + PTS_DEBUG("Failed to set Notification title [%d]", res); + goto ERR_CASE; + } + if (printer_label != NULL) { + free(printer_label); + printer_label = NULL; + } + + bundle *b = NULL; + b = bundle_create(); + char value[4] = {0,}; + if (!strcasecmp(ugd->pt_files.type, "DOC") || !strcasecmp(ugd->pt_files.type, "WEB")) { + PTS_DEBUG("It's pdf file. [%s]", ugd->pt_files.type); + ugd->pt_files.range.total_pages = get_pdf_pages_count(ugd->pt_files.request_files[0]); + } else { + PTS_DEBUG("It's not pdf file. [%s]", ugd->pt_files.type); + ugd->pt_files.range.total_pages = ugd->pt_files.num_of_files; + } + // XXX - In this time, there's no job_spooling. So common pt_files field of ugd is used. + int real_total_pages = __pts_get_real_total_pages(ugd->pt_files.range.total_pages, printer_get_setting_n_up(ugd->active_printer)); + snprintf(value, 4, "%d", real_total_pages); + appsvc_set_pkgname(b, "org.tizen.mobileprint"); + appsvc_add_data(b, SERVICE_FILES, ugd->pt_files.request_files[0]); + appsvc_add_data(b, SERVICE_PAGE_COUNT, value); + appsvc_add_data(b, SERVICE_LAUNCH_TYPE, LAUNCH_FROM_DUMMY_NOTI); + + res = notification_set_execute_option(noti, NOTIFICATION_EXECUTE_TYPE_SINGLE_LAUNCH, NULL, NULL, b); + if (res != NOTIFICATION_ERROR_NONE) { + PTS_DEBUG("Failed to notification_set_execute_option. [%d]", res); + goto ERR_CASE; + } + bundle_free(b); + + res = notification_set_image(noti, NOTIFICATION_IMAGE_TYPE_ICON, RESDIR"/images/A01_print_popup_icon_print.png"); + if (res != NOTIFICATION_ERROR_NONE) { + PTS_DEBUG("Failed to set image icon"); + goto ERR_CASE; + } + + res = notification_insert(noti, &ugd->dummy_noti_id); + if (res != NOTIFICATION_ERROR_NONE) { + PTS_DEBUG("Failed to insert Notification [%d]", res); + goto ERR_CASE; + } + PTS_DEBUG("Notification ID [%d]", ugd->dummy_noti_id); + + PTS_TRACE_END; + return 0; + +ERR_CASE: + if (printer_label != NULL) { + free(printer_label); + printer_label = NULL; + } + + if (noti != NULL) { + notification_free(noti); + noti = NULL; + } + + if (b != NULL) { + bundle_free(b); + b = NULL; + } + + PTS_TRACE_END; + return -1; +} + +static int __pts_create_notification_by_page(pts_core_data_t *ugd, pts_job_spooling_t *job_spooling) +{ + PTS_TRACE_BEGIN; + PTS_RETV_IF(ugd == NULL || job_spooling == NULL + , -1, "Invalid parameter for __pts_create_notification_by_page"); + + int res = -1; + notification_h noti = NULL; + double rate = 0.00; + char title[32] = {0,}; + + noti = notification_new(NOTIFICATION_TYPE_ONGOING, + NOTIFICATION_GROUP_ID_NONE, + NOTIFICATION_PRIV_ID_NONE); + + if (noti == NULL) { + PTS_DEBUG("Failed to create Notification"); + goto ERR_CASE; + } + + //re-allocate noti handle + job_spooling->noti_handle = noti; + + int real_total_pages = __pts_get_real_total_pages(job_spooling->pt_files.range.total_pages, job_spooling->n_up); + snprintf(title, 32, "%s (%d/%d)", + _("IDS_PRT_HEADER_MEDIABOX_PRINTING"), + (job_spooling->page_printed+1 > real_total_pages)? real_total_pages : job_spooling->page_printed+1, + real_total_pages); + PTS_DEBUG("notification update: handle[%d] title=[%s]", job_spooling->noti_handle, title); + + res = notification_set_text(noti, NOTIFICATION_TEXT_TYPE_TITLE, title, + NULL, NOTIFICATION_VARIABLE_TYPE_NONE); + if (res != NOTIFICATION_ERROR_NONE) { + PTS_DEBUG("Failed to set Notification title [%d]", res); + goto ERR_CASE; + } + + char *printer_label = strdup(ugd->active_printer->name); + pts_unstandardization(printer_label); + res = notification_set_text(noti, NOTIFICATION_TEXT_TYPE_CONTENT, printer_label, NULL, NOTIFICATION_VARIABLE_TYPE_NONE); + if (res != NOTIFICATION_ERROR_NONE) { + PTS_DEBUG("Failed to set Notification title [%d]", res); + goto ERR_CASE; + } + if (printer_label != NULL) { + free(printer_label); + printer_label = NULL; + } + + res = notification_set_progress(noti, rate); + if (res != NOTIFICATION_ERROR_NONE) { + PTS_DEBUG("Failed to set Notification title [%d]", res); + goto ERR_CASE; + } + + bundle *b = NULL; + b = bundle_create(); + char value1[4] = {0,}; + char value2[4] = {0,}; + snprintf(value1, 4, "%d", job_spooling->job_id); + snprintf(value2, 4, "%d", real_total_pages); + appsvc_set_pkgname(b, "org.tizen.mobileprint"); + appsvc_add_data(b, SERVICE_JOB_ID, value1); + appsvc_add_data(b, SERVICE_PAGE_COUNT, value2); + appsvc_add_data(b, SERVICE_LAUNCH_TYPE, LAUNCH_FROM_PROGRESS_NOTI); + + res = notification_set_execute_option(noti, NOTIFICATION_EXECUTE_TYPE_SINGLE_LAUNCH, NULL, NULL, b); + if (res != NOTIFICATION_ERROR_NONE) { + PTS_DEBUG("Failed to notification_set_execute_option. [%d]", res); + goto ERR_CASE; + } + bundle_free(b); + + res = notification_set_image(noti, NOTIFICATION_IMAGE_TYPE_ICON, RESDIR"/images/A01_print_popup_icon_print.png"); + if (res != NOTIFICATION_ERROR_NONE) { + PTS_DEBUG("Failed to set image icon"); + goto ERR_CASE; + } + + res = notification_insert(noti, &job_spooling->noti_id); + if (res != NOTIFICATION_ERROR_NONE) { + PTS_DEBUG("Failed to insert Notification [%d]", res); + goto ERR_CASE; + } + PTS_DEBUG("Notification ID [%d]", job_spooling->noti_id); + + PTS_TRACE_END; + return 0; + +ERR_CASE: + if (printer_label != NULL) { + free(printer_label); + printer_label = NULL; + } + + if (job_spooling->noti_handle != NULL) { + notification_free(job_spooling->noti_handle); + job_spooling->noti_handle = NULL; + } + + if (b != NULL) { + bundle_free(b); + b = NULL; + } + + PTS_TRACE_END; + return -1; +} + +int __pts_create_job_notification(pts_core_data_t *ugd, int job_id) +{ + PTS_TRACE_BEGIN; + PTS_RETV_IF(ugd == NULL || job_id <=0 + , -1 , "Invalid parameter for __pts_create_job_notification"); + + int res = -1; + notification_h noti = NULL; + double rate = 0.00; + char title[32] = {0,}; + + pts_job_spooling_t *job_spooling = malloc(sizeof(pts_job_spooling_t)); + PTS_RETV_IF(job_spooling == NULL, -1 , "Failed to malloc job_spooling"); + memset(job_spooling, 0, sizeof(pts_job_spooling_t)); + + //FIXME - pt_files.files should be managed carefully during printing + job_spooling->pt_files.num_of_files = ugd->pt_files.num_of_files; + job_spooling->pt_files.current_index = ugd->pt_files.current_index; + + job_spooling->pt_files.type = strdup(ugd->pt_files.type); // need malloc + if (job_spooling->pt_files.type == NULL) { + PTS_DEBUG("Failed to malloc job_spooling->pt_files.type"); + goto ERR_CASE; + } + + job_spooling->pt_files.request_files = (char **)malloc(sizeof(char *) * job_spooling->pt_files.num_of_files); + if (job_spooling->pt_files.request_files == NULL) { + PTS_DEBUG("Failed to malloc job_spooling->pt_files.request_files"); + goto ERR_CASE; + } + int i = 0; + for (i = 0; i < job_spooling->pt_files.num_of_files; i++) { + PTS_DEBUG("file path is %s", ugd->pt_files.request_files[i]); + if (NULL != ugd->pt_files.request_files[i]) { + job_spooling->pt_files.request_files[i] = strdup(ugd->pt_files.request_files[i]); + } else { + job_spooling->pt_files.request_files[i] = strdup(MOBILEPRINT_DEFAULTIMG); + } + PTS_DEBUG("file path is %s", job_spooling->pt_files.request_files[i]); + } + + job_spooling->input_file = strdup(job_spooling->pt_files.request_files[0]); + if (job_spooling->input_file == NULL) { + PTS_DEBUG("Failed to malloc job_spooling->input_file"); + goto ERR_CASE; + } + + job_spooling->pt_files.range.from = ugd->pt_files.range.from; + job_spooling->pt_files.range.to = ugd->pt_files.range.to; + job_spooling->pt_files.range.total_pages = ugd->pt_files.range.total_pages; + + job_spooling->pt_files.range.selected_files = (char **)malloc(sizeof(char *) * job_spooling->pt_files.range.total_pages); + if (job_spooling->pt_files.range.selected_files == NULL) { + PTS_DEBUG("Failed to malloc job_spooling->pt_files.range.selected_files"); + goto ERR_CASE; + } + + job_spooling->pt_files.range.selected_files[0] = strdup(ugd->pt_files.range.selected_files[0]); + if (job_spooling->pt_files.range.selected_files[0] == NULL) { + PTS_DEBUG("Failed to malloc job_spooling->pt_files.range.selected_files[0]"); + goto ERR_CASE; + } + + job_spooling->job_id = job_id; +#if 0 // Need to believe passed "Printing page X X" log have correct information. + if (NULL == strcasestr(ugd->active_printer->name, "samsung")) { + job_spooling->page_printed = 1; // FIXME + } +#endif + + noti = notification_new(NOTIFICATION_TYPE_ONGOING, + NOTIFICATION_GROUP_ID_NONE, + NOTIFICATION_PRIV_ID_NONE); + if (noti == NULL) { + PTS_DEBUG("Failed to create Notification"); + goto ERR_CASE; + } + + job_spooling->noti_handle = noti; + + job_spooling->n_up = printer_get_setting_n_up(ugd->active_printer); + + int real_total_pages = __pts_get_real_total_pages(job_spooling->pt_files.range.total_pages, job_spooling->n_up); + snprintf(title, 32, "%s (1/%d)", _("IDS_PRT_HEADER_MEDIABOX_PRINTING"), real_total_pages); + PTS_DEBUG("notification update: handle[%d] title=[%s]", job_spooling->noti_handle, title); + + res = notification_set_text(noti, NOTIFICATION_TEXT_TYPE_TITLE, title, + NULL, NOTIFICATION_VARIABLE_TYPE_NONE); + if (res != NOTIFICATION_ERROR_NONE) { + PTS_DEBUG("Failed to set Notification title [%d]", res); + goto ERR_CASE; + } + + char *printer_label = strdup(ugd->active_printer->name); + pts_unstandardization(printer_label); + res = notification_set_text(noti, NOTIFICATION_TEXT_TYPE_CONTENT, printer_label, NULL, NOTIFICATION_VARIABLE_TYPE_NONE); + if (res != NOTIFICATION_ERROR_NONE) { + PTS_DEBUG("Failed to set Notification title [%d]", res); + goto ERR_CASE; + } + if (printer_label != NULL) { + free(printer_label); + printer_label = NULL; + } + + res = notification_set_progress(noti, rate); + if (res != NOTIFICATION_ERROR_NONE) { + PTS_DEBUG("Failed to set Notification title [%d]", res); + goto ERR_CASE; + } + + bundle *b = NULL; + b = bundle_create(); + char value1[4] = {0,}; + char value2[4] = {0,}; + snprintf(value1, 4, "%d", job_id); + snprintf(value2, 4, "%d", real_total_pages); + appsvc_set_pkgname(b, "org.tizen.mobileprint"); + appsvc_add_data(b, SERVICE_JOB_ID, value1); + appsvc_add_data(b, SERVICE_PAGE_COUNT, value2); + appsvc_add_data(b, SERVICE_LAUNCH_TYPE, LAUNCH_FROM_PROGRESS_NOTI); + + res = notification_set_execute_option(noti, NOTIFICATION_EXECUTE_TYPE_SINGLE_LAUNCH, NULL, NULL, b); + if (res != NOTIFICATION_ERROR_NONE) { + PTS_DEBUG("Failed to notification_set_execute_option. [%d]", res); + goto ERR_CASE; + } + bundle_free(b); + + res = notification_set_image(noti, NOTIFICATION_IMAGE_TYPE_ICON, RESDIR"/images/A01_print_popup_icon_print.png"); + if (res != NOTIFICATION_ERROR_NONE) { + PTS_DEBUG("Failed to set image icon"); + goto ERR_CASE; + } + + res = notification_insert(noti, &job_spooling->noti_id); + if (res != NOTIFICATION_ERROR_NONE) { + PTS_DEBUG("Failed to insert Notification [%d]", res); + goto ERR_CASE; + } + PTS_DEBUG("Notification ID [%d]", job_spooling->noti_id); + + ugd->job_spooling_list = eina_list_append(ugd->job_spooling_list, job_spooling); + if (eina_error_get()) { + PTS_DEBUG("Failed to append job_spooling"); + goto ERR_CASE; + } + + PTS_TRACE_END; + + return 0; + +ERR_CASE: + if (printer_label != NULL) { + free(printer_label); + printer_label = NULL; + } + + if (job_spooling != NULL) { + if (job_spooling->pt_files.type != NULL) { + PTS_IF_FREE_MEM(job_spooling->pt_files.type); + job_spooling->pt_files.type = NULL; + } + + if (job_spooling->pt_files.request_files != NULL) { + int i = 0; + for (i = 0; i < job_spooling->pt_files.num_of_files; i++) { + if (job_spooling->pt_files.request_files[i] != NULL) { + PTS_IF_FREE_MEM(job_spooling->pt_files.request_files[i]); + job_spooling->pt_files.request_files[i] = NULL; + } + } + PTS_IF_FREE_MEM(job_spooling->pt_files.request_files); + job_spooling->pt_files.request_files = NULL; + } + + if (job_spooling->input_file != NULL) { + PTS_IF_FREE_MEM(job_spooling->input_file); + job_spooling->input_file = NULL; + } + + if (job_spooling->pt_files.range.selected_files != NULL) { + if (job_spooling->pt_files.range.selected_files[0] != NULL) { + PTS_IF_FREE_MEM(job_spooling->pt_files.range.selected_files[0]); + job_spooling->pt_files.range.selected_files[0] = NULL; + } + + PTS_IF_FREE_MEM(job_spooling->pt_files.range.selected_files); + job_spooling->pt_files.range.selected_files = NULL; + } + + if (job_spooling->noti_handle != NULL) { + notification_free(job_spooling->noti_handle); + job_spooling->noti_handle = NULL; + } + + PTS_IF_FREE_MEM(job_spooling); + job_spooling = NULL; + } + + PTS_TRACE_END; + return -1; +} + +static gboolean __pts_main_view_job_monitor_timeout_cb(void *data) +{ + PTS_TRACE_BEGIN; + pts_core_data_t *ugd = (pts_core_data_t *)data; + PTS_RETV_IF(ugd == NULL, TRUE, "ugd is NULL"); + + pt_job_state_e job_status = PT_JOB_ERROR; + gboolean ret = FALSE; + + //char noti_name[512] = {0}; + + //FIXME - need to check one or all? + Eina_List *job_spooling_list = NULL; + pts_job_spooling_t *job_spooling = NULL; + EINA_LIST_FOREACH(ugd->job_spooling_list, job_spooling_list, job_spooling) { + job_status = pt_get_current_job_status(job_spooling->job_id); + if (job_status == PT_JOB_PROCESSING || job_status == PT_JOB_PENDING) { + PTS_DEBUG("job_id[%d] status is %d", job_spooling->job_id, job_status); + //XXX - If any one of job list is processing or pending, then motinor cb will be called again. + ret = TRUE; + } + } + + PTS_TRACE_END; + + return ret; +} + +void __pts_event_cb(pt_event_e event, void *user_data, pt_progress_info_t *progress_info) +{ + PTS_TRACE_BEGIN; + + // XXX - progress_info can be passed by NULL + PTS_RET_IF(event < 0 || user_data == NULL, "Invalid parameters for event cb"); + + pts_core_data_t *ugd = (pts_core_data_t *)user_data; + pts_job_spooling_t *job_spooling = NULL; + + switch (event) { + case PT_EVENT_USB_PRINTER_ONLINE: + __pts_main_view_check_usb_printer_online(ugd); + break; + case PT_EVENT_USB_PRINTER_OFFLINE: + __pts_main_view_check_usb_printer_offline(ugd); + break; + case PT_EVENT_PRINTER_ONLINE: + __pts_main_view_check_printer_online(ugd); + break; + case PT_EVENT_PRINTER_OFFLINE: + __pts_main_view_check_printer_offline(ugd); + break; + case PT_EVENT_JOB_COMPLETED: + PTS_DEBUG("Job[%d] is completed.", progress_info->job_id); + __pts_main_view_remove_job(ugd, progress_info->job_id); + break; + case PT_EVENT_JOB_STARTED: + PTS_DEBUG("Job id %d is allocated", progress_info->job_id); + __pts_remove_notification(ugd->dummy_noti_id); + __pts_create_job_notification(ugd, progress_info->job_id); + g_timeout_add(5000, (GSourceFunc)__pts_main_view_job_monitor_timeout_cb, ugd); + break; + case PT_EVENT_JOB_PROCESSING: + PTS_DEBUG("Job[%d] is processing.", progress_info->job_id); + break; + case PT_EVENT_JOB_PROGRESS: + job_spooling = __pts_get_job_spooling(ugd, progress_info->job_id); + if (job_spooling != NULL) { + PTS_DEBUG("new - progress_info: job_id[%d] progress[%d] page_printed[%d]\n" + "old - job_spooling: job_id[%d] progress[%d] page_printed[%d]", + progress_info->job_id, progress_info->progress, progress_info->page_printed, + job_spooling->job_id, job_spooling->progress, job_spooling->page_printed); + +#if 0 + //FIXME + if (NULL == strcasestr(ugd->active_printer->name, "samsung")) { + if (progress_info->progress < job_spooling->progress) { + //FIXME - assume next page printing is started + job_spooling->page_printed++; + } + } +#endif + + job_spooling->progress = progress_info->progress; + } + __pts_update_notification(ugd, progress_info, job_spooling); + __pts_update_popup_progress(ugd, progress_info, job_spooling); + break; + case PT_EVENT_JOB_PENDING: + PTS_DEBUG("Job[%d] is waiting.", progress_info->job_id); + break; + case PT_EVENT_JOB_HELD: + PTS_DEBUG("Job[%d] is held.", progress_info->job_id); + break; + case PT_EVENT_JOB_STOPPED: + PTS_DEBUG("Job[%d] is stopped.", progress_info->job_id); + __pts_main_view_job_error(ugd, progress_info->job_id); + __pts_main_view_remove_job(ugd, progress_info->job_id); + break; + case PT_EVENT_JOB_CANCELED: + PTS_DEBUG("Job[%d] is canceled.", progress_info->job_id); + __pts_main_view_job_error(ugd, progress_info->job_id); + __pts_main_view_remove_job(ugd, progress_info->job_id); + break; + case PT_EVENT_JOB_ABORTED: + PTS_DEBUG("Job[%d] is aborted.", progress_info->job_id); + if (progress_info->job_id > 0) { + __pts_main_view_job_error(ugd, progress_info->job_id); + __pts_main_view_remove_job(ugd, progress_info->job_id); + } else { // XXX - for dummy job? + __pts_main_view_last_job_error(ugd); + } + break; + case PT_EVENT_JOB_ERROR: + PTS_DEBUG("Job[%d] error", progress_info->job_id); + __pts_main_view_job_error(ugd, progress_info->job_id); + __pts_main_view_remove_job(ugd, progress_info->job_id); + break; + case PT_EVENT_ALL_THREAD_COMPLETED: + PTS_DEBUG("All thread is completed."); + PTS_DEBUG("No more job, then terminate mobileprint"); + vconf_ignore_key_changed(VCONFKEY_WIFI_QS_EXIT, _wifi_qs_monitoring_cb); + pt_deinit(); + elm_exit(); + break; + default: + break; + } + + PTS_TRACE_END; +} + +static void __pts_main_view_check_usb_printer_online(void *userdata) +{ + PTS_TRACE_BEGIN; + pts_core_data_t *ugd = (pts_core_data_t *)userdata; + PTS_RET_IF(ugd == NULL, "ugd is NULL"); + + /* if in ether searching or printing, ignore it */ + PTS_RET_IF(ugd->is_process == 1, "searching or printing is processing"); + + if (ugd->popup) { + evas_object_del(ugd->popup); + ugd->popup = NULL; + } + + elm_naviframe_item_pop_to(ugd->navi_it); + /* re-searching printers */ + pts_search_printer(ugd, ugd->root_win, PTS_SEARCH_INITIAL, load_main_view, (void *)NULL); + //pts_main_view_search_printer(ugd); + + PTS_TRACE_END; +} + +static void __pts_main_view_check_usb_printer_offline(void *userdata) +{ + PTS_TRACE_BEGIN; + pts_core_data_t *ugd = (pts_core_data_t *)userdata; + PTS_RET_IF(ugd == NULL, "ugd is NULL"); + + /* if in searching or printing, return */ + PTS_RET_IF(ugd->is_process == 1, "searching or printing is processing"); + + if (ugd->popup) { + evas_object_del(ugd->popup); + ugd->popup = NULL; + } + + PTS_IF_FREE_MEM(ugd->active_printer); + + elm_naviframe_item_pop_to(ugd->navi_it); + + pts_main_view_update_printer_label(ugd); + + PTS_TRACE_END; +} + +static void __pts_main_view_remove_job(void *user_data, int job_id) +{ + PTS_TRACE_BEGIN; + PTS_RET_IF(user_data == NULL || job_id <= 0,"Invalid parameter for job error processing"); + + pts_core_data_t *ugd = (pts_core_data_t *)user_data; + int ret; + + if (NULL != ugd->popup) { + evas_object_del(ugd->popup); + ugd->popup = NULL; + evas_object_hide(ugd->root_win); + } + + Eina_List *job_spooling_list = NULL; + pts_job_spooling_t *job_spooling = NULL; + + EINA_LIST_FOREACH(ugd->job_spooling_list, job_spooling_list, job_spooling) { + if (job_spooling->job_id == job_id) { + PTS_DEBUG("Found job_spooling for job_id[%d]", job_id); + break; + } + } + + PTS_RET_IF(job_spooling == NULL || job_spooling->noti_id == NOTIFICATION_PRIV_ID_NONE + ,"No found job_spooling for job_id[%d]\n", job_id); + + notification_delete_by_priv_id(MOBILEPRINT_PACKAGENAME, NOTIFICATION_TYPE_ONGOING, job_spooling->noti_id); + ugd->is_process = 0;/*process is complete*/ + + ugd->job_spooling_list = eina_list_remove_list(ugd->job_spooling_list, job_spooling_list); + if (0 == eina_list_count(ugd->job_spooling_list)) { + PTS_DEBUG("Job spooling list is empty"); + ugd->job_spooling_list = NULL; + } + + if (job_spooling->noti_handle != NULL) { + ret = notification_free(job_spooling->noti_handle); + if (ret != NOTIFICATION_ERROR_NONE) { + PTS_DEBUG("Failed to free notification handle [%d]", ret); + } + job_spooling->noti_handle = NULL; + } + + PTS_RET_IF(job_spooling->pt_files.range.selected_files == NULL, "job_spooling->pt_files.range.selected_files is NULL"); + + if (job_spooling->pt_files.range.selected_files[0]) { + PTS_IF_FREE_MEM(job_spooling->pt_files.range.selected_files[0]); + job_spooling->pt_files.range.selected_files[0] = NULL; + } + + if (job_spooling->pt_files.range.selected_files) { + PTS_IF_FREE_MEM(job_spooling->pt_files.range.selected_files); + job_spooling->pt_files.range.selected_files = NULL; + } + + if (job_spooling->input_file) { + PTS_IF_FREE_MEM(job_spooling->input_file); + job_spooling->input_file = NULL; + } + + int i = 0; + for (i = 0; i < job_spooling->pt_files.num_of_files; i++) { + if (job_spooling->pt_files.request_files[i]) { + PTS_IF_FREE_MEM(job_spooling->pt_files.request_files[i]); // FIXME + job_spooling->pt_files.request_files[i] = NULL; + } + } + + if (job_spooling->pt_files.request_files) { + PTS_IF_FREE_MEM(job_spooling->pt_files.request_files); // FIXME + job_spooling->pt_files.request_files = NULL; + } + + if (job_spooling->pt_files.type) { + PTS_IF_FREE_MEM(job_spooling->pt_files.type); + job_spooling->pt_files.type = NULL; + } + + if (job_spooling) { + PTS_IF_FREE_MEM(job_spooling); + job_spooling = NULL; + } + + PTS_TRACE_END; +} + +static void __pts_main_view_job_error(void *user_data, int job_id) +{ + PTS_TRACE_BEGIN; + PTS_RET_IF(user_data == NULL || job_id <= 0, "Invalid parameter for job error processing"); + + pts_core_data_t *ugd = (pts_core_data_t *)user_data; + if (NULL != ugd->popup) { + evas_object_del(ugd->popup); + ugd->popup = NULL; + } + + pts_job_spooling_t *job_spooling = __pts_get_job_spooling(ugd, job_id); + + PTS_RET_IF(job_spooling == NULL || job_spooling->noti_id == NOTIFICATION_PRIV_ID_NONE + , "No found job_spooling for job_id[%d]\n", job_id); + + notification_delete_by_priv_id(MOBILEPRINT_PACKAGENAME, NOTIFICATION_TYPE_ONGOING, job_spooling->noti_id); + ugd->is_process = 0;/*process is complete*/ + pts_create_popup(ugd->root_win, _("IDS_PRT_POP_PRINTINGERROR"), 2.0); + evas_object_show(ugd->root_win); + ecore_timer_add(2.0, (Ecore_Task_Cb)__pts_hide_main_view, (void *)ugd); + PTS_TRACE_END; +} + +static void __pts_main_view_last_job_error(void *user_data) +{ + PTS_TRACE_BEGIN; + PTS_RET_IF(user_data == NULL, "Invalid parameter for last job error processing"); + + pts_core_data_t *ugd = (pts_core_data_t *)user_data; + + if (NULL != ugd->popup) { + evas_object_del(ugd->popup); + ugd->popup = NULL; + } + + pts_job_spooling_t *job_spooling = __pts_get_last_job_spooling(ugd); + PTS_RET_IF(job_spooling == NULL || job_spooling->noti_id == NOTIFICATION_PRIV_ID_NONE + , "No found job_spooling for last_job"); + + notification_delete_by_priv_id(MOBILEPRINT_PACKAGENAME, NOTIFICATION_TYPE_ONGOING, job_spooling->noti_id); + ugd->is_process = 0;/*process is complete*/ + pts_create_popup(ugd->root_win, _("IDS_PRT_POP_PRINTINGERROR"), 2.0); + evas_object_show(ugd->root_win); + ecore_timer_add(2.0, (Ecore_Task_Cb)__pts_hide_main_view, (void *)ugd); + PTS_TRACE_END; +} + + +static void __pts_main_view_check_printer_online(void *user_data) +{ + PTS_TRACE_BEGIN; + PTS_RET_IF(user_data == NULL, "Invalid parameter for __pts_main_view_check_printer_online"); + + pts_core_data_t *ugd = (pts_core_data_t *)user_data; + ecore_timer_add(1.0, (Ecore_Task_Cb)__pts_main_view_start_print, ugd); + + PTS_TRACE_END; +} + +static void __pts_main_view_check_printer_offline(void *user_data) +{ + PTS_TRACE_BEGIN; + PTS_RET_IF(user_data == NULL, "Invalid parameter for __pts_main_view_check_printer_offline"); + + pts_core_data_t *ugd = (pts_core_data_t *)user_data; + + if (NULL != ugd->popup) { + evas_object_del(ugd->popup); + ugd->popup = NULL; + } + + PTS_IF_FREE_MEM(ugd->active_printer); + + pts_main_view_update_printer_label(ugd); + pts_create_popup(ugd->navi, _("IDS_PRT_POP_CHECKPRINTERSTATE"), 2.0); + ugd->is_process = 0;/* process is complete */ + + PTS_TRACE_END; +} + +static void __pts_main_view_delete_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + PTS_TRACE_BEGIN; + pts_core_data_t *ugd = (pts_core_data_t *)data; + PTS_RET_IF(ugd == NULL, "ugd is NULL"); + +#if 0 + if (NULL != ugd->pt_files.request_files) { + int i = 0; + for (i = 0; i < ugd->pt_files.num_of_files; i++) { + if (ugd->pt_files.request_files[i] != NULL) { + free(ugd->pt_files.request_files[i]); + ugd->pt_files.request_files[i] = NULL; + } + } + + if (ugd->pt_files.range.selected_files != NULL) { + free(ugd->pt_files.range.selected_files); + ugd->pt_files.range.selected_files = NULL; + } + + free(ugd->pt_files.request_files); + ugd->pt_files.request_files = NULL; + } +#endif + + PTS_TRACE_END; +} + +static void __pts_main_view_navi_delete_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + PTS_TRACE_BEGIN; + pts_core_data_t *ugd = (pts_core_data_t *)data; + PTS_RET_IF(ugd == NULL, "ugd is NULL"); + + PTS_IF_FREE_MEM(ugd->active_printer); + + PTS_TRACE_END; +} + +/* +* "back" button callback +*/ +void __pts_main_view_btn_back_cb(void *data, Evas_Object *obj, void *event_info) +{ + PTS_TRACE_BEGIN; + pts_core_data_t *ugd = (pts_core_data_t *) data; + PTS_RET_IF(ugd == NULL, "ugd is NULL"); + //TODO - check current spooling job status before app termination + if (ugd->job_spooling_list == NULL) { + vconf_ignore_key_changed(VCONFKEY_WIFI_QS_EXIT, _wifi_qs_monitoring_cb); + pt_deinit(); + elm_exit(); + } else { + PTS_DEBUG("Active job spooling list is existed. So just hide preview."); + __pts_hide_main_view(ugd); + } + PTS_TRACE_END; +} + +static void __pts_main_view_dummy_cancel_print(void *data, Evas_Object *obj, void *event_info) +{ + PTS_TRACE_BEGIN; + + pts_core_data_t *ugd = pts_get_ugd(); + PTS_RET_IF(ugd == NULL, "ugd is NULL"); + + if (ugd->progressbar != NULL) { + evas_object_del(ugd->progressbar); + ugd->progressbar = NULL; + } + + if (ugd->popup != NULL) { + evas_object_del(ugd->popup); + ugd->popup = NULL; + } + + pts_create_popup(ugd->root_win, PTS_19, 2.0); + evas_object_show(ugd->root_win); + ecore_timer_add(2.0, (Ecore_Task_Cb)__pts_hide_main_view, (void *)ugd); + + PTS_TRACE_END; +} + +static void __pts_main_view_response_cancel_print(void *data, Evas_Object *obj, void *event_info) +{ + PTS_TRACE_BEGIN; + int job_id = (int)data; + pts_core_data_t *ugd = pts_get_ugd(); + PTS_RET_IF(ugd == NULL || job_id <= 0, "Invalid parameter for __pts_main_view_response_cancel_print"); + + if (ugd->progressbar != NULL) { + evas_object_del(ugd->progressbar); + ugd->progressbar = NULL; + } + + if (ugd->popup != NULL) { + evas_object_del(ugd->popup); + ugd->popup = NULL; + } + + pt_cancel_print(job_id); + + pts_job_spooling_t *job_spooling = __pts_get_job_spooling(ugd, job_id); + PTS_RET_IF(job_spooling == NULL || job_spooling->noti_id == NOTIFICATION_PRIV_ID_NONE + , "No found job_spooling for job[%d]\n", job_id); + + // FIXME - Is it better to do this job after received canceled evt_cb? + __pts_remove_notification(job_spooling->noti_id); + + pts_create_popup(ugd->root_win, _("IDS_PRT_POP_PRINTING_CANCELED"), 2.0); + evas_object_show(ugd->root_win); + ecore_timer_add(2.0, (Ecore_Task_Cb)__pts_hide_main_view, (void *)ugd); + + PTS_TRACE_END; +} + +static void __pts_hide_progress_popup(void *data, Evas_Object *obj, void *event_info) +{ + PTS_TRACE_BEGIN; + pts_core_data_t *ugd = (pts_core_data_t *)data; + PTS_RET_IF(ugd == NULL, "ugd is NULL"); + + if (ugd->progressbar != NULL) { + evas_object_del(ugd->progressbar); + ugd->progressbar = NULL; + } + + if (ugd->popup != NULL) { + evas_object_del(ugd->popup); + ugd->popup = NULL; + } + + evas_object_hide(ugd->root_win); + + PTS_TRACE_END; +} + +void __pts_print_dummy_popup(pts_core_data_t *ugd, char *files, int page_count) +{ + PTS_TRACE_BEGIN; + PTS_RET_IF(ugd == NULL || files == NULL || page_count <= 0, "Invalid parameters for progress_popup"); + + Evas_Object *label1 = NULL; + Evas_Object *label2 = NULL; + Evas_Object *label3 = NULL; + Evas_Object *popup = NULL; + Evas_Object *layout = NULL; + Evas_Object *progressbar = NULL; + char page_info[8] = {0,}; + + popup = elm_popup_add(ugd->main_win); + + label1 = elm_label_add(popup); + elm_object_style_set(label1, "popup/default"); + elm_label_line_wrap_set(label1, ELM_WRAP_MIXED); + char *printer_label = strdup(ugd->active_printer->name); + pts_unstandardization(printer_label); + elm_object_text_set(label1, printer_label); + if (printer_label != NULL) { + free(printer_label); + printer_label = NULL; + } + evas_object_size_hint_weight_set(label1, EVAS_HINT_EXPAND, 0.0); + evas_object_size_hint_align_set(label1, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_show(label1); + + label2 = elm_label_add(popup); + elm_object_style_set(label2, "popup/default"); + elm_label_line_wrap_set(label2, ELM_WRAP_MIXED); + elm_object_text_set(label2, _("IDS_PRT_POP_WAITING_TO_PRINT_ING")); + evas_object_size_hint_weight_set(label2, EVAS_HINT_EXPAND, 0.0); + evas_object_size_hint_align_set(label2, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_show(label2); + + label3 = elm_label_add(popup); + elm_object_style_set(label3, "popup/default"); + elm_label_line_wrap_set(label3, ELM_WRAP_MIXED); + elm_object_text_set(label3, basename(files)); + evas_object_size_hint_weight_set(label3, EVAS_HINT_EXPAND, 0.0); + evas_object_size_hint_align_set(label3, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_show(label3); + + layout = pts_create_base_layout(popup, "popup_progress"); + + progressbar = elm_progressbar_add(popup); + elm_object_style_set(progressbar, "pending_list"); + elm_progressbar_pulse_set(progressbar, EINA_TRUE); // initial pending style + elm_progressbar_horizontal_set(progressbar, EINA_TRUE); + evas_object_size_hint_align_set(progressbar, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_size_hint_weight_set(progressbar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_show(progressbar); + + ugd->progress_label = label2; + ugd->progress_layout = layout; + ugd->progressbar = progressbar; + + elm_object_part_content_set(layout, "elm.swallow.content.1", label1); + elm_object_part_content_set(layout, "elm.swallow.content.2", label2); + elm_object_part_content_set(layout, "elm.swallow.content.3", label3); + elm_object_part_content_set(layout, "elm.swallow.end", progressbar); + elm_object_part_text_set(layout, "elm.text.subtext1", "0%"); + // XXX - In this time, there's no job_spooling. So common pt_files field of ugd is used. + int real_total_pages = __pts_get_real_total_pages(ugd->pt_files.range.total_pages, printer_get_setting_n_up(ugd->active_printer)); + snprintf(page_info, 8, "1/%d", real_total_pages); + elm_object_part_text_set(layout, "elm.text.subtext2", page_info); + + Evas_Object *btn1 = NULL; + btn1 = elm_button_add(popup); + elm_object_style_set(btn1,"popup_button/default"); + elm_object_text_set(btn1, _("IDS_COM_SK_HIDE")); + elm_object_part_content_set(popup, "button1", btn1); + evas_object_smart_callback_add(btn1, "clicked", __pts_hide_progress_popup, ugd); + + if (page_count > 1) { + Evas_Object *btn2 = NULL; + btn2 = elm_button_add(popup); + elm_object_style_set(btn2,"popup_button/default"); + elm_object_text_set(btn2, _("IDS_COM_SK_CANCEL")); + elm_object_part_content_set(popup, "button2", btn2); + evas_object_smart_callback_add(btn2, "clicked", __pts_main_view_dummy_cancel_print, NULL); + } + + elm_object_content_set(popup, layout); + evas_object_show(popup); + evas_object_show(ugd->root_win); + + ugd->popup = popup; + + PTS_TRACE_END; +} + + +void __pts_print_progress_popup(pts_core_data_t *ugd, int job_id, int page_count) +{ + PTS_TRACE_BEGIN; + PTS_RET_IF(ugd == NULL || job_id <= 0 || page_count <= 0, "Invalid parameters for progress_popup"); + + pts_job_spooling_t *job_spooling = NULL; + job_spooling = __pts_get_job_spooling(ugd, job_id); + PTS_RET_IF(job_spooling == NULL, "No found job_spooling for job_id[%d]", job_id); + + Evas_Object *label1 = NULL; + Evas_Object *label2 = NULL; + Evas_Object *label3 = NULL; + Evas_Object *popup = NULL; + Evas_Object *layout = NULL; + Evas_Object *progressbar = NULL; + char progress_info[8] = {0,}; + char page_info[8] = {0,}; + + popup = elm_popup_add(ugd->main_win); + + label1 = elm_label_add(popup); + elm_object_style_set(label1, "popup/default"); + elm_label_line_wrap_set(label1, ELM_WRAP_MIXED); + char *printer_label = strdup(ugd->active_printer->name); + pts_unstandardization(printer_label); + elm_object_text_set(label1, printer_label); + if (printer_label != NULL) { + free(printer_label); + printer_label = NULL; + } + evas_object_size_hint_weight_set(label1, EVAS_HINT_EXPAND, 0.0); + evas_object_size_hint_align_set(label1, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_show(label1); + + label2 = elm_label_add(popup); + elm_object_style_set(label2, "popup/default"); + elm_label_line_wrap_set(label2, ELM_WRAP_MIXED); + if (job_spooling->progress > 0) { + elm_object_text_set(label2, _("IDS_PRT_HEADER_MEDIABOX_PRINTING")); + } else { + elm_object_text_set(label2, _("IDS_PRT_POP_WAITING_TO_PRINT_ING")); + } + evas_object_size_hint_weight_set(label2, EVAS_HINT_EXPAND, 0.0); + evas_object_size_hint_align_set(label2, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_show(label2); + + label3 = elm_label_add(popup); + elm_object_style_set(label3, "popup/default"); + elm_label_line_wrap_set(label3, ELM_WRAP_MIXED); + elm_object_text_set(label3, basename(job_spooling->pt_files.request_files[0])); + evas_object_size_hint_weight_set(label3, EVAS_HINT_EXPAND, 0.0); + evas_object_size_hint_align_set(label3, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_show(label3); + + layout = pts_create_base_layout(popup, "popup_progress"); + + progressbar = elm_progressbar_add(popup); + if (job_spooling->progress > 0) { + double rate = job_spooling->progress * 0.01; + elm_object_style_set(progressbar, "list_progress"); + elm_progressbar_value_set(progressbar, rate); + } else { + elm_object_style_set(progressbar, "pending_list"); + elm_progressbar_pulse_set(progressbar, EINA_TRUE); // initial pending style + } + elm_progressbar_horizontal_set(progressbar, EINA_TRUE); + evas_object_size_hint_align_set(progressbar, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_size_hint_weight_set(progressbar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_show(progressbar); + + ugd->progress_label = label2; + ugd->progress_layout = layout; + ugd->progressbar = progressbar; + + elm_object_part_content_set(layout, "elm.swallow.content.1", label1); + elm_object_part_content_set(layout, "elm.swallow.content.2", label2); + elm_object_part_content_set(layout, "elm.swallow.content.3", label3); + elm_object_part_content_set(layout, "elm.swallow.end", progressbar); + if (job_spooling->progress > 0) { + snprintf(progress_info, 8, "%d%%", job_spooling->progress); + elm_object_part_text_set(layout, "elm.text.subtext1", progress_info); + } else { + elm_object_part_text_set(layout, "elm.text.subtext1", "0%"); + } + snprintf(page_info, 8, "1/%d", page_count); + elm_object_part_text_set(layout, "elm.text.subtext2", page_info); + + Evas_Object *btn1 = NULL; + btn1 = elm_button_add(popup); + elm_object_style_set(btn1,"popup_button/default"); + elm_object_text_set(btn1, _("IDS_COM_SK_HIDE")); + elm_object_part_content_set(popup, "button1", btn1); + evas_object_smart_callback_add(btn1, "clicked", __pts_hide_progress_popup, ugd); + + // Show cancel button when total page is greater than 1 page. + if (page_count > 1) { + Evas_Object *btn2 = NULL; + btn2 = elm_button_add(popup); + elm_object_style_set(btn2,"popup_button/default"); + elm_object_text_set(btn2, _("IDS_COM_SK_CANCEL")); + elm_object_part_content_set(popup, "button2", btn2); + evas_object_smart_callback_add(btn2, "clicked", __pts_main_view_response_cancel_print, (void *)job_id); + } + + elm_object_content_set(popup, layout); + evas_object_show(popup); + evas_object_show(ugd->root_win); + + ugd->popup = popup; + + PTS_TRACE_END; +} + + +static Eina_Bool __pts_main_view_start_print(void *data) +{ + PTS_TRACE_BEGIN; + pts_core_data_t *ugd = (pts_core_data_t *)data; + PTS_RETV_IF(ugd == NULL, ECORE_CALLBACK_CANCEL, "ugd is NULL"); + + int ret = 0; + int num = 0; + char *first_fname; + struct preview_conf *conf; + + if (ugd->active_printer->copies <= 0) { + ugd->active_printer->copies = 1; + } + + //FIXME - Is it correct position? + if (!strcasecmp(ugd->pt_files.type, "DOC") || !strcasecmp(ugd->pt_files.type, "WEB")) { + ugd->pt_files.range.total_pages = get_pdf_pages_count(ugd->pt_files.request_files[0]); + } else { + ugd->pt_files.range.total_pages = ugd->pt_files.num_of_files; + } + + PTS_DEBUG("Updated ugd->pt_files.range.total_pages: %d", ugd->pt_files.range.total_pages); + ugd->pt_files.range.to = ugd->pt_files.range.total_pages; + + pt_set_print_option_papersize(); //(ugd->active_printer->size); + pt_set_print_option_copies(ugd->active_printer->copies); + // TODO: Print range +// pt_set_print_option_scaleimage(ugd->active_printer->scaling); + pt_set_print_option_orientation(ugd->active_printer->landscape); + // FIXME : which field of ppd structure sholud be used for this? + pt_set_print_option_quality(); + pt_set_print_option_paper_type(); + pt_set_print_option_color(); + + /* get the range of print files */ + if (ugd->pt_files.range.from <= 0 || + ugd->pt_files.range.to > ugd->pt_files.range.total_pages || + ugd->pt_files.range.from > ugd->pt_files.range.to) { + PTS_DEBUG("range checking error"); + goto ERR_CASE; + } + + PTS_IF_FREE_MEM(ugd->pt_files.range.selected_files); + + //FIXME - multiple page pdf will be changed to several image files. + num = ugd->pt_files.range.total_pages; + ugd->pt_files.range.selected_files = (char **)malloc(sizeof(char *)*num); + + if (NULL == ugd->pt_files.range.selected_files) { + PTS_DEBUG("selected_files malloc error"); + goto ERR_CASE; + } + + first_fname = ugd->pt_files.request_files[ugd->pt_files.range.from - 1]; + if (1 == num && FILE_TYPE_IMAGE == get_file_type(first_fname)) { + int res_x = 0; + int res_y = 0; + if (get_image_resolution(first_fname, &res_x, &res_y) < 0) { + PTS_DEBUG("[ERROR] Failed to get image resolution(%s)",first_fname); + goto ERR_CASE; + } + pt_imagesize_t crop_image_info; + crop_image_info.imagesize = ugd->image_size; + crop_image_info.resolution_width = ugd->custom_width; + crop_image_info.resolution_height = ugd->custom_height; + crop_image_info.ratio = ugd->custom_w_ratio; + crop_image_info.unit = ugd->custom_unit; + + pt_set_print_option_imagesize(&crop_image_info, first_fname, res_x, res_y); + ugd->pt_files.range.selected_files[0] = ugd->pt_files.request_files[0]; + conf = &(ugd->engine.p_model.conf); + } else { + pt_set_print_option_scaleimage(ugd->active_printer->scaling); + conf = &(ugd->engine.p_model.conf); + num = 1; + ugd->pt_files.range.selected_files[0] = ugd->input_file; + } + + if (1 != ugd->active_printer->actived) { + /* use default printer, needs active */ + ret = pt_set_active_printer(ugd->active_printer); + if (PT_ERR_NONE != ret) { + PTS_DEBUG("pt_set_active_printer error"); + goto ERR_CASE; + } + } + + __pts_create_dummy_notification(ugd); + + ret = pt_start_print((const char **)ugd->pt_files.range.selected_files, num); + + if (PT_ERR_NONE != ret) { + PTS_DEBUG("pt_start_print error"); + goto ERR_CASE; + } + + PTS_TRACE_END; + return ECORE_CALLBACK_CANCEL; + +ERR_CASE: + ugd->is_process = 0;/*process is complete*/ + + if (NULL != ugd->popup) { + evas_object_del(ugd->popup); + ugd->popup = NULL; + } + + if ((PT_ERR_NOT_USB_ACCESS == ret) || (PT_ERR_NOT_NETWORK_ACCESS == ret)) { + pts_create_popup(ugd->navi, _("IDS_COM_POP_PRINTER_DISCONNECTED_ABB2"), 2.0); + } else { + pts_create_popup(ugd->navi, _("IDS_COM_BODY_UNSUPPORTED_FILE_TYPE"), 1.0); + } + return ECORE_CALLBACK_CANCEL; +} + +static Eina_Bool __pts_hide_main_view(void *data) +{ + PTS_TRACE_BEGIN; + pts_core_data_t *ugd = (pts_core_data_t *) data; + PTS_RETV_IF(ugd == NULL, ECORE_CALLBACK_CANCEL, "data is NULL"); + + if (ugd->popup) { + evas_object_del(ugd->popup); + ugd->popup = NULL; + } + + PTS_DEBUG("Hide main view of mobileprint"); + + evas_object_hide(ugd->root_win); + + PTS_TRACE_END; + return ECORE_CALLBACK_CANCEL; +} + +/* +* "print" button callback +*/ +static void __pts_main_view_btn_print_cb(void *data, Evas_Object *obj, void *event_info) +{ + PTS_TRACE_BEGIN; + pts_core_data_t *ugd = (pts_core_data_t *)data ; + PTS_RET_IF(ugd == NULL, "ugd is NULL"); + + if ((NULL != ugd->pt_files.request_files) && (NULL != ugd->active_printer)) { + evas_object_hide(ugd->main_win); + pts_create_popup(ugd->root_win, _("IDS_PRT_POP_PREPARING_TO_PRINT_ING"), 2.0); + ecore_timer_add(2.0, (Ecore_Task_Cb)__pts_hide_main_view, (void *)ugd); + + ugd->is_process = 1;/* in process */ + __pts_main_view_start_print(ugd); + } else { + pts_create_popup(ugd->navi, _("IDS_PRT_BODY_SELECT_PRINTER"), 2.0); + } + PTS_TRACE_END; +} + +static void __pts_main_view_btn_size_cb(void *data, Evas_Object *obj, void *event_info) +{ + PTS_TRACE_BEGIN; + pts_core_data_t *ugd = (pts_core_data_t *)data; + PTS_RET_IF(ugd == NULL, "ugd is NULL"); + + if (ugd->ctxpopup) { + evas_object_del(ugd->ctxpopup); + ugd->ctxpopup = NULL; + } + + if (ugd->active_printer) { + pts_create_size_popup(ugd->navi, ugd); + } else { + pts_create_popup(ugd->navi, _("IDS_PRT_BODY_NO_PRINTERS_AVAILABLE"), 1.0); + } + + PTS_TRACE_END; +} + +static void __pts_main_view_btn_scaling_cb(void *data, Evas_Object *obj, void *event_info) +{ + PTS_TRACE_BEGIN; + pts_core_data_t *ugd = (pts_core_data_t *)data; + PTS_RET_IF(ugd == NULL, "ugd is NULL"); + + if (ugd->ctxpopup) { + evas_object_del(ugd->ctxpopup); + ugd->ctxpopup = NULL; + } + + if (ugd->active_printer) { + pts_create_scaling_popup(ugd->navi, ugd); + } else { + pts_create_popup(ugd->navi, _("IDS_PRT_BODY_NO_PRINTERS_AVAILABLE"), 1.0); + } + + PTS_TRACE_END; +} + + +static void __pts_main_view_btn_landscape_cb(void *data, Evas_Object *obj, void *event_info) +{ + PTS_TRACE_BEGIN; + pts_core_data_t *ugd = (pts_core_data_t *)data; + PTS_RET_IF(ugd == NULL, "ugd is NULL"); + + if (ugd->ctxpopup) { + evas_object_del(ugd->ctxpopup); + ugd->ctxpopup = NULL; + } + + if (ugd->active_printer) { + PTS_DEBUG("initial ugd->landscape_toggle : %d", + ugd->landscape_toggle); + if (PT_ORIENTATION_PORTRAIT == ugd->landscape_toggle) { + ugd->landscape_toggle = PT_ORIENTATION_LANDSCAPE; + } else { /*FIXME if (PT_LANDSCAPE_LANDSCAPE == ugd->landscape_toggle)*/ + ugd->landscape_toggle = PT_ORIENTATION_PORTRAIT; + } + + PTS_DEBUG("ugd->landscape_toggle : %d", ugd->landscape_toggle); + + ugd->active_printer->landscape = ugd->landscape_toggle; + pts_main_view_rotate_image(ugd, app_get_device_orientation()); + } else { + pts_create_popup(ugd->navi, _("IDS_PRT_BODY_NO_PRINTERS_AVAILABLE"), 1.0); + } + + PTS_TRACE_END; +} + +static void _dismissed_cb(void *data, Evas_Object *obj, void *event_info) +{ + evas_object_del(obj); + obj = NULL; +} + +static void _move_ctxpopup_more(Evas_Object *ctxpopup, Evas_Object *btn) +{ + Evas_Coord x, y, w , h; + evas_object_geometry_get(btn, &x, &y, &w, &h); + evas_object_move(ctxpopup, x + (w / 2), y); +} + +static void _more_btn_cb(void *data, Evas_Object *obj, void *event_info) +{ + PTS_TRACE_BEGIN; + //struct appdata *ad = (struct appdata *) data; + Evas_Object *icon; + char buf[256]; + + pts_core_data_t *ugd = pts_get_ugd(); + PTS_RET_IF(ugd == NULL, "ugd is NULL"); + + if (ugd->ctxpopup) { + evas_object_del(ugd->ctxpopup); + } + + ugd->ctxpopup = elm_ctxpopup_add(ugd->navi); + elm_object_style_set(ugd->ctxpopup, "more_button"); + evas_object_smart_callback_add(ugd->ctxpopup, "dismissed", _dismissed_cb, ugd->ctxpopup); + + icon = elm_icon_add(ugd->ctxpopup); + if (ugd->pt_files.type != NULL) { + if (0 == strcasecmp(ugd->pt_files.type, "IMG")) { + snprintf(buf, sizeof(buf), "%s/A01_print_popup_icon_size.png", ICON_DIR); + elm_icon_file_set(icon, buf, NULL); + elm_ctxpopup_item_append(ugd->ctxpopup, _("IDS_IMGE_BODY_SIZE"), icon, __pts_main_view_btn_size_cb, ugd); + } else if (0 == strcasecmp(ugd->pt_files.type, "DOC") || 0 == strcasecmp(ugd->pt_files.type, "WEB")) { + snprintf(buf, sizeof(buf), "%s/A01_print_popup_icon_scaling.png", ICON_DIR); + elm_icon_file_set(icon, buf, NULL); + elm_ctxpopup_item_append(ugd->ctxpopup, _("IDS_PRT_BODY_SCALING_ABB"), icon, __pts_main_view_btn_scaling_cb, ugd); + } + } else { /* Default IMG */ + snprintf(buf, sizeof(buf), "%s/A01_print_popup_icon_size.png", ICON_DIR); + elm_icon_file_set(icon, buf, NULL); + elm_ctxpopup_item_append(ugd->ctxpopup, _("IDS_IMGE_BODY_SIZE"), icon, __pts_main_view_btn_size_cb, ugd); + } + + icon = elm_icon_add(ugd->ctxpopup); + if (ugd->landscape_toggle == PT_ORIENTATION_PORTRAIT) { + snprintf(buf, sizeof(buf), "%s/A01_print_popup_icon_Rotate.png", ICON_DIR); + } else { + snprintf(buf, sizeof(buf), "%s/A01_print_popup_icon_Rotate02.png", ICON_DIR); + } + elm_icon_file_set(icon, buf, NULL); + elm_ctxpopup_item_append(ugd->ctxpopup, _("IDS_IMGE_OPT_ROTATE"), icon, __pts_main_view_btn_landscape_cb, ugd); + + icon = elm_icon_add(ugd->ctxpopup); + snprintf(buf, sizeof(buf), "%s/A01_print_popup_icon_setting.png", ICON_DIR); + elm_icon_file_set(icon, buf, NULL); + elm_ctxpopup_item_append(ugd->ctxpopup, _("IDS_COM_BODY_SETTING"), icon, __pts_main_view_btn_setting_cb, ugd); + + _move_ctxpopup_more(ugd->ctxpopup, obj); + + evas_object_show(ugd->ctxpopup); + + PTS_TRACE_END; +} + +static Evas_Object *create_toolbar_btn(Evas_Object *parent, const char *text, Evas_Smart_Cb func, void *data) +{ + PTS_TRACE_BEGIN; + Evas_Object *btn = elm_button_add(parent); + if (!btn) { + return NULL; + } + elm_object_style_set(btn, "naviframe/toolbar/default"); + elm_object_text_set(btn, text); + evas_object_smart_callback_add(btn, "clicked", func, data); + PTS_TRACE_END; + return btn; +} + +static Evas_Object *create_toolbar_more_btn(Evas_Object *parent, Evas_Smart_Cb func, void *data) +{ + PTS_TRACE_BEGIN; + Evas_Object *btn = elm_button_add(parent); + if (!btn) { + return NULL; + } + elm_object_style_set(btn, "naviframe/more/default"); + evas_object_smart_callback_add(btn, "clicked", func, data); + PTS_TRACE_END; + return btn; +} + +/* +* mouse down callback +*/ +static void __pts_main_view_mouse_down_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info) +{ + PTS_TRACE_BEGIN; + pts_core_data_t *ugd = (pts_core_data_t *)data; + PTS_RET_IF(ugd == NULL, "ugd is NULL"); + + Evas_Event_Mouse_Down *ev = event_info; + PTS_RET_IF(ev == NULL, "ev is NULL"); + + ugd->cur_x = ev->canvas.x; + PTS_TRACE_END; +} + +/* +* mouse up callback +*/ +static void __ug_view_mouse_up_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info) +{ + PTS_TRACE_BEGIN; + + pts_core_data_t *ugd = (pts_core_data_t *)data; + PTS_RET_IF(ugd == NULL, "ugd is NULL"); + + Evas_Event_Mouse_Down *ev = event_info; + PTS_RET_IF(ev == NULL, "ev is NULL"); + + PTS_DEBUG("dist is %d", ev->canvas.x - ugd->cur_x); + PTS_DEBUG("ugd->list_count is %d, cur_index: %d", ugd->pt_files.num_of_files, ugd->pt_files.current_index); + + if ((ev->canvas.x - ugd->cur_x) < -150) { + /* next page */ + if (ugd->pt_files.current_index < (g_pages_count - 1)) { + ugd->pt_files.current_index++; + //pts_main_view_load_preview_img(ugd); + preview_model_request_page(&(ugd->engine.p_model), + ugd->pt_files.current_index + 1); + } + } else if ((ev->canvas.x - ugd->cur_x) > 150) { + /* prev page */ + if (ugd->pt_files.current_index > 0) { + ugd->pt_files.current_index--; + //pts_main_view_load_preview_img(ugd); + preview_model_request_page(&(ugd->engine.p_model), + ugd->pt_files.current_index + 1); + } + } + + PTS_TRACE_END; +} + +void clear_preview_image(pts_core_data_t *ugd) +{ + PTS_TRACE_BEGIN; + Evas_Object *evas_img; + /*elm_image_no_scale_set(ugd->preview_img, EINA_FALSE); + elm_image_resizable_set(ugd->preview_img, EINA_TRUE, EINA_TRUE);*/ + + if (NULL != ugd && NULL != ugd->preview_img) { + evas_img = elm_image_object_get(ugd->preview_img); + /*evas_object_resize(ugd->preview_img, 0, 0);*/ + evas_object_image_data_set(evas_img, NULL); + } else { + PTS_DEBUG("Just ignore preview reset"); + } + PTS_TRACE_END; +} + +/* +* set preview image +*/ +void set_preview_image(Evas_Object *img, const char *fname, int preview_state) +{ + PTS_TRACE_BEGIN; + PTS_RET_IF(NULL == img || NULL == fname, "Invalid argument"); + + Evas_Object *evas_img; + evas_img = elm_image_object_get(img); + + /*switch (get_file_type(fname)) { + case FILE_TYPE_IMAGE:*/ + /*elm_image_no_scale_set(img, EINA_TRUE); + elm_image_resizable_set(img, EINA_FALSE, EINA_FALSE);*/ + PTS_DEBUG("@@@FILENAME: %s", fname); + /* clear image */ + evas_object_image_data_set(evas_img, NULL); + int elm_err = elm_image_file_set(img, fname, "ppm"); + PTS_DEBUG("elm image_file_set error %d", elm_err); + + PTS_TRACE_END; +} + +char *get_preview_image_path(pts_core_data_t *ugd) +{ + PTS_TRACE_BEGIN; + PTS_RETV_IF(ugd == NULL, NULL, "ugd is NULL"); + + if (g_current_preview_path == NULL) { + g_current_preview_path = malloc(sizeof(char) * 4096); + } + + if ((ugd->pt_files.current_index >= 0) + && (ugd->pt_files.current_index < g_pages_count)) { + sprintf(g_current_preview_path, "/tmp/mobileprint_%04d.ppm", + ugd->pt_files.current_index + 1); + PTS_DEBUG("Preview image path is %s", g_current_preview_path); + PTS_TRACE_END; + return g_current_preview_path; + } + PTS_TRACE_END; + return NULL; +} + +/* +* create content of the main view screen +*/ +static Evas_Object *__pts_main_view_create_content(pts_core_data_t *ugd) +{ + PTS_TRACE_BEGIN; + PTS_RETV_IF(ugd == NULL, NULL, "ugd is NULL"); + + char *file_path = NULL; + Evas_Object *printer_label = NULL; + char label[128] = {0,}; + + /* + * load preview group + */ + ugd->printer_layout = pts_create_base_layout(ugd->navi, "printer"); + + pts_main_view_update_printer_label(ugd); + + /* + * load preview image group + */ + ugd->img_layout = pts_create_base_layout(ugd->printer_layout, "image_view"); + + if (NULL != ugd->pt_files.request_files) { + /* file_path = ugd->pt_files.files[0]; */ + file_path = ugd->pt_files.request_files[ugd->pt_files.current_index]; + PTS_DEBUG("filepath is %s", file_path); + } + + ugd->preview_img = elm_image_add(ugd->img_layout); + elm_object_part_content_set(ugd->img_layout, "content", ugd->preview_img); + + evas_object_event_callback_add(ugd->img_layout, + EVAS_CALLBACK_MOUSE_DOWN, + __pts_main_view_mouse_down_cb, ugd); + evas_object_event_callback_add(ugd->img_layout, EVAS_CALLBACK_MOUSE_UP, + __ug_view_mouse_up_cb, ugd); + + /* + * Set preview layout + */ + elm_object_part_content_set(ugd->printer_layout, "image", ugd->img_layout); + evas_object_show(ugd->preview_img); + evas_object_show(ugd->img_layout); + evas_object_show(ugd->printer_layout); + + show_loading_animation(ugd); + + PTS_TRACE_END; + return ugd->printer_layout; +} + +/** + * This function let the app load the previewed image + * @return Evas_Object + * @param[in] ugd the pointer to the main data structure + */ +Evas_Object *pts_main_view_load_preview_img(pts_core_data_t *ugd) +{ + PTS_TRACE_BEGIN; + char pages[15]; + PTS_RETV_IF(ugd == NULL, NULL, "ugd is NULL"); + + set_preview_image(ugd->preview_img, get_preview_image_path(ugd), 0); + + if (g_pages_count > 1) + sprintf(pages, "%d / %d", ugd->pt_files.current_index + 1, + g_pages_count); + else { + strcpy(pages, " "); + } + edje_object_part_text_set(elm_layout_edje_get(ugd->img_layout), + "pagenumber", pages); + + PTS_TRACE_END; + return NULL; +} + +/* +* setting button callback function +*/ +static void __pts_main_view_btn_setting_cb(void *data, Evas_Object *obj, void *event_info) +{ + PTS_TRACE_BEGIN; + pts_core_data_t *ugd = (pts_core_data_t *)data; + PTS_RET_IF(ugd == NULL, "ugd is NULL"); + + if (ugd->ctxpopup) { + evas_object_del(ugd->ctxpopup); + ugd->ctxpopup = NULL; + } + + if (ugd->active_printer) { + pts_create_setting_view(ugd); + } else { + pts_create_popup(ugd->navi, _("IDS_PRT_BODY_NO_PRINTERS_AVAILABLE"), 1.0); + } + + PTS_TRACE_END; +} + +int pts_main_view_load_print_files(pts_core_data_t *ugd, pts_printing_data_t *printing_data) +{ + PTS_TRACE_BEGIN; + PTS_RETV_IF(ugd == NULL || printing_data == NULL, -1, "Invalid argument"); + + PTS_IF_FREE_MEM(ugd->pt_files.request_files); + PTS_IF_FREE_MEM(ugd->pt_files.type); + + memset(&ugd->pt_files, 0, sizeof(pts_printing_data_t)); + + ugd->pt_files.num_of_files = printing_data->num_of_files; + ugd->pt_files.current_index = printing_data->current_index; + ugd->pt_files.type = printing_data->type; + ugd->pt_files.request_files = (char **)malloc(sizeof(char *) * ugd->pt_files.num_of_files); + + if (!ugd->pt_files.request_files) { + PTS_IF_FREE_MEM(ugd->pt_files.type); + PTS_IF_FREE_MEM(ugd); + PTS_DEBUG("calloc print files failed"); + PTS_TRACE_END; + return -1; + } + + int i = 0; + for (i = 0; i < ugd->pt_files.num_of_files; i++) { + PTS_DEBUG("file path is %s", printing_data->request_files[i]); + if (NULL != printing_data->request_files[i]) { + ugd->pt_files.request_files[i] = strdup(printing_data->request_files[i]); + } else { + ugd->pt_files.request_files[i] = strdup(MOBILEPRINT_DEFAULTIMG); + } + PTS_DEBUG("file path is %s", ugd->pt_files.request_files[i]); + } + ugd->input_file = strdup(ugd->pt_files.request_files[0]); + PTS_DEBUG("ugd->input_file: %s", ugd->input_file); + + PTS_DEBUG("count: %d", ugd->pt_files.num_of_files); + PTS_DEBUG("current index: %d", ugd->pt_files.current_index); + PTS_DEBUG("filetype: %s", ugd->pt_files.type); + + /* init the print range(include all pages) */ + ugd->pt_files.range.from = 1; + ugd->pt_files.range.to = ugd->pt_files.range.total_pages = ugd->pt_files.num_of_files; + ugd->pt_files.range.selected_files = NULL; + + PTS_TRACE_END; + return 0; +} + +/** + * This function let the app update printer label in the preview view + * @return void + * @param[in] ugd the pointer to the main data structure + */ +void pts_main_view_update_printer_label(pts_core_data_t *ugd) +{ + PTS_TRACE_BEGIN; + PTS_RET_IF(ugd == NULL, "ugd is NULL"); + + Evas_Object *printer_label = NULL; + char label[128] = {0,}; + + if (ugd->printer_label == NULL) { + ugd->printer_label = elm_label_add(ugd->printer_layout); + } + PTS_DEBUG("ugd->active_printer is %p", ugd->active_printer); + + if (ugd->active_printer != NULL) { + char *printer_label = strdup(ugd->active_printer->name); + pts_unstandardization(printer_label); + snprintf(label, 128, "%s", printer_label); + if (printer_label != NULL) { + free(printer_label); + printer_label = NULL; + } + } else { + snprintf(label, 128, "%s", _("IDS_COM_BODY_NO_DEVICES")); + } + elm_object_text_set(ugd->printer_label, label); + evas_object_size_hint_weight_set(ugd->printer_label, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(ugd->printer_label, EVAS_HINT_FILL, EVAS_HINT_FILL); + + elm_object_part_content_set(ugd->printer_layout, "printer_name", ugd->printer_label); + + PTS_TRACE_END; +} + +/** + * This function let the app rotate the image by the given landscape + * @return void + * @param[in] ugd the pointer to the main data structure + * @param[in] landscape the landscape value + */ +void pts_main_view_rotate_image(pts_core_data_t *ugd, + app_device_orientation_e orientation) +{ + PTS_TRACE_BEGIN; + PTS_RET_IF(ugd == NULL, "ugd is NULL"); + + clear_preview_image(ugd); /* TODO: show empty page */ + show_loading_animation(ugd); + generate_preview_images(ugd, orientation); + g_pages_count = 0; + + PTS_TRACE_END; +} + +/** + * This function let the app create the main screen view + * @return Evas_Object + * @param[in] win the pointer to the main window + * @param[in] pt_files the pointer to the path of print files + */ +API Evas_Object *pts_create_main_view(pts_core_data_t *ugd) +{ + PTS_TRACE_BEGIN; + PTS_RETV_IF((ugd == NULL) || (ugd->root_win == NULL), NULL, "Invalid argument"); + + Evas_Object *main_layout = NULL; + Evas_Object *back_btn = NULL; + + ugd->main_win = pts_create_base_layout_with_conform(ugd->root_win, "navi"); + if (NULL == ugd->main_win) { + PTS_IF_FREE_MEM(ugd); + PTS_DEBUG("create base layout failed"); + PTS_TRACE_END; + return NULL; + } + + ugd->navi = elm_naviframe_add(ugd->main_win); + elm_object_part_content_set(ugd->main_win, "navigation_bar", ugd->navi); + + main_layout = __pts_main_view_create_content(ugd); + + back_btn = pts_create_label_btn(ugd->navi, _("IDS_COM_SK_BACK")); + elm_object_style_set(back_btn, "naviframe/back_btn/default"); + evas_object_smart_callback_add(back_btn, "clicked", __pts_main_view_btn_back_cb, ugd); + + evas_object_event_callback_add(ugd->navi, EVAS_CALLBACK_DEL, __pts_main_view_navi_delete_cb, ugd); + + ugd->navi_it = elm_naviframe_item_push(ugd->navi, _("IDS_PRT_SK_PRINT_PREVIEW"), back_btn, NULL, main_layout, NULL); + + ugd->print_btn = create_toolbar_btn(ugd->navi, _("IDS_SMPOS_SK3_PRINT"), __pts_main_view_btn_print_cb, ugd); + elm_object_item_part_content_set(ugd->navi_it, "toolbar_button1", ugd->print_btn); + + ugd->more_btn = create_toolbar_more_btn(ugd->navi, _more_btn_cb, ugd->navi_it); + elm_object_item_part_content_set(ugd->navi_it, "toolbar_more_btn", ugd->more_btn); + + evas_object_event_callback_add(main_layout, EVAS_CALLBACK_DEL, __pts_main_view_delete_cb, ugd); + /*Create preview-images from pdf*/ + /*assuming there can be only one pdf file on input*/ + //g_pages_count = pts_generate_preview(ugd); + + /* TODO: move to preview widget initialization */ + init_preview_engine(&(ugd->engine)); + /* connect callback for page ready */ + ecore_event_handler_add(ugd->engine.page_ready_event_type, + page_ready_cb, ugd); + + int tmp_width = 0; + int tmp_height = 0; + + get_image_resolution(ugd->input_file, &tmp_width, &tmp_height); + ugd->custom_width = (double)tmp_width; + ugd->custom_height = (double)tmp_height; + ugd->custom_w_ratio = ugd->custom_width / ugd->custom_height; + PTS_DEBUG("Original image size : %lfx%lf(%lfx1)", ugd->custom_width, ugd->custom_height, ugd->custom_w_ratio); + // original image size (unit cm) calculated by 300dpi + ugd->custom_width = (ugd->custom_width / 300) * 2.54; + ugd->custom_height = (ugd->custom_height / 300) * 2.54; + ugd->custom_unit = 1; // cm unit + + PTS_TRACE_END; + return ugd->main_win; +} diff --git a/mobileprint/app/pts_print_search.c b/mobileprint/app/pts_print_search.c new file mode 100644 index 0000000..ed67adf --- /dev/null +++ b/mobileprint/app/pts_print_search.c @@ -0,0 +1,983 @@ +/* +* Mobileprint +* +* Copyright 2012 Samsung Electronics Co., Ltd + +* Licensed under the Flora License, Version 1.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://floralicense.org/license/ + +* 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. +* +*/ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include "pt_api.h" + +#include "mobileprint.h" +#include "pts_common.h" +#include "pts_main_view.h" +#include "pts_list_view.h" +#include "pts_setting_view.h" +#include "preview_content.h" +#include "preview_widget.h" +#include "preview_util.h" + +static char *WiFi_Type_String[] = { + "Wi-Fi", "Wi-Fi Direct" +}; + +typedef struct { + pts_core_data_t *ugd; + pt_printer_mgr_t *pt; + + int radio_index; + Evas_Object *radio_group; +} radio_print_list_data_t; + +static Elm_Genlist_Item_Class list_itc; +static Elm_Genlist_Item_Class refresh_itc; +static Elm_Genlist_Item_Class wifi_list_itc; + +static Evas_Object *printer_list_radio_main = NULL; + +void pt_post_print_search(pts_core_data_t *ugd); +void pts_create_no_found_popup(Evas_Object *parent, pts_core_data_t *ugd, void *refresh_cb, void *cancel_cb); + +static char *_pts_wifi_text_get(void *data, Evas_Object *obj, const char *part) +{ + int index = (int)data; + + if (!strcmp(part, "elm.text")) { + return strdup(WiFi_Type_String[index]); + } else { + return strdup("Unknown index"); + } +} + +static void _pts_ug_layout_cb(ui_gadget_h ug, enum ug_mode mode, void *priv) +{ + PTS_TRACE_BEGIN; + PTS_RET_IF(ug == NULL, "ug is NULL"); + + Evas_Object *base, *win; + + base = ug_get_layout(ug); + if (!base) { + ug_destroy(ug); + return; + } + + win = ug_get_window(); + + evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_win_resize_object_add(win, base); + + ug_disable_effect(ug); + evas_object_show(base); + PTS_TRACE_END; +} + +static void _pts_ug_destroy_cb(ui_gadget_h ug, void *priv) +{ + PTS_TRACE_BEGIN; + pts_core_data_t *ugd = (pts_core_data_t *)priv; + PTS_RET_IF(ug == NULL || ugd == NULL, "Invalid argument"); + + int ret = 0; + int net_type = 0; + ret = pt_get_connection_status(&net_type); + + PTS_DEBUG("RET is %d", ret); + + if ((net_type&PT_CONNECTION_USB)>0 || + (net_type&PT_CONNECTION_WIFI)>0 || + (net_type&PT_CONNECTION_WIFI_DIRECT)>0) { + + // Begin actual printer searching... + pts_create_print_search_popup(ugd->print_search_popup_parent, ugd); + } else { + if (ugd->print_search_mode == PTS_SEARCH_INITIAL) { + pt_deinit(); + elm_exit(); + } else { + // Reselect... + pts_search_printer(ugd, ugd->print_search_popup_parent, ugd->print_search_mode, ugd->selection_done_cb, ugd->printer_search_user_data); + } + } + PTS_TRACE_END; +} + +static int pts_launch_wifi_qs(void) +{ + PTS_TRACE_BEGIN; + int tpid = 0; + int ret = 0; + + tpid = sysman_get_pid("wifi-qs"); + if (tpid > 0) { + PTS_DEBUG("wifi-qs existed !\n"); + ret = -1; + } else { + bundle *b = NULL; + b = bundle_create(); + if (b == NULL) { + ret = -1; + } else { + ret = syspopup_launch("wifi-qs", b); + if (ret < 0) { + PTS_DEBUG("syspopup is failed. [%d]\n", ret); + } + + bundle_free(b); + } + } + + PTS_TRACE_END; + return ret; +} + +void _wifi_qs_monitoring_cb(keynode_t *key, void *data) +{ + PTS_TRACE_BEGIN; + int wifi_qs_exit = -1; + int error_code = vconf_get_int(VCONFKEY_WIFI_QS_EXIT, &wifi_qs_exit); + + PTS_RET_IF(error_code == -1, "Error when check wifi qs exit status"); + + vconf_ignore_key_changed(VCONFKEY_WIFI_QS_EXIT, _wifi_qs_monitoring_cb); + + pts_core_data_t *ugd = (pts_core_data_t *)data; + + int ret = 0; + int net_type = 0; + ret = pt_get_connection_status(&net_type); + PTS_DEBUG("RET is %d", ret); + + if ((net_type&PT_CONNECTION_USB)>0 || + (net_type&PT_CONNECTION_WIFI)>0 || + (net_type&PT_CONNECTION_WIFI_DIRECT)>0) { + + // Begin actual printer searching... + pts_create_print_search_popup(ugd->print_search_popup_parent, ugd); + } else { + if (ugd->print_search_mode == PTS_SEARCH_INITIAL) { + pt_deinit(); + elm_exit(); + } else { + // Reselect... + pts_search_printer(ugd, ugd->print_search_popup_parent, ugd->print_search_mode, ugd->selection_done_cb, ugd->printer_search_user_data); + } + } + PTS_TRACE_END; +} + +static void _pts_wifi_list_sel(void *data, Evas_Object *obj, void *event_info) +{ + PTS_TRACE_BEGIN; + pts_core_data_t *ugd = (pts_core_data_t *)data; + int index = 0; + Elm_Object_Item *item = (Elm_Object_Item *)event_info; + + if (item) { + struct ug_cbs cbs = {0, }; + memset(&cbs, 0x00, sizeof(struct ug_cbs)); + + cbs.layout_cb = _pts_ug_layout_cb; + cbs.result_cb = NULL; + cbs.destroy_cb = _pts_ug_destroy_cb; + cbs.priv = ugd; + + index = (int)elm_object_item_data_get(item); + if (index == 0) { + // Wi-Fi + int ret = pts_launch_wifi_qs(); + if (ret > 0) { + // Currently ret value is procces id of wifi_qs. + PTS_DEBUG("Now register vocnf cb for VCONFKEY_WIFI_QS_EXIT"); + vconf_notify_key_changed(VCONFKEY_WIFI_QS_EXIT, _wifi_qs_monitoring_cb, ugd); + } else { + PTS_DEBUG("Failed to launch wifi-qs."); + } + } else if (index == 1) { + // Wi-Fi Direct is selected. + ug_create(NULL, "setting-wifidirect-efl", UG_MODE_FULLVIEW, NULL, &cbs); + } else { + PTS_DEBUG("Unknown index"); + } + } + + if (ugd->wifi_type_popup != NULL) { + evas_object_del(ugd->wifi_type_popup); + ugd->wifi_type_popup = NULL; + } + + PTS_TRACE_END; +} + +static void _pts_refresh_cb(void *data, Evas_Object *obj, void *event_info) +{ + PTS_TRACE_BEGIN; + pts_core_data_t *ugd = (pts_core_data_t *)data; + PTS_RET_IF(ugd == NULL, "ugd is NULL"); + + if (NULL != ugd->no_found_popup) { + evas_object_del(ugd->no_found_popup); + ugd->no_found_popup = NULL; + } + + if (NULL != ugd->printer_list_popup) { + evas_object_del(ugd->printer_list_popup); + ugd->printer_list_popup = NULL; + } + + pts_create_print_search_popup(ugd->print_search_popup_parent, ugd); + + PTS_TRACE_END; +} + + +static void _pts_cancel_cb(void *data, Evas_Object *obj, void *event_info) +{ + PTS_TRACE_BEGIN; + + pts_core_data_t *ugd = (pts_core_data_t *)data; + PTS_RET_IF(ugd == NULL, "ugd is NULL"); + + if (ugd->print_search_mode == PTS_SEARCH_INITIAL) { + if (ugd->no_found_popup != NULL) { + evas_object_del(ugd->no_found_popup); + ugd->no_found_popup = NULL; + } + + if (obj != NULL) { + evas_object_del(obj); + obj = NULL; + } + pt_deinit(); + elm_exit(); + } else { + if (ugd->no_found_popup != NULL) { + evas_object_del(ugd->no_found_popup); + ugd->no_found_popup = NULL; + } + if (ugd->wifi_type_popup != NULL) { + evas_object_del(ugd->wifi_type_popup); + ugd->wifi_type_popup = NULL; + } + if (ugd->active_printer == NULL) { + PTS_DEBUG("No active printer. So remove all option"); + elm_genlist_item_update(ugd->printer_item); + elm_object_item_del(ugd->header_separator_item); + elm_object_item_del(ugd->item_paper_size); + elm_object_item_del(ugd->item_paper_copies); + elm_object_item_del(ugd->item_page_range); + elm_object_item_del(ugd->item_paper_quality); + elm_object_item_del(ugd->item_paper_type); + elm_object_item_del(ugd->item_grayscale); + elm_object_item_del(ugd->footer_separator_item); + } + if (obj != NULL) { + evas_object_del(obj); + obj = NULL; + } + } + PTS_TRACE_END; +} + +static int pts_save_selected_printer(pts_core_data_t *ugd, pt_printer_mgr_t *pt) +{ + PTS_TRACE_BEGIN; + PTS_RETV_IF(pt == NULL, PT_ERR_INVALID_PARAM, "printer_info is NULL."); + + int ret = 0; + PTS_DEBUG("pt name is %s", pt->name); + PTS_DEBUG("pt address %x", pt); + + /* Check whether the printer is already activated or not. */ + if (NULL != ugd->active_printer) { + if ((strcmp(ugd->active_printer->name, pt->name) == 0) && + (strcmp(ugd->active_printer->address, pt->address) == 0)) { + // if same printer, then nothing to do... + PTS_DEBUG("Same printer is selected. No update required. %x", pt); + return PT_ERR_NONE; + } + } + + ret = pt_set_active_printer(pt); + PTS_RETV_IF(ret != PT_ERR_NONE, PT_ERR_FAIL, "Can not set active printer."); + + ret = pt_set_default_printer(pt); + PTS_RETV_IF(ret != PT_ERR_NONE, PT_ERR_FAIL, "Can not set default printer."); + + if (NULL == ugd->active_printer) { + ugd->active_printer = (pt_printer_mgr_t *)malloc(sizeof(pt_printer_mgr_t)); + PTS_RETV_IF(ugd->active_printer == NULL, PT_ERR_NO_MEMORY, "Can allocate memory"); + } + memset(ugd->active_printer, 0, sizeof(pt_printer_mgr_t)); + memcpy(ugd->active_printer, pt, sizeof(pt_printer_mgr_t)); + + ugd->paper_size = (Elm_Object_Item *)realloc(ugd->paper_size, pt_get_print_option_papersize_num() * sizeof(Elm_Object_Item *)); + memset(ugd->paper_size, 0, pt_get_print_option_papersize_num() * sizeof(Elm_Object_Item *)); + + return PT_ERR_NONE; +} + +static void _pts_printer_list_cancel_cb(void *data, Evas_Object *obj, void *event_info) +{ + PTS_TRACE_BEGIN; + struct appdata *ad = pts_get_appdata(); + pts_core_data_t *ugd = ad->ugd; + + evas_object_del(data); + + if (ugd->print_search_mode == PTS_SEARCH_INITIAL) { + PTS_TRACE_END; + pt_deinit(); + elm_exit(); + } else { + //Don't terminate mobileprint. Previous screen is setting view. + } + + PTS_TRACE_END; +} + +static void _pts_printer_list_ok_cb(void *data, Evas_Object *obj, void *event_info) +{ + PTS_TRACE_BEGIN; + pts_ug_list_data *ld = (pts_ug_list_data *)data; + pts_core_data_t *ugd = ld->ugd; + PTS_RET_IF(ugd == NULL, "ugd is NULL"); + + if (NULL != printer_list_radio_main) { + evas_object_del(printer_list_radio_main); + printer_list_radio_main = NULL; + } + + if (ugd->printer_list_popup != NULL) { + evas_object_del(ugd->printer_list_popup); + ugd->printer_list_popup = NULL; + } + + pts_save_selected_printer(ugd, ugd->select_printer); + + if (ugd->selection_done_cb != NULL) { + ugd->selection_done_cb(ugd->printer_search_user_data); + } + + PTS_TRACE_END; + return; +} + +#if 0 +/* +* the response callback when click back button +*/ +static void __pts_search_btn_back_cb(void *data, Evas_Object *obj, void *event_info) +{ + PTS_TRACE_BEGIN; + + pts_core_data_t *ugd = (pts_core_data_t *)data ; + PTS_RET_IF(ugd == NULL, "ugd is NULL"); + + pts_save_selected_printer(ugd, ugd->select_printer); + + //elm_naviframe_item_pop_to(ugd->navi_it); + elm_naviframe_item_pop(ugd->navi); + //pts_main_view_rotate_image(ugd, app_get_device_orientation()); + + if (ugd->selection_done_cb != NULL) { + ugd->selection_done_cb(ugd->printer_search_user_data); + } + + PTS_TRACE_END; +} +#endif + +/* +* select the printer from the searched printers list +*/ +static void __pts_search_print_list_sel(void *data, Evas_Object *obj, void *event_info) +{ + PTS_TRACE_BEGIN; + PTS_RET_IF(data == NULL, "data is NULL"); + PTS_RET_IF(event_info == NULL, "event_info is NULL"); + pts_ug_list_data *ld = (pts_ug_list_data *)data; + Elm_Object_Item *item = event_info; + + pt_printer_mgr_t *pt = NULL; + radio_print_list_data_t *core = NULL; + + elm_genlist_item_selected_set(item, EINA_FALSE); + + core = (radio_print_list_data_t *)elm_object_item_data_get(item); + PTS_RET_IF(core == NULL, "core is NULL"); + pt = core->pt; + PTS_RET_IF(pt == NULL, "pt is NULL"); + + PTS_DEBUG("Selected printer information: index=[%d]", core->radio_index); + PTS_DEBUG("pt->name : %s", pt->name); + PTS_DEBUG("pt->address : %s", pt->address); + + ld->ugd->select_printer = pt; + elm_radio_value_set(core->radio_group, core->radio_index); + + // Now call real event trigger to update radio button when selected. + elm_genlist_item_update(item); + + PTS_TRACE_END; +} + +/* +* get the value of the label +*/ +static char *__pts_list_view_label_get(void *data, Evas_Object *obj, const char *part) +{ + PTS_TRACE_BEGIN; + radio_print_list_data_t *core = (radio_print_list_data_t *) data; + pt_printer_mgr_t *item = core->pt; + PTS_RETV_IF(item == NULL, NULL, "item is NULL"); + + if (strcmp(part, "elm.text.1") == 0) { + if (item != NULL) { + char *printer_label = strdup(item->name); + pts_unstandardization(printer_label); + return printer_label; + } + } else if (strcmp(part, "elm.text.2") == 0) { + if (item != NULL) { + return pts_parse_protocol(item->address); + } + } + + PTS_TRACE_END; + return NULL; +} + +/* +* set the icon of the obj +*/ +static Evas_Object *__pts_list_view_icon_get(void *data, Evas_Object *obj, const char *part) +{ + PTS_TRACE_BEGIN; + + radio_print_list_data_t *core = (radio_print_list_data_t *) data; + pts_core_data_t *ugd = core->ugd; + PTS_RETV_IF(core == NULL || ugd == NULL, NULL, "Invalid argument"); + + pt_printer_mgr_t *pt = core->pt; + Evas_Object *radio = NULL; + + if (!strcmp(part, "elm.icon") || !strcmp(part, "elm.swallow.icon")) { + + radio = elm_radio_add(obj); + elm_radio_state_value_set(radio, core->radio_index); + elm_radio_group_add(radio, core->radio_group); + if (ugd->active_printer != NULL) { + if (strcmp(ugd->active_printer->name, pt->name) ==0 && + strcmp(ugd->active_printer->address, pt->address) ==0) { + elm_radio_value_set(radio, core->radio_index); + ugd->select_printer = pt; + + PTS_DEBUG("Printer[%d] name=[%s], address=[%s] -> Active", core->radio_index, pt->name, pt->address); + } else { + PTS_DEBUG("Printer[%d] name=[%s], address=[%s] -> x", core->radio_index, pt->name, pt->address); + } + } + + evas_object_size_hint_weight_set(radio, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(radio, EVAS_HINT_FILL, EVAS_HINT_FILL); + + return radio; + } + + PTS_TRACE_END; + return NULL; +} + +static Evas_Object *__pts_refresh_icon_get(void *data, Evas_Object *obj, const char *part) +{ + PTS_TRACE_BEGIN; + + Evas_Object *btn1; + pts_core_data_t *ugd = (pts_core_data_t *)data; + PTS_RETV_IF(ugd == NULL, NULL, "Invalid argument"); + + if (!strcmp(part, "elm.icon")) { + btn1 = elm_button_add(obj); + elm_object_text_set(btn1, _("IDS_COM_SK_REFRESH")); + //elm_object_part_content_set(obj, "button1", btn1); + evas_object_smart_callback_add(btn1, "clicked", _pts_refresh_cb, ugd); + PTS_TRACE_END; + return btn1; + } else { + PTS_DEBUG("Unknwon part : %s", part); + } + + PTS_TRACE_END; + return NULL; +} + +/* +* popup when machine is unsupported +*/ +static Eina_Bool __pts_exit_cb(void *data) +{ + PTS_TRACE_BEGIN; + pts_ug_list_data *ld = (pts_ug_list_data *) data; + PTS_RETV_IF(ld == NULL, ECORE_CALLBACK_CANCEL, "ld is NULL"); + + PTS_IF_FREE_MEM(ld); + elm_exit(); + + PTS_TRACE_END; + return ECORE_CALLBACK_CANCEL; +} + +/* +* popup error when searching printers failed +*/ +static Eina_Bool __pts_list_view_popup_error(void *data) +{ + PTS_TRACE_BEGIN; + pts_ug_list_data *ld = (pts_ug_list_data *) data; + PTS_RETV_IF(ld == NULL, ECORE_CALLBACK_CANCEL, "ld is NULL"); + + ld->ugd->is_process = 0;/*process is complete*/ + + if (ld->popup) { + evas_object_del(ld->popup); + ld->popup = NULL; + } + + PTS_DEBUG("search printer failed"); + pts_create_popup(ld->ugd->print_search_popup_parent, _("IDS_ASEML_POP_SEARCH_FAILED"), 1.0); + ecore_timer_add(1, (Ecore_Task_Cb)__pts_exit_cb, (void *)ld->ugd); + + PTS_IF_FREE_MEM(ld); + + PTS_TRACE_END; + return ECORE_CALLBACK_CANCEL; +} + +// pts_create_wifi_popup +Evas_Object *pts_search_create_wifi_type_selector_popup(Evas_Object *parent, pts_core_data_t *ugd) +{ + PTS_TRACE_BEGIN; + Evas_Object *popup; + int index; + Evas_Object *genlist; + Evas_Object *btn1; + + popup = elm_popup_add(parent); + elm_object_style_set(popup,"min_menustyle"); + elm_object_part_text_set(popup, "title,text", _("IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT")); + evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + + btn1 = elm_button_add(popup); + elm_object_style_set(btn1,"popup_button/default"); + elm_object_text_set(btn1, _("IDS_COM_SK_CANCEL")); + elm_object_part_content_set(popup, "button1", btn1); + evas_object_smart_callback_add(btn1, "clicked", _pts_cancel_cb, ugd); + + wifi_list_itc.item_style = "1text"; + wifi_list_itc.func.text_get = _pts_wifi_text_get; + wifi_list_itc.func.content_get = NULL; + wifi_list_itc.func.state_get = NULL; + wifi_list_itc.func.del = NULL; + + genlist = elm_genlist_add(popup); + evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL); + for (index = 0; index < 2; index++) { + elm_genlist_item_append(genlist, &wifi_list_itc, (void *) index, NULL, + ELM_GENLIST_ITEM_NONE, _pts_wifi_list_sel, ugd); + } + + Evas_Object *box = elm_box_add(popup); + evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + + elm_box_pack_end(box, genlist); + evas_object_size_hint_min_set(box, 400 * elm_config_scale_get(), elm_genlist_items_count(genlist) * 114 * elm_config_scale_get()); + elm_object_content_set(popup, box); + + ugd->wifi_type_popup = popup; + + evas_object_show(genlist); + evas_object_show(popup); + evas_object_show(parent); + + PTS_TRACE_END; + return genlist; +} + +void pts_create_no_found_popup(Evas_Object *parent, pts_core_data_t *ugd, void *refresh_cb, void *cancel_cb) +{ + PTS_TRACE_BEGIN; + Evas_Object *popup; + Evas_Object *btn1; + + popup = elm_popup_add(parent); + //elm_object_style_set(popup,"menustyle"); + evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_object_text_set(popup, _("IDS_PRT_BODY_NO_PRINTERS_AVAILABLE")); +// evas_object_smart_callback_add(popup, "block,clicked", _block_clicked_cb, +// NULL); + btn1 = elm_button_add(popup); + //elm_object_style_set(btn1,"popup_button/default"); + elm_object_text_set(btn1, _("IDS_COM_SK_REFRESH")); + elm_object_part_content_set(popup, "button1", btn1); + evas_object_smart_callback_add(btn1, "clicked", refresh_cb, ugd); + btn1 = elm_button_add(popup); + //elm_object_style_set(btn1,"popup_button/default"); + elm_object_text_set(btn1, _("IDS_COM_SK_CANCEL")); + elm_object_part_content_set(popup, "button2", btn1); + evas_object_smart_callback_add(btn1, "clicked", cancel_cb, ugd); + + evas_object_show(popup); + evas_object_show(parent); + + ugd->no_found_popup = popup; + + PTS_TRACE_END; +} + +/* +* create the content of the list view +*/ +Evas_Object *pts_create_content_printer_list(Evas_Object *parent, pts_ug_list_data *ld, int *print_counter) +{ + PTS_TRACE_BEGIN; + PTS_RETV_IF(ld == NULL, NULL, "ld is NULL"); + + Evas_Object *genlist = NULL; + genlist = elm_genlist_add(parent); + + // ToDo: Make sure that printer_list_radio_main always is NULL at here.. + //if (!printer_list_radio_main) { + printer_list_radio_main = elm_radio_add(genlist); + elm_radio_state_value_set(printer_list_radio_main, 0); + elm_radio_value_set(printer_list_radio_main, 1); + //} + + list_itc.item_style = "2text.1icon.4"; // Left Icon, Right Main/Sub Text + list_itc.func.text_get = __pts_list_view_label_get; + list_itc.func.content_get = __pts_list_view_icon_get; + list_itc.func.state_get = NULL; + list_itc.func.del = NULL; + + refresh_itc.item_style = "1icon"; // Text Button + refresh_itc.func.text_get = NULL; + refresh_itc.func.content_get = __pts_refresh_icon_get; + refresh_itc.func.state_get = NULL; + refresh_itc.func.del = NULL; + + pt_printer_mgr_t *it = NULL; + Eina_List *cursor = NULL; + + // printer_list_radio_main is index zero. + // Thus radio index starts from 1. + int radio_index = 1; + radio_print_list_data_t *core = NULL; + + ld->ugd->select_printer = NULL; + + EINA_LIST_FOREACH(ld->printer_list, cursor, it) { + + if (radio_index == 1) { + // set the first printer as default one. + ld->ugd->select_printer = it; + } + PTS_DEBUG("printer %d\n", radio_index); + + core = (radio_print_list_data_t *)malloc(sizeof(radio_print_list_data_t)); + core->radio_index = radio_index; + core->pt = it; + core->radio_group = printer_list_radio_main; + core->ugd = ld->ugd; + elm_genlist_item_append( + genlist, + &list_itc, + (void *)core, + NULL, + ELM_GENLIST_ITEM_NONE, + __pts_search_print_list_sel, + ld); + radio_index ++; + } + + if (ld->ugd->print_search_mode != PTS_SEARCH_INITIAL) { + elm_genlist_item_append( + genlist, + &refresh_itc, + (void *)ld->ugd, + NULL, + ELM_GENLIST_ITEM_NONE, + NULL, + NULL); + } + + *print_counter = radio_index-1; + PTS_DEBUG("printer num = %d\n", *print_counter); + + evas_object_show(genlist); + PTS_TRACE_END; + return genlist; +} + +Evas_Object *pts_create_printer_list_popup(Evas_Object *parent, pts_ug_list_data *ld) +{ + PTS_TRACE_BEGIN; + Evas_Object *popup; + Evas_Object *genlist; + Evas_Object *btn1; + Evas_Object *btn2; + int printer_num = 0; + +// XXX +// Currently min_menustyle does not support "2text.1icon.4" genlist. +// When min_menustyle supports it, change this. +// To avoid this limitation, applied box object. + popup = elm_popup_add(parent); + //elm_object_style_set(popup,"menustyle"); + elm_object_style_set(popup,"min_menustyle"); + elm_object_part_text_set(popup, "title,text", _("IDS_PRT_BODY_SELECT_PRINTER")); + + evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + + btn1 = elm_button_add(popup); + elm_object_style_set(btn1,"popup_button/default"); + elm_object_text_set(btn1, _("IDS_COM_SK_OK")); + elm_object_part_content_set(popup, "button1", btn1); + evas_object_smart_callback_add(btn1, "clicked", _pts_printer_list_ok_cb, ld); + + btn2 = elm_button_add(popup); + elm_object_style_set(btn2,"popup_button/default"); + elm_object_text_set(btn2, _("IDS_COM_SK_CANCEL")); + elm_object_part_content_set(popup, "button2", btn2); + evas_object_smart_callback_add(btn2, "clicked", _pts_printer_list_cancel_cb, popup); + + genlist = pts_create_content_printer_list(parent, ld, &printer_num); + evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL); + + Evas_Object *box = elm_box_add(popup); + evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + +/* + * XXX - below 143 value is just for entry height of 2text.1icon.4 style in genlist + */ + elm_box_pack_end(box, genlist); + evas_object_size_hint_min_set(box, 400 * elm_config_scale_get(), elm_genlist_items_count(genlist) * 143 * elm_config_scale_get()); + elm_object_content_set(popup, box); + + ld->ugd->printer_list_popup = popup; + + evas_object_show(genlist); + evas_object_show(popup); + evas_object_show(parent); + + PTS_TRACE_END; + return genlist; +} + +#if 0 +Evas_Object *pts_create_printer_list_view(Evas_Object *parent, pts_ug_list_data *ld) +{ + pts_core_data_t *ugd = ld->ugd; + Evas_Object *back_btn = NULL; + Evas_Object *layout = NULL; + Evas_Object *genlist = NULL; + Elm_Object_Item *navi_item = NULL; + int printer_num = 0; + + layout = pts_utils_create_layout(ugd->navi); + evas_object_show(layout); + Evas_Object *conform = elm_object_part_content_get(layout, "elm.swallow.content"); + + genlist = pts_create_content_printer_list(conform, ld, &printer_num); + + elm_object_content_set(conform, genlist); + + back_btn = elm_button_add(ugd->navi); + elm_object_style_set(back_btn, "naviframe/end_btn/default"); + + evas_object_smart_callback_add(back_btn, "clicked", __pts_search_btn_back_cb, ugd); + navi_item = elm_naviframe_item_push(ugd->navi, _("IDS_PRT_BODY_SELECT_PRINTER"), back_btn, NULL, layout, NULL); + + return layout; + +} +#endif + +void pts_search_printer_select(pts_core_data_t *ugd, pts_ug_list_data *ld) +{ +// if (ugd->print_search_mode == PTS_SEARCH_INITIAL) + pts_create_printer_list_popup(ugd->print_search_popup_parent, ld); +// else +// pts_create_printer_list_view(ugd->print_search_popup_parent, ld); + + return; +} + +/* +* the response callback when search the printer +*/ +static void __pts_get_printer_cb(pt_response_data_t *cb) +{ + PTS_TRACE_BEGIN; + PTS_RET_IF(cb == NULL, "response data is NULL"); + + pts_ug_list_data *ld = cb->userdata; + PTS_RET_IF(ld == NULL, "ld is NULL"); + + pts_core_data_t *ugd = ld->ugd; + PTS_RET_IF(ugd == NULL, "ugd is NULL"); + + ld->printer_list = cb->printerlist; + ld->ugd->is_process = 0; /*process is complete*/ + + /* destroy popup progress bar */ + if (ld->popup != NULL) { + evas_object_del(ld->popup); + ld->popup = NULL; + } + + /* + * Not found any printer + */ + if (NULL == ld->printer_list) { + /* + * destroy popup progress bar + */ + + PTS_DEBUG("search printer failed"); + pts_create_no_found_popup(ugd->print_search_popup_parent, ld->ugd, _pts_refresh_cb, _pts_cancel_cb); + + PTS_IF_FREE_MEM(ld->ugd->active_printer); + PTS_IF_FREE_MEM(ld); + + return; + } + + int pt_count = 0; + /* get printer list count */ + pt_count = eina_list_count(ld->printer_list); + PTS_DEBUG("Printer count is %d", pt_count); + + if (pt_count > 0) { + pts_search_printer_select(ugd, ld); + } else { + // No Printer found. + // Control can't be reach here... + } + PTS_TRACE_END; +} + +/** + * This function let the app create the print searching popup + * @return void + * @param[in] ld the pointer to the ug list structure + */ +void pts_create_print_search_popup(Evas_Object *parent, pts_core_data_t *ugd) +{ + PTS_TRACE_BEGIN; + PTS_RET_IF(ugd == NULL, "ugd is NULL"); + + pts_ug_list_data *ld = NULL; + ld = (pts_ug_list_data *)calloc(1, sizeof(pts_ug_list_data)); + PTS_RET_IF(ld == NULL, "ld is NULL"); + memset(ld, 0, sizeof(pts_ug_list_data)); + ld->ugd = ugd; + + int ret = 0; + Evas_Object *layout = NULL; + Evas_Object *progressbar = NULL; + Evas_Object *btn = NULL; + + ld->popup = elm_popup_add(parent); + layout = pts_create_base_layout(ld->popup, "popup_search"); + ld->search_err_timer = NULL; + ld->ugd->is_process = 1; /* in process */ + + progressbar = elm_progressbar_add(ld->popup); + elm_object_style_set(progressbar, "list_process"); + elm_progressbar_horizontal_set(progressbar, EINA_TRUE); + evas_object_size_hint_align_set(progressbar, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_size_hint_weight_set(progressbar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_progressbar_pulse(progressbar, EINA_TRUE); + + evas_object_show(progressbar); + + elm_object_part_content_set(layout, "elm.swallow.content", progressbar); + elm_object_part_text_set(layout, "elm.text", _("IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING")); + + elm_object_content_set(ld->popup, layout); + btn = elm_button_add(ld->popup); + elm_object_text_set(btn, _("IDS_COM_SK_CANCEL")); + elm_object_part_content_set(ld->popup, "button1", btn); + evas_object_smart_callback_add(btn, "clicked", _pts_cancel_cb, ld->ugd); + + evas_object_show(layout); + evas_object_show(ld->popup); + evas_object_show(ld->ugd->root_win); + + ret = pt_get_printers(__pts_get_printer_cb, ld); + if (PT_ERR_NONE != ret) { + ld->search_err_timer = ecore_timer_add(2.0, (Ecore_Task_Cb)__pts_list_view_popup_error, (void *)ld); + } + + PTS_TRACE_END; +} + +/* +* start to search printer +*/ +//void pts_main_view_search_printer(pts_ug_main_data *ugd, pts_print_search_mode_t search_mode) +void pts_search_printer(pts_core_data_t *ugd, Evas_Object *parent, pts_printer_search_state_e search_mode, pts_printer_selection_done_cb cb, void *userdata) +{ + PTS_TRACE_BEGIN; + PTS_RET_IF(ugd == NULL, "ugd is NULL"); + + ugd->print_search_mode = search_mode; + ugd->selection_done_cb = cb; + ugd->print_search_popup_parent = parent; + ugd->printer_search_user_data = userdata; + + int ret = 0; + int net_type = 0; + ret = pt_get_connection_status(&net_type); + PTS_DEBUG("RET is %d", ret); + + if (ret == PT_ERR_NONE) { + if (net_type ==0) { + pts_search_create_wifi_type_selector_popup(ugd->print_search_popup_parent, ugd); + return; + } else { + pts_create_print_search_popup(ugd->print_search_popup_parent, ugd); + } + } else { + //ToDo: display error popup + //Vconf access error. + ; + } + + //pts_main_view_rotate_image(ugd, app_get_device_orientation()); + PTS_TRACE_END; +} diff --git a/mobileprint/app/pts_setting_view.c b/mobileprint/app/pts_setting_view.c new file mode 100644 index 0000000..daef902 --- /dev/null +++ b/mobileprint/app/pts_setting_view.c @@ -0,0 +1,1133 @@ +/* +* Mobileprint +* +* Copyright 2012 Samsung Electronics Co., Ltd + +* Licensed under the Flora License, Version 1.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://floralicense.org/license/ + +* 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. +* +*/ + +#define _GNU_SOURCE +#include +#include +#include "pt_api.h" +#include "mobileprint.h" +#include "pts_common.h" +#include "pts_main_view.h" +#include "pts_setting_view.h" + +static Elm_Genlist_Item_Class itc_normal_options; +static Elm_Genlist_Item_Class itc_tree_options; +static Elm_Genlist_Item_Class itc_printer; +static Elm_Genlist_Item_Class itc_separator; + +static Elm_Genlist_Item_Class itc_paper_size; +static Elm_Genlist_Item_Class itc_paper_quality; +static Elm_Genlist_Item_Class itc_paper_type; +static Elm_Genlist_Item_Class itc_grayscale; +static Elm_Genlist_Item_Class itc_page_range; + +static Evas_Coord touch_x; +static Evas_Coord touch_y; +static Evas_Object *copies_popup = NULL; + +static void __pts_setting_view_leave_view(pts_core_data_t *ugd) +{ + if (ugd->radio_group_paper_size != NULL) { + evas_object_del(ugd->radio_group_paper_size); + ugd->radio_group_paper_size = NULL; + } + if (ugd->radio_group_paper_quality != NULL) { + evas_object_del(ugd->radio_group_paper_quality); + ugd->radio_group_paper_quality = NULL; + } + if (ugd->radio_group_paper_type != NULL) { + evas_object_del(ugd->radio_group_paper_type); + ugd->radio_group_paper_type = NULL; + } + if (ugd->radio_group_page_range != NULL) { + evas_object_del(ugd->radio_group_page_range); + ugd->radio_group_page_range = NULL; + } + if (ugd->radio_group_grayscale != NULL) { + evas_object_del(ugd->radio_group_grayscale); + ugd->radio_group_grayscale = NULL; + } + + elm_naviframe_item_pop_to(ugd->navi_it); +} + +/* +* the response callback when click back button +*/ +static void __pts_setting_view_btn_back_cb(void *data, Evas_Object *obj, void *event_info) +{ + PTS_TRACE_BEGIN; + + pts_core_data_t *ugd = (pts_core_data_t *)data; + + PTS_RET_IF(ugd == NULL, "ugd is NULL"); + + __pts_setting_view_leave_view(ugd); + + if (ugd->active_printer == NULL) { + PTS_DEBUG("No active printer. So just exit mobileprint"); + pt_deinit(); + elm_exit(); + PTS_TRACE_END; + return; + } + + pts_main_view_update_printer_label(ugd); + pts_main_view_rotate_image(ugd, app_get_device_orientation()); + PTS_TRACE_END; +} + +static void _back_cb(void *data, Evas_Object *obj, void *event_info) +{ + ecore_event_handler_del(data); +} + +static void _dismissed_cb(void *data, Evas_Object *obj, void *event_info) +{ + if (copies_popup!=NULL) { + evas_object_del(copies_popup); + } + copies_popup = NULL; +} + +static void _copies_picker_cb(void *data, Evas_Object *obj, void *event_info) +{ + PTS_TRACE_BEGIN; + int copies = 1; + pts_core_data_t *ugd = (pts_core_data_t *)data; + Elm_Object_Item *item = event_info; + + const char *label = elm_object_item_text_get(item); + + PTS_RET_IF(label == NULL, "label is NULL"); + + copies = atoi(label); + if (copies == ugd->active_printer->copies) { + PTS_DEBUG("Not changed\n"); + PTS_TRACE_END; + return; + } else { + PTS_DEBUG("text(%s) is clicked!\n", label); + ugd->active_printer->copies = copies; + elm_genlist_item_selected_set(ugd->item_paper_copies, EINA_FALSE); + elm_genlist_item_update(ugd->item_paper_copies); + + if (copies_popup) { + evas_object_del(copies_popup); + copies_popup = NULL; + } + } + PTS_TRACE_END; +} + +static void _move_copies_popup(Evas_Object *copies_popup, Evas_Object *win) +{ + Evas_Coord w, h; + Evas_Coord x, y; + + evas_object_geometry_get(win, &x, &y, &w, &h); + evas_object_move(copies_popup, x+(w*0.06), touch_y); +} + +static Eina_Bool _mousedown_cb(void *data, int type, void *event) +{ + Ecore_Event_Mouse_Button *ev = event; + touch_x = ev->x; + touch_y = ev->y; + return ECORE_CALLBACK_CANCEL; +} + +static void __on_show(void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + PTS_DEBUG("copies popup show\n"); +} + +static void __on_hide(void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + PTS_DEBUG("copies popup hide\n"); +} + +/** + * Copies picker create + */ +static void _create_copies_popup_timepicker(void *data, Evas_Object *obj, void *event_info) +{ + PTS_TRACE_BEGIN; + + int idx; + Evas_Object *diskselector; + Evas_Coord w; + char buffer[4]; + char current_selection[4]; + + pts_core_data_t *ugd = (pts_core_data_t *)data; + elm_genlist_item_selected_set(ugd->item_paper_copies, EINA_TRUE); + + Elm_Object_Item *item = (Elm_Object_Item *)event_info; + if (event_info) { + elm_genlist_item_selected_set(event_info, EINA_FALSE); + } + + if (copies_popup) { + evas_object_del(copies_popup); + copies_popup = NULL; + } + + evas_object_geometry_get(ugd->root_win, NULL, NULL, &w, NULL); + copies_popup = elm_ctxpopup_add(ugd->navi); + //elm_object_style_set(copies_popup, "timepicker"); + elm_object_style_set(copies_popup, "datetime/default"); + evas_object_size_hint_min_set(copies_popup, w, -1); + evas_object_size_hint_weight_set(copies_popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_smart_callback_add(copies_popup, "dismissed", _dismissed_cb, copies_popup); + evas_object_event_callback_add(copies_popup, EVAS_CALLBACK_SHOW, __on_show, ugd); + evas_object_event_callback_add(copies_popup, EVAS_CALLBACK_HIDE, __on_hide, ugd); + + diskselector = elm_diskselector_add(ugd->navi); + elm_diskselector_display_item_num_set(diskselector, 8); + //elm_object_style_set(diskselector, "timepicker"); + elm_object_style_set(diskselector, "datetime/default"); + + snprintf(current_selection, 4, "%d", ugd->active_printer->copies); + + for (idx = 1; idx < COPIES_MAX+1; idx++) { + snprintf(buffer, 4, "%d", idx); + + if (strcmp(current_selection, buffer) == 0) { + item = elm_diskselector_item_append(diskselector, buffer, NULL, _copies_picker_cb, ugd); + } else { + elm_diskselector_item_append(diskselector, buffer, NULL, _copies_picker_cb, ugd); + } + } + + if (item != NULL) { + elm_diskselector_item_selected_set(item, EINA_TRUE); + } + + elm_diskselector_round_enabled_set(diskselector, EINA_TRUE); + evas_object_size_hint_weight_set(diskselector, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(diskselector, EVAS_HINT_FILL, EVAS_HINT_FILL); + + evas_object_show(diskselector); + elm_object_content_set(copies_popup, diskselector); + + elm_ctxpopup_direction_priority_set(copies_popup, ELM_CTXPOPUP_DIRECTION_DOWN, + ELM_CTXPOPUP_DIRECTION_UP, + ELM_CTXPOPUP_DIRECTION_LEFT, + ELM_CTXPOPUP_DIRECTION_RIGHT); + + _move_copies_popup(copies_popup, ugd->root_win); + evas_object_show(copies_popup); + + PTS_TRACE_END; +} + +/** +* Callback for expandable genlist selection +*/ +static void __pts_setting_view_gl_sel(void *data, Evas_Object *obj, void *event_info) +{ + PTS_TRACE_BEGIN; + + Elm_Object_Item *item = (Elm_Object_Item *)event_info; + Eina_Bool expand_state = EINA_FALSE; + if (event_info) { + elm_genlist_item_selected_set(event_info, EINA_FALSE); + } + + expand_state = elm_genlist_item_expanded_get(item); + elm_genlist_item_expanded_set(item, !expand_state); + PTS_DEBUG("expanded : %d", expand_state); + + PTS_TRACE_END; +} + +void pts_setting_view_printer_select_done_cb(void *userdata) +{ + PTS_TRACE_BEGIN; + struct appdata *ad = pts_get_appdata(); + pts_core_data_t *ugd = ad->ugd; + + Elm_Object_Item *item = (Elm_Object_Item *)userdata; + elm_genlist_item_update(item); + + if (ugd->active_printer) { + pts_create_setting_view(ugd); + } + + PTS_TRACE_END; + return; +} + +/** +* Callback for expandable genlist selection +*/ +static void __pts_setting_view_printer_sel(void *data, Evas_Object *obj, void *event_info) +{ + PTS_TRACE_BEGIN; + +// Elm_Object_Item *item = (Elm_Object_Item *)event_info; +// Eina_Bool expand_state = EINA_FALSE; + pts_core_data_t *ugd = (pts_core_data_t *)data; + if (event_info) { + elm_genlist_item_selected_set(event_info, EINA_FALSE); + } + + // Launch Print searching module + pts_search_printer(ugd, ugd->navi, PTS_SEARCH_IN_SETTING, pts_setting_view_printer_select_done_cb, (void *)event_info); + + PTS_TRACE_END; +} + +/** +* Callback for expandable genlist contract +*/ +static void __pts_setting_view_gl_con(void *data, Evas_Object *obj, void *event_info) +{ + Elm_Object_Item *item = event_info; + elm_genlist_item_subitems_clear(item); +} + +/* +* get the label of the printer information +*/ +static char *__pts_setting_view_printer_label_get(void *data, Evas_Object *obj, const char *part) +{ + PTS_TRACE_BEGIN; + //pt_printer_mgr_t *printer = (pt_printer_mgr_t *) data; + struct appdata *ad = pts_get_appdata(); + pts_core_data_t *ugd = ad->ugd; + if (strcmp(part, "elm.text.1") == 0) { + //if (printer != NULL) { + //return strdup(printer->name); + return strdup(_("IDS_PRT_BODY_PRINTER")); + //} + } else if (strcmp(part, "elm.text.2") == 0) { + //if (printer != NULL) { + if (ugd->active_printer != NULL) { + char *printer_label = strdup(ugd->active_printer->name); + pts_unstandardization(printer_label); + //return strdup(printer->address); + return printer_label; + } else { + return strdup(PTS_18); + } + } + PTS_TRACE_END; + return NULL; +} + +/* +* get the label of the option setting +*/ +#define MAX_TMP_BUF 64 +static char *__pts_setting_view_option_label_get(void *data, Evas_Object *obj, const char *part) +{ + PTS_TRACE_BEGIN; + struct appdata *ad = pts_get_appdata(); + pts_core_data_t *ugd = ad->ugd; + pt_printer_mgr_t *active_printer = ugd->active_printer; + pt_print_option_e option_type = (pt_print_option_e)data; + + char buf[MAX_TMP_BUF]; + + if (strcmp(part, "elm.text.1") == 0) { + switch (option_type) { + case PT_OPTION_ID_COPIES: + return strdup(_("IDS_PRT_BODY_NUMBEROFCOPIES")); + case PT_OPTION_ID_PAPERSIZE: + return strdup(_("IDS_PRT_BODY_PAPERSIZE")); + case PT_OPTION_ID_RANGE: + return strdup(_("IDS_PRT_BODY_PRINT_RANGE_ABB")); + case PT_OPTION_ID_GRAYSCALE: + return strdup(_("IDS_PRT_BODY_COLOUR")); + case PT_OPTION_ID_QUALITY: + return strdup(_("IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY")); + case PT_OPTION_ID_PAPER: + return strdup(_("IDS_IMGE_BUTTON_PAPER_M_STICKER")); + default: + return strdup(PTS_17); + } + } else if (strcmp(part, "elm.text.2") == 0) { + + switch (option_type) { + case PT_OPTION_ID_COPIES: { + snprintf(buf, MAX_TMP_BUF, "%d", active_printer->copies); + PTS_DEBUG("Selected copies[%d, %s]",active_printer->copies, buf); + } + break; + case PT_OPTION_ID_PAPERSIZE: { + active_printer->size = pt_get_selected(PT_OPTION_ID_PAPERSIZE); + strncpy(buf, pt_get_print_option_papersize(active_printer->size), MAX_TMP_BUF-1); + PTS_DEBUG("Selected paper size[%d, %s]", active_printer->size, buf); + } + break; + case PT_OPTION_ID_RANGE: { + pt_range_e p_range = active_printer->range; + if (PT_RANGE_ALL == p_range) { + strcpy(buf, _("IDS_DIC_BODY_ALL")); + } else { + strcpy(buf, _("IDS_BR_BODY_CURRENT_PAGE")); + } + PTS_DEBUG("Selected range[%d, %s]", p_range, buf); + } + break; + case PT_OPTION_ID_GRAYSCALE: { + int p_grayscale = pt_get_selected(PT_OPTION_ID_GRAYSCALE); + + if (PT_GRAYSCALE_COLOUR == p_grayscale) { + strcpy(buf, _("IDS_PRT_BODY_COLOUR")); + } else if (PT_GRAYSCALE_GRAYSCALE == p_grayscale) { + strcpy(buf, _("IDS_IMGE_HEADER_GREY")); + } /* else if (PT_GRAYSCALE_BLACKNWHITE == *p_value) { +strcpy(buf, _("IDS_BR_OPT_BLACKNWHITE")); +} */ + + PTS_DEBUG("Selected color [%d, %s]", p_grayscale, buf); + } + break; + case PT_OPTION_ID_QUALITY: { + int p_quality = pt_get_selected(PT_OPTION_ID_QUALITY); + if (PT_QUALITY_DRAFT == p_quality) { + strcpy(buf, _("IDS_PRT_OPT_PRINTSETTINGS_DRAFT")); + } else if (PT_QUALITY_STANDARD == p_quality) { + strcpy(buf, _("IDS_PRT_OPT_PRINTSETTINGS_STANDARD")); + } else if (PT_QUALITY_HIGH == p_quality) { + strcpy(buf, _("IDS_COM_BODY_HIGH")); + } + PTS_DEBUG("Selected quality [%d, %s]", p_quality, buf); + } + break; + case PT_OPTION_ID_PAPER: { + int p_type = pt_get_selected(PT_OPTION_ID_PAPER); + if (PT_PAPER_NORMAL == p_type) { + strcpy(buf, _("IDS_ST_BODY_NORMAL")); + } else if (PT_PAPER_GLOSSY == p_type) { + strcpy(buf, _("IDS_ST_BODY_GLOSSY")); + } else if (PT_PAPER_PHOTO == p_type) { + strcpy(buf, _("IDS_PRT_BODY_PHOTOGRAPHIC_ABB")); + } + PTS_DEBUG("Selected paper type [%d, %s]", p_type, buf); + } + break; + + default: { + return strdup(PTS_17); + } + } + + return strdup(buf); + } + PTS_TRACE_END; + return NULL; +} + + + +static Evas_Object * +__pts_setting_view_gl_content_get(void *data, Evas_Object *obj, const char *part) +{ + PTS_TRACE_BEGIN; + pts_appdata_t *ad = pts_get_appdata(); + pts_core_data_t *ugd = ad->ugd; + Evas_Object *radio_button = NULL; + Item_data *core = (Item_data *)data; + int selected = 0; + + if (!strcmp(part, "elm.icon")) { + switch (core->option) { + case PT_OPTION_ID_PAPERSIZE: + selected = pt_get_selected(PT_OPTION_ID_PAPERSIZE); + break; + case PT_OPTION_ID_RANGE: + selected = ugd->active_printer->range; + break; + case PT_OPTION_ID_QUALITY: + selected = pt_get_selected(PT_OPTION_ID_QUALITY); + break; + case PT_OPTION_ID_PAPER: + selected = pt_get_selected(PT_OPTION_ID_PAPER); + break; + case PT_OPTION_ID_GRAYSCALE: + selected = pt_get_selected(PT_OPTION_ID_GRAYSCALE); + break; + /* case PT_OPTION_ID_COPIES: */ + default: + break; + } + + PTS_DEBUG("Create Radio button[%d] (%d,%d) , r_group= [0x%x] selected: %d", + core->radio_index, core->option, core->sub_item, core->radio_group, selected); + + radio_button = elm_radio_add(obj); + core->radio_btn = radio_button; + evas_object_propagate_events_set(radio_button, EINA_TRUE); + elm_radio_state_value_set(radio_button, core->radio_index); + elm_radio_group_add(radio_button, core->radio_group); + elm_radio_value_set(core->radio_group, selected); + evas_object_show(radio_button); + evas_object_size_hint_weight_set(radio_button, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(radio_button, EVAS_HINT_FILL, EVAS_HINT_FILL); + + PTS_TRACE_END; + return radio_button ; + } + + PTS_TRACE_END; + return NULL; +} + + +static void +__pts_setting_view_gl_state_item_delete(void *data, Evas_Object *obj) +{ + PTS_TRACE_BEGIN; + PTS_RET_IF(data == NULL, "data is NULL"); + Item_data *core = (Item_data *)data; + pts_core_data_t *ugd = core->ugd; + PTS_RET_IF(ugd == NULL, "ugd is NULL"); + + switch (core->option) { + case PT_OPTION_ID_QUALITY: + ugd->quality[core->sub_item] = NULL; + break; + case PT_OPTION_ID_PAPER: + ugd->paper_type[core->sub_item] = NULL; + break; + case PT_OPTION_ID_GRAYSCALE: + ugd->color[core->sub_item] = NULL; + break; + case PT_OPTION_ID_PAPERSIZE: + ugd->paper_size[core->sub_item] = NULL; + break; + default: + break; + } + PTS_DEBUG("Free core memory"); + PTS_IF_FREE_MEM(core); + + return; +} + +/* +* get the papersize value of the key +*/ +static char *__pts_setting_view_papersize_key_label_get(void *data, Evas_Object *obj, const char *part) +{ + PTS_TRACE_BEGIN; + Item_data *core = (Item_data *)data; + pt_paper_size_e p_size = (pt_paper_size_e)core->sub_item; + + if (p_size < (pt_paper_size_e)0 || p_size >= pt_get_print_option_papersize_num()) { + PTS_DEBUG("wrong paper size: %d", p_size); + return NULL; + } + PTS_TRACE_END; + return strdup(pt_get_print_option_papersize(p_size)); +} + +/* +* get the grayscale value of the key +*/ +static char *__pts_setting_view_grayscale_key_label_get(void *data, Evas_Object *obj, const char *part) +{ + PTS_TRACE_BEGIN; + Item_data *core = (Item_data *)data; + pt_grayscale_e p_grayscale = (pt_grayscale_e)core->sub_item; + char *ret = NULL; + + //PTS_RETV_IF(p_grayscale < 0 ||p_grayscale >= PT_GRAYSCALE_ANY, NULL, "wrong gray scale: %d", p_grayscale); + + if (strcmp(part, "elm.text") == 0) { + switch (p_grayscale) { + case PT_GRAYSCALE_COLOUR: + ret = strdup(_("IDS_PRT_BODY_COLOUR")); + break; + case PT_GRAYSCALE_GRAYSCALE: + ret = strdup(_("IDS_IMGE_HEADER_GREY")); + break; + default: + ret = NULL; + } + } + PTS_TRACE_END; + return ret; +} + +/* +* get the quality value of the key +*/ +static char *__pts_setting_view_quality_key_label_get(void *data, Evas_Object *obj, const char *part) +{ + PTS_TRACE_BEGIN; + Item_data *core = (Item_data *)data; + pt_quality_e p_quality = (pt_quality_e)core->sub_item; + char *ret = NULL; + + //PTS_RETV_IF(p_quality < 0 || p_quality >= PT_QUALITY_ANY, NULL, "wrong paper quality: %d", p_quality); + + if (strcmp(part, "elm.text") == 0) { + switch (p_quality) { + case 0: + ret = strdup(_("IDS_PRT_OPT_PRINTSETTINGS_DRAFT")); + break; + case 1: + ret = strdup(_("IDS_PRT_OPT_PRINTSETTINGS_STANDARD")); + break; + case 2: + ret = strdup(_("IDS_COM_BODY_HIGH")); + break; + default: + ret = NULL; + } + } + PTS_TRACE_END; + return ret; +} + +/** +* get the paper type value of the key +*/ +static char *__pts_setting_view_paper_key_label_get(void *data, Evas_Object *obj, const char *part) +{ + PTS_TRACE_BEGIN; + Item_data *core = (Item_data *)data; + pt_papertype_e p_type = (pt_papertype_e) core->sub_item; + char *ret = NULL; + + //PTS_RETV_IF(p_type < 0 || p_type >= PT_PAPER_ANY, NULL, "wrong paper type: %d", p_type); + + if (strcmp(part, "elm.text") == 0) { + switch (p_type) { + case 0: + ret = strdup(_("IDS_ST_BODY_NORMAL")); + break; + case 1: + ret = strdup(_("IDS_ST_BODY_GLOSSY")); + break; + case 2: + ret = strdup(_("IDS_PRT_BODY_PHOTOGRAPHIC_ABB")); + break; + default: + ret = NULL; + } + } + PTS_TRACE_END; + return ret; +} + +/* +* get the range label of the key +*/ +static char *__pts_setting_view_range_key_label_get(void *data, Evas_Object *obj, const char *part) +{ + PTS_TRACE_BEGIN; + Item_data *core = (Item_data *)data; + pt_range_e p_range = (pt_range_e)core->sub_item; + char *ret = NULL; + + //PTS_RETV_IF(p_range < PT_RANGE_ALL || p_range > PT_RANGE_CURRENT, NULL, "wrong paper range: %d", p_range); + + switch (p_range) { + case PT_RANGE_ALL: + ret = strdup(_("IDS_DIC_BODY_ALL")); + break; + case PT_RANGE_CURRENT: + ret = strdup(_("IDS_BR_BODY_CURRENT_PAGE")); + break; + default: + ret = NULL; + } + + PTS_TRACE_END; + return ret; +} + + +static void __pts_setting_view_enable_disable(pts_core_data_t *ugd) +{ + int i; + for (i=0; iquality[i]) { + if (pt_is_enabled(PT_OPTION_ID_QUALITY, i)) { + elm_object_item_disabled_set(ugd->quality[i], EINA_FALSE); + } else { + elm_object_item_disabled_set(ugd->quality[i], EINA_TRUE); + } + } + } + for (i=0; ipaper_type[i]) { + if (pt_is_enabled(PT_OPTION_ID_PAPER, i)) { + elm_object_item_disabled_set(ugd->paper_type[i], EINA_FALSE); + } else { + elm_object_item_disabled_set(ugd->paper_type[i], EINA_TRUE); + } + } + } + for (i=0; icolor[i]) { + if (pt_is_enabled(PT_OPTION_ID_GRAYSCALE, i)) { + elm_object_item_disabled_set(ugd->color[i], EINA_FALSE); + } else { + elm_object_item_disabled_set(ugd->color[i], EINA_TRUE); + } + } + } + for (i=0; ipaper_size[i]) { + if (pt_is_enabled(PT_OPTION_ID_PAPERSIZE, i)) { + elm_object_item_disabled_set(ugd->paper_size[i], EINA_FALSE); + } else { + elm_object_item_disabled_set(ugd->paper_size[i], EINA_TRUE); + } + } + } +} + +/** +* Select the option from list +*/ +static void __pts_setting_view_key_value_sel(void *user_data, Evas_Object *obj, void *event_info) +{ + PTS_TRACE_BEGIN; + + Item_data *core = (Item_data *) user_data; + struct appdata *ad = pts_get_appdata(); + pts_core_data_t *ugd = ad->ugd; + Elm_Object_Item *item = (Elm_Object_Item *)event_info; + Elm_Object_Item *parent_item = NULL; + + elm_genlist_item_selected_set(item, EINA_FALSE); + + if (NULL != core && NULL != core->item) { + + switch (core->option) { + case PT_OPTION_ID_PAPERSIZE: + ugd->active_printer->size = core->sub_item; + parent_item = ugd->item_paper_size; + pt_set_choice(PT_OPTION_ID_PAPERSIZE, core->sub_item); + PTS_DEBUG("Paper size select: %d", ugd->active_printer->size); + break; + case PT_OPTION_ID_COPIES: + ugd->active_printer->copies = core->sub_item; + parent_item = ugd->item_paper_copies; + PTS_DEBUG("Print copy select: %d", ugd->active_printer->copies); + break; + case PT_OPTION_ID_RANGE: + ugd->active_printer->range = core->sub_item; + parent_item = ugd->item_page_range; + PTS_DEBUG("Print range select: %d", ugd->active_printer->range); + break; + case PT_OPTION_ID_QUALITY: + pt_set_choice(PT_OPTION_ID_QUALITY, core->sub_item); + parent_item = ugd->item_paper_quality; + PTS_DEBUG("Print quality select: %d", pt_get_selected(PT_OPTION_ID_QUALITY)); + break; + case PT_OPTION_ID_PAPER: + pt_set_choice(PT_OPTION_ID_PAPER, core->sub_item); + parent_item = ugd->item_paper_type; + PTS_DEBUG("Paper type select: %d", pt_get_selected(PT_OPTION_ID_PAPER)); + break; + case PT_OPTION_ID_GRAYSCALE: + pt_set_choice(PT_OPTION_ID_GRAYSCALE, core->sub_item); + parent_item = ugd->item_grayscale; + PTS_DEBUG("Print color select: %d", pt_get_selected(PT_OPTION_ID_GRAYSCALE)); + break; + default: + PTS_DEBUG("Unknown option: %d", core->option); + parent_item = NULL; + break; + } + + elm_radio_value_set(core->radio_group, core->radio_index); + __pts_setting_view_enable_disable(ugd); + elm_genlist_realized_items_update(obj); + + PTS_DEBUG("Update radio group: r_group=[0x%x <-- %d]", core->radio_group, core->radio_index); + + } else { + PTS_DEBUG("data or data->item are NULL"); + } + + PTS_TRACE_END; +} + +static Item_data *__pts_setting_view_add_genlist_item( + Evas_Object *genlist, + Elm_Object_Item *parent, + pt_print_option_e option, + int sub_item, + int *radio_btn_index, + Evas_Object *radio_group, + pts_core_data_t *ugd) +{ + PTS_TRACE_BEGIN; + PTS_RETV_IF(genlist == NULL, NULL, "genlist is NULL"); + + Elm_Genlist_Item_Class *itc = NULL; + + if (PT_OPTION_ID_PAPERSIZE == option) { + itc_paper_size.item_style = "dialogue/1text.1icon/expandable2"; + itc_paper_size.func.text_get = __pts_setting_view_papersize_key_label_get; + itc_paper_size.func.content_get = __pts_setting_view_gl_content_get; + itc_paper_size.func.state_get = NULL; //__pts_setting_view_gl_state_get; + itc_paper_size.func.del = __pts_setting_view_gl_state_item_delete; + itc = &itc_paper_size; + } else if (PT_OPTION_ID_GRAYSCALE == option) { + itc_grayscale.item_style = "dialogue/1text.1icon/expandable2"; + itc_grayscale.func.text_get = __pts_setting_view_grayscale_key_label_get; + itc_grayscale.func.content_get = __pts_setting_view_gl_content_get; + itc_grayscale.func.state_get = NULL; //__pts_setting_view_gl_state_get; + itc_grayscale.func.del = __pts_setting_view_gl_state_item_delete; + itc = &itc_grayscale; + } else if (PT_OPTION_ID_QUALITY == option) { + itc_paper_quality.item_style = "dialogue/1text.1icon/expandable2"; + itc_paper_quality.func.text_get = __pts_setting_view_quality_key_label_get; + itc_paper_quality.func.content_get = __pts_setting_view_gl_content_get; + itc_paper_quality.func.state_get = NULL; //__pts_setting_view_gl_state_get; + itc_paper_quality.func.del = __pts_setting_view_gl_state_item_delete; + itc = &itc_paper_quality; + } else if (PT_OPTION_ID_PAPER == option) { + itc_paper_type.item_style = "dialogue/1text.1icon/expandable2"; + itc_paper_type.func.text_get = __pts_setting_view_paper_key_label_get; + itc_paper_type.func.content_get = __pts_setting_view_gl_content_get; + itc_paper_type.func.state_get = NULL; //__pts_setting_view_gl_state_get; + itc_paper_type.func.del = __pts_setting_view_gl_state_item_delete; + itc = &itc_paper_type; + } else if (PT_OPTION_ID_RANGE == option) { + itc_page_range.item_style = "dialogue/1text.1icon/expandable2"; + itc_page_range.func.text_get = __pts_setting_view_range_key_label_get; + itc_page_range.func.content_get = __pts_setting_view_gl_content_get; + itc_page_range.func.state_get = NULL; //__pts_setting_view_gl_state_get; + itc_page_range.func.del = __pts_setting_view_gl_state_item_delete; + itc = &itc_page_range; + } + //else if (MOBILEPRINT_OPTION_ID_COPIES == option) { + else { + PTS_DEBUG("Unknown option: %d", option); + PTS_TRACE_END; + return NULL; + } + + evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL); + + Item_data *core = calloc(1, sizeof(Item_data)); + core->ugd = ugd; + core->option = option; + core->sub_item = sub_item; + core->radio_index = *radio_btn_index; + core->radio_group = radio_group; + + core->item = elm_genlist_item_append( + genlist, + itc, + (void *)core, + parent, + ELM_GENLIST_ITEM_NONE, + __pts_setting_view_key_value_sel, + core); + + if (!pt_is_enabled(option, sub_item)) { + elm_object_item_disabled_set(core->item, EINA_TRUE); + } + + ++(*radio_btn_index); + + PTS_TRACE_END; + return core; +} + + +static Evas_Object *__pts_create_radio_group(Evas_Object *genlist) +{ + Evas_Object *radio = elm_radio_add(genlist); + elm_radio_state_value_set(radio, 0); + elm_radio_value_set(radio, 0); + + return radio; +} + +/** +* Callback for expandable genlist expand +*/ +static void __pts_setting_view_gl_exp(void *data, Evas_Object *obj, void *event_info) +{ + PTS_TRACE_BEGIN; + Elm_Object_Item *item = (Elm_Object_Item *)event_info; + Evas_Object *genlist = elm_object_item_widget_get(item); + pts_core_data_t *ugd = (pts_core_data_t *)data; + int radio_index = 0; + int i = 0; + + elm_genlist_item_selected_set(item, EINA_FALSE); + + if (ugd->radio_group_paper_size == NULL) { + ugd->radio_group_paper_size = __pts_create_radio_group(genlist); + } + if (ugd->radio_group_paper_quality == NULL) { + ugd->radio_group_paper_quality = __pts_create_radio_group(genlist); + } + if (ugd->radio_group_paper_type == NULL) { + ugd->radio_group_paper_type = __pts_create_radio_group(genlist); + } + if (ugd->radio_group_page_range == NULL) { + ugd->radio_group_page_range = __pts_create_radio_group(genlist); + } + if (ugd->radio_group_grayscale == NULL) { + ugd->radio_group_grayscale = __pts_create_radio_group(genlist); + } + + if (item == ugd->item_paper_size) { + radio_index = 0; + Item_data *i_d; + for (i = 0; i < pt_get_print_option_papersize_num(); i++) { + i_d = __pts_setting_view_add_genlist_item(genlist, item, PT_OPTION_ID_PAPERSIZE, i, &radio_index, ugd->radio_group_paper_size, ugd); + if (i_d != NULL) { + ugd->paper_size[i] = i_d->item; + } + } + } else if (item == ugd->item_paper_quality) { + radio_index = 0; + ugd->quality[PT_QUALITY_DRAFT] = __pts_setting_view_add_genlist_item(genlist, item, PT_OPTION_ID_QUALITY, PT_QUALITY_DRAFT, &radio_index, ugd->radio_group_paper_quality, ugd)->item; + ugd->quality[PT_QUALITY_STANDARD] = __pts_setting_view_add_genlist_item(genlist, item, PT_OPTION_ID_QUALITY, PT_QUALITY_STANDARD, &radio_index, ugd->radio_group_paper_quality, ugd)->item; + ugd->quality[PT_QUALITY_HIGH] = __pts_setting_view_add_genlist_item(genlist, item, PT_OPTION_ID_QUALITY, PT_QUALITY_HIGH, &radio_index, ugd->radio_group_paper_quality, ugd)->item; + } else if (item == ugd->item_paper_type) { + radio_index = 0; + ugd->paper_type[PT_PAPER_NORMAL] = __pts_setting_view_add_genlist_item(genlist, item, PT_OPTION_ID_PAPER, PT_PAPER_NORMAL, &radio_index, ugd->radio_group_paper_type, ugd)->item; + ugd->paper_type[PT_PAPER_GLOSSY] = __pts_setting_view_add_genlist_item(genlist, item, PT_OPTION_ID_PAPER, PT_PAPER_GLOSSY, &radio_index, ugd->radio_group_paper_type, ugd)->item; + ugd->paper_type[PT_PAPER_PHOTO] = __pts_setting_view_add_genlist_item(genlist, item, PT_OPTION_ID_PAPER, PT_PAPER_PHOTO, &radio_index, ugd->radio_group_paper_type, ugd)->item; + } else if (item == ugd->item_page_range) { + radio_index = 0; + __pts_setting_view_add_genlist_item(genlist, item, PT_OPTION_ID_RANGE, PT_RANGE_ALL, &radio_index, ugd->radio_group_page_range, ugd); + __pts_setting_view_add_genlist_item(genlist, item, PT_OPTION_ID_RANGE, PT_RANGE_CURRENT, &radio_index, ugd->radio_group_page_range, ugd); + } else if (item == ugd->item_grayscale) { + radio_index = 0; + ugd->color[PT_GRAYSCALE_GRAYSCALE] = __pts_setting_view_add_genlist_item(genlist, item, PT_OPTION_ID_GRAYSCALE, PT_GRAYSCALE_GRAYSCALE, &radio_index, ugd->radio_group_grayscale, ugd)->item; + ugd->color[PT_GRAYSCALE_COLOUR] = __pts_setting_view_add_genlist_item(genlist, item, PT_OPTION_ID_GRAYSCALE, PT_GRAYSCALE_COLOUR, &radio_index, ugd->radio_group_grayscale, ugd)->item; + } else { + PTS_DEBUG("Unknown item"); + } + + PTS_TRACE_END; +} + + + +/* +* create the content of setting view +*/ +static Evas_Object *__pts_setting_view_create_content(Evas_Object *parent, pts_core_data_t *ugd) +{ + PTS_TRACE_BEGIN; + PTS_RETV_IF(ugd == NULL, NULL, "ugd is NULL"); + PTS_RETV_IF(parent == NULL, NULL, "parent is NULL"); + + Evas_Object *genlist = NULL; + Elm_Object_Item *separator_item; + + //itc_separator.item_style = "dialogue/separator/21/with_line"; + itc_separator.item_style = "dialogue/separator"; + itc_separator.func.text_get = NULL; + itc_separator.func.content_get = NULL; + itc_separator.func.state_get = NULL; + itc_separator.func.del = NULL; + + itc_printer.item_style = "dialogue/2text"; + itc_printer.func.text_get = __pts_setting_view_printer_label_get; + itc_printer.func.content_get = NULL; + itc_printer.func.state_get = NULL; + itc_printer.func.del = NULL; + + //itc_tree_options.item_style = "dialogue/2text/expandable"; + itc_tree_options.item_style = "dialogue/2text.3/expandable"; + itc_tree_options.func.text_get = __pts_setting_view_option_label_get; + itc_tree_options.func.content_get = NULL; + itc_tree_options.func.state_get = NULL; + itc_tree_options.func.del = NULL; + + itc_normal_options.item_style = "dialogue/2text"; + itc_normal_options.func.text_get = __pts_setting_view_option_label_get; + itc_normal_options.func.content_get = NULL; + itc_normal_options.func.state_get = NULL; + itc_normal_options.func.del = NULL; + + genlist = elm_genlist_add(parent); + + elm_object_style_set(genlist, "dialogue"); + elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS); + + separator_item= elm_genlist_item_append( + genlist, + &itc_separator, + NULL, + NULL, + ELM_GENLIST_ITEM_NONE, + NULL, NULL); + + elm_genlist_item_select_mode_set(separator_item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY); + + ugd->printer_item = elm_genlist_item_append( + genlist, + &itc_printer, + (void *)ugd->active_printer, + NULL, + ELM_GENLIST_ITEM_NONE, + __pts_setting_view_printer_sel, ugd); + + ugd->header_separator_item = elm_genlist_item_append( + genlist, + &itc_separator, + NULL, + NULL, + ELM_GENLIST_ITEM_NONE, + NULL, NULL); + elm_genlist_item_select_mode_set(ugd->header_separator_item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY); + + ugd->item_paper_size = elm_genlist_item_append( + genlist, + &itc_tree_options, + (void *)PT_OPTION_ID_PAPERSIZE, + NULL, + ELM_GENLIST_ITEM_TREE, + __pts_setting_view_gl_sel, + ugd); + + ugd->item_paper_copies = elm_genlist_item_append( + genlist, + &itc_normal_options, + (void *)PT_OPTION_ID_COPIES, + NULL, + ELM_GENLIST_ITEM_NONE, + _create_copies_popup_timepicker, + ugd); + + ugd->item_page_range = elm_genlist_item_append( + genlist, + &itc_tree_options, + (void *)PT_OPTION_ID_RANGE, + NULL, + ELM_GENLIST_ITEM_TREE, + __pts_setting_view_gl_sel, + ugd); + + ugd->item_paper_quality = elm_genlist_item_append( + genlist, + &itc_tree_options, + (void *)PT_OPTION_ID_QUALITY, + NULL, + ELM_GENLIST_ITEM_TREE, + __pts_setting_view_gl_sel, + ugd); + + ugd->item_paper_type = elm_genlist_item_append( + genlist, + &itc_tree_options, + (void *)PT_OPTION_ID_PAPER, + NULL, + ELM_GENLIST_ITEM_TREE, + __pts_setting_view_gl_sel, + ugd); + + ugd->item_grayscale = elm_genlist_item_append( + genlist, + &itc_tree_options, + (void *)PT_OPTION_ID_GRAYSCALE, + NULL, + ELM_GENLIST_ITEM_TREE, + __pts_setting_view_gl_sel, + ugd); + + // Footer space + ugd->footer_separator_item = elm_genlist_item_append( + genlist, + &itc_separator, + NULL, + NULL, + ELM_GENLIST_ITEM_NONE, + NULL, NULL); + elm_genlist_item_select_mode_set(ugd->footer_separator_item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY); + + evas_object_smart_callback_add(genlist, "expanded", __pts_setting_view_gl_exp, ugd); + evas_object_smart_callback_add(genlist, "contracted", __pts_setting_view_gl_con, ugd); + + /* Add touch coordinates handler */ + Ecore_Event_Handler *event; + event = ecore_event_handler_add(ECORE_EVENT_MOUSE_BUTTON_DOWN, _mousedown_cb, NULL); + evas_object_smart_callback_add(genlist, "clicked", _back_cb, event); + + PTS_TRACE_END; + return genlist; +} + +Evas_Object *pt_util_add_bg(Evas_Object *obj, Eina_Bool is_window) +{ + PTS_TRACE_BEGIN; + + Evas_Object *bg; + bg = elm_bg_add(obj); + PTS_RETV_IF(bg == NULL, NULL, "bg is NULL"); + + evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + + if (is_window) { + elm_win_resize_object_add(obj, bg); + } else { + elm_object_style_set(bg, "group_list"); + } + + evas_object_show(bg); + + PTS_TRACE_END; + return bg; +} + + +/** + * This function let the app create setting view + * @return void + * @param[in] sd the pointer to the printer setting structure + */ +void pts_create_setting_view(pts_core_data_t *ugd) +{ + PTS_TRACE_BEGIN; + PTS_RET_IF(ugd == NULL, "ugd is NULL"); + + Evas_Object *back_btn = NULL; + //Evas_Object *layout = NULL; + Evas_Object *genlist = NULL; + //Elm_Object_Item *navi_item = NULL; + + //layout = pts_utils_create_layout(ugd->navi); + //evas_object_show(layout); + //Evas_Object *conform = elm_object_part_content_get(layout, "elm.swallow.content"); + + genlist = __pts_setting_view_create_content(ugd->navi, ugd); + //elm_object_content_set(layout, genlist); + + back_btn = elm_button_add(ugd->navi); + elm_object_style_set(back_btn, "naviframe/end_btn/default"); + + evas_object_smart_callback_add(back_btn, "clicked", __pts_setting_view_btn_back_cb, ugd); + elm_naviframe_item_push(ugd->navi, _("IDS_SMPOS_HEADER_PRINTER_SETTINGS"), back_btn, NULL, genlist, NULL); + //navi_item = elm_naviframe_item_push(ugd->navi, _("IDS_SMPOS_HEADER_PRINTER_SETTINGS"), back_btn, NULL, genlist, NULL); + + PTS_TRACE_END; +} diff --git a/mobileprint/edc/genlist_custom.edc b/mobileprint/edc/genlist_custom.edc new file mode 100644 index 0000000..79f1ffc --- /dev/null +++ b/mobileprint/edc/genlist_custom.edc @@ -0,0 +1,76 @@ +#define GENLIST_HEIGHT_73_INC 73 +#define LAYOUT_GROUP_LIST_BG_COLOR_INC 248 246 239 255 // white theme +#define GENLIST_PART_DISCLIP_COLOR_INC 255 255 255 110 // alpha was 64 + +#define GENLIST_PART_DIALOGUE_BASE( param_item_height ) \ + part { name: "base"; \ + type: RECT; \ + clip_to: "disclip"; \ + repeat_events: 1; \ + scale: 1; \ + description { state: "default" 0.0; \ + min: 0 param_item_height; \ + color: LAYOUT_GROUP_LIST_BG_COLOR_INC; \ + } \ + } + +// When rotating, sometimes item size is expaned. +#define GENLIST_PART_DISCLIP \ + part { name: "disclip"; \ + type: RECT; \ + description { state: "default" 0.0; \ + } \ + description { state: "disabled" 0.0; \ + inherit: "default" 0.0; \ + color: GENLIST_PART_DISCLIP_COLOR_INC; \ + } \ + } + +collections { + group { name: "elm/genlist/item/custom/2icon/default"; + alias: "elm/genlist/item_odd/custom/2icon/default"; + data.item: "stacking" "above"; + data.item: "selectraise" "on"; + data.item: "contents" "elm.icon.1 elm.icon.2"; + + parts { + GENLIST_PART_DIALOGUE_BASE( GENLIST_HEIGHT_73_INC ) + part { name: "elm.icon.1"; + clip_to: "disclip"; + type: SWALLOW; + description { state: "default" 0.0; + rel1.relative: 0.021 0.0; + rel2.relative: 0.492 1.0; + } + } + part { name: "elm.icon.2"; + clip_to: "disclip"; + type: SWALLOW; + description { state: "default" 0.0; + rel1.relative: 0.51 0.0; + rel2.relative: 0.979 1.0; + } + } + GENLIST_PART_DISCLIP + } + programs { + // signal: elm,state,%s,active + // a "check" item named %s went active + // signal: elm,state,%s,passive + // a "check" item named %s went passive + // default is passive + program { name: "go_disabled"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "disclip"; + } + program { name: "go_enabled"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "disclip"; + } + } + } +} diff --git a/mobileprint/edc/mobileprint.edc b/mobileprint/edc/mobileprint.edc new file mode 100644 index 0000000..f8ee183 --- /dev/null +++ b/mobileprint/edc/mobileprint.edc @@ -0,0 +1,493 @@ +#define LAYOUT_INDICATOR_HEIGHT_INC 50 + +collections +{ + group { + name: "navi"; + parts { + part { + name, "background"; + type, RECT; + description { + state: "default" 0.0; + #color: 0 0 0 255; + color: 255 255 255 255; + rel1 { relative: 0.0 0.0; offset: 0 0;} + rel2 { relative: 1.0 1.0; offset: 0 0;} + } + } + + part { name: "indicator"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: 0 LAYOUT_INDICATOR_HEIGHT_INC; + max: 999999 LAYOUT_INDICATOR_HEIGHT_INC; + fixed: 0 1; + align: 0.5 0; + visible: 0; + } + } + part { name, "navigation_bar"; + type: SWALLOW; + description { + state: "default" 0.0; + rel1 { relative: 0.0 1.0; to_x: background; to_y: "indicator";} + rel2 { relative: 1.0 1.0; to: background;} + } + } + } + } + + group + { + name: "printer"; + parts + { + part { + name, "printer_name_bg"; + type: RECT; + description { + color: 242 238 233 255; + rel1.to: "printer_name"; + rel2.to: "printer_name"; + } + } + part { name, "printer_name"; + type: SWALLOW; + scale: 1; + description { + min: 0 50; + align: 0.0 0.0; + fixed: 0 1; + state: "default" 0.0; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 0.0; } + } + } + part { + name: "bg"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + #color: 242 238 233 255; + color: 255 255 255 255; + rel1 { relative: 0.0 1.0; to:"printer_name"; } + rel2 { relative: 1.0 1.0; } + } + } + part { + name: "image"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + align: 0.5 0.5; + rel1 { relative: 0.0 0.0;to:"bg";} + rel2 { relative: 1.0 1.0;to:"bg";} + } + } + + part{ + name:"bar"; + type: SWALLOW; + scale:1; + description { + state: "default" 0.0; + align: 0.5 1.0; + min: 0 104; + fixed: 0 1; + rel1 { relative: 0.0 1.0;} + rel2 { relative: 1.0 1.0;} + } + } + } + } + group + { + name: "image_view"; + parts + { + part { + name: "bg"; + type: RECT; + description { + state: "default" 0.0; + #color: 242 238 233 255; + color: 255 255 255 255; + rel1 { relative: 0.0 0.0; } + rel2 { relative: 1.0 1.0; } + } + } + + part { + name: "content"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + align: 0.5 0.5; + rel1 { relative: 0.0 0.0; to: "bg";} + rel2 { relative: 1.0 0.95; to: "bg";} + } + description { + state: "multi" 0.1; + align: 0.5 0.5; + rel1 { relative: 0.0 0.0; to: "bg";} + rel2 { relative: 1.0 1.0; to: "bg";} + } + } + part { + name: "process_animation"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + align: 0.5 0.5; + rel1 { relative: 0.0 0.0; to: "bg";} + rel2 { relative: 1.0 1.0; to: "bg";} + } + } + part { + name: "pagenumber"; + type: TEXT; + scale: 1; + description { + state: "default" 0.0; + max: -1 0; + text { + size: 30; + align: 0.5 0.5; + } + color: 108 108 108 255; + align: 0.5 0.5; + rel1 { relative: 0.0 0.95; to: "bg";} + rel2 { relative: 1.0 1.0; to: "bg";} + } + description { + state: "multi" 0.1; + visible: 0; + max: -1 0; + text { + size: 30; + align: 0.5 0.5; + } + color: 108 108 108 255; + align: 0.5 0.5; + rel1 { relative: 0.0 0.0; to: "bg";} + rel2 { relative: 1.0 1.0; to: "bg";} + } + } + } + } + + group + { + name: "popup_search"; + parts{ + part{ + name:"elm.swallow.content"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; +# min: 0 70; + align: 0.5 0.0; + fixed: 1 0; + rel1 { + relative: 0.0 0.0; + } + rel2 { + relative: 1.0 0.6; + } + } + } + part{ + name: "elm.text"; + type: TEXT; + scale: 1; + description { + state: "default" 0.0; +# min: 0 30; + text { + size: 30; + align: 0.5 0.5; + min: 0 0; + } + color: 108 108 108 255; + align: 0.5 0.5; + rel1 { + relative: 0.0 0.7; + } + rel2 { + relative: 1.0 1.0; + } + } + } + } + } + + group + { + name: "popup_print"; + parts{ + part{ + name: "elm.title"; + type: TEXT; + scale : 1; + description { + state: "default" 0.0; + max: 400 30; + text { + size: 20; + min: 0 0; + align: 0.0 0.0; + } + color: 108 108 108 255; + align: 0.0 0.0; + rel1 { + relative: 0.0 0.0; + to: "elm.swallow.content"; + } + rel2 { + relative: 1.0 0.0; + to: "elm.swallow.content"; + } + } + } + + part{ name:"elm.swallow.content"; + type: SWALLOW; + scale : 1; + description { state: "default" 0.0; + min: 0 70; + align: 0.5 0.5; + fixed: 1 0; + rel1 { + relative: 0.0 0.0; + } + rel2 { + relative: 1.0 1.0; + } + } + } + } + } + + group { name: "popup_progress"; + parts{ + part { name: "pad_t"; + scale : 1; + mouse_events: 0; + repeat_events: 1; + description { state: "default" 0.0; + align: 0.5 0.0; + min: 0 14; + fixed: 0 1; + rel1 { + relative: 1.0 0.0; + to_x: "pad_l"; + } + rel2 { + relative: 0.0 0.0; + to_x: "pad_r"; + } + } + } + part { name: "pad_l"; + scale: 1; + description { state: "default" 0.0; + min : 10 0; + fixed: 1 0; + rel1 { + relative: 0.0 0.0; + } + rel2 { + relative: 0.0 1.0; + } + align: 0.0 0.0; + } + } + part { name: "pad_r"; + scale: 1; + description { state: "default" 0.0; + min : 10 0; + fixed: 1 0; + rel1 { + relative: 1.0 0.0; + } + rel2 { + relative: 1.0 1.0; + } + align: 1.0 0.0; + } + } + part{ name:"elm.swallow.content"; + type: SWALLOW; + scale : 1; + description { state: "default" 0.0; + min: 300 0; + align: 0.5 0.5; + fixed: 1 0; + rel1 { + relative: 0.5 1.0; + to: "pad_t"; + } + rel2 { + relative: 0.5 0.0; + to: "pad_b"; + } + } + } + part{ name:"elm.swallow.content.1"; + type: SWALLOW; + scale : 1; + description { state: "default" 0.0; + min: 300 0; + align: 0.5 0.5; + fixed: 1 0; + rel1 { + relative: 0.0 0.0; + to: "elm.swallow.content"; + } + rel2 { + relative: 1.0 0.3; + to: "elm.swallow.content"; + } + } + } + part{ name:"elm.swallow.content.2"; + type: SWALLOW; + scale : 1; + description { state: "default" 0.0; + min: 300 0; + align: 0.5 0.5; + fixed: 1 0; + rel1 { + relative: 0.0 1.0; + to: "elm.swallow.content.1"; + } + rel2 { + relative: 1.0 2.0; + to: "elm.swallow.content.1"; + } + } + } + part{ name:"elm.swallow.content.3"; + type: SWALLOW; + scale : 1; + description { state: "default" 0.0; + min: 300 0; + align: 0.5 0.5; + fixed: 1 0; + rel1 { + relative: 0.0 1.0; + to: "elm.swallow.content.2"; + } + rel2 { + relative: 1.0 2.0; + to: "elm.swallow.content.2"; + } + } + } + part { name: "pad_b"; + scale : 1; + mouse_events: 0; + repeat_events: 1; + description { state: "default" 0.0; + align: 0.5 1.0; + min: 0 90; + fixed: 0 1; + rel1 { + relative: 1.0 1.0; + to_x: "pad_l"; + } + rel2 { + relative: 0.0 1.0; + to_x: "pad_r"; + } + } + } + part { name: "elm.swallow.end"; + type: SWALLOW; + scale : 1; + mouse_events: 1; + repeat_events: 1; + description { state: "default" 0.0; + align: 0.0 0.0; + fixed: 1 1; + rel1 { + relative: 0.0 0.0; + to: "pad_b"; + } + rel2 { + relative: 1.0 1.0; + to: "pad_b"; + } + } + } + part { name: "pad_bm"; + scale : 1; + mouse_events: 0; + repeat_events: 1; + description { state: "default" 0.0; + align: 0.0 1.0; + min: 0 52; + fixed: 0 1; + rel1 { + relative: 0.0 1.0; + to: "pad_b"; + } + rel2 { + relative: 1.0 1.0; + to: "pad_b"; + } + } + } + part { name: "elm.text.subtext1"; + type: TEXT; + scale : 1; + description { state: "default" 0.0; + text { + font: "Tizen:style=Medium"; + size: 16; + min: 0 0; + align: 0.0 1.0; + } + color: 108 108 108 255; + align: 0.0 0.5; + rel1 { + relative: 0.0 0.0; + to: "pad_bm"; + } + rel2 { + relative: 1.0 1.0; + to: "pad_bm"; + } + } + } + part { name: "elm.text.subtext2"; + type: TEXT; + scale : 1; + description { state: "default" 0.0; + text { + font: "Tizen:style=Medium"; + size: 16; + min: 0 0; + align: 1.0 1.0; + } + color: 108 108 108 255; + align: 1.0 0.5; + rel1 { + relative: 0.0 0.0; + to: "pad_bm"; + } + rel2 { + relative: 1.0 1.0; + to: "pad_bm"; + } + } + } + } + } +} diff --git a/mobileprint/images/A01_print_popup_icon_Rotate.png b/mobileprint/images/A01_print_popup_icon_Rotate.png new file mode 100644 index 0000000..2c350ac Binary files /dev/null and b/mobileprint/images/A01_print_popup_icon_Rotate.png differ diff --git a/mobileprint/images/A01_print_popup_icon_Rotate02.png b/mobileprint/images/A01_print_popup_icon_Rotate02.png new file mode 100644 index 0000000..6d6d3b8 Binary files /dev/null and b/mobileprint/images/A01_print_popup_icon_Rotate02.png differ diff --git a/mobileprint/images/A01_print_popup_icon_print.png b/mobileprint/images/A01_print_popup_icon_print.png new file mode 100644 index 0000000..f07f36e Binary files /dev/null and b/mobileprint/images/A01_print_popup_icon_print.png differ diff --git a/mobileprint/images/A01_print_popup_icon_scaling.png b/mobileprint/images/A01_print_popup_icon_scaling.png new file mode 100644 index 0000000..8ce7e1e Binary files /dev/null and b/mobileprint/images/A01_print_popup_icon_scaling.png differ diff --git a/mobileprint/images/A01_print_popup_icon_setting.png b/mobileprint/images/A01_print_popup_icon_setting.png new file mode 100644 index 0000000..463bc22 Binary files /dev/null and b/mobileprint/images/A01_print_popup_icon_setting.png differ diff --git a/mobileprint/images/A01_print_popup_icon_size.png b/mobileprint/images/A01_print_popup_icon_size.png new file mode 100644 index 0000000..30c4fd1 Binary files /dev/null and b/mobileprint/images/A01_print_popup_icon_size.png differ diff --git a/mobileprint/include/image_editor_conn.h b/mobileprint/include/image_editor_conn.h new file mode 100644 index 0000000..b95ac43 --- /dev/null +++ b/mobileprint/include/image_editor_conn.h @@ -0,0 +1,26 @@ +/* +* Mobileprint +* +* Copyright 2012 Samsung Electronics Co., Ltd + +* Licensed under the Flora License, Version 1.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://floralicense.org/license/ + +* 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. +* +*/ + +#ifndef _IMAGE_EDITOR_H_INCLUDED_ +#define _IMAGE_EDITOR_H_INCLUDED_ + +int load_image_editor_ug(pts_core_data_t *ugd); + +#endif /* _IMAGE_EDITOR_H_INCLUDED_ */ + diff --git a/mobileprint/include/loading_animation.h b/mobileprint/include/loading_animation.h new file mode 100644 index 0000000..1055ceb --- /dev/null +++ b/mobileprint/include/loading_animation.h @@ -0,0 +1,31 @@ +/* +* Mobileprint +* +* Copyright 2012 Samsung Electronics Co., Ltd + +* Licensed under the Flora License, Version 1.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://floralicense.org/license/ + +* 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. +* +*/ + +#ifndef _LOADING_ANIMATION_H_INCLUDED_ +#define _LOADING_ANIMATION_H_INCLUDED_ + +#include "pts_common.h" + + +Evas_Object *loading_animation_add(Evas_Object *parent); +void show_loading_animation(pts_core_data_t *ugd); +void hide_loading_animation(pts_core_data_t *ugd); + +#endif /* _LOADING_ANIMATION_H_INCLUDED_ */ + diff --git a/mobileprint/include/mobileprint.h b/mobileprint/include/mobileprint.h new file mode 100755 index 0000000..3d3bcc8 --- /dev/null +++ b/mobileprint/include/mobileprint.h @@ -0,0 +1,34 @@ +/* +* Mobileprint +* +* Copyright 2012 Samsung Electronics Co., Ltd + +* Licensed under the Flora License, Version 1.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://floralicense.org/license/ + +* 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. +* +*/ + +#ifndef __APP_COMMON_H__ +#define __APP_COMMON_H__ + +#include +#include "pts_common.h" + +typedef struct appdata { + Evas_Object *win; + //Evas_Object *ly_main; + + /* add more variables here */ + pts_core_data_t *ugd; +} pts_appdata_t; + +#endif /* __APP_COMMON_H__ */ diff --git a/mobileprint/include/preview_content.h b/mobileprint/include/preview_content.h new file mode 100644 index 0000000..9d66f9b --- /dev/null +++ b/mobileprint/include/preview_content.h @@ -0,0 +1,33 @@ +/* +* Mobileprint +* +* Copyright 2012 Samsung Electronics Co., Ltd + +* Licensed under the Flora License, Version 1.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://floralicense.org/license/ + +* 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. +* +*/ + +#ifndef _PREVIEW_CONTENT_H_INCLUDED_ +#define _PREVIEW_CONTENT_H_INCLUDED_ + +#include + +#include "pts_common.h" + +int generate_preview_images(pts_core_data_t *ugd, + app_device_orientation_e dev_orientation); + +int printer_get_setting_n_up(const pt_printer_mgr_t *active_printer); + +#endif /* _PREVIEW_CONTENT_H_INCLUDED_ */ + diff --git a/mobileprint/include/preview_engine.h b/mobileprint/include/preview_engine.h new file mode 100644 index 0000000..71b036a --- /dev/null +++ b/mobileprint/include/preview_engine.h @@ -0,0 +1,94 @@ +/* +* Mobileprint +* +* Copyright 2012 Samsung Electronics Co., Ltd + +* Licensed under the Flora License, Version 1.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://floralicense.org/license/ + +* 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. +* +*/ + +#ifndef _PREVIEW_ENGINE_H_INCLUDED_ +#define _PREVIEW_ENGINE_H_INCLUDED_ + +struct preview_engine; +struct initial_preview_data; +enum preview_engine_event_status; + +#include + +#include +#include + +#include "preview_model.h" +#include "preview_task_model.h" + + +enum preview_engine_state { + PREVIEW_ENGINE_STATE_INITIAL = 0, + PREVIEW_ENGINE_STATE_PROCESSING, + PREVIEW_ENGINE_STATE_ERROR, + PREVIEW_ENGINE_STATE_READY, + PREVIEW_ENGINE_STATE_STOPPING, + PREVIEW_ENGINE_STATE_DELETED +}; + +enum preview_engine_event_status { + PREVIEW_ENGINE_EVENT_INITIAL_ERROR = -2, + PREVIEW_ENGINE_EVENT_PAGE_ERROR = -1, + PREVIEW_ENGINE_EVENT_PAGE_PROCESSING, + PREVIEW_ENGINE_EVENT_PAGE_READY, + PREVIEW_ENGINE_EVENT_INITIAL_READY + /* add cancelled state? */ +}; + +struct preview_engine_event { + int page; + enum preview_engine_event_status status; +}; + +struct initial_preview_data { + //char *fname; /* initial file */ + struct preview_conf conf; + + struct preview_engine *engine; /* not for use in thread */ +}; + +struct preview_engine { + //char *fname; + + enum preview_engine_state state; + struct preview_task_model task_model; + struct preview_model p_model; + + Ecore_Thread *initial_thread; + struct initial_preview_data *next_preview_data; + + int page_ready_event_type; +}; + + +int init_preview_engine(struct preview_engine *engine); +int process_preview_engine_file(struct preview_engine *engine, + char *fname, const char *ppd, + const struct paper_size_pts *paper_size, + const struct size_px *max_available_size_px, + enum page_orientation orientation, int n_up, + const struct page_scale *scale, int is_grayscale); +void preview_engine_send_page_message(struct preview_engine *engine, + enum preview_engine_event_status status, int page); +int preview_engine_init_done(struct preview_engine *engine, + const struct preview_conf *conf); + + +#endif /* _PREVIEW_ENGINE_H_INCLUDED_ */ + diff --git a/mobileprint/include/preview_model.h b/mobileprint/include/preview_model.h new file mode 100644 index 0000000..810bfb5 --- /dev/null +++ b/mobileprint/include/preview_model.h @@ -0,0 +1,83 @@ +/* +* Mobileprint +* +* Copyright 2012 Samsung Electronics Co., Ltd + +* Licensed under the Flora License, Version 1.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://floralicense.org/license/ + +* 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. +* +*/ + +#ifndef _PREVIEW_MODEL_H_INCLUDED_ +#define _PREVIEW_MODEL_H_INCLUDED_ + +struct preview_model; + +#include +#include + +#include "preview_task_model.h" + + +enum preview_page_state { + PREVIEW_PAGE_STATE_NA = 0, + PREVIEW_PAGE_STATE_PROCESSING, + /*PREVIEW_PAGE_STATE_SIZE_READY,*/ /* TODO */ + PREVIEW_PAGE_STATE_READY, + PREVIEW_PAGE_STATE_ERROR +}; + +#if 0 +struct preview_page_info { + enum preview_page_state page_state; + /* TODO: page data */ +}; +#endif + +struct preview_engine; + +struct preview_conf { + int pages_count; + char *initial_fname; + char *fname; + char *ppd; /*PPD file name*/ + //int is_original_size; + struct page_scale scale; + int n_up; + enum page_orientation orientation; + struct paper_size_pts paper_size; + struct size_px max_available_size_px; + int is_grayscale; +}; + +struct preview_model { + //int pages_count; + enum preview_page_state *pages_state; + struct preview_conf conf; + //struct preview_task_model *task_model; + struct preview_engine *engine; +}; + +#include "preview_engine.h" + + +int init_preview_model(struct preview_model *model, + const struct preview_conf *conf, + struct preview_engine *engine); +void destroy_preview_model(struct preview_model *model); +int preview_model_request_page(struct preview_model *model, int page); +int preview_model_page_available(struct preview_model *model, + enum preview_engine_event_status status, int page); + + +#endif /* _PREVIEW_MODEL_H_INCLUDED_ */ + diff --git a/mobileprint/include/preview_task_model.h b/mobileprint/include/preview_task_model.h new file mode 100644 index 0000000..45a8e46 --- /dev/null +++ b/mobileprint/include/preview_task_model.h @@ -0,0 +1,51 @@ +/* +* Mobileprint +* +* Copyright 2012 Samsung Electronics Co., Ltd + +* Licensed under the Flora License, Version 1.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://floralicense.org/license/ + +* 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. +* +*/ + +#ifndef _PREVIEW_TASK_MODEL_H_INCLUDED_ +#define _PREVIEW_TASK_MODEL_H_INCLUDED_ + +//#define MAX_PREVIEW_TASK_COUNT 3 /* TODO: autodetection */ + +struct preview_task_model; +struct preview_conf; + +#include + +struct preview_task_model { + Eina_List *task_list; + Ecore_Thread *thread; + + int is_stop_processing; + + struct preview_engine *engine; +}; + +#include "preview_model.h" + +int init_preview_task_model(struct preview_task_model *model, + struct preview_engine *engine); +int preview_task_stop_processing(struct preview_task_model *task_model); +int add_preview_task_initial(struct preview_task_model *model, + const struct preview_conf *conf); +int add_preview_task(struct preview_task_model *model, int page, + struct preview_model *pmodel); + + +#endif /* _PREVIEW_TASK_MODEL_H_INCLUDED_ */ + diff --git a/mobileprint/include/preview_widget.h b/mobileprint/include/preview_widget.h new file mode 100644 index 0000000..ead573c --- /dev/null +++ b/mobileprint/include/preview_widget.h @@ -0,0 +1,35 @@ +/* +* Mobileprint +* +* Copyright 2012 Samsung Electronics Co., Ltd + +* Licensed under the Flora License, Version 1.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://floralicense.org/license/ + +* 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. +* +*/ + +#ifndef _PREVIEW_WIDGET_H_INCLUDED_ +#define _PREVIEW_WIDGET_H_INCLUDED_ + +#include "preview_engine.h" + + +struct preview_widget { + int pages_count; + int cur_page; + struct preview_engine engine; +}; + +Eina_Bool page_ready_cb(void *data, int type, void *event); + +#endif /* _PREVIEW_WIDGET_H_INCLUDED_ */ + diff --git a/mobileprint/include/pts_common.h b/mobileprint/include/pts_common.h new file mode 100755 index 0000000..5bf0252 --- /dev/null +++ b/mobileprint/include/pts_common.h @@ -0,0 +1,346 @@ +/* +* Mobileprint +* +* Copyright 2012 Samsung Electronics Co., Ltd + +* Licensed under the Flora License, Version 1.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://floralicense.org/license/ + +* 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. +* +*/ + +#ifndef PTS_COMMON_H_ +#define PTS_COMMON_H_ + +#include +#include +#include +#include +#include +#include +#include "pts_debug.h" + +#include "preview_engine.h" /* TODO: move to preview widget */ + +#define PTS_2 "Can not register the printer" +#define PTS_17 "Error option" +#define PTS_18 "Tap to add printer" +#define PTS_19 "Unable to cancel. The current page is already being printed." + +#define IDS_PRT_1 "Failed to connect Wi-Fi Direct Printer" +#define IDS_PRT_2 "USB Printer Connected" +#define IDS_PRT_5 "Unable to cancel. The current page is already being printed." +#define IDS_PRT_6 "The printer is not connected" +#define IDS_PRT_7 "Disconnect USB cable, then reconnect it" +#define IDS_PRT_8 "You are not connected to a Wi-Fi network" +#define IDS_PRT_9 "The printer is not ready" +#define IDS_PRT_10 "Print info error" +#define IDS_PRT_11 "Printer is use" +#define IDS_PRT_12 "Printing failed" +#define IDS_PRT_13 "Unsupported file" +#define IDS_PRT_14 "File related error" +#define IDS_PRT_15 "The output tray is almost full" +#define IDS_PRT_16 "The output tray is full" +#define IDS_PRT_17 "Printer supply low" +#define IDS_PRT_18 "Printer supply empty" +#define IDS_PRT_19 "Device failure" +#define IDS_PRT_20 "No ink" +#define IDS_PRT_21 "No ink cartridge" +#define IDS_PRT_22 "The printer catridge is running low" +#define IDS_PRT_23 "Ink cover open" +#define IDS_PRT_24 "Ink related error" +#define IDS_PRT_25 "The paper tray is empty" +#define IDS_PRT_26 "The paper tray is running low" +#define IDS_PRT_27 "Paper jam" +#define IDS_PRT_28 "The paper size or type is incorrect" +#define IDS_PRT_29 "Paper loading error occurred" +#define IDS_PRT_30 "Paper related error occurred" +#define IDS_PRT_31 "Printer cover open" +#define IDS_PRT_32 "Printer hardware error occurred" +#define IDS_PRT_33 "Paper level error" +#define IDS_PRT_34 "No print head" +#define IDS_PRT_35 "Printer related error occurred" + +#define IDS_BR_OPT_5X7 "5\"x7\"(13x18cm)" +#define IDS_BR_OPT_4X6 "4\"x6\"(10x15cm)" +#define IDS_BR_OPT_3_5X5 "3.5\"x5\"(9x13cm)" +#define IDS_BR_OPT_WALLET "Wallet(6.4x8.4cm)" + +#define SERVICE_LAUNCH_TYPE "LAUNCH_TYPE" +#define SERVICE_JOB_ID "JOB_ID" +#define SERVICE_FILES "FILES" +#define SERVICE_PAGE_COUNT "PAGE_COUNT" +#define LAUNCH_FROM_DUMMY_NOTI "launch_from_dummy_noti" +#define LAUNCH_FROM_PROGRESS_NOTI "launch_from_progress_noti" +#define SERVICE_PRINT_FILES_COUNT "service_print_files_count" +#define SERVICE_PRINT_FILES_CURRENT_INDEX "service_print_files_current_index" +#define SERVICE_PRINT_FILES_TYPE "service_print_files_type" +#define SERVICE_PRINT_FILES_FOLDER_NAME "service_print_files_folder_name" +#define SERVICE_PRINT_FILES_FILES_NAME "service_print_files_files_name" + +#define ICON_PRINTER "/opt/usr/apps/org.tizen.mobileprint/res/images/pt_default_printer.png" + +#define UG_MAX_FILED_LEN 64 +#define COPIES_MAX 99 + +#ifndef API +#define API __attribute__ ((visibility("default"))) +#endif +#define _EDJ(obj) (Evas_Object *)elm_layout_edje_get(obj) + +//#ifndef _ +//# define _(str) gettext(str) +//#endif + +#ifndef N_ +# define gettext_noop(str) (str) +# define N_(str) gettext_noop(str) +#endif + +#ifndef S_ +# define S_(str) dgettext("sys_string", str) +#endif + +#ifndef P_ +# define P_(str) dgettext(PACKAGE, str) +#endif + +#ifndef U_ +# define U_(str) dgettext(UGNAME, str) +#endif + +typedef enum { + PTS_SIZE_FIT_TO_PAPER, + PTS_SIZE_5X7, + PTS_SIZE_4X6, + PTS_SIZE_3_5X5, + PTS_SIZE_WALLET, + PTS_SIZE_CUSTOM, + PTS_SIZE_MAX, +} pts_image_size_e; + +typedef enum { + PTS_SEARCH_INITIAL, // Before launching preview, this printer search is triggered. + PTS_SEARCH_IN_PREVIEW, // When USB Printer detected, this printer search is triggered + PTS_SEARCH_IN_SETTING, // When ether USB Printer detected or printer search button is presed, this printer search is triggered +} pts_printer_search_state_e; + +typedef struct { + char **selected_files; /** selected print files*/ + int from; /** from print position, the first file equals 0 */ + int to; /** to print position*/ + int total_pages; +} pts_range_t; + +typedef struct { + char *directory; + char **request_files; + pts_range_t range; + int num_of_files; + int current_index; + char *type; +} pts_printing_data_t; + +typedef struct { + int job_id; + int noti_id; + notification_h noti_handle; + int progress; + int page_printed; + pts_printing_data_t pt_files; + char *input_file; + int n_up; +} pts_job_spooling_t; + +typedef void (*pts_printer_selection_done_cb)(void *userdata); + +typedef struct { + Evas_Object *root_win; + Evas_Object *main_win; + Evas_Object *navi; + Evas_Object *printer_layout; + Evas_Object *printer_label; + Evas_Object *more_btn; + Evas_Object *print_btn; + Evas_Object *ctxpopup; + + /* + * popup + */ + Evas_Object *popup; + Evas_Object *wifi_type_popup; + Evas_Object *printer_list_popup; + Evas_Object *no_found_popup; + Evas_Object *scaling_popup; + Evas_Object *size_popup; + Evas_Object *size_popup_box; + Evas_Coord size_popup_portrait_height; + Evas_Coord size_popup_landscape_height; + Evas_Object *custom_popup; + Evas_Object *custom_popup_box; + Evas_Coord custom_popup_portrait_height; + Evas_Coord custom_popup_landscape_height; + + Evas_Object *progressbar; + Evas_Object *progress_layout; + Evas_Object *progress_label; + + /* + * image layout + */ + Evas_Object *img_layout; + /* + * main navi item + */ + Elm_Object_Item *navi_it; + + /* Print Search Type*/ + pts_printer_search_state_e print_search_mode; + pts_printer_selection_done_cb selection_done_cb; + Evas_Object *print_search_popup_parent; + void *printer_search_user_data; + + /* Setting option: Header-item */ + Elm_Object_Item *printer_item; + Elm_Object_Item *header_separator_item; + Elm_Object_Item *item_paper_size; + Elm_Object_Item *item_paper_copies; + Elm_Object_Item *item_paper_quality; + Elm_Object_Item *item_paper_type; + Elm_Object_Item *item_page_range; + Elm_Object_Item *item_grayscale; + Elm_Object_Item *footer_separator_item; + + /* Settings: subitems */ + Elm_Object_Item **paper_size; + Elm_Object_Item *quality[PT_QUALITY_ANY]; + Elm_Object_Item *paper_type[PT_PAPER_ANY]; + Elm_Object_Item *color[PT_GRAYSCALE_ANY]; + + /* Setting option: Radio Group Leader */ + Evas_Object *radio_group_paper_size; + Evas_Object *radio_group_paper_quality; + Evas_Object *radio_group_paper_type; + Evas_Object *radio_group_page_range; + Evas_Object *radio_group_grayscale; + + char *input_file; /* initial input file */ + pts_printing_data_t pt_files; + /* + * wifi, usb, all connection + */ + //int connect_type; + /* + * sweep image + */ + Evas_Coord cur_x; + pt_printer_mgr_t *active_printer; + pt_printer_mgr_t *select_printer; + + int dummy_noti_id; + Eina_List *job_spooling_list; + + Evas_Object *preview_img; + Evas_Object *loading_animation; + + int landscape_toggle; + + /* whether in process(searching, printing) */ + int is_process; + + struct preview_engine engine; /* TODO: move to widget data */ + + pts_image_size_e image_size; + + double custom_width; + double custom_height; + double custom_w_ratio; + int custom_unit; // 1:cm 2:inch +} pts_core_data_t; + +typedef struct { + Evas_Object *popup; + Eina_List *printer_list; + + pts_core_data_t *ugd; + + Ecore_Timer *search_err_timer; +} pts_ug_list_data; + +typedef struct { + pts_core_data_t *ugd; + + pt_print_option_e option; /* pts_print_option_type */ + int sub_item; /* Individual item. It stores any type of options: + pt_paper_size_t, pt_range_t, + pt_grayscale_t, pt_quality_t, + pt_paper_t*/ + int radio_index; + + Elm_Object_Item *item; + Evas_Object *radio_btn; + Evas_Object *radio_group; +} Item_data; + +/** + * This function let the app create the label + * @return void + * @param[in] parent the pointer to the parent of the label + * @param[in] desc the pointer to label text + */ +Evas_Object *pts_create_label_btn(Evas_Object *parent, const char *label); + +/** + * This function let the app create the base layout + * @return void + * @param[in] parent the pointer to the parent of the base layout + * @param[in] desc the pointer to group of the base layout + */ +Evas_Object *pts_create_base_layout(Evas_Object *parent, const char *group); + +/** + * This function let the app create the popup element + * @return void + * @param[in] parent the pointer to the parent of the popup element + * @param[in] desc the pointer to description of the popup element + * @param[in] timeout the timeout value + */ +Evas_Object *pts_create_popup(Evas_Object *parent, const char *desc, double timeout); +Evas_Object *pts_create_size_popup(Evas_Object *parent, pts_core_data_t *ugd); +Evas_Object *pts_create_scaling_popup(Evas_Object *parent, pts_core_data_t *ugd); +Evas_Object *pts_create_wifi_popup(Evas_Object *parent, pts_core_data_t *ugd); +void clear_preview_image(pts_core_data_t *ugd); +void pts_set_ugd(pts_core_data_t *ugd); +pts_core_data_t *pts_get_ugd(void); + + + +void pts_search_printer(pts_core_data_t *ugd, Evas_Object *parent, pts_printer_search_state_e search_mode, pts_printer_selection_done_cb cb, void *userdata); +void pts_create_print_search_popup(Evas_Object *parent, pts_core_data_t *ugd); +Evas_Object *pts_utils_create_layout(Evas_Object *navi_frame); +void load_main_view(void *userdata); + +inline char *_pts_printing_data_get_directory(pts_printing_data_t *data); +inline char **_pts_printing_data_get_request_files(pts_printing_data_t *data); +inline int _pts_printing_data_get_files_count(pts_printing_data_t *data); +inline int _pts_printing_data_get_index(pts_printing_data_t *data); +inline char *_pts_printing_data_get_type(pts_printing_data_t *data); +Eina_Bool _pts_printing_data_set_directory(const char *directory, pts_printing_data_t *data); +Eina_Bool _pts_printing_data_set_request_files(const char **request_files, const int files_count, pts_printing_data_t *data); +Eina_Bool _pts_printing_data_set_files_count(const char *num_of_files, pts_printing_data_t *data); +Eina_Bool _pts_printing_data_set_index(const char *current_index, pts_printing_data_t *data); +Eina_Bool _pts_printing_data_set_type(const char *type, pts_printing_data_t *data); + +char* pts_parse_protocol(char *addr); +int pts_unstandardization(char *name); + +#endif /* PTS_COMMON_H_ */ + diff --git a/mobileprint/include/pts_debug.h b/mobileprint/include/pts_debug.h new file mode 100755 index 0000000..f073071 --- /dev/null +++ b/mobileprint/include/pts_debug.h @@ -0,0 +1,132 @@ +/* +* Mobileprint +* +* Copyright 2012 Samsung Electronics Co., Ltd + +* Licensed under the Flora License, Version 1.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://floralicense.org/license/ + +* 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. +* +*/ + +#ifndef __PTS_DEBUG_H__ +#define __PTS_DEBUG_H__ + +__BEGIN_DECLS + +#define PTS_DLOG_OUT + +#ifdef PTS_DLOG_OUT +#undef LOG_TAG +#define LOG_TAG "MOBILEPRINT" +#include + +#define PTS_VERBOSE(fmt, args...) \ + LOGV(fmt, ##args) +#define PTS_INFO(fmt, args...) \ + LOGI(fmt, ##args) +#define PTS_DEBUG(fmt, args...) \ + LOGD(fmt, ##args) +#define PTS_WARN(fmt, args...) \ + LOGW(fmt, ##args) +#define PTS_ERROR(fmt, args...) \ + LOGE(fmt, ##args) +#define PTS_FATAL(fmt, args...) \ + LOGF(fmt, ##args) + +#define PTS_RET_IF(expr, fmt, args...) \ + do { \ + if(expr) { \ + PTS_DEBUG("[%s] Return, message "fmt, #expr, ##args );\ + return; \ + } \ + } while (0) + +#define PTS_RETV_IF(expr, val, fmt, args...) \ + do { \ + if(expr) { \ + PTS_DEBUG("[%s] Return value, message "fmt, #expr, ##args );\ + return (val); \ + } \ + } while (0) + +#define PTS_TRACE_BEGIN PTS_INFO("ENTER FUNCTION: %s\n", __FUNCTION__); +#define PTS_TRACE_END PTS_INFO("EXIT FUNCTION: %s\n", __FUNCTION__); + +#else +#define PTS_PRT(prio, fmt, arg...) \ + do { fprintf((prio ? stderr : stdout), "%s:%s(%d)>"fmt"\n", __FILE__, __func__, __LINE__, ##arg); } while (0) + +#define DBG(fmt, arg...) \ + do { \ + printf("%s:%s(%d)>"fmt"\n", __FILE__, __func__, __LINE__, ##arg); \ + } while (0) + +#define PTS_RET_IF(expr, fmt, args...) \ + do { \ + if(expr) { \ + PTS_PRT("[%s] Return, message "fmt, #expr, ##args );\ + return; \ + } \ + } while (0) + +#define PTS_RETV_IF(expr, val, fmt, args...) \ + do { \ + if(expr) { \ + PTS_PRT("[%s] Return value, message "fmt, #expr, ##args );\ + return (val); \ + } \ + } while (0) + +#define PTS_TRACE_BEGIN PTS_PRT(0, "%s enter\n", __FUNCTION__) +#define PTS_TRACE_END PTS_PRT(0, "%s leave\n", __FUNCTION__) + +#endif + +#define PTS_FILE_EXISTS(path) \ + (path && (1 == ecore_file_exists(path)) && (ecore_file_size(path) > 0)) + +#define PTS_IF_DEL_TIMER(timer) \ + do { \ + if(timer) { \ + ecore_timer_del(timer); \ + timer = NULL; \ + } \ + } while (0) + +#define PTS_IF_DEL_IDLER(idler) \ + do { \ + if(idler) { \ + ecore_idler_del(idler); \ + idler = NULL; \ + } \ + } while (0) + + +#define PTS_IF_DEL_OBJ(obj) \ + do { \ + if(obj) { \ + evas_object_del(obj); \ + obj = NULL; \ + } \ + } while (0) + +#define PTS_IF_FREE_MEM(mem) \ + do { \ + if(mem) { \ + free(mem); \ + mem = NULL; \ + } \ + } while (0) + +__END_DECLS + +#endif /* __PTS_DEBUG_H__ */ diff --git a/mobileprint/include/pts_list_view.h b/mobileprint/include/pts_list_view.h new file mode 100755 index 0000000..9dcfc40 --- /dev/null +++ b/mobileprint/include/pts_list_view.h @@ -0,0 +1,28 @@ +/* +* Mobileprint +* +* Copyright 2012 Samsung Electronics Co., Ltd + +* Licensed under the Flora License, Version 1.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://floralicense.org/license/ + +* 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. +* +*/ + +#ifndef PTS_LIST_VIEW_H_ +#define PTS_LIST_VIEW_H_ + +/** + * This function let the app create the printers list view + * @return void + * @param[in] ld the pointer to the ug list structure + */ +#endif /* PTS_LIST_VIEW_H_ */ diff --git a/mobileprint/include/pts_main_view.h b/mobileprint/include/pts_main_view.h new file mode 100755 index 0000000..26963e6 --- /dev/null +++ b/mobileprint/include/pts_main_view.h @@ -0,0 +1,75 @@ +/* +* Mobileprint +* +* Copyright 2012 Samsung Electronics Co., Ltd + +* Licensed under the Flora License, Version 1.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://floralicense.org/license/ + +* 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. +* +*/ + +#ifndef PTS_MAIN_VIEW_H_ +#define PTS_MAIN_VIEW_H_ + +#include + +extern int g_pages_count; + +struct appdata *pts_get_appdata(); + +void clear_preview_image(pts_core_data_t *ugd); + +/** + * This function let the app rotate the image by the given landscape + * @return void + * @param[in] ugd the pointer to the main data structure + * @param[in] landscape the landscape value + */ +void pts_main_view_rotate_image(pts_core_data_t *ugd, + app_device_orientation_e orientation); + +/** + * This function let the app update printer label in the preview view + * @return void + * @param[in] ugd the pointer to the main data structure + */ +void pts_main_view_update_printer_label(pts_core_data_t *ugd); + +/** + * This function let the app load the previewed image + * @return Evas_Object + * @param[in] ugd the pointer to the main data structure + */ +Evas_Object *pts_main_view_load_preview_img(pts_core_data_t *ugd); + +/** + * This function let the app create the main screen view + * @return Evas_Object + * @param[in] win the pointer to the main window + * @param[in] filepath the pointer to the path of files + */ +Evas_Object *pts_create_main_view(pts_core_data_t *ugd); + + +void pts_main_view_search_printer(pts_core_data_t *ugd); + + +int pts_main_view_load_print_files(pts_core_data_t *ugd, pts_printing_data_t *pt_files); + + +void __pts_event_cb(pt_event_e event, void *user_data, pt_progress_info_t *progress_info); + +void __pts_print_progress_popup(pts_core_data_t *ugd, int job_id, int page_count); + +void __pts_print_dummy_popup(pts_core_data_t *ugd, char *files, int page_count); + +#endif /* PTS_MAIN_VIEW_H_ */ diff --git a/mobileprint/include/pts_setting_view.h b/mobileprint/include/pts_setting_view.h new file mode 100755 index 0000000..47085cd --- /dev/null +++ b/mobileprint/include/pts_setting_view.h @@ -0,0 +1,30 @@ +/* +* Mobileprint +* +* Copyright 2012 Samsung Electronics Co., Ltd + +* Licensed under the Flora License, Version 1.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://floralicense.org/license/ + +* 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. +* +*/ + +#ifndef PTS_SETTING_VIEW_H_ +#define PTS_SETTING_VIEW_H_ +#include "pts_common.h" + +/** + * This function let the app create setting view + * @return void + * @param[in] sd the pointer to the pts_ug_main_data structure + */ +void pts_create_setting_view(pts_core_data_t *ugd); +#endif /* PTS_SETTING_VIEW_H_ */ diff --git a/mobileprint/mobileprint.desktop.in b/mobileprint/mobileprint.desktop.in new file mode 100644 index 0000000..557943b --- /dev/null +++ b/mobileprint/mobileprint.desktop.in @@ -0,0 +1,10 @@ +Name=MobilePrint +Type=Application +Exec=@PREFIX@/bin/@PROJECT_NAME@ +Icon=@PKGNAME@.png +MimeType= +nodisplay=True +Version=0.2.15-54 +X-TIZEN-TaskManage=False +X-TIZEN-Multiple=False +X-TIZEN-SVC=http://tizen.org/appcontrol/operation/PRINT|NULL|image/*;http://tizen.org/appcontrol/operation/PRINT|NULL|application/pdf; diff --git a/mobileprint/mobileprint.xml b/mobileprint/mobileprint.xml new file mode 100644 index 0000000..cc60489 --- /dev/null +++ b/mobileprint/mobileprint.xml @@ -0,0 +1,19 @@ + + + + GangHeok Kim + Taeksu Shin + Dongwook Lee + Mobile Print Application + + org.tizen.mobileprint.png + + + + + + + + + + diff --git a/mobileprint/po/CMakeLists.txt b/mobileprint/po/CMakeLists.txt new file mode 100755 index 0000000..81c99a0 --- /dev/null +++ b/mobileprint/po/CMakeLists.txt @@ -0,0 +1,35 @@ +# for i18n + +#SET(POFILES en_US.po nl.po de.po zh_HK.po zh_CN.po ru.po ko.po zh_TW.po ja.po es.po el.po it.po tr_TR.po pt.po fr.po) +SET(POFILES + ar.po da.po en_US.po fi.po hi.po it_IT.po + lt.po pl.po sk.po uk.po zh_TW.po az.po + de_DE.po es_ES.po fr_CA.po hr.po ja_JP.po + lv.po pt_BR.po sl.po uz.po bg.po el_GR.po + es_US.po fr_FR.po hu.po ka.po mk.po pt_PT.po + sr.po zh_CN.po ca.po en.po et.po ga.po hy.po + kk.po nb.po ro.po sv.po zh_HK.po cs.po en_PH.po + eu.po gl.po is.po ko_KR.po nl_NL.po ru_RU.po + tr_TR.po zh_SG.po + ) + +SET(MSGFMT "/usr/bin/msgfmt") + +FOREACH(pofile ${POFILES}) + SET(pofile ${CMAKE_CURRENT_SOURCE_DIR}/${pofile}) + MESSAGE("PO: ${pofile}") + GET_FILENAME_COMPONENT(absPofile ${pofile} ABSOLUTE) + GET_FILENAME_COMPONENT(lang ${absPofile} NAME_WE) + SET(moFile ${CMAKE_CURRENT_BINARY_DIR}/${lang}.mo) + ADD_CUSTOM_COMMAND( + OUTPUT ${moFile} + COMMAND ${MSGFMT} -o ${moFile} ${absPofile} + DEPENDS ${absPofile} + ) + INSTALL(FILES ${moFile} + DESTINATION ${LOCALEDIR}/${lang}/LC_MESSAGES RENAME ${PROJECT_NAME}.mo) + SET(moFiles ${moFiles} ${moFile}) +ENDFOREACH(pofile) + +MESSAGE(".mo files: ${moFiles}") +ADD_CUSTOM_TARGET(po ALL DEPENDS ${moFiles}) diff --git a/mobileprint/po/POTFILES.in b/mobileprint/po/POTFILES.in new file mode 100755 index 0000000..b6f4c3e --- /dev/null +++ b/mobileprint/po/POTFILES.in @@ -0,0 +1,6 @@ +# List of source files containing translatable strings. +app/mobileprint.c +app/pts_common.c +app/pts_list_view.c +app/pts_main_view.c +app/pts_setting_view.c diff --git a/mobileprint/po/ar.po b/mobileprint/po/ar.po new file mode 100644 index 0000000..1594aec --- /dev/null +++ b/mobileprint/po/ar.po @@ -0,0 +1,171 @@ +msgid "IDS_COM_SK_HIDE" +msgstr "إخفاء" + +msgid "IDS_COM_SK_REFRESH" +msgstr "إنعاش" + +msgid "IDS_COM_SK_CANCEL" +msgstr "إلغاء" + +msgid "IDS_IMGE_OPT_ROTATE" +msgstr "تدوير" + +msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR" +msgstr "خطأ بالنظام" + +msgid "IDS_COM_SK_BACK" +msgstr "رجوع" + +msgid "IDS_COM_BODY_WI_FI" +msgstr "Wi-Fi" + +msgid "IDS_COM_SK_OK" +msgstr "موافق" + +msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE" +msgstr "نوع ملف غير مدعوم" + +msgid "IDS_COM_OPT1_WI_FI_DIRECT" +msgstr "Wi-Fi Direct" + +msgid "IDS_COM_POP_UNSUPPORTED" +msgstr "غير مدعوم" + +msgid "IDS_BR_BODY_CURRENT_PAGE" +msgstr "الصفحة الحالية" + +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "تم توصيل الطابعة" + +msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT" +msgstr "اتصل بشبكة Wi-Fi للطباعة" + +msgid "IDS_PRT_BODY_SELECT_PRINTER" +msgstr "تحديد طابعة" + +msgid "IDS_PRT_SK_PRINT_PREVIEW" +msgstr "معاينة" + +msgid "IDS_SMPOS_SK3_PRINT" +msgstr "طباعة" + +msgid "IDS_IMGE_BODY_SIZE" +msgstr "الحجم" + +msgid "IDS_PRT_BODY_SCALING_ABB" +msgstr "تغيير الحجم" + +msgid "IDS_COM_BODY_SETTING" +msgstr "الضبط" + +msgid "IDS_BT_OPT_FIT_TO_PAPER" +msgstr "ملاءمة للورقة" + +msgid "IDS_COM_SK_CUSTOM" +msgstr "ضبط مخصص" + +msgid "IDS_IMGE_BODY_WIDTH" +msgstr "العرض" + +msgid "IDS_IMGE_BODY_HEIGHT" +msgstr "الطول" + +msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB" +msgstr "الاحتفاظ بنسبة العرض إلى الارتفاع" + +msgid "IDS_COM_BODY_UNIT_INCH" +msgstr "بوصة" + +msgid "IDS_COM_BODY_UNIT_CM" +msgstr "سم" + +msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB" +msgstr "%d صفحات في الورقة الواحدة" + +msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS" +msgstr "إعدادات الطابعة" + +msgid "IDS_PRT_BODY_PRINTER" +msgstr "طابعة" + +msgid "IDS_PRT_BODY_PAPERSIZE" +msgstr "حجم الورقة" + +msgid "IDS_PRT_BODY_NUMBEROFCOPIES" +msgstr "عدد النسخ" + +msgid "IDS_PRT_BODY_PRINT_RANGE_ABB" +msgstr "نطاق الطباعة" + +msgid "IDS_PRT_BODY_COLOUR" +msgstr "اللون" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT" +msgstr "المسودة" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD" +msgstr "عادي" + +msgid "IDS_COM_BODY_HIGH" +msgstr "عالي" + +msgid "IDS_ST_BODY_NORMAL" +msgstr "عادي" + +msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING" +msgstr "جار انتظار الطباعة..." + +msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING" +msgstr "جار التجهيز للطباعة..." + +msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING" +msgstr "قيد الطباعة" + +msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB" +msgstr "فوتوغرافي" + +msgid "IDS_ST_BODY_GLOSSY" +msgstr "راقي" + +msgid "IDS_DIC_BODY_ALL" +msgstr "الكل" + +msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY" +msgstr "جودة الطباعة" + +msgid "IDS_IMGE_HEADER_GREY" +msgstr "رمادي" + +msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE" +msgstr "لا توجد طابعات متوفرة" + +msgid "IDS_COM_BODY_NO_DEVICES" +msgstr "لا توجد أجهزة" + +msgid "IDS_PRT_POP_PRINTING_CANCELED" +msgstr "تم إلغاء الطباعة" + +msgid "IDS_COM_POP_MEMORY_FULL" +msgstr "الذاكرة ممتلئة" + +msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING" +msgstr "جار البحث عن طابعات..." + +msgid "IDS_PRT_POP_CHECKPRINTERSTATE" +msgstr "فحص حالة الطابعة" + +msgid "IDS_ASEML_POP_SEARCH_FAILED" +msgstr "فشل البحث" + +msgid "IDS_PRT_POP_PRINTINGERROR" +msgstr "خطأ طباعة" + +msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED" +msgstr "تم قطع اتصال Wi-Fi" + +msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER" +msgstr "ورق" + +msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2" +msgstr "تم فصل الطابعة" + diff --git a/mobileprint/po/az.po b/mobileprint/po/az.po new file mode 100644 index 0000000..7adc1ea --- /dev/null +++ b/mobileprint/po/az.po @@ -0,0 +1,171 @@ +msgid "IDS_COM_SK_HIDE" +msgstr "Gizlə" + +msgid "IDS_COM_SK_REFRESH" +msgstr "Yenilǝ" + +msgid "IDS_COM_SK_CANCEL" +msgstr "Ləğv et" + +msgid "IDS_IMGE_OPT_ROTATE" +msgstr "Döndər" + +msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR" +msgstr "Sistemdə yanlışlıq" + +msgid "IDS_COM_SK_BACK" +msgstr "Geriyə" + +msgid "IDS_COM_BODY_WI_FI" +msgstr "Wi-Fi" + +msgid "IDS_COM_SK_OK" +msgstr "OK" + +msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE" +msgstr "Dəstəklənməyən fayl tipi" + +msgid "IDS_COM_OPT1_WI_FI_DIRECT" +msgstr "Wi-Fi Direct" + +msgid "IDS_COM_POP_UNSUPPORTED" +msgstr "Dəstəklənmədi" + +msgid "IDS_BR_BODY_CURRENT_PAGE" +msgstr "Cari səhifə" + +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Printer qoşuldu" + +msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT" +msgstr "Çap üçün Wi-Fi şəbəkəsinə qoşul" + +msgid "IDS_PRT_BODY_SELECT_PRINTER" +msgstr "Printeri seç" + +msgid "IDS_PRT_SK_PRINT_PREVIEW" +msgstr "Ä°lkin baxış" + +msgid "IDS_SMPOS_SK3_PRINT" +msgstr "Çap et" + +msgid "IDS_IMGE_BODY_SIZE" +msgstr "Ölçü" + +msgid "IDS_PRT_BODY_SCALING_ABB" +msgstr "Miqyaslama" + +msgid "IDS_COM_BODY_SETTING" +msgstr "Parametr" + +msgid "IDS_BT_OPT_FIT_TO_PAPER" +msgstr "Kağıza uyğunlaşdırın" + +msgid "IDS_COM_SK_CUSTOM" +msgstr "Zövqə uyğun" + +msgid "IDS_IMGE_BODY_WIDTH" +msgstr "En" + +msgid "IDS_IMGE_BODY_HEIGHT" +msgstr "Yüksəklik" + +msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB" +msgstr "Nisbəti saxla" + +msgid "IDS_COM_BODY_UNIT_INCH" +msgstr "düym" + +msgid "IDS_COM_BODY_UNIT_CM" +msgstr "sm" + +msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB" +msgstr "1 vərəqdə %d səhifə" + +msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS" +msgstr "Printer parametrləri" + +msgid "IDS_PRT_BODY_PRINTER" +msgstr "Printer" + +msgid "IDS_PRT_BODY_PAPERSIZE" +msgstr "Kağızın ölçüsü" + +msgid "IDS_PRT_BODY_NUMBEROFCOPIES" +msgstr "Surətlərin sayı" + +msgid "IDS_PRT_BODY_PRINT_RANGE_ABB" +msgstr "Çap diapazonu" + +msgid "IDS_PRT_BODY_COLOUR" +msgstr "Rəng" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT" +msgstr "Qaralama" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD" +msgstr "Standart" + +msgid "IDS_COM_BODY_HIGH" +msgstr "Yüksək" + +msgid "IDS_ST_BODY_NORMAL" +msgstr "Normal" + +msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING" +msgstr "Çapı gözləyir..." + +msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING" +msgstr "Çapa hazırlayır..." + +msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING" +msgstr "Çap edilir..." + +msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB" +msgstr "Fotoqrafik" + +msgid "IDS_ST_BODY_GLOSSY" +msgstr "Glossy" + +msgid "IDS_DIC_BODY_ALL" +msgstr "Hamısını" + +msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY" +msgstr "Çap keyfiyyəti" + +msgid "IDS_IMGE_HEADER_GREY" +msgstr "Boz" + +msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE" +msgstr "Printerlərdən istifadə etmək mümkün deyil" + +msgid "IDS_COM_BODY_NO_DEVICES" +msgstr "Cihaz yoxdur" + +msgid "IDS_PRT_POP_PRINTING_CANCELED" +msgstr "Çap etmə ləğv edilib" + +msgid "IDS_COM_POP_MEMORY_FULL" +msgstr "Yaddaş dolmuşdur" + +msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING" +msgstr "Printerləri axtarır..." + +msgid "IDS_PRT_POP_CHECKPRINTERSTATE" +msgstr "Printerin vəziyyətini yoxla" + +msgid "IDS_ASEML_POP_SEARCH_FAILED" +msgstr "Axtarış uğursuz oldu" + +msgid "IDS_PRT_POP_PRINTINGERROR" +msgstr "Çapla əlaqədar xəta" + +msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED" +msgstr "Wi-Fi bağlantısı kəsildi" + +msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER" +msgstr "Kağız" + +msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2" +msgstr "Printer ilə əlaqə kəsildi" + diff --git a/mobileprint/po/bg.po b/mobileprint/po/bg.po new file mode 100644 index 0000000..3281ae1 --- /dev/null +++ b/mobileprint/po/bg.po @@ -0,0 +1,171 @@ +msgid "IDS_COM_SK_HIDE" +msgstr "Скриване" + +msgid "IDS_COM_SK_REFRESH" +msgstr "Презар." + +msgid "IDS_COM_SK_CANCEL" +msgstr "Отмени" + +msgid "IDS_IMGE_OPT_ROTATE" +msgstr "Завъртане" + +msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR" +msgstr "Системна грешка" + +msgid "IDS_COM_SK_BACK" +msgstr "Назад" + +msgid "IDS_COM_BODY_WI_FI" +msgstr "Wi-Fi" + +msgid "IDS_COM_SK_OK" +msgstr "OK" + +msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE" +msgstr "Неподдържан тип файл" + +msgid "IDS_COM_OPT1_WI_FI_DIRECT" +msgstr "Wi-Fi Direct" + +msgid "IDS_COM_POP_UNSUPPORTED" +msgstr "Не се поддържа" + +msgid "IDS_BR_BODY_CURRENT_PAGE" +msgstr "Текуща страница" + +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Принтерът е свързан" + +msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT" +msgstr "Свързване с Wi-Fi мрежа, за да се отпечатва" + +msgid "IDS_PRT_BODY_SELECT_PRINTER" +msgstr "Избор на принтер" + +msgid "IDS_PRT_SK_PRINT_PREVIEW" +msgstr "Преглед" + +msgid "IDS_SMPOS_SK3_PRINT" +msgstr "Печат" + +msgid "IDS_IMGE_BODY_SIZE" +msgstr "Размер" + +msgid "IDS_PRT_BODY_SCALING_ABB" +msgstr "Мащабиране" + +msgid "IDS_COM_BODY_SETTING" +msgstr "Настройка" + +msgid "IDS_BT_OPT_FIT_TO_PAPER" +msgstr "Оразмери според формата на листа" + +msgid "IDS_COM_SK_CUSTOM" +msgstr "Персонлз." + +msgid "IDS_IMGE_BODY_WIDTH" +msgstr "Ширина" + +msgid "IDS_IMGE_BODY_HEIGHT" +msgstr "Височина" + +msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB" +msgstr "Запази съотношението" + +msgid "IDS_COM_BODY_UNIT_INCH" +msgstr "инч" + +msgid "IDS_COM_BODY_UNIT_CM" +msgstr "см" + +msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB" +msgstr "%d страници на 1 лист" + +msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS" +msgstr "Настройки на принтер" + +msgid "IDS_PRT_BODY_PRINTER" +msgstr "Принтер" + +msgid "IDS_PRT_BODY_PAPERSIZE" +msgstr "Размер на страницата" + +msgid "IDS_PRT_BODY_NUMBEROFCOPIES" +msgstr "Брой копия" + +msgid "IDS_PRT_BODY_PRINT_RANGE_ABB" +msgstr "Печат на диапазон" + +msgid "IDS_PRT_BODY_COLOUR" +msgstr "Цвят" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT" +msgstr "Чернова" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD" +msgstr "Стандартна" + +msgid "IDS_COM_BODY_HIGH" +msgstr "Висок" + +msgid "IDS_ST_BODY_NORMAL" +msgstr "Нормален" + +msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING" +msgstr "Изчакване за печат..." + +msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING" +msgstr "Подготовка за печат..." + +msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING" +msgstr "Отпечатване..." + +msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB" +msgstr "Фотографска" + +msgid "IDS_ST_BODY_GLOSSY" +msgstr "Бляскъв" + +msgid "IDS_DIC_BODY_ALL" +msgstr "Всички" + +msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY" +msgstr "Качество на печат" + +msgid "IDS_IMGE_HEADER_GREY" +msgstr "Сив" + +msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE" +msgstr "Няма достъпни принтери" + +msgid "IDS_COM_BODY_NO_DEVICES" +msgstr "Няма устройства" + +msgid "IDS_PRT_POP_PRINTING_CANCELED" +msgstr "Отпечатването е отменено" + +msgid "IDS_COM_POP_MEMORY_FULL" +msgstr "Паметта е заета" + +msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING" +msgstr "Търсене на принтери..." + +msgid "IDS_PRT_POP_CHECKPRINTERSTATE" +msgstr "Проверка състояние на принтер" + +msgid "IDS_ASEML_POP_SEARCH_FAILED" +msgstr "Търсенето неуспешно" + +msgid "IDS_PRT_POP_PRINTINGERROR" +msgstr "Грешка при печат" + +msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED" +msgstr "Прекъсната Wi-Fi връзка" + +msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER" +msgstr "Хартия" + +msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2" +msgstr "Принтерът не е свързан" + diff --git a/mobileprint/po/ca.po b/mobileprint/po/ca.po new file mode 100644 index 0000000..47b232a --- /dev/null +++ b/mobileprint/po/ca.po @@ -0,0 +1,171 @@ +msgid "IDS_COM_SK_HIDE" +msgstr "Ocultar" + +msgid "IDS_COM_SK_REFRESH" +msgstr "Actualitzar" + +msgid "IDS_COM_SK_CANCEL" +msgstr "Cancel·lar" + +msgid "IDS_IMGE_OPT_ROTATE" +msgstr "Girar" + +msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR" +msgstr "Error del sistema" + +msgid "IDS_COM_SK_BACK" +msgstr "Enrere" + +msgid "IDS_COM_BODY_WI_FI" +msgstr "Wi-Fi" + +msgid "IDS_COM_SK_OK" +msgstr "Acceptar" + +msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE" +msgstr "No s'admet el tipus de fitxer" + +msgid "IDS_COM_OPT1_WI_FI_DIRECT" +msgstr "Wi-Fi Direct" + +msgid "IDS_COM_POP_UNSUPPORTED" +msgstr "No s'admet" + +msgid "IDS_BR_BODY_CURRENT_PAGE" +msgstr "Pàgina actual" + +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Impressora connectada" + +msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT" +msgstr "Connectar a una xarxa Wi-Fi per imprimir" + +msgid "IDS_PRT_BODY_SELECT_PRINTER" +msgstr "Seleccionar impressora" + +msgid "IDS_PRT_SK_PRINT_PREVIEW" +msgstr "Vista prèvia" + +msgid "IDS_SMPOS_SK3_PRINT" +msgstr "Imprimir" + +msgid "IDS_IMGE_BODY_SIZE" +msgstr "Mida" + +msgid "IDS_PRT_BODY_SCALING_ABB" +msgstr "Canvi de mida" + +msgid "IDS_COM_BODY_SETTING" +msgstr "Ajustament" + +msgid "IDS_BT_OPT_FIT_TO_PAPER" +msgstr "Ajustar al paper" + +msgid "IDS_COM_SK_CUSTOM" +msgstr "Personal." + +msgid "IDS_IMGE_BODY_WIDTH" +msgstr "Amplària" + +msgid "IDS_IMGE_BODY_HEIGHT" +msgstr "Alçària" + +msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB" +msgstr "Mantenir rel aspecte" + +msgid "IDS_COM_BODY_UNIT_INCH" +msgstr "polzada" + +msgid "IDS_COM_BODY_UNIT_CM" +msgstr "cm" + +msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB" +msgstr "%d pàgines en 1 full" + +msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS" +msgstr "Ajustaments d'impressora" + +msgid "IDS_PRT_BODY_PRINTER" +msgstr "Impressora" + +msgid "IDS_PRT_BODY_PAPERSIZE" +msgstr "Mida de paper" + +msgid "IDS_PRT_BODY_NUMBEROFCOPIES" +msgstr "Nombre de còpies" + +msgid "IDS_PRT_BODY_PRINT_RANGE_ABB" +msgstr "Interval d'impressió" + +msgid "IDS_PRT_BODY_COLOUR" +msgstr "Color" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT" +msgstr "Esborrany" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD" +msgstr "Estàndard" + +msgid "IDS_COM_BODY_HIGH" +msgstr "Alta" + +msgid "IDS_ST_BODY_NORMAL" +msgstr "Normal" + +msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING" +msgstr "Esperant per imprimir..." + +msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING" +msgstr "Preparant per imprimir..." + +msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING" +msgstr "Imprimint..." + +msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB" +msgstr "Fotogràfic" + +msgid "IDS_ST_BODY_GLOSSY" +msgstr "Glossy" + +msgid "IDS_DIC_BODY_ALL" +msgstr "Tot" + +msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY" +msgstr "Qualitat d'impressió" + +msgid "IDS_IMGE_HEADER_GREY" +msgstr "Gris" + +msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE" +msgstr "Cap impressora disponible" + +msgid "IDS_COM_BODY_NO_DEVICES" +msgstr "Sense dispositius" + +msgid "IDS_PRT_POP_PRINTING_CANCELED" +msgstr "Impressió cancel·lada" + +msgid "IDS_COM_POP_MEMORY_FULL" +msgstr "Memòria plena" + +msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING" +msgstr "Cercant impressores..." + +msgid "IDS_PRT_POP_CHECKPRINTERSTATE" +msgstr "Comprovar l'estat de la impressora" + +msgid "IDS_ASEML_POP_SEARCH_FAILED" +msgstr "Error en la cerca" + +msgid "IDS_PRT_POP_PRINTINGERROR" +msgstr "Error d'impressió" + +msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED" +msgstr "Wi-Fi desconnectat" + +msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER" +msgstr "Paper" + +msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2" +msgstr "Impressora desconnectada" + diff --git a/mobileprint/po/cs.po b/mobileprint/po/cs.po new file mode 100644 index 0000000..f539f6b --- /dev/null +++ b/mobileprint/po/cs.po @@ -0,0 +1,171 @@ +msgid "IDS_COM_SK_HIDE" +msgstr "Skrýt" + +msgid "IDS_COM_SK_REFRESH" +msgstr "Obnovit" + +msgid "IDS_COM_SK_CANCEL" +msgstr "ZruÅ¡it" + +msgid "IDS_IMGE_OPT_ROTATE" +msgstr "Otočit" + +msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR" +msgstr "Systémová chyba" + +msgid "IDS_COM_SK_BACK" +msgstr "Zpět" + +msgid "IDS_COM_BODY_WI_FI" +msgstr "Wi-Fi" + +msgid "IDS_COM_SK_OK" +msgstr "OK" + +msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE" +msgstr "Nepodporovaný typ souboru" + +msgid "IDS_COM_OPT1_WI_FI_DIRECT" +msgstr "Wi-Fi Direct" + +msgid "IDS_COM_POP_UNSUPPORTED" +msgstr "Není podporováno" + +msgid "IDS_BR_BODY_CURRENT_PAGE" +msgstr "Aktuální stránka" + +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Tiskárna byla připojena" + +msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT" +msgstr "Pro tisk připojit k síti Wi-Fi" + +msgid "IDS_PRT_BODY_SELECT_PRINTER" +msgstr "Vybrat tiskárnu" + +msgid "IDS_PRT_SK_PRINT_PREVIEW" +msgstr "Náhled" + +msgid "IDS_SMPOS_SK3_PRINT" +msgstr "Tisk" + +msgid "IDS_IMGE_BODY_SIZE" +msgstr "Velikost" + +msgid "IDS_PRT_BODY_SCALING_ABB" +msgstr "Měřítko" + +msgid "IDS_COM_BODY_SETTING" +msgstr "Nastavení" + +msgid "IDS_BT_OPT_FIT_TO_PAPER" +msgstr "Přizpůsobit papíru" + +msgid "IDS_COM_SK_CUSTOM" +msgstr "Vlastní" + +msgid "IDS_IMGE_BODY_WIDTH" +msgstr "Šířka" + +msgid "IDS_IMGE_BODY_HEIGHT" +msgstr "Výška" + +msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB" +msgstr "Zachovat poměr stran" + +msgid "IDS_COM_BODY_UNIT_INCH" +msgstr "palec" + +msgid "IDS_COM_BODY_UNIT_CM" +msgstr "cm" + +msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB" +msgstr "%d stránek na 1 list" + +msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS" +msgstr "Nastavení tiskárny" + +msgid "IDS_PRT_BODY_PRINTER" +msgstr "Tiskárna" + +msgid "IDS_PRT_BODY_PAPERSIZE" +msgstr "Velikost papíru" + +msgid "IDS_PRT_BODY_NUMBEROFCOPIES" +msgstr "Počet kopií" + +msgid "IDS_PRT_BODY_PRINT_RANGE_ABB" +msgstr "Rozsah tisku" + +msgid "IDS_PRT_BODY_COLOUR" +msgstr "Barva" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT" +msgstr "Koncept" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD" +msgstr "Standardní" + +msgid "IDS_COM_BODY_HIGH" +msgstr "Vysoká" + +msgid "IDS_ST_BODY_NORMAL" +msgstr "Normální" + +msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING" +msgstr "Čeká na tisk..." + +msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING" +msgstr "Probíhá příprava tisku..." + +msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING" +msgstr "Tisk..." + +msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB" +msgstr "Fotografický" + +msgid "IDS_ST_BODY_GLOSSY" +msgstr "Glossy" + +msgid "IDS_DIC_BODY_ALL" +msgstr "VÅ¡e" + +msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY" +msgstr "Kvalita tisku" + +msgid "IDS_IMGE_HEADER_GREY" +msgstr "Å edá" + +msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE" +msgstr "Žádné tiskárny nejsou k dispozici" + +msgid "IDS_COM_BODY_NO_DEVICES" +msgstr "Žádná zařízení" + +msgid "IDS_PRT_POP_PRINTING_CANCELED" +msgstr "Tisk byl zruÅ¡en" + +msgid "IDS_COM_POP_MEMORY_FULL" +msgstr "Paměť je plná" + +msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING" +msgstr "Vyhledávání tiskáren..." + +msgid "IDS_PRT_POP_CHECKPRINTERSTATE" +msgstr "Zkontrolovat stav tiskárny" + +msgid "IDS_ASEML_POP_SEARCH_FAILED" +msgstr "Hledání se nezdařilo" + +msgid "IDS_PRT_POP_PRINTINGERROR" +msgstr "Chyba tisku" + +msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED" +msgstr "Wi-Fi bylo odpojeno" + +msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER" +msgstr "Papír" + +msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2" +msgstr "Tiskárna byla odpojena" + diff --git a/mobileprint/po/da.po b/mobileprint/po/da.po new file mode 100644 index 0000000..43bdcd5 --- /dev/null +++ b/mobileprint/po/da.po @@ -0,0 +1,171 @@ +msgid "IDS_COM_SK_HIDE" +msgstr "Skjul" + +msgid "IDS_COM_SK_REFRESH" +msgstr "Opdatér" + +msgid "IDS_COM_SK_CANCEL" +msgstr "Annuller" + +msgid "IDS_IMGE_OPT_ROTATE" +msgstr "Roter" + +msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR" +msgstr "Systemfejl" + +msgid "IDS_COM_SK_BACK" +msgstr "Tilbage" + +msgid "IDS_COM_BODY_WI_FI" +msgstr "Wi-Fi" + +msgid "IDS_COM_SK_OK" +msgstr "OK" + +msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE" +msgstr "Filtype understøttes ikke" + +msgid "IDS_COM_OPT1_WI_FI_DIRECT" +msgstr "Wi-Fi Direct" + +msgid "IDS_COM_POP_UNSUPPORTED" +msgstr "Understøttes ikke" + +msgid "IDS_BR_BODY_CURRENT_PAGE" +msgstr "Aktuel side" + +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Printer tilsluttet" + +msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT" +msgstr "Slut til Wi-Fi-netværk for at printe" + +msgid "IDS_PRT_BODY_SELECT_PRINTER" +msgstr "Vælg printer" + +msgid "IDS_PRT_SK_PRINT_PREVIEW" +msgstr "Eksempel" + +msgid "IDS_SMPOS_SK3_PRINT" +msgstr "Udskriv" + +msgid "IDS_IMGE_BODY_SIZE" +msgstr "Størrelse" + +msgid "IDS_PRT_BODY_SCALING_ABB" +msgstr "Skalerer" + +msgid "IDS_COM_BODY_SETTING" +msgstr "Indstilling" + +msgid "IDS_BT_OPT_FIT_TO_PAPER" +msgstr "Tilpas til papir" + +msgid "IDS_COM_SK_CUSTOM" +msgstr "Brugerdefineret" + +msgid "IDS_IMGE_BODY_WIDTH" +msgstr "Bredde" + +msgid "IDS_IMGE_BODY_HEIGHT" +msgstr "Højde" + +msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB" +msgstr "Behold højde-bredde-f." + +msgid "IDS_COM_BODY_UNIT_INCH" +msgstr "tommer" + +msgid "IDS_COM_BODY_UNIT_CM" +msgstr "cm" + +msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB" +msgstr "%d sider pÃ¥ 1 ark" + +msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS" +msgstr "Printerindstillinger" + +msgid "IDS_PRT_BODY_PRINTER" +msgstr "Printer" + +msgid "IDS_PRT_BODY_PAPERSIZE" +msgstr "Papirstørrelse" + +msgid "IDS_PRT_BODY_NUMBEROFCOPIES" +msgstr "Antal kopier" + +msgid "IDS_PRT_BODY_PRINT_RANGE_ABB" +msgstr "Udskriv interval" + +msgid "IDS_PRT_BODY_COLOUR" +msgstr "Farve" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT" +msgstr "Udkast" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD" +msgstr "Standard" + +msgid "IDS_COM_BODY_HIGH" +msgstr "Høj" + +msgid "IDS_ST_BODY_NORMAL" +msgstr "Normal" + +msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING" +msgstr "Venter pÃ¥ udskrivning ..." + +msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING" +msgstr "Gør klar til at udskrive ..." + +msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING" +msgstr "Udskriver..." + +msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB" +msgstr "Fotografisk" + +msgid "IDS_ST_BODY_GLOSSY" +msgstr "Blank" + +msgid "IDS_DIC_BODY_ALL" +msgstr "Alle" + +msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY" +msgstr "Udskriftskvalitet" + +msgid "IDS_IMGE_HEADER_GREY" +msgstr "GrÃ¥" + +msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE" +msgstr "Ingen tilgængelige printere" + +msgid "IDS_COM_BODY_NO_DEVICES" +msgstr "Ingen enheder" + +msgid "IDS_PRT_POP_PRINTING_CANCELED" +msgstr "Udskrivning annulleret" + +msgid "IDS_COM_POP_MEMORY_FULL" +msgstr "Hukommelsen er fuld" + +msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING" +msgstr "Søger efter printere ..." + +msgid "IDS_PRT_POP_CHECKPRINTERSTATE" +msgstr "Kontrollér printerstatus" + +msgid "IDS_ASEML_POP_SEARCH_FAILED" +msgstr "Søgning mislykkedes" + +msgid "IDS_PRT_POP_PRINTINGERROR" +msgstr "Udskrivningsfejl" + +msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED" +msgstr "Wi-Fi frakoblet" + +msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER" +msgstr "Papir" + +msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2" +msgstr "Printer frakoblet" + diff --git a/mobileprint/po/de_DE.po b/mobileprint/po/de_DE.po new file mode 100644 index 0000000..17ab732 --- /dev/null +++ b/mobileprint/po/de_DE.po @@ -0,0 +1,171 @@ +msgid "IDS_COM_SK_HIDE" +msgstr "Ausblenden" + +msgid "IDS_COM_SK_REFRESH" +msgstr "Aktualisieren" + +msgid "IDS_COM_SK_CANCEL" +msgstr "Abbrechen" + +msgid "IDS_IMGE_OPT_ROTATE" +msgstr "Ausrichten" + +msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR" +msgstr "Systemfehler" + +msgid "IDS_COM_SK_BACK" +msgstr "Zurück" + +msgid "IDS_COM_BODY_WI_FI" +msgstr "WLAN" + +msgid "IDS_COM_SK_OK" +msgstr "OK" + +msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE" +msgstr "Nicht unterstützter Dateityp" + +msgid "IDS_COM_OPT1_WI_FI_DIRECT" +msgstr "Wi-Fi Direct" + +msgid "IDS_COM_POP_UNSUPPORTED" +msgstr "Nicht unterstützt" + +msgid "IDS_BR_BODY_CURRENT_PAGE" +msgstr "Aktuelle Seite" + +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Drucker verbunden" + +msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT" +msgstr "Zum Drucken mit WLAN verbinden" + +msgid "IDS_PRT_BODY_SELECT_PRINTER" +msgstr "Drucker auswählen" + +msgid "IDS_PRT_SK_PRINT_PREVIEW" +msgstr "Vorsch." + +msgid "IDS_SMPOS_SK3_PRINT" +msgstr "Drucken" + +msgid "IDS_IMGE_BODY_SIZE" +msgstr "Größe" + +msgid "IDS_PRT_BODY_SCALING_ABB" +msgstr "Skalierung" + +msgid "IDS_COM_BODY_SETTING" +msgstr "Einstellung" + +msgid "IDS_BT_OPT_FIT_TO_PAPER" +msgstr "An Papiergröße anpassen" + +msgid "IDS_COM_SK_CUSTOM" +msgstr "Eig.Menü" + +msgid "IDS_IMGE_BODY_WIDTH" +msgstr "Breite" + +msgid "IDS_IMGE_BODY_HEIGHT" +msgstr "Größe" + +msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB" +msgstr "Bildseitenform. beibeh." + +msgid "IDS_COM_BODY_UNIT_INCH" +msgstr "Zoll" + +msgid "IDS_COM_BODY_UNIT_CM" +msgstr "cm" + +msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB" +msgstr "%d Seiten auf 1 Blatt" + +msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS" +msgstr "Druckereinstellungen" + +msgid "IDS_PRT_BODY_PRINTER" +msgstr "Drucker" + +msgid "IDS_PRT_BODY_PAPERSIZE" +msgstr "Papiergröße" + +msgid "IDS_PRT_BODY_NUMBEROFCOPIES" +msgstr "Anzahl der Kopien" + +msgid "IDS_PRT_BODY_PRINT_RANGE_ABB" +msgstr "Druckbereich" + +msgid "IDS_PRT_BODY_COLOUR" +msgstr "Farbe" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT" +msgstr "Entwurf" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD" +msgstr "Standard" + +msgid "IDS_COM_BODY_HIGH" +msgstr "Hoch" + +msgid "IDS_ST_BODY_NORMAL" +msgstr "Normal" + +msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING" +msgstr "Auf Druck wird gewartet..." + +msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING" +msgstr "Drucken wird vorbereitet..." + +msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING" +msgstr "Druckvorgang läuft..." + +msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB" +msgstr "Fotografisch" + +msgid "IDS_ST_BODY_GLOSSY" +msgstr "Glossy" + +msgid "IDS_DIC_BODY_ALL" +msgstr "Alle" + +msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY" +msgstr "Druckqualität" + +msgid "IDS_IMGE_HEADER_GREY" +msgstr "Grau" + +msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE" +msgstr "Keine Drucker verfügbar" + +msgid "IDS_COM_BODY_NO_DEVICES" +msgstr "Keine Geräte" + +msgid "IDS_PRT_POP_PRINTING_CANCELED" +msgstr "Druck abgebrochen" + +msgid "IDS_COM_POP_MEMORY_FULL" +msgstr "Speicher voll" + +msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING" +msgstr "Drucker werden gesucht..." + +msgid "IDS_PRT_POP_CHECKPRINTERSTATE" +msgstr "Druckerstatus überprüfen" + +msgid "IDS_ASEML_POP_SEARCH_FAILED" +msgstr "Suche fehlgeschlagen" + +msgid "IDS_PRT_POP_PRINTINGERROR" +msgstr "Druckfehler" + +msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED" +msgstr "WLAN getrennt" + +msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER" +msgstr "Papier" + +msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2" +msgstr "Verbindung zum Drucker beendet" + diff --git a/mobileprint/po/el_GR.po b/mobileprint/po/el_GR.po new file mode 100644 index 0000000..a106396 --- /dev/null +++ b/mobileprint/po/el_GR.po @@ -0,0 +1,171 @@ +msgid "IDS_COM_SK_HIDE" +msgstr "Απόκρυψη" + +msgid "IDS_COM_SK_REFRESH" +msgstr "Ανανέωση" + +msgid "IDS_COM_SK_CANCEL" +msgstr "Άκυρο" + +msgid "IDS_IMGE_OPT_ROTATE" +msgstr "Περιστροφή" + +msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR" +msgstr "Σφάλμα συστήματος" + +msgid "IDS_COM_SK_BACK" +msgstr "Πίσω" + +msgid "IDS_COM_BODY_WI_FI" +msgstr "Wi-Fi" + +msgid "IDS_COM_SK_OK" +msgstr "OK" + +msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE" +msgstr "Μη υποστηριζόμενος τύπος αρχείου" + +msgid "IDS_COM_OPT1_WI_FI_DIRECT" +msgstr "Wi-Fi Direct" + +msgid "IDS_COM_POP_UNSUPPORTED" +msgstr "Δεν υποστηρίζεται" + +msgid "IDS_BR_BODY_CURRENT_PAGE" +msgstr "Τρέχουσα σελίδα" + +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Συνδέθηκε εκτυπωτής" + +msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT" +msgstr "Για να εκτυπώσετε, συνδεθείτε σε δίκτυο Wi-Fi" + +msgid "IDS_PRT_BODY_SELECT_PRINTER" +msgstr "Επιλογή εκτυπωτή" + +msgid "IDS_PRT_SK_PRINT_PREVIEW" +msgstr "Προεπ." + +msgid "IDS_SMPOS_SK3_PRINT" +msgstr "Εκτύπωση" + +msgid "IDS_IMGE_BODY_SIZE" +msgstr "Μέγεθος" + +msgid "IDS_PRT_BODY_SCALING_ABB" +msgstr "Διαβάθμιση" + +msgid "IDS_COM_BODY_SETTING" +msgstr "Ρύθμιση" + +msgid "IDS_BT_OPT_FIT_TO_PAPER" +msgstr "Προσαρμογή στο χαρτί" + +msgid "IDS_COM_SK_CUSTOM" +msgstr "Αγαπημένα" + +msgid "IDS_IMGE_BODY_WIDTH" +msgstr "Πλάτος" + +msgid "IDS_IMGE_BODY_HEIGHT" +msgstr "Ύψος" + +msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB" +msgstr "Διατήρηση αναλ. εικόνας" + +msgid "IDS_COM_BODY_UNIT_INCH" +msgstr "inch" + +msgid "IDS_COM_BODY_UNIT_CM" +msgstr "cm" + +msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB" +msgstr "%d σελίδες σε 1 φύλλο" + +msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS" +msgstr "Ρυθμίσεις εκτυπωτή" + +msgid "IDS_PRT_BODY_PRINTER" +msgstr "Εκτυπωτής" + +msgid "IDS_PRT_BODY_PAPERSIZE" +msgstr "Μέγεθος χαρτιού" + +msgid "IDS_PRT_BODY_NUMBEROFCOPIES" +msgstr "Αριθμός αντιγράφων" + +msgid "IDS_PRT_BODY_PRINT_RANGE_ABB" +msgstr "Εύρος εκτύπωσης" + +msgid "IDS_PRT_BODY_COLOUR" +msgstr "Χρώμα" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT" +msgstr "Πρόχειρο" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD" +msgstr "Τυπική" + +msgid "IDS_COM_BODY_HIGH" +msgstr "Υψηλή" + +msgid "IDS_ST_BODY_NORMAL" +msgstr "Κανονικό" + +msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING" +msgstr "Αναμονή εκτύπωσης..." + +msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING" +msgstr "Προετοιμασία για εκτύπωση..." + +msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING" +msgstr "Εκτύπωση..." + +msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB" +msgstr "Φωτογραφική" + +msgid "IDS_ST_BODY_GLOSSY" +msgstr "Glossy" + +msgid "IDS_DIC_BODY_ALL" +msgstr "Όλα" + +msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY" +msgstr "Ποιότητα εκτύπωσης" + +msgid "IDS_IMGE_HEADER_GREY" +msgstr "Γκρι" + +msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE" +msgstr "Δεν υπάρχουν διαθέσιμοι εκτυπωτές" + +msgid "IDS_COM_BODY_NO_DEVICES" +msgstr "Καμία συσκευή" + +msgid "IDS_PRT_POP_PRINTING_CANCELED" +msgstr "Ακύρωση εκτύπωσης" + +msgid "IDS_COM_POP_MEMORY_FULL" +msgstr "Μνήμη ημερολογίου πλήρης" + +msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING" +msgstr "Αναζήτηση για εκτυπωτές..." + +msgid "IDS_PRT_POP_CHECKPRINTERSTATE" +msgstr "Ελέγξτε την κατάσταση του εκτυπωτή" + +msgid "IDS_ASEML_POP_SEARCH_FAILED" +msgstr "Αποτυχία αναζήτησης" + +msgid "IDS_PRT_POP_PRINTINGERROR" +msgstr "Σφάλμα εκτύπωσης" + +msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED" +msgstr "Αποσύνδεση Wi-Fi" + +msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER" +msgstr "ΧΑρτί" + +msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2" +msgstr "Αποσύνδεση εκτυπωτή" + diff --git a/mobileprint/po/en.po b/mobileprint/po/en.po new file mode 100644 index 0000000..1507df1 --- /dev/null +++ b/mobileprint/po/en.po @@ -0,0 +1,171 @@ +msgid "IDS_COM_SK_HIDE" +msgstr "Hide" + +msgid "IDS_COM_SK_REFRESH" +msgstr "Refresh" + +msgid "IDS_COM_SK_CANCEL" +msgstr "Cancel" + +msgid "IDS_IMGE_OPT_ROTATE" +msgstr "Rotate" + +msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR" +msgstr "System error" + +msgid "IDS_COM_SK_BACK" +msgstr "Back" + +msgid "IDS_COM_BODY_WI_FI" +msgstr "Wi-Fi" + +msgid "IDS_COM_SK_OK" +msgstr "OK" + +msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE" +msgstr "Unsupported file type" + +msgid "IDS_COM_OPT1_WI_FI_DIRECT" +msgstr "Wi-Fi Direct" + +msgid "IDS_COM_POP_UNSUPPORTED" +msgstr "Unsupported" + +msgid "IDS_BR_BODY_CURRENT_PAGE" +msgstr "Current page" + +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Printer connected" + +msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT" +msgstr "Connect to Wi-Fi network to print" + +msgid "IDS_PRT_BODY_SELECT_PRINTER" +msgstr "Select printer" + +msgid "IDS_PRT_SK_PRINT_PREVIEW" +msgstr "Preview" + +msgid "IDS_SMPOS_SK3_PRINT" +msgstr "Print" + +msgid "IDS_IMGE_BODY_SIZE" +msgstr "Size" + +msgid "IDS_PRT_BODY_SCALING_ABB" +msgstr "Scaling" + +msgid "IDS_COM_BODY_SETTING" +msgstr "Setting" + +msgid "IDS_BT_OPT_FIT_TO_PAPER" +msgstr "Fit to paper" + +msgid "IDS_COM_SK_CUSTOM" +msgstr "Custom" + +msgid "IDS_IMGE_BODY_WIDTH" +msgstr "Width" + +msgid "IDS_IMGE_BODY_HEIGHT" +msgstr "Height" + +msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB" +msgstr "Keep aspect ratio" + +msgid "IDS_COM_BODY_UNIT_INCH" +msgstr "inch" + +msgid "IDS_COM_BODY_UNIT_CM" +msgstr "cm" + +msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB" +msgstr "%d pages on 1 sheet" + +msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS" +msgstr "Printer settings" + +msgid "IDS_PRT_BODY_PRINTER" +msgstr "Printer" + +msgid "IDS_PRT_BODY_PAPERSIZE" +msgstr "Paper size" + +msgid "IDS_PRT_BODY_NUMBEROFCOPIES" +msgstr "Number of copies" + +msgid "IDS_PRT_BODY_PRINT_RANGE_ABB" +msgstr "Print range" + +msgid "IDS_PRT_BODY_COLOUR" +msgstr "Colour" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT" +msgstr "Draft" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD" +msgstr "Standard" + +msgid "IDS_COM_BODY_HIGH" +msgstr "High" + +msgid "IDS_ST_BODY_NORMAL" +msgstr "Normal" + +msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING" +msgstr "Waiting to print..." + +msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING" +msgstr "Preparing to print..." + +msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING" +msgstr "Printing..." + +msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB" +msgstr "Photographic" + +msgid "IDS_ST_BODY_GLOSSY" +msgstr "Glossy" + +msgid "IDS_DIC_BODY_ALL" +msgstr "All" + +msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY" +msgstr "Print quality" + +msgid "IDS_IMGE_HEADER_GREY" +msgstr "Grey" + +msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE" +msgstr "No printers available" + +msgid "IDS_COM_BODY_NO_DEVICES" +msgstr "No devices" + +msgid "IDS_PRT_POP_PRINTING_CANCELED" +msgstr "Printing cancelled" + +msgid "IDS_COM_POP_MEMORY_FULL" +msgstr "Memory full" + +msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING" +msgstr "Searching for printers..." + +msgid "IDS_PRT_POP_CHECKPRINTERSTATE" +msgstr "Check the printer status" + +msgid "IDS_ASEML_POP_SEARCH_FAILED" +msgstr "Search failed" + +msgid "IDS_PRT_POP_PRINTINGERROR" +msgstr "Printing error" + +msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED" +msgstr "Wi-Fi disconnected" + +msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER" +msgstr "Paper" + +msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2" +msgstr "Printer disconnected" + diff --git a/mobileprint/po/en_PH.po b/mobileprint/po/en_PH.po new file mode 100644 index 0000000..fc4bab9 --- /dev/null +++ b/mobileprint/po/en_PH.po @@ -0,0 +1,171 @@ +msgid "IDS_COM_SK_HIDE" +msgstr "Hide" + +msgid "IDS_COM_SK_REFRESH" +msgstr "Refresh" + +msgid "IDS_COM_SK_CANCEL" +msgstr "Cancel" + +msgid "IDS_IMGE_OPT_ROTATE" +msgstr "Rotate" + +msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR" +msgstr "System error" + +msgid "IDS_COM_SK_BACK" +msgstr "Back" + +msgid "IDS_COM_BODY_WI_FI" +msgstr "Wi-Fi" + +msgid "IDS_COM_SK_OK" +msgstr "OK" + +msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE" +msgstr "Unsupported file type" + +msgid "IDS_COM_OPT1_WI_FI_DIRECT" +msgstr "Wi-Fi Direct" + +msgid "IDS_COM_POP_UNSUPPORTED" +msgstr "Unsupported" + +msgid "IDS_BR_BODY_CURRENT_PAGE" +msgstr "Current page" + +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Printer connected" + +msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT" +msgstr "Connect to Wi-Fi network to print" + +msgid "IDS_PRT_BODY_SELECT_PRINTER" +msgstr "Select printer" + +msgid "IDS_PRT_SK_PRINT_PREVIEW" +msgstr "Preview" + +msgid "IDS_SMPOS_SK3_PRINT" +msgstr "Print" + +msgid "IDS_IMGE_BODY_SIZE" +msgstr "Size" + +msgid "IDS_PRT_BODY_SCALING_ABB" +msgstr "Scaling" + +msgid "IDS_COM_BODY_SETTING" +msgstr "Setting" + +msgid "IDS_BT_OPT_FIT_TO_PAPER" +msgstr "Fit to paper" + +msgid "IDS_COM_SK_CUSTOM" +msgstr "Custom" + +msgid "IDS_IMGE_BODY_WIDTH" +msgstr "Width" + +msgid "IDS_IMGE_BODY_HEIGHT" +msgstr "Height" + +msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB" +msgstr "Keep aspect ratio" + +msgid "IDS_COM_BODY_UNIT_INCH" +msgstr "inches" + +msgid "IDS_COM_BODY_UNIT_CM" +msgstr "cm" + +msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB" +msgstr "%d pages on 1 sheet" + +msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS" +msgstr "Printer settings" + +msgid "IDS_PRT_BODY_PRINTER" +msgstr "Printer" + +msgid "IDS_PRT_BODY_PAPERSIZE" +msgstr "Paper size" + +msgid "IDS_PRT_BODY_NUMBEROFCOPIES" +msgstr "Number of copies" + +msgid "IDS_PRT_BODY_PRINT_RANGE_ABB" +msgstr "Print range" + +msgid "IDS_PRT_BODY_COLOUR" +msgstr "Color" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT" +msgstr "Draft" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD" +msgstr "Standard" + +msgid "IDS_COM_BODY_HIGH" +msgstr "High" + +msgid "IDS_ST_BODY_NORMAL" +msgstr "Normal" + +msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING" +msgstr "Waiting to print..." + +msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING" +msgstr "Preparing to print..." + +msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING" +msgstr "Printing..." + +msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB" +msgstr "Photographic" + +msgid "IDS_ST_BODY_GLOSSY" +msgstr "Glossy" + +msgid "IDS_DIC_BODY_ALL" +msgstr "All" + +msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY" +msgstr "Print quality" + +msgid "IDS_IMGE_HEADER_GREY" +msgstr "Gray" + +msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE" +msgstr "No printers available" + +msgid "IDS_COM_BODY_NO_DEVICES" +msgstr "No devices" + +msgid "IDS_PRT_POP_PRINTING_CANCELED" +msgstr "Printing canceled" + +msgid "IDS_COM_POP_MEMORY_FULL" +msgstr "Memory full" + +msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING" +msgstr "Searching for printers..." + +msgid "IDS_PRT_POP_CHECKPRINTERSTATE" +msgstr "Check the printer status" + +msgid "IDS_ASEML_POP_SEARCH_FAILED" +msgstr "Search failed" + +msgid "IDS_PRT_POP_PRINTINGERROR" +msgstr "Printing error" + +msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED" +msgstr "Wi-Fi disconnected" + +msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER" +msgstr "Paper" + +msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2" +msgstr "Printer disconnected" + diff --git a/mobileprint/po/en_US.po b/mobileprint/po/en_US.po new file mode 100644 index 0000000..c5807ee --- /dev/null +++ b/mobileprint/po/en_US.po @@ -0,0 +1,171 @@ +msgid "IDS_COM_SK_HIDE" +msgstr "Hide" + +msgid "IDS_COM_SK_REFRESH" +msgstr "Refresh" + +msgid "IDS_COM_SK_CANCEL" +msgstr "Cancel" + +msgid "IDS_IMGE_OPT_ROTATE" +msgstr "Rotate" + +msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR" +msgstr "System error" + +msgid "IDS_COM_SK_BACK" +msgstr "Back" + +msgid "IDS_COM_BODY_WI_FI" +msgstr "Wi-Fi" + +msgid "IDS_COM_SK_OK" +msgstr "OK" + +msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE" +msgstr "Unsupported file type" + +msgid "IDS_COM_OPT1_WI_FI_DIRECT" +msgstr "Wi-Fi Direct" + +msgid "IDS_COM_POP_UNSUPPORTED" +msgstr "Unsupported" + +msgid "IDS_BR_BODY_CURRENT_PAGE" +msgstr "Current page" + +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Printer connected" + +msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT" +msgstr "Connect to Wi-Fi network to print" + +msgid "IDS_PRT_BODY_SELECT_PRINTER" +msgstr "Select printer" + +msgid "IDS_PRT_SK_PRINT_PREVIEW" +msgstr "Preview" + +msgid "IDS_SMPOS_SK3_PRINT" +msgstr "Print" + +msgid "IDS_IMGE_BODY_SIZE" +msgstr "Size" + +msgid "IDS_PRT_BODY_SCALING_ABB" +msgstr "Scaling" + +msgid "IDS_COM_BODY_SETTING" +msgstr "Setting" + +msgid "IDS_BT_OPT_FIT_TO_PAPER" +msgstr "Fit to paper" + +msgid "IDS_COM_SK_CUSTOM" +msgstr "Custom" + +msgid "IDS_IMGE_BODY_WIDTH" +msgstr "Width" + +msgid "IDS_IMGE_BODY_HEIGHT" +msgstr "Height" + +msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB" +msgstr "Keep aspect ratio" + +msgid "IDS_COM_BODY_UNIT_INCH" +msgstr "inch" + +msgid "IDS_COM_BODY_UNIT_CM" +msgstr "cm" + +msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB" +msgstr "%d pages on 1 sheet" + +msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS" +msgstr "Printer settings" + +msgid "IDS_PRT_BODY_PRINTER" +msgstr "Printer" + +msgid "IDS_PRT_BODY_PAPERSIZE" +msgstr "Paper size" + +msgid "IDS_PRT_BODY_NUMBEROFCOPIES" +msgstr "Number of copies" + +msgid "IDS_PRT_BODY_PRINT_RANGE_ABB" +msgstr "Print range" + +msgid "IDS_PRT_BODY_COLOUR" +msgstr "Color" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT" +msgstr "Draft" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD" +msgstr "Standard" + +msgid "IDS_COM_BODY_HIGH" +msgstr "High" + +msgid "IDS_ST_BODY_NORMAL" +msgstr "Normal" + +msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING" +msgstr "Waiting to print..." + +msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING" +msgstr "Preparing to print..." + +msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING" +msgstr "Printing..." + +msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB" +msgstr "Photographic" + +msgid "IDS_ST_BODY_GLOSSY" +msgstr "Glossy" + +msgid "IDS_DIC_BODY_ALL" +msgstr "All" + +msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY" +msgstr "Print quality" + +msgid "IDS_IMGE_HEADER_GREY" +msgstr "Grey" + +msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE" +msgstr "No printers available" + +msgid "IDS_COM_BODY_NO_DEVICES" +msgstr "No devices" + +msgid "IDS_PRT_POP_PRINTING_CANCELED" +msgstr "Printing cancelled" + +msgid "IDS_COM_POP_MEMORY_FULL" +msgstr "Memory full" + +msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING" +msgstr "Searching for printers..." + +msgid "IDS_PRT_POP_CHECKPRINTERSTATE" +msgstr "Check the printer status" + +msgid "IDS_ASEML_POP_SEARCH_FAILED" +msgstr "Search failed" + +msgid "IDS_PRT_POP_PRINTINGERROR" +msgstr "Printing error" + +msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED" +msgstr "Wi-Fi disconnected" + +msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER" +msgstr "Paper" + +msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2" +msgstr "Printer disconnected" + diff --git a/mobileprint/po/es_ES.po b/mobileprint/po/es_ES.po new file mode 100644 index 0000000..6818597 --- /dev/null +++ b/mobileprint/po/es_ES.po @@ -0,0 +1,171 @@ +msgid "IDS_COM_SK_HIDE" +msgstr "Ocultar" + +msgid "IDS_COM_SK_REFRESH" +msgstr "Actualizar" + +msgid "IDS_COM_SK_CANCEL" +msgstr "Cancelar" + +msgid "IDS_IMGE_OPT_ROTATE" +msgstr "Rotar" + +msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR" +msgstr "Error del sistema" + +msgid "IDS_COM_SK_BACK" +msgstr "Atrás" + +msgid "IDS_COM_BODY_WI_FI" +msgstr "Wi-Fi" + +msgid "IDS_COM_SK_OK" +msgstr "Aceptar" + +msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE" +msgstr "Tipo de archivo no admitido" + +msgid "IDS_COM_OPT1_WI_FI_DIRECT" +msgstr "Wi-Fi Direct" + +msgid "IDS_COM_POP_UNSUPPORTED" +msgstr "No admitido" + +msgid "IDS_BR_BODY_CURRENT_PAGE" +msgstr "Página actual" + +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Impresora conectada" + +msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT" +msgstr "Conectar a red Wi-Fi para imprimir" + +msgid "IDS_PRT_BODY_SELECT_PRINTER" +msgstr "Seleccionar impresora" + +msgid "IDS_PRT_SK_PRINT_PREVIEW" +msgstr "Vista previa" + +msgid "IDS_SMPOS_SK3_PRINT" +msgstr "Imprimir" + +msgid "IDS_IMGE_BODY_SIZE" +msgstr "Tamaño" + +msgid "IDS_PRT_BODY_SCALING_ABB" +msgstr "Cambiar tamaño" + +msgid "IDS_COM_BODY_SETTING" +msgstr "Ajustes" + +msgid "IDS_BT_OPT_FIT_TO_PAPER" +msgstr "Ajustar a papel" + +msgid "IDS_COM_SK_CUSTOM" +msgstr "Personal." + +msgid "IDS_IMGE_BODY_WIDTH" +msgstr "Ancho" + +msgid "IDS_IMGE_BODY_HEIGHT" +msgstr "Altura" + +msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB" +msgstr "Mantener rel aspecto" + +msgid "IDS_COM_BODY_UNIT_INCH" +msgstr "pulgada" + +msgid "IDS_COM_BODY_UNIT_CM" +msgstr "cm" + +msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB" +msgstr "%d páginas en 1 hoja" + +msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS" +msgstr "Ajustes de impresora" + +msgid "IDS_PRT_BODY_PRINTER" +msgstr "Impresora" + +msgid "IDS_PRT_BODY_PAPERSIZE" +msgstr "Tamaño del papel" + +msgid "IDS_PRT_BODY_NUMBEROFCOPIES" +msgstr "Número de copias" + +msgid "IDS_PRT_BODY_PRINT_RANGE_ABB" +msgstr "Intervalo de impresión" + +msgid "IDS_PRT_BODY_COLOUR" +msgstr "Color" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT" +msgstr "Borrador" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD" +msgstr "Estándar" + +msgid "IDS_COM_BODY_HIGH" +msgstr "Alta" + +msgid "IDS_ST_BODY_NORMAL" +msgstr "Normal" + +msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING" +msgstr "Esperando impresión..." + +msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING" +msgstr "Preparando para imprimir..." + +msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING" +msgstr "Imprimiendo..." + +msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB" +msgstr "Fotográfico" + +msgid "IDS_ST_BODY_GLOSSY" +msgstr "Brillante" + +msgid "IDS_DIC_BODY_ALL" +msgstr "Todas" + +msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY" +msgstr "Calidad de impresión" + +msgid "IDS_IMGE_HEADER_GREY" +msgstr "Gris" + +msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE" +msgstr "Ninguna impresora disponible" + +msgid "IDS_COM_BODY_NO_DEVICES" +msgstr "No hay dispositivos" + +msgid "IDS_PRT_POP_PRINTING_CANCELED" +msgstr "Impresión cancelada" + +msgid "IDS_COM_POP_MEMORY_FULL" +msgstr "Memoria llena" + +msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING" +msgstr "Buscando impresoras..." + +msgid "IDS_PRT_POP_CHECKPRINTERSTATE" +msgstr "Comprobar estado de impresora" + +msgid "IDS_ASEML_POP_SEARCH_FAILED" +msgstr "Error de búsqueda" + +msgid "IDS_PRT_POP_PRINTINGERROR" +msgstr "Error de impresión" + +msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED" +msgstr "Wi-Fi desconectado" + +msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER" +msgstr "Papel" + +msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2" +msgstr "Impresora desconectada" + diff --git a/mobileprint/po/es_US.po b/mobileprint/po/es_US.po new file mode 100644 index 0000000..4ebdf39 --- /dev/null +++ b/mobileprint/po/es_US.po @@ -0,0 +1,171 @@ +msgid "IDS_COM_SK_HIDE" +msgstr "Ocultar" + +msgid "IDS_COM_SK_REFRESH" +msgstr "Actualizar" + +msgid "IDS_COM_SK_CANCEL" +msgstr "Cancelar" + +msgid "IDS_IMGE_OPT_ROTATE" +msgstr "Rotar" + +msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR" +msgstr "Error del sistema" + +msgid "IDS_COM_SK_BACK" +msgstr "Atrás" + +msgid "IDS_COM_BODY_WI_FI" +msgstr "Wi-Fi" + +msgid "IDS_COM_SK_OK" +msgstr "Aceptar" + +msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE" +msgstr "Tipo de archivo no admitido" + +msgid "IDS_COM_OPT1_WI_FI_DIRECT" +msgstr "Wi-Fi Directo" + +msgid "IDS_COM_POP_UNSUPPORTED" +msgstr "No compatible" + +msgid "IDS_BR_BODY_CURRENT_PAGE" +msgstr "Página actual" + +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Impresora conectada" + +msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT" +msgstr "Conectar a red Wi-Fi para imprimir" + +msgid "IDS_PRT_BODY_SELECT_PRINTER" +msgstr "Seleccionar impresora" + +msgid "IDS_PRT_SK_PRINT_PREVIEW" +msgstr "Vista previa" + +msgid "IDS_SMPOS_SK3_PRINT" +msgstr "Imprimir" + +msgid "IDS_IMGE_BODY_SIZE" +msgstr "Tamaño" + +msgid "IDS_PRT_BODY_SCALING_ABB" +msgstr "Redimensionar" + +msgid "IDS_COM_BODY_SETTING" +msgstr "Configuración" + +msgid "IDS_BT_OPT_FIT_TO_PAPER" +msgstr "Ajustar a papel" + +msgid "IDS_COM_SK_CUSTOM" +msgstr "Person." + +msgid "IDS_IMGE_BODY_WIDTH" +msgstr "Ancho" + +msgid "IDS_IMGE_BODY_HEIGHT" +msgstr "Alto" + +msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB" +msgstr "Mant. relación de asp." + +msgid "IDS_COM_BODY_UNIT_INCH" +msgstr "pulgada" + +msgid "IDS_COM_BODY_UNIT_CM" +msgstr "cm" + +msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB" +msgstr "%d páginas en 1 hoja" + +msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS" +msgstr "Configuración de impresora" + +msgid "IDS_PRT_BODY_PRINTER" +msgstr "Impresora" + +msgid "IDS_PRT_BODY_PAPERSIZE" +msgstr "Tamaño del papel" + +msgid "IDS_PRT_BODY_NUMBEROFCOPIES" +msgstr "Número de copias" + +msgid "IDS_PRT_BODY_PRINT_RANGE_ABB" +msgstr "Rango de impresión" + +msgid "IDS_PRT_BODY_COLOUR" +msgstr "Color" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT" +msgstr "Borrador" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD" +msgstr "Estándar" + +msgid "IDS_COM_BODY_HIGH" +msgstr "Alta" + +msgid "IDS_ST_BODY_NORMAL" +msgstr "Normal" + +msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING" +msgstr "Esperando para imprimir..." + +msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING" +msgstr "Preparando para imprimir..." + +msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING" +msgstr "Imprimiendo..." + +msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB" +msgstr "Fotográfico" + +msgid "IDS_ST_BODY_GLOSSY" +msgstr "Xilófono" + +msgid "IDS_DIC_BODY_ALL" +msgstr "Todo" + +msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY" +msgstr "Calidad de impresión" + +msgid "IDS_IMGE_HEADER_GREY" +msgstr "Gris" + +msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE" +msgstr "No hay impresoras disponibles" + +msgid "IDS_COM_BODY_NO_DEVICES" +msgstr "No hay dispositivos" + +msgid "IDS_PRT_POP_PRINTING_CANCELED" +msgstr "Impresión cancelada" + +msgid "IDS_COM_POP_MEMORY_FULL" +msgstr "Memoria llena" + +msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING" +msgstr "Buscando impresoras..." + +msgid "IDS_PRT_POP_CHECKPRINTERSTATE" +msgstr "Comprobar estado de impresora" + +msgid "IDS_ASEML_POP_SEARCH_FAILED" +msgstr "Error de búsqueda" + +msgid "IDS_PRT_POP_PRINTINGERROR" +msgstr "Error de impresión" + +msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED" +msgstr "Wi-Fi desconectado" + +msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER" +msgstr "Papel" + +msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2" +msgstr "Impresora desconectada" + diff --git a/mobileprint/po/et.po b/mobileprint/po/et.po new file mode 100644 index 0000000..d943f4c --- /dev/null +++ b/mobileprint/po/et.po @@ -0,0 +1,171 @@ +msgid "IDS_COM_SK_HIDE" +msgstr "Peida" + +msgid "IDS_COM_SK_REFRESH" +msgstr "Värskenda" + +msgid "IDS_COM_SK_CANCEL" +msgstr "Tühista" + +msgid "IDS_IMGE_OPT_ROTATE" +msgstr "Pööra" + +msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR" +msgstr "Süsteemi tõrge" + +msgid "IDS_COM_SK_BACK" +msgstr "Tagasi" + +msgid "IDS_COM_BODY_WI_FI" +msgstr "Wi-Fi" + +msgid "IDS_COM_SK_OK" +msgstr "OK" + +msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE" +msgstr "Toetuseta failitüüp" + +msgid "IDS_COM_OPT1_WI_FI_DIRECT" +msgstr "Wi-Fi Direct" + +msgid "IDS_COM_POP_UNSUPPORTED" +msgstr "Toetuseta" + +msgid "IDS_BR_BODY_CURRENT_PAGE" +msgstr "Hetkel kuvatav leht" + +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Printer on ühendatud" + +msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT" +msgstr "Printimiseks looge ühendus Wi-Fi võrguga" + +msgid "IDS_PRT_BODY_SELECT_PRINTER" +msgstr "Vali printer" + +msgid "IDS_PRT_SK_PRINT_PREVIEW" +msgstr "Eelvaade" + +msgid "IDS_SMPOS_SK3_PRINT" +msgstr "Prindi" + +msgid "IDS_IMGE_BODY_SIZE" +msgstr "Suurus" + +msgid "IDS_PRT_BODY_SCALING_ABB" +msgstr "Skaleerimine" + +msgid "IDS_COM_BODY_SETTING" +msgstr "Seadistus" + +msgid "IDS_BT_OPT_FIT_TO_PAPER" +msgstr "Mahuta paberile" + +msgid "IDS_COM_SK_CUSTOM" +msgstr "Kohandat." + +msgid "IDS_IMGE_BODY_WIDTH" +msgstr "Laius" + +msgid "IDS_IMGE_BODY_HEIGHT" +msgstr "Kõrgus" + +msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB" +msgstr "Hoia kuvasuhet" + +msgid "IDS_COM_BODY_UNIT_INCH" +msgstr "toll" + +msgid "IDS_COM_BODY_UNIT_CM" +msgstr "cm" + +msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB" +msgstr "%d lehte 1 lehel" + +msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS" +msgstr "Printeri seaded" + +msgid "IDS_PRT_BODY_PRINTER" +msgstr "Printer" + +msgid "IDS_PRT_BODY_PAPERSIZE" +msgstr "Paberi formaat" + +msgid "IDS_PRT_BODY_NUMBEROFCOPIES" +msgstr "Koopiate arv" + +msgid "IDS_PRT_BODY_PRINT_RANGE_ABB" +msgstr "Printimise ulatus" + +msgid "IDS_PRT_BODY_COLOUR" +msgstr "Värv" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT" +msgstr "Mustand" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD" +msgstr "Standard" + +msgid "IDS_COM_BODY_HIGH" +msgstr "Kõrge" + +msgid "IDS_ST_BODY_NORMAL" +msgstr "Tavaline" + +msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING" +msgstr "Printimise ootamine..." + +msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING" +msgstr "Valmistumine printimiseks..." + +msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING" +msgstr "Printimine..." + +msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB" +msgstr "Fotograafiline" + +msgid "IDS_ST_BODY_GLOSSY" +msgstr "Glossy" + +msgid "IDS_DIC_BODY_ALL" +msgstr "Kõik" + +msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY" +msgstr "Prindi kvaliteet" + +msgid "IDS_IMGE_HEADER_GREY" +msgstr "Hall" + +msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE" +msgstr "Printerid pole saadaval" + +msgid "IDS_COM_BODY_NO_DEVICES" +msgstr "Seadmeid pole" + +msgid "IDS_PRT_POP_PRINTING_CANCELED" +msgstr "Printimine tühistatud" + +msgid "IDS_COM_POP_MEMORY_FULL" +msgstr "Mälu on täis" + +msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING" +msgstr "Printerite otsimine..." + +msgid "IDS_PRT_POP_CHECKPRINTERSTATE" +msgstr "Kontrolli printeri olekut" + +msgid "IDS_ASEML_POP_SEARCH_FAILED" +msgstr "Otsing nurjus" + +msgid "IDS_PRT_POP_PRINTINGERROR" +msgstr "Tõrge printimisel" + +msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED" +msgstr "Wi-Fi ühendus on katkestatud" + +msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER" +msgstr "Paber" + +msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2" +msgstr "Printeri ühendus on katk." + diff --git a/mobileprint/po/eu.po b/mobileprint/po/eu.po new file mode 100644 index 0000000..2d8fc63 --- /dev/null +++ b/mobileprint/po/eu.po @@ -0,0 +1,171 @@ +msgid "IDS_COM_SK_HIDE" +msgstr "Ezkutatu" + +msgid "IDS_COM_SK_REFRESH" +msgstr "Eguneratu" + +msgid "IDS_COM_SK_CANCEL" +msgstr "Ezeztatu" + +msgid "IDS_IMGE_OPT_ROTATE" +msgstr "Biratu" + +msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR" +msgstr "Sistemaren errorea" + +msgid "IDS_COM_SK_BACK" +msgstr "Atzera" + +msgid "IDS_COM_BODY_WI_FI" +msgstr "Wi-Fi" + +msgid "IDS_COM_SK_OK" +msgstr "Ados" + +msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE" +msgstr "Fitxategi mota ez bateragarria" + +msgid "IDS_COM_OPT1_WI_FI_DIRECT" +msgstr "Wi-Fi Direct" + +msgid "IDS_COM_POP_UNSUPPORTED" +msgstr "Ez bateragarria" + +msgid "IDS_BR_BODY_CURRENT_PAGE" +msgstr "Uneko orria" + +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Inprimagailua konektatuta" + +msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT" +msgstr "Konektatu Wi-Fi sarera inprimatzeko" + +msgid "IDS_PRT_BODY_SELECT_PRINTER" +msgstr "Aukeratu inprimagailua" + +msgid "IDS_PRT_SK_PRINT_PREVIEW" +msgstr "Aurrebista" + +msgid "IDS_SMPOS_SK3_PRINT" +msgstr "Inpri-matu" + +msgid "IDS_IMGE_BODY_SIZE" +msgstr "Tamaina" + +msgid "IDS_PRT_BODY_SCALING_ABB" +msgstr "Eskala" + +msgid "IDS_COM_BODY_SETTING" +msgstr "Konfiguraz." + +msgid "IDS_BT_OPT_FIT_TO_PAPER" +msgstr "Doitu paperera" + +msgid "IDS_COM_SK_CUSTOM" +msgstr "Pertsona." + +msgid "IDS_IMGE_BODY_WIDTH" +msgstr "Zabalera" + +msgid "IDS_IMGE_BODY_HEIGHT" +msgstr "Garaiera" + +msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB" +msgstr "Eutsi aspek. ratioari" + +msgid "IDS_COM_BODY_UNIT_INCH" +msgstr "hazbetea" + +msgid "IDS_COM_BODY_UNIT_CM" +msgstr "zm" + +msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB" +msgstr "%d orrialde orri batean" + +msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS" +msgstr "Inprimagailuaren ezarpenak" + +msgid "IDS_PRT_BODY_PRINTER" +msgstr "Inprimagailua" + +msgid "IDS_PRT_BODY_PAPERSIZE" +msgstr "Paper tamaina" + +msgid "IDS_PRT_BODY_NUMBEROFCOPIES" +msgstr "Kopia kopurua" + +msgid "IDS_PRT_BODY_PRINT_RANGE_ABB" +msgstr "Inprimaketa tartea" + +msgid "IDS_PRT_BODY_COLOUR" +msgstr "Kolorea" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT" +msgstr "Zirriborroa" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD" +msgstr "Estandarra" + +msgid "IDS_COM_BODY_HIGH" +msgstr "Handia" + +msgid "IDS_ST_BODY_NORMAL" +msgstr "Arrunta" + +msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING" +msgstr "Inprimatzeko itxaroten..." + +msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING" +msgstr "Inprimatzeko prestatzen..." + +msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING" +msgstr "Inprimatzen..." + +msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB" +msgstr "Fotografikoa" + +msgid "IDS_ST_BODY_GLOSSY" +msgstr "Distiratsua" + +msgid "IDS_DIC_BODY_ALL" +msgstr "Guztia(k)" + +msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY" +msgstr "Inprimaketa kalitatea" + +msgid "IDS_IMGE_HEADER_GREY" +msgstr "Grisa" + +msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE" +msgstr "Ez dago inprimagailurik erabilgarri" + +msgid "IDS_COM_BODY_NO_DEVICES" +msgstr "Gailurik ez" + +msgid "IDS_PRT_POP_PRINTING_CANCELED" +msgstr "Inprimaketa eten da" + +msgid "IDS_COM_POP_MEMORY_FULL" +msgstr "Memoria beteta" + +msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING" +msgstr "Inprimagailuak bilatzen..." + +msgid "IDS_PRT_POP_CHECKPRINTERSTATE" +msgstr "Inprimagailuaren egoera egiaztatu" + +msgid "IDS_ASEML_POP_SEARCH_FAILED" +msgstr "Bilaketak huts egin du" + +msgid "IDS_PRT_POP_PRINTINGERROR" +msgstr "Inprimatze errorea" + +msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED" +msgstr "Wi-Fia deskonektatuta" + +msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER" +msgstr "Papera" + +msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2" +msgstr "Inprimagailua konektatu gabe dago" + diff --git a/mobileprint/po/fi.po b/mobileprint/po/fi.po new file mode 100644 index 0000000..5b42c07 --- /dev/null +++ b/mobileprint/po/fi.po @@ -0,0 +1,171 @@ +msgid "IDS_COM_SK_HIDE" +msgstr "Piilota" + +msgid "IDS_COM_SK_REFRESH" +msgstr "Päivitä" + +msgid "IDS_COM_SK_CANCEL" +msgstr "Peruuta" + +msgid "IDS_IMGE_OPT_ROTATE" +msgstr "Kierrä" + +msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR" +msgstr "Järjestelmävirhe" + +msgid "IDS_COM_SK_BACK" +msgstr "Takaisin" + +msgid "IDS_COM_BODY_WI_FI" +msgstr "Wi-Fi" + +msgid "IDS_COM_SK_OK" +msgstr "OK" + +msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE" +msgstr "Tiedostotyyppiä ei tueta" + +msgid "IDS_COM_OPT1_WI_FI_DIRECT" +msgstr "Wi-Fi Direct" + +msgid "IDS_COM_POP_UNSUPPORTED" +msgstr "Ei tuettu" + +msgid "IDS_BR_BODY_CURRENT_PAGE" +msgstr "Nykyinen sivu" + +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Tulostin kytketty" + +msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT" +msgstr "Muodosta Wi-Fi-yhteys tulostamista varten" + +msgid "IDS_PRT_BODY_SELECT_PRINTER" +msgstr "Valitse tulostin" + +msgid "IDS_PRT_SK_PRINT_PREVIEW" +msgstr "Esikats." + +msgid "IDS_SMPOS_SK3_PRINT" +msgstr "Tulosta" + +msgid "IDS_IMGE_BODY_SIZE" +msgstr "Koko" + +msgid "IDS_PRT_BODY_SCALING_ABB" +msgstr "Skaalaus" + +msgid "IDS_COM_BODY_SETTING" +msgstr "Asetus" + +msgid "IDS_BT_OPT_FIT_TO_PAPER" +msgstr "Sovita paperille" + +msgid "IDS_COM_SK_CUSTOM" +msgstr "Mukaut." + +msgid "IDS_IMGE_BODY_WIDTH" +msgstr "Leveys" + +msgid "IDS_IMGE_BODY_HEIGHT" +msgstr "Korkeus" + +msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB" +msgstr "Säilytä kuvasuhde" + +msgid "IDS_COM_BODY_UNIT_INCH" +msgstr "tuuma" + +msgid "IDS_COM_BODY_UNIT_CM" +msgstr "cm" + +msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB" +msgstr "%d sivua 1 arkilla" + +msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS" +msgstr "Tulostimen asetukset" + +msgid "IDS_PRT_BODY_PRINTER" +msgstr "Tulostin" + +msgid "IDS_PRT_BODY_PAPERSIZE" +msgstr "Paperikoko" + +msgid "IDS_PRT_BODY_NUMBEROFCOPIES" +msgstr "Kopioiden määrä" + +msgid "IDS_PRT_BODY_PRINT_RANGE_ABB" +msgstr "Tulostusalue" + +msgid "IDS_PRT_BODY_COLOUR" +msgstr "Väri" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT" +msgstr "Luonnos" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD" +msgstr "Normaali" + +msgid "IDS_COM_BODY_HIGH" +msgstr "Korkea" + +msgid "IDS_ST_BODY_NORMAL" +msgstr "Normaali" + +msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING" +msgstr "Odotetaan tulostusta..." + +msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING" +msgstr "Valmistellaan tulostusta..." + +msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING" +msgstr "Tulostetaan..." + +msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB" +msgstr "Valokuvamainen" + +msgid "IDS_ST_BODY_GLOSSY" +msgstr "Glossy" + +msgid "IDS_DIC_BODY_ALL" +msgstr "Kaikki" + +msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY" +msgstr "Tulostuslaatu" + +msgid "IDS_IMGE_HEADER_GREY" +msgstr "Harmaa" + +msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE" +msgstr "Tulostimia ei ole käytettävissä" + +msgid "IDS_COM_BODY_NO_DEVICES" +msgstr "Ei laitteita" + +msgid "IDS_PRT_POP_PRINTING_CANCELED" +msgstr "Tulostus peruutettu" + +msgid "IDS_COM_POP_MEMORY_FULL" +msgstr "Muisti on täynnä" + +msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING" +msgstr "Haetaan tulostimia..." + +msgid "IDS_PRT_POP_CHECKPRINTERSTATE" +msgstr "Tarkista tulostimen tila" + +msgid "IDS_ASEML_POP_SEARCH_FAILED" +msgstr "Haku epäonnistui" + +msgid "IDS_PRT_POP_PRINTINGERROR" +msgstr "Tulostusvirhe" + +msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED" +msgstr "Wi-Fi katkaistu" + +msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER" +msgstr "Paperi" + +msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2" +msgstr "Yhteys tulostimeen katkaistu" + diff --git a/mobileprint/po/fr_CA.po b/mobileprint/po/fr_CA.po new file mode 100644 index 0000000..a1a98f3 --- /dev/null +++ b/mobileprint/po/fr_CA.po @@ -0,0 +1,171 @@ +msgid "IDS_COM_SK_HIDE" +msgstr "Masquer" + +msgid "IDS_COM_SK_REFRESH" +msgstr "Actualiser" + +msgid "IDS_COM_SK_CANCEL" +msgstr "Annuler" + +msgid "IDS_IMGE_OPT_ROTATE" +msgstr "Pivoter" + +msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR" +msgstr "Erreur système" + +msgid "IDS_COM_SK_BACK" +msgstr "Retour" + +msgid "IDS_COM_BODY_WI_FI" +msgstr "Wifi" + +msgid "IDS_COM_SK_OK" +msgstr "OK" + +msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE" +msgstr "Type de fichier non pris en charge" + +msgid "IDS_COM_OPT1_WI_FI_DIRECT" +msgstr "Wifi direct" + +msgid "IDS_COM_POP_UNSUPPORTED" +msgstr "Non pris en charge" + +msgid "IDS_BR_BODY_CURRENT_PAGE" +msgstr "Page en cours" + +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Imprimante connectée" + +msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT" +msgstr "Connectez-vous au réseau Wifi pour imprimer" + +msgid "IDS_PRT_BODY_SELECT_PRINTER" +msgstr "Sélectionner une imprimante" + +msgid "IDS_PRT_SK_PRINT_PREVIEW" +msgstr "Aperçu" + +msgid "IDS_SMPOS_SK3_PRINT" +msgstr "Imprimer" + +msgid "IDS_IMGE_BODY_SIZE" +msgstr "Taille" + +msgid "IDS_PRT_BODY_SCALING_ABB" +msgstr "Mise à l'échelle" + +msgid "IDS_COM_BODY_SETTING" +msgstr "Paramètre" + +msgid "IDS_BT_OPT_FIT_TO_PAPER" +msgstr "Ajuster papier" + +msgid "IDS_COM_SK_CUSTOM" +msgstr "Mon menu" + +msgid "IDS_IMGE_BODY_WIDTH" +msgstr "Largeur" + +msgid "IDS_IMGE_BODY_HEIGHT" +msgstr "Hauteur" + +msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB" +msgstr "Cons. taille affichage" + +msgid "IDS_COM_BODY_UNIT_INCH" +msgstr "pouce" + +msgid "IDS_COM_BODY_UNIT_CM" +msgstr "cm" + +msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB" +msgstr "%d pages sur 1 feuille" + +msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS" +msgstr "Paramètres de l'imprimante" + +msgid "IDS_PRT_BODY_PRINTER" +msgstr "Imprimante" + +msgid "IDS_PRT_BODY_PAPERSIZE" +msgstr "Taille du papier" + +msgid "IDS_PRT_BODY_NUMBEROFCOPIES" +msgstr "Nombre de copies" + +msgid "IDS_PRT_BODY_PRINT_RANGE_ABB" +msgstr "Zone d'impression" + +msgid "IDS_PRT_BODY_COLOUR" +msgstr "Couleur" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT" +msgstr "Brouillons" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD" +msgstr "Standard" + +msgid "IDS_COM_BODY_HIGH" +msgstr "Haute" + +msgid "IDS_ST_BODY_NORMAL" +msgstr "Normal" + +msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING" +msgstr "En attente d'impression..." + +msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING" +msgstr "Préparation de l'impression..." + +msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING" +msgstr "Impression..." + +msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB" +msgstr "Photo" + +msgid "IDS_ST_BODY_GLOSSY" +msgstr "Glossy" + +msgid "IDS_DIC_BODY_ALL" +msgstr "Tous" + +msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY" +msgstr "Qualité de l'impression" + +msgid "IDS_IMGE_HEADER_GREY" +msgstr "Gris" + +msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE" +msgstr "Aucune imprimante disponible" + +msgid "IDS_COM_BODY_NO_DEVICES" +msgstr "Aucun périphérique" + +msgid "IDS_PRT_POP_PRINTING_CANCELED" +msgstr "Impression annulée" + +msgid "IDS_COM_POP_MEMORY_FULL" +msgstr "Mémoire saturée" + +msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING" +msgstr "Recherche d'imprimante..." + +msgid "IDS_PRT_POP_CHECKPRINTERSTATE" +msgstr "Vérifier l'état de l'imprimante" + +msgid "IDS_ASEML_POP_SEARCH_FAILED" +msgstr "Échec de la recherche" + +msgid "IDS_PRT_POP_PRINTINGERROR" +msgstr "Erreur d'impression" + +msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED" +msgstr "wifi déconnecté" + +msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER" +msgstr "Papier" + +msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2" +msgstr "Imprimante déconnectée" + diff --git a/mobileprint/po/fr_FR.po b/mobileprint/po/fr_FR.po new file mode 100644 index 0000000..afa5fa7 --- /dev/null +++ b/mobileprint/po/fr_FR.po @@ -0,0 +1,171 @@ +msgid "IDS_COM_SK_HIDE" +msgstr "Masquer" + +msgid "IDS_COM_SK_REFRESH" +msgstr "Actualiser" + +msgid "IDS_COM_SK_CANCEL" +msgstr "Annuler" + +msgid "IDS_IMGE_OPT_ROTATE" +msgstr "Pivoter" + +msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR" +msgstr "Erreur système" + +msgid "IDS_COM_SK_BACK" +msgstr "Retour" + +msgid "IDS_COM_BODY_WI_FI" +msgstr "Wi-Fi" + +msgid "IDS_COM_SK_OK" +msgstr "OK" + +msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE" +msgstr "Type de fichier non pris en charge" + +msgid "IDS_COM_OPT1_WI_FI_DIRECT" +msgstr "Wi-Fi Direct" + +msgid "IDS_COM_POP_UNSUPPORTED" +msgstr "Non pris en charge" + +msgid "IDS_BR_BODY_CURRENT_PAGE" +msgstr "Page en cours" + +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Imprimante connectée" + +msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT" +msgstr "Connectez-vous au réseau Wi-Fi pour imprimer" + +msgid "IDS_PRT_BODY_SELECT_PRINTER" +msgstr "Sélectionner une imprimante" + +msgid "IDS_PRT_SK_PRINT_PREVIEW" +msgstr "Aperçu" + +msgid "IDS_SMPOS_SK3_PRINT" +msgstr "Imprimer" + +msgid "IDS_IMGE_BODY_SIZE" +msgstr "Taille" + +msgid "IDS_PRT_BODY_SCALING_ABB" +msgstr "Mise à l'échelle" + +msgid "IDS_COM_BODY_SETTING" +msgstr "Paramètres" + +msgid "IDS_BT_OPT_FIT_TO_PAPER" +msgstr "Ajuster papier" + +msgid "IDS_COM_SK_CUSTOM" +msgstr "Personnaliser" + +msgid "IDS_IMGE_BODY_WIDTH" +msgstr "Largeur" + +msgid "IDS_IMGE_BODY_HEIGHT" +msgstr "Hauteur" + +msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB" +msgstr "Cons. taille affichage" + +msgid "IDS_COM_BODY_UNIT_INCH" +msgstr "pouce" + +msgid "IDS_COM_BODY_UNIT_CM" +msgstr "cm" + +msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB" +msgstr "%d pages sur 1 feuille" + +msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS" +msgstr "Paramètres de l'imprimante" + +msgid "IDS_PRT_BODY_PRINTER" +msgstr "Imprimante" + +msgid "IDS_PRT_BODY_PAPERSIZE" +msgstr "Taille du papier" + +msgid "IDS_PRT_BODY_NUMBEROFCOPIES" +msgstr "Nombre de copies" + +msgid "IDS_PRT_BODY_PRINT_RANGE_ABB" +msgstr "Zone d'impression" + +msgid "IDS_PRT_BODY_COLOUR" +msgstr "Couleur" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT" +msgstr "Brouillons" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD" +msgstr "Standard" + +msgid "IDS_COM_BODY_HIGH" +msgstr "Haute" + +msgid "IDS_ST_BODY_NORMAL" +msgstr "Normal" + +msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING" +msgstr "En attente d'impression..." + +msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING" +msgstr "Préparation de l'impression..." + +msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING" +msgstr "Impression..." + +msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB" +msgstr "Photo" + +msgid "IDS_ST_BODY_GLOSSY" +msgstr "Glossy" + +msgid "IDS_DIC_BODY_ALL" +msgstr "Tout" + +msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY" +msgstr "Qualité de l'impression" + +msgid "IDS_IMGE_HEADER_GREY" +msgstr "Gris" + +msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE" +msgstr "Aucune imprimante disponible" + +msgid "IDS_COM_BODY_NO_DEVICES" +msgstr "Aucun périphérique" + +msgid "IDS_PRT_POP_PRINTING_CANCELED" +msgstr "Impression annulée" + +msgid "IDS_COM_POP_MEMORY_FULL" +msgstr "Mémoire saturée" + +msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING" +msgstr "Recherche d'imprimante..." + +msgid "IDS_PRT_POP_CHECKPRINTERSTATE" +msgstr "Vérifier l'état de l'imprimante" + +msgid "IDS_ASEML_POP_SEARCH_FAILED" +msgstr "Echec de la recherche" + +msgid "IDS_PRT_POP_PRINTINGERROR" +msgstr "Erreur d'impression" + +msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED" +msgstr "Wi-Fi déconnecté" + +msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER" +msgstr "Papier" + +msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2" +msgstr "Imprimante déconnectée" + diff --git a/mobileprint/po/ga.po b/mobileprint/po/ga.po new file mode 100644 index 0000000..3e7028f --- /dev/null +++ b/mobileprint/po/ga.po @@ -0,0 +1,171 @@ +msgid "IDS_COM_SK_HIDE" +msgstr "Folaigh" + +msgid "IDS_COM_SK_REFRESH" +msgstr "Athnuaigh" + +msgid "IDS_COM_SK_CANCEL" +msgstr "Cuir ar ceal" + +msgid "IDS_IMGE_OPT_ROTATE" +msgstr "Rothlaigh" + +msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR" +msgstr "Earráid córais" + +msgid "IDS_COM_SK_BACK" +msgstr "Siar" + +msgid "IDS_COM_BODY_WI_FI" +msgstr "Wi-Fi" + +msgid "IDS_COM_SK_OK" +msgstr "OK" + +msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE" +msgstr "Cineál comhaid gan tacú" + +msgid "IDS_COM_OPT1_WI_FI_DIRECT" +msgstr "Wi-Fi Direct" + +msgid "IDS_COM_POP_UNSUPPORTED" +msgstr "Gan tacú" + +msgid "IDS_BR_BODY_CURRENT_PAGE" +msgstr "Leathanach reatha" + +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Printéir ceangailte" + +msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT" +msgstr "Nasc le líonra Wi-Fi le priontáil" + +msgid "IDS_PRT_BODY_SELECT_PRINTER" +msgstr "Roghnaigh printéir" + +msgid "IDS_PRT_SK_PRINT_PREVIEW" +msgstr "Ré-amharc" + +msgid "IDS_SMPOS_SK3_PRINT" +msgstr "Priontáil" + +msgid "IDS_IMGE_BODY_SIZE" +msgstr "Méid" + +msgid "IDS_PRT_BODY_SCALING_ABB" +msgstr "Scálú" + +msgid "IDS_COM_BODY_SETTING" +msgstr "Socrú" + +msgid "IDS_BT_OPT_FIT_TO_PAPER" +msgstr "Oir do pháipéar" + +msgid "IDS_COM_SK_CUSTOM" +msgstr "Saincheap" + +msgid "IDS_IMGE_BODY_WIDTH" +msgstr "Leithead" + +msgid "IDS_IMGE_BODY_HEIGHT" +msgstr "Aird" + +msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB" +msgstr "Seas cóimheas dreacha" + +msgid "IDS_COM_BODY_UNIT_INCH" +msgstr "orlach" + +msgid "IDS_COM_BODY_UNIT_CM" +msgstr "cm" + +msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB" +msgstr "%d lch ar 1 leathán" + +msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS" +msgstr "Socruithe printéara" + +msgid "IDS_PRT_BODY_PRINTER" +msgstr "Printéir" + +msgid "IDS_PRT_BODY_PAPERSIZE" +msgstr "Méid an pháipéir" + +msgid "IDS_PRT_BODY_NUMBEROFCOPIES" +msgstr "Líon na gcóipeanna" + +msgid "IDS_PRT_BODY_PRINT_RANGE_ABB" +msgstr "Raon priontála" + +msgid "IDS_PRT_BODY_COLOUR" +msgstr "Dath" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT" +msgstr "Dréacht" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD" +msgstr "Caighdeánach" + +msgid "IDS_COM_BODY_HIGH" +msgstr "Ard" + +msgid "IDS_ST_BODY_NORMAL" +msgstr "Normálta" + +msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING" +msgstr "Ag fanacht le priontáil..." + +msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING" +msgstr "Ag ullmhú le priontáil..." + +msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING" +msgstr "Ag priontáil..." + +msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB" +msgstr "Fótagrafach" + +msgid "IDS_ST_BODY_GLOSSY" +msgstr "Snasta" + +msgid "IDS_DIC_BODY_ALL" +msgstr "Gach" + +msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY" +msgstr "Cáilíocht phriontála" + +msgid "IDS_IMGE_HEADER_GREY" +msgstr "Liath" + +msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE" +msgstr "Níl aon phrintéirí ar fáil" + +msgid "IDS_COM_BODY_NO_DEVICES" +msgstr "Níl gléasanna ann" + +msgid "IDS_PRT_POP_PRINTING_CANCELED" +msgstr "Priontáil curtha ar ceal" + +msgid "IDS_COM_POP_MEMORY_FULL" +msgstr "Cuimhne lán" + +msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING" +msgstr "Cuardach le haghaidh printéirí..." + +msgid "IDS_PRT_POP_CHECKPRINTERSTATE" +msgstr "Seiceáil stádas an phrintéara" + +msgid "IDS_ASEML_POP_SEARCH_FAILED" +msgstr "Theip ar an gcuardach" + +msgid "IDS_PRT_POP_PRINTINGERROR" +msgstr "Earráid phriontála" + +msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED" +msgstr "Wi-Fi dínasctha" + +msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER" +msgstr "Páipéar" + +msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2" +msgstr "Printéir dícheangailte" + diff --git a/mobileprint/po/gl.po b/mobileprint/po/gl.po new file mode 100644 index 0000000..d20cdb5 --- /dev/null +++ b/mobileprint/po/gl.po @@ -0,0 +1,171 @@ +msgid "IDS_COM_SK_HIDE" +msgstr "Ocultar" + +msgid "IDS_COM_SK_REFRESH" +msgstr "Actualizar" + +msgid "IDS_COM_SK_CANCEL" +msgstr "Cancelar" + +msgid "IDS_IMGE_OPT_ROTATE" +msgstr "Xirar" + +msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR" +msgstr "Erro do sistema" + +msgid "IDS_COM_SK_BACK" +msgstr "Atrás" + +msgid "IDS_COM_BODY_WI_FI" +msgstr "Wi-Fi" + +msgid "IDS_COM_SK_OK" +msgstr "Aceptar" + +msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE" +msgstr "Tipo de arquivo non admitido" + +msgid "IDS_COM_OPT1_WI_FI_DIRECT" +msgstr "Wi-Fi Direct" + +msgid "IDS_COM_POP_UNSUPPORTED" +msgstr "Non admitido" + +msgid "IDS_BR_BODY_CURRENT_PAGE" +msgstr "Páxina actual" + +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Impresora conectada" + +msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT" +msgstr "Conectar á rede Wi-Fi para imprimir" + +msgid "IDS_PRT_BODY_SELECT_PRINTER" +msgstr "Seleccionar impresora" + +msgid "IDS_PRT_SK_PRINT_PREVIEW" +msgstr "Vista previa" + +msgid "IDS_SMPOS_SK3_PRINT" +msgstr "Imprimir" + +msgid "IDS_IMGE_BODY_SIZE" +msgstr "Tamaño" + +msgid "IDS_PRT_BODY_SCALING_ABB" +msgstr "Escalado" + +msgid "IDS_COM_BODY_SETTING" +msgstr "Axustes" + +msgid "IDS_BT_OPT_FIT_TO_PAPER" +msgstr "Axustar ao papel" + +msgid "IDS_COM_SK_CUSTOM" +msgstr "Persoal" + +msgid "IDS_IMGE_BODY_WIDTH" +msgstr "Ancho" + +msgid "IDS_IMGE_BODY_HEIGHT" +msgstr "Altura" + +msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB" +msgstr "Manter relación aspecto" + +msgid "IDS_COM_BODY_UNIT_INCH" +msgstr "polgada" + +msgid "IDS_COM_BODY_UNIT_CM" +msgstr "cm" + +msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB" +msgstr "%d páxinas en 1 folla" + +msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS" +msgstr "Axustes de impresora" + +msgid "IDS_PRT_BODY_PRINTER" +msgstr "Impresora" + +msgid "IDS_PRT_BODY_PAPERSIZE" +msgstr "Tamaño do papel" + +msgid "IDS_PRT_BODY_NUMBEROFCOPIES" +msgstr "Número de copias" + +msgid "IDS_PRT_BODY_PRINT_RANGE_ABB" +msgstr "Rango de impresión" + +msgid "IDS_PRT_BODY_COLOUR" +msgstr "Cor" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT" +msgstr "BORRADOR" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD" +msgstr "Estándar" + +msgid "IDS_COM_BODY_HIGH" +msgstr "Alta" + +msgid "IDS_ST_BODY_NORMAL" +msgstr "Normal" + +msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING" +msgstr "Agardando para imprimir..." + +msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING" +msgstr "Preparando para imprimir..." + +msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING" +msgstr "Imprimindo..." + +msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB" +msgstr "Fotográfico" + +msgid "IDS_ST_BODY_GLOSSY" +msgstr "Glossy" + +msgid "IDS_DIC_BODY_ALL" +msgstr "Todo" + +msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY" +msgstr "Calidade de impresión" + +msgid "IDS_IMGE_HEADER_GREY" +msgstr "Gris" + +msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE" +msgstr "Non hai impresoras dispoñibles" + +msgid "IDS_COM_BODY_NO_DEVICES" +msgstr "Non hai dispositivos" + +msgid "IDS_PRT_POP_PRINTING_CANCELED" +msgstr "Impresión cancelada" + +msgid "IDS_COM_POP_MEMORY_FULL" +msgstr "Memoria chea" + +msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING" +msgstr "Buscando impresoras..." + +msgid "IDS_PRT_POP_CHECKPRINTERSTATE" +msgstr "Comprobar o estado da impresora" + +msgid "IDS_ASEML_POP_SEARCH_FAILED" +msgstr "Erro na busca" + +msgid "IDS_PRT_POP_PRINTINGERROR" +msgstr "Erro de impresión" + +msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED" +msgstr "Wi-Fi desconectada" + +msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER" +msgstr "Papel" + +msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2" +msgstr "Impresora desconectada" + diff --git a/mobileprint/po/hi.po b/mobileprint/po/hi.po new file mode 100644 index 0000000..74e9762 --- /dev/null +++ b/mobileprint/po/hi.po @@ -0,0 +1,171 @@ +msgid "IDS_COM_SK_HIDE" +msgstr "छिपाएँ" + +msgid "IDS_COM_SK_REFRESH" +msgstr "रिफ्रेश" + +msgid "IDS_COM_SK_CANCEL" +msgstr "रद्द" + +msgid "IDS_IMGE_OPT_ROTATE" +msgstr "घुमाएँ" + +msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR" +msgstr "सिस्‍टम त्रुटि" + +msgid "IDS_COM_SK_BACK" +msgstr "पीछे" + +msgid "IDS_COM_BODY_WI_FI" +msgstr "Wi-Fi" + +msgid "IDS_COM_SK_OK" +msgstr "ओके" + +msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE" +msgstr "असमर्थित फाइल प्रकार" + +msgid "IDS_COM_OPT1_WI_FI_DIRECT" +msgstr "Wi-Fi डायरेक्ट" + +msgid "IDS_COM_POP_UNSUPPORTED" +msgstr "असमर्थित" + +msgid "IDS_BR_BODY_CURRENT_PAGE" +msgstr "वर्तमान पेज" + +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "प्रिंटर कनेक्ट किया गया" + +msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT" +msgstr "प्रिंट करने के लिए Wi-Fi नेटवर्क से कनेक्‍ट करें" + +msgid "IDS_PRT_BODY_SELECT_PRINTER" +msgstr "प्रिंटर चुनें" + +msgid "IDS_PRT_SK_PRINT_PREVIEW" +msgstr "प्रिव्यू" + +msgid "IDS_SMPOS_SK3_PRINT" +msgstr "प्रिंट करें" + +msgid "IDS_IMGE_BODY_SIZE" +msgstr "आकार" + +msgid "IDS_PRT_BODY_SCALING_ABB" +msgstr "स्केलिंग" + +msgid "IDS_COM_BODY_SETTING" +msgstr "सेटिंग" + +msgid "IDS_BT_OPT_FIT_TO_PAPER" +msgstr "पेपर में फिट करें" + +msgid "IDS_COM_SK_CUSTOM" +msgstr "कस्टम" + +msgid "IDS_IMGE_BODY_WIDTH" +msgstr "चौड़ाई" + +msgid "IDS_IMGE_BODY_HEIGHT" +msgstr "ऊँचाई" + +msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB" +msgstr "पक्ष अनुपात रखें" + +msgid "IDS_COM_BODY_UNIT_INCH" +msgstr "inch" + +msgid "IDS_COM_BODY_UNIT_CM" +msgstr "cm" + +msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB" +msgstr "1 शीट पर %d पेज" + +msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS" +msgstr "प्रिंटर सेटिंग्स" + +msgid "IDS_PRT_BODY_PRINTER" +msgstr "प्रिंटर" + +msgid "IDS_PRT_BODY_PAPERSIZE" +msgstr "पेपर आकार" + +msgid "IDS_PRT_BODY_NUMBEROFCOPIES" +msgstr "प्रतियों की संख्या" + +msgid "IDS_PRT_BODY_PRINT_RANGE_ABB" +msgstr "प्रिंट सीमा" + +msgid "IDS_PRT_BODY_COLOUR" +msgstr "रंग" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT" +msgstr "ड्राफ्ट" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD" +msgstr "मानक" + +msgid "IDS_COM_BODY_HIGH" +msgstr "उच्च" + +msgid "IDS_ST_BODY_NORMAL" +msgstr "सामान्य" + +msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING" +msgstr "प्रिंट करने के लिए प्रतीक्षा कर रहा है..." + +msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING" +msgstr "प्रिंट करने के लिए तैयार हो रहा है…" + +msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING" +msgstr "प्रिंट हो रहा है..." + +msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB" +msgstr "फ़ोटोग्राफ़िक" + +msgid "IDS_ST_BODY_GLOSSY" +msgstr "चमकदार" + +msgid "IDS_DIC_BODY_ALL" +msgstr "सभी" + +msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY" +msgstr "प्रिन्ट गुणवत्ता" + +msgid "IDS_IMGE_HEADER_GREY" +msgstr "भूरा" + +msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE" +msgstr "कोई प्रिंटर उपलब्ध नहीं" + +msgid "IDS_COM_BODY_NO_DEVICES" +msgstr "डिवाइस नहीं" + +msgid "IDS_PRT_POP_PRINTING_CANCELED" +msgstr "प्रिंट करना रद्द किया गया" + +msgid "IDS_COM_POP_MEMORY_FULL" +msgstr "मेमोरी पूर्ण" + +msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING" +msgstr "प्रिंटर्स के लिए खोज रहा है..." + +msgid "IDS_PRT_POP_CHECKPRINTERSTATE" +msgstr "प्रिन्टर की स्थिति जाँचें" + +msgid "IDS_ASEML_POP_SEARCH_FAILED" +msgstr "खोज विफल" + +msgid "IDS_PRT_POP_PRINTINGERROR" +msgstr "प्रिंटिंग त्रुटि" + +msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED" +msgstr "Wi-Fi डिसकनेक्ट किया गया" + +msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER" +msgstr "काग़ज़" + +msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2" +msgstr "प्रिंटर डिसकनेक्ट किया गया" + diff --git a/mobileprint/po/hr.po b/mobileprint/po/hr.po new file mode 100644 index 0000000..2e0a772 --- /dev/null +++ b/mobileprint/po/hr.po @@ -0,0 +1,171 @@ +msgid "IDS_COM_SK_HIDE" +msgstr "Sakrij" + +msgid "IDS_COM_SK_REFRESH" +msgstr "Aktualiziraj" + +msgid "IDS_COM_SK_CANCEL" +msgstr "Prekid" + +msgid "IDS_IMGE_OPT_ROTATE" +msgstr "Rotiraj" + +msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR" +msgstr "PogreÅ¡ka sustava" + +msgid "IDS_COM_SK_BACK" +msgstr "Nazad" + +msgid "IDS_COM_BODY_WI_FI" +msgstr "Wi-Fi" + +msgid "IDS_COM_SK_OK" +msgstr "OK" + +msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE" +msgstr "Nepodržana datoteka" + +msgid "IDS_COM_OPT1_WI_FI_DIRECT" +msgstr "Wi-Fi Direct" + +msgid "IDS_COM_POP_UNSUPPORTED" +msgstr "Nepodržano" + +msgid "IDS_BR_BODY_CURRENT_PAGE" +msgstr "Trenutna stranica" + +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Pisač spojen" + +msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT" +msgstr "Spojite se na Wi-Fi mrežu za ispis" + +msgid "IDS_PRT_BODY_SELECT_PRINTER" +msgstr "Odaberite pisač" + +msgid "IDS_PRT_SK_PRINT_PREVIEW" +msgstr "Pregled" + +msgid "IDS_SMPOS_SK3_PRINT" +msgstr "Ispis" + +msgid "IDS_IMGE_BODY_SIZE" +msgstr "Veličina" + +msgid "IDS_PRT_BODY_SCALING_ABB" +msgstr "Skaliranje" + +msgid "IDS_COM_BODY_SETTING" +msgstr "Postavka" + +msgid "IDS_BT_OPT_FIT_TO_PAPER" +msgstr "Prilagodi papiru" + +msgid "IDS_COM_SK_CUSTOM" +msgstr "Prilagodi" + +msgid "IDS_IMGE_BODY_WIDTH" +msgstr "Å irina" + +msgid "IDS_IMGE_BODY_HEIGHT" +msgstr "Visina" + +msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB" +msgstr "Zadrži omjer slike" + +msgid "IDS_COM_BODY_UNIT_INCH" +msgstr "inch" + +msgid "IDS_COM_BODY_UNIT_CM" +msgstr "cm" + +msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB" +msgstr "%d stranica na 1 listu" + +msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS" +msgstr "Postavke pisača" + +msgid "IDS_PRT_BODY_PRINTER" +msgstr "Pisač" + +msgid "IDS_PRT_BODY_PAPERSIZE" +msgstr "Veličina papira" + +msgid "IDS_PRT_BODY_NUMBEROFCOPIES" +msgstr "Broj kopija" + +msgid "IDS_PRT_BODY_PRINT_RANGE_ABB" +msgstr "IspiÅ¡i sve" + +msgid "IDS_PRT_BODY_COLOUR" +msgstr "Boja" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT" +msgstr "Priprema" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD" +msgstr "Standardno" + +msgid "IDS_COM_BODY_HIGH" +msgstr "Visoki" + +msgid "IDS_ST_BODY_NORMAL" +msgstr "Normalno" + +msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING" +msgstr "Čekanje ispisa..." + +msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING" +msgstr "Priprema za ispis..." + +msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING" +msgstr "Ispisuje se..." + +msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB" +msgstr "Fotografski" + +msgid "IDS_ST_BODY_GLOSSY" +msgstr "Glossy" + +msgid "IDS_DIC_BODY_ALL" +msgstr "Sve" + +msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY" +msgstr "Kvaliteta ispisa" + +msgid "IDS_IMGE_HEADER_GREY" +msgstr "Sivo" + +msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE" +msgstr "Nema dostupnih pisača" + +msgid "IDS_COM_BODY_NO_DEVICES" +msgstr "Nema uređaja" + +msgid "IDS_PRT_POP_PRINTING_CANCELED" +msgstr "Ispis je prekinut" + +msgid "IDS_COM_POP_MEMORY_FULL" +msgstr "Memorija puna" + +msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING" +msgstr "Traženje pisača..." + +msgid "IDS_PRT_POP_CHECKPRINTERSTATE" +msgstr "Provjera statusa pisača" + +msgid "IDS_ASEML_POP_SEARCH_FAILED" +msgstr "GreÅ¡ka pretraživanja" + +msgid "IDS_PRT_POP_PRINTINGERROR" +msgstr "GreÅ¡ka ispisa" + +msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED" +msgstr "Wi-Fi isključen" + +msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER" +msgstr "Papir" + +msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2" +msgstr "Pisač isključen" + diff --git a/mobileprint/po/hu.po b/mobileprint/po/hu.po new file mode 100644 index 0000000..4b82804 --- /dev/null +++ b/mobileprint/po/hu.po @@ -0,0 +1,171 @@ +msgid "IDS_COM_SK_HIDE" +msgstr "Elrejtés" + +msgid "IDS_COM_SK_REFRESH" +msgstr "Frissít" + +msgid "IDS_COM_SK_CANCEL" +msgstr "Mégse" + +msgid "IDS_IMGE_OPT_ROTATE" +msgstr "Elforgatás" + +msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR" +msgstr "Rendszerhiba" + +msgid "IDS_COM_SK_BACK" +msgstr "Vissza" + +msgid "IDS_COM_BODY_WI_FI" +msgstr "Wi-Fi" + +msgid "IDS_COM_SK_OK" +msgstr "OK" + +msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE" +msgstr "A fájltípus\nnem támogatott" + +msgid "IDS_COM_OPT1_WI_FI_DIRECT" +msgstr "Wi-Fi Direct" + +msgid "IDS_COM_POP_UNSUPPORTED" +msgstr "Nem támogatott" + +msgid "IDS_BR_BODY_CURRENT_PAGE" +msgstr "Jelenlegi oldal" + +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Nyomtató csatlakoztatva" + +msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT" +msgstr "A nyomtatáshoz létesítsen Wi-Fi-hálózati kapcsolatot" + +msgid "IDS_PRT_BODY_SELECT_PRINTER" +msgstr "Nyomtató kiválasztása" + +msgid "IDS_PRT_SK_PRINT_PREVIEW" +msgstr "Előnézet" + +msgid "IDS_SMPOS_SK3_PRINT" +msgstr "Nyomtat" + +msgid "IDS_IMGE_BODY_SIZE" +msgstr "Méret" + +msgid "IDS_PRT_BODY_SCALING_ABB" +msgstr "Méretezés" + +msgid "IDS_COM_BODY_SETTING" +msgstr "Beállítás" + +msgid "IDS_BT_OPT_FIT_TO_PAPER" +msgstr "Laphoz illesztés" + +msgid "IDS_COM_SK_CUSTOM" +msgstr "Egyéni" + +msgid "IDS_IMGE_BODY_WIDTH" +msgstr "Szélesség" + +msgid "IDS_IMGE_BODY_HEIGHT" +msgstr "Magasság" + +msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB" +msgstr "Képoldalarány megőrzése" + +msgid "IDS_COM_BODY_UNIT_INCH" +msgstr "coll" + +msgid "IDS_COM_BODY_UNIT_CM" +msgstr "cm" + +msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB" +msgstr "%d oldal 1 lapon" + +msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS" +msgstr "Nyomtató beállításai" + +msgid "IDS_PRT_BODY_PRINTER" +msgstr "Nyomtató" + +msgid "IDS_PRT_BODY_PAPERSIZE" +msgstr "Papírméret" + +msgid "IDS_PRT_BODY_NUMBEROFCOPIES" +msgstr "Példányszám" + +msgid "IDS_PRT_BODY_PRINT_RANGE_ABB" +msgstr "Nyomtatási tartomány" + +msgid "IDS_PRT_BODY_COLOUR" +msgstr "Szín" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT" +msgstr "Piszkozat" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD" +msgstr "Normál" + +msgid "IDS_COM_BODY_HIGH" +msgstr "Magas" + +msgid "IDS_ST_BODY_NORMAL" +msgstr "Normál" + +msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING" +msgstr "Várakozás nyomtatásra..." + +msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING" +msgstr "Nyomtatás előkészítése..." + +msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING" +msgstr "Nyomtatás..." + +msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB" +msgstr "Fénykép" + +msgid "IDS_ST_BODY_GLOSSY" +msgstr "Glossy" + +msgid "IDS_DIC_BODY_ALL" +msgstr "Mind" + +msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY" +msgstr "Nyomtatási minőség" + +msgid "IDS_IMGE_HEADER_GREY" +msgstr "Szürke" + +msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE" +msgstr "Nincs elérhető nyomtató" + +msgid "IDS_COM_BODY_NO_DEVICES" +msgstr "Nincs eszköz" + +msgid "IDS_PRT_POP_PRINTING_CANCELED" +msgstr "Nyomtatás megszakítva" + +msgid "IDS_COM_POP_MEMORY_FULL" +msgstr "Memória megtelt" + +msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING" +msgstr "Nyomtatókeresés..." + +msgid "IDS_PRT_POP_CHECKPRINTERSTATE" +msgstr "Ellenőrizze a nyomtató állapotát" + +msgid "IDS_ASEML_POP_SEARCH_FAILED" +msgstr "A keresés sikertelen" + +msgid "IDS_PRT_POP_PRINTINGERROR" +msgstr "Nyomtatási hiba" + +msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED" +msgstr "Wi-Fi-kapcsolat bontva" + +msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER" +msgstr "Papír" + +msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2" +msgstr "Nyomtató leválasztva" + diff --git a/mobileprint/po/hy.po b/mobileprint/po/hy.po new file mode 100644 index 0000000..2db80ec --- /dev/null +++ b/mobileprint/po/hy.po @@ -0,0 +1,171 @@ +msgid "IDS_COM_SK_HIDE" +msgstr "Թքցնել" + +msgid "IDS_COM_SK_REFRESH" +msgstr "Թարմացնել" + +msgid "IDS_COM_SK_CANCEL" +msgstr "Չեղարկել" + +msgid "IDS_IMGE_OPT_ROTATE" +msgstr "Պտտեցնել" + +msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR" +msgstr "Համակարգի Õ½Õ­Õ¡Õ¬" + +msgid "IDS_COM_SK_BACK" +msgstr "Հետ" + +msgid "IDS_COM_BODY_WI_FI" +msgstr "Wi-Fi" + +msgid "IDS_COM_SK_OK" +msgstr "OK" + +msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE" +msgstr "Ֆայլի չսատարվող Õ¿Õ¥Õ½Õ¡Õ¯" + +msgid "IDS_COM_OPT1_WI_FI_DIRECT" +msgstr "Wi-Fi Direct" + +msgid "IDS_COM_POP_UNSUPPORTED" +msgstr "Չսատարվող" + +msgid "IDS_BR_BODY_CURRENT_PAGE" +msgstr "Ընթացիկ Õ§Õ»" + +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Տպիչը միացված Õ§" + +msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT" +msgstr "Տպելու համար միացեք Wi-Fi ցանցին" + +msgid "IDS_PRT_BODY_SELECT_PRINTER" +msgstr "Ընտրել Õ¿ÕºÕ«Õ¹Õ¨" + +msgid "IDS_PRT_SK_PRINT_PREVIEW" +msgstr "Դիտում" + +msgid "IDS_SMPOS_SK3_PRINT" +msgstr "Տպել" + +msgid "IDS_IMGE_BODY_SIZE" +msgstr "Չափս" + +msgid "IDS_PRT_BODY_SCALING_ABB" +msgstr "Մասշտաբավորում" + +msgid "IDS_COM_BODY_SETTING" +msgstr "Կայանք" + +msgid "IDS_BT_OPT_FIT_TO_PAPER" +msgstr "Տեղավորել Õ©Õ²Õ©Õ« վրա" + +msgid "IDS_COM_SK_CUSTOM" +msgstr "Հատուկ" + +msgid "IDS_IMGE_BODY_WIDTH" +msgstr "Լայնություն" + +msgid "IDS_IMGE_BODY_HEIGHT" +msgstr "Բարձրություն" + +msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB" +msgstr "Պահեք չափերի հրբրկցթյնը" + +msgid "IDS_COM_BODY_UNIT_INCH" +msgstr "դյույմ" + +msgid "IDS_COM_BODY_UNIT_CM" +msgstr "Õ½Õ´" + +msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB" +msgstr "%d էջեր 1 թերթի վրա" + +msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS" +msgstr "Տպիչի դրվածքներ" + +msgid "IDS_PRT_BODY_PRINTER" +msgstr "Տպիչ" + +msgid "IDS_PRT_BODY_PAPERSIZE" +msgstr "Ô¹Õ²Õ©Õ« չափ" + +msgid "IDS_PRT_BODY_NUMBEROFCOPIES" +msgstr "Պատճենների քանակը" + +msgid "IDS_PRT_BODY_PRINT_RANGE_ABB" +msgstr "Տպման տիրույթ" + +msgid "IDS_PRT_BODY_COLOUR" +msgstr "Գույն" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT" +msgstr "Նախագիծ" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD" +msgstr "Ստանդարտ" + +msgid "IDS_COM_BODY_HIGH" +msgstr "Բարձր" + +msgid "IDS_ST_BODY_NORMAL" +msgstr "Նորմալ" + +msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING" +msgstr "Սպասում Õ§ Õ¿ÕºÕ´Õ¡Õ¶..." + +msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING" +msgstr "Պատրաստվում Õ§ Õ¿ÕºÕ¥Õ¬..." + +msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING" +msgstr "Տպում Õ§..." + +msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB" +msgstr "Լուսանկարչական" + +msgid "IDS_ST_BODY_GLOSSY" +msgstr "Glossy" + +msgid "IDS_DIC_BODY_ALL" +msgstr "Բոլոր" + +msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY" +msgstr "Տպագրության որակ" + +msgid "IDS_IMGE_HEADER_GREY" +msgstr "Մոխրագույն" + +msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE" +msgstr "Մատչելի տպիչներ Õ¹Õ¯Õ¡Õ¶" + +msgid "IDS_COM_BODY_NO_DEVICES" +msgstr "Սարքեր Õ¹Õ¯Õ¡Õ¶" + +msgid "IDS_PRT_POP_PRINTING_CANCELED" +msgstr "Տպումը դադարեցվեց" + +msgid "IDS_COM_POP_MEMORY_FULL" +msgstr "Հիշողութունը լիքն Õ§" + +msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING" +msgstr "Որոնվում տպիչներ..." + +msgid "IDS_PRT_POP_CHECKPRINTERSTATE" +msgstr "Ստուգեք Õ¿ÕºÕ«Õ¹Õ« կարգավիճակը" + +msgid "IDS_ASEML_POP_SEARCH_FAILED" +msgstr "Որոնումը ձախողվեց" + +msgid "IDS_PRT_POP_PRINTINGERROR" +msgstr "Տպման Õ½Õ­Õ¡Õ¬" + +msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED" +msgstr "Wi-Fi-Õ¶ Õ¡Õ¶Õ»Õ¡Õ¿Õ¾Õ¡Õ® Õ§" + +msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER" +msgstr "Թուղթ" + +msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2" +msgstr "Տպիչն Õ¡Õ¶Õ»Õ¡Õ¿Õ¾Õ¡Õ® Õ§" + diff --git a/mobileprint/po/is.po b/mobileprint/po/is.po new file mode 100644 index 0000000..12faa84 --- /dev/null +++ b/mobileprint/po/is.po @@ -0,0 +1,171 @@ +msgid "IDS_COM_SK_HIDE" +msgstr "Hylja" + +msgid "IDS_COM_SK_REFRESH" +msgstr "Endurnýja" + +msgid "IDS_COM_SK_CANCEL" +msgstr "Hætta við" + +msgid "IDS_IMGE_OPT_ROTATE" +msgstr "Snúa" + +msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR" +msgstr "Kerfisvilla" + +msgid "IDS_COM_SK_BACK" +msgstr "Bakka" + +msgid "IDS_COM_BODY_WI_FI" +msgstr "Wi-Fi" + +msgid "IDS_COM_SK_OK" +msgstr "Í lagi" + +msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE" +msgstr "Óstutt skrársnið" + +msgid "IDS_COM_OPT1_WI_FI_DIRECT" +msgstr "Wi-Fi Direct" + +msgid "IDS_COM_POP_UNSUPPORTED" +msgstr "Óstutt" + +msgid "IDS_BR_BODY_CURRENT_PAGE" +msgstr "Opin síða" + +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Prentari tengdur" + +msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT" +msgstr "Tengjast við Wi-Fi net til að prenta" + +msgid "IDS_PRT_BODY_SELECT_PRINTER" +msgstr "Velja prentara" + +msgid "IDS_PRT_SK_PRINT_PREVIEW" +msgstr "Skoða" + +msgid "IDS_SMPOS_SK3_PRINT" +msgstr "Prenta" + +msgid "IDS_IMGE_BODY_SIZE" +msgstr "Stærð" + +msgid "IDS_PRT_BODY_SCALING_ABB" +msgstr "Kvörðun" + +msgid "IDS_COM_BODY_SETTING" +msgstr "Stilling" + +msgid "IDS_BT_OPT_FIT_TO_PAPER" +msgstr "Passa á pappír" + +msgid "IDS_COM_SK_CUSTOM" +msgstr "Sérstilla" + +msgid "IDS_IMGE_BODY_WIDTH" +msgstr "Breidd" + +msgid "IDS_IMGE_BODY_HEIGHT" +msgstr "Hæð" + +msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB" +msgstr "Halda myndhlutfalli" + +msgid "IDS_COM_BODY_UNIT_INCH" +msgstr "tomma" + +msgid "IDS_COM_BODY_UNIT_CM" +msgstr "cm" + +msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB" +msgstr "%d síður á 1 blaði" + +msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS" +msgstr "Prentarastillingar" + +msgid "IDS_PRT_BODY_PRINTER" +msgstr "Prentari" + +msgid "IDS_PRT_BODY_PAPERSIZE" +msgstr "Pappírsstærð" + +msgid "IDS_PRT_BODY_NUMBEROFCOPIES" +msgstr "Fjöldi eintaka" + +msgid "IDS_PRT_BODY_PRINT_RANGE_ABB" +msgstr "Prentsvið" + +msgid "IDS_PRT_BODY_COLOUR" +msgstr "Litur" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT" +msgstr "Drög" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD" +msgstr "Venjuleg" + +msgid "IDS_COM_BODY_HIGH" +msgstr "Mikið" + +msgid "IDS_ST_BODY_NORMAL" +msgstr "Venjulegt" + +msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING" +msgstr "Bíð þess að prenta..." + +msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING" +msgstr "Prentun undirbúin..." + +msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING" +msgstr "Verið er að prenta..." + +msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB" +msgstr "Fyrir ljósmyndir" + +msgid "IDS_ST_BODY_GLOSSY" +msgstr "Glossy" + +msgid "IDS_DIC_BODY_ALL" +msgstr "Allt" + +msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY" +msgstr "Prentgæði" + +msgid "IDS_IMGE_HEADER_GREY" +msgstr "Grár" + +msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE" +msgstr "Engir prentarar tiltækir" + +msgid "IDS_COM_BODY_NO_DEVICES" +msgstr "Engin tæki" + +msgid "IDS_PRT_POP_PRINTING_CANCELED" +msgstr "Hætt við prentun" + +msgid "IDS_COM_POP_MEMORY_FULL" +msgstr "Minni er fullt" + +msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING" +msgstr "Leita að prenturum..." + +msgid "IDS_PRT_POP_CHECKPRINTERSTATE" +msgstr "Kanna stöðu prentara" + +msgid "IDS_ASEML_POP_SEARCH_FAILED" +msgstr "Leit mistókst" + +msgid "IDS_PRT_POP_PRINTINGERROR" +msgstr "Prentvilla" + +msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED" +msgstr "Wi-Fi aftengt" + +msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER" +msgstr "Pappír" + +msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2" +msgstr "Prentari ótengdur" + diff --git a/mobileprint/po/it_IT.po b/mobileprint/po/it_IT.po new file mode 100644 index 0000000..a9e384c --- /dev/null +++ b/mobileprint/po/it_IT.po @@ -0,0 +1,171 @@ +msgid "IDS_COM_SK_HIDE" +msgstr "Nascondi" + +msgid "IDS_COM_SK_REFRESH" +msgstr "Aggiorna" + +msgid "IDS_COM_SK_CANCEL" +msgstr "Annulla" + +msgid "IDS_IMGE_OPT_ROTATE" +msgstr "Ruota" + +msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR" +msgstr "Errore di sistema" + +msgid "IDS_COM_SK_BACK" +msgstr "Indietro" + +msgid "IDS_COM_BODY_WI_FI" +msgstr "Wi-Fi" + +msgid "IDS_COM_SK_OK" +msgstr "OK" + +msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE" +msgstr "Tipo file non supportato" + +msgid "IDS_COM_OPT1_WI_FI_DIRECT" +msgstr "Wi-Fi Direct" + +msgid "IDS_COM_POP_UNSUPPORTED" +msgstr "Non supportato" + +msgid "IDS_BR_BODY_CURRENT_PAGE" +msgstr "Pagina corrente" + +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Stampante connessa" + +msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT" +msgstr "Per stampare, collegarsi alla rete Wi-Fi" + +msgid "IDS_PRT_BODY_SELECT_PRINTER" +msgstr "Seleziona stampante" + +msgid "IDS_PRT_SK_PRINT_PREVIEW" +msgstr "Anteprima" + +msgid "IDS_SMPOS_SK3_PRINT" +msgstr "Stampa" + +msgid "IDS_IMGE_BODY_SIZE" +msgstr "Dimensioni" + +msgid "IDS_PRT_BODY_SCALING_ABB" +msgstr "Proporzioni" + +msgid "IDS_COM_BODY_SETTING" +msgstr "Impostazione" + +msgid "IDS_BT_OPT_FIT_TO_PAPER" +msgstr "Adatta a carta" + +msgid "IDS_COM_SK_CUSTOM" +msgstr "Personale" + +msgid "IDS_IMGE_BODY_WIDTH" +msgstr "Larghezza" + +msgid "IDS_IMGE_BODY_HEIGHT" +msgstr "Altezza" + +msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB" +msgstr "Mantieni proporzioni" + +msgid "IDS_COM_BODY_UNIT_INCH" +msgstr "pollici" + +msgid "IDS_COM_BODY_UNIT_CM" +msgstr "cm" + +msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB" +msgstr "%d pagine su 1 foglio" + +msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS" +msgstr "Impostazioni stampante" + +msgid "IDS_PRT_BODY_PRINTER" +msgstr "Stampante" + +msgid "IDS_PRT_BODY_PAPERSIZE" +msgstr "Formato carta" + +msgid "IDS_PRT_BODY_NUMBEROFCOPIES" +msgstr "Numero di copie" + +msgid "IDS_PRT_BODY_PRINT_RANGE_ABB" +msgstr "Intervallo di stampa" + +msgid "IDS_PRT_BODY_COLOUR" +msgstr "Colore" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT" +msgstr "Bozza" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD" +msgstr "Standard" + +msgid "IDS_COM_BODY_HIGH" +msgstr "Alta" + +msgid "IDS_ST_BODY_NORMAL" +msgstr "Normale" + +msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING" +msgstr "In attesa di stampa..." + +msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING" +msgstr "Preparazione della stampa in corso..." + +msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING" +msgstr "Stampa..." + +msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB" +msgstr "Fotografica" + +msgid "IDS_ST_BODY_GLOSSY" +msgstr "Lucente" + +msgid "IDS_DIC_BODY_ALL" +msgstr "Tutti" + +msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY" +msgstr "Qualità di stampa" + +msgid "IDS_IMGE_HEADER_GREY" +msgstr "Grigio" + +msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE" +msgstr "Nessuna stampante disponibile" + +msgid "IDS_COM_BODY_NO_DEVICES" +msgstr "Nessun dispositivo" + +msgid "IDS_PRT_POP_PRINTING_CANCELED" +msgstr "Stampa annullata" + +msgid "IDS_COM_POP_MEMORY_FULL" +msgstr "Memoria piena" + +msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING" +msgstr "Ricerca stampanti in corso..." + +msgid "IDS_PRT_POP_CHECKPRINTERSTATE" +msgstr "Verificare lo stato della stampante" + +msgid "IDS_ASEML_POP_SEARCH_FAILED" +msgstr "Ricerca non riuscita" + +msgid "IDS_PRT_POP_PRINTINGERROR" +msgstr "Errore di stampa" + +msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED" +msgstr "Wi-Fi disconnesso" + +msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER" +msgstr "Carta" + +msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2" +msgstr "Stampante disconnessa" + diff --git a/mobileprint/po/ja_JP.po b/mobileprint/po/ja_JP.po new file mode 100644 index 0000000..d9bea85 --- /dev/null +++ b/mobileprint/po/ja_JP.po @@ -0,0 +1,171 @@ +msgid "IDS_COM_SK_HIDE" +msgstr "非表示" + +msgid "IDS_COM_SK_REFRESH" +msgstr "更新" + +msgid "IDS_COM_SK_CANCEL" +msgstr "キャンセル" + +msgid "IDS_IMGE_OPT_ROTATE" +msgstr "回転" + +msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR" +msgstr "システムエラー" + +msgid "IDS_COM_SK_BACK" +msgstr "戻る" + +msgid "IDS_COM_BODY_WI_FI" +msgstr "Wi-Fi" + +msgid "IDS_COM_SK_OK" +msgstr "OK" + +msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE" +msgstr "未​対応​の​ファイル​です。" + +msgid "IDS_COM_OPT1_WI_FI_DIRECT" +msgstr "Wi-Fi Direct" + +msgid "IDS_COM_POP_UNSUPPORTED" +msgstr "未対応です" + +msgid "IDS_BR_BODY_CURRENT_PAGE" +msgstr "現在のページ" + +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "プリンターが接続されました。" + +msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT" +msgstr "印刷するためには、Wi-Fiネットワークに接続してください。" + +msgid "IDS_PRT_BODY_SELECT_PRINTER" +msgstr "プリンターの選択" + +msgid "IDS_PRT_SK_PRINT_PREVIEW" +msgstr "プレビュー" + +msgid "IDS_SMPOS_SK3_PRINT" +msgstr "印刷" + +msgid "IDS_IMGE_BODY_SIZE" +msgstr "サイズ" + +msgid "IDS_PRT_BODY_SCALING_ABB" +msgstr "拡大​縮小" + +msgid "IDS_COM_BODY_SETTING" +msgstr "設定" + +msgid "IDS_BT_OPT_FIT_TO_PAPER" +msgstr "用紙​に​合わせる" + +msgid "IDS_COM_SK_CUSTOM" +msgstr "カスタム" + +msgid "IDS_IMGE_BODY_WIDTH" +msgstr "幅" + +msgid "IDS_IMGE_BODY_HEIGHT" +msgstr "高さ" + +msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB" +msgstr "縦横比​を​保持" + +msgid "IDS_COM_BODY_UNIT_INCH" +msgstr "インチ" + +msgid "IDS_COM_BODY_UNIT_CM" +msgstr "cm" + +msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB" +msgstr "1枚​に​%dページ" + +msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS" +msgstr "プリンター​設定" + +msgid "IDS_PRT_BODY_PRINTER" +msgstr "プリンター" + +msgid "IDS_PRT_BODY_PAPERSIZE" +msgstr "プリント​サイズ" + +msgid "IDS_PRT_BODY_NUMBEROFCOPIES" +msgstr "枚数" + +msgid "IDS_PRT_BODY_PRINT_RANGE_ABB" +msgstr "印刷​範囲" + +msgid "IDS_PRT_BODY_COLOUR" +msgstr "色" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT" +msgstr "下書き" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD" +msgstr "標準" + +msgid "IDS_COM_BODY_HIGH" +msgstr "高" + +msgid "IDS_ST_BODY_NORMAL" +msgstr "標準" + +msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING" +msgstr "印刷を待機しています..." + +msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING" +msgstr "印刷​準備中..." + +msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING" +msgstr "印刷中..." + +msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB" +msgstr "写真​用" + +msgid "IDS_ST_BODY_GLOSSY" +msgstr "Glossy" + +msgid "IDS_DIC_BODY_ALL" +msgstr "全て" + +msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY" +msgstr "印刷​品質" + +msgid "IDS_IMGE_HEADER_GREY" +msgstr "グレイ" + +msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE" +msgstr "利用​できる​プリンター​が​あり​ません。" + +msgid "IDS_COM_BODY_NO_DEVICES" +msgstr "デバイス​が​あり​ません。" + +msgid "IDS_PRT_POP_PRINTING_CANCELED" +msgstr "印刷をキャンセルしました。" + +msgid "IDS_COM_POP_MEMORY_FULL" +msgstr "メモリがいっぱいです。" + +msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING" +msgstr "プリンター​を​検索​中..." + +msgid "IDS_PRT_POP_CHECKPRINTERSTATE" +msgstr "プリンター​状況​を​確認​して​ください" + +msgid "IDS_ASEML_POP_SEARCH_FAILED" +msgstr "検索​に​失敗​しました" + +msgid "IDS_PRT_POP_PRINTINGERROR" +msgstr "印刷​エラー" + +msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED" +msgstr "Wi-Fi​が切断​されました。" + +msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER" +msgstr "ペーパー" + +msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2" +msgstr "プリンターが取り外されました。" + diff --git a/mobileprint/po/ka.po b/mobileprint/po/ka.po new file mode 100644 index 0000000..578c42f --- /dev/null +++ b/mobileprint/po/ka.po @@ -0,0 +1,171 @@ +msgid "IDS_COM_SK_HIDE" +msgstr "დამალვა" + +msgid "IDS_COM_SK_REFRESH" +msgstr "განახლება" + +msgid "IDS_COM_SK_CANCEL" +msgstr "გაუქმება" + +msgid "IDS_IMGE_OPT_ROTATE" +msgstr "ბრუნვა" + +msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR" +msgstr "სისტემის შეცდომა" + +msgid "IDS_COM_SK_BACK" +msgstr "უკან" + +msgid "IDS_COM_BODY_WI_FI" +msgstr "Wi-Fi" + +msgid "IDS_COM_SK_OK" +msgstr "OK" + +msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE" +msgstr "ფაილის ტიპი გაუთვალისწინებელია" + +msgid "IDS_COM_OPT1_WI_FI_DIRECT" +msgstr "Wi-Fi Direct" + +msgid "IDS_COM_POP_UNSUPPORTED" +msgstr "გაუთვალისწინებელი" + +msgid "IDS_BR_BODY_CURRENT_PAGE" +msgstr "მიმდინარე გვერდი" + +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "პრინტერი დაკავშირებულია" + +msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT" +msgstr "დაუკავშირდით Wi-Fi ქსელს და ამობეჭდეთ" + +msgid "IDS_PRT_BODY_SELECT_PRINTER" +msgstr "აირჩიეთ პრინტერი" + +msgid "IDS_PRT_SK_PRINT_PREVIEW" +msgstr "გადახედვა" + +msgid "IDS_SMPOS_SK3_PRINT" +msgstr "ამობეჭდვა" + +msgid "IDS_IMGE_BODY_SIZE" +msgstr "ზომა" + +msgid "IDS_PRT_BODY_SCALING_ABB" +msgstr "ზომის შეცვლა" + +msgid "IDS_COM_BODY_SETTING" +msgstr "პარამეტრები" + +msgid "IDS_BT_OPT_FIT_TO_PAPER" +msgstr "ფურცელზე მორგება" + +msgid "IDS_COM_SK_CUSTOM" +msgstr "მორგებული" + +msgid "IDS_IMGE_BODY_WIDTH" +msgstr "სიგანე" + +msgid "IDS_IMGE_BODY_HEIGHT" +msgstr "სიმაღლე" + +msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB" +msgstr "შეფარდების შენარჩუნება" + +msgid "IDS_COM_BODY_UNIT_INCH" +msgstr "დიუმი" + +msgid "IDS_COM_BODY_UNIT_CM" +msgstr "სმ." + +msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB" +msgstr "%d გვერდი 1 ფურცელზე" + +msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS" +msgstr "პრინტერის პარამეტრები" + +msgid "IDS_PRT_BODY_PRINTER" +msgstr "პრინტერი" + +msgid "IDS_PRT_BODY_PAPERSIZE" +msgstr "ფურცლის ზომა" + +msgid "IDS_PRT_BODY_NUMBEROFCOPIES" +msgstr "ასლების რაოდენობა" + +msgid "IDS_PRT_BODY_PRINT_RANGE_ABB" +msgstr "ბეჭდვის დიაპაზონი" + +msgid "IDS_PRT_BODY_COLOUR" +msgstr "ფერი" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT" +msgstr "მონახაზი" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD" +msgstr "სტანდარტული" + +msgid "IDS_COM_BODY_HIGH" +msgstr "მაღალი" + +msgid "IDS_ST_BODY_NORMAL" +msgstr "ნორმალური" + +msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING" +msgstr "ელოდება ბეჭდვას..." + +msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING" +msgstr "ემზადება ამოსაბეჭდად..." + +msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING" +msgstr "იბეჭდება..." + +msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB" +msgstr "ფოტოგრაფია" + +msgid "IDS_ST_BODY_GLOSSY" +msgstr "Glossy" + +msgid "IDS_DIC_BODY_ALL" +msgstr "ყველა" + +msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY" +msgstr "ბეჭდვის ხარისხი" + +msgid "IDS_IMGE_HEADER_GREY" +msgstr "ნაცრისფერი" + +msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE" +msgstr "პრინტერები ვერ იძებნება" + +msgid "IDS_COM_BODY_NO_DEVICES" +msgstr "მოწყობილობები არ არის" + +msgid "IDS_PRT_POP_PRINTING_CANCELED" +msgstr "დაბეჭდვა შეწყდა" + +msgid "IDS_COM_POP_MEMORY_FULL" +msgstr "მეხსიერება შევსებულია" + +msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING" +msgstr "იძებნება პრინტერები..." + +msgid "IDS_PRT_POP_CHECKPRINTERSTATE" +msgstr "შეამოწმეთ პრინტერის სტატუსი" + +msgid "IDS_ASEML_POP_SEARCH_FAILED" +msgstr "ძებნა ვერ შესრულდა" + +msgid "IDS_PRT_POP_PRINTINGERROR" +msgstr "ბეჭდვის შეცდომა" + +msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED" +msgstr "Wi-Fi გამოირთო" + +msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER" +msgstr "ქაღალდი" + +msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2" +msgstr "პრინტერი გათიშულია" + diff --git a/mobileprint/po/kk.po b/mobileprint/po/kk.po new file mode 100644 index 0000000..31445d9 --- /dev/null +++ b/mobileprint/po/kk.po @@ -0,0 +1,171 @@ +msgid "IDS_COM_SK_HIDE" +msgstr "Жасыру" + +msgid "IDS_COM_SK_REFRESH" +msgstr "Жаңарту" + +msgid "IDS_COM_SK_CANCEL" +msgstr "Тоқтату" + +msgid "IDS_IMGE_OPT_ROTATE" +msgstr "Бұру" + +msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR" +msgstr "Жүйе қателігі" + +msgid "IDS_COM_SK_BACK" +msgstr "Aртқа" + +msgid "IDS_COM_BODY_WI_FI" +msgstr "Wi-Fi" + +msgid "IDS_COM_SK_OK" +msgstr "OK" + +msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE" +msgstr "Қолдаусыз файл түрі" + +msgid "IDS_COM_OPT1_WI_FI_DIRECT" +msgstr "Wi-Fi Direct" + +msgid "IDS_COM_POP_UNSUPPORTED" +msgstr "Қолдаусыз" + +msgid "IDS_BR_BODY_CURRENT_PAGE" +msgstr "Ағымдағы бет" + +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Принтер қосылды" + +msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT" +msgstr "Басып шығару үшін Wi-Fi желісіне қосылу" + +msgid "IDS_PRT_BODY_SELECT_PRINTER" +msgstr "Принтер таңдау" + +msgid "IDS_PRT_SK_PRINT_PREVIEW" +msgstr "Көру" + +msgid "IDS_SMPOS_SK3_PRINT" +msgstr "Басып шығару" + +msgid "IDS_IMGE_BODY_SIZE" +msgstr "Өлшемі" + +msgid "IDS_PRT_BODY_SCALING_ABB" +msgstr "Ауқымды өзгерту" + +msgid "IDS_COM_BODY_SETTING" +msgstr "Қондырғылар" + +msgid "IDS_BT_OPT_FIT_TO_PAPER" +msgstr "Қағазға сәйкестендіру" + +msgid "IDS_COM_SK_CUSTOM" +msgstr "Таңдаулы" + +msgid "IDS_IMGE_BODY_WIDTH" +msgstr "Ені" + +msgid "IDS_IMGE_BODY_HEIGHT" +msgstr "Биіктігі" + +msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB" +msgstr "Арақатынасты сақтау" + +msgid "IDS_COM_BODY_UNIT_INCH" +msgstr "дюйм" + +msgid "IDS_COM_BODY_UNIT_CM" +msgstr "cм" + +msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB" +msgstr "1 парақта %d бет" + +msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS" +msgstr "Принтер параметрлері" + +msgid "IDS_PRT_BODY_PRINTER" +msgstr "Басып шығарғыш" + +msgid "IDS_PRT_BODY_PAPERSIZE" +msgstr "Қағаз көлемі" + +msgid "IDS_PRT_BODY_NUMBEROFCOPIES" +msgstr "Көшірмелер саны" + +msgid "IDS_PRT_BODY_PRINT_RANGE_ABB" +msgstr "Принтер ауқымы" + +msgid "IDS_PRT_BODY_COLOUR" +msgstr "Түс" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT" +msgstr "Кесте" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD" +msgstr "Стандартты" + +msgid "IDS_COM_BODY_HIGH" +msgstr "Жоғары" + +msgid "IDS_ST_BODY_NORMAL" +msgstr "Қалыпты" + +msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING" +msgstr "Басып шығаруды күтуде..." + +msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING" +msgstr "Басып шығаруға дайындауда..." + +msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING" +msgstr "Басып шығаруда..." + +msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB" +msgstr "Фотографиялық" + +msgid "IDS_ST_BODY_GLOSSY" +msgstr "Glossy" + +msgid "IDS_DIC_BODY_ALL" +msgstr "Барлығы" + +msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY" +msgstr "Басып шығару сапасы" + +msgid "IDS_IMGE_HEADER_GREY" +msgstr "Сұр" + +msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE" +msgstr "Қол жетімді принтерлер жоқ" + +msgid "IDS_COM_BODY_NO_DEVICES" +msgstr "Құрылғылар жоқ" + +msgid "IDS_PRT_POP_PRINTING_CANCELED" +msgstr "Басып шығару болдырылмады" + +msgid "IDS_COM_POP_MEMORY_FULL" +msgstr "Жад толып кеткен" + +msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING" +msgstr "Принтерлерді іздеуде..." + +msgid "IDS_PRT_POP_CHECKPRINTERSTATE" +msgstr "Принтер күйін тексеру" + +msgid "IDS_ASEML_POP_SEARCH_FAILED" +msgstr "Ізделмеді" + +msgid "IDS_PRT_POP_PRINTINGERROR" +msgstr "Басып шығару қатесі" + +msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED" +msgstr "Wi-Fi ажыратылған" + +msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER" +msgstr "Қағаз" + +msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2" +msgstr "Принтер ажыратылды" + diff --git a/mobileprint/po/ko_KR.po b/mobileprint/po/ko_KR.po new file mode 100644 index 0000000..8c6c499 --- /dev/null +++ b/mobileprint/po/ko_KR.po @@ -0,0 +1,171 @@ +msgid "IDS_COM_SK_HIDE" +msgstr "숨기기" + +msgid "IDS_COM_SK_REFRESH" +msgstr "새로고침" + +msgid "IDS_COM_SK_CANCEL" +msgstr "취소" + +msgid "IDS_IMGE_OPT_ROTATE" +msgstr "회전" + +msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR" +msgstr "시스템 오류가 발생하였습니다" + +msgid "IDS_COM_SK_BACK" +msgstr "이전" + +msgid "IDS_COM_BODY_WI_FI" +msgstr "Wi-Fi" + +msgid "IDS_COM_SK_OK" +msgstr "확인" + +msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE" +msgstr "지원되지 않는 파일 형식입니다" + +msgid "IDS_COM_OPT1_WI_FI_DIRECT" +msgstr "Wi-Fi Direct" + +msgid "IDS_COM_POP_UNSUPPORTED" +msgstr "지원되지 않습니다" + +msgid "IDS_BR_BODY_CURRENT_PAGE" +msgstr "현재 페이지" + +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "프린터가 연결되었습니다" + +msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT" +msgstr "인쇄하려면 Wi-Fi 네트워크에 연결하세요" + +msgid "IDS_PRT_BODY_SELECT_PRINTER" +msgstr "프린터 선택" + +msgid "IDS_PRT_SK_PRINT_PREVIEW" +msgstr "미리보기" + +msgid "IDS_SMPOS_SK3_PRINT" +msgstr "출력" + +msgid "IDS_IMGE_BODY_SIZE" +msgstr "크기" + +msgid "IDS_PRT_BODY_SCALING_ABB" +msgstr "크기 조정" + +msgid "IDS_COM_BODY_SETTING" +msgstr "설정" + +msgid "IDS_BT_OPT_FIT_TO_PAPER" +msgstr "용지 크기에 맞추기" + +msgid "IDS_COM_SK_CUSTOM" +msgstr "사용자 설정" + +msgid "IDS_IMGE_BODY_WIDTH" +msgstr "넓이" + +msgid "IDS_IMGE_BODY_HEIGHT" +msgstr "높이" + +msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB" +msgstr "비율 유지" + +msgid "IDS_COM_BODY_UNIT_INCH" +msgstr "inch" + +msgid "IDS_COM_BODY_UNIT_CM" +msgstr "cm" + +msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB" +msgstr "1장에 %d 페이지" + +msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS" +msgstr "프린터 설정" + +msgid "IDS_PRT_BODY_PRINTER" +msgstr "프린터" + +msgid "IDS_PRT_BODY_PAPERSIZE" +msgstr "용지 크기" + +msgid "IDS_PRT_BODY_NUMBEROFCOPIES" +msgstr "인쇄 매수" + +msgid "IDS_PRT_BODY_PRINT_RANGE_ABB" +msgstr "인쇄 범위" + +msgid "IDS_PRT_BODY_COLOUR" +msgstr "색상" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT" +msgstr "초안" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD" +msgstr "표준" + +msgid "IDS_COM_BODY_HIGH" +msgstr "높음" + +msgid "IDS_ST_BODY_NORMAL" +msgstr "보통" + +msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING" +msgstr "인쇄 대기 중..." + +msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING" +msgstr "인쇄 준비 중..." + +msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING" +msgstr "인쇄 중..." + +msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB" +msgstr "사진" + +msgid "IDS_ST_BODY_GLOSSY" +msgstr "글로시" + +msgid "IDS_DIC_BODY_ALL" +msgstr "전체" + +msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY" +msgstr "인쇄 품질" + +msgid "IDS_IMGE_HEADER_GREY" +msgstr "회색조" + +msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE" +msgstr "사용할 수 있는 프린터가 없습니다" + +msgid "IDS_COM_BODY_NO_DEVICES" +msgstr "기기 목록이 없습니다" + +msgid "IDS_PRT_POP_PRINTING_CANCELED" +msgstr "인쇄가 취소되었습니다" + +msgid "IDS_COM_POP_MEMORY_FULL" +msgstr "저장 공간이 부족합니다" + +msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING" +msgstr "프린터 검색 중..." + +msgid "IDS_PRT_POP_CHECKPRINTERSTATE" +msgstr "프린터 상태를 확인하세요" + +msgid "IDS_ASEML_POP_SEARCH_FAILED" +msgstr "검색하지 못하였습니다" + +msgid "IDS_PRT_POP_PRINTINGERROR" +msgstr "인쇄 오류가 발생하였습니다" + +msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED" +msgstr "Wi-Fi 연결이 끊어졌습니다" + +msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER" +msgstr "종이" + +msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2" +msgstr "프린터와 연결이 끊어졌습니다" + diff --git a/mobileprint/po/lt.po b/mobileprint/po/lt.po new file mode 100644 index 0000000..aeafe8c --- /dev/null +++ b/mobileprint/po/lt.po @@ -0,0 +1,171 @@ +msgid "IDS_COM_SK_HIDE" +msgstr "Nerodyti" + +msgid "IDS_COM_SK_REFRESH" +msgstr "Naujinti" + +msgid "IDS_COM_SK_CANCEL" +msgstr "AtÅ¡aukti" + +msgid "IDS_IMGE_OPT_ROTATE" +msgstr "Sukti" + +msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR" +msgstr "Sistemos klaida" + +msgid "IDS_COM_SK_BACK" +msgstr "Atgal" + +msgid "IDS_COM_BODY_WI_FI" +msgstr "„Wi-Fi“" + +msgid "IDS_COM_SK_OK" +msgstr "Gerai" + +msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE" +msgstr "Nepalaikomas failo tipas" + +msgid "IDS_COM_OPT1_WI_FI_DIRECT" +msgstr "„Wi-Fi Direct“" + +msgid "IDS_COM_POP_UNSUPPORTED" +msgstr "Nepalaikoma" + +msgid "IDS_BR_BODY_CURRENT_PAGE" +msgstr "Dabartinis puslpais" + +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Prijungtas spausdintuvas" + +msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT" +msgstr "Prisijunkite prie „Wi-Fi“ tinklo, jei norite spausdinti" + +msgid "IDS_PRT_BODY_SELECT_PRINTER" +msgstr "Pasirinkti spausdintuvą" + +msgid "IDS_PRT_SK_PRINT_PREVIEW" +msgstr "PeržiÅ«ra" + +msgid "IDS_SMPOS_SK3_PRINT" +msgstr "Spausdinti" + +msgid "IDS_IMGE_BODY_SIZE" +msgstr "Dydis" + +msgid "IDS_PRT_BODY_SCALING_ABB" +msgstr "Mastelio parinkimas" + +msgid "IDS_COM_BODY_SETTING" +msgstr "Nustatymas" + +msgid "IDS_BT_OPT_FIT_TO_PAPER" +msgstr "Pritaikyti pagal lapo formatą" + +msgid "IDS_COM_SK_CUSTOM" +msgstr "Pasirink." + +msgid "IDS_IMGE_BODY_WIDTH" +msgstr "Plotis" + +msgid "IDS_IMGE_BODY_HEIGHT" +msgstr "AukÅ¡tis" + +msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB" +msgstr "IÅ¡saug. vaizdo formatą" + +msgid "IDS_COM_BODY_UNIT_INCH" +msgstr "colis" + +msgid "IDS_COM_BODY_UNIT_CM" +msgstr "cm" + +msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB" +msgstr "%d psl. 1 lape" + +msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS" +msgstr "Spausdintuvo nustatymai" + +msgid "IDS_PRT_BODY_PRINTER" +msgstr "Spausdintuvas" + +msgid "IDS_PRT_BODY_PAPERSIZE" +msgstr "Popieriaus formatas" + +msgid "IDS_PRT_BODY_NUMBEROFCOPIES" +msgstr "Kopijų skaičius" + +msgid "IDS_PRT_BODY_PRINT_RANGE_ABB" +msgstr "Spausdinimo diapazonas" + +msgid "IDS_PRT_BODY_COLOUR" +msgstr "Spalva" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT" +msgstr "JuodraÅ¡tis" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD" +msgstr "Standartinis" + +msgid "IDS_COM_BODY_HIGH" +msgstr "AukÅ¡ta" + +msgid "IDS_ST_BODY_NORMAL" +msgstr "Ä®prastas" + +msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING" +msgstr "Laukiama, kol bus spausdinama..." + +msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING" +msgstr "RuoÅ¡iamasi spausdinti..." + +msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING" +msgstr "Spausdinama..." + +msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB" +msgstr "Fotografinis" + +msgid "IDS_ST_BODY_GLOSSY" +msgstr "Blizgus" + +msgid "IDS_DIC_BODY_ALL" +msgstr "Visos" + +msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY" +msgstr "Spausdinimo kokybė" + +msgid "IDS_IMGE_HEADER_GREY" +msgstr "Pilka" + +msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE" +msgstr "Spausdintuvų nėra" + +msgid "IDS_COM_BODY_NO_DEVICES" +msgstr "Nėra įrenginių" + +msgid "IDS_PRT_POP_PRINTING_CANCELED" +msgstr "Spausdinimas atÅ¡auktas" + +msgid "IDS_COM_POP_MEMORY_FULL" +msgstr "Atmintis pilna" + +msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING" +msgstr "IeÅ¡koma spausdintuvų..." + +msgid "IDS_PRT_POP_CHECKPRINTERSTATE" +msgstr "Patikrinti spausdintuvo bÅ«seną" + +msgid "IDS_ASEML_POP_SEARCH_FAILED" +msgstr "PaieÅ¡ka nepavyko" + +msgid "IDS_PRT_POP_PRINTINGERROR" +msgstr "Spausdinimo klaida" + +msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED" +msgstr "„Wi-Fi“ atjungtas" + +msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER" +msgstr "Popierius" + +msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2" +msgstr "Spausdintuvas atjungtas" + diff --git a/mobileprint/po/lv.po b/mobileprint/po/lv.po new file mode 100644 index 0000000..a64cd1e --- /dev/null +++ b/mobileprint/po/lv.po @@ -0,0 +1,171 @@ +msgid "IDS_COM_SK_HIDE" +msgstr "Slēpt" + +msgid "IDS_COM_SK_REFRESH" +msgstr "Atsvaidz." + +msgid "IDS_COM_SK_CANCEL" +msgstr "Atcelt" + +msgid "IDS_IMGE_OPT_ROTATE" +msgstr "Pagriezt" + +msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR" +msgstr "Sistēmas kļūda" + +msgid "IDS_COM_SK_BACK" +msgstr "Atpakaļ" + +msgid "IDS_COM_BODY_WI_FI" +msgstr "Wi-Fi" + +msgid "IDS_COM_SK_OK" +msgstr "Labi" + +msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE" +msgstr "NeatbalstÄ«ts faila veids" + +msgid "IDS_COM_OPT1_WI_FI_DIRECT" +msgstr "Wi-Fi Direct" + +msgid "IDS_COM_POP_UNSUPPORTED" +msgstr "NeatbalstÄ«ts" + +msgid "IDS_BR_BODY_CURRENT_PAGE" +msgstr "PaÅ¡reizējā lapa" + +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Printeris pievienots" + +msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT" +msgstr "Lai drukātu, izveidojiet savienojumu ar Wi-Fi tÄ«klu" + +msgid "IDS_PRT_BODY_SELECT_PRINTER" +msgstr "Izvēlēties printeri" + +msgid "IDS_PRT_SK_PRINT_PREVIEW" +msgstr "PriekÅ¡sk." + +msgid "IDS_SMPOS_SK3_PRINT" +msgstr "Drukāt" + +msgid "IDS_IMGE_BODY_SIZE" +msgstr "Lielums" + +msgid "IDS_PRT_BODY_SCALING_ABB" +msgstr "MērogoÅ¡ana" + +msgid "IDS_COM_BODY_SETTING" +msgstr "IestatÄ«jums" + +msgid "IDS_BT_OPT_FIT_TO_PAPER" +msgstr "Pielāgot papÄ«ram" + +msgid "IDS_COM_SK_CUSTOM" +msgstr "Sava izv." + +msgid "IDS_IMGE_BODY_WIDTH" +msgstr "Platums" + +msgid "IDS_IMGE_BODY_HEIGHT" +msgstr "Augstums" + +msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB" +msgstr "Saglabāt proporcijas" + +msgid "IDS_COM_BODY_UNIT_INCH" +msgstr "colla" + +msgid "IDS_COM_BODY_UNIT_CM" +msgstr "cm" + +msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB" +msgstr "%d lappuses 1 lapā" + +msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS" +msgstr "Printera iestatÄ«jumi" + +msgid "IDS_PRT_BODY_PRINTER" +msgstr "Printeris" + +msgid "IDS_PRT_BODY_PAPERSIZE" +msgstr "PapÄ«ra formāts" + +msgid "IDS_PRT_BODY_NUMBEROFCOPIES" +msgstr "Kopiju skaits" + +msgid "IDS_PRT_BODY_PRINT_RANGE_ABB" +msgstr "Drukas diapazons" + +msgid "IDS_PRT_BODY_COLOUR" +msgstr "Krāsa" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT" +msgstr "Melnraksts" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD" +msgstr "Standarta" + +msgid "IDS_COM_BODY_HIGH" +msgstr "Augsta" + +msgid "IDS_ST_BODY_NORMAL" +msgstr "Parasts" + +msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING" +msgstr "Gaida, lai drukātu..." + +msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING" +msgstr "Sagatavo drukāšanai..." + +msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING" +msgstr "Drukā..." + +msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB" +msgstr "Fotogrāfisks" + +msgid "IDS_ST_BODY_GLOSSY" +msgstr "SpÄ«dÄ«gs" + +msgid "IDS_DIC_BODY_ALL" +msgstr "Visi" + +msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY" +msgstr "Drukas kvalitāte" + +msgid "IDS_IMGE_HEADER_GREY" +msgstr "Pelēks" + +msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE" +msgstr "Nav pieejams neviens printeris" + +msgid "IDS_COM_BODY_NO_DEVICES" +msgstr "Nav ierīču" + +msgid "IDS_PRT_POP_PRINTING_CANCELED" +msgstr "Drukāšana atcelta" + +msgid "IDS_COM_POP_MEMORY_FULL" +msgstr "Atmiņa pilna" + +msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING" +msgstr "Meklē printerus..." + +msgid "IDS_PRT_POP_CHECKPRINTERSTATE" +msgstr "PārbaudÄ«t printera statusu" + +msgid "IDS_ASEML_POP_SEARCH_FAILED" +msgstr "Meklēšana neizdevās" + +msgid "IDS_PRT_POP_PRINTINGERROR" +msgstr "Drukāšanas kļūda" + +msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED" +msgstr "Wi-Fi ir atvienots" + +msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER" +msgstr "PapÄ«rs" + +msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2" +msgstr "Printeris atvienots" + diff --git a/mobileprint/po/mk.po b/mobileprint/po/mk.po new file mode 100644 index 0000000..501c2cd --- /dev/null +++ b/mobileprint/po/mk.po @@ -0,0 +1,171 @@ +msgid "IDS_COM_SK_HIDE" +msgstr "Прикриј" + +msgid "IDS_COM_SK_REFRESH" +msgstr "Обнови" + +msgid "IDS_COM_SK_CANCEL" +msgstr "Откажи" + +msgid "IDS_IMGE_OPT_ROTATE" +msgstr "Заврти" + +msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR" +msgstr "Системска грешка" + +msgid "IDS_COM_SK_BACK" +msgstr "Назад" + +msgid "IDS_COM_BODY_WI_FI" +msgstr "Wi-Fi" + +msgid "IDS_COM_SK_OK" +msgstr "OK" + +msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE" +msgstr "Неподдржан тип на фајл" + +msgid "IDS_COM_OPT1_WI_FI_DIRECT" +msgstr "Wi-Fi Direct" + +msgid "IDS_COM_POP_UNSUPPORTED" +msgstr "Неподдржано" + +msgid "IDS_BR_BODY_CURRENT_PAGE" +msgstr "Тековна страница" + +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Поврзан е печатач" + +msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT" +msgstr "Поврзете се со мрежа Wi-Fi за печатење" + +msgid "IDS_PRT_BODY_SELECT_PRINTER" +msgstr "Изберете печатач" + +msgid "IDS_PRT_SK_PRINT_PREVIEW" +msgstr "Назад" + +msgid "IDS_SMPOS_SK3_PRINT" +msgstr "Печати" + +msgid "IDS_IMGE_BODY_SIZE" +msgstr "Големина" + +msgid "IDS_PRT_BODY_SCALING_ABB" +msgstr "Размер" + +msgid "IDS_COM_BODY_SETTING" +msgstr "Нагодување" + +msgid "IDS_BT_OPT_FIT_TO_PAPER" +msgstr "На цела хартија" + +msgid "IDS_COM_SK_CUSTOM" +msgstr "Прилагод." + +msgid "IDS_IMGE_BODY_WIDTH" +msgstr "Ширина" + +msgid "IDS_IMGE_BODY_HEIGHT" +msgstr "Висина" + +msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB" +msgstr "Запази размер на слика" + +msgid "IDS_COM_BODY_UNIT_INCH" +msgstr "инч" + +msgid "IDS_COM_BODY_UNIT_CM" +msgstr "cm" + +msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB" +msgstr "%d страници на 1 лист" + +msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS" +msgstr "Опции за печатачот" + +msgid "IDS_PRT_BODY_PRINTER" +msgstr "Печатач" + +msgid "IDS_PRT_BODY_PAPERSIZE" +msgstr "Големина на хартија" + +msgid "IDS_PRT_BODY_NUMBEROFCOPIES" +msgstr "Број на копии" + +msgid "IDS_PRT_BODY_PRINT_RANGE_ABB" +msgstr "Опсег на печатење" + +msgid "IDS_PRT_BODY_COLOUR" +msgstr "Боја" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT" +msgstr "За скица" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD" +msgstr "Стандардна" + +msgid "IDS_COM_BODY_HIGH" +msgstr "Висок" + +msgid "IDS_ST_BODY_NORMAL" +msgstr "Нормално" + +msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING" +msgstr "Се чека печатење..." + +msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING" +msgstr "Се подготвува печатење..." + +msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING" +msgstr "Се печати..." + +msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB" +msgstr "Фотографски" + +msgid "IDS_ST_BODY_GLOSSY" +msgstr "Glossy" + +msgid "IDS_DIC_BODY_ALL" +msgstr "Сите" + +msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY" +msgstr "Квалитет на печатење" + +msgid "IDS_IMGE_HEADER_GREY" +msgstr "Сива палета" + +msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE" +msgstr "Не се достапни печатачи" + +msgid "IDS_COM_BODY_NO_DEVICES" +msgstr "Нема уреди" + +msgid "IDS_PRT_POP_PRINTING_CANCELED" +msgstr "Печатењето е откажано" + +msgid "IDS_COM_POP_MEMORY_FULL" +msgstr "Меморијата е полна" + +msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING" +msgstr "Се бараат печатачи..." + +msgid "IDS_PRT_POP_CHECKPRINTERSTATE" +msgstr "Проверете го печатачот" + +msgid "IDS_ASEML_POP_SEARCH_FAILED" +msgstr "Неуспешно пребарување" + +msgid "IDS_PRT_POP_PRINTINGERROR" +msgstr "Грешка во печатењето" + +msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED" +msgstr "Wi-Fi е прекинато" + +msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER" +msgstr "Хартија" + +msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2" +msgstr "Печатачот не е поврзан" + diff --git a/mobileprint/po/mobileprint.pot b/mobileprint/po/mobileprint.pot new file mode 100644 index 0000000..de35177 --- /dev/null +++ b/mobileprint/po/mobileprint.pot @@ -0,0 +1,254 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-04-28 11:39+0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: app/pts_list_view.c:230 +msgid "No device found" +msgstr "" + +#: app/pts_list_view.c:263 +msgid "Can not register the printer" +msgstr "" + +#: app/pts_list_view.c:282 +msgid "No Memory" +msgstr "" + +#: app/pts_list_view.c:304 +msgid "Printer List" +msgstr "" + +#: app/pts_list_view.c:416 +msgid "Search printer failed" +msgstr "" + +#: app/pts_list_view.c:458 +msgid "IDS_COM_POP_SEARCHING" +msgstr "" + +#: app/pts_list_view.c:462 +msgid "Cancel" +msgstr "" + +#: app/pts_main_view.c:158 +msgid "Please check the WiFi status" +msgstr "" + +#: app/pts_main_view.c:207 app/pts_main_view.c:876 +msgid "Can not get USB/WIFI status" +msgstr "" + +#: app/pts_main_view.c:289 +msgid "Print Error" +msgstr "" + +#: app/pts_main_view.c:321 +msgid "Please check the printer status" +msgstr "" + +#: app/pts_main_view.c:475 +msgid "IDS_BT_BODY_PRINTING_ING" +msgstr "" + +#: app/pts_main_view.c:574 +msgid "Please check the WIFI/USB connection status" +msgstr "" + +#: app/pts_main_view.c:576 +msgid "Can not print this file" +msgstr "" + +#: app/pts_main_view.c:597 +msgid "Please select one printer to print" +msgstr "" + +#: app/pts_main_view.c:626 +msgid "IDS_PRT_SK_PRINT" +msgstr "" + +#: app/pts_main_view.c:899 +msgid "No activated printer!" +msgstr "" + +#: app/pts_main_view.c:969 +msgid "No devices" +msgstr "" + +#: app/pts_main_view.c:1277 +msgid "Back" +msgstr "" + +#: app/pts_main_view.c:1280 +msgid "IDS_PRT_SK_PRINT_PREVIEW" +msgstr "" + +#: app/pts_setting_view.c:340 +msgid "IDS_PRT_BODY_PRINTER" +msgstr "" + +#: app/pts_setting_view.c:348 +msgid "IDS_SETTINGS_CAPTION" +msgstr "" + +#: app/pts_setting_view.c:403 +msgid "IDS_BT_BODY_COPIES" +msgstr "" + +#: app/pts_setting_view.c:405 +msgid "IDS_BT_BODY_PAPERSIZE" +msgstr "" + +#: app/pts_setting_view.c:407 +msgid "IDS_BT_BODY_ORIENTATION" +msgstr "" + +#: app/pts_setting_view.c:409 +msgid "IDS_BT_PRINT_RANGE" +msgstr "" + +#: app/pts_setting_view.c:411 +msgid "IDS_BT_BODY_SCALING" +msgstr "" + +#: app/pts_setting_view.c:413 +msgid "IDS_BT_BODY_GRAYSCALE" +msgstr "" + +#: app/pts_setting_view.c:415 +msgid "IDS_BT_QUALITY" +msgstr "" + +#: app/pts_setting_view.c:417 +msgid "IDS_BT_PAPER" +msgstr "" + +#: app/pts_setting_view.c:419 app/pts_setting_view.c:546 +msgid "Error option" +msgstr "" + +#: app/pts_setting_view.c:453 app/pts_setting_view.c:787 +msgid "L" +msgstr "" + +#: app/pts_setting_view.c:455 app/pts_setting_view.c:789 +msgid "2L" +msgstr "" + +#: app/pts_setting_view.c:457 app/pts_setting_view.c:791 +msgid "Hagaki Postcard" +msgstr "" + +#: app/pts_setting_view.c:459 app/pts_setting_view.c:793 +msgid "Business card" +msgstr "" + +#: app/pts_setting_view.c:461 app/pts_setting_view.c:795 +msgid "4x6" +msgstr "" + +#: app/pts_setting_view.c:463 app/pts_setting_view.c:797 +msgid "8x10" +msgstr "" + +#: app/pts_setting_view.c:465 app/pts_setting_view.c:799 +msgid "Letter" +msgstr "" + +#: app/pts_setting_view.c:467 app/pts_setting_view.c:801 +msgid "11x17" +msgstr "" + +#: app/pts_setting_view.c:469 app/pts_setting_view.c:803 +msgid "A4" +msgstr "" + +#: app/pts_setting_view.c:476 app/pts_setting_view.c:728 +msgid "IDS_BR_OPT_AUTO" +msgstr "" + +#: app/pts_setting_view.c:478 app/pts_setting_view.c:730 +msgid "IDS_BR_OPT_PORTRAIT" +msgstr "" + +#: app/pts_setting_view.c:480 app/pts_setting_view.c:732 +msgid "IDS_BR_OPT_LANDSCAPE" +msgstr "" + +#: app/pts_setting_view.c:487 app/pts_setting_view.c:910 +msgid "IDS_BR_OPT_RANGE_ALL" +msgstr "" + +#: app/pts_setting_view.c:489 app/pts_setting_view.c:912 +msgid "IDS_BR_OPT_RANGE_CURRENT" +msgstr "" + +#: app/pts_setting_view.c:496 app/pts_setting_view.c:755 +msgid "IDS_BR_OPT_FIT_TO_PAGE" +msgstr "" + +#: app/pts_setting_view.c:498 app/pts_setting_view.c:757 +msgid "IDS_BR_OPT_ORIGINAL_SIZE" +msgstr "" + +#: app/pts_setting_view.c:500 app/pts_setting_view.c:759 +msgid "IDS_BR_OPT_TWO_PAGES" +msgstr "" + +#: app/pts_setting_view.c:502 app/pts_setting_view.c:761 +msgid "IDS_BR_OPT_FOUR_PAGES" +msgstr "" + +#: app/pts_setting_view.c:513 app/pts_setting_view.c:826 +msgid "IDS_BR_OPT_COLOUR" +msgstr "" + +#: app/pts_setting_view.c:515 app/pts_setting_view.c:828 +msgid "IDS_BR_OPT_GRAYSCALE" +msgstr "" + +#: app/pts_setting_view.c:517 app/pts_setting_view.c:830 +msgid "IDS_BR_OPT_BLACKNWHITE" +msgstr "" + +#: app/pts_setting_view.c:524 app/pts_setting_view.c:853 +msgid "IDS_BR_OPT_DRAFT" +msgstr "" + +#: app/pts_setting_view.c:526 app/pts_setting_view.c:855 +msgid "IDS_BR_OPT_NORMAL" +msgstr "" + +#: app/pts_setting_view.c:528 app/pts_setting_view.c:857 +msgid "IDS_BR_OPT_HIGH" +msgstr "" + +#: app/pts_setting_view.c:535 app/pts_setting_view.c:881 +msgid "IDS_BR_OPT_PT_DEFAULT" +msgstr "" + +#: app/pts_setting_view.c:537 app/pts_setting_view.c:883 +msgid "IDS_BR_OPT_PT_GLOSSY" +msgstr "" + +#: app/pts_setting_view.c:539 app/pts_setting_view.c:885 +msgid "IDS_BR_OPT_PT_PHOTO" +msgstr "" + +#: app/pts_setting_view.c:1197 +msgid "IDS_COM_BODY_SETTINGS" +msgstr "" diff --git a/mobileprint/po/nb.po b/mobileprint/po/nb.po new file mode 100644 index 0000000..047d160 --- /dev/null +++ b/mobileprint/po/nb.po @@ -0,0 +1,171 @@ +msgid "IDS_COM_SK_HIDE" +msgstr "Skjul" + +msgid "IDS_COM_SK_REFRESH" +msgstr "Oppdater" + +msgid "IDS_COM_SK_CANCEL" +msgstr "Avbryt" + +msgid "IDS_IMGE_OPT_ROTATE" +msgstr "Roter" + +msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR" +msgstr "Systemfeil" + +msgid "IDS_COM_SK_BACK" +msgstr "Tilbake" + +msgid "IDS_COM_BODY_WI_FI" +msgstr "Wi-Fi" + +msgid "IDS_COM_SK_OK" +msgstr "OK" + +msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE" +msgstr "Filtypen støttes ikke" + +msgid "IDS_COM_OPT1_WI_FI_DIRECT" +msgstr "Wi-Fi Direct" + +msgid "IDS_COM_POP_UNSUPPORTED" +msgstr "Støttes ikke" + +msgid "IDS_BR_BODY_CURRENT_PAGE" +msgstr "Aktuell side" + +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Skriver tilkoblet" + +msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT" +msgstr "Koble til Wi-Fi-nettverk for Ã¥ skrive ut" + +msgid "IDS_PRT_BODY_SELECT_PRINTER" +msgstr "Velg skriver" + +msgid "IDS_PRT_SK_PRINT_PREVIEW" +msgstr "ForhÃ¥ndsvisning" + +msgid "IDS_SMPOS_SK3_PRINT" +msgstr "Skriv ut" + +msgid "IDS_IMGE_BODY_SIZE" +msgstr "Størrelse" + +msgid "IDS_PRT_BODY_SCALING_ABB" +msgstr "Skalerer" + +msgid "IDS_COM_BODY_SETTING" +msgstr "Innstilling" + +msgid "IDS_BT_OPT_FIT_TO_PAPER" +msgstr "Tilpass til papir" + +msgid "IDS_COM_SK_CUSTOM" +msgstr "Egendef." + +msgid "IDS_IMGE_BODY_WIDTH" +msgstr "Bredde" + +msgid "IDS_IMGE_BODY_HEIGHT" +msgstr "Høyde" + +msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB" +msgstr "Behold sideforhold" + +msgid "IDS_COM_BODY_UNIT_INCH" +msgstr "tommer" + +msgid "IDS_COM_BODY_UNIT_CM" +msgstr "cm" + +msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB" +msgstr "%d sider pÃ¥ 1 ark" + +msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS" +msgstr "Skriverinnstillinger" + +msgid "IDS_PRT_BODY_PRINTER" +msgstr "Printer" + +msgid "IDS_PRT_BODY_PAPERSIZE" +msgstr "Papirstørrelse" + +msgid "IDS_PRT_BODY_NUMBEROFCOPIES" +msgstr "Antall kopier" + +msgid "IDS_PRT_BODY_PRINT_RANGE_ABB" +msgstr "UtskriftsomrÃ¥de" + +msgid "IDS_PRT_BODY_COLOUR" +msgstr "Farge" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT" +msgstr "Utkast" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD" +msgstr "Standard" + +msgid "IDS_COM_BODY_HIGH" +msgstr "Høy" + +msgid "IDS_ST_BODY_NORMAL" +msgstr "Normal" + +msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING" +msgstr "Venter pÃ¥ utskrift..." + +msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING" +msgstr "Forbereder utskrift..." + +msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING" +msgstr "Skriver ut..." + +msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB" +msgstr "Fotografisk" + +msgid "IDS_ST_BODY_GLOSSY" +msgstr "Glossy" + +msgid "IDS_DIC_BODY_ALL" +msgstr "Alle" + +msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY" +msgstr "Utskriftskvalitet" + +msgid "IDS_IMGE_HEADER_GREY" +msgstr "GrÃ¥" + +msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE" +msgstr "Ingen tilgjengelige skrivere" + +msgid "IDS_COM_BODY_NO_DEVICES" +msgstr "Ingen enheter" + +msgid "IDS_PRT_POP_PRINTING_CANCELED" +msgstr "Utskrift avbrutt" + +msgid "IDS_COM_POP_MEMORY_FULL" +msgstr "Minnet er fullt" + +msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING" +msgstr "Søker etter skrivere..." + +msgid "IDS_PRT_POP_CHECKPRINTERSTATE" +msgstr "Sjekk skriverstatus" + +msgid "IDS_ASEML_POP_SEARCH_FAILED" +msgstr "Søk mislyktes" + +msgid "IDS_PRT_POP_PRINTINGERROR" +msgstr "Utskriftsfeil" + +msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED" +msgstr "Wi-Fi frakoblet" + +msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER" +msgstr "Papir" + +msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2" +msgstr "Skriver frakoblet" + diff --git a/mobileprint/po/nl_NL.po b/mobileprint/po/nl_NL.po new file mode 100644 index 0000000..637685f --- /dev/null +++ b/mobileprint/po/nl_NL.po @@ -0,0 +1,171 @@ +msgid "IDS_COM_SK_HIDE" +msgstr "Verberg." + +msgid "IDS_COM_SK_REFRESH" +msgstr "Vernieuw" + +msgid "IDS_COM_SK_CANCEL" +msgstr "Annuleren" + +msgid "IDS_IMGE_OPT_ROTATE" +msgstr "Draaien" + +msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR" +msgstr "Systeemfout" + +msgid "IDS_COM_SK_BACK" +msgstr "Terug" + +msgid "IDS_COM_BODY_WI_FI" +msgstr "Wi-Fi" + +msgid "IDS_COM_SK_OK" +msgstr "OK" + +msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE" +msgstr "Niet-ondersteund bestandstype" + +msgid "IDS_COM_OPT1_WI_FI_DIRECT" +msgstr "Wi-Fi Direct" + +msgid "IDS_COM_POP_UNSUPPORTED" +msgstr "Niet ondersteund" + +msgid "IDS_BR_BODY_CURRENT_PAGE" +msgstr "Huidige pagina" + +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Printer aangesloten" + +msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT" +msgstr "Met Wi-Fi-netwerk verbinden om af te drukken" + +msgid "IDS_PRT_BODY_SELECT_PRINTER" +msgstr "Printer selecteren" + +msgid "IDS_PRT_SK_PRINT_PREVIEW" +msgstr "Voorbeeld" + +msgid "IDS_SMPOS_SK3_PRINT" +msgstr "Af- drukken" + +msgid "IDS_IMGE_BODY_SIZE" +msgstr "Grootte" + +msgid "IDS_PRT_BODY_SCALING_ABB" +msgstr "Schaal" + +msgid "IDS_COM_BODY_SETTING" +msgstr "Instelling" + +msgid "IDS_BT_OPT_FIT_TO_PAPER" +msgstr "Passend maken" + +msgid "IDS_COM_SK_CUSTOM" +msgstr "Aangepast" + +msgid "IDS_IMGE_BODY_WIDTH" +msgstr "Breedte" + +msgid "IDS_IMGE_BODY_HEIGHT" +msgstr "Hoogte" + +msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB" +msgstr "Verhouding behouden" + +msgid "IDS_COM_BODY_UNIT_INCH" +msgstr "inch" + +msgid "IDS_COM_BODY_UNIT_CM" +msgstr "cm" + +msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB" +msgstr "%d pagina´s op 1 vel" + +msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS" +msgstr "Printerinstellingen" + +msgid "IDS_PRT_BODY_PRINTER" +msgstr "Printer" + +msgid "IDS_PRT_BODY_PAPERSIZE" +msgstr "Papierformaat" + +msgid "IDS_PRT_BODY_NUMBEROFCOPIES" +msgstr "Aantal exemplaren" + +msgid "IDS_PRT_BODY_PRINT_RANGE_ABB" +msgstr "Afdrukbereik" + +msgid "IDS_PRT_BODY_COLOUR" +msgstr "Kleur" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT" +msgstr "Concept" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD" +msgstr "Standaard" + +msgid "IDS_COM_BODY_HIGH" +msgstr "Hoog" + +msgid "IDS_ST_BODY_NORMAL" +msgstr "Normaal" + +msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING" +msgstr "Wachten op afdrukken..." + +msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING" +msgstr "Voorbereiden voor afdrukken..." + +msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING" +msgstr "Afdrukken..." + +msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB" +msgstr "Fotografisch" + +msgid "IDS_ST_BODY_GLOSSY" +msgstr "Glossy" + +msgid "IDS_DIC_BODY_ALL" +msgstr "Alles" + +msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY" +msgstr "Afdrukkwaliteit" + +msgid "IDS_IMGE_HEADER_GREY" +msgstr "Grijs" + +msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE" +msgstr "Geen printers beschikbaar" + +msgid "IDS_COM_BODY_NO_DEVICES" +msgstr "Geen apparaten" + +msgid "IDS_PRT_POP_PRINTING_CANCELED" +msgstr "Afdrukken geannuleerd" + +msgid "IDS_COM_POP_MEMORY_FULL" +msgstr "Geheugen vol" + +msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING" +msgstr "Zoeken naar printers..." + +msgid "IDS_PRT_POP_CHECKPRINTERSTATE" +msgstr "Printerstatus controleren" + +msgid "IDS_ASEML_POP_SEARCH_FAILED" +msgstr "Zoeken mislukt" + +msgid "IDS_PRT_POP_PRINTINGERROR" +msgstr "Afdrukfout" + +msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED" +msgstr "Wi-Fi-verbinding verbroken" + +msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER" +msgstr "Papier" + +msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2" +msgstr "Printer losgekoppeld" + diff --git a/mobileprint/po/pl.po b/mobileprint/po/pl.po new file mode 100644 index 0000000..6655e4a --- /dev/null +++ b/mobileprint/po/pl.po @@ -0,0 +1,171 @@ +msgid "IDS_COM_SK_HIDE" +msgstr "Ukryj" + +msgid "IDS_COM_SK_REFRESH" +msgstr "Odśwież" + +msgid "IDS_COM_SK_CANCEL" +msgstr "Anuluj" + +msgid "IDS_IMGE_OPT_ROTATE" +msgstr "Obróć" + +msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR" +msgstr "Błąd systemu" + +msgid "IDS_COM_SK_BACK" +msgstr "Wstecz" + +msgid "IDS_COM_BODY_WI_FI" +msgstr "Wi-Fi" + +msgid "IDS_COM_SK_OK" +msgstr "OK" + +msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE" +msgstr "Nieobsługiwany typ pliku" + +msgid "IDS_COM_OPT1_WI_FI_DIRECT" +msgstr "Wi-Fi Direct" + +msgid "IDS_COM_POP_UNSUPPORTED" +msgstr "Nieobsługiwane" + +msgid "IDS_BR_BODY_CURRENT_PAGE" +msgstr "Bieżąca strona" + +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Drukarka podłączona" + +msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT" +msgstr "Połącz z siecią Wi-Fi, aby wydrukować" + +msgid "IDS_PRT_BODY_SELECT_PRINTER" +msgstr "Wybierz drukarkę" + +msgid "IDS_PRT_SK_PRINT_PREVIEW" +msgstr "Podgląd" + +msgid "IDS_SMPOS_SK3_PRINT" +msgstr "Drukuj" + +msgid "IDS_IMGE_BODY_SIZE" +msgstr "Rozmiar" + +msgid "IDS_PRT_BODY_SCALING_ABB" +msgstr "Skalowanie" + +msgid "IDS_COM_BODY_SETTING" +msgstr "Ustawienie" + +msgid "IDS_BT_OPT_FIT_TO_PAPER" +msgstr "Dopasuj do papieru" + +msgid "IDS_COM_SK_CUSTOM" +msgstr "Skróty" + +msgid "IDS_IMGE_BODY_WIDTH" +msgstr "Szerokość" + +msgid "IDS_IMGE_BODY_HEIGHT" +msgstr "Wysokość" + +msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB" +msgstr "Zachowaj proporcje" + +msgid "IDS_COM_BODY_UNIT_INCH" +msgstr "cal" + +msgid "IDS_COM_BODY_UNIT_CM" +msgstr "cm" + +msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB" +msgstr "Stron na arkusz: %d" + +msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS" +msgstr "Ustawienia drukarki" + +msgid "IDS_PRT_BODY_PRINTER" +msgstr "Drukarka" + +msgid "IDS_PRT_BODY_PAPERSIZE" +msgstr "Rozmiar papieru" + +msgid "IDS_PRT_BODY_NUMBEROFCOPIES" +msgstr "Liczba kopii" + +msgid "IDS_PRT_BODY_PRINT_RANGE_ABB" +msgstr "Zakres drukowania" + +msgid "IDS_PRT_BODY_COLOUR" +msgstr "Kolor" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT" +msgstr "Wersja robocza" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD" +msgstr "Standard." + +msgid "IDS_COM_BODY_HIGH" +msgstr "Wysoki" + +msgid "IDS_ST_BODY_NORMAL" +msgstr "Normalny" + +msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING" +msgstr "Oczekiwanie na drukowanie..." + +msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING" +msgstr "Przygotowywanie do drukowania..." + +msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING" +msgstr "Drukowanie..." + +msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB" +msgstr "Fotograficzny" + +msgid "IDS_ST_BODY_GLOSSY" +msgstr "Glossy" + +msgid "IDS_DIC_BODY_ALL" +msgstr "Wszystkie" + +msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY" +msgstr "Jakość wydruku" + +msgid "IDS_IMGE_HEADER_GREY" +msgstr "Szary" + +msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE" +msgstr "Brak dostępnych drukarek" + +msgid "IDS_COM_BODY_NO_DEVICES" +msgstr "Brak urządzeń" + +msgid "IDS_PRT_POP_PRINTING_CANCELED" +msgstr "Anulowano drukowanie" + +msgid "IDS_COM_POP_MEMORY_FULL" +msgstr "Pamięć pełna" + +msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING" +msgstr "Wyszukiwanie drukarek..." + +msgid "IDS_PRT_POP_CHECKPRINTERSTATE" +msgstr "Sprawdź stan drukarki" + +msgid "IDS_ASEML_POP_SEARCH_FAILED" +msgstr "Wyszukiwanie nie powiodło się" + +msgid "IDS_PRT_POP_PRINTINGERROR" +msgstr "Błąd drukowania" + +msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED" +msgstr "Wi-Fi wyłączone" + +msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER" +msgstr "Papier" + +msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2" +msgstr "Drukarka odłączona" + diff --git a/mobileprint/po/pt_BR.po b/mobileprint/po/pt_BR.po new file mode 100644 index 0000000..e67f684 --- /dev/null +++ b/mobileprint/po/pt_BR.po @@ -0,0 +1,171 @@ +msgid "IDS_COM_SK_HIDE" +msgstr "Ocultar" + +msgid "IDS_COM_SK_REFRESH" +msgstr "Atualizar" + +msgid "IDS_COM_SK_CANCEL" +msgstr "Cancelar" + +msgid "IDS_IMGE_OPT_ROTATE" +msgstr "Girar" + +msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR" +msgstr "Erro de sistema" + +msgid "IDS_COM_SK_BACK" +msgstr "Voltar" + +msgid "IDS_COM_BODY_WI_FI" +msgstr "Wi-Fi" + +msgid "IDS_COM_SK_OK" +msgstr "OK" + +msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE" +msgstr "Tipo de arquivo não suportado" + +msgid "IDS_COM_OPT1_WI_FI_DIRECT" +msgstr "Wi-Fi Direct" + +msgid "IDS_COM_POP_UNSUPPORTED" +msgstr "Não suportado" + +msgid "IDS_BR_BODY_CURRENT_PAGE" +msgstr "Página atual" + +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Impressora conectada" + +msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT" +msgstr "Conectar à rede Wi-Fi para imprimir" + +msgid "IDS_PRT_BODY_SELECT_PRINTER" +msgstr "Selecionar impressora" + +msgid "IDS_PRT_SK_PRINT_PREVIEW" +msgstr "Prever" + +msgid "IDS_SMPOS_SK3_PRINT" +msgstr "Imprimir" + +msgid "IDS_IMGE_BODY_SIZE" +msgstr "Tamanho" + +msgid "IDS_PRT_BODY_SCALING_ABB" +msgstr "Escala" + +msgid "IDS_COM_BODY_SETTING" +msgstr "Configurações" + +msgid "IDS_BT_OPT_FIT_TO_PAPER" +msgstr "Ajustar ao papel" + +msgid "IDS_COM_SK_CUSTOM" +msgstr "Pessoal" + +msgid "IDS_IMGE_BODY_WIDTH" +msgstr "Largura" + +msgid "IDS_IMGE_BODY_HEIGHT" +msgstr "Altura" + +msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB" +msgstr "Manter proporção" + +msgid "IDS_COM_BODY_UNIT_INCH" +msgstr "pol" + +msgid "IDS_COM_BODY_UNIT_CM" +msgstr "cm" + +msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB" +msgstr "%d páginas em 1 folha" + +msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS" +msgstr "Configurações da impressora" + +msgid "IDS_PRT_BODY_PRINTER" +msgstr "Impressora" + +msgid "IDS_PRT_BODY_PAPERSIZE" +msgstr "Tamanho do papel" + +msgid "IDS_PRT_BODY_NUMBEROFCOPIES" +msgstr "Número de cópias" + +msgid "IDS_PRT_BODY_PRINT_RANGE_ABB" +msgstr "Intervalo de impressão" + +msgid "IDS_PRT_BODY_COLOUR" +msgstr "Cor" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT" +msgstr "Rascunho" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD" +msgstr "Padrão" + +msgid "IDS_COM_BODY_HIGH" +msgstr "Alta" + +msgid "IDS_ST_BODY_NORMAL" +msgstr "Normal" + +msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING" +msgstr "Aguardando para imprimir..." + +msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING" +msgstr "Preparando para imprimir..." + +msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING" +msgstr "Imprimindo…" + +msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB" +msgstr "Fotográfico" + +msgid "IDS_ST_BODY_GLOSSY" +msgstr "Glossy" + +msgid "IDS_DIC_BODY_ALL" +msgstr "Todos" + +msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY" +msgstr "Qualidade de impressão" + +msgid "IDS_IMGE_HEADER_GREY" +msgstr "Cinza" + +msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE" +msgstr "Nenhuma impressora disponível" + +msgid "IDS_COM_BODY_NO_DEVICES" +msgstr "Nenhum dispositivo" + +msgid "IDS_PRT_POP_PRINTING_CANCELED" +msgstr "Impressão cancelada" + +msgid "IDS_COM_POP_MEMORY_FULL" +msgstr "Memória cheia" + +msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING" +msgstr "Procurando por impressoras..." + +msgid "IDS_PRT_POP_CHECKPRINTERSTATE" +msgstr "Verificar o estado da impressora" + +msgid "IDS_ASEML_POP_SEARCH_FAILED" +msgstr "Procura falhou" + +msgid "IDS_PRT_POP_PRINTINGERROR" +msgstr "Erro de impressão" + +msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED" +msgstr "Wi-Fi desativado" + +msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER" +msgstr "Papel" + +msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2" +msgstr "Impressora desconectada" + diff --git a/mobileprint/po/pt_PT.po b/mobileprint/po/pt_PT.po new file mode 100644 index 0000000..9885d4f --- /dev/null +++ b/mobileprint/po/pt_PT.po @@ -0,0 +1,171 @@ +msgid "IDS_COM_SK_HIDE" +msgstr "Ocultar" + +msgid "IDS_COM_SK_REFRESH" +msgstr "Actualizar" + +msgid "IDS_COM_SK_CANCEL" +msgstr "Cancelar" + +msgid "IDS_IMGE_OPT_ROTATE" +msgstr "Rodar" + +msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR" +msgstr "Erro de sistema" + +msgid "IDS_COM_SK_BACK" +msgstr "Voltar" + +msgid "IDS_COM_BODY_WI_FI" +msgstr "Wi-Fi" + +msgid "IDS_COM_SK_OK" +msgstr "OK" + +msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE" +msgstr "Tipo de ficheiro não suportado" + +msgid "IDS_COM_OPT1_WI_FI_DIRECT" +msgstr "Wi-Fi Direct" + +msgid "IDS_COM_POP_UNSUPPORTED" +msgstr "Não suportado" + +msgid "IDS_BR_BODY_CURRENT_PAGE" +msgstr "Página actual" + +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Impressora ligada" + +msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT" +msgstr "Ligar à rede Wi-Fi para imprimir" + +msgid "IDS_PRT_BODY_SELECT_PRINTER" +msgstr "Seleccionar impressora" + +msgid "IDS_PRT_SK_PRINT_PREVIEW" +msgstr "Pré-vis." + +msgid "IDS_SMPOS_SK3_PRINT" +msgstr "Imprimir" + +msgid "IDS_IMGE_BODY_SIZE" +msgstr "Tamanho" + +msgid "IDS_PRT_BODY_SCALING_ABB" +msgstr "Alterar escala" + +msgid "IDS_COM_BODY_SETTING" +msgstr "Definição" + +msgid "IDS_BT_OPT_FIT_TO_PAPER" +msgstr "Ajustar ao papel" + +msgid "IDS_COM_SK_CUSTOM" +msgstr "Meu Menu" + +msgid "IDS_IMGE_BODY_WIDTH" +msgstr "Largura" + +msgid "IDS_IMGE_BODY_HEIGHT" +msgstr "Altura" + +msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB" +msgstr "Manter relaç. de visual" + +msgid "IDS_COM_BODY_UNIT_INCH" +msgstr "pol" + +msgid "IDS_COM_BODY_UNIT_CM" +msgstr "cm" + +msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB" +msgstr "%d páginas por folha" + +msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS" +msgstr "Definições de impressora" + +msgid "IDS_PRT_BODY_PRINTER" +msgstr "Impressora" + +msgid "IDS_PRT_BODY_PAPERSIZE" +msgstr "Tamanho do papel" + +msgid "IDS_PRT_BODY_NUMBEROFCOPIES" +msgstr "Número de cópias" + +msgid "IDS_PRT_BODY_PRINT_RANGE_ABB" +msgstr "Intervalo de impressão" + +msgid "IDS_PRT_BODY_COLOUR" +msgstr "Cor" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT" +msgstr "Rascunho" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD" +msgstr "Padrão" + +msgid "IDS_COM_BODY_HIGH" +msgstr "Alta" + +msgid "IDS_ST_BODY_NORMAL" +msgstr "Normal" + +msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING" +msgstr "A aguardar para imprimir..." + +msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING" +msgstr "A preparar para imprimir..." + +msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING" +msgstr "A imprimir..." + +msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB" +msgstr "Fotografia" + +msgid "IDS_ST_BODY_GLOSSY" +msgstr "Glossy" + +msgid "IDS_DIC_BODY_ALL" +msgstr "Tudo" + +msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY" +msgstr "Qualidade de impressão" + +msgid "IDS_IMGE_HEADER_GREY" +msgstr "Cinzento" + +msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE" +msgstr "Nenhuma impressora disponível" + +msgid "IDS_COM_BODY_NO_DEVICES" +msgstr "Nenhuns dispositivos" + +msgid "IDS_PRT_POP_PRINTING_CANCELED" +msgstr "Impressão cancelada" + +msgid "IDS_COM_POP_MEMORY_FULL" +msgstr "Memória cheia" + +msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING" +msgstr "A procurar impressoras..." + +msgid "IDS_PRT_POP_CHECKPRINTERSTATE" +msgstr "Verificar o estado da impressora" + +msgid "IDS_ASEML_POP_SEARCH_FAILED" +msgstr "Procura falhou" + +msgid "IDS_PRT_POP_PRINTINGERROR" +msgstr "Erro de impressão" + +msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED" +msgstr "Wi-Fi desligado" + +msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER" +msgstr "Papel" + +msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2" +msgstr "Impressora desligada" + diff --git a/mobileprint/po/ro.po b/mobileprint/po/ro.po new file mode 100644 index 0000000..bcc6377 --- /dev/null +++ b/mobileprint/po/ro.po @@ -0,0 +1,171 @@ +msgid "IDS_COM_SK_HIDE" +msgstr "Ascundere" + +msgid "IDS_COM_SK_REFRESH" +msgstr "Reîncărc." + +msgid "IDS_COM_SK_CANCEL" +msgstr "Anulare" + +msgid "IDS_IMGE_OPT_ROTATE" +msgstr "Rotire" + +msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR" +msgstr "Eroare de sistem" + +msgid "IDS_COM_SK_BACK" +msgstr "Înapoi" + +msgid "IDS_COM_BODY_WI_FI" +msgstr "Wi-Fi" + +msgid "IDS_COM_SK_OK" +msgstr "OK" + +msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE" +msgstr "Tip fişier neacceptat" + +msgid "IDS_COM_OPT1_WI_FI_DIRECT" +msgstr "Wi-Fi Direct" + +msgid "IDS_COM_POP_UNSUPPORTED" +msgstr "Neacceptat" + +msgid "IDS_BR_BODY_CURRENT_PAGE" +msgstr "Pagină actuală" + +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Imprimantă conectată" + +msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT" +msgstr "ConectaÅ£i-vă la reÅ£eaua Wi-Fi pentru imprimare" + +msgid "IDS_PRT_BODY_SELECT_PRINTER" +msgstr "Selectare imprimantă" + +msgid "IDS_PRT_SK_PRINT_PREVIEW" +msgstr "Previz." + +msgid "IDS_SMPOS_SK3_PRINT" +msgstr "Imprim." + +msgid "IDS_IMGE_BODY_SIZE" +msgstr "Dimensiune" + +msgid "IDS_PRT_BODY_SCALING_ABB" +msgstr "Scalare" + +msgid "IDS_COM_BODY_SETTING" +msgstr "Setare" + +msgid "IDS_BT_OPT_FIT_TO_PAPER" +msgstr "Potrivire la dimensiunea hârtiei" + +msgid "IDS_COM_SK_CUSTOM" +msgstr "Particul." + +msgid "IDS_IMGE_BODY_WIDTH" +msgstr "lăţime" + +msgid "IDS_IMGE_BODY_HEIGHT" +msgstr "înălÅ£ime" + +msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB" +msgstr "Păstr. rap. de asp." + +msgid "IDS_COM_BODY_UNIT_INCH" +msgstr "inch" + +msgid "IDS_COM_BODY_UNIT_CM" +msgstr "cm" + +msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB" +msgstr "%d pagini pe 1 foaie" + +msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS" +msgstr "Setări imprimantă" + +msgid "IDS_PRT_BODY_PRINTER" +msgstr "Imprimantă" + +msgid "IDS_PRT_BODY_PAPERSIZE" +msgstr "Dimensiune hârtie" + +msgid "IDS_PRT_BODY_NUMBEROFCOPIES" +msgstr "Număr de exemplare" + +msgid "IDS_PRT_BODY_PRINT_RANGE_ABB" +msgstr "Interval imprimare" + +msgid "IDS_PRT_BODY_COLOUR" +msgstr "Culoare" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT" +msgstr "Ciornă" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD" +msgstr "Standard" + +msgid "IDS_COM_BODY_HIGH" +msgstr "Ridicată" + +msgid "IDS_ST_BODY_NORMAL" +msgstr "Normal" + +msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING" +msgstr "Se aşteaptă imprimarea..." + +msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING" +msgstr "Se pregăteşte pentru imprimare..." + +msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING" +msgstr "Se imprimă.." + +msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB" +msgstr "Fotografic" + +msgid "IDS_ST_BODY_GLOSSY" +msgstr "Glossy" + +msgid "IDS_DIC_BODY_ALL" +msgstr "Toate" + +msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY" +msgstr "Calitate imprimare" + +msgid "IDS_IMGE_HEADER_GREY" +msgstr "Gri" + +msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE" +msgstr "Nu sunt disponibile imprimante" + +msgid "IDS_COM_BODY_NO_DEVICES" +msgstr "Nu există dispozitive" + +msgid "IDS_PRT_POP_PRINTING_CANCELED" +msgstr "Imprimare revocată" + +msgid "IDS_COM_POP_MEMORY_FULL" +msgstr "Memorie plină" + +msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING" +msgstr "Se caută imprimante..." + +msgid "IDS_PRT_POP_CHECKPRINTERSTATE" +msgstr "Verificare stare imprimantă" + +msgid "IDS_ASEML_POP_SEARCH_FAILED" +msgstr "Căutare nereuşită" + +msgid "IDS_PRT_POP_PRINTINGERROR" +msgstr "Eroare imprimare" + +msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED" +msgstr "Wi-Fi deconectat" + +msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER" +msgstr "Hârtie" + +msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2" +msgstr "Imprimantă deconectată" + diff --git a/mobileprint/po/ru_RU.po b/mobileprint/po/ru_RU.po new file mode 100644 index 0000000..135a2f9 --- /dev/null +++ b/mobileprint/po/ru_RU.po @@ -0,0 +1,171 @@ +msgid "IDS_COM_SK_HIDE" +msgstr "Скрыть" + +msgid "IDS_COM_SK_REFRESH" +msgstr "Обновить" + +msgid "IDS_COM_SK_CANCEL" +msgstr "Отмена" + +msgid "IDS_IMGE_OPT_ROTATE" +msgstr "Повернуть" + +msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR" +msgstr "Системная ошибка" + +msgid "IDS_COM_SK_BACK" +msgstr "Назад" + +msgid "IDS_COM_BODY_WI_FI" +msgstr "Wi-Fi" + +msgid "IDS_COM_SK_OK" +msgstr "Да" + +msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE" +msgstr "Неподдерживаемый тип файла" + +msgid "IDS_COM_OPT1_WI_FI_DIRECT" +msgstr "Wi-Fi Direct" + +msgid "IDS_COM_POP_UNSUPPORTED" +msgstr "Не поддерживается" + +msgid "IDS_BR_BODY_CURRENT_PAGE" +msgstr "Текущая страница" + +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Принтер подключен" + +msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT" +msgstr "Чтобы печатать, подключитесь к сети Wi-Fi" + +msgid "IDS_PRT_BODY_SELECT_PRINTER" +msgstr "Выберите принтер" + +msgid "IDS_PRT_SK_PRINT_PREVIEW" +msgstr "Просмотр" + +msgid "IDS_SMPOS_SK3_PRINT" +msgstr "Печать" + +msgid "IDS_IMGE_BODY_SIZE" +msgstr "Размер" + +msgid "IDS_PRT_BODY_SCALING_ABB" +msgstr "Масштабирование" + +msgid "IDS_COM_BODY_SETTING" +msgstr "Настройки" + +msgid "IDS_BT_OPT_FIT_TO_PAPER" +msgstr "По ширине бумаги" + +msgid "IDS_COM_SK_CUSTOM" +msgstr "Перейти" + +msgid "IDS_IMGE_BODY_WIDTH" +msgstr "Ширина" + +msgid "IDS_IMGE_BODY_HEIGHT" +msgstr "Высота" + +msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB" +msgstr "Сохранять пропорции" + +msgid "IDS_COM_BODY_UNIT_INCH" +msgstr "дюйм" + +msgid "IDS_COM_BODY_UNIT_CM" +msgstr "см" + +msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB" +msgstr "%d стр. на 1 листе" + +msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS" +msgstr "Параметры принтера" + +msgid "IDS_PRT_BODY_PRINTER" +msgstr "Принтер" + +msgid "IDS_PRT_BODY_PAPERSIZE" +msgstr "Размер бумаги" + +msgid "IDS_PRT_BODY_NUMBEROFCOPIES" +msgstr "Число копий" + +msgid "IDS_PRT_BODY_PRINT_RANGE_ABB" +msgstr "Печать диапазона" + +msgid "IDS_PRT_BODY_COLOUR" +msgstr "Цвет" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT" +msgstr "Черновик" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD" +msgstr "Стандартное" + +msgid "IDS_COM_BODY_HIGH" +msgstr "Высокий" + +msgid "IDS_ST_BODY_NORMAL" +msgstr "Обычный" + +msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING" +msgstr "Ожидание печати..." + +msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING" +msgstr "Подготовка к печати..." + +msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING" +msgstr "Печать..." + +msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB" +msgstr "Фотопечать" + +msgid "IDS_ST_BODY_GLOSSY" +msgstr "Glossy" + +msgid "IDS_DIC_BODY_ALL" +msgstr "Все" + +msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY" +msgstr "Качество печати" + +msgid "IDS_IMGE_HEADER_GREY" +msgstr "Серый" + +msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE" +msgstr "Нет доступных принтеров" + +msgid "IDS_COM_BODY_NO_DEVICES" +msgstr "Нет устройств" + +msgid "IDS_PRT_POP_PRINTING_CANCELED" +msgstr "Печать отменена" + +msgid "IDS_COM_POP_MEMORY_FULL" +msgstr "Память заполнена" + +msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING" +msgstr "Поиск принтеров..." + +msgid "IDS_PRT_POP_CHECKPRINTERSTATE" +msgstr "Проверить состояние принтера" + +msgid "IDS_ASEML_POP_SEARCH_FAILED" +msgstr "Сбой поиска" + +msgid "IDS_PRT_POP_PRINTINGERROR" +msgstr "Ошибка печати" + +msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED" +msgstr "Wi-Fi откл." + +msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER" +msgstr "Бумага" + +msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2" +msgstr "Принтер отключен" + diff --git a/mobileprint/po/sk.po b/mobileprint/po/sk.po new file mode 100644 index 0000000..be663bd --- /dev/null +++ b/mobileprint/po/sk.po @@ -0,0 +1,171 @@ +msgid "IDS_COM_SK_HIDE" +msgstr "SkryÅ¥" + +msgid "IDS_COM_SK_REFRESH" +msgstr "AktualizovaÅ¥" + +msgid "IDS_COM_SK_CANCEL" +msgstr "ZruÅ¡iÅ¥" + +msgid "IDS_IMGE_OPT_ROTATE" +msgstr "OtočiÅ¥" + +msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR" +msgstr "Systémová chyba" + +msgid "IDS_COM_SK_BACK" +msgstr "Späť" + +msgid "IDS_COM_BODY_WI_FI" +msgstr "Wi-Fi" + +msgid "IDS_COM_SK_OK" +msgstr "OK" + +msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE" +msgstr "Nepodporovaný typ súboru" + +msgid "IDS_COM_OPT1_WI_FI_DIRECT" +msgstr "Wi-Fi Direct" + +msgid "IDS_COM_POP_UNSUPPORTED" +msgstr "Nie je podporované" + +msgid "IDS_BR_BODY_CURRENT_PAGE" +msgstr "Aktuálna stránka" + +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Tlačiareň je pripojená" + +msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT" +msgstr "Pred tlačou sa pripojte na sieÅ¥ Wi-Fi" + +msgid "IDS_PRT_BODY_SELECT_PRINTER" +msgstr "Výber tlačiarne" + +msgid "IDS_PRT_SK_PRINT_PREVIEW" +msgstr "Ukážka" + +msgid "IDS_SMPOS_SK3_PRINT" +msgstr "TlačiÅ¥" + +msgid "IDS_IMGE_BODY_SIZE" +msgstr "VeľkosÅ¥" + +msgid "IDS_PRT_BODY_SCALING_ABB" +msgstr "Zmena mierky" + +msgid "IDS_COM_BODY_SETTING" +msgstr "Nastavenie" + +msgid "IDS_BT_OPT_FIT_TO_PAPER" +msgstr "PrispôsobiÅ¥ papieru" + +msgid "IDS_COM_SK_CUSTOM" +msgstr "Vlastné" + +msgid "IDS_IMGE_BODY_WIDTH" +msgstr "Šírka" + +msgid "IDS_IMGE_BODY_HEIGHT" +msgstr "Výška" + +msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB" +msgstr "ZachovaÅ¥ pomer strán" + +msgid "IDS_COM_BODY_UNIT_INCH" +msgstr "palec" + +msgid "IDS_COM_BODY_UNIT_CM" +msgstr "cm" + +msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB" +msgstr "Strany na 1 hárok: %d" + +msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS" +msgstr "Nastavenia tlačiarne" + +msgid "IDS_PRT_BODY_PRINTER" +msgstr "Tlačiareň" + +msgid "IDS_PRT_BODY_PAPERSIZE" +msgstr "VeľkosÅ¥ papiera" + +msgid "IDS_PRT_BODY_NUMBEROFCOPIES" +msgstr "Počet kópií" + +msgid "IDS_PRT_BODY_PRINT_RANGE_ABB" +msgstr "Rozsah tlače" + +msgid "IDS_PRT_BODY_COLOUR" +msgstr "Farba" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT" +msgstr "Koncept" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD" +msgstr "Å tandard" + +msgid "IDS_COM_BODY_HIGH" +msgstr "Vysoká" + +msgid "IDS_ST_BODY_NORMAL" +msgstr "Normál." + +msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING" +msgstr "Čaká sa na vytlačenie..." + +msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING" +msgstr "Pripravuje sa tlač..." + +msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING" +msgstr "Tlačí sa..." + +msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB" +msgstr "Fotografický" + +msgid "IDS_ST_BODY_GLOSSY" +msgstr "Glossy" + +msgid "IDS_DIC_BODY_ALL" +msgstr "VÅ¡etko" + +msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY" +msgstr "Kvalita tlače" + +msgid "IDS_IMGE_HEADER_GREY" +msgstr "Sivá" + +msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE" +msgstr "Žiadne dostupné tlačiarne" + +msgid "IDS_COM_BODY_NO_DEVICES" +msgstr "Žiadne zariadenia" + +msgid "IDS_PRT_POP_PRINTING_CANCELED" +msgstr "Tlač bola zruÅ¡ená" + +msgid "IDS_COM_POP_MEMORY_FULL" +msgstr "Pamäť plná" + +msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING" +msgstr "Hľadajú sa tlačiarne..." + +msgid "IDS_PRT_POP_CHECKPRINTERSTATE" +msgstr "SkontrolovaÅ¥ stav tlačiarne" + +msgid "IDS_ASEML_POP_SEARCH_FAILED" +msgstr "Hľadanie zlyhalo" + +msgid "IDS_PRT_POP_PRINTINGERROR" +msgstr "Chyba tlače" + +msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED" +msgstr "Wi-Fi odpojené" + +msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER" +msgstr "Papier" + +msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2" +msgstr "Tlačiareň je odpojená" + diff --git a/mobileprint/po/sl.po b/mobileprint/po/sl.po new file mode 100644 index 0000000..ffab290 --- /dev/null +++ b/mobileprint/po/sl.po @@ -0,0 +1,171 @@ +msgid "IDS_COM_SK_HIDE" +msgstr "Skrij" + +msgid "IDS_COM_SK_REFRESH" +msgstr "Osveži" + +msgid "IDS_COM_SK_CANCEL" +msgstr "Prekliči" + +msgid "IDS_IMGE_OPT_ROTATE" +msgstr "Obrni" + +msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR" +msgstr "Sistemska napaka" + +msgid "IDS_COM_SK_BACK" +msgstr "Nazaj" + +msgid "IDS_COM_BODY_WI_FI" +msgstr "Wi-Fi" + +msgid "IDS_COM_SK_OK" +msgstr "V redu" + +msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE" +msgstr "Nepodprta vrsta datoteke" + +msgid "IDS_COM_OPT1_WI_FI_DIRECT" +msgstr "Wi-Fi Direct" + +msgid "IDS_COM_POP_UNSUPPORTED" +msgstr "Ni podprto" + +msgid "IDS_BR_BODY_CURRENT_PAGE" +msgstr "Trenutna stran" + +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Tiskalnik je povezan" + +msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT" +msgstr "Povežite se z omrežjem Wi-Fi, če želite tiskati" + +msgid "IDS_PRT_BODY_SELECT_PRINTER" +msgstr "Izberi tiskalnik" + +msgid "IDS_PRT_SK_PRINT_PREVIEW" +msgstr "Pre." + +msgid "IDS_SMPOS_SK3_PRINT" +msgstr "Natisni" + +msgid "IDS_IMGE_BODY_SIZE" +msgstr "Velikost" + +msgid "IDS_PRT_BODY_SCALING_ABB" +msgstr "Prilagajanje velikosti" + +msgid "IDS_COM_BODY_SETTING" +msgstr "Nastavitev" + +msgid "IDS_BT_OPT_FIT_TO_PAPER" +msgstr "Prilagodi papirju" + +msgid "IDS_COM_SK_CUSTOM" +msgstr "Po meri" + +msgid "IDS_IMGE_BODY_WIDTH" +msgstr "Å irina" + +msgid "IDS_IMGE_BODY_HEIGHT" +msgstr "ViÅ¡ina" + +msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB" +msgstr "Ohr. raz. viÅ¡ina/Å¡irina" + +msgid "IDS_COM_BODY_UNIT_INCH" +msgstr "palec" + +msgid "IDS_COM_BODY_UNIT_CM" +msgstr "cm" + +msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB" +msgstr "%d strani na 1 list" + +msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS" +msgstr "Nastavitve tiskalnika" + +msgid "IDS_PRT_BODY_PRINTER" +msgstr "Tiskalnik" + +msgid "IDS_PRT_BODY_PAPERSIZE" +msgstr "Velikost papirja" + +msgid "IDS_PRT_BODY_NUMBEROFCOPIES" +msgstr "Å tevilo kopij" + +msgid "IDS_PRT_BODY_PRINT_RANGE_ABB" +msgstr "Obseg tiskanja" + +msgid "IDS_PRT_BODY_COLOUR" +msgstr "Barva" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT" +msgstr "Osnutek" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD" +msgstr "Standardno" + +msgid "IDS_COM_BODY_HIGH" +msgstr "Visoka" + +msgid "IDS_ST_BODY_NORMAL" +msgstr "Normalno" + +msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING" +msgstr "Čakanje na tiskanje ..." + +msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING" +msgstr "Priprava na tiskanje ..." + +msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING" +msgstr "Tiskanje ..." + +msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB" +msgstr "Fotografski" + +msgid "IDS_ST_BODY_GLOSSY" +msgstr "Glossy" + +msgid "IDS_DIC_BODY_ALL" +msgstr "Vse" + +msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY" +msgstr "Kakovost tiskanja" + +msgid "IDS_IMGE_HEADER_GREY" +msgstr "Siva" + +msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE" +msgstr "Noben tiskalnik ni na voljo" + +msgid "IDS_COM_BODY_NO_DEVICES" +msgstr "Ni naprav" + +msgid "IDS_PRT_POP_PRINTING_CANCELED" +msgstr "Tiskanje je preklicano" + +msgid "IDS_COM_POP_MEMORY_FULL" +msgstr "Pomnilnik je poln" + +msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING" +msgstr "Iskanje tiskalnikov ..." + +msgid "IDS_PRT_POP_CHECKPRINTERSTATE" +msgstr "Preverite stanje tiskalnika" + +msgid "IDS_ASEML_POP_SEARCH_FAILED" +msgstr "Iskanje ni uspelo" + +msgid "IDS_PRT_POP_PRINTINGERROR" +msgstr "Napaka pri tiskanju" + +msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED" +msgstr "Wi-Fi prekinjen" + +msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER" +msgstr "Papir" + +msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2" +msgstr "Tiskalnik je odstranjen" + diff --git a/mobileprint/po/sr.po b/mobileprint/po/sr.po new file mode 100644 index 0000000..37c8046 --- /dev/null +++ b/mobileprint/po/sr.po @@ -0,0 +1,171 @@ +msgid "IDS_COM_SK_HIDE" +msgstr "Sakrij" + +msgid "IDS_COM_SK_REFRESH" +msgstr "Osveži" + +msgid "IDS_COM_SK_CANCEL" +msgstr "PoniÅ¡ti" + +msgid "IDS_IMGE_OPT_ROTATE" +msgstr "Rotiraj" + +msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR" +msgstr "GreÅ¡ka sistema" + +msgid "IDS_COM_SK_BACK" +msgstr "Nazad" + +msgid "IDS_COM_BODY_WI_FI" +msgstr "Wi-Fi" + +msgid "IDS_COM_SK_OK" +msgstr "OK" + +msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE" +msgstr "Nepodržani tip fajla" + +msgid "IDS_COM_OPT1_WI_FI_DIRECT" +msgstr "Wi-Fi Direct" + +msgid "IDS_COM_POP_UNSUPPORTED" +msgstr "Nepodržano" + +msgid "IDS_BR_BODY_CURRENT_PAGE" +msgstr "Trenutna strana" + +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Å tampač je priključen" + +msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT" +msgstr "Poveži se na Wi-Fi mrežu radi Å¡tampanja" + +msgid "IDS_PRT_BODY_SELECT_PRINTER" +msgstr "Izaberi Å¡tampač" + +msgid "IDS_PRT_SK_PRINT_PREVIEW" +msgstr "Pregled" + +msgid "IDS_SMPOS_SK3_PRINT" +msgstr "Å¡tampaj" + +msgid "IDS_IMGE_BODY_SIZE" +msgstr "Veličina" + +msgid "IDS_PRT_BODY_SCALING_ABB" +msgstr "PodeÅ¡avanje razmere" + +msgid "IDS_COM_BODY_SETTING" +msgstr "PodeÅ¡avanja" + +msgid "IDS_BT_OPT_FIT_TO_PAPER" +msgstr "Podesi prema papiru" + +msgid "IDS_COM_SK_CUSTOM" +msgstr "Prilagođ." + +msgid "IDS_IMGE_BODY_WIDTH" +msgstr "Å irina" + +msgid "IDS_IMGE_BODY_HEIGHT" +msgstr "Visina" + +msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB" +msgstr "Održi razmeru" + +msgid "IDS_COM_BODY_UNIT_INCH" +msgstr "inča" + +msgid "IDS_COM_BODY_UNIT_CM" +msgstr "cm" + +msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB" +msgstr "%d strana na 1 listu" + +msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS" +msgstr "PodeÅ¡avanje Å¡tampača" + +msgid "IDS_PRT_BODY_PRINTER" +msgstr "Å tampač" + +msgid "IDS_PRT_BODY_PAPERSIZE" +msgstr "Veličina papira" + +msgid "IDS_PRT_BODY_NUMBEROFCOPIES" +msgstr "Broj kopija" + +msgid "IDS_PRT_BODY_PRINT_RANGE_ABB" +msgstr "Opseg Å¡tampanja" + +msgid "IDS_PRT_BODY_COLOUR" +msgstr "Boja" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT" +msgstr "Skice" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD" +msgstr "Standardni" + +msgid "IDS_COM_BODY_HIGH" +msgstr "Visok" + +msgid "IDS_ST_BODY_NORMAL" +msgstr "Normalan" + +msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING" +msgstr "Čeka se Å¡tampanje" + +msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING" +msgstr "Priprema Å¡tampanja..." + +msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING" +msgstr "Å tampanje..." + +msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB" +msgstr "Fotografski" + +msgid "IDS_ST_BODY_GLOSSY" +msgstr "Glossy" + +msgid "IDS_DIC_BODY_ALL" +msgstr "Sve" + +msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY" +msgstr "Kvalitet Å¡tampe" + +msgid "IDS_IMGE_HEADER_GREY" +msgstr "Siva skala" + +msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE" +msgstr "Å tampači nisu dostupni" + +msgid "IDS_COM_BODY_NO_DEVICES" +msgstr "Nema uređaja" + +msgid "IDS_PRT_POP_PRINTING_CANCELED" +msgstr "Å tampanje otkazano" + +msgid "IDS_COM_POP_MEMORY_FULL" +msgstr "Memorija puna" + +msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING" +msgstr "Traženje Å¡tampača..." + +msgid "IDS_PRT_POP_CHECKPRINTERSTATE" +msgstr "Proveri stanje Å¡tampača" + +msgid "IDS_ASEML_POP_SEARCH_FAILED" +msgstr "Pretraga neuspeÅ¡na" + +msgid "IDS_PRT_POP_PRINTINGERROR" +msgstr "GreÅ¡ka Å¡tampanja" + +msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED" +msgstr "Wi-Fi otkačen" + +msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER" +msgstr "Papir" + +msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2" +msgstr "Å tampač otkačen" + diff --git a/mobileprint/po/sv.po b/mobileprint/po/sv.po new file mode 100644 index 0000000..bd84779 --- /dev/null +++ b/mobileprint/po/sv.po @@ -0,0 +1,171 @@ +msgid "IDS_COM_SK_HIDE" +msgstr "Dölj" + +msgid "IDS_COM_SK_REFRESH" +msgstr "Uppdatera" + +msgid "IDS_COM_SK_CANCEL" +msgstr "Avbryt" + +msgid "IDS_IMGE_OPT_ROTATE" +msgstr "Rotera" + +msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR" +msgstr "Systemfel" + +msgid "IDS_COM_SK_BACK" +msgstr "Åter" + +msgid "IDS_COM_BODY_WI_FI" +msgstr "Wi-Fi" + +msgid "IDS_COM_SK_OK" +msgstr "OK" + +msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE" +msgstr "Filtypen stöds inte" + +msgid "IDS_COM_OPT1_WI_FI_DIRECT" +msgstr "Wi-Fi Direct" + +msgid "IDS_COM_POP_UNSUPPORTED" +msgstr "Stöds inte" + +msgid "IDS_BR_BODY_CURRENT_PAGE" +msgstr "Denna sida" + +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Skrivare ansluten" + +msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT" +msgstr "Kunde inte ansluta till Wi-Fi för att skriva ut" + +msgid "IDS_PRT_BODY_SELECT_PRINTER" +msgstr "Välj skrivare" + +msgid "IDS_PRT_SK_PRINT_PREVIEW" +msgstr "Förhandsg" + +msgid "IDS_SMPOS_SK3_PRINT" +msgstr "Skriv ut" + +msgid "IDS_IMGE_BODY_SIZE" +msgstr "Storlek" + +msgid "IDS_PRT_BODY_SCALING_ABB" +msgstr "Skalar" + +msgid "IDS_COM_BODY_SETTING" +msgstr "Inställning" + +msgid "IDS_BT_OPT_FIT_TO_PAPER" +msgstr "Anpassa efter papper" + +msgid "IDS_COM_SK_CUSTOM" +msgstr "Anpassat" + +msgid "IDS_IMGE_BODY_WIDTH" +msgstr "Bredd" + +msgid "IDS_IMGE_BODY_HEIGHT" +msgstr "Höjd" + +msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB" +msgstr "BehÃ¥ll bildförhÃ¥llande" + +msgid "IDS_COM_BODY_UNIT_INCH" +msgstr "tum" + +msgid "IDS_COM_BODY_UNIT_CM" +msgstr "cm" + +msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB" +msgstr "%d sidor per ark" + +msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS" +msgstr "Skrivarinställningar" + +msgid "IDS_PRT_BODY_PRINTER" +msgstr "Skrivare" + +msgid "IDS_PRT_BODY_PAPERSIZE" +msgstr "Pappersstorlek" + +msgid "IDS_PRT_BODY_NUMBEROFCOPIES" +msgstr "Antal kopior" + +msgid "IDS_PRT_BODY_PRINT_RANGE_ABB" +msgstr "Utskriftsintervall" + +msgid "IDS_PRT_BODY_COLOUR" +msgstr "Färg" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT" +msgstr "Utkast" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD" +msgstr "Standard" + +msgid "IDS_COM_BODY_HIGH" +msgstr "Hög" + +msgid "IDS_ST_BODY_NORMAL" +msgstr "Normal" + +msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING" +msgstr "Väntar pÃ¥ utskrift..." + +msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING" +msgstr "Förbereder utskrift..." + +msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING" +msgstr "Skriver ut..." + +msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB" +msgstr "Fotografi" + +msgid "IDS_ST_BODY_GLOSSY" +msgstr "Glossy" + +msgid "IDS_DIC_BODY_ALL" +msgstr "Allt" + +msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY" +msgstr "Utskriftskvalitet" + +msgid "IDS_IMGE_HEADER_GREY" +msgstr "GrÃ¥skala" + +msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE" +msgstr "Inga tillgängliga skrivare" + +msgid "IDS_COM_BODY_NO_DEVICES" +msgstr "Inga enheter" + +msgid "IDS_PRT_POP_PRINTING_CANCELED" +msgstr "Utskriften avbruten" + +msgid "IDS_COM_POP_MEMORY_FULL" +msgstr "Minnet fullt" + +msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING" +msgstr "Söker efter skrivare..." + +msgid "IDS_PRT_POP_CHECKPRINTERSTATE" +msgstr "Kontrollera skrivarstatus" + +msgid "IDS_ASEML_POP_SEARCH_FAILED" +msgstr "Sökningen misslyckades" + +msgid "IDS_PRT_POP_PRINTINGERROR" +msgstr "Utskriftsfel" + +msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED" +msgstr "Wi-Fi har kopplats frÃ¥n" + +msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER" +msgstr "Papper" + +msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2" +msgstr "Skrivare frÃ¥nkopplad" + diff --git a/mobileprint/po/tr_TR.po b/mobileprint/po/tr_TR.po new file mode 100644 index 0000000..73a74ff --- /dev/null +++ b/mobileprint/po/tr_TR.po @@ -0,0 +1,171 @@ +msgid "IDS_COM_SK_HIDE" +msgstr "Gizle" + +msgid "IDS_COM_SK_REFRESH" +msgstr "Yenile" + +msgid "IDS_COM_SK_CANCEL" +msgstr "Ä°ptal" + +msgid "IDS_IMGE_OPT_ROTATE" +msgstr "Döndür" + +msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR" +msgstr "Sistem hatası" + +msgid "IDS_COM_SK_BACK" +msgstr "Geri" + +msgid "IDS_COM_BODY_WI_FI" +msgstr "Wi-Fi" + +msgid "IDS_COM_SK_OK" +msgstr "Tamam" + +msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE" +msgstr "Desteklenmeyen dosya türü" + +msgid "IDS_COM_OPT1_WI_FI_DIRECT" +msgstr "Wi-Fi Direct" + +msgid "IDS_COM_POP_UNSUPPORTED" +msgstr "Desteklenmiyor" + +msgid "IDS_BR_BODY_CURRENT_PAGE" +msgstr "Geçerli sayfa" + +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Yazıcı bağlı" + +msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT" +msgstr "Yazdırmak için Wi-Fi ağına bağlan" + +msgid "IDS_PRT_BODY_SELECT_PRINTER" +msgstr "Yazıcı seç" + +msgid "IDS_PRT_SK_PRINT_PREVIEW" +msgstr "Önizleme" + +msgid "IDS_SMPOS_SK3_PRINT" +msgstr "Yazdır" + +msgid "IDS_IMGE_BODY_SIZE" +msgstr "Boyut" + +msgid "IDS_PRT_BODY_SCALING_ABB" +msgstr "Ölçekleme" + +msgid "IDS_COM_BODY_SETTING" +msgstr "Ayarlama" + +msgid "IDS_BT_OPT_FIT_TO_PAPER" +msgstr "Kağıda sığdır" + +msgid "IDS_COM_SK_CUSTOM" +msgstr "Özel" + +msgid "IDS_IMGE_BODY_WIDTH" +msgstr "Genişlik" + +msgid "IDS_IMGE_BODY_HEIGHT" +msgstr "Yükseklik" + +msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB" +msgstr "En-boy oranını koru" + +msgid "IDS_COM_BODY_UNIT_INCH" +msgstr "inç" + +msgid "IDS_COM_BODY_UNIT_CM" +msgstr "cm" + +msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB" +msgstr "1 kağıtta %d sayfa" + +msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS" +msgstr "Yazıcı ayarları" + +msgid "IDS_PRT_BODY_PRINTER" +msgstr "Yazıcı" + +msgid "IDS_PRT_BODY_PAPERSIZE" +msgstr "Kağıt boyutu" + +msgid "IDS_PRT_BODY_NUMBEROFCOPIES" +msgstr "Kopya sayısı" + +msgid "IDS_PRT_BODY_PRINT_RANGE_ABB" +msgstr "Yazdırma aralığı" + +msgid "IDS_PRT_BODY_COLOUR" +msgstr "Renkli" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT" +msgstr "Taslak" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD" +msgstr "Standart" + +msgid "IDS_COM_BODY_HIGH" +msgstr "Yüksek" + +msgid "IDS_ST_BODY_NORMAL" +msgstr "Normal" + +msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING" +msgstr "Yazdırma bekleniyor..." + +msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING" +msgstr "Yazdırmaya hazırlanıyor..." + +msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING" +msgstr "Yazdırılıyor..." + +msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB" +msgstr "Fotoğrafik" + +msgid "IDS_ST_BODY_GLOSSY" +msgstr "Parlak" + +msgid "IDS_DIC_BODY_ALL" +msgstr "Hepsi" + +msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY" +msgstr "Baskı kalitesi" + +msgid "IDS_IMGE_HEADER_GREY" +msgstr "Gri" + +msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE" +msgstr "Kullanılabilir yazıcı yok" + +msgid "IDS_COM_BODY_NO_DEVICES" +msgstr "Cihaz yok" + +msgid "IDS_PRT_POP_PRINTING_CANCELED" +msgstr "Yazdırma iptal edildi" + +msgid "IDS_COM_POP_MEMORY_FULL" +msgstr "Bellek dolu" + +msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING" +msgstr "Yazıcılar aranıyor..." + +msgid "IDS_PRT_POP_CHECKPRINTERSTATE" +msgstr "Yazıcı durumunu denetle" + +msgid "IDS_ASEML_POP_SEARCH_FAILED" +msgstr "Arama başarısız" + +msgid "IDS_PRT_POP_PRINTINGERROR" +msgstr "Yazdırma hatası" + +msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED" +msgstr "Wi-Fi bağlantısı koparıldı" + +msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER" +msgstr "Kağıt" + +msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2" +msgstr "Yazıcı bağlantısı kesildi" + diff --git a/mobileprint/po/uk.po b/mobileprint/po/uk.po new file mode 100644 index 0000000..59b0088 --- /dev/null +++ b/mobileprint/po/uk.po @@ -0,0 +1,171 @@ +msgid "IDS_COM_SK_HIDE" +msgstr "Приховати" + +msgid "IDS_COM_SK_REFRESH" +msgstr "Оновити" + +msgid "IDS_COM_SK_CANCEL" +msgstr "Скасувати" + +msgid "IDS_IMGE_OPT_ROTATE" +msgstr "Обернути" + +msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR" +msgstr "Помилка системи" + +msgid "IDS_COM_SK_BACK" +msgstr "Назад" + +msgid "IDS_COM_BODY_WI_FI" +msgstr "Wi-Fi" + +msgid "IDS_COM_SK_OK" +msgstr "ОК" + +msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE" +msgstr "Формат не підтримується" + +msgid "IDS_COM_OPT1_WI_FI_DIRECT" +msgstr "Wi-Fi Direct" + +msgid "IDS_COM_POP_UNSUPPORTED" +msgstr "Не підтримується" + +msgid "IDS_BR_BODY_CURRENT_PAGE" +msgstr "Поточна сторінка" + +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Принтер підключено" + +msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT" +msgstr "Підключення до мережі Wi-Fi для друку" + +msgid "IDS_PRT_BODY_SELECT_PRINTER" +msgstr "Вибір принтера" + +msgid "IDS_PRT_SK_PRINT_PREVIEW" +msgstr "Перегл." + +msgid "IDS_SMPOS_SK3_PRINT" +msgstr "Друкувати" + +msgid "IDS_IMGE_BODY_SIZE" +msgstr "Розмір" + +msgid "IDS_PRT_BODY_SCALING_ABB" +msgstr "Масштабування" + +msgid "IDS_COM_BODY_SETTING" +msgstr "Установка" + +msgid "IDS_BT_OPT_FIT_TO_PAPER" +msgstr "За розміром паперу" + +msgid "IDS_COM_SK_CUSTOM" +msgstr "Признач." + +msgid "IDS_IMGE_BODY_WIDTH" +msgstr "По ширині" + +msgid "IDS_IMGE_BODY_HEIGHT" +msgstr "По висоті" + +msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB" +msgstr "Зберег. співвідн. сторін" + +msgid "IDS_COM_BODY_UNIT_INCH" +msgstr "дюйм" + +msgid "IDS_COM_BODY_UNIT_CM" +msgstr "см" + +msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB" +msgstr "Стор. на 1 аркуші: %d" + +msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS" +msgstr "Установки принтера" + +msgid "IDS_PRT_BODY_PRINTER" +msgstr "Принтер" + +msgid "IDS_PRT_BODY_PAPERSIZE" +msgstr "Розмір паперу" + +msgid "IDS_PRT_BODY_NUMBEROFCOPIES" +msgstr "Кількість копій" + +msgid "IDS_PRT_BODY_PRINT_RANGE_ABB" +msgstr "Діапазон друку" + +msgid "IDS_PRT_BODY_COLOUR" +msgstr "Колір" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT" +msgstr "Чернетка" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD" +msgstr "Стандартний" + +msgid "IDS_COM_BODY_HIGH" +msgstr "Високий" + +msgid "IDS_ST_BODY_NORMAL" +msgstr "Звичайний" + +msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING" +msgstr "Очікування друку..." + +msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING" +msgstr "Підготовка до друку..." + +msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING" +msgstr "Друк..." + +msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB" +msgstr "Фотографічний" + +msgid "IDS_ST_BODY_GLOSSY" +msgstr "Glossy" + +msgid "IDS_DIC_BODY_ALL" +msgstr "Всі" + +msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY" +msgstr "Якість друку" + +msgid "IDS_IMGE_HEADER_GREY" +msgstr "Сірий" + +msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE" +msgstr "Немає доступних принтерів" + +msgid "IDS_COM_BODY_NO_DEVICES" +msgstr "Немає пристроїв" + +msgid "IDS_PRT_POP_PRINTING_CANCELED" +msgstr "Друк скасовано" + +msgid "IDS_COM_POP_MEMORY_FULL" +msgstr "Пам'ять заповнено" + +msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING" +msgstr "Пошук принтерів..." + +msgid "IDS_PRT_POP_CHECKPRINTERSTATE" +msgstr "Перевірте стан принтера" + +msgid "IDS_ASEML_POP_SEARCH_FAILED" +msgstr "Збій пошуку" + +msgid "IDS_PRT_POP_PRINTINGERROR" +msgstr "Помилка друку" + +msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED" +msgstr "Wi-Fi відключено" + +msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER" +msgstr "Папір" + +msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2" +msgstr "Принтер відключено" + diff --git a/mobileprint/po/update-po.sh b/mobileprint/po/update-po.sh new file mode 100755 index 0000000..b79157d --- /dev/null +++ b/mobileprint/po/update-po.sh @@ -0,0 +1,59 @@ +#!/bin/sh + +PACKAGE=mobileprint +SRCROOT=.. +POTFILES=POTFILES.in + +ALL_LINGUAS="ar da en_US fi hi it_IT lt pl sk uk zh_TW az de_DE es_ES fr_CA hr ja_JP lv pt_BR sl uz bg el_GR es_US fr_FR hu ka mk pt_PT sr zh_CN ca en et ga hy kk nb ro sv zh_HK cs en_PH eu gl is ko_KR nl_NL ru_RU tr_TR zh_SG" + +XGETTEXT=/usr/bin/xgettext +MSGMERGE=/usr/bin/msgmerge + +echo -n "Make ${PACKAGE}.pot " +if [ ! -e $POTFILES ] ; then + echo "$POTFILES not found" + exit 1 +fi + +$XGETTEXT --default-domain=${PACKAGE} --directory=${SRCROOT} \ + --keyword=_ --keyword=N_ --files-from=$POTFILES +if [ $? -ne 0 ]; then + echo "xgettext error" + exit 1 +fi + +if [ ! -f ${PACKAGE}.po ]; then + echo "No such file: ${PACKAGE}.po" + exit 1 +fi + +rm -f ${PACKAGE}.pot && mv ${PACKAGE}.po ${PACKAGE}.pot +echo "done" + +for LANG in $ALL_LINGUAS; do + echo "$LANG : " + + if [ ! -e $LANG.po ] ; then + sed 's/CHARSET/UTF-8/g' ${PACKAGE}.pot > ${LANG}.po + echo "${LANG}.po created" + else + if $MSGMERGE ${LANG}.po ${PACKAGE}.pot -o ${LANG}.new.po ; then + if cmp ${LANG}.po ${LANG}.new.po > /dev/null 2>&1; then + rm -f ${LANG}.new.po + else + if mv -f ${LANG}.new.po ${LANG}.po; then + echo "" + else + echo "msgmerge for $LANG.po failed: cannot move $LANG.new.po to $LANG.po" 1>&2 + rm -f ${LANG}.new.po + exit 1 + fi + fi + else + echo "msgmerge for $LANG failed!" + rm -f ${LANG}.new.po + fi + fi + echo "" +done + diff --git a/mobileprint/po/uz.po b/mobileprint/po/uz.po new file mode 100644 index 0000000..6682f5a --- /dev/null +++ b/mobileprint/po/uz.po @@ -0,0 +1,171 @@ +msgid "IDS_COM_SK_HIDE" +msgstr "Yashirish" + +msgid "IDS_COM_SK_REFRESH" +msgstr "Yangilash" + +msgid "IDS_COM_SK_CANCEL" +msgstr "Bekor q." + +msgid "IDS_IMGE_OPT_ROTATE" +msgstr "Aylantirish" + +msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR" +msgstr "Tizim xatosi" + +msgid "IDS_COM_SK_BACK" +msgstr "Orqaga" + +msgid "IDS_COM_BODY_WI_FI" +msgstr "Wi-Fi" + +msgid "IDS_COM_SK_OK" +msgstr "OK" + +msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE" +msgstr "Qo‘llab-quvvatlanmaydigan fayl turi" + +msgid "IDS_COM_OPT1_WI_FI_DIRECT" +msgstr "Wi-Fi Direct" + +msgid "IDS_COM_POP_UNSUPPORTED" +msgstr "Qo‘llab-quvvatlanmaydigan" + +msgid "IDS_BR_BODY_CURRENT_PAGE" +msgstr "Joriy sahifa" + +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Printer ulandi" + +msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT" +msgstr "Chop etish uchun Wi-Fi tarmoqqa ulanish" + +msgid "IDS_PRT_BODY_SELECT_PRINTER" +msgstr "Printerni tanlash" + +msgid "IDS_PRT_SK_PRINT_PREVIEW" +msgstr "Dast. k/c" + +msgid "IDS_SMPOS_SK3_PRINT" +msgstr "Chop etish" + +msgid "IDS_IMGE_BODY_SIZE" +msgstr "O‘lcham" + +msgid "IDS_PRT_BODY_SCALING_ABB" +msgstr "Masshtab tanlash" + +msgid "IDS_COM_BODY_SETTING" +msgstr "Parametr" + +msgid "IDS_BT_OPT_FIT_TO_PAPER" +msgstr "Qog‘ozga moslash" + +msgid "IDS_COM_SK_CUSTOM" +msgstr "Maxsus" + +msgid "IDS_IMGE_BODY_WIDTH" +msgstr "Kenglik" + +msgid "IDS_IMGE_BODY_HEIGHT" +msgstr "Balandlik" + +msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB" +msgstr "Proporsiyani saqlash" + +msgid "IDS_COM_BODY_UNIT_INCH" +msgstr "dyum" + +msgid "IDS_COM_BODY_UNIT_CM" +msgstr "sm" + +msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB" +msgstr "1 betda %dta sahifa" + +msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS" +msgstr "Printer parametrlari" + +msgid "IDS_PRT_BODY_PRINTER" +msgstr "Printer" + +msgid "IDS_PRT_BODY_PAPERSIZE" +msgstr "Qog‘oz o‘lchami" + +msgid "IDS_PRT_BODY_NUMBEROFCOPIES" +msgstr "Nusxalar soni" + +msgid "IDS_PRT_BODY_PRINT_RANGE_ABB" +msgstr "Chop etish diapazoni" + +msgid "IDS_PRT_BODY_COLOUR" +msgstr "Rang" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT" +msgstr "Qoralama" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD" +msgstr "Standart" + +msgid "IDS_COM_BODY_HIGH" +msgstr "Yuqori" + +msgid "IDS_ST_BODY_NORMAL" +msgstr "Normal" + +msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING" +msgstr "Chop etilyapti…" + +msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING" +msgstr "Chop etishga tayyorlanmoqda..." + +msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING" +msgstr "Chop etmoqda..." + +msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB" +msgstr "Fotografik" + +msgid "IDS_ST_BODY_GLOSSY" +msgstr "Yaltiroq" + +msgid "IDS_DIC_BODY_ALL" +msgstr "Barchasi" + +msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY" +msgstr "Chop etish sifati" + +msgid "IDS_IMGE_HEADER_GREY" +msgstr "Kul rang" + +msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE" +msgstr "Birorta ham printer mavjud emas" + +msgid "IDS_COM_BODY_NO_DEVICES" +msgstr "Qurilmalar yo‘q" + +msgid "IDS_PRT_POP_PRINTING_CANCELED" +msgstr "Chop etish bekor qilindi" + +msgid "IDS_COM_POP_MEMORY_FULL" +msgstr "Xotira to‘la" + +msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING" +msgstr "Printerlar qidirilmoqda..." + +msgid "IDS_PRT_POP_CHECKPRINTERSTATE" +msgstr "Printer holatini tekshirish" + +msgid "IDS_ASEML_POP_SEARCH_FAILED" +msgstr "Qidirish bajarilmadi" + +msgid "IDS_PRT_POP_PRINTINGERROR" +msgstr "Chop etishdagi xato" + +msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED" +msgstr "Wi-Fi uzilgan" + +msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER" +msgstr "Qog‘oz" + +msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2" +msgstr "Printer chiqarib olindi" + diff --git a/mobileprint/po/zh_CN.po b/mobileprint/po/zh_CN.po new file mode 100644 index 0000000..6ebce12 --- /dev/null +++ b/mobileprint/po/zh_CN.po @@ -0,0 +1,171 @@ +msgid "IDS_COM_SK_HIDE" +msgstr "隐藏" + +msgid "IDS_COM_SK_REFRESH" +msgstr "刷新" + +msgid "IDS_COM_SK_CANCEL" +msgstr "取消" + +msgid "IDS_IMGE_OPT_ROTATE" +msgstr "旋转" + +msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR" +msgstr "系统出错" + +msgid "IDS_COM_SK_BACK" +msgstr "返回" + +msgid "IDS_COM_BODY_WI_FI" +msgstr "Wi-Fi" + +msgid "IDS_COM_SK_OK" +msgstr "确定" + +msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE" +msgstr "不支持的文件类型" + +msgid "IDS_COM_OPT1_WI_FI_DIRECT" +msgstr "Wi-Fi直连" + +msgid "IDS_COM_POP_UNSUPPORTED" +msgstr "不支持" + +msgid "IDS_BR_BODY_CURRENT_PAGE" +msgstr "当前页面" + +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "打印机已连接" + +msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT" +msgstr "连接Wi-Fi网络以打印" + +msgid "IDS_PRT_BODY_SELECT_PRINTER" +msgstr "选择打印机" + +msgid "IDS_PRT_SK_PRINT_PREVIEW" +msgstr "预览" + +msgid "IDS_SMPOS_SK3_PRINT" +msgstr "打印" + +msgid "IDS_IMGE_BODY_SIZE" +msgstr "大小" + +msgid "IDS_PRT_BODY_SCALING_ABB" +msgstr "缩放比例" + +msgid "IDS_COM_BODY_SETTING" +msgstr "设定" + +msgid "IDS_BT_OPT_FIT_TO_PAPER" +msgstr "符合纸张大小" + +msgid "IDS_COM_SK_CUSTOM" +msgstr "自定义" + +msgid "IDS_IMGE_BODY_WIDTH" +msgstr "宽" + +msgid "IDS_IMGE_BODY_HEIGHT" +msgstr "高" + +msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB" +msgstr "保持宽高比" + +msgid "IDS_COM_BODY_UNIT_INCH" +msgstr "英寸" + +msgid "IDS_COM_BODY_UNIT_CM" +msgstr "厘米" + +msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB" +msgstr "1 张上 %d 页" + +msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS" +msgstr "打印机设置" + +msgid "IDS_PRT_BODY_PRINTER" +msgstr "打印机" + +msgid "IDS_PRT_BODY_PAPERSIZE" +msgstr "纸张尺寸" + +msgid "IDS_PRT_BODY_NUMBEROFCOPIES" +msgstr "拷贝份数" + +msgid "IDS_PRT_BODY_PRINT_RANGE_ABB" +msgstr "打印范围" + +msgid "IDS_PRT_BODY_COLOUR" +msgstr "颜色" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT" +msgstr "草稿" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD" +msgstr "标准" + +msgid "IDS_COM_BODY_HIGH" +msgstr "高" + +msgid "IDS_ST_BODY_NORMAL" +msgstr "正常" + +msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING" +msgstr "正在等待打印…" + +msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING" +msgstr "准备打印…" + +msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING" +msgstr "打印中..." + +msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB" +msgstr "摄影" + +msgid "IDS_ST_BODY_GLOSSY" +msgstr "平滑" + +msgid "IDS_DIC_BODY_ALL" +msgstr "全部" + +msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY" +msgstr "打印质量" + +msgid "IDS_IMGE_HEADER_GREY" +msgstr "灰色" + +msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE" +msgstr "无可用打印机" + +msgid "IDS_COM_BODY_NO_DEVICES" +msgstr "没有设备" + +msgid "IDS_PRT_POP_PRINTING_CANCELED" +msgstr "打印已取消" + +msgid "IDS_COM_POP_MEMORY_FULL" +msgstr "内存已满" + +msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING" +msgstr "正在搜索打印机…" + +msgid "IDS_PRT_POP_CHECKPRINTERSTATE" +msgstr "检查打印机状态" + +msgid "IDS_ASEML_POP_SEARCH_FAILED" +msgstr "搜索失败" + +msgid "IDS_PRT_POP_PRINTINGERROR" +msgstr "打印故障" + +msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED" +msgstr "Wi-Fi已断开" + +msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER" +msgstr "纸" + +msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2" +msgstr "打印机已断开" + diff --git a/mobileprint/po/zh_HK.po b/mobileprint/po/zh_HK.po new file mode 100644 index 0000000..55e3a77 --- /dev/null +++ b/mobileprint/po/zh_HK.po @@ -0,0 +1,171 @@ +msgid "IDS_COM_SK_HIDE" +msgstr "隱藏" + +msgid "IDS_COM_SK_REFRESH" +msgstr "重新整理" + +msgid "IDS_COM_SK_CANCEL" +msgstr "取消" + +msgid "IDS_IMGE_OPT_ROTATE" +msgstr "旋轉" + +msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR" +msgstr "系統錯誤" + +msgid "IDS_COM_SK_BACK" +msgstr "返回" + +msgid "IDS_COM_BODY_WI_FI" +msgstr "Wi-Fi" + +msgid "IDS_COM_SK_OK" +msgstr "確定" + +msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE" +msgstr "不支援的檔案類型" + +msgid "IDS_COM_OPT1_WI_FI_DIRECT" +msgstr "Wi-Fi Direct" + +msgid "IDS_COM_POP_UNSUPPORTED" +msgstr "不支援" + +msgid "IDS_BR_BODY_CURRENT_PAGE" +msgstr "目前頁面" + +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "打印機已連接" + +msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT" +msgstr "連接到 Wi-Fi 網絡以打印" + +msgid "IDS_PRT_BODY_SELECT_PRINTER" +msgstr "選擇打印機" + +msgid "IDS_PRT_SK_PRINT_PREVIEW" +msgstr "預覽" + +msgid "IDS_SMPOS_SK3_PRINT" +msgstr "列印" + +msgid "IDS_IMGE_BODY_SIZE" +msgstr "大小" + +msgid "IDS_PRT_BODY_SCALING_ABB" +msgstr "縮放比例" + +msgid "IDS_COM_BODY_SETTING" +msgstr "設定" + +msgid "IDS_BT_OPT_FIT_TO_PAPER" +msgstr "符合紙張大小" + +msgid "IDS_COM_SK_CUSTOM" +msgstr "自訂" + +msgid "IDS_IMGE_BODY_WIDTH" +msgstr "闊度" + +msgid "IDS_IMGE_BODY_HEIGHT" +msgstr "高度" + +msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB" +msgstr "保持長寬比" + +msgid "IDS_COM_BODY_UNIT_INCH" +msgstr "英寸" + +msgid "IDS_COM_BODY_UNIT_CM" +msgstr "厘米" + +msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB" +msgstr "1 張上有 %d 頁" + +msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS" +msgstr "打印機設定" + +msgid "IDS_PRT_BODY_PRINTER" +msgstr "打印機" + +msgid "IDS_PRT_BODY_PAPERSIZE" +msgstr "紙張大小" + +msgid "IDS_PRT_BODY_NUMBEROFCOPIES" +msgstr "列印份數" + +msgid "IDS_PRT_BODY_PRINT_RANGE_ABB" +msgstr "列印範圍" + +msgid "IDS_PRT_BODY_COLOUR" +msgstr "顏色" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT" +msgstr "草稿" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD" +msgstr "標準" + +msgid "IDS_COM_BODY_HIGH" +msgstr "高" + +msgid "IDS_ST_BODY_NORMAL" +msgstr "正常" + +msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING" +msgstr "正在等待列印…" + +msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING" +msgstr "正在準備列印..." + +msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING" +msgstr "正在列印..." + +msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB" +msgstr "攝影" + +msgid "IDS_ST_BODY_GLOSSY" +msgstr "Glossy" + +msgid "IDS_DIC_BODY_ALL" +msgstr "全部" + +msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY" +msgstr "列印質素" + +msgid "IDS_IMGE_HEADER_GREY" +msgstr "灰色" + +msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE" +msgstr "無可用的打印機" + +msgid "IDS_COM_BODY_NO_DEVICES" +msgstr "無裝置" + +msgid "IDS_PRT_POP_PRINTING_CANCELED" +msgstr "已取消列印" + +msgid "IDS_COM_POP_MEMORY_FULL" +msgstr "記憶體已滿" + +msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING" +msgstr "正在搜尋打印機..." + +msgid "IDS_PRT_POP_CHECKPRINTERSTATE" +msgstr "檢查打印機狀態" + +msgid "IDS_ASEML_POP_SEARCH_FAILED" +msgstr "搜尋失敗" + +msgid "IDS_PRT_POP_PRINTINGERROR" +msgstr "列印錯誤" + +msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED" +msgstr "Wi-Fi已中斷連接" + +msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER" +msgstr "紙張" + +msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2" +msgstr "打印機已中斷連接" + diff --git a/mobileprint/po/zh_SG.po b/mobileprint/po/zh_SG.po new file mode 100644 index 0000000..e642542 --- /dev/null +++ b/mobileprint/po/zh_SG.po @@ -0,0 +1,171 @@ +msgid "IDS_COM_SK_HIDE" +msgstr "隐藏" + +msgid "IDS_COM_SK_REFRESH" +msgstr "重新显示" + +msgid "IDS_COM_SK_CANCEL" +msgstr "取消" + +msgid "IDS_IMGE_OPT_ROTATE" +msgstr "旋转" + +msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR" +msgstr "系统出错" + +msgid "IDS_COM_SK_BACK" +msgstr "返回" + +msgid "IDS_COM_BODY_WI_FI" +msgstr "Wi-Fi" + +msgid "IDS_COM_SK_OK" +msgstr "确认" + +msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE" +msgstr "不支持的文件类型" + +msgid "IDS_COM_OPT1_WI_FI_DIRECT" +msgstr "直接Wi-Fi" + +msgid "IDS_COM_POP_UNSUPPORTED" +msgstr "不支持" + +msgid "IDS_BR_BODY_CURRENT_PAGE" +msgstr "当前页面" + +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "打印机已连接" + +msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT" +msgstr "连接Wi-Fi网络以打印" + +msgid "IDS_PRT_BODY_SELECT_PRINTER" +msgstr "选择打印机" + +msgid "IDS_PRT_SK_PRINT_PREVIEW" +msgstr "预览" + +msgid "IDS_SMPOS_SK3_PRINT" +msgstr "打印" + +msgid "IDS_IMGE_BODY_SIZE" +msgstr "大小" + +msgid "IDS_PRT_BODY_SCALING_ABB" +msgstr "缩放比例" + +msgid "IDS_COM_BODY_SETTING" +msgstr "设定" + +msgid "IDS_BT_OPT_FIT_TO_PAPER" +msgstr "符合纸张大小" + +msgid "IDS_COM_SK_CUSTOM" +msgstr "自定义" + +msgid "IDS_IMGE_BODY_WIDTH" +msgstr "宽" + +msgid "IDS_IMGE_BODY_HEIGHT" +msgstr "高" + +msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB" +msgstr "保持宽高比" + +msgid "IDS_COM_BODY_UNIT_INCH" +msgstr "英寸" + +msgid "IDS_COM_BODY_UNIT_CM" +msgstr "厘米" + +msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB" +msgstr "1 张上 %d 页" + +msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS" +msgstr "打印机设置" + +msgid "IDS_PRT_BODY_PRINTER" +msgstr "打印机" + +msgid "IDS_PRT_BODY_PAPERSIZE" +msgstr "纸张大小" + +msgid "IDS_PRT_BODY_NUMBEROFCOPIES" +msgstr "份数" + +msgid "IDS_PRT_BODY_PRINT_RANGE_ABB" +msgstr "打印范围" + +msgid "IDS_PRT_BODY_COLOUR" +msgstr "颜色" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT" +msgstr "草稿" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD" +msgstr "标准" + +msgid "IDS_COM_BODY_HIGH" +msgstr "高" + +msgid "IDS_ST_BODY_NORMAL" +msgstr "普通" + +msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING" +msgstr "正在等待打印…" + +msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING" +msgstr "正在准备打印..." + +msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING" +msgstr "打印中..." + +msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB" +msgstr "摄影" + +msgid "IDS_ST_BODY_GLOSSY" +msgstr "光面" + +msgid "IDS_DIC_BODY_ALL" +msgstr "全部" + +msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY" +msgstr "打印素质" + +msgid "IDS_IMGE_HEADER_GREY" +msgstr "灰色" + +msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE" +msgstr "无可用打印机" + +msgid "IDS_COM_BODY_NO_DEVICES" +msgstr "没有设备" + +msgid "IDS_PRT_POP_PRINTING_CANCELED" +msgstr "打印已取消" + +msgid "IDS_COM_POP_MEMORY_FULL" +msgstr "内存已满" + +msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING" +msgstr "正在搜索打印机…" + +msgid "IDS_PRT_POP_CHECKPRINTERSTATE" +msgstr "检查打印机状态" + +msgid "IDS_ASEML_POP_SEARCH_FAILED" +msgstr "搜索失败" + +msgid "IDS_PRT_POP_PRINTINGERROR" +msgstr "打印故障" + +msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED" +msgstr "Wi-Fi已断开" + +msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER" +msgstr "纸" + +msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2" +msgstr "打印机已断开" + diff --git a/mobileprint/po/zh_TW.po b/mobileprint/po/zh_TW.po new file mode 100644 index 0000000..11bef9c --- /dev/null +++ b/mobileprint/po/zh_TW.po @@ -0,0 +1,171 @@ +msgid "IDS_COM_SK_HIDE" +msgstr "隱藏" + +msgid "IDS_COM_SK_REFRESH" +msgstr "重新整理" + +msgid "IDS_COM_SK_CANCEL" +msgstr "取消" + +msgid "IDS_IMGE_OPT_ROTATE" +msgstr "旋轉" + +msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR" +msgstr "系統錯誤" + +msgid "IDS_COM_SK_BACK" +msgstr "返回" + +msgid "IDS_COM_BODY_WI_FI" +msgstr "Wi-Fi" + +msgid "IDS_COM_SK_OK" +msgstr "確定" + +msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE" +msgstr "不支援的檔案類型" + +msgid "IDS_COM_OPT1_WI_FI_DIRECT" +msgstr "Wi-Fi Direct" + +msgid "IDS_COM_POP_UNSUPPORTED" +msgstr "不支援" + +msgid "IDS_BR_BODY_CURRENT_PAGE" +msgstr "目前頁面" + +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "印表機已連接" + +msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT" +msgstr "連接Wi-Fi網路印表機" + +msgid "IDS_PRT_BODY_SELECT_PRINTER" +msgstr "選擇印表機" + +msgid "IDS_PRT_SK_PRINT_PREVIEW" +msgstr "預覽" + +msgid "IDS_SMPOS_SK3_PRINT" +msgstr "列印" + +msgid "IDS_IMGE_BODY_SIZE" +msgstr "大小" + +msgid "IDS_PRT_BODY_SCALING_ABB" +msgstr "縮放比例" + +msgid "IDS_COM_BODY_SETTING" +msgstr "設定" + +msgid "IDS_BT_OPT_FIT_TO_PAPER" +msgstr "符合紙張大小" + +msgid "IDS_COM_SK_CUSTOM" +msgstr "自訂" + +msgid "IDS_IMGE_BODY_WIDTH" +msgstr "寬度" + +msgid "IDS_IMGE_BODY_HEIGHT" +msgstr "高度" + +msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB" +msgstr "保持長寬比" + +msgid "IDS_COM_BODY_UNIT_INCH" +msgstr "英吋" + +msgid "IDS_COM_BODY_UNIT_CM" +msgstr "公分" + +msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB" +msgstr "1 張上有 %d 頁" + +msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS" +msgstr "印表機設定" + +msgid "IDS_PRT_BODY_PRINTER" +msgstr "印表機" + +msgid "IDS_PRT_BODY_PAPERSIZE" +msgstr "紙張大小" + +msgid "IDS_PRT_BODY_NUMBEROFCOPIES" +msgstr "份數" + +msgid "IDS_PRT_BODY_PRINT_RANGE_ABB" +msgstr "列印範圍" + +msgid "IDS_PRT_BODY_COLOUR" +msgstr "顏色" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT" +msgstr "草稿" + +msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD" +msgstr "標準" + +msgid "IDS_COM_BODY_HIGH" +msgstr "高" + +msgid "IDS_ST_BODY_NORMAL" +msgstr "正常" + +msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING" +msgstr "正在等待列印…" + +msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING" +msgstr "正在準備列印..." + +msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING" +msgstr "正在列印..." + +msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB" +msgstr "攝影" + +msgid "IDS_ST_BODY_GLOSSY" +msgstr "Glossy" + +msgid "IDS_DIC_BODY_ALL" +msgstr "全部" + +msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY" +msgstr "列印品質" + +msgid "IDS_IMGE_HEADER_GREY" +msgstr "灰色" + +msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE" +msgstr "無可用的印表機" + +msgid "IDS_COM_BODY_NO_DEVICES" +msgstr "沒有找到裝置" + +msgid "IDS_PRT_POP_PRINTING_CANCELED" +msgstr "已取消列印" + +msgid "IDS_COM_POP_MEMORY_FULL" +msgstr "記憶體已滿" + +msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING" +msgstr "正在搜尋印表機..." + +msgid "IDS_PRT_POP_CHECKPRINTERSTATE" +msgstr "檢查印表機狀態" + +msgid "IDS_ASEML_POP_SEARCH_FAILED" +msgstr "搜尋失敗" + +msgid "IDS_PRT_POP_PRINTINGERROR" +msgstr "列印錯誤" + +msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED" +msgstr "Wi - Fi斷開" + +msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER" +msgstr "紙張" + +msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2" +msgstr "印表機已中斷連接" + diff --git a/mobileprint/previewgen/CMakeLists.txt b/mobileprint/previewgen/CMakeLists.txt new file mode 100644 index 0000000..b23f7dc --- /dev/null +++ b/mobileprint/previewgen/CMakeLists.txt @@ -0,0 +1,10 @@ +#ADD_DEFINITIONS("-Wall -pedantic") #enable all warnings + +INCLUDE(FindPkgConfig) +pkg_check_modules(previewgen_pkgs REQUIRED dlog + evas ecore) +FOREACH(flag ${previewgen_pkgs_CFLAGS}) + SET(EXTRA_CFLAGS_PREVIEWGEN "${EXTRA_CFLAGS_PREVIEWGEN} ${flag}") +ENDFOREACH(flag) + +ADD_SUBDIRECTORY(lib) diff --git a/mobileprint/previewgen/include/evas_render.h b/mobileprint/previewgen/include/evas_render.h new file mode 100644 index 0000000..affbfc5 --- /dev/null +++ b/mobileprint/previewgen/include/evas_render.h @@ -0,0 +1,37 @@ +/* +* Mobileprint +* +* Copyright 2012 Samsung Electronics Co., Ltd + +* Licensed under the Flora License, Version 1.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://floralicense.org/license/ + +* 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. +* +*/ + +#ifndef _EVAS_RENDER_H_INCLUDED_ +#define _EVAS_RENDER_H_INCLUDED_ + +#include + +#include "paper_size.h" + + +int init_buffer_canvas(Evas *canvas, const struct size_px *page_size); +int init_temp_buffer_canvas(Evas *canvas); +int reinit_buffer_canvas(Evas *canvas, const struct size_px *page_size); +Evas *create_canvas(const struct size_px *page_size); +void destroy_canvas(Evas *canvas); +void draw_scene(Evas *canvas); +void save_scene(Evas *canvas, const char *dest); + +#endif /* _EVAS_RENDER_H_INCLUDED_ */ + diff --git a/mobileprint/previewgen/include/image_scaler.h b/mobileprint/previewgen/include/image_scaler.h new file mode 100644 index 0000000..3238144 --- /dev/null +++ b/mobileprint/previewgen/include/image_scaler.h @@ -0,0 +1,29 @@ +/* +* Mobileprint +* +* Copyright 2012 Samsung Electronics Co., Ltd + +* Licensed under the Flora License, Version 1.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://floralicense.org/license/ + +* 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. +* +*/ + +#ifndef _IMAGE_SCALER_H_INCLUDED_ +#define _IMAGE_SCALER_H_INCLUDED_ + +#include "paper_size.h" + +int downscale_image(const char *fname, const char *outfname_ppm, + const struct size_px *available_size); + +#endif /* _IMAGE_SCALER_H_INCLUDED_ */ + diff --git a/mobileprint/previewgen/include/page_preview.h b/mobileprint/previewgen/include/page_preview.h new file mode 100644 index 0000000..1e11e81 --- /dev/null +++ b/mobileprint/previewgen/include/page_preview.h @@ -0,0 +1,82 @@ +/* +* Mobileprint +* +* Copyright 2012 Samsung Electronics Co., Ltd + +* Licensed under the Flora License, Version 1.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://floralicense.org/license/ + +* 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. +* +*/ + +#ifndef _PAGE_PREVIEW_H_INCLUDED_ +#define _PAGE_PREVIEW_H_INCLUDED_ + +#include + +#include +#include + +#include "pdfgen.h" + + +#define IMAGE_CONVERT_TEMP_FILE "/tmp/convert_tmp.ppm" + + +Evas *get_pdf_preview_page_image(const char *fname, int first_page, + const struct preview_page_px *settings_px); + +int save_pdf_preview_page_image(const char *pdf_fname, int first_page, + const struct preview_page_req *settings_pts, + const char *out_pic_fname); + +#if 0 +int get_pdf_preview_pages(const char *fname, + const struct paper_size_pts *paper_size, + const struct size_px *available_size_px, + enum page_orientation orientation, + int n_up, int is_original_size, int is_grayscale); + +int get_img_preview_pages(char **const fnames, int files_count, + const struct paper_size_pts *paper_size, + const struct size_px *available_size_px, + enum page_orientation orientation, + int n_up, int is_original_size, int is_grayscale); +#endif + +int save_pdf_preview_page_image_w_np(void *img_buf, int img_size, + int page_num, int pages_count, + //const struct preview_page_req *settings_pts, + const struct preview_settings_px *settings_px, + const char *out_pic_fname); + +int pdf2pdf_preview_pages(const char *fname, const char *out_pdf_fname, + const char *printer_ppd_fname, + const struct paper_size_pts *paper_size, + enum page_orientation orientation, int n_up, + const struct page_scale *scale, int is_grayscale); + +int img2pdf_preview_pages(const char *fname, const char *out_pdf_fname, + const char *printer_ppd_fname, + const struct paper_size_pts *paper_size, + const struct size_px *available_size_px, + enum page_orientation orientation, int n_up, + const struct page_scale *scale, int is_grayscale); + +int process_image_downscale(const char *fname, const char *out_fname, + const struct size_px *available_size_px); + +int load_pdf_page_img(const char *fname, int page, + const struct preview_page_px *settings_px, + void **out_img, int *size); + +#endif /* _PAGE_PREVIEW_H_INCLUDED_ */ + diff --git a/mobileprint/previewgen/include/page_preview_thread.h b/mobileprint/previewgen/include/page_preview_thread.h new file mode 100644 index 0000000..0005d0b --- /dev/null +++ b/mobileprint/previewgen/include/page_preview_thread.h @@ -0,0 +1,66 @@ +/* +* Mobileprint +* +* Copyright 2012 Samsung Electronics Co., Ltd + +* Licensed under the Flora License, Version 1.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://floralicense.org/license/ + +* 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. +* +*/ + +#ifndef _PAGE_PREVIEW_THREAD_H_INCLUDED_ +#define _PAGE_PREVIEW_THREAD_H_INCLUDED_ + +#include "page_preview.h" + + +struct pdf_preview_page_image_data { + //char *pdf_fname; + void *img_buf; + int img_size; + int page_num; + int pages_count; + struct preview_settings_px *settings_px; + char *out_pic_fname; + + int res; +}; + +struct process_image_downscale_data { + char *fname; + char *out_fname; + struct size_px *available_size_px; + + int res; +}; + +#if 0 +struct img2pdf_preview_pages_data { + char **fnames; + int files_count; + struct paper_size_pts *paper_size; + struct size_px *available_size_px; + enum page_orientation orientation; + int n_up; + struct page_scale *scale; + int is_grayscale; + + int res; +}; +#endif + +void *save_pdf_preview_page_image_w_np_thread(void *d); +void *process_image_downscale_thread(void *d); +//void *img2pdf_preview_pages_thread(void *d); + +#endif /* _PAGE_PREVIEW_THREAD_H_INCLUDED_ */ + diff --git a/mobileprint/previewgen/include/paper_size.h b/mobileprint/previewgen/include/paper_size.h new file mode 100644 index 0000000..1e4e5f5 --- /dev/null +++ b/mobileprint/previewgen/include/paper_size.h @@ -0,0 +1,51 @@ +/* +* Mobileprint +* +* Copyright 2012 Samsung Electronics Co., Ltd + +* Licensed under the Flora License, Version 1.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://floralicense.org/license/ + +* 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. +* +*/ + +#ifndef _PAPER_SIZE_H_INCLUDED_ +#define _PAPER_SIZE_H_INCLUDED_ + +//#include + +struct size_px { + int x; + int y; +}; + +struct size_pts { + double x; + double y; +}; + +struct paper_size_pts { + char *name; + struct size_pts s; +}; + +void switch_size_pts_coords(struct size_pts *s); +void switch_size_px_coords(struct size_px *s); +void add_size_pts(const struct size_pts *from, struct size_pts *to); +void neg_size_pts(struct size_pts *s); + +int get_paper_size_pts(const char *name, struct paper_size_pts *s); +int pts_size2px(const struct size_pts *s_pts, + const struct size_px *border_s_px, + struct size_px *px); + +#endif /* _PAPER_SIZE_H_INCLUDED_ */ + diff --git a/mobileprint/previewgen/include/pdfgen.h b/mobileprint/previewgen/include/pdfgen.h new file mode 100644 index 0000000..e8d7edf --- /dev/null +++ b/mobileprint/previewgen/include/pdfgen.h @@ -0,0 +1,64 @@ +/* +* Mobileprint +* +* Copyright 2012 Samsung Electronics Co., Ltd + +* Licensed under the Flora License, Version 1.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://floralicense.org/license/ + +* 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. +* +*/ + +#ifndef _PDFGEN_H_INCLUDED_ +#define _PDFGEN_H_INCLUDED_ + + +#define TEMP_PDFTOPDF_FNAME "/tmp/pdftopdf_tmp.pdf" + +#define SCALE_WALLET_W 3.30709 +#define SCALE_WALLET_H + +enum page_orientation { + //PAGE_ORIENTATION_AUTO, + PAGE_ORIENTATION_PORTRAIT=3, + PAGE_ORIENTATION_LANDSCAPE +}; + +enum page_scale_type { + SCALE_FIT_TO_PAPER, + SCALE_CUSTOM, + SCALE_RELATIVE, + SCALE_ORIGINAL +}; + +struct page_scale { + enum page_scale_type type; + int zoom; + double w; + double h; +}; + +struct pdfgen_settings { + int n_up; + char *paper_name; + char *ppd_filename; + struct page_scale scale; + enum page_orientation orientation; +}; + + +int call_pdftopdf(const char *path, const char *outfile, + const struct pdfgen_settings *settings); +int call_imagetopdf(const char *path, const char *outfile, + const struct pdfgen_settings *settings); + +#endif /* _PDFGEN_H_INCLUDED_ */ + diff --git a/mobileprint/previewgen/include/pgen_debug.h b/mobileprint/previewgen/include/pgen_debug.h new file mode 100644 index 0000000..b921e37 --- /dev/null +++ b/mobileprint/previewgen/include/pgen_debug.h @@ -0,0 +1,47 @@ +/* +* Mobileprint +* +* Copyright 2012 Samsung Electronics Co., Ltd + +* Licensed under the Flora License, Version 1.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://floralicense.org/license/ + +* 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. +* +*/ + +#ifndef _PGEN_DEBUG_H_INCLUDED_ +#define _PGEN_DEBUG_H_INCLUDED_ + +#include + + +/* debugging macros definitions */ + +/*#define PREVIEWGEN_DEBUG*/ +#ifdef PREVIEWGEN_DEBUG +/* standalone preview generation (e.g. for testing) */ + +#define PGEN_DEBUG(fmt, arg...) do { \ + printf("DEBUG: " fmt "\n", ##arg); } while (0) +#define PGEN_TRACE_BEGIN +#define PGEN_TRACE_END + +#else + +#define PGEN_DEBUG(fmt, arg...) PTS_DEBUG(fmt, ##arg) +#define PGEN_TRACE_BEGIN PTS_TRACE_BEGIN +#define PGEN_TRACE_END PTS_TRACE_END + +#endif /* PREVIEWGEN_DEBUG */ + + +#endif /* _PGEN_DEBUG_H_INCLUDED_ */ + diff --git a/mobileprint/previewgen/include/preview_coords.h b/mobileprint/previewgen/include/preview_coords.h new file mode 100644 index 0000000..f7504b8 --- /dev/null +++ b/mobileprint/previewgen/include/preview_coords.h @@ -0,0 +1,77 @@ +/* +* Mobileprint +* +* Copyright 2012 Samsung Electronics Co., Ltd + +* Licensed under the Flora License, Version 1.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://floralicense.org/license/ + +* 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. +* +*/ + +#ifndef _PREVIEW_COORDS_H_INCLUDED_ +#define _PREVIEW_COORDS_H_INCLUDED_ + +#include +#include + + +#define PAGE_SIDE_SHOW_COEFF 0.1 +#define MIN_PAGE_SPACE_COEFF 0.06 + + +struct preview_page_req { + //struct paper_size_pts paper_size; + struct size_pts paper_size; + struct size_px available_size_px; + //struct size_pts border_size; + struct size_px shadow_offset; + //int is_landscape; + int is_rotate90; + int is_grayscale; + //struct size_pts *parts; + //int parts_count; + //int n_up2; /* power of 2 for n-up */ + //int is_borders; /* TODO: borders size */ + //int is_original_zoom; + //int page; /* number of real page */ +}; + +struct preview_page_px { + struct size_px full_size; + struct size_px paper_size; + struct size_px area_size; + struct size_px area_offset; + int is_grayscale; + int is_rotate90; + //int parts_count; +}; + +/* request for page with it's near parts */ +/*struct preview_settings_req { + struct preview_page_req page_req; +};*/ + +struct preview_settings_px { + struct preview_page_px page_px; + int center_off; + int left_off; + int right_off; + struct size_px full_size; +}; + +int get_preview_page_settings(const struct preview_page_req *req, + struct preview_page_px *res); +int get_preview_settings(const struct preview_page_req *req, + struct preview_settings_px *res); + +#endif /* _PREVIEW_COORDS_H_INCLUDED_ */ + diff --git a/mobileprint/previewgen/include/preview_util.h b/mobileprint/previewgen/include/preview_util.h new file mode 100644 index 0000000..8e967c7 --- /dev/null +++ b/mobileprint/previewgen/include/preview_util.h @@ -0,0 +1,28 @@ +/* +* Mobileprint +* +* Copyright 2012 Samsung Electronics Co., Ltd + +* Licensed under the Flora License, Version 1.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://floralicense.org/license/ + +* 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. +* +*/ + +#ifndef _PREVIEW_UTIL_H_INCLUDED_ +#define _PREVIEW_UTIL_H_INCLUDED_ + +#include + +int get_image_resolution(const char *path, int *resx, int *resy); +int rotate90_image(Evas_Object *img); + +#endif /* _PREVIEW_UTIL_H_INCLUDED_ */ diff --git a/mobileprint/previewgen/include/previewgen.h b/mobileprint/previewgen/include/previewgen.h new file mode 100644 index 0000000..b5c67ed --- /dev/null +++ b/mobileprint/previewgen/include/previewgen.h @@ -0,0 +1,69 @@ +/* +* Mobileprint +* +* Copyright 2012 Samsung Electronics Co., Ltd + +* Licensed under the Flora License, Version 1.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://floralicense.org/license/ + +* 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. +* +*/ + +#ifndef _PREVIEWGEN_H_INCLUDED_ +#define _PREVIEWGEN_H_INCLUDED_ + + +#include + +#include "paper_size.h" +/*#include */ + + +struct pdf_preview_settings { + int w; + int h; + int page; /* page from 1 */ +}; + +enum file_type { + FILE_TYPE_IMAGE, + FILE_TYPE_PDF, + FILE_TYPE_INCORRECT +}; + +/* TODO: check for additional types */ +#define IMG_FILE_EXTS {"png", "ppm", "jpg", "jpeg", "tif", "tiff", "gif", \ + "bmp", "pcx", NULL} +#define PDF_FILE_EXT "pdf" + +#define IMG_TEMP_FILE_NAME "/tmp/out.ppm" +#define PREVIEW_IMG_TEMP_FILE_NAME IMG_TEMP_FILE_NAME + +#if 0 +/*#define PREVIEWGEN_DEBUG*/ +#ifdef PREVIEWGEN_DEBUG +#define PGEN_DEBUG(fmt, arg...) do { \ + printf("DEBUG: " fmt "\n", ##arg); } while (0) +#else +#define PGEN_DEBUG(fmt, arg...) PTS_DEBUG(fmt, ##arg) +#endif /* PREVIEWGEN_DEBUG */ +#endif + +int is_page_landscape(struct size_pts *s); +int get_pdf_page_size(const char *path, struct size_pts *s); +int get_pdf_pages_count(const char *path); +int get_pdf_preview(const char *path, + const struct pdf_preview_settings *settings, + void **out_img, int *size); +enum file_type get_file_type(const char *fname); + +#endif /* _PREVIEWGEN_H_INCLUDED_ */ + diff --git a/mobileprint/previewgen/lib/CMakeLists.txt b/mobileprint/previewgen/lib/CMakeLists.txt new file mode 100644 index 0000000..77a877d --- /dev/null +++ b/mobileprint/previewgen/lib/CMakeLists.txt @@ -0,0 +1,16 @@ +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/previewgen/include) + +FILE(GLOB SRCS *.c) + +#INCLUDE(FindPkgConfig) +#pkg_check_modules(previewgen_pkgs REQUIRED dlog +# evas +# ) +#FOREACH(flag ${previewgen_pkgs_CFLAGS}) +# SET(EXTRA_CFLAGS_PREVIEWGEN "${EXTRA_CFLAGS_PREVIEWGEN} ${flag}") +#ENDFOREACH(flag) + +ADD_LIBRARY(previewgen ${SRCS}) +SET_TARGET_PROPERTIES(previewgen PROPERTIES COMPILE_FLAGS "${EXTRA_CFLAGS_PREVIEWGEN} -fpie") +#TARGET_LINK_LIBRARIES(previewgen ${previewgen_pkgs_LDFLAGS}) + diff --git a/mobileprint/previewgen/lib/evas_render.c b/mobileprint/previewgen/lib/evas_render.c new file mode 100644 index 0000000..fb01f1e --- /dev/null +++ b/mobileprint/previewgen/lib/evas_render.c @@ -0,0 +1,199 @@ +/* +* Mobileprint +* +* Copyright 2012 Samsung Electronics Co., Ltd + +* Licensed under the Flora License, Version 1.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://floralicense.org/license/ + +* 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. +* +*/ + +#include +#include + +#include "paper_size.h" +#include "pgen_debug.h" + +#include "evas_render.h" + +int init_buffer_canvas(Evas *canvas, const struct size_px *page_size) +{ + PGEN_TRACE_BEGIN; + Evas_Engine_Info_Buffer *einfo; + int method; + void *pixels; + int width = page_size->x; + int height = page_size->y; + + PTS_RETV_IF(page_size == NULL || canvas == NULL, -1 , "Invalid argument"); + + method = evas_render_method_lookup("buffer"); + PTS_RETV_IF(method <= 0 , -1, "method is less than zero"); + + evas_output_method_set(canvas, method); + evas_output_size_set(canvas, width, height); + evas_output_viewport_set(canvas, 0, 0, width, height); + einfo = (Evas_Engine_Info_Buffer *)evas_engine_info_get(canvas); + PTS_RETV_IF(einfo == NULL, -1, "einfo is NULL"); + + PGEN_DEBUG("pixels malloc(%d) width %d height %d ",width*height*sizeof(int), width, height); + pixels = malloc(width * height * sizeof(int)); + PTS_RETV_IF(pixels == NULL, -1, "pixels is NULL"); + memset(pixels, 0, width * height * sizeof(int)); + + einfo->info.depth_type = EVAS_ENGINE_BUFFER_DEPTH_ARGB32; + einfo->info.dest_buffer = pixels; + einfo->info.dest_buffer_row_bytes = width * sizeof(int); + einfo->info.use_color_key = 0; + einfo->info.alpha_threshold = 0; + einfo->info.func.new_update_region = NULL; + einfo->info.func.free_update_region = NULL; + evas_engine_info_set(canvas, (Evas_Engine_Info *)einfo); + + PGEN_TRACE_END; + return 0; +} + +int init_temp_buffer_canvas(Evas *canvas) +{ + PTS_RETV_IF(canvas == NULL, -1 , "Invalid argument"); + struct size_px page_size = {100, 100}; + return init_buffer_canvas(canvas, &page_size); +} + +int reinit_buffer_canvas(Evas *canvas, const struct size_px *page_size) +{ + Evas_Engine_Info_Buffer *einfo; + void *oldbuf; + + PTS_RETV_IF(canvas == NULL || page_size == NULL, -1, "Invalid argument"); + + einfo = (Evas_Engine_Info_Buffer *)evas_engine_info_get(canvas); + PTS_RETV_IF(einfo == NULL, -1 , "einfo is NULL"); + + oldbuf = einfo->info.dest_buffer; + if (init_buffer_canvas(canvas, page_size) < 0) { + return -1; + } + //memcpy(einfo->info.dest_buffer, oldbuf, 100 * 100 * sizeof(int)); + PTS_IF_FREE_MEM(oldbuf); + + return 0; +} + +/** + * @brief Provides Evas canvas based on memory buffer + * (based on Evas usage example) + * @param[in] page size in px + * @return canvas based on memory buffer + */ +Evas *create_canvas(const struct size_px *page_size) +{ + PGEN_TRACE_BEGIN; + Evas *canvas; + PTS_RETV_IF(page_size == NULL, NULL, "Invalid argument"); + + canvas = evas_new(); + PTS_RETV_IF(canvas == NULL, NULL, "canvas is NULL"); + + if (init_buffer_canvas(canvas, page_size) < 0) { + evas_free(canvas); + return NULL; + } + + PGEN_TRACE_END; + return canvas; +} + +void destroy_canvas(Evas *canvas) +{ + PGEN_TRACE_BEGIN; + PTS_RET_IF(canvas == NULL, "Invalid argument"); + + Evas_Engine_Info_Buffer *einfo; + einfo = (Evas_Engine_Info_Buffer *)evas_engine_info_get(canvas); + if (!einfo) { + PGEN_DEBUG("ERROR: could not get evas engine info!\n"); + evas_free(canvas); + return; + } + PTS_IF_FREE_MEM(einfo->info.dest_buffer); + evas_free(canvas); + + PGEN_TRACE_END; +} + +/** + * @brief Renders canvas (based on Evas usage example) + * @param[in] canvas canvas to render + */ +void draw_scene(Evas *canvas) +{ + PGEN_TRACE_BEGIN; + PTS_RET_IF(canvas == NULL, "Invalid argument"); + + Eina_List *updates;/*, *n;*/ + /*Eina_Rectangle *update; */ + + /* render and get the updated rectangles: */ + updates = evas_render_updates(canvas); + + /* free list of updates */ + evas_render_updates_free(updates); + + PGEN_TRACE_END; +} + +/** + * @brief Saves canvas to specified image file in PPM format + * (based on Evas usage example) + * @param[in] canvas canvas to save + * @param[in] dest output PPM file name + */ +void save_scene(Evas *canvas, const char *dest) +{ + PGEN_TRACE_BEGIN; + PTS_RET_IF(canvas == NULL || dest == NULL, "Invalid argument"); + + Evas_Engine_Info_Buffer *einfo; + const unsigned int *pixels, *pixels_end; + int width, height; + FILE *f; + + einfo = (Evas_Engine_Info_Buffer *)evas_engine_info_get(canvas); + PTS_RET_IF(einfo == NULL, "einfo is NULL"); + + evas_output_size_get(canvas, &width, &height); + f = fopen(dest, "wb+"); + PTS_RET_IF(f == NULL, "ERROR: could not open for writing '%s': %s",dest, strerror(errno)); + + pixels = einfo->info.dest_buffer; + pixels_end = pixels + (width * height); + + /* PPM P6 format is dead simple to write: */ + fprintf(f, "P6\n%d %d\n255\n", width, height); + for (; pixels < pixels_end; pixels++) { + int r, g, b; + + r = ((*pixels) & 0xff0000) >> 16; + g = ((*pixels) & 0x00ff00) >> 8; + b = (*pixels) & 0x0000ff; + + fprintf(f, "%c%c%c", r, g, b); + } + + fclose(f); + PGEN_DEBUG("saved scene as '%s'\n", dest); + + PGEN_TRACE_END; +} + diff --git a/mobileprint/previewgen/lib/image_scaler.c b/mobileprint/previewgen/lib/image_scaler.c new file mode 100644 index 0000000..9fca6fc --- /dev/null +++ b/mobileprint/previewgen/lib/image_scaler.c @@ -0,0 +1,101 @@ +/* +* Mobileprint +* +* Copyright 2012 Samsung Electronics Co., Ltd + +* Licensed under the Flora License, Version 1.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://floralicense.org/license/ + +* 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. +* +*/ + +#include +#include + +#include "evas_render.h" +#include "paper_size.h" +#include "pgen_debug.h" +#include "preview_util.h" + +#include "image_scaler.h" + +#define DOWNSCALE_LEVEL 2 + +int downscale_image(const char *fname, const char *outfname_ppm, + const struct size_px *available_size) +{ + Evas *canvas; + Evas_Object *img; + int rw, rh; + struct size_pts rsize; + struct size_px pic_size = {400, 400}; + struct size_px size_limits; + + PGEN_TRACE_BEGIN; + PTS_RETV_IF(fname == NULL || outfname_ppm == NULL || available_size == NULL, -1, "Invalid argument"); + + PGEN_DEBUG("available_size(%d,%d)",available_size->x, available_size->y); + + size_limits.x = available_size->x / DOWNSCALE_LEVEL; + size_limits.y = available_size->y / DOWNSCALE_LEVEL; + + if (get_image_resolution(fname, &rw, &rh) < 0) { + PGEN_TRACE_END; + return -1; + } + + PTS_RETV_IF(rw <= 0 || rh <= 0, -1, "Failed to get resolution"); + + rsize.x = rw; + rsize.y = rh; + PGEN_DEBUG("size_limits before: (%d, %d)", + size_limits.x, size_limits.y); + if (rsize.x > rsize.y) { + if (size_limits.x < size_limits.y) { + switch_size_px_coords(&size_limits); + } + } else if (size_limits.x > size_limits.y) { + switch_size_px_coords(&size_limits); + } + PGEN_DEBUG("size_limits after: (%d, %d)", + size_limits.x, size_limits.y); + pts_size2px(&rsize, &size_limits, &pic_size); + + PGEN_DEBUG("new canvas"); + PGEN_DEBUG("canvas init, (%d; %d)", pic_size.x, pic_size.y); + + canvas = create_canvas(&pic_size); + PTS_RETV_IF(canvas == NULL, -1, "canvas is NULL"); + + /*PGEN_DEBUG("new image");*/ + img = evas_object_image_filled_add(canvas); + if (NULL == img) { + destroy_canvas(canvas); + PGEN_TRACE_END; + return -1; + } + /*PGEN_DEBUG("setting image file %s", fname);*/ + evas_object_image_file_set(img, fname, NULL); + + evas_object_resize(img, pic_size.x, pic_size.y); + evas_object_move(img, 0, 0); + evas_object_show(img); + + /*PGEN_DEBUG("canvas draw");*/ + draw_scene(canvas); + /*PGEN_DEBUG("saving canvas in %s", outfname_ppm);*/ + save_scene(canvas, outfname_ppm); + destroy_canvas(canvas); + + PGEN_TRACE_END; + return 0; +} + diff --git a/mobileprint/previewgen/lib/page_preview.c b/mobileprint/previewgen/lib/page_preview.c new file mode 100644 index 0000000..f98f2d2 --- /dev/null +++ b/mobileprint/previewgen/lib/page_preview.c @@ -0,0 +1,537 @@ +/* +* Mobileprint +* +* Copyright 2012 Samsung Electronics Co., Ltd + +* Licensed under the Flora License, Version 1.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://floralicense.org/license/ + +* 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. +* +*/ + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +/*#include */ + +#include "evas_render.h" +#include "image_scaler.h" +#include "paper_size.h" +#include "pgen_debug.h" +#include "preview_util.h" + +#include "page_preview.h" + +const int gl_is_image_downscale = 1; +const int gl_is_half_pdf_raster = 1; + +/** + * @brief Get PDF page content image + * @param[in] canvas canvas of new image object + * @param[in] img_buf + * @param[in] img_size + * @return image object with page content image + */ +Evas_Object *get_pdf_img(Evas *canvas, + void *img_buf, int img_size) +{ + PGEN_TRACE_BEGIN; + PTS_RETV_IF(canvas == NULL || img_buf == NULL || img_size <= 0, NULL, "Invalid argument"); + + Evas_Object *img = NULL; + img = evas_object_image_filled_add(canvas); + evas_object_image_memfile_set(img, img_buf, img_size,"ppm", NULL); + PTS_IF_FREE_MEM(img_buf); /* copy saved in image */ + + PGEN_TRACE_END; + return img; +} + +/** + * @brief Grayscales provided RGBA pixel + * @param[in] rgba_val pixel to grayscale + * @result grayscaled pixel + */ +inline int grayscale_rgba(int rgba_val) +{ + /* just sumple formula for sRGB conversion, maybe gamma-correction + or color profile using is required */ + unsigned char *bytes = (unsigned char *)&rgba_val; + double res = 0.21 * bytes[0] + 0.72 * bytes[1] + 0.07 * bytes[2]; + int i; + + for (i = 0; i < 3; ++i) { + bytes[i] = (unsigned char)res; + } + + return rgba_val; +} + +/** + * @brief Grayscales image + * @param[in] img image to grayscale + */ +void grayscale_img(Evas_Object *img) +{ + int h; + int w; + int i; + int *data; + + PGEN_TRACE_BEGIN; + PTS_RET_IF(img == NULL, "Invalid argument"); + + evas_object_image_size_get(img, &w, &h); + PTS_RET_IF(w == 0 || h == 0 , "can't get (w, h)"); + PGEN_DEBUG("grayscale_img(): size: (%d, %d)", w, h); + + data = evas_object_image_data_get(img, EINA_TRUE); + PTS_RET_IF(data == NULL, "can't get data"); + + for (i = 0; i < w * h; ++i) { + data[i] = grayscale_rgba(data[i]); + } + evas_object_image_data_set(img, data); + + PGEN_TRACE_END; +} + +int set_canvas_background(Evas *canvas, const struct size_px *full_size) +{ + Evas_Object *bg; + + PTS_RETV_IF(canvas == NULL || full_size == NULL, -1, "Invalid argument"); + + /* background */ + bg = evas_object_rectangle_add(canvas); + //evas_object_color_set(bg, 242, 238, 233, 255); + evas_object_color_set(bg, 255,255, 255, 255); + evas_object_move(bg, 0, 0); + evas_object_resize(bg, full_size->x, full_size->y); + evas_object_show(bg); + + return 0; +} + +/** + * + * + */ +int set_preview_page(Evas *canvas, + const struct size_px *b_s, const struct size_px *p_s, + const struct size_px *border_size, + const struct size_px *off) +{ + PGEN_TRACE_BEGIN; + PTS_RETV_IF(canvas == NULL || b_s == NULL || p_s == NULL || off == NULL, -1 , "Invalid argument"); + + Evas_Object *bg; + int shadow_offset_x; + int shadow_offset_y; + + shadow_offset_x = (b_s->x - p_s->x); + shadow_offset_y = (b_s->y - p_s->y); + + /* background */ + bg = evas_object_rectangle_add(canvas); + //evas_object_color_set(bg, 242, 238, 233, 255); + evas_object_color_set(bg, 255, 255, 255, 255); + evas_object_move(bg, off->x, off->y); + evas_object_resize(bg, b_s->x, b_s->y); + evas_object_show(bg); + + bg = evas_object_rectangle_add(canvas); + evas_object_color_set(bg, 100, 100, 100, 255); /* shadow color */ + evas_object_move(bg, shadow_offset_x + off->x - border_size->x * 2, + shadow_offset_y + off->y - border_size->y * 2); + evas_object_resize(bg, p_s->x + border_size->x, + p_s->y + border_size->y); + evas_object_show(bg); + + bg = evas_object_rectangle_add(canvas); + evas_object_color_set(bg, 0, 0, 0, 255); /* border color */ + evas_object_move(bg, off->x, off->y); + evas_object_resize(bg, p_s->x + border_size->x * 2, + p_s->y + border_size->y * 2); + evas_object_show(bg); + + bg = evas_object_rectangle_add(canvas); + evas_object_color_set(bg, 255, 255, 255, 255); /* page color */ + evas_object_move(bg, border_size->x + off->x, border_size->y + off->y); + evas_object_resize(bg, p_s->x, p_s->y); + evas_object_show(bg); + + PGEN_TRACE_END; + return 0; +} + +int load_pdf_page_img(const char *fname, int page, + const struct preview_page_px *settings_px, + void **out_img, int *size) +{ + struct pdf_preview_settings pdf_settings; + PTS_RETV_IF(fname == NULL || page <= 0 || settings_px == NULL || out_img == NULL || size == NULL + , -1 , "Invalid argument"); + + /* put page image */ + pdf_settings.w = settings_px->area_size.x; + pdf_settings.h = settings_px->area_size.y; + if (gl_is_half_pdf_raster) { + /* half-rasterization hack is used to increase speed */ + pdf_settings.w = pdf_settings.w / 2; + pdf_settings.h = pdf_settings.h / 2; + } + pdf_settings.page = page; + + return get_pdf_preview(fname, &pdf_settings, out_img, size); +} + +/** + * + * + * + */ +int set_pdf_preview_page_image(Evas *canvas, + void *img_buf, int img_size, + const struct size_px *off, + const struct preview_page_px *settings_px) +{ + PTS_RETV_IF(canvas == NULL || img_buf == NULL || img_size <=0 || off == NULL || settings_px == NULL + , -1 , "Invalid argument"); + + Evas_Object *img; + struct size_px border_size = {1, 1}; + + if (set_preview_page(canvas, &(settings_px->full_size), + &(settings_px->paper_size), &border_size, off) < 0) { + PGEN_DEBUG("ERROR in set_preview_page()"); + return -1; + } + + img = get_pdf_img(canvas, img_buf, img_size); + PTS_RETV_IF(img == NULL, -1 , "img is NULL"); + + if (settings_px->is_rotate90 + && rotate90_image(img) < 0) { + PGEN_DEBUG("ERROR in rotate90_image()"); + return -1; + } + evas_object_resize(img, settings_px->area_size.x, + settings_px->area_size.y); + if (settings_px->is_grayscale) { + PGEN_DEBUG("Grayscaling image"); + grayscale_img(img); + } + + evas_object_move(img, settings_px->area_offset.x + off->x, + settings_px->area_offset.y + off->y); + evas_object_show(img); + + return 0; +} + +/** + * + * + * + */ +int set_pdf_preview_page_image_w_np(Evas *canvas, + void *img_buf, int img_size, + int page_num, int pages_count, + const struct preview_settings_px *settings_px) +{ + struct size_px border_size = {1, 1}; + struct size_px center_off = {0, 0}; + struct size_px left_off = {0, 0}; + struct size_px right_off = {0, 0}; + + PGEN_TRACE_BEGIN; + PTS_RETV_IF(canvas == NULL || img_buf == NULL || img_size <=0 || page_num <=0 + || pages_count <=0 || settings_px == NULL, -1, "Invalid argument"); + + center_off.x = settings_px->center_off; + left_off.x = settings_px->left_off; + right_off.x = settings_px->right_off; + + if (set_pdf_preview_page_image(canvas, img_buf, img_size, + ¢er_off, &(settings_px->page_px)) < 0) { + PGEN_DEBUG("ERROR in set_pdf_preview_page_image()"); + PGEN_TRACE_END; + return -1; + } + + /* put side (previous and next) pages images */ + /* TODO: check for pages availability */ + if (pages_count > 1) { + if (page_num > 1 && + set_preview_page(canvas, + &(settings_px->page_px.full_size), + &(settings_px->page_px.paper_size), + &border_size, &left_off) < 0) { + PGEN_DEBUG("ERROR in set_preview_page()"); + PGEN_TRACE_END; + return -1; + } + + if (page_num < pages_count && + set_preview_page(canvas, + &(settings_px->page_px.full_size), + &(settings_px->page_px.paper_size), + &border_size, &right_off) < 0) { + PGEN_DEBUG("ERROR in set_preview_page()"); + PGEN_TRACE_END; + return -1; + } + } + + PGEN_TRACE_END; + + return 0; +} + +/** + * @brief Writes preview page images to file + * @param[in] pdf_fname input PDF file name + * @param[in] page_num page number + * @param[in] settings_pts preview generation settings + * @param[in] out_pic_fname output image file name (PPM) + * @return -1 error + * 0 OK + */ +int save_pdf_preview_page_image(const char *pdf_fname, int page_num, + const struct preview_page_req *settings_pts, + const char *out_pic_fname) +{ + Evas *canvas; + struct preview_page_px settings_px; + struct size_px off = {0, 0}; + void *img_buf; + int img_size; + + PGEN_TRACE_BEGIN; + + if (get_preview_page_settings(settings_pts, &settings_px) < 0) { + PGEN_DEBUG("ERROR: get_pdf_preview_page_image():" + " get_preview_page_settings()"); + PGEN_TRACE_END; + return -1; + } + + canvas = create_canvas(&(settings_px.full_size)); + PTS_RETV_IF(canvas == NULL, -1, "canvas is NULL"); + + if (load_pdf_page_img(pdf_fname, page_num, &settings_px, + &img_buf, &img_size) < 0) { + PGEN_TRACE_END; + return -1; + } + + if (set_pdf_preview_page_image(canvas, img_buf, img_size, + &off, &settings_px) < 0) { + PGEN_DEBUG("ERROR in set_pdf_preview_page_image()"); + destroy_canvas(canvas); + PGEN_TRACE_END; + return -1; + } + + draw_scene(canvas); + save_scene(canvas, out_pic_fname); + destroy_canvas(canvas); + + PGEN_TRACE_END; + + return 0; +} + + +int save_pdf_preview_page_image_w_np( + void *img_buf, int img_size, + int page_num, int pages_count, + const struct preview_settings_px *settings_px, + const char *out_pic_fname) +{ + PGEN_TRACE_BEGIN; + Evas *canvas; + canvas = create_canvas(&(settings_px->full_size)); + PTS_RETV_IF(canvas == NULL, -1, "canvas is NULL"); + + /* till we save page images in PPM this is required */ + if (set_canvas_background(canvas, &(settings_px->full_size)) < 0) { + PGEN_DEBUG("ERROR in set_canvas_background()"); + destroy_canvas(canvas); + PGEN_TRACE_END; + return -1; + } + + if (set_pdf_preview_page_image_w_np(canvas, img_buf, img_size, + page_num, pages_count, settings_px) < 0) { + PGEN_DEBUG("ERROR in set_pdf_preview_page_image_w_np()"); + destroy_canvas(canvas); + PGEN_TRACE_END; + return -1; + } + + draw_scene(canvas); + save_scene(canvas, out_pic_fname); + destroy_canvas(canvas); + + + PGEN_TRACE_END; + + return 0; +} + +/* fix pdftopdf page rotation problem by manual scaling option */ +int fix_pdf_page_scale(const char *fname, + const struct size_pts *req_size, + struct pdfgen_settings *settings) +{ + PGEN_TRACE_BEGIN; + PTS_RETV_IF(NULL == fname || NULL == req_size || NULL == settings, -1, "Invalid argument"); + + struct size_pts input_pdf_pts = {0.0, }; + + int result = get_pdf_page_size(fname, &input_pdf_pts); + PTS_RETV_IF(result < 0, -1, "can't get pdf page size"); + + /* check rotation */ + if ((PAGE_ORIENTATION_LANDSCAPE == settings->orientation + && input_pdf_pts.x < input_pdf_pts.y) + || (PAGE_ORIENTATION_PORTRAIT == settings->orientation + && input_pdf_pts.x > input_pdf_pts.y)) { + double tmp = input_pdf_pts.x; + input_pdf_pts.x = input_pdf_pts.y; + input_pdf_pts.y = tmp; + + /*when page is rotated we need to fix its size + if source page is small and desired is big, then enlarge + if source is big and desired is small, diminish*/ + int zoomHorizontal = + (int)(100 * req_size->x / input_pdf_pts.x); + int zoomVertical = + (int)(100 * req_size->y / input_pdf_pts.y); + + /* minimal zoom is needed from vertical/horizontal + - for the whole picture fitness */ + settings->scale.zoom = (zoomHorizontal < zoomVertical) + ? zoomHorizontal : zoomVertical; + settings->scale.type = SCALE_RELATIVE; + } + settings->scale.w = 0; + settings->scale.h = 0; + + PGEN_DEBUG("page zoom fix calculated"); + PGEN_DEBUG("input_pdf_size (x,y) = (%lf, %lf)", + input_pdf_pts.x, input_pdf_pts.y); + PGEN_DEBUG("req_size (x,y) = (%lf, %lf)", + req_size->x, req_size->y); + + PGEN_TRACE_END; + return 0; +} + +/** + * @brief Process PDF preview generation with CUPS filters to PDF with + * specific options + * @param[in] fname input PDF file name + * @param[in] printer_ppd_fname PPD file name for current active printer + * @param[in] paper_size paper size with CUPS name + * @param[in] orientation requested printing orientation + * @param[in] n_up number-up + * @param[in] scale scaling of image + * @param[in] is_grayscale image must be grascaled + * @return -1 error + * 0 success + */ +int pdf2pdf_preview_pages(const char *fname, const char *out_pdf_fname, + const char *printer_ppd_fname, + const struct paper_size_pts *paper_size, + enum page_orientation orientation, int n_up, + const struct page_scale *scale, int is_grayscale) +{ + struct pdfgen_settings pg_settings; + + PGEN_TRACE_BEGIN; + PTS_RETV_IF(!fname || !scale, -1, "Invalid argument"); + PGEN_DEBUG("processing file name: %s", fname); + + /* generate result pdf */ + pg_settings.n_up = n_up; + pg_settings.paper_name = paper_size->name; + pg_settings.scale = *scale; + pg_settings.orientation = orientation; + pg_settings.ppd_filename = (char *)printer_ppd_fname; + + int result = fix_pdf_page_scale(fname, &(paper_size->s), &pg_settings); + PTS_RETV_IF(result < 0, -1, "ERROR in fix_pdf_page_scale()"); + + PGEN_DEBUG("pg_settings.paper_name = %s", pg_settings.paper_name); + PGEN_DEBUG("pg_settings.orientation = %d", + (int)pg_settings.orientation); + PGEN_DEBUG("pg_settings.scale.zoom = %d", pg_settings.scale.zoom); + PGEN_DEBUG("pg_settings.scale.type = %d", + (int)pg_settings.scale.type); + + result = call_pdftopdf(fname, out_pdf_fname, &pg_settings); + PTS_RETV_IF(result < 0, -1, "ERROR in call_pdftopdf()"); + + PGEN_TRACE_END; + return 0; +} + +int process_image_downscale(const char *fname, const char *out_fname, + const struct size_px *available_size_px) +{ + struct size_px new_size; + PTS_RETV_IF(fname == NULL || out_fname == NULL || available_size_px == NULL, -1, "Invalid argument"); + new_size.x = available_size_px->x / 2; + new_size.y = available_size_px->y / 2; + downscale_image(fname, out_fname, &new_size); + return 0; +} + +int img2pdf_preview_pages(const char *fname, const char *out_pdf_fname, + const char *printer_ppd_fname, + const struct paper_size_pts *paper_size, + const struct size_px *available_size_px, + enum page_orientation orientation, int n_up, + const struct page_scale *scale, int is_grayscale) +{ + PGEN_TRACE_BEGIN; + PTS_RETV_IF(!fname || !out_pdf_fname || !printer_ppd_fname || + !paper_size || !available_size_px || !scale, + -1, "Invalid argument"); + + struct pdfgen_settings pg_settings; + + /* generate result pdf */ + + /* TODO: use pdfunite for multiple files, currently only first file */ + pg_settings.n_up = n_up; + pg_settings.paper_name = paper_size->name; + pg_settings.scale = *scale; + pg_settings.orientation = orientation; + pg_settings.ppd_filename = (char *)printer_ppd_fname; + + int result = call_imagetopdf(fname, out_pdf_fname, &pg_settings); + PTS_RETV_IF(result < 0, -1, "ERROR in call_imagetopdf()"); + + PGEN_TRACE_END; + return 0; +} + diff --git a/mobileprint/previewgen/lib/page_preview_thread.c b/mobileprint/previewgen/lib/page_preview_thread.c new file mode 100644 index 0000000..74ec445 --- /dev/null +++ b/mobileprint/previewgen/lib/page_preview_thread.c @@ -0,0 +1,41 @@ +/* +* Mobileprint +* +* Copyright 2012 Samsung Electronics Co., Ltd + +* Licensed under the Flora License, Version 1.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://floralicense.org/license/ + +* 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. +* +*/ + +#include "page_preview.h" +#include "page_preview_thread.h" + +void *save_pdf_preview_page_image_w_np_thread(void *d) +{ + struct pdf_preview_page_image_data *data = + (struct pdf_preview_page_image_data *)d; + data->res = save_pdf_preview_page_image_w_np( + data->img_buf, data->img_size, + data->page_num, data->pages_count, + data->settings_px, data->out_pic_fname); + return NULL; +} + +void *process_image_downscale_thread(void *d) +{ + struct process_image_downscale_data *data = + (struct process_image_downscale_data *)d; + data->res = process_image_downscale(data->fname, data->out_fname, + data->available_size_px); + return NULL; +} diff --git a/mobileprint/previewgen/lib/paper_size.c b/mobileprint/previewgen/lib/paper_size.c new file mode 100644 index 0000000..3a81490 --- /dev/null +++ b/mobileprint/previewgen/lib/paper_size.c @@ -0,0 +1,142 @@ +/* +* Mobileprint +* +* Copyright 2012 Samsung Electronics Co., Ltd + +* Licensed under the Flora License, Version 1.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://floralicense.org/license/ + +* 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. +* +*/ + +#include +#include + +#include "pgen_debug.h" + +#include "paper_size.h" + + +/* could be used as stub for paper size */ +struct paper_size_pts paper_sizes[] = { + {"L", {890,1270}}, + {"2L", {1270,1780}}, + {"Hagaki_Postcard", {1000,1480}}, + {"Business_card", {540,856}}, + {"4x6", {1016,1524}}, + {"8x10", {2032,2540}}, + {"Letter", { 612, 792 }}, + {"11x17", {2794,4318}}, + {"A4", { 595, 842 }}, + {"A5", { 420, 595 }}, + {"B5", { 516, 729 }}, + {NULL, { 0, 0 }} +}; + + +void switch_size_pts_coords(struct size_pts *s) +{ + PTS_RET_IF(s == NULL, "Invalid argument"); + double val; + val = s->x; + s->x = s->y; + s->y = val; +} + +void switch_size_px_coords(struct size_px *s) +{ + PTS_RET_IF(s == NULL, "Invalid argument"); + int val; + val = s->x; + s->x = s->y; + s->y = val; +} + +void add_size_pts(const struct size_pts *from, struct size_pts *to) +{ + PTS_RET_IF(from == NULL || to == NULL, "Invalid argument"); + to->x += from->x; + to->y += from->y; +} + + +void neg_size_pts(struct size_pts *s) +{ + PTS_RET_IF(s == NULL, "Invalid argument"); + s->x = -s->x; + s->y = -s->y; +} + + +/** + * @brief Works with fixed list of sizes! + * In mobileprint only for usage as stub. + * @param[in] name paper name + * @param[out] s paper size + */ +int get_paper_size_pts(const char *name, struct paper_size_pts *s) +{ + int i; + struct paper_size_pts *cur_s; + + PTS_RETV_IF(name == NULL || s == NULL, -1, "Invalid argument"); + + for (i = 0; paper_sizes[i].name != NULL; ++i) { + cur_s = &(paper_sizes[i]); + /* call without of limit is safe till we have static page + sizes */ + if (strcmp(cur_s->name, name) == 0) { + //memcpy(s, cur_s, sizeof(*cur_s)); + *s = *cur_s; + return 0; + } + } + + return 1; +} + + +/** + * @brief get raster size for specifyed borders + * @param[in] s_pts size in points + * @param[in] border_s_px specified borders of available size + * @param[out] px raster size + */ +int pts_size2px(const struct size_pts *s_pts, + const struct size_px *border_s_px, + struct size_px *px) +{ + PGEN_TRACE_BEGIN; + + double ratio_x; + double ratio_y; + + PTS_RETV_IF(s_pts == NULL || border_s_px == NULL || px == NULL, -1 , "Invalid argument"); + + ratio_x = border_s_px->x / s_pts->x; + ratio_y = border_s_px->y / s_pts->y; + + /* get smallest one */ + if (ratio_x > ratio_y) { + ratio_x = ratio_y; + } else { + ratio_y = ratio_x; + } + + /* result */ + px->x = ratio_x * s_pts->x; + px->y = ratio_y * s_pts->y; + + PTS_DEBUG("px->x px->y :(%d, %d)",px->x, px->y); + PGEN_TRACE_END; + return 0; +} + diff --git a/mobileprint/previewgen/lib/pdfgen.c b/mobileprint/previewgen/lib/pdfgen.c new file mode 100644 index 0000000..de50fc4 --- /dev/null +++ b/mobileprint/previewgen/lib/pdfgen.c @@ -0,0 +1,146 @@ +/* +* Mobileprint +* +* Copyright 2012 Samsung Electronics Co., Ltd + +* Licensed under the Flora License, Version 1.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://floralicense.org/license/ + +* 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. +* +*/ + +#include +#include + +#include "pgen_debug.h" +#include "previewgen.h" +#include "preview_util.h" + +#include "pdfgen.h" + + +#define CUPS_OPTION_PORTRAIT "orientation-requested=3" +#define CUPS_OPTION_LANDSCAPE "orientation-requested=4" + +#define CUPS_FILTER_DIR "/usr/lib/cups/filter" + +#define PPI_MAX_VAL 10000 +#define PPI_STR_MAX_LEN sizeof("10000") + +/** + * @brief This function securely executes cmd line request with popen + * @param[in] cmd_str command line to execute + * @return 0 success + * -1 error + */ +int call_cmd(const char *cmd_str) +{ + PGEN_TRACE_BEGIN; + + //NOTICE : Use popen or fork/execv function instead of system() which has security hole. + + FILE *cmd_output = popen(cmd_str, "r"); + if (cmd_output == NULL) { + PGEN_DEBUG("popen error (%s)", cmd_str); + PGEN_TRACE_END; + return -1; + } + + char *str_buf = NULL; + size_t len = 0; + ssize_t read_len = 0; + + do { + read_len = getline(&str_buf, &len, cmd_output); + } while (read_len != -1); + + PTS_IF_FREE_MEM(str_buf); + pclose(cmd_output); + + PGEN_TRACE_END; + return 0; +} + +/** + * @brief This function forms and executes cmd line request to CUPS + * pdftopdf filter to convert PDF file + * @param[in] path path to destination PDF file + * @param[in] outfile destination file name + * @param[in] settings several settings of generating PDF + * @return 0 success + * -1 error + */ +int call_pdftopdf(const char *infile, const char *outfile, + const struct pdfgen_settings *settings) +{ + PGEN_TRACE_BEGIN; + + PTS_RETV_IF(infile == NULL || outfile == NULL || settings == NULL || settings->ppd_filename == NULL, + -1, "Invalid argument"); + + int err_code = 0; + char cmd_str[1024]; + + /* placing n_up number of pages on the specified media */ + snprintf(cmd_str, 1024, "PPD=%s " CUPS_FILTER_DIR "/pdftopdf job user title 1 \"%s number-up=%d PageSize=%s fit-to-page=True\" \"%s\"" + " >%s 2> /tmp/errlog", + settings->ppd_filename, + PAGE_ORIENTATION_PORTRAIT == settings->orientation ? CUPS_OPTION_PORTRAIT : + PAGE_ORIENTATION_LANDSCAPE == settings->orientation ? CUPS_OPTION_LANDSCAPE : "", + settings->n_up, + settings->paper_name, infile, outfile); + + PGEN_DEBUG("call_pdftopdf(): %s", cmd_str); + err_code = call_cmd(cmd_str); + PTS_RETV_IF(err_code, -1, "call_pdftopdf returned non-zero error code"); + + PGEN_TRACE_END; + return err_code; +} + +/** + * @brief This function forms and executes cmd line request to CUPS + * imagetopdf filter to convert image to PDF file + * @param[in] path path to destination PDF file + * @param[in] outfile destination file name + * @param[in] settings several settings of generating PDF + * @return 0 success + * -1 error + */ +int call_imagetopdf(const char *infile, const char *outfile, + const struct pdfgen_settings *settings) +{ + PGEN_TRACE_BEGIN; + PTS_RETV_IF(infile== NULL || outfile == NULL || settings == NULL || settings->ppd_filename == NULL, + -1 , "Invalid argument"); + + int err_code = 0; + char cmd_str[1024]; + + /* placing n_up number of pages on the specified media */ + snprintf(cmd_str, 1024, "PPD=%s " CUPS_FILTER_DIR "/imagetopdf job user title 1 \"%s number-up=%d PageSize=%s fit-to-page=%s \" \"%s\"" + " >%s 2> /tmp/errlog", + settings->ppd_filename, + PAGE_ORIENTATION_PORTRAIT == settings->orientation ? CUPS_OPTION_PORTRAIT " " : + PAGE_ORIENTATION_LANDSCAPE == settings->orientation ? CUPS_OPTION_LANDSCAPE " " : "", + settings->n_up, + settings->paper_name, + SCALE_FIT_TO_PAPER == settings->scale.type ? "True" : "False", + infile, outfile); + + PGEN_DEBUG("call_imagetopdf(): %s", cmd_str); + err_code = call_cmd(cmd_str); + PTS_RETV_IF(err_code, -1, "call_pdftopdf returned non-zero error code"); + + PGEN_TRACE_END; + return 0; +} + diff --git a/mobileprint/previewgen/lib/preview_coords.c b/mobileprint/previewgen/lib/preview_coords.c new file mode 100644 index 0000000..bf1589b --- /dev/null +++ b/mobileprint/previewgen/lib/preview_coords.c @@ -0,0 +1,173 @@ +/* +* Mobileprint +* +* Copyright 2012 Samsung Electronics Co., Ltd + +* Licensed under the Flora License, Version 1.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://floralicense.org/license/ + +* 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. +* +*/ + +#include + +#include "paper_size.h" +#include "pgen_debug.h" + +#include "preview_coords.h" + + +void debug_print_preview_page_req(const struct preview_page_req *r) +{ + PGEN_DEBUG("+-----------------------------+"); + PGEN_DEBUG("| struct preview_page_req |"); + PGEN_DEBUG("+---------------------+-------+"); + PGEN_DEBUG("| paper_size.x | %5f |", r->paper_size.x); + PGEN_DEBUG("| paper_size.y | %5f |", r->paper_size.y); + PGEN_DEBUG("| available_size_px.x | %5d |", r->available_size_px.x); + PGEN_DEBUG("| available_size_px.y | %5d |", r->available_size_px.y); + PGEN_DEBUG("| shadow_offset.x | %5d |", r->shadow_offset.x); + PGEN_DEBUG("| shadow_offset.y | %5d |", r->shadow_offset.y); + PGEN_DEBUG("| is_rotate90 | %5d |", r->is_rotate90); + PGEN_DEBUG("+---------------------+-------+"); +} + + +void debug_print_preview_page_px(const struct preview_page_px *s) +{ + PGEN_DEBUG("+------------------------+"); + PGEN_DEBUG("| struct preview_page_px |"); + PGEN_DEBUG("+---------------+--------+"); + PGEN_DEBUG("| full_size.x | %6d |", s->full_size.x); + PGEN_DEBUG("| full_size.y | %6d |", s->full_size.y); + PGEN_DEBUG("| paper_size.x | %6d |", s->paper_size.x); + PGEN_DEBUG("| paper_size.y | %6d |", s->paper_size.y); + PGEN_DEBUG("| area_size.x | %6d |", s->area_size.x); + PGEN_DEBUG("| area_size.y | %6d |", s->area_size.y); + PGEN_DEBUG("| area_offset.x | %6d |", s->area_offset.x); + PGEN_DEBUG("| area_offset.y | %6d |", s->area_offset.y); + PGEN_DEBUG("| is_grayscale | %6d |", s->is_grayscale); + PGEN_DEBUG("| is_rotate90 | %6d |", s->is_rotate90); + PGEN_DEBUG("+---------------+--------+"); +} + + +void debug_print_preview_settings_px(const struct preview_settings_px *s) +{ + PGEN_DEBUG("+----------------------------+"); + PGEN_DEBUG("| struct preview_settings_px |"); + PGEN_DEBUG("+-------------+--------------+"); + PGEN_DEBUG("| center_off | %9d |", s->center_off); + PGEN_DEBUG("| left_off | %9d |", s->left_off); + PGEN_DEBUG("| right_off | %9d |", s->right_off); + PGEN_DEBUG("| full_size.x | %9d |", s->full_size.x); + PGEN_DEBUG("| full_size.y | %9d |", s->full_size.y); + PGEN_DEBUG("+-------------+--------------+"); +} + + +int process_preview_page_settings(const struct preview_page_req *req, + struct preview_page_px *res) +{ + PTS_RETV_IF(req == NULL || res == NULL, -1, "Invalid argument"); + + /*debug_print_preview_page_req(req);*/ + + if (pts_size2px(&(req->paper_size), &(req->available_size_px), + &(res->full_size)) < 0) { + PGEN_DEBUG("ERROR: pts_size2px()\n"); + return -1; + } + + res->paper_size.x = res->full_size.x - req->shadow_offset.x; + res->paper_size.y = res->full_size.y - req->shadow_offset.y; + + res->area_offset.x = 2; + res->area_offset.y = 2; + + res->area_size.x = res->paper_size.x - res->area_offset.x * 2; + res->area_size.y = res->paper_size.y - res->area_offset.y * 2; + + res->is_grayscale = req->is_grayscale; + res->is_rotate90 = req->is_rotate90; + + /*debug_print_preview_page_px(res);*/ + + return 0; +} + +/* for backward compatibility */ +int get_preview_page_settings(const struct preview_page_req *req, + struct preview_page_px *res) +{ + struct preview_page_req newreq; + + PTS_RETV_IF(req == NULL || res == NULL, -1, "Invalid argument"); + + newreq = *req; + + if (req->is_rotate90) { + switch_size_pts_coords(&(newreq.paper_size)); + } + + return process_preview_page_settings(&newreq, res); +} + + +int get_preview_settings(const struct preview_page_req *req, + struct preview_settings_px *res) +{ + struct size_pts canvas_size; + double side_w_pts; + double space_w_pts; + struct preview_page_req newreq; + + PTS_RETV_IF(req == NULL || res == NULL, -1, "Invalid argument"); + + /*debug_print_preview_page_req(req);*/ + + newreq = *req; + + if (req->is_rotate90) { + switch_size_pts_coords(&(newreq.paper_size)); + } + + /* calculate space for page images */ + /* we will use smaller side of page */ + side_w_pts = req->paper_size.x * PAGE_SIDE_SHOW_COEFF; + space_w_pts = req->paper_size.x * MIN_PAGE_SPACE_COEFF; + canvas_size.y = newreq.paper_size.y; + canvas_size.x = newreq.paper_size.x + side_w_pts * 2 + space_w_pts * 2; + + if (pts_size2px(&canvas_size, &(req->available_size_px), + &(newreq.available_size_px)) < 0) { + PGEN_DEBUG("ERROR: full_size: pts_size2px()\n"); + return -1; + } + + /* calculate single-page size */ + //newreq.available_size_px = res->full_size; + process_preview_page_settings(&newreq, &(res->page_px)); + + res->full_size.x = req->available_size_px.x; + res->full_size.y = newreq.available_size_px.y; + + /* calculate offsets */ + res->center_off = res->full_size.x / 2 - res->page_px.full_size.x / 2; + res->left_off = res->page_px.full_size.x * (PAGE_SIDE_SHOW_COEFF - 1); + res->right_off = res->full_size.x + - res->page_px.full_size.x * PAGE_SIDE_SHOW_COEFF; + + /*debug_print_preview_settings_px(res);*/ + + return 0; +} + diff --git a/mobileprint/previewgen/lib/preview_util.c b/mobileprint/previewgen/lib/preview_util.c new file mode 100644 index 0000000..5500689 --- /dev/null +++ b/mobileprint/previewgen/lib/preview_util.c @@ -0,0 +1,131 @@ +/* +* Mobileprint +* +* Copyright 2012 Samsung Electronics Co., Ltd + +* Licensed under the Flora License, Version 1.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://floralicense.org/license/ + +* 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. +* +*/ + +#include + +#include +#include +//#include + +#include "pgen_debug.h" + +#include "preview_util.h" + + +int get_image_resolution(const char *path, int *resx, int *resy) +{ + PGEN_TRACE_BEGIN; + int width = 0; + int height = 0; + + Evas *canvas; + Ecore_Evas *ee; + + Evas_Object *img; + + PTS_RETV_IF(path == NULL || resx == NULL || resy == NULL, -1 , "Invalid argument"); + + ee = ecore_evas_buffer_new(1, 1); + PTS_RETV_IF(ee == NULL, -1 , "ee is NULL"); + + canvas = ecore_evas_get(ee); + img = evas_object_image_add(canvas); + + evas_object_image_file_set(img, NULL, NULL); + evas_object_image_load_orientation_set(img, EINA_TRUE); + evas_object_image_load_scale_down_set(img, 0); + + evas_object_image_file_set(img, path, NULL); + Evas_Load_Error error = evas_object_image_load_error_get(img); + if (error != EVAS_LOAD_ERROR_NONE) { + PGEN_DEBUG("Decoding Error(%d) : %s", error, path); + evas_object_del(img); + ecore_evas_free(ee); + return -1; + } + + evas_object_image_size_get(img, &width, &height); + + evas_object_image_file_set(img, NULL, NULL); + evas_object_del(img); + + ecore_evas_free(ee); + + *resx = width; + *resy = height; + + PGEN_DEBUG("width & height is [%d, %d]", width, height); + + PGEN_TRACE_END; + return 0; +} + + +/** + * @brief Rotate image on 90 degrees + * @param[in] img image to rotate + */ +int rotate90_image(Evas_Object *img) +{ + int *old_data; + int *new_data; + int *outp; /* current writing pointer */ + int w; + int h; + int data_size; + int off; /* offset from output beginning */ + + int ix; + int iy; + + PGEN_TRACE_BEGIN; + PTS_RETV_IF(img == NULL, -1, "Invalid argument"); + + /* allocate temporary memory */ + evas_object_image_size_get(img, &w, &h); + PTS_RETV_IF(w == 0 || h == 0 , -1, "Failed to allocate memory"); + PGEN_DEBUG("w = %d h = %d", w, h); + + data_size = w * h; + old_data = evas_object_image_data_get(img, EINA_FALSE); + PTS_RETV_IF(old_data == NULL, -1 , "Failed to get image data"); + + new_data = malloc(sizeof(int) * (data_size + 1)); + PTS_RETV_IF(new_data == NULL, -1 , "Failed to malloc"); + + /* write rotated image data */ + for (iy = 0; iy < h; ++iy) + for (ix = 0; ix < w; ++ix) { + off = h * (ix + 1) - 1 - iy; + if (off < 0 || off >= data_size) { + PGEN_DEBUG("ERROR: off = %d, lim: %d", off, data_size); + } + outp = new_data + off; + *outp = old_data[ix + w * iy]; + } + + /* store rotated image */ + evas_object_image_size_set(img, h, w); + evas_object_image_data_copy_set(img, new_data); + PTS_IF_FREE_MEM(new_data); + + PGEN_TRACE_END; + return 0; +} + diff --git a/mobileprint/previewgen/lib/previewgen.c b/mobileprint/previewgen/lib/previewgen.c new file mode 100644 index 0000000..9c5592d --- /dev/null +++ b/mobileprint/previewgen/lib/previewgen.c @@ -0,0 +1,449 @@ +/* +* Mobileprint +* +* Copyright 2012 Samsung Electronics Co., Ltd + +* Licensed under the Flora License, Version 1.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://floralicense.org/license/ + +* 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. +* +*/ + +#include //basename and dirname +#include +#include +#include +#include +#include +#include +#include + +#include "pgen_debug.h" +#include "previewgen.h" + +#define PDF_CONV_UTIL "/usr/bin/pdftoppm" +#define PDF_INFO_UTIL "/usr/bin/pdfinfo" +#define MAX_PATH_LEN 4096 +#define IMG_MAX_SIZE (1024 * 1024 * 2) /* 2MB */ +#define PDF_INFO_STR_MAX_SIZE 511 + +#define PDF_INFO_TEMP_FNAME "/tmp/pdfinfo.txt" + +#define PDF_PX_MAX_VAL 999999 +#define PDF_PX_VAL_MAX_STR_LEN (sizeof("999999") - 1) + +#define PDF_PAGE_MAX_VAL 999999 +#define PDF_PAGE_MAX_STR_LEN (sizeof("999999") - 1) + +/* Just simple stub for further development + TODO: use pipe output, current implementation have high security risk +*/ +int call_pdftoppm(const char *path, const struct pdf_preview_settings *settings) +{ + char conv_cmd[] = PDF_CONV_UTIL " "; //" -f 1 -l 1 "; + char output_cmd[] = " > " IMG_TEMP_FILE_NAME; + char *cmd_str; + char x_val_str[PDF_PX_VAL_MAX_STR_LEN + 1]; + char y_val_str[PDF_PX_VAL_MAX_STR_LEN + 1]; + char page_str[PDF_PAGE_MAX_VAL + 1]; + int path_len; + int cmd_len; + + PTS_RETV_IF(path == NULL || settings == NULL, -1, "Invalid argument"); + path_len = strnlen(path, MAX_PATH_LEN); + PTS_RETV_IF(path_len <= 0 || path_len >= MAX_PATH_LEN, -1, "path_len is out of scope"); + + /* check for correct picture size */ + if (settings->w >= PDF_PX_MAX_VAL + || settings->w <= 0 + || settings->h >= PDF_PX_MAX_VAL + || settings->h <= 0 + || settings->page < 0 + || settings->page >= PDF_PAGE_MAX_VAL) { + PGEN_DEBUG("call_pdftoppm(): ERROR in settings;" + " w = %d, h = %d, page = %d", + settings->w, settings->h, settings->page); + return -1; + } + + x_val_str[0] = '\0'; + sprintf(x_val_str, "%d", settings->w); + y_val_str[0] = '\0'; + sprintf(y_val_str, "%d", settings->h); + page_str[0] = '\0'; + sprintf(page_str, "%d", settings->page); + + + cmd_len = (sizeof(conv_cmd) - 1) + + strlen("-f ") + strlen(page_str) + 1 + + strlen("-l ") + strlen(page_str) + 1 + + strlen("-scale-to-x ") + strlen(x_val_str) + 1 + + strlen("-scale-to-y ") + strlen(y_val_str) + 1 + + path_len + sizeof(output_cmd); + cmd_str = malloc(sizeof(char) * (cmd_len + 1)); + + PTS_RETV_IF(cmd_str == NULL, -1, "cmd_str malloc failed"); + memset(cmd_str, 0, sizeof(char) * (cmd_len + 1)); + cmd_str[0] = '\0'; + + strcat(cmd_str, conv_cmd); + strcat(cmd_str, "-f "); + strcat(cmd_str, page_str); + strcat(cmd_str, " "); + strcat(cmd_str, "-l "); + strcat(cmd_str, page_str); + strcat(cmd_str, " "); + strcat(cmd_str, "-scale-to-x "); + strcat(cmd_str, x_val_str); + strcat(cmd_str, " "); + strcat(cmd_str, "-scale-to-y "); + strcat(cmd_str, y_val_str); + strcat(cmd_str, " "); + strcat(cmd_str, path); + strcat(cmd_str, output_cmd); + + cmd_str[cmd_len] = '\0'; + + PGEN_DEBUG("call_pdftoppm(): cmd_str = %s", cmd_str); + + if (system(cmd_str) < 0) { + PGEN_DEBUG("Failed to call system"); + } + + PTS_IF_FREE_MEM(cmd_str); + + return 0; +} + + +int call_pdfinfo(const char *path, const char *field) +{ + char *cmd_str; + int path_len; + int cmd_len; + + PTS_RETV_IF(path == NULL || field == NULL, -1, "Invalid argument"); + path_len = strnlen(path, MAX_PATH_LEN); + PTS_RETV_IF(path_len <= 0 || path_len >= MAX_PATH_LEN, -1, "path_len is out of scope"); + + cmd_len = sizeof(PDF_INFO_UTIL) + sizeof(" '") + path_len + + sizeof("' | grep '") + strlen(field) + + strlen("' > " PDF_INFO_TEMP_FNAME); // strlen(output_cmd); + cmd_str = malloc(sizeof(char) * (cmd_len + 1)); + + PTS_RETV_IF(cmd_str == NULL, -1, "cmd_str malloc failed"); + memset(cmd_str, 0, sizeof(char) * (cmd_len + 1)); + + cmd_str[0] = '\0'; + strcat(cmd_str, PDF_INFO_UTIL); + strcat(cmd_str, " '"); + strcat(cmd_str, path); + strcat(cmd_str, "' | grep '"); + strcat(cmd_str, field); + strcat(cmd_str, "' > " PDF_INFO_TEMP_FNAME); + //strcat(cmd_str, output_cmd); + cmd_str[cmd_len] = '\0'; + + PGEN_DEBUG("call_pdfinfo(): cmd_str = %s", cmd_str); + + if (system(cmd_str) < 0) { + PGEN_DEBUG("Failed to call system"); + } + + PTS_IF_FREE_MEM(cmd_str); + + return 0; +} + + +/** + * @brief + * @param[in] path path to PDF file + */ +int call_pdfinfo_pagesize(const char *path) +{ + /* TODO: page number */ + return call_pdfinfo(path, "Page size:"); +} + + +int call_pdfinfo_pages(const char *path) +{ + return call_pdfinfo(path, "Pages:"); +} + + +int is_page_landscape(struct size_pts *s) +{ + PTS_RETV_IF(s == NULL, -1, "Invalid argument"); + + if (s->x > s->y) { + return 1; + } + + return 0; +} + + +/** + * @brief get PDF file page size in pts + * @param[in] path PDF file path + * @param[out] ow width in pts + * @param[out] oh height in pts + */ +int get_pdf_page_size(const char *path, struct size_pts *s) +{ + int res; + char cmd_str[MAX_PATH_LEN] = {0,}; + + PTS_RETV_IF(path == NULL || s == NULL, -1, "Invalid argument"); + + //NOTICE : Usage : pdfinfo [options] , we use "pdfinfo " to get page size + snprintf(cmd_str, MAX_PATH_LEN, "%s %s", PDF_INFO_UTIL, path); + PGEN_DEBUG("call_pdfinfo(): cmd_str = %s", cmd_str); + + FILE *fp = NULL; + if ((fp=popen(cmd_str, "r"))==NULL) { + PGEN_DEBUG("popen error(%s)",cmd_str); + return -1; + } + + char *str_buf = NULL; + size_t len = 0; + ssize_t read_len = 0; + char temp[MAX_PATH_LEN] = {0,}; + + do { + read_len = getline(&str_buf, &len, fp); + if (strstr(str_buf, "Page size:") != NULL) { + res = sscanf(str_buf, "Page size:\t%lf x %lf%s", &(s->x), &(s->y), temp); + if (res != 3) { + PGEN_DEBUG("ERROR: get_pdf_page_size(): incorrect output\n"); + return -1; + } + break; + } else { + continue; + } + } while (read_len != -1); + PTS_IF_FREE_MEM(str_buf); + + PGEN_DEBUG("Page size : [%f %f]",s->x, s->y); + + int ret = pclose(fp); + if (!WIFEXITED(ret) || (WEXITSTATUS(ret) != 0)) { + PGEN_DEBUG("pclose error!"); + } + + return 0; +} + +/** + * + * + * + */ +int get_pdf_pages_count(const char *path) +{ + PTS_RETV_IF(path == NULL, -1, "Invalid argument"); + + int res = -1; + int val = -1; + int path_len = 0; + char cmd_str[MAX_PATH_LEN] = {0,}; + + path_len = strnlen(path, MAX_PATH_LEN); + PTS_RETV_IF(path_len <= 0 || path_len >= MAX_PATH_LEN, -1, "path_len is out of scope"); + + //NOTICE : Usage : pdfinfo [options] , we use "pdfinfo " to get pages + snprintf(cmd_str, MAX_PATH_LEN, "%s %s", PDF_INFO_UTIL, path); + PGEN_DEBUG("call_pdfinfo(): cmd_str = %s", cmd_str); + + FILE *fp = NULL; + if ((fp=popen(cmd_str, "r"))==NULL) { + PGEN_DEBUG("popen error(%s)",cmd_str); + return -1; + } + + char *str_buf = NULL; + size_t len = 0; + ssize_t read_len = 0; + + do { + read_len = getline(&str_buf, &len, fp); + if (strstr(str_buf, "Pages:") != NULL) { + res = sscanf(str_buf, "Pages:\t%d", &val); + if (res != 1) { + PGEN_DEBUG("ERROR: get_pdf_pages_count(): incorrect output\n"); + return -1; + } + break; + } else { + continue; + } + } while (read_len != -1); + PTS_IF_FREE_MEM(str_buf); + + PGEN_DEBUG("Pages : %d", val); + + int ret = pclose(fp); + if (!WIFEXITED(ret) || (WEXITSTATUS(ret) != 0)) { + PGEN_DEBUG("pclose error!"); + } + return val; +} + +/** + * @brief get PDF preview + * @param[in] path path to PDF to generate preview + * @param[in] settings currently just ignored + * @param[out] out_img pointer to return allocated buffer, user is + * responsible for it's memory deallocation + * (format: PPM) + * @param[out] size image data size + * @retval 0 Success + * @retval <0 Error + */ +int get_pdf_preview(const char *path, + const struct pdf_preview_settings *settings, + void **out_img, int *size) +{ + int img_fd; + unsigned char *imgbuf; + PTS_RETV_IF(size == NULL || settings == NULL || out_img == NULL , -1, "Invalid argument"); + + if (call_pdftoppm(path, settings) < 0) { + PGEN_DEBUG("ERROR: get_pdf_preview(): call_pdftoppm() error"); + return -1; + } + + /* just stub, insecure in case of multiple printing requests */ + img_fd = open(IMG_TEMP_FILE_NAME, O_RDONLY); + PTS_RETV_IF(img_fd == -1, -1, "Failed to open temporary file"); + + /* STUB: currently just with enough big memory area, no check for + higher memory requirements */ + imgbuf = malloc(sizeof(char) * IMG_MAX_SIZE); + if (imgbuf == NULL) { + close(img_fd); + PGEN_DEBUG("malloc failed"); + return -1; + } + memset(imgbuf, 0, sizeof(char) * IMG_MAX_SIZE); + *size = read(img_fd, imgbuf, IMG_MAX_SIZE); + close(img_fd); + + if (*size <= 0) { + PTS_IF_FREE_MEM(imgbuf); + PGEN_DEBUG("ERROR: get_pdf_preview(): read error"); + return -1; + } + + *out_img = imgbuf; + + return 0; +} + +#if 0 +/* Check for file extension + * 0/1 + */ +int is_file_ext(const char *fname, int fname_len, const char *ext) +{ + const char *ptr, *ext_ptr; + int ext_len; + + PTS_RETV_IF(fname == NULL || ext == NULL, 0, "Invalid argument"); + + ext_len = strlen(ext); + if (fname_len < ext_len + 1) { + return 0; + } + + ptr = fname + fname_len - ext_len - 1; + ext_ptr = ptr + 1; + + if (*ptr == '.' && strcasecmp(ext_ptr, ext) == 0) { + return 1; + } + + return 0; +} + +/** + * @brief get file type from its name (extension-based) + * @param[in] fname file name (may be with path) + * @retval file type + */ +enum file_type get_file_type(const char *fname) +{ + int fname_len; + const char *img_file_types[] = IMG_FILE_EXTS; + const char *pdf_ftype = PDF_FILE_EXT; + int i; + + /* check for corectness */ + PTS_RETV_IF(fname == NULL, FILE_TYPE_INCORRECT, "Incorrect file type"); + + fname_len = strnlen(fname, MAX_PATH_LEN); + PTS_RETV_IF(fname_len >= MAX_PATH_LEN, FILE_TYPE_INCORRECT, "Too long file name"); + + /* check for pdf extension */ + if (is_file_ext(fname, fname_len, pdf_ftype)) { + return FILE_TYPE_PDF; + } + + /* check for image extensions */ + for (i = 0; img_file_types[i] != NULL; i++) { + if (is_file_ext(fname, fname_len, img_file_types[i])) { + return FILE_TYPE_IMAGE; + } + } + + return FILE_TYPE_INCORRECT; +} + +#else +/** + * @brief get file type from its name (extension-based) + * @param[in] fname file name (may be with path) + * @retval file type + */ +enum file_type get_file_type(const char *fname) +{ + PTS_RETV_IF(fname == NULL, FILE_TYPE_INCORRECT, "fname is NULL"); + char *fname_copy = strdup(fname); + PTS_RETV_IF(fname_copy == NULL, FILE_TYPE_INCORRECT, "fname_copy is NULL"); + + char *bname = basename(fname_copy); + char *ext = strrchr(bname, '.'); + PTS_RETV_IF(ext == NULL, FILE_TYPE_INCORRECT, "ext is NULL"); + + const char *img_file_types[] = IMG_FILE_EXTS; + const char *pdf_ftype = PDF_FILE_EXT; + int ret = FILE_TYPE_INCORRECT; + int i = 0; + + if (strcasestr(ext, pdf_ftype) != NULL) { + ret = FILE_TYPE_PDF; + } else { + for (i = 0; img_file_types[i] != NULL; i++) { + if (strcasestr(ext, img_file_types[i]) != NULL) { + ret = FILE_TYPE_IMAGE; + break; + } + } + } + + PTS_IF_FREE_MEM(fname_copy); + return ret; +} +#endif diff --git a/mobileprint/previewgen/rasterview.ppd b/mobileprint/previewgen/rasterview.ppd new file mode 100644 index 0000000..60b9454 --- /dev/null +++ b/mobileprint/previewgen/rasterview.ppd @@ -0,0 +1,269 @@ +*PPD-Adobe: "4.3" +*% +*% "$Id$" +*% +*% Test PPD file for the raster viewer. +*% +*% Copyright 2006 by Michael R Sweet +*% +*% This program is free software; you can redistribute it and/or modify +*% it under the terms of the GNU General Public License as published by +*% the Free Software Foundation; either version 2, or (at your option) +*% any later version. +*% +*% This program is distributed in the hope that it will be useful, +*% but WITHOUT ANY WARRANTY; without even the implied warranty of +*% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +*% GNU General Public License for more details. +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "RASTVIEW.PPD" +*Manufacturer: "ESP" +*Product: "(ESP Ghostscript)" +*cupsVersion: 1.2 +*cupsManualCopies: True +*cupsFlipDuplex: True +*cupsFilter: "application/vnd.cups-raster 0 -" +*ModelName: "Raster Test Driver" +*ShortNickName: "Raster Test Driver" +*NickName: "Raster Test Driver v1.2" +*PSVersion: "(3010.000) 81501" +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "1" +*LandscapeOrientation: Plus90 +*VariablePaperSize: False +*TTRasterizer: Type42 + +*OpenUI *PageSize/Media Size: PickOne +*OrderDependency: 10 AnySetup *PageSize +*DefaultPageSize: A4 +*PageSize Preview/Preview: "<>setpagedevice" +*PageSize Letter/US Letter: "<>setpagedevice" +*PageSize Legal/US Legal: "<>setpagedevice" +*PageSize Executive/US Executive: "<>setpagedevice" +*PageSize Tabloid/US Tabloid: "<>setpagedevice" +*PageSize A3/A3: "<>setpagedevice" +*PageSize A4/A4: "<>setpagedevice" +*PageSize A5/A5: "<>setpagedevice" +*PageSize B5/B5 (JIS): "<>setpagedevice" +*PageSize EnvISOB5/Envelope B5: "<>setpagedevice" +*PageSize Env10/Envelope #10: "<>setpagedevice" +*PageSize EnvC5/Envelope C5: "<>setpagedevice" +*PageSize EnvDL/Envelope DL: "<>setpagedevice" +*PageSize EnvMonarch/Envelope Monarch: "<>setpagedevice" +*PageSize 2L/5x7 "<>setpagedevice" +*PageSize 4x6/4x6in: "<>setpagedevice" +*PageSize L/3.5x5: "<>setpagedevice" +*PageSize Hagaki_Postcard/Hagaki Postcard: "<>setpagedevice" +*PageSize Business_card/Business card: "<>setpagedevice" +*PageSize 8x10/8x10in: "<>setpagedevice" +*PageSize 11x17/11x17in: "<>setpagedevice" +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 10 AnySetup *PageRegion +*DefaultPageRegion: A4 +*PageRegion Preview/Preview: "<>setpagedevice" +*PageRegion Letter/US Letter: "<>setpagedevice" +*PageRegion Legal/US Legal: "<>setpagedevice" +*PageRegion Executive/US Executive: "<>setpagedevice" +*PageRegion Tabloid/US Tabloid: "<>setpagedevice" +*PageRegion A3/A3: "<>setpagedevice" +*PageRegion A4/A4: "<>setpagedevice" +*PageRegion A5/A5: "<>setpagedevice" +*PageRegion B5/B5 (JIS): "<>setpagedevice" +*PageRegion EnvISOB5/Envelope B5: "<>setpagedevice" +*PageRegion Env10/Envelope #10: "<>setpagedevice" +*PageRegion EnvC5/Envelope C5: "<>setpagedevice" +*PageRegion EnvDL/Envelope DL: "<>setpagedevice" +*PageRegion EnvMonarch/Envelope Monarch: "<>setpagedevice" +*PageRegion 2L/5x7 "<>setpagedevice" +*PageRegion 4x6/4x6in: "<>setpagedevice" +*PageRegion L/3.5x5: "<>setpagedevice" +*PageRegion Hagaki_Postcard/Hagaki Postcard: "<>setpagedevice" +*PageRegion Business_card/Business card: "<>setpagedevice" +*PageRegion 8x10/8x10in: "<>setpagedevice" +*PageRegion 11x17/11x17in: "<>setpagedevice" +*CloseUI: *PageRegion + +*DefaultImageableArea: A4 +*ImageableArea Preview/Preview: "0 0 153 198" +*ImageableArea Letter/US Letter: "18 36 594 756" +*ImageableArea Legal/US Legal: "18 36 594 972" +*ImageableArea Executive/US Executive: "18 36 504 684" +*ImageableArea Tabloid/US Tabloid: "18 36 774 1188" +*ImageableArea A3/A3: "18 36 824 1155" +*ImageableArea A4/A4: "18 36 577 806" +*ImageableArea A5/A5: "18 36 403 559" +*ImageableArea B5/JIS B5: "18 36 498 693" +*ImageableArea EnvISOB5/B5 (ISO): "18 36 463 673" +*ImageableArea Env10/Com-10: "18 36 279 648" +*ImageableArea EnvC5/EnvC5: "18 36 441 613" +*ImageableArea EnvDL/EnvDL: "18 36 294 588" +*ImageableArea EnvMonarch/Envelope Monarch: "18 36 261 504" +*ImageableArea 2L/5x7 "18 36 342 468" +*ImageableArea 4x6/4x6in: "18 36 270 396" +*ImageableArea L/3.5x5: "18 36 234 324" +*ImageableArea Hagaki_Postcard/Hagaki Postcard: "18 36 265 384" +*ImageableArea Business_card/Business card: "18 36 135 207" +*ImageableArea 8x10/8x10in: "18 36 558 684" +*ImageableArea 11x17/11x17in: "18 36 774 1188" + +*DefaultPaperDimension: A4 +*PaperDimension Preview/Preview: "153 198" +*PaperDimension Letter/US Letter: "612 792" +*PaperDimension Legal/US Legal: "612 1008" +*PaperDimension Executive/US Executive: "522 756" +*PaperDimension Tabloid/US Tabloid: "792 1224" +*PaperDimension A3/A3: "842 1191" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "421 595" +*PaperDimension B5/B5 (JIS): "516 729" +*PaperDimension EnvISOB5/Envelope B5: "499 709" +*PaperDimension Env10/Envelope #10: "297 684" +*PaperDimension EnvC5/Envelope C5: "459 649" +*PaperDimension EnvDL/Envelope DL: "312 624" +*PaperDimension EnvMonarch/Envelope Monarch: "279 540" +*PaperDimension 2L/5x7 "360 504" +*PaperDimension 4x6/4x6in: "288 432" +*PaperDimension L/3.5x5: "252 360" +*PaperDimension Hagaki_Postcard/Hagaki Postcard: "283 420" +*PaperDimension Business_card/Business card: "153 243" +*PaperDimension 8x10/8x10in: "576 720" +*PaperDimension 11x17/11x17in: "792 1224" + +*OpenUI *MediaType/Media Type: PickOne +*OrderDependency: 10 AnySetup *MediaType +*DefaultMediaType: Plain +*MediaType Plain/Plain Paper: "<>setpagedevice" +*MediaType Bond/Bond Paper: "<>setpagedevice" +*MediaType Special/Special Paper: "<>setpagedevice" +*MediaType Transparency/Transparency: "<>setpagedevice" +*MediaType Glossy/Glossy Paper: "<>setpagedevice" +*CloseUI: *MediaType + +*OpenUI *InputSlot/Media Source: PickOne +*OrderDependency: 10 AnySetup *InputSlot +*DefaultInputSlot: Tray +*InputSlot Tray/Tray: "<>setpagedevice" +*InputSlot Manual/Manual Feed: "<>setpagedevice" +*InputSlot Envelope/Envelope Feed: "<>setpagedevice" +*CloseUI: *InputSlot + +*OpenUI *Duplex/Double-Sided Printing: PickOne +*OrderDependency: 20 AnySetup *Duplex +*DefaultDuplex: None +*Duplex None/Off: "<>setpagedevice" +*Duplex DuplexNoTumble/Long Edge (Standard): "<>setpagedevice" +*Duplex DuplexTumble/Short Edge (Flip): "<>setpagedevice" +*CloseUI: *Duplex + +*OpenUI *Resolution/Output Resolution: PickOne +*OrderDependency: 20 AnySetup *Resolution +*DefaultResolution: 300dpi +*Resolution 75dpi/75 DPI: "<>setpagedevice" +*Resolution 100dpi/100 DPI: "<>setpagedevice" +*Resolution 150dpi/150 DPI: "<>setpagedevice" +*Resolution 300dpi/300 DPI: "<>setpagedevice" +*CloseUI: *Resolution + +*OpenUI *ColorModel/Output Mode: PickOne +*OrderDependency: 10 AnySetup *ColorModel +*DefaultColorModel: CMYK +*ColorModel W: "<>setpagedevice" +*ColorModel RGB: "<>setpagedevice" +*ColorModel RGBA: "<>setpagedevice" +*ColorModel K: "<>setpagedevice" +*ColorModel CMY: "<>setpagedevice" +*ColorModel YMC: "<>setpagedevice" +*ColorModel CMYK: "<>setpagedevice" +*ColorModel YMCK: "<>setpagedevice" +*ColorModel KCMY: "<>setpagedevice" +*ColorModel KCMYcm: "<>setpagedevice" +*ColorModel GMCK: "<>setpagedevice" +*ColorModel GMCS: "<>setpagedevice" +*ColorModel WHITE: "<>setpagedevice" +*ColorModel GOLD: "<>setpagedevice" +*ColorModel SILVER: "<>setpagedevice" +*ColorModel CIEXYZ: "<>setpagedevice" +*ColorModel CIELab: "<>setpagedevice" +*ColorModel RGBW: "<>setpagedevice" +*ColorModel ICC1: "<>setpagedevice" +*ColorModel ICC2: "<>setpagedevice" +*ColorModel ICC3: "<>setpagedevice" +*ColorModel ICC4: "<>setpagedevice" +*ColorModel ICC5: "<>setpagedevice" +*ColorModel ICC6: "<>setpagedevice" +*ColorModel ICC7: "<>setpagedevice" +*ColorModel ICC8: "<>setpagedevice" +*ColorModel ICC9: "<>setpagedevice" +*ColorModel ICCA: "<>setpagedevice" +*ColorModel ICCB: "<>setpagedevice" +*ColorModel ICCC: "<>setpagedevice" +*ColorModel ICCD: "<>setpagedevice" +*ColorModel ICCE: "<>setpagedevice" +*ColorModel ICCF: "<>setpagedevice" +*CloseUI: *ColorModel + +*OpenUI *cupsBitsPerColor/Bits Per Color: PickOne +*OrderDependency: 10 AnySetup *cupsBitsPerColor +*DefaultcupsBitsPerColor: 8 +*cupsBitsPerColor 1: "<>setpagedevice" +*cupsBitsPerColor 2: "<>setpagedevice" +*cupsBitsPerColor 4: "<>setpagedevice" +*cupsBitsPerColor 8: "<>setpagedevice" +*cupsBitsPerColor 16: "<>setpagedevice" +*CloseUI: *cupsBitsPerColor + +*OpenUI *cupsColorOrder/Color Order: PickOne +*OrderDependency: 10 AnySetup *cupsColorOrder +*DefaultcupsColorOrder: Chunked +*cupsColorOrder Chunked: "<>setpagedevice" +*cupsColorOrder Banded: "<>setpagedevice" +*CloseUI: *cupsColorOrder + +*DefaultFont: Times-Roman +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM +*% +*% End of "$Id$". +*% diff --git a/org.tizen.mobileprint.manifest b/org.tizen.mobileprint.manifest new file mode 100644 index 0000000..b8e1459 --- /dev/null +++ b/org.tizen.mobileprint.manifest @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/org.tizen.usb-printer-detector.manifest b/org.tizen.usb-printer-detector.manifest new file mode 100644 index 0000000..334898d --- /dev/null +++ b/org.tizen.usb-printer-detector.manifest @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/packaging/mobileprint.spec b/packaging/mobileprint.spec new file mode 100755 index 0000000..9214444 --- /dev/null +++ b/packaging/mobileprint.spec @@ -0,0 +1,90 @@ +Name: mobileprint +Summary: Library for writing UNIX daemons +Version: 0.2.15 +Release: 55 +Group: System/Libraries +License: Flora Software License +Source0: %{name}-%{version}.tar.gz +BuildRequires: cmake +BuildRequires: gettext-tools +BuildRequires: edje-tools +#BuildRequires: edje-bin +BuildRequires: sysman-devel +BuildRequires: pkgconfig(appcore-efl) +BuildRequires: pkgconfig(elementary) +BuildRequires: pkgconfig(dlog) +BuildRequires: pkgconfig(appsvc) +BuildRequires: pkgconfig(print-service) +BuildRequires: pkgconfig(utilX) +BuildRequires: pkgconfig(ui-gadget-1) +BuildRequires: pkgconfig(capi-appfw-application) +BuildRequires: pkgconfig(syspopup-caller) +BuildRequires: pkgconfig(notification) +BuildRequires: pkgconfig(pmapi) +BuildRoot: %{_tmppath}/%{name}-%{version}-build + +%description +Mobile Print application + +%package -n org.tizen.mobileprint +Summary: Mobile Print application +Group: Development/Libraries +Requires: cups + +%description -n org.tizen.mobileprint +Mobile Print application + +%package -n org.tizen.usb-printer-detector +Summary: Mobile Print application +Group: Development/Libraries +Requires: pkgconfig(usbutils) +Requires: cups + +%description -n org.tizen.usb-printer-detector +Mobile Print application + +%prep +%setup -q + +%build +%define PREFIX /opt/usr/apps/org.tizen.mobileprint +%define PREFIXUSB /opt/usr/apps/org.tizen.usb-printer-detector +cmake . -DCMAKE_INSTALL_PREFIX=%{PREFIX} + +%install +rm -rf %{buildroot} +%make_install + +mkdir -p %{buildroot}/usr/share/license +cp %{_builddir}/%{buildsubdir}/LICENSE.Flora %{buildroot}/usr/share/license/org.tizen.mobileprint +cp %{_builddir}/%{buildsubdir}/LICENSE.Flora %{buildroot}/usr/share/license/org.tizen.usb-printer-detector + +%clean +rm -rf %{buildroot} + +%post -n org.tizen.mobileprint + chown -R 5000:5000 %{PREFIX}/data + chown -R 5000:5000 %{PREFIX}/cache + +%files -n org.tizen.mobileprint +%manifest org.tizen.mobileprint.manifest +%defattr(-,root,root,-) +#%doc LICENSE +/usr/share/license/org.tizen.mobileprint +%{PREFIX}/* +#/opt/share/applications/org.tizen.mobileprint.desktop +/opt/share/icons/default/small/org.tizen.mobileprint.png +#for appfw new manifest +/opt/share/packages/org.tizen.mobileprint.xml + +%files -n org.tizen.usb-printer-detector +%manifest org.tizen.usb-printer-detector.manifest +%defattr(-,root,root,-) +#%doc LICENSE +/usr/share/license/org.tizen.usb-printer-detector +%{PREFIXUSB}/* +#/opt/share/applications/org.tizen.usb-printer-detector.desktop +#for appfw new manifest +/opt/share/packages/org.tizen.usb-printer-detector.xml + +%changelog diff --git a/usb-printer-detector/CMakeLists.txt b/usb-printer-detector/CMakeLists.txt new file mode 100644 index 0000000..6ecac18 --- /dev/null +++ b/usb-printer-detector/CMakeLists.txt @@ -0,0 +1,46 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 2.6) +PROJECT(usb-printer-detector C) +SET(PACKAGE_NAME org.tizen.usb-printer-detector) + +SET(PREFIX /opt/usr/apps/${PACKAGE_NAME}) +SET(BINDIR "${PREFIX}/bin") +SET(RESDIR "${PREFIX}/res") +SET(LOCALEDIR "${RESDIR}/locale") +SET(EDJDIR "${RESDIR}/edje") +SET(IMGDIR "${RESDIR}/images/") + +SET(SRCS + src/upd-main.c + src/upd-util.c + src/upd-view.c +) + +INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/include) + + +SET(CMAKE_C_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_CFLAGS} -DVITA_FEATURE") +SET(CMAKE_C_FLAGS_DEBUG "-O0 -g") +SET(CMAKE_C_FLAGS_RELEASE "-O2") + +IF("${ARCH}" STREQUAL "arm") + ADD_DEFINITIONS("-DTARGET") + MESSAGE("add -DTARGET") +ENDIF("${ARCH}" STREQUAL "arm") + +ADD_DEFINITIONS("-DPREFIX=\"${PREFIX}\"") +ADD_DEFINITIONS("-DRESDIR=\"${RESDIR}\"") +ADD_DEFINITIONS("-DIMGDIR=\"${IMGDIR}\"") + +ADD_EXECUTABLE(${PROJECT_NAME} ${SRCS}) +TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${pkgs_LDFLAGS}) + +INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${BINDIR}) + +#CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/${PACKAGE_NAME}.desktop.in ${CMAKE_BINARY_DIR}/${PACKAGE_NAME}.desktop) +#INSTALL(FILES ${CMAKE_BINARY_DIR}/${PACKAGE_NAME}.desktop DESTINATION /opt/share/applications) +#for appfw new manifest +CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/${PACKAGE_NAME}.xml ${CMAKE_BINARY_DIR}/${PACKAGE_NAME}/${PACKAGE_NAME}.xml) +INSTALL(FILES ${CMAKE_BINARY_DIR}/${PACKAGE_NAME}/${PACKAGE_NAME}.xml DESTINATION "/opt/share/packages/") +INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/images/ DESTINATION ${IMGDIR}) + +ADD_SUBDIRECTORY(po) diff --git a/usb-printer-detector/images/A09_device_printer.png b/usb-printer-detector/images/A09_device_printer.png new file mode 100644 index 0000000..795af23 Binary files /dev/null and b/usb-printer-detector/images/A09_device_printer.png differ diff --git a/usb-printer-detector/include/upd-strings.h b/usb-printer-detector/include/upd-strings.h new file mode 100644 index 0000000..9aee9c3 --- /dev/null +++ b/usb-printer-detector/include/upd-strings.h @@ -0,0 +1,46 @@ +/* +* USB-Printer-Detector +* +* Copyright 2012 Samsung Electronics Co., Ltd + +* Licensed under the Flora License, Version 1.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://floralicense.org/license/ + +* 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. +* +*/ + +#ifndef __UPD_STRING_H__ +#define __UPD_STRING_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#define UPD_STR_BUTN_YES _("Yes") +#define UPD_STR_BUTN_NO _("No") +#define UPD_STR_BTN_OK _("OK") +#define UPD_STR_BTN_CLOSE _("Close") +#define UPD_STR_BTN_CANCEL _("Cancel") +#define UPD_STR_POP_PROG_CONNECT _("Connecting...") +#define UPD_STR_POP_PROG_CANCEL _("Canceling...") +#define UPD_STR_POP_NOTI_CONNECTED _("Connected") +#define UPD_STR_POP_NOTI_DISCONNECTED _("Disconnected") +#define UPD_STR_POP_FAIL_CONNECT "An error has occurred during
"\ + "connecting" +#define UPD_STR_POP_FAIL_TIMEOUT "Connection timeout" + + /* Not included in excel file, but it exist in STMS */ + +#ifdef __cplusplus +} +#endif + +#endif /* __UPD_STRING_H__ */ diff --git a/usb-printer-detector/include/upd-util.h b/usb-printer-detector/include/upd-util.h new file mode 100644 index 0000000..dc65d33 --- /dev/null +++ b/usb-printer-detector/include/upd-util.h @@ -0,0 +1,118 @@ +/* +* USB-Printer-Detector +* +* Copyright 2012 Samsung Electronics Co., Ltd + +* Licensed under the Flora License, Version 1.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://floralicense.org/license/ + +* 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. +* +*/ + + +#ifndef __UPD_UTIL_H__ +#define __UPD_UTIL_H__ + +#include + +#define NOTI_PACKAGE "org.tizen.usb-printer-detector" +#define MAC2STR(a) (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5] +#define MACSTR "%02x:%02x:%02x:%02x:%02x:%02x" + +#define USB_PRINTER_DETECTOR_DLOG_OUT +#ifdef USB_PRINTER_DETECTOR_DLOG_OUT +#include + +#undef LOG_TAG +#define LOG_TAG "USB_PRINTER_DETECTOR" + +#define UPD_VERBOSE(fmt, args...) \ + LOGV(fmt, ##args) +#define UPD_INFO(fmt, args...) \ + LOGI(fmt, ##args) +#define UPD_DEBUG(fmt, args...) \ + LOGD(fmt, ##args) +#define UPD_WARN(fmt, args...) \ + LOGW(fmt, ##args) +#define UPD_ERROR(fmt, args...) \ + LOGE(fmt, ##args) +#define UPD_FATAL(fmt, args...) \ + LOGF(fmt, ##args) + +#define __UPD_FUNC_ENTER__ UPD_INFO("Enter: %s()\n", __func__); +#define __UPD_FUNC_EXIT__ UPD_INFO("Quit: %s()\n", __func__); + +#else /** _DLOG_UTIL */ + +#define UPD_PRT(prio, fmt, arg...) \ + do { \ + fprintf((prio ? stderr : stdout), "%s:%s(%d)>"fmt"\n", __FILE__, __func__, __LINE__, ##arg); \ + } while (0) + +#define UPD_DEBUG(fmt, args...) \ + do { \ + printf("%s:%s(%d)>"fmt"\n", __FILE__, __func__, __LINE__, ##arg); \ + } while (0) + +#define __UPD_FUNC_ENTER__ UPD_PRT(0, "%s enter\n", __FUNCTION__); +#define __UPD_FUNC_EXIT__ UPD_PRT(0, "%s leave\n", __FUNCTION__); + +#endif /** _USE_DLOG_UTIL */ + +#define UPD_FILE_EXISTS(path) \ + (path && (1 == ecore_file_exists(path)) && (ecore_file_size(path) > 0)) + +#define UPD_IF_DEL_TIMER(timer) \ + do { \ + if(timer) { \ + ecore_timer_del(timer); \ + timer = NULL; \ + } \ + } while (0) + +#define UPD_IF_DEL_IDLER(idler) \ + do { \ + if(idler) { \ + ecore_idler_del(idler); \ + idler = NULL; \ + } \ + } while (0) + + +#define UPD_IF_DEL_OBJ(obj) \ + do { \ + if(obj) { \ + evas_object_del(obj); \ + obj = NULL; \ + } \ + } while (0) + +#define UPD_IF_FREE_MEM(mem) \ + do { \ + if(mem) { \ + free(mem); \ + mem = NULL; \ + } \ + } while (0) + +#define assertm_if(expr, fmt, arg...) do { \ + if(expr) { \ + UPD_DEBUG(UPD_LOG_ASSERT, " ##(%s) -> %s() assert!!## "fmt, #expr, __FUNCTION__, ##arg); \ + exit(1); \ + } \ + } while (0) // retvm if + +int upd_create_notification(int *noti_id, const char *printer_model); +int upd_remove_notification(int noti_id); +int upd_draw_connected_syspopup(void); +int upd_get_printer_info(char **printer_model); + +#endif /* __UPD_UTIL_H__ */ diff --git a/usb-printer-detector/include/upd.h b/usb-printer-detector/include/upd.h new file mode 100644 index 0000000..fc1cf49 --- /dev/null +++ b/usb-printer-detector/include/upd.h @@ -0,0 +1,96 @@ +/* +* USB-Printer-Detector +* +* Copyright 2012 Samsung Electronics Co., Ltd + +* Licensed under the Flora License, Version 1.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://floralicense.org/license/ + +* 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. +* +*/ + +#ifndef __UPD_H__ +#define __UPD_H__ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define PACKAGE "usb-printer-detector" +#define EDJ_NAME RESDIR"/edje/usb-printer-detector.edj" +#define LOCALEDIR "/opt/usr/apps/org.tizen.usb-printer-detector/res/locale" +#define UPD_STR_MAX_LEN 128 + +enum { + UPD_TIMER_3 = 3, + UPD_TIMER_10 = 10, + UPD_TIMER_30 = 30, + UPD_TIMER_120 = 120, +}; + +enum { + UPD_PROG_CONNECT, + UPD_PROG_DISCONNECT, + UPD_PROG_CONNECT_CANCEL, + UPD_NOTI_CONNECTED, + UPD_NOTI_DISCONNECTED, + UPD_FAIL_INIT, + UPD_FAIL_CONNECT, +// UPD_BROWSE_FILES_REQ, +}; + +enum { + UPD_RESP_OK, + UPD_RESP_CANCEL, + UPD_RESP_APRV_CONNECT_PBC_YES = 1, + UPD_RESP_APRV_CONNECT_DISPLAY_YES, + UPD_RESP_APRV_CONNECT_KEYPAD_YES, + UPD_RESP_APRV_CONNECT_NO, + UPD_RESP_PROG_CONNECT_CANCEL, + UPD_RESP_PROG_CONNECT_KEYPAD_OK, + UPD_RESP_APRV_ENTER_PIN_YES, + UPD_RESP_APRV_ENTER_PIN_NO, + UPD_BROWSE_FILES_YES, + UPD_BROWSE_FILES_NO, +}; + +typedef struct { + int type; + char text[UPD_STR_MAX_LEN]; + char label1[UPD_STR_MAX_LEN]; + char label2[UPD_STR_MAX_LEN]; + int timeout; + int resp_data1; + int resp_data2; + int data; +} upd_popup_t; + +typedef struct { + Evas_Object *win; + Evas_Object *popup; + Evas_Object *pin_entry; + upd_popup_t *popup_data; + uint popup_timeout_handle; + int noti_id; +} upd_appdata_t; + + +extern upd_appdata_t *upd_get_appdata(); +extern void upd_destroy_popup(); +extern void upd_prepare_popup(int type, void *userdata); + +#endif /* __UPD_H__ */ diff --git a/usb-printer-detector/org.tizen.usb-printer-detector.xml b/usb-printer-detector/org.tizen.usb-printer-detector.xml new file mode 100644 index 0000000..33aa017 --- /dev/null +++ b/usb-printer-detector/org.tizen.usb-printer-detector.xml @@ -0,0 +1,13 @@ + + + + GangHeok Kim + Taeksu Shin + Dongwook Lee + USB Host Printer UI Application + + + + + + diff --git a/usb-printer-detector/po/CMakeLists.txt b/usb-printer-detector/po/CMakeLists.txt new file mode 100644 index 0000000..7cba244 --- /dev/null +++ b/usb-printer-detector/po/CMakeLists.txt @@ -0,0 +1,34 @@ +# for i18n + +SET(POFILES + ar.po da.po en_US.po fi.po hi.po it_IT.po + lt.po pl.po sk.po uk.po zh_TW.po az.po + de_DE.po es_ES.po fr_CA.po hr.po ja_JP.po + lv.po pt_BR.po sl.po uz.po bg.po el_GR.po + es_US.po fr_FR.po hu.po ka.po mk.po pt_PT.po + sr.po zh_CN.po ca.po en.po et.po ga.po hy.po + kk.po nb.po ro.po sv.po zh_HK.po cs.po en_PH.po + eu.po gl.po is.po ko_KR.po nl_NL.po ru_RU.po + tr_TR.po zh_SG.po + ) + +SET(MSGFMT "/usr/bin/msgfmt") + +FOREACH(pofile ${POFILES}) + SET(pofile ${CMAKE_CURRENT_SOURCE_DIR}/${pofile}) + MESSAGE("PO: ${pofile}") + GET_FILENAME_COMPONENT(absPofile ${pofile} ABSOLUTE) + GET_FILENAME_COMPONENT(lang ${absPofile} NAME_WE) + SET(moFile ${CMAKE_CURRENT_BINARY_DIR}/${lang}.mo) + ADD_CUSTOM_COMMAND( + OUTPUT ${moFile} + COMMAND ${MSGFMT} -o ${moFile} ${absPofile} + DEPENDS ${absPofile} + ) + INSTALL(FILES ${moFile} + DESTINATION /opt/usr/apps/org.tizen.usb-printer-detector/res/locale/${lang}/LC_MESSAGES RENAME ${PROJECT_NAME}.mo) + SET(moFiles ${moFiles} ${moFile}) +ENDFOREACH(pofile) + +MESSAGE(".mo files: ${moFiles}") +ADD_CUSTOM_TARGET(pop_po ALL DEPENDS ${moFiles}) diff --git a/usb-printer-detector/po/POTFILES.in b/usb-printer-detector/po/POTFILES.in new file mode 100644 index 0000000..c138b68 --- /dev/null +++ b/usb-printer-detector/po/POTFILES.in @@ -0,0 +1,2 @@ +# List of source files containing translatable strings. +upd-strings.h diff --git a/usb-printer-detector/po/ar.po b/usb-printer-detector/po/ar.po new file mode 100644 index 0000000..8ad93fe --- /dev/null +++ b/usb-printer-detector/po/ar.po @@ -0,0 +1,3 @@ +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "تم توصيل الطابعة" + diff --git a/usb-printer-detector/po/az.po b/usb-printer-detector/po/az.po new file mode 100644 index 0000000..0380eaa --- /dev/null +++ b/usb-printer-detector/po/az.po @@ -0,0 +1,3 @@ +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Printer qoşuldu" + diff --git a/usb-printer-detector/po/bg.po b/usb-printer-detector/po/bg.po new file mode 100644 index 0000000..89165a6 --- /dev/null +++ b/usb-printer-detector/po/bg.po @@ -0,0 +1,3 @@ +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Принтерът е свързан" + diff --git a/usb-printer-detector/po/ca.po b/usb-printer-detector/po/ca.po new file mode 100644 index 0000000..70d08f7 --- /dev/null +++ b/usb-printer-detector/po/ca.po @@ -0,0 +1,3 @@ +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Impressora connectada" + diff --git a/usb-printer-detector/po/cs.po b/usb-printer-detector/po/cs.po new file mode 100644 index 0000000..120893e --- /dev/null +++ b/usb-printer-detector/po/cs.po @@ -0,0 +1,3 @@ +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Tiskárna byla připojena" + diff --git a/usb-printer-detector/po/da.po b/usb-printer-detector/po/da.po new file mode 100644 index 0000000..894dede --- /dev/null +++ b/usb-printer-detector/po/da.po @@ -0,0 +1,3 @@ +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Printer tilsluttet" + diff --git a/usb-printer-detector/po/de_DE.po b/usb-printer-detector/po/de_DE.po new file mode 100644 index 0000000..70aa564 --- /dev/null +++ b/usb-printer-detector/po/de_DE.po @@ -0,0 +1,3 @@ +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Drucker verbunden" + diff --git a/usb-printer-detector/po/el_GR.po b/usb-printer-detector/po/el_GR.po new file mode 100644 index 0000000..9eac3e9 --- /dev/null +++ b/usb-printer-detector/po/el_GR.po @@ -0,0 +1,3 @@ +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Συνδέθηκε εκτυπωτής" + diff --git a/usb-printer-detector/po/en.po b/usb-printer-detector/po/en.po new file mode 100644 index 0000000..64c98c5 --- /dev/null +++ b/usb-printer-detector/po/en.po @@ -0,0 +1,3 @@ +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Printer connected" + diff --git a/usb-printer-detector/po/en_PH.po b/usb-printer-detector/po/en_PH.po new file mode 100644 index 0000000..64c98c5 --- /dev/null +++ b/usb-printer-detector/po/en_PH.po @@ -0,0 +1,3 @@ +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Printer connected" + diff --git a/usb-printer-detector/po/en_US.po b/usb-printer-detector/po/en_US.po new file mode 100644 index 0000000..64c98c5 --- /dev/null +++ b/usb-printer-detector/po/en_US.po @@ -0,0 +1,3 @@ +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Printer connected" + diff --git a/usb-printer-detector/po/es_ES.po b/usb-printer-detector/po/es_ES.po new file mode 100644 index 0000000..825acde --- /dev/null +++ b/usb-printer-detector/po/es_ES.po @@ -0,0 +1,3 @@ +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Impresora conectada" + diff --git a/usb-printer-detector/po/es_US.po b/usb-printer-detector/po/es_US.po new file mode 100644 index 0000000..825acde --- /dev/null +++ b/usb-printer-detector/po/es_US.po @@ -0,0 +1,3 @@ +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Impresora conectada" + diff --git a/usb-printer-detector/po/et.po b/usb-printer-detector/po/et.po new file mode 100644 index 0000000..37694b6 --- /dev/null +++ b/usb-printer-detector/po/et.po @@ -0,0 +1,3 @@ +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Printer on ühendatud" + diff --git a/usb-printer-detector/po/eu.po b/usb-printer-detector/po/eu.po new file mode 100644 index 0000000..d66a0a3 --- /dev/null +++ b/usb-printer-detector/po/eu.po @@ -0,0 +1,3 @@ +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Inprimagailua konektatuta" + diff --git a/usb-printer-detector/po/fi.po b/usb-printer-detector/po/fi.po new file mode 100644 index 0000000..6635912 --- /dev/null +++ b/usb-printer-detector/po/fi.po @@ -0,0 +1,3 @@ +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Tulostin kytketty" + diff --git a/usb-printer-detector/po/fr_CA.po b/usb-printer-detector/po/fr_CA.po new file mode 100644 index 0000000..fea1654 --- /dev/null +++ b/usb-printer-detector/po/fr_CA.po @@ -0,0 +1,3 @@ +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Imprimante connectée" + diff --git a/usb-printer-detector/po/fr_FR.po b/usb-printer-detector/po/fr_FR.po new file mode 100644 index 0000000..fea1654 --- /dev/null +++ b/usb-printer-detector/po/fr_FR.po @@ -0,0 +1,3 @@ +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Imprimante connectée" + diff --git a/usb-printer-detector/po/ga.po b/usb-printer-detector/po/ga.po new file mode 100644 index 0000000..237b44f --- /dev/null +++ b/usb-printer-detector/po/ga.po @@ -0,0 +1,3 @@ +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Printéir ceangailte" + diff --git a/usb-printer-detector/po/gl.po b/usb-printer-detector/po/gl.po new file mode 100644 index 0000000..825acde --- /dev/null +++ b/usb-printer-detector/po/gl.po @@ -0,0 +1,3 @@ +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Impresora conectada" + diff --git a/usb-printer-detector/po/hi.po b/usb-printer-detector/po/hi.po new file mode 100644 index 0000000..02ca05a --- /dev/null +++ b/usb-printer-detector/po/hi.po @@ -0,0 +1,3 @@ +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "प्रिंटर कनेक्ट किया गया" + diff --git a/usb-printer-detector/po/hr.po b/usb-printer-detector/po/hr.po new file mode 100644 index 0000000..05d330d --- /dev/null +++ b/usb-printer-detector/po/hr.po @@ -0,0 +1,3 @@ +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Pisač spojen" + diff --git a/usb-printer-detector/po/hu.po b/usb-printer-detector/po/hu.po new file mode 100644 index 0000000..1de6bc2 --- /dev/null +++ b/usb-printer-detector/po/hu.po @@ -0,0 +1,3 @@ +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Nyomtató csatlakoztatva" + diff --git a/usb-printer-detector/po/hy.po b/usb-printer-detector/po/hy.po new file mode 100644 index 0000000..dd55d7a --- /dev/null +++ b/usb-printer-detector/po/hy.po @@ -0,0 +1,3 @@ +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Տպիչը միացված է" + diff --git a/usb-printer-detector/po/is.po b/usb-printer-detector/po/is.po new file mode 100644 index 0000000..290fed5 --- /dev/null +++ b/usb-printer-detector/po/is.po @@ -0,0 +1,3 @@ +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Prentari tengdur" + diff --git a/usb-printer-detector/po/it_IT.po b/usb-printer-detector/po/it_IT.po new file mode 100644 index 0000000..cdc8a8a --- /dev/null +++ b/usb-printer-detector/po/it_IT.po @@ -0,0 +1,3 @@ +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Stampante connessa" + diff --git a/usb-printer-detector/po/ja_JP.po b/usb-printer-detector/po/ja_JP.po new file mode 100644 index 0000000..4e6201e --- /dev/null +++ b/usb-printer-detector/po/ja_JP.po @@ -0,0 +1,3 @@ +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "プリンターが接続されました。" + diff --git a/usb-printer-detector/po/ka.po b/usb-printer-detector/po/ka.po new file mode 100644 index 0000000..f52bf06 --- /dev/null +++ b/usb-printer-detector/po/ka.po @@ -0,0 +1,3 @@ +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "პრინტერი დაკავშირებულია" + diff --git a/usb-printer-detector/po/kk.po b/usb-printer-detector/po/kk.po new file mode 100644 index 0000000..733ae42 --- /dev/null +++ b/usb-printer-detector/po/kk.po @@ -0,0 +1,3 @@ +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Принтер қосылды" + diff --git a/usb-printer-detector/po/ko_KR.po b/usb-printer-detector/po/ko_KR.po new file mode 100644 index 0000000..d601139 --- /dev/null +++ b/usb-printer-detector/po/ko_KR.po @@ -0,0 +1,3 @@ +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "프린터가 연결되었습니다" + diff --git a/usb-printer-detector/po/lt.po b/usb-printer-detector/po/lt.po new file mode 100644 index 0000000..8860a5e --- /dev/null +++ b/usb-printer-detector/po/lt.po @@ -0,0 +1,3 @@ +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Prijungtas spausdintuvas" + diff --git a/usb-printer-detector/po/lv.po b/usb-printer-detector/po/lv.po new file mode 100644 index 0000000..4e21aa1 --- /dev/null +++ b/usb-printer-detector/po/lv.po @@ -0,0 +1,3 @@ +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Printeris pievienots" + diff --git a/usb-printer-detector/po/mk.po b/usb-printer-detector/po/mk.po new file mode 100644 index 0000000..d16fff6 --- /dev/null +++ b/usb-printer-detector/po/mk.po @@ -0,0 +1,3 @@ +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Поврзан е печатач" + diff --git a/usb-printer-detector/po/nb.po b/usb-printer-detector/po/nb.po new file mode 100644 index 0000000..e23edf9 --- /dev/null +++ b/usb-printer-detector/po/nb.po @@ -0,0 +1,3 @@ +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Skriver tilkoblet" + diff --git a/usb-printer-detector/po/nl_NL.po b/usb-printer-detector/po/nl_NL.po new file mode 100644 index 0000000..955c1c3 --- /dev/null +++ b/usb-printer-detector/po/nl_NL.po @@ -0,0 +1,3 @@ +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Printer aangesloten" + diff --git a/usb-printer-detector/po/pl.po b/usb-printer-detector/po/pl.po new file mode 100644 index 0000000..1c6c0dd --- /dev/null +++ b/usb-printer-detector/po/pl.po @@ -0,0 +1,3 @@ +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Drukarka podłączona" + diff --git a/usb-printer-detector/po/pt_BR.po b/usb-printer-detector/po/pt_BR.po new file mode 100644 index 0000000..6239718 --- /dev/null +++ b/usb-printer-detector/po/pt_BR.po @@ -0,0 +1,3 @@ +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Impressora conectada" + diff --git a/usb-printer-detector/po/pt_PT.po b/usb-printer-detector/po/pt_PT.po new file mode 100644 index 0000000..49f945c --- /dev/null +++ b/usb-printer-detector/po/pt_PT.po @@ -0,0 +1,3 @@ +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Impressora ligada" + diff --git a/usb-printer-detector/po/ro.po b/usb-printer-detector/po/ro.po new file mode 100644 index 0000000..207b2cc --- /dev/null +++ b/usb-printer-detector/po/ro.po @@ -0,0 +1,3 @@ +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Imprimantă conectată" + diff --git a/usb-printer-detector/po/ru_RU.po b/usb-printer-detector/po/ru_RU.po new file mode 100644 index 0000000..c96414d --- /dev/null +++ b/usb-printer-detector/po/ru_RU.po @@ -0,0 +1,3 @@ +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Принтер подключен" + diff --git a/usb-printer-detector/po/sk.po b/usb-printer-detector/po/sk.po new file mode 100644 index 0000000..ebd5d2d --- /dev/null +++ b/usb-printer-detector/po/sk.po @@ -0,0 +1,3 @@ +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Tlačiareň je pripojená" + diff --git a/usb-printer-detector/po/sl.po b/usb-printer-detector/po/sl.po new file mode 100644 index 0000000..26d7498 --- /dev/null +++ b/usb-printer-detector/po/sl.po @@ -0,0 +1,3 @@ +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Tiskalnik je povezan" + diff --git a/usb-printer-detector/po/sr.po b/usb-printer-detector/po/sr.po new file mode 100644 index 0000000..05a6e34 --- /dev/null +++ b/usb-printer-detector/po/sr.po @@ -0,0 +1,3 @@ +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Štampač je priključen" + diff --git a/usb-printer-detector/po/sv.po b/usb-printer-detector/po/sv.po new file mode 100644 index 0000000..4140980 --- /dev/null +++ b/usb-printer-detector/po/sv.po @@ -0,0 +1,3 @@ +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Skrivare ansluten" + diff --git a/usb-printer-detector/po/tr_TR.po b/usb-printer-detector/po/tr_TR.po new file mode 100644 index 0000000..045ccea --- /dev/null +++ b/usb-printer-detector/po/tr_TR.po @@ -0,0 +1,3 @@ +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Yazıcı bağlı" + diff --git a/usb-printer-detector/po/uk.po b/usb-printer-detector/po/uk.po new file mode 100644 index 0000000..6f31205 --- /dev/null +++ b/usb-printer-detector/po/uk.po @@ -0,0 +1,3 @@ +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Принтер підключено" + diff --git a/usb-printer-detector/po/update-po.sh b/usb-printer-detector/po/update-po.sh new file mode 100755 index 0000000..fcf256d --- /dev/null +++ b/usb-printer-detector/po/update-po.sh @@ -0,0 +1,59 @@ +#!/bin/sh + +PACKAGE=usb-printer-detector +SRCROOT=.. +POTFILES=POTFILES.in + +ALL_LINGUAS="ar da en_US fi hi it_IT lt pl sk uk zh_TW az de_DE es_ES fr_CA hr ja_JP lv pt_BR sl uz bg el_GR es_US fr_FR hu ka mk pt_PT sr zh_CN ca en et ga hy kk nb ro sv zh_HK cs en_PH eu gl is ko_KR nl_NL ru_RU tr_TR zh_SG" + +XGETTEXT=/usr/bin/xgettext +MSGMERGE=/usr/bin/msgmerge + +echo -n "Make ${PACKAGE}.pot " +if [ ! -e $POTFILES ] ; then + echo "$POTFILES not found" + exit 1 +fi + +$XGETTEXT --default-domain=${PACKAGE} --directory=${SRCROOT} \ + --add-comments --keyword=_ --keyword=N_ --files-from=$POTFILES +if [ $? -ne 0 ]; then + echo "error" + exit 1 +fi + +if [ ! -f ${PACKAGE}.po ]; then + echo "No such file: ${PACKAGE}.po" + exit 1 +fi + +rm -f ${PACKAGE}.pot && mv ${PACKAGE}.po ${PACKAGE}.pot +echo "done" + +for LANG in $ALL_LINGUAS; do + echo "$LANG : " + + if [ ! -e $LANG.po ] ; then + sed 's/CHARSET/UTF-8/g' ${PACKAGE}.pot > ${LANG}.po + echo "${LANG}.po created" + else + if $MSGMERGE ${LANG}.po ${PACKAGE}.pot -o ${LANG}.new.po ; then + if cmp ${LANG}.po ${LANG}.new.po > /dev/null 2>&1; then + rm -f ${LANG}.new.po + else + if mv -f ${LANG}.new.po ${LANG}.po; then + echo "" + else + echo "msgmerge for $LANG.po failed: cannot move $LANG.new.po to $LANG.po" 1>&2 + rm -f ${LANG}.new.po + exit 1 + fi + fi + else + echo "msgmerge for $LANG failed!" + rm -f ${LANG}.new.po + fi + fi + echo "" +done + diff --git a/usb-printer-detector/po/uz.po b/usb-printer-detector/po/uz.po new file mode 100644 index 0000000..6c8deb1 --- /dev/null +++ b/usb-printer-detector/po/uz.po @@ -0,0 +1,3 @@ +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "Printer ulandi" + diff --git a/usb-printer-detector/po/zh_CN.po b/usb-printer-detector/po/zh_CN.po new file mode 100644 index 0000000..1091794 --- /dev/null +++ b/usb-printer-detector/po/zh_CN.po @@ -0,0 +1,3 @@ +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "打印机已连接" + diff --git a/usb-printer-detector/po/zh_HK.po b/usb-printer-detector/po/zh_HK.po new file mode 100644 index 0000000..2954327 --- /dev/null +++ b/usb-printer-detector/po/zh_HK.po @@ -0,0 +1,3 @@ +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "打印機已連接" + diff --git a/usb-printer-detector/po/zh_SG.po b/usb-printer-detector/po/zh_SG.po new file mode 100644 index 0000000..1091794 --- /dev/null +++ b/usb-printer-detector/po/zh_SG.po @@ -0,0 +1,3 @@ +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "打印机已连接" + diff --git a/usb-printer-detector/po/zh_TW.po b/usb-printer-detector/po/zh_TW.po new file mode 100644 index 0000000..5232ea5 --- /dev/null +++ b/usb-printer-detector/po/zh_TW.po @@ -0,0 +1,3 @@ +msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2" +msgstr "印表機已連接" + diff --git a/usb-printer-detector/src/upd-main.c b/usb-printer-detector/src/upd-main.c new file mode 100644 index 0000000..da0b98b --- /dev/null +++ b/usb-printer-detector/src/upd-main.c @@ -0,0 +1,223 @@ +/* +* USB-Printer-Detector +* +* Copyright 2012 Samsung Electronics Co., Ltd + +* Licensed under the Flora License, Version 1.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://floralicense.org/license/ + +* 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. +* +*/ + +#include + +#include "upd.h" +#include "upd-util.h" + +upd_appdata_t *g_upd_ad; + + +upd_appdata_t *upd_get_appdata() +{ + return g_upd_ad; +} + +static void _win_del(void *data, Evas_Object *obj, void *event) +{ + elm_exit(); +} + +static Evas_Object *_create_win(Evas_Object *parent, const char *name) +{ + Evas_Object *eo; + int w, h; + + eo = elm_win_add(parent, name, ELM_WIN_BASIC); + if (eo) { + elm_win_title_set(eo, name); + elm_win_borderless_set(eo, EINA_TRUE); + elm_win_alpha_set(eo, EINA_TRUE); + evas_object_smart_callback_add(eo, "delete,request", _win_del, NULL); + ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h); + evas_object_resize(eo, w, h); + evas_object_raise(eo); + } + + return eo; +} + +static void _usb_host_monitoring_cb(keynode_t *key, void *data) +{ + __UPD_FUNC_ENTER__; + int usb_host_state = -1; + //upd_appdata_t *ad = upd_get_appdata(); + + int error_code = vconf_get_int(VCONFKEY_SYSMAN_USB_HOST_STATUS, &usb_host_state); + if (error_code == -1) { + UPD_DEBUG("Error when check USB host status"); + return; + } + + // FIXME: should report SYSMAN to fix it + if (usb_host_state < VCONFKEY_SYSMAN_USB_HOST_CONNECTED) { + //TODO: Clean up all existing job + //upd_destroy_popup(); + //upd_remove_notification(ad->noti_id); + //ad->noti_id = -1; + + UPD_DEBUG("usb-printer-detector will be terminated!!!"); + __UPD_FUNC_EXIT__; + //_app_terminate(ad); + elm_exit(); + } + __UPD_FUNC_EXIT__; +} + +static int _app_create(void *data) +{ + __UPD_FUNC_ENTER__; + + upd_appdata_t *ad = upd_get_appdata(); + + if (data == NULL) { + UPD_DEBUG("Incorrect parameter\n"); + return -1; + } + + bindtextdomain(PACKAGE, LOCALEDIR); + + ad->popup_data = (upd_popup_t *) malloc(sizeof(upd_popup_t)); + if (!ad->popup_data) { + UPD_DEBUG("malloc failed\n"); + return -1; + } + memset(ad->popup_data, 0x0, sizeof(upd_popup_t)); + + ad->win = _create_win(NULL, PACKAGE); + + elm_win_indicator_mode_set(ad->win, ELM_WIN_INDICATOR_SHOW); + + int ret; + + if (!ecore_x_display_get()) { + return -1; + } + + ret = appcore_set_i18n(PACKAGE, NULL); + if (ret != 0) { + UPD_DEBUG("appcore_set_i18n error\n"); + return -1; + } + + char *printer_model = NULL; + + ret = upd_get_printer_info(&printer_model); + if (ret < 0) { + UPD_DEBUG("failed to get printer info"); + } + + if (printer_model == NULL) { + UPD_DEBUG("printer_model is NULL"); + printer_model = strdup("Unknown"); + } + + ret = pm_change_state(LCD_NORMAL); + if (ret < 0) { + UPD_DEBUG("power manager change state failed. (ret=%d)\n", ret); + } else { + UPD_DEBUG("power manager changed state\n"); + } + + upd_prepare_popup(UPD_NOTI_CONNECTED, NULL); + vconf_notify_key_changed(VCONFKEY_SYSMAN_USB_HOST_STATUS, _usb_host_monitoring_cb, NULL); + + ad->noti_id = -1; + upd_create_notification(&(ad->noti_id), printer_model); + UPD_DEBUG("Notification ID[%d]\n", ad->noti_id); + + //upd_prepare_popup(UPD_BROWSE_FILES_REQ, NULL); + + UPD_IF_FREE_MEM(printer_model); + + __UPD_FUNC_EXIT__; + + return 0; +} + +static int _app_terminate(void *data) +{ + __UPD_FUNC_ENTER__; + + if (data == NULL) { + UPD_DEBUG("Incorrect parameter\n"); + return -1; + } + + upd_appdata_t *ad = (upd_appdata_t *) data; + + if (ad->popup) { + evas_object_del(ad->popup); + ad->popup = NULL; + } + if (ad->win) { + evas_object_del(ad->win); + ad->win = NULL; + } + + // FIXME: which data should be freed? + vconf_ignore_key_changed(VCONFKEY_SYSMAN_USB_HOST_STATUS, _usb_host_monitoring_cb); + UPD_DEBUG("Will be removed noti id[%d]\n", ad->noti_id); + upd_remove_notification(ad->noti_id); + ad->noti_id = -1; + + __UPD_FUNC_EXIT__; + + return 0; +} + +static int _app_pause(void *data) +{ + __UPD_FUNC_ENTER__; + __UPD_FUNC_EXIT__; + return 0; +} + +static int _app_resume(void *data) +{ + __UPD_FUNC_ENTER__; + __UPD_FUNC_EXIT__; + return 0; +} + +static int _app_reset(bundle *b, void *data) +{ + __UPD_FUNC_ENTER__; + __UPD_FUNC_EXIT__; + return 0; +} + +int main(int argc, char *argv[]) +{ + upd_appdata_t ad; + struct appcore_ops ops = { + .create = _app_create, + .terminate = _app_terminate, + .pause = _app_pause, + .resume = _app_resume, + .reset = _app_reset, + }; + + memset(&ad, 0x0, sizeof(upd_appdata_t)); + ops.data = &ad; + g_upd_ad = &ad; + + return appcore_efl_main(PACKAGE, &argc, &argv, &ops); +} diff --git a/usb-printer-detector/src/upd-util.c b/usb-printer-detector/src/upd-util.c new file mode 100644 index 0000000..8349967 --- /dev/null +++ b/usb-printer-detector/src/upd-util.c @@ -0,0 +1,351 @@ +/* +* USB-Printer-Detector +* +* Copyright 2012 Samsung Electronics Co., Ltd + +* Licensed under the Flora License, Version 1.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://floralicense.org/license/ + +* 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. +* +*/ + +#include +#include +#include +#define _GNU_SOURCE +#include +#include +#include +#include "syspopup_caller.h" +#include "upd-util.h" + +#define UPD_1 "USB Printer Connected" + +#define USB_BACKEND "/usr/lib/cups/backend/usb" + +typedef struct { + unsigned int Bus; + unsigned int Level; + unsigned int Port; + int Vendor; + int ProductID; + char *Manufacturer; + char *ModelName; + char *ProductName; +} upd_printer_info_t; + +int upd_parse_info(char **output) +{ + __UPD_FUNC_ENTER__; + + + FILE *fp = NULL; + + if ((fp=popen(USB_BACKEND, "r"))==NULL) { + UPD_DEBUG("popen error(%s)",USB_BACKEND); + return -1; + } + + size_t len = 0; + ssize_t read_len = 0; + + char *str_buf = NULL; + char *mfg = NULL; + char *mdl = NULL; + char *mfg_temp = NULL; + char *mdl_temp = NULL; + + //TODO : use upd_printer_info_t list for multi-printer case + upd_printer_info_t *usb_printer = (upd_printer_info_t *) calloc(1, sizeof(upd_printer_info_t)); + + if (usb_printer == NULL) { + UPD_DEBUG("Failed to calloc usb_printer"); + goto ERROR; + } + + //Notice : thie use one usb printer at last + //TODO : apply multiple usb printer connection scenario + do { + read_len = getline(&str_buf, &len, fp); + UPD_DEBUG("Retrieved line of length %zu :\n", read_len); + UPD_DEBUG("%s", str_buf); + + if (strncmp(str_buf, "direct ",7) == 0 + && strstr(str_buf, "usb://") != NULL + && strstr(str_buf,"MFG") != NULL + && strstr(str_buf,"MDL") != NULL) { + // USB printer case + mfg = strstr(str_buf, "MFG:"); + mdl = strstr(str_buf, "MDL:"); + + if (mfg == NULL || mdl == NULL) { + UPD_DEBUG("failed to find MFG or MDL"); + goto ERROR; + } + mfg_temp = strdup(mfg+4); + mdl_temp = strdup(mdl+4); + + if (mfg_temp == NULL || mdl_temp == NULL) { + goto ERROR; + } + mfg = strtok(mfg_temp, ";"); + mdl = strtok(mdl_temp, ";"); + + if (mfg == NULL || mdl == NULL) { + UPD_DEBUG("failed to strtok"); + goto ERROR; + } + + if (strncasecmp(mfg_temp, "SAMSUNG", 7) == 0) { + usb_printer->Manufacturer = strdup("Samsung"); + } else if (strncasecmp(mfg_temp, "EPSON", 5) == 0) { + usb_printer->Manufacturer = strdup("Epson"); + } else if (strncasecmp(mfg_temp, "HP", 2) == 0) { + usb_printer->Manufacturer = strdup("HP"); + } else if (strncasecmp(mfg_temp, "Hewlett-Packard", 15) == 0) { + usb_printer->Manufacturer = strdup("HP"); + } else { + usb_printer->Manufacturer = strdup(""); + } + + usb_printer->ModelName = strdup(mdl_temp); + if (usb_printer->ModelName == NULL) { + goto ERROR; + } + + UPD_IF_FREE_MEM(mfg_temp); + UPD_IF_FREE_MEM(mdl_temp); + + UPD_DEBUG("[INFO] MFG %s MDL %s", usb_printer->Manufacturer, usb_printer->ModelName); + } else { + continue; + } + } while (read_len != -1); + + if (usb_printer->Manufacturer == NULL || usb_printer->ModelName == NULL) { + UPD_DEBUG("Manufacturer or ModelName is NULL"); + goto ERROR; + } + + if (strstr(usb_printer->ModelName, usb_printer->Manufacturer) != NULL + || strcmp(usb_printer->ModelName, "Unknown") == 0) { + *output= (char *) calloc(1, strlen(usb_printer->ModelName) +1); + if (*output == NULL) { + UPD_DEBUG("Failed to calloc"); + goto ERROR; + } + UPD_DEBUG("ModelName include Manufacturer again"); + UPD_DEBUG("ModelName %s Manufacturer %s",usb_printer->ModelName, usb_printer->Manufacturer); + snprintf(*output, strlen(usb_printer->ModelName)+1, "%s", usb_printer->ModelName); + } else { + *output= calloc(1, strlen(usb_printer->Manufacturer) + strlen(usb_printer->ModelName) + 2); + if (*output == NULL) { + UPD_DEBUG("Failed to calloc"); + goto ERROR; + } + UPD_DEBUG("ModelName do not include Manufacturer"); + UPD_DEBUG("ModelName %s Manufacturer %s",usb_printer->ModelName, usb_printer->Manufacturer); + snprintf(*output, strlen(usb_printer->Manufacturer) + +strlen(usb_printer->ModelName) + +2 + , "%s %s" + , usb_printer->Manufacturer + , usb_printer->ModelName); + } + UPD_IF_FREE_MEM(str_buf); + + int ret = pclose(fp); + if (!WIFEXITED(ret) || (WEXITSTATUS(ret) != 0)) { + UPD_DEBUG("pclose error!"); + } + + if (usb_printer != NULL) { + UPD_IF_FREE_MEM(usb_printer->Manufacturer); + UPD_IF_FREE_MEM(usb_printer->ModelName); + UPD_IF_FREE_MEM(usb_printer); + } + + __UPD_FUNC_EXIT__; + return 0; + +ERROR: + if (fp !=NULL) { + fclose(fp); + } + + UPD_IF_FREE_MEM(str_buf); + UPD_IF_FREE_MEM(mfg_temp); + UPD_IF_FREE_MEM(mdl_temp); + + if (usb_printer != NULL) { + UPD_IF_FREE_MEM(usb_printer->Manufacturer); + UPD_IF_FREE_MEM(usb_printer->ModelName); + UPD_IF_FREE_MEM(usb_printer); + } + return -1; +} + +int upd_get_printer_info(char **printer_model) +{ + __UPD_FUNC_ENTER__; + //TODO : use to parse lsusb or udev event + //issue : multi usb printer is connected + + int ret = -1; + + ret = upd_parse_info(printer_model); + if (ret == -1) { + UPD_DEBUG("Failed to upd_parse_info"); + return -1; + } + + __UPD_FUNC_EXIT__; + return 0; +} + +int upd_create_notification(int *noti_id, const char *printer_model) +{ + __UPD_FUNC_ENTER__; + + int res = -1; + notification_h noti = NULL; + + noti = notification_new(NOTIFICATION_TYPE_ONGOING, + NOTIFICATION_GROUP_ID_NONE, + NOTIFICATION_PRIV_ID_NONE); + if (noti == NULL) { + UPD_DEBUG("Failed to create Notification"); + goto ERROR; + } + + res = notification_set_text(noti, NOTIFICATION_TEXT_TYPE_TITLE, UPD_1, NULL, NOTIFICATION_VARIABLE_TYPE_NONE); + if (res != NOTIFICATION_ERROR_NONE) { + UPD_DEBUG("Failed to set Notification title [%d]", res); + goto ERROR; + } + + res = notification_set_text(noti, NOTIFICATION_TEXT_TYPE_CONTENT, printer_model, NULL, NOTIFICATION_VARIABLE_TYPE_NONE); + if (res != NOTIFICATION_ERROR_NONE) { + UPD_DEBUG("Failed to set Notification title [%d]", res); + goto ERROR; + } + + res = notification_set_image(noti, NOTIFICATION_IMAGE_TYPE_ICON, RESDIR"/images/A01_print_popup_icon_print.png"); + if (res != NOTIFICATION_ERROR_NONE) { + UPD_DEBUG("Failed to set image icon"); + goto ERROR; + } + + res = notification_insert(noti, noti_id); + if (res != NOTIFICATION_ERROR_NONE) { + UPD_DEBUG("Failed to insert Notification [%d]", res); + goto ERROR; + } + UPD_DEBUG("Notification ID [%d]", *noti_id); + + res = notification_free(noti); + if (res != NOTIFICATION_ERROR_NONE) { + UPD_DEBUG("Failed to set Notification title [%d]", res); + goto ERROR; + } + + __UPD_FUNC_EXIT__; + + return res; + +ERROR: + if (noti != NULL) { + notification_free(noti); + noti = NULL; + } + return -1; + +} + +int upd_remove_notification(int noti_id) +{ + __UPD_FUNC_ENTER__; + + if (noti_id != NOTIFICATION_PRIV_ID_NONE) { + notification_delete_by_priv_id(NOTI_PACKAGE, NOTIFICATION_TYPE_ONGOING, noti_id); + UPD_DEBUG("Notification is deleted"); + } + + __UPD_FUNC_EXIT__; + + return 0; +} + +int upd_draw_connected_syspopup(void) +{ + __UPD_FUNC_ENTER__; + + bundle *b = NULL; + int ret = -1; + + b = bundle_create(); + if (!b) { + UPD_DEBUG("FAIL: bundle_create()\n"); + return -1; + } + /* "0" means tickernoti style */ + ret = bundle_add(b, "0", "info"); + if (ret != 0) { + UPD_DEBUG("FAIL: bundle_add()\n"); + if (0 != bundle_free(b)) { + UPD_DEBUG("FAIL: bundle_free()\n"); + } + return -1; + } + + /* "1" means popup text */ + ret = bundle_add(b, "1", dgettext("usb-printer-detector", "IDS_COM_POP_PRINTER_CONNECTED_ABB2")); + if (ret != 0) { + UPD_DEBUG("FAIL: bundle_add()\n"); + if (0 != bundle_free(b)) { + UPD_DEBUG("FAIL: bundle_free()\n"); + } + return -1; + } + + /* "2" means orientation of tickernoti */ + ret = bundle_add(b, "2", "0"); + if (ret != 0) { + UPD_DEBUG("FAIL: bundle_add()\n"); + if (0 != bundle_free(b)) { + UPD_DEBUG("FAIL: bundle_free()\n"); + } + return -1; + } + + /* "3" means timeout(second) of tickernoti */ + ret = bundle_add(b, "3", "3"); + if (ret != 0) { + UPD_DEBUG("FAIL: bundle_add()\n"); + if (0 != bundle_free(b)) { + UPD_DEBUG("FAIL: bundle_free()\n"); + } + return -1; + } + + ret = syspopup_launch("tickernoti-syspopup", b); + if (ret != 0) { + UPD_DEBUG("FAIL: syspopup_launch()\n"); + } + + if (0 != bundle_free(b)) { + UPD_DEBUG("FAIL: bundle_free()\n"); + } + + __UPD_FUNC_EXIT__; + + return ret; +} diff --git a/usb-printer-detector/src/upd-view.c b/usb-printer-detector/src/upd-view.c new file mode 100644 index 0000000..0059bd1 --- /dev/null +++ b/usb-printer-detector/src/upd-view.c @@ -0,0 +1,63 @@ +/* +* USB-Printer-Detector +* +* Copyright 2012 Samsung Electronics Co., Ltd + +* Licensed under the Flora License, Version 1.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://floralicense.org/license/ + +* 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. +* +*/ + +#include +#include + +#include "upd.h" +#include "upd-strings.h" +#include "upd-util.h" + +#include + +void upd_prepare_popup(int type, void *userdata) +{ + __UPD_FUNC_ENTER__; + upd_appdata_t *ad = upd_get_appdata(); + upd_popup_t *pop = ad->popup_data; + + //upd_destroy_popup(); + + memset(pop, 0, sizeof(upd_popup_t)); + + pop->type = type; + + switch (pop->type) { +#if 0 + case UPD_BROWSE_FILES_REQ: { + snprintf(pop->text, sizeof(pop->text), _("IDS_UPD_BROWSE_Q")); // WFD_STR_POP_APRV_CONNECT4 + snprintf(pop->label1, sizeof(pop->label1), "%s", dgettext("sys_string", "IDS_COM_SK_YES")); // WFD_STR_BUTN_YES + snprintf(pop->label2, sizeof(pop->label2), "%s", dgettext("sys_string", "IDS_COM_SK_NO")); // WFD_STR_BUTN_NO + pop->resp_data1 = UPD_BROWSE_FILES_YES; + pop->resp_data2 = UPD_BROWSE_FILES_NO; + + ad->popup = upd_draw_pop_type_c(ad->win, pop); // normal popup + } + break; +#endif + case UPD_NOTI_CONNECTED: + upd_draw_connected_syspopup(); + break; + default: + break; + } + + __UPD_FUNC_EXIT__; + return; +}