Tizen 2.1 base
authorJinkun Jang <jinkun.jang@samsung.com>
Tue, 12 Mar 2013 16:37:45 +0000 (01:37 +0900)
committerJinkun Jang <jinkun.jang@samsung.com>
Tue, 12 Mar 2013 16:37:45 +0000 (01:37 +0900)
194 files changed:
AUTHORS [new file with mode: 0644]
CMakeLists.txt [new file with mode: 0644]
LICENSE.Flora [new file with mode: 0644]
NOTICE.Flora [new file with mode: 0644]
debian/changelog [new file with mode: 0755]
debian/compat [new file with mode: 0644]
debian/control [new file with mode: 0755]
debian/docs [new file with mode: 0644]
debian/org.tizen.mobileprint.install.in [new file with mode: 0755]
debian/org.tizen.mobileprint.postinst.in [new file with mode: 0755]
debian/org.tizen.usb-printer-detector.install.in [new file with mode: 0644]
debian/rules [new file with mode: 0755]
mobileprint/CMakeLists.txt [new file with mode: 0644]
mobileprint/app/CMakeLists.txt [new file with mode: 0644]
mobileprint/app/icon_mobileprint.png [new file with mode: 0644]
mobileprint/app/image_editor_conn.c [new file with mode: 0644]
mobileprint/app/loading_animation.c [new file with mode: 0644]
mobileprint/app/mobileprint.c [new file with mode: 0644]
mobileprint/app/preview_content.c [new file with mode: 0644]
mobileprint/app/preview_engine.c [new file with mode: 0644]
mobileprint/app/preview_model.c [new file with mode: 0644]
mobileprint/app/preview_task_model.c [new file with mode: 0644]
mobileprint/app/preview_widget.c [new file with mode: 0644]
mobileprint/app/pts_common.c [new file with mode: 0644]
mobileprint/app/pts_list_view.c [new file with mode: 0644]
mobileprint/app/pts_main_view.c [new file with mode: 0644]
mobileprint/app/pts_print_search.c [new file with mode: 0644]
mobileprint/app/pts_setting_view.c [new file with mode: 0644]
mobileprint/edc/genlist_custom.edc [new file with mode: 0644]
mobileprint/edc/mobileprint.edc [new file with mode: 0644]
mobileprint/images/A01_print_popup_icon_Rotate.png [new file with mode: 0644]
mobileprint/images/A01_print_popup_icon_Rotate02.png [new file with mode: 0644]
mobileprint/images/A01_print_popup_icon_print.png [new file with mode: 0644]
mobileprint/images/A01_print_popup_icon_scaling.png [new file with mode: 0644]
mobileprint/images/A01_print_popup_icon_setting.png [new file with mode: 0644]
mobileprint/images/A01_print_popup_icon_size.png [new file with mode: 0644]
mobileprint/include/image_editor_conn.h [new file with mode: 0644]
mobileprint/include/loading_animation.h [new file with mode: 0644]
mobileprint/include/mobileprint.h [new file with mode: 0755]
mobileprint/include/preview_content.h [new file with mode: 0644]
mobileprint/include/preview_engine.h [new file with mode: 0644]
mobileprint/include/preview_model.h [new file with mode: 0644]
mobileprint/include/preview_task_model.h [new file with mode: 0644]
mobileprint/include/preview_widget.h [new file with mode: 0644]
mobileprint/include/pts_common.h [new file with mode: 0755]
mobileprint/include/pts_debug.h [new file with mode: 0755]
mobileprint/include/pts_list_view.h [new file with mode: 0755]
mobileprint/include/pts_main_view.h [new file with mode: 0755]
mobileprint/include/pts_setting_view.h [new file with mode: 0755]
mobileprint/mobileprint.desktop.in [new file with mode: 0644]
mobileprint/mobileprint.xml [new file with mode: 0644]
mobileprint/po/CMakeLists.txt [new file with mode: 0755]
mobileprint/po/POTFILES.in [new file with mode: 0755]
mobileprint/po/ar.po [new file with mode: 0644]
mobileprint/po/az.po [new file with mode: 0644]
mobileprint/po/bg.po [new file with mode: 0644]
mobileprint/po/ca.po [new file with mode: 0644]
mobileprint/po/cs.po [new file with mode: 0644]
mobileprint/po/da.po [new file with mode: 0644]
mobileprint/po/de_DE.po [new file with mode: 0644]
mobileprint/po/el_GR.po [new file with mode: 0644]
mobileprint/po/en.po [new file with mode: 0644]
mobileprint/po/en_PH.po [new file with mode: 0644]
mobileprint/po/en_US.po [new file with mode: 0644]
mobileprint/po/es_ES.po [new file with mode: 0644]
mobileprint/po/es_US.po [new file with mode: 0644]
mobileprint/po/et.po [new file with mode: 0644]
mobileprint/po/eu.po [new file with mode: 0644]
mobileprint/po/fi.po [new file with mode: 0644]
mobileprint/po/fr_CA.po [new file with mode: 0644]
mobileprint/po/fr_FR.po [new file with mode: 0644]
mobileprint/po/ga.po [new file with mode: 0644]
mobileprint/po/gl.po [new file with mode: 0644]
mobileprint/po/hi.po [new file with mode: 0644]
mobileprint/po/hr.po [new file with mode: 0644]
mobileprint/po/hu.po [new file with mode: 0644]
mobileprint/po/hy.po [new file with mode: 0644]
mobileprint/po/is.po [new file with mode: 0644]
mobileprint/po/it_IT.po [new file with mode: 0644]
mobileprint/po/ja_JP.po [new file with mode: 0644]
mobileprint/po/ka.po [new file with mode: 0644]
mobileprint/po/kk.po [new file with mode: 0644]
mobileprint/po/ko_KR.po [new file with mode: 0644]
mobileprint/po/lt.po [new file with mode: 0644]
mobileprint/po/lv.po [new file with mode: 0644]
mobileprint/po/mk.po [new file with mode: 0644]
mobileprint/po/mobileprint.pot [new file with mode: 0644]
mobileprint/po/nb.po [new file with mode: 0644]
mobileprint/po/nl_NL.po [new file with mode: 0644]
mobileprint/po/pl.po [new file with mode: 0644]
mobileprint/po/pt_BR.po [new file with mode: 0644]
mobileprint/po/pt_PT.po [new file with mode: 0644]
mobileprint/po/ro.po [new file with mode: 0644]
mobileprint/po/ru_RU.po [new file with mode: 0644]
mobileprint/po/sk.po [new file with mode: 0644]
mobileprint/po/sl.po [new file with mode: 0644]
mobileprint/po/sr.po [new file with mode: 0644]
mobileprint/po/sv.po [new file with mode: 0644]
mobileprint/po/tr_TR.po [new file with mode: 0644]
mobileprint/po/uk.po [new file with mode: 0644]
mobileprint/po/update-po.sh [new file with mode: 0755]
mobileprint/po/uz.po [new file with mode: 0644]
mobileprint/po/zh_CN.po [new file with mode: 0644]
mobileprint/po/zh_HK.po [new file with mode: 0644]
mobileprint/po/zh_SG.po [new file with mode: 0644]
mobileprint/po/zh_TW.po [new file with mode: 0644]
mobileprint/previewgen/CMakeLists.txt [new file with mode: 0644]
mobileprint/previewgen/include/evas_render.h [new file with mode: 0644]
mobileprint/previewgen/include/image_scaler.h [new file with mode: 0644]
mobileprint/previewgen/include/page_preview.h [new file with mode: 0644]
mobileprint/previewgen/include/page_preview_thread.h [new file with mode: 0644]
mobileprint/previewgen/include/paper_size.h [new file with mode: 0644]
mobileprint/previewgen/include/pdfgen.h [new file with mode: 0644]
mobileprint/previewgen/include/pgen_debug.h [new file with mode: 0644]
mobileprint/previewgen/include/preview_coords.h [new file with mode: 0644]
mobileprint/previewgen/include/preview_util.h [new file with mode: 0644]
mobileprint/previewgen/include/previewgen.h [new file with mode: 0644]
mobileprint/previewgen/lib/CMakeLists.txt [new file with mode: 0644]
mobileprint/previewgen/lib/evas_render.c [new file with mode: 0644]
mobileprint/previewgen/lib/image_scaler.c [new file with mode: 0644]
mobileprint/previewgen/lib/page_preview.c [new file with mode: 0644]
mobileprint/previewgen/lib/page_preview_thread.c [new file with mode: 0644]
mobileprint/previewgen/lib/paper_size.c [new file with mode: 0644]
mobileprint/previewgen/lib/pdfgen.c [new file with mode: 0644]
mobileprint/previewgen/lib/preview_coords.c [new file with mode: 0644]
mobileprint/previewgen/lib/preview_util.c [new file with mode: 0644]
mobileprint/previewgen/lib/previewgen.c [new file with mode: 0644]
mobileprint/previewgen/rasterview.ppd [new file with mode: 0644]
org.tizen.mobileprint.manifest [new file with mode: 0644]
org.tizen.usb-printer-detector.manifest [new file with mode: 0644]
packaging/mobileprint.spec [new file with mode: 0755]
usb-printer-detector/CMakeLists.txt [new file with mode: 0644]
usb-printer-detector/images/A09_device_printer.png [new file with mode: 0644]
usb-printer-detector/include/upd-strings.h [new file with mode: 0644]
usb-printer-detector/include/upd-util.h [new file with mode: 0644]
usb-printer-detector/include/upd.h [new file with mode: 0644]
usb-printer-detector/org.tizen.usb-printer-detector.xml [new file with mode: 0644]
usb-printer-detector/po/CMakeLists.txt [new file with mode: 0644]
usb-printer-detector/po/POTFILES.in [new file with mode: 0644]
usb-printer-detector/po/ar.po [new file with mode: 0644]
usb-printer-detector/po/az.po [new file with mode: 0644]
usb-printer-detector/po/bg.po [new file with mode: 0644]
usb-printer-detector/po/ca.po [new file with mode: 0644]
usb-printer-detector/po/cs.po [new file with mode: 0644]
usb-printer-detector/po/da.po [new file with mode: 0644]
usb-printer-detector/po/de_DE.po [new file with mode: 0644]
usb-printer-detector/po/el_GR.po [new file with mode: 0644]
usb-printer-detector/po/en.po [new file with mode: 0644]
usb-printer-detector/po/en_PH.po [new file with mode: 0644]
usb-printer-detector/po/en_US.po [new file with mode: 0644]
usb-printer-detector/po/es_ES.po [new file with mode: 0644]
usb-printer-detector/po/es_US.po [new file with mode: 0644]
usb-printer-detector/po/et.po [new file with mode: 0644]
usb-printer-detector/po/eu.po [new file with mode: 0644]
usb-printer-detector/po/fi.po [new file with mode: 0644]
usb-printer-detector/po/fr_CA.po [new file with mode: 0644]
usb-printer-detector/po/fr_FR.po [new file with mode: 0644]
usb-printer-detector/po/ga.po [new file with mode: 0644]
usb-printer-detector/po/gl.po [new file with mode: 0644]
usb-printer-detector/po/hi.po [new file with mode: 0644]
usb-printer-detector/po/hr.po [new file with mode: 0644]
usb-printer-detector/po/hu.po [new file with mode: 0644]
usb-printer-detector/po/hy.po [new file with mode: 0644]
usb-printer-detector/po/is.po [new file with mode: 0644]
usb-printer-detector/po/it_IT.po [new file with mode: 0644]
usb-printer-detector/po/ja_JP.po [new file with mode: 0644]
usb-printer-detector/po/ka.po [new file with mode: 0644]
usb-printer-detector/po/kk.po [new file with mode: 0644]
usb-printer-detector/po/ko_KR.po [new file with mode: 0644]
usb-printer-detector/po/lt.po [new file with mode: 0644]
usb-printer-detector/po/lv.po [new file with mode: 0644]
usb-printer-detector/po/mk.po [new file with mode: 0644]
usb-printer-detector/po/nb.po [new file with mode: 0644]
usb-printer-detector/po/nl_NL.po [new file with mode: 0644]
usb-printer-detector/po/pl.po [new file with mode: 0644]
usb-printer-detector/po/pt_BR.po [new file with mode: 0644]
usb-printer-detector/po/pt_PT.po [new file with mode: 0644]
usb-printer-detector/po/ro.po [new file with mode: 0644]
usb-printer-detector/po/ru_RU.po [new file with mode: 0644]
usb-printer-detector/po/sk.po [new file with mode: 0644]
usb-printer-detector/po/sl.po [new file with mode: 0644]
usb-printer-detector/po/sr.po [new file with mode: 0644]
usb-printer-detector/po/sv.po [new file with mode: 0644]
usb-printer-detector/po/tr_TR.po [new file with mode: 0644]
usb-printer-detector/po/uk.po [new file with mode: 0644]
usb-printer-detector/po/update-po.sh [new file with mode: 0755]
usb-printer-detector/po/uz.po [new file with mode: 0644]
usb-printer-detector/po/zh_CN.po [new file with mode: 0644]
usb-printer-detector/po/zh_HK.po [new file with mode: 0644]
usb-printer-detector/po/zh_SG.po [new file with mode: 0644]
usb-printer-detector/po/zh_TW.po [new file with mode: 0644]
usb-printer-detector/src/upd-main.c [new file with mode: 0644]
usb-printer-detector/src/upd-util.c [new file with mode: 0644]
usb-printer-detector/src/upd-view.c [new file with mode: 0644]

diff --git a/AUTHORS b/AUTHORS
new file mode 100644 (file)
index 0000000..16d062b
--- /dev/null
+++ b/AUTHORS
@@ -0,0 +1,8 @@
+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>
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644 (file)
index 0000000..d92358b
--- /dev/null
@@ -0,0 +1,32 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+
+INCLUDE(FindPkgConfig)
+pkg_check_modules(pkgs REQUIRED 
+                                       elementary 
+                                       appcore-efl
+                                       bundle
+                                       syspopup-caller
+                                       glib-2.0
+                                       ecore
+                                       eina
+                                       ecore-input
+                                       ecore-x
+                                       evas
+                                       dlog
+                                       edje
+                                       print-service   
+                                       ui-gadget-1
+                                       appsvc
+                                       capi-appfw-application
+                                       vconf
+                                       notification
+                                       pmapi
+                                       sysman
+                                       )
+                    
+FOREACH(flag ${pkgs_CFLAGS})
+   SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
+ENDFOREACH(flag)                    
+
+ADD_SUBDIRECTORY(mobileprint)
+ADD_SUBDIRECTORY(usb-printer-detector)
diff --git a/LICENSE.Flora b/LICENSE.Flora
new file mode 100644 (file)
index 0000000..9c95663
--- /dev/null
@@ -0,0 +1,206 @@
+Flora License
+
+Version 1.0, May, 2012
+
+http://floralicense.org/license/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+"License" shall mean the terms and conditions for use, reproduction,
+and distribution as defined by Sections 1 through 9 of this document.
+
+"Licensor" shall mean the copyright owner or entity authorized by
+the copyright owner that is granting the License.
+
+"Legal Entity" shall mean the union of the acting entity and
+all other entities that control, are controlled by, or are
+under common control with that entity. For the purposes of
+this definition, "control" means (i) the power, direct or indirect,
+to cause the direction or management of such entity,
+whether by contract or otherwise, or (ii) ownership of fifty percent (50%)
+or more of the outstanding shares, or (iii) beneficial ownership of
+such entity.
+
+"You" (or "Your") shall mean an individual or Legal Entity
+exercising permissions granted by this License.
+
+"Source" form shall mean the preferred form for making modifications,
+including but not limited to software source code, documentation source,
+and configuration files.
+
+"Object" form shall mean any form resulting from mechanical
+transformation or translation of a Source form, including but
+not limited to compiled object code, generated documentation,
+and conversions to other media types.
+
+"Work" shall mean the work of authorship, whether in Source or Object form,
+made available under the License, as indicated by a copyright notice
+that is included in or attached to the work (an example is provided
+in the Appendix below).
+
+"Derivative Works" shall mean any work, whether in Source or Object form,
+that is based on (or derived from) the Work and for which the editorial
+revisions, annotations, elaborations, or other modifications represent,
+as a whole, an original work of authorship. For the purposes of this License,
+Derivative Works shall not include works that remain separable from,
+or merely link (or bind by name) to the interfaces of, the Work and
+Derivative Works thereof.
+
+"Contribution" shall mean any work of authorship, including the original
+version of the Work and any modifications or additions to that Work or
+Derivative Works thereof, that is intentionally submitted to Licensor
+for inclusion in the Work by the copyright owner or by an individual or
+Legal Entity authorized to submit on behalf of the copyright owner.
+For the purposes of this definition, "submitted" means any form of
+electronic, verbal, or written communication sent to the Licensor or
+its representatives, including but not limited to communication on
+electronic mailing lists, source code control systems, and issue
+tracking systems that are managed by, or on behalf of, the Licensor
+for the purpose of discussing and improving the Work, but excluding
+communication that is conspicuously marked or otherwise designated
+in writing by the copyright owner as "Not a Contribution."
+
+"Contributor" shall mean Licensor and any individual or Legal Entity
+on behalf of whom a Contribution has been received by Licensor and
+subsequently incorporated within the Work.
+
+"Tizen Certified Platform" shall mean a software platform that complies
+with the standards set forth in the Compatibility Definition Document
+and passes the Compatibility Test Suite as defined from time to time
+by the Tizen Technical Steering Group and certified by the Tizen
+Association or its designated agent.
+
+2. Grant of Copyright License.  Subject to the terms and conditions of
+this License, each Contributor hereby grants to You a perpetual,
+worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+copyright license to reproduce, prepare Derivative Works of,
+publicly display, publicly perform, sublicense, and distribute the
+Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License.  Subject to the terms and conditions of
+this License, each Contributor hereby grants to You a perpetual,
+worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+(except as stated in this section) patent license to make, have made,
+use, offer to sell, sell, import, and otherwise transfer the Work
+solely as incorporated into a Tizen Certified Platform, where such
+license applies only to those patent claims licensable by such
+Contributor that are necessarily infringed by their Contribution(s)
+alone or by combination of their Contribution(s) with the Work solely
+as incorporated into a Tizen Certified Platform to which such
+Contribution(s) was submitted. If You institute patent litigation
+against any entity (including a cross-claim or counterclaim
+in a lawsuit) alleging that the Work or a Contribution incorporated
+within the Work constitutes direct or contributory patent infringement,
+then any patent licenses granted to You under this License for that
+Work shall terminate as of the date such litigation is filed.
+
+4. Redistribution.  You may reproduce and distribute copies of the
+Work or Derivative Works thereof pursuant to the copyright license
+above, in any medium, with or without modifications, and in Source or
+Object form, provided that You meet the following conditions:
+
+  1. You must give any other recipients of the Work or Derivative Works
+     a copy of this License; and
+  2. You must cause any modified files to carry prominent notices stating
+     that You changed the files; and
+  3. You must retain, in the Source form of any Derivative Works that
+     You distribute, all copyright, patent, trademark, and attribution
+     notices from the Source form of the Work, excluding those notices
+     that do not pertain to any part of the Derivative Works; and
+  4. If the Work includes a "NOTICE" text file as part of its distribution,
+     then any Derivative Works that You distribute must include a readable
+     copy of the attribution notices contained within such NOTICE file,
+     excluding those notices that do not pertain to any part of
+     the Derivative Works, in at least one of the following places:
+     within a NOTICE text file distributed as part of the Derivative Works;
+     within the Source form or documentation, if provided along with the
+     Derivative Works; or, within a display generated by the Derivative Works,
+     if and wherever such third-party notices normally appear.
+     The contents of the NOTICE file are for informational purposes only
+     and do not modify the License.
+
+You may add Your own attribution notices within Derivative Works
+that You distribute, alongside or as an addendum to the NOTICE text
+from the Work, provided that such additional attribution notices
+cannot be construed as modifying the License. You may add Your own
+copyright statement to Your modifications and may provide additional or
+different license terms and conditions for use, reproduction, or
+distribution of Your modifications, or for any such Derivative Works
+as a whole, provided Your use, reproduction, and distribution of
+the Work otherwise complies with the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+any Contribution intentionally submitted for inclusion in the Work
+by You to the Licensor shall be under the terms and conditions of
+this License, without any additional terms or conditions.
+Notwithstanding the above, nothing herein shall supersede or modify
+the terms of any separate license agreement you may have executed
+with Licensor regarding such Contributions.
+
+6. Trademarks.  This License does not grant permission to use the trade
+names, trademarks, service marks, or product names of the Licensor,
+except as required for reasonable and customary use in describing the
+origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+agreed to in writing, Licensor provides the Work (and each
+Contributor provides its Contributions) on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+implied, including, without limitation, any warranties or conditions
+of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+PARTICULAR PURPOSE. You are solely responsible for determining the
+appropriateness of using or redistributing the Work and assume any
+risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+whether in tort (including negligence), contract, or otherwise,
+unless required by applicable law (such as deliberate and grossly
+negligent acts) or agreed to in writing, shall any Contributor be
+liable to You for damages, including any direct, indirect, special,
+incidental, or consequential damages of any character arising as a
+result of this License or out of the use or inability to use the
+Work (including but not limited to damages for loss of goodwill,
+work stoppage, computer failure or malfunction, or any and all
+other commercial damages or losses), even if such Contributor
+has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+the Work or Derivative Works thereof, You may choose to offer,
+and charge a fee for, acceptance of support, warranty, indemnity,
+or other liability obligations and/or rights consistent with this
+License. However, in accepting such obligations, You may act only
+on Your own behalf and on Your sole responsibility, not on behalf
+of any other Contributor, and only if You agree to indemnify,
+defend, and hold each Contributor harmless for any liability
+incurred by, or claims asserted against, such Contributor by reason
+of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Flora License to your work
+
+To apply the Flora License to your work, attach the following
+boilerplate notice, with the fields enclosed by brackets "[]"
+replaced with your own identifying information. (Don't include
+the brackets!) The text should be enclosed in the appropriate
+comment syntax for the file format. We also recommend that a
+file or class name and description of purpose be included on the
+same "printed page" as the copyright notice for easier
+identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Flora License, Version 1.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://floralicense.org/license/
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
diff --git a/NOTICE.Flora b/NOTICE.Flora
new file mode 100644 (file)
index 0000000..f37f329
--- /dev/null
@@ -0,0 +1,4 @@
+Copyright (c) Samsung Electronics Co., Ltd. All rights reserved.
+Except as noted, this software is licensed under Flora License, Version 1.
+Please, see the LICENSE.Flora file for Flora License terms and conditions.
+
diff --git a/debian/changelog b/debian/changelog
new file mode 100755 (executable)
index 0000000..9746981
--- /dev/null
@@ -0,0 +1,1190 @@
+mobileprint (0.2.15-55) unstable; urgency=low
+
+  * Changed Flora license url
+  * Git: magnolia/apps/home/mobileprint
+  * Tag: mobileprint_0.2.15-55
+
+ -- GangHeok Kim <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
+
+
diff --git a/debian/compat b/debian/compat
new file mode 100644 (file)
index 0000000..7ed6ff8
--- /dev/null
@@ -0,0 +1 @@
+5
diff --git a/debian/control b/debian/control
new file mode 100755 (executable)
index 0000000..6b17dbb
--- /dev/null
@@ -0,0 +1,47 @@
+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
+
+
diff --git a/debian/docs b/debian/docs
new file mode 100644 (file)
index 0000000..a0f0008
--- /dev/null
@@ -0,0 +1 @@
+CMakeLists.txt
diff --git a/debian/org.tizen.mobileprint.install.in b/debian/org.tizen.mobileprint.install.in
new file mode 100755 (executable)
index 0000000..0a10ccd
--- /dev/null
@@ -0,0 +1,2 @@
+@PREFIX@/*
+/opt/share/applications/org.tizen.mobileprint.desktop
diff --git a/debian/org.tizen.mobileprint.postinst.in b/debian/org.tizen.mobileprint.postinst.in
new file mode 100755 (executable)
index 0000000..0d11bb0
--- /dev/null
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+if [ ${USER} = "root" ]
+then
+# Change file owner
+   chown -R 5000:5000 @PREFIX@/data
+   chown -R 5000:5000 @PREFIX@/cache
+fi
+
+echo "Done"
diff --git a/debian/org.tizen.usb-printer-detector.install.in b/debian/org.tizen.usb-printer-detector.install.in
new file mode 100644 (file)
index 0000000..b2bc537
--- /dev/null
@@ -0,0 +1,2 @@
+/opt/usr/apps/org.tizen.usb-printer-detector/*
+/opt/share/applications/org.tizen.usb-printer-detector.desktop
diff --git a/debian/rules b/debian/rules
new file mode 100755 (executable)
index 0000000..1fb88f6
--- /dev/null
@@ -0,0 +1,116 @@
+#!/usr/bin/make -f
+# -*- makefile -*-
+# Sample debian/rules that uses debhelper.
+# This file was originally written by Joey Hess and Craig Small.
+# As a special exception, when this file is copied by dh-make into a
+# dh-make output file, you may use that output file without restriction.
+# This special exception was added by Craig Small in version 0.37 of dh-make.
+
+# Uncomment this to turn on verbose mode.
+export DH_VERBOSE=1
+
+CFLAGS += -Wall -g
+LDFLAGS ?= 
+PREFIX ?= /opt/usr/apps/org.tizen.mobileprint
+RESDIR ?= ${PREFIX}/res
+UGDIR ?= /opt/ug
+
+ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
+       CFLAGS += -O0
+else
+       CFLAGS += -O2
+endif
+
+LDFLAGS += -Wl,--hash-style=both -Wl,--rpath=/usr/lib -Wl,--rpath=${UGDIR}/lib -Wl,--as-needed
+
+CMAKE_BUILD_DIR ?= $(CURDIR)/cmake_build_tmp
+
+configure: configure-stamp
+configure-stamp:
+       dh_testdir
+       # Add here commands to configure the package.
+       mkdir -p $(CMAKE_BUILD_DIR) && cd $(CMAKE_BUILD_DIR) && \
+       CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" cmake .. -DCMAKE_INSTALL_PREFIX="$(PREFIX)"
+
+       touch configure-stamp
+
+build: build-stamp
+
+build-stamp: configure-stamp 
+       dh_testdir
+
+       # Add here commands to compile the package.
+       cd $(CMAKE_BUILD_DIR) && $(MAKE)
+
+       for f in `find $(CURDIR)/debian/ -name "*.in"`; do \
+               cat $$f > $${f%.in}; \
+               sed -i -e "s#@PREFIX@#$(PREFIX)#g" $${f%.in}; \
+               sed -i -e "s#@RESDIR@#$(RESDIR)#g" $${f%.in}; \
+               sed -i -e "s#@UGDATADIR@#$(UGDATADIR)#g" $${f%.in}; \
+               sed -i -e "s#@UGDIR@#$(UGDIR)#g" $${f%.in}; \
+       done
+
+
+       touch $@
+
+clean:
+       dh_testdir
+       dh_testroot
+       rm -f build-stamp configure-stamp
+
+       # Add here commands to clean up after the build process.
+       rm -rf $(CMAKE_BUILD_DIR)
+       
+       for f in `find $(CURDIR)/debian/ -name "*.in"`; do \
+               rm -f $${f%.in}; \
+       done
+       
+       dh_clean 
+
+install: build
+       dh_testdir
+       dh_testroot
+       dh_clean -k 
+       dh_installdirs
+
+       # Add here commands to install the package into debian/mobileprint.
+       cd $(CMAKE_BUILD_DIR) && $(MAKE) DESTDIR=$(CURDIR)/debian/tmp install
+
+
+# Build architecture-independent files here.
+binary-indep: build install
+# We have nothing to do by default.
+
+# Build architecture-dependent files here.
+binary-arch: build install
+       dh_testdir
+       dh_testroot
+#      dh_installchangelogs 
+#      dh_installdocs
+       dh_installexamples
+       dh_install --sourcedir=debian/tmp
+#      dh_installmenu
+#      dh_installdebconf       
+#      dh_installlogrotate
+#      dh_installemacsen
+#      dh_installpam
+#      dh_installmime
+#      dh_python
+#      dh_installinit
+#      dh_installcron
+#      dh_installinfo
+       dh_installman
+       dh_link
+       dh_strip --dbg-package=org.tizen.mobileprint-dbg --dbg-package=org.tizen.usb-printer-detector-dbg
+       dh_compress
+       dh_fixperms
+#      dh_perl
+       dh_makeshlibs
+       dh_installdeb
+       dh_shlibdeps
+       dh_gencontrol
+       dh_md5sums
+       dh_builddeb
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install configure
diff --git a/mobileprint/CMakeLists.txt b/mobileprint/CMakeLists.txt
new file mode 100644 (file)
index 0000000..7b7f6a9
--- /dev/null
@@ -0,0 +1,74 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+PROJECT(mobileprint C)
+
+####################################
+########## SET Directory ###########
+####################################
+SET(VENDOR "tizen")
+SET(PACKAGE ${PROJECT_NAME})
+SET(PKGNAME "org.${VENDOR}.${PACKAGE}")
+SET(PREFIX ${CMAKE_INSTALL_PREFIX})
+SET(BINDIR "${PREFIX}/bin")
+SET(RESDIR "${PREFIX}/res")
+SET(DATADIR "${PREFIX}/data")
+SET(CACHEDIR "${PREFIX}/cache")
+SET(LOCALEDIR "${RESDIR}/locale")
+SET(EDC_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/edc")
+SET(EDJDIR "${RESDIR}/edje/")
+SET(IMGDIR "${RESDIR}/images/")
+set(VERSION "0.2.6")
+
+
+IF("${CMAKE_BUILD_TYPE}" STREQUAL "")
+   SET(CMAKE_BUILD_TYPE "Release")
+ENDIF("${CMAKE_BUILD_TYPE}" STREQUAL "")
+MESSAGE("Build type: ${CMAKE_BUILD_TYPE}")
+
+####################################
+########### SET INCLUDE ############
+####################################
+INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/include)
+INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/previewgen/include)
+
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden")
+SET(CMAKE_C_FLAGS_DEBUG "-O0 -g")
+SET(CMAKE_C_FLAGS_RELEASE "-O2")
+
+FIND_PROGRAM(UNAME NAMES uname)
+EXEC_PROGRAM("${UNAME}" ARGS "-m" OUTPUT_VARIABLE "ARCH")
+IF("${ARCH}" STREQUAL "arm")
+   ADD_DEFINITIONS("-DTARGET")
+   MESSAGE("add -DTARGET")
+ENDIF("${ARCH}" STREQUAL "arm")
+
+
+ADD_DEFINITIONS("-DVENDOR=\"${VENDOR}\"")
+ADD_DEFINITIONS("-DPACKAGE=\"${PACKAGE}\"")
+ADD_DEFINITIONS("-DPACKAGE_NAME=\"${PKGNAME}\"")
+ADD_DEFINITIONS("-DPREFIX=\"${PREFIX}\"")
+ADD_DEFINITIONS("-DLOCALEDIR=\"${LOCALEDIR}\"")
+ADD_DEFINITIONS("-DEDJDIR=\"${EDJDIR}\"")
+ADD_DEFINITIONS("-DRESDIR=\"${RESDIR}\"")
+ADD_DEFINITIONS("-DIMGDIR=\"${IMGDIR}\"")
+ADD_DEFINITIONS("-DDATADIR=\"${DATADIR}\"")
+ADD_DEFINITIONS("-DUGDATADIR=\"${UGDATADIR}\"")
+ADD_DEFINITIONS("-DCONFIG_PRINT_SETTING")
+
+
+#####################################################
+########### install desktop file & icon #############
+#####################################################
+#CONFIGURE_FILE(${PROJECT_NAME}.desktop.in ${PKGNAME}.desktop)
+#INSTALL(FILES ${CMAKE_BINARY_DIR}/${PACKAGE}/${PKGNAME}.desktop DESTINATION "/opt/share/applications")
+#for appfw new manifest
+CONFIGURE_FILE(${PROJECT_NAME}.xml ${PKGNAME}.xml)
+INSTALL(FILES ${CMAKE_BINARY_DIR}/${PACKAGE}/${PKGNAME}.xml DESTINATION "/opt/share/packages/")
+INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/images/ DESTINATION ${IMGDIR})
+INSTALL(DIRECTORY DESTINATION ${DATADIR})
+INSTALL(DIRECTORY DESTINATION ${CACHEDIR})
+INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/previewgen/rasterview.ppd DESTINATION ${DATADIR})
+
+ADD_SUBDIRECTORY(previewgen)
+ADD_SUBDIRECTORY(app)
+ADD_SUBDIRECTORY(po)
+
diff --git a/mobileprint/app/CMakeLists.txt b/mobileprint/app/CMakeLists.txt
new file mode 100644 (file)
index 0000000..1132603
--- /dev/null
@@ -0,0 +1,43 @@
+LINK_DIRECTORIES(${CMAKE_BINARY_DIR}/mobileprint)
+LINK_DIRECTORIES(${CMAKE_BINARY_DIR}/mobileprint/previewgen/lib)
+
+FILE(GLOB SRCS *.c)
+
+INCLUDE(FindPkgConfig)
+pkg_check_modules(app_pkgs REQUIRED utilX)
+
+FOREACH(flag ${app_pkgs_CFLAGS})
+   SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
+ENDFOREACH(flag)
+
+SET(app_pkgs_LDFLAGS "${pkgs_LDFLAGS} ${app_pkgs_LDFLAGS}")
+
+ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_BINARY_DIR}/mobileprint.edj
+   COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/images
+   ${EDC_SRC_DIR}/mobileprint.edc ${CMAKE_BINARY_DIR}/mobileprint.edj
+   DEPENDS ${EDC_SRC_DIR}/mobileprint.edc ${EDC_SRC_DIR}/mobileprint.edc
+   )
+
+ADD_CUSTOM_TARGET(mobileprint_edj_build   DEPENDS ${CMAKE_BINARY_DIR}/mobileprint.edj)
+
+INSTALL(FILES ${CMAKE_BINARY_DIR}/mobileprint.edj DESTINATION ${EDJDIR})
+
+ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_BINARY_DIR}/genlist_custom.edj
+   COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/images
+   ${EDC_SRC_DIR}/genlist_custom.edc ${CMAKE_BINARY_DIR}/genlist_custom.edj
+   DEPENDS ${EDC_SRC_DIR}/genlist_custom.edc ${EDC_SRC_DIR}/genlist_custom.edc
+   )
+
+ADD_CUSTOM_TARGET(genlist_custom_edj_build   DEPENDS ${CMAKE_BINARY_DIR}/genlist_custom.edj)
+
+INSTALL(FILES ${CMAKE_BINARY_DIR}/genlist_custom.edj DESTINATION ${EDJDIR})
+
+
+ADD_EXECUTABLE(${PROJECT_NAME} ${SRCS})
+SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES COMPILE_FLAGS "${EXTRA_CFLAGS} -fpie")
+TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${app_pkgs_LDFLAGS} -lprint-service -lpreviewgen -lecore_evas)
+
+ADD_DEPENDENCIES(${PROJECT_NAME} mobileprint_edj_build genlist_custom_edj_build)
+
+INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${BINDIR})
+INSTALL(FILES icon_${PROJECT_NAME}.png DESTINATION "/opt/share/icons/default/small" RENAME "${PKGNAME}.png")
diff --git a/mobileprint/app/icon_mobileprint.png b/mobileprint/app/icon_mobileprint.png
new file mode 100644 (file)
index 0000000..e32c752
Binary files /dev/null and b/mobileprint/app/icon_mobileprint.png differ
diff --git a/mobileprint/app/image_editor_conn.c b/mobileprint/app/image_editor_conn.c
new file mode 100644 (file)
index 0000000..877d197
--- /dev/null
@@ -0,0 +1,139 @@
+/*
+*  Mobileprint
+*
+* Copyright 2012  Samsung Electronics Co., Ltd
+
+* Licensed under the Flora License, Version 1.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+
+* http://floralicense.org/license/
+
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#include <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;
+}
+
diff --git a/mobileprint/app/loading_animation.c b/mobileprint/app/loading_animation.c
new file mode 100644 (file)
index 0000000..95570df
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+*  Mobileprint
+*
+* Copyright 2012  Samsung Electronics Co., Ltd
+
+* Licensed under the Flora License, Version 1.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+
+* http://floralicense.org/license/
+
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#include "loading_animation.h"
+
+Evas_Object *loading_animation_add(Evas_Object *parent)
+{
+       Evas_Object *res;
+       res = elm_progressbar_add(parent);
+       PTS_RETV_IF(res == NULL, NULL, "res is NULL");
+
+       elm_object_style_set(res, "list_process");
+       evas_object_size_hint_align_set(res, EVAS_HINT_FILL, 0.5);
+       evas_object_size_hint_weight_set(res, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_progressbar_pulse(res, EINA_TRUE);
+       elm_object_part_content_set(parent, "process_animation", res);
+       return res;
+}
+
+void show_loading_animation(pts_core_data_t *ugd)
+{
+       PTS_RET_IF(ugd == NULL, "ugd is NULL");
+       PTS_RET_IF(ugd->loading_animation != NULL, "Already shown");
+       ugd->loading_animation = loading_animation_add(ugd->img_layout);
+       evas_object_show(ugd->loading_animation);
+}
+
+void hide_loading_animation(pts_core_data_t *ugd)
+{
+       PTS_RET_IF(ugd == NULL, "ugd is NULL");
+       PTS_RET_IF(ugd->loading_animation == NULL, "Already removed");
+       evas_object_hide(ugd->loading_animation);
+       evas_object_del(ugd->loading_animation);
+       ugd->loading_animation = NULL;
+}
diff --git a/mobileprint/app/mobileprint.c b/mobileprint/app/mobileprint.c
new file mode 100644 (file)
index 0000000..29168ef
--- /dev/null
@@ -0,0 +1,701 @@
+/*
+*      Mobileprint
+*
+* Copyright 2012  Samsung Electronics Co., Ltd
+
+* Licensed under the Flora License, Version 1.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+
+* http://floralicense.org/license/
+
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#include <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);
+}
diff --git a/mobileprint/app/preview_content.c b/mobileprint/app/preview_content.c
new file mode 100644 (file)
index 0000000..cda87d8
--- /dev/null
@@ -0,0 +1,255 @@
+/*
+*  Mobileprint
+*
+* Copyright 2012  Samsung Electronics Co., Ltd
+
+* Licensed under the Flora License, Version 1.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+
+* http://floralicense.org/license/
+
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#include <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(&current_pagesize);
+       PTS_RETV_IF(result < 0, -1, "pt_get_selected_paper_size_pts returns error");
+
+       /* get really selected papersize name for command line commands */
+       paper_size->name = pt_get_print_option_papersize_cmd(
+                                                  pt_get_selected(PT_OPTION_ID_PAPERSIZE));
+       paper_size->s.x = current_pagesize.x;
+       paper_size->s.y = current_pagesize.y;
+
+       PTS_TRACE_END;
+       return 0;
+}
+
+int printer_get_setting_is_original_zoom(
+       const pt_printer_mgr_t *active_printer)
+{
+#if 0
+       if (active_printer->scaling == PT_SCALING_ORIGINAL_SIZE) {
+               return 1;
+       }
+#endif
+       return 0;
+}
+
+
+int pts_image_size_t2page_scale(pts_image_size_e pts_size,
+                                                               struct page_scale *scale)
+{
+       PTS_RETV_IF(scale == NULL, -1, "scale is NULL");
+
+       scale->w = 0;
+       scale->h = 0;
+
+       switch (pts_size) {
+       case PTS_SIZE_FIT_TO_PAPER:
+               scale->type = SCALE_FIT_TO_PAPER;
+               return 0;
+       case PTS_SIZE_5X7:
+               scale->w = 5;
+               scale->h = 7;
+               break;
+       case PTS_SIZE_4X6:
+               scale->w = 4;
+               scale->h = 6;
+               break;
+       case PTS_SIZE_3_5X5:
+               scale->w = 3.5;
+               scale->h = 5;
+               break;
+       case PTS_SIZE_WALLET:
+               /* 6.4x8.4 cm */
+               scale->w = 3.30709;
+               scale->h = 2.51969;
+               break;
+               //TODO : CUSTOM SIZE
+       default:
+               scale->type = SCALE_FIT_TO_PAPER;
+               return 1;
+       }
+
+       scale->type = SCALE_CUSTOM;
+       return 0;
+}
+
+
+/**
+ * @brief This function generates preview images
+ * @param[in] ugd the pointer to the main data structure
+ * @return
+ */
+int generate_preview_images(pts_core_data_t *ugd,
+                                                       app_device_orientation_e dev_orientation)
+{
+       PTS_TRACE_BEGIN;
+       PTS_RETV_IF(ugd == NULL , -1 , "ugd is NULL");
+
+       int result = 0;
+
+       struct paper_size_pts paper_size;
+       enum page_orientation orientation;
+       //int is_original_zoom;
+       struct page_scale scale = {0, 0, 0};
+       int n_up;
+       int is_grayscale;
+       struct size_px client_size;
+       pt_printer_mgr_t *active_printer = ugd->active_printer;
+       char *ppd;
+       //char *first_file_path;
+
+       /* currently supported: only one PDF or multiple images;
+          mixed images-pdf unsupported */
+
+       PTS_RETV_IF(ugd == NULL || ugd->pt_files.num_of_files <= 0, -1 , "Invalid argument");
+
+       /* TODO: use widget maximum size */
+       //evas_object_geometry_get(ugd->img_layout, NULL, NULL,
+       //              &(client_size.x), &(client_size.y));
+       //evas_object_geometry_get(ugd->root_win, NULL, NULL,
+       //                               &(client_size.x), &(client_size.y));
+
+       ecore_x_window_size_get(ecore_x_window_root_first_get(), &(client_size.x), &(client_size.y));
+
+       PTS_DEBUG("rotating orientation, dev_orientation = %d,"
+               " app_get_device_orientation() = %d",
+               dev_orientation, app_get_device_orientation());
+       if (APP_DEVICE_ORIENTATION_0 == dev_orientation
+                       || APP_DEVICE_ORIENTATION_180 == dev_orientation) {
+               if (client_size.x > client_size.y) {
+                       switch_size_px_coords(&client_size);
+               }
+       } else {
+               if (client_size.x < client_size.y) {
+                       switch_size_px_coords(&client_size);
+               }
+       }
+
+       /* WARNING: potential problem here: geometry calculation sometimes
+          are incorrect, but with wide pictures currently it works */
+       if (client_size.x > client_size.y && client_size.y > 320) {
+               client_size.y = 320;    /* ugly hack */
+       }
+
+       /* should be taken from settings */
+       if (active_printer != NULL) {
+               ppd = active_printer->ppd;
+               printer_get_paper_size(&paper_size);
+               orientation = printer_get_setting_orientation(active_printer);
+               n_up = printer_get_setting_n_up(active_printer);
+               pts_image_size_t2page_scale(ugd->image_size, &scale);
+               if (ugd->image_size == PTS_SIZE_CUSTOM) {
+                       scale.w = ugd->custom_width;
+                       scale.h = ugd->custom_height;
+                       scale.type = SCALE_CUSTOM;
+               }
+               is_grayscale = is_printer_grayscale(active_printer);
+       } else {
+               PTS_DEBUG("No active printer preview");
+
+               ppd = DEFAULT_PPD_FILE;
+               get_paper_size_pts("A4", &paper_size);
+               orientation = PAGE_ORIENTATION_PORTRAIT;
+               //is_original_zoom = 0;
+               scale.type = SCALE_FIT_TO_PAPER;
+               n_up = 1;
+               is_grayscale = 1;
+       }
+
+       //first_file_path = ugd->pt_files.files[0];
+       //DBG("PDF_PATH IS: %s", first_file_path);
+       PTS_DEBUG("USING PPD: %s", ppd);
+       PTS_DEBUG("PAPER NAME: %s", paper_size.name);
+       PTS_DEBUG("PAPER SIZE: %f, %f", paper_size.s.x, paper_size.s.y);
+       PTS_DEBUG("ALBUM, N_UP, ZOOM: %d, %d, %d", orientation, n_up, scale.type);
+       PTS_DEBUG("CLIENT SIZE: %d : %d", client_size.x, client_size.y);
+
+       result = process_preview_engine_file(&(ugd->engine),
+                                                                                ugd->pt_files.request_files[0], ppd,
+                                                                                &paper_size,
+                                                                                &client_size, orientation, n_up,
+                                                                                &scale, is_grayscale);
+       PTS_DEBUG("process_preview_engine_file: %d", result);
+
+       PTS_TRACE_END;
+
+       return result;
+}
+
diff --git a/mobileprint/app/preview_engine.c b/mobileprint/app/preview_engine.c
new file mode 100644 (file)
index 0000000..bac2645
--- /dev/null
@@ -0,0 +1,157 @@
+/*
+*  Mobileprint
+*
+* Copyright 2012  Samsung Electronics Co., Ltd
+
+* Licensed under the Flora License, Version 1.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+
+* http://floralicense.org/license/
+
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#include <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;
+}
diff --git a/mobileprint/app/preview_model.c b/mobileprint/app/preview_model.c
new file mode 100644 (file)
index 0000000..114645a
--- /dev/null
@@ -0,0 +1,117 @@
+/*
+*  Mobileprint
+*
+* Copyright 2012  Samsung Electronics Co., Ltd
+
+* Licensed under the Flora License, Version 1.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+
+* http://floralicense.org/license/
+
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#include <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;
+}
diff --git a/mobileprint/app/preview_task_model.c b/mobileprint/app/preview_task_model.c
new file mode 100644 (file)
index 0000000..13b6927
--- /dev/null
@@ -0,0 +1,393 @@
+/*
+*  Mobileprint
+*
+* Copyright 2012  Samsung Electronics Co., Ltd
+
+* Licensed under the Flora License, Version 1.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+
+* http://floralicense.org/license/
+
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#include <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;
+}
diff --git a/mobileprint/app/preview_widget.c b/mobileprint/app/preview_widget.c
new file mode 100644 (file)
index 0000000..ad34a7a
--- /dev/null
@@ -0,0 +1,80 @@
+/*
+*  Mobileprint
+*
+* Copyright 2012  Samsung Electronics Co., Ltd
+
+* Licensed under the Flora License, Version 1.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+
+* http://floralicense.org/license/
+
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#include "loading_animation.h"
+#include "pts_common.h"
+#include "pts_debug.h"
+#include "preview_widget.h"
+
+extern int g_pages_count;
+
+Evas_Object *pts_main_view_load_preview_img(pts_core_data_t *ugd);
+
+/* just simple stub for 1-page documents */
+Eina_Bool page_ready_cb(void *data, int type, void *event)
+{
+       PTS_TRACE_BEGIN;
+       pts_core_data_t *ugd = (pts_core_data_t *)data;
+       struct preview_engine_event *event_data = (struct preview_engine_event *) event;
+       PTS_RETV_IF(ugd == NULL || event_data == NULL, ECORE_CALLBACK_DONE, "Invalid argument");
+
+       PTS_DEBUG("event:%d page: %d", event_data->status, event_data->page);
+
+       switch (event_data->status) {
+       case PREVIEW_ENGINE_EVENT_INITIAL_READY:
+               /* initialization done: request for page */
+               ugd->pt_files.current_index = 0;
+               g_pages_count = ugd->engine.p_model.conf.pages_count;
+               preview_model_request_page(&(ugd->engine.p_model), 1);
+               /* TODO: change preview image to fit it's size */
+               break;
+
+       case PREVIEW_ENGINE_EVENT_PAGE_READY:
+               /* load page */
+               if (event_data->page == ugd->pt_files.current_index + 1) {
+                       hide_loading_animation(ugd);
+                       pts_main_view_load_preview_img(ugd);
+                       if (event_data->page > 1)
+                               preview_model_request_page(
+                                       &(ugd->engine.p_model),
+                                       event_data->page - 1);
+                       if (event_data->page < (ugd->engine
+                                                                       .p_model.conf.pages_count))
+                               preview_model_request_page(
+                                       &(ugd->engine.p_model),
+                                       event_data->page + 1);
+               }
+               break;
+
+       case PREVIEW_ENGINE_EVENT_PAGE_PROCESSING:
+               /* TODO: show empty page */
+               if (event_data->page == ugd->pt_files.current_index + 1) {
+                       show_loading_animation(ugd);
+               }
+               break;
+
+       case PREVIEW_ENGINE_EVENT_INITIAL_ERROR:
+       case PREVIEW_ENGINE_EVENT_PAGE_ERROR:
+               /* TODO: something in error case */
+               break;
+       }
+
+       PTS_TRACE_END;
+       return ECORE_CALLBACK_DONE;
+}
diff --git a/mobileprint/app/pts_common.c b/mobileprint/app/pts_common.c
new file mode 100644 (file)
index 0000000..70de8bd
--- /dev/null
@@ -0,0 +1,1344 @@
+/*
+*  Mobileprint
+*
+* Copyright 2012  Samsung Electronics Co., Ltd
+
+* Licensed under the Flora License, Version 1.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+
+* http://floralicense.org/license/
+
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#include <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;
+       }
+}
diff --git a/mobileprint/app/pts_list_view.c b/mobileprint/app/pts_list_view.c
new file mode 100644 (file)
index 0000000..09d8a89
--- /dev/null
@@ -0,0 +1,440 @@
+/*
+*  Mobileprint
+*
+* Copyright 2012  Samsung Electronics Co., Ltd
+
+* Licensed under the Flora License, Version 1.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+
+* http://floralicense.org/license/
+
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#include "pts_common.h"
+#include "pts_main_view.h"
+#include "pts_list_view.h"
+#include "pts_setting_view.h"
+#if 0
+
+//static Elm_Genlist_Item_Class list_itc;
+
+void main_quit_cb(void *data, Evas_Object *obj,
+                                 const char *emission, const char *source);
+
+/*
+* release the list data
+*/
+static void __pts_list_view_delete_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+       PTS_TRACE_BEGIN;
+       pts_ug_list_data *ld  = (pts_ug_list_data *)data;
+       ug_printer_retm_if(ld == NULL, "data is NULL");
+
+       if (ld->popup) {
+               evas_object_del(ld->popup);
+               ld->popup = NULL;
+       }
+
+       if (ld != NULL) {
+               free(ld);
+               ld = NULL;
+       }
+       PTS_TRACE_END;
+}
+
+/*
+* the response callback when click the "back" button
+*/
+static void __pts_list_view_btn_back_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       PTS_TRACE_BEGIN;
+       pts_ug_list_data *ld = (pts_ug_list_data *)data;
+       ug_printer_retm_if(ld == NULL, "data is NULL");
+
+       elm_naviframe_item_pop(ld->ugd->navi);
+       PTS_TRACE_END;
+}
+
+
+
+#if 0
+/*
+* create the content of the list view
+*/
+Evas_Object *__pts_list_view_create_content(pts_ug_list_data *ld)
+{
+       PTS_TRACE_BEGIN;
+
+       if (NULL == ld) {
+               return NULL;
+       }
+
+       Evas_Object *genlist = NULL;
+
+       genlist = elm_genlist_add(ld->ugd->navi);
+
+       if (!list_radio_main) {
+               list_radio_main = elm_radio_add(genlist);
+               elm_radio_state_value_set(list_radio_main, 0);
+               elm_radio_value_set(list_radio_main, 0);
+       }
+
+       list_itc.item_style = "2text.1icon.4"; // Left Icon, Right Main/Sub Text
+       list_itc.func.text_get = __pts_list_view_label_get;
+       list_itc.func.content_get = __pts_list_view_icon_get;
+       list_itc.func.state_get = NULL;
+       list_itc.func.del = NULL;
+
+       pt_printer_mgr_t *it = NULL;
+       Eina_List *cursor = NULL;
+
+       int index = 1;
+       EINA_LIST_FOREACH(ld->printer_list, cursor, it) {
+               elm_genlist_item_append(genlist, &list_itc, (void *)it, NULL, ELM_GENLIST_ITEM_NONE, __pts_list_view_sel, ld);
+               //elm_genlist_item_append(genlist, &list_itc, (void *)index, NULL, ELM_GENLIST_ITEM_NONE, __pts_list_view_sel, ld);
+               index++;
+       }
+
+       evas_object_show(genlist);
+       PTS_TRACE_END;
+       return genlist;
+}
+#endif
+
+
+
+#if 0
+static void _pts_printer_list_cancel_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       PTS_TRACE_BEGIN;
+       evas_object_del(data);
+       pt_deinit();
+       elm_exit();
+       PTS_TRACE_END;
+}
+
+Evas_Object *pts_create_printer_list_popup(Evas_Object *parent, pts_ug_list_data *ld)
+{
+       PTS_TRACE_BEGIN;
+       Evas_Object *popup;
+       Evas_Object *genlist;
+       Evas_Object *btn1;
+       Evas_Object *btn2;
+
+       popup = elm_popup_add(parent);
+       elm_object_style_set(popup,"menustyle");
+       elm_object_part_text_set(popup, "title,text", _("IDS_PRT_BODY_SELECT_PRINTER"));
+
+       evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+       btn1 = elm_button_add(popup);
+       elm_object_style_set(btn1,"popup_button/default");
+       elm_object_text_set(btn1, _("IDS_COM_SK_OK"));
+       elm_object_part_content_set(popup, "button1", btn1);
+       evas_object_smart_callback_add(btn1, "clicked", _pts_printer_list_ok_cb, ld);
+
+       btn2 = elm_button_add(popup);
+       elm_object_style_set(btn2,"popup_button/default");
+       elm_object_text_set(btn2, _("IDS_COM_SK_CANCEL"));
+       elm_object_part_content_set(popup, "button2", btn2);
+       evas_object_smart_callback_add(btn2, "clicked", _pts_printer_list_cancel_cb, popup);
+
+       genlist = __pts_list_view_create_content(ld);
+
+       elm_object_content_set(popup, genlist);
+       evas_object_show(popup);
+       evas_object_show(parent);
+
+       ld->ugd->printer_list_popup = popup;
+
+       PTS_TRACE_END;
+       return genlist;
+}
+#endif
+
+#if 0
+/*
+* the response callback when search the printer
+*/
+static void __pts_list_view_get_printer_cb(pt_response_data_t *cb)
+{
+       PTS_TRACE_BEGIN;
+
+       //Evas_Object *back_btn = NULL;
+       //Evas_Object *content = NULL;
+
+       if (NULL == cb) {
+               PTS_DEBUG("response data is NULL");
+               return;
+       }
+
+       int pt_count = 0;
+       pts_ug_list_data *ld = cb->userdata;
+       ug_printer_retm_if(ld == NULL, "data is NULL");
+
+       ld->printer_list = cb->printerlist;
+       ld->ugd->is_process = 0;/*process is complete*/
+
+       /*
+        * Not found any printer
+        */
+       if (NULL == ld->printer_list) {
+               /*
+                * destroy popup progress bar
+                */
+               evas_object_del(ld->popup);
+               ld->popup = NULL;
+               PTS_DEBUG("search printer failed");
+
+               pts_create_no_found_popup(ld->ugd->root_win, ld->ugd, (void *) _pts_refresh_cb, (void *) _pts_cancel_cb);
+
+               if (ld != NULL) {
+                       free(ld);
+                       ld = NULL;
+               }
+
+               return;
+       }
+
+       /* get printer list count */
+       pt_count = eina_list_count(ld->printer_list);
+       PTS_DEBUG("Printer count is %d, connect_type %d", pt_count, ld->ugd->connect_type);
+
+       /* destroy popup progress bar */
+       evas_object_del(ld->popup);
+
+       /* USB mode or only first search only get one printer */
+       if ((PT_CONNECTION_USB == ld->ugd->connect_type) || (1 == pt_count)) {
+               int ret = 0;
+
+               /* get the usb printer info */
+               pt_printer_mgr_t *pt = eina_list_data_get(ld->printer_list);
+
+               PTS_DEBUG("pt name is %s", pt->name);
+
+               PTS_DEBUG("pt address %x", pt);
+
+               ret = pt_set_active_printer(pt);
+               if (PT_ERR_NONE != ret) {
+                       pts_create_popup(ld->ugd->navi, PTS_2, 1.0);
+                       if (ld != NULL) {
+                               free(ld);
+                               ld = NULL;
+                       }
+                       return;
+               }
+
+               pt_set_default_printer(pt);
+
+               if (NULL == ld->ugd->active_printer) {
+                       ld->ugd->active_printer = (pt_printer_mgr_t *)malloc(sizeof(pt_printer_mgr_t));
+               } else {
+                       memset(ld->ugd->active_printer, 0, sizeof(ld->ugd->active_printer));
+               }
+
+               if (NULL != ld->ugd->active_printer) {
+                       memset(ld->ugd->active_printer, 0, sizeof(pt_printer_mgr_t));
+                       memcpy(ld->ugd->active_printer, pt, sizeof(pt_printer_mgr_t));
+               } else {
+                       pts_create_popup(ld->ugd->navi, _("No Memory"), 1.0);
+                       if (ld != NULL) {
+                               free(ld);
+                               ld = NULL;
+                       }
+                       return;
+               }
+
+               // XXX - show main view after set active/default printer
+               pts_create_main_view(ld->ugd);
+               elm_win_resize_object_add(ld->ugd->root_win, ld->ugd->main_win);
+               edje_object_signal_callback_add(elm_layout_edje_get(ld->ugd->main_win),
+                                                                               "EXIT", "*", main_quit_cb, NULL);
+
+               pts_main_view_update_printer_label(ugd);
+
+               pts_main_view_rotate_image(ld->ugd, app_get_device_orientation());
+
+               evas_object_show(ld->ugd->main_win);
+               evas_object_show(ld->ugd->root_win);
+
+               if (ld != NULL) {
+                       free(ld);
+                       ld = NULL;
+               }
+       } else { // Show printer list popup
+#if 0
+               back_btn = pts_create_label_btn(ld->ugd->navi, _("IDS_COM_SK_BACK"));
+               evas_object_smart_callback_add(back_btn, "clicked", __pts_list_view_btn_back_cb, ld);
+
+               content = __pts_list_view_create_content(ld);
+
+               evas_object_event_callback_add(content, EVAS_CALLBACK_DEL, __pts_list_view_delete_cb, ld);
+
+               elm_naviframe_item_push(ld->ugd->navi, PTS_4, back_btn, NULL, content, NULL);
+               elm_object_style_set(back_btn, "naviframe/back_btn/default");
+#endif
+
+               pts_create_printer_list_popup(ld->ugd->root_win, ld);
+       }
+
+       PTS_TRACE_END;
+}
+#endif
+
+/*
+* the response callback when searching popup
+*/
+#if 0
+static void __pts_list_view_popup_response_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       PTS_TRACE_BEGIN;
+       pts_ug_list_data *ld = (pts_ug_list_data *)data;
+       ug_printer_retm_if(ld == NULL, "setting is NULL");
+
+       /* cancel searching printers */
+       if (ELM_POPUP_RESPONSE_CANCEL == (int)event_info) {
+               if (ld->search_err_timer != NULL) {
+                       ecore_timer_del(ld->search_err_timer);
+                       ld->search_err_timer = NULL;
+               }
+               pt_cancel_get_printers();
+       }
+
+       evas_object_del(ld->popup);
+       ld->popup = NULL;
+
+       if (ld != NULL) {
+               free(ld);
+               ld = NULL;
+       }
+       PTS_TRACE_END;
+}
+#else
+#      if 0
+static void __pts_list_view_popup_ok_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       PTS_TRACE_BEGIN;
+       pts_ug_list_data *ld = (pts_ug_list_data *)data;
+       ug_printer_retm_if(ld == NULL, "setting is NULL");
+
+       evas_object_del(ld->popup);
+       ld->popup = NULL;
+
+       if (ld != NULL) {
+               free(ld);
+               ld = NULL;
+       }
+       PTS_TRACE_END;
+}
+
+static void __pts_list_view_popup_close_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       PTS_TRACE_BEGIN;
+       pts_ug_list_data *ld = (pts_ug_list_data *)data;
+       ug_printer_retm_if(ld == NULL, "setting is NULL");
+
+       evas_object_del(ld->popup);
+       ld->popup = NULL;
+
+       if (ld != NULL) {
+               free(ld);
+               ld = NULL;
+       }
+       PTS_TRACE_END;
+}
+#      endif
+
+static void __pts_list_view_popup_cancel_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       PTS_TRACE_BEGIN;
+       pts_ug_list_data *ld = (pts_ug_list_data *)data;
+       ug_printer_retm_if(ld == NULL, "setting is NULL");
+
+       /* cancel searching printers */
+       if (ld->search_err_timer != NULL) {
+               ecore_timer_del(ld->search_err_timer);
+               ld->search_err_timer = NULL;
+       }
+       pt_cancel_get_printers();
+
+       evas_object_del(ld->popup);
+       ld->popup = NULL;
+
+       if (ld != NULL) {
+               free(ld);
+               ld = NULL;
+       }
+       PTS_TRACE_END;
+}
+#endif
+
+#if 0
+/**
+ *     This function let the app create the printers list view
+ *     @return  void
+ *     @param[in] ld the pointer to the ug list structure
+ */
+void pts_create_list_view(pts_ug_list_data *ld)
+{
+       PTS_TRACE_BEGIN;
+       if (NULL == ld) {
+               PTS_DEBUG("ld is NULL");
+               return;
+       }
+
+       int ret = 0;
+       Evas_Object *layout = NULL;
+       Evas_Object *progressbar = NULL;
+
+       printer_index = -1; // Initialize value when start searching everytime
+       prev_printer_index = -1; // Initialize value when start searching everytime
+
+       ld->popup = elm_popup_add(ld->ugd->root_win);
+       layout = pts_create_base_layout(ld->popup, "popup_search");
+       ld->search_err_timer = NULL;
+       ld->ugd->is_process = 1; /* in process */
+
+       progressbar = elm_progressbar_add(ld->popup);
+       elm_object_style_set(progressbar, "list_process");
+       elm_progressbar_horizontal_set(progressbar, EINA_TRUE);
+       evas_object_size_hint_align_set(progressbar, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       evas_object_size_hint_weight_set(progressbar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_progressbar_pulse(progressbar, EINA_TRUE);
+
+       evas_object_show(progressbar);
+
+       elm_object_part_content_set(layout, "elm.swallow.content", progressbar);
+       elm_object_part_text_set(layout, "elm.text", _("IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING"));
+
+#if 0
+       /* add cancel button */
+       Evas_Object *btn1 = NULL;
+       btn1 = elm_button_add(ld->popup);
+       elm_object_text_set(btn1, S_("Cancel"));
+       elm_object_part_content_set(ld->popup, "button1", btn1);
+
+       evas_object_smart_callback_add(btn1, "clicked", __pts_list_view_popup_cancel_cb, ld);
+#endif
+
+       elm_object_content_set(ld->popup, layout);
+       evas_object_show(layout);
+       evas_object_show(ld->popup);
+       evas_object_show(ld->ugd->root_win);
+
+       ret = pt_get_printers(__pts_list_view_get_printer_cb, ld);
+       if (PT_ERR_NONE != ret) {
+               ld->search_err_timer = ecore_timer_add(2.0, (Ecore_Task_Cb)__pts_list_view_popup_error, (void *)ld);
+       }
+
+       PTS_TRACE_END;
+}
+#endif
+
+#endif
diff --git a/mobileprint/app/pts_main_view.c b/mobileprint/app/pts_main_view.c
new file mode 100644 (file)
index 0000000..ee1a8a6
--- /dev/null
@@ -0,0 +1,2042 @@
+/*
+*  Mobileprint
+*
+* Copyright 2012  Samsung Electronics Co., Ltd
+
+* Licensed under the Flora License, Version 1.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+
+* http://floralicense.org/license/
+
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#define _GNU_SOURCE
+#include <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;
+}
diff --git a/mobileprint/app/pts_print_search.c b/mobileprint/app/pts_print_search.c
new file mode 100644 (file)
index 0000000..ed67adf
--- /dev/null
@@ -0,0 +1,983 @@
+/*
+*  Mobileprint
+*
+* Copyright 2012  Samsung Electronics Co., Ltd
+
+* Licensed under the Flora License, Version 1.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+
+* http://floralicense.org/license/
+
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#include <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;
+}
diff --git a/mobileprint/app/pts_setting_view.c b/mobileprint/app/pts_setting_view.c
new file mode 100644 (file)
index 0000000..daef902
--- /dev/null
@@ -0,0 +1,1133 @@
+/*
+*  Mobileprint
+*
+* Copyright 2012  Samsung Electronics Co., Ltd
+
+* Licensed under the Flora License, Version 1.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+
+* http://floralicense.org/license/
+
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#define _GNU_SOURCE
+#include <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;
+}
diff --git a/mobileprint/edc/genlist_custom.edc b/mobileprint/edc/genlist_custom.edc
new file mode 100644 (file)
index 0000000..79f1ffc
--- /dev/null
@@ -0,0 +1,76 @@
+#define GENLIST_HEIGHT_73_INC 73
+#define LAYOUT_GROUP_LIST_BG_COLOR_INC 248 246 239 255 // white theme
+#define GENLIST_PART_DISCLIP_COLOR_INC 255 255 255 110 // alpha was 64
+
+#define GENLIST_PART_DIALOGUE_BASE( param_item_height ) \
+         part { name: "base"; \
+            type: RECT; \
+            clip_to: "disclip"; \
+            repeat_events: 1; \
+            scale: 1; \
+            description { state: "default" 0.0; \
+               min: 0 param_item_height; \
+               color: LAYOUT_GROUP_LIST_BG_COLOR_INC; \
+            } \
+         }
+
+// When rotating, sometimes item size is expaned.
+#define GENLIST_PART_DISCLIP \
+        part { name: "disclip"; \
+            type: RECT; \
+            description { state: "default" 0.0; \
+            } \
+            description { state: "disabled" 0.0; \
+               inherit: "default" 0.0; \
+               color: GENLIST_PART_DISCLIP_COLOR_INC; \
+            } \
+         }
+
+collections {
+   group { name: "elm/genlist/item/custom/2icon/default";
+      alias: "elm/genlist/item_odd/custom/2icon/default";
+      data.item: "stacking" "above";
+      data.item: "selectraise" "on";
+      data.item: "contents" "elm.icon.1 elm.icon.2";
+
+      parts {
+         GENLIST_PART_DIALOGUE_BASE( GENLIST_HEIGHT_73_INC )
+         part { name: "elm.icon.1";
+            clip_to: "disclip";
+            type: SWALLOW;
+            description { state: "default" 0.0;
+               rel1.relative: 0.021 0.0;
+               rel2.relative: 0.492 1.0;
+            }
+         }
+         part { name: "elm.icon.2";
+            clip_to: "disclip";
+            type: SWALLOW;
+            description { state: "default" 0.0;
+               rel1.relative: 0.51 0.0;
+               rel2.relative: 0.979 1.0;
+            }
+         }
+         GENLIST_PART_DISCLIP
+      }
+      programs {
+         // signal: elm,state,%s,active
+         //   a "check" item named %s went active
+         // signal: elm,state,%s,passive
+         //   a "check" item named %s went passive
+         // default is passive
+         program { name: "go_disabled";
+            signal: "elm,state,disabled";
+            source: "elm";
+            action: STATE_SET "disabled" 0.0;
+            target: "disclip";
+         }
+         program { name: "go_enabled";
+            signal: "elm,state,enabled";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "disclip";
+         }
+      }
+   }
+}
diff --git a/mobileprint/edc/mobileprint.edc b/mobileprint/edc/mobileprint.edc
new file mode 100644 (file)
index 0000000..f8ee183
--- /dev/null
@@ -0,0 +1,493 @@
+#define LAYOUT_INDICATOR_HEIGHT_INC 50
+
+collections
+{
+   group {
+               name: "navi";
+               parts {
+                       part {
+                               name, "background";
+                               type, RECT;
+                               description {
+                                       state: "default" 0.0;
+                                       #color: 0 0 0 255;
+                                       color: 255 255 255 255;
+                                       rel1 { relative: 0.0 0.0; offset: 0 0;}
+                                       rel2 { relative: 1.0 1.0; offset: 0 0;}
+                               }
+                       }
+
+                       part { name: "indicator";
+                           type: RECT;
+                           scale: 1;
+                           description { state: "default" 0.0;
+                              min: 0 LAYOUT_INDICATOR_HEIGHT_INC;
+                              max: 999999 LAYOUT_INDICATOR_HEIGHT_INC;
+                              fixed: 0 1;
+                              align: 0.5 0;
+                              visible: 0;
+                           }
+                        }
+                       part { name, "navigation_bar";
+                               type: SWALLOW;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 1.0; to_x: background; to_y: "indicator";}
+                                       rel2 { relative: 1.0 1.0; to: background;}
+                               }
+                       }
+               }
+       }
+   
+   group
+   {
+      name: "printer";
+      parts
+      {
+               part {
+                       name, "printer_name_bg";
+                       type: RECT;
+                       description {
+               color: 242 238 233 255;
+                  rel1.to: "printer_name";
+                          rel2.to: "printer_name";
+                       }
+               }
+               part { name, "printer_name";
+                       type: SWALLOW;
+            scale: 1;
+                       description {
+                          min: 0 50;
+                          align: 0.0 0.0;
+                          fixed: 0 1;
+                          state: "default" 0.0;
+                  rel1 { relative: 0.0 0.0; }
+                          rel2 { relative: 1.0 0.0; }
+                       }
+               }
+       part {
+            name: "bg";
+            type: RECT;
+            scale: 1;
+            description {
+               state: "default" 0.0;
+               #color: 242 238 233 255;
+               color: 255 255 255 255;
+               rel1 { relative: 0.0 1.0; to:"printer_name"; }
+               rel2 { relative: 1.0 1.0; }
+            }
+         }
+          part {
+            name: "image";
+            type: SWALLOW;
+            scale: 1;
+            description {
+               state: "default" 0.0;
+               align: 0.5 0.5;
+               rel1 { relative: 0.0 0.0;to:"bg";}
+               rel2 { relative: 1.0 1.0;to:"bg";}
+                         }
+              }
+           
+         part{
+              name:"bar";
+              type: SWALLOW;
+              scale:1;
+              description {
+                         state: "default" 0.0;
+                         align: 0.5 1.0;
+                         min: 0 104;
+                         fixed: 0 1;
+                         rel1 { relative: 0.0 1.0;}
+                         rel2 { relative: 1.0 1.0;}
+                       }
+                }    
+       }
+   }
+   group
+       {
+      name: "image_view";
+      parts
+      {
+       part {
+            name: "bg";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               #color: 242 238 233 255;
+                  color: 255 255 255 255;
+               rel1 { relative: 0.0 0.0; }
+               rel2 { relative: 1.0 1.0; }
+            }
+         }
+
+         part {
+            name: "content";
+            type: SWALLOW;
+            scale: 1;
+            description {
+               state: "default" 0.0;
+               align: 0.5 0.5;
+               rel1 { relative: 0.0 0.0;  to: "bg";}
+               rel2 { relative: 1.0 0.95; to: "bg";}
+            }
+            description {
+               state: "multi" 0.1;
+               align: 0.5 0.5;
+               rel1 { relative: 0.0 0.0;  to: "bg";}
+               rel2 { relative: 1.0 1.0;  to: "bg";}
+            }
+         }
+       part {
+               name: "process_animation";
+               type: SWALLOW;
+               scale: 1;
+               description {
+                       state: "default" 0.0;
+                       align: 0.5 0.5;
+                       rel1 { relative: 0.0 0.0; to: "bg";}
+                       rel2 { relative: 1.0 1.0; to: "bg";}
+               }
+       }
+         part {
+            name: "pagenumber";
+            type: TEXT;
+            scale: 1;
+            description {
+               state: "default" 0.0;
+               max: -1 0;
+               text {
+                    size: 30;
+                    align: 0.5 0.5;
+               }
+               color: 108 108 108 255;
+               align: 0.5 0.5;
+               rel1 { relative: 0.0 0.95; to: "bg";}
+               rel2 { relative: 1.0 1.0;  to: "bg";}
+            }
+            description {
+               state: "multi" 0.1;
+               visible: 0;
+               max: -1 0;
+               text {
+                    size: 30;
+                    align: 0.5 0.5;
+               }
+               color: 108 108 108 255;
+               align: 0.5 0.5;
+               rel1 { relative: 0.0 0.0;  to: "bg";}
+               rel2 { relative: 1.0 1.0;  to: "bg";}
+            }
+         }
+      }
+   }
+
+       group
+       {
+          name: "popup_search";
+          parts{
+                 part{
+                        name:"elm.swallow.content";
+                        type: SWALLOW;
+                        scale: 1;
+                        description { state: "default" 0.0;
+#            min: 0 70;
+                               align: 0.5 0.0;
+                               fixed: 1 0;
+                               rel1 {
+                                  relative: 0.0 0.0;
+                               }
+                               rel2 {
+                                  relative: 1.0 0.6;
+                               }
+                        }
+                 }
+                 part{
+                        name: "elm.text";
+                        type: TEXT;
+                        scale: 1;
+                        description {
+                               state: "default" 0.0;
+#            min: 0 30;
+                               text {
+                                  size: 30;
+                                  align: 0.5 0.5;
+                                  min: 0 0;
+                               }
+                               color: 108 108 108 255;
+                               align: 0.5 0.5;
+                               rel1 {
+                                  relative: 0.0 0.7;
+                               }
+                               rel2 {
+                                  relative: 1.0 1.0;
+                               }
+                        }
+                 }
+          }
+       }
+
+       group
+       {
+          name: "popup_print";
+          parts{
+                  part{
+                          name: "elm.title";
+                          type: TEXT;
+                          scale : 1;
+                          description {
+                                  state: "default" 0.0;
+                                  max: 400 30;
+                                  text {
+                                          size: 20;
+                                          min: 0 0;
+                                          align: 0.0 0.0;
+                                  }
+                                  color: 108 108 108 255;
+                                  align: 0.0 0.0;
+                                  rel1 {
+                                         relative: 0.0 0.0;
+                                         to: "elm.swallow.content";
+                                  }
+                                  rel2 {
+                                         relative: 1.0 0.0;
+                                         to: "elm.swallow.content";
+                                  }
+                          }
+                 }
+                       
+                 part{ name:"elm.swallow.content";
+                        type: SWALLOW;
+                        scale : 1;
+                        description { state: "default" 0.0;
+                               min: 0 70;
+                               align: 0.5 0.5;
+                               fixed: 1 0;
+                               rel1 {
+                                  relative: 0.0 0.0;
+                               }
+                               rel2 {
+                                  relative: 1.0 1.0;
+                               }
+                        }
+                 }
+          }
+       }
+
+       group { name: "popup_progress";
+          parts{
+                 part { name: "pad_t";
+                        scale : 1;
+                        mouse_events: 0;
+                        repeat_events: 1;
+                        description { state: "default" 0.0;
+                               align: 0.5 0.0;
+                               min: 0 14;
+                               fixed: 0 1;
+                               rel1 {
+                                  relative: 1.0 0.0;
+                                  to_x: "pad_l";
+                               }
+                               rel2 {
+                                  relative: 0.0 0.0;
+                                  to_x: "pad_r";
+                               }
+                        }
+                 }
+                 part { name: "pad_l";
+                        scale: 1;
+                        description { state: "default" 0.0;
+                               min : 10 0;
+                               fixed: 1 0;
+                               rel1 {
+                                  relative: 0.0 0.0;
+                               }
+                               rel2 {
+                                  relative: 0.0 1.0;
+                               }
+                               align: 0.0 0.0;
+                        }
+                 }
+                 part { name: "pad_r";
+                        scale: 1;
+                        description { state: "default" 0.0;
+                               min : 10 0;
+                               fixed: 1 0;
+                               rel1 {
+                                  relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                  relative: 1.0 1.0;
+                               }
+                               align: 1.0 0.0;
+                        }
+                 }
+                 part{ name:"elm.swallow.content";
+                        type: SWALLOW;
+                        scale : 1;
+                        description { state: "default" 0.0;
+                               min: 300 0;
+                               align: 0.5 0.5;
+                               fixed: 1 0;
+                               rel1 {
+                                  relative: 0.5 1.0;
+                                  to: "pad_t";
+                               }
+                               rel2 {
+                                  relative: 0.5 0.0;
+                                  to: "pad_b";
+                               }
+                        }
+                 }
+                 part{ name:"elm.swallow.content.1";
+                        type: SWALLOW;
+                        scale : 1;
+                        description { state: "default" 0.0;
+                               min: 300 0;
+                               align: 0.5 0.5;
+                               fixed: 1 0;
+                               rel1 {
+                                  relative: 0.0 0.0;
+                                  to: "elm.swallow.content";
+                               }
+                               rel2 {
+                                  relative: 1.0 0.3;
+                                  to: "elm.swallow.content";
+                               }
+                        }
+                 }
+                 part{ name:"elm.swallow.content.2";
+                        type: SWALLOW;
+                        scale : 1;
+                        description { state: "default" 0.0;
+                               min: 300 0;
+                               align: 0.5 0.5;
+                               fixed: 1 0;
+                               rel1 {
+                                  relative: 0.0 1.0;
+                                  to: "elm.swallow.content.1";
+                               }
+                               rel2 {
+                                  relative: 1.0 2.0;
+                                  to: "elm.swallow.content.1";
+                               }
+                        }
+                 }
+                 part{ name:"elm.swallow.content.3";
+                        type: SWALLOW;
+                        scale : 1;
+                        description { state: "default" 0.0;
+                               min: 300 0;
+                               align: 0.5 0.5;
+                               fixed: 1 0;
+                               rel1 {
+                                  relative: 0.0 1.0;
+                                  to: "elm.swallow.content.2";
+                               }
+                               rel2 {
+                                  relative: 1.0 2.0;
+                                  to: "elm.swallow.content.2";
+                               }
+                        }
+                 }
+                 part { name: "pad_b";
+                        scale : 1;
+                        mouse_events: 0;
+                        repeat_events: 1;
+                        description { state: "default" 0.0;
+                               align: 0.5 1.0;
+                               min: 0 90;
+                               fixed: 0 1;
+                               rel1 {
+                                  relative: 1.0 1.0;
+                                  to_x: "pad_l";
+                               }
+                               rel2 {
+                                  relative: 0.0 1.0;
+                                  to_x: "pad_r";
+                               }
+                        }
+                 }
+                 part { name: "elm.swallow.end";
+                        type: SWALLOW;
+                        scale : 1;
+                        mouse_events: 1;
+                        repeat_events: 1;
+                        description { state: "default" 0.0;
+                               align: 0.0 0.0;
+                               fixed: 1 1;
+                               rel1 {
+                                  relative: 0.0 0.0;
+                                  to: "pad_b";
+                               }
+                               rel2 {
+                                  relative: 1.0 1.0;
+                                  to: "pad_b";
+                               }
+                        }
+                 }
+                 part { name: "pad_bm";
+                        scale : 1;
+                        mouse_events: 0;
+                        repeat_events: 1;
+                        description { state: "default" 0.0;
+                               align: 0.0 1.0;
+                               min: 0 52;
+                               fixed: 0 1;
+                               rel1 {
+                                  relative: 0.0 1.0;
+                                  to: "pad_b";
+                               }
+                               rel2 {
+                                  relative: 1.0 1.0;
+                                  to: "pad_b";
+                               }
+                        }
+                 }
+                 part { name: "elm.text.subtext1";
+                        type: TEXT;
+                        scale : 1;
+                        description { state: "default" 0.0;
+                               text {
+                                  font: "Tizen:style=Medium";
+                                  size: 16;
+                                  min: 0 0;
+                                  align: 0.0 1.0;
+                                 }
+                               color: 108 108 108 255;
+                               align: 0.0 0.5;
+                               rel1 {
+                                  relative: 0.0 0.0;
+                                  to: "pad_bm";
+                               }
+                               rel2 {
+                                  relative: 1.0 1.0;
+                                  to: "pad_bm";
+                               }
+                        }
+                 }
+                 part { name: "elm.text.subtext2";
+                        type: TEXT;
+                        scale : 1;
+                        description { state: "default" 0.0;
+                               text {
+                                  font: "Tizen:style=Medium";
+                                  size: 16;
+                                  min: 0 0;
+                                  align: 1.0 1.0;
+                                 }
+                               color: 108 108 108 255;
+                               align: 1.0 0.5;
+                               rel1 {
+                                  relative: 0.0 0.0;
+                                  to: "pad_bm";
+                               }
+                               rel2 {
+                                  relative: 1.0 1.0;
+                                  to: "pad_bm";
+                               }
+                        }
+                 }
+          }
+       }
+}
diff --git a/mobileprint/images/A01_print_popup_icon_Rotate.png b/mobileprint/images/A01_print_popup_icon_Rotate.png
new file mode 100644 (file)
index 0000000..2c350ac
Binary files /dev/null and b/mobileprint/images/A01_print_popup_icon_Rotate.png differ
diff --git a/mobileprint/images/A01_print_popup_icon_Rotate02.png b/mobileprint/images/A01_print_popup_icon_Rotate02.png
new file mode 100644 (file)
index 0000000..6d6d3b8
Binary files /dev/null and b/mobileprint/images/A01_print_popup_icon_Rotate02.png differ
diff --git a/mobileprint/images/A01_print_popup_icon_print.png b/mobileprint/images/A01_print_popup_icon_print.png
new file mode 100644 (file)
index 0000000..f07f36e
Binary files /dev/null and b/mobileprint/images/A01_print_popup_icon_print.png differ
diff --git a/mobileprint/images/A01_print_popup_icon_scaling.png b/mobileprint/images/A01_print_popup_icon_scaling.png
new file mode 100644 (file)
index 0000000..8ce7e1e
Binary files /dev/null and b/mobileprint/images/A01_print_popup_icon_scaling.png differ
diff --git a/mobileprint/images/A01_print_popup_icon_setting.png b/mobileprint/images/A01_print_popup_icon_setting.png
new file mode 100644 (file)
index 0000000..463bc22
Binary files /dev/null and b/mobileprint/images/A01_print_popup_icon_setting.png differ
diff --git a/mobileprint/images/A01_print_popup_icon_size.png b/mobileprint/images/A01_print_popup_icon_size.png
new file mode 100644 (file)
index 0000000..30c4fd1
Binary files /dev/null and b/mobileprint/images/A01_print_popup_icon_size.png differ
diff --git a/mobileprint/include/image_editor_conn.h b/mobileprint/include/image_editor_conn.h
new file mode 100644 (file)
index 0000000..b95ac43
--- /dev/null
@@ -0,0 +1,26 @@
+/*
+*  Mobileprint
+*
+* Copyright 2012  Samsung Electronics Co., Ltd
+
+* Licensed under the Flora License, Version 1.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+
+* http://floralicense.org/license/
+
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#ifndef _IMAGE_EDITOR_H_INCLUDED_
+#define _IMAGE_EDITOR_H_INCLUDED_
+
+int load_image_editor_ug(pts_core_data_t *ugd);
+
+#endif /* _IMAGE_EDITOR_H_INCLUDED_ */
+
diff --git a/mobileprint/include/loading_animation.h b/mobileprint/include/loading_animation.h
new file mode 100644 (file)
index 0000000..1055ceb
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+*  Mobileprint
+*
+* Copyright 2012  Samsung Electronics Co., Ltd
+
+* Licensed under the Flora License, Version 1.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+
+* http://floralicense.org/license/
+
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#ifndef _LOADING_ANIMATION_H_INCLUDED_
+#define _LOADING_ANIMATION_H_INCLUDED_
+
+#include "pts_common.h"
+
+
+Evas_Object *loading_animation_add(Evas_Object *parent);
+void show_loading_animation(pts_core_data_t *ugd);
+void hide_loading_animation(pts_core_data_t *ugd);
+
+#endif /* _LOADING_ANIMATION_H_INCLUDED_ */
+
diff --git a/mobileprint/include/mobileprint.h b/mobileprint/include/mobileprint.h
new file mode 100755 (executable)
index 0000000..3d3bcc8
--- /dev/null
@@ -0,0 +1,34 @@
+/*
+*  Mobileprint
+*
+* Copyright 2012  Samsung Electronics Co., Ltd
+
+* Licensed under the Flora License, Version 1.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+
+* http://floralicense.org/license/
+
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#ifndef __APP_COMMON_H__
+#define __APP_COMMON_H__
+
+#include <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__ */
diff --git a/mobileprint/include/preview_content.h b/mobileprint/include/preview_content.h
new file mode 100644 (file)
index 0000000..9d66f9b
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+*  Mobileprint
+*
+* Copyright 2012  Samsung Electronics Co., Ltd
+
+* Licensed under the Flora License, Version 1.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+
+* http://floralicense.org/license/
+
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#ifndef _PREVIEW_CONTENT_H_INCLUDED_
+#define _PREVIEW_CONTENT_H_INCLUDED_
+
+#include <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_ */
+
diff --git a/mobileprint/include/preview_engine.h b/mobileprint/include/preview_engine.h
new file mode 100644 (file)
index 0000000..71b036a
--- /dev/null
@@ -0,0 +1,94 @@
+/*
+*  Mobileprint
+*
+* Copyright 2012  Samsung Electronics Co., Ltd
+
+* Licensed under the Flora License, Version 1.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+
+* http://floralicense.org/license/
+
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#ifndef _PREVIEW_ENGINE_H_INCLUDED_
+#define _PREVIEW_ENGINE_H_INCLUDED_
+
+struct preview_engine;
+struct initial_preview_data;
+enum preview_engine_event_status;
+
+#include <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_ */
+
diff --git a/mobileprint/include/preview_model.h b/mobileprint/include/preview_model.h
new file mode 100644 (file)
index 0000000..810bfb5
--- /dev/null
@@ -0,0 +1,83 @@
+/*
+*  Mobileprint
+*
+* Copyright 2012  Samsung Electronics Co., Ltd
+
+* Licensed under the Flora License, Version 1.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+
+* http://floralicense.org/license/
+
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#ifndef _PREVIEW_MODEL_H_INCLUDED_
+#define _PREVIEW_MODEL_H_INCLUDED_
+
+struct preview_model;
+
+#include <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_ */
+
diff --git a/mobileprint/include/preview_task_model.h b/mobileprint/include/preview_task_model.h
new file mode 100644 (file)
index 0000000..45a8e46
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+*  Mobileprint
+*
+* Copyright 2012  Samsung Electronics Co., Ltd
+
+* Licensed under the Flora License, Version 1.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+
+* http://floralicense.org/license/
+
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#ifndef _PREVIEW_TASK_MODEL_H_INCLUDED_
+#define _PREVIEW_TASK_MODEL_H_INCLUDED_
+
+//#define MAX_PREVIEW_TASK_COUNT       3 /* TODO: autodetection */
+
+struct preview_task_model;
+struct preview_conf;
+
+#include <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_ */
+
diff --git a/mobileprint/include/preview_widget.h b/mobileprint/include/preview_widget.h
new file mode 100644 (file)
index 0000000..ead573c
--- /dev/null
@@ -0,0 +1,35 @@
+/*
+*  Mobileprint
+*
+* Copyright 2012  Samsung Electronics Co., Ltd
+
+* Licensed under the Flora License, Version 1.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+
+* http://floralicense.org/license/
+
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#ifndef _PREVIEW_WIDGET_H_INCLUDED_
+#define _PREVIEW_WIDGET_H_INCLUDED_
+
+#include "preview_engine.h"
+
+
+struct preview_widget {
+       int pages_count;
+       int cur_page;
+       struct preview_engine engine;
+};
+
+Eina_Bool page_ready_cb(void *data, int type, void *event);
+
+#endif /* _PREVIEW_WIDGET_H_INCLUDED_ */
+
diff --git a/mobileprint/include/pts_common.h b/mobileprint/include/pts_common.h
new file mode 100755 (executable)
index 0000000..5bf0252
--- /dev/null
@@ -0,0 +1,346 @@
+/*
+*  Mobileprint
+*
+* Copyright 2012  Samsung Electronics Co., Ltd
+
+* Licensed under the Flora License, Version 1.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+
+* http://floralicense.org/license/
+
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#ifndef PTS_COMMON_H_
+#define PTS_COMMON_H_
+
+#include <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_ */
+
diff --git a/mobileprint/include/pts_debug.h b/mobileprint/include/pts_debug.h
new file mode 100755 (executable)
index 0000000..f073071
--- /dev/null
@@ -0,0 +1,132 @@
+/*
+*  Mobileprint
+*
+* Copyright 2012  Samsung Electronics Co., Ltd
+
+* Licensed under the Flora License, Version 1.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+
+* http://floralicense.org/license/
+
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#ifndef __PTS_DEBUG_H__
+#define __PTS_DEBUG_H__
+
+__BEGIN_DECLS
+
+#define PTS_DLOG_OUT
+
+#ifdef PTS_DLOG_OUT
+#undef LOG_TAG
+#define LOG_TAG "MOBILEPRINT"
+#include <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__ */
diff --git a/mobileprint/include/pts_list_view.h b/mobileprint/include/pts_list_view.h
new file mode 100755 (executable)
index 0000000..9dcfc40
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+*  Mobileprint
+*
+* Copyright 2012  Samsung Electronics Co., Ltd
+
+* Licensed under the Flora License, Version 1.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+
+* http://floralicense.org/license/
+
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#ifndef PTS_LIST_VIEW_H_
+#define PTS_LIST_VIEW_H_
+
+/**
+ *     This function let the app create the printers list view
+ *     @return  void
+ *     @param[in] ld the pointer to the ug list structure
+ */
+#endif /* PTS_LIST_VIEW_H_ */
diff --git a/mobileprint/include/pts_main_view.h b/mobileprint/include/pts_main_view.h
new file mode 100755 (executable)
index 0000000..26963e6
--- /dev/null
@@ -0,0 +1,75 @@
+/*
+*  Mobileprint
+*
+* Copyright 2012  Samsung Electronics Co., Ltd
+
+* Licensed under the Flora License, Version 1.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+
+* http://floralicense.org/license/
+
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#ifndef PTS_MAIN_VIEW_H_
+#define PTS_MAIN_VIEW_H_
+
+#include <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_ */
diff --git a/mobileprint/include/pts_setting_view.h b/mobileprint/include/pts_setting_view.h
new file mode 100755 (executable)
index 0000000..47085cd
--- /dev/null
@@ -0,0 +1,30 @@
+/*
+*  Mobileprint
+*
+* Copyright 2012  Samsung Electronics Co., Ltd
+
+* Licensed under the Flora License, Version 1.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+
+* http://floralicense.org/license/
+
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#ifndef PTS_SETTING_VIEW_H_
+#define PTS_SETTING_VIEW_H_
+#include "pts_common.h"
+
+/**
+ *     This function let the app create setting view
+ *     @return  void
+ *     @param[in] sd the pointer to the pts_ug_main_data structure
+ */
+void pts_create_setting_view(pts_core_data_t *ugd);
+#endif /* PTS_SETTING_VIEW_H_ */
diff --git a/mobileprint/mobileprint.desktop.in b/mobileprint/mobileprint.desktop.in
new file mode 100644 (file)
index 0000000..557943b
--- /dev/null
@@ -0,0 +1,10 @@
+Name=MobilePrint
+Type=Application
+Exec=@PREFIX@/bin/@PROJECT_NAME@
+Icon=@PKGNAME@.png
+MimeType=
+nodisplay=True
+Version=0.2.15-54
+X-TIZEN-TaskManage=False
+X-TIZEN-Multiple=False
+X-TIZEN-SVC=http://tizen.org/appcontrol/operation/PRINT|NULL|image/*;http://tizen.org/appcontrol/operation/PRINT|NULL|application/pdf;
diff --git a/mobileprint/mobileprint.xml b/mobileprint/mobileprint.xml
new file mode 100644 (file)
index 0000000..cc60489
--- /dev/null
@@ -0,0 +1,19 @@
+<?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>
diff --git a/mobileprint/po/CMakeLists.txt b/mobileprint/po/CMakeLists.txt
new file mode 100755 (executable)
index 0000000..81c99a0
--- /dev/null
@@ -0,0 +1,35 @@
+# for i18n
+
+#SET(POFILES en_US.po nl.po de.po zh_HK.po zh_CN.po ru.po ko.po zh_TW.po ja.po es.po el.po it.po tr_TR.po pt.po fr.po)
+SET(POFILES 
+       ar.po da.po en_US.po fi.po hi.po it_IT.po 
+       lt.po pl.po sk.po uk.po zh_TW.po az.po 
+       de_DE.po es_ES.po fr_CA.po hr.po ja_JP.po 
+       lv.po pt_BR.po sl.po uz.po bg.po el_GR.po 
+       es_US.po fr_FR.po hu.po ka.po mk.po pt_PT.po 
+       sr.po zh_CN.po ca.po en.po et.po ga.po hy.po 
+       kk.po nb.po ro.po sv.po zh_HK.po cs.po en_PH.po 
+       eu.po gl.po is.po ko_KR.po nl_NL.po ru_RU.po 
+       tr_TR.po zh_SG.po               
+       )
+
+SET(MSGFMT "/usr/bin/msgfmt")
+
+FOREACH(pofile ${POFILES})
+   SET(pofile ${CMAKE_CURRENT_SOURCE_DIR}/${pofile})
+   MESSAGE("PO: ${pofile}")
+   GET_FILENAME_COMPONENT(absPofile ${pofile} ABSOLUTE)
+   GET_FILENAME_COMPONENT(lang ${absPofile} NAME_WE)
+   SET(moFile ${CMAKE_CURRENT_BINARY_DIR}/${lang}.mo)
+   ADD_CUSTOM_COMMAND(
+      OUTPUT ${moFile}
+      COMMAND ${MSGFMT} -o ${moFile} ${absPofile}
+      DEPENDS ${absPofile}
+      )
+   INSTALL(FILES ${moFile}
+      DESTINATION ${LOCALEDIR}/${lang}/LC_MESSAGES RENAME ${PROJECT_NAME}.mo)
+   SET(moFiles ${moFiles} ${moFile})
+ENDFOREACH(pofile)
+
+MESSAGE(".mo files: ${moFiles}")
+ADD_CUSTOM_TARGET(po ALL DEPENDS ${moFiles})
diff --git a/mobileprint/po/POTFILES.in b/mobileprint/po/POTFILES.in
new file mode 100755 (executable)
index 0000000..b6f4c3e
--- /dev/null
@@ -0,0 +1,6 @@
+# List of source files containing translatable strings.
+app/mobileprint.c
+app/pts_common.c
+app/pts_list_view.c
+app/pts_main_view.c
+app/pts_setting_view.c
diff --git a/mobileprint/po/ar.po b/mobileprint/po/ar.po
new file mode 100644 (file)
index 0000000..1594aec
--- /dev/null
@@ -0,0 +1,171 @@
+msgid "IDS_COM_SK_HIDE"
+msgstr "إخفاء"
+
+msgid "IDS_COM_SK_REFRESH"
+msgstr "إنعاش"
+
+msgid "IDS_COM_SK_CANCEL"
+msgstr "إلغاء"
+
+msgid "IDS_IMGE_OPT_ROTATE"
+msgstr "تدوير"
+
+msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR"
+msgstr "خطأ بالنظام"
+
+msgid "IDS_COM_SK_BACK"
+msgstr "رجوع"
+
+msgid "IDS_COM_BODY_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_COM_SK_OK"
+msgstr "موافق"
+
+msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE"
+msgstr "نوع ملف غير مدعوم"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "غير مدعوم"
+
+msgid "IDS_BR_BODY_CURRENT_PAGE"
+msgstr "الصفحة الحالية"
+
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "تم توصيل الطابعة"
+
+msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT"
+msgstr "اتصل بشبكة Wi-Fi للطباعة"
+
+msgid "IDS_PRT_BODY_SELECT_PRINTER"
+msgstr "تحديد طابعة"
+
+msgid "IDS_PRT_SK_PRINT_PREVIEW"
+msgstr "معاينة"
+
+msgid "IDS_SMPOS_SK3_PRINT"
+msgstr "طباعة"
+
+msgid "IDS_IMGE_BODY_SIZE"
+msgstr "الحجم"
+
+msgid "IDS_PRT_BODY_SCALING_ABB"
+msgstr "تغيير الحجم"
+
+msgid "IDS_COM_BODY_SETTING"
+msgstr "الضبط"
+
+msgid "IDS_BT_OPT_FIT_TO_PAPER"
+msgstr "ملاءمة للورقة"
+
+msgid "IDS_COM_SK_CUSTOM"
+msgstr "ضبط مخصص"
+
+msgid "IDS_IMGE_BODY_WIDTH"
+msgstr "العرض"
+
+msgid "IDS_IMGE_BODY_HEIGHT"
+msgstr "الطول"
+
+msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB"
+msgstr "الاحتفاظ بنسبة العرض إلى الارتفاع"
+
+msgid "IDS_COM_BODY_UNIT_INCH"
+msgstr "بوصة"
+
+msgid "IDS_COM_BODY_UNIT_CM"
+msgstr "سم"
+
+msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB"
+msgstr "%d صفحات في الورقة الواحدة"
+
+msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS"
+msgstr "إعدادات الطابعة"
+
+msgid "IDS_PRT_BODY_PRINTER"
+msgstr "طابعة"
+
+msgid "IDS_PRT_BODY_PAPERSIZE"
+msgstr "حجم الورقة"
+
+msgid "IDS_PRT_BODY_NUMBEROFCOPIES"
+msgstr "عدد النسخ"
+
+msgid "IDS_PRT_BODY_PRINT_RANGE_ABB"
+msgstr "نطاق الطباعة"
+
+msgid "IDS_PRT_BODY_COLOUR"
+msgstr "اللون"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT"
+msgstr "المسودة"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD"
+msgstr "عادي"
+
+msgid "IDS_COM_BODY_HIGH"
+msgstr "عالي"
+
+msgid "IDS_ST_BODY_NORMAL"
+msgstr "عادي"
+
+msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING"
+msgstr "جار انتظار الطباعة..."
+
+msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING"
+msgstr "جار التجهيز للطباعة..."
+
+msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING"
+msgstr "قيد الطباعة"
+
+msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB"
+msgstr "فوتوغرافي"
+
+msgid "IDS_ST_BODY_GLOSSY"
+msgstr "راقي"
+
+msgid "IDS_DIC_BODY_ALL"
+msgstr "الكل"
+
+msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY"
+msgstr "جودة الطباعة"
+
+msgid "IDS_IMGE_HEADER_GREY"
+msgstr "رمادي"
+
+msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE"
+msgstr "لا توجد طابعات متوفرة"
+
+msgid "IDS_COM_BODY_NO_DEVICES"
+msgstr "لا توجد أجهزة"
+
+msgid "IDS_PRT_POP_PRINTING_CANCELED"
+msgstr "تم إلغاء الطباعة"
+
+msgid "IDS_COM_POP_MEMORY_FULL"
+msgstr "الذاكرة ممتلئة"
+
+msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING"
+msgstr "جار البحث عن طابعات..."
+
+msgid "IDS_PRT_POP_CHECKPRINTERSTATE"
+msgstr "فحص حالة الطابعة"
+
+msgid "IDS_ASEML_POP_SEARCH_FAILED"
+msgstr "فشل البحث"
+
+msgid "IDS_PRT_POP_PRINTINGERROR"
+msgstr "خطأ طباعة"
+
+msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED"
+msgstr "تم قطع اتصال Wi-Fi"
+
+msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER"
+msgstr "ورق"
+
+msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2"
+msgstr "تم فصل الطابعة"
+
diff --git a/mobileprint/po/az.po b/mobileprint/po/az.po
new file mode 100644 (file)
index 0000000..7adc1ea
--- /dev/null
@@ -0,0 +1,171 @@
+msgid "IDS_COM_SK_HIDE"
+msgstr "Gizlə"
+
+msgid "IDS_COM_SK_REFRESH"
+msgstr "Yenilǝ"
+
+msgid "IDS_COM_SK_CANCEL"
+msgstr "Ləğv et"
+
+msgid "IDS_IMGE_OPT_ROTATE"
+msgstr "Döndər"
+
+msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR"
+msgstr "Sistemdə yanlışlıq"
+
+msgid "IDS_COM_SK_BACK"
+msgstr "Geriyə"
+
+msgid "IDS_COM_BODY_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_COM_SK_OK"
+msgstr "OK"
+
+msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE"
+msgstr "Dəstəklənməyən fayl tipi"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Dəstəklənmədi"
+
+msgid "IDS_BR_BODY_CURRENT_PAGE"
+msgstr "Cari səhifə"
+
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Printer qoşuldu"
+
+msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT"
+msgstr "Çap üçün Wi-Fi şəbəkəsinə qoşul"
+
+msgid "IDS_PRT_BODY_SELECT_PRINTER"
+msgstr "Printeri seç"
+
+msgid "IDS_PRT_SK_PRINT_PREVIEW"
+msgstr "İlkin baxış"
+
+msgid "IDS_SMPOS_SK3_PRINT"
+msgstr "Çap et"
+
+msgid "IDS_IMGE_BODY_SIZE"
+msgstr "Ölçü"
+
+msgid "IDS_PRT_BODY_SCALING_ABB"
+msgstr "Miqyaslama"
+
+msgid "IDS_COM_BODY_SETTING"
+msgstr "Parametr"
+
+msgid "IDS_BT_OPT_FIT_TO_PAPER"
+msgstr "Kağıza uyğunlaşdırın"
+
+msgid "IDS_COM_SK_CUSTOM"
+msgstr "Zövqə uyğun"
+
+msgid "IDS_IMGE_BODY_WIDTH"
+msgstr "En"
+
+msgid "IDS_IMGE_BODY_HEIGHT"
+msgstr "Yüksəklik"
+
+msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB"
+msgstr "Nisbəti saxla"
+
+msgid "IDS_COM_BODY_UNIT_INCH"
+msgstr "düym"
+
+msgid "IDS_COM_BODY_UNIT_CM"
+msgstr "sm"
+
+msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB"
+msgstr "1 vərəqdə %d səhifə"
+
+msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS"
+msgstr "Printer parametrləri"
+
+msgid "IDS_PRT_BODY_PRINTER"
+msgstr "Printer"
+
+msgid "IDS_PRT_BODY_PAPERSIZE"
+msgstr "Kağızın ölçüsü"
+
+msgid "IDS_PRT_BODY_NUMBEROFCOPIES"
+msgstr "Surətlərin sayı"
+
+msgid "IDS_PRT_BODY_PRINT_RANGE_ABB"
+msgstr "Çap diapazonu"
+
+msgid "IDS_PRT_BODY_COLOUR"
+msgstr "Rəng"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT"
+msgstr "Qaralama"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD"
+msgstr "Standart"
+
+msgid "IDS_COM_BODY_HIGH"
+msgstr "Yüksək"
+
+msgid "IDS_ST_BODY_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING"
+msgstr "Çapı gözləyir..."
+
+msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING"
+msgstr "Çapa hazırlayır..."
+
+msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING"
+msgstr "Çap edilir..."
+
+msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB"
+msgstr "Fotoqrafik"
+
+msgid "IDS_ST_BODY_GLOSSY"
+msgstr "Glossy"
+
+msgid "IDS_DIC_BODY_ALL"
+msgstr "Hamısını"
+
+msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY"
+msgstr "Çap keyfiyyəti"
+
+msgid "IDS_IMGE_HEADER_GREY"
+msgstr "Boz"
+
+msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE"
+msgstr "Printerlərdən istifadə etmək mümkün deyil"
+
+msgid "IDS_COM_BODY_NO_DEVICES"
+msgstr "Cihaz yoxdur"
+
+msgid "IDS_PRT_POP_PRINTING_CANCELED"
+msgstr "Çap etmə ləğv edilib"
+
+msgid "IDS_COM_POP_MEMORY_FULL"
+msgstr "Yaddaş dolmuşdur"
+
+msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING"
+msgstr "Printerləri axtarır..."
+
+msgid "IDS_PRT_POP_CHECKPRINTERSTATE"
+msgstr "Printerin vəziyyətini yoxla"
+
+msgid "IDS_ASEML_POP_SEARCH_FAILED"
+msgstr "Axtarış uğursuz oldu"
+
+msgid "IDS_PRT_POP_PRINTINGERROR"
+msgstr "Çapla əlaqədar xəta"
+
+msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED"
+msgstr "Wi-Fi bağlantısı kəsildi"
+
+msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER"
+msgstr "Kağız"
+
+msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2"
+msgstr "Printer ilə əlaqə kəsildi"
+
diff --git a/mobileprint/po/bg.po b/mobileprint/po/bg.po
new file mode 100644 (file)
index 0000000..3281ae1
--- /dev/null
@@ -0,0 +1,171 @@
+msgid "IDS_COM_SK_HIDE"
+msgstr "Скриване"
+
+msgid "IDS_COM_SK_REFRESH"
+msgstr "Презар."
+
+msgid "IDS_COM_SK_CANCEL"
+msgstr "Отмени"
+
+msgid "IDS_IMGE_OPT_ROTATE"
+msgstr "Завъртане"
+
+msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR"
+msgstr "Системна грешка"
+
+msgid "IDS_COM_SK_BACK"
+msgstr "Назад"
+
+msgid "IDS_COM_BODY_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_COM_SK_OK"
+msgstr "OK"
+
+msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE"
+msgstr "Неподдържан тип файл"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Не се поддържа"
+
+msgid "IDS_BR_BODY_CURRENT_PAGE"
+msgstr "Текуща страница"
+
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Принтерът е свързан"
+
+msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT"
+msgstr "Свързване с Wi-Fi мрежа, за да се отпечатва"
+
+msgid "IDS_PRT_BODY_SELECT_PRINTER"
+msgstr "Избор на принтер"
+
+msgid "IDS_PRT_SK_PRINT_PREVIEW"
+msgstr "Преглед"
+
+msgid "IDS_SMPOS_SK3_PRINT"
+msgstr "Печат"
+
+msgid "IDS_IMGE_BODY_SIZE"
+msgstr "Размер"
+
+msgid "IDS_PRT_BODY_SCALING_ABB"
+msgstr "Мащабиране"
+
+msgid "IDS_COM_BODY_SETTING"
+msgstr "Настройка"
+
+msgid "IDS_BT_OPT_FIT_TO_PAPER"
+msgstr "Оразмери според формата на листа"
+
+msgid "IDS_COM_SK_CUSTOM"
+msgstr "Персонлз."
+
+msgid "IDS_IMGE_BODY_WIDTH"
+msgstr "Ширина"
+
+msgid "IDS_IMGE_BODY_HEIGHT"
+msgstr "Височина"
+
+msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB"
+msgstr "Запази съотношението"
+
+msgid "IDS_COM_BODY_UNIT_INCH"
+msgstr "инч"
+
+msgid "IDS_COM_BODY_UNIT_CM"
+msgstr "см"
+
+msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB"
+msgstr "%d страници на 1 лист"
+
+msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS"
+msgstr "Настройки на принтер"
+
+msgid "IDS_PRT_BODY_PRINTER"
+msgstr "Принтер"
+
+msgid "IDS_PRT_BODY_PAPERSIZE"
+msgstr "Размер на страницата"
+
+msgid "IDS_PRT_BODY_NUMBEROFCOPIES"
+msgstr "Брой копия"
+
+msgid "IDS_PRT_BODY_PRINT_RANGE_ABB"
+msgstr "Печат на диапазон"
+
+msgid "IDS_PRT_BODY_COLOUR"
+msgstr "Цвят"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT"
+msgstr "Чернова"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD"
+msgstr "Стандартна"
+
+msgid "IDS_COM_BODY_HIGH"
+msgstr "Висок"
+
+msgid "IDS_ST_BODY_NORMAL"
+msgstr "Нормален"
+
+msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING"
+msgstr "Изчакване за печат..."
+
+msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING"
+msgstr "Подготовка за печат..."
+
+msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING"
+msgstr "Отпечатване..."
+
+msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB"
+msgstr "Фотографска"
+
+msgid "IDS_ST_BODY_GLOSSY"
+msgstr "Бляскъв"
+
+msgid "IDS_DIC_BODY_ALL"
+msgstr "Всички"
+
+msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY"
+msgstr "Качество на печат"
+
+msgid "IDS_IMGE_HEADER_GREY"
+msgstr "Сив"
+
+msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE"
+msgstr "Няма достъпни принтери"
+
+msgid "IDS_COM_BODY_NO_DEVICES"
+msgstr "Няма устройства"
+
+msgid "IDS_PRT_POP_PRINTING_CANCELED"
+msgstr "Отпечатването е отменено"
+
+msgid "IDS_COM_POP_MEMORY_FULL"
+msgstr "Паметта е заета"
+
+msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING"
+msgstr "Търсене на принтери..."
+
+msgid "IDS_PRT_POP_CHECKPRINTERSTATE"
+msgstr "Проверка състояние на принтер"
+
+msgid "IDS_ASEML_POP_SEARCH_FAILED"
+msgstr "Търсенето неуспешно"
+
+msgid "IDS_PRT_POP_PRINTINGERROR"
+msgstr "Грешка при печат"
+
+msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED"
+msgstr "Прекъсната Wi-Fi връзка"
+
+msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER"
+msgstr "Хартия"
+
+msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2"
+msgstr "Принтерът не е свързан"
+
diff --git a/mobileprint/po/ca.po b/mobileprint/po/ca.po
new file mode 100644 (file)
index 0000000..47b232a
--- /dev/null
@@ -0,0 +1,171 @@
+msgid "IDS_COM_SK_HIDE"
+msgstr "Ocultar"
+
+msgid "IDS_COM_SK_REFRESH"
+msgstr "Actualitzar"
+
+msgid "IDS_COM_SK_CANCEL"
+msgstr "Cancel·lar"
+
+msgid "IDS_IMGE_OPT_ROTATE"
+msgstr "Girar"
+
+msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR"
+msgstr "Error del sistema"
+
+msgid "IDS_COM_SK_BACK"
+msgstr "Enrere"
+
+msgid "IDS_COM_BODY_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_COM_SK_OK"
+msgstr "Acceptar"
+
+msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE"
+msgstr "No s'admet el tipus de fitxer"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "No s'admet"
+
+msgid "IDS_BR_BODY_CURRENT_PAGE"
+msgstr "Pàgina actual"
+
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Impressora connectada"
+
+msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT"
+msgstr "Connectar a una xarxa Wi-Fi per imprimir"
+
+msgid "IDS_PRT_BODY_SELECT_PRINTER"
+msgstr "Seleccionar impressora"
+
+msgid "IDS_PRT_SK_PRINT_PREVIEW"
+msgstr "Vista prèvia"
+
+msgid "IDS_SMPOS_SK3_PRINT"
+msgstr "Imprimir"
+
+msgid "IDS_IMGE_BODY_SIZE"
+msgstr "Mida"
+
+msgid "IDS_PRT_BODY_SCALING_ABB"
+msgstr "Canvi de mida"
+
+msgid "IDS_COM_BODY_SETTING"
+msgstr "Ajustament"
+
+msgid "IDS_BT_OPT_FIT_TO_PAPER"
+msgstr "Ajustar al paper"
+
+msgid "IDS_COM_SK_CUSTOM"
+msgstr "Personal."
+
+msgid "IDS_IMGE_BODY_WIDTH"
+msgstr "Amplària"
+
+msgid "IDS_IMGE_BODY_HEIGHT"
+msgstr "Alçària"
+
+msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB"
+msgstr "Mantenir rel aspecte"
+
+msgid "IDS_COM_BODY_UNIT_INCH"
+msgstr "polzada"
+
+msgid "IDS_COM_BODY_UNIT_CM"
+msgstr "cm"
+
+msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB"
+msgstr "%d pàgines en 1 full"
+
+msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS"
+msgstr "Ajustaments d'impressora"
+
+msgid "IDS_PRT_BODY_PRINTER"
+msgstr "Impressora"
+
+msgid "IDS_PRT_BODY_PAPERSIZE"
+msgstr "Mida de paper"
+
+msgid "IDS_PRT_BODY_NUMBEROFCOPIES"
+msgstr "Nombre de còpies"
+
+msgid "IDS_PRT_BODY_PRINT_RANGE_ABB"
+msgstr "Interval d'impressió"
+
+msgid "IDS_PRT_BODY_COLOUR"
+msgstr "Color"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT"
+msgstr "Esborrany"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD"
+msgstr "Estàndard"
+
+msgid "IDS_COM_BODY_HIGH"
+msgstr "Alta"
+
+msgid "IDS_ST_BODY_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING"
+msgstr "Esperant per imprimir..."
+
+msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING"
+msgstr "Preparant per imprimir..."
+
+msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING"
+msgstr "Imprimint..."
+
+msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB"
+msgstr "Fotogràfic"
+
+msgid "IDS_ST_BODY_GLOSSY"
+msgstr "Glossy"
+
+msgid "IDS_DIC_BODY_ALL"
+msgstr "Tot"
+
+msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY"
+msgstr "Qualitat d'impressió"
+
+msgid "IDS_IMGE_HEADER_GREY"
+msgstr "Gris"
+
+msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE"
+msgstr "Cap impressora disponible"
+
+msgid "IDS_COM_BODY_NO_DEVICES"
+msgstr "Sense dispositius"
+
+msgid "IDS_PRT_POP_PRINTING_CANCELED"
+msgstr "Impressió cancel·lada"
+
+msgid "IDS_COM_POP_MEMORY_FULL"
+msgstr "Memòria plena"
+
+msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING"
+msgstr "Cercant impressores..."
+
+msgid "IDS_PRT_POP_CHECKPRINTERSTATE"
+msgstr "Comprovar l'estat de la impressora"
+
+msgid "IDS_ASEML_POP_SEARCH_FAILED"
+msgstr "Error en la cerca"
+
+msgid "IDS_PRT_POP_PRINTINGERROR"
+msgstr "Error d'impressió"
+
+msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED"
+msgstr "Wi-Fi desconnectat"
+
+msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER"
+msgstr "Paper"
+
+msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2"
+msgstr "Impressora desconnectada"
+
diff --git a/mobileprint/po/cs.po b/mobileprint/po/cs.po
new file mode 100644 (file)
index 0000000..f539f6b
--- /dev/null
@@ -0,0 +1,171 @@
+msgid "IDS_COM_SK_HIDE"
+msgstr "Skrýt"
+
+msgid "IDS_COM_SK_REFRESH"
+msgstr "Obnovit"
+
+msgid "IDS_COM_SK_CANCEL"
+msgstr "Zrušit"
+
+msgid "IDS_IMGE_OPT_ROTATE"
+msgstr "Otočit"
+
+msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR"
+msgstr "Systémová chyba"
+
+msgid "IDS_COM_SK_BACK"
+msgstr "Zpět"
+
+msgid "IDS_COM_BODY_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_COM_SK_OK"
+msgstr "OK"
+
+msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE"
+msgstr "Nepodporovaný typ souboru"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Není podporováno"
+
+msgid "IDS_BR_BODY_CURRENT_PAGE"
+msgstr "Aktuální stránka"
+
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Tiskárna byla připojena"
+
+msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT"
+msgstr "Pro tisk připojit k síti Wi-Fi"
+
+msgid "IDS_PRT_BODY_SELECT_PRINTER"
+msgstr "Vybrat tiskárnu"
+
+msgid "IDS_PRT_SK_PRINT_PREVIEW"
+msgstr "Náhled"
+
+msgid "IDS_SMPOS_SK3_PRINT"
+msgstr "Tisk"
+
+msgid "IDS_IMGE_BODY_SIZE"
+msgstr "Velikost"
+
+msgid "IDS_PRT_BODY_SCALING_ABB"
+msgstr "Měřítko"
+
+msgid "IDS_COM_BODY_SETTING"
+msgstr "Nastavení"
+
+msgid "IDS_BT_OPT_FIT_TO_PAPER"
+msgstr "Přizpůsobit papíru"
+
+msgid "IDS_COM_SK_CUSTOM"
+msgstr "Vlastní"
+
+msgid "IDS_IMGE_BODY_WIDTH"
+msgstr "Šířka"
+
+msgid "IDS_IMGE_BODY_HEIGHT"
+msgstr "Výška"
+
+msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB"
+msgstr "Zachovat poměr stran"
+
+msgid "IDS_COM_BODY_UNIT_INCH"
+msgstr "palec"
+
+msgid "IDS_COM_BODY_UNIT_CM"
+msgstr "cm"
+
+msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB"
+msgstr "%d stránek na 1 list"
+
+msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS"
+msgstr "Nastavení tiskárny"
+
+msgid "IDS_PRT_BODY_PRINTER"
+msgstr "Tiskárna"
+
+msgid "IDS_PRT_BODY_PAPERSIZE"
+msgstr "Velikost papíru"
+
+msgid "IDS_PRT_BODY_NUMBEROFCOPIES"
+msgstr "Počet kopií"
+
+msgid "IDS_PRT_BODY_PRINT_RANGE_ABB"
+msgstr "Rozsah tisku"
+
+msgid "IDS_PRT_BODY_COLOUR"
+msgstr "Barva"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT"
+msgstr "Koncept"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD"
+msgstr "Standardní"
+
+msgid "IDS_COM_BODY_HIGH"
+msgstr "Vysoká"
+
+msgid "IDS_ST_BODY_NORMAL"
+msgstr "Normální"
+
+msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING"
+msgstr "Čeká na tisk..."
+
+msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING"
+msgstr "Probíhá příprava tisku..."
+
+msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING"
+msgstr "Tisk..."
+
+msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB"
+msgstr "Fotografický"
+
+msgid "IDS_ST_BODY_GLOSSY"
+msgstr "Glossy"
+
+msgid "IDS_DIC_BODY_ALL"
+msgstr "Vše"
+
+msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY"
+msgstr "Kvalita tisku"
+
+msgid "IDS_IMGE_HEADER_GREY"
+msgstr "Šedá"
+
+msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE"
+msgstr "Žádné tiskárny nejsou k dispozici"
+
+msgid "IDS_COM_BODY_NO_DEVICES"
+msgstr "Žádná zařízení"
+
+msgid "IDS_PRT_POP_PRINTING_CANCELED"
+msgstr "Tisk byl zrušen"
+
+msgid "IDS_COM_POP_MEMORY_FULL"
+msgstr "Paměť je plná"
+
+msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING"
+msgstr "Vyhledávání tiskáren..."
+
+msgid "IDS_PRT_POP_CHECKPRINTERSTATE"
+msgstr "Zkontrolovat stav tiskárny"
+
+msgid "IDS_ASEML_POP_SEARCH_FAILED"
+msgstr "Hledání se nezdařilo"
+
+msgid "IDS_PRT_POP_PRINTINGERROR"
+msgstr "Chyba tisku"
+
+msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED"
+msgstr "Wi-Fi bylo odpojeno"
+
+msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER"
+msgstr "Papír"
+
+msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2"
+msgstr "Tiskárna byla odpojena"
+
diff --git a/mobileprint/po/da.po b/mobileprint/po/da.po
new file mode 100644 (file)
index 0000000..43bdcd5
--- /dev/null
@@ -0,0 +1,171 @@
+msgid "IDS_COM_SK_HIDE"
+msgstr "Skjul"
+
+msgid "IDS_COM_SK_REFRESH"
+msgstr "Opdatér"
+
+msgid "IDS_COM_SK_CANCEL"
+msgstr "Annuller"
+
+msgid "IDS_IMGE_OPT_ROTATE"
+msgstr "Roter"
+
+msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR"
+msgstr "Systemfejl"
+
+msgid "IDS_COM_SK_BACK"
+msgstr "Tilbage"
+
+msgid "IDS_COM_BODY_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_COM_SK_OK"
+msgstr "OK"
+
+msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE"
+msgstr "Filtype understøttes ikke"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Understøttes ikke"
+
+msgid "IDS_BR_BODY_CURRENT_PAGE"
+msgstr "Aktuel side"
+
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Printer tilsluttet"
+
+msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT"
+msgstr "Slut til Wi-Fi-netværk for at printe"
+
+msgid "IDS_PRT_BODY_SELECT_PRINTER"
+msgstr "Vælg printer"
+
+msgid "IDS_PRT_SK_PRINT_PREVIEW"
+msgstr "Eksempel"
+
+msgid "IDS_SMPOS_SK3_PRINT"
+msgstr "Udskriv"
+
+msgid "IDS_IMGE_BODY_SIZE"
+msgstr "Størrelse"
+
+msgid "IDS_PRT_BODY_SCALING_ABB"
+msgstr "Skalerer"
+
+msgid "IDS_COM_BODY_SETTING"
+msgstr "Indstilling"
+
+msgid "IDS_BT_OPT_FIT_TO_PAPER"
+msgstr "Tilpas til papir"
+
+msgid "IDS_COM_SK_CUSTOM"
+msgstr "Brugerdefineret"
+
+msgid "IDS_IMGE_BODY_WIDTH"
+msgstr "Bredde"
+
+msgid "IDS_IMGE_BODY_HEIGHT"
+msgstr "Højde"
+
+msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB"
+msgstr "Behold højde-bredde-f."
+
+msgid "IDS_COM_BODY_UNIT_INCH"
+msgstr "tommer"
+
+msgid "IDS_COM_BODY_UNIT_CM"
+msgstr "cm"
+
+msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB"
+msgstr "%d sider på 1 ark"
+
+msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS"
+msgstr "Printerindstillinger"
+
+msgid "IDS_PRT_BODY_PRINTER"
+msgstr "Printer"
+
+msgid "IDS_PRT_BODY_PAPERSIZE"
+msgstr "Papirstørrelse"
+
+msgid "IDS_PRT_BODY_NUMBEROFCOPIES"
+msgstr "Antal kopier"
+
+msgid "IDS_PRT_BODY_PRINT_RANGE_ABB"
+msgstr "Udskriv interval"
+
+msgid "IDS_PRT_BODY_COLOUR"
+msgstr "Farve"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT"
+msgstr "Udkast"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD"
+msgstr "Standard"
+
+msgid "IDS_COM_BODY_HIGH"
+msgstr "Høj"
+
+msgid "IDS_ST_BODY_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING"
+msgstr "Venter på udskrivning ..."
+
+msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING"
+msgstr "Gør klar til at udskrive ..."
+
+msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING"
+msgstr "Udskriver..."
+
+msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB"
+msgstr "Fotografisk"
+
+msgid "IDS_ST_BODY_GLOSSY"
+msgstr "Blank"
+
+msgid "IDS_DIC_BODY_ALL"
+msgstr "Alle"
+
+msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY"
+msgstr "Udskriftskvalitet"
+
+msgid "IDS_IMGE_HEADER_GREY"
+msgstr "Grå"
+
+msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE"
+msgstr "Ingen tilgængelige printere"
+
+msgid "IDS_COM_BODY_NO_DEVICES"
+msgstr "Ingen enheder"
+
+msgid "IDS_PRT_POP_PRINTING_CANCELED"
+msgstr "Udskrivning annulleret"
+
+msgid "IDS_COM_POP_MEMORY_FULL"
+msgstr "Hukommelsen er fuld"
+
+msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING"
+msgstr "Søger efter printere ..."
+
+msgid "IDS_PRT_POP_CHECKPRINTERSTATE"
+msgstr "Kontrollér printerstatus"
+
+msgid "IDS_ASEML_POP_SEARCH_FAILED"
+msgstr "Søgning mislykkedes"
+
+msgid "IDS_PRT_POP_PRINTINGERROR"
+msgstr "Udskrivningsfejl"
+
+msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED"
+msgstr "Wi-Fi frakoblet"
+
+msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER"
+msgstr "Papir"
+
+msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2"
+msgstr "Printer frakoblet"
+
diff --git a/mobileprint/po/de_DE.po b/mobileprint/po/de_DE.po
new file mode 100644 (file)
index 0000000..17ab732
--- /dev/null
@@ -0,0 +1,171 @@
+msgid "IDS_COM_SK_HIDE"
+msgstr "Ausblenden"
+
+msgid "IDS_COM_SK_REFRESH"
+msgstr "Aktualisieren"
+
+msgid "IDS_COM_SK_CANCEL"
+msgstr "Abbrechen"
+
+msgid "IDS_IMGE_OPT_ROTATE"
+msgstr "Ausrichten"
+
+msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR"
+msgstr "Systemfehler"
+
+msgid "IDS_COM_SK_BACK"
+msgstr "Zurück"
+
+msgid "IDS_COM_BODY_WI_FI"
+msgstr "WLAN"
+
+msgid "IDS_COM_SK_OK"
+msgstr "OK"
+
+msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE"
+msgstr "Nicht unterstützter Dateityp"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Nicht unterstützt"
+
+msgid "IDS_BR_BODY_CURRENT_PAGE"
+msgstr "Aktuelle Seite"
+
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Drucker verbunden"
+
+msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT"
+msgstr "Zum Drucken mit WLAN verbinden"
+
+msgid "IDS_PRT_BODY_SELECT_PRINTER"
+msgstr "Drucker auswählen"
+
+msgid "IDS_PRT_SK_PRINT_PREVIEW"
+msgstr "Vorsch."
+
+msgid "IDS_SMPOS_SK3_PRINT"
+msgstr "Drucken"
+
+msgid "IDS_IMGE_BODY_SIZE"
+msgstr "Größe"
+
+msgid "IDS_PRT_BODY_SCALING_ABB"
+msgstr "Skalierung"
+
+msgid "IDS_COM_BODY_SETTING"
+msgstr "Einstellung"
+
+msgid "IDS_BT_OPT_FIT_TO_PAPER"
+msgstr "An Papiergröße anpassen"
+
+msgid "IDS_COM_SK_CUSTOM"
+msgstr "Eig.Menü"
+
+msgid "IDS_IMGE_BODY_WIDTH"
+msgstr "Breite"
+
+msgid "IDS_IMGE_BODY_HEIGHT"
+msgstr "Größe"
+
+msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB"
+msgstr "Bildseitenform. beibeh."
+
+msgid "IDS_COM_BODY_UNIT_INCH"
+msgstr "Zoll"
+
+msgid "IDS_COM_BODY_UNIT_CM"
+msgstr "cm"
+
+msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB"
+msgstr "%d Seiten auf 1 Blatt"
+
+msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS"
+msgstr "Druckereinstellungen"
+
+msgid "IDS_PRT_BODY_PRINTER"
+msgstr "Drucker"
+
+msgid "IDS_PRT_BODY_PAPERSIZE"
+msgstr "Papiergröße"
+
+msgid "IDS_PRT_BODY_NUMBEROFCOPIES"
+msgstr "Anzahl der Kopien"
+
+msgid "IDS_PRT_BODY_PRINT_RANGE_ABB"
+msgstr "Druckbereich"
+
+msgid "IDS_PRT_BODY_COLOUR"
+msgstr "Farbe"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT"
+msgstr "Entwurf"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD"
+msgstr "Standard"
+
+msgid "IDS_COM_BODY_HIGH"
+msgstr "Hoch"
+
+msgid "IDS_ST_BODY_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING"
+msgstr "Auf Druck wird gewartet..."
+
+msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING"
+msgstr "Drucken wird vorbereitet..."
+
+msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING"
+msgstr "Druckvorgang läuft..."
+
+msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB"
+msgstr "Fotografisch"
+
+msgid "IDS_ST_BODY_GLOSSY"
+msgstr "Glossy"
+
+msgid "IDS_DIC_BODY_ALL"
+msgstr "Alle"
+
+msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY"
+msgstr "Druckqualität"
+
+msgid "IDS_IMGE_HEADER_GREY"
+msgstr "Grau"
+
+msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE"
+msgstr "Keine Drucker verfügbar"
+
+msgid "IDS_COM_BODY_NO_DEVICES"
+msgstr "Keine Geräte"
+
+msgid "IDS_PRT_POP_PRINTING_CANCELED"
+msgstr "Druck abgebrochen"
+
+msgid "IDS_COM_POP_MEMORY_FULL"
+msgstr "Speicher voll"
+
+msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING"
+msgstr "Drucker werden gesucht..."
+
+msgid "IDS_PRT_POP_CHECKPRINTERSTATE"
+msgstr "Druckerstatus überprüfen"
+
+msgid "IDS_ASEML_POP_SEARCH_FAILED"
+msgstr "Suche fehlgeschlagen"
+
+msgid "IDS_PRT_POP_PRINTINGERROR"
+msgstr "Druckfehler"
+
+msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED"
+msgstr "WLAN getrennt"
+
+msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER"
+msgstr "Papier"
+
+msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2"
+msgstr "Verbindung zum Drucker beendet"
+
diff --git a/mobileprint/po/el_GR.po b/mobileprint/po/el_GR.po
new file mode 100644 (file)
index 0000000..a106396
--- /dev/null
@@ -0,0 +1,171 @@
+msgid "IDS_COM_SK_HIDE"
+msgstr "Απόκρυψη"
+
+msgid "IDS_COM_SK_REFRESH"
+msgstr "Ανανέωση"
+
+msgid "IDS_COM_SK_CANCEL"
+msgstr "Άκυρο"
+
+msgid "IDS_IMGE_OPT_ROTATE"
+msgstr "Περιστροφή"
+
+msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR"
+msgstr "Σφάλμα συστήματος"
+
+msgid "IDS_COM_SK_BACK"
+msgstr "Πίσω"
+
+msgid "IDS_COM_BODY_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_COM_SK_OK"
+msgstr "OK"
+
+msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE"
+msgstr "Μη υποστηριζόμενος τύπος αρχείου"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Δεν υποστηρίζεται"
+
+msgid "IDS_BR_BODY_CURRENT_PAGE"
+msgstr "Τρέχουσα σελίδα"
+
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Συνδέθηκε εκτυπωτής"
+
+msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT"
+msgstr "Για να εκτυπώσετε, συνδεθείτε σε δίκτυο Wi-Fi"
+
+msgid "IDS_PRT_BODY_SELECT_PRINTER"
+msgstr "Επιλογή εκτυπωτή"
+
+msgid "IDS_PRT_SK_PRINT_PREVIEW"
+msgstr "Προεπ."
+
+msgid "IDS_SMPOS_SK3_PRINT"
+msgstr "Εκτύπωση"
+
+msgid "IDS_IMGE_BODY_SIZE"
+msgstr "Μέγεθος"
+
+msgid "IDS_PRT_BODY_SCALING_ABB"
+msgstr "Διαβάθμιση"
+
+msgid "IDS_COM_BODY_SETTING"
+msgstr "Ρύθμιση"
+
+msgid "IDS_BT_OPT_FIT_TO_PAPER"
+msgstr "Προσαρμογή στο χαρτί"
+
+msgid "IDS_COM_SK_CUSTOM"
+msgstr "Αγαπημένα"
+
+msgid "IDS_IMGE_BODY_WIDTH"
+msgstr "Πλάτος"
+
+msgid "IDS_IMGE_BODY_HEIGHT"
+msgstr "Ύψος"
+
+msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB"
+msgstr "Διατήρηση αναλ. εικόνας"
+
+msgid "IDS_COM_BODY_UNIT_INCH"
+msgstr "inch"
+
+msgid "IDS_COM_BODY_UNIT_CM"
+msgstr "cm"
+
+msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB"
+msgstr "%d σελίδες σε 1 φύλλο"
+
+msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS"
+msgstr "Ρυθμίσεις εκτυπωτή"
+
+msgid "IDS_PRT_BODY_PRINTER"
+msgstr "Εκτυπωτής"
+
+msgid "IDS_PRT_BODY_PAPERSIZE"
+msgstr "Μέγεθος χαρτιού"
+
+msgid "IDS_PRT_BODY_NUMBEROFCOPIES"
+msgstr "Αριθμός αντιγράφων"
+
+msgid "IDS_PRT_BODY_PRINT_RANGE_ABB"
+msgstr "Εύρος εκτύπωσης"
+
+msgid "IDS_PRT_BODY_COLOUR"
+msgstr "Χρώμα"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT"
+msgstr "Πρόχειρο"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD"
+msgstr "Τυπική"
+
+msgid "IDS_COM_BODY_HIGH"
+msgstr "Υψηλή"
+
+msgid "IDS_ST_BODY_NORMAL"
+msgstr "Κανονικό"
+
+msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING"
+msgstr "Αναμονή εκτύπωσης..."
+
+msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING"
+msgstr "Προετοιμασία για εκτύπωση..."
+
+msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING"
+msgstr "Εκτύπωση..."
+
+msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB"
+msgstr "Φωτογραφική"
+
+msgid "IDS_ST_BODY_GLOSSY"
+msgstr "Glossy"
+
+msgid "IDS_DIC_BODY_ALL"
+msgstr "Όλα"
+
+msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY"
+msgstr "Ποιότητα εκτύπωσης"
+
+msgid "IDS_IMGE_HEADER_GREY"
+msgstr "Γκρι"
+
+msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE"
+msgstr "Δεν υπάρχουν διαθέσιμοι εκτυπωτές"
+
+msgid "IDS_COM_BODY_NO_DEVICES"
+msgstr "Καμία συσκευή"
+
+msgid "IDS_PRT_POP_PRINTING_CANCELED"
+msgstr "Ακύρωση εκτύπωσης"
+
+msgid "IDS_COM_POP_MEMORY_FULL"
+msgstr "Μνήμη ημερολογίου πλήρης"
+
+msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING"
+msgstr "Αναζήτηση για εκτυπωτές..."
+
+msgid "IDS_PRT_POP_CHECKPRINTERSTATE"
+msgstr "Ελέγξτε την κατάσταση του εκτυπωτή"
+
+msgid "IDS_ASEML_POP_SEARCH_FAILED"
+msgstr "Αποτυχία αναζήτησης"
+
+msgid "IDS_PRT_POP_PRINTINGERROR"
+msgstr "Σφάλμα εκτύπωσης"
+
+msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED"
+msgstr "Αποσύνδεση Wi-Fi"
+
+msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER"
+msgstr "ΧΑρτί"
+
+msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2"
+msgstr "Αποσύνδεση εκτυπωτή"
+
diff --git a/mobileprint/po/en.po b/mobileprint/po/en.po
new file mode 100644 (file)
index 0000000..1507df1
--- /dev/null
@@ -0,0 +1,171 @@
+msgid "IDS_COM_SK_HIDE"
+msgstr "Hide"
+
+msgid "IDS_COM_SK_REFRESH"
+msgstr "Refresh"
+
+msgid "IDS_COM_SK_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_IMGE_OPT_ROTATE"
+msgstr "Rotate"
+
+msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR"
+msgstr "System error"
+
+msgid "IDS_COM_SK_BACK"
+msgstr "Back"
+
+msgid "IDS_COM_BODY_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_COM_SK_OK"
+msgstr "OK"
+
+msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE"
+msgstr "Unsupported file type"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Unsupported"
+
+msgid "IDS_BR_BODY_CURRENT_PAGE"
+msgstr "Current page"
+
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Printer connected"
+
+msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT"
+msgstr "Connect to Wi-Fi network to print"
+
+msgid "IDS_PRT_BODY_SELECT_PRINTER"
+msgstr "Select printer"
+
+msgid "IDS_PRT_SK_PRINT_PREVIEW"
+msgstr "Preview"
+
+msgid "IDS_SMPOS_SK3_PRINT"
+msgstr "Print"
+
+msgid "IDS_IMGE_BODY_SIZE"
+msgstr "Size"
+
+msgid "IDS_PRT_BODY_SCALING_ABB"
+msgstr "Scaling"
+
+msgid "IDS_COM_BODY_SETTING"
+msgstr "Setting"
+
+msgid "IDS_BT_OPT_FIT_TO_PAPER"
+msgstr "Fit to paper"
+
+msgid "IDS_COM_SK_CUSTOM"
+msgstr "Custom"
+
+msgid "IDS_IMGE_BODY_WIDTH"
+msgstr "Width"
+
+msgid "IDS_IMGE_BODY_HEIGHT"
+msgstr "Height"
+
+msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB"
+msgstr "Keep aspect ratio"
+
+msgid "IDS_COM_BODY_UNIT_INCH"
+msgstr "inch"
+
+msgid "IDS_COM_BODY_UNIT_CM"
+msgstr "cm"
+
+msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB"
+msgstr "%d pages on 1 sheet"
+
+msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS"
+msgstr "Printer settings"
+
+msgid "IDS_PRT_BODY_PRINTER"
+msgstr "Printer"
+
+msgid "IDS_PRT_BODY_PAPERSIZE"
+msgstr "Paper size"
+
+msgid "IDS_PRT_BODY_NUMBEROFCOPIES"
+msgstr "Number of copies"
+
+msgid "IDS_PRT_BODY_PRINT_RANGE_ABB"
+msgstr "Print range"
+
+msgid "IDS_PRT_BODY_COLOUR"
+msgstr "Colour"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT"
+msgstr "Draft"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD"
+msgstr "Standard"
+
+msgid "IDS_COM_BODY_HIGH"
+msgstr "High"
+
+msgid "IDS_ST_BODY_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING"
+msgstr "Waiting to print..."
+
+msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING"
+msgstr "Preparing to print..."
+
+msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING"
+msgstr "Printing..."
+
+msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB"
+msgstr "Photographic"
+
+msgid "IDS_ST_BODY_GLOSSY"
+msgstr "Glossy"
+
+msgid "IDS_DIC_BODY_ALL"
+msgstr "All"
+
+msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY"
+msgstr "Print quality"
+
+msgid "IDS_IMGE_HEADER_GREY"
+msgstr "Grey"
+
+msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE"
+msgstr "No printers available"
+
+msgid "IDS_COM_BODY_NO_DEVICES"
+msgstr "No devices"
+
+msgid "IDS_PRT_POP_PRINTING_CANCELED"
+msgstr "Printing cancelled"
+
+msgid "IDS_COM_POP_MEMORY_FULL"
+msgstr "Memory full"
+
+msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING"
+msgstr "Searching for printers..."
+
+msgid "IDS_PRT_POP_CHECKPRINTERSTATE"
+msgstr "Check the printer status"
+
+msgid "IDS_ASEML_POP_SEARCH_FAILED"
+msgstr "Search failed"
+
+msgid "IDS_PRT_POP_PRINTINGERROR"
+msgstr "Printing error"
+
+msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED"
+msgstr "Wi-Fi disconnected"
+
+msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER"
+msgstr "Paper"
+
+msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2"
+msgstr "Printer disconnected"
+
diff --git a/mobileprint/po/en_PH.po b/mobileprint/po/en_PH.po
new file mode 100644 (file)
index 0000000..fc4bab9
--- /dev/null
@@ -0,0 +1,171 @@
+msgid "IDS_COM_SK_HIDE"
+msgstr "Hide"
+
+msgid "IDS_COM_SK_REFRESH"
+msgstr "Refresh"
+
+msgid "IDS_COM_SK_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_IMGE_OPT_ROTATE"
+msgstr "Rotate"
+
+msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR"
+msgstr "System error"
+
+msgid "IDS_COM_SK_BACK"
+msgstr "Back"
+
+msgid "IDS_COM_BODY_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_COM_SK_OK"
+msgstr "OK"
+
+msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE"
+msgstr "Unsupported file type"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Unsupported"
+
+msgid "IDS_BR_BODY_CURRENT_PAGE"
+msgstr "Current page"
+
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Printer connected"
+
+msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT"
+msgstr "Connect to Wi-Fi network to print"
+
+msgid "IDS_PRT_BODY_SELECT_PRINTER"
+msgstr "Select printer"
+
+msgid "IDS_PRT_SK_PRINT_PREVIEW"
+msgstr "Preview"
+
+msgid "IDS_SMPOS_SK3_PRINT"
+msgstr "Print"
+
+msgid "IDS_IMGE_BODY_SIZE"
+msgstr "Size"
+
+msgid "IDS_PRT_BODY_SCALING_ABB"
+msgstr "Scaling"
+
+msgid "IDS_COM_BODY_SETTING"
+msgstr "Setting"
+
+msgid "IDS_BT_OPT_FIT_TO_PAPER"
+msgstr "Fit to paper"
+
+msgid "IDS_COM_SK_CUSTOM"
+msgstr "Custom"
+
+msgid "IDS_IMGE_BODY_WIDTH"
+msgstr "Width"
+
+msgid "IDS_IMGE_BODY_HEIGHT"
+msgstr "Height"
+
+msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB"
+msgstr "Keep aspect ratio"
+
+msgid "IDS_COM_BODY_UNIT_INCH"
+msgstr "inches"
+
+msgid "IDS_COM_BODY_UNIT_CM"
+msgstr "cm"
+
+msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB"
+msgstr "%d pages on 1 sheet"
+
+msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS"
+msgstr "Printer settings"
+
+msgid "IDS_PRT_BODY_PRINTER"
+msgstr "Printer"
+
+msgid "IDS_PRT_BODY_PAPERSIZE"
+msgstr "Paper size"
+
+msgid "IDS_PRT_BODY_NUMBEROFCOPIES"
+msgstr "Number of copies"
+
+msgid "IDS_PRT_BODY_PRINT_RANGE_ABB"
+msgstr "Print range"
+
+msgid "IDS_PRT_BODY_COLOUR"
+msgstr "Color"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT"
+msgstr "Draft"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD"
+msgstr "Standard"
+
+msgid "IDS_COM_BODY_HIGH"
+msgstr "High"
+
+msgid "IDS_ST_BODY_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING"
+msgstr "Waiting to print..."
+
+msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING"
+msgstr "Preparing to print..."
+
+msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING"
+msgstr "Printing..."
+
+msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB"
+msgstr "Photographic"
+
+msgid "IDS_ST_BODY_GLOSSY"
+msgstr "Glossy"
+
+msgid "IDS_DIC_BODY_ALL"
+msgstr "All"
+
+msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY"
+msgstr "Print quality"
+
+msgid "IDS_IMGE_HEADER_GREY"
+msgstr "Gray"
+
+msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE"
+msgstr "No printers available"
+
+msgid "IDS_COM_BODY_NO_DEVICES"
+msgstr "No devices"
+
+msgid "IDS_PRT_POP_PRINTING_CANCELED"
+msgstr "Printing canceled"
+
+msgid "IDS_COM_POP_MEMORY_FULL"
+msgstr "Memory full"
+
+msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING"
+msgstr "Searching for printers..."
+
+msgid "IDS_PRT_POP_CHECKPRINTERSTATE"
+msgstr "Check the printer status"
+
+msgid "IDS_ASEML_POP_SEARCH_FAILED"
+msgstr "Search failed"
+
+msgid "IDS_PRT_POP_PRINTINGERROR"
+msgstr "Printing error"
+
+msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED"
+msgstr "Wi-Fi disconnected"
+
+msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER"
+msgstr "Paper"
+
+msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2"
+msgstr "Printer disconnected"
+
diff --git a/mobileprint/po/en_US.po b/mobileprint/po/en_US.po
new file mode 100644 (file)
index 0000000..c5807ee
--- /dev/null
@@ -0,0 +1,171 @@
+msgid "IDS_COM_SK_HIDE"
+msgstr "Hide"
+
+msgid "IDS_COM_SK_REFRESH"
+msgstr "Refresh"
+
+msgid "IDS_COM_SK_CANCEL"
+msgstr "Cancel"
+
+msgid "IDS_IMGE_OPT_ROTATE"
+msgstr "Rotate"
+
+msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR"
+msgstr "System error"
+
+msgid "IDS_COM_SK_BACK"
+msgstr "Back"
+
+msgid "IDS_COM_BODY_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_COM_SK_OK"
+msgstr "OK"
+
+msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE"
+msgstr "Unsupported file type"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Unsupported"
+
+msgid "IDS_BR_BODY_CURRENT_PAGE"
+msgstr "Current page"
+
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Printer connected"
+
+msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT"
+msgstr "Connect to Wi-Fi network to print"
+
+msgid "IDS_PRT_BODY_SELECT_PRINTER"
+msgstr "Select printer"
+
+msgid "IDS_PRT_SK_PRINT_PREVIEW"
+msgstr "Preview"
+
+msgid "IDS_SMPOS_SK3_PRINT"
+msgstr "Print"
+
+msgid "IDS_IMGE_BODY_SIZE"
+msgstr "Size"
+
+msgid "IDS_PRT_BODY_SCALING_ABB"
+msgstr "Scaling"
+
+msgid "IDS_COM_BODY_SETTING"
+msgstr "Setting"
+
+msgid "IDS_BT_OPT_FIT_TO_PAPER"
+msgstr "Fit to paper"
+
+msgid "IDS_COM_SK_CUSTOM"
+msgstr "Custom"
+
+msgid "IDS_IMGE_BODY_WIDTH"
+msgstr "Width"
+
+msgid "IDS_IMGE_BODY_HEIGHT"
+msgstr "Height"
+
+msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB"
+msgstr "Keep aspect ratio"
+
+msgid "IDS_COM_BODY_UNIT_INCH"
+msgstr "inch"
+
+msgid "IDS_COM_BODY_UNIT_CM"
+msgstr "cm"
+
+msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB"
+msgstr "%d pages on 1 sheet"
+
+msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS"
+msgstr "Printer settings"
+
+msgid "IDS_PRT_BODY_PRINTER"
+msgstr "Printer"
+
+msgid "IDS_PRT_BODY_PAPERSIZE"
+msgstr "Paper size"
+
+msgid "IDS_PRT_BODY_NUMBEROFCOPIES"
+msgstr "Number of copies"
+
+msgid "IDS_PRT_BODY_PRINT_RANGE_ABB"
+msgstr "Print range"
+
+msgid "IDS_PRT_BODY_COLOUR"
+msgstr "Color"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT"
+msgstr "Draft"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD"
+msgstr "Standard"
+
+msgid "IDS_COM_BODY_HIGH"
+msgstr "High"
+
+msgid "IDS_ST_BODY_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING"
+msgstr "Waiting to print..."
+
+msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING"
+msgstr "Preparing to print..."
+
+msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING"
+msgstr "Printing..."
+
+msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB"
+msgstr "Photographic"
+
+msgid "IDS_ST_BODY_GLOSSY"
+msgstr "Glossy"
+
+msgid "IDS_DIC_BODY_ALL"
+msgstr "All"
+
+msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY"
+msgstr "Print quality"
+
+msgid "IDS_IMGE_HEADER_GREY"
+msgstr "Grey"
+
+msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE"
+msgstr "No printers available"
+
+msgid "IDS_COM_BODY_NO_DEVICES"
+msgstr "No devices"
+
+msgid "IDS_PRT_POP_PRINTING_CANCELED"
+msgstr "Printing cancelled"
+
+msgid "IDS_COM_POP_MEMORY_FULL"
+msgstr "Memory full"
+
+msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING"
+msgstr "Searching for printers..."
+
+msgid "IDS_PRT_POP_CHECKPRINTERSTATE"
+msgstr "Check the printer status"
+
+msgid "IDS_ASEML_POP_SEARCH_FAILED"
+msgstr "Search failed"
+
+msgid "IDS_PRT_POP_PRINTINGERROR"
+msgstr "Printing error"
+
+msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED"
+msgstr "Wi-Fi disconnected"
+
+msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER"
+msgstr "Paper"
+
+msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2"
+msgstr "Printer disconnected"
+
diff --git a/mobileprint/po/es_ES.po b/mobileprint/po/es_ES.po
new file mode 100644 (file)
index 0000000..6818597
--- /dev/null
@@ -0,0 +1,171 @@
+msgid "IDS_COM_SK_HIDE"
+msgstr "Ocultar"
+
+msgid "IDS_COM_SK_REFRESH"
+msgstr "Actualizar"
+
+msgid "IDS_COM_SK_CANCEL"
+msgstr "Cancelar"
+
+msgid "IDS_IMGE_OPT_ROTATE"
+msgstr "Rotar"
+
+msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR"
+msgstr "Error del sistema"
+
+msgid "IDS_COM_SK_BACK"
+msgstr "Atrás"
+
+msgid "IDS_COM_BODY_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_COM_SK_OK"
+msgstr "Aceptar"
+
+msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE"
+msgstr "Tipo de archivo no admitido"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "No admitido"
+
+msgid "IDS_BR_BODY_CURRENT_PAGE"
+msgstr "Página actual"
+
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Impresora conectada"
+
+msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT"
+msgstr "Conectar a red Wi-Fi para imprimir"
+
+msgid "IDS_PRT_BODY_SELECT_PRINTER"
+msgstr "Seleccionar impresora"
+
+msgid "IDS_PRT_SK_PRINT_PREVIEW"
+msgstr "Vista previa"
+
+msgid "IDS_SMPOS_SK3_PRINT"
+msgstr "Imprimir"
+
+msgid "IDS_IMGE_BODY_SIZE"
+msgstr "Tamaño"
+
+msgid "IDS_PRT_BODY_SCALING_ABB"
+msgstr "Cambiar tamaño"
+
+msgid "IDS_COM_BODY_SETTING"
+msgstr "Ajustes"
+
+msgid "IDS_BT_OPT_FIT_TO_PAPER"
+msgstr "Ajustar a papel"
+
+msgid "IDS_COM_SK_CUSTOM"
+msgstr "Personal."
+
+msgid "IDS_IMGE_BODY_WIDTH"
+msgstr "Ancho"
+
+msgid "IDS_IMGE_BODY_HEIGHT"
+msgstr "Altura"
+
+msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB"
+msgstr "Mantener rel aspecto"
+
+msgid "IDS_COM_BODY_UNIT_INCH"
+msgstr "pulgada"
+
+msgid "IDS_COM_BODY_UNIT_CM"
+msgstr "cm"
+
+msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB"
+msgstr "%d páginas en 1 hoja"
+
+msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS"
+msgstr "Ajustes de impresora"
+
+msgid "IDS_PRT_BODY_PRINTER"
+msgstr "Impresora"
+
+msgid "IDS_PRT_BODY_PAPERSIZE"
+msgstr "Tamaño del papel"
+
+msgid "IDS_PRT_BODY_NUMBEROFCOPIES"
+msgstr "Número de copias"
+
+msgid "IDS_PRT_BODY_PRINT_RANGE_ABB"
+msgstr "Intervalo de impresión"
+
+msgid "IDS_PRT_BODY_COLOUR"
+msgstr "Color"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT"
+msgstr "Borrador"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD"
+msgstr "Estándar"
+
+msgid "IDS_COM_BODY_HIGH"
+msgstr "Alta"
+
+msgid "IDS_ST_BODY_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING"
+msgstr "Esperando impresión..."
+
+msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING"
+msgstr "Preparando para imprimir..."
+
+msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING"
+msgstr "Imprimiendo..."
+
+msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB"
+msgstr "Fotográfico"
+
+msgid "IDS_ST_BODY_GLOSSY"
+msgstr "Brillante"
+
+msgid "IDS_DIC_BODY_ALL"
+msgstr "Todas"
+
+msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY"
+msgstr "Calidad de impresión"
+
+msgid "IDS_IMGE_HEADER_GREY"
+msgstr "Gris"
+
+msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE"
+msgstr "Ninguna impresora disponible"
+
+msgid "IDS_COM_BODY_NO_DEVICES"
+msgstr "No hay dispositivos"
+
+msgid "IDS_PRT_POP_PRINTING_CANCELED"
+msgstr "Impresión cancelada"
+
+msgid "IDS_COM_POP_MEMORY_FULL"
+msgstr "Memoria llena"
+
+msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING"
+msgstr "Buscando impresoras..."
+
+msgid "IDS_PRT_POP_CHECKPRINTERSTATE"
+msgstr "Comprobar estado de impresora"
+
+msgid "IDS_ASEML_POP_SEARCH_FAILED"
+msgstr "Error de búsqueda"
+
+msgid "IDS_PRT_POP_PRINTINGERROR"
+msgstr "Error de impresión"
+
+msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED"
+msgstr "Wi-Fi desconectado"
+
+msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER"
+msgstr "Papel"
+
+msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2"
+msgstr "Impresora desconectada"
+
diff --git a/mobileprint/po/es_US.po b/mobileprint/po/es_US.po
new file mode 100644 (file)
index 0000000..4ebdf39
--- /dev/null
@@ -0,0 +1,171 @@
+msgid "IDS_COM_SK_HIDE"
+msgstr "Ocultar"
+
+msgid "IDS_COM_SK_REFRESH"
+msgstr "Actualizar"
+
+msgid "IDS_COM_SK_CANCEL"
+msgstr "Cancelar"
+
+msgid "IDS_IMGE_OPT_ROTATE"
+msgstr "Rotar"
+
+msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR"
+msgstr "Error del sistema"
+
+msgid "IDS_COM_SK_BACK"
+msgstr "Atrás"
+
+msgid "IDS_COM_BODY_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_COM_SK_OK"
+msgstr "Aceptar"
+
+msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE"
+msgstr "Tipo de archivo no admitido"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Directo"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "No compatible"
+
+msgid "IDS_BR_BODY_CURRENT_PAGE"
+msgstr "Página actual"
+
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Impresora conectada"
+
+msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT"
+msgstr "Conectar a red Wi-Fi para imprimir"
+
+msgid "IDS_PRT_BODY_SELECT_PRINTER"
+msgstr "Seleccionar impresora"
+
+msgid "IDS_PRT_SK_PRINT_PREVIEW"
+msgstr "Vista previa"
+
+msgid "IDS_SMPOS_SK3_PRINT"
+msgstr "Imprimir"
+
+msgid "IDS_IMGE_BODY_SIZE"
+msgstr "Tamaño"
+
+msgid "IDS_PRT_BODY_SCALING_ABB"
+msgstr "Redimensionar"
+
+msgid "IDS_COM_BODY_SETTING"
+msgstr "Configuración"
+
+msgid "IDS_BT_OPT_FIT_TO_PAPER"
+msgstr "Ajustar a papel"
+
+msgid "IDS_COM_SK_CUSTOM"
+msgstr "Person."
+
+msgid "IDS_IMGE_BODY_WIDTH"
+msgstr "Ancho"
+
+msgid "IDS_IMGE_BODY_HEIGHT"
+msgstr "Alto"
+
+msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB"
+msgstr "Mant. relación de asp."
+
+msgid "IDS_COM_BODY_UNIT_INCH"
+msgstr "pulgada"
+
+msgid "IDS_COM_BODY_UNIT_CM"
+msgstr "cm"
+
+msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB"
+msgstr "%d páginas en 1 hoja"
+
+msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS"
+msgstr "Configuración de impresora"
+
+msgid "IDS_PRT_BODY_PRINTER"
+msgstr "Impresora"
+
+msgid "IDS_PRT_BODY_PAPERSIZE"
+msgstr "Tamaño del papel"
+
+msgid "IDS_PRT_BODY_NUMBEROFCOPIES"
+msgstr "Número de copias"
+
+msgid "IDS_PRT_BODY_PRINT_RANGE_ABB"
+msgstr "Rango de impresión"
+
+msgid "IDS_PRT_BODY_COLOUR"
+msgstr "Color"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT"
+msgstr "Borrador"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD"
+msgstr "Estándar"
+
+msgid "IDS_COM_BODY_HIGH"
+msgstr "Alta"
+
+msgid "IDS_ST_BODY_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING"
+msgstr "Esperando para imprimir..."
+
+msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING"
+msgstr "Preparando para imprimir..."
+
+msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING"
+msgstr "Imprimiendo..."
+
+msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB"
+msgstr "Fotográfico"
+
+msgid "IDS_ST_BODY_GLOSSY"
+msgstr "Xilófono"
+
+msgid "IDS_DIC_BODY_ALL"
+msgstr "Todo"
+
+msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY"
+msgstr "Calidad de impresión"
+
+msgid "IDS_IMGE_HEADER_GREY"
+msgstr "Gris"
+
+msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE"
+msgstr "No hay impresoras disponibles"
+
+msgid "IDS_COM_BODY_NO_DEVICES"
+msgstr "No hay dispositivos"
+
+msgid "IDS_PRT_POP_PRINTING_CANCELED"
+msgstr "Impresión cancelada"
+
+msgid "IDS_COM_POP_MEMORY_FULL"
+msgstr "Memoria llena"
+
+msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING"
+msgstr "Buscando impresoras..."
+
+msgid "IDS_PRT_POP_CHECKPRINTERSTATE"
+msgstr "Comprobar estado de impresora"
+
+msgid "IDS_ASEML_POP_SEARCH_FAILED"
+msgstr "Error de búsqueda"
+
+msgid "IDS_PRT_POP_PRINTINGERROR"
+msgstr "Error de impresión"
+
+msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED"
+msgstr "Wi-Fi desconectado"
+
+msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER"
+msgstr "Papel"
+
+msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2"
+msgstr "Impresora desconectada"
+
diff --git a/mobileprint/po/et.po b/mobileprint/po/et.po
new file mode 100644 (file)
index 0000000..d943f4c
--- /dev/null
@@ -0,0 +1,171 @@
+msgid "IDS_COM_SK_HIDE"
+msgstr "Peida"
+
+msgid "IDS_COM_SK_REFRESH"
+msgstr "Värskenda"
+
+msgid "IDS_COM_SK_CANCEL"
+msgstr "Tühista"
+
+msgid "IDS_IMGE_OPT_ROTATE"
+msgstr "Pööra"
+
+msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR"
+msgstr "Süsteemi tõrge"
+
+msgid "IDS_COM_SK_BACK"
+msgstr "Tagasi"
+
+msgid "IDS_COM_BODY_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_COM_SK_OK"
+msgstr "OK"
+
+msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE"
+msgstr "Toetuseta failitüüp"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Toetuseta"
+
+msgid "IDS_BR_BODY_CURRENT_PAGE"
+msgstr "Hetkel kuvatav leht"
+
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Printer on ühendatud"
+
+msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT"
+msgstr "Printimiseks looge ühendus Wi-Fi võrguga"
+
+msgid "IDS_PRT_BODY_SELECT_PRINTER"
+msgstr "Vali printer"
+
+msgid "IDS_PRT_SK_PRINT_PREVIEW"
+msgstr "Eelvaade"
+
+msgid "IDS_SMPOS_SK3_PRINT"
+msgstr "Prindi"
+
+msgid "IDS_IMGE_BODY_SIZE"
+msgstr "Suurus"
+
+msgid "IDS_PRT_BODY_SCALING_ABB"
+msgstr "Skaleerimine"
+
+msgid "IDS_COM_BODY_SETTING"
+msgstr "Seadistus"
+
+msgid "IDS_BT_OPT_FIT_TO_PAPER"
+msgstr "Mahuta paberile"
+
+msgid "IDS_COM_SK_CUSTOM"
+msgstr "Kohandat."
+
+msgid "IDS_IMGE_BODY_WIDTH"
+msgstr "Laius"
+
+msgid "IDS_IMGE_BODY_HEIGHT"
+msgstr "Kõrgus"
+
+msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB"
+msgstr "Hoia kuvasuhet"
+
+msgid "IDS_COM_BODY_UNIT_INCH"
+msgstr "toll"
+
+msgid "IDS_COM_BODY_UNIT_CM"
+msgstr "cm"
+
+msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB"
+msgstr "%d lehte 1 lehel"
+
+msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS"
+msgstr "Printeri seaded"
+
+msgid "IDS_PRT_BODY_PRINTER"
+msgstr "Printer"
+
+msgid "IDS_PRT_BODY_PAPERSIZE"
+msgstr "Paberi formaat"
+
+msgid "IDS_PRT_BODY_NUMBEROFCOPIES"
+msgstr "Koopiate arv"
+
+msgid "IDS_PRT_BODY_PRINT_RANGE_ABB"
+msgstr "Printimise ulatus"
+
+msgid "IDS_PRT_BODY_COLOUR"
+msgstr "Värv"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT"
+msgstr "Mustand"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD"
+msgstr "Standard"
+
+msgid "IDS_COM_BODY_HIGH"
+msgstr "Kõrge"
+
+msgid "IDS_ST_BODY_NORMAL"
+msgstr "Tavaline"
+
+msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING"
+msgstr "Printimise ootamine..."
+
+msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING"
+msgstr "Valmistumine printimiseks..."
+
+msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING"
+msgstr "Printimine..."
+
+msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB"
+msgstr "Fotograafiline"
+
+msgid "IDS_ST_BODY_GLOSSY"
+msgstr "Glossy"
+
+msgid "IDS_DIC_BODY_ALL"
+msgstr "Kõik"
+
+msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY"
+msgstr "Prindi kvaliteet"
+
+msgid "IDS_IMGE_HEADER_GREY"
+msgstr "Hall"
+
+msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE"
+msgstr "Printerid pole saadaval"
+
+msgid "IDS_COM_BODY_NO_DEVICES"
+msgstr "Seadmeid pole"
+
+msgid "IDS_PRT_POP_PRINTING_CANCELED"
+msgstr "Printimine tühistatud"
+
+msgid "IDS_COM_POP_MEMORY_FULL"
+msgstr "Mälu on täis"
+
+msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING"
+msgstr "Printerite otsimine..."
+
+msgid "IDS_PRT_POP_CHECKPRINTERSTATE"
+msgstr "Kontrolli printeri olekut"
+
+msgid "IDS_ASEML_POP_SEARCH_FAILED"
+msgstr "Otsing nurjus"
+
+msgid "IDS_PRT_POP_PRINTINGERROR"
+msgstr "Tõrge printimisel"
+
+msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED"
+msgstr "Wi-Fi ühendus on katkestatud"
+
+msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER"
+msgstr "Paber"
+
+msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2"
+msgstr "Printeri ühendus on katk."
+
diff --git a/mobileprint/po/eu.po b/mobileprint/po/eu.po
new file mode 100644 (file)
index 0000000..2d8fc63
--- /dev/null
@@ -0,0 +1,171 @@
+msgid "IDS_COM_SK_HIDE"
+msgstr "Ezkutatu"
+
+msgid "IDS_COM_SK_REFRESH"
+msgstr "Eguneratu"
+
+msgid "IDS_COM_SK_CANCEL"
+msgstr "Ezeztatu"
+
+msgid "IDS_IMGE_OPT_ROTATE"
+msgstr "Biratu"
+
+msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR"
+msgstr "Sistemaren errorea"
+
+msgid "IDS_COM_SK_BACK"
+msgstr "Atzera"
+
+msgid "IDS_COM_BODY_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_COM_SK_OK"
+msgstr "Ados"
+
+msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE"
+msgstr "Fitxategi mota ez bateragarria"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Ez bateragarria"
+
+msgid "IDS_BR_BODY_CURRENT_PAGE"
+msgstr "Uneko orria"
+
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Inprimagailua konektatuta"
+
+msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT"
+msgstr "Konektatu Wi-Fi sarera inprimatzeko"
+
+msgid "IDS_PRT_BODY_SELECT_PRINTER"
+msgstr "Aukeratu inprimagailua"
+
+msgid "IDS_PRT_SK_PRINT_PREVIEW"
+msgstr "Aurrebista"
+
+msgid "IDS_SMPOS_SK3_PRINT"
+msgstr "Inpri-matu"
+
+msgid "IDS_IMGE_BODY_SIZE"
+msgstr "Tamaina"
+
+msgid "IDS_PRT_BODY_SCALING_ABB"
+msgstr "Eskala"
+
+msgid "IDS_COM_BODY_SETTING"
+msgstr "Konfiguraz."
+
+msgid "IDS_BT_OPT_FIT_TO_PAPER"
+msgstr "Doitu paperera"
+
+msgid "IDS_COM_SK_CUSTOM"
+msgstr "Pertsona."
+
+msgid "IDS_IMGE_BODY_WIDTH"
+msgstr "Zabalera"
+
+msgid "IDS_IMGE_BODY_HEIGHT"
+msgstr "Garaiera"
+
+msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB"
+msgstr "Eutsi aspek. ratioari"
+
+msgid "IDS_COM_BODY_UNIT_INCH"
+msgstr "hazbetea"
+
+msgid "IDS_COM_BODY_UNIT_CM"
+msgstr "zm"
+
+msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB"
+msgstr "%d orrialde orri batean"
+
+msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS"
+msgstr "Inprimagailuaren ezarpenak"
+
+msgid "IDS_PRT_BODY_PRINTER"
+msgstr "Inprimagailua"
+
+msgid "IDS_PRT_BODY_PAPERSIZE"
+msgstr "Paper tamaina"
+
+msgid "IDS_PRT_BODY_NUMBEROFCOPIES"
+msgstr "Kopia kopurua"
+
+msgid "IDS_PRT_BODY_PRINT_RANGE_ABB"
+msgstr "Inprimaketa tartea"
+
+msgid "IDS_PRT_BODY_COLOUR"
+msgstr "Kolorea"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT"
+msgstr "Zirriborroa"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD"
+msgstr "Estandarra"
+
+msgid "IDS_COM_BODY_HIGH"
+msgstr "Handia"
+
+msgid "IDS_ST_BODY_NORMAL"
+msgstr "Arrunta"
+
+msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING"
+msgstr "Inprimatzeko itxaroten..."
+
+msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING"
+msgstr "Inprimatzeko prestatzen..."
+
+msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING"
+msgstr "Inprimatzen..."
+
+msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB"
+msgstr "Fotografikoa"
+
+msgid "IDS_ST_BODY_GLOSSY"
+msgstr "Distiratsua"
+
+msgid "IDS_DIC_BODY_ALL"
+msgstr "Guztia(k)"
+
+msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY"
+msgstr "Inprimaketa kalitatea"
+
+msgid "IDS_IMGE_HEADER_GREY"
+msgstr "Grisa"
+
+msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE"
+msgstr "Ez dago inprimagailurik erabilgarri"
+
+msgid "IDS_COM_BODY_NO_DEVICES"
+msgstr "Gailurik ez"
+
+msgid "IDS_PRT_POP_PRINTING_CANCELED"
+msgstr "Inprimaketa eten da"
+
+msgid "IDS_COM_POP_MEMORY_FULL"
+msgstr "Memoria beteta"
+
+msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING"
+msgstr "Inprimagailuak bilatzen..."
+
+msgid "IDS_PRT_POP_CHECKPRINTERSTATE"
+msgstr "Inprimagailuaren egoera egiaztatu"
+
+msgid "IDS_ASEML_POP_SEARCH_FAILED"
+msgstr "Bilaketak huts egin du"
+
+msgid "IDS_PRT_POP_PRINTINGERROR"
+msgstr "Inprimatze errorea"
+
+msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED"
+msgstr "Wi-Fia deskonektatuta"
+
+msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER"
+msgstr "Papera"
+
+msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2"
+msgstr "Inprimagailua konektatu gabe dago"
+
diff --git a/mobileprint/po/fi.po b/mobileprint/po/fi.po
new file mode 100644 (file)
index 0000000..5b42c07
--- /dev/null
@@ -0,0 +1,171 @@
+msgid "IDS_COM_SK_HIDE"
+msgstr "Piilota"
+
+msgid "IDS_COM_SK_REFRESH"
+msgstr "Päivitä"
+
+msgid "IDS_COM_SK_CANCEL"
+msgstr "Peruuta"
+
+msgid "IDS_IMGE_OPT_ROTATE"
+msgstr "Kierrä"
+
+msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR"
+msgstr "Järjestelmävirhe"
+
+msgid "IDS_COM_SK_BACK"
+msgstr "Takaisin"
+
+msgid "IDS_COM_BODY_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_COM_SK_OK"
+msgstr "OK"
+
+msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE"
+msgstr "Tiedostotyyppiä ei tueta"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Ei tuettu"
+
+msgid "IDS_BR_BODY_CURRENT_PAGE"
+msgstr "Nykyinen sivu"
+
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Tulostin kytketty"
+
+msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT"
+msgstr "Muodosta Wi-Fi-yhteys tulostamista varten"
+
+msgid "IDS_PRT_BODY_SELECT_PRINTER"
+msgstr "Valitse tulostin"
+
+msgid "IDS_PRT_SK_PRINT_PREVIEW"
+msgstr "Esikats."
+
+msgid "IDS_SMPOS_SK3_PRINT"
+msgstr "Tulosta"
+
+msgid "IDS_IMGE_BODY_SIZE"
+msgstr "Koko"
+
+msgid "IDS_PRT_BODY_SCALING_ABB"
+msgstr "Skaalaus"
+
+msgid "IDS_COM_BODY_SETTING"
+msgstr "Asetus"
+
+msgid "IDS_BT_OPT_FIT_TO_PAPER"
+msgstr "Sovita paperille"
+
+msgid "IDS_COM_SK_CUSTOM"
+msgstr "Mukaut."
+
+msgid "IDS_IMGE_BODY_WIDTH"
+msgstr "Leveys"
+
+msgid "IDS_IMGE_BODY_HEIGHT"
+msgstr "Korkeus"
+
+msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB"
+msgstr "Säilytä kuvasuhde"
+
+msgid "IDS_COM_BODY_UNIT_INCH"
+msgstr "tuuma"
+
+msgid "IDS_COM_BODY_UNIT_CM"
+msgstr "cm"
+
+msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB"
+msgstr "%d sivua 1 arkilla"
+
+msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS"
+msgstr "Tulostimen asetukset"
+
+msgid "IDS_PRT_BODY_PRINTER"
+msgstr "Tulostin"
+
+msgid "IDS_PRT_BODY_PAPERSIZE"
+msgstr "Paperikoko"
+
+msgid "IDS_PRT_BODY_NUMBEROFCOPIES"
+msgstr "Kopioiden määrä"
+
+msgid "IDS_PRT_BODY_PRINT_RANGE_ABB"
+msgstr "Tulostusalue"
+
+msgid "IDS_PRT_BODY_COLOUR"
+msgstr "Väri"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT"
+msgstr "Luonnos"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD"
+msgstr "Normaali"
+
+msgid "IDS_COM_BODY_HIGH"
+msgstr "Korkea"
+
+msgid "IDS_ST_BODY_NORMAL"
+msgstr "Normaali"
+
+msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING"
+msgstr "Odotetaan tulostusta..."
+
+msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING"
+msgstr "Valmistellaan tulostusta..."
+
+msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING"
+msgstr "Tulostetaan..."
+
+msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB"
+msgstr "Valokuvamainen"
+
+msgid "IDS_ST_BODY_GLOSSY"
+msgstr "Glossy"
+
+msgid "IDS_DIC_BODY_ALL"
+msgstr "Kaikki"
+
+msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY"
+msgstr "Tulostuslaatu"
+
+msgid "IDS_IMGE_HEADER_GREY"
+msgstr "Harmaa"
+
+msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE"
+msgstr "Tulostimia ei ole käytettävissä"
+
+msgid "IDS_COM_BODY_NO_DEVICES"
+msgstr "Ei laitteita"
+
+msgid "IDS_PRT_POP_PRINTING_CANCELED"
+msgstr "Tulostus peruutettu"
+
+msgid "IDS_COM_POP_MEMORY_FULL"
+msgstr "Muisti on täynnä"
+
+msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING"
+msgstr "Haetaan tulostimia..."
+
+msgid "IDS_PRT_POP_CHECKPRINTERSTATE"
+msgstr "Tarkista tulostimen tila"
+
+msgid "IDS_ASEML_POP_SEARCH_FAILED"
+msgstr "Haku epäonnistui"
+
+msgid "IDS_PRT_POP_PRINTINGERROR"
+msgstr "Tulostusvirhe"
+
+msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED"
+msgstr "Wi-Fi katkaistu"
+
+msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER"
+msgstr "Paperi"
+
+msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2"
+msgstr "Yhteys tulostimeen katkaistu"
+
diff --git a/mobileprint/po/fr_CA.po b/mobileprint/po/fr_CA.po
new file mode 100644 (file)
index 0000000..a1a98f3
--- /dev/null
@@ -0,0 +1,171 @@
+msgid "IDS_COM_SK_HIDE"
+msgstr "Masquer"
+
+msgid "IDS_COM_SK_REFRESH"
+msgstr "Actualiser"
+
+msgid "IDS_COM_SK_CANCEL"
+msgstr "Annuler"
+
+msgid "IDS_IMGE_OPT_ROTATE"
+msgstr "Pivoter"
+
+msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR"
+msgstr "Erreur système"
+
+msgid "IDS_COM_SK_BACK"
+msgstr "Retour"
+
+msgid "IDS_COM_BODY_WI_FI"
+msgstr "Wifi"
+
+msgid "IDS_COM_SK_OK"
+msgstr "OK"
+
+msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE"
+msgstr "Type de fichier non pris en charge"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wifi direct"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Non pris en charge"
+
+msgid "IDS_BR_BODY_CURRENT_PAGE"
+msgstr "Page en cours"
+
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Imprimante connectée"
+
+msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT"
+msgstr "Connectez-vous au réseau Wifi pour imprimer"
+
+msgid "IDS_PRT_BODY_SELECT_PRINTER"
+msgstr "Sélectionner une imprimante"
+
+msgid "IDS_PRT_SK_PRINT_PREVIEW"
+msgstr "Aperçu"
+
+msgid "IDS_SMPOS_SK3_PRINT"
+msgstr "Imprimer"
+
+msgid "IDS_IMGE_BODY_SIZE"
+msgstr "Taille"
+
+msgid "IDS_PRT_BODY_SCALING_ABB"
+msgstr "Mise à l'échelle"
+
+msgid "IDS_COM_BODY_SETTING"
+msgstr "Paramètre"
+
+msgid "IDS_BT_OPT_FIT_TO_PAPER"
+msgstr "Ajuster papier"
+
+msgid "IDS_COM_SK_CUSTOM"
+msgstr "Mon menu"
+
+msgid "IDS_IMGE_BODY_WIDTH"
+msgstr "Largeur"
+
+msgid "IDS_IMGE_BODY_HEIGHT"
+msgstr "Hauteur"
+
+msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB"
+msgstr "Cons. taille affichage"
+
+msgid "IDS_COM_BODY_UNIT_INCH"
+msgstr "pouce"
+
+msgid "IDS_COM_BODY_UNIT_CM"
+msgstr "cm"
+
+msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB"
+msgstr "%d pages sur 1 feuille"
+
+msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS"
+msgstr "Paramètres de l'imprimante"
+
+msgid "IDS_PRT_BODY_PRINTER"
+msgstr "Imprimante"
+
+msgid "IDS_PRT_BODY_PAPERSIZE"
+msgstr "Taille du papier"
+
+msgid "IDS_PRT_BODY_NUMBEROFCOPIES"
+msgstr "Nombre de copies"
+
+msgid "IDS_PRT_BODY_PRINT_RANGE_ABB"
+msgstr "Zone d'impression"
+
+msgid "IDS_PRT_BODY_COLOUR"
+msgstr "Couleur"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT"
+msgstr "Brouillons"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD"
+msgstr "Standard"
+
+msgid "IDS_COM_BODY_HIGH"
+msgstr "Haute"
+
+msgid "IDS_ST_BODY_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING"
+msgstr "En attente d'impression..."
+
+msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING"
+msgstr "Préparation de l'impression..."
+
+msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING"
+msgstr "Impression..."
+
+msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB"
+msgstr "Photo"
+
+msgid "IDS_ST_BODY_GLOSSY"
+msgstr "Glossy"
+
+msgid "IDS_DIC_BODY_ALL"
+msgstr "Tous"
+
+msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY"
+msgstr "Qualité de l'impression"
+
+msgid "IDS_IMGE_HEADER_GREY"
+msgstr "Gris"
+
+msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE"
+msgstr "Aucune imprimante disponible"
+
+msgid "IDS_COM_BODY_NO_DEVICES"
+msgstr "Aucun périphérique"
+
+msgid "IDS_PRT_POP_PRINTING_CANCELED"
+msgstr "Impression annulée"
+
+msgid "IDS_COM_POP_MEMORY_FULL"
+msgstr "Mémoire saturée"
+
+msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING"
+msgstr "Recherche d'imprimante..."
+
+msgid "IDS_PRT_POP_CHECKPRINTERSTATE"
+msgstr "Vérifier l'état de l'imprimante"
+
+msgid "IDS_ASEML_POP_SEARCH_FAILED"
+msgstr "Échec de la recherche"
+
+msgid "IDS_PRT_POP_PRINTINGERROR"
+msgstr "Erreur d'impression"
+
+msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED"
+msgstr "wifi déconnecté"
+
+msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER"
+msgstr "Papier"
+
+msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2"
+msgstr "Imprimante déconnectée"
+
diff --git a/mobileprint/po/fr_FR.po b/mobileprint/po/fr_FR.po
new file mode 100644 (file)
index 0000000..afa5fa7
--- /dev/null
@@ -0,0 +1,171 @@
+msgid "IDS_COM_SK_HIDE"
+msgstr "Masquer"
+
+msgid "IDS_COM_SK_REFRESH"
+msgstr "Actualiser"
+
+msgid "IDS_COM_SK_CANCEL"
+msgstr "Annuler"
+
+msgid "IDS_IMGE_OPT_ROTATE"
+msgstr "Pivoter"
+
+msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR"
+msgstr "Erreur système"
+
+msgid "IDS_COM_SK_BACK"
+msgstr "Retour"
+
+msgid "IDS_COM_BODY_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_COM_SK_OK"
+msgstr "OK"
+
+msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE"
+msgstr "Type de fichier non pris en charge"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Non pris en charge"
+
+msgid "IDS_BR_BODY_CURRENT_PAGE"
+msgstr "Page en cours"
+
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Imprimante connectée"
+
+msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT"
+msgstr "Connectez-vous au réseau Wi-Fi pour imprimer"
+
+msgid "IDS_PRT_BODY_SELECT_PRINTER"
+msgstr "Sélectionner une imprimante"
+
+msgid "IDS_PRT_SK_PRINT_PREVIEW"
+msgstr "Aperçu"
+
+msgid "IDS_SMPOS_SK3_PRINT"
+msgstr "Imprimer"
+
+msgid "IDS_IMGE_BODY_SIZE"
+msgstr "Taille"
+
+msgid "IDS_PRT_BODY_SCALING_ABB"
+msgstr "Mise à l'échelle"
+
+msgid "IDS_COM_BODY_SETTING"
+msgstr "Paramètres"
+
+msgid "IDS_BT_OPT_FIT_TO_PAPER"
+msgstr "Ajuster papier"
+
+msgid "IDS_COM_SK_CUSTOM"
+msgstr "Personnaliser"
+
+msgid "IDS_IMGE_BODY_WIDTH"
+msgstr "Largeur"
+
+msgid "IDS_IMGE_BODY_HEIGHT"
+msgstr "Hauteur"
+
+msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB"
+msgstr "Cons. taille affichage"
+
+msgid "IDS_COM_BODY_UNIT_INCH"
+msgstr "pouce"
+
+msgid "IDS_COM_BODY_UNIT_CM"
+msgstr "cm"
+
+msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB"
+msgstr "%d pages sur 1 feuille"
+
+msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS"
+msgstr "Paramètres de l'imprimante"
+
+msgid "IDS_PRT_BODY_PRINTER"
+msgstr "Imprimante"
+
+msgid "IDS_PRT_BODY_PAPERSIZE"
+msgstr "Taille du papier"
+
+msgid "IDS_PRT_BODY_NUMBEROFCOPIES"
+msgstr "Nombre de copies"
+
+msgid "IDS_PRT_BODY_PRINT_RANGE_ABB"
+msgstr "Zone d'impression"
+
+msgid "IDS_PRT_BODY_COLOUR"
+msgstr "Couleur"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT"
+msgstr "Brouillons"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD"
+msgstr "Standard"
+
+msgid "IDS_COM_BODY_HIGH"
+msgstr "Haute"
+
+msgid "IDS_ST_BODY_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING"
+msgstr "En attente d'impression..."
+
+msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING"
+msgstr "Préparation de l'impression..."
+
+msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING"
+msgstr "Impression..."
+
+msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB"
+msgstr "Photo"
+
+msgid "IDS_ST_BODY_GLOSSY"
+msgstr "Glossy"
+
+msgid "IDS_DIC_BODY_ALL"
+msgstr "Tout"
+
+msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY"
+msgstr "Qualité de l'impression"
+
+msgid "IDS_IMGE_HEADER_GREY"
+msgstr "Gris"
+
+msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE"
+msgstr "Aucune imprimante disponible"
+
+msgid "IDS_COM_BODY_NO_DEVICES"
+msgstr "Aucun périphérique"
+
+msgid "IDS_PRT_POP_PRINTING_CANCELED"
+msgstr "Impression annulée"
+
+msgid "IDS_COM_POP_MEMORY_FULL"
+msgstr "Mémoire saturée"
+
+msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING"
+msgstr "Recherche d'imprimante..."
+
+msgid "IDS_PRT_POP_CHECKPRINTERSTATE"
+msgstr "Vérifier l'état de l'imprimante"
+
+msgid "IDS_ASEML_POP_SEARCH_FAILED"
+msgstr "Echec de la recherche"
+
+msgid "IDS_PRT_POP_PRINTINGERROR"
+msgstr "Erreur d'impression"
+
+msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED"
+msgstr "Wi-Fi déconnecté"
+
+msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER"
+msgstr "Papier"
+
+msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2"
+msgstr "Imprimante déconnectée"
+
diff --git a/mobileprint/po/ga.po b/mobileprint/po/ga.po
new file mode 100644 (file)
index 0000000..3e7028f
--- /dev/null
@@ -0,0 +1,171 @@
+msgid "IDS_COM_SK_HIDE"
+msgstr "Folaigh"
+
+msgid "IDS_COM_SK_REFRESH"
+msgstr "Athnuaigh"
+
+msgid "IDS_COM_SK_CANCEL"
+msgstr "Cuir ar ceal"
+
+msgid "IDS_IMGE_OPT_ROTATE"
+msgstr "Rothlaigh"
+
+msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR"
+msgstr "Earráid córais"
+
+msgid "IDS_COM_SK_BACK"
+msgstr "Siar"
+
+msgid "IDS_COM_BODY_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_COM_SK_OK"
+msgstr "OK"
+
+msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE"
+msgstr "Cineál comhaid gan tacú"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Gan tacú"
+
+msgid "IDS_BR_BODY_CURRENT_PAGE"
+msgstr "Leathanach reatha"
+
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Printéir ceangailte"
+
+msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT"
+msgstr "Nasc le líonra Wi-Fi le priontáil"
+
+msgid "IDS_PRT_BODY_SELECT_PRINTER"
+msgstr "Roghnaigh printéir"
+
+msgid "IDS_PRT_SK_PRINT_PREVIEW"
+msgstr "Ré-amharc"
+
+msgid "IDS_SMPOS_SK3_PRINT"
+msgstr "Priontáil"
+
+msgid "IDS_IMGE_BODY_SIZE"
+msgstr "Méid"
+
+msgid "IDS_PRT_BODY_SCALING_ABB"
+msgstr "Scálú"
+
+msgid "IDS_COM_BODY_SETTING"
+msgstr "Socrú"
+
+msgid "IDS_BT_OPT_FIT_TO_PAPER"
+msgstr "Oir do pháipéar"
+
+msgid "IDS_COM_SK_CUSTOM"
+msgstr "Saincheap"
+
+msgid "IDS_IMGE_BODY_WIDTH"
+msgstr "Leithead"
+
+msgid "IDS_IMGE_BODY_HEIGHT"
+msgstr "Aird"
+
+msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB"
+msgstr "Seas cóimheas dreacha"
+
+msgid "IDS_COM_BODY_UNIT_INCH"
+msgstr "orlach"
+
+msgid "IDS_COM_BODY_UNIT_CM"
+msgstr "cm"
+
+msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB"
+msgstr "%d lch ar 1 leathán"
+
+msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS"
+msgstr "Socruithe printéara"
+
+msgid "IDS_PRT_BODY_PRINTER"
+msgstr "Printéir"
+
+msgid "IDS_PRT_BODY_PAPERSIZE"
+msgstr "Méid an pháipéir"
+
+msgid "IDS_PRT_BODY_NUMBEROFCOPIES"
+msgstr "Líon na gcóipeanna"
+
+msgid "IDS_PRT_BODY_PRINT_RANGE_ABB"
+msgstr "Raon priontála"
+
+msgid "IDS_PRT_BODY_COLOUR"
+msgstr "Dath"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT"
+msgstr "Dréacht"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD"
+msgstr "Caighdeánach"
+
+msgid "IDS_COM_BODY_HIGH"
+msgstr "Ard"
+
+msgid "IDS_ST_BODY_NORMAL"
+msgstr "Normálta"
+
+msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING"
+msgstr "Ag fanacht le priontáil..."
+
+msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING"
+msgstr "Ag ullmhú le priontáil..."
+
+msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING"
+msgstr "Ag priontáil..."
+
+msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB"
+msgstr "Fótagrafach"
+
+msgid "IDS_ST_BODY_GLOSSY"
+msgstr "Snasta"
+
+msgid "IDS_DIC_BODY_ALL"
+msgstr "Gach"
+
+msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY"
+msgstr "Cáilíocht phriontála"
+
+msgid "IDS_IMGE_HEADER_GREY"
+msgstr "Liath"
+
+msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE"
+msgstr "Níl aon phrintéirí ar fáil"
+
+msgid "IDS_COM_BODY_NO_DEVICES"
+msgstr "Níl gléasanna ann"
+
+msgid "IDS_PRT_POP_PRINTING_CANCELED"
+msgstr "Priontáil curtha ar ceal"
+
+msgid "IDS_COM_POP_MEMORY_FULL"
+msgstr "Cuimhne lán"
+
+msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING"
+msgstr "Cuardach le haghaidh printéirí..."
+
+msgid "IDS_PRT_POP_CHECKPRINTERSTATE"
+msgstr "Seiceáil stádas an phrintéara"
+
+msgid "IDS_ASEML_POP_SEARCH_FAILED"
+msgstr "Theip ar an gcuardach"
+
+msgid "IDS_PRT_POP_PRINTINGERROR"
+msgstr "Earráid phriontála"
+
+msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED"
+msgstr "Wi-Fi dínasctha"
+
+msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER"
+msgstr "Páipéar"
+
+msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2"
+msgstr "Printéir dícheangailte"
+
diff --git a/mobileprint/po/gl.po b/mobileprint/po/gl.po
new file mode 100644 (file)
index 0000000..d20cdb5
--- /dev/null
@@ -0,0 +1,171 @@
+msgid "IDS_COM_SK_HIDE"
+msgstr "Ocultar"
+
+msgid "IDS_COM_SK_REFRESH"
+msgstr "Actualizar"
+
+msgid "IDS_COM_SK_CANCEL"
+msgstr "Cancelar"
+
+msgid "IDS_IMGE_OPT_ROTATE"
+msgstr "Xirar"
+
+msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR"
+msgstr "Erro do sistema"
+
+msgid "IDS_COM_SK_BACK"
+msgstr "Atrás"
+
+msgid "IDS_COM_BODY_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_COM_SK_OK"
+msgstr "Aceptar"
+
+msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE"
+msgstr "Tipo de arquivo non admitido"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Non admitido"
+
+msgid "IDS_BR_BODY_CURRENT_PAGE"
+msgstr "Páxina actual"
+
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Impresora conectada"
+
+msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT"
+msgstr "Conectar á rede Wi-Fi para imprimir"
+
+msgid "IDS_PRT_BODY_SELECT_PRINTER"
+msgstr "Seleccionar impresora"
+
+msgid "IDS_PRT_SK_PRINT_PREVIEW"
+msgstr "Vista previa"
+
+msgid "IDS_SMPOS_SK3_PRINT"
+msgstr "Imprimir"
+
+msgid "IDS_IMGE_BODY_SIZE"
+msgstr "Tamaño"
+
+msgid "IDS_PRT_BODY_SCALING_ABB"
+msgstr "Escalado"
+
+msgid "IDS_COM_BODY_SETTING"
+msgstr "Axustes"
+
+msgid "IDS_BT_OPT_FIT_TO_PAPER"
+msgstr "Axustar ao papel"
+
+msgid "IDS_COM_SK_CUSTOM"
+msgstr "Persoal"
+
+msgid "IDS_IMGE_BODY_WIDTH"
+msgstr "Ancho"
+
+msgid "IDS_IMGE_BODY_HEIGHT"
+msgstr "Altura"
+
+msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB"
+msgstr "Manter relación aspecto"
+
+msgid "IDS_COM_BODY_UNIT_INCH"
+msgstr "polgada"
+
+msgid "IDS_COM_BODY_UNIT_CM"
+msgstr "cm"
+
+msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB"
+msgstr "%d páxinas en 1 folla"
+
+msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS"
+msgstr "Axustes de impresora"
+
+msgid "IDS_PRT_BODY_PRINTER"
+msgstr "Impresora"
+
+msgid "IDS_PRT_BODY_PAPERSIZE"
+msgstr "Tamaño do papel"
+
+msgid "IDS_PRT_BODY_NUMBEROFCOPIES"
+msgstr "Número de copias"
+
+msgid "IDS_PRT_BODY_PRINT_RANGE_ABB"
+msgstr "Rango de impresión"
+
+msgid "IDS_PRT_BODY_COLOUR"
+msgstr "Cor"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT"
+msgstr "BORRADOR"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD"
+msgstr "Estándar"
+
+msgid "IDS_COM_BODY_HIGH"
+msgstr "Alta"
+
+msgid "IDS_ST_BODY_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING"
+msgstr "Agardando para imprimir..."
+
+msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING"
+msgstr "Preparando para imprimir..."
+
+msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING"
+msgstr "Imprimindo..."
+
+msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB"
+msgstr "Fotográfico"
+
+msgid "IDS_ST_BODY_GLOSSY"
+msgstr "Glossy"
+
+msgid "IDS_DIC_BODY_ALL"
+msgstr "Todo"
+
+msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY"
+msgstr "Calidade de impresión"
+
+msgid "IDS_IMGE_HEADER_GREY"
+msgstr "Gris"
+
+msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE"
+msgstr "Non hai impresoras dispoñibles"
+
+msgid "IDS_COM_BODY_NO_DEVICES"
+msgstr "Non hai dispositivos"
+
+msgid "IDS_PRT_POP_PRINTING_CANCELED"
+msgstr "Impresión cancelada"
+
+msgid "IDS_COM_POP_MEMORY_FULL"
+msgstr "Memoria chea"
+
+msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING"
+msgstr "Buscando impresoras..."
+
+msgid "IDS_PRT_POP_CHECKPRINTERSTATE"
+msgstr "Comprobar o estado da impresora"
+
+msgid "IDS_ASEML_POP_SEARCH_FAILED"
+msgstr "Erro na busca"
+
+msgid "IDS_PRT_POP_PRINTINGERROR"
+msgstr "Erro de impresión"
+
+msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED"
+msgstr "Wi-Fi desconectada"
+
+msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER"
+msgstr "Papel"
+
+msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2"
+msgstr "Impresora desconectada"
+
diff --git a/mobileprint/po/hi.po b/mobileprint/po/hi.po
new file mode 100644 (file)
index 0000000..74e9762
--- /dev/null
@@ -0,0 +1,171 @@
+msgid "IDS_COM_SK_HIDE"
+msgstr "छिपाएँ"
+
+msgid "IDS_COM_SK_REFRESH"
+msgstr "रिफ्रेश"
+
+msgid "IDS_COM_SK_CANCEL"
+msgstr "रद्द"
+
+msgid "IDS_IMGE_OPT_ROTATE"
+msgstr "घुमाएँ"
+
+msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR"
+msgstr "सिस्‍टम त्रुटि"
+
+msgid "IDS_COM_SK_BACK"
+msgstr "पीछे"
+
+msgid "IDS_COM_BODY_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_COM_SK_OK"
+msgstr "ओके"
+
+msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE"
+msgstr "असमर्थित फाइल प्रकार"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi डायरेक्ट"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "असमर्थित"
+
+msgid "IDS_BR_BODY_CURRENT_PAGE"
+msgstr "वर्तमान पेज"
+
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "प्रिंटर कनेक्ट किया गया"
+
+msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT"
+msgstr "प्रिंट करने के लिए Wi-Fi नेटवर्क से कनेक्‍ट करें"
+
+msgid "IDS_PRT_BODY_SELECT_PRINTER"
+msgstr "प्रिंटर चुनें"
+
+msgid "IDS_PRT_SK_PRINT_PREVIEW"
+msgstr "प्रिव्यू"
+
+msgid "IDS_SMPOS_SK3_PRINT"
+msgstr "प्रिंट करें"
+
+msgid "IDS_IMGE_BODY_SIZE"
+msgstr "आकार"
+
+msgid "IDS_PRT_BODY_SCALING_ABB"
+msgstr "स्केलिंग"
+
+msgid "IDS_COM_BODY_SETTING"
+msgstr "सेटिंग"
+
+msgid "IDS_BT_OPT_FIT_TO_PAPER"
+msgstr "पेपर में फिट करें"
+
+msgid "IDS_COM_SK_CUSTOM"
+msgstr "कस्टम"
+
+msgid "IDS_IMGE_BODY_WIDTH"
+msgstr "चौड़ाई"
+
+msgid "IDS_IMGE_BODY_HEIGHT"
+msgstr "ऊँचाई"
+
+msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB"
+msgstr "पक्ष अनुपात रखें"
+
+msgid "IDS_COM_BODY_UNIT_INCH"
+msgstr "inch"
+
+msgid "IDS_COM_BODY_UNIT_CM"
+msgstr "cm"
+
+msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB"
+msgstr "1 शीट पर %d पेज"
+
+msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS"
+msgstr "प्रिंटर सेटिंग्स"
+
+msgid "IDS_PRT_BODY_PRINTER"
+msgstr "प्रिंटर"
+
+msgid "IDS_PRT_BODY_PAPERSIZE"
+msgstr "पेपर आकार"
+
+msgid "IDS_PRT_BODY_NUMBEROFCOPIES"
+msgstr "प्रतियों की संख्या"
+
+msgid "IDS_PRT_BODY_PRINT_RANGE_ABB"
+msgstr "प्रिंट सीमा"
+
+msgid "IDS_PRT_BODY_COLOUR"
+msgstr "रंग"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT"
+msgstr "ड्राफ्ट"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD"
+msgstr "मानक"
+
+msgid "IDS_COM_BODY_HIGH"
+msgstr "उच्च"
+
+msgid "IDS_ST_BODY_NORMAL"
+msgstr "सामान्य"
+
+msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING"
+msgstr "प्रिंट करने के लिए प्रतीक्षा कर रहा है..."
+
+msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING"
+msgstr "प्रिंट करने के लिए तैयार हो रहा है…"
+
+msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING"
+msgstr "प्रिंट हो रहा है..."
+
+msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB"
+msgstr "फ़ोटोग्राफ़िक"
+
+msgid "IDS_ST_BODY_GLOSSY"
+msgstr "चमकदार"
+
+msgid "IDS_DIC_BODY_ALL"
+msgstr "सभी"
+
+msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY"
+msgstr "प्रिन्ट गुणवत्ता"
+
+msgid "IDS_IMGE_HEADER_GREY"
+msgstr "भूरा"
+
+msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE"
+msgstr "कोई प्रिंटर उपलब्ध नहीं"
+
+msgid "IDS_COM_BODY_NO_DEVICES"
+msgstr "डिवाइस नहीं"
+
+msgid "IDS_PRT_POP_PRINTING_CANCELED"
+msgstr "प्रिंट करना रद्द किया गया"
+
+msgid "IDS_COM_POP_MEMORY_FULL"
+msgstr "मेमोरी पूर्ण"
+
+msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING"
+msgstr "प्रिंटर्स के लिए खोज रहा है..."
+
+msgid "IDS_PRT_POP_CHECKPRINTERSTATE"
+msgstr "प्रिन्टर की स्थिति जाँचें"
+
+msgid "IDS_ASEML_POP_SEARCH_FAILED"
+msgstr "खोज विफल"
+
+msgid "IDS_PRT_POP_PRINTINGERROR"
+msgstr "प्रिंटिंग त्रुटि"
+
+msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED"
+msgstr "Wi-Fi डिसकनेक्ट किया गया"
+
+msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER"
+msgstr "काग़ज़"
+
+msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2"
+msgstr "प्रिंटर डिसकनेक्ट किया गया"
+
diff --git a/mobileprint/po/hr.po b/mobileprint/po/hr.po
new file mode 100644 (file)
index 0000000..2e0a772
--- /dev/null
@@ -0,0 +1,171 @@
+msgid "IDS_COM_SK_HIDE"
+msgstr "Sakrij"
+
+msgid "IDS_COM_SK_REFRESH"
+msgstr "Aktualiziraj"
+
+msgid "IDS_COM_SK_CANCEL"
+msgstr "Prekid"
+
+msgid "IDS_IMGE_OPT_ROTATE"
+msgstr "Rotiraj"
+
+msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR"
+msgstr "Pogreška sustava"
+
+msgid "IDS_COM_SK_BACK"
+msgstr "Nazad"
+
+msgid "IDS_COM_BODY_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_COM_SK_OK"
+msgstr "OK"
+
+msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE"
+msgstr "Nepodržana datoteka"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Nepodržano"
+
+msgid "IDS_BR_BODY_CURRENT_PAGE"
+msgstr "Trenutna stranica"
+
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Pisač spojen"
+
+msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT"
+msgstr "Spojite se na Wi-Fi mrežu za ispis"
+
+msgid "IDS_PRT_BODY_SELECT_PRINTER"
+msgstr "Odaberite pisač"
+
+msgid "IDS_PRT_SK_PRINT_PREVIEW"
+msgstr "Pregled"
+
+msgid "IDS_SMPOS_SK3_PRINT"
+msgstr "Ispis"
+
+msgid "IDS_IMGE_BODY_SIZE"
+msgstr "Veličina"
+
+msgid "IDS_PRT_BODY_SCALING_ABB"
+msgstr "Skaliranje"
+
+msgid "IDS_COM_BODY_SETTING"
+msgstr "Postavka"
+
+msgid "IDS_BT_OPT_FIT_TO_PAPER"
+msgstr "Prilagodi papiru"
+
+msgid "IDS_COM_SK_CUSTOM"
+msgstr "Prilagodi"
+
+msgid "IDS_IMGE_BODY_WIDTH"
+msgstr "Širina"
+
+msgid "IDS_IMGE_BODY_HEIGHT"
+msgstr "Visina"
+
+msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB"
+msgstr "Zadrži omjer slike"
+
+msgid "IDS_COM_BODY_UNIT_INCH"
+msgstr "inch"
+
+msgid "IDS_COM_BODY_UNIT_CM"
+msgstr "cm"
+
+msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB"
+msgstr "%d stranica na 1 listu"
+
+msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS"
+msgstr "Postavke pisača"
+
+msgid "IDS_PRT_BODY_PRINTER"
+msgstr "Pisač"
+
+msgid "IDS_PRT_BODY_PAPERSIZE"
+msgstr "Veličina papira"
+
+msgid "IDS_PRT_BODY_NUMBEROFCOPIES"
+msgstr "Broj kopija"
+
+msgid "IDS_PRT_BODY_PRINT_RANGE_ABB"
+msgstr "Ispiši sve"
+
+msgid "IDS_PRT_BODY_COLOUR"
+msgstr "Boja"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT"
+msgstr "Priprema"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD"
+msgstr "Standardno"
+
+msgid "IDS_COM_BODY_HIGH"
+msgstr "Visoki"
+
+msgid "IDS_ST_BODY_NORMAL"
+msgstr "Normalno"
+
+msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING"
+msgstr "Čekanje ispisa..."
+
+msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING"
+msgstr "Priprema za ispis..."
+
+msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING"
+msgstr "Ispisuje se..."
+
+msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB"
+msgstr "Fotografski"
+
+msgid "IDS_ST_BODY_GLOSSY"
+msgstr "Glossy"
+
+msgid "IDS_DIC_BODY_ALL"
+msgstr "Sve"
+
+msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY"
+msgstr "Kvaliteta ispisa"
+
+msgid "IDS_IMGE_HEADER_GREY"
+msgstr "Sivo"
+
+msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE"
+msgstr "Nema dostupnih pisača"
+
+msgid "IDS_COM_BODY_NO_DEVICES"
+msgstr "Nema uređaja"
+
+msgid "IDS_PRT_POP_PRINTING_CANCELED"
+msgstr "Ispis je prekinut"
+
+msgid "IDS_COM_POP_MEMORY_FULL"
+msgstr "Memorija puna"
+
+msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING"
+msgstr "Traženje pisača..."
+
+msgid "IDS_PRT_POP_CHECKPRINTERSTATE"
+msgstr "Provjera statusa pisača"
+
+msgid "IDS_ASEML_POP_SEARCH_FAILED"
+msgstr "Greška pretraživanja"
+
+msgid "IDS_PRT_POP_PRINTINGERROR"
+msgstr "Greška ispisa"
+
+msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED"
+msgstr "Wi-Fi isključen"
+
+msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER"
+msgstr "Papir"
+
+msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2"
+msgstr "Pisač isključen"
+
diff --git a/mobileprint/po/hu.po b/mobileprint/po/hu.po
new file mode 100644 (file)
index 0000000..4b82804
--- /dev/null
@@ -0,0 +1,171 @@
+msgid "IDS_COM_SK_HIDE"
+msgstr "Elrejtés"
+
+msgid "IDS_COM_SK_REFRESH"
+msgstr "Frissít"
+
+msgid "IDS_COM_SK_CANCEL"
+msgstr "Mégse"
+
+msgid "IDS_IMGE_OPT_ROTATE"
+msgstr "Elforgatás"
+
+msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR"
+msgstr "Rendszerhiba"
+
+msgid "IDS_COM_SK_BACK"
+msgstr "Vissza"
+
+msgid "IDS_COM_BODY_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_COM_SK_OK"
+msgstr "OK"
+
+msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE"
+msgstr "A fájltípus\nnem támogatott"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Nem támogatott"
+
+msgid "IDS_BR_BODY_CURRENT_PAGE"
+msgstr "Jelenlegi oldal"
+
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Nyomtató csatlakoztatva"
+
+msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT"
+msgstr "A nyomtatáshoz létesítsen Wi-Fi-hálózati kapcsolatot"
+
+msgid "IDS_PRT_BODY_SELECT_PRINTER"
+msgstr "Nyomtató kiválasztása"
+
+msgid "IDS_PRT_SK_PRINT_PREVIEW"
+msgstr "Előnézet"
+
+msgid "IDS_SMPOS_SK3_PRINT"
+msgstr "Nyomtat"
+
+msgid "IDS_IMGE_BODY_SIZE"
+msgstr "Méret"
+
+msgid "IDS_PRT_BODY_SCALING_ABB"
+msgstr "Méretezés"
+
+msgid "IDS_COM_BODY_SETTING"
+msgstr "Beállítás"
+
+msgid "IDS_BT_OPT_FIT_TO_PAPER"
+msgstr "Laphoz illesztés"
+
+msgid "IDS_COM_SK_CUSTOM"
+msgstr "Egyéni"
+
+msgid "IDS_IMGE_BODY_WIDTH"
+msgstr "Szélesség"
+
+msgid "IDS_IMGE_BODY_HEIGHT"
+msgstr "Magasság"
+
+msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB"
+msgstr "Képoldalarány megőrzése"
+
+msgid "IDS_COM_BODY_UNIT_INCH"
+msgstr "coll"
+
+msgid "IDS_COM_BODY_UNIT_CM"
+msgstr "cm"
+
+msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB"
+msgstr "%d oldal 1 lapon"
+
+msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS"
+msgstr "Nyomtató beállításai"
+
+msgid "IDS_PRT_BODY_PRINTER"
+msgstr "Nyomtató"
+
+msgid "IDS_PRT_BODY_PAPERSIZE"
+msgstr "Papírméret"
+
+msgid "IDS_PRT_BODY_NUMBEROFCOPIES"
+msgstr "Példányszám"
+
+msgid "IDS_PRT_BODY_PRINT_RANGE_ABB"
+msgstr "Nyomtatási tartomány"
+
+msgid "IDS_PRT_BODY_COLOUR"
+msgstr "Szín"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT"
+msgstr "Piszkozat"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD"
+msgstr "Normál"
+
+msgid "IDS_COM_BODY_HIGH"
+msgstr "Magas"
+
+msgid "IDS_ST_BODY_NORMAL"
+msgstr "Normál"
+
+msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING"
+msgstr "Várakozás nyomtatásra..."
+
+msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING"
+msgstr "Nyomtatás előkészítése..."
+
+msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING"
+msgstr "Nyomtatás..."
+
+msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB"
+msgstr "Fénykép"
+
+msgid "IDS_ST_BODY_GLOSSY"
+msgstr "Glossy"
+
+msgid "IDS_DIC_BODY_ALL"
+msgstr "Mind"
+
+msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY"
+msgstr "Nyomtatási minőség"
+
+msgid "IDS_IMGE_HEADER_GREY"
+msgstr "Szürke"
+
+msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE"
+msgstr "Nincs elérhető nyomtató"
+
+msgid "IDS_COM_BODY_NO_DEVICES"
+msgstr "Nincs eszköz"
+
+msgid "IDS_PRT_POP_PRINTING_CANCELED"
+msgstr "Nyomtatás megszakítva"
+
+msgid "IDS_COM_POP_MEMORY_FULL"
+msgstr "Memória megtelt"
+
+msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING"
+msgstr "Nyomtatókeresés..."
+
+msgid "IDS_PRT_POP_CHECKPRINTERSTATE"
+msgstr "Ellenőrizze a nyomtató állapotát"
+
+msgid "IDS_ASEML_POP_SEARCH_FAILED"
+msgstr "A keresés sikertelen"
+
+msgid "IDS_PRT_POP_PRINTINGERROR"
+msgstr "Nyomtatási hiba"
+
+msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED"
+msgstr "Wi-Fi-kapcsolat bontva"
+
+msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER"
+msgstr "Papír"
+
+msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2"
+msgstr "Nyomtató leválasztva"
+
diff --git a/mobileprint/po/hy.po b/mobileprint/po/hy.po
new file mode 100644 (file)
index 0000000..2db80ec
--- /dev/null
@@ -0,0 +1,171 @@
+msgid "IDS_COM_SK_HIDE"
+msgstr "Թքցնել"
+
+msgid "IDS_COM_SK_REFRESH"
+msgstr "Թարմացնել"
+
+msgid "IDS_COM_SK_CANCEL"
+msgstr "Չեղարկել"
+
+msgid "IDS_IMGE_OPT_ROTATE"
+msgstr "Պտտեցնել"
+
+msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR"
+msgstr "Համակարգի սխալ"
+
+msgid "IDS_COM_SK_BACK"
+msgstr "Հետ"
+
+msgid "IDS_COM_BODY_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_COM_SK_OK"
+msgstr "OK"
+
+msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE"
+msgstr "Ֆայլի չսատարվող տեսակ"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Չսատարվող"
+
+msgid "IDS_BR_BODY_CURRENT_PAGE"
+msgstr "Ընթացիկ էջ"
+
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Տպիչը միացված է"
+
+msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT"
+msgstr "Տպելու համար միացեք Wi-Fi ցանցին"
+
+msgid "IDS_PRT_BODY_SELECT_PRINTER"
+msgstr "Ընտրել տպիչը"
+
+msgid "IDS_PRT_SK_PRINT_PREVIEW"
+msgstr "Դիտում"
+
+msgid "IDS_SMPOS_SK3_PRINT"
+msgstr "Տպել"
+
+msgid "IDS_IMGE_BODY_SIZE"
+msgstr "Չափս"
+
+msgid "IDS_PRT_BODY_SCALING_ABB"
+msgstr "Մասշտաբավորում"
+
+msgid "IDS_COM_BODY_SETTING"
+msgstr "Կայանք"
+
+msgid "IDS_BT_OPT_FIT_TO_PAPER"
+msgstr "Տեղավորել թղթի վրա"
+
+msgid "IDS_COM_SK_CUSTOM"
+msgstr "Հատուկ"
+
+msgid "IDS_IMGE_BODY_WIDTH"
+msgstr "Լայնություն"
+
+msgid "IDS_IMGE_BODY_HEIGHT"
+msgstr "Բարձրություն"
+
+msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB"
+msgstr "Պահեք չափերի հրբրկցթյնը"
+
+msgid "IDS_COM_BODY_UNIT_INCH"
+msgstr "դյույմ"
+
+msgid "IDS_COM_BODY_UNIT_CM"
+msgstr "սմ"
+
+msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB"
+msgstr "%d էջեր 1 թերթի վրա"
+
+msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS"
+msgstr "Տպիչի դրվածքներ"
+
+msgid "IDS_PRT_BODY_PRINTER"
+msgstr "Տպիչ"
+
+msgid "IDS_PRT_BODY_PAPERSIZE"
+msgstr "Թղթի չափ"
+
+msgid "IDS_PRT_BODY_NUMBEROFCOPIES"
+msgstr "Պատճենների քանակը"
+
+msgid "IDS_PRT_BODY_PRINT_RANGE_ABB"
+msgstr "Տպման տիրույթ"
+
+msgid "IDS_PRT_BODY_COLOUR"
+msgstr "Գույն"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT"
+msgstr "Նախագիծ"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD"
+msgstr "Ստանդարտ"
+
+msgid "IDS_COM_BODY_HIGH"
+msgstr "Բարձր"
+
+msgid "IDS_ST_BODY_NORMAL"
+msgstr "Նորմալ"
+
+msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING"
+msgstr "Սպասում է տպման..."
+
+msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING"
+msgstr "Պատրաստվում է տպել..."
+
+msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING"
+msgstr "Տպում է..."
+
+msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB"
+msgstr "Լուսանկարչական"
+
+msgid "IDS_ST_BODY_GLOSSY"
+msgstr "Glossy"
+
+msgid "IDS_DIC_BODY_ALL"
+msgstr "Բոլոր"
+
+msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY"
+msgstr "Տպագրության որակ"
+
+msgid "IDS_IMGE_HEADER_GREY"
+msgstr "Մոխրագույն"
+
+msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE"
+msgstr "Մատչելի տպիչներ չկան"
+
+msgid "IDS_COM_BODY_NO_DEVICES"
+msgstr "Սարքեր չկան"
+
+msgid "IDS_PRT_POP_PRINTING_CANCELED"
+msgstr "Տպումը դադարեցվեց"
+
+msgid "IDS_COM_POP_MEMORY_FULL"
+msgstr "Հիշողութունը լիքն է"
+
+msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING"
+msgstr "Որոնվում տպիչներ..."
+
+msgid "IDS_PRT_POP_CHECKPRINTERSTATE"
+msgstr "Ստուգեք տպիչի կարգավիճակը"
+
+msgid "IDS_ASEML_POP_SEARCH_FAILED"
+msgstr "Որոնումը ձախողվեց"
+
+msgid "IDS_PRT_POP_PRINTINGERROR"
+msgstr "Տպման սխալ"
+
+msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED"
+msgstr "Wi-Fi-ն անջատված է"
+
+msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER"
+msgstr "Թուղթ"
+
+msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2"
+msgstr "Տպիչն անջատված է"
+
diff --git a/mobileprint/po/is.po b/mobileprint/po/is.po
new file mode 100644 (file)
index 0000000..12faa84
--- /dev/null
@@ -0,0 +1,171 @@
+msgid "IDS_COM_SK_HIDE"
+msgstr "Hylja"
+
+msgid "IDS_COM_SK_REFRESH"
+msgstr "Endurnýja"
+
+msgid "IDS_COM_SK_CANCEL"
+msgstr "Hætta við"
+
+msgid "IDS_IMGE_OPT_ROTATE"
+msgstr "Snúa"
+
+msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR"
+msgstr "Kerfisvilla"
+
+msgid "IDS_COM_SK_BACK"
+msgstr "Bakka"
+
+msgid "IDS_COM_BODY_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_COM_SK_OK"
+msgstr "Í lagi"
+
+msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE"
+msgstr "Óstutt skrársnið"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Óstutt"
+
+msgid "IDS_BR_BODY_CURRENT_PAGE"
+msgstr "Opin síða"
+
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Prentari tengdur"
+
+msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT"
+msgstr "Tengjast við Wi-Fi net til að prenta"
+
+msgid "IDS_PRT_BODY_SELECT_PRINTER"
+msgstr "Velja prentara"
+
+msgid "IDS_PRT_SK_PRINT_PREVIEW"
+msgstr "Skoða"
+
+msgid "IDS_SMPOS_SK3_PRINT"
+msgstr "Prenta"
+
+msgid "IDS_IMGE_BODY_SIZE"
+msgstr "Stærð"
+
+msgid "IDS_PRT_BODY_SCALING_ABB"
+msgstr "Kvörðun"
+
+msgid "IDS_COM_BODY_SETTING"
+msgstr "Stilling"
+
+msgid "IDS_BT_OPT_FIT_TO_PAPER"
+msgstr "Passa á pappír"
+
+msgid "IDS_COM_SK_CUSTOM"
+msgstr "Sérstilla"
+
+msgid "IDS_IMGE_BODY_WIDTH"
+msgstr "Breidd"
+
+msgid "IDS_IMGE_BODY_HEIGHT"
+msgstr "Hæð"
+
+msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB"
+msgstr "Halda myndhlutfalli"
+
+msgid "IDS_COM_BODY_UNIT_INCH"
+msgstr "tomma"
+
+msgid "IDS_COM_BODY_UNIT_CM"
+msgstr "cm"
+
+msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB"
+msgstr "%d síður á 1 blaði"
+
+msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS"
+msgstr "Prentarastillingar"
+
+msgid "IDS_PRT_BODY_PRINTER"
+msgstr "Prentari"
+
+msgid "IDS_PRT_BODY_PAPERSIZE"
+msgstr "Pappírsstærð"
+
+msgid "IDS_PRT_BODY_NUMBEROFCOPIES"
+msgstr "Fjöldi eintaka"
+
+msgid "IDS_PRT_BODY_PRINT_RANGE_ABB"
+msgstr "Prentsvið"
+
+msgid "IDS_PRT_BODY_COLOUR"
+msgstr "Litur"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT"
+msgstr "Drög"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD"
+msgstr "Venjuleg"
+
+msgid "IDS_COM_BODY_HIGH"
+msgstr "Mikið"
+
+msgid "IDS_ST_BODY_NORMAL"
+msgstr "Venjulegt"
+
+msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING"
+msgstr "Bíð þess að prenta..."
+
+msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING"
+msgstr "Prentun undirbúin..."
+
+msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING"
+msgstr "Verið er að prenta..."
+
+msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB"
+msgstr "Fyrir ljósmyndir"
+
+msgid "IDS_ST_BODY_GLOSSY"
+msgstr "Glossy"
+
+msgid "IDS_DIC_BODY_ALL"
+msgstr "Allt"
+
+msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY"
+msgstr "Prentgæði"
+
+msgid "IDS_IMGE_HEADER_GREY"
+msgstr "Grár"
+
+msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE"
+msgstr "Engir prentarar tiltækir"
+
+msgid "IDS_COM_BODY_NO_DEVICES"
+msgstr "Engin tæki"
+
+msgid "IDS_PRT_POP_PRINTING_CANCELED"
+msgstr "Hætt við prentun"
+
+msgid "IDS_COM_POP_MEMORY_FULL"
+msgstr "Minni er fullt"
+
+msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING"
+msgstr "Leita að prenturum..."
+
+msgid "IDS_PRT_POP_CHECKPRINTERSTATE"
+msgstr "Kanna stöðu prentara"
+
+msgid "IDS_ASEML_POP_SEARCH_FAILED"
+msgstr "Leit mistókst"
+
+msgid "IDS_PRT_POP_PRINTINGERROR"
+msgstr "Prentvilla"
+
+msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED"
+msgstr "Wi-Fi aftengt"
+
+msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER"
+msgstr "Pappír"
+
+msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2"
+msgstr "Prentari ótengdur"
+
diff --git a/mobileprint/po/it_IT.po b/mobileprint/po/it_IT.po
new file mode 100644 (file)
index 0000000..a9e384c
--- /dev/null
@@ -0,0 +1,171 @@
+msgid "IDS_COM_SK_HIDE"
+msgstr "Nascondi"
+
+msgid "IDS_COM_SK_REFRESH"
+msgstr "Aggiorna"
+
+msgid "IDS_COM_SK_CANCEL"
+msgstr "Annulla"
+
+msgid "IDS_IMGE_OPT_ROTATE"
+msgstr "Ruota"
+
+msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR"
+msgstr "Errore di sistema"
+
+msgid "IDS_COM_SK_BACK"
+msgstr "Indietro"
+
+msgid "IDS_COM_BODY_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_COM_SK_OK"
+msgstr "OK"
+
+msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE"
+msgstr "Tipo file non supportato"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Non supportato"
+
+msgid "IDS_BR_BODY_CURRENT_PAGE"
+msgstr "Pagina corrente"
+
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Stampante connessa"
+
+msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT"
+msgstr "Per stampare, collegarsi alla rete Wi-Fi"
+
+msgid "IDS_PRT_BODY_SELECT_PRINTER"
+msgstr "Seleziona stampante"
+
+msgid "IDS_PRT_SK_PRINT_PREVIEW"
+msgstr "Anteprima"
+
+msgid "IDS_SMPOS_SK3_PRINT"
+msgstr "Stampa"
+
+msgid "IDS_IMGE_BODY_SIZE"
+msgstr "Dimensioni"
+
+msgid "IDS_PRT_BODY_SCALING_ABB"
+msgstr "Proporzioni"
+
+msgid "IDS_COM_BODY_SETTING"
+msgstr "Impostazione"
+
+msgid "IDS_BT_OPT_FIT_TO_PAPER"
+msgstr "Adatta a carta"
+
+msgid "IDS_COM_SK_CUSTOM"
+msgstr "Personale"
+
+msgid "IDS_IMGE_BODY_WIDTH"
+msgstr "Larghezza"
+
+msgid "IDS_IMGE_BODY_HEIGHT"
+msgstr "Altezza"
+
+msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB"
+msgstr "Mantieni proporzioni"
+
+msgid "IDS_COM_BODY_UNIT_INCH"
+msgstr "pollici"
+
+msgid "IDS_COM_BODY_UNIT_CM"
+msgstr "cm"
+
+msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB"
+msgstr "%d pagine su 1 foglio"
+
+msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS"
+msgstr "Impostazioni stampante"
+
+msgid "IDS_PRT_BODY_PRINTER"
+msgstr "Stampante"
+
+msgid "IDS_PRT_BODY_PAPERSIZE"
+msgstr "Formato carta"
+
+msgid "IDS_PRT_BODY_NUMBEROFCOPIES"
+msgstr "Numero di copie"
+
+msgid "IDS_PRT_BODY_PRINT_RANGE_ABB"
+msgstr "Intervallo di stampa"
+
+msgid "IDS_PRT_BODY_COLOUR"
+msgstr "Colore"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT"
+msgstr "Bozza"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD"
+msgstr "Standard"
+
+msgid "IDS_COM_BODY_HIGH"
+msgstr "Alta"
+
+msgid "IDS_ST_BODY_NORMAL"
+msgstr "Normale"
+
+msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING"
+msgstr "In attesa di stampa..."
+
+msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING"
+msgstr "Preparazione della stampa in corso..."
+
+msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING"
+msgstr "Stampa..."
+
+msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB"
+msgstr "Fotografica"
+
+msgid "IDS_ST_BODY_GLOSSY"
+msgstr "Lucente"
+
+msgid "IDS_DIC_BODY_ALL"
+msgstr "Tutti"
+
+msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY"
+msgstr "Qualità di stampa"
+
+msgid "IDS_IMGE_HEADER_GREY"
+msgstr "Grigio"
+
+msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE"
+msgstr "Nessuna stampante disponibile"
+
+msgid "IDS_COM_BODY_NO_DEVICES"
+msgstr "Nessun dispositivo"
+
+msgid "IDS_PRT_POP_PRINTING_CANCELED"
+msgstr "Stampa annullata"
+
+msgid "IDS_COM_POP_MEMORY_FULL"
+msgstr "Memoria piena"
+
+msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING"
+msgstr "Ricerca stampanti in corso..."
+
+msgid "IDS_PRT_POP_CHECKPRINTERSTATE"
+msgstr "Verificare lo stato della stampante"
+
+msgid "IDS_ASEML_POP_SEARCH_FAILED"
+msgstr "Ricerca non riuscita"
+
+msgid "IDS_PRT_POP_PRINTINGERROR"
+msgstr "Errore di stampa"
+
+msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED"
+msgstr "Wi-Fi disconnesso"
+
+msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER"
+msgstr "Carta"
+
+msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2"
+msgstr "Stampante disconnessa"
+
diff --git a/mobileprint/po/ja_JP.po b/mobileprint/po/ja_JP.po
new file mode 100644 (file)
index 0000000..d9bea85
--- /dev/null
@@ -0,0 +1,171 @@
+msgid "IDS_COM_SK_HIDE"
+msgstr "非表示"
+
+msgid "IDS_COM_SK_REFRESH"
+msgstr "更新"
+
+msgid "IDS_COM_SK_CANCEL"
+msgstr "キャンセル"
+
+msgid "IDS_IMGE_OPT_ROTATE"
+msgstr "回転"
+
+msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR"
+msgstr "システムエラー"
+
+msgid "IDS_COM_SK_BACK"
+msgstr "戻る"
+
+msgid "IDS_COM_BODY_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_COM_SK_OK"
+msgstr "OK"
+
+msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE"
+msgstr "未​対応​の​ファイル​です。"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "未対応です"
+
+msgid "IDS_BR_BODY_CURRENT_PAGE"
+msgstr "現在のページ"
+
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "プリンターが接続されました。"
+
+msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT"
+msgstr "印刷するためには、Wi-Fiネットワークに接続してください。"
+
+msgid "IDS_PRT_BODY_SELECT_PRINTER"
+msgstr "プリンターの選択"
+
+msgid "IDS_PRT_SK_PRINT_PREVIEW"
+msgstr "プレビュー"
+
+msgid "IDS_SMPOS_SK3_PRINT"
+msgstr "印刷"
+
+msgid "IDS_IMGE_BODY_SIZE"
+msgstr "サイズ"
+
+msgid "IDS_PRT_BODY_SCALING_ABB"
+msgstr "拡大​縮小"
+
+msgid "IDS_COM_BODY_SETTING"
+msgstr "設定"
+
+msgid "IDS_BT_OPT_FIT_TO_PAPER"
+msgstr "用紙​に​合わせる"
+
+msgid "IDS_COM_SK_CUSTOM"
+msgstr "カスタム"
+
+msgid "IDS_IMGE_BODY_WIDTH"
+msgstr "幅"
+
+msgid "IDS_IMGE_BODY_HEIGHT"
+msgstr "高さ"
+
+msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB"
+msgstr "縦横比​を​保持"
+
+msgid "IDS_COM_BODY_UNIT_INCH"
+msgstr "インチ"
+
+msgid "IDS_COM_BODY_UNIT_CM"
+msgstr "cm"
+
+msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB"
+msgstr "1枚​に​%dページ"
+
+msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS"
+msgstr "プリンター​設定"
+
+msgid "IDS_PRT_BODY_PRINTER"
+msgstr "プリンター"
+
+msgid "IDS_PRT_BODY_PAPERSIZE"
+msgstr "プリント​サイズ"
+
+msgid "IDS_PRT_BODY_NUMBEROFCOPIES"
+msgstr "枚数"
+
+msgid "IDS_PRT_BODY_PRINT_RANGE_ABB"
+msgstr "印刷​範囲"
+
+msgid "IDS_PRT_BODY_COLOUR"
+msgstr "色"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT"
+msgstr "下書き"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD"
+msgstr "標準"
+
+msgid "IDS_COM_BODY_HIGH"
+msgstr "高"
+
+msgid "IDS_ST_BODY_NORMAL"
+msgstr "標準"
+
+msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING"
+msgstr "印刷を待機しています..."
+
+msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING"
+msgstr "印刷​準備中..."
+
+msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING"
+msgstr "印刷中..."
+
+msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB"
+msgstr "写真​用"
+
+msgid "IDS_ST_BODY_GLOSSY"
+msgstr "Glossy"
+
+msgid "IDS_DIC_BODY_ALL"
+msgstr "全て"
+
+msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY"
+msgstr "印刷​品質"
+
+msgid "IDS_IMGE_HEADER_GREY"
+msgstr "グレイ"
+
+msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE"
+msgstr "利用​できる​プリンター​が​あり​ません。"
+
+msgid "IDS_COM_BODY_NO_DEVICES"
+msgstr "デバイス​が​あり​ません。"
+
+msgid "IDS_PRT_POP_PRINTING_CANCELED"
+msgstr "印刷をキャンセルしました。"
+
+msgid "IDS_COM_POP_MEMORY_FULL"
+msgstr "メモリがいっぱいです。"
+
+msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING"
+msgstr "プリンター​を​検索​中..."
+
+msgid "IDS_PRT_POP_CHECKPRINTERSTATE"
+msgstr "プリンター​状況​を​確認​して​ください"
+
+msgid "IDS_ASEML_POP_SEARCH_FAILED"
+msgstr "検索​に​失敗​しました"
+
+msgid "IDS_PRT_POP_PRINTINGERROR"
+msgstr "印刷​エラー"
+
+msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED"
+msgstr "Wi-Fi​が切断​されました。"
+
+msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER"
+msgstr "ペーパー"
+
+msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2"
+msgstr "プリンターが取り外されました。"
+
diff --git a/mobileprint/po/ka.po b/mobileprint/po/ka.po
new file mode 100644 (file)
index 0000000..578c42f
--- /dev/null
@@ -0,0 +1,171 @@
+msgid "IDS_COM_SK_HIDE"
+msgstr "დამალვა"
+
+msgid "IDS_COM_SK_REFRESH"
+msgstr "განახლება"
+
+msgid "IDS_COM_SK_CANCEL"
+msgstr "გაუქმება"
+
+msgid "IDS_IMGE_OPT_ROTATE"
+msgstr "ბრუნვა"
+
+msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR"
+msgstr "სისტემის შეცდომა"
+
+msgid "IDS_COM_SK_BACK"
+msgstr "უკან"
+
+msgid "IDS_COM_BODY_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_COM_SK_OK"
+msgstr "OK"
+
+msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE"
+msgstr "ფაილის ტიპი გაუთვალისწინებელია"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "გაუთვალისწინებელი"
+
+msgid "IDS_BR_BODY_CURRENT_PAGE"
+msgstr "მიმდინარე გვერდი"
+
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "პრინტერი დაკავშირებულია"
+
+msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT"
+msgstr "დაუკავშირდით Wi-Fi ქსელს და ამობეჭდეთ"
+
+msgid "IDS_PRT_BODY_SELECT_PRINTER"
+msgstr "აირჩიეთ პრინტერი"
+
+msgid "IDS_PRT_SK_PRINT_PREVIEW"
+msgstr "გადახედვა"
+
+msgid "IDS_SMPOS_SK3_PRINT"
+msgstr "ამობეჭდვა"
+
+msgid "IDS_IMGE_BODY_SIZE"
+msgstr "ზომა"
+
+msgid "IDS_PRT_BODY_SCALING_ABB"
+msgstr "ზომის შეცვლა"
+
+msgid "IDS_COM_BODY_SETTING"
+msgstr "პარამეტრები"
+
+msgid "IDS_BT_OPT_FIT_TO_PAPER"
+msgstr "ფურცელზე მორგება"
+
+msgid "IDS_COM_SK_CUSTOM"
+msgstr "მორგებული"
+
+msgid "IDS_IMGE_BODY_WIDTH"
+msgstr "სიგანე"
+
+msgid "IDS_IMGE_BODY_HEIGHT"
+msgstr "სიმაღლე"
+
+msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB"
+msgstr "შეფარდების შენარჩუნება"
+
+msgid "IDS_COM_BODY_UNIT_INCH"
+msgstr "დიუმი"
+
+msgid "IDS_COM_BODY_UNIT_CM"
+msgstr "სმ."
+
+msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB"
+msgstr "%d გვერდი 1 ფურცელზე"
+
+msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS"
+msgstr "პრინტერის პარამეტრები"
+
+msgid "IDS_PRT_BODY_PRINTER"
+msgstr "პრინტერი"
+
+msgid "IDS_PRT_BODY_PAPERSIZE"
+msgstr "ფურცლის ზომა"
+
+msgid "IDS_PRT_BODY_NUMBEROFCOPIES"
+msgstr "ასლების რაოდენობა"
+
+msgid "IDS_PRT_BODY_PRINT_RANGE_ABB"
+msgstr "ბეჭდვის დიაპაზონი"
+
+msgid "IDS_PRT_BODY_COLOUR"
+msgstr "ფერი"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT"
+msgstr "მონახაზი"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD"
+msgstr "სტანდარტული"
+
+msgid "IDS_COM_BODY_HIGH"
+msgstr "მაღალი"
+
+msgid "IDS_ST_BODY_NORMAL"
+msgstr "ნორმალური"
+
+msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING"
+msgstr "ელოდება ბეჭდვას..."
+
+msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING"
+msgstr "ემზადება ამოსაბეჭდად..."
+
+msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING"
+msgstr "იბეჭდება..."
+
+msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB"
+msgstr "ფოტოგრაფია"
+
+msgid "IDS_ST_BODY_GLOSSY"
+msgstr "Glossy"
+
+msgid "IDS_DIC_BODY_ALL"
+msgstr "ყველა"
+
+msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY"
+msgstr "ბეჭდვის ხარისხი"
+
+msgid "IDS_IMGE_HEADER_GREY"
+msgstr "ნაცრისფერი"
+
+msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE"
+msgstr "პრინტერები ვერ იძებნება"
+
+msgid "IDS_COM_BODY_NO_DEVICES"
+msgstr "მოწყობილობები არ არის"
+
+msgid "IDS_PRT_POP_PRINTING_CANCELED"
+msgstr "დაბეჭდვა შეწყდა"
+
+msgid "IDS_COM_POP_MEMORY_FULL"
+msgstr "მეხსიერება შევსებულია"
+
+msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING"
+msgstr "იძებნება პრინტერები..."
+
+msgid "IDS_PRT_POP_CHECKPRINTERSTATE"
+msgstr "შეამოწმეთ პრინტერის სტატუსი"
+
+msgid "IDS_ASEML_POP_SEARCH_FAILED"
+msgstr "ძებნა ვერ შესრულდა"
+
+msgid "IDS_PRT_POP_PRINTINGERROR"
+msgstr "ბეჭდვის შეცდომა"
+
+msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED"
+msgstr "Wi-Fi გამოირთო"
+
+msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER"
+msgstr "ქაღალდი"
+
+msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2"
+msgstr "პრინტერი გათიშულია"
+
diff --git a/mobileprint/po/kk.po b/mobileprint/po/kk.po
new file mode 100644 (file)
index 0000000..31445d9
--- /dev/null
@@ -0,0 +1,171 @@
+msgid "IDS_COM_SK_HIDE"
+msgstr "Жасыру"
+
+msgid "IDS_COM_SK_REFRESH"
+msgstr "Жаңарту"
+
+msgid "IDS_COM_SK_CANCEL"
+msgstr "Тоқтату"
+
+msgid "IDS_IMGE_OPT_ROTATE"
+msgstr "Бұру"
+
+msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR"
+msgstr "Жүйе қателігі"
+
+msgid "IDS_COM_SK_BACK"
+msgstr "Aртқа"
+
+msgid "IDS_COM_BODY_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_COM_SK_OK"
+msgstr "OK"
+
+msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE"
+msgstr "Қолдаусыз файл түрі"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Қолдаусыз"
+
+msgid "IDS_BR_BODY_CURRENT_PAGE"
+msgstr "Ағымдағы бет"
+
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Принтер қосылды"
+
+msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT"
+msgstr "Басып шығару үшін Wi-Fi желісіне қосылу"
+
+msgid "IDS_PRT_BODY_SELECT_PRINTER"
+msgstr "Принтер таңдау"
+
+msgid "IDS_PRT_SK_PRINT_PREVIEW"
+msgstr "Көру"
+
+msgid "IDS_SMPOS_SK3_PRINT"
+msgstr "Басып шығару"
+
+msgid "IDS_IMGE_BODY_SIZE"
+msgstr "Өлшемі"
+
+msgid "IDS_PRT_BODY_SCALING_ABB"
+msgstr "Ауқымды өзгерту"
+
+msgid "IDS_COM_BODY_SETTING"
+msgstr "Қондырғылар"
+
+msgid "IDS_BT_OPT_FIT_TO_PAPER"
+msgstr "Қағазға сәйкестендіру"
+
+msgid "IDS_COM_SK_CUSTOM"
+msgstr "Таңдаулы"
+
+msgid "IDS_IMGE_BODY_WIDTH"
+msgstr "Ені"
+
+msgid "IDS_IMGE_BODY_HEIGHT"
+msgstr "Биіктігі"
+
+msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB"
+msgstr "Арақатынасты сақтау"
+
+msgid "IDS_COM_BODY_UNIT_INCH"
+msgstr "дюйм"
+
+msgid "IDS_COM_BODY_UNIT_CM"
+msgstr "cм"
+
+msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB"
+msgstr "1 парақта %d бет"
+
+msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS"
+msgstr "Принтер параметрлері"
+
+msgid "IDS_PRT_BODY_PRINTER"
+msgstr "Басып шығарғыш"
+
+msgid "IDS_PRT_BODY_PAPERSIZE"
+msgstr "Қағаз көлемі"
+
+msgid "IDS_PRT_BODY_NUMBEROFCOPIES"
+msgstr "Көшірмелер саны"
+
+msgid "IDS_PRT_BODY_PRINT_RANGE_ABB"
+msgstr "Принтер ауқымы"
+
+msgid "IDS_PRT_BODY_COLOUR"
+msgstr "Түс"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT"
+msgstr "Кесте"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD"
+msgstr "Стандартты"
+
+msgid "IDS_COM_BODY_HIGH"
+msgstr "Жоғары"
+
+msgid "IDS_ST_BODY_NORMAL"
+msgstr "Қалыпты"
+
+msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING"
+msgstr "Басып шығаруды күтуде..."
+
+msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING"
+msgstr "Басып шығаруға дайындауда..."
+
+msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING"
+msgstr "Басып шығаруда..."
+
+msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB"
+msgstr "Фотографиялық"
+
+msgid "IDS_ST_BODY_GLOSSY"
+msgstr "Glossy"
+
+msgid "IDS_DIC_BODY_ALL"
+msgstr "Барлығы"
+
+msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY"
+msgstr "Басып шығару сапасы"
+
+msgid "IDS_IMGE_HEADER_GREY"
+msgstr "Сұр"
+
+msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE"
+msgstr "Қол жетімді принтерлер жоқ"
+
+msgid "IDS_COM_BODY_NO_DEVICES"
+msgstr "Құрылғылар жоқ"
+
+msgid "IDS_PRT_POP_PRINTING_CANCELED"
+msgstr "Басып шығару болдырылмады"
+
+msgid "IDS_COM_POP_MEMORY_FULL"
+msgstr "Жад толып кеткен"
+
+msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING"
+msgstr "Принтерлерді іздеуде..."
+
+msgid "IDS_PRT_POP_CHECKPRINTERSTATE"
+msgstr "Принтер күйін тексеру"
+
+msgid "IDS_ASEML_POP_SEARCH_FAILED"
+msgstr "Ізделмеді"
+
+msgid "IDS_PRT_POP_PRINTINGERROR"
+msgstr "Басып шығару қатесі"
+
+msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED"
+msgstr "Wi-Fi ажыратылған"
+
+msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER"
+msgstr "Қағаз"
+
+msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2"
+msgstr "Принтер ажыратылды"
+
diff --git a/mobileprint/po/ko_KR.po b/mobileprint/po/ko_KR.po
new file mode 100644 (file)
index 0000000..8c6c499
--- /dev/null
@@ -0,0 +1,171 @@
+msgid "IDS_COM_SK_HIDE"
+msgstr "숨기기"
+
+msgid "IDS_COM_SK_REFRESH"
+msgstr "새로고침"
+
+msgid "IDS_COM_SK_CANCEL"
+msgstr "취소"
+
+msgid "IDS_IMGE_OPT_ROTATE"
+msgstr "회전"
+
+msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR"
+msgstr "시스템 오류가 발생하였습니다"
+
+msgid "IDS_COM_SK_BACK"
+msgstr "이전"
+
+msgid "IDS_COM_BODY_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_COM_SK_OK"
+msgstr "확인"
+
+msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE"
+msgstr "지원되지 않는 파일 형식입니다"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "지원되지 않습니다"
+
+msgid "IDS_BR_BODY_CURRENT_PAGE"
+msgstr "현재 페이지"
+
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "프린터가 연결되었습니다"
+
+msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT"
+msgstr "인쇄하려면 Wi-Fi 네트워크에 연결하세요"
+
+msgid "IDS_PRT_BODY_SELECT_PRINTER"
+msgstr "프린터 선택"
+
+msgid "IDS_PRT_SK_PRINT_PREVIEW"
+msgstr "미리보기"
+
+msgid "IDS_SMPOS_SK3_PRINT"
+msgstr "출력"
+
+msgid "IDS_IMGE_BODY_SIZE"
+msgstr "크기"
+
+msgid "IDS_PRT_BODY_SCALING_ABB"
+msgstr "크기 조정"
+
+msgid "IDS_COM_BODY_SETTING"
+msgstr "설정"
+
+msgid "IDS_BT_OPT_FIT_TO_PAPER"
+msgstr "용지 크기에 맞추기"
+
+msgid "IDS_COM_SK_CUSTOM"
+msgstr "사용자 설정"
+
+msgid "IDS_IMGE_BODY_WIDTH"
+msgstr "넓이"
+
+msgid "IDS_IMGE_BODY_HEIGHT"
+msgstr "높이"
+
+msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB"
+msgstr "비율 유지"
+
+msgid "IDS_COM_BODY_UNIT_INCH"
+msgstr "inch"
+
+msgid "IDS_COM_BODY_UNIT_CM"
+msgstr "cm"
+
+msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB"
+msgstr "1장에 %d 페이지"
+
+msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS"
+msgstr "프린터 설정"
+
+msgid "IDS_PRT_BODY_PRINTER"
+msgstr "프린터"
+
+msgid "IDS_PRT_BODY_PAPERSIZE"
+msgstr "용지 크기"
+
+msgid "IDS_PRT_BODY_NUMBEROFCOPIES"
+msgstr "인쇄 매수"
+
+msgid "IDS_PRT_BODY_PRINT_RANGE_ABB"
+msgstr "인쇄 범위"
+
+msgid "IDS_PRT_BODY_COLOUR"
+msgstr "색상"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT"
+msgstr "초안"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD"
+msgstr "표준"
+
+msgid "IDS_COM_BODY_HIGH"
+msgstr "높음"
+
+msgid "IDS_ST_BODY_NORMAL"
+msgstr "보통"
+
+msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING"
+msgstr "인쇄 대기 중..."
+
+msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING"
+msgstr "인쇄 준비 중..."
+
+msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING"
+msgstr "인쇄 중..."
+
+msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB"
+msgstr "사진"
+
+msgid "IDS_ST_BODY_GLOSSY"
+msgstr "글로시"
+
+msgid "IDS_DIC_BODY_ALL"
+msgstr "전체"
+
+msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY"
+msgstr "인쇄 품질"
+
+msgid "IDS_IMGE_HEADER_GREY"
+msgstr "회색조"
+
+msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE"
+msgstr "사용할 수 있는 프린터가 없습니다"
+
+msgid "IDS_COM_BODY_NO_DEVICES"
+msgstr "기기 목록이 없습니다"
+
+msgid "IDS_PRT_POP_PRINTING_CANCELED"
+msgstr "인쇄가 취소되었습니다"
+
+msgid "IDS_COM_POP_MEMORY_FULL"
+msgstr "저장 공간이 부족합니다"
+
+msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING"
+msgstr "프린터 검색 중..."
+
+msgid "IDS_PRT_POP_CHECKPRINTERSTATE"
+msgstr "프린터 상태를 확인하세요"
+
+msgid "IDS_ASEML_POP_SEARCH_FAILED"
+msgstr "검색하지 못하였습니다"
+
+msgid "IDS_PRT_POP_PRINTINGERROR"
+msgstr "인쇄 오류가 발생하였습니다"
+
+msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED"
+msgstr "Wi-Fi 연결이 끊어졌습니다"
+
+msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER"
+msgstr "종이"
+
+msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2"
+msgstr "프린터와 연결이 끊어졌습니다"
+
diff --git a/mobileprint/po/lt.po b/mobileprint/po/lt.po
new file mode 100644 (file)
index 0000000..aeafe8c
--- /dev/null
@@ -0,0 +1,171 @@
+msgid "IDS_COM_SK_HIDE"
+msgstr "Nerodyti"
+
+msgid "IDS_COM_SK_REFRESH"
+msgstr "Naujinti"
+
+msgid "IDS_COM_SK_CANCEL"
+msgstr "Atšaukti"
+
+msgid "IDS_IMGE_OPT_ROTATE"
+msgstr "Sukti"
+
+msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR"
+msgstr "Sistemos klaida"
+
+msgid "IDS_COM_SK_BACK"
+msgstr "Atgal"
+
+msgid "IDS_COM_BODY_WI_FI"
+msgstr "„Wi-Fi“"
+
+msgid "IDS_COM_SK_OK"
+msgstr "Gerai"
+
+msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE"
+msgstr "Nepalaikomas failo tipas"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "„Wi-Fi Direct“"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Nepalaikoma"
+
+msgid "IDS_BR_BODY_CURRENT_PAGE"
+msgstr "Dabartinis puslpais"
+
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Prijungtas spausdintuvas"
+
+msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT"
+msgstr "Prisijunkite prie „Wi-Fi“ tinklo, jei norite spausdinti"
+
+msgid "IDS_PRT_BODY_SELECT_PRINTER"
+msgstr "Pasirinkti spausdintuvą"
+
+msgid "IDS_PRT_SK_PRINT_PREVIEW"
+msgstr "Peržiūra"
+
+msgid "IDS_SMPOS_SK3_PRINT"
+msgstr "Spausdinti"
+
+msgid "IDS_IMGE_BODY_SIZE"
+msgstr "Dydis"
+
+msgid "IDS_PRT_BODY_SCALING_ABB"
+msgstr "Mastelio parinkimas"
+
+msgid "IDS_COM_BODY_SETTING"
+msgstr "Nustatymas"
+
+msgid "IDS_BT_OPT_FIT_TO_PAPER"
+msgstr "Pritaikyti pagal lapo formatą"
+
+msgid "IDS_COM_SK_CUSTOM"
+msgstr "Pasirink."
+
+msgid "IDS_IMGE_BODY_WIDTH"
+msgstr "Plotis"
+
+msgid "IDS_IMGE_BODY_HEIGHT"
+msgstr "Aukštis"
+
+msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB"
+msgstr "Išsaug. vaizdo formatą"
+
+msgid "IDS_COM_BODY_UNIT_INCH"
+msgstr "colis"
+
+msgid "IDS_COM_BODY_UNIT_CM"
+msgstr "cm"
+
+msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB"
+msgstr "%d psl. 1 lape"
+
+msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS"
+msgstr "Spausdintuvo nustatymai"
+
+msgid "IDS_PRT_BODY_PRINTER"
+msgstr "Spausdintuvas"
+
+msgid "IDS_PRT_BODY_PAPERSIZE"
+msgstr "Popieriaus formatas"
+
+msgid "IDS_PRT_BODY_NUMBEROFCOPIES"
+msgstr "Kopijų skaičius"
+
+msgid "IDS_PRT_BODY_PRINT_RANGE_ABB"
+msgstr "Spausdinimo diapazonas"
+
+msgid "IDS_PRT_BODY_COLOUR"
+msgstr "Spalva"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT"
+msgstr "Juodraštis"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD"
+msgstr "Standartinis"
+
+msgid "IDS_COM_BODY_HIGH"
+msgstr "Aukšta"
+
+msgid "IDS_ST_BODY_NORMAL"
+msgstr "Įprastas"
+
+msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING"
+msgstr "Laukiama, kol bus spausdinama..."
+
+msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING"
+msgstr "Ruošiamasi spausdinti..."
+
+msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING"
+msgstr "Spausdinama..."
+
+msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB"
+msgstr "Fotografinis"
+
+msgid "IDS_ST_BODY_GLOSSY"
+msgstr "Blizgus"
+
+msgid "IDS_DIC_BODY_ALL"
+msgstr "Visos"
+
+msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY"
+msgstr "Spausdinimo kokybė"
+
+msgid "IDS_IMGE_HEADER_GREY"
+msgstr "Pilka"
+
+msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE"
+msgstr "Spausdintuvų nėra"
+
+msgid "IDS_COM_BODY_NO_DEVICES"
+msgstr "Nėra įrenginių"
+
+msgid "IDS_PRT_POP_PRINTING_CANCELED"
+msgstr "Spausdinimas atšauktas"
+
+msgid "IDS_COM_POP_MEMORY_FULL"
+msgstr "Atmintis pilna"
+
+msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING"
+msgstr "Ieškoma spausdintuvų..."
+
+msgid "IDS_PRT_POP_CHECKPRINTERSTATE"
+msgstr "Patikrinti spausdintuvo būseną"
+
+msgid "IDS_ASEML_POP_SEARCH_FAILED"
+msgstr "Paieška nepavyko"
+
+msgid "IDS_PRT_POP_PRINTINGERROR"
+msgstr "Spausdinimo klaida"
+
+msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED"
+msgstr "„Wi-Fi“ atjungtas"
+
+msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER"
+msgstr "Popierius"
+
+msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2"
+msgstr "Spausdintuvas atjungtas"
+
diff --git a/mobileprint/po/lv.po b/mobileprint/po/lv.po
new file mode 100644 (file)
index 0000000..a64cd1e
--- /dev/null
@@ -0,0 +1,171 @@
+msgid "IDS_COM_SK_HIDE"
+msgstr "Slēpt"
+
+msgid "IDS_COM_SK_REFRESH"
+msgstr "Atsvaidz."
+
+msgid "IDS_COM_SK_CANCEL"
+msgstr "Atcelt"
+
+msgid "IDS_IMGE_OPT_ROTATE"
+msgstr "Pagriezt"
+
+msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR"
+msgstr "Sistēmas kļūda"
+
+msgid "IDS_COM_SK_BACK"
+msgstr "Atpakaļ"
+
+msgid "IDS_COM_BODY_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_COM_SK_OK"
+msgstr "Labi"
+
+msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE"
+msgstr "Neatbalstīts faila veids"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Neatbalstīts"
+
+msgid "IDS_BR_BODY_CURRENT_PAGE"
+msgstr "Pašreizējā lapa"
+
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Printeris pievienots"
+
+msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT"
+msgstr "Lai drukātu, izveidojiet savienojumu ar Wi-Fi tīklu"
+
+msgid "IDS_PRT_BODY_SELECT_PRINTER"
+msgstr "Izvēlēties printeri"
+
+msgid "IDS_PRT_SK_PRINT_PREVIEW"
+msgstr "Priekšsk."
+
+msgid "IDS_SMPOS_SK3_PRINT"
+msgstr "Drukāt"
+
+msgid "IDS_IMGE_BODY_SIZE"
+msgstr "Lielums"
+
+msgid "IDS_PRT_BODY_SCALING_ABB"
+msgstr "Mērogošana"
+
+msgid "IDS_COM_BODY_SETTING"
+msgstr "Iestatījums"
+
+msgid "IDS_BT_OPT_FIT_TO_PAPER"
+msgstr "Pielāgot papīram"
+
+msgid "IDS_COM_SK_CUSTOM"
+msgstr "Sava izv."
+
+msgid "IDS_IMGE_BODY_WIDTH"
+msgstr "Platums"
+
+msgid "IDS_IMGE_BODY_HEIGHT"
+msgstr "Augstums"
+
+msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB"
+msgstr "Saglabāt proporcijas"
+
+msgid "IDS_COM_BODY_UNIT_INCH"
+msgstr "colla"
+
+msgid "IDS_COM_BODY_UNIT_CM"
+msgstr "cm"
+
+msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB"
+msgstr "%d lappuses 1 lapā"
+
+msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS"
+msgstr "Printera iestatījumi"
+
+msgid "IDS_PRT_BODY_PRINTER"
+msgstr "Printeris"
+
+msgid "IDS_PRT_BODY_PAPERSIZE"
+msgstr "Papīra formāts"
+
+msgid "IDS_PRT_BODY_NUMBEROFCOPIES"
+msgstr "Kopiju skaits"
+
+msgid "IDS_PRT_BODY_PRINT_RANGE_ABB"
+msgstr "Drukas diapazons"
+
+msgid "IDS_PRT_BODY_COLOUR"
+msgstr "Krāsa"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT"
+msgstr "Melnraksts"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD"
+msgstr "Standarta"
+
+msgid "IDS_COM_BODY_HIGH"
+msgstr "Augsta"
+
+msgid "IDS_ST_BODY_NORMAL"
+msgstr "Parasts"
+
+msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING"
+msgstr "Gaida, lai drukātu..."
+
+msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING"
+msgstr "Sagatavo drukāšanai..."
+
+msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING"
+msgstr "Drukā..."
+
+msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB"
+msgstr "Fotogrāfisks"
+
+msgid "IDS_ST_BODY_GLOSSY"
+msgstr "Spīdīgs"
+
+msgid "IDS_DIC_BODY_ALL"
+msgstr "Visi"
+
+msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY"
+msgstr "Drukas kvalitāte"
+
+msgid "IDS_IMGE_HEADER_GREY"
+msgstr "Pelēks"
+
+msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE"
+msgstr "Nav pieejams neviens printeris"
+
+msgid "IDS_COM_BODY_NO_DEVICES"
+msgstr "Nav ierīču"
+
+msgid "IDS_PRT_POP_PRINTING_CANCELED"
+msgstr "Drukāšana atcelta"
+
+msgid "IDS_COM_POP_MEMORY_FULL"
+msgstr "Atmiņa pilna"
+
+msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING"
+msgstr "Meklē printerus..."
+
+msgid "IDS_PRT_POP_CHECKPRINTERSTATE"
+msgstr "Pārbaudīt printera statusu"
+
+msgid "IDS_ASEML_POP_SEARCH_FAILED"
+msgstr "Meklēšana neizdevās"
+
+msgid "IDS_PRT_POP_PRINTINGERROR"
+msgstr "Drukāšanas kļūda"
+
+msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED"
+msgstr "Wi-Fi ir atvienots"
+
+msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER"
+msgstr "Papīrs"
+
+msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2"
+msgstr "Printeris atvienots"
+
diff --git a/mobileprint/po/mk.po b/mobileprint/po/mk.po
new file mode 100644 (file)
index 0000000..501c2cd
--- /dev/null
@@ -0,0 +1,171 @@
+msgid "IDS_COM_SK_HIDE"
+msgstr "Прикриј"
+
+msgid "IDS_COM_SK_REFRESH"
+msgstr "Обнови"
+
+msgid "IDS_COM_SK_CANCEL"
+msgstr "Откажи"
+
+msgid "IDS_IMGE_OPT_ROTATE"
+msgstr "Заврти"
+
+msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR"
+msgstr "Системска грешка"
+
+msgid "IDS_COM_SK_BACK"
+msgstr "Назад"
+
+msgid "IDS_COM_BODY_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_COM_SK_OK"
+msgstr "OK"
+
+msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE"
+msgstr "Неподдржан тип на фајл"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Неподдржано"
+
+msgid "IDS_BR_BODY_CURRENT_PAGE"
+msgstr "Тековна страница"
+
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Поврзан е печатач"
+
+msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT"
+msgstr "Поврзете се со мрежа Wi-Fi за печатење"
+
+msgid "IDS_PRT_BODY_SELECT_PRINTER"
+msgstr "Изберете печатач"
+
+msgid "IDS_PRT_SK_PRINT_PREVIEW"
+msgstr "Назад"
+
+msgid "IDS_SMPOS_SK3_PRINT"
+msgstr "Печати"
+
+msgid "IDS_IMGE_BODY_SIZE"
+msgstr "Големина"
+
+msgid "IDS_PRT_BODY_SCALING_ABB"
+msgstr "Размер"
+
+msgid "IDS_COM_BODY_SETTING"
+msgstr "Нагодување"
+
+msgid "IDS_BT_OPT_FIT_TO_PAPER"
+msgstr "На цела хартија"
+
+msgid "IDS_COM_SK_CUSTOM"
+msgstr "Прилагод."
+
+msgid "IDS_IMGE_BODY_WIDTH"
+msgstr "Ширина"
+
+msgid "IDS_IMGE_BODY_HEIGHT"
+msgstr "Висина"
+
+msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB"
+msgstr "Запази размер на слика"
+
+msgid "IDS_COM_BODY_UNIT_INCH"
+msgstr "инч"
+
+msgid "IDS_COM_BODY_UNIT_CM"
+msgstr "cm"
+
+msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB"
+msgstr "%d страници на 1 лист"
+
+msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS"
+msgstr "Опции за печатачот"
+
+msgid "IDS_PRT_BODY_PRINTER"
+msgstr "Печатач"
+
+msgid "IDS_PRT_BODY_PAPERSIZE"
+msgstr "Големина на хартија"
+
+msgid "IDS_PRT_BODY_NUMBEROFCOPIES"
+msgstr "Број на копии"
+
+msgid "IDS_PRT_BODY_PRINT_RANGE_ABB"
+msgstr "Опсег на печатење"
+
+msgid "IDS_PRT_BODY_COLOUR"
+msgstr "Боја"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT"
+msgstr "За скица"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD"
+msgstr "Стандардна"
+
+msgid "IDS_COM_BODY_HIGH"
+msgstr "Висок"
+
+msgid "IDS_ST_BODY_NORMAL"
+msgstr "Нормално"
+
+msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING"
+msgstr "Се чека печатење..."
+
+msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING"
+msgstr "Се подготвува печатење..."
+
+msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING"
+msgstr "Се печати..."
+
+msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB"
+msgstr "Фотографски"
+
+msgid "IDS_ST_BODY_GLOSSY"
+msgstr "Glossy"
+
+msgid "IDS_DIC_BODY_ALL"
+msgstr "Сите"
+
+msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY"
+msgstr "Квалитет на печатење"
+
+msgid "IDS_IMGE_HEADER_GREY"
+msgstr "Сива палета"
+
+msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE"
+msgstr "Не се достапни печатачи"
+
+msgid "IDS_COM_BODY_NO_DEVICES"
+msgstr "Нема уреди"
+
+msgid "IDS_PRT_POP_PRINTING_CANCELED"
+msgstr "Печатењето е откажано"
+
+msgid "IDS_COM_POP_MEMORY_FULL"
+msgstr "Меморијата е полна"
+
+msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING"
+msgstr "Се бараат печатачи..."
+
+msgid "IDS_PRT_POP_CHECKPRINTERSTATE"
+msgstr "Проверете го печатачот"
+
+msgid "IDS_ASEML_POP_SEARCH_FAILED"
+msgstr "Неуспешно пребарување"
+
+msgid "IDS_PRT_POP_PRINTINGERROR"
+msgstr "Грешка во печатењето"
+
+msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED"
+msgstr "Wi-Fi е прекинато"
+
+msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER"
+msgstr "Хартија"
+
+msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2"
+msgstr "Печатачот не е поврзан"
+
diff --git a/mobileprint/po/mobileprint.pot b/mobileprint/po/mobileprint.pot
new file mode 100644 (file)
index 0000000..de35177
--- /dev/null
@@ -0,0 +1,254 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <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 ""
diff --git a/mobileprint/po/nb.po b/mobileprint/po/nb.po
new file mode 100644 (file)
index 0000000..047d160
--- /dev/null
@@ -0,0 +1,171 @@
+msgid "IDS_COM_SK_HIDE"
+msgstr "Skjul"
+
+msgid "IDS_COM_SK_REFRESH"
+msgstr "Oppdater"
+
+msgid "IDS_COM_SK_CANCEL"
+msgstr "Avbryt"
+
+msgid "IDS_IMGE_OPT_ROTATE"
+msgstr "Roter"
+
+msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR"
+msgstr "Systemfeil"
+
+msgid "IDS_COM_SK_BACK"
+msgstr "Tilbake"
+
+msgid "IDS_COM_BODY_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_COM_SK_OK"
+msgstr "OK"
+
+msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE"
+msgstr "Filtypen støttes ikke"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Støttes ikke"
+
+msgid "IDS_BR_BODY_CURRENT_PAGE"
+msgstr "Aktuell side"
+
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Skriver tilkoblet"
+
+msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT"
+msgstr "Koble til Wi-Fi-nettverk for å skrive ut"
+
+msgid "IDS_PRT_BODY_SELECT_PRINTER"
+msgstr "Velg skriver"
+
+msgid "IDS_PRT_SK_PRINT_PREVIEW"
+msgstr "Forhåndsvisning"
+
+msgid "IDS_SMPOS_SK3_PRINT"
+msgstr "Skriv ut"
+
+msgid "IDS_IMGE_BODY_SIZE"
+msgstr "Størrelse"
+
+msgid "IDS_PRT_BODY_SCALING_ABB"
+msgstr "Skalerer"
+
+msgid "IDS_COM_BODY_SETTING"
+msgstr "Innstilling"
+
+msgid "IDS_BT_OPT_FIT_TO_PAPER"
+msgstr "Tilpass til papir"
+
+msgid "IDS_COM_SK_CUSTOM"
+msgstr "Egendef."
+
+msgid "IDS_IMGE_BODY_WIDTH"
+msgstr "Bredde"
+
+msgid "IDS_IMGE_BODY_HEIGHT"
+msgstr "Høyde"
+
+msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB"
+msgstr "Behold sideforhold"
+
+msgid "IDS_COM_BODY_UNIT_INCH"
+msgstr "tommer"
+
+msgid "IDS_COM_BODY_UNIT_CM"
+msgstr "cm"
+
+msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB"
+msgstr "%d sider på 1 ark"
+
+msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS"
+msgstr "Skriverinnstillinger"
+
+msgid "IDS_PRT_BODY_PRINTER"
+msgstr "Printer"
+
+msgid "IDS_PRT_BODY_PAPERSIZE"
+msgstr "Papirstørrelse"
+
+msgid "IDS_PRT_BODY_NUMBEROFCOPIES"
+msgstr "Antall kopier"
+
+msgid "IDS_PRT_BODY_PRINT_RANGE_ABB"
+msgstr "Utskriftsområde"
+
+msgid "IDS_PRT_BODY_COLOUR"
+msgstr "Farge"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT"
+msgstr "Utkast"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD"
+msgstr "Standard"
+
+msgid "IDS_COM_BODY_HIGH"
+msgstr "Høy"
+
+msgid "IDS_ST_BODY_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING"
+msgstr "Venter på utskrift..."
+
+msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING"
+msgstr "Forbereder utskrift..."
+
+msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING"
+msgstr "Skriver ut..."
+
+msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB"
+msgstr "Fotografisk"
+
+msgid "IDS_ST_BODY_GLOSSY"
+msgstr "Glossy"
+
+msgid "IDS_DIC_BODY_ALL"
+msgstr "Alle"
+
+msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY"
+msgstr "Utskriftskvalitet"
+
+msgid "IDS_IMGE_HEADER_GREY"
+msgstr "Grå"
+
+msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE"
+msgstr "Ingen tilgjengelige skrivere"
+
+msgid "IDS_COM_BODY_NO_DEVICES"
+msgstr "Ingen enheter"
+
+msgid "IDS_PRT_POP_PRINTING_CANCELED"
+msgstr "Utskrift avbrutt"
+
+msgid "IDS_COM_POP_MEMORY_FULL"
+msgstr "Minnet er fullt"
+
+msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING"
+msgstr "Søker etter skrivere..."
+
+msgid "IDS_PRT_POP_CHECKPRINTERSTATE"
+msgstr "Sjekk skriverstatus"
+
+msgid "IDS_ASEML_POP_SEARCH_FAILED"
+msgstr "Søk mislyktes"
+
+msgid "IDS_PRT_POP_PRINTINGERROR"
+msgstr "Utskriftsfeil"
+
+msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED"
+msgstr "Wi-Fi frakoblet"
+
+msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER"
+msgstr "Papir"
+
+msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2"
+msgstr "Skriver frakoblet"
+
diff --git a/mobileprint/po/nl_NL.po b/mobileprint/po/nl_NL.po
new file mode 100644 (file)
index 0000000..637685f
--- /dev/null
@@ -0,0 +1,171 @@
+msgid "IDS_COM_SK_HIDE"
+msgstr "Verberg."
+
+msgid "IDS_COM_SK_REFRESH"
+msgstr "Vernieuw"
+
+msgid "IDS_COM_SK_CANCEL"
+msgstr "Annuleren"
+
+msgid "IDS_IMGE_OPT_ROTATE"
+msgstr "Draaien"
+
+msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR"
+msgstr "Systeemfout"
+
+msgid "IDS_COM_SK_BACK"
+msgstr "Terug"
+
+msgid "IDS_COM_BODY_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_COM_SK_OK"
+msgstr "OK"
+
+msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE"
+msgstr "Niet-ondersteund bestandstype"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Niet ondersteund"
+
+msgid "IDS_BR_BODY_CURRENT_PAGE"
+msgstr "Huidige pagina"
+
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Printer aangesloten"
+
+msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT"
+msgstr "Met Wi-Fi-netwerk verbinden om af te drukken"
+
+msgid "IDS_PRT_BODY_SELECT_PRINTER"
+msgstr "Printer selecteren"
+
+msgid "IDS_PRT_SK_PRINT_PREVIEW"
+msgstr "Voorbeeld"
+
+msgid "IDS_SMPOS_SK3_PRINT"
+msgstr "Af- drukken"
+
+msgid "IDS_IMGE_BODY_SIZE"
+msgstr "Grootte"
+
+msgid "IDS_PRT_BODY_SCALING_ABB"
+msgstr "Schaal"
+
+msgid "IDS_COM_BODY_SETTING"
+msgstr "Instelling"
+
+msgid "IDS_BT_OPT_FIT_TO_PAPER"
+msgstr "Passend maken"
+
+msgid "IDS_COM_SK_CUSTOM"
+msgstr "Aangepast"
+
+msgid "IDS_IMGE_BODY_WIDTH"
+msgstr "Breedte"
+
+msgid "IDS_IMGE_BODY_HEIGHT"
+msgstr "Hoogte"
+
+msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB"
+msgstr "Verhouding behouden"
+
+msgid "IDS_COM_BODY_UNIT_INCH"
+msgstr "inch"
+
+msgid "IDS_COM_BODY_UNIT_CM"
+msgstr "cm"
+
+msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB"
+msgstr "%d pagina´s op 1 vel"
+
+msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS"
+msgstr "Printerinstellingen"
+
+msgid "IDS_PRT_BODY_PRINTER"
+msgstr "Printer"
+
+msgid "IDS_PRT_BODY_PAPERSIZE"
+msgstr "Papierformaat"
+
+msgid "IDS_PRT_BODY_NUMBEROFCOPIES"
+msgstr "Aantal exemplaren"
+
+msgid "IDS_PRT_BODY_PRINT_RANGE_ABB"
+msgstr "Afdrukbereik"
+
+msgid "IDS_PRT_BODY_COLOUR"
+msgstr "Kleur"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT"
+msgstr "Concept"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD"
+msgstr "Standaard"
+
+msgid "IDS_COM_BODY_HIGH"
+msgstr "Hoog"
+
+msgid "IDS_ST_BODY_NORMAL"
+msgstr "Normaal"
+
+msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING"
+msgstr "Wachten op afdrukken..."
+
+msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING"
+msgstr "Voorbereiden voor afdrukken..."
+
+msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING"
+msgstr "Afdrukken..."
+
+msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB"
+msgstr "Fotografisch"
+
+msgid "IDS_ST_BODY_GLOSSY"
+msgstr "Glossy"
+
+msgid "IDS_DIC_BODY_ALL"
+msgstr "Alles"
+
+msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY"
+msgstr "Afdrukkwaliteit"
+
+msgid "IDS_IMGE_HEADER_GREY"
+msgstr "Grijs"
+
+msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE"
+msgstr "Geen printers beschikbaar"
+
+msgid "IDS_COM_BODY_NO_DEVICES"
+msgstr "Geen apparaten"
+
+msgid "IDS_PRT_POP_PRINTING_CANCELED"
+msgstr "Afdrukken geannuleerd"
+
+msgid "IDS_COM_POP_MEMORY_FULL"
+msgstr "Geheugen vol"
+
+msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING"
+msgstr "Zoeken naar printers..."
+
+msgid "IDS_PRT_POP_CHECKPRINTERSTATE"
+msgstr "Printerstatus controleren"
+
+msgid "IDS_ASEML_POP_SEARCH_FAILED"
+msgstr "Zoeken mislukt"
+
+msgid "IDS_PRT_POP_PRINTINGERROR"
+msgstr "Afdrukfout"
+
+msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED"
+msgstr "Wi-Fi-verbinding verbroken"
+
+msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER"
+msgstr "Papier"
+
+msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2"
+msgstr "Printer losgekoppeld"
+
diff --git a/mobileprint/po/pl.po b/mobileprint/po/pl.po
new file mode 100644 (file)
index 0000000..6655e4a
--- /dev/null
@@ -0,0 +1,171 @@
+msgid "IDS_COM_SK_HIDE"
+msgstr "Ukryj"
+
+msgid "IDS_COM_SK_REFRESH"
+msgstr "Odśwież"
+
+msgid "IDS_COM_SK_CANCEL"
+msgstr "Anuluj"
+
+msgid "IDS_IMGE_OPT_ROTATE"
+msgstr "Obróć"
+
+msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR"
+msgstr "Błąd systemu"
+
+msgid "IDS_COM_SK_BACK"
+msgstr "Wstecz"
+
+msgid "IDS_COM_BODY_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_COM_SK_OK"
+msgstr "OK"
+
+msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE"
+msgstr "Nieobsługiwany typ pliku"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Nieobsługiwane"
+
+msgid "IDS_BR_BODY_CURRENT_PAGE"
+msgstr "Bieżąca strona"
+
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Drukarka podłączona"
+
+msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT"
+msgstr "Połącz z siecią Wi-Fi, aby wydrukować"
+
+msgid "IDS_PRT_BODY_SELECT_PRINTER"
+msgstr "Wybierz drukarkę"
+
+msgid "IDS_PRT_SK_PRINT_PREVIEW"
+msgstr "Podgląd"
+
+msgid "IDS_SMPOS_SK3_PRINT"
+msgstr "Drukuj"
+
+msgid "IDS_IMGE_BODY_SIZE"
+msgstr "Rozmiar"
+
+msgid "IDS_PRT_BODY_SCALING_ABB"
+msgstr "Skalowanie"
+
+msgid "IDS_COM_BODY_SETTING"
+msgstr "Ustawienie"
+
+msgid "IDS_BT_OPT_FIT_TO_PAPER"
+msgstr "Dopasuj do papieru"
+
+msgid "IDS_COM_SK_CUSTOM"
+msgstr "Skróty"
+
+msgid "IDS_IMGE_BODY_WIDTH"
+msgstr "Szerokość"
+
+msgid "IDS_IMGE_BODY_HEIGHT"
+msgstr "Wysokość"
+
+msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB"
+msgstr "Zachowaj proporcje"
+
+msgid "IDS_COM_BODY_UNIT_INCH"
+msgstr "cal"
+
+msgid "IDS_COM_BODY_UNIT_CM"
+msgstr "cm"
+
+msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB"
+msgstr "Stron na arkusz: %d"
+
+msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS"
+msgstr "Ustawienia drukarki"
+
+msgid "IDS_PRT_BODY_PRINTER"
+msgstr "Drukarka"
+
+msgid "IDS_PRT_BODY_PAPERSIZE"
+msgstr "Rozmiar papieru"
+
+msgid "IDS_PRT_BODY_NUMBEROFCOPIES"
+msgstr "Liczba kopii"
+
+msgid "IDS_PRT_BODY_PRINT_RANGE_ABB"
+msgstr "Zakres drukowania"
+
+msgid "IDS_PRT_BODY_COLOUR"
+msgstr "Kolor"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT"
+msgstr "Wersja robocza"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD"
+msgstr "Standard."
+
+msgid "IDS_COM_BODY_HIGH"
+msgstr "Wysoki"
+
+msgid "IDS_ST_BODY_NORMAL"
+msgstr "Normalny"
+
+msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING"
+msgstr "Oczekiwanie na drukowanie..."
+
+msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING"
+msgstr "Przygotowywanie do drukowania..."
+
+msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING"
+msgstr "Drukowanie..."
+
+msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB"
+msgstr "Fotograficzny"
+
+msgid "IDS_ST_BODY_GLOSSY"
+msgstr "Glossy"
+
+msgid "IDS_DIC_BODY_ALL"
+msgstr "Wszystkie"
+
+msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY"
+msgstr "Jakość wydruku"
+
+msgid "IDS_IMGE_HEADER_GREY"
+msgstr "Szary"
+
+msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE"
+msgstr "Brak dostępnych drukarek"
+
+msgid "IDS_COM_BODY_NO_DEVICES"
+msgstr "Brak urządzeń"
+
+msgid "IDS_PRT_POP_PRINTING_CANCELED"
+msgstr "Anulowano drukowanie"
+
+msgid "IDS_COM_POP_MEMORY_FULL"
+msgstr "Pamięć pełna"
+
+msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING"
+msgstr "Wyszukiwanie drukarek..."
+
+msgid "IDS_PRT_POP_CHECKPRINTERSTATE"
+msgstr "Sprawdź stan drukarki"
+
+msgid "IDS_ASEML_POP_SEARCH_FAILED"
+msgstr "Wyszukiwanie nie powiodło się"
+
+msgid "IDS_PRT_POP_PRINTINGERROR"
+msgstr "Błąd drukowania"
+
+msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED"
+msgstr "Wi-Fi wyłączone"
+
+msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER"
+msgstr "Papier"
+
+msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2"
+msgstr "Drukarka odłączona"
+
diff --git a/mobileprint/po/pt_BR.po b/mobileprint/po/pt_BR.po
new file mode 100644 (file)
index 0000000..e67f684
--- /dev/null
@@ -0,0 +1,171 @@
+msgid "IDS_COM_SK_HIDE"
+msgstr "Ocultar"
+
+msgid "IDS_COM_SK_REFRESH"
+msgstr "Atualizar"
+
+msgid "IDS_COM_SK_CANCEL"
+msgstr "Cancelar"
+
+msgid "IDS_IMGE_OPT_ROTATE"
+msgstr "Girar"
+
+msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR"
+msgstr "Erro de sistema"
+
+msgid "IDS_COM_SK_BACK"
+msgstr "Voltar"
+
+msgid "IDS_COM_BODY_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_COM_SK_OK"
+msgstr "OK"
+
+msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE"
+msgstr "Tipo de arquivo não suportado"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Não suportado"
+
+msgid "IDS_BR_BODY_CURRENT_PAGE"
+msgstr "Página atual"
+
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Impressora conectada"
+
+msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT"
+msgstr "Conectar à rede Wi-Fi para imprimir"
+
+msgid "IDS_PRT_BODY_SELECT_PRINTER"
+msgstr "Selecionar impressora"
+
+msgid "IDS_PRT_SK_PRINT_PREVIEW"
+msgstr "Prever"
+
+msgid "IDS_SMPOS_SK3_PRINT"
+msgstr "Imprimir"
+
+msgid "IDS_IMGE_BODY_SIZE"
+msgstr "Tamanho"
+
+msgid "IDS_PRT_BODY_SCALING_ABB"
+msgstr "Escala"
+
+msgid "IDS_COM_BODY_SETTING"
+msgstr "Configurações"
+
+msgid "IDS_BT_OPT_FIT_TO_PAPER"
+msgstr "Ajustar ao papel"
+
+msgid "IDS_COM_SK_CUSTOM"
+msgstr "Pessoal"
+
+msgid "IDS_IMGE_BODY_WIDTH"
+msgstr "Largura"
+
+msgid "IDS_IMGE_BODY_HEIGHT"
+msgstr "Altura"
+
+msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB"
+msgstr "Manter proporção"
+
+msgid "IDS_COM_BODY_UNIT_INCH"
+msgstr "pol"
+
+msgid "IDS_COM_BODY_UNIT_CM"
+msgstr "cm"
+
+msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB"
+msgstr "%d páginas em 1 folha"
+
+msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS"
+msgstr "Configurações da impressora"
+
+msgid "IDS_PRT_BODY_PRINTER"
+msgstr "Impressora"
+
+msgid "IDS_PRT_BODY_PAPERSIZE"
+msgstr "Tamanho do papel"
+
+msgid "IDS_PRT_BODY_NUMBEROFCOPIES"
+msgstr "Número de cópias"
+
+msgid "IDS_PRT_BODY_PRINT_RANGE_ABB"
+msgstr "Intervalo de impressão"
+
+msgid "IDS_PRT_BODY_COLOUR"
+msgstr "Cor"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT"
+msgstr "Rascunho"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD"
+msgstr "Padrão"
+
+msgid "IDS_COM_BODY_HIGH"
+msgstr "Alta"
+
+msgid "IDS_ST_BODY_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING"
+msgstr "Aguardando para imprimir..."
+
+msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING"
+msgstr "Preparando para imprimir..."
+
+msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING"
+msgstr "Imprimindo…"
+
+msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB"
+msgstr "Fotográfico"
+
+msgid "IDS_ST_BODY_GLOSSY"
+msgstr "Glossy"
+
+msgid "IDS_DIC_BODY_ALL"
+msgstr "Todos"
+
+msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY"
+msgstr "Qualidade de impressão"
+
+msgid "IDS_IMGE_HEADER_GREY"
+msgstr "Cinza"
+
+msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE"
+msgstr "Nenhuma impressora disponível"
+
+msgid "IDS_COM_BODY_NO_DEVICES"
+msgstr "Nenhum dispositivo"
+
+msgid "IDS_PRT_POP_PRINTING_CANCELED"
+msgstr "Impressão cancelada"
+
+msgid "IDS_COM_POP_MEMORY_FULL"
+msgstr "Memória cheia"
+
+msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING"
+msgstr "Procurando por impressoras..."
+
+msgid "IDS_PRT_POP_CHECKPRINTERSTATE"
+msgstr "Verificar o estado da impressora"
+
+msgid "IDS_ASEML_POP_SEARCH_FAILED"
+msgstr "Procura falhou"
+
+msgid "IDS_PRT_POP_PRINTINGERROR"
+msgstr "Erro de impressão"
+
+msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED"
+msgstr "Wi-Fi desativado"
+
+msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER"
+msgstr "Papel"
+
+msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2"
+msgstr "Impressora desconectada"
+
diff --git a/mobileprint/po/pt_PT.po b/mobileprint/po/pt_PT.po
new file mode 100644 (file)
index 0000000..9885d4f
--- /dev/null
@@ -0,0 +1,171 @@
+msgid "IDS_COM_SK_HIDE"
+msgstr "Ocultar"
+
+msgid "IDS_COM_SK_REFRESH"
+msgstr "Actualizar"
+
+msgid "IDS_COM_SK_CANCEL"
+msgstr "Cancelar"
+
+msgid "IDS_IMGE_OPT_ROTATE"
+msgstr "Rodar"
+
+msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR"
+msgstr "Erro de sistema"
+
+msgid "IDS_COM_SK_BACK"
+msgstr "Voltar"
+
+msgid "IDS_COM_BODY_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_COM_SK_OK"
+msgstr "OK"
+
+msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE"
+msgstr "Tipo de ficheiro não suportado"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Não suportado"
+
+msgid "IDS_BR_BODY_CURRENT_PAGE"
+msgstr "Página actual"
+
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Impressora ligada"
+
+msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT"
+msgstr "Ligar à rede Wi-Fi para imprimir"
+
+msgid "IDS_PRT_BODY_SELECT_PRINTER"
+msgstr "Seleccionar impressora"
+
+msgid "IDS_PRT_SK_PRINT_PREVIEW"
+msgstr "Pré-vis."
+
+msgid "IDS_SMPOS_SK3_PRINT"
+msgstr "Imprimir"
+
+msgid "IDS_IMGE_BODY_SIZE"
+msgstr "Tamanho"
+
+msgid "IDS_PRT_BODY_SCALING_ABB"
+msgstr "Alterar escala"
+
+msgid "IDS_COM_BODY_SETTING"
+msgstr "Definição"
+
+msgid "IDS_BT_OPT_FIT_TO_PAPER"
+msgstr "Ajustar ao papel"
+
+msgid "IDS_COM_SK_CUSTOM"
+msgstr "Meu Menu"
+
+msgid "IDS_IMGE_BODY_WIDTH"
+msgstr "Largura"
+
+msgid "IDS_IMGE_BODY_HEIGHT"
+msgstr "Altura"
+
+msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB"
+msgstr "Manter relaç. de visual"
+
+msgid "IDS_COM_BODY_UNIT_INCH"
+msgstr "pol"
+
+msgid "IDS_COM_BODY_UNIT_CM"
+msgstr "cm"
+
+msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB"
+msgstr "%d páginas por folha"
+
+msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS"
+msgstr "Definições de impressora"
+
+msgid "IDS_PRT_BODY_PRINTER"
+msgstr "Impressora"
+
+msgid "IDS_PRT_BODY_PAPERSIZE"
+msgstr "Tamanho do papel"
+
+msgid "IDS_PRT_BODY_NUMBEROFCOPIES"
+msgstr "Número de cópias"
+
+msgid "IDS_PRT_BODY_PRINT_RANGE_ABB"
+msgstr "Intervalo de impressão"
+
+msgid "IDS_PRT_BODY_COLOUR"
+msgstr "Cor"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT"
+msgstr "Rascunho"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD"
+msgstr "Padrão"
+
+msgid "IDS_COM_BODY_HIGH"
+msgstr "Alta"
+
+msgid "IDS_ST_BODY_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING"
+msgstr "A aguardar para imprimir..."
+
+msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING"
+msgstr "A preparar para imprimir..."
+
+msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING"
+msgstr "A imprimir..."
+
+msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB"
+msgstr "Fotografia"
+
+msgid "IDS_ST_BODY_GLOSSY"
+msgstr "Glossy"
+
+msgid "IDS_DIC_BODY_ALL"
+msgstr "Tudo"
+
+msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY"
+msgstr "Qualidade de impressão"
+
+msgid "IDS_IMGE_HEADER_GREY"
+msgstr "Cinzento"
+
+msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE"
+msgstr "Nenhuma impressora disponível"
+
+msgid "IDS_COM_BODY_NO_DEVICES"
+msgstr "Nenhuns dispositivos"
+
+msgid "IDS_PRT_POP_PRINTING_CANCELED"
+msgstr "Impressão cancelada"
+
+msgid "IDS_COM_POP_MEMORY_FULL"
+msgstr "Memória cheia"
+
+msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING"
+msgstr "A procurar impressoras..."
+
+msgid "IDS_PRT_POP_CHECKPRINTERSTATE"
+msgstr "Verificar o estado da impressora"
+
+msgid "IDS_ASEML_POP_SEARCH_FAILED"
+msgstr "Procura falhou"
+
+msgid "IDS_PRT_POP_PRINTINGERROR"
+msgstr "Erro de impressão"
+
+msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED"
+msgstr "Wi-Fi desligado"
+
+msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER"
+msgstr "Papel"
+
+msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2"
+msgstr "Impressora desligada"
+
diff --git a/mobileprint/po/ro.po b/mobileprint/po/ro.po
new file mode 100644 (file)
index 0000000..bcc6377
--- /dev/null
@@ -0,0 +1,171 @@
+msgid "IDS_COM_SK_HIDE"
+msgstr "Ascundere"
+
+msgid "IDS_COM_SK_REFRESH"
+msgstr "Reîncărc."
+
+msgid "IDS_COM_SK_CANCEL"
+msgstr "Anulare"
+
+msgid "IDS_IMGE_OPT_ROTATE"
+msgstr "Rotire"
+
+msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR"
+msgstr "Eroare de sistem"
+
+msgid "IDS_COM_SK_BACK"
+msgstr "Înapoi"
+
+msgid "IDS_COM_BODY_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_COM_SK_OK"
+msgstr "OK"
+
+msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE"
+msgstr "Tip fişier neacceptat"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Neacceptat"
+
+msgid "IDS_BR_BODY_CURRENT_PAGE"
+msgstr "Pagină actuală"
+
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Imprimantă conectată"
+
+msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT"
+msgstr "Conectaţi-vă la reţeaua Wi-Fi pentru imprimare"
+
+msgid "IDS_PRT_BODY_SELECT_PRINTER"
+msgstr "Selectare imprimantă"
+
+msgid "IDS_PRT_SK_PRINT_PREVIEW"
+msgstr "Previz."
+
+msgid "IDS_SMPOS_SK3_PRINT"
+msgstr "Imprim."
+
+msgid "IDS_IMGE_BODY_SIZE"
+msgstr "Dimensiune"
+
+msgid "IDS_PRT_BODY_SCALING_ABB"
+msgstr "Scalare"
+
+msgid "IDS_COM_BODY_SETTING"
+msgstr "Setare"
+
+msgid "IDS_BT_OPT_FIT_TO_PAPER"
+msgstr "Potrivire la dimensiunea hârtiei"
+
+msgid "IDS_COM_SK_CUSTOM"
+msgstr "Particul."
+
+msgid "IDS_IMGE_BODY_WIDTH"
+msgstr "lăţime"
+
+msgid "IDS_IMGE_BODY_HEIGHT"
+msgstr "înălţime"
+
+msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB"
+msgstr "Păstr. rap. de asp."
+
+msgid "IDS_COM_BODY_UNIT_INCH"
+msgstr "inch"
+
+msgid "IDS_COM_BODY_UNIT_CM"
+msgstr "cm"
+
+msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB"
+msgstr "%d pagini pe 1 foaie"
+
+msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS"
+msgstr "Setări imprimantă"
+
+msgid "IDS_PRT_BODY_PRINTER"
+msgstr "Imprimantă"
+
+msgid "IDS_PRT_BODY_PAPERSIZE"
+msgstr "Dimensiune hârtie"
+
+msgid "IDS_PRT_BODY_NUMBEROFCOPIES"
+msgstr "Număr de exemplare"
+
+msgid "IDS_PRT_BODY_PRINT_RANGE_ABB"
+msgstr "Interval imprimare"
+
+msgid "IDS_PRT_BODY_COLOUR"
+msgstr "Culoare"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT"
+msgstr "Ciornă"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD"
+msgstr "Standard"
+
+msgid "IDS_COM_BODY_HIGH"
+msgstr "Ridicată"
+
+msgid "IDS_ST_BODY_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING"
+msgstr "Se aşteaptă imprimarea..."
+
+msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING"
+msgstr "Se pregăteşte pentru imprimare..."
+
+msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING"
+msgstr "Se imprimă.."
+
+msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB"
+msgstr "Fotografic"
+
+msgid "IDS_ST_BODY_GLOSSY"
+msgstr "Glossy"
+
+msgid "IDS_DIC_BODY_ALL"
+msgstr "Toate"
+
+msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY"
+msgstr "Calitate imprimare"
+
+msgid "IDS_IMGE_HEADER_GREY"
+msgstr "Gri"
+
+msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE"
+msgstr "Nu sunt disponibile imprimante"
+
+msgid "IDS_COM_BODY_NO_DEVICES"
+msgstr "Nu există dispozitive"
+
+msgid "IDS_PRT_POP_PRINTING_CANCELED"
+msgstr "Imprimare revocată"
+
+msgid "IDS_COM_POP_MEMORY_FULL"
+msgstr "Memorie plină"
+
+msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING"
+msgstr "Se caută imprimante..."
+
+msgid "IDS_PRT_POP_CHECKPRINTERSTATE"
+msgstr "Verificare stare imprimantă"
+
+msgid "IDS_ASEML_POP_SEARCH_FAILED"
+msgstr "Căutare nereuşită"
+
+msgid "IDS_PRT_POP_PRINTINGERROR"
+msgstr "Eroare imprimare"
+
+msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED"
+msgstr "Wi-Fi deconectat"
+
+msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER"
+msgstr "Hârtie"
+
+msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2"
+msgstr "Imprimantă deconectată"
+
diff --git a/mobileprint/po/ru_RU.po b/mobileprint/po/ru_RU.po
new file mode 100644 (file)
index 0000000..135a2f9
--- /dev/null
@@ -0,0 +1,171 @@
+msgid "IDS_COM_SK_HIDE"
+msgstr "Скрыть"
+
+msgid "IDS_COM_SK_REFRESH"
+msgstr "Обновить"
+
+msgid "IDS_COM_SK_CANCEL"
+msgstr "Отмена"
+
+msgid "IDS_IMGE_OPT_ROTATE"
+msgstr "Повернуть"
+
+msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR"
+msgstr "Системная ошибка"
+
+msgid "IDS_COM_SK_BACK"
+msgstr "Назад"
+
+msgid "IDS_COM_BODY_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_COM_SK_OK"
+msgstr "Да"
+
+msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE"
+msgstr "Неподдерживаемый тип файла"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Не поддерживается"
+
+msgid "IDS_BR_BODY_CURRENT_PAGE"
+msgstr "Текущая страница"
+
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Принтер подключен"
+
+msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT"
+msgstr "Чтобы печатать, подключитесь к сети Wi-Fi"
+
+msgid "IDS_PRT_BODY_SELECT_PRINTER"
+msgstr "Выберите принтер"
+
+msgid "IDS_PRT_SK_PRINT_PREVIEW"
+msgstr "Просмотр"
+
+msgid "IDS_SMPOS_SK3_PRINT"
+msgstr "Печать"
+
+msgid "IDS_IMGE_BODY_SIZE"
+msgstr "Размер"
+
+msgid "IDS_PRT_BODY_SCALING_ABB"
+msgstr "Масштабирование"
+
+msgid "IDS_COM_BODY_SETTING"
+msgstr "Настройки"
+
+msgid "IDS_BT_OPT_FIT_TO_PAPER"
+msgstr "По ширине бумаги"
+
+msgid "IDS_COM_SK_CUSTOM"
+msgstr "Перейти"
+
+msgid "IDS_IMGE_BODY_WIDTH"
+msgstr "Ширина"
+
+msgid "IDS_IMGE_BODY_HEIGHT"
+msgstr "Высота"
+
+msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB"
+msgstr "Сохранять пропорции"
+
+msgid "IDS_COM_BODY_UNIT_INCH"
+msgstr "дюйм"
+
+msgid "IDS_COM_BODY_UNIT_CM"
+msgstr "см"
+
+msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB"
+msgstr "%d стр. на 1 листе"
+
+msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS"
+msgstr "Параметры принтера"
+
+msgid "IDS_PRT_BODY_PRINTER"
+msgstr "Принтер"
+
+msgid "IDS_PRT_BODY_PAPERSIZE"
+msgstr "Размер бумаги"
+
+msgid "IDS_PRT_BODY_NUMBEROFCOPIES"
+msgstr "Число копий"
+
+msgid "IDS_PRT_BODY_PRINT_RANGE_ABB"
+msgstr "Печать диапазона"
+
+msgid "IDS_PRT_BODY_COLOUR"
+msgstr "Цвет"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT"
+msgstr "Черновик"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD"
+msgstr "Стандартное"
+
+msgid "IDS_COM_BODY_HIGH"
+msgstr "Высокий"
+
+msgid "IDS_ST_BODY_NORMAL"
+msgstr "Обычный"
+
+msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING"
+msgstr "Ожидание печати..."
+
+msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING"
+msgstr "Подготовка к печати..."
+
+msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING"
+msgstr "Печать..."
+
+msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB"
+msgstr "Фотопечать"
+
+msgid "IDS_ST_BODY_GLOSSY"
+msgstr "Glossy"
+
+msgid "IDS_DIC_BODY_ALL"
+msgstr "Все"
+
+msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY"
+msgstr "Качество печати"
+
+msgid "IDS_IMGE_HEADER_GREY"
+msgstr "Серый"
+
+msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE"
+msgstr "Нет доступных принтеров"
+
+msgid "IDS_COM_BODY_NO_DEVICES"
+msgstr "Нет устройств"
+
+msgid "IDS_PRT_POP_PRINTING_CANCELED"
+msgstr "Печать отменена"
+
+msgid "IDS_COM_POP_MEMORY_FULL"
+msgstr "Память заполнена"
+
+msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING"
+msgstr "Поиск принтеров..."
+
+msgid "IDS_PRT_POP_CHECKPRINTERSTATE"
+msgstr "Проверить состояние принтера"
+
+msgid "IDS_ASEML_POP_SEARCH_FAILED"
+msgstr "Сбой поиска"
+
+msgid "IDS_PRT_POP_PRINTINGERROR"
+msgstr "Ошибка печати"
+
+msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED"
+msgstr "Wi-Fi откл."
+
+msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER"
+msgstr "Бумага"
+
+msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2"
+msgstr "Принтер отключен"
+
diff --git a/mobileprint/po/sk.po b/mobileprint/po/sk.po
new file mode 100644 (file)
index 0000000..be663bd
--- /dev/null
@@ -0,0 +1,171 @@
+msgid "IDS_COM_SK_HIDE"
+msgstr "Skryť"
+
+msgid "IDS_COM_SK_REFRESH"
+msgstr "Aktualizovať"
+
+msgid "IDS_COM_SK_CANCEL"
+msgstr "Zrušiť"
+
+msgid "IDS_IMGE_OPT_ROTATE"
+msgstr "Otočiť"
+
+msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR"
+msgstr "Systémová chyba"
+
+msgid "IDS_COM_SK_BACK"
+msgstr "Späť"
+
+msgid "IDS_COM_BODY_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_COM_SK_OK"
+msgstr "OK"
+
+msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE"
+msgstr "Nepodporovaný typ súboru"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Nie je podporované"
+
+msgid "IDS_BR_BODY_CURRENT_PAGE"
+msgstr "Aktuálna stránka"
+
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Tlačiareň je pripojená"
+
+msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT"
+msgstr "Pred tlačou sa pripojte na sieť Wi-Fi"
+
+msgid "IDS_PRT_BODY_SELECT_PRINTER"
+msgstr "Výber tlačiarne"
+
+msgid "IDS_PRT_SK_PRINT_PREVIEW"
+msgstr "Ukážka"
+
+msgid "IDS_SMPOS_SK3_PRINT"
+msgstr "Tlačiť"
+
+msgid "IDS_IMGE_BODY_SIZE"
+msgstr "Veľkosť"
+
+msgid "IDS_PRT_BODY_SCALING_ABB"
+msgstr "Zmena mierky"
+
+msgid "IDS_COM_BODY_SETTING"
+msgstr "Nastavenie"
+
+msgid "IDS_BT_OPT_FIT_TO_PAPER"
+msgstr "Prispôsobiť papieru"
+
+msgid "IDS_COM_SK_CUSTOM"
+msgstr "Vlastné"
+
+msgid "IDS_IMGE_BODY_WIDTH"
+msgstr "Šírka"
+
+msgid "IDS_IMGE_BODY_HEIGHT"
+msgstr "Výška"
+
+msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB"
+msgstr "Zachovať pomer strán"
+
+msgid "IDS_COM_BODY_UNIT_INCH"
+msgstr "palec"
+
+msgid "IDS_COM_BODY_UNIT_CM"
+msgstr "cm"
+
+msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB"
+msgstr "Strany na 1 hárok: %d"
+
+msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS"
+msgstr "Nastavenia tlačiarne"
+
+msgid "IDS_PRT_BODY_PRINTER"
+msgstr "Tlačiareň"
+
+msgid "IDS_PRT_BODY_PAPERSIZE"
+msgstr "Veľkosť papiera"
+
+msgid "IDS_PRT_BODY_NUMBEROFCOPIES"
+msgstr "Počet kópií"
+
+msgid "IDS_PRT_BODY_PRINT_RANGE_ABB"
+msgstr "Rozsah tlače"
+
+msgid "IDS_PRT_BODY_COLOUR"
+msgstr "Farba"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT"
+msgstr "Koncept"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD"
+msgstr "Štandard"
+
+msgid "IDS_COM_BODY_HIGH"
+msgstr "Vysoká"
+
+msgid "IDS_ST_BODY_NORMAL"
+msgstr "Normál."
+
+msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING"
+msgstr "Čaká sa na vytlačenie..."
+
+msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING"
+msgstr "Pripravuje sa tlač..."
+
+msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING"
+msgstr "Tlačí sa..."
+
+msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB"
+msgstr "Fotografický"
+
+msgid "IDS_ST_BODY_GLOSSY"
+msgstr "Glossy"
+
+msgid "IDS_DIC_BODY_ALL"
+msgstr "Všetko"
+
+msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY"
+msgstr "Kvalita tlače"
+
+msgid "IDS_IMGE_HEADER_GREY"
+msgstr "Sivá"
+
+msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE"
+msgstr "Žiadne dostupné tlačiarne"
+
+msgid "IDS_COM_BODY_NO_DEVICES"
+msgstr "Žiadne zariadenia"
+
+msgid "IDS_PRT_POP_PRINTING_CANCELED"
+msgstr "Tlač bola zrušená"
+
+msgid "IDS_COM_POP_MEMORY_FULL"
+msgstr "Pamäť plná"
+
+msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING"
+msgstr "Hľadajú sa tlačiarne..."
+
+msgid "IDS_PRT_POP_CHECKPRINTERSTATE"
+msgstr "Skontrolovať stav tlačiarne"
+
+msgid "IDS_ASEML_POP_SEARCH_FAILED"
+msgstr "Hľadanie zlyhalo"
+
+msgid "IDS_PRT_POP_PRINTINGERROR"
+msgstr "Chyba tlače"
+
+msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED"
+msgstr "Wi-Fi odpojené"
+
+msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER"
+msgstr "Papier"
+
+msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2"
+msgstr "Tlačiareň je odpojená"
+
diff --git a/mobileprint/po/sl.po b/mobileprint/po/sl.po
new file mode 100644 (file)
index 0000000..ffab290
--- /dev/null
@@ -0,0 +1,171 @@
+msgid "IDS_COM_SK_HIDE"
+msgstr "Skrij"
+
+msgid "IDS_COM_SK_REFRESH"
+msgstr "Osveži"
+
+msgid "IDS_COM_SK_CANCEL"
+msgstr "Prekliči"
+
+msgid "IDS_IMGE_OPT_ROTATE"
+msgstr "Obrni"
+
+msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR"
+msgstr "Sistemska napaka"
+
+msgid "IDS_COM_SK_BACK"
+msgstr "Nazaj"
+
+msgid "IDS_COM_BODY_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_COM_SK_OK"
+msgstr "V redu"
+
+msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE"
+msgstr "Nepodprta vrsta datoteke"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Ni podprto"
+
+msgid "IDS_BR_BODY_CURRENT_PAGE"
+msgstr "Trenutna stran"
+
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Tiskalnik je povezan"
+
+msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT"
+msgstr "Povežite se z omrežjem Wi-Fi, če želite tiskati"
+
+msgid "IDS_PRT_BODY_SELECT_PRINTER"
+msgstr "Izberi tiskalnik"
+
+msgid "IDS_PRT_SK_PRINT_PREVIEW"
+msgstr "Pre."
+
+msgid "IDS_SMPOS_SK3_PRINT"
+msgstr "Natisni"
+
+msgid "IDS_IMGE_BODY_SIZE"
+msgstr "Velikost"
+
+msgid "IDS_PRT_BODY_SCALING_ABB"
+msgstr "Prilagajanje velikosti"
+
+msgid "IDS_COM_BODY_SETTING"
+msgstr "Nastavitev"
+
+msgid "IDS_BT_OPT_FIT_TO_PAPER"
+msgstr "Prilagodi papirju"
+
+msgid "IDS_COM_SK_CUSTOM"
+msgstr "Po meri"
+
+msgid "IDS_IMGE_BODY_WIDTH"
+msgstr "Širina"
+
+msgid "IDS_IMGE_BODY_HEIGHT"
+msgstr "Višina"
+
+msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB"
+msgstr "Ohr. raz. višina/širina"
+
+msgid "IDS_COM_BODY_UNIT_INCH"
+msgstr "palec"
+
+msgid "IDS_COM_BODY_UNIT_CM"
+msgstr "cm"
+
+msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB"
+msgstr "%d strani na 1 list"
+
+msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS"
+msgstr "Nastavitve tiskalnika"
+
+msgid "IDS_PRT_BODY_PRINTER"
+msgstr "Tiskalnik"
+
+msgid "IDS_PRT_BODY_PAPERSIZE"
+msgstr "Velikost papirja"
+
+msgid "IDS_PRT_BODY_NUMBEROFCOPIES"
+msgstr "Število kopij"
+
+msgid "IDS_PRT_BODY_PRINT_RANGE_ABB"
+msgstr "Obseg tiskanja"
+
+msgid "IDS_PRT_BODY_COLOUR"
+msgstr "Barva"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT"
+msgstr "Osnutek"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD"
+msgstr "Standardno"
+
+msgid "IDS_COM_BODY_HIGH"
+msgstr "Visoka"
+
+msgid "IDS_ST_BODY_NORMAL"
+msgstr "Normalno"
+
+msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING"
+msgstr "Čakanje na tiskanje ..."
+
+msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING"
+msgstr "Priprava na tiskanje ..."
+
+msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING"
+msgstr "Tiskanje ..."
+
+msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB"
+msgstr "Fotografski"
+
+msgid "IDS_ST_BODY_GLOSSY"
+msgstr "Glossy"
+
+msgid "IDS_DIC_BODY_ALL"
+msgstr "Vse"
+
+msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY"
+msgstr "Kakovost tiskanja"
+
+msgid "IDS_IMGE_HEADER_GREY"
+msgstr "Siva"
+
+msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE"
+msgstr "Noben tiskalnik ni na voljo"
+
+msgid "IDS_COM_BODY_NO_DEVICES"
+msgstr "Ni naprav"
+
+msgid "IDS_PRT_POP_PRINTING_CANCELED"
+msgstr "Tiskanje je preklicano"
+
+msgid "IDS_COM_POP_MEMORY_FULL"
+msgstr "Pomnilnik je poln"
+
+msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING"
+msgstr "Iskanje tiskalnikov ..."
+
+msgid "IDS_PRT_POP_CHECKPRINTERSTATE"
+msgstr "Preverite stanje tiskalnika"
+
+msgid "IDS_ASEML_POP_SEARCH_FAILED"
+msgstr "Iskanje ni uspelo"
+
+msgid "IDS_PRT_POP_PRINTINGERROR"
+msgstr "Napaka pri tiskanju"
+
+msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED"
+msgstr "Wi-Fi prekinjen"
+
+msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER"
+msgstr "Papir"
+
+msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2"
+msgstr "Tiskalnik je odstranjen"
+
diff --git a/mobileprint/po/sr.po b/mobileprint/po/sr.po
new file mode 100644 (file)
index 0000000..37c8046
--- /dev/null
@@ -0,0 +1,171 @@
+msgid "IDS_COM_SK_HIDE"
+msgstr "Sakrij"
+
+msgid "IDS_COM_SK_REFRESH"
+msgstr "Osveži"
+
+msgid "IDS_COM_SK_CANCEL"
+msgstr "Poništi"
+
+msgid "IDS_IMGE_OPT_ROTATE"
+msgstr "Rotiraj"
+
+msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR"
+msgstr "Greška sistema"
+
+msgid "IDS_COM_SK_BACK"
+msgstr "Nazad"
+
+msgid "IDS_COM_BODY_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_COM_SK_OK"
+msgstr "OK"
+
+msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE"
+msgstr "Nepodržani tip fajla"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Nepodržano"
+
+msgid "IDS_BR_BODY_CURRENT_PAGE"
+msgstr "Trenutna strana"
+
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Štampač je priključen"
+
+msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT"
+msgstr "Poveži se na Wi-Fi mrežu radi štampanja"
+
+msgid "IDS_PRT_BODY_SELECT_PRINTER"
+msgstr "Izaberi štampač"
+
+msgid "IDS_PRT_SK_PRINT_PREVIEW"
+msgstr "Pregled"
+
+msgid "IDS_SMPOS_SK3_PRINT"
+msgstr "štampaj"
+
+msgid "IDS_IMGE_BODY_SIZE"
+msgstr "Veličina"
+
+msgid "IDS_PRT_BODY_SCALING_ABB"
+msgstr "Podešavanje razmere"
+
+msgid "IDS_COM_BODY_SETTING"
+msgstr "Podešavanja"
+
+msgid "IDS_BT_OPT_FIT_TO_PAPER"
+msgstr "Podesi prema papiru"
+
+msgid "IDS_COM_SK_CUSTOM"
+msgstr "Prilagođ."
+
+msgid "IDS_IMGE_BODY_WIDTH"
+msgstr "Širina"
+
+msgid "IDS_IMGE_BODY_HEIGHT"
+msgstr "Visina"
+
+msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB"
+msgstr "Održi razmeru"
+
+msgid "IDS_COM_BODY_UNIT_INCH"
+msgstr "inča"
+
+msgid "IDS_COM_BODY_UNIT_CM"
+msgstr "cm"
+
+msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB"
+msgstr "%d strana na 1 listu"
+
+msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS"
+msgstr "Podešavanje štampača"
+
+msgid "IDS_PRT_BODY_PRINTER"
+msgstr "Štampač"
+
+msgid "IDS_PRT_BODY_PAPERSIZE"
+msgstr "Veličina papira"
+
+msgid "IDS_PRT_BODY_NUMBEROFCOPIES"
+msgstr "Broj kopija"
+
+msgid "IDS_PRT_BODY_PRINT_RANGE_ABB"
+msgstr "Opseg štampanja"
+
+msgid "IDS_PRT_BODY_COLOUR"
+msgstr "Boja"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT"
+msgstr "Skice"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD"
+msgstr "Standardni"
+
+msgid "IDS_COM_BODY_HIGH"
+msgstr "Visok"
+
+msgid "IDS_ST_BODY_NORMAL"
+msgstr "Normalan"
+
+msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING"
+msgstr "Čeka se štampanje"
+
+msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING"
+msgstr "Priprema štampanja..."
+
+msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING"
+msgstr "Štampanje..."
+
+msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB"
+msgstr "Fotografski"
+
+msgid "IDS_ST_BODY_GLOSSY"
+msgstr "Glossy"
+
+msgid "IDS_DIC_BODY_ALL"
+msgstr "Sve"
+
+msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY"
+msgstr "Kvalitet štampe"
+
+msgid "IDS_IMGE_HEADER_GREY"
+msgstr "Siva skala"
+
+msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE"
+msgstr "Štampači nisu dostupni"
+
+msgid "IDS_COM_BODY_NO_DEVICES"
+msgstr "Nema uređaja"
+
+msgid "IDS_PRT_POP_PRINTING_CANCELED"
+msgstr "Štampanje otkazano"
+
+msgid "IDS_COM_POP_MEMORY_FULL"
+msgstr "Memorija puna"
+
+msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING"
+msgstr "Traženje štampača..."
+
+msgid "IDS_PRT_POP_CHECKPRINTERSTATE"
+msgstr "Proveri stanje štampača"
+
+msgid "IDS_ASEML_POP_SEARCH_FAILED"
+msgstr "Pretraga neuspešna"
+
+msgid "IDS_PRT_POP_PRINTINGERROR"
+msgstr "Greška štampanja"
+
+msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED"
+msgstr "Wi-Fi otkačen"
+
+msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER"
+msgstr "Papir"
+
+msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2"
+msgstr "Štampač otkačen"
+
diff --git a/mobileprint/po/sv.po b/mobileprint/po/sv.po
new file mode 100644 (file)
index 0000000..bd84779
--- /dev/null
@@ -0,0 +1,171 @@
+msgid "IDS_COM_SK_HIDE"
+msgstr "Dölj"
+
+msgid "IDS_COM_SK_REFRESH"
+msgstr "Uppdatera"
+
+msgid "IDS_COM_SK_CANCEL"
+msgstr "Avbryt"
+
+msgid "IDS_IMGE_OPT_ROTATE"
+msgstr "Rotera"
+
+msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR"
+msgstr "Systemfel"
+
+msgid "IDS_COM_SK_BACK"
+msgstr "Åter"
+
+msgid "IDS_COM_BODY_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_COM_SK_OK"
+msgstr "OK"
+
+msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE"
+msgstr "Filtypen stöds inte"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Stöds inte"
+
+msgid "IDS_BR_BODY_CURRENT_PAGE"
+msgstr "Denna sida"
+
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Skrivare ansluten"
+
+msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT"
+msgstr "Kunde inte ansluta till Wi-Fi för att skriva ut"
+
+msgid "IDS_PRT_BODY_SELECT_PRINTER"
+msgstr "Välj skrivare"
+
+msgid "IDS_PRT_SK_PRINT_PREVIEW"
+msgstr "Förhandsg"
+
+msgid "IDS_SMPOS_SK3_PRINT"
+msgstr "Skriv ut"
+
+msgid "IDS_IMGE_BODY_SIZE"
+msgstr "Storlek"
+
+msgid "IDS_PRT_BODY_SCALING_ABB"
+msgstr "Skalar"
+
+msgid "IDS_COM_BODY_SETTING"
+msgstr "Inställning"
+
+msgid "IDS_BT_OPT_FIT_TO_PAPER"
+msgstr "Anpassa efter papper"
+
+msgid "IDS_COM_SK_CUSTOM"
+msgstr "Anpassat"
+
+msgid "IDS_IMGE_BODY_WIDTH"
+msgstr "Bredd"
+
+msgid "IDS_IMGE_BODY_HEIGHT"
+msgstr "Höjd"
+
+msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB"
+msgstr "Behåll bildförhållande"
+
+msgid "IDS_COM_BODY_UNIT_INCH"
+msgstr "tum"
+
+msgid "IDS_COM_BODY_UNIT_CM"
+msgstr "cm"
+
+msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB"
+msgstr "%d sidor per ark"
+
+msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS"
+msgstr "Skrivarinställningar"
+
+msgid "IDS_PRT_BODY_PRINTER"
+msgstr "Skrivare"
+
+msgid "IDS_PRT_BODY_PAPERSIZE"
+msgstr "Pappersstorlek"
+
+msgid "IDS_PRT_BODY_NUMBEROFCOPIES"
+msgstr "Antal kopior"
+
+msgid "IDS_PRT_BODY_PRINT_RANGE_ABB"
+msgstr "Utskriftsintervall"
+
+msgid "IDS_PRT_BODY_COLOUR"
+msgstr "Färg"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT"
+msgstr "Utkast"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD"
+msgstr "Standard"
+
+msgid "IDS_COM_BODY_HIGH"
+msgstr "Hög"
+
+msgid "IDS_ST_BODY_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING"
+msgstr "Väntar på utskrift..."
+
+msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING"
+msgstr "Förbereder utskrift..."
+
+msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING"
+msgstr "Skriver ut..."
+
+msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB"
+msgstr "Fotografi"
+
+msgid "IDS_ST_BODY_GLOSSY"
+msgstr "Glossy"
+
+msgid "IDS_DIC_BODY_ALL"
+msgstr "Allt"
+
+msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY"
+msgstr "Utskriftskvalitet"
+
+msgid "IDS_IMGE_HEADER_GREY"
+msgstr "Gråskala"
+
+msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE"
+msgstr "Inga tillgängliga skrivare"
+
+msgid "IDS_COM_BODY_NO_DEVICES"
+msgstr "Inga enheter"
+
+msgid "IDS_PRT_POP_PRINTING_CANCELED"
+msgstr "Utskriften avbruten"
+
+msgid "IDS_COM_POP_MEMORY_FULL"
+msgstr "Minnet fullt"
+
+msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING"
+msgstr "Söker efter skrivare..."
+
+msgid "IDS_PRT_POP_CHECKPRINTERSTATE"
+msgstr "Kontrollera skrivarstatus"
+
+msgid "IDS_ASEML_POP_SEARCH_FAILED"
+msgstr "Sökningen misslyckades"
+
+msgid "IDS_PRT_POP_PRINTINGERROR"
+msgstr "Utskriftsfel"
+
+msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED"
+msgstr "Wi-Fi har kopplats från"
+
+msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER"
+msgstr "Papper"
+
+msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2"
+msgstr "Skrivare frånkopplad"
+
diff --git a/mobileprint/po/tr_TR.po b/mobileprint/po/tr_TR.po
new file mode 100644 (file)
index 0000000..73a74ff
--- /dev/null
@@ -0,0 +1,171 @@
+msgid "IDS_COM_SK_HIDE"
+msgstr "Gizle"
+
+msgid "IDS_COM_SK_REFRESH"
+msgstr "Yenile"
+
+msgid "IDS_COM_SK_CANCEL"
+msgstr "İptal"
+
+msgid "IDS_IMGE_OPT_ROTATE"
+msgstr "Döndür"
+
+msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR"
+msgstr "Sistem hatası"
+
+msgid "IDS_COM_SK_BACK"
+msgstr "Geri"
+
+msgid "IDS_COM_BODY_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_COM_SK_OK"
+msgstr "Tamam"
+
+msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE"
+msgstr "Desteklenmeyen dosya türü"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Desteklenmiyor"
+
+msgid "IDS_BR_BODY_CURRENT_PAGE"
+msgstr "Geçerli sayfa"
+
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Yazıcı bağlı"
+
+msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT"
+msgstr "Yazdırmak için Wi-Fi ağına bağlan"
+
+msgid "IDS_PRT_BODY_SELECT_PRINTER"
+msgstr "Yazıcı seç"
+
+msgid "IDS_PRT_SK_PRINT_PREVIEW"
+msgstr "Önizleme"
+
+msgid "IDS_SMPOS_SK3_PRINT"
+msgstr "Yazdır"
+
+msgid "IDS_IMGE_BODY_SIZE"
+msgstr "Boyut"
+
+msgid "IDS_PRT_BODY_SCALING_ABB"
+msgstr "Ölçekleme"
+
+msgid "IDS_COM_BODY_SETTING"
+msgstr "Ayarlama"
+
+msgid "IDS_BT_OPT_FIT_TO_PAPER"
+msgstr "Kağıda sığdır"
+
+msgid "IDS_COM_SK_CUSTOM"
+msgstr "Özel"
+
+msgid "IDS_IMGE_BODY_WIDTH"
+msgstr "Genişlik"
+
+msgid "IDS_IMGE_BODY_HEIGHT"
+msgstr "Yükseklik"
+
+msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB"
+msgstr "En-boy oranını koru"
+
+msgid "IDS_COM_BODY_UNIT_INCH"
+msgstr "inç"
+
+msgid "IDS_COM_BODY_UNIT_CM"
+msgstr "cm"
+
+msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB"
+msgstr "1 kağıtta %d sayfa"
+
+msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS"
+msgstr "Yazıcı ayarları"
+
+msgid "IDS_PRT_BODY_PRINTER"
+msgstr "Yazıcı"
+
+msgid "IDS_PRT_BODY_PAPERSIZE"
+msgstr "Kağıt boyutu"
+
+msgid "IDS_PRT_BODY_NUMBEROFCOPIES"
+msgstr "Kopya sayısı"
+
+msgid "IDS_PRT_BODY_PRINT_RANGE_ABB"
+msgstr "Yazdırma aralığı"
+
+msgid "IDS_PRT_BODY_COLOUR"
+msgstr "Renkli"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT"
+msgstr "Taslak"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD"
+msgstr "Standart"
+
+msgid "IDS_COM_BODY_HIGH"
+msgstr "Yüksek"
+
+msgid "IDS_ST_BODY_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING"
+msgstr "Yazdırma bekleniyor..."
+
+msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING"
+msgstr "Yazdırmaya hazırlanıyor..."
+
+msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING"
+msgstr "Yazdırılıyor..."
+
+msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB"
+msgstr "Fotoğrafik"
+
+msgid "IDS_ST_BODY_GLOSSY"
+msgstr "Parlak"
+
+msgid "IDS_DIC_BODY_ALL"
+msgstr "Hepsi"
+
+msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY"
+msgstr "Baskı kalitesi"
+
+msgid "IDS_IMGE_HEADER_GREY"
+msgstr "Gri"
+
+msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE"
+msgstr "Kullanılabilir yazıcı yok"
+
+msgid "IDS_COM_BODY_NO_DEVICES"
+msgstr "Cihaz yok"
+
+msgid "IDS_PRT_POP_PRINTING_CANCELED"
+msgstr "Yazdırma iptal edildi"
+
+msgid "IDS_COM_POP_MEMORY_FULL"
+msgstr "Bellek dolu"
+
+msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING"
+msgstr "Yazıcılar aranıyor..."
+
+msgid "IDS_PRT_POP_CHECKPRINTERSTATE"
+msgstr "Yazıcı durumunu denetle"
+
+msgid "IDS_ASEML_POP_SEARCH_FAILED"
+msgstr "Arama başarısız"
+
+msgid "IDS_PRT_POP_PRINTINGERROR"
+msgstr "Yazdırma hatası"
+
+msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED"
+msgstr "Wi-Fi bağlantısı koparıldı"
+
+msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER"
+msgstr "Kağıt"
+
+msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2"
+msgstr "Yazıcı bağlantısı kesildi"
+
diff --git a/mobileprint/po/uk.po b/mobileprint/po/uk.po
new file mode 100644 (file)
index 0000000..59b0088
--- /dev/null
@@ -0,0 +1,171 @@
+msgid "IDS_COM_SK_HIDE"
+msgstr "Приховати"
+
+msgid "IDS_COM_SK_REFRESH"
+msgstr "Оновити"
+
+msgid "IDS_COM_SK_CANCEL"
+msgstr "Скасувати"
+
+msgid "IDS_IMGE_OPT_ROTATE"
+msgstr "Обернути"
+
+msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR"
+msgstr "Помилка системи"
+
+msgid "IDS_COM_SK_BACK"
+msgstr "Назад"
+
+msgid "IDS_COM_BODY_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_COM_SK_OK"
+msgstr "ОК"
+
+msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE"
+msgstr "Формат не підтримується"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Не підтримується"
+
+msgid "IDS_BR_BODY_CURRENT_PAGE"
+msgstr "Поточна сторінка"
+
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Принтер підключено"
+
+msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT"
+msgstr "Підключення до мережі Wi-Fi для друку"
+
+msgid "IDS_PRT_BODY_SELECT_PRINTER"
+msgstr "Вибір принтера"
+
+msgid "IDS_PRT_SK_PRINT_PREVIEW"
+msgstr "Перегл."
+
+msgid "IDS_SMPOS_SK3_PRINT"
+msgstr "Друкувати"
+
+msgid "IDS_IMGE_BODY_SIZE"
+msgstr "Розмір"
+
+msgid "IDS_PRT_BODY_SCALING_ABB"
+msgstr "Масштабування"
+
+msgid "IDS_COM_BODY_SETTING"
+msgstr "Установка"
+
+msgid "IDS_BT_OPT_FIT_TO_PAPER"
+msgstr "За розміром паперу"
+
+msgid "IDS_COM_SK_CUSTOM"
+msgstr "Признач."
+
+msgid "IDS_IMGE_BODY_WIDTH"
+msgstr "По ширині"
+
+msgid "IDS_IMGE_BODY_HEIGHT"
+msgstr "По висоті"
+
+msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB"
+msgstr "Зберег. співвідн. сторін"
+
+msgid "IDS_COM_BODY_UNIT_INCH"
+msgstr "дюйм"
+
+msgid "IDS_COM_BODY_UNIT_CM"
+msgstr "см"
+
+msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB"
+msgstr "Стор. на 1 аркуші: %d"
+
+msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS"
+msgstr "Установки принтера"
+
+msgid "IDS_PRT_BODY_PRINTER"
+msgstr "Принтер"
+
+msgid "IDS_PRT_BODY_PAPERSIZE"
+msgstr "Розмір паперу"
+
+msgid "IDS_PRT_BODY_NUMBEROFCOPIES"
+msgstr "Кількість копій"
+
+msgid "IDS_PRT_BODY_PRINT_RANGE_ABB"
+msgstr "Діапазон друку"
+
+msgid "IDS_PRT_BODY_COLOUR"
+msgstr "Колір"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT"
+msgstr "Чернетка"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD"
+msgstr "Стандартний"
+
+msgid "IDS_COM_BODY_HIGH"
+msgstr "Високий"
+
+msgid "IDS_ST_BODY_NORMAL"
+msgstr "Звичайний"
+
+msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING"
+msgstr "Очікування друку..."
+
+msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING"
+msgstr "Підготовка до друку..."
+
+msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING"
+msgstr "Друк..."
+
+msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB"
+msgstr "Фотографічний"
+
+msgid "IDS_ST_BODY_GLOSSY"
+msgstr "Glossy"
+
+msgid "IDS_DIC_BODY_ALL"
+msgstr "Всі"
+
+msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY"
+msgstr "Якість друку"
+
+msgid "IDS_IMGE_HEADER_GREY"
+msgstr "Сірий"
+
+msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE"
+msgstr "Немає доступних принтерів"
+
+msgid "IDS_COM_BODY_NO_DEVICES"
+msgstr "Немає пристроїв"
+
+msgid "IDS_PRT_POP_PRINTING_CANCELED"
+msgstr "Друк скасовано"
+
+msgid "IDS_COM_POP_MEMORY_FULL"
+msgstr "Пам'ять заповнено"
+
+msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING"
+msgstr "Пошук принтерів..."
+
+msgid "IDS_PRT_POP_CHECKPRINTERSTATE"
+msgstr "Перевірте стан принтера"
+
+msgid "IDS_ASEML_POP_SEARCH_FAILED"
+msgstr "Збій пошуку"
+
+msgid "IDS_PRT_POP_PRINTINGERROR"
+msgstr "Помилка друку"
+
+msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED"
+msgstr "Wi-Fi відключено"
+
+msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER"
+msgstr "Папір"
+
+msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2"
+msgstr "Принтер відключено"
+
diff --git a/mobileprint/po/update-po.sh b/mobileprint/po/update-po.sh
new file mode 100755 (executable)
index 0000000..b79157d
--- /dev/null
@@ -0,0 +1,59 @@
+#!/bin/sh
+
+PACKAGE=mobileprint
+SRCROOT=..
+POTFILES=POTFILES.in
+
+ALL_LINGUAS="ar da en_US fi hi it_IT lt pl sk uk zh_TW az de_DE es_ES fr_CA hr ja_JP lv pt_BR sl uz bg el_GR es_US fr_FR hu ka mk pt_PT sr zh_CN ca en et ga hy kk nb ro sv zh_HK cs en_PH eu gl is ko_KR nl_NL ru_RU tr_TR zh_SG"
+
+XGETTEXT=/usr/bin/xgettext
+MSGMERGE=/usr/bin/msgmerge
+
+echo -n "Make ${PACKAGE}.pot  "
+if [ ! -e $POTFILES ] ; then
+   echo "$POTFILES not found"
+   exit 1
+fi
+
+$XGETTEXT --default-domain=${PACKAGE} --directory=${SRCROOT} \
+      --keyword=_ --keyword=N_ --files-from=$POTFILES
+if [ $? -ne 0 ]; then
+   echo "xgettext error"
+   exit 1
+fi
+
+if [ ! -f ${PACKAGE}.po ]; then
+   echo "No such file: ${PACKAGE}.po"
+   exit 1
+fi
+
+rm -f ${PACKAGE}.pot && mv ${PACKAGE}.po ${PACKAGE}.pot
+echo "done"
+
+for LANG in $ALL_LINGUAS; do
+   echo "$LANG : "
+
+   if [ ! -e $LANG.po ] ; then
+      sed 's/CHARSET/UTF-8/g' ${PACKAGE}.pot > ${LANG}.po
+      echo "${LANG}.po created"
+   else
+      if $MSGMERGE ${LANG}.po ${PACKAGE}.pot -o ${LANG}.new.po ; then
+         if cmp ${LANG}.po ${LANG}.new.po > /dev/null 2>&1; then
+            rm -f ${LANG}.new.po
+         else
+            if mv -f ${LANG}.new.po ${LANG}.po; then
+               echo ""
+            else
+               echo "msgmerge for $LANG.po failed: cannot move $LANG.new.po to $LANG.po" 1>&2
+               rm -f ${LANG}.new.po
+               exit 1
+            fi
+         fi
+      else
+         echo "msgmerge for $LANG failed!"
+         rm -f ${LANG}.new.po
+      fi
+   fi
+   echo ""
+done
+
diff --git a/mobileprint/po/uz.po b/mobileprint/po/uz.po
new file mode 100644 (file)
index 0000000..6682f5a
--- /dev/null
@@ -0,0 +1,171 @@
+msgid "IDS_COM_SK_HIDE"
+msgstr "Yashirish"
+
+msgid "IDS_COM_SK_REFRESH"
+msgstr "Yangilash"
+
+msgid "IDS_COM_SK_CANCEL"
+msgstr "Bekor q."
+
+msgid "IDS_IMGE_OPT_ROTATE"
+msgstr "Aylantirish"
+
+msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR"
+msgstr "Tizim xatosi"
+
+msgid "IDS_COM_SK_BACK"
+msgstr "Orqaga"
+
+msgid "IDS_COM_BODY_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_COM_SK_OK"
+msgstr "OK"
+
+msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE"
+msgstr "Qo‘llab-quvvatlanmaydigan fayl turi"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Qo‘llab-quvvatlanmaydigan"
+
+msgid "IDS_BR_BODY_CURRENT_PAGE"
+msgstr "Joriy sahifa"
+
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Printer ulandi"
+
+msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT"
+msgstr "Chop etish uchun Wi-Fi tarmoqqa ulanish"
+
+msgid "IDS_PRT_BODY_SELECT_PRINTER"
+msgstr "Printerni tanlash"
+
+msgid "IDS_PRT_SK_PRINT_PREVIEW"
+msgstr "Dast. k/c"
+
+msgid "IDS_SMPOS_SK3_PRINT"
+msgstr "Chop etish"
+
+msgid "IDS_IMGE_BODY_SIZE"
+msgstr "O‘lcham"
+
+msgid "IDS_PRT_BODY_SCALING_ABB"
+msgstr "Masshtab tanlash"
+
+msgid "IDS_COM_BODY_SETTING"
+msgstr "Parametr"
+
+msgid "IDS_BT_OPT_FIT_TO_PAPER"
+msgstr "Qog‘ozga moslash"
+
+msgid "IDS_COM_SK_CUSTOM"
+msgstr "Maxsus"
+
+msgid "IDS_IMGE_BODY_WIDTH"
+msgstr "Kenglik"
+
+msgid "IDS_IMGE_BODY_HEIGHT"
+msgstr "Balandlik"
+
+msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB"
+msgstr "Proporsiyani saqlash"
+
+msgid "IDS_COM_BODY_UNIT_INCH"
+msgstr "dyum"
+
+msgid "IDS_COM_BODY_UNIT_CM"
+msgstr "sm"
+
+msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB"
+msgstr "1 betda %dta sahifa"
+
+msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS"
+msgstr "Printer parametrlari"
+
+msgid "IDS_PRT_BODY_PRINTER"
+msgstr "Printer"
+
+msgid "IDS_PRT_BODY_PAPERSIZE"
+msgstr "Qog‘oz o‘lchami"
+
+msgid "IDS_PRT_BODY_NUMBEROFCOPIES"
+msgstr "Nusxalar soni"
+
+msgid "IDS_PRT_BODY_PRINT_RANGE_ABB"
+msgstr "Chop etish diapazoni"
+
+msgid "IDS_PRT_BODY_COLOUR"
+msgstr "Rang"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT"
+msgstr "Qoralama"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD"
+msgstr "Standart"
+
+msgid "IDS_COM_BODY_HIGH"
+msgstr "Yuqori"
+
+msgid "IDS_ST_BODY_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING"
+msgstr "Chop etilyapti…"
+
+msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING"
+msgstr "Chop etishga tayyorlanmoqda..."
+
+msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING"
+msgstr "Chop etmoqda..."
+
+msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB"
+msgstr "Fotografik"
+
+msgid "IDS_ST_BODY_GLOSSY"
+msgstr "Yaltiroq"
+
+msgid "IDS_DIC_BODY_ALL"
+msgstr "Barchasi"
+
+msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY"
+msgstr "Chop etish sifati"
+
+msgid "IDS_IMGE_HEADER_GREY"
+msgstr "Kul rang"
+
+msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE"
+msgstr "Birorta ham printer mavjud emas"
+
+msgid "IDS_COM_BODY_NO_DEVICES"
+msgstr "Qurilmalar yo‘q"
+
+msgid "IDS_PRT_POP_PRINTING_CANCELED"
+msgstr "Chop etish bekor qilindi"
+
+msgid "IDS_COM_POP_MEMORY_FULL"
+msgstr "Xotira to‘la"
+
+msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING"
+msgstr "Printerlar qidirilmoqda..."
+
+msgid "IDS_PRT_POP_CHECKPRINTERSTATE"
+msgstr "Printer holatini tekshirish"
+
+msgid "IDS_ASEML_POP_SEARCH_FAILED"
+msgstr "Qidirish bajarilmadi"
+
+msgid "IDS_PRT_POP_PRINTINGERROR"
+msgstr "Chop etishdagi xato"
+
+msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED"
+msgstr "Wi-Fi uzilgan"
+
+msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER"
+msgstr "Qog‘oz"
+
+msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2"
+msgstr "Printer chiqarib olindi"
+
diff --git a/mobileprint/po/zh_CN.po b/mobileprint/po/zh_CN.po
new file mode 100644 (file)
index 0000000..6ebce12
--- /dev/null
@@ -0,0 +1,171 @@
+msgid "IDS_COM_SK_HIDE"
+msgstr "隐藏"
+
+msgid "IDS_COM_SK_REFRESH"
+msgstr "刷新"
+
+msgid "IDS_COM_SK_CANCEL"
+msgstr "取消"
+
+msgid "IDS_IMGE_OPT_ROTATE"
+msgstr "旋转"
+
+msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR"
+msgstr "系统出错"
+
+msgid "IDS_COM_SK_BACK"
+msgstr "返回"
+
+msgid "IDS_COM_BODY_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_COM_SK_OK"
+msgstr "确定"
+
+msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE"
+msgstr "不支持的文件类型"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi直连"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "不支持"
+
+msgid "IDS_BR_BODY_CURRENT_PAGE"
+msgstr "当前页面"
+
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "打印机已连接"
+
+msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT"
+msgstr "连接Wi-Fi网络以打印"
+
+msgid "IDS_PRT_BODY_SELECT_PRINTER"
+msgstr "选择打印机"
+
+msgid "IDS_PRT_SK_PRINT_PREVIEW"
+msgstr "预览"
+
+msgid "IDS_SMPOS_SK3_PRINT"
+msgstr "打印"
+
+msgid "IDS_IMGE_BODY_SIZE"
+msgstr "大小"
+
+msgid "IDS_PRT_BODY_SCALING_ABB"
+msgstr "缩放比例"
+
+msgid "IDS_COM_BODY_SETTING"
+msgstr "设定"
+
+msgid "IDS_BT_OPT_FIT_TO_PAPER"
+msgstr "符合纸张大小"
+
+msgid "IDS_COM_SK_CUSTOM"
+msgstr "自定义"
+
+msgid "IDS_IMGE_BODY_WIDTH"
+msgstr "宽"
+
+msgid "IDS_IMGE_BODY_HEIGHT"
+msgstr "高"
+
+msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB"
+msgstr "保持宽高比"
+
+msgid "IDS_COM_BODY_UNIT_INCH"
+msgstr "英寸"
+
+msgid "IDS_COM_BODY_UNIT_CM"
+msgstr "厘米"
+
+msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB"
+msgstr "1 张上 %d 页"
+
+msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS"
+msgstr "打印机设置"
+
+msgid "IDS_PRT_BODY_PRINTER"
+msgstr "打印机"
+
+msgid "IDS_PRT_BODY_PAPERSIZE"
+msgstr "纸张尺寸"
+
+msgid "IDS_PRT_BODY_NUMBEROFCOPIES"
+msgstr "拷贝份数"
+
+msgid "IDS_PRT_BODY_PRINT_RANGE_ABB"
+msgstr "打印范围"
+
+msgid "IDS_PRT_BODY_COLOUR"
+msgstr "颜色"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT"
+msgstr "草稿"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD"
+msgstr "标准"
+
+msgid "IDS_COM_BODY_HIGH"
+msgstr "高"
+
+msgid "IDS_ST_BODY_NORMAL"
+msgstr "正常"
+
+msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING"
+msgstr "正在等待打印…"
+
+msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING"
+msgstr "准备打印…"
+
+msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING"
+msgstr "打印中..."
+
+msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB"
+msgstr "摄影"
+
+msgid "IDS_ST_BODY_GLOSSY"
+msgstr "平滑"
+
+msgid "IDS_DIC_BODY_ALL"
+msgstr "全部"
+
+msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY"
+msgstr "打印质量"
+
+msgid "IDS_IMGE_HEADER_GREY"
+msgstr "灰色"
+
+msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE"
+msgstr "无可用打印机"
+
+msgid "IDS_COM_BODY_NO_DEVICES"
+msgstr "没有设备"
+
+msgid "IDS_PRT_POP_PRINTING_CANCELED"
+msgstr "打印已取消"
+
+msgid "IDS_COM_POP_MEMORY_FULL"
+msgstr "内存已满"
+
+msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING"
+msgstr "正在搜索打印机…"
+
+msgid "IDS_PRT_POP_CHECKPRINTERSTATE"
+msgstr "检查打印机状态"
+
+msgid "IDS_ASEML_POP_SEARCH_FAILED"
+msgstr "搜索失败"
+
+msgid "IDS_PRT_POP_PRINTINGERROR"
+msgstr "打印故障"
+
+msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED"
+msgstr "Wi-Fi已断开"
+
+msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER"
+msgstr "纸"
+
+msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2"
+msgstr "打印机已断开"
+
diff --git a/mobileprint/po/zh_HK.po b/mobileprint/po/zh_HK.po
new file mode 100644 (file)
index 0000000..55e3a77
--- /dev/null
@@ -0,0 +1,171 @@
+msgid "IDS_COM_SK_HIDE"
+msgstr "隱藏"
+
+msgid "IDS_COM_SK_REFRESH"
+msgstr "重新整理"
+
+msgid "IDS_COM_SK_CANCEL"
+msgstr "取消"
+
+msgid "IDS_IMGE_OPT_ROTATE"
+msgstr "旋轉"
+
+msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR"
+msgstr "系統錯誤"
+
+msgid "IDS_COM_SK_BACK"
+msgstr "返回"
+
+msgid "IDS_COM_BODY_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_COM_SK_OK"
+msgstr "確定"
+
+msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE"
+msgstr "不支援的檔案類型"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "不支援"
+
+msgid "IDS_BR_BODY_CURRENT_PAGE"
+msgstr "目前頁面"
+
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "打印機已連接"
+
+msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT"
+msgstr "連接到 Wi-Fi 網絡以打印"
+
+msgid "IDS_PRT_BODY_SELECT_PRINTER"
+msgstr "選擇打印機"
+
+msgid "IDS_PRT_SK_PRINT_PREVIEW"
+msgstr "預覽"
+
+msgid "IDS_SMPOS_SK3_PRINT"
+msgstr "列印"
+
+msgid "IDS_IMGE_BODY_SIZE"
+msgstr "大小"
+
+msgid "IDS_PRT_BODY_SCALING_ABB"
+msgstr "縮放比例"
+
+msgid "IDS_COM_BODY_SETTING"
+msgstr "設定"
+
+msgid "IDS_BT_OPT_FIT_TO_PAPER"
+msgstr "符合紙張大小"
+
+msgid "IDS_COM_SK_CUSTOM"
+msgstr "自訂"
+
+msgid "IDS_IMGE_BODY_WIDTH"
+msgstr "闊度"
+
+msgid "IDS_IMGE_BODY_HEIGHT"
+msgstr "高度"
+
+msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB"
+msgstr "保持長寬比"
+
+msgid "IDS_COM_BODY_UNIT_INCH"
+msgstr "英寸"
+
+msgid "IDS_COM_BODY_UNIT_CM"
+msgstr "厘米"
+
+msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB"
+msgstr "1 張上有 %d 頁"
+
+msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS"
+msgstr "打印機設定"
+
+msgid "IDS_PRT_BODY_PRINTER"
+msgstr "打印機"
+
+msgid "IDS_PRT_BODY_PAPERSIZE"
+msgstr "紙張大小"
+
+msgid "IDS_PRT_BODY_NUMBEROFCOPIES"
+msgstr "列印份數"
+
+msgid "IDS_PRT_BODY_PRINT_RANGE_ABB"
+msgstr "列印範圍"
+
+msgid "IDS_PRT_BODY_COLOUR"
+msgstr "顏色"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT"
+msgstr "草稿"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD"
+msgstr "標準"
+
+msgid "IDS_COM_BODY_HIGH"
+msgstr "高"
+
+msgid "IDS_ST_BODY_NORMAL"
+msgstr "正常"
+
+msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING"
+msgstr "正在等待列印…"
+
+msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING"
+msgstr "正在準備列印..."
+
+msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING"
+msgstr "正在列印..."
+
+msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB"
+msgstr "攝影"
+
+msgid "IDS_ST_BODY_GLOSSY"
+msgstr "Glossy"
+
+msgid "IDS_DIC_BODY_ALL"
+msgstr "全部"
+
+msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY"
+msgstr "列印質素"
+
+msgid "IDS_IMGE_HEADER_GREY"
+msgstr "灰色"
+
+msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE"
+msgstr "無可用的打印機"
+
+msgid "IDS_COM_BODY_NO_DEVICES"
+msgstr "無裝置"
+
+msgid "IDS_PRT_POP_PRINTING_CANCELED"
+msgstr "已取消列印"
+
+msgid "IDS_COM_POP_MEMORY_FULL"
+msgstr "記憶體已滿"
+
+msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING"
+msgstr "正在搜尋打印機..."
+
+msgid "IDS_PRT_POP_CHECKPRINTERSTATE"
+msgstr "檢查打印機狀態"
+
+msgid "IDS_ASEML_POP_SEARCH_FAILED"
+msgstr "搜尋失敗"
+
+msgid "IDS_PRT_POP_PRINTINGERROR"
+msgstr "列印錯誤"
+
+msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED"
+msgstr "Wi-Fi已中斷連接"
+
+msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER"
+msgstr "紙張"
+
+msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2"
+msgstr "打印機已中斷連接"
+
diff --git a/mobileprint/po/zh_SG.po b/mobileprint/po/zh_SG.po
new file mode 100644 (file)
index 0000000..e642542
--- /dev/null
@@ -0,0 +1,171 @@
+msgid "IDS_COM_SK_HIDE"
+msgstr "隐藏"
+
+msgid "IDS_COM_SK_REFRESH"
+msgstr "重新显示"
+
+msgid "IDS_COM_SK_CANCEL"
+msgstr "取消"
+
+msgid "IDS_IMGE_OPT_ROTATE"
+msgstr "旋转"
+
+msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR"
+msgstr "系统出错"
+
+msgid "IDS_COM_SK_BACK"
+msgstr "返回"
+
+msgid "IDS_COM_BODY_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_COM_SK_OK"
+msgstr "确认"
+
+msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE"
+msgstr "不支持的文件类型"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "直接Wi-Fi"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "不支持"
+
+msgid "IDS_BR_BODY_CURRENT_PAGE"
+msgstr "当前页面"
+
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "打印机已连接"
+
+msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT"
+msgstr "连接Wi-Fi网络以打印"
+
+msgid "IDS_PRT_BODY_SELECT_PRINTER"
+msgstr "选择打印机"
+
+msgid "IDS_PRT_SK_PRINT_PREVIEW"
+msgstr "预览"
+
+msgid "IDS_SMPOS_SK3_PRINT"
+msgstr "打印"
+
+msgid "IDS_IMGE_BODY_SIZE"
+msgstr "大小"
+
+msgid "IDS_PRT_BODY_SCALING_ABB"
+msgstr "缩放比例"
+
+msgid "IDS_COM_BODY_SETTING"
+msgstr "设定"
+
+msgid "IDS_BT_OPT_FIT_TO_PAPER"
+msgstr "符合纸张大小"
+
+msgid "IDS_COM_SK_CUSTOM"
+msgstr "自定义"
+
+msgid "IDS_IMGE_BODY_WIDTH"
+msgstr "宽"
+
+msgid "IDS_IMGE_BODY_HEIGHT"
+msgstr "高"
+
+msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB"
+msgstr "保持宽高比"
+
+msgid "IDS_COM_BODY_UNIT_INCH"
+msgstr "英寸"
+
+msgid "IDS_COM_BODY_UNIT_CM"
+msgstr "厘米"
+
+msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB"
+msgstr "1 张上 %d 页"
+
+msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS"
+msgstr "打印机设置"
+
+msgid "IDS_PRT_BODY_PRINTER"
+msgstr "打印机"
+
+msgid "IDS_PRT_BODY_PAPERSIZE"
+msgstr "纸张大小"
+
+msgid "IDS_PRT_BODY_NUMBEROFCOPIES"
+msgstr "份数"
+
+msgid "IDS_PRT_BODY_PRINT_RANGE_ABB"
+msgstr "打印范围"
+
+msgid "IDS_PRT_BODY_COLOUR"
+msgstr "颜色"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT"
+msgstr "草稿"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD"
+msgstr "标准"
+
+msgid "IDS_COM_BODY_HIGH"
+msgstr "高"
+
+msgid "IDS_ST_BODY_NORMAL"
+msgstr "普通"
+
+msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING"
+msgstr "正在等待打印…"
+
+msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING"
+msgstr "正在准备打印..."
+
+msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING"
+msgstr "打印中..."
+
+msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB"
+msgstr "摄影"
+
+msgid "IDS_ST_BODY_GLOSSY"
+msgstr "光面"
+
+msgid "IDS_DIC_BODY_ALL"
+msgstr "全部"
+
+msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY"
+msgstr "打印素质"
+
+msgid "IDS_IMGE_HEADER_GREY"
+msgstr "灰色"
+
+msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE"
+msgstr "无可用打印机"
+
+msgid "IDS_COM_BODY_NO_DEVICES"
+msgstr "没有设备"
+
+msgid "IDS_PRT_POP_PRINTING_CANCELED"
+msgstr "打印已取消"
+
+msgid "IDS_COM_POP_MEMORY_FULL"
+msgstr "内存已满"
+
+msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING"
+msgstr "正在搜索打印机…"
+
+msgid "IDS_PRT_POP_CHECKPRINTERSTATE"
+msgstr "检查打印机状态"
+
+msgid "IDS_ASEML_POP_SEARCH_FAILED"
+msgstr "搜索失败"
+
+msgid "IDS_PRT_POP_PRINTINGERROR"
+msgstr "打印故障"
+
+msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED"
+msgstr "Wi-Fi已断开"
+
+msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER"
+msgstr "纸"
+
+msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2"
+msgstr "打印机已断开"
+
diff --git a/mobileprint/po/zh_TW.po b/mobileprint/po/zh_TW.po
new file mode 100644 (file)
index 0000000..11bef9c
--- /dev/null
@@ -0,0 +1,171 @@
+msgid "IDS_COM_SK_HIDE"
+msgstr "隱藏"
+
+msgid "IDS_COM_SK_REFRESH"
+msgstr "重新整理"
+
+msgid "IDS_COM_SK_CANCEL"
+msgstr "取消"
+
+msgid "IDS_IMGE_OPT_ROTATE"
+msgstr "旋轉"
+
+msgid "IDS_CALL_POP_AEESYS_SYSTEMFAILUREERROR"
+msgstr "系統錯誤"
+
+msgid "IDS_COM_SK_BACK"
+msgstr "返回"
+
+msgid "IDS_COM_BODY_WI_FI"
+msgstr "Wi-Fi"
+
+msgid "IDS_COM_SK_OK"
+msgstr "確定"
+
+msgid "IDS_COM_BODY_UNSUPPORTED_FILE_TYPE"
+msgstr "不支援的檔案類型"
+
+msgid "IDS_COM_OPT1_WI_FI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "不支援"
+
+msgid "IDS_BR_BODY_CURRENT_PAGE"
+msgstr "目前頁面"
+
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "印表機已連接"
+
+msgid "IDS_PRT_BODY_CONNECT_TO_WI_FI_NETWORK_TO_PRINT"
+msgstr "連接Wi-Fi網路印表機"
+
+msgid "IDS_PRT_BODY_SELECT_PRINTER"
+msgstr "選擇印表機"
+
+msgid "IDS_PRT_SK_PRINT_PREVIEW"
+msgstr "預覽"
+
+msgid "IDS_SMPOS_SK3_PRINT"
+msgstr "列印"
+
+msgid "IDS_IMGE_BODY_SIZE"
+msgstr "大小"
+
+msgid "IDS_PRT_BODY_SCALING_ABB"
+msgstr "縮放比例"
+
+msgid "IDS_COM_BODY_SETTING"
+msgstr "設定"
+
+msgid "IDS_BT_OPT_FIT_TO_PAPER"
+msgstr "符合紙張大小"
+
+msgid "IDS_COM_SK_CUSTOM"
+msgstr "自訂"
+
+msgid "IDS_IMGE_BODY_WIDTH"
+msgstr "寬度"
+
+msgid "IDS_IMGE_BODY_HEIGHT"
+msgstr "高度"
+
+msgid "IDS_PRT_BODY_KEEP_ASPECT_RATIO_ABB"
+msgstr "保持長寬比"
+
+msgid "IDS_COM_BODY_UNIT_INCH"
+msgstr "英吋"
+
+msgid "IDS_COM_BODY_UNIT_CM"
+msgstr "公分"
+
+msgid "IDS_PRT_BODY_PD_PAGES_ON_1_SHEET_ABB"
+msgstr "1 張上有 %d 頁"
+
+msgid "IDS_SMPOS_HEADER_PRINTER_SETTINGS"
+msgstr "印表機設定"
+
+msgid "IDS_PRT_BODY_PRINTER"
+msgstr "印表機"
+
+msgid "IDS_PRT_BODY_PAPERSIZE"
+msgstr "紙張大小"
+
+msgid "IDS_PRT_BODY_NUMBEROFCOPIES"
+msgstr "份數"
+
+msgid "IDS_PRT_BODY_PRINT_RANGE_ABB"
+msgstr "列印範圍"
+
+msgid "IDS_PRT_BODY_COLOUR"
+msgstr "顏色"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_DRAFT"
+msgstr "草稿"
+
+msgid "IDS_PRT_OPT_PRINTSETTINGS_STANDARD"
+msgstr "標準"
+
+msgid "IDS_COM_BODY_HIGH"
+msgstr "高"
+
+msgid "IDS_ST_BODY_NORMAL"
+msgstr "正常"
+
+msgid "IDS_PRT_POP_WAITING_TO_PRINT_ING"
+msgstr "正在等待列印…"
+
+msgid "IDS_PRT_POP_PREPARING_TO_PRINT_ING"
+msgstr "正在準備列印..."
+
+msgid "IDS_PRT_HEADER_MEDIABOX_PRINTING"
+msgstr "正在列印..."
+
+msgid "IDS_PRT_BODY_PHOTOGRAPHIC_ABB"
+msgstr "攝影"
+
+msgid "IDS_ST_BODY_GLOSSY"
+msgstr "Glossy"
+
+msgid "IDS_DIC_BODY_ALL"
+msgstr "全部"
+
+msgid "IDS_PRT_BODY_PRINTSETTINGS_PRINT_QUALITY"
+msgstr "列印品質"
+
+msgid "IDS_IMGE_HEADER_GREY"
+msgstr "灰色"
+
+msgid "IDS_PRT_BODY_NO_PRINTERS_AVAILABLE"
+msgstr "無可用的印表機"
+
+msgid "IDS_COM_BODY_NO_DEVICES"
+msgstr "沒有找到裝置"
+
+msgid "IDS_PRT_POP_PRINTING_CANCELED"
+msgstr "已取消列印"
+
+msgid "IDS_COM_POP_MEMORY_FULL"
+msgstr "記憶體已滿"
+
+msgid "IDS_PRT_BODY_SEARCHING_FOR_PRINTERS_ING"
+msgstr "正在搜尋印表機..."
+
+msgid "IDS_PRT_POP_CHECKPRINTERSTATE"
+msgstr "檢查印表機狀態"
+
+msgid "IDS_ASEML_POP_SEARCH_FAILED"
+msgstr "搜尋失敗"
+
+msgid "IDS_PRT_POP_PRINTINGERROR"
+msgstr "列印錯誤"
+
+msgid "IDS_WIFI_POP_WI_FI_DISCONNECTED"
+msgstr "Wi - Fi斷開"
+
+msgid "IDS_IMGE_BUTTON_PAPER_M_STICKER"
+msgstr "紙張"
+
+msgid "IDS_COM_POP_PRINTER_DISCONNECTED_ABB2"
+msgstr "印表機已中斷連接"
+
diff --git a/mobileprint/previewgen/CMakeLists.txt b/mobileprint/previewgen/CMakeLists.txt
new file mode 100644 (file)
index 0000000..b23f7dc
--- /dev/null
@@ -0,0 +1,10 @@
+#ADD_DEFINITIONS("-Wall -pedantic") #enable all warnings
+
+INCLUDE(FindPkgConfig)
+pkg_check_modules(previewgen_pkgs REQUIRED dlog
+                                       evas ecore)
+FOREACH(flag ${previewgen_pkgs_CFLAGS})
+       SET(EXTRA_CFLAGS_PREVIEWGEN "${EXTRA_CFLAGS_PREVIEWGEN} ${flag}")
+ENDFOREACH(flag)
+
+ADD_SUBDIRECTORY(lib)
diff --git a/mobileprint/previewgen/include/evas_render.h b/mobileprint/previewgen/include/evas_render.h
new file mode 100644 (file)
index 0000000..affbfc5
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+*  Mobileprint
+*
+* Copyright 2012  Samsung Electronics Co., Ltd
+
+* Licensed under the Flora License, Version 1.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+
+* http://floralicense.org/license/
+
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#ifndef _EVAS_RENDER_H_INCLUDED_
+#define _EVAS_RENDER_H_INCLUDED_
+
+#include <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_ */
+
diff --git a/mobileprint/previewgen/include/image_scaler.h b/mobileprint/previewgen/include/image_scaler.h
new file mode 100644 (file)
index 0000000..3238144
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+*  Mobileprint
+*
+* Copyright 2012  Samsung Electronics Co., Ltd
+
+* Licensed under the Flora License, Version 1.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+
+* http://floralicense.org/license/
+
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#ifndef _IMAGE_SCALER_H_INCLUDED_
+#define _IMAGE_SCALER_H_INCLUDED_
+
+#include "paper_size.h"
+
+int downscale_image(const char *fname, const char *outfname_ppm,
+                                       const struct size_px *available_size);
+
+#endif /* _IMAGE_SCALER_H_INCLUDED_ */
+
diff --git a/mobileprint/previewgen/include/page_preview.h b/mobileprint/previewgen/include/page_preview.h
new file mode 100644 (file)
index 0000000..1e11e81
--- /dev/null
@@ -0,0 +1,82 @@
+/*
+*  Mobileprint
+*
+* Copyright 2012  Samsung Electronics Co., Ltd
+
+* Licensed under the Flora License, Version 1.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+
+* http://floralicense.org/license/
+
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#ifndef _PAGE_PREVIEW_H_INCLUDED_
+#define _PAGE_PREVIEW_H_INCLUDED_
+
+#include <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_ */
+
diff --git a/mobileprint/previewgen/include/page_preview_thread.h b/mobileprint/previewgen/include/page_preview_thread.h
new file mode 100644 (file)
index 0000000..0005d0b
--- /dev/null
@@ -0,0 +1,66 @@
+/*
+*  Mobileprint
+*
+* Copyright 2012  Samsung Electronics Co., Ltd
+
+* Licensed under the Flora License, Version 1.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+
+* http://floralicense.org/license/
+
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#ifndef _PAGE_PREVIEW_THREAD_H_INCLUDED_
+#define _PAGE_PREVIEW_THREAD_H_INCLUDED_
+
+#include "page_preview.h"
+
+
+struct pdf_preview_page_image_data {
+       //char *pdf_fname;
+       void *img_buf;
+       int img_size;
+       int page_num;
+       int pages_count;
+       struct preview_settings_px *settings_px;
+       char *out_pic_fname;
+
+       int res;
+};
+
+struct process_image_downscale_data {
+       char *fname;
+       char *out_fname;
+       struct size_px *available_size_px;
+
+       int res;
+};
+
+#if 0
+struct img2pdf_preview_pages_data {
+       char **fnames;
+       int files_count;
+       struct paper_size_pts *paper_size;
+       struct size_px *available_size_px;
+       enum page_orientation orientation;
+       int n_up;
+       struct page_scale *scale;
+       int is_grayscale;
+
+       int res;
+};
+#endif
+
+void *save_pdf_preview_page_image_w_np_thread(void *d);
+void *process_image_downscale_thread(void *d);
+//void *img2pdf_preview_pages_thread(void *d);
+
+#endif /* _PAGE_PREVIEW_THREAD_H_INCLUDED_ */
+
diff --git a/mobileprint/previewgen/include/paper_size.h b/mobileprint/previewgen/include/paper_size.h
new file mode 100644 (file)
index 0000000..1e4e5f5
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+*  Mobileprint
+*
+* Copyright 2012  Samsung Electronics Co., Ltd
+
+* Licensed under the Flora License, Version 1.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+
+* http://floralicense.org/license/
+
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#ifndef _PAPER_SIZE_H_INCLUDED_
+#define _PAPER_SIZE_H_INCLUDED_
+
+//#include <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_ */
+
diff --git a/mobileprint/previewgen/include/pdfgen.h b/mobileprint/previewgen/include/pdfgen.h
new file mode 100644 (file)
index 0000000..e8d7edf
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+*  Mobileprint
+*
+* Copyright 2012  Samsung Electronics Co., Ltd
+
+* Licensed under the Flora License, Version 1.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+
+* http://floralicense.org/license/
+
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#ifndef _PDFGEN_H_INCLUDED_
+#define _PDFGEN_H_INCLUDED_
+
+
+#define TEMP_PDFTOPDF_FNAME    "/tmp/pdftopdf_tmp.pdf"
+
+#define SCALE_WALLET_W 3.30709
+#define SCALE_WALLET_H
+
+enum page_orientation {
+       //PAGE_ORIENTATION_AUTO,
+       PAGE_ORIENTATION_PORTRAIT=3,
+       PAGE_ORIENTATION_LANDSCAPE
+};
+
+enum page_scale_type {
+       SCALE_FIT_TO_PAPER,
+       SCALE_CUSTOM,
+       SCALE_RELATIVE,
+       SCALE_ORIGINAL
+};
+
+struct page_scale {
+       enum page_scale_type type;
+       int zoom;
+       double w;
+       double h;
+};
+
+struct pdfgen_settings {
+       int n_up;
+       char *paper_name;
+       char *ppd_filename;
+       struct page_scale scale;
+       enum page_orientation orientation;
+};
+
+
+int call_pdftopdf(const char *path, const char *outfile,
+                                 const struct pdfgen_settings *settings);
+int call_imagetopdf(const char *path, const char *outfile,
+                                       const struct pdfgen_settings *settings);
+
+#endif /* _PDFGEN_H_INCLUDED_ */
+
diff --git a/mobileprint/previewgen/include/pgen_debug.h b/mobileprint/previewgen/include/pgen_debug.h
new file mode 100644 (file)
index 0000000..b921e37
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+*  Mobileprint
+*
+* Copyright 2012  Samsung Electronics Co., Ltd
+
+* Licensed under the Flora License, Version 1.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+
+* http://floralicense.org/license/
+
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#ifndef _PGEN_DEBUG_H_INCLUDED_
+#define _PGEN_DEBUG_H_INCLUDED_
+
+#include <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_ */
+
diff --git a/mobileprint/previewgen/include/preview_coords.h b/mobileprint/previewgen/include/preview_coords.h
new file mode 100644 (file)
index 0000000..f7504b8
--- /dev/null
@@ -0,0 +1,77 @@
+/*
+*  Mobileprint
+*
+* Copyright 2012  Samsung Electronics Co., Ltd
+
+* Licensed under the Flora License, Version 1.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+
+* http://floralicense.org/license/
+
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#ifndef _PREVIEW_COORDS_H_INCLUDED_
+#define _PREVIEW_COORDS_H_INCLUDED_
+
+#include <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_ */
+
diff --git a/mobileprint/previewgen/include/preview_util.h b/mobileprint/previewgen/include/preview_util.h
new file mode 100644 (file)
index 0000000..8e967c7
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+*  Mobileprint
+*
+* Copyright 2012  Samsung Electronics Co., Ltd
+
+* Licensed under the Flora License, Version 1.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+
+* http://floralicense.org/license/
+
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#ifndef _PREVIEW_UTIL_H_INCLUDED_
+#define _PREVIEW_UTIL_H_INCLUDED_
+
+#include <Evas.h>
+
+int get_image_resolution(const char *path, int *resx, int *resy);
+int rotate90_image(Evas_Object *img);
+
+#endif /* _PREVIEW_UTIL_H_INCLUDED_ */
diff --git a/mobileprint/previewgen/include/previewgen.h b/mobileprint/previewgen/include/previewgen.h
new file mode 100644 (file)
index 0000000..b5c67ed
--- /dev/null
@@ -0,0 +1,69 @@
+/*
+*  Mobileprint
+*
+* Copyright 2012  Samsung Electronics Co., Ltd
+
+* Licensed under the Flora License, Version 1.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+
+* http://floralicense.org/license/
+
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#ifndef _PREVIEWGEN_H_INCLUDED_
+#define _PREVIEWGEN_H_INCLUDED_
+
+
+#include <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_ */
+
diff --git a/mobileprint/previewgen/lib/CMakeLists.txt b/mobileprint/previewgen/lib/CMakeLists.txt
new file mode 100644 (file)
index 0000000..77a877d
--- /dev/null
@@ -0,0 +1,16 @@
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/previewgen/include)
+
+FILE(GLOB SRCS *.c)
+
+#INCLUDE(FindPkgConfig)
+#pkg_check_modules(previewgen_pkgs REQUIRED dlog
+#                                              evas
+#                                              )
+#FOREACH(flag ${previewgen_pkgs_CFLAGS})
+#      SET(EXTRA_CFLAGS_PREVIEWGEN "${EXTRA_CFLAGS_PREVIEWGEN} ${flag}")
+#ENDFOREACH(flag)
+
+ADD_LIBRARY(previewgen ${SRCS})
+SET_TARGET_PROPERTIES(previewgen PROPERTIES COMPILE_FLAGS "${EXTRA_CFLAGS_PREVIEWGEN} -fpie")
+#TARGET_LINK_LIBRARIES(previewgen ${previewgen_pkgs_LDFLAGS})
+
diff --git a/mobileprint/previewgen/lib/evas_render.c b/mobileprint/previewgen/lib/evas_render.c
new file mode 100644 (file)
index 0000000..fb01f1e
--- /dev/null
@@ -0,0 +1,199 @@
+/*
+*  Mobileprint
+*
+* Copyright 2012  Samsung Electronics Co., Ltd
+
+* Licensed under the Flora License, Version 1.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+
+* http://floralicense.org/license/
+
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#include <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;
+}
+
diff --git a/mobileprint/previewgen/lib/image_scaler.c b/mobileprint/previewgen/lib/image_scaler.c
new file mode 100644 (file)
index 0000000..9fca6fc
--- /dev/null
@@ -0,0 +1,101 @@
+/*
+*  Mobileprint
+*
+* Copyright 2012  Samsung Electronics Co., Ltd
+
+* Licensed under the Flora License, Version 1.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+
+* http://floralicense.org/license/
+
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#include <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;
+}
+
diff --git a/mobileprint/previewgen/lib/page_preview.c b/mobileprint/previewgen/lib/page_preview.c
new file mode 100644 (file)
index 0000000..f98f2d2
--- /dev/null
@@ -0,0 +1,537 @@
+/*
+*  Mobileprint
+*
+* Copyright 2012  Samsung Electronics Co., Ltd
+
+* Licensed under the Flora License, Version 1.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+
+* http://floralicense.org/license/
+
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#include <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,
+                                                                  &center_off, &(settings_px->page_px)) < 0) {
+               PGEN_DEBUG("ERROR in set_pdf_preview_page_image()");
+               PGEN_TRACE_END;
+               return -1;
+       }
+
+       /* put side (previous and next) pages images */
+       /* TODO: check for pages availability */
+       if (pages_count > 1) {
+               if (page_num > 1 &&
+                               set_preview_page(canvas,
+                                                                &(settings_px->page_px.full_size),
+                                                                &(settings_px->page_px.paper_size),
+                                                                &border_size, &left_off) < 0) {
+                       PGEN_DEBUG("ERROR in set_preview_page()");
+                       PGEN_TRACE_END;
+                       return -1;
+               }
+
+               if (page_num < pages_count &&
+                               set_preview_page(canvas,
+                                                                &(settings_px->page_px.full_size),
+                                                                &(settings_px->page_px.paper_size),
+                                                                &border_size, &right_off) < 0) {
+                       PGEN_DEBUG("ERROR in set_preview_page()");
+                       PGEN_TRACE_END;
+                       return -1;
+               }
+       }
+
+       PGEN_TRACE_END;
+
+       return 0;
+}
+
+/**
+ * @brief      Writes preview page images to file
+ * @param[in]  pdf_fname       input PDF file name
+ * @param[in]  page_num        page number
+ * @param[in]  settings_pts    preview generation settings
+ * @param[in]  out_pic_fname   output image file name (PPM)
+ * @return     -1              error
+ *             0               OK
+ */
+int save_pdf_preview_page_image(const char *pdf_fname, int page_num,
+                                                               const struct preview_page_req *settings_pts,
+                                                               const char *out_pic_fname)
+{
+       Evas *canvas;
+       struct preview_page_px settings_px;
+       struct size_px off = {0, 0};
+       void *img_buf;
+       int img_size;
+
+       PGEN_TRACE_BEGIN;
+
+       if (get_preview_page_settings(settings_pts, &settings_px) < 0) {
+               PGEN_DEBUG("ERROR: get_pdf_preview_page_image():"
+                                  " get_preview_page_settings()");
+               PGEN_TRACE_END;
+               return -1;
+       }
+
+       canvas = create_canvas(&(settings_px.full_size));
+       PTS_RETV_IF(canvas == NULL, -1, "canvas is NULL");
+
+       if (load_pdf_page_img(pdf_fname, page_num, &settings_px,
+                                                 &img_buf, &img_size) < 0) {
+               PGEN_TRACE_END;
+               return -1;
+       }
+
+       if (set_pdf_preview_page_image(canvas, img_buf, img_size,
+                                                                  &off, &settings_px) < 0) {
+               PGEN_DEBUG("ERROR in set_pdf_preview_page_image()");
+               destroy_canvas(canvas);
+               PGEN_TRACE_END;
+               return -1;
+       }
+
+       draw_scene(canvas);
+       save_scene(canvas, out_pic_fname);
+       destroy_canvas(canvas);
+
+       PGEN_TRACE_END;
+
+       return 0;
+}
+
+
+int save_pdf_preview_page_image_w_np(
+       void *img_buf, int img_size,
+       int page_num, int pages_count,
+       const struct preview_settings_px *settings_px,
+       const char *out_pic_fname)
+{
+       PGEN_TRACE_BEGIN;
+       Evas *canvas;
+       canvas = create_canvas(&(settings_px->full_size));
+       PTS_RETV_IF(canvas == NULL, -1, "canvas is NULL");
+
+       /* till we save page images in PPM this is required */
+       if (set_canvas_background(canvas, &(settings_px->full_size)) < 0) {
+               PGEN_DEBUG("ERROR in set_canvas_background()");
+               destroy_canvas(canvas);
+               PGEN_TRACE_END;
+               return -1;
+       }
+
+       if (set_pdf_preview_page_image_w_np(canvas, img_buf, img_size,
+                                                                               page_num, pages_count, settings_px) < 0) {
+               PGEN_DEBUG("ERROR in set_pdf_preview_page_image_w_np()");
+               destroy_canvas(canvas);
+               PGEN_TRACE_END;
+               return -1;
+       }
+
+       draw_scene(canvas);
+       save_scene(canvas, out_pic_fname);
+       destroy_canvas(canvas);
+
+
+       PGEN_TRACE_END;
+
+       return 0;
+}
+
+/* fix pdftopdf page rotation problem by manual scaling option */
+int fix_pdf_page_scale(const char *fname,
+                                          const struct size_pts *req_size,
+                                          struct pdfgen_settings *settings)
+{
+       PGEN_TRACE_BEGIN;
+       PTS_RETV_IF(NULL == fname || NULL == req_size || NULL == settings, -1, "Invalid argument");
+
+       struct size_pts input_pdf_pts = {0.0, };
+
+       int result = get_pdf_page_size(fname, &input_pdf_pts);
+       PTS_RETV_IF(result < 0, -1, "can't get pdf page size");
+
+       /* check rotation */
+       if ((PAGE_ORIENTATION_LANDSCAPE == settings->orientation
+                       && input_pdf_pts.x < input_pdf_pts.y)
+                       || (PAGE_ORIENTATION_PORTRAIT == settings->orientation
+                               && input_pdf_pts.x > input_pdf_pts.y)) {
+               double tmp = input_pdf_pts.x;
+               input_pdf_pts.x = input_pdf_pts.y;
+               input_pdf_pts.y = tmp;
+
+               /*when page is rotated we need to fix its size
+                 if source page is small and desired is big, then enlarge
+                 if source is big and desired is small, diminish*/
+               int zoomHorizontal =
+                       (int)(100 * req_size->x / input_pdf_pts.x);
+               int zoomVertical =
+                       (int)(100 * req_size->y / input_pdf_pts.y);
+
+               /* minimal zoom is needed from vertical/horizontal
+                  - for the whole picture fitness */
+               settings->scale.zoom = (zoomHorizontal < zoomVertical)
+                                                          ? zoomHorizontal : zoomVertical;
+               settings->scale.type = SCALE_RELATIVE;
+       }
+       settings->scale.w = 0;
+       settings->scale.h = 0;
+
+       PGEN_DEBUG("page zoom fix calculated");
+       PGEN_DEBUG("input_pdf_size (x,y) = (%lf, %lf)",
+                          input_pdf_pts.x, input_pdf_pts.y);
+       PGEN_DEBUG("req_size (x,y) = (%lf, %lf)",
+                          req_size->x, req_size->y);
+
+       PGEN_TRACE_END;
+       return 0;
+}
+
+/**
+ * @brief      Process PDF preview generation with CUPS filters to PDF with
+ *             specific options
+ * @param[in]  fname                   input PDF file name
+ * @param[in]  printer_ppd_fname       PPD file name for current active printer
+ * @param[in]  paper_size              paper size with CUPS name
+ * @param[in]  orientation             requested printing orientation
+ * @param[in]  n_up                    number-up
+ * @param[in]  scale                   scaling of image
+ * @param[in]  is_grayscale            image must be grascaled
+ * @return     -1                      error
+ *             0                       success
+ */
+int pdf2pdf_preview_pages(const char *fname, const char *out_pdf_fname,
+                                                 const char *printer_ppd_fname,
+                                                 const struct paper_size_pts *paper_size,
+                                                 enum page_orientation orientation, int n_up,
+                                                 const struct page_scale *scale, int is_grayscale)
+{
+       struct pdfgen_settings pg_settings;
+
+       PGEN_TRACE_BEGIN;
+       PTS_RETV_IF(!fname || !scale, -1, "Invalid argument");
+       PGEN_DEBUG("processing file name: %s", fname);
+
+       /* generate result pdf */
+       pg_settings.n_up = n_up;
+       pg_settings.paper_name = paper_size->name;
+       pg_settings.scale = *scale;
+       pg_settings.orientation = orientation;
+       pg_settings.ppd_filename = (char *)printer_ppd_fname;
+
+       int result = fix_pdf_page_scale(fname, &(paper_size->s), &pg_settings);
+       PTS_RETV_IF(result < 0, -1, "ERROR in fix_pdf_page_scale()");
+
+       PGEN_DEBUG("pg_settings.paper_name = %s", pg_settings.paper_name);
+       PGEN_DEBUG("pg_settings.orientation = %d",
+                          (int)pg_settings.orientation);
+       PGEN_DEBUG("pg_settings.scale.zoom = %d", pg_settings.scale.zoom);
+       PGEN_DEBUG("pg_settings.scale.type = %d",
+                          (int)pg_settings.scale.type);
+
+       result = call_pdftopdf(fname, out_pdf_fname, &pg_settings);
+       PTS_RETV_IF(result < 0, -1, "ERROR in call_pdftopdf()");
+
+       PGEN_TRACE_END;
+       return 0;
+}
+
+int process_image_downscale(const char *fname, const char *out_fname,
+                                                       const struct size_px *available_size_px)
+{
+       struct size_px new_size;
+       PTS_RETV_IF(fname == NULL || out_fname == NULL || available_size_px == NULL, -1, "Invalid argument");
+       new_size.x = available_size_px->x / 2;
+       new_size.y = available_size_px->y / 2;
+       downscale_image(fname, out_fname, &new_size);
+       return 0;
+}
+
+int img2pdf_preview_pages(const char *fname, const char *out_pdf_fname,
+                                                 const char *printer_ppd_fname,
+                                                 const struct paper_size_pts *paper_size,
+                                                 const struct size_px *available_size_px,
+                                                 enum page_orientation orientation, int n_up,
+                                                 const struct page_scale *scale, int is_grayscale)
+{
+       PGEN_TRACE_BEGIN;
+       PTS_RETV_IF(!fname || !out_pdf_fname || !printer_ppd_fname ||
+                               !paper_size || !available_size_px || !scale,
+                               -1, "Invalid argument");
+
+       struct pdfgen_settings pg_settings;
+
+       /* generate result pdf */
+
+       /* TODO: use pdfunite for multiple files, currently only first file */
+       pg_settings.n_up = n_up;
+       pg_settings.paper_name = paper_size->name;
+       pg_settings.scale = *scale;
+       pg_settings.orientation = orientation;
+       pg_settings.ppd_filename = (char *)printer_ppd_fname;
+
+       int result = call_imagetopdf(fname, out_pdf_fname, &pg_settings);
+       PTS_RETV_IF(result < 0, -1, "ERROR in call_imagetopdf()");
+
+       PGEN_TRACE_END;
+       return 0;
+}
+
diff --git a/mobileprint/previewgen/lib/page_preview_thread.c b/mobileprint/previewgen/lib/page_preview_thread.c
new file mode 100644 (file)
index 0000000..74ec445
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+*  Mobileprint
+*
+* Copyright 2012  Samsung Electronics Co., Ltd
+
+* Licensed under the Flora License, Version 1.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+
+* http://floralicense.org/license/
+
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#include "page_preview.h"
+#include "page_preview_thread.h"
+
+void *save_pdf_preview_page_image_w_np_thread(void *d)
+{
+       struct pdf_preview_page_image_data *data =
+               (struct pdf_preview_page_image_data *)d;
+       data->res = save_pdf_preview_page_image_w_np(
+                                       data->img_buf, data->img_size,
+                                       data->page_num, data->pages_count,
+                                       data->settings_px, data->out_pic_fname);
+       return NULL;
+}
+
+void *process_image_downscale_thread(void *d)
+{
+       struct process_image_downscale_data *data =
+               (struct process_image_downscale_data *)d;
+       data->res = process_image_downscale(data->fname, data->out_fname,
+                                                                               data->available_size_px);
+       return NULL;
+}
diff --git a/mobileprint/previewgen/lib/paper_size.c b/mobileprint/previewgen/lib/paper_size.c
new file mode 100644 (file)
index 0000000..3a81490
--- /dev/null
@@ -0,0 +1,142 @@
+/*
+*  Mobileprint
+*
+* Copyright 2012  Samsung Electronics Co., Ltd
+
+* Licensed under the Flora License, Version 1.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+
+* http://floralicense.org/license/
+
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#include <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;
+}
+
diff --git a/mobileprint/previewgen/lib/pdfgen.c b/mobileprint/previewgen/lib/pdfgen.c
new file mode 100644 (file)
index 0000000..de50fc4
--- /dev/null
@@ -0,0 +1,146 @@
+/*
+*  Mobileprint
+*
+* Copyright 2012  Samsung Electronics Co., Ltd
+
+* Licensed under the Flora License, Version 1.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+
+* http://floralicense.org/license/
+
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#include <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;
+}
+
diff --git a/mobileprint/previewgen/lib/preview_coords.c b/mobileprint/previewgen/lib/preview_coords.c
new file mode 100644 (file)
index 0000000..bf1589b
--- /dev/null
@@ -0,0 +1,173 @@
+/*
+*  Mobileprint
+*
+* Copyright 2012  Samsung Electronics Co., Ltd
+
+* Licensed under the Flora License, Version 1.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+
+* http://floralicense.org/license/
+
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#include <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;
+}
+
diff --git a/mobileprint/previewgen/lib/preview_util.c b/mobileprint/previewgen/lib/preview_util.c
new file mode 100644 (file)
index 0000000..5500689
--- /dev/null
@@ -0,0 +1,131 @@
+/*
+*  Mobileprint
+*
+* Copyright 2012  Samsung Electronics Co., Ltd
+
+* Licensed under the Flora License, Version 1.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+
+* http://floralicense.org/license/
+
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#include <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;
+}
+
diff --git a/mobileprint/previewgen/lib/previewgen.c b/mobileprint/previewgen/lib/previewgen.c
new file mode 100644 (file)
index 0000000..9c5592d
--- /dev/null
@@ -0,0 +1,449 @@
+/*
+*  Mobileprint
+*
+* Copyright 2012  Samsung Electronics Co., Ltd
+
+* Licensed under the Flora License, Version 1.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+
+* http://floralicense.org/license/
+
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#include <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
diff --git a/mobileprint/previewgen/rasterview.ppd b/mobileprint/previewgen/rasterview.ppd
new file mode 100644 (file)
index 0000000..60b9454
--- /dev/null
@@ -0,0 +1,269 @@
+*PPD-Adobe: "4.3"
+*%
+*% "$Id$"
+*%
+*% Test PPD file for the raster viewer.
+*%
+*% Copyright 2006 by Michael R Sweet
+*%
+*% This program is free software; you can redistribute it and/or modify
+*% it under the terms of the GNU General Public License as published by
+*% the Free Software Foundation; either version 2, or (at your option)
+*% any later version.
+*%
+*% This program is distributed in the hope that it will be useful,
+*% but WITHOUT ANY WARRANTY; without even the implied warranty of
+*% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*% GNU General Public License for more details.
+*%
+*FormatVersion:        "4.3"
+*FileVersion:  "1.1"
+*LanguageVersion: English 
+*LanguageEncoding: ISOLatin1
+*PCFileName:   "RASTVIEW.PPD"
+*Manufacturer: "ESP"
+*Product:      "(ESP Ghostscript)"
+*cupsVersion:  1.2
+*cupsManualCopies: True
+*cupsFlipDuplex: True
+*cupsFilter:   "application/vnd.cups-raster 0 -"
+*ModelName:     "Raster Test Driver"
+*ShortNickName: "Raster Test Driver"
+*NickName:      "Raster Test Driver v1.2"
+*PSVersion:    "(3010.000) 81501"
+*LanguageLevel:        "3"
+*ColorDevice:  True
+*DefaultColorSpace: RGB
+*FileSystem:   False
+*Throughput:   "1"
+*LandscapeOrientation: Plus90
+*VariablePaperSize: False
+*TTRasterizer: Type42
+
+*OpenUI *PageSize/Media Size: PickOne
+*OrderDependency: 10 AnySetup *PageSize
+*DefaultPageSize: A4
+*PageSize Preview/Preview:     "<</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$".
+*%
diff --git a/org.tizen.mobileprint.manifest b/org.tizen.mobileprint.manifest
new file mode 100644 (file)
index 0000000..b8e1459
--- /dev/null
@@ -0,0 +1,14 @@
+<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>
diff --git a/org.tizen.usb-printer-detector.manifest b/org.tizen.usb-printer-detector.manifest
new file mode 100644 (file)
index 0000000..334898d
--- /dev/null
@@ -0,0 +1,8 @@
+<manifest>
+       <define>
+               <domain name="usb-printer-detector" policy="shared"/>
+       </define>
+       <request>
+               <domain name="usb-printer-detector"/>
+       </request>
+</manifest>
diff --git a/packaging/mobileprint.spec b/packaging/mobileprint.spec
new file mode 100755 (executable)
index 0000000..9214444
--- /dev/null
@@ -0,0 +1,90 @@
+Name:       mobileprint
+Summary:    Library for writing UNIX daemons
+Version:    0.2.15
+Release:    55
+Group:      System/Libraries
+License:    Flora Software License
+Source0:    %{name}-%{version}.tar.gz
+BuildRequires: cmake
+BuildRequires: gettext-tools   
+BuildRequires: edje-tools
+#BuildRequires: edje-bin
+BuildRequires: sysman-devel
+BuildRequires: pkgconfig(appcore-efl)
+BuildRequires: pkgconfig(elementary)
+BuildRequires: pkgconfig(dlog)
+BuildRequires: pkgconfig(appsvc)
+BuildRequires: pkgconfig(print-service)
+BuildRequires: pkgconfig(utilX)
+BuildRequires: pkgconfig(ui-gadget-1)
+BuildRequires: pkgconfig(capi-appfw-application)
+BuildRequires: pkgconfig(syspopup-caller)
+BuildRequires: pkgconfig(notification)
+BuildRequires: pkgconfig(pmapi)
+BuildRoot:  %{_tmppath}/%{name}-%{version}-build
+
+%description
+Mobile Print application
+
+%package -n org.tizen.mobileprint
+Summary:    Mobile Print application
+Group:      Development/Libraries
+Requires:      cups
+
+%description -n org.tizen.mobileprint
+Mobile Print application
+
+%package -n org.tizen.usb-printer-detector
+Summary:    Mobile Print application
+Group:      Development/Libraries
+Requires:      pkgconfig(usbutils)
+Requires:      cups
+
+%description -n org.tizen.usb-printer-detector
+Mobile Print application
+
+%prep
+%setup -q
+
+%build
+%define PREFIX /opt/usr/apps/org.tizen.mobileprint
+%define PREFIXUSB /opt/usr/apps/org.tizen.usb-printer-detector
+cmake . -DCMAKE_INSTALL_PREFIX=%{PREFIX}
+
+%install
+rm -rf %{buildroot}
+%make_install
+
+mkdir -p %{buildroot}/usr/share/license
+cp %{_builddir}/%{buildsubdir}/LICENSE.Flora %{buildroot}/usr/share/license/org.tizen.mobileprint
+cp %{_builddir}/%{buildsubdir}/LICENSE.Flora %{buildroot}/usr/share/license/org.tizen.usb-printer-detector
+
+%clean
+rm -rf %{buildroot}
+
+%post -n org.tizen.mobileprint
+   chown -R 5000:5000 %{PREFIX}/data
+   chown -R 5000:5000 %{PREFIX}/cache
+
+%files -n org.tizen.mobileprint
+%manifest org.tizen.mobileprint.manifest
+%defattr(-,root,root,-)
+#%doc LICENSE
+/usr/share/license/org.tizen.mobileprint
+%{PREFIX}/*
+#/opt/share/applications/org.tizen.mobileprint.desktop
+/opt/share/icons/default/small/org.tizen.mobileprint.png
+#for appfw new manifest
+/opt/share/packages/org.tizen.mobileprint.xml
+
+%files -n org.tizen.usb-printer-detector
+%manifest org.tizen.usb-printer-detector.manifest
+%defattr(-,root,root,-)
+#%doc LICENSE
+/usr/share/license/org.tizen.usb-printer-detector
+%{PREFIXUSB}/*
+#/opt/share/applications/org.tizen.usb-printer-detector.desktop
+#for appfw new manifest
+/opt/share/packages/org.tizen.usb-printer-detector.xml
+
+%changelog
diff --git a/usb-printer-detector/CMakeLists.txt b/usb-printer-detector/CMakeLists.txt
new file mode 100644 (file)
index 0000000..6ecac18
--- /dev/null
@@ -0,0 +1,46 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+PROJECT(usb-printer-detector C)
+SET(PACKAGE_NAME org.tizen.usb-printer-detector)
+
+SET(PREFIX /opt/usr/apps/${PACKAGE_NAME})
+SET(BINDIR "${PREFIX}/bin")
+SET(RESDIR "${PREFIX}/res")
+SET(LOCALEDIR "${RESDIR}/locale")
+SET(EDJDIR "${RESDIR}/edje")
+SET(IMGDIR "${RESDIR}/images/")
+
+SET(SRCS
+       src/upd-main.c
+       src/upd-util.c
+       src/upd-view.c
+)
+
+INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/include)
+
+
+SET(CMAKE_C_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_CFLAGS} -DVITA_FEATURE")
+SET(CMAKE_C_FLAGS_DEBUG "-O0 -g")
+SET(CMAKE_C_FLAGS_RELEASE "-O2")
+
+IF("${ARCH}" STREQUAL "arm")
+       ADD_DEFINITIONS("-DTARGET")
+       MESSAGE("add -DTARGET")
+ENDIF("${ARCH}" STREQUAL "arm")
+
+ADD_DEFINITIONS("-DPREFIX=\"${PREFIX}\"")
+ADD_DEFINITIONS("-DRESDIR=\"${RESDIR}\"")
+ADD_DEFINITIONS("-DIMGDIR=\"${IMGDIR}\"")
+
+ADD_EXECUTABLE(${PROJECT_NAME} ${SRCS})
+TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${pkgs_LDFLAGS})
+
+INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${BINDIR})
+
+#CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/${PACKAGE_NAME}.desktop.in ${CMAKE_BINARY_DIR}/${PACKAGE_NAME}.desktop)
+#INSTALL(FILES ${CMAKE_BINARY_DIR}/${PACKAGE_NAME}.desktop DESTINATION /opt/share/applications)
+#for appfw new manifest
+CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/${PACKAGE_NAME}.xml ${CMAKE_BINARY_DIR}/${PACKAGE_NAME}/${PACKAGE_NAME}.xml)
+INSTALL(FILES ${CMAKE_BINARY_DIR}/${PACKAGE_NAME}/${PACKAGE_NAME}.xml DESTINATION "/opt/share/packages/")
+INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/images/ DESTINATION ${IMGDIR})
+
+ADD_SUBDIRECTORY(po)
diff --git a/usb-printer-detector/images/A09_device_printer.png b/usb-printer-detector/images/A09_device_printer.png
new file mode 100644 (file)
index 0000000..795af23
Binary files /dev/null and b/usb-printer-detector/images/A09_device_printer.png differ
diff --git a/usb-printer-detector/include/upd-strings.h b/usb-printer-detector/include/upd-strings.h
new file mode 100644 (file)
index 0000000..9aee9c3
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+*  USB-Printer-Detector
+*
+* Copyright 2012  Samsung Electronics Co., Ltd
+
+* Licensed under the Flora License, Version 1.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+
+* http://floralicense.org/license/
+
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#ifndef __UPD_STRING_H__
+#define __UPD_STRING_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define UPD_STR_BUTN_YES                               _("Yes")
+#define UPD_STR_BUTN_NO                                        _("No")
+#define UPD_STR_BTN_OK                                 _("OK")
+#define UPD_STR_BTN_CLOSE                              _("Close")
+#define UPD_STR_BTN_CANCEL                             _("Cancel")
+#define UPD_STR_POP_PROG_CONNECT               _("Connecting...")
+#define UPD_STR_POP_PROG_CANCEL                        _("Canceling...")
+#define UPD_STR_POP_NOTI_CONNECTED             _("Connected")
+#define UPD_STR_POP_NOTI_DISCONNECTED  _("Disconnected")
+#define UPD_STR_POP_FAIL_CONNECT               "An error has occurred during<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__ */
diff --git a/usb-printer-detector/include/upd-util.h b/usb-printer-detector/include/upd-util.h
new file mode 100644 (file)
index 0000000..dc65d33
--- /dev/null
@@ -0,0 +1,118 @@
+/*
+*  USB-Printer-Detector
+*
+* Copyright 2012  Samsung Electronics Co., Ltd
+
+* Licensed under the Flora License, Version 1.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+
+* http://floralicense.org/license/
+
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+
+#ifndef __UPD_UTIL_H__
+#define __UPD_UTIL_H__
+
+#include <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__ */
diff --git a/usb-printer-detector/include/upd.h b/usb-printer-detector/include/upd.h
new file mode 100644 (file)
index 0000000..fc1cf49
--- /dev/null
@@ -0,0 +1,96 @@
+/*
+*  USB-Printer-Detector
+*
+* Copyright 2012  Samsung Electronics Co., Ltd
+
+* Licensed under the Flora License, Version 1.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+
+* http://floralicense.org/license/
+
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#ifndef __UPD_H__
+#define __UPD_H__
+
+#include <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__ */
diff --git a/usb-printer-detector/org.tizen.usb-printer-detector.xml b/usb-printer-detector/org.tizen.usb-printer-detector.xml
new file mode 100644 (file)
index 0000000..33aa017
--- /dev/null
@@ -0,0 +1,13 @@
+<?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>
diff --git a/usb-printer-detector/po/CMakeLists.txt b/usb-printer-detector/po/CMakeLists.txt
new file mode 100644 (file)
index 0000000..7cba244
--- /dev/null
@@ -0,0 +1,34 @@
+# for i18n
+
+SET(POFILES 
+    ar.po da.po en_US.po fi.po hi.po it_IT.po 
+    lt.po pl.po sk.po uk.po zh_TW.po az.po 
+    de_DE.po es_ES.po fr_CA.po hr.po ja_JP.po 
+    lv.po pt_BR.po sl.po uz.po bg.po el_GR.po 
+    es_US.po fr_FR.po hu.po ka.po mk.po pt_PT.po 
+    sr.po zh_CN.po ca.po en.po et.po ga.po hy.po 
+    kk.po nb.po ro.po sv.po zh_HK.po cs.po en_PH.po 
+    eu.po gl.po is.po ko_KR.po nl_NL.po ru_RU.po 
+    tr_TR.po zh_SG.po       
+    )
+
+SET(MSGFMT "/usr/bin/msgfmt")
+
+FOREACH(pofile ${POFILES})
+       SET(pofile ${CMAKE_CURRENT_SOURCE_DIR}/${pofile})
+       MESSAGE("PO: ${pofile}")
+       GET_FILENAME_COMPONENT(absPofile ${pofile} ABSOLUTE)
+       GET_FILENAME_COMPONENT(lang ${absPofile} NAME_WE)
+       SET(moFile ${CMAKE_CURRENT_BINARY_DIR}/${lang}.mo)
+       ADD_CUSTOM_COMMAND(
+                       OUTPUT ${moFile}
+                       COMMAND ${MSGFMT} -o ${moFile} ${absPofile}
+                       DEPENDS ${absPofile}
+       )
+       INSTALL(FILES ${moFile}
+                       DESTINATION /opt/usr/apps/org.tizen.usb-printer-detector/res/locale/${lang}/LC_MESSAGES RENAME ${PROJECT_NAME}.mo)
+       SET(moFiles ${moFiles} ${moFile})
+ENDFOREACH(pofile)
+
+MESSAGE(".mo files: ${moFiles}")
+ADD_CUSTOM_TARGET(pop_po ALL DEPENDS ${moFiles})
diff --git a/usb-printer-detector/po/POTFILES.in b/usb-printer-detector/po/POTFILES.in
new file mode 100644 (file)
index 0000000..c138b68
--- /dev/null
@@ -0,0 +1,2 @@
+# List of source files containing translatable strings.
+upd-strings.h
diff --git a/usb-printer-detector/po/ar.po b/usb-printer-detector/po/ar.po
new file mode 100644 (file)
index 0000000..8ad93fe
--- /dev/null
@@ -0,0 +1,3 @@
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "تم توصيل الطابعة"
+
diff --git a/usb-printer-detector/po/az.po b/usb-printer-detector/po/az.po
new file mode 100644 (file)
index 0000000..0380eaa
--- /dev/null
@@ -0,0 +1,3 @@
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Printer qoşuldu"
+
diff --git a/usb-printer-detector/po/bg.po b/usb-printer-detector/po/bg.po
new file mode 100644 (file)
index 0000000..89165a6
--- /dev/null
@@ -0,0 +1,3 @@
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Принтерът е свързан"
+
diff --git a/usb-printer-detector/po/ca.po b/usb-printer-detector/po/ca.po
new file mode 100644 (file)
index 0000000..70d08f7
--- /dev/null
@@ -0,0 +1,3 @@
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Impressora connectada"
+
diff --git a/usb-printer-detector/po/cs.po b/usb-printer-detector/po/cs.po
new file mode 100644 (file)
index 0000000..120893e
--- /dev/null
@@ -0,0 +1,3 @@
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Tiskárna byla připojena"
+
diff --git a/usb-printer-detector/po/da.po b/usb-printer-detector/po/da.po
new file mode 100644 (file)
index 0000000..894dede
--- /dev/null
@@ -0,0 +1,3 @@
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Printer tilsluttet"
+
diff --git a/usb-printer-detector/po/de_DE.po b/usb-printer-detector/po/de_DE.po
new file mode 100644 (file)
index 0000000..70aa564
--- /dev/null
@@ -0,0 +1,3 @@
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Drucker verbunden"
+
diff --git a/usb-printer-detector/po/el_GR.po b/usb-printer-detector/po/el_GR.po
new file mode 100644 (file)
index 0000000..9eac3e9
--- /dev/null
@@ -0,0 +1,3 @@
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Συνδέθηκε εκτυπωτής"
+
diff --git a/usb-printer-detector/po/en.po b/usb-printer-detector/po/en.po
new file mode 100644 (file)
index 0000000..64c98c5
--- /dev/null
@@ -0,0 +1,3 @@
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Printer connected"
+
diff --git a/usb-printer-detector/po/en_PH.po b/usb-printer-detector/po/en_PH.po
new file mode 100644 (file)
index 0000000..64c98c5
--- /dev/null
@@ -0,0 +1,3 @@
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Printer connected"
+
diff --git a/usb-printer-detector/po/en_US.po b/usb-printer-detector/po/en_US.po
new file mode 100644 (file)
index 0000000..64c98c5
--- /dev/null
@@ -0,0 +1,3 @@
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Printer connected"
+
diff --git a/usb-printer-detector/po/es_ES.po b/usb-printer-detector/po/es_ES.po
new file mode 100644 (file)
index 0000000..825acde
--- /dev/null
@@ -0,0 +1,3 @@
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Impresora conectada"
+
diff --git a/usb-printer-detector/po/es_US.po b/usb-printer-detector/po/es_US.po
new file mode 100644 (file)
index 0000000..825acde
--- /dev/null
@@ -0,0 +1,3 @@
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Impresora conectada"
+
diff --git a/usb-printer-detector/po/et.po b/usb-printer-detector/po/et.po
new file mode 100644 (file)
index 0000000..37694b6
--- /dev/null
@@ -0,0 +1,3 @@
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Printer on ühendatud"
+
diff --git a/usb-printer-detector/po/eu.po b/usb-printer-detector/po/eu.po
new file mode 100644 (file)
index 0000000..d66a0a3
--- /dev/null
@@ -0,0 +1,3 @@
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Inprimagailua konektatuta"
+
diff --git a/usb-printer-detector/po/fi.po b/usb-printer-detector/po/fi.po
new file mode 100644 (file)
index 0000000..6635912
--- /dev/null
@@ -0,0 +1,3 @@
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Tulostin kytketty"
+
diff --git a/usb-printer-detector/po/fr_CA.po b/usb-printer-detector/po/fr_CA.po
new file mode 100644 (file)
index 0000000..fea1654
--- /dev/null
@@ -0,0 +1,3 @@
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Imprimante connectée"
+
diff --git a/usb-printer-detector/po/fr_FR.po b/usb-printer-detector/po/fr_FR.po
new file mode 100644 (file)
index 0000000..fea1654
--- /dev/null
@@ -0,0 +1,3 @@
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Imprimante connectée"
+
diff --git a/usb-printer-detector/po/ga.po b/usb-printer-detector/po/ga.po
new file mode 100644 (file)
index 0000000..237b44f
--- /dev/null
@@ -0,0 +1,3 @@
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Printéir ceangailte"
+
diff --git a/usb-printer-detector/po/gl.po b/usb-printer-detector/po/gl.po
new file mode 100644 (file)
index 0000000..825acde
--- /dev/null
@@ -0,0 +1,3 @@
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Impresora conectada"
+
diff --git a/usb-printer-detector/po/hi.po b/usb-printer-detector/po/hi.po
new file mode 100644 (file)
index 0000000..02ca05a
--- /dev/null
@@ -0,0 +1,3 @@
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "प्रिंटर कनेक्ट किया गया"
+
diff --git a/usb-printer-detector/po/hr.po b/usb-printer-detector/po/hr.po
new file mode 100644 (file)
index 0000000..05d330d
--- /dev/null
@@ -0,0 +1,3 @@
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Pisač spojen"
+
diff --git a/usb-printer-detector/po/hu.po b/usb-printer-detector/po/hu.po
new file mode 100644 (file)
index 0000000..1de6bc2
--- /dev/null
@@ -0,0 +1,3 @@
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Nyomtató csatlakoztatva"
+
diff --git a/usb-printer-detector/po/hy.po b/usb-printer-detector/po/hy.po
new file mode 100644 (file)
index 0000000..dd55d7a
--- /dev/null
@@ -0,0 +1,3 @@
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Տպիչը միացված է"
+
diff --git a/usb-printer-detector/po/is.po b/usb-printer-detector/po/is.po
new file mode 100644 (file)
index 0000000..290fed5
--- /dev/null
@@ -0,0 +1,3 @@
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Prentari tengdur"
+
diff --git a/usb-printer-detector/po/it_IT.po b/usb-printer-detector/po/it_IT.po
new file mode 100644 (file)
index 0000000..cdc8a8a
--- /dev/null
@@ -0,0 +1,3 @@
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Stampante connessa"
+
diff --git a/usb-printer-detector/po/ja_JP.po b/usb-printer-detector/po/ja_JP.po
new file mode 100644 (file)
index 0000000..4e6201e
--- /dev/null
@@ -0,0 +1,3 @@
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "プリンターが接続されました。"
+
diff --git a/usb-printer-detector/po/ka.po b/usb-printer-detector/po/ka.po
new file mode 100644 (file)
index 0000000..f52bf06
--- /dev/null
@@ -0,0 +1,3 @@
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "პრინტერი დაკავშირებულია"
+
diff --git a/usb-printer-detector/po/kk.po b/usb-printer-detector/po/kk.po
new file mode 100644 (file)
index 0000000..733ae42
--- /dev/null
@@ -0,0 +1,3 @@
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Принтер қосылды"
+
diff --git a/usb-printer-detector/po/ko_KR.po b/usb-printer-detector/po/ko_KR.po
new file mode 100644 (file)
index 0000000..d601139
--- /dev/null
@@ -0,0 +1,3 @@
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "프린터가 연결되었습니다"
+
diff --git a/usb-printer-detector/po/lt.po b/usb-printer-detector/po/lt.po
new file mode 100644 (file)
index 0000000..8860a5e
--- /dev/null
@@ -0,0 +1,3 @@
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Prijungtas spausdintuvas"
+
diff --git a/usb-printer-detector/po/lv.po b/usb-printer-detector/po/lv.po
new file mode 100644 (file)
index 0000000..4e21aa1
--- /dev/null
@@ -0,0 +1,3 @@
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Printeris pievienots"
+
diff --git a/usb-printer-detector/po/mk.po b/usb-printer-detector/po/mk.po
new file mode 100644 (file)
index 0000000..d16fff6
--- /dev/null
@@ -0,0 +1,3 @@
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Поврзан е печатач"
+
diff --git a/usb-printer-detector/po/nb.po b/usb-printer-detector/po/nb.po
new file mode 100644 (file)
index 0000000..e23edf9
--- /dev/null
@@ -0,0 +1,3 @@
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Skriver tilkoblet"
+
diff --git a/usb-printer-detector/po/nl_NL.po b/usb-printer-detector/po/nl_NL.po
new file mode 100644 (file)
index 0000000..955c1c3
--- /dev/null
@@ -0,0 +1,3 @@
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Printer aangesloten"
+
diff --git a/usb-printer-detector/po/pl.po b/usb-printer-detector/po/pl.po
new file mode 100644 (file)
index 0000000..1c6c0dd
--- /dev/null
@@ -0,0 +1,3 @@
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Drukarka podłączona"
+
diff --git a/usb-printer-detector/po/pt_BR.po b/usb-printer-detector/po/pt_BR.po
new file mode 100644 (file)
index 0000000..6239718
--- /dev/null
@@ -0,0 +1,3 @@
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Impressora conectada"
+
diff --git a/usb-printer-detector/po/pt_PT.po b/usb-printer-detector/po/pt_PT.po
new file mode 100644 (file)
index 0000000..49f945c
--- /dev/null
@@ -0,0 +1,3 @@
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Impressora ligada"
+
diff --git a/usb-printer-detector/po/ro.po b/usb-printer-detector/po/ro.po
new file mode 100644 (file)
index 0000000..207b2cc
--- /dev/null
@@ -0,0 +1,3 @@
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Imprimantă conectată"
+
diff --git a/usb-printer-detector/po/ru_RU.po b/usb-printer-detector/po/ru_RU.po
new file mode 100644 (file)
index 0000000..c96414d
--- /dev/null
@@ -0,0 +1,3 @@
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Принтер подключен"
+
diff --git a/usb-printer-detector/po/sk.po b/usb-printer-detector/po/sk.po
new file mode 100644 (file)
index 0000000..ebd5d2d
--- /dev/null
@@ -0,0 +1,3 @@
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Tlačiareň je pripojená"
+
diff --git a/usb-printer-detector/po/sl.po b/usb-printer-detector/po/sl.po
new file mode 100644 (file)
index 0000000..26d7498
--- /dev/null
@@ -0,0 +1,3 @@
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Tiskalnik je povezan"
+
diff --git a/usb-printer-detector/po/sr.po b/usb-printer-detector/po/sr.po
new file mode 100644 (file)
index 0000000..05a6e34
--- /dev/null
@@ -0,0 +1,3 @@
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Štampač je priključen"
+
diff --git a/usb-printer-detector/po/sv.po b/usb-printer-detector/po/sv.po
new file mode 100644 (file)
index 0000000..4140980
--- /dev/null
@@ -0,0 +1,3 @@
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Skrivare ansluten"
+
diff --git a/usb-printer-detector/po/tr_TR.po b/usb-printer-detector/po/tr_TR.po
new file mode 100644 (file)
index 0000000..045ccea
--- /dev/null
@@ -0,0 +1,3 @@
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Yazıcı bağlı"
+
diff --git a/usb-printer-detector/po/uk.po b/usb-printer-detector/po/uk.po
new file mode 100644 (file)
index 0000000..6f31205
--- /dev/null
@@ -0,0 +1,3 @@
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Принтер підключено"
+
diff --git a/usb-printer-detector/po/update-po.sh b/usb-printer-detector/po/update-po.sh
new file mode 100755 (executable)
index 0000000..fcf256d
--- /dev/null
@@ -0,0 +1,59 @@
+#!/bin/sh
+
+PACKAGE=usb-printer-detector
+SRCROOT=..
+POTFILES=POTFILES.in
+
+ALL_LINGUAS="ar da en_US fi hi it_IT lt pl sk uk zh_TW az de_DE es_ES fr_CA hr ja_JP lv pt_BR sl uz bg el_GR es_US fr_FR hu ka mk pt_PT sr zh_CN ca en et ga hy kk nb ro sv zh_HK cs en_PH eu gl is ko_KR nl_NL ru_RU tr_TR zh_SG"
+
+XGETTEXT=/usr/bin/xgettext
+MSGMERGE=/usr/bin/msgmerge
+
+echo -n "Make ${PACKAGE}.pot  "
+if [ ! -e $POTFILES ] ; then
+       echo "$POTFILES not found"
+       exit 1
+fi
+
+$XGETTEXT --default-domain=${PACKAGE} --directory=${SRCROOT} \
+               --add-comments --keyword=_ --keyword=N_ --files-from=$POTFILES
+if [ $? -ne 0 ]; then
+       echo "error"
+       exit 1  
+fi
+
+if [ ! -f ${PACKAGE}.po ]; then
+       echo "No such file: ${PACKAGE}.po"
+       exit 1
+fi
+
+rm -f ${PACKAGE}.pot && mv ${PACKAGE}.po ${PACKAGE}.pot
+echo "done"
+
+for LANG in $ALL_LINGUAS; do 
+       echo "$LANG : "
+
+       if [ ! -e $LANG.po ] ; then
+               sed 's/CHARSET/UTF-8/g' ${PACKAGE}.pot > ${LANG}.po
+               echo "${LANG}.po created"
+       else
+               if $MSGMERGE ${LANG}.po ${PACKAGE}.pot -o ${LANG}.new.po ; then
+                       if cmp ${LANG}.po ${LANG}.new.po > /dev/null 2>&1; then
+                               rm -f ${LANG}.new.po
+                       else
+                               if mv -f ${LANG}.new.po ${LANG}.po; then
+                                       echo "" 
+                               else
+                                       echo "msgmerge for $LANG.po failed: cannot move $LANG.new.po to $LANG.po" 1>&2
+                                       rm -f ${LANG}.new.po
+                                       exit 1
+                               fi
+                       fi
+               else
+                       echo "msgmerge for $LANG failed!"
+                       rm -f ${LANG}.new.po
+               fi
+       fi
+       echo ""
+done
+
diff --git a/usb-printer-detector/po/uz.po b/usb-printer-detector/po/uz.po
new file mode 100644 (file)
index 0000000..6c8deb1
--- /dev/null
@@ -0,0 +1,3 @@
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "Printer ulandi"
+
diff --git a/usb-printer-detector/po/zh_CN.po b/usb-printer-detector/po/zh_CN.po
new file mode 100644 (file)
index 0000000..1091794
--- /dev/null
@@ -0,0 +1,3 @@
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "打印机已连接"
+
diff --git a/usb-printer-detector/po/zh_HK.po b/usb-printer-detector/po/zh_HK.po
new file mode 100644 (file)
index 0000000..2954327
--- /dev/null
@@ -0,0 +1,3 @@
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "打印機已連接"
+
diff --git a/usb-printer-detector/po/zh_SG.po b/usb-printer-detector/po/zh_SG.po
new file mode 100644 (file)
index 0000000..1091794
--- /dev/null
@@ -0,0 +1,3 @@
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "打印机已连接"
+
diff --git a/usb-printer-detector/po/zh_TW.po b/usb-printer-detector/po/zh_TW.po
new file mode 100644 (file)
index 0000000..5232ea5
--- /dev/null
@@ -0,0 +1,3 @@
+msgid "IDS_COM_POP_PRINTER_CONNECTED_ABB2"
+msgstr "印表機已連接"
+
diff --git a/usb-printer-detector/src/upd-main.c b/usb-printer-detector/src/upd-main.c
new file mode 100644 (file)
index 0000000..da0b98b
--- /dev/null
@@ -0,0 +1,223 @@
+/*
+*  USB-Printer-Detector
+*
+* Copyright 2012  Samsung Electronics Co., Ltd
+
+* Licensed under the Flora License, Version 1.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+
+* http://floralicense.org/license/
+
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#include <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);
+}
diff --git a/usb-printer-detector/src/upd-util.c b/usb-printer-detector/src/upd-util.c
new file mode 100644 (file)
index 0000000..8349967
--- /dev/null
@@ -0,0 +1,351 @@
+/*
+*  USB-Printer-Detector
+*
+* Copyright 2012  Samsung Electronics Co., Ltd
+
+* Licensed under the Flora License, Version 1.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+
+* http://floralicense.org/license/
+
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#include <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;
+}
diff --git a/usb-printer-detector/src/upd-view.c b/usb-printer-detector/src/upd-view.c
new file mode 100644 (file)
index 0000000..0059bd1
--- /dev/null
@@ -0,0 +1,63 @@
+/*
+*  USB-Printer-Detector
+*
+* Copyright 2012  Samsung Electronics Co., Ltd
+
+* Licensed under the Flora License, Version 1.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+
+* http://floralicense.org/license/
+
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#include <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;
+}