From b691e563dd858d472dc25de76704c5410e60d352 Mon Sep 17 00:00:00 2001 From: "Dirk-Jan C. Binnema" Date: Tue, 28 Nov 2006 16:13:42 +0000 Subject: [PATCH] * all: - re-enable maemo support. so far, this means the changes in the autoconf system, and some conditionals (ie. tny_maemo_device instead of tny_gnome_device), and some de-activating stuff like gtkassistant the src/maemo/ dir a copy of src/gtk/ with some minor changes, but will be 'maemofied'. it compiles, it runs, but there are still some problems pmo-trunk-r496 --- COPYING | 366 +++++++- configure.ac | 32 +- src/Makefile.am | 12 +- src/maemo/Makefile.am | 47 + src/maemo/modest-account-assistant.c | 602 ++++++++++++ src/maemo/modest-account-assistant.h | 71 ++ src/maemo/modest-account-view-window.c | 304 +++++++ src/maemo/modest-account-view-window.h | 42 + src/maemo/modest-edit-msg-window.c | 498 ++++++++++ src/maemo/modest-edit-msg-window.h | 83 ++ src/maemo/modest-icon-names.h | 79 ++ src/maemo/modest-main-window.c | 727 +++++++++++++++ src/maemo/modest-main-window.h | 47 + src/maemo/modest-store-widget.c | 355 ++++++++ src/maemo/modest-store-widget.h | 48 + src/maemo/modest-transport-widget.c | 246 +++++ src/maemo/modest-transport-widget.h | 47 + src/maemo/modest-ui.c | 208 +++++ src/maemo/pixmaps/back.svg | 852 +++++++++++++++++ src/maemo/pixmaps/edit-delete.svg | 882 ++++++++++++++++++ src/maemo/pixmaps/folder-closed.png | Bin 0 -> 368 bytes src/maemo/pixmaps/folder-open.png | Bin 0 -> 448 bytes src/maemo/pixmaps/forward.svg | 191 ++++ src/maemo/pixmaps/gnome-stock-mail-fwd.svg | 947 +++++++++++++++++++ src/maemo/pixmaps/gnome-stock-mail-new.svg | 462 ++++++++++ src/maemo/pixmaps/gnome-stock-mail-rpl.svg | 534 +++++++++++ src/maemo/pixmaps/go-next.svg | 191 ++++ src/maemo/pixmaps/go-previous.svg | 852 +++++++++++++++++ src/maemo/pixmaps/gtk-refresh.svg | 391 ++++++++ src/maemo/pixmaps/internet-mail.svg | 454 +++++++++ src/maemo/pixmaps/mail-forward.svg | 947 +++++++++++++++++++ src/maemo/pixmaps/mail-mark-junk.svg | 502 ++++++++++ src/maemo/pixmaps/mail-message-new.svg | 462 ++++++++++ src/maemo/pixmaps/mail-reply-all.svg | 962 ++++++++++++++++++++ src/maemo/pixmaps/mail-reply-sender.svg | 534 +++++++++++ src/maemo/pixmaps/process-stop.svg | 334 +++++++ src/maemo/pixmaps/qgn_addr_icon_user_group.png | Bin 0 -> 4443 bytes src/maemo/pixmaps/qgn_list_gene_attacpap.png | Bin 0 -> 1001 bytes src/maemo/pixmaps/qgn_list_gene_fldr_clp.png | Bin 0 -> 210 bytes src/maemo/pixmaps/qgn_list_gene_fldr_cls.png | Bin 0 -> 570 bytes src/maemo/pixmaps/qgn_list_gene_fldr_exp.png | Bin 0 -> 199 bytes src/maemo/pixmaps/qgn_list_gene_fldr_opn.png | Bin 0 -> 703 bytes src/maemo/pixmaps/qgn_list_messagin.png | Bin 0 -> 1026 bytes src/maemo/pixmaps/qgn_list_messagin_drafts.png | Bin 0 -> 1033 bytes src/maemo/pixmaps/qgn_list_messagin_editor.png | Bin 0 -> 1013 bytes src/maemo/pixmaps/qgn_list_messagin_hdr.png | Bin 0 -> 1169 bytes .../pixmaps/qgn_list_messagin_hdr_encrypted.png | Bin 0 -> 1832 bytes .../qgn_list_messagin_hdr_encrypted_high.png | Bin 0 -> 4740 bytes .../qgn_list_messagin_hdr_encrypted_low.png | Bin 0 -> 1982 bytes src/maemo/pixmaps/qgn_list_messagin_hdr_high.png | Bin 0 -> 3960 bytes .../pixmaps/qgn_list_messagin_hdr_high_unread.png | Bin 0 -> 3845 bytes src/maemo/pixmaps/qgn_list_messagin_hdr_low.png | Bin 0 -> 1233 bytes .../pixmaps/qgn_list_messagin_hdr_low_unread.png | Bin 0 -> 1145 bytes src/maemo/pixmaps/qgn_list_messagin_hdr_signed.png | Bin 0 -> 1685 bytes .../pixmaps/qgn_list_messagin_hdr_signed_high.png | Bin 0 -> 4707 bytes .../pixmaps/qgn_list_messagin_hdr_signed_low.png | Bin 0 -> 1829 bytes src/maemo/pixmaps/qgn_list_messagin_hdr_unread.png | Bin 0 -> 935 bytes .../qgn_list_messagin_hdr_unread_encrypted.png | Bin 0 -> 1798 bytes ...qgn_list_messagin_hdr_unread_encrypted_high.png | Bin 0 -> 4636 bytes .../qgn_list_messagin_hdr_unread_encrypted_low.png | Bin 0 -> 2014 bytes .../qgn_list_messagin_hdr_unread_signed.png | Bin 0 -> 1543 bytes .../qgn_list_messagin_hdr_unread_signed_high.png | Bin 0 -> 4617 bytes .../qgn_list_messagin_hdr_unread_signed_low.png | Bin 0 -> 1814 bytes src/maemo/pixmaps/qgn_list_messagin_inbox.png | Bin 0 -> 813 bytes src/maemo/pixmaps/qgn_list_messagin_mail.png | Bin 0 -> 964 bytes .../pixmaps/qgn_list_messagin_mail_deleted.png | Bin 0 -> 948 bytes .../qgn_list_messagin_mail_encrypted_read.png | Bin 0 -> 1269 bytes .../qgn_list_messagin_mail_encrypted_read_high.png | Bin 0 -> 3911 bytes .../qgn_list_messagin_mail_encrypted_read_low.png | Bin 0 -> 1277 bytes .../qgn_list_messagin_mail_encrypted_unread.png | Bin 0 -> 1106 bytes ...gn_list_messagin_mail_encrypted_unread_high.png | Bin 0 -> 3974 bytes ...qgn_list_messagin_mail_encrypted_unread_low.png | Bin 0 -> 1277 bytes src/maemo/pixmaps/qgn_list_messagin_mail_high.png | Bin 0 -> 3582 bytes .../pixmaps/qgn_list_messagin_mail_high_unread.png | Bin 0 -> 3534 bytes src/maemo/pixmaps/qgn_list_messagin_mail_low.png | Bin 0 -> 853 bytes .../pixmaps/qgn_list_messagin_mail_low_unread.png | Bin 0 -> 872 bytes .../pixmaps/qgn_list_messagin_mail_signed_read.png | Bin 0 -> 1499 bytes .../qgn_list_messagin_mail_signed_read_high.png | Bin 0 -> 4224 bytes .../qgn_list_messagin_mail_signed_read_low.png | Bin 0 -> 1401 bytes .../qgn_list_messagin_mail_signed_unread.png | Bin 0 -> 1444 bytes .../qgn_list_messagin_mail_signed_unread_high.png | Bin 0 -> 4105 bytes .../qgn_list_messagin_mail_signed_unread_low.png | Bin 0 -> 1635 bytes .../pixmaps/qgn_list_messagin_mail_unread.png | Bin 0 -> 903 bytes src/maemo/pixmaps/qgn_list_messagin_outbox.png | Bin 0 -> 835 bytes src/maemo/pixmaps/qgn_list_messagin_sent.png | Bin 0 -> 752 bytes src/maemo/pixmaps/qgn_list_messagin_viewer.png | Bin 0 -> 1126 bytes src/maemo/pixmaps/qgn_list_messaging_high.png | Bin 0 -> 3072 bytes src/maemo/pixmaps/qgn_list_messaging_low.png | Bin 0 -> 3221 bytes src/maemo/pixmaps/qgn_widg_datedit.png | Bin 0 -> 918 bytes src/maemo/pixmaps/stock_stop.svg | 334 +++++++ src/maemo/pixmaps/view-refresh.svg | 391 ++++++++ src/modest-main.c | 14 +- src/modest-tny-platform-factory.c | 16 +- src/modest-tny-platform-factory.h | 2 +- src/widgets/Makefile.am | 10 +- src/widgets/modest-combo-box.c | 1 + tests/Makefile.am | 4 +- 97 files changed, 14022 insertions(+), 61 deletions(-) create mode 100644 src/maemo/Makefile.am create mode 100644 src/maemo/modest-account-assistant.c create mode 100644 src/maemo/modest-account-assistant.h create mode 100644 src/maemo/modest-account-view-window.c create mode 100644 src/maemo/modest-account-view-window.h create mode 100644 src/maemo/modest-edit-msg-window.c create mode 100644 src/maemo/modest-edit-msg-window.h create mode 100644 src/maemo/modest-icon-names.h create mode 100644 src/maemo/modest-main-window.c create mode 100644 src/maemo/modest-main-window.h create mode 100644 src/maemo/modest-store-widget.c create mode 100644 src/maemo/modest-store-widget.h create mode 100644 src/maemo/modest-transport-widget.c create mode 100644 src/maemo/modest-transport-widget.h create mode 100644 src/maemo/modest-ui.c create mode 100644 src/maemo/pixmaps/back.svg create mode 100644 src/maemo/pixmaps/edit-delete.svg create mode 100644 src/maemo/pixmaps/folder-closed.png create mode 100644 src/maemo/pixmaps/folder-open.png create mode 100644 src/maemo/pixmaps/forward.svg create mode 100644 src/maemo/pixmaps/gnome-stock-mail-fwd.svg create mode 100644 src/maemo/pixmaps/gnome-stock-mail-new.svg create mode 100644 src/maemo/pixmaps/gnome-stock-mail-rpl.svg create mode 100644 src/maemo/pixmaps/go-next.svg create mode 100644 src/maemo/pixmaps/go-previous.svg create mode 100644 src/maemo/pixmaps/gtk-refresh.svg create mode 100644 src/maemo/pixmaps/internet-mail.svg create mode 100644 src/maemo/pixmaps/mail-forward.svg create mode 100644 src/maemo/pixmaps/mail-mark-junk.svg create mode 100644 src/maemo/pixmaps/mail-message-new.svg create mode 100644 src/maemo/pixmaps/mail-reply-all.svg create mode 100644 src/maemo/pixmaps/mail-reply-sender.svg create mode 100644 src/maemo/pixmaps/process-stop.svg create mode 100644 src/maemo/pixmaps/qgn_addr_icon_user_group.png create mode 100644 src/maemo/pixmaps/qgn_list_gene_attacpap.png create mode 100644 src/maemo/pixmaps/qgn_list_gene_fldr_clp.png create mode 100644 src/maemo/pixmaps/qgn_list_gene_fldr_cls.png create mode 100644 src/maemo/pixmaps/qgn_list_gene_fldr_exp.png create mode 100644 src/maemo/pixmaps/qgn_list_gene_fldr_opn.png create mode 100644 src/maemo/pixmaps/qgn_list_messagin.png create mode 100644 src/maemo/pixmaps/qgn_list_messagin_drafts.png create mode 100644 src/maemo/pixmaps/qgn_list_messagin_editor.png create mode 100644 src/maemo/pixmaps/qgn_list_messagin_hdr.png create mode 100644 src/maemo/pixmaps/qgn_list_messagin_hdr_encrypted.png create mode 100644 src/maemo/pixmaps/qgn_list_messagin_hdr_encrypted_high.png create mode 100644 src/maemo/pixmaps/qgn_list_messagin_hdr_encrypted_low.png create mode 100644 src/maemo/pixmaps/qgn_list_messagin_hdr_high.png create mode 100644 src/maemo/pixmaps/qgn_list_messagin_hdr_high_unread.png create mode 100644 src/maemo/pixmaps/qgn_list_messagin_hdr_low.png create mode 100644 src/maemo/pixmaps/qgn_list_messagin_hdr_low_unread.png create mode 100644 src/maemo/pixmaps/qgn_list_messagin_hdr_signed.png create mode 100644 src/maemo/pixmaps/qgn_list_messagin_hdr_signed_high.png create mode 100644 src/maemo/pixmaps/qgn_list_messagin_hdr_signed_low.png create mode 100644 src/maemo/pixmaps/qgn_list_messagin_hdr_unread.png create mode 100644 src/maemo/pixmaps/qgn_list_messagin_hdr_unread_encrypted.png create mode 100644 src/maemo/pixmaps/qgn_list_messagin_hdr_unread_encrypted_high.png create mode 100644 src/maemo/pixmaps/qgn_list_messagin_hdr_unread_encrypted_low.png create mode 100644 src/maemo/pixmaps/qgn_list_messagin_hdr_unread_signed.png create mode 100644 src/maemo/pixmaps/qgn_list_messagin_hdr_unread_signed_high.png create mode 100644 src/maemo/pixmaps/qgn_list_messagin_hdr_unread_signed_low.png create mode 100644 src/maemo/pixmaps/qgn_list_messagin_inbox.png create mode 100644 src/maemo/pixmaps/qgn_list_messagin_mail.png create mode 100644 src/maemo/pixmaps/qgn_list_messagin_mail_deleted.png create mode 100644 src/maemo/pixmaps/qgn_list_messagin_mail_encrypted_read.png create mode 100644 src/maemo/pixmaps/qgn_list_messagin_mail_encrypted_read_high.png create mode 100644 src/maemo/pixmaps/qgn_list_messagin_mail_encrypted_read_low.png create mode 100644 src/maemo/pixmaps/qgn_list_messagin_mail_encrypted_unread.png create mode 100644 src/maemo/pixmaps/qgn_list_messagin_mail_encrypted_unread_high.png create mode 100644 src/maemo/pixmaps/qgn_list_messagin_mail_encrypted_unread_low.png create mode 100644 src/maemo/pixmaps/qgn_list_messagin_mail_high.png create mode 100644 src/maemo/pixmaps/qgn_list_messagin_mail_high_unread.png create mode 100644 src/maemo/pixmaps/qgn_list_messagin_mail_low.png create mode 100644 src/maemo/pixmaps/qgn_list_messagin_mail_low_unread.png create mode 100644 src/maemo/pixmaps/qgn_list_messagin_mail_signed_read.png create mode 100644 src/maemo/pixmaps/qgn_list_messagin_mail_signed_read_high.png create mode 100644 src/maemo/pixmaps/qgn_list_messagin_mail_signed_read_low.png create mode 100644 src/maemo/pixmaps/qgn_list_messagin_mail_signed_unread.png create mode 100644 src/maemo/pixmaps/qgn_list_messagin_mail_signed_unread_high.png create mode 100644 src/maemo/pixmaps/qgn_list_messagin_mail_signed_unread_low.png create mode 100644 src/maemo/pixmaps/qgn_list_messagin_mail_unread.png create mode 100644 src/maemo/pixmaps/qgn_list_messagin_outbox.png create mode 100644 src/maemo/pixmaps/qgn_list_messagin_sent.png create mode 100644 src/maemo/pixmaps/qgn_list_messagin_viewer.png create mode 100644 src/maemo/pixmaps/qgn_list_messaging_high.png create mode 100644 src/maemo/pixmaps/qgn_list_messaging_low.png create mode 100644 src/maemo/pixmaps/qgn_widg_datedit.png create mode 100644 src/maemo/pixmaps/stock_stop.svg create mode 100644 src/maemo/pixmaps/view-refresh.svg diff --git a/COPYING b/COPYING index 042dc50..d60c31a 100644 --- a/COPYING +++ b/COPYING @@ -1,28 +1,340 @@ -Copyright (c) 2006, Nokia Corporation -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -* Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -* Neither the name of the Nokia Corporation nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS -IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED -TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A -PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER -OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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 of the License, 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. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/configure.ac b/configure.ac index b2c1766..dfef1a0 100644 --- a/configure.ac +++ b/configure.ac @@ -1,5 +1,5 @@ dnl configure.ac for modest -dnl Time-stamp: <2006-08-08 12:21:25 (djcb)> +dnl Time-stamp: <2006-11-28 17:26:13 (djcb)> dnl written by Dirk-Jan C. Binnema AC_INIT([modest],[0.0.1],[http://maemo.org]) @@ -42,39 +42,41 @@ AC_SUBST(MODEST_GSTUFF_LIBS) dnl dnl now, determine what to build AC_MSG_NOTICE([Determining what platform to build]) -dnl PKG_CHECK_MODULES(MODEST_LIBTINYMAIL_MAEMO,libosso,[with_platform=hildon],true) +PKG_CHECK_MODULES(MODEST_LIBTINYMAIL_MAEMO,libosso,[with_platform=maemo],true) + AC_ARG_WITH(platform, [--with-platform=gtk platform to build for [gtk]], [case "${with_platform}" in - gtk) MODEST_PLATFORM_DIR=gtk;; - hildon) MODEST_PLATFORM_DIR=hildon;; - *) MODEST_PLATFORM_DIR=${with_platform} -esac], [MODEST_PLATFORM_DIR=gtk + gtk) MODEST_PLATFORM=gtk;; + maemo) MODEST_PLATFORM=maemo;; + *) MODEST_PLATFORM=${with_platform} +esac], [MODEST_PLATFORM=gtk with_platform=gtk]) -AC_SUBST(MODEST_PLATFORM_DIR) - -dnl tempororily change hildon into gtk... -if test "x$with_platform" = "xhildon"; then - AC_MSG_WARN([Hildon frontend is currently disabled]) - with_platform="gtk" -fi +AC_SUBST(MODEST_PLATFORM) -if test "x$with_platform" = "xhildon"; then - PKG_CHECK_MODULES(MODEST_LIBTINYMAIL_MAEMO,libtinymail-maemo-1.0 hildon-libs hildon-lgpl libosso) + +if test "x$with_platform" = "xmaemo"; then + PKG_CHECK_MODULES(MODEST_LIBTINYMAIL_MAEMO,libtinymail-maemo-1.0 hildon-libs libosso) AC_SUBST(MODEST_LIBTINYMAIL_MAEMO_CFLAGS) AC_SUBST(MODEST_LIBTINYMAIL_MAEMO_LIBS) + MODEST_PLATFORM_ID=2 else PKG_CHECK_MODULES(MODEST_LIBTINYMAIL_GNOME_DESKTOP,libtinymail-gnome-desktop-1.0 libnm_glib glib-2.0 >= 2.8) AC_SUBST(MODEST_LIBTINYMAIL_GNOME_DESKTOP_CFLAGS) AC_SUBST(MODEST_LIBTINYMAIL_GNOME_DESKTOP_LIBS) + MODEST_PLATFORM_ID=1 fi +dnl 1==>gtk, 2==>maemo +AC_SUBST(MODEST_PLATFORM_ID) + AC_OUTPUT([ po/Makefile.in Makefile src/Makefile src/gtk/Makefile +src/maemo/Makefile src/widgets/Makefile docs/Makefile docs/reference/Makefile diff --git a/src/Makefile.am b/src/Makefile.am index c79b320..181ef2c 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,16 +1,18 @@ # # Makefile.am -# Time-stamp: <2006-11-26 19:23:53 (djcb)> -SUBDIRS=$(MODEST_PLATFORM_DIR) widgets +# Time-stamp: <2006-11-28 17:42:40 (djcb)> +SUBDIRS=$(MODEST_PLATFORM) widgets DIST_SUBDIRS = widgets gtk INCLUDES=\ $(MODEST_GSTUFF_CFLAGS)\ $(MODEST_LIBTINYMAIL_GNOME_DESKTOP_CFLAGS) \ $(MODEST_LIBTINYMAIL_MAEMO_CFLAGS) \ - -I$(MODEST_PLATFORM_DIR) \ + -I$(MODEST_PLATFORM) \ -DPREFIX=\"@prefix@\" \ - -DMODESTLOCALEDIR=\""$(modestlocaledir)"\" + -DMODESTLOCALEDIR=\""$(modestlocaledir)"\" \ + -DMODEST_PLATFORM=\"$(MODEST_PLATFORM)\" \ + -DMODEST_PLATFORM_ID=$(MODEST_PLATFORM_ID) BUILT_SOURCES = modest-marshal.c modest-marshal.h @@ -64,7 +66,7 @@ modest_LDADD = \ $(MODEST_GSTUFF_LIBS) \ $(MODEST_LIBTINYMAIL_GNOME_DESKTOP_LIBS) \ $(MODEST_LIBTINYMAIL_MAEMO_LIBS) \ - $(MODEST_PLATFORM_DIR)/libmodest-ui.la \ + $(MODEST_PLATFORM)/libmodest-ui.la \ widgets/libmodest-widgets.la EXTRA_DIST=modest-marshal.list diff --git a/src/maemo/Makefile.am b/src/maemo/Makefile.am new file mode 100644 index 0000000..2c5db65 --- /dev/null +++ b/src/maemo/Makefile.am @@ -0,0 +1,47 @@ +# +# Makefile.am +# Time-stamp: <2006-07-29 20:47:31 (djcb)> +# +# +# use Automake 'trick' ==> convenience static libraries, which +# won't be installed, just for linking +# +INCLUDES=\ + $(MODEST_GSTUFF_CFLAGS) \ + $(MODEST_LIBTINYMAIL_GNOME_DESKTOP_CFLAGS) \ + -I ${top_srcdir}/src \ + -DPREFIX=\"@prefix@\" \ + -Wall + +noinst_LTLIBRARIES=\ + libmodest-ui.la + +PIXMAP_FILES=\ + pixmaps/*.png \ + pixmaps/*.svg + +libmodest_ui_la_SOURCES= \ + modest-ui.c \ + modest-icon-names.h \ + modest-main-window.h \ + modest-main-window.c \ + modest-account-view-window.c \ + modest-account-view-window.h \ + modest-edit-msg-window.c \ + modest-edit-msg-window.h \ + modest-transport-widget.c \ + modest-transport-widget.h \ + modest-store-widget.c \ + modest-store-widget.h + +# modest-account-assistant.c +# modest-account-assistant.h + +LDADD = \ + $(MODEST_GSTUFF_LIBS) \ + $(MODEST_LIBTINYMAIL_GNOME_DESKTOP_LIBS) + +EXTRA_DIST=pixmaps/* + +pixmapdir = $(prefix)/share/modest/pixmaps +pixmap_DATA = $(PIXMAP_FILES) diff --git a/src/maemo/modest-account-assistant.c b/src/maemo/modest-account-assistant.c new file mode 100644 index 0000000..75fd1fd --- /dev/null +++ b/src/maemo/modest-account-assistant.c @@ -0,0 +1,602 @@ +/* Copyright (c) 2006, Nokia Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Nokia Corporation nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER + * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include "modest-account-assistant.h" +#include "modest-store-widget.h" +#include "modest-transport-widget.h" + +#include + +/* 'private'/'protected' functions */ +static void modest_account_assistant_class_init (ModestAccountAssistantClass *klass); +static void modest_account_assistant_init (ModestAccountAssistant *obj); +static void modest_account_assistant_finalize (GObject *obj); + +/* list my signals */ +enum { + /* MY_SIGNAL_1, */ + /* MY_SIGNAL_2, */ + LAST_SIGNAL +}; + +typedef struct _ModestAccountAssistantPrivate ModestAccountAssistantPrivate; +struct _ModestAccountAssistantPrivate { + + ModestWidgetFactory *factory; + ModestAccountMgr *account_mgr; + + GtkWidget *account_name; + GtkWidget *fullname; + GtkWidget *email; + + GtkWidget *store_widget; + GtkWidget *transport_widget; + + GtkWidget *transport_holder; + GtkWidget *store_holder; +}; + +#define MODEST_ACCOUNT_ASSISTANT_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE((o), \ + MODEST_TYPE_ACCOUNT_ASSISTANT, \ + ModestAccountAssistantPrivate)) +/* globals */ +static GtkAssistantClass *parent_class = NULL; + +/* uncomment the following if you have defined any signals */ +/* static guint signals[LAST_SIGNAL] = {0}; */ + +GType +modest_account_assistant_get_type (void) +{ + static GType my_type = 0; + if (!my_type) { + static const GTypeInfo my_info = { + sizeof(ModestAccountAssistantClass), + NULL, /* base init */ + NULL, /* base finalize */ + (GClassInitFunc) modest_account_assistant_class_init, + NULL, /* class finalize */ + NULL, /* class data */ + sizeof(ModestAccountAssistant), + 1, /* n_preallocs */ + (GInstanceInitFunc) modest_account_assistant_init, + NULL + }; + my_type = g_type_register_static (GTK_TYPE_ASSISTANT, + "ModestAccountAssistant", + &my_info, 0); + } + return my_type; +} + +static void +modest_account_assistant_class_init (ModestAccountAssistantClass *klass) +{ + GObjectClass *gobject_class; + gobject_class = (GObjectClass*) klass; + + parent_class = g_type_class_peek_parent (klass); + gobject_class->finalize = modest_account_assistant_finalize; + + g_type_class_add_private (gobject_class, sizeof(ModestAccountAssistantPrivate)); + + /* signal definitions go here, e.g.: */ +/* signals[MY_SIGNAL_1] = */ +/* g_signal_new ("my_signal_1",....); */ +/* signals[MY_SIGNAL_2] = */ +/* g_signal_new ("my_signal_2",....); */ +/* etc. */ +} + + + +static void +add_intro_page (ModestAccountAssistant *assistant) +{ + GtkWidget *page, *label; + + page = gtk_vbox_new (FALSE, 6); + + label = gtk_label_new ( + _("Welcome to the account assistant\n\n" + "It will help to set up a new e-mail account\n")); + gtk_box_pack_start (GTK_BOX(page), label, FALSE, FALSE, 6); + gtk_widget_show_all (page); + + gtk_assistant_append_page (GTK_ASSISTANT(assistant), page); + + gtk_assistant_set_page_title (GTK_ASSISTANT(assistant), page, + _("Modest Account Assistant")); + gtk_assistant_set_page_type (GTK_ASSISTANT(assistant), page, + GTK_ASSISTANT_PAGE_INTRO); + gtk_assistant_set_page_complete (GTK_ASSISTANT(assistant), + page, TRUE); +} + + +static void +set_current_page_complete (ModestAccountAssistant *self, gboolean complete) +{ + GtkWidget *page; + gint pageno; + + pageno = gtk_assistant_get_current_page (GTK_ASSISTANT(self)); + page = gtk_assistant_get_nth_page (GTK_ASSISTANT(self), pageno); + + gtk_assistant_set_page_complete (GTK_ASSISTANT(self), page, complete); +} + + +static void +identity_page_update_completeness (GtkEditable *editable, + ModestAccountAssistant *self) +{ + ModestAccountAssistantPrivate *priv; + const gchar *txt; + + priv = MODEST_ACCOUNT_ASSISTANT_GET_PRIVATE(self); + + txt = gtk_entry_get_text (GTK_ENTRY(priv->fullname)); + if (!txt || strlen(txt) == 0) { + set_current_page_complete (self, FALSE); + return; + } + + /* FIXME: regexp check for email address */ + txt = gtk_entry_get_text (GTK_ENTRY(priv->email)); + if (!txt || strlen(txt) == 0) { + set_current_page_complete (self, FALSE); + return; + } + set_current_page_complete (self, TRUE); +} + + +static void +add_identity_page (ModestAccountAssistant *self) +{ + GtkWidget *page, *label, *table; + ModestAccountAssistantPrivate *priv; + + priv = MODEST_ACCOUNT_ASSISTANT_GET_PRIVATE(self); + + priv->fullname = gtk_entry_new_with_max_length (40); + priv->email = gtk_entry_new_with_max_length (40); + + page = gtk_vbox_new (FALSE, 6); + + label = gtk_label_new ( + _("Please enter your name and your e-mail address below.\n\n")); + gtk_box_pack_start (GTK_BOX(page), label, FALSE, FALSE, 6); + + table = gtk_table_new (2,2, FALSE); + gtk_table_attach_defaults (GTK_TABLE(table),gtk_label_new (_("Full name")), + 0,1,0,1); + gtk_table_attach_defaults (GTK_TABLE(table),gtk_label_new (_("E-mail address")), + 0,1,1,2); + gtk_table_attach_defaults (GTK_TABLE(table),priv->fullname, + 1,2,0,1); + gtk_table_attach_defaults (GTK_TABLE(table),priv->email, + 1,2,1,2); + + g_signal_connect (G_OBJECT(priv->fullname), "changed", + G_CALLBACK(identity_page_update_completeness), + self); + g_signal_connect (G_OBJECT(priv->email), "changed", + G_CALLBACK(identity_page_update_completeness), + self); + + gtk_box_pack_start (GTK_BOX(page), table, FALSE, FALSE, 6); + gtk_widget_show_all (page); + + gtk_assistant_append_page (GTK_ASSISTANT(self), page); + + gtk_assistant_set_page_title (GTK_ASSISTANT(self), page, + _("Identity")); + gtk_assistant_set_page_type (GTK_ASSISTANT(self), page, + GTK_ASSISTANT_PAGE_INTRO); + gtk_assistant_set_page_complete (GTK_ASSISTANT(self), + page, FALSE); +} + + +static void +on_receiving_combo_box_changed (GtkComboBox *combo, ModestAccountAssistant *self) +{ + ModestAccountAssistantPrivate *priv; + gchar *chosen; + + priv = MODEST_ACCOUNT_ASSISTANT_GET_PRIVATE(self); + chosen = gtk_combo_box_get_active_text (GTK_COMBO_BOX(combo)); + + if (priv->store_widget) + gtk_container_remove (GTK_CONTAINER(priv->store_holder), + priv->store_widget); + + priv->store_widget = modest_store_widget_new (priv->factory, chosen); + + gtk_container_add (GTK_CONTAINER(priv->store_holder), + priv->store_widget); + + gtk_widget_show_all (priv->store_holder); + +} + +static void +add_receiving_page (ModestAccountAssistant *self) +{ + GtkWidget *page, *box, *combo; + + ModestAccountAssistantPrivate *priv; + + priv = MODEST_ACCOUNT_ASSISTANT_GET_PRIVATE(self); + page = gtk_vbox_new (FALSE, 6); + + gtk_box_pack_start (GTK_BOX(page), + gtk_label_new ( + _("Please select among the following options")), + FALSE, FALSE, 6); + box = gtk_hbox_new (FALSE, 6); + gtk_box_pack_start (GTK_BOX(box), + gtk_label_new(_("Server type")), + FALSE,FALSE,6); + + combo = modest_widget_factory_get_combo_box (priv->factory, + MODEST_COMBO_BOX_TYPE_STORE_PROTOS); + g_signal_connect (G_OBJECT(combo), "changed", + G_CALLBACK(on_receiving_combo_box_changed), self); + + gtk_box_pack_start (GTK_BOX(box), combo, FALSE,FALSE,6); + gtk_box_pack_start (GTK_BOX(page), box, FALSE,FALSE, 6); + + gtk_box_pack_start (GTK_BOX(page), gtk_hseparator_new(), FALSE, FALSE, 0); + + priv->store_holder = gtk_hbox_new (FALSE, 0); + gtk_box_pack_start (GTK_BOX(page), priv->store_holder, + TRUE, TRUE, 0); + + gtk_assistant_append_page (GTK_ASSISTANT(self), page); + + gtk_assistant_set_page_title (GTK_ASSISTANT(self), page, + _("Receiving mail")); + gtk_assistant_set_page_type (GTK_ASSISTANT(self), page, + GTK_ASSISTANT_PAGE_INTRO); + gtk_assistant_set_page_complete (GTK_ASSISTANT(self), + page, TRUE); + gtk_widget_show_all (page); +} + + + + +static void +on_sending_combo_box_changed (GtkComboBox *combo, ModestAccountAssistant *self) +{ + ModestAccountAssistantPrivate *priv; + gchar *chosen; + + priv = MODEST_ACCOUNT_ASSISTANT_GET_PRIVATE(self); + + chosen = gtk_combo_box_get_active_text (GTK_COMBO_BOX(combo)); + + if (priv->transport_widget) + gtk_container_remove (GTK_CONTAINER(priv->transport_holder), + priv->transport_widget); + + priv->transport_widget = modest_transport_widget_new (priv->factory, + chosen); + + gtk_container_add (GTK_CONTAINER(priv->transport_holder), + priv->transport_widget); + + gtk_widget_show_all (priv->transport_holder); +} + + + +static void +add_sending_page (ModestAccountAssistant *self) +{ + GtkWidget *page, *box, *combo; + + ModestAccountAssistantPrivate *priv; + + priv = MODEST_ACCOUNT_ASSISTANT_GET_PRIVATE(self); + page = gtk_vbox_new (FALSE, 6); + + gtk_box_pack_start (GTK_BOX(page), + gtk_label_new ( + _("Please select among the following options")), + FALSE, FALSE, 0); + box = gtk_hbox_new (FALSE, 0); + gtk_box_pack_start (GTK_BOX(box), + gtk_label_new(_("Server type")), + FALSE,FALSE,0); + + combo = modest_widget_factory_get_combo_box (priv->factory, + MODEST_COMBO_BOX_TYPE_TRANSPORT_PROTOS); + g_signal_connect (G_OBJECT(combo), "changed", + G_CALLBACK(on_sending_combo_box_changed), self); + + gtk_box_pack_start (GTK_BOX(box), combo, FALSE,FALSE,0); + gtk_box_pack_start (GTK_BOX(page), box, FALSE,FALSE, 0); + + gtk_box_pack_start (GTK_BOX(page), gtk_hseparator_new(), FALSE, FALSE, 0); + + priv->transport_holder = gtk_hbox_new (FALSE, 0); + gtk_box_pack_start (GTK_BOX(page), priv->transport_holder, + FALSE, FALSE, 0); + + gtk_assistant_append_page (GTK_ASSISTANT(self), page); + + gtk_assistant_set_page_title (GTK_ASSISTANT(self), page, + _("Sending mail")); + gtk_assistant_set_page_type (GTK_ASSISTANT(self), page, + GTK_ASSISTANT_PAGE_INTRO); + gtk_assistant_set_page_complete (GTK_ASSISTANT(self), + page, TRUE); + gtk_widget_show_all (page); +} + + + +static void +add_final_page (ModestAccountAssistant *self) +{ + GtkWidget *page, *box; + ModestAccountAssistantPrivate *priv; + + priv = MODEST_ACCOUNT_ASSISTANT_GET_PRIVATE(self); + page = gtk_vbox_new (FALSE, 6); + + gtk_box_pack_start (GTK_BOX(page), + gtk_label_new ( + _("We're almost done. Press 'Apply' to store this new account")), + FALSE, FALSE, 6); + box = gtk_hbox_new (FALSE, 6); + priv->account_name = + gtk_entry_new_with_max_length (40); + gtk_entry_set_text (GTK_ENTRY(priv->account_name), + gtk_entry_get_text(GTK_ENTRY(priv->email))); + gtk_box_pack_start (GTK_BOX(box),gtk_label_new(_("Account name:")), + FALSE,FALSE,6); + gtk_box_pack_start (GTK_BOX(box),priv->account_name , FALSE,FALSE,6); + + gtk_box_pack_start (GTK_BOX(page), box, FALSE, FALSE, 6); + + gtk_assistant_append_page (GTK_ASSISTANT(self), page); + + gtk_assistant_set_page_title (GTK_ASSISTANT(self), page, + _("Account Management")); + gtk_assistant_set_page_type (GTK_ASSISTANT(self), page, + GTK_ASSISTANT_PAGE_CONFIRM); + + gtk_assistant_set_page_complete (GTK_ASSISTANT(self), + page, TRUE); + gtk_widget_show_all (page); +} + + + + +static void +modest_account_assistant_init (ModestAccountAssistant *obj) +{ + ModestAccountAssistantPrivate *priv; + + priv = MODEST_ACCOUNT_ASSISTANT_GET_PRIVATE(obj); + priv->factory = NULL; + priv->account_mgr = NULL; + + priv->store_widget = NULL; + priv->transport_widget = NULL; +} + +static void +modest_account_assistant_finalize (GObject *obj) +{ + ModestAccountAssistantPrivate *priv; + + priv = MODEST_ACCOUNT_ASSISTANT_GET_PRIVATE(obj); + + if (priv->factory) { + g_object_unref (G_OBJECT(priv->factory)); + priv->factory = NULL; + } + + if (priv->account_mgr) { + g_object_unref (G_OBJECT(priv->account_mgr)); + priv->account_mgr = NULL; + } + + + + G_OBJECT_CLASS(parent_class)->finalize (obj); +} + +static void +on_cancel (ModestAccountAssistant *self, gpointer user_data) +{ + GtkWidget *label; + GtkWidget *dialog; + int response; + + label = gtk_label_new (_("Are you sure you want to cancel\n" + "setting up a new account?")); + + dialog = gtk_dialog_new_with_buttons (_("Cancel"), + GTK_WINDOW(self), + GTK_DIALOG_MODAL|GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_STOCK_YES, GTK_RESPONSE_ACCEPT, + GTK_STOCK_NO, GTK_RESPONSE_CANCEL, + NULL); + + gtk_box_pack_start (GTK_BOX(GTK_DIALOG(dialog)->vbox), + label, FALSE, FALSE, 6); + + gtk_widget_show_all ((GTK_DIALOG(dialog)->vbox)); + + gtk_window_set_resizable (GTK_WINDOW(dialog), FALSE); + + response = gtk_dialog_run (GTK_DIALOG(dialog)); + gtk_widget_destroy (dialog); + + switch (response) { + case GTK_RESPONSE_ACCEPT: + /* close the assistant */ + gtk_widget_destroy (GTK_WIDGET(self)); + break; + case GTK_RESPONSE_CANCEL: + /* don't do anything */ + break; + default: g_assert_not_reached (); + + }; +} + +static const gchar* +get_account_name (ModestAccountAssistant *self) +{ + ModestAccountAssistantPrivate *priv; + priv = MODEST_ACCOUNT_ASSISTANT_GET_PRIVATE(self); + + return gtk_entry_get_text (GTK_ENTRY(priv->account_name)); +} + +static const gchar* +get_fullname (ModestAccountAssistant *self) +{ + ModestAccountAssistantPrivate *priv; + priv = MODEST_ACCOUNT_ASSISTANT_GET_PRIVATE(self); + + return gtk_entry_get_text (GTK_ENTRY(priv->fullname)); +} + + + +static const gchar* +get_email (ModestAccountAssistant *self) +{ + ModestAccountAssistantPrivate *priv; + priv = MODEST_ACCOUNT_ASSISTANT_GET_PRIVATE(self); + + return gtk_entry_get_text (GTK_ENTRY(priv->email)); +} + + + +static void +on_apply (ModestAccountAssistant *self, gpointer user_data) +{ + ModestAccountAssistantPrivate *priv; + gchar *store_name; + const gchar *account_name; + ModestStoreWidget *store; + + priv = MODEST_ACCOUNT_ASSISTANT_GET_PRIVATE(self); + + /* create account */ + + /* create server account -> store */ + store = MODEST_STORE_WIDGET(priv->store_widget); + store_name = g_strdup_printf ("%s:%s@%s", + modest_store_widget_get_proto (store), + modest_store_widget_get_username (store), + modest_store_widget_get_servername (store)); + + modest_account_mgr_add_server_account (priv->account_mgr, + store_name, + modest_store_widget_get_servername (store), + modest_store_widget_get_username (store), + NULL, + modest_store_widget_get_proto (store)); + + /* create server account -> transport */ + account_name = get_account_name (self); + modest_account_mgr_add_account (priv->account_mgr, + account_name, + store_name, + NULL, NULL); + modest_account_mgr_set_string (priv->account_mgr, + account_name, + MODEST_ACCOUNT_FULLNAME, + get_fullname(self), FALSE, NULL); + modest_account_mgr_set_string (priv->account_mgr, + account_name, + MODEST_ACCOUNT_EMAIL, + get_email(self), FALSE, NULL); + + g_free (store_name); +} + + + +GtkWidget* +modest_account_assistant_new (ModestAccountMgr *account_mgr, ModestWidgetFactory *factory) +{ + GObject *obj; + ModestAccountAssistant *self; + ModestAccountAssistantPrivate *priv; + + g_return_val_if_fail (factory, NULL); + g_return_val_if_fail (account_mgr, NULL); + + obj = g_object_new(MODEST_TYPE_ACCOUNT_ASSISTANT, NULL); + self = MODEST_ACCOUNT_ASSISTANT(obj); + + priv = MODEST_ACCOUNT_ASSISTANT_GET_PRIVATE(self); + + g_object_ref (factory); + priv->factory = factory; + + g_object_ref (account_mgr); + priv->account_mgr = account_mgr; + + add_intro_page (self); + add_identity_page (self); + add_receiving_page (self); + add_sending_page (self); + add_final_page (self); + + gtk_assistant_set_current_page (GTK_ASSISTANT(self), 0); + gtk_window_set_title (GTK_WINDOW(self), + _("Modest Account Wizard")); + gtk_window_set_resizable (GTK_WINDOW(self), TRUE); + gtk_window_set_default_size (GTK_WINDOW(self), 400, 400); + + gtk_window_set_modal (GTK_WINDOW(self), TRUE); + + g_signal_connect (G_OBJECT(self), "apply", + G_CALLBACK(on_apply), NULL); + g_signal_connect (G_OBJECT(self), "cancel", + G_CALLBACK(on_cancel), NULL); + + return GTK_WIDGET(self); +} diff --git a/src/maemo/modest-account-assistant.h b/src/maemo/modest-account-assistant.h new file mode 100644 index 0000000..bc29ce3 --- /dev/null +++ b/src/maemo/modest-account-assistant.h @@ -0,0 +1,71 @@ +/* Copyright (c) 2006, Nokia Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Nokia Corporation nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER + * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef __MODEST_ACCOUNT_ASSISTANT_H__ +#define __MODEST_ACCOUNT_ASSISTANT_H__ + +#include +#include +#include + +G_BEGIN_DECLS + +/* standard convenience macros */ +#define MODEST_TYPE_ACCOUNT_ASSISTANT (modest_account_assistant_get_type()) +#define MODEST_ACCOUNT_ASSISTANT(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),MODEST_TYPE_ACCOUNT_ASSISTANT,ModestAccountAssistant)) +#define MODEST_ACCOUNT_ASSISTANT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),MODEST_TYPE_ACCOUNT_ASSISTANT,ModestAccountAssistantClass)) +#define MODEST_IS_ACCOUNT_ASSISTANT(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),MODEST_TYPE_ACCOUNT_ASSISTANT)) +#define MODEST_IS_ACCOUNT_ASSISTANT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),MODEST_TYPE_ACCOUNT_ASSISTANT)) +#define MODEST_ACCOUNT_ASSISTANT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj),MODEST_TYPE_ACCOUNT_ASSISTANT,ModestAccountAssistantClass)) + +typedef struct _ModestAccountAssistant ModestAccountAssistant; +typedef struct _ModestAccountAssistantClass ModestAccountAssistantClass; + +struct _ModestAccountAssistant { + GtkAssistant parent; + /* insert public members, if any */ +}; + +struct _ModestAccountAssistantClass { + GtkAssistantClass parent_class; + /* insert signal callback declarations, eg. */ + /* void (* my_event) (ModestAccountAssistant* obj); */ +}; + +/* member functions */ +GType modest_account_assistant_get_type (void) G_GNUC_CONST; + +GtkWidget* modest_account_assistant_new (ModestAccountMgr* account_mgr, + ModestWidgetFactory *factory); + + +G_END_DECLS + +#endif /* __MODEST_ACCOUNT_ASSISTANT_H__ */ + diff --git a/src/maemo/modest-account-view-window.c b/src/maemo/modest-account-view-window.c new file mode 100644 index 0000000..b24cbf8 --- /dev/null +++ b/src/maemo/modest-account-view-window.c @@ -0,0 +1,304 @@ +/* Copyright (c) 2006, Nokia Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Nokia Corporation nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER + * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include "modest-account-view-window.h" +//#include "modest-account-assistant.h" +#include "modest-tny-platform-factory.h" + +/* 'private'/'protected' functions */ +static void modest_account_view_window_class_init (ModestAccountViewWindowClass *klass); +static void modest_account_view_window_init (ModestAccountViewWindow *obj); +static void modest_account_view_window_finalize (GObject *obj); + +/* list my signals */ +enum { + /* MY_SIGNAL_1, */ + /* MY_SIGNAL_2, */ + LAST_SIGNAL +}; + + +typedef struct _ModestAccountViewWindowPrivate ModestAccountViewWindowPrivate; +struct _ModestAccountViewWindowPrivate { + ModestWidgetFactory *widget_factory; + GtkWidget *edit_button, *remove_button; +}; +#define MODEST_ACCOUNT_VIEW_WINDOW_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE((o), \ + MODEST_TYPE_ACCOUNT_VIEW_WINDOW, \ + ModestAccountViewWindowPrivate)) +/* globals */ +static GtkWindowClass *parent_class = NULL; + +/* uncomment the following if you have defined any signals */ +/* static guint signals[LAST_SIGNAL] = {0}; */ + +GType +modest_account_view_window_get_type (void) +{ + static GType my_type = 0; + if (!my_type) { + static const GTypeInfo my_info = { + sizeof(ModestAccountViewWindowClass), + NULL, /* base init */ + NULL, /* base finalize */ + (GClassInitFunc) modest_account_view_window_class_init, + NULL, /* class finalize */ + NULL, /* class data */ + sizeof(ModestAccountViewWindow), + 1, /* n_preallocs */ + (GInstanceInitFunc) modest_account_view_window_init, + NULL + }; + my_type = g_type_register_static (GTK_TYPE_WINDOW, + "ModestAccountViewWindow", + &my_info, 0); + } + return my_type; +} + +static void +modest_account_view_window_class_init (ModestAccountViewWindowClass *klass) +{ + GObjectClass *gobject_class; + gobject_class = (GObjectClass*) klass; + + parent_class = g_type_class_peek_parent (klass); + gobject_class->finalize = modest_account_view_window_finalize; + + g_type_class_add_private (gobject_class, sizeof(ModestAccountViewWindowPrivate)); + + /* signal definitions go here, e.g.: */ +/* signals[MY_SIGNAL_1] = */ +/* g_signal_new ("my_signal_1",....); */ +/* signals[MY_SIGNAL_2] = */ +/* g_signal_new ("my_signal_2",....); */ +/* etc. */ +} + +static void +modest_account_view_window_init (ModestAccountViewWindow *obj) +{ + ModestAccountViewWindowPrivate *priv; + + priv = MODEST_ACCOUNT_VIEW_WINDOW_GET_PRIVATE(obj); + + priv->widget_factory = NULL; +} + +static void +modest_account_view_window_finalize (GObject *obj) +{ + ModestAccountViewWindowPrivate *priv; + + priv = MODEST_ACCOUNT_VIEW_WINDOW_GET_PRIVATE(obj); + + if (priv->widget_factory) { + g_object_unref (G_OBJECT(priv->widget_factory)); + priv->widget_factory = NULL; + } + + G_OBJECT_CLASS(parent_class)->finalize (obj); +} + + +static void +on_selection_changed (GtkTreeSelection *sel, ModestAccountViewWindow *self) +{ + ModestAccountViewWindowPrivate *priv; + GtkTreeModel *model; + GtkTreeIter iter; + gboolean has_selection; + + priv = MODEST_ACCOUNT_VIEW_WINDOW_GET_PRIVATE(self); + + has_selection = + gtk_tree_selection_get_selected (sel, &model, &iter); + + gtk_widget_set_sensitive (priv->edit_button, has_selection); + gtk_widget_set_sensitive (priv->remove_button, has_selection); +} + + + +static void +on_remove_button_clicked (GtkWidget *button, ModestAccountViewWindow *self) +{ + g_message (__FUNCTION__); +} + +static void +on_edit_button_clicked (GtkWidget *button, ModestAccountViewWindow *self) +{ + g_message (__FUNCTION__); +} + +static void +on_add_button_clicked (GtkWidget *button, ModestAccountViewWindow *self) +{ + GtkWidget *assistant; + ModestAccountViewWindowPrivate *priv; + TnyPlatformFactory *fact; + ModestAccountMgr *account_mgr; + + priv = MODEST_ACCOUNT_VIEW_WINDOW_GET_PRIVATE(self); + fact = modest_tny_platform_factory_get_instance (); + account_mgr = modest_tny_platform_factory_get_modest_account_mgr_instance (fact); +/* FIXME: + assistant = modest_account_assistant_new (account_mgr, + priv->widget_factory); + gtk_window_set_transient_for (GTK_WINDOW(assistant), + GTK_WINDOW(self)); + + gtk_widget_show (GTK_WIDGET(assistant)); +*/ +} + + +static void +on_close_button_clicked (GtkWidget *button, ModestAccountViewWindow *self) +{ + gtk_widget_destroy (GTK_WIDGET(self)); +} + + + +static GtkWidget* +button_box_new (ModestAccountViewWindow *self) +{ + + GtkWidget *button_box; + GtkWidget *add_button, *remove_button, *edit_button; + ModestAccountViewWindowPrivate *priv; + + priv = MODEST_ACCOUNT_VIEW_WINDOW_GET_PRIVATE(self); + + button_box = gtk_vbutton_box_new (); + + add_button = gtk_button_new_from_stock(GTK_STOCK_ADD); + remove_button = gtk_button_new_from_stock(GTK_STOCK_REMOVE); + edit_button = gtk_button_new_from_stock(GTK_STOCK_EDIT); + + g_signal_connect (G_OBJECT(add_button), "clicked", + G_CALLBACK(on_add_button_clicked), + self); + g_signal_connect (G_OBJECT(remove_button), "clicked", + G_CALLBACK(on_remove_button_clicked), + self); + g_signal_connect (G_OBJECT(edit_button), "clicked", + G_CALLBACK(on_edit_button_clicked), + self); + + gtk_box_pack_start (GTK_BOX(button_box), add_button, FALSE, FALSE,2); + gtk_box_pack_start (GTK_BOX(button_box), remove_button, FALSE, FALSE,2); + gtk_box_pack_start (GTK_BOX(button_box), edit_button, FALSE, FALSE,2); + + gtk_widget_set_sensitive (edit_button, FALSE); + gtk_widget_set_sensitive (remove_button, FALSE); + + /* remember these, so we can deactivate them when nothing is + * selected */ + priv->remove_button = remove_button; + priv->edit_button = edit_button; + + return button_box; +} + + +static GtkWidget* +window_vbox_new (ModestAccountViewWindow *self) +{ + ModestAccountViewWindowPrivate *priv; + GtkTreeSelection *sel; + GtkWidget *main_hbox, *main_vbox, *button_box; + GtkWidget *close_button; + GtkWidget *close_hbox; + ModestAccountView *account_view; + + priv = MODEST_ACCOUNT_VIEW_WINDOW_GET_PRIVATE(self); + + main_vbox = gtk_vbox_new (FALSE, 6); + main_hbox = gtk_hbox_new (FALSE, 6); + + account_view = modest_widget_factory_get_account_view (priv->widget_factory); + gtk_widget_set_size_request (GTK_WIDGET(account_view), 300, 400); + + sel = gtk_tree_view_get_selection (GTK_TREE_VIEW(account_view)); + g_signal_connect (G_OBJECT(sel), "changed", G_CALLBACK(on_selection_changed), + self); + + button_box = button_box_new (self); + + gtk_box_pack_start (GTK_BOX(main_hbox), GTK_WIDGET(account_view), TRUE, TRUE, 2); + gtk_box_pack_start (GTK_BOX(main_hbox), button_box, FALSE, FALSE,2); + + gtk_box_pack_start (GTK_BOX(main_vbox), main_hbox, TRUE, TRUE, 2); + + + close_button = gtk_button_new_from_stock(GTK_STOCK_CLOSE); + g_signal_connect (G_OBJECT(close_button), "clicked", + G_CALLBACK(on_close_button_clicked), + self); + + close_hbox = gtk_hbox_new (FALSE, 2); + gtk_box_pack_end (GTK_BOX(close_hbox), + close_button, FALSE, FALSE,2); + gtk_box_pack_end (GTK_BOX(main_vbox), close_hbox, FALSE, FALSE,2); + + gtk_widget_show_all (main_vbox); + return main_vbox; +} + + +GtkWidget* +modest_account_view_window_new (ModestWidgetFactory *factory) +{ + GObject *obj; + ModestAccountViewWindowPrivate *priv; + + g_return_val_if_fail (factory, NULL); + + obj = g_object_new(MODEST_TYPE_ACCOUNT_VIEW_WINDOW, NULL); + priv = MODEST_ACCOUNT_VIEW_WINDOW_GET_PRIVATE(obj); + + g_object_ref (G_OBJECT(factory)); + priv->widget_factory = factory; + + gtk_window_set_resizable (GTK_WINDOW(obj), FALSE); + + gtk_window_set_title (GTK_WINDOW(obj), _("Accounts")); + gtk_window_set_type_hint (GTK_WINDOW(obj), GDK_WINDOW_TYPE_HINT_DIALOG); + + gtk_window_set_modal (GTK_WINDOW(obj), TRUE); + + gtk_container_add (GTK_CONTAINER(obj), + window_vbox_new (MODEST_ACCOUNT_VIEW_WINDOW(obj))); + + return GTK_WIDGET(obj); +} diff --git a/src/maemo/modest-account-view-window.h b/src/maemo/modest-account-view-window.h new file mode 100644 index 0000000..1545c6f --- /dev/null +++ b/src/maemo/modest-account-view-window.h @@ -0,0 +1,42 @@ +/* modest-account-view-window.h */ +/* insert (c)/licensing information) */ + +#ifndef __MODEST_ACCOUNT_VIEW_WINDOW_H__ +#define __MODEST_ACCOUNT_VIEW_WINDOW_H__ + +#include +#include + +G_BEGIN_DECLS + +/* convenience macros */ +#define MODEST_TYPE_ACCOUNT_VIEW_WINDOW (modest_account_view_window_get_type()) +#define MODEST_ACCOUNT_VIEW_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),MODEST_TYPE_ACCOUNT_VIEW_WINDOW,ModestAccountViewWindow)) +#define MODEST_ACCOUNT_VIEW_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),MODEST_TYPE_ACCOUNT_VIEW_WINDOW,GtkWindow)) +#define MODEST_IS_ACCOUNT_VIEW_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),MODEST_TYPE_ACCOUNT_VIEW_WINDOW)) +#define MODEST_IS_ACCOUNT_VIEW_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),MODEST_TYPE_ACCOUNT_VIEW_WINDOW)) +#define MODEST_ACCOUNT_VIEW_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj),MODEST_TYPE_ACCOUNT_VIEW_WINDOW,ModestAccountViewWindowClass)) + +typedef struct _ModestAccountViewWindow ModestAccountViewWindow; +typedef struct _ModestAccountViewWindowClass ModestAccountViewWindowClass; + +struct _ModestAccountViewWindow { + GtkWindow parent; + /* insert public members, if any */ +}; + +struct _ModestAccountViewWindowClass { + GtkWindowClass parent_class; + /* insert signal callback declarations, eg. */ + /* void (* my_event) (ModestAccountViewWindow* obj); */ +}; + +/* member functions */ +GType modest_account_view_window_get_type (void) G_GNUC_CONST; + +GtkWidget* modest_account_view_window_new (ModestWidgetFactory *factory); + +G_END_DECLS + +#endif /* __MODEST_ACCOUNT_VIEW_WINDOW_H__ */ + diff --git a/src/maemo/modest-edit-msg-window.c b/src/maemo/modest-edit-msg-window.c new file mode 100644 index 0000000..3c287f9 --- /dev/null +++ b/src/maemo/modest-edit-msg-window.c @@ -0,0 +1,498 @@ +/* Copyright (c) 2006, Nokia Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Nokia Corporation nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER + * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include +#include +#include "modest-edit-msg-window.h" +#include "modest-widget-memory.h" +#include "modest-mail-operation.h" +#include "modest-tny-platform-factory.h" +#include "modest-tny-msg-actions.h" +#include + +static void modest_edit_msg_window_class_init (ModestEditMsgWindowClass *klass); +static void modest_edit_msg_window_init (ModestEditMsgWindow *obj); +static void modest_edit_msg_window_finalize (GObject *obj); + +/* list my signals */ +enum { + /* MY_SIGNAL_1, */ + /* MY_SIGNAL_2, */ + LAST_SIGNAL +}; + +typedef struct _ModestEditMsgWindowPrivate ModestEditMsgWindowPrivate; +struct _ModestEditMsgWindowPrivate { + + ModestWidgetFactory *factory; + TnyPlatformFactory *fact; + + GtkWidget *toolbar, *menubar; + GtkWidget *msg_body; + GtkWidget *from_field, *to_field, *cc_field, *bcc_field, + *subject_field; +}; +#define MODEST_EDIT_MSG_WINDOW_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE((o), \ + MODEST_TYPE_EDIT_MSG_WINDOW, \ + ModestEditMsgWindowPrivate)) +/* globals */ +static GtkWindowClass *parent_class = NULL; + +/* uncomment the following if you have defined any signals */ +/* static guint signals[LAST_SIGNAL] = {0}; */ + +GType +modest_edit_msg_window_get_type (void) +{ + static GType my_type = 0; + if (!my_type) { + static const GTypeInfo my_info = { + sizeof(ModestEditMsgWindowClass), + NULL, /* base init */ + NULL, /* base finalize */ + (GClassInitFunc) modest_edit_msg_window_class_init, + NULL, /* class finalize */ + NULL, /* class data */ + sizeof(ModestEditMsgWindow), + 1, /* n_preallocs */ + (GInstanceInitFunc) modest_edit_msg_window_init, + NULL + }; + my_type = g_type_register_static (GTK_TYPE_WINDOW, + "ModestEditMsgWindow", + &my_info, 0); + } + return my_type; +} + +static void +modest_edit_msg_window_class_init (ModestEditMsgWindowClass *klass) +{ + GObjectClass *gobject_class; + gobject_class = (GObjectClass*) klass; + + parent_class = g_type_class_peek_parent (klass); + gobject_class->finalize = modest_edit_msg_window_finalize; + + g_type_class_add_private (gobject_class, sizeof(ModestEditMsgWindowPrivate)); + + /* signal definitions go here, e.g.: */ +/* signals[MY_SIGNAL_1] = */ +/* g_signal_new ("my_signal_1",....); */ +/* signals[MY_SIGNAL_2] = */ +/* g_signal_new ("my_signal_2",....); */ +/* etc. */ +} + +static void +modest_edit_msg_window_init (ModestEditMsgWindow *obj) +{ + ModestEditMsgWindowPrivate *priv; + priv = MODEST_EDIT_MSG_WINDOW_GET_PRIVATE(obj); + + priv->fact = modest_tny_platform_factory_get_instance (); + priv->factory = NULL; + priv->toolbar = NULL; + priv->menubar = NULL; +} + + + +static void +save_settings (ModestEditMsgWindow *self) +{ + ModestEditMsgWindowPrivate *priv; + ModestConf *conf; + + priv = MODEST_EDIT_MSG_WINDOW_GET_PRIVATE(self); + conf = modest_tny_platform_factory_get_modest_conf_instance (priv->fact); + + modest_widget_memory_save_settings (conf, GTK_WIDGET(self), + "modest-edit-msg-window"); +} + + +static void +restore_settings (ModestEditMsgWindow *self) +{ + ModestEditMsgWindowPrivate *priv; + ModestConf *conf; + + priv = MODEST_EDIT_MSG_WINDOW_GET_PRIVATE(self); + conf = modest_tny_platform_factory_get_modest_conf_instance (priv->fact); + + modest_widget_memory_restore_settings (conf, GTK_WIDGET(self), + "modest-edit-msg-window"); +} + + + +static void +on_menu_quit (ModestEditMsgWindow *self, guint action, GtkWidget *widget) +{ + save_settings (self); + gtk_widget_destroy (GTK_WIDGET(self)); +} + + + + + +/* Our menu, an array of GtkItemFactoryEntry structures that defines each menu item */ +static GtkItemFactoryEntry menu_items[] = { + { "/_File", NULL, NULL, 0, "" ,NULL}, + { "/File/_New", "N", NULL, 0, "", GTK_STOCK_NEW }, + { "/File/_Open", "O", NULL, 0, "", GTK_STOCK_OPEN }, + { "/File/_Save", "S", NULL, 0, "", GTK_STOCK_SAVE }, + { "/File/Save _As", NULL, NULL, 0, "", NULL} , + { "/File/Save Draft", "S", NULL, 0, "",NULL }, + + + { "/File/sep1", NULL, NULL, 0, "" ,NULL }, + { "/File/_Quit", "Q", on_menu_quit, 0, "", GTK_STOCK_QUIT }, + + { "/_Edit", NULL, NULL, 0, "" ,NULL }, + { "/Edit/_Undo", "Z", NULL, 0, "", GTK_STOCK_UNDO }, + { "/Edit/_Redo", "Z", NULL, 0, "", GTK_STOCK_REDO }, + { "/File/sep1", NULL, NULL, 0, "",NULL }, + { "/Edit/Cut", "X", NULL, 0, "", GTK_STOCK_CUT }, + { "/Edit/Copy", "C", NULL, 0, "", GTK_STOCK_COPY }, + { "/Edit/Paste", NULL, NULL, 0, "", GTK_STOCK_PASTE}, + { "/Edit/sep1", NULL, NULL, 0, "",NULL }, + { "/Edit/Delete", "Q", NULL, 0, "" ,NULL }, + { "/Edit/Select all", "A", NULL, 0, "" ,NULL }, + { "/Edit/Deselect all", "A", NULL, 0, "",NULL }, + + { "/_View", NULL, NULL, 0, "",NULL }, + { "/View/To-field", NULL, NULL, 0, "",NULL }, + + { "/View/Cc-field:", NULL, NULL, 0, "",NULL }, + { "/View/Bcc-field:", NULL, NULL, 0, "",NULL }, + + + { "/_Insert", NULL, NULL, 0, "",NULL }, +/* { "/Actions/_Reply", NULL, NULL, 0, "" }, */ +/* { "/Actions/_Forward", NULL, NULL, 0, "" }, */ +/* { "/Actions/_Bounce", NULL, NULL, 0, "" }, */ + + { "/_Format", NULL, NULL, 0, "",NULL } +/* { "/Options/_Accounts", NULL, on_menu_accounts,0, "" }, */ +/* { "/Options/_Contacts", NULL, NULL, 0, "" }, */ + + +/* { "/_Help", NULL, NULL, 0, "" }, */ +/* { "/_Help/About", NULL, on_menu_about, 0, "", GTK_STOCK_ABOUT}, */ +}; + +static gint nmenu_items = sizeof (menu_items) / sizeof (menu_items[0]); + + +static GtkWidget * +menubar_new (ModestEditMsgWindow *self) +{ + GtkItemFactory *item_factory; + GtkAccelGroup *accel_group; + + /* Make an accelerator group (shortcut keys) */ + accel_group = gtk_accel_group_new (); + + /* Make an ItemFactory (that makes a menubar) */ + item_factory = gtk_item_factory_new (GTK_TYPE_MENU_BAR, "
", + accel_group); + + /* This function generates the menu items. Pass the item factory, + the number of items in the array, the array itself, and any + callback data for the the menu items. */ + gtk_item_factory_create_items (item_factory, nmenu_items, menu_items, self); + + ///* Attach the new accelerator group to the window. */ + gtk_window_add_accel_group (GTK_WINDOW (self), accel_group); + + /* Finally, return the actual menu bar created by the item factory. */ + return gtk_item_factory_get_widget (item_factory, "
"); +} + + +static void +send_mail (ModestEditMsgWindow *self) +{ + const gchar *to, *cc, *bcc, *subject; + gchar *body, *from; + ModestEditMsgWindowPrivate *priv; + TnyTransportAccount *transport_account; + ModestMailOperation *mail_operation; + ModestAccountData *data; + + GtkTextBuffer *buf; + GtkTextIter b, e; + + priv = MODEST_EDIT_MSG_WINDOW_GET_PRIVATE(self); + data = modest_combo_box_get_active_id (MODEST_COMBO_BOX (priv->from_field)); + + /* don't free these (except from) */ + from = g_strdup_printf ("%s <%s>", data->full_name, data->email) ; + to = gtk_entry_get_text (GTK_ENTRY(priv->to_field)); + cc = gtk_entry_get_text (GTK_ENTRY(priv->cc_field)); + bcc = gtk_entry_get_text (GTK_ENTRY(priv->bcc_field)); + subject = gtk_entry_get_text (GTK_ENTRY(priv->subject_field)); + + /* don't unref */ + buf = gtk_text_view_get_buffer (GTK_TEXT_VIEW(priv->msg_body)); + + gtk_text_buffer_get_bounds (buf, &b, &e); + body = gtk_text_buffer_get_text (buf, &b, &e, + FALSE); /* free this one */ + + /* FIXME: Code added just for testing. The transport_account + should be provided by the account manager, maybe using + _get_current_account () or _get_default_account + (TRANSPORT_ACCOUNT). These methods do not exist currently. */ + { + TnyList *accounts; + TnyIterator *iter; + TnyAccountStore *account_store; + + accounts = TNY_LIST(tny_simple_list_new ()); + account_store = tny_platform_factory_new_account_store (priv->fact); + tny_account_store_get_accounts (account_store, accounts, + TNY_ACCOUNT_STORE_TRANSPORT_ACCOUNTS); + + iter = tny_list_create_iterator(accounts); + tny_iterator_first (iter); + if (tny_iterator_is_done (iter)) { + /* FIXME: Add error handling through mail operation */ + g_printerr("modest: no transport accounts defined\n"); + g_free (body); + return; + } + transport_account = TNY_TRANSPORT_ACCOUNT (tny_iterator_get_current(iter)); + } + + mail_operation = modest_mail_operation_new (); + + modest_mail_operation_send_new_mail (mail_operation, + transport_account, + from, to, cc, bcc, + subject, body, NULL); + /* Clean up */ + g_object_unref (mail_operation); + g_free (from); + g_free (body); +} + + +static void +on_toolbar_button_clicked (ModestToolbar *toolbar, ModestToolbarButton button_id, + ModestEditMsgWindow *self) +{ + switch (button_id) { + case MODEST_TOOLBAR_BUTTON_MAIL_SEND: + send_mail (self); + save_settings (self); + gtk_widget_destroy (GTK_WIDGET(self)); + break; + + case MODEST_TOOLBAR_BUTTON_REPLY: + case MODEST_TOOLBAR_BUTTON_REPLY_ALL: + case MODEST_TOOLBAR_BUTTON_FORWARD: + case MODEST_TOOLBAR_BUTTON_SEND_RECEIVE: + case MODEST_TOOLBAR_BUTTON_NEXT: + case MODEST_TOOLBAR_BUTTON_PREV: + case MODEST_TOOLBAR_BUTTON_DELETE: + + default: + g_printerr ("modest: key %d pressed\n", button_id); + } +} + + + + +static ModestToolbar* +toolbar_new (ModestEditMsgWindow *self) +{ + int i; + ModestToolbar *toolbar; + GSList *buttons = NULL; + ModestEditMsgWindowPrivate *priv; + + ModestToolbarButton button_ids[] = { + MODEST_TOOLBAR_BUTTON_MAIL_SEND + }; + + priv = MODEST_EDIT_MSG_WINDOW_GET_PRIVATE(self); + + for (i = 0 ; i != sizeof(button_ids) / sizeof(ModestToolbarButton); ++i) + buttons = g_slist_append (buttons, GINT_TO_POINTER(button_ids[i])); + + toolbar = modest_widget_factory_get_edit_toolbar (priv->factory, buttons); + g_slist_free (buttons); + + g_signal_connect (G_OBJECT(toolbar), "button_clicked", + G_CALLBACK(on_toolbar_button_clicked), self); + + return toolbar; +} + + +static void +init_window (ModestEditMsgWindow *obj) +{ + GtkWidget *to_button, *cc_button, *bcc_button; + GtkWidget *header_table; + GtkWidget *main_vbox; + + ModestEditMsgWindowPrivate *priv; + priv = MODEST_EDIT_MSG_WINDOW_GET_PRIVATE(obj); + + to_button = gtk_button_new_with_label (_("To...")); + cc_button = gtk_button_new_with_label (_("Cc...")); + bcc_button = gtk_button_new_with_label (_("Bcc...")); + + priv->from_field = modest_widget_factory_get_combo_box (priv->factory, + MODEST_COMBO_BOX_TYPE_TRANSPORTS); + priv->to_field = gtk_entry_new_with_max_length (40); + priv->cc_field = gtk_entry_new_with_max_length (40); + priv->bcc_field = gtk_entry_new_with_max_length (40); + priv->subject_field = gtk_entry_new_with_max_length (40); + + header_table = gtk_table_new (5,2, FALSE); + + gtk_table_attach (GTK_TABLE(header_table), gtk_label_new (_("From:")), + 0,1,0,1, GTK_SHRINK, 0, 0, 0); + gtk_table_attach (GTK_TABLE(header_table), to_button, 0,1,1,2, GTK_SHRINK, 0, 0, 0); + gtk_table_attach (GTK_TABLE(header_table), cc_button, 0,1,2,3, GTK_SHRINK, 0, 0, 0); + gtk_table_attach (GTK_TABLE(header_table), bcc_button, 0,1,3,4, GTK_SHRINK, 0, 0, 0); + gtk_table_attach (GTK_TABLE(header_table), gtk_label_new (_("Subject:")), + 0,1,4,5, GTK_SHRINK, 0, 0, 0); + + gtk_table_attach_defaults (GTK_TABLE(header_table), priv->from_field, 1,2,0,1); + gtk_table_attach_defaults (GTK_TABLE(header_table), priv->to_field, 1,2,1,2); + gtk_table_attach_defaults (GTK_TABLE(header_table), priv->cc_field, 1,2,2,3); + gtk_table_attach_defaults (GTK_TABLE(header_table), priv->bcc_field, 1,2,3,4); + gtk_table_attach_defaults (GTK_TABLE(header_table), priv->subject_field,1,2,4,5); + + priv->msg_body = gtk_text_view_new (); + + main_vbox = gtk_vbox_new (FALSE, 6); + + priv->menubar = menubar_new (obj); + priv->toolbar = GTK_WIDGET(toolbar_new (obj)); + + gtk_box_pack_start (GTK_BOX(main_vbox), priv->menubar, FALSE, FALSE, 0); + gtk_box_pack_start (GTK_BOX(main_vbox), priv->toolbar, FALSE, FALSE, 0); + gtk_box_pack_start (GTK_BOX(main_vbox), header_table, FALSE, FALSE, 6); + gtk_box_pack_start (GTK_BOX(main_vbox), priv->msg_body, TRUE, TRUE, 6); + + gtk_widget_show_all (GTK_WIDGET(main_vbox)); + gtk_container_add (GTK_CONTAINER(obj), main_vbox); +} + + + +static void +modest_edit_msg_window_finalize (GObject *obj) +{ + ModestEditMsgWindowPrivate *priv; + + priv = MODEST_EDIT_MSG_WINDOW_GET_PRIVATE(obj); + + g_object_unref (G_OBJECT(priv->factory)); + priv->factory = NULL; + + G_OBJECT_CLASS(parent_class)->finalize (obj); + +} + + + +static gboolean +on_delete_event (GtkWidget *widget, GdkEvent *event, ModestEditMsgWindow *self) +{ + save_settings (self); + return FALSE; +} + + +GtkWidget* +modest_edit_msg_window_new (ModestWidgetFactory *factory, + ModestEditType type, TnyMsg *msg) +{ + GObject *obj; + ModestEditMsgWindowPrivate *priv; + + g_return_val_if_fail (factory, NULL); + g_return_val_if_fail (type < MODEST_EDIT_TYPE_NUM, NULL); + g_return_val_if_fail (!(type==MODEST_EDIT_TYPE_NEW && msg), NULL); + g_return_val_if_fail (!(type!=MODEST_EDIT_TYPE_NEW && !msg), NULL); + + obj = g_object_new(MODEST_TYPE_EDIT_MSG_WINDOW, NULL); + priv = MODEST_EDIT_MSG_WINDOW_GET_PRIVATE(obj); + + g_object_ref (factory); + priv->factory = factory; + + init_window (MODEST_EDIT_MSG_WINDOW(obj)); + + restore_settings (MODEST_EDIT_MSG_WINDOW(obj)); + + gtk_window_set_title (GTK_WINDOW(obj), "Modest"); + gtk_window_set_icon (GTK_WINDOW(obj), + modest_icon_factory_get_icon (MODEST_APP_ICON)); + + g_signal_connect (G_OBJECT(obj), "delete-event", + G_CALLBACK(on_delete_event), obj); + + if (msg) { + /* Testing code. Should be into a set_msg method */ + TnyHeader *header; + GtkTextBuffer *buf; + + header = tny_msg_get_header (msg); + gtk_entry_set_text (GTK_ENTRY(priv->to_field), + tny_header_get_to (header)); + gtk_entry_set_text (GTK_ENTRY(priv->cc_field), + tny_header_get_cc (header)); + gtk_entry_set_text (GTK_ENTRY(priv->bcc_field), + tny_header_get_bcc (header)); + gtk_entry_set_text (GTK_ENTRY(priv->subject_field), + tny_header_get_subject (header)); + + buf = gtk_text_view_get_buffer (GTK_TEXT_VIEW(priv->msg_body)); + gtk_text_buffer_set_text (buf, + (const gchar *) modest_tny_msg_actions_find_body (msg, FALSE), + -1); + + /* TODO: lower priority, select in the From: combo to + the value that comes from msg */ + + /* TODO: set attachments */ + } + + return GTK_WIDGET (obj); +} diff --git a/src/maemo/modest-edit-msg-window.h b/src/maemo/modest-edit-msg-window.h new file mode 100644 index 0000000..1aa27c2 --- /dev/null +++ b/src/maemo/modest-edit-msg-window.h @@ -0,0 +1,83 @@ +/* Copyright (c) 2006, Nokia Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Nokia Corporation nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER + * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef __MODEST_EDIT_MSG_WINDOW_H__ +#define __MODEST_EDIT_MSG_WINDOW_H__ + +#include +#include +#include "modest-conf.h" +#include "modest-widget-factory.h" + +G_BEGIN_DECLS + +/* convenience macros */ +#define MODEST_TYPE_EDIT_MSG_WINDOW (modest_edit_msg_window_get_type()) +#define MODEST_EDIT_MSG_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),MODEST_TYPE_EDIT_MSG_WINDOW,ModestEditMsgWindow)) +#define MODEST_EDIT_MSG_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),MODEST_TYPE_EDIT_MSG_WINDOW,GtkWindow)) +#define MODEST_IS_EDIT_MSG_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),MODEST_TYPE_EDIT_MSG_WINDOW)) +#define MODEST_IS_EDIT_MSG_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),MODEST_TYPE_EDIT_MSG_WINDOW)) +#define MODEST_EDIT_MSG_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj),MODEST_TYPE_EDIT_MSG_WINDOW,ModestEditMsgWindowClass)) + +typedef struct _ModestEditMsgWindow ModestEditMsgWindow; +typedef struct _ModestEditMsgWindowClass ModestEditMsgWindowClass; + +struct _ModestEditMsgWindow { + GtkWindow parent; + /* insert public members, if any */ +}; + +struct _ModestEditMsgWindowClass { + GtkWindowClass parent_class; + /* insert signal callback declarations, eg. */ + /* void (* my_event) (ModestEditMsgWindow* obj); */ +}; + + +typedef enum _ModestEditType { + MODEST_EDIT_TYPE_NEW, + MODEST_EDIT_TYPE_REPLY, + MODEST_EDIT_TYPE_FORWARD, + MODEST_EDIT_TYPE_VIEW, + + MODEST_EDIT_TYPE_NUM +} ModestEditType; +/* typedef enum _ModestEditType ModestEditType; */ + + +/* member functions */ +GType modest_edit_msg_window_get_type (void) G_GNUC_CONST; + +GtkWidget* modest_edit_msg_window_new (ModestWidgetFactory *factory, + ModestEditType type, + TnyMsg *msg); +G_END_DECLS + +#endif /* __MODEST_EDIT_MSG_WINDOW_H__ */ + diff --git a/src/maemo/modest-icon-names.h b/src/maemo/modest-icon-names.h new file mode 100644 index 0000000..99f1135 --- /dev/null +++ b/src/maemo/modest-icon-names.h @@ -0,0 +1,79 @@ +/* Copyright (c) 2006, Nokia Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Nokia Corporation nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER + * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + + +/* modest-tny-icon-names.h */ + +/* + * FIXME: this should go the front-end dirs, + * with specific icons + */ + +#ifndef __MODEST_TNY_ICON_NAMES_H__ +#define __MODEST_TNY_ICON_NAMES_H__ + +#define PIXMAP_PREFIX PREFIX "/share/modest/pixmaps/" + +/* icons */ + +#define MODEST_APP_ICON PIXMAP_PREFIX "internet-mail.svg" + +#define MODEST_HEADER_ICON_READ PIXMAP_PREFIX "qgn_list_messagin_mail.png" +#define MODEST_HEADER_ICON_UNREAD PIXMAP_PREFIX "qgn_list_messagin_mail_unread.png" +#define MODEST_HEADER_ICON_DELETED PIXMAP_PREFIX "qgn_list_messagin_mail_deleted.png" +#define MODEST_HEADER_ICON_ATTACH PIXMAP_PREFIX "qgn_list_gene_attacpap.png" + +#define MODEST_FOLDER_ICON_OPEN PIXMAP_PREFIX "qgn_list_gene_fldr_opn.png" +#define MODEST_FOLDER_ICON_CLOSED PIXMAP_PREFIX "qgn_list_gene_fldr_cls.png" + +#define MODEST_FOLDER_ICON_INBOX PIXMAP_PREFIX "qgn_list_messagin_inbox.png" +#define MODEST_FOLDER_ICON_OUTBOX PIXMAP_PREFIX "qgn_list_messagin_outbox.png" +#define MODEST_FOLDER_ICON_SENT PIXMAP_PREFIX "qgn_list_messagin_sent.png" +#define MODEST_FOLDER_ICON_TRASH PIXMAP_PREFIX "qgn_list_messagin_mail_deleted.png" +#define MODEST_FOLDER_ICON_JUNK PIXMAP_PREFIX "qgn_list_messagin_mail_deleted.png" +#define MODEST_FOLDER_ICON_DRAFTS PIXMAP_PREFIX "qgn_list_messagin_drafts.png" +#define MODEST_FOLDER_ICON_NORMAL PIXMAP_PREFIX "qgn_list_gene_fldr_cls.png" + +#define MODEST_FOLDER_ICON_CONTACTS PIXMAP_PREFIX "qgn_addr_icon_user_group.png" +#define MODEST_FOLDER_ICON_NOTES PIXMAP_PREFIX "qgn_list_messagin_viewer.png" +#define MODEST_FOLDER_ICON_CALENDAR PIXMAP_PREFIX "qgn_widg_datedit.png" + +/* toolbar */ +#define MODEST_TOOLBAR_ICON_MAIL_SEND PIXMAP_PREFIX "gnome-stock-mail-new.svg" +#define MODEST_TOOLBAR_ICON_NEW_MAIL PIXMAP_PREFIX "gnome-stock-mail-new.svg" +#define MODEST_TOOLBAR_ICON_SEND_RECEIVE PIXMAP_PREFIX "gtk-refresh.svg" +#define MODEST_TOOLBAR_ICON_REPLY PIXMAP_PREFIX "gnome-stock-mail-rpl.svg" +#define MODEST_TOOLBAR_ICON_REPLY_ALL PIXMAP_PREFIX "mail-reply-all.svg" +#define MODEST_TOOLBAR_ICON_FORWARD PIXMAP_PREFIX "mail-forward.svg" +#define MODEST_TOOLBAR_ICON_DELETE PIXMAP_PREFIX "edit-delete.svg" +#define MODEST_TOOLBAR_ICON_NEXT PIXMAP_PREFIX "forward.svg" +#define MODEST_TOOLBAR_ICON_PREV PIXMAP_PREFIX "back.svg" +#define MODEST_TOOLBAR_ICON_STOP PIXMAP_PREFIX "stock-stop.svg" + +#endif /*__MODEST_TNY_ICON_NAMES_H__*/ diff --git a/src/maemo/modest-main-window.c b/src/maemo/modest-main-window.c new file mode 100644 index 0000000..fe542a7 --- /dev/null +++ b/src/maemo/modest-main-window.c @@ -0,0 +1,727 @@ +/* Copyright (c) 2006, Nokia Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Nokia Corporation nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER + * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include + +#include +#include + +#include + +#include "modest-main-window.h" +#include "modest-account-view-window.h" +#include "modest-account-mgr.h" +#include "modest-conf.h" +#include "modest-edit-msg-window.h" +#include "modest-icon-names.h" +#include "modest-tny-platform-factory.h" +#include "modest-tny-msg-actions.h" +#include "modest-mail-operation.h" + +/* 'private'/'protected' functions */ +static void modest_main_window_class_init (ModestMainWindowClass *klass); +static void modest_main_window_init (ModestMainWindow *obj); +static void modest_main_window_finalize (GObject *obj); + +static void restore_sizes (ModestMainWindow *self); +static void save_sizes (ModestMainWindow *self); + +/* list my signals */ +enum { + /* MY_SIGNAL_1, */ + /* MY_SIGNAL_2, */ + LAST_SIGNAL +}; + +typedef struct _ModestMainWindowPrivate ModestMainWindowPrivate; +struct _ModestMainWindowPrivate { + + GtkWidget *toolbar; + GtkWidget *menubar; + + GtkWidget *folder_paned; + GtkWidget *msg_paned; + GtkWidget *main_paned; + + ModestWidgetFactory *widget_factory; + TnyPlatformFactory *factory; + + ModestHeaderView *header_view; + ModestFolderView *folder_view; + ModestMsgView *msg_preview; +}; + + +#define MODEST_MAIN_WINDOW_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE((o), \ + MODEST_TYPE_MAIN_WINDOW, \ + ModestMainWindowPrivate)) +/* globals */ +static GtkWindowClass *parent_class = NULL; + +/* uncomment the following if you have defined any signals */ +/* static guint signals[LAST_SIGNAL] = {0}; */ + +GType +modest_main_window_get_type (void) +{ + static GType my_type = 0; + if (!my_type) { + static const GTypeInfo my_info = { + sizeof(ModestMainWindowClass), + NULL, /* base init */ + NULL, /* base finalize */ + (GClassInitFunc) modest_main_window_class_init, + NULL, /* class finalize */ + NULL, /* class data */ + sizeof(ModestMainWindow), + 1, /* n_preallocs */ + (GInstanceInitFunc) modest_main_window_init, + NULL + }; + my_type = g_type_register_static (GTK_TYPE_WINDOW, + "ModestMainWindow", + &my_info, 0); + } + return my_type; +} + +static void +modest_main_window_class_init (ModestMainWindowClass *klass) +{ + GObjectClass *gobject_class; + gobject_class = (GObjectClass*) klass; + + parent_class = g_type_class_peek_parent (klass); + gobject_class->finalize = modest_main_window_finalize; + + g_type_class_add_private (gobject_class, sizeof(ModestMainWindowPrivate)); + + /* signal definitions go here, e.g.: */ +/* signals[MY_SIGNAL_1] = */ +/* g_signal_new ("my_signal_1",....); */ +/* signals[MY_SIGNAL_2] = */ +/* g_signal_new ("my_signal_2",....); */ +/* etc. */ +} + +static void +modest_main_window_init (ModestMainWindow *obj) +{ + ModestMainWindowPrivate *priv; + + priv = MODEST_MAIN_WINDOW_GET_PRIVATE(obj); + + priv->factory = modest_tny_platform_factory_get_instance (); +} + +static void +modest_main_window_finalize (GObject *obj) +{ + ModestMainWindowPrivate *priv; + priv = MODEST_MAIN_WINDOW_GET_PRIVATE(obj); + if (priv->widget_factory) { + g_object_unref (G_OBJECT(priv->widget_factory)); + priv->widget_factory = NULL; + } + + G_OBJECT_CLASS(parent_class)->finalize (obj); +} + + +static void +on_menu_about (GtkWidget *widget, gpointer data) +{ + GtkWidget *about; + const gchar *authors[] = { + "Dirk-Jan C. Binnema ", + NULL + }; + about = gtk_about_dialog_new (); + gtk_about_dialog_set_name (GTK_ABOUT_DIALOG(about), PACKAGE_NAME); + gtk_about_dialog_set_version (GTK_ABOUT_DIALOG(about),PACKAGE_VERSION); + gtk_about_dialog_set_copyright ( + GTK_ABOUT_DIALOG(about), + _("Copyright (c) 2006, Nokia Corporation\n" + "All rights reserved.")); + gtk_about_dialog_set_comments ( GTK_ABOUT_DIALOG(about), + _("a modest e-mail client\n\n" + "design and implementation: Dirk-Jan C. Binnema\n" + "contributions from the fine people at KernelConcepts\n\n" + "uses the tinymail email framework written by Philip van Hoof")); + gtk_about_dialog_set_authors (GTK_ABOUT_DIALOG(about), authors); + gtk_about_dialog_set_website (GTK_ABOUT_DIALOG(about), "http://modest.garage.maemo.org"); + + gtk_dialog_run (GTK_DIALOG (about)); + gtk_widget_destroy(about); +} + + +static void +on_menu_accounts (ModestMainWindow *self, guint action, GtkWidget *widget) +{ + GtkWidget *account_win; + ModestMainWindowPrivate *priv; + + g_return_if_fail (widget); + g_return_if_fail (self); + + priv = MODEST_MAIN_WINDOW_GET_PRIVATE(self); + account_win = modest_account_view_window_new (priv->widget_factory); + + gtk_window_set_transient_for (GTK_WINDOW(account_win), + GTK_WINDOW(self)); + + gtk_widget_show (account_win); +} + + +static void +on_menu_new_message (ModestMainWindow *self, guint action, GtkWidget *widget) +{ + GtkWidget *msg_win; + ModestMainWindowPrivate *priv; + + priv = MODEST_MAIN_WINDOW_GET_PRIVATE(self); + + msg_win = modest_edit_msg_window_new (priv->widget_factory, + MODEST_EDIT_TYPE_NEW, + NULL); + gtk_widget_show (msg_win); +} + +static void +on_menu_reply_forward (ModestMainWindow *self, guint action, GtkWidget *widget) +{ + GtkWidget *msg_win; + ModestMainWindowPrivate *priv; + ModestHeaderView *header_view; + TnyList *header_list; + TnyIterator *iter; + const gchar *from; + gchar *reply_key, *forward_key; + ModestMailOperationReplyType reply_type; + ModestMailOperationForwardType forward_type; + ModestConf *conf; + GError *error; + + priv = MODEST_MAIN_WINDOW_GET_PRIVATE(self); + conf = modest_tny_platform_factory_get_modest_conf_instance (priv->factory); + + header_view = modest_widget_factory_get_header_view (priv->widget_factory); + header_list = modest_header_view_get_selected_headers (header_view); + + /* Get reply and forward types */ + error = NULL; + reply_key = g_strdup_printf ("%s/%s", MODEST_CONF_NAMESPACE, MODEST_CONF_REPLY_TYPE); + reply_type = modest_conf_get_int (conf, reply_key, &error); + if (error) { + g_warning ("key %s not defined", reply_key); + reply_type = MODEST_MAIL_OPERATION_REPLY_TYPE_CITE; + g_error_free (error); + error = NULL; + } + g_free (reply_key); + + forward_key = g_strdup_printf ("%s/%s", MODEST_CONF_NAMESPACE, MODEST_CONF_FORWARD_TYPE); + forward_type = modest_conf_get_int (conf, forward_key, NULL); + if (error) { + g_warning ("key %s not defined", forward_key); + reply_type = MODEST_MAIL_OPERATION_FORWARD_TYPE_INLINE; + g_error_free (error); + } + g_free (forward_key); + + if (header_list) { + iter = tny_list_create_iterator (header_list); + do { + TnyHeader *header, *new_header; + TnyFolder *folder; + TnyMsg *msg, *new_msg; + ModestEditType edit_type; + + /* Get msg from header */ + header = TNY_HEADER (tny_iterator_get_current (iter)); + folder = tny_header_get_folder (header); + msg = tny_folder_get_msg (folder, header, NULL); /* FIXME */ + + from = modest_folder_view_get_selected_account (priv->folder_view); + + /* FIXME: select proper action */ + switch (action) { + case 1: + new_msg = + modest_mail_operation_create_reply_mail (msg, from, reply_type, + MODEST_MAIL_OPERATION_REPLY_MODE_SENDER); + edit_type = MODEST_EDIT_TYPE_REPLY; + break; + case 2: + new_msg = + modest_mail_operation_create_reply_mail (msg, from, reply_type, + MODEST_MAIL_OPERATION_REPLY_MODE_ALL); + edit_type = MODEST_EDIT_TYPE_REPLY; + break; + case 3: + new_msg = + modest_mail_operation_create_forward_mail (msg, from, forward_type); + edit_type = MODEST_EDIT_TYPE_FORWARD; + break; + default: + g_warning ("unexpected action type: %d", action); + } + + /* Set from */ + new_header = tny_msg_get_header (new_msg); + tny_header_set_from (new_header, + modest_folder_view_get_selected_account (priv->folder_view)); + + /* Show edit window */ + msg_win = modest_edit_msg_window_new (priv->widget_factory, + edit_type, + new_msg); + gtk_widget_show (msg_win); + + /* Clean and go on */ + g_object_unref (new_msg); + tny_iterator_next (iter); + + } while (!tny_iterator_is_done (iter)); + } +} + +static void +on_menu_quit (ModestMainWindow *self, guint action, GtkWidget *widget) +{ + save_sizes (self); + gtk_widget_destroy (GTK_WIDGET(self)); +} + +static void +on_menu_delete (ModestMainWindow *self, guint action, GtkWidget *widget) +{ + ModestMainWindowPrivate *priv; + ModestHeaderView *header_view; + TnyList *header_list; + TnyIterator *iter; + GtkTreeModel *model; + + priv = MODEST_MAIN_WINDOW_GET_PRIVATE(self); + + header_view = modest_widget_factory_get_header_view (priv->widget_factory); + header_list = modest_header_view_get_selected_headers (header_view); + + if (header_list) { + iter = tny_list_create_iterator (header_list); + model = gtk_tree_view_get_model (GTK_TREE_VIEW (header_view)); + if (GTK_IS_TREE_MODEL_SORT (model)) + model = gtk_tree_model_sort_get_model (GTK_TREE_MODEL_SORT (model)); + do { + TnyHeader *header; + ModestMailOperation *mail_op; + + header = TNY_HEADER (tny_iterator_get_current (iter)); + /* TODO: thick grain mail operation involving + a list of objects. Composite pattern ??? */ + mail_op = modest_mail_operation_new (); + + /* Move to trash */ + modest_mail_operation_remove_msg (mail_op, header, TRUE); + + /* Remove from tree model */ + tny_list_remove (TNY_LIST (model), G_OBJECT (header)); + + g_object_unref (G_OBJECT (mail_op)); + g_object_unref (header); + tny_iterator_next (iter); + + } while (!tny_iterator_is_done (iter)); + } +} + + +/* Our menu, an array of GtkItemFactoryEntry structures that defines each menu item */ +static GtkItemFactoryEntry menu_items[] = { + { "/_File", NULL, NULL, 0, "", NULL }, + { "/File/_New", "N", NULL, 0, "", GTK_STOCK_NEW }, + { "/File/_Open", "O", NULL, 0, "", GTK_STOCK_OPEN }, + { "/File/_Save", "S", NULL, 0, "", GTK_STOCK_SAVE }, + { "/File/Save _As", NULL, NULL, 0, "", NULL }, + { "/File/sep1", NULL, NULL, 0, "", NULL }, + { "/File/_Quit", "Q", on_menu_quit, 0, "", GTK_STOCK_QUIT }, + + { "/_Edit", NULL, NULL, 0, "", NULL }, + { "/Edit/_Undo", "Z", NULL, 0, "", GTK_STOCK_UNDO }, + { "/Edit/_Redo", "Z", NULL, 0, "", GTK_STOCK_REDO }, + { "/File/sep1", NULL, NULL, 0, "", NULL }, + { "/Edit/Cut", "X", NULL, 0, "", GTK_STOCK_CUT }, + { "/Edit/Copy", "C", NULL, 0, "", GTK_STOCK_COPY }, + { "/Edit/Paste", NULL, NULL, 0, "", GTK_STOCK_PASTE}, + { "/Edit/sep1", NULL, NULL, 0, "", NULL }, + { "/Edit/Delete", "Q", NULL, 0, "" ,NULL}, + { "/Edit/Select all", "A", NULL, 0, "" ,NULL}, + { "/Edit/Deelect all", "A", NULL, 0, "" ,NULL}, + + { "/_Actions", NULL, NULL, 0, "" ,NULL}, + { "/Actions/_New Message", NULL, on_menu_new_message, 0, "",NULL }, + { "/Actions/_Reply", NULL, on_menu_reply_forward, 1, "" ,NULL}, + { "/Actions/_Forward", NULL, on_menu_reply_forward, 3, "" ,NULL}, + { "/Actions/_Bounce", NULL, NULL, 0, "",NULL }, + + { "/_Options", NULL, NULL, 0, "" ,NULL}, + { "/Options/_Accounts", NULL, on_menu_accounts,0, "" ,NULL}, + { "/Options/_Contacts", NULL, NULL, 0, "" ,NULL }, + + + { "/_Help", NULL, NULL, 0, "" ,NULL}, + { "/_Help/About", NULL, on_menu_about, 0, "", GTK_STOCK_ABOUT}, +}; + +static gint nmenu_items = sizeof (menu_items) / sizeof (menu_items[0]); + + +static GtkWidget * +menubar_new (ModestMainWindow *self) +{ + GtkItemFactory *item_factory; + GtkAccelGroup *accel_group; + + /* Make an accelerator group (shortcut keys) */ + accel_group = gtk_accel_group_new (); + + /* Make an ItemFactory (that makes a menubar) */ + item_factory = gtk_item_factory_new (GTK_TYPE_MENU_BAR, "
", + accel_group); + + /* This function generates the menu items. Pass the item factory, + the number of items in the array, the array itself, and any + callback data for the the menu items. */ + gtk_item_factory_create_items (item_factory, nmenu_items, menu_items, self); + + ///* Attach the new accelerator group to the window. */ + gtk_window_add_accel_group (GTK_WINDOW (self), accel_group); + + /* Finally, return the actual menu bar created by the item factory. */ + return gtk_item_factory_get_widget (item_factory, "
"); +} + + + + +static ModestHeaderView* +header_view_new (ModestMainWindow *self) +{ + int i; + GSList *columns = NULL; + ModestHeaderView *header_view; + ModestMainWindowPrivate *priv; + ModestHeaderViewColumn cols[] = { + MODEST_HEADER_VIEW_COLUMN_MSGTYPE, + MODEST_HEADER_VIEW_COLUMN_ATTACH, +/* MODEST_HEADER_VIEW_COLUMN_COMPACT_HEADER, */ + MODEST_HEADER_VIEW_COLUMN_FROM, + MODEST_HEADER_VIEW_COLUMN_SUBJECT, + MODEST_HEADER_VIEW_COLUMN_RECEIVED_DATE + }; + priv = MODEST_MAIN_WINDOW_GET_PRIVATE(self); + + for (i = 0 ; i != sizeof(cols) / sizeof(ModestHeaderViewColumn); ++i) + columns = g_slist_append (columns, GINT_TO_POINTER(cols[i])); + + header_view = modest_widget_factory_get_header_view (priv->widget_factory); + modest_header_view_set_columns (header_view, columns); + g_slist_free (columns); + + return header_view; +} + +static void +on_toolbar_button_clicked (ModestToolbar *toolbar, ModestToolbarButton button_id, + ModestMainWindow *self) +{ + GtkTreeSelection *sel; + GtkTreeIter iter; + GtkTreeModel *model; + ModestMainWindowPrivate *priv; + + priv = MODEST_MAIN_WINDOW_GET_PRIVATE(self); + + switch (button_id) { + case MODEST_TOOLBAR_BUTTON_NEW_MAIL: + on_menu_new_message (self, 0, NULL); + break; + case MODEST_TOOLBAR_BUTTON_REPLY: + on_menu_reply_forward (self, 1, NULL); + break; + case MODEST_TOOLBAR_BUTTON_REPLY_ALL: + on_menu_reply_forward (self, 2, NULL); + break; + case MODEST_TOOLBAR_BUTTON_FORWARD: + on_menu_reply_forward (self, 3, NULL); + break; + case MODEST_TOOLBAR_BUTTON_SEND_RECEIVE: + + + case MODEST_TOOLBAR_BUTTON_NEXT: + sel = gtk_tree_view_get_selection (GTK_TREE_VIEW(priv->header_view)); + if (sel) { + gtk_tree_selection_get_selected (sel, &model, &iter); + gtk_tree_model_iter_next (model, &iter); + gtk_tree_selection_select_iter (sel, &iter); + } + + case MODEST_TOOLBAR_BUTTON_PREV: + /* if (sel) { */ +/* gtk_tree_selection_get_selected (sel, &model, &iter); */ +/* gtk_tree_model_iter_prev (model, &iter); */ +/* gtk_tree_selection_select_iter (sel, &iter); */ +/* } */ + + break; + case MODEST_TOOLBAR_BUTTON_DELETE: + on_menu_delete (self, 0, GTK_WIDGET (toolbar)); + break; + + default: + g_printerr ("modest: key %d pressed\n", button_id); + } +} + +static ModestToolbar* +toolbar_new (ModestMainWindow *self) +{ + int i; + ModestToolbar *toolbar; + GSList *buttons = NULL; + ModestMainWindowPrivate *priv; + + ModestToolbarButton button_ids[] = { + MODEST_TOOLBAR_BUTTON_NEW_MAIL, + MODEST_TOOLBAR_BUTTON_REPLY, + MODEST_TOOLBAR_BUTTON_REPLY_ALL, + MODEST_TOOLBAR_BUTTON_FORWARD, + MODEST_TOOLBAR_SEPARATOR, + MODEST_TOOLBAR_BUTTON_SEND_RECEIVE, + MODEST_TOOLBAR_SEPARATOR, + MODEST_TOOLBAR_BUTTON_PREV, + MODEST_TOOLBAR_BUTTON_NEXT, + MODEST_TOOLBAR_SEPARATOR, + MODEST_TOOLBAR_BUTTON_DELETE + }; + + priv = MODEST_MAIN_WINDOW_GET_PRIVATE(self); + + for (i = 0 ; i != sizeof(button_ids) / sizeof(ModestToolbarButton); ++i) + buttons = g_slist_append (buttons, GINT_TO_POINTER(button_ids[i])); + + toolbar = modest_widget_factory_get_main_toolbar (priv->widget_factory, buttons); + g_slist_free (buttons); + + g_signal_connect (G_OBJECT(toolbar), "button_clicked", + G_CALLBACK(on_toolbar_button_clicked), self); + + return toolbar; +} + + + +static void +restore_sizes (ModestMainWindow *self) +{ + ModestConf *conf; + ModestMainWindowPrivate *priv; + + priv = MODEST_MAIN_WINDOW_GET_PRIVATE(self); + conf = modest_tny_platform_factory_get_modest_conf_instance (priv->factory); + + modest_widget_memory_restore_settings (conf,GTK_WIDGET(self), + "modest-main-window"); + modest_widget_memory_restore_settings (conf, GTK_WIDGET(priv->folder_paned), + "modest-folder-paned"); + modest_widget_memory_restore_settings (conf, GTK_WIDGET(priv->msg_paned), + "modest-msg-paned"); + modest_widget_memory_restore_settings (conf, GTK_WIDGET(priv->main_paned), + "modest-main-paned"); +} + + +static void +save_sizes (ModestMainWindow *self) +{ + ModestMainWindowPrivate *priv; + ModestConf *conf; + + priv = MODEST_MAIN_WINDOW_GET_PRIVATE(self); + conf = modest_tny_platform_factory_get_modest_conf_instance (priv->factory); + + modest_widget_memory_save_settings (conf,GTK_WIDGET(self), + "modest-main-window"); + modest_widget_memory_save_settings (conf, GTK_WIDGET(priv->folder_paned), + "modest-folder-paned"); + modest_widget_memory_save_settings (conf, GTK_WIDGET(priv->msg_paned), + "modest-msg-paned"); + modest_widget_memory_save_settings (conf, GTK_WIDGET(priv->main_paned), + "modest-main-paned"); +} + +static GtkWidget* +wrapped_in_scrolled_window (GtkWidget *widget, gboolean needs_viewport) +{ + GtkWidget *win; + + win = gtk_scrolled_window_new (NULL, NULL); + gtk_scrolled_window_set_policy + (GTK_SCROLLED_WINDOW (win),GTK_POLICY_NEVER, + GTK_POLICY_AUTOMATIC); + + if (needs_viewport) + gtk_scrolled_window_add_with_viewport + (GTK_SCROLLED_WINDOW(win), widget); + else + gtk_container_add (GTK_CONTAINER(win), + widget); + + return win; +} + + +static gboolean +on_delete_event (GtkWidget *widget, GdkEvent *event, ModestMainWindow *self) +{ + save_sizes (self); + return FALSE; +} + +static GtkWidget* +favorites_view () +{ + GtkWidget *favorites; + GtkTreeStore *store; + GtkTreeViewColumn *col; + + store = gtk_tree_store_new (1, G_TYPE_STRING); + favorites = gtk_tree_view_new_with_model (GTK_TREE_MODEL(store)); + col = gtk_tree_view_column_new_with_attributes (_("Favorites"), + gtk_cell_renderer_text_new(), + "text", 0, NULL); + + gtk_tree_view_append_column (GTK_TREE_VIEW(favorites), col); + gtk_widget_show_all (favorites); + + g_object_unref (G_OBJECT(store)); + + return favorites; +} + + + +GtkWidget* +modest_main_window_new (ModestWidgetFactory *widget_factory) +{ + GObject *obj; + ModestMainWindowPrivate *priv; + + GtkWidget *main_vbox; + GtkWidget *status_hbox; + GtkWidget *header_win, *folder_win, *favorites_win; + + g_return_val_if_fail (widget_factory, NULL); + + obj = g_object_new(MODEST_TYPE_MAIN_WINDOW, NULL); + priv = MODEST_MAIN_WINDOW_GET_PRIVATE(obj); + + g_object_ref (widget_factory); + priv->widget_factory = widget_factory; + + /* widgets from factory */ + priv->folder_view = modest_widget_factory_get_folder_view (widget_factory); + priv->header_view = header_view_new (MODEST_MAIN_WINDOW(obj)); + priv->msg_preview = modest_widget_factory_get_msg_preview (widget_factory); + + folder_win = wrapped_in_scrolled_window (GTK_WIDGET(priv->folder_view), + FALSE); + header_win = wrapped_in_scrolled_window (GTK_WIDGET(priv->header_view), + FALSE); + favorites_win = wrapped_in_scrolled_window (favorites_view(),FALSE); + + /* tool/menubar */ + priv->menubar = menubar_new (MODEST_MAIN_WINDOW(obj)); + priv->toolbar = GTK_WIDGET(toolbar_new (MODEST_MAIN_WINDOW(obj))); + + /* paned */ + priv->folder_paned = gtk_vpaned_new (); + priv->msg_paned = gtk_vpaned_new (); + priv->main_paned = gtk_hpaned_new (); + gtk_paned_add1 (GTK_PANED(priv->main_paned), priv->folder_paned); + gtk_paned_add2 (GTK_PANED(priv->main_paned), priv->msg_paned); + gtk_paned_add1 (GTK_PANED(priv->folder_paned), favorites_win); + gtk_paned_add2 (GTK_PANED(priv->folder_paned), folder_win); + gtk_paned_add1 (GTK_PANED(priv->msg_paned), header_win); + gtk_paned_add2 (GTK_PANED(priv->msg_paned), GTK_WIDGET(priv->msg_preview)); + + gtk_widget_show (GTK_WIDGET(priv->header_view)); + gtk_tree_view_columns_autosize (GTK_TREE_VIEW(priv->header_view)); + + + /* status bar / progress */ + status_hbox = gtk_hbox_new (FALSE, 0); + gtk_box_pack_start (GTK_BOX(status_hbox), + modest_widget_factory_get_folder_info_label (widget_factory), + FALSE,FALSE, 6); + gtk_box_pack_start (GTK_BOX(status_hbox), + modest_widget_factory_get_status_bar(widget_factory), + TRUE, TRUE, 0); + gtk_box_pack_start (GTK_BOX(status_hbox), + modest_widget_factory_get_progress_bar(widget_factory), + FALSE, FALSE, 0); + gtk_box_pack_start (GTK_BOX(status_hbox), + modest_widget_factory_get_online_toggle(widget_factory), + FALSE, FALSE, 0); + + /* putting it all together... */ + main_vbox = gtk_vbox_new (FALSE, 6); + gtk_box_pack_start (GTK_BOX(main_vbox), priv->menubar, FALSE, FALSE, 0); + gtk_box_pack_start (GTK_BOX(main_vbox), priv->toolbar, FALSE, FALSE, 0); + gtk_box_pack_start (GTK_BOX(main_vbox), priv->main_paned, TRUE, TRUE,0); + gtk_box_pack_start (GTK_BOX(main_vbox), status_hbox, FALSE, FALSE, 0); + + gtk_container_add (GTK_CONTAINER(obj), main_vbox); + restore_sizes (MODEST_MAIN_WINDOW(obj)); + + gtk_window_set_title (GTK_WINDOW(obj), "Modest"); + gtk_window_set_icon (GTK_WINDOW(obj), + modest_icon_factory_get_icon (MODEST_APP_ICON)); + + gtk_widget_show_all (main_vbox); + + g_signal_connect (G_OBJECT(obj), "delete-event", + G_CALLBACK(on_delete_event), obj); + + return GTK_WIDGET(obj); +} diff --git a/src/maemo/modest-main-window.h b/src/maemo/modest-main-window.h new file mode 100644 index 0000000..be89bf0 --- /dev/null +++ b/src/maemo/modest-main-window.h @@ -0,0 +1,47 @@ +/* modest-main-window.h */ +/* insert (c)/licensing information) */ + +#ifndef __MODEST_MAIN_WINDOW_H__ +#define __MODEST_MAIN_WINDOW_H__ + +#include +#include + +#ifdef HAVE_CONFIG_H +#include +#endif /*HAVE_CONFIG_H*/ + +G_BEGIN_DECLS + +/* convenience macros */ +#define MODEST_TYPE_MAIN_WINDOW (modest_main_window_get_type()) +#define MODEST_MAIN_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),MODEST_TYPE_MAIN_WINDOW,ModestMainWindow)) +#define MODEST_MAIN_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),MODEST_TYPE_MAIN_WINDOW,GtkWindow)) +#define MODEST_IS_MAIN_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),MODEST_TYPE_MAIN_WINDOW)) +#define MODEST_IS_MAIN_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),MODEST_TYPE_MAIN_WINDOW)) +#define MODEST_MAIN_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj),MODEST_TYPE_MAIN_WINDOW,ModestMainWindowClass)) + +typedef struct _ModestMainWindow ModestMainWindow; +typedef struct _ModestMainWindowClass ModestMainWindowClass; + +struct _ModestMainWindow { + GtkWindow parent; + /* insert public members, if any */ +}; + +struct _ModestMainWindowClass { + GtkWindowClass parent_class; + /* insert signal callback declarations, eg. */ + /* void (* my_event) (ModestMainWindow* obj); */ +}; + +/* member functions */ +GType modest_main_window_get_type (void) G_GNUC_CONST; + + +GtkWidget* modest_main_window_new (ModestWidgetFactory *factory); + +G_END_DECLS + +#endif /* __MODEST_MAIN_WINDOW_H__ */ + diff --git a/src/maemo/modest-store-widget.c b/src/maemo/modest-store-widget.c new file mode 100644 index 0000000..33989db --- /dev/null +++ b/src/maemo/modest-store-widget.c @@ -0,0 +1,355 @@ +/* Copyright (c) 2006, Nokia Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Nokia Corporation nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER + * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include "modest-store-widget.h" +#include + +/* 'private'/'protected' functions */ +static void modest_store_widget_class_init (ModestStoreWidgetClass *klass); +static void modest_store_widget_init (ModestStoreWidget *obj); +static void modest_store_widget_finalize (GObject *obj); +/* list my signals */ +enum { + /* MY_SIGNAL_1, */ + /* MY_SIGNAL_2, */ + LAST_SIGNAL +}; + +typedef struct _ModestStoreWidgetPrivate ModestStoreWidgetPrivate; +struct _ModestStoreWidgetPrivate { + + gchar* proto; + + GtkWidget *servername; + GtkWidget *username; + GtkWidget *security; + GtkWidget *auth; + GtkWidget *chooser; + GtkWidget *remember_pwd; + + ModestWidgetFactory *factory; +}; +#define MODEST_STORE_WIDGET_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE((o), \ + MODEST_TYPE_STORE_WIDGET, \ + ModestStoreWidgetPrivate)) +/* globals */ +static GtkContainerClass *parent_class = NULL; + +/* uncomment the following if you have defined any signals */ +/* static guint signals[LAST_SIGNAL] = {0}; */ + +GType +modest_store_widget_get_type (void) +{ + static GType my_type = 0; + if (!my_type) { + static const GTypeInfo my_info = { + sizeof(ModestStoreWidgetClass), + NULL, /* base init */ + NULL, /* base finalize */ + (GClassInitFunc) modest_store_widget_class_init, + NULL, /* class finalize */ + NULL, /* class data */ + sizeof(ModestStoreWidget), + 1, /* n_preallocs */ + (GInstanceInitFunc) modest_store_widget_init, + NULL + }; + my_type = g_type_register_static (GTK_TYPE_VBOX, + "ModestStoreWidget", + &my_info, 0); + } + return my_type; +} + +static void +modest_store_widget_class_init (ModestStoreWidgetClass *klass) +{ + GObjectClass *gobject_class; + gobject_class = (GObjectClass*) klass; + + parent_class = g_type_class_peek_parent (klass); + gobject_class->finalize = modest_store_widget_finalize; + + g_type_class_add_private (gobject_class, sizeof(ModestStoreWidgetPrivate)); + + /* signal definitions go here, e.g.: */ +/* signals[MY_SIGNAL_1] = */ +/* g_signal_new ("my_signal_1",....); */ +/* signals[MY_SIGNAL_2] = */ +/* g_signal_new ("my_signal_2",....); */ +/* etc. */ +} + +static void +modest_store_widget_init (ModestStoreWidget *obj) +{ + ModestStoreWidgetPrivate *priv; + + priv = MODEST_STORE_WIDGET_GET_PRIVATE(obj); + + priv->proto = NULL; +} + + + +static GtkWidget * +maildir_configuration (ModestStoreWidget *self) +{ + ModestStoreWidgetPrivate *priv; + GtkWidget *label, *box, *hbox; + + priv = MODEST_STORE_WIDGET_GET_PRIVATE(self); + box = gtk_vbox_new (FALSE, 6); + + label = gtk_label_new (NULL); + gtk_label_set_markup (GTK_LABEL(label), + _("Maildir configuration")); + gtk_box_pack_start (GTK_BOX(box), label, FALSE, FALSE, 6); + label = gtk_label_new (NULL); + gtk_label_set_markup (GTK_LABEL(label), + _("Please select the path to your Maildir below")); + gtk_box_pack_start (GTK_BOX(box), label, FALSE, FALSE, 6); + + label = gtk_label_new (_("Path:")); + + priv->chooser = + gtk_file_chooser_button_new (_("(none)"), + GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER); + + hbox = gtk_hbox_new (FALSE, 6); + gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 6); + gtk_box_pack_start (GTK_BOX(hbox), priv->chooser, FALSE, FALSE, 6); + + gtk_box_pack_start (GTK_BOX(box), hbox, FALSE, FALSE, 6); + + return box; +} + + +static GtkWidget* +mbox_configuration (ModestStoreWidget *self) +{ + ModestStoreWidgetPrivate *priv; + GtkWidget *label, *box, *hbox; + + priv = MODEST_STORE_WIDGET_GET_PRIVATE(self); + box = gtk_vbox_new (FALSE, 6); + + label = gtk_label_new (NULL); + gtk_label_set_markup (GTK_LABEL(label), + _("Mbox configuration")); + gtk_box_pack_start (GTK_BOX(box), label, FALSE, FALSE, 6); + label = gtk_label_new (NULL); + gtk_label_set_markup (GTK_LABEL(label), + _("Please select your mbox file below")); + gtk_box_pack_start (GTK_BOX(box), label, FALSE, FALSE, 6); + + label = gtk_label_new (_("mbox:")); + + priv->chooser = + gtk_file_chooser_button_new (_("(none)"), + GTK_FILE_CHOOSER_ACTION_OPEN); + hbox = gtk_hbox_new (FALSE, 6); + gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 6); + gtk_box_pack_start (GTK_BOX(hbox), priv->chooser, FALSE, FALSE, 6); + + gtk_box_pack_start (GTK_BOX(box), hbox, FALSE, FALSE, 6); + + return box; +} + + +static GtkWidget* +imap_pop_configuration (ModestStoreWidget *self) +{ + ModestStoreWidgetPrivate *priv; + GtkWidget *label, *box, *hbox; + + priv = MODEST_STORE_WIDGET_GET_PRIVATE(self); + box = gtk_vbox_new (FALSE, 6); + + label = gtk_label_new (NULL); + gtk_label_set_markup (GTK_LABEL(label),_("Server configuration")); + gtk_box_pack_start (GTK_BOX(box), label, FALSE, FALSE, 6); + + hbox = gtk_hbox_new (FALSE, 6); + label = gtk_label_new (_("Username:")); + if (!priv->username) + priv->username = gtk_entry_new_with_max_length (40); + gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 0); + gtk_box_pack_start (GTK_BOX(hbox), priv->username,FALSE, FALSE, 6); + gtk_box_pack_start (GTK_BOX(box), hbox, FALSE, FALSE, 0); + + hbox = gtk_hbox_new (FALSE, 6); + label = gtk_label_new (_("Server:")); + if (!priv->servername) + priv->servername = gtk_entry_new_with_max_length (40); + gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 0); + gtk_box_pack_start (GTK_BOX(hbox), priv->servername,FALSE, FALSE, 6); + gtk_box_pack_start (GTK_BOX(box), hbox, FALSE, FALSE, 0); + + label = gtk_label_new(NULL); + gtk_label_set_markup (GTK_LABEL(label),_("Security")); + gtk_box_pack_start (GTK_BOX(box), label, FALSE, FALSE, 0); + + hbox = gtk_hbox_new (FALSE, 6); + label = gtk_label_new(NULL); + gtk_label_set_text (GTK_LABEL(label),_("Connection type:")); + gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 0); + gtk_box_pack_start (GTK_BOX(hbox), modest_widget_factory_get_combo_box + (priv->factory, MODEST_COMBO_BOX_TYPE_SECURITY_PROTOS), + FALSE, FALSE,0); + gtk_box_pack_start (GTK_BOX(box), hbox, FALSE, FALSE, 0); + + hbox = gtk_hbox_new (FALSE, 6); + label = gtk_label_new(NULL); + + gtk_label_set_text (GTK_LABEL(label),_("Authentication:")); + gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 6); + gtk_box_pack_start (GTK_BOX(hbox), modest_widget_factory_get_combo_box + (priv->factory, MODEST_COMBO_BOX_TYPE_AUTH_PROTOS), + FALSE, FALSE, 0); + + priv->remember_pwd = + gtk_check_button_new_with_label (_("Remember password")); + gtk_box_pack_start (GTK_BOX(hbox),priv->remember_pwd, + FALSE, FALSE, 0); + + gtk_box_pack_start (GTK_BOX(box), hbox, FALSE, FALSE, 0); + + return box; +} + + +static void +modest_store_widget_finalize (GObject *obj) +{ + ModestStoreWidgetPrivate *priv; + priv = MODEST_STORE_WIDGET_GET_PRIVATE(obj); + + if (priv->factory) { + g_object_unref (priv->factory); + priv->factory = NULL; + } + + if (priv->proto) { + g_free (priv->proto); + priv->proto = NULL; + } + + G_OBJECT_CLASS(parent_class)->finalize (obj); +} + + + +GtkWidget* +modest_store_widget_new (ModestWidgetFactory *factory, const gchar *proto) +{ + GObject *obj; + GtkWidget *w; + ModestStoreWidget *self; + ModestStoreWidgetPrivate *priv; + + g_return_val_if_fail (proto, NULL); + g_return_val_if_fail (factory, NULL); + + obj = g_object_new(MODEST_TYPE_STORE_WIDGET, NULL); + self = MODEST_STORE_WIDGET(obj); + priv = MODEST_STORE_WIDGET_GET_PRIVATE(self); + + g_object_ref (factory); + priv->factory = factory; + + priv->proto = g_strdup (proto); + + if (strcmp (proto, MODEST_PROTOCOL_STORE_POP) == 0 || + strcmp (proto, MODEST_PROTOCOL_STORE_IMAP) == 0) { + w = imap_pop_configuration (self); + } else if (strcmp (proto, MODEST_PROTOCOL_STORE_MAILDIR) == 0) { + w = maildir_configuration (self); + } else if (strcmp (proto, MODEST_PROTOCOL_STORE_MBOX) == 0) { + w = mbox_configuration (self); + } else + w = gtk_label_new (""); + + gtk_widget_show_all (w); + gtk_box_pack_start (GTK_BOX(self), w, FALSE, FALSE, 2); + + return GTK_WIDGET(self); +} + + +gboolean +modest_store_widget_get_remember_password (ModestStoreWidget *self) +{ + ModestStoreWidgetPrivate *priv; + + g_return_val_if_fail (self, FALSE); + priv = MODEST_STORE_WIDGET_GET_PRIVATE(self); + + return gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(priv->remember_pwd)); +} + + +const gchar* +modest_store_widget_get_username (ModestStoreWidget *self) +{ + ModestStoreWidgetPrivate *priv; + + g_return_val_if_fail (self, NULL); + priv = MODEST_STORE_WIDGET_GET_PRIVATE(self); + + return gtk_entry_get_text (GTK_ENTRY(priv->username)); +} + +const gchar* +modest_store_widget_get_servername (ModestStoreWidget *self) +{ + ModestStoreWidgetPrivate *priv; + + g_return_val_if_fail (self, NULL); + priv = MODEST_STORE_WIDGET_GET_PRIVATE(self); + + return gtk_entry_get_text (GTK_ENTRY(priv->servername)); +} + + +const gchar* +modest_store_widget_get_proto (ModestStoreWidget *self) +{ + ModestStoreWidgetPrivate *priv; + + g_return_val_if_fail (self, FALSE); + priv = MODEST_STORE_WIDGET_GET_PRIVATE(self); + + return priv->proto; +} + diff --git a/src/maemo/modest-store-widget.h b/src/maemo/modest-store-widget.h new file mode 100644 index 0000000..b6e3f96 --- /dev/null +++ b/src/maemo/modest-store-widget.h @@ -0,0 +1,48 @@ +/* modest-store-widget.h */ +/* insert (c)/licensing information) */ + +#ifndef __MODEST_STORE_WIDGET_H__ +#define __MODEST_STORE_WIDGET_H__ + +#include +#include + +G_BEGIN_DECLS + +/* convenience macros */ +#define MODEST_TYPE_STORE_WIDGET (modest_store_widget_get_type()) +#define MODEST_STORE_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),MODEST_TYPE_STORE_WIDGET,ModestStoreWidget)) +#define MODEST_STORE_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),MODEST_TYPE_STORE_WIDGET,GtkContainer)) +#define MODEST_IS_STORE_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),MODEST_TYPE_STORE_WIDGET)) +#define MODEST_IS_STORE_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),MODEST_TYPE_STORE_WIDGET)) +#define MODEST_STORE_WIDGET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj),MODEST_TYPE_STORE_WIDGET,ModestStoreWidgetClass)) + +typedef struct _ModestStoreWidget ModestStoreWidget; +typedef struct _ModestStoreWidgetClass ModestStoreWidgetClass; + +struct _ModestStoreWidget { + GtkVBox parent; + /* insert public members, if any */ +}; + +struct _ModestStoreWidgetClass { + GtkVBoxClass parent_class; + /* insert signal callback declarations, eg. */ + /* void (* my_event) (ModestStoreWidget* obj); */ +}; + +/* member functions */ +GType modest_store_widget_get_type (void) G_GNUC_CONST; + +GtkWidget* modest_store_widget_new (ModestWidgetFactory *factory, + const gchar* proto); + +gboolean modest_store_widget_get_remember_password (ModestStoreWidget *self); +const gchar* modest_store_widget_get_username (ModestStoreWidget *self); +const gchar* modest_store_widget_get_servername (ModestStoreWidget *self); +const gchar* modest_store_widget_get_proto (ModestStoreWidget *self); + +G_END_DECLS + +#endif /* __MODEST_STORE_WIDGET_H__ */ + diff --git a/src/maemo/modest-transport-widget.c b/src/maemo/modest-transport-widget.c new file mode 100644 index 0000000..20a6681 --- /dev/null +++ b/src/maemo/modest-transport-widget.c @@ -0,0 +1,246 @@ +/* modest-transport-widget.c */ + +/* insert (c)/licensing information) */ + +#include +#include "modest-transport-widget.h" +#include + +/* 'private'/'protected' functions */ +static void modest_transport_widget_class_init (ModestTransportWidgetClass *klass); +static void modest_transport_widget_init (ModestTransportWidget *obj); +static void modest_transport_widget_finalize (GObject *obj); +/* list my signals */ +enum { + /* MY_SIGNAL_1, */ + /* MY_SIGNAL_2, */ + LAST_SIGNAL +}; + +typedef struct _ModestTransportWidgetPrivate ModestTransportWidgetPrivate; +struct _ModestTransportWidgetPrivate { + + gchar *proto; + ModestWidgetFactory *factory; + + GtkWidget *servername; + GtkWidget *username; + GtkWidget *auth; + GtkWidget *remember_pwd; + +}; +#define MODEST_TRANSPORT_WIDGET_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE((o), \ + MODEST_TYPE_TRANSPORT_WIDGET, \ + ModestTransportWidgetPrivate)) +/* globals */ +static GtkContainerClass *parent_class = NULL; + +/* uncomment the following if you have defined any signals */ +/* static guint signals[LAST_SIGNAL] = {0}; */ + +GType +modest_transport_widget_get_type (void) +{ + static GType my_type = 0; + if (!my_type) { + static const GTypeInfo my_info = { + sizeof(ModestTransportWidgetClass), + NULL, /* base init */ + NULL, /* base finalize */ + (GClassInitFunc) modest_transport_widget_class_init, + NULL, /* class finalize */ + NULL, /* class data */ + sizeof(ModestTransportWidget), + 1, /* n_preallocs */ + (GInstanceInitFunc) modest_transport_widget_init, + NULL + }; + my_type = g_type_register_static (GTK_TYPE_VBOX, + "ModestTransportWidget", + &my_info, 0); + } + return my_type; +} + +static void +modest_transport_widget_class_init (ModestTransportWidgetClass *klass) +{ + GObjectClass *gobject_class; + gobject_class = (GObjectClass*) klass; + + parent_class = g_type_class_peek_parent (klass); + gobject_class->finalize = modest_transport_widget_finalize; + + g_type_class_add_private (gobject_class, sizeof(ModestTransportWidgetPrivate)); + + /* signal definitions go here, e.g.: */ +/* signals[MY_SIGNAL_1] = */ +/* g_signal_new ("my_signal_1",....); */ +/* signals[MY_SIGNAL_2] = */ +/* g_signal_new ("my_signal_2",....); */ +/* etc. */ +} + +static void +modest_transport_widget_init (ModestTransportWidget *obj) +{ + ModestTransportWidgetPrivate *priv; + priv = MODEST_TRANSPORT_WIDGET_GET_PRIVATE(obj); + + priv->proto = NULL; +} + +static void +modest_transport_widget_finalize (GObject *obj) +{ + ModestTransportWidgetPrivate *priv; + priv = MODEST_TRANSPORT_WIDGET_GET_PRIVATE(obj); + + if (priv->factory) { + g_object_unref (priv->factory); + priv->factory = NULL; + } + + if (priv->proto) { + g_free (priv->proto); + priv->proto = NULL; + } + + G_OBJECT_CLASS(parent_class)->finalize (obj); +} + + +static GtkWidget* +smtp_configuration (ModestTransportWidget *self) +{ + ModestTransportWidgetPrivate *priv; + GtkWidget *label, *box, *hbox; + + priv = MODEST_TRANSPORT_WIDGET_GET_PRIVATE(self); + box = gtk_vbox_new (FALSE, 6); + + label = gtk_label_new (NULL); + gtk_label_set_markup (GTK_LABEL(label), + _("SMTP configuration")); + gtk_box_pack_start (GTK_BOX(box), label, FALSE, FALSE, 6); + + priv->servername = gtk_entry_new_with_max_length (40); + + hbox = gtk_hbox_new (FALSE, 6); + gtk_box_pack_start (GTK_BOX(hbox), gtk_label_new (_("Servername: ")), + FALSE, FALSE, 6); + gtk_box_pack_start (GTK_BOX(hbox), priv->servername, + TRUE, TRUE, 6); + gtk_box_pack_start (GTK_BOX(box), hbox, TRUE, TRUE, 6); + + priv->auth = gtk_check_button_new_with_label (_("Requires authentication")); + gtk_box_pack_start (GTK_BOX(box), priv->auth, TRUE, FALSE, 6); + + label = gtk_label_new(NULL); + gtk_label_set_markup (GTK_LABEL(label),_("Security")); + gtk_box_pack_start (GTK_BOX(box), label, FALSE, FALSE, 0); + + hbox = gtk_hbox_new (FALSE, 6); + label = gtk_label_new(NULL); + gtk_label_set_text (GTK_LABEL(label),_("Connection type:")); + gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 0); + gtk_box_pack_start (GTK_BOX(hbox), modest_widget_factory_get_combo_box + (priv->factory, MODEST_COMBO_BOX_TYPE_SECURITY_PROTOS), + FALSE, FALSE,0); + gtk_box_pack_start (GTK_BOX(box), hbox, FALSE, FALSE, 0); + + hbox = gtk_hbox_new (FALSE, 6); + label = gtk_label_new(NULL); + + gtk_label_set_text (GTK_LABEL(label),_("Authentication:")); + gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 6); + gtk_box_pack_start (GTK_BOX(hbox), modest_widget_factory_get_combo_box + (priv->factory, MODEST_COMBO_BOX_TYPE_AUTH_PROTOS), + FALSE, FALSE, 0); + priv->remember_pwd = + gtk_check_button_new_with_label (_("Remember password")); + gtk_box_pack_start (GTK_BOX(hbox),priv->remember_pwd, + FALSE, FALSE, 0); + return box; +} + + + +GtkWidget* +modest_transport_widget_new (ModestWidgetFactory *factory, const gchar* proto) +{ + GObject *obj; + GtkWidget *w; + ModestTransportWidget *self; + ModestTransportWidgetPrivate *priv; + + g_return_val_if_fail (proto, NULL); + g_return_val_if_fail (factory, NULL); + + obj = g_object_new(MODEST_TYPE_TRANSPORT_WIDGET, NULL); + self = MODEST_TRANSPORT_WIDGET(obj); + priv = MODEST_TRANSPORT_WIDGET_GET_PRIVATE(self); + + g_object_ref (factory); + priv->factory = factory; + + priv->proto = g_strdup (proto); + + if (strcmp (proto, MODEST_PROTOCOL_TRANSPORT_SMTP) == 0) { + w = smtp_configuration (self); + } else + w = gtk_label_new (""); + + gtk_widget_show_all (w); + gtk_box_pack_start (GTK_BOX(self), w, FALSE, FALSE, 2); + + return GTK_WIDGET(self); +} + + +gboolean +modest_transport_widget_get_remember_password (ModestTransportWidget *self) +{ + ModestTransportWidgetPrivate *priv; + + g_return_val_if_fail (self, FALSE); + priv = MODEST_TRANSPORT_WIDGET_GET_PRIVATE(self); + + return gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(priv->remember_pwd)); +} + + +const gchar* +modest_transport_widget_get_username (ModestTransportWidget *self) +{ + ModestTransportWidgetPrivate *priv; + + g_return_val_if_fail (self, NULL); + priv = MODEST_TRANSPORT_WIDGET_GET_PRIVATE(self); + + return gtk_entry_get_text (GTK_ENTRY(priv->username)); +} + +const gchar* +modest_transport_widget_get_servername (ModestTransportWidget *self) +{ + ModestTransportWidgetPrivate *priv; + + g_return_val_if_fail (self, NULL); + priv = MODEST_TRANSPORT_WIDGET_GET_PRIVATE(self); + + return gtk_entry_get_text (GTK_ENTRY(priv->servername)); +} + + +const gchar* +modest_transport_widget_get_proto (ModestTransportWidget *self) +{ + ModestTransportWidgetPrivate *priv; + + g_return_val_if_fail (self, FALSE); + priv = MODEST_TRANSPORT_WIDGET_GET_PRIVATE(self); + + return priv->proto; +} + diff --git a/src/maemo/modest-transport-widget.h b/src/maemo/modest-transport-widget.h new file mode 100644 index 0000000..f72e971 --- /dev/null +++ b/src/maemo/modest-transport-widget.h @@ -0,0 +1,47 @@ +/* modest-transport-widget.h */ +/* insert (c)/licensing information) */ + +#ifndef __MODEST_TRANSPORT_WIDGET_H__ +#define __MODEST_TRANSPORT_WIDGET_H__ + +#include +#include + +G_BEGIN_DECLS + +/* convenience macros */ +#define MODEST_TYPE_TRANSPORT_WIDGET (modest_transport_widget_get_type()) +#define MODEST_TRANSPORT_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),MODEST_TYPE_TRANSPORT_WIDGET,ModestTransportWidget)) +#define MODEST_TRANSPORT_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),MODEST_TYPE_TRANSPORT_WIDGET,GtkContainer)) +#define MODEST_IS_TRANSPORT_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),MODEST_TYPE_TRANSPORT_WIDGET)) +#define MODEST_IS_TRANSPORT_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),MODEST_TYPE_TRANSPORT_WIDGET)) +#define MODEST_TRANSPORT_WIDGET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj),MODEST_TYPE_TRANSPORT_WIDGET,ModestTransportWidgetClass)) + +typedef struct _ModestTransportWidget ModestTransportWidget; +typedef struct _ModestTransportWidgetClass ModestTransportWidgetClass; + +struct _ModestTransportWidget { + GtkVBox parent; + /* insert public members, if any */ +}; + +struct _ModestTransportWidgetClass { + GtkVBoxClass parent_class; + /* insert signal callback declarations, eg. */ + /* void (* my_event) (ModestTransportWidget* obj); */ +}; + +/* member functions */ +GType modest_transport_widget_get_type (void) G_GNUC_CONST; + +GtkWidget* modest_transport_widget_new (ModestWidgetFactory *factory, const gchar *proto); + +gboolean modest_transport_widget_get_remember_password (ModestTransportWidget *self); +const gchar* modest_transport_widget_get_username (ModestTransportWidget *self); +const gchar* modest_transport_widget_get_servername (ModestTransportWidget *self); +const gchar* modest_transport_widget_get_proto (ModestTransportWidget *self); + +G_END_DECLS + +#endif /* __MODEST_TRANSPORT_WIDGET_H__ */ + diff --git a/src/maemo/modest-ui.c b/src/maemo/modest-ui.c new file mode 100644 index 0000000..3f06bad --- /dev/null +++ b/src/maemo/modest-ui.c @@ -0,0 +1,208 @@ +/* Copyright (c) 2006, Nokia Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Nokia Corporation nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER + * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include +#include + +#ifdef HAVE_CONFIG_H +#include +#endif /*HAVE_CONFIG_H*/ + +#include "../modest-ui.h" +#include "../modest-account-mgr.h" +#include "../modest-widget-factory.h" +#include "modest-main-window.h" +#include "modest-tny-platform-factory.h" + + +/* 'private'/'protected' functions */ +static void modest_ui_class_init (ModestUIClass *klass); +static void modest_ui_init (ModestUI *obj); +static void modest_ui_finalize (GObject *obj); + +gchar *on_password_requested (TnyAccountIface *, const gchar *, gboolean *); + + +typedef struct _ModestUIPrivate ModestUIPrivate; +struct _ModestUIPrivate { + ModestWidgetFactory *widget_factory; + + GtkWidget *main_window; +}; + +#define MODEST_UI_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE((o), \ + MODEST_TYPE_UI, \ + ModestUIPrivate)) + + +/* list my signals */ +enum { + /* MY_SIGNAL_1, */ + /* MY_SIGNAL_2, */ + LAST_SIGNAL +}; + +/* globals */ +static GObjectClass *parent_class = NULL; + + +GType +modest_ui_get_type (void) +{ + static GType my_type = 0; + if (!my_type) { + static const GTypeInfo my_info = { + sizeof(ModestUIClass), + NULL, /* base init */ + NULL, /* base finalize */ + (GClassInitFunc) modest_ui_class_init, + NULL, /* class finalize */ + NULL, /* class data */ + sizeof(ModestUI), + 1, /* n_preallocs */ + (GInstanceInitFunc) modest_ui_init, + NULL + }; + my_type = g_type_register_static (G_TYPE_OBJECT, + "ModestUI", + &my_info, 0); + } + return my_type; +} + + +static void +modest_ui_class_init (ModestUIClass *klass) +{ + GObjectClass *gobject_class; + gobject_class = (GObjectClass*) klass; + + parent_class = g_type_class_peek_parent (klass); + gobject_class->finalize = modest_ui_finalize; + + g_type_class_add_private (gobject_class, sizeof(ModestUIPrivate)); + +} + + +static void +modest_ui_init (ModestUI *obj) +{ + ModestUIPrivate *priv; + + priv = MODEST_UI_GET_PRIVATE(obj); + + priv->widget_factory = NULL; + + priv->main_window = NULL; +} + + +static void +modest_ui_finalize (GObject *obj) +{ + + ModestUIPrivate *priv = MODEST_UI_GET_PRIVATE(obj); + + if (priv->widget_factory) { + g_object_unref (G_OBJECT(priv->widget_factory)); + priv->widget_factory = NULL; + } +} + + +ModestUI* +modest_ui_new (void) +{ + GObject *obj; + ModestUIPrivate *priv; + TnyPlatformFactory *fact; + ModestAccountMgr *account_mgr; + TnyAccountStore *account_store; + + obj = g_object_new(MODEST_TYPE_UI, NULL); + priv = MODEST_UI_GET_PRIVATE(obj); + + /* Get the platform-dependent instances */ + fact = modest_tny_platform_factory_get_instance (); + + account_mgr = modest_tny_platform_factory_get_modest_account_mgr_instance (fact); + if (!account_mgr) { + g_printerr ("modest: could not create ModestAccountMgr instance\n"); + g_object_unref (obj); + return NULL; + } + + account_store = tny_platform_factory_new_account_store (fact); + if (!account_store) { + g_printerr ("modest: could not initialze ModestTnyAccountStore instance\n"); + return NULL; + } + + priv->widget_factory = modest_widget_factory_new (); + if (!priv->widget_factory) { + g_printerr ("modest: could not initialize widget factory\n"); + return NULL; + } + + return MODEST_UI(obj); +} + +static gboolean +on_main_window_destroy (GtkObject *widget, ModestUI *self) +{ + /* FIXME: check if there any viewer/editing windows opened */ + gtk_main_quit (); + return FALSE; +} + + +GtkWidget* +modest_ui_main_window (ModestUI *modest_ui) +{ + ModestUIPrivate *priv; + + g_return_val_if_fail (modest_ui, NULL); + priv = MODEST_UI_GET_PRIVATE(modest_ui); + + if (!priv->main_window) { + priv->main_window = + modest_main_window_new (priv->widget_factory); + g_signal_connect (G_OBJECT(priv->main_window), "destroy", + G_CALLBACK(on_main_window_destroy), modest_ui); + + } + + if (!priv->main_window) + g_printerr ("modest: could not create main window\n"); + + return priv->main_window; +} diff --git a/src/maemo/pixmaps/back.svg b/src/maemo/pixmaps/back.svg new file mode 100644 index 0000000..f1eb977 --- /dev/null +++ b/src/maemo/pixmaps/back.svg @@ -0,0 +1,852 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Jakub Steiner + + + http://jimmac.musichall.cz + + Go Previous + + + go + previous + left + arrow + pointer + < + + + + + + + + + + + + + + + + + + + + diff --git a/src/maemo/pixmaps/edit-delete.svg b/src/maemo/pixmaps/edit-delete.svg new file mode 100644 index 0000000..146d32d --- /dev/null +++ b/src/maemo/pixmaps/edit-delete.svg @@ -0,0 +1,882 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + Delete + + + + Jakub Steiner + + + + + edit + delete + shredder + + + + + Novell, Inc. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/maemo/pixmaps/folder-closed.png b/src/maemo/pixmaps/folder-closed.png new file mode 100644 index 0000000000000000000000000000000000000000..49b62169e70a1b554dd28daca90f99ebf0162dd8 GIT binary patch literal 368 zcmV-$0gwKPP)~mhb>*`z z`}+BK5miY|R{Kd1bD|C)>4|}wArhp7acprx!ihu%k~L7rWcmddX5k&o!csF#6^|Sm zP1bAz7ff(&l1U(;fy(R~JUsPiG~3~>reIOe;J*7j_Z$CJm7U#f76;#-i~3r$eq`1F O0000E+Rj+eajRnIOTL_wlf2J)^S$T5f2ttheCptz z#4$bMgq0mfIoWoWm*;;4@w~21<|)bS+!Q{a7u$C5SNc)HDl^lIrF0=+^#dSos4Ofj zA^U8+UKt^BR0jf>mWAJ6fn^CA8=H8zPtnym=xXI6GEmh(!8XxOuF&-xB+0{LDuX0R zFIGKJupRQbJT0xw937rH*Vplo3)tV^qL44JzP82g?lwl^0!yUHnh#(63z6gS;FN*h z$rbtiG*mT8Pfs^S;(}yK|8{WEh|YZ?34l~QJU!Fc+}NYPzYj~K%SM*Xnv9K31B6__ zW%QDf;UUr)qonQkrN?fI+f^4(S6@qeM;q}wwX8UNtT8b@Q;hO0g~)jfAxvaX4RIq{ qQhcsmp(vVr`%llfTnGQp4}1pFo3x+ZyG4rt0000 + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Jakub Steiner + + + http://jimmac.musichall.cz + + Go Next + + + go + next + right + arrow + pointer + > + + + + + + + + + + + + + + + + + + + + diff --git a/src/maemo/pixmaps/gnome-stock-mail-fwd.svg b/src/maemo/pixmaps/gnome-stock-mail-fwd.svg new file mode 100644 index 0000000..364491e --- /dev/null +++ b/src/maemo/pixmaps/gnome-stock-mail-fwd.svg @@ -0,0 +1,947 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + Mail + + + Jakub Steiner + + + + + Andreas Nilsson + + + + + + mail + e-mail + MUA + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/maemo/pixmaps/gnome-stock-mail-new.svg b/src/maemo/pixmaps/gnome-stock-mail-new.svg new file mode 100644 index 0000000..6e0c451 --- /dev/null +++ b/src/maemo/pixmaps/gnome-stock-mail-new.svg @@ -0,0 +1,462 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + Mail New + + + Jakub Steiner + + + + + Andreas Nilsson, Steven Garrity + + + + + + mail + e-mail + MUA + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/maemo/pixmaps/gnome-stock-mail-rpl.svg b/src/maemo/pixmaps/gnome-stock-mail-rpl.svg new file mode 100644 index 0000000..24c266c --- /dev/null +++ b/src/maemo/pixmaps/gnome-stock-mail-rpl.svg @@ -0,0 +1,534 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + Mail Reply + + + Garrett LeSage + + + + + Jakub Steiner, Andreas Nilsson + + + + + + mail + e-mail + reply + sender + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/maemo/pixmaps/go-next.svg b/src/maemo/pixmaps/go-next.svg new file mode 100644 index 0000000..989bff5 --- /dev/null +++ b/src/maemo/pixmaps/go-next.svg @@ -0,0 +1,191 @@ + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Jakub Steiner + + + http://jimmac.musichall.cz + + Go Next + + + go + next + right + arrow + pointer + > + + + + + + + + + + + + + + + + + + + + diff --git a/src/maemo/pixmaps/go-previous.svg b/src/maemo/pixmaps/go-previous.svg new file mode 100644 index 0000000..f1eb977 --- /dev/null +++ b/src/maemo/pixmaps/go-previous.svg @@ -0,0 +1,852 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Jakub Steiner + + + http://jimmac.musichall.cz + + Go Previous + + + go + previous + left + arrow + pointer + < + + + + + + + + + + + + + + + + + + + + diff --git a/src/maemo/pixmaps/gtk-refresh.svg b/src/maemo/pixmaps/gtk-refresh.svg new file mode 100644 index 0000000..8b63d9c --- /dev/null +++ b/src/maemo/pixmaps/gtk-refresh.svg @@ -0,0 +1,391 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Jakub Steiner + + + http://jimmac.musichall.cz + + View Refresh + + + reload + refresh + view + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/maemo/pixmaps/internet-mail.svg b/src/maemo/pixmaps/internet-mail.svg new file mode 100644 index 0000000..3022653 --- /dev/null +++ b/src/maemo/pixmaps/internet-mail.svg @@ -0,0 +1,454 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + Mail + + + Jakub Steiner + + + + + Andreas Nilsson + + + + + + mail + e-mail + MUA + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + m + + diff --git a/src/maemo/pixmaps/mail-forward.svg b/src/maemo/pixmaps/mail-forward.svg new file mode 100644 index 0000000..364491e --- /dev/null +++ b/src/maemo/pixmaps/mail-forward.svg @@ -0,0 +1,947 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + Mail + + + Jakub Steiner + + + + + Andreas Nilsson + + + + + + mail + e-mail + MUA + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/maemo/pixmaps/mail-mark-junk.svg b/src/maemo/pixmaps/mail-mark-junk.svg new file mode 100644 index 0000000..82eb9d5 --- /dev/null +++ b/src/maemo/pixmaps/mail-mark-junk.svg @@ -0,0 +1,502 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Jakub Steiner + + + http://jimmac.musichall.cz + + Mark mail as Junk + + + mail + spam + junk + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/maemo/pixmaps/mail-message-new.svg b/src/maemo/pixmaps/mail-message-new.svg new file mode 100644 index 0000000..6e0c451 --- /dev/null +++ b/src/maemo/pixmaps/mail-message-new.svg @@ -0,0 +1,462 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + Mail New + + + Jakub Steiner + + + + + Andreas Nilsson, Steven Garrity + + + + + + mail + e-mail + MUA + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/maemo/pixmaps/mail-reply-all.svg b/src/maemo/pixmaps/mail-reply-all.svg new file mode 100644 index 0000000..e860464 --- /dev/null +++ b/src/maemo/pixmaps/mail-reply-all.svg @@ -0,0 +1,962 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + Mail Reply All + + + Jakub Steiner + + + + + Andreas Nilsson, Garrett LeSage + + + + + + mail + e-mail + reply + all + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/maemo/pixmaps/mail-reply-sender.svg b/src/maemo/pixmaps/mail-reply-sender.svg new file mode 100644 index 0000000..24c266c --- /dev/null +++ b/src/maemo/pixmaps/mail-reply-sender.svg @@ -0,0 +1,534 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + Mail Reply + + + Garrett LeSage + + + + + Jakub Steiner, Andreas Nilsson + + + + + + mail + e-mail + reply + sender + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/maemo/pixmaps/process-stop.svg b/src/maemo/pixmaps/process-stop.svg new file mode 100644 index 0000000..72b78f0 --- /dev/null +++ b/src/maemo/pixmaps/process-stop.svg @@ -0,0 +1,334 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + Stop + 2005-10-16 + + + Andreas Nilsson + + + + + stop + halt + error + + + + + + Jakub Steiner + + + + + + + + + + + + + + + + + + + + + diff --git a/src/maemo/pixmaps/qgn_addr_icon_user_group.png b/src/maemo/pixmaps/qgn_addr_icon_user_group.png new file mode 100644 index 0000000000000000000000000000000000000000..c5b9f6c527c598e11e423549f76b855a5f567623 GIT binary patch literal 4443 zcmV-h5v1;kP)KLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde00d`2O+f$vv5tKEQIh}w03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(` z>RI+y?e7jKeZ#YO-C26#zCK~#9!?3Qb6ljjx3f3IUZw&M_oguoI=90CZMWOkrj zOTi#28pcGBShuz-0Zr{T&`P^jYc;XKrcGO?R&9kQp>EaaO|(+9g{r%>8(Y{)Ky3yD znuJS29CEW0?DzF0@AY}@eSp#+K6KiLe%kr=NdNQvbk5Op{*RQ;=lLSS!50+&2mR0C zlqBia;n1N&Y~Q|}pFQ{IZ9o_}_x#Vd9W(VTx|%}GCP~S0#>a-ZI?&IhOZ_~w^Siv! zo>@Pq!XGg$E0C0p_PyT>oUnz7Ei7!?#1q=Ik! z=4fYd!@9a-!ZHw+ju1N72DZ@A)C?!Os}4N4edUpjYZgVStGuhSW^&iN?nt^OHWT$35O~Xroa{gJC{S`Y~qQFfyub* zC1EYvErf|}nV*3)Efc7#sR*PKDRTKdT1G=p>6lXn4dF0bzp^6W^*D)NpTe3H%${9J zA~7d0Je0)mD#EsH#uMYjlsFT~7)sI^w9IORFmA6%*Rsm_u3pLui^%8ls0oeqNSZUF z!-Ti3#piM1_q$P2I+8;INn+NV0PTM{$<%#|!I2}T#Q0>ehoR^-{C0J_WvU3vz!uYH zG&I;94;0U1rtn1asXXb?G?RmqoYG}htqkLEIM8%KDr2B(I+ieq$K$lOy^igb7*mJ1 zG;*2Kr%p4Kw$7D#N_HRb9Oa&-Vr((3bpRIzdOHTLoL5#>h5`=TL2tB|(zP4W41?Gt z6gVUd%fb>SmSu5mcor z9Q^Uu_H?MZWZ;nlkI=NGiAN7UN_^}JhM}TrSu$!CT~{$ojf9foVqY(AcMs)mv~~RhcuGBdJoquEdOKMh zT0(3j#?rdGneY_Q&=^LNBrGA2l{9D1o#*t)f3S4(JY-{t_}FzcVc@CrLa+eY$dF2B zDLNYH_~GMwH%PPR%-{Fzdw0FGd~p+=QV-rTFTQdwzH%QqJBJdLdHcOTF;!Mb<=k2f z)26@wGJT(%#pjpU@>D&lq#_$>WIcmoq>=SBvXMd7GdMmdz}@E#J5582EUcK%z_kJD zOY860QD-joFgZSkzhowD@4Sg^=df*?1@o&g91|pmGdO1D@7S7pzXo$bt5%WD=USYm zrH6ekFTKe)HEIpsGVhJO_v-Jk3(IJ1450=(>FqqulY75MQpqr**v~s}ze#EN0v0(R z;=+kuE|33>(q{V>(7dX{TqjnQz%uoS)9r8u0j9Jml1h?U^JekZu{Lz6l!d`X0Bqi} zgZJLm*uVcrOiYYZRODyH>IltSzm9G~c||Q1ax*<|{F=(vz|D$Oqy--GJ?#WLfD^{+fx3}lOii(CZJZm)nh;7y;)(obDP-*^KUc;QO_qd&5*!&ZEHm*PRY4%SnVVBSrpF5{WqRSoFVg z&v@)A0FuLtoht}d&#q*mXOz~*9%KDipCz3fy&Y6sJOf*p!RTN&LKvL=_leJiOvbNq zvFC=))JL#|#nUhRAXHIb#cQv;Lfhe;7+MNxdeZ#5B}4}=4+23X35O(6Srug2^0kD* zce8Za@>?@fLFy7_C$kkPKz!2BMR#2?Q>JgR6p2vw1>oePa@()JX^xC}TQoRq>sO?(J1N0*QcP#qi>#V#iAPWdG)m z>mD>IrfG&5V;b*(==jD5upeD5Ew5DeRds|i*D4_bw=M>`-^8ty0g(Nz%{Ex-1SA50 z26Z}qi+GlbO0F*CUo1~b2xP2Rmax3?%MpD?*X_~T9z9&Mr?aDVQR#Y|f<*;kVUU9v zGhJASfKkuQFU{T)RCD{*G%-j7rRDQt%uEOv}nG zZrF3f!a5m&<-2vhHQ$ks2oy;b)iufS6Nd)XcDi9Jlnfz{94zzkRCdue8@KJF+IpYc zFnCoF^@+d51Bk-&fCWecJ)P6>0rK)olerRD88%HzoYh8_cCET-Yiafc09jMUA+Mgd zdp2^Sm6XZu`0uC2--ejUL@04!)YG#Hl6SIho1$o|yy11D+<6Yv{_baqD zzcD^g#+f2JKpIpz0TmbKCPKR&L7Us(b{Z7ZW+UzGQ*~2 z`Sx{9KuKVux}>~=EWakLG;)GB&-#VH%15i?FX7c4jIV z;!B|w#aJpF9!d^?(&V?UB2*5Hxf0BS<} zXs?!X@|+#Yf`Ez}R)rzOWvwgm|5(r(6W&LOv}0+xcD`qL7#<6N>0NKw|K{)3Zvh4X X`R3EM=J#IV00000NkvXXu0mjfmSE#| literal 0 HcmV?d00001 diff --git a/src/maemo/pixmaps/qgn_list_gene_fldr_clp.png b/src/maemo/pixmaps/qgn_list_gene_fldr_clp.png new file mode 100644 index 0000000000000000000000000000000000000000..0034909590894564a41661747508d391206fe0df GIT binary patch literal 210 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%Ea{HEjtmUzPnffIy#(?lOI#yL zg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+5i=$c)B=-RNPAX^Z&m+vn_)#^V|a~ zTo;S=Mww(?WQaOa^xyzv)6!MV&CJS2#Tv1aEoQ`!i5h7`jvC+8aJMwZ|`5* zozT{#vv3(J^Zfpdhtd@n0<}3GGxscByTCDD(4m2m;SPs%xyj_Z%|QDYJYD@<);T3K F0RSe>N5%jE literal 0 HcmV?d00001 diff --git a/src/maemo/pixmaps/qgn_list_gene_fldr_cls.png b/src/maemo/pixmaps/qgn_list_gene_fldr_cls.png new file mode 100644 index 0000000000000000000000000000000000000000..976155cb0e664c3337cb14293633aa9dc60bb23b GIT binary patch literal 570 zcmV-A0>%A_P)%2qfzkSO63#iBM(eRDwZG>mkw1B!_l3BS@#4rCN+~)bYF&-t zU^F^D>*7T2mE`%+ocMg-Twfy%AD&*=&F!6ZoQ}sQMHfecI*tD8^MmXQ^Rp~nUKFRp z>)oBberM{kEaR&yORdJwuWzile`FviMLU46?)DCZk>U-3hH6*r`G z3y=kX6JRPwB6Xw4mF{nBIoD&9Zcc=@BeZGr76MiX126&A5$8U2HZ4w!nl`dPMA-l@ zMk)pnSr`c}1%`^NOP$HMU^6Py3IvH2+ zs3YqLkf@O`^~u@`P86WR_96xsOpFcZ;Vbjq<+m->{lu)ZNS2D^4n0VvH;iAPM*%F0>jEoM&%71?e_Ja`j| zDYYf0F4`t74Mo`_AJw(i>bu(630>~|4G=PV-H{(97Ve?u z#oTr#lX*)OzRKtGr?&#?jRAs@TwOwKy>mc_b&yV{`ysXGVT1ipC}hus5U?s!)Z-54 zV{!EC`AcNc3xr@~QX`ny^X?wDFPi;*SYyn-BWw?|a|(c+_2KI`DMwLvpePzkP*&i; zeUV5Vc=kE50dQN_5yn{egf71FfU)#4=W8NSfrr4@nbx`hpn^~g(ZwY+I~y6O7|VQ! z3}0g&k&ovZoE2E;oE&W~#<_EU=05upV8bv_t*(LVk_uIFef`@3N^MD*gL5Kf?hdI} zd4q+mSS)tbep3zKok7us*aXb|Lh8+Bt=@pS#NQE&#~V*vr8>SCgz)<0@l6P_&lZ zK*3;8o>)BD!yE?w+`I&WCql1Vdz2Ja;K|EdRt)XVFZAu|r(UU4P6b8r`^%i&A3sb< zF3+?tNKur6(7gdD5}A{hvAkjWg>*oo@%1|jhr=RJAP}f#kB(FB7B6f4er7voYr(Oq lHie(^|Nnyid7v8s1_1dvS;YeZuDJjJ002ovPDHLkV1gCKNdN!< literal 0 HcmV?d00001 diff --git a/src/maemo/pixmaps/qgn_list_messagin.png b/src/maemo/pixmaps/qgn_list_messagin.png new file mode 100644 index 0000000000000000000000000000000000000000..173f6578a3bd542d86ebfe95203e0defb067d208 GIT binary patch literal 1026 zcmV+d1pWJoP)E$_Y8K6a$r?cz9^f@5mx{QP{^ z_kEC!@{Z>EE!-E5N15k&1N)fBwr$MK&3)BV1>jw{o-~&LeeT`E`ri2FwJT6ttrjfH zLNb{=lEmu~xL-*?y>M(a8Vx9p<6voN=?E|60pY_D-gt9@Ui8`4n>BPg9VpRglm`n7 z3x|5)j3Hq_XAnGGd$G2Rs1oE&p^%l!W$f>`mEJ#dJ&kI0R?#7A2nGQI>&r4E+UZ#VzC&^Oa_Hw3AK-P{Jpd+Lz$B~D~!z(6)hEit+tJgf1cs| zg>#HyW=zH;Y$8&Kh?6CiK?|wWB(hoQa#F|QokcX8t)Vc6AtN#(p`u)Ud>0dX3K@Ae zl`?ubjc<+hjsMWttMgjO5g~o5Duh+T1(}yhr6MJrL(1sj!)}8;5AxT$ zy&XsJ1U;=S$GMD-V&3Fy!<2PZDwWV~x3ROcgNW}Sbcd3xLPKe`!h2{h6@RIaV3F9i zkeDtKp4uZ4P7oHkkc`JrESUR1@pv3FGczobYPHHC==Kqjbah=vMyi$e(j2vFIg73L zpCzUXCmx(p9ov!WkuNHFK0P@Bt0M+3)u6?DWsSkIU`8cmC_ zX;u}|BRap=6sR}E$QyioBh}jb-V8nnFp<^a~SacQVbV#(K~h#k3Q0na{+dk4W6N5{sl}@< z?Fs$i*y!YzrQ2qA0eY}QTw0C@sIlq9mWm)P9RrwBVm7xo zpK63eJPL&(csK3G!nhZ8b%$X#TfoNzIGs+-d#l-qBL^!OG|Ec|tqBN)1rm*fw-Xas zT3n>jJfQpQ(x8=jLJ! ze8TXXQ3`49dG;`@fu44~>hSqLH#~mQhd?02!hbn14DWj%Rzfkfw6($O{Xj}yW`|cz zb=vYly1Jg{Kr|3ZocsETRGjk&Mi5L{h@Z)O%wR~5N^Rp@mbSrcccTuoiF3dxPZ zpeqTYfVHd~!C(m6%B^tNjM(e4f^r0jV~`KCUokQ=Mibvjwz`oI zk{wZ}XK>7I+ioYXUo+ye3CHT|u@+u|#aNAjfe{jMIVL7&FgpI8z350Z^9zg1^E}Vf z^6e&onL=-Bj#dqo>Gqxb9nomaeeuG11j8cM*CQw|v*J)q1zz-d=5O7+bl`9QpfE-n zMBA0CcRK_@bkoGseCYN1Q~{`N;_;(@2K|rrTYv!oiR_Zgc>_wJ00000NkvXXu0mjf D=d0mW literal 0 HcmV?d00001 diff --git a/src/maemo/pixmaps/qgn_list_messagin_editor.png b/src/maemo/pixmaps/qgn_list_messagin_editor.png new file mode 100644 index 0000000000000000000000000000000000000000..c68ef5ea7f6380c4d73538a3530b7bc960fb1f5d GIT binary patch literal 1013 zcmVvtgZa1g)JNl22^QBqQZ@$vDieSLjrmU*N>=?vRX9A+bh%9@hQsNPfGo0**@Z9TZ6l8qY*F(02rPfw2yak|QIvi%fp^xj_? zBxEU)hzSNyG$8S2=utmBm1RWr0|VrE`)Tsd5?fOiiUi%G;i0f;+H5usm6h9Y?%a8l zZF8fsshM~y!|!h)5HgDbutmHwNK-^W2M+p8Q)lBuM4pG?+p`-Z&qlG&e+0F4wQv-d zvI3$Y(OQwHr%ukPHrk2*xO^#qUEW$Ukv7zL_oBj6i8^0{{tj(ZGtt$jZX`TvQf&%m zXXmk$o`iFY6V)}l;C49?|26}=eI0na3*Y7vNc>n_ummZJx`vwfHyal!>7S=QjNpH607VFA0(c5;P!TR=8e zmWj}cpe3S6A{8S^s;b;wfsX5o3Q=3_WXczl0v3Lxu#iX*H3FVKc|x|NX{zR;W$Hvp z$|#aE>qgzZ^)zOBHYD*gg%6W&F%TM}khVKFg9%FzQ)H4lZSm4(2I=j+ofl#bqKYKN z)Faw?-uBlJ^VDS&QJ)Nd4WvlG(Gs`mkVpLwF)}i030YnYr0TZ1op6z$)GK-xkl2}k z!hw{)G03ae?=d(yOpU)vK09j#F;#ToVt3BrLp^lRZH%b-G&TL@Q!<&P<$H?&##eiu j;MVF~XTut`-vSH(u<}$`ehP*@00000NkvXXu0mjfW_8nz literal 0 HcmV?d00001 diff --git a/src/maemo/pixmaps/qgn_list_messagin_hdr.png b/src/maemo/pixmaps/qgn_list_messagin_hdr.png new file mode 100644 index 0000000000000000000000000000000000000000..c61cc3200db6c6b11ef19b7f82b9d9b557d388ff GIT binary patch literal 1169 zcmV;C1aA9@P)3!b7tEfgaen`J4?64Rw+vofbtA<>lq5udk=>(;UaWKHqvJ zg5u`cRN`{EoLZe8i9~|=Qd3iqWm!U}9}}>{{~5^Pa2Sjxlk>>CN0yTV;r{hE#N%^d z217cQw$=ttrNXtL>kvhW`GbLbsC~g6Ak)nxvg?bAh)`DJ^?Dsu z+qS}NHezNr1fM^E-oC3KqQKgcB1EGC^9!PkmX;PHjh+A)lt!c`ASHBDn2#r$OeWY0 z3*htl;qgo(5{crLdjcz0SQ(9@V=f4S2!C(}7ke%kD=RCjGBYzjp~_s4y8izD;jZ&N zrAD)bIi7oFBZ>%E_r=S&L2^Y+tJR{`z6&Z9hp*3mOTYv;hkiufvPa-Je3Ubr^b1p0 zTwGjgx9^7EA7taJZ#pqF{1di5y9q1utjsq(eFq(%eZlgyr)CFuUci%2Z$M{fCt_k; zS!ZZ(Z%1iyA$D!wLh=%1Nj0;~*3 zbAJ+w#IXLUCkX#Bw6>jOzGJQJ?D^n<{RoG`xX^PM+g{#@K#<3h%v5xAbSREULzPBN zk`kD>9l+*|>zR}rn_8Lw=zGW5^V^3GB5P?5Y_@fvWg{o#MNvm29Fa*+lkfV%vU9{E z_x0bBg_tCtJ=Z0#wr%)xbe+E>Q=7Q$m#4h5vLwajii!$(&^gJdUubB2J|D8PvuSy= z8c9l0L7Sw8y=FTbe>Hl0YYr{w=p5alkm4LM)loAV^+-?GVVy1aU;7o!Peyt&Xwzlj zF@-=p&y&U}vM#-5)lw3X`X3k5cl3OJAi|2by1E*oq!1`UDC7AUf-}6L4TcOogqTPK zBBH6O38N!d6n&*NWo2cIXRS_4dKgdYL(6g$CUU>8D31Ix2(2`!Ga&&wvX)+~yZd|P zpNTmo1u!`^I~O9Mq%hxt6nzqIj^Dv-IL7>Xod!i~vWO4_jQw(tTtUQEl{X6Qn z-h3soU_=801MGi6U+;Gq92{h~rcKo0IE0l}Gn$*5G43K=I~qk!PA-lg{}6XQ!)R=5 jWP(u1p@fo%{t#dQ;&K~~>&5Rn00000NkvXXu0mjf+H4>x literal 0 HcmV?d00001 diff --git a/src/maemo/pixmaps/qgn_list_messagin_hdr_encrypted.png b/src/maemo/pixmaps/qgn_list_messagin_hdr_encrypted.png new file mode 100644 index 0000000000000000000000000000000000000000..9c27686c1bea6a266e49d2046b9ba39ff775f580 GIT binary patch literal 1832 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 Hu0mjfX0K%d literal 0 HcmV?d00001 diff --git a/src/maemo/pixmaps/qgn_list_messagin_hdr_low.png b/src/maemo/pixmaps/qgn_list_messagin_hdr_low.png new file mode 100644 index 0000000000000000000000000000000000000000..7b9493b64b1e1f512fe02ed7f5a9d8ef561e25bc GIT binary patch literal 1233 zcmV;?1TOoDP)M#_WAh=Q!8W6!G9Ny@@!^O2bFI2u~IAq^d84jdPb!h$@6goL2; z+y$Dc7Y4&9`YvCz8I8ug!NI|+qB1HiEp3fbKC1Ln-!om`({uP4Z|R;weEf3Q9d=Ai zPU6I=4pzE?{9L$sHxyAyELE)#&Z|{48PsaEX6sfhtX4bIlV5*}fh*Tg@JudNt$d8x z#>OVlbo4j_D=B^+E*Fmt8yVd-qJiq`>!DF6W6N{-n4+5s+VaH-T<-0M_QgW1NnFir zznjN#=1gR-cFq=T} zPd_^dl}d%k2pQyZdGIZ0X4ZpEPi8__Rtk&7%5?vMdYt>N2Nk<_B7L2j*>ZB8hRyCm zfCksp)Fi%pM@L7qiO(0nsKJK3&6^mNt7{H0`-dOzXW#oOD-gRZ4ymca1*Uf=K!Urm zv$L}#5D1XTDJK~mGLawjcM0$Dk#E}0k~OJ0^Ln>(qf_PC=Qv=oV1cAAM1%Wa$GUz4rgOhTw(y~NGaNua z;Pvtsu=~w-L*L%>>Vg?b^m;wX%F4pAV_%`Kua8B|aU6X*DiISCgWB3!+`4@myxWbq vxOmjneU9$#Zd6xSGeXerEfLeb{}5mRaNV%@Oa-hy00000NkvXXu0mjfQD;*O literal 0 HcmV?d00001 diff --git a/src/maemo/pixmaps/qgn_list_messagin_hdr_low_unread.png b/src/maemo/pixmaps/qgn_list_messagin_hdr_low_unread.png new file mode 100644 index 0000000000000000000000000000000000000000..61d8b564f8fbdd9e09d30ff464e657cbd0355b62 GIT binary patch literal 1145 zcmV-<1cv*GP)Xv`q<2lR)D z$$spI37Zl-iH>xRxbd-N4hVjPkCno@3}h52?ONJfZa?m&^my)ZE?|tkI((Bi=ic+a z?|JU~+~=GFY_N|`ULulp_e_!<#?J_38ZC+In@n2#%Aor`*j551{Qdo!R>E3wt4paK}9qv22L zE_{6i-jx6vj(>|)USLTF_U#z|^y8}M{z(jSIx45`uc>|swXc_;>%t6DQ<52t_x_o` zyT?}kz|`4>n>h(=W#z7a+2y5O1abUB3k!bn`9Z%FyO;A|)NN@0trk=N89ygr+`0%s zh~lf$b%*n^)6dG;N3!LuP$B zeCk4>5V2aVFq_Tyi|Xs^QB+if&dyGZjEo=_i$SB&pt-r3#oOE4!Sg(ur#bRI)?_k~ zzcacB8`s1L;W;;1asNhK4jU1|t0Wxa$i%Rj)Ya7yxzs7gZcJimcz6>HvDiA+qXMGT z6IB{I7ek1r(&wC*u?^6eh>V$w5>fXv7;e zH-Z5-f)NGIU%UpV!;Wm4tJUctilTfVj^p5Q&CwzOWqazezq%SfjXPLZ*Dso&e|jfg zsCXNWfF3n92kFI_h-HTj4?mWLs;VmaSGg#zArux63f@9y&Mp+>=fh(x!=>JS8jfLV z`Aal59L78EZihBW#ft9S9)%`(0j;gAl=fUDON<9pQc{BGnh2Frz{1QZ^iLI_*l0vv z<~Bsa0hZ)-P9r08CzX5RCwCF zR%uLBR}}tcU^Z}=83JysT0s`6gVADI6>x8bLaha>X{}47iBVBwT8uFuT_`D4tEQwi z##r~IA_^jESxgic1SzP1BI__HGH>>MZtr_UQtMLmM{ja6Z_c~-eCM3|opT z@!s^{1%+Rbi;&EivUACBT8iGk-Mu`lL~)-a(VPr--8zN!!SSc zLNcVMr_0*f+sotP;^i`#6dFbglgR>$#R?h~yu7^TdISZE^*w4B@7{s+>{)mO1|oRl zMp)HqnD5^QpPq9H0r99Yh)hjEUVeTSYuo)_0TqOVh6UH(X+(Hf2!a9waJR7;MxzM^ zqY(`a4e}XD^WaI-@}#5~0*e_<6oe-bAT&1@e31w?mjzZgK2ELt60w^ynCBuYD=XU; zJZkj9AyPRPfm;0tzCPX)Y zqNBj4Ub1@A*f10=SP1#Mw01JH;2t^#^29k{+M2*LH^OJaWJrelgL(9raRLLZbE6>R z*_2uBJh4KdKvZNH`ua3bsd~8kp=3aS|44+68AYGl!Pp!)&WwO<*LRq>ZZ#armw~5Y148R?cH;FpkNCN3u|uPs#D6neL2Of>C-Tdf|XvXKm)xi zb_s<-Echq^a+w#>c2?l%Wi5vGbRtFi5SvftqV@D~oLrFxBVUYGNd!{!^O2Gg$sSFn znc~2BCXjR1!Kt&N5O9MckS8*<=c@+cz-6n7cD1y_aDX8Yt=~p za4yD%zQyT|G)7*37-x~ zNog5Z{dwE-x&QkP7LkaM9fZ-CiB6|`ZkT;@us(M8i962^xvZ=#4ycbYk(RbTVz)cV znW76MI%f8O(7WQmem{JM)Yf;CjP=E|B{|8xd-q;AH9H;~x6$pf&nQ_kut2?iMruSw zE?2b>tIa_uImp={cY&Q>Kttj1$>2iq6i?exN4?a;>_JR8_Z< zmo3%-c4>8H4oIm~4*ENQV;#HXatWkT5hg_WzjE#~S~I+)Vo;{N)*R!T&1P7vc2FW9 zJY*OIf|pNs_8n_q!P=^`(k>z794jq7H~7!3ekL*K zQtSIeq$!CE^@WE-fICf(p*Pw%y+q`Wap6O02e+c}!4v8XA1jv3!}66I+}5o6-1VP8 zRaI3aCME_44jjbw>(@E2*(RD!JFvI6H?p&{(bU`wtHlC8KY!%q{m9NPY}vAfBSdX& f?Vwokw*UhG<~~$8TQDhk00000NkvXXu0mjf;;0RI literal 0 HcmV?d00001 diff --git a/src/maemo/pixmaps/qgn_list_messagin_hdr_signed_high.png b/src/maemo/pixmaps/qgn_list_messagin_hdr_signed_high.png new file mode 100644 index 0000000000000000000000000000000000000000..3071acd2e4d5cc56902d1cfabadc080202ec309a GIT binary patch literal 4707 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 literal 0 HcmV?d00001 diff --git a/src/maemo/pixmaps/qgn_list_messagin_hdr_signed_low.png b/src/maemo/pixmaps/qgn_list_messagin_hdr_signed_low.png new file mode 100644 index 0000000000000000000000000000000000000000..014d02ff8cd592bd25653a26c02e0f623c019641 GIT binary patch literal 1829 zcmV+=2io|FP)gy+ATv!n=}Z|%Gft9PBb{l2 zk(ZIgV612~5;0MPsvvEU=;%p2Jcvml%7x=i1i2UB-e0!6KMRwznvg%TGds7tzi0Qe z&&xi~0pDq_71R;d&YZhNVxK7@__-Q8{Ie^A6R;nXZ&1$+AG~m}VyLmnbS^BCd>Rl$ zKK2hZ9rK@FQ88tD_;+Om|GT+EKZf@XYmvS>7L=F#1CaTgOs2c{uf`ljbd+k@^(M^T zxeehj=c-hT7Up<}Pj^6}p8rsg{}c)Td-lTDc>S;SY-oNMgkB(gM)t-_(WQkdWy*3? zBt46|3DRGnGlIMb`THaIIi_!prN{k-Ld=M zQAuMWarO_thqS*Ry3|yN>As}HhavClfs`Zge=1t#CS>1|;GK%XxWuq`0`4 z{I^w%%Y3nMYr3hm4bx&{v0%jtM9?*%)rz)^3tEv$5?z;%i&W1oNhL6HJc5DYH7GZh89tf2IycPV0dg`5n-F2GF z*S^UySsW1f0SAv>#meN_H1eK8)NBa_3NSi42D8~L4Ges2v7a&^*k&|>8@P+Hh6c!j zf)KuK8=M0JuRz`fm+*VpbT!X#}-*+@_kkVX}*^bz=XU$=J9q1}6@;9Lav^m$`n-HyP{G zp^(d=`Qj$*4kvE5eg(B!iRV@%q5tkZs%aO-#;hp&d<3iFqwr#K7;3BA;WJwC@0R|O z?c0}>v&%RQ)dta%nJSu67S~_wL|Cu_n>POg}ucG__e?7E#v1ezqAEbs!{zvn~;{e1!jvKoR8p> zGwTr*6-5=;IdM5_{U(e2*B|G2IPQ{Jlh-uyp|G%!_j*_x{2?=7%kV4(X(D?Oy2T-N9beJg|p z2Z@^Z>_k6b*T};Ry(S*y@pwsMVj^2oPO7T*_Vzvi4UduQS_9E&yU3#&y8vsJ5jzix zi;J6dxfhg`mGJ|WN(O&_2^P)^eWWnUSIj>F{!&(}e$w9rft_Ys2Yu~cuMaU#2GPRj z_ef#(jh$~Y+aM5dNJ~qbJjh2=zTNHuHOHhjCLkn#1gH(J>#UG~C&obu-NX)Q!B>Y%ZbMnq91>riPhNH5ribMOqOJy=HWF-+w@+ zCW(!Fj21i*^ac|~>4W3LRU*XPm_Q!b(K!sUNPu0tcG10-rpbUfjYdNf5)yFy_(y1N zZstq5m{!XC{6Asp)Tt;aD4x=BUFe*_o+h<0^{ T$~FY*00000NkvXXu0mjfm~DD8 literal 0 HcmV?d00001 diff --git a/src/maemo/pixmaps/qgn_list_messagin_hdr_unread.png b/src/maemo/pixmaps/qgn_list_messagin_hdr_unread.png new file mode 100644 index 0000000000000000000000000000000000000000..1c0c5f976d0992dfd94679c7519819e20d4446f7 GIT binary patch literal 935 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 literal 0 HcmV?d00001 diff --git a/src/maemo/pixmaps/qgn_list_messagin_hdr_unread_signed.png b/src/maemo/pixmaps/qgn_list_messagin_hdr_unread_signed.png new file mode 100644 index 0000000000000000000000000000000000000000..ec1cc23c45676f32d4e9f461b74f1dcd08f99d24 GIT binary patch literal 1543 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 literal 0 HcmV?d00001 diff --git a/src/maemo/pixmaps/qgn_list_messagin_hdr_unread_signed_low.png b/src/maemo/pixmaps/qgn_list_messagin_hdr_unread_signed_low.png new file mode 100644 index 0000000000000000000000000000000000000000..9e60c21a9cc1bbcbee51c07f4a5f65924b89a140 GIT binary patch literal 1814 zcmV+x2kH2UP)mX$NK}VhLl+sq)Eef`sb~|GW>&%wv z&Q!Few9^(kB1Ns00u>Nj8mh4Bu6!y4MZP0K&?JyVl91fK_qsX=)bh`sne*np`_8?; z_dDlz?t8!td-q^1p{@MPRT2^V5yAh<=*{adj6DE*RO~sAC4r3_63T4`12MFBkjj7+ z;Br~?W(?STR_C!K zYqC=VpQJ6g_*o&u7Bj>h9cW2Sg_}fzHCcPHNF;>lu`r39kevBa*YEG=j?_dcTzTx- zEX4Q6(}bu->ecA~=|`j#6(MrfDhOO$VD0Kcds-S?rBbZ<`#TVahcdAbfG7d9&?1Q3 zaHv21^-~ZDIrvv@B1DT^8FA2_`F4f+0T75}%4|aIjvcsNU5&N1wGgdY0~U`5OHU6v z_w0ti#|O%s9Jq+xB{LbtQ*KZtuR~nyYMiXPiDk0Ipwmc$(a(Oq&>Me$fxI9e4yO}h zfdDu5?!|ab4HTzOLnN1j&E>*6HVSR!DF}VM@%-892U%g!mx3>wl;&}CpP z4?;)%MQs20utDJI=|Qh^p)b{yUk&{5{TGJss#>>#IMC5Kg1Vn?z>Uw{^L0Vm*_rj) z6&SoMVB1!OyG#a4dmDICKj<48AY2&=Synb2T%fhG7Tr`GYjY1CZ*opo%u&>+ZnF5f zj8YQy#1XnS@6V??x*5-BX6tEYI<=a#WWGu?ALNjpuL_9%x`s?mOpvcrROC%AU%#Kr z5B%L`ysNjgJez*3_)(`qWWqnoD_?tqIYIg;uy3f1ixLt^L39jhDLYPX_m2^2Kh!X3y~+R$;O9x|y2r%Rqf$V$UQX?OBCIf_3?`=^DjaJX{f zv)-zUmwDyUjM|X#@+&0wAGt)U9sVB^2eD3>h-pGc^tygxG2JDOX*=oDoF^?8N=Rc( zK1qC{m{=?paC@%El0Cgp1124$2qpBBzTK$)4D*sP3!ZE6zVohoBC z=knaZ7l=XC29t&nXqu}qHhc}M*FT4`Ng*~R*%28k#qQm^=T&Ziw=kPZSHqkSpQm>q zwkJlTwXGSyG}J+NO9P?1Hx~Pbz<75UhVemMJogEDuQy|7`a4iqo!CqezCA$0W_q1PJ_yD>)=Ubyz++2-oO3T`G-hn>*|9{=ytKeym?zwvjczx_9fv&;;u=0=*!*AVpEAT3}zXS<>-e z!fT0sE|6^p$&Ke=FbI`OMN>GPPWzj(!;Dn8@A4*Sv?y&|}*Nk}HY z?8DO^S_i0^Hpa@Ghi!4@uV17w(3^MbJcAfUr>DpUlAc5?XDBGq2loMIwWy{;vw8de zGg7a>pjy-#Lsn#owOB+4!!Uxnv3U?c87q%f;#pog>OTh0pFO$9^L*p-Emn~PH<3rI z);KhVEXx}xvHtBa203QWoVaSYx{m+P-_GFfJs%b$D+?HuCdJ^my?iYsN!5v;+3z?{ zxlwsWqY)57;BYvo>~=fYY&H-@5v*1#n9XJw7}y28QGiS)3-!7LEXx7MvQVwn;ML33 z$#7^MZr)lxPe9zk(UFOT(2a(($z-Asj^iK_i9kFar|$$op!&1M)1U|$U}$(hoIVwR za=8q}ViEHBJmhjY7&$Nmm*y@{lH;V8SFhJQrcX+o#a~z`6loBmQmLc{EkOZmY;085 z*JKi)Tq!gfR_O-vcsvk`#adtlP^8B^b8-p>oz9N_TJw{mt91j>zq;28Yil1Nk@y7J zY?dCM+wF$&@k8_&yZMukA=O7fnO-1T#uf`qPfyX}Xbz$V>XlKMfYJmMjYgqbtwIe~ rizf13Pm(0Hi2ya*EETlzTYv!oIM-ktw?81800000NkvXXu0mjfx|VF& literal 0 HcmV?d00001 diff --git a/src/maemo/pixmaps/qgn_list_messagin_mail.png b/src/maemo/pixmaps/qgn_list_messagin_mail.png new file mode 100644 index 0000000000000000000000000000000000000000..4038776a605fa416ae5956fa6336aa010dc6f5f5 GIT binary patch literal 964 zcmV;#13UbQP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ-{h>Mcx7O-&kOzS3HwltODw z5CmwgUzwSi`M6$Qy^Ze(RIOHr+S}Xb&OLv@?(NNO`4<t`ZtL=Uu{3Cx1|En_$2VVJ#hw4@hKLNiu6wf)Q1bRX*VWx)@7b4Q zb!|O1(CE>}Sz5e)U}fc24LH+~I>&J?ClYN=Y49NuZON7k@$cooxO(MNfHz#%oo;j@ zr#riswRLY-72n>G=8^IUKVSRtGB8~)E(vh@*;9OeWoFmy<^A_Aabn`>hA~Ni^3Wj` zmu@ik-S;hnoH>1heD40Haa*E1b8?(teqCT;aVa*)$l=2rd+bQ8*lp@xeDNjTeCusI zuen}@LV=0#iP)Rk29!>xdF|ELx%BQkh{%pLVObXGOcxiN!?c z*Xr8YvoB-Yds@Z56FzLa;`&eD~2_u6T6JH}^gfNWg=twY7 z+#4(L;e&mIVMw6DSQI8igg|M0U(sK5kCCrlLTOP)=0qfL)N{B<$wH^TaX~!lWE@dla>YF&iz0~s`Jil z1OX9@2x2yi*T|;$#t0$?V+R+1{-uayp8|>13^hd zK~zY`)t1d`<3Tp@Ajd~w)DS9 zmb7~alwS52jMG@yjxFmW(rENCGwPv{NE+MF#x3-PfmaMXkAClr^uAJ-W%w_m^!VZE z=m>-m5JC`!A;K_36h(;R7;zjUNfM-K3dR^1W8j>Fa}FUyv9c^f{_;YILR)IL+ZTk8 zgEfhN&~?2P1OW&kcwDU#A>`or_!yN+1(GD8UazBGuS1q)q-lyMieTGzv1YRwOw+`0 zID~1Mux%Tz>*7KDfKs}+bc7I8t5v9~3eWQ}nM^Po4nYWk@B8pP54LT?aU8g=3(xZ~ zpU(>eN+}p)h2Z`D{X!$D)oNW(N)KLg7LQ8wq1WrRy4^0WuCAVz?)?0`)$8@LcDs%1 z>ucQJ-Xcj7=(>((vx!EdfzfD$e!u@@5kjErIt;^rVHoIkyEr^NZ2k2TJh^qtaQ{vS zA<*ylVObVz+g@xG1Oc)vL%Cc=wOR$G6lt2mvMl(%kGs1&Os7+Lo(D=Pgb-ki!EqdL z&Yy`dB9e2Xbr9vT=qIo?qg;GE9xo>f!w>*)b8}N{TwY!l`N_#ik(;Jj3NR$bTAy5S*Qzeg5ljpD-8<785bX-0$E0v{|dwFr7}3GKQITkI9{b zdcBVMe2&q0jPYm+%MK7yjyM7QAi;Fz!LmPLFc`RBeEHSyKmPE3`DNgocfR}f^_#E1 zX+x4^2+pCZDyp>!Disxh@56CjxQ+wI^+0KgG~oz>2yr~Z$B!2P(D~)(bCA%(>FMe7 znIZpmD2np7R4Si*R<1yOn22Oqh9pT4Li{;52m$dhKV(@3#u&0J0|~v3;QZC9(*6Ns WhPV^nMr21w)*o{cOk842jL8Bz z6BA98IL*Yw#7VXw!-yZqh#E1$5GTgL3Pq+syO!SD+k5MK&L~jYqU?v~=FNNWIqx~o z`+cr1l}h3N7`ofp)X~x5R}|%RB9XAlvJB$bz^@Sx3=IukVDikEEdzCScKYoONB5ya zt+3f_Ic0{2M{xFRHx?KEespwn^a2ACwhE+a+UdiGTd@?5K+eoN~;=p~rLfw6R zeb3SSR+K_sAiv-5v)dg#M~=3w&Mhy;@y6?2f#&AsAyrjx3n;_%Kp;?RG#bbDKXlOT zbe3go`h4IU%+5@r?v5%5g20IlW;HvIaYm9PArgsj3WvjpMx#Cb{r$%`TJ))}aktxK zE<`jI%UCcMno(Y6LuF+pTrL;f?mASImyxDAsG0_az!>2C{0)qck7IIj5|nXl>oKA= zAhM>byux)~S(ytrZ$`7+AV~>cC!`^!rlueYI*57=1DC(R#r^@*)YM|%z6bH^)!#5U zILLv5!62HNn$}`OAdiTmDd6#LMlZ5(gD^)?bpl3XQY&z`2d@e&BcN4%%1 zrXI1F#E#4<7?`w!s#56sii%3%uJfSfz~iu#h$t>J;>Aus)zDWu zO-u1RhjC6T?;^SS<4^iCEn*7_)x-S{v|wUl0&{aS89)|`9S0t6#hsoiR99Nyv=XJ& z^R1jvcrWwTJ1KYtd4bs4T^=W8lFav{m1Lx9>teJ*Y)l73w=81llBA%d#6&?h|LYx7 zYB5tgN>EBGJOM6UyrlQm*J&GFCz$M*|BH2%*a{F&0u@Hlh{bUHKV4`d$tGlF_1o>e zJ0l@jyd^n-tCMp`Uz7sVYI-(GLDRPM?_f0OSKpc2jO5m|(#aHaX#thV4{M!4Ad}C% z``TK;u|Sd*=^K;(FC>Vl$|dUHaVgF#ULzSDW!tmQ9MRaG*s_A9h(v!!5_jvBkr4#1 fUtc}<9{~mcC-|k?_q-Ih00000NkvXXu0mjfLUUjb literal 0 HcmV?d00001 diff --git a/src/maemo/pixmaps/qgn_list_messagin_mail_encrypted_read_high.png b/src/maemo/pixmaps/qgn_list_messagin_mail_encrypted_read_high.png new file mode 100644 index 0000000000000000000000000000000000000000..2ddb3f5ef0fa0e40dc461c4abe79be521402b386 GIT binary patch literal 3911 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 Vsd|K$Ns<5n002ovPDHLkV1icDh?D>T literal 0 HcmV?d00001 diff --git a/src/maemo/pixmaps/qgn_list_messagin_mail_encrypted_read_low.png b/src/maemo/pixmaps/qgn_list_messagin_mail_encrypted_read_low.png new file mode 100644 index 0000000000000000000000000000000000000000..6bf9e477cdb307decc0debc36a68d1ed2d26dfd5 GIT binary patch literal 1277 zcmVy5&=_af&HlU@@*RNO4d&o!e)xyrp$$j_U^X~85 zch2wJE5SN>xb#AJegC)qvl2v+`uh4afk5EA-|yG@d_GW%4XuOPTAR&gH}G@MD+>zj`rJr12tCu-Bz_d{k&OY@f{B_)=DfdQ)w_aPj|oj-Q$ zIObhmyn3!q)aKN4)!4uPNqm0s!)EHj4eY)jz`F7`K#_m01)DMWsw81FyVL_6ZB}Ew3!g!tHho>TA&Yc;Ij*h}^w}Uc{U#2o{=I^h3+f4^A|K*r|I(1tTBUeaqV|*Hmi$18BIMlsl zhDI%el2Jh_l`<^r1;a2{SXh8kCIKUlLx$WMl*x z85zsTK*andEqT_~_06xCnwnXS!I5$!bQ%dQ>Jc>8Tp$o~qqM&F0e=6(j_cR$xOZ<( zG*-e-uC1*-qExaLqbUKlUOVJ6DfX4>v3nN-Hvy~{F`&f61b7x%=#x{UCWVwh%+$7} z8?#W7pNL&q3S^pOD0oCkfn4~HiUC!>cv@)9=H1Ziby0WJrq-rtLqr{y+lA7?IAMZ+ z7n5i^;zg-cM%@t)lxIjc!Regd6feYp^31tt|Lh~o&bu%>=ZYSqQzxIo>u)r|>t$mC z@#O97=!90S!NiT7cxY!17$pPNN8Ir&3Oau4CY+N_%+1aTobr0T%Rnkh*UD#4;LW!h zV;9t*6iePEN)k65wBVKRz7=>BQC;X!C8&^-lY{JVHso@7+iD3)ClVe$RDq8_{p5dv zPCRoG3bJRqQ+N$x``lF4c@6O6Lw`c!C;80u>=K= z8lxH)<{Ci(5xidywi&`o`9sd<=S#aEIaw)`A#qWG__+tOQz%`1!Z%wXtdt`lmJJ{& ziGeyv6*IjxY8A8^74aq@oW$+c@1-k*-MhCidSzHnf)Er+1?K3ou^Ca4t>3q{qru*v zV-uG5>eg)!ae&*>1w|oWyKcPmerqhkLQ+#x6LA;eJN$XHax4q?1wScy#EPqN n{|GPur>St-ckEmo00000NkvXXu0mjfPD)fI literal 0 HcmV?d00001 diff --git a/src/maemo/pixmaps/qgn_list_messagin_mail_encrypted_unread.png b/src/maemo/pixmaps/qgn_list_messagin_mail_encrypted_unread.png new file mode 100644 index 0000000000000000000000000000000000000000..e85b88c76a8798e68ad8dd7efd7470b787d3c43e GIT binary patch literal 1106 zcmV-Y1g-mtP)p$Bp{b&F8 zj~1s03T_BGBaG3`pEZRdR4EKrM&|15(6s3?(&ooYUh;mwc<*H^Zc8Nz^M=F8%RA?O z&OPs(lgFXPH99(a%rwnYhGBSgT?f&)NB>Rq$lToA6t(ASfsBof9c%LWCI<%(!|U~y zwV9v)4W~~}B9l(Nwy>};<*EhbIL@h|p~J|^Dn2-QysXVzZy!Z}|Eu`=+-H;IvNn)q zSsstai<2jgBODHw&C0~YL@AM2r?&0%ny(R5wQWrx+qSC)Rb33@v3>1&Y5ekJ+ z6X@Rc(I=n6FfEcQ9X&mvvVQ!70M*xThbT($H8pSP_dq~L-+Pzo?(RMC`Mm${iRh9f zX-hxX$jC_P-#?T}rA>7;j*0+YX1Vo0nd$Ux1oo>Em6-0N?=S$d!3 zxUaW&6HqFV=xx$`hDM|aLsJ+;D`xRiWFFH${L1>pu^n(c$NK25AnAwh7IbB;8kOg1kDV_6eRa{?0@#jvW2l_)lrZn zig@Lvr||h#-(!cr0bP%^G8j!&A-};+MZd2l4Q$9fjtq8^1{K%%0s*HLXXZKJ@u*TL=;5ll&)KN?!`d_HwyT6`aJfw z5s)M+WXQzH?ua zL==l!Rilf6V%H+1RP$9i3SwPV_T0+@10~zC*?YiU;@G6~?f-l~;5ZJ8i;ERC>^}kw Y0Im{M3jIQ=ApigX07*qoM6N<$f@LNSrvLx| literal 0 HcmV?d00001 diff --git a/src/maemo/pixmaps/qgn_list_messagin_mail_encrypted_unread_high.png b/src/maemo/pixmaps/qgn_list_messagin_mail_encrypted_unread_high.png new file mode 100644 index 0000000000000000000000000000000000000000..4a34249b96347d803cd62623fd15eaf9b33a7256 GIT binary patch literal 3974 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 literal 0 HcmV?d00001 diff --git a/src/maemo/pixmaps/qgn_list_messagin_mail_high.png b/src/maemo/pixmaps/qgn_list_messagin_mail_high.png new file mode 100644 index 0000000000000000000000000000000000000000..92799dee39b4071b9586e306c1a0e26f5a14ddfa GIT binary patch literal 3582 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 IM6N<$f@y8b;s5{u literal 0 HcmV?d00001 diff --git a/src/maemo/pixmaps/qgn_list_messagin_mail_low.png b/src/maemo/pixmaps/qgn_list_messagin_mail_low.png new file mode 100644 index 0000000000000000000000000000000000000000..6ee833caf3f75878b5eac0e19e70a154acc26bbf GIT binary patch literal 853 zcmV-b1FHOqP)*;z_Z-go?&Yvf4%gmF zub+P$>*Jt9(&_ZJHm2Vfu3TzEfzN}#EhhXU`F}tx-+FRxRLq-!)V1$$IGh$m5kGZc zbab>gYapt$Ng4yc78E757SZ^pBidNJ#|fYNO{A%*DHe@JpJbc5I?|=KmKt2_YD7ww zHbk|{X2$itAkLm^2ha0^p-^aVRzTD%2?q8wIA`@issl!W zw9b!2BCR}c9a$7gFh02gi`j&l3McAMY;IgZ5OD8KKUP;)yW{creZ9=U5l9)0vEu!Q zT)XW~JbSUAZ8X=rGdj)8OylvR;U$)G0-MqU#L9cn;qtf?vQ2zXptdqc+hE_B#O`px zAEDy3d1T zQq+75rA{RvL6Bj$Tj8+VwsmkiY}7{*1WGeIyN2uO>DfTOY{Kp%S(Y``-U|{bT@M0LPf|!~SA|M8990If fH>Zcae+V!DD~E4K+qVJ|00000NkvXXu0mjfEBb-V literal 0 HcmV?d00001 diff --git a/src/maemo/pixmaps/qgn_list_messagin_mail_low_unread.png b/src/maemo/pixmaps/qgn_list_messagin_mail_low_unread.png new file mode 100644 index 0000000000000000000000000000000000000000..739fc52d8713eb891e116fab3359ee90543c9176 GIT binary patch literal 872 zcmV-u1DE`XP)V7>2&a zs2~d`CJE6L`gnlbw0@F%5g@HqRMdB=@j~1P60|*? zceh&t+KSl$at4FJ+-8e-Z<^*>U)=aP@_uM&$YD3VF)%Q&=`Kw}gRV2^OaW76sM$2s zj0h!@gd!zye{jTp)-A;nct1YA9>6qU=qd%zKvhyuCJJELjBp74%rQ<*zw;NYG&f?M25$vnojiy6B z3ye!8r(+f?K3-gAh=~IFdK%#-CA1Qxb8=_X%s~(YT)B80lhcdvx-_^QX*!P>Bm&`V z70m@{$5C85r&^bfuPKQU2V$BIRn>8!y$6Aqj5n`e;FO<$q!?x2uV4$Q{kY!Si`r@z zW+p~U)Kib)p?J{jZ7w6+QY|z=B7s}RnsLcbh*8yJrkW> yT{%NHtlG7%QFSo$h&RTTbay6<Zgs3P15puVrpsgi*dvJO!GlqLW5D%x< zd+i(7+4w>`6pb25SwZMEt)><+ipJIM9tO5#Pc%5lfcX0bV(xNod(x)Z3-HB`7h#P?FrU7=$Rblb z4()Fjq2m;o7cI1rE8C{^RM|G$xpQZeBuSm3C?ZbEcci_ir)Lj~iDELs_rZP`M@Lc4 z0-cu!p69{QI+Z~WtBS+K95&0BQIRjCv!D%$$NfbJq-c?K>SBM<4ZF-Lk*R{5`TD4kj_saUm5Q)TQ zgk`{%C$@s-IvKlI;H?G&G;H%(AnZSHG(cVAgh0fQW~I(QE$a5v)XvrE4G2df850(3 zKI$7**}}(9Lrx}9;3$Mzh=HSZ{47A@BejsoeX&poM25g!KxECnqGD%5VWAUKQ{k*c zSnOGf>x(@p3R`K^-M9u$t3i_1Ga%E7lqJULj?L$%392gk8Bq7#Fa+U{-tGx-c3($MNEie(jUw!p-=?hhvpE7DFvbq3Q&gyn9vUf z!uAOL(A1aItJ@``7SlrS&E=N82WH5ir#jWV{VBZl&bwJH5)(j4asV!s3_f4Rg<%(p z^;9hR{!ABZRBZ~+v1%}vladV_d4Wj=y-Q0PqT_wRU=ZOjWAW>m30qV1FpmFt8b05Ntd=cX zwj8cfH|kf6W8MNw>f7_rJ)5c&B7rf$#>Vl!npgYVtE#HN7XQgw<;{;?ku{ z#IoTG5U10HRjW5)Vr&Q-wzx6fnU5Uq!q?v(h1*?*_3PK+^6!6Oy}EZ#SJxE`4Gp2L zt}YWOnUsl=BFbD2c#j^=YSF1PgQzGkMp>y1MGhn0d;{qC=wl@4fT2*FEUwGRTz=Xb zNlHRR<$dWx?wpHj7rVhxt7IE99rl>0WoR^7*b9p9*~fV1f;eTpAS5uq!U459FXv)5 zS5@giEEZ4cu;=9+FQi6~ry6#9eokE#bxZ;gVK(bvG3)=e!&)s=ndwjhxtSgE##n-R zMWz;VPd!zd1W9P93j2ex|J2U4v^EhJXWox=9l&HDo!mKr*r~4H3==)&`?@=5)PMKP zvnS6Y6po~1;QAm&hDYF^^pmFqa&!9d+^$`_GVYMboreGb002ovPDHLkV1gF2 B%G&?{ literal 0 HcmV?d00001 diff --git a/src/maemo/pixmaps/qgn_list_messagin_mail_signed_read_high.png b/src/maemo/pixmaps/qgn_list_messagin_mail_signed_read_high.png new file mode 100644 index 0000000000000000000000000000000000000000..8d006840327a7f9ba9c92c2838e7d65898dbc3eb GIT binary patch literal 4224 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 Hu0mjf20WWb literal 0 HcmV?d00001 diff --git a/src/maemo/pixmaps/qgn_list_messagin_mail_signed_unread.png b/src/maemo/pixmaps/qgn_list_messagin_mail_signed_unread.png new file mode 100644 index 0000000000000000000000000000000000000000..7ff25a56dec51303a5b459b354725bffbc534074 GIT binary patch literal 1444 zcmV;V1zY-wP)P?-Lh(QSV8KcSyo(wc}lm?(jZPn=GHP}xFtd=Igh6| zw68kI=Y?Q71sJ9YHIu>Azz}Z#dMQrua8o+=+mb=d65j8>y!P08K{JqzFY4;RD>Aa( zZsg?VBDiS_B#Oq3Q{OPy#>1IJgn{_Qf|$Ej)V&zALd$Ww=`{p0X_V1?F)=T{?&Y zFQ-L}_x7TI4(FUs@PaVgQ?oP;p5g-Nx=zVq2LFpicHjeEFP!&4*qHZuAr!8FOo^f2 zRXU3Xu@p891Iu&sAcR5-AZ+a0z6CnDPf8}4_3^oVjzxp0PAG-z1CLe09UTGZa>7W7 zHpsto2fSMva8#70M%MW>cruxbAv zS4Pm^zch;+FP&*~h)R9__}>T*pTX+XRq*C);M2StBc2Leb?k(q_}W8dUo{L44$dk= zb93_oRh<)A)|-@Fb3JQkrAiFP^WcnUAS7f6q6}Wu!?&Vu_AT4>$!=aXdL3!1r8_N4 z(%K`*cN*qhcl`MA``+9J7&_I10$r8R)cz-idu}a&JdzW|#Y^w^vGvKb2l}$BK0QIh z=DUumFU3*TH}KFLJmRi!8_EFy?b5EU9(p)ru0qCh9HAuk2V z8$-r34T=$VR3|V)mbJFF&Z+<@f~E~8j-FdnuX9{)ZN*Q0i9`aTC=%vvINT)hWsjDi z>+?=D9&Ch=#StU}Rc4SRK@zq_8F2=g)D#l&Nvth%qpE5pI=hDOYU4p$DKuTTfwi@h zeVg98a-zJvoD#18Uu7_;%AeY`jSf!X>o23#VLr138dmg+&6Lj#Vydjx|61LU0^JR@`-?&#=1FX`cYwla{5q+{Qn&G`7U z?~tFj3~SdE*)SfHks!=kNfRJut;6oEid}qc53|TmSB99D5n5jG(E8&U zh`o`b=-3gi#k2eOqyKUgiRq~AE|ua$xrk`805vr)VCUWgkQIaW7&hqjrbG5Ym6hue z3gtZ5B30FBqmDps2|V5aR+j{@ZTl1Wp@;dmcz)sDJz;uQWRLTT)yNII`D!Tzp zm&^5VMPYBHYbpd@!R_c(d$M$e3$N5w-?w<~xr-D#lac4=yE@u16Q^{KB_0lnT<@mh zOf5?D1gCd?JoNJrl49C!!#5)s8y!PzCI(rSAxYA#sP3(KLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde00d`2O+f$vv5tKEQIh}w03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(` z>RI+y?e7jKeZ#YO-C1tv*EK~#9!td?tR71b7iznRX=d9^*KKwE50OBDr)5xhi= zpwfFULT-Aa^%0{s(c&Y~#Khu_|BRkrK1ihAtHxh=@#^&zAH7@y@m(~&5K=Hi(I41S zPo?dlJ#)^PIrG@Fw?A62P^*BhWM%fAz1RL`?X~vWqcKBnPp5AMwoZ4ux7hY`{6V74 z>};w|shdQ^zE~|EAlPhAXuoFsZe4S$R4OZ!>J+GqP>N8gLWt}WitL7Re(302W2WH} zDUPwzS{1(mS*|4#{S6)KGkX1elw}f0N#MGf{GNgC!@G8OK9j0zzuTGIHw$#K@@`#o zt6p8*zhv_x8JVu(wXQC7-=iiTr*6RlG8e9->FSQm!M^|Z_a@UTHoEqZemWqjRCZz4 z4H-3m9{;=hF4C^UVxU<{s(qi>fv<^cikf9hGoeyhfYSmAr8-r0iZ7o0C#lg<76Hks zD&o3M%=a;p3DSl}vgJ&KQk|y{LS;Os%xHfJO7E!5;ZkkkIeksY7%h}VngUMVDp;X^2&}W7@ zn2hA2oQfDj49>lEWDoD!-Kn3^kr8cYQ&%0Mrl}F5p`Oq*+0(a!gP(s%VQjo0Av>!w z+@4OiGCcrfx7ha3T(I-kKK$k_yPoQ7IJadgyM(}VT`I*Qlerw@VATbgN^l6t-BJX6jI7#`mw))!9oL8!Ns&a%(90bi1v};f9$Ni;<+_? z5cM05&rz+agjlAY!gGswZh>XqPLHC9zg%%Kfmh*!aHXfI$Q4|rgEIR)BC!T$AI}P=)ORwmPr_fCtbFTFbt7Wq3b$pS1;qMZ*nBf5KAlJmhzN~;{;xbN@!B9 zTFRP>d^A8x^{XEJA}9z2zAw16{aV`c4sUIHoeNq@xaB;Nm|ASO*vK{4T}OS!%tg!cCDW^`RI5oX5qTtDP1i_5CjZ;^B#d; zIweEXN}k$(-MaPbRU{&!=meD!a=JaIv8J(i?_TX>KtBxthw`iB)g~#L5eWpg;l~VkcMNWvvxw3sQ`+dkE>vISrQ!ohagAV8z8Lf^OuIwIrICeDNSt64m4&S& z1D7d4B=DTi3%k{dEOI$RKv=aJj79^NbXgFfpOXx+t&=2&WQmSZKIxB(UR!NRh&MqL z_^GU%<2DgSO5n`~12lvIOTorLC?IPzK%JTb?)p8&cEWY!r7n8WZ}qpFgZ2>wc`h1A z0U5VZ8cks-6heGr64VI^lR)U)xOxRd;=X{}P1!pq#fV&Vm*>Uu`ak}};NUQEUnsI) zPWPhe(K;b14AYW47|6>Fi*lh(NmjaL+ZGsCF30`L%^2(Jqm0f*&M{Mz;WL$rtx&62 z1URvRfE=2d45v(qnW8MU(iGNf)rd1`p-)SOYIYI?!m6X;3LZ7zfc?>9C-KYDYs>Sx zo12@TsG~!oC}okZ%%{sbTJbMzI&6LKd{xox=QH4-+0{J&&hJ;;MVSl_c@RTfo^rUd zTR8po^aV>KsPt(Pq}o|`s?!@Rs>=Nc`CWC$Zf^uD`IW%?SREeg7oyGbGJ-*4`KO7= zrJ^W?T~}USE>A7k$S9HQij1^h4&R&k|}08!*2@&S~6`!~88`X_L6QO@kW?3VKX}fIH*!PRGFK1Y%j4ri z9L!7rsp)+rsSUXS$jxu`o>*!cQ!=dtSQYEYow-rjJ*(&Bt&{VH;?2WM() zzy-n=`@F;Ox`yC!4!}Lu2iK?#&XFG6dpLrELILYvTnwJ)l}oBle1*RrcA}%B6C)#I zIP&W7fvGW9fV4z9wr*UG*1NaS+ntOn8k=q0r9zq;Nuv0V-{e;%1lL0 z=$Qzk{blbfV_se^5)$I3uRjXJ3nD2n5o_|_M7G0+^L0OCNrs2S#et9*zRc!M#`YaM zkYrKgL2ErZ6Pf^`jA+wpwKFnO@w@uq^LE9iTRN)t0t=o z`O_Qq$jQmUJb7MN>oyk_${{hNe1j%+DFkVJK2u{D1})7^Or&51q7GCchK7dG*4Bn_ h!M32bwif>gFaR|qP8c2io<0Bo002ovPDHLkV1k==2Sxw@ literal 0 HcmV?d00001 diff --git a/src/maemo/pixmaps/qgn_list_messagin_mail_unread.png b/src/maemo/pixmaps/qgn_list_messagin_mail_unread.png new file mode 100644 index 0000000000000000000000000000000000000000..3d15a38c519f317587327c463e943858673c67fe GIT binary patch literal 903 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 literal 0 HcmV?d00001 diff --git a/src/maemo/pixmaps/qgn_list_messaging_high.png b/src/maemo/pixmaps/qgn_list_messaging_high.png new file mode 100644 index 0000000000000000000000000000000000000000..ed8cd611550e96c194652170b9d940f5508f3340 GIT binary patch literal 3072 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 Hu0mjfVA3L^ literal 0 HcmV?d00001 diff --git a/src/maemo/pixmaps/qgn_widg_datedit.png b/src/maemo/pixmaps/qgn_widg_datedit.png new file mode 100644 index 0000000000000000000000000000000000000000..b942504c61e37c231ec3b08e6c1bf98de94be72d GIT binary patch literal 918 zcmV;H18Mw;P)GG(gu~=+Vv`k~oeOip7X_&6}Gz{8NT|*N)QFf*UEAd3y zQI4**z7f+1g+l8hLWp4^VKa=!6AV{Y|1kXV^Ebn#@2d>Ie*4An^OqQ=^|jG0FE6{0 zN~j}dh&aj|>1ZptHo8}Hvu>j}Ei)3#krH6?V~Vs0N_nhBYjykvPZ; zv)oyda2-+_mRdIu2)MWm!vM>&z%)&X8$GMb#PW(jIb`~_gV*O{xsBE# z0!|`s3~2z7^Z8?5z|jLqEw=gn;LY_BqV1dr>8^W8TvtvssyK2YtykQY>zxpZv@0F) z6Hh!Il@4pa)dT)>81l1rLP2g3yqkOv(UH5-RgwN72oDUfQ&WdM7#W7v+db@=?oCaM z%h7pM9_kW7A~ea*+69G#gs$YMlD4%|ayd$F0-I}RseevtNkJkm^+I0}>1H?UNF}mm zVZ@$AP7B-o538C%YBV=H14k<>h{Gz=s!>zRO?Wuot#m{PX-A`BAL-5j!`uPg(T^~E zKPtyF)Heush6dPJ=-$}yJ!tFdb-EyXPaciIWgS@kTZL268#x=1M*g=uo$?p-Vk-Xy7rIG5n*i$uO2SB<; sB4kIGTAKgs*OswW-*q0?qWCAk05o}3?@7<)m;e9(07*qoM6N<$f((|Q=>Px# literal 0 HcmV?d00001 diff --git a/src/maemo/pixmaps/stock_stop.svg b/src/maemo/pixmaps/stock_stop.svg new file mode 100644 index 0000000..72b78f0 --- /dev/null +++ b/src/maemo/pixmaps/stock_stop.svg @@ -0,0 +1,334 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + Stop + 2005-10-16 + + + Andreas Nilsson + + + + + stop + halt + error + + + + + + Jakub Steiner + + + + + + + + + + + + + + + + + + + + + diff --git a/src/maemo/pixmaps/view-refresh.svg b/src/maemo/pixmaps/view-refresh.svg new file mode 100644 index 0000000..8b63d9c --- /dev/null +++ b/src/maemo/pixmaps/view-refresh.svg @@ -0,0 +1,391 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Jakub Steiner + + + http://jimmac.musichall.cz + + View Refresh + + + reload + refresh + view + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/modest-main.c b/src/modest-main.c index 1107231..df5de2c 100644 --- a/src/modest-main.c +++ b/src/modest-main.c @@ -47,9 +47,9 @@ #include "modest-mail-operation.h" -#ifdef MODEST_ENABLE_HILDON /* Hildon includes */ +#if MODEST_PLATFORM_ID==2 #include -#endif /* MODEST_ENABLE_HILDON */ +#endif /* MODEST_PLATFORM==2 */ /* return values */ #define MODEST_ERR_NONE 0 @@ -103,7 +103,8 @@ main (int argc, char *argv[]) bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); textdomain (GETTEXT_PACKAGE); - g_type_init (); + g_type_init (); + g_thread_init (NULL); context = g_option_context_new (NULL); g_option_context_add_main_entries (context, options, NULL); @@ -201,8 +202,8 @@ cleanup: static gboolean hildon_init () { -#ifdef MODEST_ENABLE_HILDON - +#if MODEST_PLATFORM_ID==2 + osso_context_t *osso_context = osso_initialize(PACKAGE, PACKAGE_VERSION, TRUE, NULL); @@ -212,7 +213,8 @@ hildon_init () return FALSE; } -#endif /* MODEST_ENABLE_HILDON */ + +#endif /* MODEST_PLATFORM_ID==2 */ return TRUE; } diff --git a/src/modest-tny-platform-factory.c b/src/modest-tny-platform-factory.c index 0433614..9d51114 100644 --- a/src/modest-tny-platform-factory.c +++ b/src/modest-tny-platform-factory.c @@ -28,6 +28,14 @@ */ /* modest-tny-platform-factory.c */ +#include + +/* MODES_PLATFORM_ID: 1 ==> gtk, 2==> maemo */ +#if MODEST_PLATFORM_ID==1 +#include +#elif MODEST_PLATFORM_ID==2 +#include +#endif #include "modest-tny-platform-factory.h" #include "modest-tny-account-store.h" @@ -203,8 +211,14 @@ modest_tny_platform_factory_new_account_store (TnyPlatformFactory *self) static TnyDevice * modest_tny_platform_factory_new_device (TnyPlatformFactory *self) { - /* FIXME: do not use GNOME */ +/* MODES_PLATFORM_ID: 1 ==> gtk, 2==> maemo */ +#if MODEST_PLATFORM_ID==1 return TNY_DEVICE (tny_gnome_device_new ()); +#elif MODEST_PLATFORM_ID==2 + return TNY_DEVICE (tny_maemo_device_new ()); +#else + return NULL; +#endif /* MODEST_PLATFORM */ } static TnyMsgView* diff --git a/src/modest-tny-platform-factory.h b/src/modest-tny-platform-factory.h index fccb773..946fc88 100644 --- a/src/modest-tny-platform-factory.h +++ b/src/modest-tny-platform-factory.h @@ -33,7 +33,7 @@ #define __MODEST_TNY_PLATFORM_FACTORY_H__ #include -/* other include files */ + #include #include "modest-account-mgr.h" #include "modest-conf.h" diff --git a/src/widgets/Makefile.am b/src/widgets/Makefile.am index f817972..294d0f0 100644 --- a/src/widgets/Makefile.am +++ b/src/widgets/Makefile.am @@ -1,13 +1,14 @@ # # Makefile.am -# Time-stamp: <2006-08-11 00:24:01 (djcb)> +# Time-stamp: <2006-11-28 17:32:52 (djcb)> INCLUDES=\ $(MODEST_GSTUFF_CFLAGS) \ $(MODEST_LIBTINYMAIL_GNOME_DESKTOP_CFLAGS) \ - -I${top_srcdir}/src/$(MODEST_PLATFORM_DIR) \ + $(MODEST_LIBTINYMAIL_MAEMO_CFLAGS) \ + -I${top_srcdir}/src/$(MODEST_PLATFORM) \ -DPREFIX=\"@prefix@\" \ - -I ${top_srcdir}/src \ + -I ${top_srcdir}/src \ -Wall noinst_LTLIBRARIES=\ @@ -29,4 +30,5 @@ libmodest_widgets_la_SOURCES= \ LDADD = \ $(MODEST_GSTUFF_LIBS) \ - $(MODEST_LIBTINYMAIL_GNOME_DESKTOP_LIBS) \ No newline at end of file + $(MODEST_LIBTINYMAIL_GNOME_DESKTOP_LIBS) \ + $(MODEST_LIBTINYMAIL_MAEMO_LIBS) diff --git a/src/widgets/modest-combo-box.c b/src/widgets/modest-combo-box.c index 6c94359..7d4e6e8 100644 --- a/src/widgets/modest-combo-box.c +++ b/src/widgets/modest-combo-box.c @@ -29,6 +29,7 @@ #include #include +#include #include "modest-combo-box.h" /* 'private'/'protected' functions */ diff --git a/tests/Makefile.am b/tests/Makefile.am index 33d157d..e973fc8 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -2,7 +2,7 @@ INCLUDES=\ $(MODEST_GSTUFF_CFLAGS)\ $(MODEST_LIBTINYMAIL_GNOME_DESKTOP_CFLAGS) \ $(MODEST_LIBTINYMAIL_MAEMO_CFLAGS) \ - -I$(MODEST_PLATFORM_DIR) \ + -I$(MODEST_PLATFORM) \ -I${top_srcdir}/src \ -DPREFIX=\"@prefix@\" \ -DMODESTLOCALEDIR=\""$(modestlocaledir)"\" @@ -17,7 +17,7 @@ folder_xfer_LDADD = \ $(MODEST_GSTUFF_LIBS) \ $(MODEST_LIBTINYMAIL_GNOME_DESKTOP_LIBS) \ $(MODEST_LIBTINYMAIL_MAEMO_LIBS) \ - ${top_srcdir}/src/$(MODEST_PLATFORM_DIR)/libmodest-ui.la \ + ${top_srcdir}/src/$(MODEST_PLATFORM)/libmodest-ui.la \ ${top_srcdir}/src/widgets/libmodest-widgets.la \ ${top_srcdir}/src/modest-account-mgr.o \ ${top_srcdir}/src/modest-tny-platform-factory.o \ -- 1.7.9.5