--- /dev/null
+GangHeok Kim <gangheok.kim@samsung.com>
+Taeksu Shin <taeksu.shin@samsung.com>
+Dongwook Lee <dwmax.lee@samsung.com>
+Oleg Lekarev <o.lekarev@samsung.com>
+Dmitriy Gonzha <d.gonzha@samsung.com>
+Timofei Khirianov <t.khirianov@samsung.com>
+Ilya Mankaev <i.mankaev@samsung.com>
+Victor Malov <v.malov@samsung.com>
--- /dev/null
+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)
--- /dev/null
+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.
+
--- /dev/null
+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.
+
--- /dev/null
+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 <gangheok.kim@samsung.com> 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 <taeksu.shin@samsung.com> 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 <taeksu.shin@samsung.com> 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 <gangheok.kim@samsung.com> 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 <taeksu.shin@samsung.com> 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 <gangheok.kim@samsung.com> 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 <gangheok.kim@samsung.com> 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 <taeksu.shin@samsung.com> 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 <taeksu.shin@samsung.com> 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 <taeksu.shin@samsung.com> 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 <taeksu.shin@samsung.com> 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 <taeksu.shin@samsung.com> 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 <gangheok.kim@samsung.com> 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 <gangheok.kim@samsung.com> 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 <gangheok.kim@samsung.com> 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 <taeksu.shin@samsung.com> 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 <taeksu.shin@samsung.com> 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 <gangheok.kim@samsung.com> 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 <taeksu.shin@samsung.com> 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 <gangheok.kim@samsung.com> 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 <gangheok.kim@samsung.com> 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 <gangheok.kim@samsung.com> 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 <taeksu.shin@samsung.com> 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 <taeksu.shin@samsung.com> 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 <gangheok.kim@samsung.com> 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 <gangheok.kim@samsung.com> 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 <taeksu.shin@samsung.com> 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 <gangheok.kim@samsung.com> 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 <gangheok.kim@samsung.com> 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 <gangheok.kim@samsung.comO> 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 <gangheok.kim@samsung.com> 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 <gangheok.kim@samsung.com> 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 <gangheok.kim@samsung.com> 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 <gangheok.kim@samsung.com> 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 <gangheok.kim@samsung.com> 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 <taeksu.shin@samsung.com> 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 <gangheok.kim@samsung.com> 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 <gangheok.kim@samsung.com> 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 <gangheok.kim@samsung.com> 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 <gangheok.kim@samsung.com> 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 <gangheok.kim@samsung.com> 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 <taeksu.shin@samsung.com> 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 <taeksu.shin@samsung.com> 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 <gangheok.kim@samsung.com> 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 <gangheok.kim@samsung.com> 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 <taeksu.shin@samsung.com> 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 <gangheok.kim@samsung.com> 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 <taeksu.shin@samsung.com> 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 <taeksu.shin@samsung.com> 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 <taeksu.shin@samsung.com> 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 <taeksu.shin@samsung.com> 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 <gangheok.kim@samsung.com> 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 <gangheok.kim@samsung.com> 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 <gangheok.kim@samsung.com> 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 <taeksu.shin@samsung.com> 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 <taeksu.shin@samsung.com> 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 <dwmax.lee@samsung.com> 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 <taeksu.shin@samsung.com> 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 <gangheok.kim@samsung.com> 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 <gangheok.kim@samsung.com> 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 <gangheok.kim@samsung.com> 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 <taeksu.shin@samsung.com> 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 <gangheok.kim@samsung.com> 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 <gangheok.kim@samsung.com> 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 <gangheok.kim@samsung.com> 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 <gangheok.kim@samsung.com> 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 <taeksu.shin@samsung.com> 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 <gangheok.kim@samsung.com> 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 <gangheok.kim@samsung.com> 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 <gangheok.kim@samsung.com> 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 <gangheok.kim@samsung.com> 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 <taeksu.shin@samsung.com> 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 <gangheok.kim@samsung.com> 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 <gangheok.kim@samsung.com> 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 <gangheok.kim@samsung.com> 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 <gangheok.kim@samsung.com> 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 <taeksu.shin@samsung.com> 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 <taeksu.shin@samsung.com> 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 <gangheok.kim@samsung.com> 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 <gangheok.kim@samsung.com> 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 <taeksu.shin@samsung.com> 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 <taeksu.shin@samsung.com> 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 <taeksu.shin@samsung.com> 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 <taeksu.shin@samsung.com> 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 <taeksu.shin@samsung.com> 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 <taeksu.shin@samsung.com> 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 <taeksu.shin@samsung.com> 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 <gangheok.kim@samsung.com> 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 <taeksu.shin@samsung.com> 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 <taeksu.shin@samsung.com> 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 <taeksu.shin@samsung.com> 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 <gangheok.kim@samsung.com> 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 <d.gonzha@samsung.com> 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 <taeksu.shin@samsung.com> 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 <taeksu.shin@samsung.com> 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 <taeksu.shin@samsung.com> 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 <taeksu.shin@samsung.com> 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 <taeksu.shin@samsung.com> 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 <taeksu.shin@samsung.com> 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 <taeksu.shin@samsung.com> 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 <taeksu.shin@samsung.com> 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 <taeksu.shin@samsung.com> 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 <taeksu.shin@samsung.com> 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 <taeksu.shin@samsung.com> 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 <taeksu.shin@samsung.com> 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 <gangheok.kim@samsung.com> 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 <gangheok.kim@samsung.com> 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 <gangheok.kim@samsung.com> 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 <taeksu.shin@samsung.com> 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 <taeksu.shin@samsung.com> 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 <taeksu.shin@samsung.com> 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 <gangheok.kim@samsung.com> 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 <gangheok.kim@samsung.com> 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 <gangheok.kim@samsung.com> 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 <gangheok.kim@samsung.com> 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 <gangheok.kim@samsung.com> 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 <gangheok.kim@samsung.com> 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 <gangheok.kim@samsung.com> 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 <gangheok.kim@samsung.com> 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 <gangheok.kim@samsung.com> 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 <gangheok.kim@samsung.com> 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 <gangheok.kim@samsung.com> 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 <gangheok.kim@samsung.com> 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 <gangheok.kim@samsung.com> 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 <gangheok.kim@samsung.com> 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 <gangheok.kim@samsung.com> 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 <gangheok.kim@samsung.com> 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 <gangheok.kim@samsung.com> 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 <gangheok.kim@samsung.com> 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 <gangheok.kim@samsung.com> 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 <gangheok.kim@samsung.com> 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 <gangheok.kim@samsung.com> 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 <gangheok.kim@samsung.com> 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 <gangheok.kim@samsung.com> 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 <gangheok.kim@samsung.com> 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 <shouchen.yin@samsung.com> 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 <shouchen.yin@samsung.com> 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 <shouchen.yin@samsung.com> 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 <shouchen.yin@samsung.com> 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 <shouchen.yin@samsung.com> 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 <shouchen.yin@samsung.com> 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 <shouchen.yin@samsung.com> 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 <hanwu.chen@samsung.com> Fri, 12 Aug 2011 14:00:51 +0800
+
+
--- /dev/null
+Source: mobileprint
+Section: devel
+Priority: extra
+Maintainer: GangHeok Kim <gangheok.kim@samsung.com>, Taeksu Shin <taeksu.shin@samsung.com>, Dongwook Lee <dwmax.lee@samsung.com>
+Uploaders: GangHeok Kim <gangheok.kim@samsung.com>, Taeksu Shin <taeksu.shin@samsung.com>, Dongwook Lee <dwmax.lee@samsung.com>
+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
+
+
--- /dev/null
+CMakeLists.txt
--- /dev/null
+@PREFIX@/*
+/opt/share/applications/org.tizen.mobileprint.desktop
--- /dev/null
+#!/bin/sh
+
+if [ ${USER} = "root" ]
+then
+# Change file owner
+ chown -R 5000:5000 @PREFIX@/data
+ chown -R 5000:5000 @PREFIX@/cache
+fi
+
+echo "Done"
--- /dev/null
+/opt/usr/apps/org.tizen.usb-printer-detector/*
+/opt/share/applications/org.tizen.usb-printer-detector.desktop
--- /dev/null
+#!/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
--- /dev/null
+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)
+
--- /dev/null
+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")
--- /dev/null
+/*
+* 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 <ui-gadget.h>
+#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;
+}
+
--- /dev/null
+/*
+* 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;
+}
--- /dev/null
+/*
+* 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 <stdio.h>
+
+#include <app.h>
+#include <ui-gadget.h>
+#include <Ecore_X.h>
+#include <utilX.h>
+#include <X11/Xatom.h>
+#include <X11/Xutil.h>
+#include <utilX.h>
+#include <sys/utsname.h>
+#include "mobileprint.h"
+#include "pts_main_view.h"
+
+#include <unistd.h>
+#include <sys/types.h>
+#include <linux/unistd.h>
+#include <errno.h>
+
+/*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);
+}
--- /dev/null
+/*
+* 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 <app.h>
+#include <ui-gadget.h>
+
+#include <page_preview.h>
+#include <paper_size.h>
+#include <previewgen.h>
+#include <pt_api.h>
+
+#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;
+}
+
--- /dev/null
+/*
+* 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 <Ecore.h>
+
+#include <page_preview.h>
+#include <page_preview_thread.h>
+#include <previewgen.h>
+
+#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;
+}
--- /dev/null
+/*
+* 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 <Ecore.h>
+
+#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;
+}
--- /dev/null
+/*
+* 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 <Ecore.h>
+
+#include <page_preview.h>
+#include <page_preview_thread.h>
+#include <preview_coords.h>
+
+#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;
+}
--- /dev/null
+/*
+* 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;
+}
--- /dev/null
+/*
+* 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 <app.h>
+#include <ui-gadget.h>
+#include <vconf.h>
+#include <vconf-keys.h>
+#include <sysman.h>
+#include <syspopup_caller.h>
+#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;
+ }
+}
--- /dev/null
+/*
+* 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
--- /dev/null
+/*
+* 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 <string.h>
+#include <math.h>
+#include <fcntl.h>
+#include <glib.h>
+#include <app.h>
+#include <appsvc.h>
+#include <ui-gadget.h>
+#include <notification.h>
+#include <vconf.h>
+#include <vconf-keys.h>
+
+#include <page_preview.h>
+#include <paper_size.h>
+#include <previewgen.h>
+#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, "<align=center>%s</align>", printer_label);
+ if (printer_label != NULL) {
+ free(printer_label);
+ printer_label = NULL;
+ }
+ } else {
+ snprintf(label, 128, "<align=center>%s</align>", _("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;
+}
--- /dev/null
+/*
+* 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 <fcntl.h>
+#include <glib.h>
+#include <app.h>
+#include <appsvc.h>
+#include <ui-gadget.h>
+#include <notification.h>
+#include <vconf.h>
+#include <vconf-keys.h>
+
+#include <paper_size.h>
+#include <previewgen.h>
+#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;
+}
--- /dev/null
+/*
+* 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 <stdio.h>
+#include <string.h>
+#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; i<PT_QUALITY_ANY; i++) {
+ if (ugd->quality[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; i<PT_PAPER_ANY; i++) {
+ if (ugd->paper_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; i<PT_GRAYSCALE_ANY; i++) {
+ if (ugd->color[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; i<pt_get_print_option_papersize_num(); i++) {
+ if (ugd->paper_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;
+}
--- /dev/null
+#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";
+ }
+ }
+ }
+}
--- /dev/null
+#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";
+ }
+ }
+ }
+ }
+ }
+}
--- /dev/null
+/*
+* 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_ */
+
--- /dev/null
+/*
+* 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_ */
+
--- /dev/null
+/*
+* 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 <Elementary.h>
+#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__ */
--- /dev/null
+/*
+* 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 <app.h>
+
+#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_ */
+
--- /dev/null
+/*
+* 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 <Ecore.h>
+
+#include <paper_size.h>
+#include <pdfgen.h>
+
+#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_ */
+
--- /dev/null
+/*
+* 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 <paper_size.h>
+#include <pdfgen.h>
+
+#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_ */
+
--- /dev/null
+/*
+* 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 <Ecore.h>
+
+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_ */
+
--- /dev/null
+/*
+* 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_ */
+
--- /dev/null
+/*
+* 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 <Ecore.h>
+#include <stdio.h>
+#include <string.h>
+#include <Elementary.h>
+#include <notification.h>
+#include <pt_api.h>
+#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_ */
+
--- /dev/null
+/*
+* 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 <dlog.h>
+
+#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__ */
--- /dev/null
+/*
+* 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_ */
--- /dev/null
+/*
+* 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 <app.h>
+
+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_ */
--- /dev/null
+/*
+* 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_ */
--- /dev/null
+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;
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns="http://tizen.org/ns/packages" package="org.tizen.mobileprint" version="0.2.15-54" install-location="internal-only">
+ <label>MobilePrint</label>
+ <author email="gangheok.kim@samsung.com" href="www.samsung.com">GangHeok Kim</author>
+ <author email="taeksu.shin@samsung.com" href="www.samsung.com">Taeksu Shin</author>
+ <author email="dwmax.lee@samsung.com" href="www.samsung.com">Dongwook Lee</author>
+ <description>Mobile Print Application</description>
+ <ui-application appid="org.tizen.mobileprint" exec="/opt/usr/apps/org.tizen.mobileprint/bin/mobileprint" nodisplay="true" multiple="false" type="capp" taskmanage="false">
+ <icon>org.tizen.mobileprint.png</icon>
+ <label>Mobileprint</label>
+ <label xml:lang="en-us">Mobileprint</label>
+ <label xml:lang="ko-kr">모바일프린트</label>
+ <application-service>
+ <operation name="http://tizen.org/appcontrol/operation/PRINT"/>
+ <mime name="image/*"/>
+ <mime name="application/pdf"/>
+ </application-service>
+ </ui-application>
+</manifest>
--- /dev/null
+# 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})
--- /dev/null
+# 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
--- /dev/null
+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 "تم فصل الطابعة"
+
--- /dev/null
+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"
+
--- /dev/null
+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 "Принтерът не е свързан"
+
--- /dev/null
+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"
+
--- /dev/null
+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"
+
--- /dev/null
+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"
+
--- /dev/null
+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"
+
--- /dev/null
+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 "Αποσύνδεση εκτυπωτή"
+
--- /dev/null
+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"
+
--- /dev/null
+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"
+
--- /dev/null
+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"
+
--- /dev/null
+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"
+
--- /dev/null
+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"
+
--- /dev/null
+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."
+
--- /dev/null
+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"
+
--- /dev/null
+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"
+
--- /dev/null
+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"
+
--- /dev/null
+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"
+
--- /dev/null
+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"
+
--- /dev/null
+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"
+
--- /dev/null
+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 "प्रिंटर डिसकनेक्ट किया गया"
+
--- /dev/null
+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"
+
--- /dev/null
+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"
+
--- /dev/null
+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 "Տպիչն անջատված է"
+
--- /dev/null
+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"
+
--- /dev/null
+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"
+
--- /dev/null
+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 "プリンターが取り外されました。"
+
--- /dev/null
+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 "პრინტერი გათიშულია"
+
--- /dev/null
+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 "Принтер ажыратылды"
+
--- /dev/null
+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 "프린터와 연결이 끊어졌습니다"
+
--- /dev/null
+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"
+
--- /dev/null
+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"
+
--- /dev/null
+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 "Печатачот не е поврзан"
+
--- /dev/null
+# 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 <EMAIL@ADDRESS>, 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 <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\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 ""
--- /dev/null
+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"
+
--- /dev/null
+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"
+
--- /dev/null
+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"
+
--- /dev/null
+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"
+
--- /dev/null
+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"
+
--- /dev/null
+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ă"
+
--- /dev/null
+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 "Принтер отключен"
+
--- /dev/null
+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á"
+
--- /dev/null
+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"
+
--- /dev/null
+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"
+
--- /dev/null
+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"
+
--- /dev/null
+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"
+
--- /dev/null
+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 "Принтер відключено"
+
--- /dev/null
+#!/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
+
--- /dev/null
+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"
+
--- /dev/null
+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 "打印机已断开"
+
--- /dev/null
+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 "打印機已中斷連接"
+
--- /dev/null
+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 "打印机已断开"
+
--- /dev/null
+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 "印表機已中斷連接"
+
--- /dev/null
+#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)
--- /dev/null
+/*
+* 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 <Evas.h>
+
+#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_ */
+
--- /dev/null
+/*
+* 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_ */
+
--- /dev/null
+/*
+* 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 <Evas.h>
+
+#include <previewgen.h>
+#include <preview_coords.h>
+
+#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_ */
+
--- /dev/null
+/*
+* 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_ */
+
--- /dev/null
+/*
+* 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 <previewgen.h>
+
+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_ */
+
--- /dev/null
+/*
+* 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_ */
+
--- /dev/null
+/*
+* 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 <pts_debug.h>
+
+
+/* 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_ */
+
--- /dev/null
+/*
+* 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 <previewgen.h>
+#include <paper_size.h>
+
+
+#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_ */
+
--- /dev/null
+/*
+* 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 <Evas.h>
+
+int get_image_resolution(const char *path, int *resx, int *resy);
+int rotate90_image(Evas_Object *img);
+
+#endif /* _PREVIEW_UTIL_H_INCLUDED_ */
--- /dev/null
+/*
+* 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 <stdio.h>
+
+#include "paper_size.h"
+/*#include <pts_debug.h>*/
+
+
+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_ */
+
--- /dev/null
+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})
+
--- /dev/null
+/*
+* 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 <Evas.h>
+#include <Evas_Engine_Buffer.h>
+
+#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;
+}
+
--- /dev/null
+/*
+* 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 <Ecore.h>
+#include <Evas.h>
+
+#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;
+}
+
--- /dev/null
+/*
+* 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 <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <unistd.h>
+
+#include <Ecore.h>
+#include <Evas.h>
+/*#include <Evas_Engine_Buffer.h>*/
+
+#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;
+}
+
--- /dev/null
+/*
+* 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;
+}
--- /dev/null
+/*
+* 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 <stdlib.h>
+#include <string.h>
+
+#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;
+}
+
--- /dev/null
+/*
+* 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 <stdlib.h>
+#include <string.h>
+
+#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;
+}
+
--- /dev/null
+/*
+* 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 <stdlib.h>
+
+#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;
+}
+
--- /dev/null
+/*
+* 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 <string.h>
+
+#include <Evas.h>
+#include <Ecore_Evas.h>
+//#include <Evas_Engine_Buffer.h>
+
+#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;
+}
+
--- /dev/null
+/*
+* 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 <libgen.h> //basename and dirname
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <unistd.h>
+
+#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] <PDF-file>, we use "pdfinfo <PDF-file>" 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] <PDF-file>, we use "pdfinfo <PDF-file>" 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
--- /dev/null
+*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: "<</PageSize[153 198]/ImagingBBox null>>setpagedevice"
+*PageSize Letter/US Letter: "<</PageSize[612 792]/ImagingBBox null>>setpagedevice"
+*PageSize Legal/US Legal: "<</PageSize[612 1008]/ImagingBBox null>>setpagedevice"
+*PageSize Executive/US Executive: "<</PageSize[522 756]/ImagingBBox null>>setpagedevice"
+*PageSize Tabloid/US Tabloid: "<</PageSize[792 1224]/ImagingBBox null>>setpagedevice"
+*PageSize A3/A3: "<</PageSize[842 1191]/ImagingBBox null>>setpagedevice"
+*PageSize A4/A4: "<</PageSize[595 842]/ImagingBBox null>>setpagedevice"
+*PageSize A5/A5: "<</PageSize[421 595]/ImagingBBox null>>setpagedevice"
+*PageSize B5/B5 (JIS): "<</PageSize[516 729]/ImagingBBox null>>setpagedevice"
+*PageSize EnvISOB5/Envelope B5: "<</PageSize[499 709]/ImagingBBox null>>setpagedevice"
+*PageSize Env10/Envelope #10: "<</PageSize[297 684]/ImagingBBox null>>setpagedevice"
+*PageSize EnvC5/Envelope C5: "<</PageSize[459 649]/ImagingBBox null>>setpagedevice"
+*PageSize EnvDL/Envelope DL: "<</PageSize[312 624]/ImagingBBox null>>setpagedevice"
+*PageSize EnvMonarch/Envelope Monarch: "<</PageSize[279 540]/ImagingBBox null>>setpagedevice"
+*PageSize 2L/5x7 "<</PageSize[360 504]/ImagingBBox null>>setpagedevice"
+*PageSize 4x6/4x6in: "<</PageSize[288 432]/ImagingBBox null>>setpagedevice"
+*PageSize L/3.5x5: "<</PageSize[252 360]/ImagingBBox null>>setpagedevice"
+*PageSize Hagaki_Postcard/Hagaki Postcard: "<</PageSize[283 420]/ImagingBBox null>>setpagedevice"
+*PageSize Business_card/Business card: "<</PageSize[153 243]/ImagingBBox null>>setpagedevice"
+*PageSize 8x10/8x10in: "<</PageSize[576 720]/ImagingBBox null>>setpagedevice"
+*PageSize 11x17/11x17in: "<</PageSize[792 1224]/ImagingBBox null>>setpagedevice"
+*CloseUI: *PageSize
+
+*OpenUI *PageRegion: PickOne
+*OrderDependency: 10 AnySetup *PageRegion
+*DefaultPageRegion: A4
+*PageRegion Preview/Preview: "<</PageSize[153 198]/ImagingBBox null>>setpagedevice"
+*PageRegion Letter/US Letter: "<</PageSize[612 792]/ImagingBBox null>>setpagedevice"
+*PageRegion Legal/US Legal: "<</PageSize[612 1008]/ImagingBBox null>>setpagedevice"
+*PageRegion Executive/US Executive: "<</PageSize[522 756]/ImagingBBox null>>setpagedevice"
+*PageRegion Tabloid/US Tabloid: "<</PageSize[792 1224]/ImagingBBox null>>setpagedevice"
+*PageRegion A3/A3: "<</PageSize[842 1191]/ImagingBBox null>>setpagedevice"
+*PageRegion A4/A4: "<</PageSize[595 842]/ImagingBBox null>>setpagedevice"
+*PageRegion A5/A5: "<</PageSize[421 595]/ImagingBBox null>>setpagedevice"
+*PageRegion B5/B5 (JIS): "<</PageSize[516 729]/ImagingBBox null>>setpagedevice"
+*PageRegion EnvISOB5/Envelope B5: "<</PageSize[499 709]/ImagingBBox null>>setpagedevice"
+*PageRegion Env10/Envelope #10: "<</PageSize[297 684]/ImagingBBox null>>setpagedevice"
+*PageRegion EnvC5/Envelope C5: "<</PageSize[459 649]/ImagingBBox null>>setpagedevice"
+*PageRegion EnvDL/Envelope DL: "<</PageSize[312 624]/ImagingBBox null>>setpagedevice"
+*PageRegion EnvMonarch/Envelope Monarch: "<</PageSize[279 540]/ImagingBBox null>>setpagedevice"
+*PageRegion 2L/5x7 "<</PageSize[360 504]/ImagingBBox null>>setpagedevice"
+*PageRegion 4x6/4x6in: "<</PageSize[288 432]/ImagingBBox null>>setpagedevice"
+*PageRegion L/3.5x5: "<</PageSize[252 360]/ImagingBBox null>>setpagedevice"
+*PageRegion Hagaki_Postcard/Hagaki Postcard: "<</PageSize[283 420]/ImagingBBox null>>setpagedevice"
+*PageRegion Business_card/Business card: "<</PageSize[153 243]/ImagingBBox null>>setpagedevice"
+*PageRegion 8x10/8x10in: "<</PageSize[576 720]/ImagingBBox null>>setpagedevice"
+*PageRegion 11x17/11x17in: "<</PageSize[792 1224]/ImagingBBox null>>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: "<</MediaType(Plain)/cupsMediaType 0>>setpagedevice"
+*MediaType Bond/Bond Paper: "<</MediaType(Bond)/cupsMediaType 1>>setpagedevice"
+*MediaType Special/Special Paper: "<</MediaType(Special)/cupsMediaType 2>>setpagedevice"
+*MediaType Transparency/Transparency: "<</MediaType(Transparency)/cupsMediaType 3>>setpagedevice"
+*MediaType Glossy/Glossy Paper: "<</MediaType(Glossy)/cupsMediaType 4>>setpagedevice"
+*CloseUI: *MediaType
+
+*OpenUI *InputSlot/Media Source: PickOne
+*OrderDependency: 10 AnySetup *InputSlot
+*DefaultInputSlot: Tray
+*InputSlot Tray/Tray: "<</cupsMediaPosition 1>>setpagedevice"
+*InputSlot Manual/Manual Feed: "<</cupsMediaPosition 2>>setpagedevice"
+*InputSlot Envelope/Envelope Feed: "<</cupsMediaPosition 3>>setpagedevice"
+*CloseUI: *InputSlot
+
+*OpenUI *Duplex/Double-Sided Printing: PickOne
+*OrderDependency: 20 AnySetup *Duplex
+*DefaultDuplex: None
+*Duplex None/Off: "<</Duplex false>>setpagedevice"
+*Duplex DuplexNoTumble/Long Edge (Standard): "<</Duplex true/Tumble false>>setpagedevice"
+*Duplex DuplexTumble/Short Edge (Flip): "<</Duplex true/Tumble true>>setpagedevice"
+*CloseUI: *Duplex
+
+*OpenUI *Resolution/Output Resolution: PickOne
+*OrderDependency: 20 AnySetup *Resolution
+*DefaultResolution: 300dpi
+*Resolution 75dpi/75 DPI: "<</HWResolution[75 75]>>setpagedevice"
+*Resolution 100dpi/100 DPI: "<</HWResolution[100 100]>>setpagedevice"
+*Resolution 150dpi/150 DPI: "<</HWResolution[150 150]>>setpagedevice"
+*Resolution 300dpi/300 DPI: "<</HWResolution[300 300]>>setpagedevice"
+*CloseUI: *Resolution
+
+*OpenUI *ColorModel/Output Mode: PickOne
+*OrderDependency: 10 AnySetup *ColorModel
+*DefaultColorModel: CMYK
+*ColorModel W: "<</cupsColorSpace 0>>setpagedevice"
+*ColorModel RGB: "<</cupsColorSpace 1>>setpagedevice"
+*ColorModel RGBA: "<</cupsColorSpace 2>>setpagedevice"
+*ColorModel K: "<</cupsColorSpace 3>>setpagedevice"
+*ColorModel CMY: "<</cupsColorSpace 4>>setpagedevice"
+*ColorModel YMC: "<</cupsColorSpace 5>>setpagedevice"
+*ColorModel CMYK: "<</cupsColorSpace 6>>setpagedevice"
+*ColorModel YMCK: "<</cupsColorSpace 7>>setpagedevice"
+*ColorModel KCMY: "<</cupsColorSpace 8>>setpagedevice"
+*ColorModel KCMYcm: "<</cupsColorSpace 9>>setpagedevice"
+*ColorModel GMCK: "<</cupsColorSpace 10>>setpagedevice"
+*ColorModel GMCS: "<</cupsColorSpace 11>>setpagedevice"
+*ColorModel WHITE: "<</cupsColorSpace 12>>setpagedevice"
+*ColorModel GOLD: "<</cupsColorSpace 13>>setpagedevice"
+*ColorModel SILVER: "<</cupsColorSpace 14>>setpagedevice"
+*ColorModel CIEXYZ: "<</cupsColorSpace 15>>setpagedevice"
+*ColorModel CIELab: "<</cupsColorSpace 16>>setpagedevice"
+*ColorModel RGBW: "<</cupsColorSpace 17>>setpagedevice"
+*ColorModel ICC1: "<</cupsColorSpace 32>>setpagedevice"
+*ColorModel ICC2: "<</cupsColorSpace 33>>setpagedevice"
+*ColorModel ICC3: "<</cupsColorSpace 34>>setpagedevice"
+*ColorModel ICC4: "<</cupsColorSpace 35>>setpagedevice"
+*ColorModel ICC5: "<</cupsColorSpace 36>>setpagedevice"
+*ColorModel ICC6: "<</cupsColorSpace 37>>setpagedevice"
+*ColorModel ICC7: "<</cupsColorSpace 38>>setpagedevice"
+*ColorModel ICC8: "<</cupsColorSpace 39>>setpagedevice"
+*ColorModel ICC9: "<</cupsColorSpace 40>>setpagedevice"
+*ColorModel ICCA: "<</cupsColorSpace 41>>setpagedevice"
+*ColorModel ICCB: "<</cupsColorSpace 42>>setpagedevice"
+*ColorModel ICCC: "<</cupsColorSpace 43>>setpagedevice"
+*ColorModel ICCD: "<</cupsColorSpace 44>>setpagedevice"
+*ColorModel ICCE: "<</cupsColorSpace 45>>setpagedevice"
+*ColorModel ICCF: "<</cupsColorSpace 46>>setpagedevice"
+*CloseUI: *ColorModel
+
+*OpenUI *cupsBitsPerColor/Bits Per Color: PickOne
+*OrderDependency: 10 AnySetup *cupsBitsPerColor
+*DefaultcupsBitsPerColor: 8
+*cupsBitsPerColor 1: "<</cupsBitsPerColor 1>>setpagedevice"
+*cupsBitsPerColor 2: "<</cupsBitsPerColor 2>>setpagedevice"
+*cupsBitsPerColor 4: "<</cupsBitsPerColor 4>>setpagedevice"
+*cupsBitsPerColor 8: "<</cupsBitsPerColor 8>>setpagedevice"
+*cupsBitsPerColor 16: "<</cupsBitsPerColor 8/cupsPreferredBitsPerColor 16>>setpagedevice"
+*CloseUI: *cupsBitsPerColor
+
+*OpenUI *cupsColorOrder/Color Order: PickOne
+*OrderDependency: 10 AnySetup *cupsColorOrder
+*DefaultcupsColorOrder: Chunked
+*cupsColorOrder Chunked: "<</cupsColorOrder 0>>setpagedevice"
+*cupsColorOrder Banded: "<</cupsColorOrder 1>>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$".
+*%
--- /dev/null
+<manifest>
+ <define>
+ <domain name="mobileprint" policy="shared"/>
+ <request>
+ <smack request="cups" type="rx"/>
+ </request>
+ <permit>
+ <smack permit="_" type="rx"/>
+ </permit>
+ </define>
+ <request>
+ <domain name="mobileprint"/>
+ </request>
+</manifest>
--- /dev/null
+<manifest>
+ <define>
+ <domain name="usb-printer-detector" policy="shared"/>
+ </define>
+ <request>
+ <domain name="usb-printer-detector"/>
+ </request>
+</manifest>
--- /dev/null
+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
--- /dev/null
+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)
--- /dev/null
+/*
+* 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<br>"\
+ "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__ */
--- /dev/null
+/*
+* 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 <notification.h>
+
+#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 <dlog.h>
+
+#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__ */
--- /dev/null
+/*
+* 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 <appcore-efl.h>
+#include <Ecore_X.h>
+#include <Elementary.h>
+#include <appsvc.h>
+#include <aul.h>
+#include <bundle.h>
+#include <notification.h>
+#include <vconf.h>
+#include <pmapi.h>
+
+#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__ */
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns="http://tizen.org/ns/packages" package="org.tizen.usb-printer-detector" version="0.2.10-4" install-location="internal-only">
+ <label>usb-printer-detector</label>
+ <author email="gangheok.kim@samsung.com" href="www.samsung.com">GangHeok Kim</author>
+ <author email="taeksu.shin@samsung.com" href="www.samsung.com">Taeksu Shin</author>
+ <author email="dwmax.lee@samsung.com" href="www.samsung.com">Dongwook Lee</author>
+ <description>USB Host Printer UI Application</description>
+ <ui-application appid="org.tizen.usb-printer-detector" exec="/opt/usr/apps/org.tizen.usb-printer-detector/bin/usb-printer-detector" nodisplay="true" multiple="false" type="capp" taskmanage="false">
+ <label>usb-printer-detector</label>
+ <label xml:lang="en-us">usb-printer-detector</label>
+ <label xml:lang="ko-kr">USB프린터감지기</label>
+ </ui-application>
+</manifest>
--- /dev/null
+# 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})
--- /dev/null
+# List of source files containing translatable strings.
+upd-strings.h
--- /dev/null
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "تم توصيل الطابعة"
+
--- /dev/null
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Printer qoşuldu"
+
--- /dev/null
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Принтерът е свързан"
+
--- /dev/null
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Impressora connectada"
+
--- /dev/null
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Tiskárna byla připojena"
+
--- /dev/null
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Printer tilsluttet"
+
--- /dev/null
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Drucker verbunden"
+
--- /dev/null
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Συνδέθηκε εκτυπωτής"
+
--- /dev/null
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Printer connected"
+
--- /dev/null
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Printer connected"
+
--- /dev/null
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Printer connected"
+
--- /dev/null
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Impresora conectada"
+
--- /dev/null
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Impresora conectada"
+
--- /dev/null
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Printer on ühendatud"
+
--- /dev/null
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Inprimagailua konektatuta"
+
--- /dev/null
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Tulostin kytketty"
+
--- /dev/null
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Imprimante connectée"
+
--- /dev/null
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Imprimante connectée"
+
--- /dev/null
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Printéir ceangailte"
+
--- /dev/null
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Impresora conectada"
+
--- /dev/null
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "प्रिंटर कनेक्ट किया गया"
+
--- /dev/null
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Pisač spojen"
+
--- /dev/null
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Nyomtató csatlakoztatva"
+
--- /dev/null
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Տպիչը միացված է"
+
--- /dev/null
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Prentari tengdur"
+
--- /dev/null
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Stampante connessa"
+
--- /dev/null
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "プリンターが接続されました。"
+
--- /dev/null
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "პრინტერი დაკავშირებულია"
+
--- /dev/null
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Принтер қосылды"
+
--- /dev/null
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "프린터가 연결되었습니다"
+
--- /dev/null
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Prijungtas spausdintuvas"
+
--- /dev/null
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Printeris pievienots"
+
--- /dev/null
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Поврзан е печатач"
+
--- /dev/null
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Skriver tilkoblet"
+
--- /dev/null
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Printer aangesloten"
+
--- /dev/null
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Drukarka podłączona"
+
--- /dev/null
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Impressora conectada"
+
--- /dev/null
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Impressora ligada"
+
--- /dev/null
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Imprimantă conectată"
+
--- /dev/null
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Принтер подключен"
+
--- /dev/null
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Tlačiareň je pripojená"
+
--- /dev/null
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Tiskalnik je povezan"
+
--- /dev/null
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Štampač je priključen"
+
--- /dev/null
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Skrivare ansluten"
+
--- /dev/null
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Yazıcı bağlı"
+
--- /dev/null
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Принтер підключено"
+
--- /dev/null
+#!/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
+
--- /dev/null
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Printer ulandi"
+
--- /dev/null
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "打印机已连接"
+
--- /dev/null
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "打印機已連接"
+
--- /dev/null
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "打印机已连接"
+
--- /dev/null
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "印表機已連接"
+
--- /dev/null
+/*
+* 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 <libintl.h>
+
+#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);
+}
--- /dev/null
+/*
+* 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 <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#define _GNU_SOURCE
+#include <unistd.h>
+#include <linux/unistd.h>
+#include <libintl.h>
+#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;
+}
--- /dev/null
+/*
+* 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 <libintl.h>
+#include <glib.h>
+
+#include "upd.h"
+#include "upd-strings.h"
+#include "upd-util.h"
+
+#include <app_service.h>
+
+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;
+}