ayatana-indicator-messages-24.5.1/AUTHORS0000644000000000000000000001256414764273406014763 0ustar Abdusalam <1810010207@s.upc.edu.cn> Ács Zoltán Adolfo Jayme Barrientos Adrià Martín Alexie Brindusescu Allan LeSage Allan Nordhøy Anders Jonsson Andrea Cimitan Andrea Cimitan Andrea Cimitan antuketot76 Burak Balta Chang Xin <1796162147@qq.com> Charles Kerr Chow Loong Jin Chris Coulson chrismeurer CI Train Bot cody Cristian Gherman 이정희 Daniel d'Andrada Danil Semenov David Barth David Mohammed Davit Mayilyan Didier Roche dmaxime Efstathios Iosifidis ElectrifiedSpeed Elizabeth Sherrock Eryk Michalak Evgeni Golov Gabor Kelemen gallegonovato gomkwcf4664233cad84b22 Grace Guo Heimen Stoffels Heimen Stoffels Hosted Weblate iNetRoos James Westby Jason Conti Jeannette L Jeremy Bicha J. Lavoie Joan CiberSheep Johntini Jonathan Riddell Kate Kaz Kees Cook Ken VanDine klausade Kornelijus Kristjan Räts Lars Uebernickel Lars Uebernickel Louies Luca Boccassi Łukasz 'sil2100' Zemczak Luke Yelavich Luna Jernberg Madhumitha Thanneeru Marcela Korreshi Marco Trevisan Marco Trevisan (Treviño) MarongHappy Martin Pitt Mateusz Rumiński Matheus Bastos Mathias Dietrich Mathieu Trudel-Lapierre Matteo F. Vescovi Michael Terry Michael Terry Michael Terry Michael Vogt Michele Mike Gabriel Milan Korecky Milo Ivir Moo Niara Nick Dedekind Niklas Wenzel Oğuz Ersen Omer Akram OPNA2608 Pavel Borecki Pedro Alexandre Pete Woods Petter Reinholdtsen Phil Clifford phlostically Quentin PAGÈS Remus-Gabriel Chelu Renato Araujo Oliveira Filho Reza Almanda Ricardo Mendoza Robert Carr Robert Tari Robert Tari Rui Mendes Ryan SapuSeven seb128 seb128 Sebastian Rasmussen Sebastien Bacher Sebstien Bacher Sergii Horichenko Sergio Schvezov Simon Picot spnux ssantos Sven Baars Swann Martinet Sylke Vicious Ted Gould Ted Gould Tetra Homer THANOS SIOURDAKIS Tiago A. Reul Tobias p Tomáš Marný Vangelis Mouhtsis Viktar Vauchkevich Vilakone Thammavong WaldiS wdggg Weblate Wellington Terumi Uemura yagoub fadel Yaron Shahrabani Yota321 Yuji Hon Zsolt Pastorek Володимир Бриняк Марс Ямбар Мира Странная தமிழ்நேரம் 复予 ayatana-indicator-messages-24.5.1/.build.yml0000644000000000000000000001002114764273406015575 0ustar ######################################################### # THE FOLLOWING LINES IS USED BY docker-build ########################################################## requires: archlinux: # Useful URL: https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=ayatana-indicator-messages - clang - gcc - git - make - startup-notification - which - cmake - cmake-extras - libayatana-indicator - liblomiri-url-dispatcher - gobject-introspection - gtk-doc - intltool - accountsservice - vala debian: # Useful URL: https://salsa.debian.org/debian-ayatana-team/ayatana-indicator-messages - clang - clang-tools - g++ - cppcheck - git - cmake - cmake-extras - gobject-introspection - gtk-doc-tools - intltool - libaccountsservice-dev - libgirepository1.0-dev - liblomiri-url-dispatcher-dev - valac - systemd - libgtest-dev - libdbustest1-dev - python3-dbusmock ubuntu: - clang - clang-tools - g++ - git - cmake - cmake-extras - gobject-introspection - gtk-doc-tools - intltool - libaccountsservice-dev - libgirepository1.0-dev - valac - systemd - libgtest-dev - libdbustest1-dev - python3-dbusmock variables: - 'CHECKERS=" -enable-checker deadcode.DeadStores -enable-checker alpha.deadcode.UnreachableCode -enable-checker alpha.core.CastSize -enable-checker alpha.core.CastToStruct -enable-checker alpha.core.IdenticalExpr -enable-checker alpha.core.SizeofPtr -enable-checker alpha.security.ArrayBoundV2 -enable-checker alpha.security.MallocOverflow -enable-checker alpha.security.ReturnPtrRange -enable-checker alpha.unix.SimpleStream -enable-checker alpha.unix.cstring.BufferOverlap -enable-checker alpha.unix.cstring.NotNullTerminated -enable-checker alpha.unix.cstring.OutOfBounds -enable-checker alpha.core.FixedAddr -enable-checker security.insecureAPI.strcpy"' before_scripts: - cd ${START_DIR} - if [ ! -d libayatana-common-build ]; then - git clone --depth 1 https://github.com/AyatanaIndicators/libayatana-common.git libayatana-common-build - fi - cd libayatana-common-build - if [ ${DISTRO_NAME} == "debian" ]; then - cmake . -DCMAKE_INSTALL_PREFIX=/usr -DENABLE_LOMIRI_FEATURES=ON - else - cmake . -DCMAKE_INSTALL_PREFIX=/usr - fi - make - make install - cd .. - rm -Rf libayatana-common-build/ build_scripts: - if [ ${DISTRO_NAME} == "debian" ];then - cppcheck --enable=warning,style,performance,portability,information,missingInclude . - fi - - if [ -e ./CMakeLists.txt ]; then - if [ ${DISTRO_NAME} == "debian" ]; then - scan-build $CHECKERS cmake . -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_VERBOSE_MAKEFILE=ON -DENABLE_WERROR=ON -DENABLE_TESTS=ON - elif [ ${DISTRO_NAME} == "ubuntu" ]; then # Ubuntu has an old GTest which throws warnings, so we cannot use -Werror here - scan-build $CHECKERS cmake . -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_VERBOSE_MAKEFILE=ON -DENABLE_TESTS=ON - else - scan-build $CHECKERS cmake . -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_VERBOSE_MAKEFILE=ON -DENABLE_WERROR=ON - fi - else - exit 1 - fi - - if [ $CPU_COUNT -gt 1 ]; then - if [ ${DISTRO_NAME} == "debian" ];then - scan-build $CHECKERS --keep-cc --use-cc=clang --use-c++=clang++ -o html-report make -j $CPU_COUNT - make clean - fi - scan-build $CHECKERS --keep-cc -o html-report make -j $CPU_COUNT - else - if [ ${DISTRO_NAME} == "debian" ];then - scan-build $CHECKERS --keep-cc --use-cc=clang --use-c++=clang++ -o html-report make - make clean - fi - scan-build $CHECKERS --keep-cc -o html-report make - fi - XVFB_RUN="$(which xvfb-run || true)" - if [ ${DISTRO_NAME} == "debian" ] || [ ${DISTRO_NAME} == "ubuntu" ];then - if [ -e ./CMakeLists.txt ]; then - ${XVFB_RUN} env CTEST_OUTPUT_ON_FAILURE=1 make test - fi - fi ayatana-indicator-messages-24.5.1/ChangeLog0000644000000000000000000061724414764273406015473 0ustar 2025-03-12 Mike Gabriel * release 24.5.1 (HEAD -> main, tag: 24.5.1) * Merge branch 'OPNA2608-fix/PIE-building' (f04d14d7) 2025-01-11 OPNA2608 * tests/CMakeLists.txt: Drop hardcoded -no-pie linker flags (316457cf) 2024-11-08 தமிழ்நேரம் * Translated using Weblate (Tamil) (db8e5282) 2024-09-27 Remus-Gabriel Chelu * Translated using Weblate (Romanian) (0dcd409f) 2024-05-22 Mike Gabriel * release 24.5.0 (a828bf23) (tag: 24.5.0) 2024-05-21 Robert Tari * Merge branch 'sunweaver-pr/lomiri-indicators-target' (80262720) 2024-05-21 Mike Gabriel * data/ayatana-indicator-messages.service.in: Become part of lomiri-indicators.target. (1d3b8041) 2024-04-01 复予 * Translated using Weblate (Chinese (Simplified)) (334668ad) 2023-10-15 Allan Nordhøy * Translated using Weblate (Norwegian Bokmål) (b14c633e) 2023-10-13 Mike Gabriel * release 23.10.0 (f7df36d2) (tag: 23.10.0) 2023-07-01 spnux * Translated using Weblate (French) (4e3a91e0) 2023-06-27 Sylke Vicious * Translated using Weblate (Italian) (fb16fe9c) 2023-06-22 Joan CiberSheep * Translated using Weblate (Catalan) (8f4db5e0) 2023-05-02 Eryk Michalak * Translated using Weblate (Polish) (69b5fc47) 2023-04-27 Mike Gabriel * Merge branch '3v1n0-handle-user-properly' (19b3d98b) 2023-04-18 Marco Trevisan (Treviño) * accounts-manager: Cancel account manager requests on new user (a766109d) * accounts-service: Also update the user when a new user is added (e970fb61) 2023-04-27 Mike Gabriel * Merge branch '3v1n0-ownership-fixes' (720d830a) 2023-04-18 Marco Trevisan * account-service: Do not unref UserManager owned user (9efa02e6) 2023-04-20 Vilakone Thammavong * Translated using Weblate (Lao) (057071c8) 2023-04-06 ssantos * Translated using Weblate (Portuguese) (af7a4e5c) 2023-03-16 Heimen Stoffels * Translated using Weblate (Dutch) (4e95ce57) 2023-03-03 gallegonovato * Translated using Weblate (Spanish) (f81e8f2e) 2023-02-10 Luna Jernberg * Translated using Weblate (Swedish) (83955248) 2022-12-30 Milo Ivir * Translated using Weblate (Croatian) (7506e8b2) 2022-10-19 Kristjan Räts * Translated using Weblate (Estonian) (ff70552d) 2022-09-29 이정희 * Translated using Weblate (Korean) (4bdd1875) 2022-09-25 Oğuz Ersen * Translated using Weblate (Turkish) (2b91b38e) 2022-09-14 Sergii Horichenko * Translated using Weblate (Ukrainian) (0000d588) * Translated using Weblate (Russian) (017c4c60) 2022-09-14 Mike Gabriel * release 22.9.0 (a0e4d6f3) (tag: 22.9.0) 2022-09-14 Milan Korecky * Translated using Weblate (Czech) (84f9be6e) 2022-09-14 Mike Gabriel * po/*.po{,t}: Translation strings update (esp. source file references). (5f4ac0d9) * update-po{,t}.sh: Also catch multi-file source file references. (a6fd689f) 2022-09-12 Robert Tari * Merge branch 'sunweaver-pr/beautify-paths-in-pot-file' (00b4f218) 2022-09-11 Mike Gabriel * po/ayatana-indicator-messages.pot: Update file. (fecf9a62) * update-po{,t}.sh: Omit ../ at beginning of file names in .pot file. (cd371332) 2022-09-07 Quentin PAGÈS * Translated using Weblate (Occitan) (e60ed833) 2022-09-07 Moo * Translated using Weblate (Lithuanian) (2eb2cd13) 2022-09-06 Wellington Terumi Uemura * Translated using Weblate (Portuguese (Brazil)) (dccdc62e) 2022-09-05 Yaron Shahrabani * Translated using Weblate (Hebrew) (ddef094d) 2022-09-05 Mike Gabriel * Translated using Weblate (German) (c2d8f015) * po/*.po{,t}: Translation strings update. (7e0f2871) * update-po{,t}.sh: Update script to CMake port of this project. (3fbace03) 2022-09-02 Robert Tari * Merge branch 'sunweaver-pr/tooltip-support' (e19755aa) 2022-08-03 Robert Tari * tests/indicator-test.cpp: Adjust tests to use tooltips (b9dad155) 2022-07-22 Mike Gabriel * src/im-application-list.c: Add tooltip support. (b7eafa59) 2022-04-23 Sergii Horichenko * Translated using Weblate (Ukrainian) (e1d6d845) 2022-04-01 Robert Tari * Merge branch 'sunweaver-pr/drop-extra-copying-file' (41ad2004) 2022-04-01 Mike Gabriel * COPYING.GPLv3: Drop file. Duplicate of COPYING file. (769eeac3) 2022-02-17 Mike Gabriel * release 22.2.0 (81d79bda) (tag: 22.2.0) 2022-02-08 Mike Gabriel * Merge branch 'tari01-pr/fix-multicore-compile-error' (623661f6) 2022-02-06 Robert Tari * tests/CMakeLists.txt: Fix potential multicore compile error (aa72ca24) 2022-02-08 Robert Tari * .travis.yml: Run CI builds on Travis CI's Ubuntu focal base system (6e53e966) 2022-01-27 Mike Gabriel * Merge branch 'tari01-pr/cleanup-compile-flags' (83aa7c3d) 2022-01-12 Robert Tari * .build.yml: Drop extra compilation flags and build with -Werror (a2743f91) * Clean up compilation flags (552f4c5c) 2021-12-14 Mike Gabriel * .build.yml: Building libayatana-common with -DENABLE_LOMIRI_FEATURES requires liblomiri-url-dispatcher(-dev). (69eac3c0) * release 21.12.0 (8ada43e0) (tag: 21.12.0) * Merge branch 'tari01-pr/build-libayatana-common-with-enable-lomiri-features' (90a35b7c) 2021-12-06 Robert Tari * .build.yml: Build libayatana-common with ENABLE_LOMIRI_FEATURES (d1846af0) 2021-11-23 phlostically * Translated using Weblate (Esperanto) (557c6222) 2021-11-22 phlostically * Translated using Weblate (Esperanto) (73b0304b) 2021-11-18 phlostically * Translated using Weblate (Esperanto) (b6c6f092) 2021-11-16 Phil Clifford * Translated using Weblate (Gaelic) (e859baca) 2021-11-17 Mike Gabriel * release 0.9.0 (ae5a2daa) (tag: 0.9.0) * libmessaging-menu/messaging-menu.symbols: Also exclude _messaging_menu_*. These are also private symbols. (7c5f447e) 2021-11-03 ElectrifiedSpeed * Translated using Weblate (Macedonian) (ce354d31) 2021-11-02 Mike Gabriel * Merge branch 'tari01-pr/rename-com-ubuntu-touchaccountsservice-securityprivacy' (1fef1bc8) 2021-11-02 Robert Tari * Rename com.ubuntu.touch.AccountsService.SecurityPrivacy (5c537e3b) 2021-11-01 Mike Gabriel * Merge branch 'tari01-pr/accountsservice-sound' (ce6417a2) 2021-11-01 Robert Tari * tests/accounts-service-mock.h: Rename com.ubuntu.touch.AccountsService.Sound to com.lomiri.touch.AccountsService.Sound (37cbcad1) * Whitespace fix (5e5d6bce) 2021-10-26 Robert Tari * Merge branch 'sunweaver-pr/messaging-menu-symbols' (b2afa157) 2021-10-26 Mike Gabriel * debian/libmessaging-menu0.symbols: Add Build-Depends-Package: meta data field. (d540d32c) * debian/libmessaging-menu0.symbols: Update .symbols file back to its original state (before the CMake change-over). (a3070e55) * libmessaging-menu/: Limit exported symbols to messaging_menu_*. (9837ffd7) 2021-10-25 Robert Tari * Merge branch 'sunweaver-pr/travis-cleanup' (8f8d0ccc) 2021-10-25 Mike Gabriel * .build.yml: Run unit tests in build_scripts: target. (2ac31d4a) * .build.yml: Drop autogen.sh support. (b8b4dbc9) 2021-10-22 Robert Tari * data/CMakeLists.txt: Do not use automatic GSchema compilation (158ff4f5) 2021-10-21 Mike Gabriel * Merge branch 'tari01-pr/add-readme-and-instructions' (48b040f4) 2021-10-18 Robert Tari * Add info and build instructions (1ea81c71) 2021-10-21 Mike Gabriel * Merge branch 'tari01-pr/enable-ubuntu-tests' (4c32e0f1) 2021-09-02 Robert Tari * .build.yml: Also run unit tests during CI builds against Ubuntu. (11869aed) 2021-10-18 Robert Tari * .build.yml: Enable tests for Ubuntu builds (aa1d7ecf) 2021-10-21 Mike Gabriel * Merge branch 'tari01-pr/move-to-cmake' (b2beaa34) 2021-10-19 Robert Tari * Update debian/ files (421e9dcd) 2021-10-15 Robert Tari * Remove config.h dependency (641e08a6) * Do a natural CMake file configuration (3fc70514) * Fix and enable indicator-test (31f4ed07) * Remove Automake files (4113d1bc) * Add CMake files (813ad909) 2021-10-18 Robert Tari * Whitespace fix (8ce6d07d) 2021-10-20 Robert Tari * .travis.yml: Temporarily disable ppc64le builds (9ad235af) 2021-10-18 Mike Gabriel * Revert ".build.yml: Also run unit tests during CI builds against Ubuntu." (9fbdd237) * Merge branch 'UbuntuBudgie-main' (c86b4bd0) 2021-10-10 David Mohammed * Allow autostart for Budgie Desktop (485d7ea1) 2021-10-18 Mike Gabriel * Merge branch 'tari01-pr/update-ido-names' (f85f0fd3) 2021-09-20 Robert Tari * Update Ayatana IDO names (b2aad292) 2021-09-02 Robert Tari * .build.yml: Also run unit tests during CI builds against Ubuntu. (6c1a8c95) 2021-08-29 Hosted Weblate * Update translation files (1af4710b) 2021-08-28 Mike Gabriel * .build.yml: Fix for previous commit. First cd .., then remove the libayatana-common-build folder. (a3269365) * .build.yml: Remove source folder libayatana-common-build/ after build. Confuses intltool-update. (6fdf6859) 2021-08-28 Weblate * Added translation using Weblate (Kurdish (Southern)) (fce97d0f) * Added translation using Weblate (Kurdish (Northern)) (8688db00) 2021-08-28 Mike Gabriel * po/: Drop zh_Hant.po: Drop duplicate file for Chinese (Tranditional) and adjust LINGUAS files. (89f1d8dc) * .travis.yml: Fix branch name what is now the default branch in ayatana-dev-scripts. (8c2c6d73) 2021-06-04 Hosted Weblate * Update translation files (66ea9cad) 2021-06-03 Weblate * Added translation using Weblate (Chinese (Traditional)) (9d767090) 2021-06-03 Hosted Weblate * Update translation files (c37e577b) 2021-05-04 Robert Tari * Merge branch 'sunweaver-pr/travis-ci' (60c60007) 2021-05-01 Tomáš Marný * Translated using Weblate (Czech) (d6ac05e7) 2021-03-30 Hosted Weblate * Update translation files (0959ee86) 2021-03-29 Weblate * Added translation using Weblate (Chinese (Simplified) (zh_LATN@pinyin)) (cb591d0d) 2021-03-18 Reza Almanda * Translated using Weblate (Indonesian) (f8ce7a2c) 2021-05-04 Mike Gabriel * .travis.yml: Don't run autotools builds twice (once via script, once directly). (741b89b8) * .build.yml: Disable tests for autotools builds when not on Debian. (4f2cb284) * src/Makefile.am: Drop -Werror compiler flag for now. Not helpful when setting up CI builds for dirty code. (f906e47f) * Travis CI: Intial draft of CI builds. (66ef2300) 2021-05-01 Tomáš Marný * Translated using Weblate (Czech) (c44c0246) 2021-03-30 Hosted Weblate * Update translation files (d2689ea9) 2021-03-29 Weblate * Added translation using Weblate (Chinese (Simplified) (zh_LATN@pinyin)) (e71b9ab3) 2021-03-18 Reza Almanda * Translated using Weblate (Indonesian) (d0cbd316) 2021-01-28 Mike Gabriel * release 0.8.2 (70f795b1) (tag: 0.8.2) 2020-12-30 J. Lavoie * Translated using Weblate (French (Canada)) (b2bd07a7) * Translated using Weblate (French) (134f1aeb) 2020-11-26 Ács Zoltán * Translated using Weblate (Hungarian) (e6323387) 2020-11-12 Mike Gabriel * Translated using Weblate (German) (c1762331) 2020-10-31 Joan CiberSheep * Translated using Weblate (Catalan) (e980678f) 2020-11-01 Hosted Weblate * Update translation files (0d77f784) 2020-10-31 Weblate * Added translation using Weblate (Italian) (288838ae) * Added translation using Weblate (Tamil (Sri Lanka)) (56cbbf9d) * Added translation using Weblate (Dhivehi) (01aed06f) * Added translation using Weblate (Venetian) (4949941b) * Added translation using Weblate (Kashubian) (58673896) * Added translation using Weblate (Macedonian) (a4afb789) * Added translation using Weblate (Friulian) (37ceafcf) * Added translation using Weblate (Tatar) (d00be23a) 2020-10-29 Milan Korecky * Translated using Weblate (Czech) (b8473296) 2020-10-26 Adrià Martín * Translated using Weblate (Sardinian) (c77ed130) 2020-10-27 Hosted Weblate * Update translation files (31ce3522) 2020-10-26 Michele * Translated using Weblate (Italian) (37cdd3cf) 2020-10-26 Weblate * Added translation using Weblate (Manx) (3451267a) * Added translation using Weblate (Afar) (4f909072) * Added translation using Weblate (Nyanja) (6b392867) * Added translation using Weblate (Assamese) (1f180d27) * Added translation using Weblate (Wolof) (2ce3dc83) 2020-10-18 Quentin PAGÈS * Translated using Weblate (Occitan) (3f9fa779) 2020-10-10 Yota321 * Translated using Weblate (Bengali) (3f0cfa50) 2020-09-30 Yaron Shahrabani * Translated using Weblate (Hebrew) (17baad6c) 2020-09-29 Adolfo Jayme Barrientos * Translated using Weblate (Catalan) (720f5c99) 2020-09-28 Adolfo Jayme Barrientos * Translated using Weblate (Spanish) (387ec194) 2020-09-25 Quentin PAGÈS * Translated using Weblate (Occitan) (a7c7ff16) 2020-09-23 Viktar Vauchkevich * Translated using Weblate (Belarusian) (3e84e6c8) 2020-09-10 Mike Gabriel * release 0.8.1 (782eaf73) (tag: 0.8.1) 2020-09-04 antuketot76 * Translated using Weblate (Malay) (ea875d9a) 2020-08-17 Mike Gabriel * release 0.8.0 (c8108ecb) (tag: 0.8.0) 2020-08-11 Mike Gabriel * Merge branch 'tari01-pr/replace-x-canonical-attributes' (dd45c289) 2020-08-11 Robert Tari * Replace x-canonical attributes (d447b27d) * Merge branch 'sunweaver-pr/systemd-service-file' Attributes GH PR #11: https://github.com/AyatanaIndicators/ayatana-indicator-messages/pull/11 (3fc4dab5) 2020-08-10 Mike Gabriel * debian/*: Install systemd user service file into DEB package. (da02fa1c) * Start indicator in systemd when ayatana-indicators.target is started. (cae7f2e1) * debian/ayatana-indicator-messages.install: Drop DATADIR/upstart, files not provided anymore. (ae2dcd9a) * Drop all references to upstart. (7c5541f6) * debian/control: Improve dh-autoreconf build-dependency. (474e1d6f) 2020-08-06 Mike Gabriel * release 0.6.2 (f5cfb4f4) (tag: 0.6.2) * Merge branch 'tari01-master' (ca1d3fe6) * debian/changelog: Typo fix in previous release stanza. (1e5d180f) 2020-07-29 Ács Zoltán * Translated using Weblate (Hungarian) (d03752a8) 2020-08-06 Mike Gabriel * debian/changelog: Typo fix in previous release stanza. (8c76f83c) 2020-07-29 Ács Zoltán * Translated using Weblate (Hungarian) (ce2759cf) 2020-07-25 Robert Tari * Fix failing build configuration (fb295b7e) 2020-07-19 Tetra Homer * Translated using Weblate (Persian) (dd6c4abd) 2020-07-03 Tobias p * Translated using Weblate (Danish) (0172b72e) 2020-06-27 Zsolt Pastorek * Translated using Weblate (Slovak) (2a6310a1) 2020-06-21 Kate Kaz * Translated using Weblate (Ukrainian) (2428928a) 2020-06-19 Ács Zoltán * Translated using Weblate (Hungarian) (a3825369) 2020-06-14 MarongHappy * Translated using Weblate (Korean) (2888c2f1) 2020-05-24 wdggg * Translated using Weblate (Chinese (Simplified)) (8f0cf0f1) 2020-05-08 Abdusalam * Translated using Weblate (Uyghur) (884e6d42) 2020-05-09 gomkwcf4664233cad84b22 * Translated using Weblate (Korean) (dd0fb5cc) 2020-05-09 iNetRoos * Translated using Weblate (Afrikaans) (19d6554f) 2020-04-27 Jeannette L * Translated using Weblate (Italian) (ff8fef97) * Translated using Weblate (French (Canada)) (fe40e881) * Translated using Weblate (French) (a5661568) * Translated using Weblate (English (United Kingdom)) (9426b642) * Translated using Weblate (English (Canada)) (72397cd9) * Translated using Weblate (English (Australia)) (54150ddb) 2020-04-14 Jeannette L * Translated using Weblate (French) (13a22332) 2020-04-04 Kristjan Räts * Translated using Weblate (Estonian) (d648057c) 2020-04-01 Davit Mayilyan * Translated using Weblate (Armenian) (3adea8a9) 2020-04-01 Johntini * Translated using Weblate (Spanish) (52321d7e) 2020-03-29 Alexie Brindusescu * Translated using Weblate (Romanian) (08cfde89) 2020-03-26 Adolfo Jayme Barrientos * Translated using Weblate (Catalan) (01726158) 2020-03-16 Grace Guo * Translated using Weblate (Japanese) (1b51d801) 2020-03-14 yagoub fadel * Translated using Weblate (Arabic) (830d3507) 2020-02-25 Wellington Terumi Uemura * Translated using Weblate (Portuguese (Brazil)) (038a21ee) 2020-02-24 Mike Gabriel * release 0.6.1 (ff3680fb) (tag: 0.6.1) 2020-02-13 Matheus Bastos * Translated using Weblate (Portuguese (Brazil)) (4833dc15) 2020-02-09 THANOS SIOURDAKIS * Translated using Weblate (Greek) (ebfb46a1) 2020-01-27 Ryan * Translated using Weblate (Korean) (d17c0b99) 2020-01-18 Heimen Stoffels * Translated using Weblate (Dutch) (47382931) 2020-01-02 Milo Ivir * Translated using Weblate (Croatian) (e2704085) 2019-12-15 dmaxime * Translated using Weblate (Italian) (26e429cf) 2019-12-03 SapuSeven * Translated using Weblate (German) (19742410) 2019-11-26 Yuji Hon * Translated using Weblate (Japanese) (7261b6c0) 2019-11-23 Niara * Translated using Weblate (Russian) (3738cd2b) 2019-11-22 Burak Balta * Translated using Weblate (Turkish) (d0260e1d) 2019-10-30 Marcela Korreshi * Translated using Weblate (Albanian) (6b5ddd70) 2019-10-07 Mateusz Rumiński * Translated using Weblate (Polish) (3755ac47) 2019-10-01 Pedro Alexandre * Translated using Weblate (Portuguese) (2ec966f1) 2019-09-02 Swann Martinet * Translated using Weblate (French) (a7b902ef) 2019-09-02 Moo * Translated using Weblate (Lithuanian) (1aac58ff) 2019-08-29 Anders Jonsson * Translated using Weblate (Swedish) (3357a55a) 2019-08-28 Heimen Stoffels * Translated using Weblate (Dutch) (b47026bb) 2019-08-29 Mike Gabriel * configure.ac: AM_INIT_AUTOMAKE needs subdir-objects with this project. (78e7d1de) * Avoid deprecated g_type_class_add_private. (1e7272a4) 2019-08-28 Mike Gabriel * update locale files (d2cfa9f3) 2019-08-23 Swann Martinet * Translated using Weblate (French) (26baf98f) 2019-08-10 Madhumitha Thanneeru * Translated using Weblate (Telugu) (5d30d036) 2019-08-06 Chang Xin * Translated using Weblate (Chinese (Simplified)) (d4e3d21e) 2019-07-23 Simon Picot * Translated using Weblate (French) (4abfb2f9) 2019-07-01 Elizabeth Sherrock * Translated using Weblate (Chinese (Simplified)) (d3d34154) 2019-04-17 Rui Mendes * Translated using Weblate (Portuguese) (edb6725c) 2019-01-11 Louies * Translated using Weblate (Chinese (Traditional)) (71423f12) 2018-11-18 ssantos * Translated using Weblate (Portuguese) (e000039a) 2018-10-31 Petter Reinholdtsen * Translated using Weblate (Norwegian Bokmål) (508bd221) 2018-10-23 Iván Seoane * Translated using Weblate (Galician) (5b5dff89) 2018-09-27 Володимир Бриняк * Translated using Weblate (Ukrainian) (47462f64) 2018-08-23 WaldiS * Translated using Weblate (Polish) (c7cbdaa5) * Translated using Weblate (Polish) (1c0222a6) 2018-08-06 Tiago A. Reul * Translated using Weblate (Portuguese (Brazil)) (bcbd7653) 2018-08-05 Yaron Shahrabani * Translated using Weblate (Hebrew) (5990ecc3) 2018-07-29 chrismeurer * Translated using Weblate (Portuguese (Brazil)) (2c10cf42) 2018-07-17 Danil Semenov * Translated using Weblate (Russian) (6f230d40) 2018-05-08 Heimen Stoffels * Translated using Weblate (Dutch) (43232479) 2018-05-02 Adolfo Jayme Barrientos * Translated using Weblate (Spanish) (78f755b4) 2018-04-03 Pavel Borecki * Translated using Weblate (Czech) (e80bce50) 2019-03-10 Mike Gabriel * Merge branch 'sunweaver-pr/disable-testing' (d5f1af4e) 2019-03-10 Robert Tari * AM_INIT_AUTOMAKE: subdir-projects flag not required. Fixes FTBFS on recent Archlinux. (90e4c013) * Check for dbustest-1 only with enabled tests. (4d0eae3e) 2019-03-10 Mike Gabriel * Merge branch 'bluca-pkgconfig' (564690e1) 2019-03-09 Luca Boccassi * Fix pkg-config file library and path flags (aba86c8f) 2019-03-10 Mike Gabriel * Merge branch 'comradekingu-patch-1' (b08a9115) 2018-10-31 Allan Nordhøy * Spelling: id → ID (ecaaea8b) 2018-11-16 Mike Gabriel * debian/control: Add B/R for indicator-messages. The a-i-messages and i-messages bin:pkgs share the same artwork files. (a1a989b5) * debian/*: Sync in changes from official Debian packaging. Drop Ayatana namespace from libmessaging bin:pkgs. (d9442d25) 2018-03-27 Mike Gabriel * debian/libayatana-messaging-menu-dev.examples: Add client-example.py as an example. (3974cfb0) 2018-03-23 Mike Gabriel * debian/changelog: post-release-mark as released (c301f6d3) * release 0.6.0 (141e7b58) (tag: 0.6.0) 2018-03-23 Michael Terry * Work inside a snap by prefixing hard coded paths with $SNAP. (a738856b) 2018-03-23 Mike Gabriel * data/org.ayatana.indicator.messages: Fix Name= field (prepend ayatana-). (b1dd2209) 2018-03-01 Moo * Translated using Weblate (Lithuanian) (3936d392) * Translated using Weblate (Lithuanian) (a0813380) 2018-02-28 Мира Странная * Translated using Weblate (Russian) (22c3a428) 2018-02-03 Cristian Gherman * Translated using Weblate (Romanian) (9e34a8e7) 2018-01-22 Марс Ямбар * Translated using Weblate (Ukrainian) (d83dad09) 2018-01-01 Anders Jonsson * Translated using Weblate (Swedish) (5649632d) 2017-12-19 Allan Nordhøy * Translated using Weblate (Norwegian Bokmål) (1f8825b6) 2018-01-04 Yaron Shahrabani * Translated using Weblate (Hebrew) (3fed9d9b) 2017-12-31 Sebastian Rasmussen * Translated using Weblate (Swedish) (7bea0a5c) 2017-12-07 Allan Nordhøy * Translated using Weblate (Norwegian Bokmål) (4b606e2e) 2018-03-22 Mike Gabriel * debian/copyright: Use secure URI for copyright format reference. (c50c3240) * debian/changelog: white-space cleanup (20783a44) * debian/rules: Make sure po/ayatana-indicator-message.pot does not get lost during build. (f28e229d) * debian/changelog: Drop epoch from package version. (5a6ff0b1) * debian/*.install: Rename to match bin:pkg naming changes. (229e78c3) * debian/control: Add C for libayatana-messaging* (have same files as libmessaging* in Ubuntu). (02ff59a2) * debian/control: Rename libmessaging bin:pkgs to avoid package naming conflict with indicator-messages in Ubuntu. (8f588508) 2017-12-06 Mike Gabriel * data/ayatana-indicator-messages.desktop.in: Add XFCE to OnlyShowIn= key. (6739b30f) * Rename GNOMELOCALEDIR -> LOCALEDIR. (8fc930a1) * debian/ayatana-indicator-messages.postinst: Drop file. The libglib2.0-bin packages has a trigger for that. (a7f8ec1e) 2017-12-02 Mike Gabriel * debian/control: Fix D (glib2.0-bin -> libglib2.0-bin). (cdd4d17a) * debian/{control,ayatana-indicator-messages.postinst}: Recompile GSettings schemas at post installation. (eddf10ad) * debian/copyright: Fix upstream name. (71776f09) * debian/copyright: Make copyright file formally correct. (42e87f4c) 2017-11-29 Mike Gabriel * data/ayatana-indicator-messages.desktop.in: Namespace-fix Name= key. (1c82f631) * data/org.ayatana.indicator.messages.gschema.xml: white-space cleanup. (77682ea4) * update-po.sh: Preserve .pot file when updating *.po files. (dc3570f8) 2017-11-26 Kornelijus * Translated using Weblate (Lithuanian) (9d1d04ef) 2017-11-25 Kristjan Räts * Translated using Weblate (Estonian) (cbd60beb) 2017-11-05 Kristjan Räts * Translated using Weblate (Estonian) (646c547f) 2017-10-15 Mike Gabriel * Translated using Weblate (German) (37886e0f) 2017-10-14 Vangelis Mouhtsis * Translated using Weblate (Greek) (3b1a8b5b) 2017-10-12 klausade * Translated using Weblate (Norwegian Bokmål) (11e6a25e) 2017-10-12 Efstathios Iosifidis * Translated using Weblate (Greek) (66eeb6c7) 2017-10-12 Viktar Vauchkevich * Translated using Weblate (Belarusian) (612ff426) 2017-10-12 Matteo F. Vescovi * Translated using Weblate (Italian) (952a496b) 2017-11-29 Mike Gabriel * update-po.sh: Fix filenames of .ini(.in) and .xml(.in) files in po files. (22ae7c7e) * po/*.po: Update with now correct file names for .xml files. (37a73c63) * po/ayatana-indicator-messages.pot: Add this file. (90cc52d1) * update-pot.sh: Fix filenames of .ini(.in) and .xml(.in) files in po template file. (b881a5ca) 2017-10-26 Mike Gabriel * Fork from Ubuntu's Indicator Messages. (e917d3a2) 2017-10-24 Mike Gabriel * update-po*.sh: Add license header. (ba82b680) 2017-10-12 Mike Gabriel * po/: Already provide translation files for hosted Weblate. (e5f3252c) * update-po(|t).sh: Add gettext update scripts. (4689954b) 2015-05-05 CI Train Bot * Releasing 13.10.1+15.10.20150505-0ubuntu1 (4cbd06f2) 2015-05-05 Lars Uebernickel * application list: update root action unconditionally Approved by: Ted Gould (9d3e386e) 2015-05-05 Niklas Wenzel * Unescape action names when passing them to the proxy in im_application_list_remove_all() Fixes: #1434521 Approved by: Ted Gould (543e5c27) 2015-05-04 Lars Uebernickel * application list: update root action unconditionally (eccb7dcb) 2015-04-30 Niklas Wenzel * Remove spaces (eade0ee8) * Use guint instead of int (395de61d) * Fix build error (e460914e) * Remove GArray and fix code style (5d4c62d7) 2015-04-25 Niklas Wenzel * Unescape action names when passing them to the proxy in im_application_list_remove_all() (de0c6258) 2015-04-03 CI Train Bot * Releasing 13.10.1+15.04.20150403-0ubuntu1 (6a466d23) 2015-04-03 Ted Gould * Verify state type before parsing Approved by: Charles Kerr, PS Jenkins bot (099c240f) 2015-03-11 CI Train Bot * Releasing 13.10.1+15.04.20150311-0ubuntu1 (61d8259f) 2015-03-11 Ted Gould * Sanity tests to test basic features of the messaging menu Approved by: Charles Kerr, PS Jenkins bot (467b5a9b) 2015-03-10 Ted Gould * Pedantic use of auto (5133bf06) * Remove useless for_each call (a3f4a0b9) * Making the schema compilation directory into its own variable (cb7a4808) 2015-03-09 Ted Gould * Test the messaging menu changing color on and off (54ae3da7) * Adding a test to ensure an action doesn't exist (56801d13) * Add a shared pointer action state function (ace149bd) * Added a test for message replying (3bd0c14d) * Add enabled testing (9c16722d) * Add code to activate an action (41474024) * This commit might be evil (0bfd7482) * Add checking for the activation parameter type (f6776a30) 2015-03-06 Ted Gould * Check the message's menu (e4b55aa6) * A test that puts a message in the menu (474099ef) * Adding some messaging menu properties to the AS mock (df3f745d) * Bringing in AS mock and getting a base test of the root action going (4bef5575) * Get the paths right (bb83669a) * Get some schemas in there (31fccc96) * Linking and building, oh my (23e18e9e) * Adding in libdbustest (b5401116) * Pulling stuff from indicator-sound (e906c4b4) * One test directory to rule them all (8ac8ca2c) * Moving the manual tests into the same directory (dbd3db2c) 2015-03-04 CI Train Bot * Releasing 13.10.1+15.04.20150304-0ubuntu1 (ae80ff18) 2015-03-04 Ted Gould * Make the message actions have the message ID in their names like the muxer Approved by: Charles Kerr, PS Jenkins bot (faf0bcde) * Action name should be escaped message id and escaped action name, not escaped action name twice. (17fc688a) 2015-02-19 CI Train Bot * Releasing 13.10.1+15.04.20150219-0ubuntu1 (09f8736a) 2015-02-19 Ted Gould * Provide functions that allow for action names directly Fixes: #1385331 Approved by: PS Jenkins bot, Lars Uebernickel (e7c2a6f3) 2015-02-18 Ted Gould * Adding a manual test case for a Tweet (261ef707) * Adding a version of source_removed that doesn't unescape (0f90f415) * Make a version of the remove that doesn't escape (c0ffb83f) 2015-02-17 Ted Gould * Check the type of the variant before trying to parse it (006c9d4e) 2015-01-26 CI Train Bot * Releasing 13.10.1+15.04.20150126-0ubuntu1 (051a469f) 2015-01-26 Lars Uebernickel * unescape_action_name: fix logic error (& instead of |) Fixes: #1414025 Approved by: Ted Gould, PS Jenkins bot (788c2fbe) * unescape_action_name: fix logic error (& instead of |) (b8537d99) 2015-01-12 CI Train Bot * Releasing 13.10.1+15.04.20150112-0ubuntu1 (594861df) 2015-01-12 Lars Uebernickel * Escape message and source ids when using them as action names Fixes: #1386584 Approved by: Sebastien Bacher, PS Jenkins bot, Ted Gould (faf42ea3) * desktop menu: don't warn when no default handler for a mime type is found Fixes: #1389725 Approved by: Sebastien Bacher (9863e061) 2014-11-07 Lars Uebernickel * desktop menu: don't warn when no default handler for a mime type is found (965863d5) * Also escape message and source ids when removing them from the app (d3f66404) 2014-11-05 Lars Uebernickel * Escape message and source ids when using them as action names (885784f8) 2014-11-03 CI bot * Releasing 13.10.1+15.04.20141103-0ubuntu1 (1baca6d1) 2014-11-03 Ted Gould * Add filtering for lock screen. Fixes: 1358340 Approved by: PS Jenkins bot (2b470ce8) 2014-11-03 Lars Uebernickel * libmessaging-menu: fix section link in the documentation and add descriptions Fixes: 1313561 Approved by: Ted Gould (8ff11f94) * libmessaging-menu: allow numbers in object paths Fixes: 1384811 Approved by: Ted Gould (d119e345) 2014-10-23 Lars Uebernickel * libmessaging-menu: allow numbers in object paths (4e65abad) 2014-10-10 Ted Gould * Update to trunk (330352f2) 2014-10-09 Ted Gould * Test case for greeter checking (cab75e01) 2014-10-09 CI bot * Releasing 13.10.1+14.10.20141009-0ubuntu1 (03f1a76d) 2014-10-09 Ted Gould * Symbolic icon test on Unity8 phone Approved by: Antti Kaijanmäki, PS Jenkins bot (5ce11383) 2014-10-08 Ted Gould * Merge trunk positions (ee5d3037) 2014-10-07 CI bot * Releasing 13.10.1+14.10.20141007-0ubuntu1 (e48f32f5) 2014-10-07 Charles Kerr * Make title string match updated designs. Fixes: 1377286 Approved by: Ted Gould, PS Jenkins bot (cf7a2177) 2014-10-07 Ted Gould * Adding a symbolic icon SMS test (1cfe5ab0) 2014-10-06 Ted Gould * Name change (5c7e4c72) * Ensure the proxy is still cleared so we don't leak them (b0c1cc8b) * Ensure we can cancel getting the proxy and that if we do we can handle it without getting the private section (76bf922c) * Check for loading of a cached instance (6fd3e934) 2014-10-06 CI bot * Releasing 13.10.1+14.10.20141006-0ubuntu1 (726a04ec) 2014-10-06 Charles Kerr * Move the position of this indicator on the panel. Fixes: 1377294 Approved by: Ted Gould, PS Jenkins bot (19c67741) * only rearrange the indicator position on the phone (119792e2) * move indicator as per the 'Indicator RTM Usability Fixes' document (d5e285f3) 2014-10-03 Charles Kerr * Rename the phone header's title from 'Notification center' to 'Notifications' as per I:RTMUF (9e430aac) 2014-09-25 CI bot * Releasing 13.10.1+14.10.20140925-0ubuntu1 (72114e34) 2014-09-25 Lars Uebernickel * Support X-Ubuntu-SymbolicIcon in desktop files Fixes: 1365408 Approved by: Ted Gould, PS Jenkins bot, Renato Araujo Oliveira Filho (979eeee8) 2014-09-22 Ted Gould * Fleshing out drawing attention (29fd0490) * Get the value on whether we should show on the welcome screen (47f18836) * Setup and get our proxy (e44aeafe) 2014-09-18 Ted Gould * Setup the user manager signals (b255d5ab) 2014-09-17 Ted Gould * A function to handle the showing on greeter part of this. (86aab437) * Put in a function to handle setting the draw attention value (c50d1189) * Get an accounts service instance in the application list (25ab64f4) * Setting up default referencing (2f905862) * Connecting into accounts service (22fcf3da) * Put into our namespace (07494934) * Grab an AS reference (638d0ad9) * Simple, if we're on the greeter show it. If not, we don't (3b3e0d14) * Check show data to whether we should put in the body, subtitle and actions (20dc96cc) * Add API for showing data to users (3132098c) * Copyright headers (1e43bda7) * A class wrapper for all the accounts service brewhaha (8513894e) * Setup a basic greeter property (b3f2f2c8) * Adding a specifier for whether it's in the greeter or not (36ab9b36) 2014-09-16 Lars Uebernickel * Support X-Ubuntu-SymbolicIcon in desktop files (98574062) 2014-09-05 Ted Gould * Add "Multi-Arch: same" to libmessaging-menu0 (1f6eec28) 2014-09-02 Michael Vogt * Add "Multi-Arch: same" to libmessaging-menu0 (f6ddb730) 2014-08-20 Ted Gould * Attaching bug (c21dbac4) * Adding desktop_greeter and phone_greeter profiles (e66af3b0) 2014-08-14 CI bot * Releasing 13.10.1+14.10.20140814.1-0ubuntu1 (3dff9faf) 2014-08-14 Charles Kerr * Change the title to "Notification center". Approved by: Pete Woods (2702e6ae) 2014-07-30 Charles Kerr * change title to 'Notification center' (d6eed728) 2014-07-25 CI bot * Releasing 13.10.1+14.10.20140725-0ubuntu1 (19ad3dd7) 2014-07-25 Lars Uebernickel * messaging-menu-message: add missing break statements Approved by: Charles Kerr, PS Jenkins bot (e52d2265) 2014-07-14 Lars Uebernickel * Add lcov 1.11 (ab6b5e82) 2014-07-11 Lars Uebernickel * messaging-menu-message: add missing break statements (4b1670ab) 2014-06-11 CI bot * Releasing 13.10.1+14.10.20140611-0ubuntu1 (3e865b8c) 2014-06-11 Charles Kerr * Add example of using libmessaging-menu from a python client Fixes: 1315384 (656423a7) 2014-05-28 Charles Kerr * Add an example for client usage from a python script. (ae3cdc27) 2014-04-28 Lars Uebernickel * libmessaging-menu: fix section link in the documentation and add descriptions (a717e6f8) 2014-04-10 CI bot * Releasing 13.10.1+14.04.20140410-0ubuntu1 (83220763) 2014-04-10 Lars Uebernickel * messages-service: listen to the ApplicationStoppedRunning call (f78aa1d7) * messages-service: listen to the ApplicationStoppedRunning call (802a5890) 2014-04-08 CI bot * Releasing 13.10.1+14.04.20140408-0ubuntu1 (79b77a97) 2014-04-08 Lars Uebernickel * desktop menu: sort applications like specified (3e83ddae) * Don't show the messaging menu and the status section when no app is registered for them Fixes: 1225063 (ab9d26c0) 2014-04-08 Ted Gould * Synchronize process management across indicators (87822135) 2014-04-07 Lars Uebernickel * desktop menu: sort applications like specified (a47b4839) * Only show the menu when there are apps registered to use it (de9c8083) * desktop menu: don't show status section when no apps supports it (fc6ee128) 2014-03-21 CI bot * Releasing 13.10.1+14.04.20140321-0ubuntu1 (67c7bc30) 2014-03-21 Lars Uebernickel * desktop menu: use com.canonical.application menu items for actions (51f72502) 2014-03-20 Lars Uebernickel * desktop menu: use com.canonical.application menu items for actions (a56346d7) 2014-02-26 Ted Gould * Update for gnome-fallback (36018e66) 2014-02-19 Ted Gould * Grabbing our new files (23d68122) * Adding the Upstart XDG override (50d4a5cc) * Add an XDG autostart config file (98b1efd8) * Upstart job configuration (f77b2579) * Dropping the DBus service file (9a613154) 2014-02-07 CI bot * Releasing 13.10.1+14.04.20140207-0ubuntu1 (06a0c3a8) * Adding acceptance tests and merge review policies (0dd1f470) 2014-01-31 Ted Gould * Adding acceptance tests and merge review policies. (887e7c3b) * Adding merge review policy (7dbad5e7) * Adding basic acceptance tests (02ae3d9f) 2014-01-17 Automatic PS uploader * Releasing 13.10.1+14.04.20140116-0ubuntu1 (revision 400 from lp:indicator-messages). (c8d8c7ac) 2014-01-16 Automatic PS uploader * Releasing 13.10.1+14.04.20140116-0ubuntu1, based on r400 (f7712cb2) 2013-12-13 Lars Uebernickel * phone menu: set action targets on source and message menu items. (a5b75edd) * Add lcov 1.10 (8784c72d) * phone menu: set action targets on source and message menu items (4facb08e) 2013-11-25 Automatic PS uploader * Releasing 13.10.1+14.04.20131125-0ubuntu1 (revision 398 from lp:indicator-messages). (980b4846) * Releasing 13.10.1+14.04.20131125-0ubuntu1, based on r398 (69bd1fbb) 2013-11-20 Lars Uebernickel * Stop showing expected warnings in the actionmuxer test. (64bad031) * test-gactionmuxer: don't spew warnings that are expected (0daa47af) * g_action_muxer_insert: don't warn when passing a NULL action group (f541df4b) 2013-11-19 Lars Uebernickel * im-menu: fix leak. (0ebdbd89) * im_menu_insert: make sorting logic more readable (6fbc5160) 2013-11-12 Lars Uebernickel * im-menu: fix leak (3b4ecb62) * im_menu_insert_section: don't leak item_sort (13f4c2e8) 2013-10-29 Automatic PS uploader * Releasing 13.10.1+14.04.20131029.1-0ubuntu1 (revision 395 from lp:indicator-messages). (5c15b814) * Releasing 13.10.1+14.04.20131029.1-0ubuntu1, based on r395 (3384d0a6) 2013-10-28 Lars Uebernickel * Protect against processes calling Register() multiple times (202050c3) 2013-10-28 Ted Gould * Adding a phone_greeter profile. (1322e98a) * Adding a phone_greeter profile (fef341dd) 2013-10-26 Lars Uebernickel * Protect against processes calling Register() multiple times (6361bb35) 2013-10-14 Lars Uebernickel * im-application-list: unpack icon correctly (8ad7379f) 2013-10-11 Lars Uebernickel * im-application-list: unpack icon correctly (ac81f9ad) 2013-10-11 Automatic PS uploader * Releasing 13.10.1+13.10.20131011-0ubuntu1 (revision 391 from lp:indicator-messages). (3f300e10) * Releasing 13.10.1+13.10.20131011-0ubuntu1, based on r391 (769b41c7) 2013-10-04 Lars Uebernickel * Fix the logic for turning the indicator icon blue. (622160d5) * messages-service.c: remove superfluous unref. (0f4e1841) * app_source_action_check_draw: flip erroneous != to == (85967d3b) * Add "visible" paramete to im-application-list-source-added (273973d1) * im-application-list: fix draws_attention logic (f807fd4e) * app_source_action_check_draw: reset app->draws_attention (9afc8613) * app_source_action_check_draw: don't let invisible sources draw attention (e449f409) * Rename app_check_draw_attention to app_update_draws_attention (5fd82c01) * app_check_draw_attention: don't overwrite draws_attention when it is already TRUE (d2b5ddc7) 2013-10-04 Automatic PS uploader * Releasing 13.10.1+13.10.20131004-0ubuntu1 (revision 388 from lp:indicator-messages). (a9ede035) 2013-10-04 Lars Uebernickel * messages-service.c: remove superfluous unref (03b57740) 2013-10-04 Automatic PS uploader * Releasing 13.10.1+13.10.20131004-0ubuntu1, based on r388 (c3ce23b2) 2013-10-03 Charles Kerr * in im_application_list_update_draws_attention(), free the temporary icon_name string created by g_strdup_printf(). Fixes: https://bugs.launchpad.net/bugs/1234895. (138ad55c) * in im_application_list_update_draws_attention(), free the temporary icon_name string created by g_strdup_printf() (c429890f) 2013-10-02 Lars Uebernickel * Return values from functions that have return values. (6ceee100) * im-application-list.c: return values from functions that have return values (3e1f4715) * Remove 'indicator.' from the "Clear All" menu item on the phone's menu. (37be8fff) * Remove 'indicator.' from the "Clear All" menu item on the phone's menu (4677cd2b) * messages-service.c: return FALSE from set_status() if preconditions aren't met (d8004072) 2013-10-01 Sebastien Bacher * remove old sources from the translatable list. (13f25057) * remove old sources from the translatable list (e4512dd8) 2013-09-30 Lars Uebernickel * Change title to "Incoming". (be74cf3b) * messages-service: return TRUE from "handle-*" GDBusProxy method handlers (d731a2a7) * Change title to "Incoming" (a531d173) 2013-09-30 Automatic PS uploader * Releasing 13.10.1+13.10.20130930-0ubuntu1 (revision 381 from lp:indicator-messages). (1c566e00) * Releasing 13.10.1+13.10.20130930-0ubuntu1, based on r381 (edfa83fe) 2013-09-27 Lars Uebernickel * messages-service: return TRUE from "handle-*" GDBusProxy method handlers (8d853b9e) * im-application-list: fix crash (source-changed was declared with wrong signature) (75c8703b) 2013-09-26 Lars Uebernickel * im-application-list: show all sources that have a count, time, or non-empty string. Fixes: https://bugs.launchpad.net/bugs/1231435. (284a563d) * im-application-list: show all sources that have a count, time, or non-empty string (0df6f7e0) 2013-09-25 Lars Uebernickel * phone menu: don't show "Clear All" when there are no messages. Fixes: https://bugs.launchpad.net/bugs/1229422. (6206322b) * phone menu: don't show "Clear All" when there are no messages (75cefbde) 2013-09-13 Automatic PS uploader * Releasing 13.10.1+13.10.20130913-0ubuntu1 (revision 378 from lp:indicator-messages). (b0de0c49) * Releasing 13.10.1+13.10.20130913-0ubuntu1, based on r378 (b3f486f6) 2013-09-12 Lars Uebernickel * Add "title" to the root action state dictionary. Fixes: https://bugs.launchpad.net/bugs/1223635. (7a6b0e84) * Add "title" to the root action state dictionary (71d39bcd) 2013-09-09 Lars Uebernickel * Use g_icon_serialize() instead of g_icon_to_string(). (bcb22de4) 2013-09-06 Lars Uebernickel * Install into /usr/lib/$arch, to be consistent with the other indicators. (9b383fa4) * debian/*.install: install into arch-dependent directories (7d8e293f) * Install the service into pkglibexecdir (732e7a3c) * debian/rules: remove libdir and libexecdir overrides (0588e262) * Remove gmenuutils, it's not being used anymore (2b37622e) * create_status_section: use g_icon_serialize() (22b393aa) * im_application_list_message_added: don't use g_object_unref for variants (3fd7588b) * im_application_list_update_draws_attention: fix GVariant leak (aa830233) * Use g_icon_serialize() for application icons (fde79fff) 2013-09-05 Lars Uebernickel * Use serialized icons for messages and sources (44d14782) 2013-09-03 Automatic PS uploader * Releasing 13.10.1+13.10.20130903-0ubuntu1 (revision 374 from lp:indicator-messages). (9360d9d0) * Releasing 13.10.1+13.10.20130903-0ubuntu1, based on r374 (2da8281e) 2013-09-02 Nick Dedekind * Remove parameter type from root action. (f211cfd2) * Remove parameter type from root action (498e4d4d) 2013-08-30 Automatic PS uploader * Releasing 13.10.1+13.10.20130830.2-0ubuntu1 (revision 372 from lp:indicator-messages). (d5bd8f05) * Releasing 13.10.1+13.10.20130830.2-0ubuntu1, based on r372 (6b71fdfb) 2013-08-29 Lars Uebernickel * libmessaging-menu: default MessagingMenuMessage::draws-attention to TRUE (100d116e) * libmessaging-menu: default MessagingMenuMessage::draws-attention to TRUE (45e8aac6) 2013-08-29 Automatic PS uploader * Releasing 13.10.1+13.10.20130829-0ubuntu1 (revision 370 from lp:indicator-messages). (e1a7aea2) * Releasing 13.10.1+13.10.20130829-0ubuntu1, based on r370 (df703ad4) 2013-08-28 Lars Uebernickel * Remove app-section.[ch], it's not used anymore. (679b4b4d) * Don't pass source and message ids into parameters that expect detailed action names. (0110ed56) 2013-08-28 Automatic PS uploader * Releasing 13.10.1+13.10.20130828.2-0ubuntu1 (revision 367 from lp:indicator-messages). (c030416d) 2013-08-28 Lars Uebernickel * Don't pass ids as detailed action names (ec879e19) * Remove app-section.[ch] (cf65169f) 2013-08-28 Automatic PS uploader * Releasing 13.10.1+13.10.20130828.2-0ubuntu1, based on r367 (462d0fa8) 2013-08-27 Automatic PS uploader * Releasing 13.10.1+13.10.20130827.4-0ubuntu1 (revision 365 from lp:indicator-messages). (1518f109) 2013-08-27 Lars Uebernickel * Remove extraneous variable 'old_draw'. (a55169ef) 2013-08-27 Automatic PS uploader * Releasing 13.10.1+13.10.20130827.4-0ubuntu1, based on r365 (0a7cd205) 2013-08-27 Lars Uebernickel * Merge trunk (35c8e4cc) * test-client.py: flush GDBusConnection before (potentially) freeing it. Fixes: https://bugs.launchpad.net/bugs/1217131. (6ded3e61) * im-application-list: remove extraneous variable 'old_draw' (bf353617) * Fix bug #1216843 (21c53216) * test-client.py: flush GDBusConnection before (potentially) freeing it (f2b47b88) 2013-08-27 Ted Gould * Remove unused and slightly used dependencies. (6f3d6ce8) 2013-08-27 Lars Uebernickel * desktop menu: don't show sources with a count of 0 (e1050a9c) * desktop menu: remove all sources when an application has quit (0eae4379) * im-application-list: use correct signal marshaller for app-stopped (0d54cdd2) 2013-08-26 Ted Gould * Use the local version instead of the version from libindicator (d355442a) * Dropping launch context so we don't have to include GDK (4ad5794a) * Dropping libs from configure as well (c85f55d7) * Build deps no longer required (d1604853) * Protect against invalid actions. Fixes: https://bugs.launchpad.net/bugs/1216758. (8c8e6d34) * Protect against action loss (ee90f3a3) 2013-08-22 Automatic PS uploader * Releasing 13.10.1+13.10.20130822.5-0ubuntu1 (revision 360 from lp:indicator-messages). (36bd5ab7) * Releasing 13.10.1+13.10.20130822.5-0ubuntu1, based on r360 (25556c88) 2013-08-22 Lars Uebernickel * Don't use deprecated g_simple_action_group_{lookup,insert}. Fixes: https://bugs.launchpad.net/bugs/1215180. (f3c782b3) 2013-08-22 Sebastien Bacher * don't error out on deprecated declarations. (04b1c4bf) 2013-08-22 Lars Uebernickel * Don't use deprecated g_simple_action_group_{lookup,insert} (11c56b32) 2013-08-22 Sebastien Bacher * don't error out on deprecated declarations (1c82820c) 2013-08-22 Ted Gould * Migrate away from deprecated function. Fixes: https://bugs.launchpad.net/bugs/1215180. (3044d471) 2013-08-21 Ted Gould * Change g_simple_action_group_remove() to g_action_map_remove_action() (a8c93f9a) * Swap g_simple_action_group_insert() for g_action_map_add_action() (027a06e9) * Add a DBus error for list_add(). (ff533d23) 2013-08-21 Pete Woods * Re-merge the consolidate branch, but with additional bugfix. (933deb6d) 2013-08-20 Ted Gould * Make it so that we sort based on application name to make the menu more sane (046f655a) * Enabling and disabling the remove-all action if we have items to remove (b526ee7d) * Adding in a sigterm handler (4d6aeed8) * Putting shortcuts into the menu (3f6abe75) * Switch to looking in the shortcuts object to set the actions (0bd953b0) * Building up a shortcuts object to track the shortcuts from the desktop file (47ecc8ff) * Remove unused struct member (8d53c713) * Stealing the desktop shortcuts from libindicator (7dda565d) * Making the base menu item an a{sv} with proper icons and fallbacks (5ed5380d) * Make the accessible name translatable and based on the blue envelope (4626ffb3) * Track the old draw_attention and look for updates (b929a0f2) 2013-08-20 Pete Woods * Compile again (0d5c6bf1) * "Clear" and "Clear All" now translatable (9f67d20d) * Merge trunk (18aa1976) * Re-do merge (79c89af3) * Thunderbird e-mail notifications work again (d7bba03d) 2013-08-20 Automatic PS uploader * Releasing 13.10.1+13.10.20130820.2-0ubuntu1 (revision 354 from lp:indicator-messages). (94fef3bf) * Releasing 13.10.1+13.10.20130820.2-0ubuntu1, based on r354 (0a6bc4aa) 2013-08-20 Łukasz 'sil2100' Zemczak * Revert rev 352 as it is causing a SIGTRAP on start (88b2fd89) 2013-08-20 Automatic PS uploader * Releasing 13.10.1+13.10.20130820-0ubuntu1 (revision 352 from lp:indicator-messages). (b25532c6) * Releasing 13.10.1+13.10.20130820-0ubuntu1, based on r352 (439330de) * Update symbols (f9ebf6a7) 2013-08-19 Lars Uebernickel * Merge in phablet branch. (8adc1d9a) 2013-08-19 Ted Gould * Pass the error back up through DBus (f96b5cf3) * Make it so that application list returns an error on a bad desktop file (3c805213) * Bumping version to ensure we override all PPAs when this lands (41bd58d4) * Set the action (d519c3e7) 2013-08-18 Ted Gould * Save the draws attention for messages and react to that (00d61143) * Check the action state to get whether it's drawing or not (a48ab9b8) * Starting to regen the draw attention flag from the source actions (2673fba2) * clearing the sources on remove all (341152a5) * Putting back the removing of sources (aa21be1e) 2013-08-16 Ted Gould * Can't clear the sources because that clears the mailboxes (7ac72f49) * Dropping indicator prefixes as they're set up with the base namespace of the section (08739c5f) * Whitespace (cacbeac6) * Only dismiss if there is a proxy connected and the application is remote (234e9dd7) * Stop removing sources, just set them to no longer draw attention (4c8c9dc7) * Forgot to draw attention for new messages (201482b9) * Making it so that we cache the draw attention state in the app (b0626bc3) 2013-08-15 Ted Gould * Make sure we've got an icon str before setting it (3b990727) * Don't need a special type for these (185d6e25) * Couldn't make that assumption, instead assume they're all listening and adjust themselves or tell us otherwise (922fb55f) * Setting the status of the menu based on the aggregate application status (04aad431) * Emit to dbus when the status changes (190841b5) * Adding a set status signal (86cedd8c) * Setting up a callback on the activation to set the state and update the applications (1f28cf89) * Tracking application status (5ca1b7a0) * Create a status action (02ba00aa) * Really we should set status on the application list (194c8bf9) 2013-08-14 Ted Gould * Create the status section of the desktop menu (a7e92c99) * React to the set-status call on dbus and pass that down to the menus (3baa8097) * Adding a set_status virtual function (24b52f42) 2013-08-13 Ted Gould * Rebuilding internationalization files (5683ca4c) * Small merge error (8fa163fc) * Merge from trunk (3da51a23) 2013-08-13 Lars Uebernickel * Disable action shortcuts for now (ec9ca618) * desktop menu: don't export an item if the name is '' (393294fa) * application list: show non-running applications (ed16f39e) * Use "icon" instead of "x-canonical-icon" (4fcb03be) * application list: update draws-attention when necessary (a545cafc) * desktop menu: show message sources (7877dfd9) * Add application actions (2cd06d6f) * Add desktop menu (046ef6f5) 2013-08-12 Lars Uebernickel * Move toplevel menu logic into ImMenu (0b24c6a9) * Add ImMenu (ff4aefe6) 2013-07-31 Lars Uebernickel * Prefix action names with "indicator." (769affee) * debian: install indicator file and don't install panel plugin (d6b66195) 2013-07-30 Lars Uebernickel * Remove --enable-localinstall configure flag (02e8c541) * Remove panel plugin (3b39985a) 2013-07-25 Lars Uebernickel * Add a indicator file (7caf6bb6) 2013-07-12 Ken VanDine * Generate a vapi, added valac build depends and reordered the build depends to be alphabetical. (fea50330) * Fixed deprecations. (fbb47a81) * bumped build depends for gtk to match required version in configure.ac (499a978b) * Generate vapi and adding valac build depends (4b72aba5) * Fixed deprecations (14b509d8) * added gio-2.0 to vapigen (1d280a91) 2013-07-11 Ken VanDine * generate vapi (5b0ea10c) * fixed deprecations (95687294) * Fixed deprecations (7f4ac7cc) 2013-07-02 Automatic PS uploader * Releasing 12.10.6+13.10.20130702-0ubuntu1 to ubuntu. (97d88bc9) * Releasing 12.10.6+13.10.20130702-0ubuntu1, based on r350 (493b8ca5) 2013-06-28 Mathias Dietrich * Change abbreviation for minutes from m to min. Fixes: https://bugs.launchpad.net/bugs/652845. (3bebb80d) * Change abbreviation for minutes from m to min (8c3a1e90) 2013-06-19 Automatic PS uploader * Releasing 12.10.6daily13.06.19-0ubuntu1 to ubuntu. (44ffd84c) * Releasing 12.10.6daily13.06.19-0ubuntu1, based on r348 (6e31d99f) 2013-06-07 Lars Uebernickel * Notify the service when an app unrefs its MessagingMenuApp. Fixes: https://bugs.launchpad.net/bugs/1154099. (e5a4ba53) * Remove autoconf-archive dependency (copied ax_python_module into m4/) (014158fd) 2013-06-07 Jeremy Bicha * Have libmessaging-menu-dev depend on gir1.2-messagingmenu-1.0. (b38a6602) 2013-06-07 Sebastien Bacher * use gtk_style_context_get instead of deprecated gtk_style_context_get_font. (0bc7b3dc) 2013-06-07 Jeremy Bicha * Have libmessaging-menu-dev depend on gir1.2-messagingmenu-1.0 (7af3c34b) 2013-05-29 Lars Uebernickel * ido-detail-label.c: free font desc (ebcad53c) 2013-05-28 Sebastien Bacher * use gtk_style_context_get instead of deprecated gtk_style_context_get_font (bc3c2d1d) 2013-05-15 Automatic PS uploader * Releasing 12.10.6daily13.05.15-0ubuntu1 to ubuntu. (f82e3a0b) * Releasing 12.10.6daily13.05.15-0ubuntu1, based on r344 (b93c043e) 2013-05-15 Lars Uebernickel * libmessaging-menu: don't use detailed action names (c5ca0a4c) * libmessaging-menu: don't use detailed action names (1312f910) 2013-05-03 Automatic PS uploader * Releasing 12.10.6daily13.05.02-0ubuntu1 to ubuntu. (2d1c21b7) 2013-05-02 Automatic PS uploader * Releasing 12.10.6daily13.05.02-0ubuntu1, based on r342 (36a03049) 2013-05-02 Mathieu Trudel-Lapierre * Merge changes from /13.04 branch for saucy. (de79e3db) 2013-05-02 Marco Trevisan (Treviño) * AppSection: Use the Launch Context with proper activate event timestamp to exec the libindicator shortcut nicks. Fixes: https://bugs.launchpad.net/bugs/1164483. (1f62dd9a) 2013-05-02 Mathieu Trudel-Lapierre * releasing version 12.10.6daily13.04.09-0ubuntu1 (25671b51) 2013-04-26 Sergio Schvezov * Version bump to not pull from archive. (9b2ecf67) * Version bump to not pull from archives (b72e0a4a) 2013-04-22 Marco Trevisan (Treviño) * AppSection: use LaunchContext to exec shortcut nicks (6a3dad7d) * IdoMenuItem: pass event timestamp to the action if we have no status change (3cabcaef) 2013-04-22 Łukasz 'sil2100' Zemczak * indicator_desktop_shortcuts_nick_exec() is deprecated, use indicator_desktop_shortcuts_nick_exec_with_context() with a NULL context instead - fixes the FTBFS. (dbeec9ce) * indicator_desktop_shortcuts_nick_exec() is deprecated, use indicator_desktop_shortcuts_nick_exec_with_context() with a NULL context instead - fixes the FTBFS (35bf2c93) 2013-04-05 Marco Trevisan (Treviño) * AppSection: use the GAppLaunchContext with event timestamp when launching an app. Fixes: https://bugs.launchpad.net/bugs/627195, https://bugs.launchpad.net/bugs/811461. (bf04788b) 2013-04-03 Marco Trevisan (Treviño) * AppSection: use the GAppLaunchContext with event timestamp when launching an app (23d93b9c) * ImAppMenu: pass the event timestamp when activating the item (39fc49c5) 2013-03-22 Sergio Schvezov * Adding guards for g_type_init and reversioning. (e1712e56) * Adding guards for g_type_init (55dc5c4f) * Adding glib version guard to g_type_init (5e3abf72) 2013-03-05 Lars Uebernickel * Use glib mainloop in dbusmock test (36a89063) 2013-02-27 Lars Uebernickel * test-client: wait a bit longer until checking that mock methods were called (701aadff) 2013-02-26 Lars Uebernickel * Use a special desktop file for testing (83b5fdc8) * debian/control: add autoconf-archive as an explicit build dep (d98feb71) 2013-02-25 Lars Uebernickel * Test libmessaging-menu (5c47f6db) 2013-02-20 Renato Araujo Oliveira Filho * Fixed copyright/packaging issues. (8fd0c5cf) * Fixed missing copyright header. (ba4d0379) * Fixed copyright/packaging issues. (9bbd83d1) 2013-02-19 Lars Uebernickel * Notify the service when an app unrefs its MessagingMenuApp (8249e264) 2013-02-13 Automatic PS uploader * Releasing 12.10.6daily13.02.13-0ubuntu1 to ubuntu. (49840f6f) * Releasing 12.10.6daily13.02.13-0ubuntu1, based on r337 (e2a9f0d3) 2013-02-12 Jason Conti * A bit of refactoring in libmessaging-menu/messaging-menu.c has resulted in draws_attention always being set to TRUE. This branch fixes _set_draws_attention and _remove_attention so they set the appropriate value. Fixes: https://bugs.launchpad.net/bugs/1113721. (9fb3240a) * libmessaging-menu: Set correct boolean value in _remove_attention and _set_draws_attention (f6d3e793) 2013-01-25 Automatic PS uploader * Releasing 12.10.6daily13.01.25-0ubuntu1 to ubuntu. (7ba24908) * Releasing 12.10.6daily13.01.25-0ubuntu1, based on r335 (4292a7c6) 2013-01-23 Charles Kerr * remove g_type_init() calls, bump glib requirement to 2.35.4. Fixes: https://bugs.launchpad.net/bugs/1103087. (c60de308) 2013-01-22 Charles Kerr * add glib requirement to debian/control. bump glib requirement in configure.ac (45260581) * remove g_type_init() calls, bump glib requirement to 2.35.4 (156418b4) 2012-12-20 Lars Uebernickel * ImApplicationList: add "remove-all" signal (9d0bbac6) * 12.10.6-0ubuntu1phablet9 (7ae19a63) * ImApplicationList: add "remove-all" signal (dd756106) 2012-12-17 Lars Uebernickel * 12.10.6-0ubuntu1phablet8. (27613150) * 12.10.6-0ubuntu1phablet8 (4d28d4e3) * ImPhoneMenu: sort messages by time. Fixes: https://bugs.launchpad.net/bugs/1090266. (140a3018) * Make handling of multiple processes with the same desktop id more robust. (9ea243e5) * Remove variant wrapper from 'parameter' argument of the "activate" signal. (b52a6391) 2012-12-14 Lars Uebernickel * Make messaging_menu_app_remove_message() work for messages with a ref count of 1 (33f539cf) * Make messaging_menu_app_remove_message() work for messages with a ref count of 1 (871848b6) * ImPhoneMenu: sort messages by time (1b619675) * im_application_list_set_remote: robuster check for running async operation (12c0fb32) * im_application_list_proxy_created: fix error condition (c46e38d7) 2012-12-11 Lars Uebernickel * 12.10.6-0ubuntu1phablet7 (68e65013) * Remove variant wrapper from 'parameter' argument of the "activate" signal (b1671dd0) 2012-12-10 Lars Uebernickel * Always use the messageitem widget type and don't show sources. (f609a271) * 12.10.6-0ubuntu1phablet6 (2a3e4c0f) * Don't show sources in the phone menu (e5caa503) * Remove the snapdecision widget type (e1988a3d) 2012-12-06 Lars Uebernickel * 12.10.6-0ubuntu1phablet5. (34824346) * 12.10.6-0ubuntu1phablet5 (02130032) 2012-12-05 Lars Uebernickel * Add messaging_menu_app_get_message. (bc5d6f4c) * Don't shorten the app id to seven characters. Fixes: https://bugs.launchpad.net/bugs/1086729. (d77bf497) * Don't shorten the app id to seven characters (0a1d7c18) * Update debian/libmessaging-menu0.symbols (56402fc6) 2012-12-04 Lars Uebernickel * 12.10.6-0ubuntu1phablet4. (dc6a7b66) * 12.10.6-0ubuntu1phablet4 (4452014a) * Add messaging_menu_app_get_message (3a1cc9ed) * Change icon when there are any messages in the menu. (63bbb7ee) * Switch accessible name and icon-name (see last commit) (69ee426c) * Change icon when there are any messages in the menu (ae7c5252) * Only expose one application icon (the -symbolic one) (73490566) * Only expose one application icon (the -symbolic one) (40b99f3e) * Export symbolic application icons on messages (b47db34e) * im-application-list: initialize local variables with NULL (af3d39b6) * Export symbolic application icons on messages (af58f8e2) * Reverse order of messages (dfdac976) * Reverse order of messages (0e126bb7) * Stop using IndicatorService (29d7864b) * Add the concept of actions to messages. (6d6e0050) 2012-12-03 Lars Uebernickel * Prefix message action names with the right namespace (4e8bff91) * Stop using IndicatorService (c21c6e9a) 2012-11-30 Lars Uebernickel * debian/symbols: export new symbol (1563ec55) * Don't export the messaging_menu_message_to_variant symbol (1d9ee577) * Merge trunk and fix conflicts (fd565c27) * Expose message actions on the bus (as GActions) (16aeadbe) * 12.10.6-0ubuntu1phablet3. (a128285e) * 12.10.6-0ubuntu1phablet3 (e3aaed0e) 2012-11-29 Lars Uebernickel * ImApplicationList: specify right number of args for 'message-added' (6c42247d) * ImApplicationList: specify right number of args for 'message-added' (4bfe4198) * Expose a root item on the menu as described in the indicator spec and remove some related dead code in messages-service.c. (892d46d4) 2012-11-28 Lars Uebernickel * Expose message actions in the phone menu (e6930c0d) * Use aa{sv} instead of a(ssgav) to communicate actions to the service (235a7edc) * Add x-canonical-type to the root item (5c7569e0) * messages-service.c: remove chat status action (8ff464d1) * Add root menu item (83598a9e) 2012-11-27 Lars Uebernickel * Pass message action and its parameter through to the application (ced173aa) * Move 'activate' signal into MessagingMenuMessage (7c7c408e) * Allow adding actions to MessagingMenuMessage (e8e99703) * 12.10.6-0ubuntu1phablet2. (c9ddfbea) 2012-11-26 Lars Uebernickel * releasing version 12.10.6-0ubuntu1phablet2 (a6fdafc5) * Implement more of the phone spec. (efe27b12) * Tell applications when messages and sources are dismissed (9287c2e6) * Use namespaced action names (src. and msg.) in phone menu (b2c6b50c) * Remove sections and "Clear All" when no sources or messages are available (abdb9c6e) * Add "Clear All" (f758143a) * Namespace actions with 'src' and 'msg' for sources and messages (76da35f3) * ImApplicationList: give message and source actions a boolean parameter (eeb48cb2) * ImApplicationList: listen to activate signal (629b28e7) * Canonicalize application ids (979a9b32) 2012-11-22 Didier Roche * manual merge Releasing 12.10.6daily12.11.22-0ubuntu1 (6bb7a699) 2012-11-22 Lars Uebernickel * ImPhoneMenu: expose application icon on message items (e5985f89) * ImApplicationList: use specified state for source actions (uxsb) (a7ca5476) 2012-11-22 Automatic PS uploader * Releasing 12.10.6daily12.11.22-0ubuntu1, based on r333 (944cc415) 2012-11-22 Lars Uebernickel * libmessaging-menu: fix crash in _draws_attention (71fe7316) * libmessaging-menu: fix crash in _draws_attention (b8711e8f) 2012-11-21 Lars Uebernickel * Move menu and application handling out of messages-service.c (4a6fa0a4) * ImApplicationList: fix typos (e8eda4af) 2012-11-21 Didier Roche * Releasing 12.10.6daily12.11.21.1-0ubuntu1 to ubuntu (28d81405) 2012-11-21 unknown * Releasing 12.10.6daily12.11.21.1-0ubuntu1, based on r331 (196db124) 2012-11-21 Lars Uebernickel * ImApplicationList: no need to include the dynamic data in the signals (7d78b089) * Remove application messages when it unregisters itself (0a9533c9) * Replace app when another process is registering with the same id (1d96aab0) * Remove applications from the menu when the disappear from the bus (d22b49e5) 2012-11-20 Lars Uebernickel * libmessaging-menu: emit the right signal when a message is removed (15f2eef7) * ImApplicationList: listen for added and removed signals (717f9be0) * messages-service: move app handling into separate class (2021da31) * Release phablet version. (12fa6e3a) * Add new symbols to debian/libmessaging-menu0.symbols (6eb8ce0d) * messages-serivce: move menu creation into separate class (6f990698) 2012-11-20 Ricardo Mendoza * Releasing upstream for phablet (77608834) 2012-11-19 Lars Uebernickel * Merge upstream: inline packaging (1c1427d0) 2012-11-16 Didier Roche * Add pot file to upstream source. (db494004) 2012-11-16 Lars Uebernickel * Use different menu attributes for the phone menu (f371bb64) 2012-11-16 Didier Roche * add pot file (6e876626) 2012-11-16 Lars Uebernickel * Export menu for the phone client (b55e6373) 2012-11-16 Mathieu Trudel-Lapierre * bootstrap message. (62ac4eb1) 2012-11-15 Mathieu Trudel-Lapierre * bootstrap daily upload changelog message. (cffc1269) 2012-11-15 Ted Gould * Adding debian/. (fc99cbd1) 2012-11-15 Lars Uebernickel * Add support for individual messages to MessagingMenuApp (a44f4a7f) 2012-11-14 Mathieu Trudel-Lapierre * Remove extra # typo in notice to uploaders in debian/control. (620f8112) 2012-11-14 Lars Uebernickel * MessagingMenuApp: fix leak (source list) (e60843df) * Change application to service d-bus protocol (5a9434c6) 2012-11-13 Mathieu Trudel-Lapierre * - Drop the override for dh_makeshlibs. - Add DPKG_GENSYMBOLS_CHECK_LEVEL=4. (77b061ec) * Add libgtest-dev to Build-Depends. (7d412ead) * debian/control: - Fix styling: add trailing commas at the end of lists. - Update Vcs-Bzr, Vcs-Browser fields and add a notice for developers. (7b580159) * debian/rules: - Use autogen.sh for dh_autoreconf. (c7dbb01f) * Specify that this projet should be built by bzr-builddeb in split mode. (9ac3368c) * Import debian/ from lp:~ubuntu-desktop/indicator-messages/ubuntu. (b74d3179) 2012-11-13 Lars Uebernickel * Remove gtupleaction, it isn't used anymore (ebba9b86) * Move service .xml into a common directory (ef6b3b8d) 2012-11-08 Charles Kerr * one-liner to add 'check-news' to the AM_INIT_AUTOMAKE (d6f54735) 2012-11-07 Sebastien Bacher * releasing version 12.10.5-0ubuntu2 (31a0bd5f) * Upload to raring (fad498e0) 2012-11-05 Sebastien Bacher * releasing version 12.10.5-0ubuntu1 (94a6db67) 2012-11-05 Lars Uebernickel * Merge new libmessaging-menu API (b2c1e66e) 2012-11-01 Lars Uebernickel * libmessaging-menu: add MessagingMenuMessage (50d8e7cc) * libmessaging-menu: messaging-menu.[ch] -> messaing-menu-app.[ch] (97d0cafc) 2012-10-29 Lars Uebernickel * Clear the detail (count or time) of a source when another type of detail is set. Fixes: https://bugs.launchpad.net/bugs/1071640. (e4b3f48f) 2012-10-28 Lars Uebernickel * libmessaging-menu: clear time when set_count is called (e4a15c1e) 2012-10-24 Sebastien Bacher * New upstream release: - fix crash caused by GError not being cleared (lp #1064314) - fix crash when registering an app that was previously unregistered (lp #1065169) - remove the icon if NULL is passed to source_set_icon (lp #1070421) (225bcfec) * Import upstream version 12.10.5 (00eb0565) 2012-10-24 Lars Uebernickel * 12.10.5 (fdec219a) * messaging_menu_app_set_source_icon: unset x-canonical-icon if NULL is passed. Fixes: https://bugs.launchpad.net/bugs/1070421. Approved by Charles Kerr. (41adafa3) * messaging_menu_app_set_source_icon: unset x-canonical-icon if NULL is passed (583ceac5) 2012-10-18 Lars Uebernickel * Merge lp:~jconti/indicator-messages/unexport-items (e347088b) * Merge lp:~larsu/indicator-messages/lp1064314 (e271582d) 2012-10-11 Lars Uebernickel * libmessaging-menu: clear error before reusing it (3a5caf3d) 2012-10-10 Jason Conti * Unexport actions/menus on dispose (cad05adc) 2012-10-10 Ken VanDine * Fixed typo in doc string. Approved by Charles Kerr, jenkins. (ff7c774b) 2012-10-09 Ken VanDine * Fixed typo in docstring (2ab588d1) 2012-10-03 Lars Uebernickel * Call gtk-update-icon-cache on $(datadir)/icons/hicolor (1ef5accb) * Call gtk-update-icon-cache on $(datadir)/icons/hicolor (6fcd4248) 2012-10-02 Sebastien Bacher * releasing version 12.10.4-0ubuntu1 (b7a538fc) * New upstream release: - don't segfault if .desktop file is not installed (lp: #1058386) - Use fallback icon names (without status emblems). (lp: #1056595) (910a1eb1) * Import upstream version 12.10.4 (78f8f75e) 2012-10-02 Lars Uebernickel * 12.10.4 (36692583) * Merge lp:~larsu/indicator-messages/lp1056595 (6db7184a) * Merge lp:~larsu/indicator-messages/lp1058386 (ae13eca4) 2012-10-01 Lars Uebernickel * libmessaging-menu: don't crash when getting an invalid desktop id (7a176940) 2012-09-28 Lars Uebernickel * Include fallback icon names (22a6fdb5) 2012-09-26 Lars Uebernickel * Merge lp:~larsu/indicator-messages/lp1055966 (81ed3b83) 2012-09-25 Lars Uebernickel * Request LARGE_TOOLBAR icons for the panel (4640bd97) 2012-09-19 Lars Uebernickel * 12.10.3 (c5527d30) * Bump required gtk version to 3.5.18 (a055ac62) * Merge lp:~larsu/indicator-messages/fix-set-status (86c156c7) * messages-service: define all global variables as static (c0300562) 2012-09-18 Lars Uebernickel * Use indicator-message icons with chat status (4d8755ac) * Set the global chat status more intelligently (24ee0b66) * libmessaging-menu: don't set app->status when global status changes (da9fde78) * libmessaging-menu: don't call SetStatus(OFFLINE) for all apps (624b6e5d) * Merge lp:~larsu/indicator-messages/show-separators (f8901fd8) 2012-09-14 Lars Uebernickel * messages-services: don't call g_object_unref with NULL (8b7183be) 2012-09-13 Lars Uebernickel * Show menu separators between sections (c533fedb) 2012-09-06 Lars Uebernickel * messages-service: update chat section when an app is removed (894c9d2e) * messages-service: fix merge error (d7ad8bae) * Merge lp:~larsu/indicator-messages/watch-desktop-files (10d194fc) 2012-09-05 Lars Uebernickel * Hide the indicator when no application is configured to use it.. Fixes: https://bugs.launchpad.net/bugs/661059, https://bugs.launchpad.net/bugs/1045039. Approved by jenkins, Charles Kerr. (2e17120b) * messages-service.c: remove redundant g_hash_table_remove (bdf943c3) * app-section.c: remove unused function app_section_get_name (d1da13ed) * app-section.c: make destroy_signal static (10d5f621) * indicator-messages.c: don't call menu_items_changed directly (014f841f) * app-section: remove unused private member (45adbc05) * Watch desktop files for changes (af918366) 2012-09-04 Lars Uebernickel * Some minor enhancements to the in-source documentation.. Approved by jenkins, Charles Kerr. (824daba1) * Draw counts as lozenges again. (ff95f53b) * libmessaging-menu: fix shortcut action documentation (bd13abdd) * ido-detail-label: factor common code out of set_text and _count (6a496d6b) * ido-detail-label: chain up dispose and finalize calls (4f976478) * Hide indicator when no applications are configured to use it (b05f7b89) 2012-09-03 Lars Uebernickel * Update bzrignore (67eb5bea) * im-source-menu-item: ellipsize label when it's longer than 40 em (a83f1337) * im-source-menu-item: draw lozenges around counts (641cda4f) * im-source-menu-item: refactor setting detail string (ec60f89b) 2012-09-02 Lars Uebernickel * libmessaging-menu: add convenience doc (78ebf860) * libmessaging-menu: document that @time is expressed in microseconds (3856b84e) * libmessaging-menu: add @include hint to documentation (deff47a5) 2012-09-01 Sebastien Bacher * releasing version 12.10.2-0ubuntu1 (213c3d37) * New upstream release, includes apis to allow changing the label and the icon of sources and add documentatio. debian/libmessaging-menu0.symbols: - new version update * debian/libmessaging-menu-dev.install: - install the documentation; debian/rules: - build the documentation - updated shlibs version - use --with gir so gir:Depends work as it should (lp: #1044125) (38c23eb3) * Import upstream version 12.10.2 (c8794795) 2012-09-01 Lars Uebernickel * libmessaging-menu: make generated .gir compatible with vala (0a866768) 2012-08-31 Lars Uebernickel * 12.10.2 (998854d2) * libmessaging-menu: allow using multiple MessagingMenuApps (7b3c43de) * libmessaging-menu: allow changing label and icon of sources (bca22428) 2012-08-29 Lars Uebernickel * libmessaging-menu: make real links out of urls in the documentation (5cef03ae) * Fix gtk-doc warnings (857c8a37) * Add gtk-doc support (c5a99f8b) * libmessaging-menu: add documentation (462b560f) 2012-08-27 Sebastien Bacher * releasing version 12.10.1-0ubuntu1 (189472aa) * update to 12.10.1 (b51f9f16) * Import upstream version 12.10.1 (d28296b6) 2012-08-27 Lars Uebernickel * 12.10.1 (abda3b07) * Merge lp:~larsu/messaging-menu/fix-icons (dc896416) * ido_menu_item_set_menu_item: make sure g_free isn't called with dangling pointer (90fdd58a) * IdoMenuItem: clear target pointer in dispose (99373eb1) * Increase spacing between icons and labels (c3bbc027) * Indent application shortcuts (29252e90) * IdoMenuItem: don't try to set state on stateless actions (5c88df7d) * Show icons on status menu items (fab67a70) 2012-08-27 Sebastien Bacher * Backported fixes from trunk up to r295 (5f974f72) 2012-08-27 Lars Uebernickel * Make sure the icon is cleared also when a source is removed (acc4b2a7) * Bring back the blue icon when a source is drawing attention (98f03a9d) * Install icons in the standard path (26e95dd5) * Remove unused #include (2e6208ec) 2012-08-25 Lars Uebernickel * Plug memory leaks: return value of g_menu_model_get_item_link is transfer full (ca5c4991) * Fix a memory leak and potential crash: ref_sink the widget, not the GMenu (d79f11b2) 2012-08-24 Sebastien Bacher * Backported fixes from trunk up to r291 (ae735e19) 2012-08-24 Lars Uebernickel * Make sure the time shown in the menu is always current (4376e3e3) 2012-08-24 Sebastien Bacher * Backported fixes from trunk up to r289 (46afe09c) 2012-08-24 Lars Uebernickel * Don't spam debug messages (8c307acb) * Request showing the chat section also when the app is not running (1396ab4d) 2012-08-24 Sebastien Bacher * Backported fixes from trunk up to r288, some of those are needed for the (ddf5e5f9) * Backported fixes from trunk up to r286, some of those are needed for the (1e2a94c1) 2012-08-24 Lars Uebernickel * Don't use '&' in variant format strings of g_menu_item_* calls (28c6d543) 2012-08-23 Lars Uebernickel * libmessaging-menu: fix g-ir-scanner warnings (195ec17a) * libmessaging-menu: re-register with the service if it restarted (423d61b3) * Make the panel plugin reconnect to the service when it restarts (802b1055) 2012-08-23 Sebastien Bacher * Backported fixes from trunk up to r284, some of those are needed for the bindings to work (f070076d) * New upstream version; debian/control: - set some conflicts on the old deprecated status provider binaries - updated Build-Depends; debian/control, debian/*.install: - drop indicator-status-provider-*, those are deprecated - new binaries for the libmessaging-menu librar. debian/libmessaging-menu0.symbols: - symbol file for the new library; Updated packaging to dh9, current standards (da454128) * drop deprecated transition fields (7290a3b4) 2012-08-23 Lars Uebernickel * libmessaging-menu: don't warn when removing a non-existant source (95aa2195) * libmessaging-menu: remove sources when they are activated (d519ebfb) * libmessaging-menu: annotate icon parameters with allow-none (dd134484) * libmessaging-menu: warn when desktop_id is NULL (instead of crashing) (52875e80) 2012-08-21 Sebastien Bacher * libmessaging-menu: fix export-symbols-regex (d0e1bf19) * Import upstream version 12.10.0 (9d8a4eea) 2012-08-21 Lars Uebernickel * Merge lp:~charlesk/indicator-messages/towards-q-redesign (695c1fb3) * configure.ac: remove unused variable (7272017b) * Bump glib and gtk dependencies (17d00fcd) * 12.10.0 (e3c2920c) * Update remaining license headers (ee34069e) * Merge lp:~larsu/indicator-messags/towards-q-redesign (374fa7bb) * Fix out-of-tree builds (for make distcheck) (5df53a2c) * Show icons in application and source menu items (7d036b65) * ImSourceMenuItem: show source detail (count or time) (699c7421) 2012-08-21 Charles Kerr * in app-section.c's activate_cb(), don't leak the GError if we can't launch (2f263058) * in app-section's app_section_set_app_info(), don't leak the nicks' actions (19f5fdbb) * in app-section.c's dispose(), clear the muxer object (1f621cbb) * sync with lp:~larsu/indicator-messages/towards-q-redesign (993109ac) 2012-08-21 Lars Uebernickel * Use a custom menu item for message source menu items (91eb0b1a) 2012-08-20 Lars Uebernickel * Insert new app items right before the "Clear" item (4e68daee) * Merge Charles' branch: fixes a memory and a signal leak; various neat cleanups (6e38f791) 2012-08-20 Sebastien Bacher * libmessaging-menu: only export symbols tha t belong to the API (234c3cb9) 2012-08-20 Lars Uebernickel * gtupleaction: set enabled to TRUE by default (b64ac4ed) * app-section: rename remote_menu to source_menu (ce52ecaf) * Export both static shortcuts also when the app is running (daec6bad) * Use a custom menu item for application items (00431496) 2012-08-19 Charles Kerr * in messages-service.c, make the functions create_action_group() and create_status_section() static (d34fb700) * when removing an application in messages-service, disconnect the notify::uses-chat-status handler (d62fb5bc) * in indicator-messages' indicator_messages_accessible_desc_updated(), don't leak the entries GList (666abf25) * in indicator-messages's dispose(), use g_clear_object() (5b852d2f) * add sanity checks to args passed in the public API (ade3b76a) * in app-section.c's dispose(), use g_clear_object() for priv.ids and priv.keyfile (302ec8cd) * add lars as co-author of app-section (75ae6cba) 2012-08-17 Lars Uebernickel * messages-service: disconnect all signals when removing a section (8be3201d) 2012-08-16 Lars Uebernickel * Remove unused #defines (b15076d8) * Set accessible description (statically to "Messages" for now) (2c2d1558) * panel plugin: remove unused global variables and struct (ceebc061) * Use the old libindicator API (2b1abaec) 2012-07-30 Lars Uebernickel * Add introspection support (e5c36650) * configure.ac: pass package name to AC_INIT (3765e902) 2012-06-29 Lars Uebernickel * X-MessagingMenu-UsesChatStatus --> X-MessagingMenu-UsesChatSection (4c1f8ad5) 2012-06-28 Lars Uebernickel * libmessaging-menu: use the (newly added) GTupleAction instead of GSimpleAction (8f2b343f) 2012-06-27 Lars Uebernickel * Only show chat section when necessary (37acacae) * Remove header from status section (6c93ee8e) * Sync chat status from and to clients (cc6cbf76) * messages-service.xml: remove unused methods and signals (d1492d66) * Use gdbus-codegen also for the server side messages service (193886f4) * indicator-messages.c: remove messages-service proxy (315c058b) * Add toplevel menu (579f3cbd) * Set status action when requested (9ebfba3c) * Disable "Clear" initially (eec8624c) * Make "Clear" work again (58bb62e4) * Add draws-attention flag to source actions (93db8c38) * Remove dependency on menu-factory (1caa3be4) 2012-06-26 Lars Uebernickel * app-section.c: get rid of unnecessary local item (4dc6e54d) * messages-service: move gmenu utility functions into gmenuutils.[ch] (be44bb86) * messages-service.c: move gsettings strv handling into gsettingsstrv.[ch] (10614617) 2012-06-25 Lars Uebernickel * messages-service.c: fix memory leak (82c08033) * messages-service.c: get rid of some global variables (f4c01bf8) * messages-service.c: get session bus asynchronously (cf241b32) * messages-service.c: removee unused includes (e500cbf3) * Remove status providers (3da349e3) * Set user_data that action handlers expect (b942b3f9) * Set action namespace on application sections (27dbefcc) * Put launcher and shortcut menu items into the same gmenu section (787dff35) 2012-06-20 Sebastien Bacher * Drop gtk2 build from the packaging since support for it was dropped in trunk, thanks Lars Uebernickel (f859e1f6) 2012-06-20 Lars Uebernickel * Remove gtk2 package and dependencies (0b8c133d) 2012-06-18 Charles Kerr * merge lp:~larsu/indicator-messages/lp1010122 to fix out-of-tree builds. (13f2b1bb) 2012-06-18 Lars Uebernickel * tests: pull generated files from the build directory (feffbc69) 2012-06-15 Lars Uebernickel * libmessaging-menu: add source name detail to "active-source" signal (40c73ac7) * Check parameter types in public API (ac1a11bd) * Add first version of a libmessaging-menu client library (78edb4ee) 2012-06-13 Lars Uebernickel * Don't install convenience library used for the tests (bc9cd727) 2012-06-08 Lars Uebernickel * Use autoreconf instead of gnome-autogen.sh (179a6a30) 2012-06-04 Lars Uebernickel * testing: use EXPECT_* instead of ASSERT_* (368b17f9) * gactionmuxer: more tests (0eda2f38) * gactionmuxer: check for NULL in public API (59b1408d) * gactionmuxer: remove unnecessary NULL check (0af65b6e) * Add coverage results to .bzrignore (9de8f2d7) * Link test against a static lib to clean up lcov reporting (26d7cfc7) * Update .bzrignore (a804cc56) * Test gactionmuxer more extensively (a2efe98c) * gactionmuxer: don't crash when no global actions are given (2c7ad392) * gactiongroup: don't remove items from the hash while iterating over it (fab2ebfc) * test: remove warnings in Makefile.am (duplicate vars) (2fee65e8) * Remove dummy test case (6ee454ec) * Add a first gactionmuxer test (7d4fcf06) * Include different header in test case to fix `make check` (3eb45ac8) * POTFILES.in: remove old file (0a82aeba) * Reexport application menu as a separate section below the shortcuts (cd8e4e8d) * app-section: replace G_TYPE_INSTANCE_GET_PRIVATE calls with a priv member (7eae3f37) 2012-06-03 Lars Uebernickel * Name actions after the shortcut nick instead of its label (806686a1) * gactionmuxer: allow passing a NULL action group to insert() (1a21c582) * Reexport application actions (98538a54) * Use ids instead of .desktop file names to identify applications (76b172f4) * Add GActionMuxer (6872c840) 2012-06-02 Lars Uebernickel * app-section: only call g_bus_unwatch_name if we're watching a name (a6d889c1) * Listen to menus exported by applications (7989e5c7) * Listen to actions exported by applications (21f3cac4) 2012-05-31 Lars Uebernickel * app-section: fix indentation (b4062c83) * Put the 'launch' action onto app's menu sections (eea45a44) * Rename AppMenuItem to AppSection (4f2dd60a) * Remove an application from the menu after it unregistered (0f9764c9) 2012-05-30 Lars Uebernickel * Allow applications to (un)register themselves from the messaging menu via d-bus (cb34c1a8) 2012-05-25 Lars Uebernickel * Remove dbusmenu dependency (83f04d7c) * Port to gmenu, act II - the indicator object (cd6da41a) * Update .bzrignore (9601275f) * appmenuitem: make app-info a construct-only property (982bf2ed) * appmenuitem: remove name-changed signal (2c113b49) 2012-05-24 Lars Uebernickel * Check whether supplied desktop files exist (54621a3d) * message-service: replace the server list with a hash table of appmenuitems (9763d347) * Don't support X-Ayatana-Messaging-Menu-Icon anymore (e3c0e704) * Port to gmenu, act I (e1c600ba) 2012-05-23 Lars Uebernickel * Merge launcher- and appmenuitems (8960bbaf) * Allow creating an app menu item without associated indicate server (92e361e3) 2012-05-22 Lars Uebernickel * app-menu-item: remove another unneeded priv variable (7b62b812) * app-menu-item: remove unneeded priv variable (73e65ee1) 2012-05-21 Lars Uebernickel * Allow creating AppMenuItems without initial listener / server (6d16700b) * Move build_launcher_core into build_launcher (5faae936) * Use a gsettings list for finding out which apps should appear in the menu (14716e2d) 2012-05-18 Lars Uebernickel * Remove the seen db (ab416588) * Remove default applications (583033cb) 2012-05-07 Charles Kerr * merge lp:~larsu/indicator-messages/remove-gtk2 to excoriate gtk2 dependencies from indicator-messages (e7376b8e) 2012-05-07 Lars Uebernickel * Remove gtk2 support (c144388a) 2012-04-26 Charles Kerr * merge lp:~allanlesage/indicator-messages/TDD to add Google Test autoconf rules (f938ab5b) 2012-04-17 Allan LeSage * Clarified tabination. (56a4d5f2) 2012-04-16 Allan LeSage * Removed obsolete testing configure. (9b11f86a) * Adjusted enabling tests to Charles suggestion (removed xyes=xyes). (00edffe6) 2012-04-11 Ken VanDine * releasing version 0.6.0-0ubuntu1 (f15c5112) * New upstream release. * Handle blank icons properly (LP: #956147) * Fix telepathy offline/disconnected state bug (b653825d) 2012-04-11 Charles Kerr * releasing version 0.6.0-0ubuntu1~ppa1 (9c4f53cc) * New upstream release. * Handle blank icons properly (LP: #956147) * Fix telepathy offline/disconnected state bug (3955a31a) * Import upstream version 0.6.0 (06d8dda3) * Sync from Ubuntu Desktop (3dfbea7e) * 0.6.0 (b4f82a39) 2012-04-10 Charles Kerr * merge lp:~larsu/indicator-messages/lp956147 to make the menu display a blank icon when appropriate (211accba) 2012-04-10 Lars Uebernickel * Use "blank-icon" instead of "" to make the menu display a blank icon (89a4ee82) * Revert fix for lp:956147, the same service binary is used for gtk2 and gk3 packages (6c831abf) 2012-04-09 Charles Kerr * merge lp:~ted/indicator-messages/telepathy-offline to make it so that when your session launches you're offline instead of disconnected. That way the items are visible and you can go online. (07adbf35) 2012-04-06 Ted Gould * Instead of using disconnected in MC5 use offline (b480c247) 2012-04-05 Ken VanDine * releasing version 0.5.95-0ubuntu1 (6d27b7d4) * New upstream release. * Fix 0.5.94 blacklist regression. * Fix broken icon images in Thunderbird (LP: #956147) (252f925b) 2012-04-05 Charles Kerr * releasing version 0.5.95-0ubuntu1~ppa1 (dbcfa95a) * fix merge error (848fcbb5) * fix merge error (2025ac02) * New upstream release. * Fix 0.5.94 blacklist regression. * Fix broken icon images in Thunderbird (LP: #956147) (2bef44d4) * Import upstream version 0.5.95 (1d55884e) * Sync from Ubuntu Desktop (67d2368e) * 0.5.95 (618e4635) (tag: 0.5.95) 2012-04-05 Lars Uebernickel * Merge the missing resort_menu fix (c58c7ebe) * messages-service.c: add missing resort_menu (f6c8b387) 2012-04-04 Charles Kerr * Merge lp:~larsu/indicator-messages/lp956147 to fix broken thunderbird message indicator icons. (5779b63a) 2012-04-04 Lars Uebernickel * Workaround for lp #956147: don't show empty icons in the gtk2 version (d0eae41a) 2012-04-04 Charles Kerr * Merge lp:~larsu/indicator-messages/fix-blacklist-again to revert blacklist changes so that apps relying on the old behavior will work again. (0a10a54c) 2012-04-04 Lars Uebernickel * messages-service.c: fix leak (f2aefd61) * Revert blacklist changes make apps relying on old behavior work again (564b5157) 2012-03-27 Allan LeSage * Pedantic name change for gcovr xml results. (77386961) * Merge of prior fixes for TDD tooling. (c9f1e283) * Also cleaning up coverage instrumentation (*.gcno) on clean-local. (5996de39) 2012-03-21 Ken VanDine * releasing version 0.5.94-0ubuntu1 (7250f0eb) * New upstream release. * Fix for missing icons in the messaging menu (LP: #960553) * Fix i18n for description (LP: #957525) * Implementing initial testing * Fixing blacklists (LP: #939258); debian/control: Adding dep on libgtest-dev (3b5f1f96) 2012-03-21 Ted Gould * releasing version 0.5.94-0ubuntu1~ppa1 (b6760ba8) * debian/control: Adding dep on libgtest-dev (ac858ff1) * New upstream release. * Fix for missing icons in the messaging menu (LP: #960553) * Fix i18n for description (LP: #957525) * Implementing initial testing * Fixing blacklists (LP: #939258) (cbcbe410) * Import upstream version 0.5.94 (7db5c147) * Sync up to Ubuntu Desktop (b4a2449a) * Sync to trunk (3891a6cb) * 0.5.94 (78519557) (tag: 0.5.94) * Ensure that we're not distributing any gtest sources (b90d0eba) * Fix to use the lib (213659f3) 2012-03-21 Allan LeSage * Reverted r268, restored BUILD_TESTS; ted explains upstream arch patch. (0e5b8f77) 2012-03-21 Charles Kerr * merge lp:~larsu/indicator-messages/fix-blacklist to fix lp bug #959258, messaging indicator not respecting blacklist (fb5a9c9e) 2012-03-20 Ted Gould * Fix blacklisting (30e379ee) 2012-03-20 Allan LeSage * Substituting build code under test lib for individual includes for example. (1985b73f) * Chase-recommended simplification of test-inclusion autoconf. (e4db178a) 2012-03-20 Charles Kerr * merge lp:~allanlesage/indicator-messages/TDD for automake cleanups and test-oriented fixes (3d7adc37) 2012-03-20 Allan LeSage * Tabs vs. spaces cosmetic change in configure.ac. (dcd64738) * Charles-suggested fixes for gmodule dependency. (4700a77b) 2012-03-20 Ken VanDine * releasing version 0.5.93-0ubuntu2 (2ac0106d) 2012-03-20 Allan LeSage * Makefile fixes for code under test lib. (f7d971a8) 2012-03-20 Charles Kerr * merge lp:~ken-vandine/indicator-messages/decode_icons to fix indicator-messages' support of displaying icons via set_property_icon() (6177dacd) 2012-03-20 Ken VanDine * base64_decode the icon and use dbusmenu_menuitem_property_set_byte_array to set it (LP: #960553) (e5fe465d) 2012-03-20 Allan LeSage * Attempt to build lib of code under test. (6251928d) 2012-03-19 Allan LeSage * Corrected a Makefile merge omission for tests, stripped down dummy test. (ab5696a7) * Merged TDD coverage tooling. (b379f9b1) * Consolidated PHONYs. (b5b2b08a) * Tested moving PHONY clean targets to top of Makefile. (b85b7c4a) * Made gcovr optional. (46ff1185) * Charles-advised changes to test/Makefile.am for proper CPPFLAGS. (25fcbef2) 2012-03-16 Charles Kerr * merge lp:~kelemeng/indicator-messages/bug957525 to fix Bug #957525 (d44451f3) 2012-03-17 Gabor Kelemen * Change i18n header to gi18n-lib.h to translate the accessible description. LP: #957525 (90432871) 2012-03-16 Allan LeSage * Experimental Makefile.am changes to support GTest. (a5695b6a) 2012-03-15 Allan LeSage * Temp commit for review by charles. (bacad6ee) * Dummy commit on 'no rule' err. (b11161a7) 2012-03-14 Lars Uebernickel * Use basename of the desktop file as key in the blacklist hash table (f39ce884) 2012-03-13 Allan LeSage * Merged; was missing Makefile.am.coverage. (7c4783ff) * Made gcovr optional. (a2fc906f) 2012-03-08 Allan LeSage * Moved coverage tooling to own Makefile; gcovr now optional. (435bd3b5) 2012-03-08 Sebastien Bacher * releasing version 0.5.93-0ubuntu1 (7a8f356f) * debian/control: - drop build-depends on gnome-doc-utils and scrollkeeper, not required (6ecaf106) * New upstream release. * Fixing alignment of menu items (LP: #939953) * Vertically centering alignment of double high items (LP: #770486) * Fixing setting of status on telepathy (LP: #943757) (4d7384e1) 2012-03-08 Ted Gould * releasing version 0.5.93-0ubuntu1~ppa1 (2cb10b4b) * New upstream release. * Fixing alignment of menu items (LP: #939953) * Vertically centering alignment of double high items (LP: #770486) * Fixing setting of status on telepathy (LP: #943757) (b047299e) * Import upstream version 0.5.93 (4b2b0165) * Merge from U. Desktop (82ed1671) * 0.5.93 (81c1bb4e) (tag: 0.5.93) * Fixing alignment of menu items (5c7191b3) 2012-03-08 Charles Kerr * merge larsu's lp:~larsu/indicator-messages/fix-770486 to fix LP bug #770486 (06180004) 2012-03-08 Lars Uebernickel * Collapse all whitespace in indicator menuitem labels (0ad5dafb) * Add empty icon-name to app shortcuts to indent them correctly (fbc21375) * Revert r244, there's only one padding (1db6a885) 2012-03-04 Charles Kerr * merge lp:~ted/indicator-messages/lp943757 to fix LP Bug #943757 (6af0284d) 2012-03-02 Ted Gould * Getting the temporary value into the wrong variable. (85bdc5a0) 2012-02-23 Lars Uebernickel * Use link targets as keys in the blacklist hash table (d92f5e23) 2012-02-23 Ken VanDine * releasing version 0.5.92-0ubuntu1 (e8c61c58) * debian/source/format - dropped "3.0 (quilt), it doesn't play well with bzr maintained packages (3e1b3a67) * New upstream release. * Fix goto handling (by removing) (LP: #937441, LP: #937438) * Tell accountsservice when user has messages for the benefit of LightDM.; Dropping debian/patches: Merged upstream (d8efd505) * unwind some quilt stuff (d46e5554) 2012-02-23 Ted Gould * releasing version 0.5.92-0ubuntu1~ppa1 (1cc048fc) * Dropping debian/patches: Merged upstream (316c67fa) * New upstream release. * Fix goto handling (by removing) (LP: #937441, LP: #937438) * Tell accountsservice when user has messages for the benefit of LightDM. (619fc6e3) * Import upstream version 0.5.92 (96982968) * Merging Ubuntu Desktop (03eb7d3b) 2012-02-22 Ted Gould * 0.5.92 (3e6ea0a4) (tag: 0.5.92) * Remove unneeded goto's and clean up the code (41fbb4b3) 2012-02-21 Charles Kerr * silence LP Bug #937438 - Coverity got confused by goto's and gave Coverity PW.BRANCH_PAST_INITIALIZATION - CID 10663 (b3a47ea6) * trivial: fix a comment typo (0961069f) * trivial: fix error message grammar (5d2abcf7) * trivial: fix comment typo (9e47cefa) * trivial: remove unnecessary cast (c83536fa) 2012-02-16 Michael Terry * tell accountsservices about whether the user has messages or not (16c0ed41) 2012-02-15 Michael Terry * add .pc directory too (9f20c997) * debian/source/format: - Make "3.0 (quilt). debian/patches/tell-accounts-service.patch: - Tell accountsservice when user has messages for the benefit of LightDM. (6bc1b1ca) * tell accounts service about message status (2241a4e5) 2012-02-14 Sebastien Bacher * releasing version 0.5.91-0ubuntu2 (f336ed98) * debian/control: build-depends on dh-autoreconf as well (93aa4c33) * releasing version 0.5.91-0ubuntu1 (b45bd021) 2012-02-14 Ted Gould * releasing version 0.5.91-0ubuntu1~ppa1 (60dc34cc) * Cleaning changelog (30b6e902) * New upstream release. * Better lozenges that look nice (80171344) * Import upstream version 0.5.91 (8d32c607) * releasing version 0.5.90-0ubuntu2~ppa1 (79834966) * 0.5.91 (f5e31a14) (tag: 0.5.91) 2012-02-10 Ted Gould * Fix lozenge code to compile on GTK2 (e6efd208) * Working on GTK2 as well (e2cc79a8) * Removing some GTK3 code, won't look as nice on GTK2, but eh (fea93b04) * debian/source/format: Dropping (c15d8aad) * debian/compat: 5 (191b6550) * debian/rules: Adding autoreconf and running make check (9f30d1ce) * Upstream Merge * Better lozenges that look nice (f42d9c20) * Update to U. Desktop (c822265c) 2012-02-10 Ken VanDine * releasing version 0.5.90-0ubuntu1 (95f39588) 2012-02-10 Lars Uebernickel * Use floor instead of round for lozenge position, better err on them being too large (60e7fb30) * Merge trunk (07a19cb9) 2012-02-10 Ken VanDine * New upstream release. * Adding code coverage targets * Match libindicate 0.6.90 * Updating for Dbusmenu 0.5.90 * Plug leak in launcher_menu_item_new * Fix memory leak: Free path string. * Compare server and path for multi-server clients * Using the new GTK3 box API to avoid deprecations * Adding a name hin. debian/control: Requiring libindicate 0.6.90 and dbusmenu 0.5.90 (1fc19f1f) 2012-02-10 Lars Uebernickel * Fix left margin of indicator items (981c01a3) 2012-02-09 Ted Gould * releasing version 0.5.90-0ubuntu1~ppa1 (081237a2) * debian/control: Requiring libindicate 0.6.90 and dbusmenu 0.5.90 (deb212c6) * New upstream release. * Adding code coverage targets * Match libindicate 0.6.90 * Updating for Dbusmenu 0.5.90 * Plug leak in launcher_menu_item_new * Fix memory leak: Free path string. * Compare server and path for multi-server clients * Using the new GTK3 box API to avoid deprecations * Adding a name hint (905aacfe) * Import upstream version 0.5.90 (6a357cab) * Merge from U. Desktop (aed2d009) * 0.5.90 (1f045f42) (tag: 0.5.90) * Adding code coverage targets (755287c4) * Match libindicate 0.6.90 (ff02cdb4) * Adjust configure to use indicate-0.7 (587d8140) * Updating for Dbusmenu 0.5.90 (60a21b65) 2012-02-09 Daniel d'Andrada * Plug leak in launcher_menu_item_new (484c86d1) 2012-02-08 Daniel d'Andrada * Fix memory leak: Free path string. (817be57d) 2012-02-03 Lars Uebernickel * Only draw right items as lozenges if they contain a count (54b82d72) * Don't draw empty lozenges (7595847d) * Make minimum width of lozenge that of two characters (85a365b2) * Switch to new dbusmenu includes (b8d31fd4) 2012-01-31 Ted Gould * Fixing dbusmenu-gtk include paths (cb9291c8) * Updating deb to dbusmenu-gtk 0.5.90 (98e11cbd) 2012-01-25 Ted Gould * Compare server and path for multi-server clients (02867e7e) * Using the new GTK3 box API to avoid deprecations (cf6b9e5d) 2012-01-25 Ken VanDine * releasing version 0.5.0-1ubuntu1 (4aacdd96) 2012-01-24 Ken VanDine * rebuild for libindicator7; debian/rules - build with no-error=deprecated-declarations (cde1efd7) 2012-01-23 Allan LeSage * Resovled self-inflicted merge conflict. (8ab834d8) * Added macro to gtk_hbox_new fix per charles' advice (and fixed tabination). (fa3ed93d) * Added macro to gtk_hbox_new fix per charles' advice. (79faa632) * Fix for gtk_hbox_new, werror on deprecated. (6de22d38) 2012-01-22 Lars Uebernickel * Align status icons with app icons (8e506f98) * Pixel-align the lozenge text to make it less blurry (c48bb097) * Center lozenge text vertically (a9e89356) * Get the menu's current font size instead of hard coding it to 12pt (0d029e38) * Don't force lozenges to have the same width (fbe01602) * Use gtk_box_new instead of gtk_hbox_new (b2b83a02) 2011-12-06 Allan LeSage * Added coverage reporting via gcov config and targets. (4f5f1e3e) 2011-12-01 Robert Carr * serverList_equal: We have to compare IndicateListenerServers by DBus path instead of just name. This fixes issues where one client (DBus name) will create two or more indicate servers. (6467734c) 2011-11-29 Ted Gould * Adding a name hint (d3f2a4b2) 2011-11-22 Ken VanDine * debian/control - set ubuntu-desktop VCS and maintainer (c5b94a62) * releasing version 0.5.0-1 (192c72bf) 2011-11-08 Marco Trevisan (Treviño) * Export the indicator name hint (1788ec9c) 2011-09-28 Ken VanDine * releasing version 0.5.0-0ubuntu1 (4be50448) * New upstream release. * Fix memory leak (LP: #690668); Drop debian/patches/lp_690668.patch: Merged upstream (2d915c45) 2011-09-28 Ted Gould * releasing version 0.5.0-0ubuntu1~ppa1 (b4e4cfad) * Drop debian/patches/lp_690668.patch: Merged upstream (1ca4f3a8) * New upstream release. * Fix memory leak (LP: #690668) (cf3acf86) * Import upstream version 0.5.0 (84a1d59e) * Merging Ubuntu Desktop (4052c0ed) * 0.5.0 (de931448) (tag: 0.5.0) 2011-09-21 Ted Gould * Memory leak on pixbufs (7e012db1) 2011-08-25 Ken VanDine * releasing version 0.4.95-0ubuntu1 (e4d9d411) * New upstream release. * Fix naming of "Clear" item * Fix alignment of items to there is a consistent gutte. debian/patches/lp_690668.patch: Updating (19a3d73c) 2011-08-25 Ted Gould * releasing version 0.4.95-0ubuntu1~ppa1 (b3c1899b) * debian/patches/lp_690668.patch: Updating (9b3ee3cd) * New upstream release. * Fix naming of "Clear" item * Fix alignment of items to there is a consistent gutter (22c49c1e) * Import upstream version 0.4.95 (ae8f3199) * Merge U.Desktop (7dc2668b) * 0.4.95 (a90cbe1c) (tag: 0.4.95) * Fix the gutters (78e33093) 2011-08-24 Ted Gould * Don't look up a style value we're not using (78470983) * Switching the padding to the toggle-spacing like the image menu item and using it at creation of the box (d1898c3e) * Removing unneeded header (8be78fec) * Remove an unused hbox in the application menu item (b554cbc8) 2011-08-22 Ted Gould * MPT's happiness is a feature (be50ba79) 2011-08-19 Omer Akram * s/Clear Attention/Clear (924dfb40) 2011-08-18 Ken VanDine * releasing version 0.4.94-0ubuntu1 (30d2dc3f) * New upstream release. ∘ Fix drawing of triangles and capsules in GTK3 ∘ Fix Emesene statuses (LP: #817504) (5f436c20) 2011-08-18 Ted Gould * releasing version 0.4.94-0ubuntu1~ppa1 (8ef35faa) * New upstream release. ∘ Fix drawing of triangles and capsules in GTK3 ∘ Fix Emesene statuses (LP: #817504) (40d3bd5a) * Import upstream version 0.4.94 (24ffe8be) * Merge from U. Desktop (5f16a749) * 0.4.94 (a0c9e600) (tag: 0.4.94) 2011-08-17 Ted Gould * Fix Emense statuses (69a39e64) * Fix drawing on GTK3 (7e62cf98) 2011-08-17 Andrea Cimitan * Whitespace (a97707f5) * Whitespace (11516084) * Fixes draw renderings in gtk+3 (a51afcd9) 2011-08-12 Ken VanDine * releasing version 0.4.93-0ubuntu2 (b4db5598) 2011-08-11 Ken VanDine * releasing version 0.4.93-0ubuntu1 (e8d7a960) * debian/control - Bumped build depends for libindicate to >= 0.5.90; debian/rules - Fixed configure arg for gtk version (8e3f1f3d) * New upstream release. * Add an item to clear the alert * Choose mail applications based on the default application * Clear based on middle click; Merge new upstream from Ubuntu.; Standards-Version: 3.9.2; Merge new upstream from Ubuntu.; Fix 0.3.11-0ubuntu3 changelog entry (missed a space), so that bzr builddeb won't go crazy (see Debian Bug #620242); Fix debian/copyright, was refering to libdbusmenu by mistake. (2d1a071b) 2011-08-11 Ted Gould * New upstream release. * Add an item to clear the alert * Choose mail applications based on the default application * Clear based on middle click (52de3eb2) * Import upstream version 0.4.93 (6deeec59) * Updating from Ubuntu Desktop (bfd66871) * 0.4.93 (3e347a0d) (tag: 0.4.93) * Migrating to libindicate 0.6 API (aa5e8309) 2011-08-05 Ken VanDine * releasing version 0.4.92-0ubuntu4 (191be4ed) 2011-07-31 Ken VanDine * releasing version 0.4.92-0ubuntu3 (a9296541) 2011-07-29 Michael Vogt * debian/control: - use conflicts against indicator-me (a7036472) 2011-07-29 Sven Baars * emesene: Change OFFLINE to INVISIBLE and add a new OFFLINE status (869364e9) 2011-07-22 Ted Gould * Add a clear attention menu item and attach it to middle click (0e09129f) * Make sure clear attention stays at the end (3fc0ec76) * No need to track the last separator as we now have a menu item below it. (6fdaf039) * Adding in the clear attention menu item (0eb92a10) * Making mail applications based on the default mail client not a hardcoded desktop file. (3a5ded26) * Use the G_N_ELEMENTS macro (a25a10c3) * Reworking found slightly to make clean up code nicer (68ed5c05) * Make sure to insert in the right locations (53fe1d84) 2011-07-22 Chris Coulson * Make all indicator entries appear after an applications shortcuts (6dcb3053) 2011-07-21 Ted Gould * Removing the menu item from the indicator (f525c9fe) * Responding to clear attention method by clearing the dot (3ef95ace) * Switching to calling a method instead of clearing in the indictor. (390e002e) * Removing Watch method as that's been moved to libindicator (for a while) (bace9e0b) * Adding a method to clear the attention (dbd11689) 2011-07-21 Chris Coulson * Honour the default mail client rather than hardcoding the Mail entry to point to Evolution (cb66d5b6) 2011-07-21 Marco Trevisan (Treviño) * Don't use g_return_if_fail in middle-click cb function (496912ca) * X and Y pointer position aren't supported anymore by libindicator (6cb0f2f7) 2011-07-19 Marco Trevisan (Treviño) * Added a "Clear notifications" menu as well... (f23ee31a) * Merge with upstream (38369992) 2011-07-17 Ted Gould * Merging from Debian (d7e5e470) * Merging Ubuntu Desktop (1abb5d8d) 2011-07-15 Ken VanDine * releasing version 0.4.92-0ubuntu1 (4181f829) 2011-07-14 Ken VanDine * install the dbus service (cd27d0b7) 2011-07-14 Ted Gould * Merge from U. Desktop (c4dc6844) 2011-07-14 Ken VanDine * debian/control - Added Replaces indicator-me - Added build depends for libtelepathy-glib-dev - Added new binary packages, libindicator-messages-status-provider-dev and libindicator-messages-status-provider. debian/libindicator-messages-status-provider1.symbols - Added symbols file (c05a2a32) * New upstream release. (4a7298e2) * Import upstream version 0.4.92 (e4522e40) 2011-07-14 Ted Gould * 0.4.92 (acbcc628) (tag: 0.4.92) * Adding status menu items to the messaging menu (83c4e7ba) 2011-07-13 Ted Gould * Adding copyright headers (e8384bb4) * Off by one error, because, well, this is a computer program and that's what happens. (753c2e40) * Allow the status provider directory to be overridden by an environment variable (cfe8a44d) * Handle users clicking on those silly menu items that we created. (cd0c6677) * Signal back that the icon should be updated (2a04996a) * Connect in to update the stati (2d5602d0) * Priming with the status separator (1bcc5cd6) * Putting status items into the menu (ca536289) * Ignoring the PC files (ac5886d4) 2011-07-11 Marco Trevisan (Treviño) * Reset the un-attention icon on secondary-activate over indicator (201ede58) * configure.ac: Use the "--with-gtk" option flag. (e67e7264) 2011-07-08 Ted Gould * Making a pkgconfig file for the status providers (3e9685c5) * Getting libindicator 0.4 support (7a1cef80) 2011-07-08 Ken VanDine * releasing version 0.4.91-0ubuntu1 (72417ad3) * New upstream release. * Update for libindicator 0.4 (7d474f8c) 2011-07-08 Ted Gould * releasing version 0.4.91-0ubuntu1~ppa1 (7b035822) * New upstream release. * Update for libindicator 0.4 (af97ade1) * Import upstream version 0.4.91 (869f563e) * Sync to U. Desktop (d3fd0cd4) * 0.4.91 (9fd47d87) (tag: 0.4.91) 2011-07-07 Ted Gould * Migrate to indicator 0.4 API (078a121c) * Bumping to libindicator 0.4 API (dde72e86) 2011-07-02 Ted Gould * The trailing slash makes distcheck fail. No really. (35732476) * Translate the strings in status-items (8a00a71f) * Ignoring some more (424bb6df) * Connecting a callback and cleaning up (8ae2a2a4) * Attach the module to the object and put them in the list. Now we're real. (22abed03) * Breaking the status provider base objec out into it's own library (0b32b5d8) * Loading the modules and getting an object (782c36c2) * Insure we're only loading .so's (d936a27b) * Call the status items build function (4aad2ce2) 2011-06-28 Ted Gould * Basic loadable modules (48737cc4) * Turning a directory into a bunch of idles loading status providers (15468aef) * Adding in an idle function for handling the directory. (1ee7d8dd) * Getting some static data and using it a bit to boot strap this data (8ee9f55f) * Adding in some helpers with building up all the status-items. (f1e975ba) 2011-06-28 Ken VanDine * releasing version 0.4.90-0ubuntu2 (98391ec7) 2011-06-22 Ted Gould * Commenting out the main function to make it more explanitory (cc600299) * Stealing all of the status providers from indicator-me so that we can use them here. (c6055d45) 2011-06-22 Ken VanDine * debian/control - Removed duplicate build depends (f18b3cdc) * releasing version 0.4.90-0ubuntu1 (a75ffde0) * New upstream release. * GTK 3 (c9b60a10) 2011-06-21 Ted Gould * releasing version 0.4.90-0ubuntu1~ppa1 (8fa33012) * New upstream release. * GTK 3 (3d2e1830) * Import upstream version 0.4.90 (39419547) * Merging in Ubuntu Desktop (7987a644) * 0.4.90 (4fed4ff3) (tag: 0.4.90) 2011-06-10 Ted Gould * GTK3 Changes (c36e62ca) 2011-06-05 Evgeni Golov * Standards-Version: 3.9.2 (c209314f) * Merge new upstream from Ubuntu.; New upstream release. ∘ Set the type before other variables to get default handling more reliable (LP: #723873) ∘ Add support for overriding the default icon with a specific one for the messaging menu (LP: #741068) (1198366a) 2011-05-26 Michael Terry * allow building with gtk3 (b1eb446d) 2011-04-07 Ken VanDine * releasing version 0.4.0-0ubuntu1 (5a4afec9) * New upstream release. ∘ Set the type before other variables to get default handling more reliable (LP: #723873) ∘ Add support for overriding the default icon with a specific one for the messaging menu (LP: #741068) (5a510f66) 2011-04-07 Ted Gould * releasing version 0.4.0-0ubuntu1~ppa1 (ad345629) * New upstream release. ∘ Set the type before other variables to get default handling more reliable (LP: #723873) ∘ Add support for overriding the default icon with a specific one for the messaging menu (LP: #741068) (fc06931a) * Import upstream version 0.4.0 (1111499b) * Sync to U. Desktop (d7650d10) * 0.4.0 (18d9d74e) (tag: 0.4.0) 2011-04-06 Ted Gould * Add support for a specific icon on the menu (1df0fbfc) * Attaching bug (d20e74d9) * Look for the override icon in the keyfile (d45817a8) * move ICON_KEY (de82ee23) * Create the keyfile for the application icon as well (3138814a) * Checking for the ayatana override in the keyfile (84cfe5c3) * Making it so that we store the keyfile as well. Sad we need to do this. (7d26151b) 2011-04-03 Evgeni Golov * Fix debian/copyright, was refering to libdbusmenu by mistake. (798de71d) 2011-03-31 Evgeni Golov * Fix 0.3.11-0ubuntu3 changelog entry (missed a space), so that bzr builddeb won't go crazy (see Debian Bug #620242) (bacba581) * Merge Ubuntu up to 0.3.92-0ubuntu3 (38a90ca6) 2011-02-24 Ken VanDine * releasing version 0.3.92-0ubuntu3 (cb170c0f) 2011-02-24 Ted Gould * Set the type before the other variables (34ffc06d) 2011-02-23 Ken VanDine * releasing version 0.3.92-0ubuntu2 (f6d9b256) 2011-02-23 Ted Gould * Make sure to set the type of the item before all the values. (1341d00c) 2011-02-17 Ken VanDine * releasing version 0.3.92-0ubuntu1 (650e729e) 2011-02-17 Ted Gould * releasing version 0.3.92-0ubuntu1~ppa1 (a5f40dd9) * debian/control: libindicator version 0.3.19 (e49e67cc) * New upstream release. * Adding in accessible description support (ed795785) * Import upstream version 0.3.92 (44da996a) * Merge U. Desktop (3bf1312d) * 0.3.92 (e2405bdf) (tag: 0.3.92) * Support for accessiable descriptions of the indicator (14c70cf5) * Removing an unneeded strdup (22fe0467) * Updating libindicator required version (699cb119) * Updating the description when we signal that it's changed (e1c268aa) 2011-02-17 Luke Yelavich * Store entry data in a variable so it can be freed after signaling an accessible description change, preventing a memory leak. (633b3400) * No need to use g_strdup, the variable is a const (a8a74bea) 2011-02-14 Luke Yelavich * Add accessible description support (cbf07a1b) 2011-01-28 Ken VanDine * releasing version 0.3.91-0ubuntu1 (418b38b4) 2011-01-27 Ted Gould * releasing version 0.3.91-0ubuntu1~ppa1 (db2f40e8) * debian/control: dbusmenu to 0.3.94 (b50c1299) * New upstream release. * Fixing the service file * Adding a log domain * Fixing type handler for dbusmenu 0.3.94 (8cdf3c88) * Import upstream version 0.3.91 (66add4a6) * Merge from U. Desktop (be3fd99f) * 0.3.91 (0ade6393) (tag: 0.3.91) * Upgrading to new type handler prototype (d6519fb4) 2011-01-26 Ted Gould * Grabbing Ken's branch too! (2a169fca) 2011-01-21 Chow Loong Jin * Memory leaks fixes (d063c76a) 2011-01-18 Ted Gould * Adding a log domain and fixing service file. (89410525) 2011-01-17 Ted Gould * Ignoring the generated XML (87f0afc7) * Adding in log domains (e659a394) * Fixing service file (1622e9fa) 2011-01-14 Ken VanDine * releasing version 0.3.90-0ubuntu1 (86741206) * rename the service to match the indicator (c43fda3f) 2011-01-14 Ted Gould * releasing version 0.3.90-0ubuntu1~ppa1 (fa55dded) * New upstream release. * GDBus Port * New libindicate and dbusmenu (d4cb0ec0) * Import upstream version 0.3.90 (129064cc) * 0.3.90 (ce5d31d5) (tag: 0.3.90) * ayatana.org to canonical.com (8e6bde52) * ayatana.org to canonical.com (beeedd03) * Switching dbusmenu and indicator messages (b4bd6350) * Prototype changes (e7586d7f) * Emitting signals for the connections (e7dd62a0) * Saving the connection (4ef2895a) * Swiching to our method function.. woot! (05e767ce) * Setting up the vtable and making it connect in (39268f3a) * Get the connection in the cool new style (490cde29) * Switching how we get our interface info (26ceab5a) * Switch to new dbusmenu signal prototype (c53751d0) * Type to session (5f18bbc4) * Switching the function callbacks (b141e4fe) * Changing the signal callbacks (e8ae8545) * Changing the creation of the proxy (4792855a) * Changing to get the interface from the included XML file (4729b567) * Switching over from using dbus-binding-tool to sed (05083ac8) * Switching the pkgconfig files that are used. (22481b09) 2010-12-09 Ken VanDine * releasing version 0.3.11-0ubuntu4 (a197f4eb) 2010-11-30 Ken VanDine * debian/control: package description spelling (LP: #658096) (cb46b117) 2010-10-20 Ted Gould * Merge in Ubuntu Desktop (a8475163) 2010-10-08 Ted Gould * Fix deprecations and ensure they're part of distcheck (9f9349d2) 2010-10-06 Michael Terry * avoid deprecated API (687ea648) 2010-09-23 Didier Roche * fix distro (8f21ee2e) 2010-09-22 Didier Roche * releasing version 0.3.11-0ubuntu2 (0730dc37) * Rebuild for libindicator ABI change (LP: #637692. debian/control: depends on latest libindicator-dev (7612de17) 2010-09-21 Ted Gould * Building ChangeLog and AUTHORS from makefile (fa787d7a) 2010-09-09 Ken VanDine * releasing version 0.3.11-0ubuntu1 (93269e2f) 2010-09-09 Ted Gould * releasing version 0.3.11-0ubuntu1~ppa1 (13152ea1) * Merging with Ubuntu Desktop (47a03615) * New upstream release. (f99fbdf5) * Import upstream version 0.3.11 (c6bc12c8) * 0.3.11 (e5203a9b) (tag: 0.3.11) 2010-09-03 Ted Gould * releasing version 0.3.10-0ubuntu1~ppa2 (22b5d7e6) * Upstream Merge * Fixing triangles by passing data to callback (LP: #623453) (a7e59170) * Pass the dbusmenu menuitem to the expose callback. (95229394) * Making sure to put the dbusmenu item in the callback (fe64f465) 2010-09-02 Ken VanDine * releasing version 0.3.10-0ubuntu1 (156847ab) 2010-08-26 Ted Gould * releasing version 0.3.10-0ubuntu1~ppa1 (7fcfb3fb) * New upstream release. * Shifting icons into the gutter and adjusting the arrow padding. (16566574) * Import upstream version 0.3.10 (80456379) * 0.3.10 (9a1fe3fa) (tag: 0.3.10) * Shifting the locations of the triangles and the icons. (bc7ad2e8) 2010-08-26 David Barth * adjusted position of the left icons and triangle overlay (e32c731f) 2010-08-24 Ted Gould * Removing some extra code that's not needed and ensuring the icon is always shown. (a58b07fb) * Only show the avatar if it is sent (42242361) * Removing the blank menu items (de84a760) * Set the image menu icon (adf2ffdd) 2010-08-12 Ken VanDine * releasing version 0.3.9-0ubuntu1 (6a172096) 2010-08-12 Ted Gould * releasing version 0.3.9-0ubuntu1~ppa1 (f85a065b) * New upstream release. * Remove parens from counts (3e582841) * Import upstream version 0.3.9 (c539a450) * Merging in Debian changes (6495728b) * Merging in Ubuntu desktop (29aa0ccd) * 0.3.9 (ada8fb9e) (tag: 0.3.9) * Removing the parenthesis (2fd2bf20) 2010-07-29 Ken VanDine * releasing version 0.3.8-0ubuntu1 (0e3f2551) * Import upstream version 0.3.8 (1fa02756) 2010-07-29 David Barth * 0.3.8 (657571f9) (tag: 0.3.8) * running apps triangle indicator overlay from Cimi (25309be4) 2010-07-29 Andrea Cimitan * merged dbarth's branch (3a39db61) 2010-07-29 David Barth * better aspect ratio for the triangle (29d8a891) * adjust the triangle size (59b9d6fe) * remove the old running app. icon (997a69df) * fix typos to build and clean up comments (32e8f9ff) 2010-07-29 Andrea Cimitan * remove the previous icon (07039865) * trailing whitespace (0fc555a7) * Draw a triangle on the left (47496501) 2010-07-29 David Barth * message counters are now rendered with a nice rounded background (777a5fa7) 2010-07-29 Andrea Cimitan * check if widget is really a widget before getting its style (from dbarth) (4aa39a73) * Ops, readded the label :P (c4baebd4) * Added rounded rectangles on the right (8712e709) 2010-07-22 Andrea Cimitan * Fixed position of sub menu indicators (the one with the counter on the right) (27df2717) * Added triangles on the left and new label design on the right. We still need to align not-active services but I don't have any clue on how to do this (e77cd1f8) 2010-06-17 Evgeni Golov * Standards-Version: 3.8.4. (36559fd9) * debian/copyright: - Convert to DEP5 format. - Add missing copyright holders of debian/. (b41594aa) * Update Vcs-* fields. (9638e845) * Update package description. (b59e99b9) * Homepage is at LP/indicator-messages, not -applet. (77f95727) * Merge from Ubuntu. Closes: #586132 (9c2824cd) * Merge 0.3.7-0ubuntu1~ppa1 from lp:~indicator-applet-developers/indicator-messages/ubuntu (c3eb6f36) 2010-05-21 Ted Gould * Dummy commit (13f4d0f3) * Dummy commit (cc23e16c) * releasing version 0.3.7-0ubuntu1~ppa1 (36209f6f) * New upstream release. * When loading desktop files check to see if they've already been eclipsed by an app. (LP: #549096) * Track better application shortcuts and ensure that they get removed when the application is. (LP: #539167) * Track blacklisted apps to ensure that the messaging menu hides when there is no app. (LP: #533021) (b1d05757) * Import upstream version 0.3.7 (f8236929) * Updating to Ubuntu Desktop (7ce06517) * 0.3.7 (2265824d) (tag: 0.3.7) 2010-04-28 Ted Gould * Patch from Kees to ensure the hashtable keeps its memory (4333b09a) 2010-04-28 Kees Cook * Allocate memory for hash table items (LP: #533021) (70e5dbee) 2010-04-19 Sebastien Bacher * releasing version 0.3.6-0ubuntu2 (75435503) * Upstream Merge * When loading desktop files check to see if they've already been eclipsed by an app. (LP: #549096) * Track better application shortcuts and ensure that they get removed when the application is. (LP: #539167) (4a18da41) 2010-04-17 Ted Gould * releasing version 0.3.6-0ubuntu2~ppa1 (f77f5550) * Upstream Merge * When loading desktop files check to see if they've already been eclipsed by an app. (LP: #549096) * Track better application shortcuts and ensure that they get removed when the application is. (LP: #539167) (a81b15ba) * Check for whether a desktop file is eclipsed when loaded. (2b49e0c0) * Ensure that we cleanup proxy items as shortcuts. (f4641dce) 2010-04-16 Ted Gould * Merging desktop (83fe2a94) * When adding a desktop file look through teh applications we have to check for eclipsing (e5e8f387) * Forgot to pass the object here. (e879cc91) * Handling the remove and add in separate functions. (76042f59) * Changing the changed signal to be added/removed so that we can make things even more fun. (5271a3e6) 2010-04-15 Ted Gould * Minor refactoring to make the logic clearer (5f4f845b) * Some debug messages when removing shortcuts (30b853ea) * It's possible the newroot could be NULL, and that's okay. (4501008d) * Negative debugging (8f37e4fd) * Some debugging messages (cb9d4b27) * Deleteing shortcuts on update if they need to be (292ef766) * Killing hte launcher shortcuts on exit as well. (497db368) * Removing the shortcuts when removing the application entry. (7c83491f) 2010-04-01 Sebastien Bacher * releasing version 0.3.6-0ubuntu1 (c1e8acc9) 2010-04-01 Ted Gould * releasing version 0.3.6-0ubuntu1~ppa1 (5d7af1a7) * New upstream release. (6bcd9399) * Import upstream version 0.3.6 (e6b07467) * Setting merge mode to false (4ec2b263) * 0.3.6 (a05571c9) (tag: 0.3.6) 2010-03-31 Ted Gould * releasing version 0.3.5-0ubuntu3~ppa2 (b2dcd605) * Upstream merge * Fixing several bugs with regards to visibility and placement if items and separators in the menu. (LP: #446914) (b872dc29) * Fixes to the placement of notifications and their visibility. Lots of lovely cleanups. (9cb54c4a) * We only want to increment the position if we didn't find an entry (3dcc91b1) * Dropping a useless warning (9c8c6c5b) * Actually, more correctly, that should be a weak ref. (6d2cbc37) * Fixing a mixed up signal name. Small memory leak. (59518d6b) 2010-03-30 Ted Gould * Making application items default to invisible, and only become visible if they get a valid desktop file. (36901661) * Ensuring that the visibility property is set on the application entries. (e82a1031) * Make the visibility of indictor items and separators follow the visibility of the application item. (b8013ea2) * Build the separator after checking to see which entry to use. That way we've always got one. (ee6bc3c9) * releasing version 0.3.5-0ubuntu3~ppa1 (d52f8101) * Bumping version, becuase well, we always want to be ahead in this branch.; Upstream merge * Changing the service management over to using libindicator services and service manager for robustness. (011bdc6e) * Merge with Ubuntu Desktop (09fca5c5) * releasing version 0.3.5-0ubuntu1~ppa2 (8167d4da) * Upstream merge * Changing the service management over to using libindicator services and service manager for robustness. (33fe5d1e) * Sync to trunk (16acf257) * Making the messaging menu use the service architecture. (e270510a) * releasing version 0.3.5-0ubuntu1~ppa2~service2 (131ce83d) * Upstream merge * Fix allocating multiple proxies * When connection drops drop new message indicator. (b4291f9c) * Making it so that we don't build two icon_proxies ever. (70f017d2) * Putting in a timeout to clear the icon if there were messages waiting when we lost the service. (6d602068) * releasing version 0.3.5-0ubuntu1~ppa2~service1 (b3354b5d) * Upstream merge * Changing the service management over to using libindicator services and service manager for robustness. (00b5a595) 2010-03-30 Sebastien Bacher * releasing version 0.3.5-0ubuntu2 (6d57604c) 2010-03-29 Ted Gould * Making the service into an indicator service. (4bb479d4) * Switching over to using an indicator service manager instead of setting up the proxies by hand. (7b473d8b) * Comments and formatting. (2d584dcf) 2010-03-25 Ken VanDine * releasing version 0.3.5-0ubuntu1 (be818d5d) 2010-03-25 Ted Gould * releasing version 0.3.5-0ubuntu1~ppa1 (fe62bca8) * debian/control: Increasing dbusmenu-glib dep to 0.2.8 (032c3937) * Upstream release 0.3.5 * Shift command items to line up with application names. (LP: #537312) * Track applications we've seen so that we can show "Set Up" text if we've not seen the app before. (27221524) * 0.3.5 (791ebdf6) (tag: 0.3.5) * Tracking which applications we've seen before. (1172358f) * Fail if we have init called more than once. Merge comment. (3fba0324) * Adding in support for shifting over command items (0c4c949c) * Increasing the dbusmenu required version to 0.2.8 (db45cc03) * Grab changes in app icons. (18b9b156) 2010-03-24 Ted Gould * Give us a minute before we write it out. (713c7d53) * When we're being reshown eval the label (53575832) * Ah, classic failure (9c0dd994) * Make this easier to test (0ba6028b) * Building us a file. (a357e73e) * More comments (6e638f60) * Copyright headers. (347750ba) * Some comments (10e67331) * Have a background process for writing out the seen DB (af3e958c) * Code to read in the keyfile (288cb93d) * Building a file name and checking if it exists. (b840c918) * Only build shortcuts if we've been seen before. (310a9a4b) * Checking to see if we've seen the application before choosing whether we have the name or the setup string. (f4b7762b) * Adding the new server to the seen database. (f4e0f727) * Building the seen db on init (e082f944) * Changing to be more of a singleton type of thing. Really that makes more sense. (9d667c37) * Making a basic interface for the seen database. (2597b609) * Allow for applications icons to change incase we haven't gotten the property yet. (ce879d3d) * Making sure command items are using blanks (2f691859) * Set the blank icon on proxy objects (9bda4f7c) * releasing version 0.3.4-0ubuntu1~ppa3 (28d358c7) * debian/changlog: Adding bug number to previous entry. next to their entry. (LP: #438526) (62d8d477) * releasing version 0.3.4-0ubuntu1~ppa2 (e37de877) * Upstream merge * Show which applications are running with a small icon next to their entry. (73a65b34) * Sync to trunk (a2598f33) * Making a small indicator on apps that are running. (9e0c0002) 2010-03-23 Ted Gould * releasing version 0.3.4-0ubuntu1~ppa2~running2 (ef62cc12) * Upstream merge * Fixing label * Removing unused files (a3fedf63) * Removing app-gtk-menu-item as it really wasn't needed. (ae623e94) * Looking for the right property (aad1a1cf) * releasing version 0.3.4-0ubuntu1~ppa2~running1 (b7cc9701) * Upstream merge * Show which applications are running with a small icon next to their entry. (ccaa01df) * Changing to use the new app type (6e0ae192) * Adds in an application menu item. (5b178064) * Replacing the count with the icon (68c5fd53) * updating to trunk (69cdd18f) 2010-03-18 Ted Gould * releasing version 0.3.4-0ubuntu1~ppa1 (6564d7dd) * debian/control: Updating requirement to libindicator 0.3.5 (b86c5931) * Upstream release 0.3.4 * Fix avatar spacing to match other menu items * Use standard libindicator icon handling in panel * Fix translation of non-running applications (LP: #540148) * Handling bools for requesting attention from apps * Changing microblogging to broadcast to match Me Menu (LP: #534952) (7bfc56b5) * Sync to Ubuntu Desktop (35f3fdb6) * 0.3.4 (bf2af66c) (tag: 0.3.4) * Make the avatar spacing same as the other icons in the menu (e6f517cb) * Use the standard libindicator icon handling (6ac3b19f) 2010-03-17 Ted Gould * Switch to using the image helper and drop design team size (d4ed651d) * Bumping libindicator version to 0.3.5 (4ec27fb5) * Setting the minimum allocation for the image to be the menu icon size even if there isn't any pixmap. (a9b385e3) * Putting padding between the items to make them pretty like. (568d4c63) * Fix to use translated string. (914a3561) * Grab translation for default name. (35402494) 2010-03-12 Ted Gould * Handling bools by getting a value for indicators requesting attention. (23322d0a) 2010-03-12 Ken VanDine * releasing version 0.3.3-0ubuntu2 (4f50f8df) 2010-03-12 Ted Gould * Switching the attention callback to using a value so it can correctly handle booleans. (49f05b3e) * String changes to match everyone else. (6d25e9e1) * Changing from microblogging to broadcast (99fc985b) 2010-03-05 Sebastien Bacher * releasing version 0.3.3-0ubuntu1 (9e9f4726) 2010-03-04 Ted Gould * releasing version 0.3.3-0ubuntu1~ppa1 (36edac8c) * Upstream release 0.3.3 * Changing names of default applications to generic names * Making icons of default applications match panel theme (1bd56d8b) * 0.3.3 (96e449c9) (tag: 0.3.3) * Putting in default icons for the default apps that are panel themed (ed955778) * Building a new base object for our menuitem (c02292c7) * Using the default icon in the application indicator as well. (ace1ea5b) * Making it so that if the app is default, it uses a generic icon. (2a150efd) * Adding in an icon lookup to the default apps db (15c04c9d) * Adding in a base set of icons from the gnome theme. (fa6fbedb) * Setting up default application names in the menu. (1cc1da9e) * Checking the default name on application items (586e053b) * Checking to see if we have a default name. (b446b6a1) * Keeping our desktop file paths safe. (3c0e73c7) * Copyright headers. (f1d31773) * Making the default applications strings translatable. (4049be62) * Adding in the setup function. (f405913a) * Refactoring into a helper (617a39e8) * Adding empathy and gwibber to the mix. (06fa866f) * Actually searching through the list (4665a089) * Adding a small little function to find default applications. (d63d3929) 2010-02-18 Ted Gould * Sync to Ubuntu Desktop (52f72635) 2010-02-18 Ken VanDine * releasing version 0.3.2-0ubuntu1 (70d3f9f9) 2010-02-18 Ted Gould * releasing version 0.3.2-0ubuntu1~ppa1 (f2de1dab) * debian/control: * libindicator build dependency to 0.3.3 * dbusmenu build dependency to 0.2.5 (701de5aa) * Upstream release 0.3.2 * Removing extra ref * Moving locally defined variable to use the one defined in the function to fix a NULL pointer. (lp: #518547) * Disconnect the count changed signal property * Adding static desktop shortcuts to application items * Adding dynamic application menuitems * Switching application menu items to remove descriptions and add in application icons (8fe010b2) * 0.3.2 (b9713df6) (tag: 0.3.2) * Adding in an icon to show the application as running (1be98894) * Changing the applications to have icons. (5a6010fd) * Update to ubuntu desktop (d1741b51) * Getting dynamic items from libindicate and dbusmenu (0bae7a38) * Adding in the ability to take static commands from a desktop file (70f52699) * Upping dbusmenu dep to 0.2.5 (8faa2e2c) * Bumping libindicator to 0.3.3 (7ad997f0) * Use the string allocate by g_key_file instead of creating a new one (aa159e9d) * Adding protection from data fields by checking to ensure they're AppMenuItems (06a4fba6) * Setting the listener to NULL after unrefing it. (536034bb) 2010-02-17 Ted Gould * Adding in an application-running icon (acf4ac49) * Put the icons into the active items. (256417a4) * Removing the launcher custom menu type (4149cfe2) * Switch to having a launcher be a standard item with an icon. (cac9ec78) * Do a resort after adding new items. (17b4a50f) * Did I ever talk to you about why I hate while loops? I have to stop using them. They just lead to bugs. (88f7d844) * Eh, forgot to flesh out the lists (1df34439) * If we already have children, make sure to process them right away. (0d8b02c5) * Adding some debug messages (bcc596a2) * Moving the shortcuts along with the app item (09c3405e) * Getting the shortcuts in, and handling changes of them. (aa1f0344) * Realized that we can't proxy the root as the items can't then have two parents, and they need to exist with a parent in the menu that we're building. So we have to leave the proxy items unparented until they get picked up in the service themselves. (072da6cc) * Adding a list to put the shortcuts in (3bd80ee8) * Oops, wrong signal name for this function. (7c08cb9a) * Emitting the new signal all over the place. (ed9e77cb) * Adding in a shortcuts changed signal (958bb92e) * Handling root item changes. Mostly. (de7363b6) * Init and cleanup the client and root private properties. (1728c0be) * Fleshing out menu_cb, lots of avenues for expantion in other directions now. (d307fee4) * Adding API for getting items (3c93168a) * Grabbing the static commands branch so we can build on it. (7fe4f584) * Explicitly setting the visible property so we call pull it later. (abedb35f) * Switching over to using _bool for the visible property (6a2abb99) * Adding the shortcuts into the menuhandling code. (c271f6db) * Fleshing out the get_items function (3d07cf16) * Applying the eclipsed value to the shortcuts that are associted with this launcher. (5da2f0c0) * Making visible use boolean properties. (05436b2d) * Responding to clicking on the shortcuts (ca4026ec) * Build us some shortcut menuitems (379d88af) * Adding in shortcuts and ids private variables. Full lifecycle. (cccb9bc5) * Adding a function to get the items that are in the desktop file. (890a69be) 2010-02-15 Ted Gould * If we see a keyfile, use the keyfile processing. (20698c32) * Spliting out the launchers into the keyfiles (2edf04c5) * Abstracting out the keyfile handling stuff. (0abfced4) * Adding in the ability to use keyfiles for the black list (9c60e056) 2010-02-09 Ted Gould * Property disconnect the count changed signal. (174f2c30) * Some comments. (dcdb9f78) * Disconnecting the signal handler attached to the listener when we go away. (5adf6408) 2010-02-09 Sebastien Bacher * releasing version 0.3.1-0ubuntu2 (6e032aaf) 2010-02-09 Ted Gould * releasing version 0.3.1-0ubuntu1~ppa2 (b2c751f0) * Upstream Merge * Removing extra ref * Moving locally defined variable to use the one defined in the function to fix a NULL pointer. (515b77cc) * Removing the in brackets creation of a variable that also existed in the function, thus creating a NULL pointer. (bfaf7c90) 2010-02-08 Ted Gould * Kids, ignore pot (2bb14b05) * Creating a local variable that was masking the one in the function. (6aa477f1) * Fixing debug message (985c87a1) * I shouldn't have to have a ref there as it's got a ref count of one. (0c9e0584) 2010-02-04 Sebastien Bacher * releasing version 0.3.1-0ubuntu1 (5747ab33) 2010-02-04 Ted Gould * releasing version 0.3.1-0ubuntu1~ppa1 (35115483) * debian/control: * dbusmenu* depends to 0.2.2 * libindicate* depends to 0.3.0 (edc53b83) * Upstream release 0.3.1 * Updates for dbusmenu 0.2.2 * Updates for libindicate 0.3.0 (da7cfbce) * 0.3.1 (8598ce72) (tag: 0.3.1) * Update to new dbusmenu 0.2.2 (8d80814f) * Fixing one more timestamp (30e28237) * Changing callback prototype and activate signals (0b90b8c1) * Upping to dbusmenu-gtk 0.2.2 (e54f6e66) 2010-01-11 Ted Gould * Updates from desktop team (9aa3c7ca) 2010-01-08 Ken VanDine * Upstream release 0.3.0 - Disabling static builds. - Porting to libindicator 0.3.0 - Adding translator comments from hours and minutes strings. (LP: #456437) - Upgrading to dbusmenu 0.2.0; debian/control: Updating dbusmenu dependency to 0.2.0; debian/control: Increasing libindicator-dev dependency to 0.3.0 (27152b30) 2010-01-08 Ted Gould * Merging in ubuntu-desktop branch (d39cc310) * releasing version 0.3.0-0ubuntu1~ppa1 (0d4e6169) * Upstream release 0.3.0 (91a0e55d) * 0.3.0 (dbb73cab) (tag: 0.3.0) 2009-12-22 Ted Gould * releasing version 0.3.0~dev-0ubuntu1~ppa3 (4ad585c9) * Upgrading to dbusmenu 0.2.0; debian/control: Updating dbusmenu dependency to 0.2.0~dev (734e2188) * Sync to trunk (8ce405b8) * Updating to dbusmenu v0.2.0 (ed2a9173) 2009-12-18 Ted Gould * releasing version 0.3.0~dev-0ubuntu1~ppa3~dbm1 (6fbe037c) * debian/control: Updating dbusmenu dependency to 0.2.0~dev (0ed356bf) * Upgrading to dbusmenu 0.2.0 (a9d46c6b) * Switching type to use the #define (2e661e35) * Switching the property callback to be GValue (e0fabde5) * Requiring the 0.2.x series of dbusmenu (ab54c529) 2009-12-15 Ken VanDine * debian/control - add a Breaks for indicator-applet (<< 0.3.0) (1fe4c86c) 2009-12-10 Ken VanDine * set release to lucid (83473aae) * merged from trunk (73633e84) * New snapshot for libindicator 0.3.0; debian/control - Build-Depends on libindicator >= 0.3.0 (89320896) 2009-11-16 Ted Gould * releasing version 0.3.0~dev-0ubuntu1~ppa2 (38a59145) * Disabling static builds. (5af60010) 2009-11-05 Ted Gould * Apparently order matters. (2b40fcfa) * Disabling static builds because we don't need them, and they seem to cause errors on amd64. (a23bd9f0) * releasing version 0.3.0~dev-0ubuntu1~ppa1 (93de674a) * Porting to libindicator 0.3.0; debian/control: Increasing libindicator-dev dependency to 0.3.0~dev (3d9e5a76) * Sync to trunk (6886b23e) * Moving to the libindicator 0.3.0 API (a083730b) 2009-11-04 Ted Gould * releasing version 0.3.0~dev-0ubuntu1~ppa1~update1 (9986d0c0) * debian/control: Increasing libindicator-dev dependency to 0.3.0~dev (a598083c) * Porting to libindicator 0.3.0 (cc872ffb) * Switching to the new indicator interface. (8d98d2bb) * Requiring the new libindicator (a39cd3fd) 2009-10-26 Ted Gould * releasing version 0.2.6-0ubuntu2~ppa1 (4c401b08) * Adding translator comments from hours and minutes strings. (LP: #456437) (aa9afb82) * Merging from Ubuntu Desktop (1d1f6683) * Adding translator comments for the hours and minutes strings. (d3266407) * Adding a translators comments for minutes and hours strings. (c64e0b65) 2009-10-09 Martin Pitt * releasing version 0.2.6-0ubuntu1 (b3905c8b) 2009-10-08 Ken VanDine * Upstream release 0.2.6 (LP: #446629) * Building the menu after checking the blacklist so that the separators are all correct. * Small fix for a perspective memory leak. (62da5967) 2009-10-08 Ted Gould * releasing version 0.2.6-0ubuntu1~ppa1 (80d2f2af) * Upstream release 0.2.6 (2683d63d) * Merge from ~ubuntu-desktop (f94218f9) * 0.2.6 (fcc8d6d2) (tag: 0.2.6) 2009-10-05 Ted Gould * releasing version 0.2.5-0ubuntu1~ppa2 (bcffbb85) * Building the menu after checking the blacklist so that the separators are all correct.; Small fix for a perspective memory leak. (bd11d266) * Making sure that the menu is calculated after it is determined after the black list is checked. (c346a614) 2009-10-04 Ted Gould * releasing version 0.2.5-0ubuntu1~ppa2~finalsep1 (8da35b49) * Resorting after checking blacklist (6b7b7a7e) * Resort the menu after the blacklist has been checked case we've black listed the last item in the menu. (735d17b4) 2009-10-01 Martin Pitt * releasing version 0.2.5-0ubuntu1 (dc5266b4) 2009-10-01 Ted Gould * Stupid ordering, just asking for a memory leak. (5bc25125) 2009-10-01 Ken VanDine * Upstream release 0.2.5 (LP: #440217) * Adding a check on addition of launchers to ensure icon is correctly visible. (LP: #433274) * Making it so that if applications don't set the time on an indicator the time isn't shown in the menu. (LP: #438237) * Putting icons in the right places. (LP: #436460) (57f9a422) 2009-10-01 Ted Gould * releasing version 0.2.5-0ubuntu1~ppa1 (85a2a232) * Upstream release 0.2.5 * Making it so that if applications don't set the time on an indicator the time isn't shown in the menu. (LP: #438237) * Putting icons in the right places. (LP: #436460) (deadf15e) * 0.2.5 (6065e9e4) (tag: 0.2.5) 2009-09-30 Ted Gould * releasing version 0.2.4-0ubuntu2~ppa3 (b9e0e60f) * Making it so that if applications don't set the time on an indicator the time isn't shown in the menu. (d55648ed) * Adding in a check to see if the time was set, if not, don't display it in the menu item. (d1cf2faa) * releasing version 0.2.4-0ubuntu2~ppa2 (092563e7) * Adding a check on addition of launchers to ensure icon is correctly visible. (LP: #433274) (c404c1a9) * Checking for icon status when adding launchers to ensure that we get the correct status. (1633eacb) 2009-09-29 Ted Gould * Making sure we don't update the text for the time if it's zero. (7acd91df) * Adding in a creation seconds and returning that if seconds isn't set. (cf185b65) * releasing version 0.2.4-0ubuntu2~ppa2~disappearingmenu1 (3cea4956) * Fix for the diappearing menu. (3385671d) * Checking to see if the menu should get un-hidden when we're installing new launchers. (74a0e321) 2009-09-28 Ted Gould * releasing version 0.2.4-0ubuntu2~ppa1 (a1af845c) * Putting icons in the right places (b4d1ec42) 2009-09-25 Ted Gould * Getting the path for icons from pkgconfig and putting them in the right location. (82f05a0c) 2009-09-24 Ted Gould * Using the new icon directory define. (1663b9c4) * Adding in a variable for the icon directory. (9871db50) * Merging in desktop branch. (7285bc99) 2009-09-24 Sebastien Bacher * releasing version 0.2.4-0ubuntu1 (1b176145) 2009-09-24 Ken VanDine * Upstream release 0.2.4 (LP: #436093) (1eace818) * Upstream release 0.2.4 - Merging in the min menu width feature (LP: #428292) - Merging in icon scaling branch from trunk. Now better icons (LP: #433143) - Merging in updated trunk (LP: #434097 and LP: #435184) - add i18n support - Prevent null entries (LP: #435184) - add a path for indicators in /usr/share (LP: #434097) (f9c7b3c0) * Merged: Ted Gould 2009-09-24 Making a 0.2.4 Ted Gould 2009-09-24 [merge] Merging in the minimum width branch to fix descriptions getting truncated when they're a reasonable length. Ted Gould 2009-09-23 Adding in a resort after editing the blacklist Ted Gould 2009-09-23 Too big Ted Gould 2009-09-23 Putting in teh size request a minimum width Ted Gould 2009-09-24 [merge] Merging in the icon scaling branch Ted Gould 2009-09-23 Forgot to scale on icon changing. Ted Gould 2009-09-23 Putting in a little code to scale icons. Ted Gould 2009-09-23 Version to kick LP Ted Gould 2009-09-23 [merge] Merging in branch to add a path for indicators in /usr/share and make it so that invalid desktop files don't create visible menu items. Ted Gould 2009-09-23 If we're not given a valid desktop file we should eclipse ourselves, and if we're eclipsed, we should hide the separator as well. Ted Gould 2009-09-23 Looking at the old system apps directory as well. Ted Gould 2009-09-23 Changing directory names Ted Gould 2009-09-17 Making a purdy 0.2.3 Ted Gould 2009-09-16 [merge] Merging in i18n branch to add i18n. Ted Gould 2009-09-15 Forgot intltool Ted Gould 2009-09-15 Adding in header for gettext Ted Gould 2009-09-15 Adding in some encoding to make things fun. Ted Gould 2009-09-15 Oops, teach me to cut and paste :) Ted Gould 2009-09-15 Making it so the po directory is connected in. Ted Gould 2009-09-15 Adding configure stuff in to set up gettext Ted Gould 2009-09-15 Adding a po directory with a list of files. Ted Gould 2009-09-15 Setting up the gettext stuff. (fd8f4f54) 2009-09-24 Ted Gould * releasing version 0.2.4-0ubuntu1~ppa1 (e8dd25f1) * Upstream release 0.2.4 (c69c9be4) * Making a 0.2.4 (6dc6c078) (tag: 0.2.4) * releasing version 0.2.3-0ubuntu1~ppa4 (c5c81749) * Merging in the min menu width feature (LP: #428292) (LP: #433143); Merging in updated trunk (LP: #434097 and LP: #435184) (21288436) * Merging in the minimum width branch to fix descriptions getting truncated when they're a reasonable length. (b6c2f1bf) * releasing version 0.2.3-0ubuntu1~ppa3 (bd2e6d3f) * Merging in icon scaling branch from trunk. Now better icons. (8e780dc4) * Merging in the icon scaling branch (ff637c41) 2009-09-23 Ted Gould * releasing version 0.2.3-0ubuntu1~ppa3~minwidth2 (43bc2a02) * Small bug with the blacklist not resorting. (486fb162) * Adding in a resort after editing the blacklist (4a804cf6) * releasing version 0.2.3-0ubuntu1~ppa3~minwidth2 (939acf57) * Too big (e26bc35e) * Too big (3d2040f3) * releasing version 0.2.3-0ubuntu1~ppa3~minwidth1 (37fdf7e8) * Putting in a min-width for launchers (85bade06) * releasing version 0.2.3-0ubuntu1~ppa2 (feb81dee) * Merging in updated trunk (258cbdd7) * Putting in teh size request a minimum width (a8ccb31f) * Version to kick LP (ab65f0c5) * Merging in branch to add a path for indicators in /usr/share and make it so that invalid desktop files don't create visible menu items. (bb87ac31) * releasing version 0.2.3-0ubuntu1~ppa2~icon2 (501d786d) * On changing values as well... (f040dff2) * Forgot to scale on icon changing. (fcda1c20) * releasing version 0.2.3-0ubuntu1~ppa2~icon1 (27b1c17d) * Merging in icon scaling code. (2028ebaa) * Putting in a little code to scale icons. (5a40fa08) * If we're not given a valid desktop file we should eclipse ourselves, and if we're eclipsed, we should hide the separator as well. (eddfb1ce) * Looking at the old system apps directory as well. (4f1a8334) * Changing directory names (fdc70a0d) 2009-09-17 Ted Gould * releasing version 0.2.3-0ubuntu1~ppa1 (8d9485c5) * Upstream release 0.2.3 (c99553f4) * Merging in the desktop branch. (6e72241e) * Making a purdy 0.2.3 (40a0102f) (tag: 0.2.3) 2009-09-16 Ted Gould * Merging in i18n branch to add i18n. (ddff85ec) 2009-09-15 Ted Gould * Forgot intltool (62a04779) * Adding in header for gettext (20dddacb) * Adding in some encoding to make things fun. (b196e9b6) * Oops, teach me to cut and paste :) (17df48a6) * Making it so the po directory is connected in. (edd18985) * Adding configure stuff in to set up gettext (a96ee29b) * Adding a po directory with a list of files. (a1c5c2a7) * Setting up the gettext stuff. (fe35fc4c) 2009-09-15 seb128 * releasing version 0.2.2-0ubuntu2 (f120bb1a) 2009-09-15 Sebstien Bacher * Patch from Seb to init localization (7587fb13) 2009-09-10 seb128 * releasing version 0.2.2-0ubuntu1 (93c3a770) 2009-09-10 Ken VanDine * Adds in separators between application groups (65744dcc) * set to UNRELEASED (452c5dd2) 2009-09-10 Ted Gould * releasing version 0.2.2-0ubuntu1~ppa1 (87a4cbf7) * Upstream 0.2.2 release * Adds in separators between application groups (ef890ecf) 2009-09-10 Ken VanDine * New release (LP: #427357); Merging in v2-api stuff which will become 0.2.1; debian/control: - Requiring > 0.2.0 of libindicate-* - bump dbusmenu dependencies. (72003f10) 2009-09-10 Ted Gould * Going 0.2.2 (a30c0ed9) (tag: 0.2.2) * Adding in the separators (36d27348) 2009-09-09 Ted Gould * When removing an application item we need to get rid of its separator as well. (7574e509) * releasing version 0.2.1-0ubuntu1~ppa2 (5439c24a) * Merging in the official 0.2.1 tag. (f7e7833e) * Adding indicator-messages.service to the clean files for distcheck. (6c2c36c8) (tag: 0.2.1) * Making 0.2.1 (1ca4796e) * Merging in the time init stuff into this branch so that it gets into this code review. (604a104f) * Switch to checking the separator by keeping track of the last one incase there are a bunch of launchers that are eclipsed at the end of the list. We'll have too many cases, it's easier just to see who we unhide. (5a886cf7) * Check eclipse to see if we should make indicators visible or not. (f47cd3ea) * Hiding the last item on the list depending on who is last. (14e60e91) * When eclipsing a launcher we're hiding it's separator as well. (bf8b4413) * Putting the separators into the resorting of the menu. (e1230edc) * Handling separators on launchers. (240672fb) * Initializing local imList_t objects. (17ac8a0e) * Forgot to initialize a separator. Also initializing the locally defined server objects to make it easier to find bugs with not setting stuff. (83d7d67d) * Making the server separator and putting it in. (0ff6a4d2) * Updated to current trunk. (7623fd99) * Merging in the other packing branch, just to get everything tied back in. (e56d50b3) * releasing version 0.2.1-0ubuntu1~ppa1 (a868b493) * debian/control: Requiring > 0.2.0 of libindicate-* (6b864bf4) * debian/control: Requiring > 0.2.0 of libindicate* (6447d40f) * Merging in v2-api stuff which will become 0.2.1 (52dbb0b2) * Setting the default seconds to be the current time. (d7a27576) * Putting the dbus service (correctly) in the libexec directory instead of the bin directory. (3891bd9f) * Adding in the local install flag to make that distcheck passes. (5c8de01d) * Update to the v2 API and getting the majority of 423013. (81f62010) 2009-09-08 Ted Gould * releasing version 0.2.0-0ubuntu3~ppa2~newapi4 (159030f1) * LANG=en_UK Bloody Hell (0447f7fc) * Bother. (5613a292) * releasing version 0.2.0-0ubuntu3~ppa2~newapi3 (34c22ed4) * Changing items support (e12e4c0d) * Checking the wrong variable, let's not get caught by those legacy guys ;) (c16260bb) * Adding in support for properties changing on the indicator menu item on the visualization side of things. (99075685) 2009-09-05 Ted Gould * releasing version 0.2.0-0ubuntu3~ppa2~newapi2 (77865dfe) * Fix for the changes in libindicate (fixes) (9ce69763) * No atoi, no stdlib.h, that's how it is. (e7abefb0) * Fixing as I fixed the libindicate API, we shouldn't have to do an atoi here. (29ae116e) * releasing version 0.2.0-0ubuntu3~ppa2~newapi1 (681023b3) * Merging in changes for the new libindicate API (74239a00) * Setting up the listener signal to make it so that we know when the count changes. Using the property call back and just calling that function. (a0816227) 2009-09-04 Ted Gould * Updating to latest trunk (f585e51a) * Replacing type with count (6533f296) * Removing the count on the label boolean as we're detecting that differently now. (3e060f4b) * We don't need to be tracking the added and removed signals for indicators anymore. (13108917) * Fleshing out indicator changing the attention parameter. (d03f5dfa) * Connecting into the attention signal. (f7cbbad8) * Processing the attention when an indicator leaves the building. (bbbc78a5) * Comments. (01e4df1d) * Fleshing out checking server attention by looking at all the indicators. (8e7605cf) * Initializing count (30926ecc) * Oops, a little silly before. We really need to check the indicators as well, we can't just clear the attention for the count value. (2a87b9c4) * Reworking how we handle the server count changing and how that makes us check for attention now. (467063d1) * Adding an attention parameter to the server and initing it. (addb7fac) * If the item was shown, and we're in an overload case, we need to find someone else to show when we're dying. (cb98b75a) * Adding in a small function to access the show variable. (e8505fb5) * Hiding the items that go over our bounds. That's how it is. Hard, hard, limits. (cecbadf9) * Defining the max number of indicators and telling the server about it. (e16fd985) * Setting the property on the dbusmenu menuitem as well (486c49f1) * Adding in a show state. (44fddda8) * Fleshing out the attention_cb to make it record the value and signal on changes. (e740035a) * Adding an attention variable and a function to access it. (9533ec19) * Adding in a signal for when the attention changes. (c3637d88) * Fleshing out the count item (5ce56eed) * Ask for all the properties up front. (567920a0) * We're tracking count instead of whether we should show the time as a boolean. (1b860bf5) * Making the sender support the name attribute and clean up the code a bit. (5c2ee1f5) * oops forgot to remove type from the modified one, oops. (43f6131b) * Well, you know, Oholoh says that I don't comment enough. Better put some more in. (1b0210cb) * Changing the properties to be the indicate v2 ones. Mostly this involves adding extra properties at this point. (afd7c069) * Removing the indicate-gtk headers. (47eff60c) * Dropping dep on indicate-gtk, we don't need it now that we're just passing the image data on. (b5f190ff) * Converting this over to an indicator menuitem. (b6cc96c3) * Fleshing out the indicator item. It's purdy. (31a318bf) * Making sure these don't conflict with ones already in usage. (7f0f735b) * Adding properties for the new menuitems we need to build for showing applications and indicators. (93ed77b9) * releasing version 0.2.0-0ubuntu3~ppa1 (160f7ecc) * Bumping version after ~ubuntu-desktop merge. (3f6ddfbc) * Merging in ~ubuntu-desktop version (f46b7d6d) * releasing version 0.2.0-0ubuntu1~ppa3 (7cd41584) * debian/control: Increasing Dbusmenu dependencies. (61f89ef0) * Upstream usage of new Dbusmenu 0.1.1 defines. (23f91a6d) * Bringing up to use some of the new features and defines in DBusmenu 0.1.1 (366dbb54) * Removing the type from the indicator_removed function. (c63d0680) * We have to drop show_time as a parameter as the caller doesn't really know if that's the case or not anymore. (58554159) * Reshuffle. Now the creation of an indicator makes for a im-menu-item without looking at type and subtype at all. We'll have a bunch more now. (daf90eeb) * libindicate dependency was already 0.2.0, but marking this as the case in the version history. (7e3b3dee) * Merging in the dbusmenu011 branch. I think I got other trunk updates as well. (506e943a) * A variable and a prototype. Such is life. (a04a5e11) * Fixing a header and some defines. (51e1ef97) 2009-09-03 Ted Gould * Using the defines fo dealing with the icons and using the generic image type. We're just passing along the PNGs right now. (00477062) * Using defines for visibility. (77ad7a72) * Upping dbusmenu version (8f44a2f0) 2009-08-27 Martin Pitt * releasing version 0.2.0-0ubuntu2 (08950ede) * debian/control - Bump build depends on dbusmenu to 0.1.0 (f4cdb2b4) 2009-08-27 Ken VanDine * debian/control - Bump build depends on dbusmenu to 0.1.0 (81ad2a5a) 2009-08-27 Ted Gould * releasing version 0.2.0-0ubuntu1~ppa2 (d741bc65) * debian/control: Adding dependency information for libdbusmenu to say >= 0.1.0 to match upstream build system. (de969e99) * Upstream update to dbusmenu dependency. (b413328f) * Updating to dbusmenu 0.1.0 as a versioning snafu got involved. (48c1827c) 2009-08-27 Martin Pitt * releasing version 0.2.0-0ubuntu1 (67b530c0) * debian/control: Update Vcs-Bzr: for new branch location. (be148ab2) 2009-08-27 Ken VanDine * Reverted bad merge (855565ec) * Updated watch file (ed568d1e) * set to UNRELEASED (b405c4f2) * Update to fix build issue; Fix to dereference the application menu items correctly so that the signal handlers are dropped as well. (lp: #410251) (5a36e579) 2009-08-27 Ted Gould * releasing version 0.2.0-0ubuntu1~ppa1 (b60635ec) * debian/watch: Changing to use indicator-messages project. (909134e0) * Upstream version 0.2.0; debian/control: Adding dependency information for libdbusmenu to say >= 0.0.2 to match upstream build system. (ea7d8ed8) * Changing to version 0.2.0. We need a release sometime. (9490242a) (tag: 0.2.0) * Merging in a branch that updates to the new dbusmenu but also uses it to add a custom launcher item. (3f3da424) * Checking args from libdbusmenu, stealing code from there. Comments by Neil. (86cab293) 2009-08-26 Ted Gould * Merging in the menu update branch. (43fffd84) * Attaching a bug to a branch. (db3b38d0) * This stuff is crashing big time now. Not sure why it worked before, but not going to look into it now. (6af9df41) * releasing version 0.2.0~bzr126-0ubuntu1~ppa3~menuupdate2 (8b9fbbb4) * Style baby! (de993414) * Adding a little style to our labels. Hopefully making them look a little nicer. (1077ceea) * releasing version 0.2.0~bzr126-0ubuntu1~ppa3~menuupdate1 (f4a85805) * debian/control: Adding dependency information for libdbusmenu to say >= 0.0.2 to match upstream build system. (a389ed21) * Merging in changes that are made possible via an update to the dbusmenu libraries. (442d69cb) * Use that handy get_description function that we just merged in. Heh, wonder why we did that... (d08632f2) * Merging in the lift-and-separate branch to get the description function on there. (11f25319) * Setting the type of the item and app name (2273a4d1) * Filling in the new launcher menu item (bab6bd25) * Pulling the type and the properties into the shared DBus header. (96d5cada) * Injecting in a type for the launchers. (bb8dfce7) * Making ourselves a variable in the middle of everything. (983f8353) * Replacing the prop strings with defines (9449d49b) * Locking to version 0.0.2 to use some of the new nicities (48201697) * show -> visible (8078204a) * releasing version 0.2.0~bzr126-0ubuntu1~ppa2 (e97420bc) * Merging in branch to make it so that the 'green dot' works again and that the icon will hide with no entries. (e302e7d9) * Merging in changes to make the green dot appear and the icon hide when no one is there. (ec04bfc2) * Adding a get_description function (21caab3e) * Adding the green dot bug onto the branch. (b40cfc60) * releasing version 0.2.0~bzr126-0ubuntu1~ppa2~dot-and-hide6 (d0188fb8) * Fixing logic for hiding the icon (fa36210d) * Some debug messages and checking the list length, but most importantly, got the show/eclipsed logic backwards. (7f0a072a) * releasing version 0.2.0~bzr126-0ubuntu1~ppa2~dot-and-hide5 (8722e7bd) * Hide the icon, with logic. (0ec0fbd9) * Checking hidden when servers are added and removed as well. (a13c1cb4) * Putting in the hiding logic (d9debb0b) * Adding in teh ability to count the number of launchers that are visable (81ad298a) * releasing version 0.2.0~bzr126-0ubuntu1~ppa2~dot-and-hide4 (379ea85a) * Registering the signals first. (31cbc3e0) * The documentation clearly states that you don't need these if the client supports introspection. I thought I was being old school by still putting them in. But, THE DOCUMENTATION LIES, you need to add the signals no matter what. (0f990e5a) * releasing version 0.2.0~bzr126-0ubuntu1~ppa2~dot-and-hide3 (ab404ca3) * Updating service file. (11011c36) * Forgot to change to Ayatana (f551d260) * releasing version 0.2.0~bzr126-0ubuntu1~ppa2~dot-and-hide2 (194a90d3) * Upstream fix. (b800e14e) * Bad name (843a145b) * Bad name, fixed. (fe891765) * releasing version 0.2.0~bzr126-0ubuntu1~ppa2~dot-and-hide1 (6916fae6) * Merge from dot-and-hide branch (bfc3017b) * Setting the attention parameter in the dbus interface. (bd24e022) * Legal crap. (cffb400b) * Oh, wow, now there's some flesh on these. Let's hide and show icons. (7c407863) * Setting up signals and callbacks, oh my! Watch for lions. (91fa6c67) * Building a proxy... (03ca8ad9) * Okay, now we're signaling change. (3e09c01a) * Making some signal lovin' (964062bd) * Adding the basic set functions into the C files. (4b1b97c7) * Some comments. (9efbade0) 2009-08-25 Ted Gould * Bringing up the object and having some variables to access. (96b2dc1c) * Creating a real object and initing it. (2b7746e2) * Building an object to represent the service over DBus. (e7695d9f) * Adding in a new dbus interface. (8601a2b1) * Switching to ayatana.org and adding a new name for the service as a whole. (7258fe52) * releasing version 0.2.0~bzr126-0ubuntu1~ppa1 (c4a054f9) * Merging in upstream version with launchers, blacklists and directory watches. (b97466de) * Merging in the directory watch branch. (81560d65) * Checking to see if error is null before looking inside it. (19f312f6) * Merging in the black list branch. (d39d78f3) * Merging in the dirwatch branch (dfc4d6f1) 2009-08-22 Ted Gould * releasing version 0.2.0~bzr121-0ubuntu3~ppa2~dirwatch1 (ebb5c487) * Updated from the dirwatch branch (b0b6d92b) 2009-08-21 Ted Gould * Now we're really killing these puppies! Don't cry, they weren't cuddly puppies. (acf05471) * Fleshing out the first part of destroy, in that we're just removing an item from a list. (286c51ca) * Relinking back to trunk. (cb41a4d0) * The launcher creation didn't test to see if it already exists. Now we keep one launcher per desktop file. Makes sense, eh? That's what we're going for. (1827c88f) * Start responding to changes in the applications directories (50a2c4e0) * I'd have to say that hash_table_find didn't do what I expected, and is pretty useless. (51992ee5) * Fleshing out remove to try to get rid of all these blacklist items. (10a149cf) * Turning blacklist dir changes into events (33e07dab) * Updating to trunk (332b090d) * Adding in support for launchers (b42f05f6) 2009-08-20 Ted Gould * Basic code to monitor the directories (79f4b7e5) * Adding in black list support (acdf23df) * Adding the user APPS directory to the places where we can find applications (ce045e0d) * Switching the build to take the directory as a parameter (33f40e13) * Some debug and fixing checking the desktop file. All good. (f41d2527) * Now parsing the directory on start up. Getting this whole thing started up. (e5d4b846) * Writing the fairly extensive and complex check function. But, if that's the way it needs to be, I guess it needs to be that way. (333467a2) * We're taking ownership of that variable as well (cc75cbe1) * Fleshing out the add function. Just a little. (528c3737) * More of a basis for the black list stuff. Some functions and an interface. (ee713f22) * Adding in some seperators to make things more clear. (75469435) * Adding in a couple of blacklist check point. (b0f699b4) * Merging in the launchers branch (5b71456f) * Should be in milliseconds not micro (da36b66e) * Use a GDK app context. Not sure about the timestamp units though. (8483b2d9) 2009-08-19 Ted Gould * Oh, some debug messages to see what's going on. (c49644e5) * Ah, where casting kills. You can cast anything to the right value even though it's not. Nice opaque errors you get for that. (db8ada09) * Big commit. Trying to check for eclipses, but first both objects needed to track their desktop file paths. So I had to add that little nugget in as well. (17745461) * Adding an eclipsed function for the LMI (99744b30) * Clean up, clean up, everybody everywhere (de5f8b02) * Adding in a couple function to deal with disappearing launchers. (b8adb87b) * Adding in the activate logic so that the menu items actually launch the application. (cfb0854e) * Adding the launcher list to the resorting function. This looks more complex than it is, it's just merging the two lists on the fly in alphabetical order. (74df2c7e) * Making this file a little more readable. Eh, I guess you never plan on them getting this big when you start do you? I remember when he was just a little automake file. (72be94fd) * Missing a couple headers for distcheckness (dbba757b) * Getting launchers to add to the menu, and changing the function to do that so it's not all server based. We want everyone involved now. (5fdfdc00) * Setting the label of the menu item. (69a56991) * Lots of debug, but also cleaning up the desktop file name path so it gets properly into the constructor. (29ce275b) * Oops, forgot one level of redirection here (a32eba90) * Spliting out the building of the items as it'll read the desktop file off disk and parse it. (23e2cdf7) * Go through the launchers and start building items (24cd5919) * Not sure why, but the naming of this file is really bugging me. Fixed now. (d44ae676) * Adding in a new menu-item type. One for launchers! Woo Hoo! (83836f58) * No reason that all these should be linked into the loadable module. Err, fail. (f0269893) * Adding the basis for launchers (aed88cf2) * Adding directories. Let's put them in one file so that they'll be changable easy :) (1656fcc2) * AM 1.11 silent rule (ba21dc63) 2009-08-05 Ted Gould * Merging in Jonathan's updates (34d5ad13) * releasing version 0.2.0~bzr121-0ubuntu1~ppa5 (a40e3fdf) * Fix to dereference the application menu items correctly so that the signal handlers are dropped as well. (397fa1de) * Fixing the messaging indicator to unref the menu item, which removes the signal handlers. (10327267) 2009-08-05 Jonathan Riddell * Run autogen.sh before upload (253b523c) * fix changelog for upload (2a1646f0) * merge current package for upload, https://code.edge.launchpad.net/~indicator-applet-developers/indicator-applet/messages-packaging/+merge/9670 (da961bf7) 2009-08-04 Ted Gould * releasing version 0.2.0~bzr121-0ubuntu1~ppa4 (d20d4bf2) * debian/control: Adding in a build dep on libindicate-gtk-dev (3404829a) * releasing version 0.2.0~bzr121-0ubuntu1~ppa3 (0be2ef1e) * Changes for the changing libindicate stuff. (40737b19) * indicate-gtk changes that are required (67a5dcae) * releasing version 0.2.0~bzr121-0ubuntu1~ppa2 (f84870d0) * Forgot to run ./autogen.sh (5bbf6692) * releasing version 0.2.0~bzr121-0ubuntu1~ppa1 (fb1effdf) * Merge in the dbusmenu changes from the dbusmenu branc. debian/control: Adding in a build dependency on libdbusmenu-glib and libdbusmenu-gtk to catch up with the merge. (7beaa95d) * Merging in the branch that pulls in the dbusmenu changes that change to using a service. (b9910337) 2009-07-17 Ted Gould * releasing version 0.2.0~bzr120~dbusmenu1-0ubuntu5 (b5d03f9e) * Updating to be Karmic, whoo! hoo! (92988ce5) 2009-05-28 Ted Gould * releasing version 0.2.0~bzr120~dbusmenu1-0ubuntu4 (e93f681f) * Fixing the service file to make it correct. Also some other smaller cleanups. (b470b71b) * Aw, bother, turns out I messed up the service file. Let's fix that. (7bd2ed28) * Building a simple little activator to find out if we can activate the service. (269238b3) * Putting a little more error handling code in. (5dd6b628) * Failing on warnings (0ea6c285) 2009-05-27 Ted Gould * releasing version 0.2.0~bzr120~dbusmenu1-0ubuntu3 (6669d085) * Putting the service file in the proper directory (24369f05) * Switching to the better dbus service dir (72f0924b) * releasing version 0.2.0~bzr120~dbusmenu1-0ubuntu2 (046d1650) * Fix to start up the service if it isn't running. (cad618d0) * Starting the service if it isn't there (d585baaa) * releasing version 0.2.0~bzr120~dbusmenu1-0ubuntu1 (04612179) * Typo on package names (8a88911e) * debian/control: Adding in a build dependency on libdbusmenu-glib and libdbusmenu-gtk to catch up with the merge. (f0729c3e) * Merge in the dbusmenu changes from the dbusmenu branch (7b86d3f1) * Getting a name, and grabbing it, and loving it... (d2bd9a0a) * Removing the child_reorder function as it's now upstream (a472a2b4) 2009-05-26 Ted Gould * First pass at moving everything to doing work with the DbusmenuMenuitem's instead of GTK (f3cc98cd) * Converting to a DbusmenuMenuitem instead of GtkMenuItem (994d5788) * Converting to a DbusmenuMenuitem instead of GtkMenuItem (cbb75504) * First pass, build the listener and do fun stuff like that. (67b8e020) * Building the indicator-messages-service (a604ba60) * A simple main() to get things to compile (11503c7f) * Install the DBus Service (2f78f9a3) * Adding in a service descriptor for adding to DBUS (fbd1c759) * Lookup the dbus services (8bd8be15) * Linking in the dbus data (d0bd2815) * Moving the complex code into the service and leaving the rest for the loadable module. (c0d72443) * Adding in dbus name and object (70310ac5) * Adding a dependency on the dbus menu library. (13f44333) 2009-05-13 Ted Gould * releasing version 0.2.0~bzr120-0ubuntu1 (4b94b5ce) * Fix to track the timer. (LP: #365187) (9f058749) * Merging in fix for tracking the timers. (e6c51e39) 2009-05-10 Ted Gould * Not setting the variable time_update_min when creating the source. Bug found by Ka-Hing Cheung (79276384) 2009-04-22 Ted Gould * releasing version 0.2.0~bzr119-0ubuntu1 (dc1003cc) * Upstream update (a3454f1b) * Get rid of the main menu variable that we're not using. Hide the image. (4ed02eb0) * Setting the name to 'messages' (86043d17) * removing a warning by ref'ing the default (ed040164) * releasing version 0.2.0~bzr116-0ubuntu3 (a47e3f40) * debian/rules: Adding a rule to remove the .la/.a clutter (0da80a51) * releasing version 0.2.0~bzr116-0ubuntu2 (0c39b8ac) * debian/control: libindicator-dev to ~bzr301 (991ccca5) * More specific version number (8a7ce204) * releasing version 0.2.0~bzr116-0ubuntu1 (12cfb09f) * debian/control: Adding new dependency on libindicator-dev (a1d496e0) * Upstream release * Bug fixes * Update API to new libindicator (a9d6d59a) * updating to match core dev (86658a12) * Fixing return type (7021ff0e) * Breaking out into libindicator style function calls. (512db5f7) * Including the indicator info (aa425312) * Installing to indicator dir instead of other fun places (12448688) * Putting a 'dev' on the version number (a98311e8) * Increasing the version of indicate required and requiring indicator (1842b5b5) 2009-04-20 Ted Gould * Some changes suggested by Cody Russell to make things a little bit safer. (2b981cb3) * Freeing the appinfo and type from the application object on finalize (b5159bc6) * Moving signal disconnecting and unref to the dispose function instead of finalize. Fix by Cody Russell on bug 362124. (f30fe10f) * Adding a ref'ing and deref'ing of the listener to the application menu item to ensure it stays around while we hav signals attached to it. Fix by Code Russell on bug 362124. (8f513aa3) 2009-04-14 Martin Pitt * releasing version 0.1.6-0ubuntu1 (9e66afc1) * New upstream version * Patch from Cody Russell to fix LP: #359018 by correctly implementing the finalize functions. (426f9db9) 2009-04-13 Ted Gould * Fixes to the finalize function. (ff589267) * New upstream version * Patch from Cody Russell to fix LP: #359018 by correctly implementing the finalize functions. (220d088c) * Update from core-dev (1b6bd559) * Making a 6 (d84f15b0) * Merging in Cody's fix for 359018 (4651667b) 2009-04-13 cody * move parent->finalize() to the end of the finalize function (6491f50d) 2009-04-08 Ted Gould * Including some cleanups from James Westby. Thanks (a4225624) 2009-04-08 seb128 * releasing version 0.1.5-0ubuntu1 (f2182672) 2009-04-07 Ted Gould * Cleaning up changelog (0fabaa72) * Merging from core-dev branch (b98a1837) * Merging 0.1.5 final (d674b3ae) * and applications. Fixing bugs like (LP: #355616) (LP: #352881) (cfaa09aa) * Require indicate version 0.1.5 or higher (ec712ab0) (tag: 0.1.5) * * Fixes the lifecycle of the various structures tracking the messages and applications. Fixing bugs like (LP: #355616); (28981355) * debian/control: Upgrading dependency on libindicate-dev to 0.1.5 or higher as the new version requires that. (185f2744) * New upstream version * Fixes the visual appearance by setting the widget name to grab the style settings from the main applet. (LP: #351979) (ee31022f) * Fixing bugs, much better.; Making the menu item lie like it's FUSA (fd8d087e) * Trying to set this to also act like FUSA so that we get the same visual as the rest of the panel. (a4d47b25) * Make sure we disconnect from all our signals and free from memory that really exists. Lots of little nasty bugs. (bf6b66c3) * Incrementing (c04ffad1) * Ah, leaks! (dd987bf8) * Actually removing indicators when the server goes bye-bye and freeing up the indicator data. Wow, two biggie leaks. (c3396784) * g_strcmp0 (e1988e05) * Should have been using g_strcmp0 all along. No reason not to use the safer one. (81194efc) * More upstream. (e6565d2b) * Making these new0 to make sure that our lists are NULL (33aaf28a) 2009-04-05 James Westby * Be aware that appinfo can be NULL. (2cab4204) * Fix PKG_NAME in autogen.sh. (269853b6) 2009-04-03 Ted Gould * Bah, right symbol (f63255dc) * Using the right symbol names now (2a4f8fe4) * Now with better linkage. (e8bbe3d2) * Using the correct way to find the DBus name and ids. (2a6ba2e4) * New upstream merge (aff7fe30) * Merging from upstream (06c50bae) * Setting version 0.1.5 (1a4df93b) * Showing some interest in teh clients we talk to. (7d22f35b) * Adding in some consts to match the new prototypes better (151d9783) 2009-03-30 Martin Pitt * releasing version 0.1.4-0ubuntu1 (fc65adbf) * New upstream version * Adding the display of indicators that are login messages coming from other applications. (LP: #345494) * Making all times displayed for IM messages relative instead of absolute. (LP: #346345) * Cleaning up the server removal code. May fix (LP: #345599), I can't recreate it anymore afterwards. (194f1120) 2009-03-28 Ted Gould * Releasing (c51645bc) * New upstream version * Adding the display of indicators that are login messages coming from other applications. (LP: #345494) * Making all times displayed for IM messages relative instead of absolute. (LP: #346345) * Cleaning up the server removal code. May fix (LP: #345599), I can't recreate it anymore afterwards. (70fd28aa) 2009-03-27 Ted Gould * Merging in core-dev changes (3fa7733e) * Merged in upstream 0.1.4 (606d1032) * Changing version number (3448618c) (tag: 0.1.4) * Making time more about it's own relative nature rather than a fixed time. (1fbed56e) * Adding in a couple of statics (cecd4f27) 2009-03-24 Ted Gould * Making it so that an indicator gets displayed when someone logs in, eventually it disappears. (9137a01f) 2009-03-19 Martin Pitt * releasing version 0.1.3-0ubuntu1 (ffe2a99c) * debian/copyright: Fix download location. (2fc5363f) * Add bzr-builddeb configuration. (d3c88d41) * Add debian/watch. (2715af18) * New upstream version. - Now changes the icon based on non-IM indicators so that Evolution works much better. (LP: #342480) - Now the menu items are in a predictable order, alphabetical. - The Messages for a particular client (i.e. Pidgin) are grouped with the client they're associated with. - Adjusting the icon size to match the new one in the Human theme. - Adjusting the build so that all the different libraries are not built in a versioned manner. Now it's just one .so, which is what it should have been originally. (4d0b74fe) 2009-03-18 Ted Gould * * Adjusting the icon size to match the new one in the Human theme. * Adjusting the build so that all the different libraries are not built in a versioned manner. Now it's just one .so, which is what it should have been originally. (9d174eba) * New upstream version. * Now changes the icon based on non-IM indicators so that Evolution works much better. (LP: #342480) * Now the menu items are in a predictable order, alphabetical. * The Messages for a particular client (i.e. Pidgin) are grouped with the client they're associated with. * Adjusting the icon to match the new one in the Human theme. (3efd9a29) * releasing version 0.1.3-0ubuntu1~ppa1 (e5c53aad) * Merging in 0.1.3 (ebdcd569) * Setting version number to 0.1.3 to match all of the other indicator stuff. Probably should split things out more later. (908e7e4b) (tag: 0.1.3) * Making the truth correct (2ebeacae) * Backwards sorting (9147f109) * Adding in message.im, should have spec'd this better now there's some drift. (b1110c5e) * Making the IM list sorted and handling the time changed signal (912e0e21) * Putting the seconds into the private structure, a function to get them, and a signal when they change. (1cf60571) * Fleshing out the reconsile function. And making sure it gets called everytime there is a name change on the server side. (8d5f26a0) * Wrong name (5d7e356e) * Relaying out the data structures so that the indicators are sub to the servers (d41675f2) 2009-03-17 Ted Gould * Forgot to actually pass the value to the signal, ahhhh (9ab9320c) 2009-03-15 Ted Gould * Switching the servers from a hash table to a list. Cleans things up a little, and sets us up for menu organization at a more complete level. (4eff83ac) * Adding functions to make it so that we can get signaled on name changes and also query them in app-menu-items (0fdeda8f) * Putting in a sorting function to make sure that the individual indicators are always below the server that they're associated with. (e6a8b5ce) * Bad truth (772b8553) * Disconnecting our signals properly, avoids a crash (34c84145) * Add simulation of zero count on server remove (e527f992) * Setting up the library versioning to basically not have any, this is a module. (e02359f6) * Switching the icon to be based on whether or not the server is reporting indicators instead of counting the number of indicators items. (d0261d80) * Splitting the label updating into it's own function and making that called by the other functions that adjust how that happens. (6793aaa5) * Adding in an unread count variable, and then a signal to show it chagned. Also, watching for the indicators on this server to make sure it stays correct. (c9f60d21) 2009-03-13 Ted Gould * Changing the version number, but don't release it :) (31e467f0) 2009-03-09 Ted Gould * Changing the icon size. (3aa4e9ef) * changing the size of the icon (97c719c1) 2009-02-17 Ted Gould * Merging in changes from Martin with fixes to the control and copyright files. (53920c13) 2009-02-17 Martin Pitt * releasing version 0.1-0ubuntu1 (30e360b4) * debian/copyright: Properly describe license. (fa242863) * debian/control: Add Homepage:, Vcs-Bzr:, and fix package description. (b4b13c75) * flush changelog for Ubuntu packaging (092541c8) 2009-02-16 Ted Gould * releasing version 0.1~ppa16 (e160f4e2) * Updating to upstream release tagged 0.1 (4e584e6e) * Merging in upstream release 0.1 (c9cae9e9) * Turns out that in configure it was 'messaging' -- oops, fixed to be the same as everywhere else. (f8302c78) (tag: 0.1) * Merging in updates to upstream branch. (9b8e6ca4) * Making this an upstream branch, no packaging. (bfef43ac) 2009-02-15 Ted Gould * releasing version 0.1~ppa15 (b5841c08) * Making the menu hide itself if there is no one around (beaf3e2d) 2009-02-13 Ted Gould * releasing version 0.1~ppa14 (9e81d804) * Forgot to change all the names. (6d9f90ca) * Making the image global, and changing it based on how many IMs we have. (b63bf810) * Add a callback to display the app (df2dfb87) * Oh, I forgot these create log messages. Very annoying. (f8caa222) * Adding in desktop file support, which required configure changes to get the right headers. (f37cabbd) * Adding in functions to get the desktop file and type of the application (6205276f) * Adding a callback for when things like the time get modified. (254016bb) * Adding in scaling of icons (a4738b0a) * Setting up to use the icon and time helper functions and make icons update. Whoot! (043e1eba) 2009-02-11 Ted Gould * Adding in a copyright for the debian packaging and description of the package license (4feb09f9) * Adding myself as an author (a03b00fd) * Adding in license headers, GPL v3 (67151a64) 2009-02-07 Ted Gould * More debugging and temorarily showing the menu item ourselves (c55d7ea7) * Adding in some debug messages (f2d14c96) * Adding in the basis for making a server based menu item (8bf69500) * Removing the need for an indicator (ef5f3ef7) 2009-02-06 Ted Gould * Adding in an application menu item to start building those (93bf960b) * Making the activate callback static and putting in a prototype (c06fbefb) 2009-02-05 Ted Gould * Removing warnings by getting the right pointer types (24824955) * Oh, two things. First is setting alignment of the two strings and also getting the time from an ISO8601 string (c53679a6) 2009-02-04 Ted Gould * releasing version 0.1~ppa13 (72030b3b) * Using the right damn function (48a971fc) * releasing version 0.1~ppa12 (96c62532) * Installing to the wrong directory (47630095) * Adding in data directory (ef4d61bb) * releasing version 0.1~ppa11 (eac0c0d2) * Taking the icons from Evolution and GNOME icon themes. Some slight modifications. (daf3ca33) * releasing version 0.1~ppa10 (a86a9128) * Adding in dummy icons (31b38cae) * Adding in icons (35375697) 2009-02-03 Ted Gould * Changed libindicate name to libindicate0, so need to have another build in the PPA. (ff63073a) 2009-02-02 Ted Gould * Bumping for PPA (5913f29a) 2009-01-30 Ted Gould * Adding in activate callback when the menu item is clicked on. (c5c02892) * Adding in an activate callback (02384bcd) 2009-01-29 Ted Gould * Making things better, now menu items are created and destroyed as they are, well, indicators are created and destroyed. Also minor cleanups. (77684366) * Switching from a hash table to a list (55ec2d27) * Putting a debug message on compare (3570ce4a) * Warning on not removing something that should have been. (5e6b3801) 2009-01-21 Ted Gould * Basically now indicators show up if someone puts an IM message on the Bus. Way cool. No delete or anything fancy, but good progress. (a7dd8a9a) * I always get the order of these backwards (13422b45) * Changing the text to be a little shorter (819c0112) * Adding in a show that I forgot :( (cbe25167) * Better debug message and getting the time callback to check for the right property (862ae84a) * Lots of debugging message to figure out that I hadn't passed the return variable in _new :( (92e30f0d) * I hate me (1ac34982) * It's truly amazing how many logic errors I make (e4db2322) * Make menu items for IM indicators (281b4d99) * Adding in some more warnings (0e3f32e6) * Forgot a _start (ef94cd44) * Forgot to connect in the signal handler, oops. (cc970254) * Get this to compile (78320a43) * Linking together (78c5736e) * Fleshed this item out some (feb4d815) * Boiler plate IM menu items (c4877bf1) 2009-01-20 Ted Gould * ifdef'ing out the mail stuff as we need to get IM working first (c84bc2ad) * Building the basis of what needs to be the indicator. (d3ee9f8e) 2009-01-19 Ted Gould * Adding in libindicate as a dependency (06feae04) 2008-12-04 Ted Gould * Ignore stuff (0f788121) * Moving the directory (3b898091) * Starting Debian Packaging (fc14666e) * Showing by default. (1bf559dd) * Making the directory the same as the applet. Should have done that first, eh. (ebb7bab1) * Ignoring (79eefb2e) * Actually getting this all to build reasonably. (70aaffd8) * Checkmark checkin (76713f09) ayatana-indicator-messages-24.5.1/cmake/FindGObjectIntrospection.cmake0000644000000000000000000000376514764273406022677 0ustar # - try to find gobject-introspection # # Once done this will define # # INTROSPECTION_FOUND - system has gobject-introspection # INTROSPECTION_SCANNER - the gobject-introspection scanner, g-ir-scanner # INTROSPECTION_COMPILER - the gobject-introspection compiler, g-ir-compiler # INTROSPECTION_GENERATE - the gobject-introspection generate, g-ir-generate # INTROSPECTION_GIRDIR # INTROSPECTION_TYPELIBDIR # INTROSPECTION_CFLAGS # INTROSPECTION_LIBS # # Copyright (C) 2010, Pino Toscano, # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING-CMAKE-SCRIPTS file. macro(_GIR_GET_PKGCONFIG_VAR _outvar _varname) execute_process( COMMAND ${PKG_CONFIG_EXECUTABLE} --variable=${_varname} gobject-introspection-1.0 OUTPUT_VARIABLE _result RESULT_VARIABLE _null ) if (_null) else() string(REGEX REPLACE "[\r\n]" " " _result "${_result}") string(REGEX REPLACE " +$" "" _result "${_result}") separate_arguments(_result) set(${_outvar} ${_result} CACHE INTERNAL "") endif() endmacro(_GIR_GET_PKGCONFIG_VAR) find_package(PkgConfig) if(PKG_CONFIG_FOUND) if(PACKAGE_FIND_VERSION_COUNT GREATER 0) set(_gir_version_cmp ">=${PACKAGE_FIND_VERSION}") endif() pkg_check_modules(_pc_gir gobject-introspection-1.0${_gir_version_cmp}) if(_pc_gir_FOUND) set(INTROSPECTION_FOUND TRUE) _gir_get_pkgconfig_var(INTROSPECTION_SCANNER "g_ir_scanner") _gir_get_pkgconfig_var(INTROSPECTION_COMPILER "g_ir_compiler") _gir_get_pkgconfig_var(INTROSPECTION_GENERATE "g_ir_generate") _gir_get_pkgconfig_var(INTROSPECTION_GIRDIR "girdir") _gir_get_pkgconfig_var(INTROSPECTION_TYPELIBDIR "typelibdir") set(INTROSPECTION_CFLAGS "${_pc_gir_CFLAGS}") set(INTROSPECTION_LIBS "${_pc_gir_LIBS}") endif() endif() mark_as_advanced( INTROSPECTION_SCANNER INTROSPECTION_COMPILER INTROSPECTION_GENERATE INTROSPECTION_GIRDIR INTROSPECTION_TYPELIBDIR INTROSPECTION_CFLAGS INTROSPECTION_LIBS ) ayatana-indicator-messages-24.5.1/cmake/FindVala.cmake0000644000000000000000000000442214764273406017453 0ustar # - Find Vala # This module looks for valac. # This module defines the following values: # VALA_FOUND # VALA_COMPILER # VALA_VERSION # VAPI_GEN # VAPI_GEN_VERSION #============================================================================= # Copyright Přemysl Janouch 2011 # 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. # # 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 HOLDERS 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. #============================================================================= find_program (VALA_COMPILER "valac") if (VALA_COMPILER) execute_process (COMMAND ${VALA_COMPILER} --version OUTPUT_VARIABLE VALA_VERSION) string (REGEX MATCH "[.0-9]+" VALA_VERSION "${VALA_VERSION}") endif (VALA_COMPILER) find_program (VAPI_GEN "vapigen") if (VAPI_GEN) execute_process (COMMAND ${VAPI_GEN} --version OUTPUT_VARIABLE VAPI_GEN_VERSION) string (REGEX MATCH "[.0-9]+" VAPI_GEN_VERSION "${VAPI_GEN_VERSION}") endif (VAPI_GEN) include (FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS (Vala REQUIRED_VARS VALA_COMPILER VERSION_VAR VALA_VERSION) mark_as_advanced (VALA_COMPILER VALA_VERSION VAPI_GEN) ayatana-indicator-messages-24.5.1/cmake/GdbusCodegen.cmake0000644000000000000000000000246614764273406020326 0ustar cmake_minimum_required(VERSION 3.13) if(POLICY CMP0011) cmake_policy(SET CMP0011 NEW) endif(POLICY CMP0011) find_program(GDBUS_CODEGEN NAMES gdbus-codegen DOC "gdbus-codegen executable") if(NOT GDBUS_CODEGEN) message(FATAL_ERROR "Excutable gdbus-codegen not found") endif() macro(add_gdbus_codegen outfiles name prefix service_xml) add_custom_command( OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${name}.h" "${CMAKE_CURRENT_BINARY_DIR}/${name}.c" COMMAND "${GDBUS_CODEGEN}" --interface-prefix "${prefix}" --generate-c-code "${name}" "${service_xml}" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} DEPENDS ${ARGN} "${service_xml}" ) list(APPEND ${outfiles} "${CMAKE_CURRENT_BINARY_DIR}/${name}.c") endmacro(add_gdbus_codegen) macro(add_gdbus_codegen_with_namespace outfiles name prefix namespace service_xml) add_custom_command( OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${name}.h" "${CMAKE_CURRENT_BINARY_DIR}/${name}.c" COMMAND "${GDBUS_CODEGEN}" --interface-prefix "${prefix}" --generate-c-code "${name}" --c-namespace "${namespace}" "${service_xml}" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} DEPENDS ${ARGN} "${service_xml}" ) list(APPEND ${outfiles} "${CMAKE_CURRENT_BINARY_DIR}/${name}.c") endmacro(add_gdbus_codegen_with_namespace) ayatana-indicator-messages-24.5.1/CMakeLists.txt0000644000000000000000000000407214764273406016446 0ustar project(ayatana-indicator-messages C CXX) cmake_minimum_required(VERSION 3.13) list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake) # Globals set(PROJECT_VERSION "24.5.1") set(PACKAGE ${CMAKE_PROJECT_NAME}) set(GETTEXT_PACKAGE "ayatana-indicator-messages") if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) SET(CMAKE_INSTALL_PREFIX "/usr" CACHE PATH "..." FORCE) endif(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) # Options option(ENABLE_TESTS "Enable all tests and checks" OFF) option(ENABLE_COVERAGE "Enable coverage reports (includes enabling all tests and checks)" OFF) option(ENABLE_WERROR "Treat all build warnings as errors" OFF) if(ENABLE_COVERAGE) set(ENABLE_TESTS ON) set(CMAKE_BUILD_TYPE "Coverage") else() set(CMAKE_BUILD_TYPE "Release") endif() if(ENABLE_WERROR) add_definitions("-Werror") endif() if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") add_definitions("-Weverything") else() add_definitions("-Wall") endif() # Check for prerequisites include (GNUInstallDirs) find_package(PkgConfig REQUIRED) include(FindPkgConfig) pkg_check_modules( PROJECT_DEPS REQUIRED glib-2.0>=2.36 gio-unix-2.0>=2.36 accountsservice ) # Cppcheck add_custom_target( cppcheck COMMAND cppcheck --enable=all -q --error-exitcode=2 --inline-suppr ${CMAKE_SOURCE_DIR}/src ${CMAKE_SOURCE_DIR}/tests ) # Build add_subdirectory(src) add_subdirectory(libmessaging-menu) add_subdirectory(data) add_subdirectory(po) add_subdirectory(doc) # Testing and coverage if (ENABLE_TESTS) include(CTest) enable_testing() add_subdirectory(tests) if (ENABLE_COVERAGE) find_package(CoverageReport) ENABLE_COVERAGE_REPORT( TARGETS "messaging-menu" "indicator-messages-service" TESTS ${COVERAGE_TEST_TARGETS} FILTER /usr/include ${CMAKE_BINARY_DIR}/* ) endif () endif () # Display config info message(STATUS "Install prefix: ${CMAKE_INSTALL_PREFIX}") message(STATUS "Unit tests: ${ENABLE_TESTS}") message(STATUS "Build with -Werror: ${ENABLE_WERROR}") ayatana-indicator-messages-24.5.1/common/org.ayatana.indicator.messages.application.xml0000644000000000000000000000263614764273406026213 0ustar ayatana-indicator-messages-24.5.1/common/org.ayatana.indicator.messages.service.xml0000644000000000000000000000136314764273406025344 0ustar ayatana-indicator-messages-24.5.1/COPYING0000644000000000000000000010451314764273406014742 0ustar GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. 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 them 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 prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. 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. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey 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; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If 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 convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU 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 that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. 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. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS 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. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. 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 state 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 3 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, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program 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, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU 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 Lesser General Public License instead of this License. But first, please read . ayatana-indicator-messages-24.5.1/data/ayatana-indicator-messages.desktop.in0000644000000000000000000000037014764273406024011 0ustar [Desktop Entry] Type=Application Name=Ayatana Indicator Messages Exec=@CMAKE_INSTALL_FULL_LIBEXECDIR@/ayatana-indicator-messages/ayatana-indicator-messages-service NoDisplay=true StartupNotify=false Terminal=false OnlyShowIn=Unity;MATE;XFCE;Budgie ayatana-indicator-messages-24.5.1/data/ayatana-indicator-messages.service.in0000644000000000000000000000053514764273406024003 0ustar [Unit] Description=Ayatana Indicator Messages Service PartOf=graphical-session.target PartOf=ayatana-indicators.target lomiri-indicators.target [Service] ExecStart=@CMAKE_INSTALL_FULL_LIBEXECDIR@/ayatana-indicator-messages/ayatana-indicator-messages-service Restart=on-failure [Install] WantedBy=ayatana-indicators.target lomiri-indicators.target ayatana-indicator-messages-24.5.1/data/CMakeLists.txt0000644000000000000000000000247014764273406017357 0ustar # org.ayatana.indicator.session.gschema.xml find_package(GSettings) add_schema("org.ayatana.indicator.messages.gschema.xml") # ayatana-indicator-messages.service pkg_check_modules(SYSTEMD systemd) if (${SYSTEMD_FOUND}) pkg_get_variable(SYSTEMD_USER_DIR systemd systemduserunitdir) configure_file("${CMAKE_CURRENT_SOURCE_DIR}/ayatana-indicator-messages.service.in" "${CMAKE_CURRENT_BINARY_DIR}/ayatana-indicator-messages.service" @ONLY) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/ayatana-indicator-messages.service" DESTINATION "${SYSTEMD_USER_DIR}") endif() # ayatana-indicator-messages.desktop configure_file("${CMAKE_CURRENT_SOURCE_DIR}/ayatana-indicator-messages.desktop.in" "${CMAKE_CURRENT_BINARY_DIR}/ayatana-indicator-messages.desktop" @ONLY) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/ayatana-indicator-messages.desktop" DESTINATION "${CMAKE_INSTALL_FULL_SYSCONFDIR}/xdg/autostart") # org.ayatana.indicator.messages install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/org.ayatana.indicator.messages" DESTINATION "${CMAKE_INSTALL_FULL_DATAROOTDIR}/ayatana/indicators") # icons/* install( DIRECTORY icons/16x16 icons/22x22 icons/24x24 icons/32x32 icons/48x48 icons/scalable DESTINATION "${CMAKE_INSTALL_FULL_DATADIR}/icons/hicolor" FILES_MATCHING PATTERN "*.png" PATTERN "*.svg" ) ayatana-indicator-messages-24.5.1/data/icons/16x16/categories/applications-chat-panel.png0000644000000000000000000000112214764273406026043 0ustar PNG  IHDRa pHYs  ~tIME ,xtEXtCommentCreated with The GIMPd%nIDAT8ˍjQ t;yul,|(Du `QPB$ M2{̽.@N[wq8\AJ:p.JۗW)Zf Zc5 ^k[f&qZc],VJiVJi1 8VjB /T+5.] (yŜDJ""xK{`#JGcI>qp J+H%QZl8,H:@q2 7C5:RNg8 8Y$I뇮~aRτhy:Rً;h`EрճdəsohGVn@[b-*e͟?;N$G!2N@?vݝ3b?!)k7Au:BH ){wZ.KZ+Gë߾픱8Ziuݍ OŽZ94/_2GV hܘ }W/8~iOg]:_V xXo⻊˄,K\0MsZrtl@rm})$MptSdY,-Nem6@ l  &~ vهUQ@an4Zx^@&%aY=9H)qg&;zN7nn}Sx䘚:B>_`qqX, ƀ5DA@WuRP(ȏY30`-qQZB) \&G.T ZuOD)|mO0$GS黤Ѻzah @n`ÛCОM<{^*_ IENDB`ayatana-indicator-messages-24.5.1/data/icons/16x16/categories/applications-microblogging-panel.png0000644000000000000000000000151414764273406027753 0ustar PNG  IHDRabKGDCIDATx]Kk$eꪾ&$Nm:㘌q\ "b*wnAƭ? ^ r@$&LL\Ituݿʅ=zVy^*o*܅'f jښcKvSi9@< c3 թW|L%%R{41yzp H2eKŬg._˨ny @?kч/\Otť;ᄃT.L'bGFyy5egw~d $*'AJ##R d9V~z;5_T/]룅R-J#BFM:78 2B&k+b4mz'lI\&+BTUf.N!|pnԞ~VH4H]il@F8~xx~cܽZgZV)wǭӀX2?[#%=q $1ipڙ 'e!OUljd>[]l˥^ bN8;iF@Xr~gA>c[iRrxH{: `;to;k&q>mc[mtacv'p j?(p+a}bv>@4_k+;S"=Ό>f %-XjEX+[Uwx 0?eETt7ߛvW7BIENDB`ayatana-indicator-messages-24.5.1/data/icons/16x16/status/application-running.png0000644000000000000000000000111214764273406024521 0ustar PNG  IHDRasBIT|d pHYs|4ktEXtSoftwarewww.inkscape.org<tEXtAuthorAndreas Nilsson+tEXtCreation TimeAugust 2006{ tEXtSourcehttp://www.gnome.orgCUYIDAT8ӿKBQe" "R"0hphq*hkhhh Z Zilh( HtF[!0ϧ׽-1;|8{ !JZ.}{K@nP[ F @s|l82~< 1dz8.fMBEÄMףs;CMRq;]c~ߕawa3 `Jшw7EѠo.P\9y$Lpޫ5B `#7rNɇZ@UfE5*/?%6Dd'" Cȷ'+/i:QoԷ3.yPH@ W5򜭖WIENDB`ayatana-indicator-messages-24.5.1/data/icons/16x16/status/indicator-messages-new.png0000644000000000000000000000133114764273406025113 0ustar PNG  IHDRabKGD pHYs B(xtIME;PfIDAT8˕oLaϽw;I;NSF;E?w–H$,ja? b%Ē a+:"h$>2Vx)Z|sWXՅ,P\=Y<2]Qzu=@n g QU͉7͍ҫ]:"pO6#RY3:/}Ky {o q:(OrK]8wQ؞HngF2CD2R̶kOg;}<:=A< "ŵ6\;woc[>`;Ju,jft͏QzeY+}~<IJRZ[e % "vnVwkI֩JA0?P5ffRz)*Yk =RyPU8٨Sot0/^b ])io:7Hdhq(wfgٳs/ZA *ضG.xZFcf-c$XЦޕQ5-'8Y' ^WPWJ4YV$c_|zGۙ3z< "IENDB`ayatana-indicator-messages-24.5.1/data/icons/16x16/status/indicator-messages.png0000644000000000000000000000115114764273406024324 0ustar PNG  IHDRasBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<IDAT8œjSAYhrUх (A"BQ_ւE,I[ŗ/ ¦4ͽ"5͙҅9c"%֖eIQ)>!I c ιR2:6J`}R !9YkMft6I )FA^oƘ9w$IJhST#בBBlPViwȲ RYczz>8_8fyۿ~R>R z=vs.GG,[RB$)33-~|%zBZ<eb8Pڂ.sAcNwxrEiKҬ2ǰJ[pu.Z_|rΝj>tC"ҋH>Qɳ(ow.&&IENDB`ayatana-indicator-messages-24.5.1/data/icons/22x22/categories/applications-email-panel.png0000644000000000000000000000174714764273406026222 0ustar PNG  IHDRĴl;sBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<dIDAT8Mh\U͛7oK|4֦+EučmR1W-dRqnZBq!.7uiM53I潗wDrQka QIl5TZzuXAIt~:7{nѪYV(0 v98RgAN _%|yT&|n-kZ/h9(Wz }O_|.a%;1BZ^ZcS3|]*-N ./N7(ڱ7*c:ҬJZfzL*~PZx<>D33Giܾs+!rq>5IowS5<4D("xw;wGͦ?491,)+Ăq@aY6ёfZ٦0VTOpfPD:2c *##666H&##}%b$CwlƲ, c2ݒ0{;C~_H( cshxGRyfΑ?(x_0@2irlrcL=sL "~OT ?[ɞ`JɓclDրɧ^nq]~Hblw-hh'cgtDS!ډ6l0 P_hME*]')D@kilmuD4n;~kԈh2#J)wx1h==6Z}}Za:lHTJN*qfF/_@(A)F[0l`iJ)%uUJ)'OOIENDB`ayatana-indicator-messages-24.5.1/data/icons/22x22/status/indicator-messages-new.png0000644000000000000000000000202514764273406025106 0ustar PNG  IHDRĴl;bKGD pHYs B(xtIME4|IDAT8˽KlU{:㸱c;̓4Z U*RP7=Y5 TBHJ@BTTE.XBJJAvl&{ȉP #93s)® ~ B b;) )`d $AbȮ TAAmKJ%2A΂ 9V^f*@صv,\2@Cg\_)\p\JQ*B^f 6kUky*c? I(\Y#p)(p/[]MQLB#dk}к**.1<Z>[|DO ",{O=+ł{}x\/e,ra"B A"6.z<|ZDa24~0(@ɽ['ͣt~vJ)R4|sDQFi^uC>J)|w2hF$^[[p%z/[Oǎwߠt L`eOSN>s,r(;{zI4M9} ֿ<1L:rFp' }H)J"@HAg;ɋl!QNstl8 &*Cc'Ώ`!xڝv(c6Lmv"0u۷dg8Lz?Eu^jggO>C)s#J)iƽ{(1}h0"/T9*x/CU=^H镔N)Θ/~̋(Fjrf!p_u]G)IENDB`ayatana-indicator-messages-24.5.1/data/icons/24x24/status/application-running.png0000644000000000000000000000140614764273406024525 0ustar PNG  IHDRw=sBIT|d pHYsu85tEXtSoftwarewww.inkscape.org<tEXtAuthorAndreas Nilsson+tEXtCreation TimeAugust 2006{ tEXtSourcehttp://www.gnome.orgCUIDATHֿkas\jMARBxRtqEE:][D]\ԭ\,SEi.=qȉg xis/|x=ٔPP ww#2cܓHBJt/\RGzx%F@>40LG?wY'''O>i[TvիCW6 +uAږ~Խ|^uj0@'B(`8rd6Dw ԊE3;*Ucݸ830h۴ZDA(-YWo 0ZyM%o*VԇىZk o}|zmT"RhcLc翼}v ND1 (( @Vfi 10w!ڿt?ت7}\4>V%_VAc @ћ0OYߗEIENDB`ayatana-indicator-messages-24.5.1/data/icons/24x24/status/indicator-messages-new.png0000644000000000000000000000203714764273406025115 0ustar PNG  IHDRw=bKGDC pHYs oyIDATHݕ=l[UslōV.P"U u3+ HH AEUJȀb7&h؎͋~d!t{;?,q j &PiF*`U3 q`d $ @Md*򠶁53n5/r cBo2BVeFGj&, "xJI}\lR!9L( lVQ,cF֜Ge`6k.S_r7B T0 J@Ӄo]}^W|N$%V2"#ؠzob ow 4M>\}9{k~ kETtK]!s.?ڇ ˢBDD;^@x~_( L$m4M DJ&◎o,LePZR fgfu #~9F* DpJ)FFG}7o0Ѵ"VDjsbN{.(IJv9p=MӘqn~=V&'0\1,oU| b vvH>\@7tI0g@!1 !8~]y2 >MZ+\(p";;|z <G*uɃy¡>?e[Gs]F~3ضs(( [yÄgS"6m0AFBPu|Ns h8uDyIiy "Tea3whۀaEsR8NX3az2i}F *Ukڵw>|o!j{i @R^ZR~/WT)XZIENDB`ayatana-indicator-messages-24.5.1/data/icons/24x24/status/indicator-messages.png0000644000000000000000000000160614764273406024327 0ustar PNG  IHDRw=sRGBbKGD pHYs B(xtIME*IDATHKoU1wfj8&1u\CK _!lXJ|!U X!Ă$]U@ AY(cJ];iX=wFsܳh;o==Jץ"@JTB <6-?Na-y?BvyG݅@ P>gƑ#x}Bkff0ș2SkאAs2٭ !{'jgg?)s5:,~T7¢~^laUQ9*x/C !+)R)1n>-\jrN'p~GJCIENDB`ayatana-indicator-messages-24.5.1/data/icons/32x32/categories/applications-chat-panel.png0000644000000000000000000000344714764273406026053 0ustar PNG  IHDR szzsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<IDATX[l̙̮/kK\JDLzQ$ZR0CF[ Mf$܉Rbu \\^>{iG{P@A7_x/+zgc&`1M@RJ!J%3v ^n `=Q!@@!1J5R`'b4Mضu BQ@AJ)%J*y&ijPmO4ڦ !*[]QM FM6ۺ𧻓{9(] 8`AҌU=Hga'^b) QJeUKm.w7`u]9RBxKf$O#rzu{okNR)HYrp]=QN]|fRyi  (ܚųձB.!FuJT쌚IL\|}]}_}Tx;T\?g/uضy)9d2YQނIeBawSȤ3ظy;VW ~2ݯz 07?v475~tK$oaq.} =DnCp8vxNv("SpVK`ed2A)ap hiiE5k_Ox8 #˂R ]ghnn1>,/gP(!!ihll@4c B yc}2>^=x79FMi_>_[1]F2 L8NS ò,1F.{7s"7M8,@A{{:;;Յ-[ѱ UTer9Bpܾ})b&L8w /!RJBiodK@dwˉ] $g`  4!D[{zjÉ 7 Rx~`drWQ(wJP5fo7",+ Vx  xztoN:Yv(ζt}VLB0m;9./yٛ*Sv@i˲X6y'b` Ӵ*Y)J%199}岼y_^ ^B@@pǎ햖^шR)4<`(ZJލ\|қXzXe5ts)?x(*pU%^VIENDB`ayatana-indicator-messages-24.5.1/data/icons/32x32/categories/applications-email-panel.png0000644000000000000000000000323314764273406026214 0ustar PNG  IHDR szzsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<IDATXŗ_l[W?sƎ'qtITIZ-]6mڠ2CՒ=!!UBB xx& Bx@/oH[U`^VhilqvX=ι}gIuܸ뺝,dE^˶wݮ'vK.cǎk`UհèP.MΝ;r`ܹs"jȿ3ē>3j24؎8(j>nܸ\KgϞ'W\> _|zoߘf|M:pk߼yoNMOO<ϟpFǟs'O,XŽŻ.J$<t[X"СC Ǜ&#]@B 繮, 2 l#GzbH_ d(Xex$IhZM;t(Tè09kL,2PEQeum|!LJ~@"IRl ߕ$x?H8xm; "W}i"+'\)y7슢0>~2c־/imQq÷5˶dtG0ATj6[&Ӳ* _{M>|,kCk46> oP,¬#b5su6QrܐTU"(c_|vy| 4 %mU!N]w]|uZި5I z*ȒD{0,xDl@̴BX#p>+Q5+@?oق-$YKnu][ZJ4_̈́2 a(w`) ~?o1CR簶IENDB`ayatana-indicator-messages-24.5.1/data/icons/32x32/status/application-running.png0000644000000000000000000000174414764273406024530 0ustar PNG  IHDR szzsBIT|d pHYs : :dJtEXtSoftwarewww.inkscape.org<tEXtAuthorAndreas Nilsson+tEXtCreation TimeAugust 2006{ tEXtSourcehttp://www.gnome.orgCUIDATXKLQ3ӖByTBD (LLtaXHCpR$c%tqKJ nd% 0Qc D'-L3EgBkh.<əL2s;K13gly@ya 㨲:56m]U&fSKɢH6.BA c#?zIl?5^.)Aϝim/,\|X3͢CNDO5[+k `>*3Doiz_o:$nR1U:V_k?vɵ`O4ܳƞr Tffowe),C&}VklHϣL ĄJhfڅәJ pFA,+@١E51:gD<5@EHxxpwgT<%v_G=\Y_"o#9Yq,;Hҹ81W$9Ae~|@A!)<۹a"GD{rm1Ơּ>[X*`R@H)LB g`s9\A!*JYfTMODƘ:8~/-Ͼ(PU1M8>Bai+dTkG;Le*J(w+65[-9ʯ@kQtlqۈkSR @8E9-Vp^IENDB`ayatana-indicator-messages-24.5.1/data/icons/32x32/status/indicator-messages-new.png0000644000000000000000000000304714764273406025115 0ustar PNG  IHDR szzsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<IDATXKl[K^ERԃ-ǯ0rVHYt]n".EwM @nJRhQ5EI59'{/EJXF cs;FU9B`0F@P5%nU PAd<sP{jzM ,V:*, `nPܒtǶ Z=(eßn8O~hr cej~.nuX 2Yφ?;gh.%&VPڂ'Apus[, ?Bρ`n [~L~v˪jG (,U[TcT:Tl"_ǍnnnO/]8s/2 -Tz \S=M 0; $vTO P +E0'&Cd"0efH@5?7]Pⵦ,Q]}f% rwb+ ^NS*aZZ|O^x"xTUj !2xG|AB]G|DV,`W ūьrJRRN6 ]GYAYCL.G,@v{`0:ޯ\`#NPQETP__[#q/f.!AUg`Nc9mdA]cYE9Y8lLM@UACaЍh<߿ǥK/D9Tx۴ڟqǬJފ $?@‹a^$aMlAh8$/I>^*Jj&&B{wM\¹4k1 c|Q$y__ogI? d,".$bL3Q'ۗ/-E:-`q0R%S2<@)Ηf?=BڝT&sX@KGI;oƏlۀjC0 &?DLl,K,l) Ծ4f &@9=?$}Q7vgIENDB`ayatana-indicator-messages-24.5.1/data/icons/32x32/status/indicator-messages.png0000644000000000000000000000222014764273406024316 0ustar PNG  IHDR szzsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org< IDATXIoE{ŎV"'J@\X8' 76! !.Wq @("B"mV؎dg̒YC3c#X9Ҽ]={WF1CDFb0Dsɽ\^ۑ %Z,A)Ș{c :uX02!Me!jB-Mcgt`\|s"Tb b#L=^&k L'nvY@>Q?R&Rqln EF:Q<072D.p!n{2r ˍoȖ_[D/L5 u?)ؿozUm_-hڢ=潶p|۞# E(Plm۬w?jԯxKD `fkt;7hn+7:Nt[ 8ܹƦfukG:Ik Gv x3،c8{G# Xc9!a^Y?r~,^i^xiwt1sHd}knݚ7C9bX[l;;~o;6A?jB^rI ֯U7ˊ|3|fCȳ qL$xl kjGľ+"X21@5zfkw['ީVЏЂ1?eh4mFUhϿ03dOm6V>a{8r ϲ("MXHL/'@̑!C&MA.gspZ}o1 T ،3,/%2 U1Ӝ~h J@rQ዇24!,쭡sU" & "4!Xsvg7<8p&CBDhC$Ʉ <2xhfCTtMD,nuxud@~KYU+bѹ9GCϼT@CHSe`5 >N;X4n1>xtr",^0BȦ-f 4XpHD5tn:LfS+9I91g`WISNO0uȒ]U051NNMݚuS٪T"RH :U섓!p75u-Ǚw3?Wqwk;[DDvP)5$ |јKߏ\|t0߳RQzCr"<K  bcVΥ:nsE]Y=JsN{o_#<#>j2fJ `&_&{V 7U)TžwP\~ˏ|ek]EQ}x$9Hu7Ǚ# ,)#ޝˏ]F@CھTP(?]AX\*>*8I)!{E[W{[`Q "#HV $@ [Ř>HsbGq:/dCX^~-'tuKI_BV'e 8BZvDXNPy⣔4IԐ mdV QMjUTxq*P!]h4\r<ӗ}/HJ8J IЃ{u$yk_+ԵPm`mnTFĪp,.̡CxAvH栺Pց-T}YwDҙ1_ MCR; jO{?aΞ=C'y,p(IErPF, TVSuajM~C!SQW7 p >Od1\~Yi~r/<"(uM$jXqR;I,<NPQ X?̟'>Ϡj nw돕FmUD^̥KbbvJF%Ij,dW )ufgo|,6M a;ڵ lfVVqÁ_?Je\Dr|xFP++Mfff0)HO {` ;?s{}DQO1G~#oT*S cpk-i 0䩗xK'O%j \2ݑΟ?A0*vOϰ޻}C`̓VW * Iv_GtFҎ۸KuJ1?!cWIΒ;{A͈xh(HJTpxRٟR}}Jޟ$)"cPpC A3,bX8\bQ&IB 2㤅:wo ɨ~(Q`RÝwi{sssܸq{;K~y&N{d̉'<9JHC۬9[=:ڞPzWI,;5]5r|. !Пv8s \c*@U- ~1o4t"ǗЮ@%!VWN?T^Hb?t& E+h|A)dqbDL>QFbzf'Opm-d7,oQJjuxeȑmEU${ ALaqaE޽Z2WZ T.SSSϣ<6>,@ v8q86&뢵R(EN+j 4ͷ֭B㉌!ՄW|?IE<8s~q8cHӔ$M!._8Y~O?fmm;JONpX PY8ClnnN<%W_Q#b$s=𙙞رc image/svg+xml Person Jakub Steiner http://jimmac.musichall.cz user person ayatana-indicator-messages-24.5.1/data/icons/scalable/categories/applications-email-panel.svg0000644000000000000000000005012214764273406027213 0ustar image/svg+xml Mail Emblem 2005-02-19 Lapo Calamandrei Mail emblem Jakub Steiner Andreas Nilsson mail message e-mail Lapo Calamandrei, Andreas Nilsson, Novell Inc. ayatana-indicator-messages-24.5.1/data/icons/scalable/status/application-running.svg0000644000000000000000000001473114764273406025530 0ustar image/svg+xml August 2006 Andreas Nilsson Jakub Steiner http://www.gnome.org next arrow go ayatana-indicator-messages-24.5.1/data/icons/scalable/status/indicator-messages-new.svg0000644000000000000000000004462714764273406026126 0ustar image/svg+xml Lapo Calamandrei Mail stuff ayatana-indicator-messages-24.5.1/data/icons/scalable/status/indicator-messages.svg0000644000000000000000000004336414764273406025334 0ustar image/svg+xml Jakub Steiner Andreas Nilsson http://jimmac.musichall.cz ayatana-indicator-messages-24.5.1/data/org.ayatana.indicator.messages0000644000000000000000000000062514764273406022527 0ustar [Indicator Service] Name=ayatana-indicator-messages ObjectPath=/org/ayatana/indicator/messages Position=50 [desktop] ObjectPath=/org/ayatana/indicator/messages/desktop [desktop_greeter] ObjectPath=/org/ayatana/indicator/messages/desktop_greeter [phone] ObjectPath=/org/ayatana/indicator/messages/phone Position=100 [phone_greeter] ObjectPath=/org/ayatana/indicator/messages/phone_greeter Position=100 ayatana-indicator-messages-24.5.1/data/org.ayatana.indicator.messages.gschema.xml0000644000000000000000000000073614764273406024737 0ustar List of applications that are shown in the messaging menu Applications corresponding to the desktop file IDs in this list are shown in the messaging menu. [] ayatana-indicator-messages-24.5.1/doc/CMakeLists.txt0000644000000000000000000000003414764273406017205 0ustar add_subdirectory(reference) ayatana-indicator-messages-24.5.1/doc/reference/CMakeLists.txt0000644000000000000000000002112714764273406021151 0ustar # messaging-menu-docs.xml configure_file("${CMAKE_CURRENT_SOURCE_DIR}/messaging-menu-docs.xml.in" "${CMAKE_CURRENT_BINARY_DIR}/messaging-menu-docs.xml" @ONLY) # messaging-menu-decl.txt # messaging-menu-decl-list.txt # messaging-menu-overrides.txt # messaging-menu-sections.txt # messaging-menu.types find_program(GTKDOC_SCAN gtkdoc-scan) add_custom_command( OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/messaging-menu-decl.txt" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/messaging-menu-decl-list.txt" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/messaging-menu-overrides.txt" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/messaging-menu-sections.txt" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/messaging-menu.types" DEPENDS "messaging-menu" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMAND ${GTKDOC_SCAN} --module=messaging-menu --source-dir="${CMAKE_SOURCE_DIR}/libmessaging-menu" ) # scangobj.sh list(JOIN PROJECT_DEPS_INCLUDE_DIRS " -I" GTKDOC_SCANGOBJ_INCLUDE_DIRS) list(JOIN PROJECT_DEPS_LIBRARIES " -l" GTKDOC_SCANGOBJ_LIBRARIES) set_source_files_properties("${CMAKE_CURRENT_BINARY_DIR}/scangobj.sh" GENERATED) file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/scangobj.sh" "LD_LIBRARY_PATH=\"$LD_LIBRARY_PATH:${CMAKE_BINARY_DIR}/libmessaging-menu\" CFLAGS=\"-I${GTKDOC_SCANGOBJ_INCLUDE_DIRS}\" LDFLAGS=\"-l${GTKDOC_SCANGOBJ_LIBRARIES} -L${CMAKE_BINARY_DIR}/libmessaging-menu -lmessaging-menu\" gtkdoc-scangobj --module=messaging-menu") # messaging-menu.actions" # messaging-menu.args" # messaging-menu.hierarchy" # messaging-menu.interfaces" # messaging-menu.prerequisites" # messaging-menu.signals" add_custom_command( OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/messaging-menu.actions" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/messaging-menu.args" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/messaging-menu.hierarchy" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/messaging-menu.interfaces" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/messaging-menu.prerequisites" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/messaging-menu.signals" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/messaging-menu-decl.txt" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/messaging-menu-decl-list.txt" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/messaging-menu-overrides.txt" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/messaging-menu-sections.txt" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/messaging-menu.types" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/scangobj.sh" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMAND sh scangobj.sh ) # messaging-menu-undeclared.txt # messaging-menu-undocumented.txt # messaging-menu-unused.txt # sgml.stamp # xml/annotation-glossary.xml # xml/api-index-deprecated.xml # xml/api-index-full.xml # xml/messaging-menu-app.xml # xml/messaging-menu-doc.bottom # xml/messaging-menu-doc.top # xml/messaging-menu-message.xml # xml/object_index.sgml # xml/tree_index.sgml find_program(GTKDOC_MKDB gtkdoc-mkdb) list(JOIN PROJECT_DEPS_INCLUDE_DIRS ";-I" GTKDOC_SCANGOBJ_INCLUDE_DIRS) list(JOIN PROJECT_DEPS_LIBRARIES ";-l" GTKDOC_SCANGOBJ_LIBRARIES) add_custom_command( OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/messaging-menu-undeclared.txt" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/messaging-menu-undocumented.txt" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/messaging-menu-unused.txt" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/xml/annotation-glossary.xml" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/xml/api-index-deprecated.xml" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/xml/api-index-full.xml" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/xml/messaging-menu-app.xml" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/xml/messaging-menu-doc.bottom" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/xml/messaging-menu-doc.top" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/xml/xml/messaging-menu-message.xml" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/xml/object_index.sgml" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/xml/tree_index.sgml" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/messaging-menu.actions" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/messaging-menu.args" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/messaging-menu.hierarchy" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/messaging-menu.interfaces" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/messaging-menu.prerequisites" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/messaging-menu.signals" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMAND ${GTKDOC_MKDB} --module=messaging-menu --output-format=xml --expand-content-files="" --main-sgml-file=messaging-menu-docs.xml --source-dir="${CMAKE_SOURCE_DIR}/libmessaging-menu" --xml-mode ) # html file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/html") # html/annotation-glossary.html # html/api-index-full.html # html/ch01.html # html/home.png # html/index.html # html/left.png # html/left-insensitive.png # html/messaging-menu.devhelp2 # html/MessagingMenuApp.html # html/MessagingMenuMessage.html # html/object-tree.html # html/right.png # html/right-insensitive.png # html/style.css # html/up.png # html/up-insensitive.png find_program(GTKDOC_MKHTML gtkdoc-mkhtml) add_custom_command( OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/html/annotation-glossary.html" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/html/api-index-full.html" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/html/ch01.html" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/html/home.png" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/html/index.html" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/html/left.png" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/html/left-insensitive.png" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/html/messaging-menu.devhelp2" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/html/MessagingMenuApp.html" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/html/MessagingMenuMessage.html" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/html/object-tree.html" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/html/right.png" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/html/right-insensitive.png" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/html/style.css" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/html/up.png" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/html/up-insensitive.png" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/messaging-menu-undeclared.txt" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/messaging-menu-undocumented.txt" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/messaging-menu-unused.txt" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/xml/annotation-glossary.xml" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/xml/api-index-deprecated.xml" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/xml/api-index-full.xml" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/xml/messaging-menu-app.xml" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/xml/messaging-menu-doc.bottom" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/xml/messaging-menu-doc.top" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/xml/xml/messaging-menu-message.xml" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/xml/object_index.sgml" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/xml/tree_index.sgml" WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/html" COMMAND ${GTKDOC_MKHTML} --path=${CMAKE_CURRENT_BINARY_DIR} messaging-menu messaging-menu-docs.xml ) # html/annotation-glossary.html # html/api-index-deprecated.html # html/api-index-full.html # html/ch01.html # html/index.html # html/object-tree.html # html/style.css find_program(GTKDOC_FIXXREF gtkdoc-fixxref) add_custom_command( OUTPUT "fixxref" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/html/annotation-glossary.html" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/html/api-index-full.html" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/html/ch01.html" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/html/home.png" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/html/index.html" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/html/left.png" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/html/left-insensitive.png" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/html/messaging-menu.devhelp2" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/html/MessagingMenuApp.html" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/html/MessagingMenuMessage.html" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/html/object-tree.html" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/html/right.png" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/html/right-insensitive.png" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/html/style.css" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/html/up.png" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/html/up-insensitive.png" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMAND ${GTKDOC_FIXXREF} --module=messaging-menu --module-dir=html --html-dir="${CMAKE_INSTALL_FULL_DATADIR}/gtk-doc/html" ) set_source_files_properties("fixxref" PROPERTIES SYMBOLIC TRUE) install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/html/" DESTINATION "${CMAKE_INSTALL_FULL_DATADIR}/gtk-doc/html/messaging-menu") add_custom_target("docs-references" ALL DEPENDS "fixxref") ayatana-indicator-messages-24.5.1/doc/reference/messaging-menu-docs.xml.in0000644000000000000000000000254514764273406023410 0ustar ]> Messaging Menu Reference Manual Messaging Menu Reference Manual for libayatana-messaging-menu &version; 2012 Canonical Ltd. API Reference Object Hierarchy API Index Index of deprecated API ayatana-indicator-messages-24.5.1/doc/reference/messaging-menu-overrides.txt0000644000000000000000000000000014764273406024054 0ustar ayatana-indicator-messages-24.5.1/doc/reference/messaging-menu-sections.txt0000644000000000000000000000337714764273406023725 0ustar
messaging-menu-app MessagingMenuStatus MessagingMenuAppClass messaging_menu_app_new messaging_menu_app_register messaging_menu_app_unregister messaging_menu_app_set_status messaging_menu_app_insert_source messaging_menu_app_append_source messaging_menu_app_insert_source_with_count messaging_menu_app_append_source_with_count messaging_menu_app_insert_source_with_time messaging_menu_app_append_source_with_time messaging_menu_app_append_source_with_string messaging_menu_app_insert_source_with_string messaging_menu_app_remove_source messaging_menu_app_has_source messaging_menu_app_set_source_label messaging_menu_app_set_source_icon messaging_menu_app_set_source_count messaging_menu_app_set_source_time messaging_menu_app_set_source_string messaging_menu_app_draw_attention messaging_menu_app_remove_attention messaging_menu_app_append_message messaging_menu_app_get_message messaging_menu_app_remove_message messaging_menu_app_remove_message_by_id MessagingMenuApp MESSAGING_MENU_APP MESSAGING_MENU_APP_CLASS MESSAGING_MENU_IS_APP MESSAGING_MENU_TYPE_APP messaging_menu_app_get_type
messaging-menu-message messaging_menu_message_new messaging_menu_message_get_id messaging_menu_message_get_icon messaging_menu_message_get_title messaging_menu_message_get_subtitle messaging_menu_message_get_body messaging_menu_message_get_time messaging_menu_message_get_draws_attention messaging_menu_message_set_draws_attention messaging_menu_message_add_action MessagingMenuMessage MESSAGING_MENU_IS_MESSAGE MESSAGING_MENU_IS_MESSAGE_CLASS MESSAGING_MENU_MESSAGE MESSAGING_MENU_MESSAGE_CLASS MESSAGING_MENU_MESSAGE_GET_CLASS MESSAGING_MENU_TYPE_MESSAGE messaging_menu_message_get_type
ayatana-indicator-messages-24.5.1/doc/reference/messaging-menu.types0000644000000000000000000000007414764273406022414 0ustar messaging_menu_app_get_type messaging_menu_message_get_type ayatana-indicator-messages-24.5.1/INSTALL.md0000644000000000000000000000173214764273406015336 0ustar # Build and installation instructions ## Compile-time build dependencies - cmake (>= 3.13) - cmake-extras - intltool - vala (>= 0.20) - systemd - glib-2.0 (>= 2.36) - accountsservice - gobject-introspection - gtk-doc - gtest (>= 1.6.0) - **For testing** - python3-dbusmock - **For testing** - dbus-test-runner - **For testing** - gcovr (>= 2.4) - **For coverage** - lcov (>= 1.9) - **For coverage** ## For end-users and packagers ``` cd ayatana-indicator-messages-X.Y.Z mkdir build cd build cmake .. make sudo make install ``` **The install prefix defaults to `/usr`, change it with `-DCMAKE_INSTALL_PREFIX=/some/path`** ## For testers - unit tests only ``` cd ayatana-indicator-messages-X.Y.Z mkdir build cd build cmake .. -DENABLE_TESTS=ON make make test make cppcheck ``` ## For testers - both unit tests and code coverage ``` cd ayatana-indicator-messages-X.Y.Z mkdir build-coverage cd build-coverage cmake .. -DENABLE_COVERAGE=ON make make coverage-html ``` ayatana-indicator-messages-24.5.1/libmessaging-menu/client-example.py0000755000000000000000000000146714764273406022605 0ustar #!/usr/bin/env python from gi.repository import GLib, Gio, MessagingMenu mmapp = MessagingMenu.App(desktop_id='evolution.desktop') # make the application appear in the messaging menu. The name and icon are taken from the desktop file above mmapp.register() def source_activated(mmapp, source_id): print('source {} activated'.format(source_id)) # do something when the user clicks on a source. The source will be removed automatically mmapp.connect('activate-source', source_activated) # add a 'source' (a menu item below the application's name) with the name 'Inbox' and a count of 7 icon = Gio.ThemedIcon.new_with_default_fallbacks('my-source-icon') mmapp.append_source_with_count('inbox', icon, 'Inbox', 7) # this is not necessary for gtk applications, which start a mainloop in gtk_main() GLib.MainLoop().run() ayatana-indicator-messages-24.5.1/libmessaging-menu/CMakeLists.txt0000644000000000000000000000701614764273406022055 0ustar # messaging-menu.pc configure_file("${CMAKE_CURRENT_SOURCE_DIR}/messaging-menu.pc.in" "${CMAKE_CURRENT_BINARY_DIR}/messaging-menu.pc" @ONLY) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/messaging-menu.pc" DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}/pkgconfig") # messaging-menu-app.h # messaging-menu-message.h # messaging-menu.h install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/messaging-menu-app.h" DESTINATION "${CMAKE_INSTALL_FULL_INCLUDEDIR}/messaging-menu") install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/messaging-menu-message.h" DESTINATION "${CMAKE_INSTALL_FULL_INCLUDEDIR}/messaging-menu") install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/messaging-menu.h" DESTINATION "${CMAKE_INSTALL_FULL_INCLUDEDIR}/messaging-menu") # libmessaging-menu.so set( SOURCES messaging-menu-app.c messaging-menu-message.c ) set( SOURCES_GEN ${CMAKE_BINARY_DIR}/src/indicator-messages-service.c ${CMAKE_BINARY_DIR}/src/indicator-messages-application.c ) set_source_files_properties(${SOURCES_GEN} PROPERTIES GENERATED TRUE) add_library("messaging-menu" SHARED ${SOURCES} ${SOURCES_GEN}) set_target_properties("messaging-menu" PROPERTIES VERSION 0.0.0 SOVERSION 0) target_include_directories("messaging-menu" PUBLIC ${PROJECT_DEPS_INCLUDE_DIRS} "${CMAKE_BINARY_DIR}/src") target_link_options("messaging-menu" PRIVATE "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/messaging-menu.symbols") target_link_libraries("messaging-menu" ${PROJECT_DEPS_LIBRARIES}) add_dependencies("messaging-menu" "ayatana-indicator-messages-service") install(TARGETS "messaging-menu" DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}") # MessagingMenu-1.0.gir find_package(GObjectIntrospection REQUIRED) set( HEADERS messaging-menu-app.h messaging-menu-message.h ) add_custom_command( OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/MessagingMenu-1.0.gir" DEPENDS "messaging-menu" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} COMMAND ${INTROSPECTION_SCANNER} ${HEADERS} ${SOURCES} --namespace=MessagingMenu --nsversion=1.0 --quiet --warn-all --include=GObject-2.0 --include=Gio-2.0 --pkg-export=messaging-menu --library="messaging-menu" --c-include="messaging-menu.h" --library-path=${CMAKE_CURRENT_BINARY_DIR} --output "${CMAKE_CURRENT_BINARY_DIR}/MessagingMenu-1.0.gir" ) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/MessagingMenu-1.0.gir" DESTINATION "${CMAKE_INSTALL_FULL_DATADIR}/gir-1.0") # MessagingMenu-1.0.typelib add_custom_command( OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/MessagingMenu-1.0.typelib" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/MessagingMenu-1.0.gir" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMAND ${INTROSPECTION_COMPILER} --includedir=${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_BINARY_DIR}/MessagingMenu-1.0.gir -o "${CMAKE_CURRENT_BINARY_DIR}/MessagingMenu-1.0.typelib" ) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/MessagingMenu-1.0.typelib" DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}/girepository-1.0") # MessagingMenu-1.0.vapi find_package(Vala REQUIRED) add_custom_command( OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/MessagingMenu-1.0.vapi" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/MessagingMenu-1.0.typelib" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMAND ${VAPI_GEN} --library=MessagingMenu-1.0 --pkg gio-2.0 MessagingMenu-1.0.gir ) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/MessagingMenu-1.0.vapi" DESTINATION "${CMAKE_INSTALL_FULL_DATADIR}/vala/vapi") add_custom_target("libmessaging-menu" ALL DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/MessagingMenu-1.0.vapi") ayatana-indicator-messages-24.5.1/libmessaging-menu/messaging-menu-app.c0000644000000000000000000013510114764273406023153 0ustar /* * Copyright 2012 Canonical Ltd. * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3, as * published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranties of * MERCHANTABILITY, SATISFACTORY QUALITY, 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, see . * * Authors: * Lars Uebernickel */ #include "messaging-menu-app.h" #include "indicator-messages-service.h" #include "indicator-messages-application.h" #include #include /** * SECTION:messaging-menu-app * @title: MessagingMenuApp * @short_description: An application section in the messaging menu * @include: messaging-menu.h * * A #MessagingMenuApp represents an application section in the * Messaging Menu. An application section is tied to an installed * application through a desktop file id, which must be passed to * messaging_menu_app_new(). * * To register the application with the Messaging Menu, call * messaging_menu_app_register(). This signifies that the application * should be present in the menu and be marked as "running". * * The first menu item in an application section represents the * application itself, using the name and icon found in the associated * desktop file. Activating this item starts the application. * * Following the application item, the Messaging Menu inserts all * shortcut actions found in the desktop file. Actions whose * NotShowIn keyword contains "Messaging Menu" or whose * OnlyShowIn keyword does not contain "Messaging Menu" * will not appear (the * desktop file specification contains a detailed explanation of * shortcut actions.) An application cannot add, remove, or change * these shortcut items while it is running. * * Next, an application section contains menu items for message sources. * What exactly constitutes a message source depends on the type of * application: an email client's message sources are folders * containing new messages, while those of a chat program are persons * that have contacted the user. * * A message source is represented in the menu by a label and optionally * also an icon. It can be associated with either a count, a time, or * an arbitrary string, which will appear on the right side of the menu * item. * * When the user activates a source, the source is immediately removed * from the menu and the "activate-source" signal is emitted. * * Applications should always expose all the message sources available. * However, the Messaging Menu might limit the amount of sources it * displays to the user. * * The Messaging Menu offers users a way to set their chat status * (available, away, busy, invisible, or offline) for multiple * applications at once. Applications that appear in the Messaging Menu * can integrate with this by setting the * "X-MessagingMenu-UsesChatSection" key in their desktop file to True. * Use messaging_menu_app_set_status() to signify that the application's * chat status has changed. When the user changes status through the * Messaging Menu, the ::status-changed signal will be emitted. * * If the application stops running without calling * messaging_menu_app_unregister(), it will be marked as "not running". * Its application and shortcut items stay in the menu, but all message * sources are removed. If messaging_menu_app_unregister() is called, * the application section is removed completely. * * More information about the design and recommended usage of the * Messaging Menu is available at https://wiki.ubuntu.com/MessagingMenu. */ /** * MessagingMenuApp: * * #MessagingMenuApp is an opaque structure. */ struct _MessagingMenuApp { GObject parent_instance; GDesktopAppInfo *appinfo; int registered; /* -1 for unknown */ MessagingMenuStatus status; gboolean status_set; GDBusConnection *bus; GHashTable *messages; GList *sources; IndicatorMessagesApplication *app_interface; IndicatorMessagesService *messages_service; guint watch_id; GCancellable *cancellable; }; G_DEFINE_TYPE (MessagingMenuApp, messaging_menu_app, G_TYPE_OBJECT); enum { PROP_0, PROP_DESKTOP_ID, N_PROPERTIES }; enum { ACTIVATE_SOURCE, STATUS_CHANGED, N_SIGNALS }; static GParamSpec *properties[N_PROPERTIES]; static guint signals[N_SIGNALS]; static const gchar *status_ids[] = { "available", "away", "busy", "invisible", "offline" }; typedef struct { gchar *id; GIcon *icon; gchar *label; guint32 count; gint64 time; gchar *string; gboolean draws_attention; } Source; static void global_status_changed (IndicatorMessagesService *service, const gchar *status_str, gpointer user_data); /* in messaging-menu-message.c */ GVariant * _messaging_menu_message_to_variant (MessagingMenuMessage *msg); static void source_free (gpointer data) { Source *source = data; if (source) { g_free (source->id); g_clear_object (&source->icon); g_free (source->label); g_free (source->string); g_slice_free (Source, source); } } static GVariant * source_to_variant (Source *source) { GVariant *v; GVariant *serialized_icon; GVariantBuilder builder; serialized_icon = source->icon ? g_icon_serialize (source->icon) : NULL; g_variant_builder_init (&builder, G_VARIANT_TYPE ("av")); if (serialized_icon) { g_variant_builder_add (&builder, "v", serialized_icon); g_variant_unref (serialized_icon); } v = g_variant_new ("(ssavuxsb)", source->id, source->label, &builder, source->count, source->time, source->string ? source->string : "", source->draws_attention); return v; } static gchar * messaging_menu_app_get_dbus_object_path (MessagingMenuApp *app) { gchar *path; if (!app->appinfo) return NULL; path = g_strconcat ("/org/ayatana/indicator/messages/", g_app_info_get_id (G_APP_INFO (app->appinfo)), NULL); g_strcanon (path, "/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", '_'); return path; } static void messaging_menu_app_got_bus (GObject *source, GAsyncResult *res, gpointer user_data) { MessagingMenuApp *app = user_data; GError *error = NULL; gchar *object_path; app->bus = g_bus_get_finish (res, &error); if (app->bus == NULL) { g_warning ("unable to connect to session bus: %s", error->message); g_error_free (error); return; } object_path = messaging_menu_app_get_dbus_object_path (app); if (object_path && !g_dbus_interface_skeleton_export (G_DBUS_INTERFACE_SKELETON (app->app_interface), app->bus, object_path, &error)) { g_warning ("unable to export application interface: %s", error->message); g_clear_error (&error); } g_free (object_path); } static void messaging_menu_app_set_desktop_id (MessagingMenuApp *app, const gchar *desktop_id) { g_return_if_fail (desktop_id != NULL); /* no need to clean up, it's construct only */ app->appinfo = g_desktop_app_info_new (desktop_id); if (app->appinfo == NULL) { g_warning ("could not find the desktop file for '%s'", desktop_id); } g_bus_get (G_BUS_TYPE_SESSION, app->cancellable, messaging_menu_app_got_bus, app); } static void messaging_menu_app_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { MessagingMenuApp *app = MESSAGING_MENU_APP (object); switch (prop_id) { case PROP_DESKTOP_ID: messaging_menu_app_set_desktop_id (app, g_value_get_string (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void messaging_menu_app_finalize (GObject *object) { G_OBJECT_CLASS (messaging_menu_app_parent_class)->finalize (object); } static void messaging_menu_app_dispose (GObject *object) { MessagingMenuApp *app = MESSAGING_MENU_APP (object); if (app->watch_id > 0) { g_bus_unwatch_name (app->watch_id); app->watch_id = 0; } if (app->cancellable) { g_cancellable_cancel (app->cancellable); g_object_unref (app->cancellable); app->cancellable = NULL; } if (app->messages_service) { indicator_messages_service_call_application_stopped_running (app->messages_service, g_app_info_get_id (G_APP_INFO (app->appinfo)), NULL, NULL, NULL); g_signal_handlers_disconnect_by_func (app->messages_service, global_status_changed, app); g_clear_object (&app->messages_service); } g_clear_pointer (&app->messages, g_hash_table_unref); g_list_free_full (app->sources, source_free); app->sources = NULL; g_clear_object (&app->app_interface); g_clear_object (&app->appinfo); g_clear_object (&app->bus); G_OBJECT_CLASS (messaging_menu_app_parent_class)->dispose (object); } static void messaging_menu_app_class_init (MessagingMenuAppClass *class) { GObjectClass *object_class = G_OBJECT_CLASS (class); object_class->set_property = messaging_menu_app_set_property; object_class->finalize = messaging_menu_app_finalize; object_class->dispose = messaging_menu_app_dispose; /** * MessagingMenuApp:desktop-id: * * The desktop id of the application associated with this application * section. Must be given when the #MessagingMenuApp is created. */ properties[PROP_DESKTOP_ID] = g_param_spec_string ("desktop-id", "Desktop Id", "The desktop id of the associated application", NULL, G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS); g_object_class_install_properties (object_class, N_PROPERTIES, properties); /** * MessagingMenuApp::activate-source: * @mmapp: the #MessagingMenuApp * @source_id: the source id that was activated * * Emitted when the user has activated the message source with id * @source_id. The source is immediately removed from the menu, * handlers of this signal do not need to call * messaging_menu_app_remove_source(). */ signals[ACTIVATE_SOURCE] = g_signal_new ("activate-source", MESSAGING_MENU_TYPE_APP, G_SIGNAL_RUN_FIRST | G_SIGNAL_DETAILED, 0, NULL, NULL, g_cclosure_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING); /** * MessagingMenuApp::status-changed: * @mmapp: the #MessagingMenuApp * @status: a #MessagingMenuStatus * * Emitted when the chat status is changed through the messaging menu. * * Applications which are registered to use the chat status should * change their status to @status upon receiving this signal. Call * messaging_menu_app_set_status() to acknowledge that the application * changed its status. */ signals[STATUS_CHANGED] = g_signal_new ("status-changed", MESSAGING_MENU_TYPE_APP, G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_VOID__INT, G_TYPE_NONE, 1, G_TYPE_INT); } static void created_messages_service (GObject *source_object, GAsyncResult *result, gpointer user_data) { MessagingMenuApp *app = user_data; GError *error = NULL; app->messages_service = indicator_messages_service_proxy_new_finish (result, &error); if (!app->messages_service) { g_warning ("unable to connect to the mesaging menu service: %s", error->message); g_error_free (error); return; } g_signal_connect (app->messages_service, "status-changed", G_CALLBACK (global_status_changed), app); /* sync current status */ if (app->registered == TRUE) messaging_menu_app_register (app); else if (app->registered == FALSE) messaging_menu_app_unregister (app); if (app->status_set) messaging_menu_app_set_status (app, app->status); } static void indicator_messages_appeared (GDBusConnection *bus, const gchar *name, const gchar *name_owner, gpointer user_data) { MessagingMenuApp *app = user_data; indicator_messages_service_proxy_new (bus, G_DBUS_PROXY_FLAGS_NONE, "org.ayatana.indicator.messages", "/org/ayatana/indicator/messages/service", app->cancellable, created_messages_service, app); } static void indicator_messages_vanished (GDBusConnection *bus, const gchar *name, gpointer user_data) { MessagingMenuApp *app = user_data; if (app->messages_service) { g_signal_handlers_disconnect_by_func (app->messages_service, global_status_changed, app); g_clear_object (&app->messages_service); } } static gboolean messaging_menu_app_list_sources (IndicatorMessagesApplication *app_interface, GDBusMethodInvocation *invocation, gpointer user_data) { MessagingMenuApp *app = user_data; GVariantBuilder builder; GList *it; g_variant_builder_init (&builder, G_VARIANT_TYPE ("a(ssavuxsb)")); for (it = app->sources; it; it = it->next) g_variant_builder_add_value (&builder, source_to_variant (it->data)); indicator_messages_application_complete_list_sources (app_interface, invocation, g_variant_builder_end (&builder)); return TRUE; } static gint compare_source_id (gconstpointer a, gconstpointer b) { const Source *source = a; const gchar *id = b; return strcmp (source->id, id); } static gboolean messaging_menu_app_remove_source_internal (MessagingMenuApp *app, const gchar *source_id) { GList *node; node = g_list_find_custom (app->sources, source_id, compare_source_id); if (node) { source_free (node->data); app->sources = g_list_delete_link (app->sources, node); return TRUE; } return FALSE; } static gboolean messaging_menu_app_remove_message_internal (MessagingMenuApp *app, const gchar *message_id) { return g_hash_table_remove (app->messages, message_id); } static gboolean messaging_menu_app_activate_source (IndicatorMessagesApplication *app_interface, GDBusMethodInvocation *invocation, const gchar *source_id, gpointer user_data) { MessagingMenuApp *app = user_data; GQuark q = g_quark_from_string (source_id); /* Activate implies removing the source, no need for SourceRemoved */ if (messaging_menu_app_remove_source_internal (app, source_id)) g_signal_emit (app, signals[ACTIVATE_SOURCE], q, source_id); indicator_messages_application_complete_activate_source (app_interface, invocation); return TRUE; } static gboolean messaging_menu_app_list_messages (IndicatorMessagesApplication *app_interface, GDBusMethodInvocation *invocation, gpointer user_data) { MessagingMenuApp *app = user_data; GVariantBuilder builder; GHashTableIter iter; MessagingMenuMessage *message; g_variant_builder_init (&builder, G_VARIANT_TYPE ("a(savsssxaa{sv}b)")); g_hash_table_iter_init (&iter, app->messages); while (g_hash_table_iter_next (&iter, NULL, (gpointer *) &message)) g_variant_builder_add_value (&builder, _messaging_menu_message_to_variant (message)); indicator_messages_application_complete_list_messages (app_interface, invocation, g_variant_builder_end (&builder)); return TRUE; } static gboolean messaging_menu_app_activate_message (IndicatorMessagesApplication *app_interface, GDBusMethodInvocation *invocation, const gchar *message_id, const gchar *action_id, GVariant *params, gpointer user_data) { MessagingMenuApp *app = user_data; MessagingMenuMessage *msg; msg = g_hash_table_lookup (app->messages, message_id); if (msg) { if (*action_id) { gchar *signal; signal = g_strconcat ("activate::", action_id, NULL); if (g_variant_n_children (params)) { GVariant *param; g_variant_get_child (params, 0, "v", ¶m); g_signal_emit_by_name (msg, signal, action_id, param); g_variant_unref (param); } else g_signal_emit_by_name (msg, signal, action_id, NULL); g_free (signal); } else g_signal_emit_by_name (msg, "activate", NULL, NULL); /* Activate implies removing the message, no need for MessageRemoved */ messaging_menu_app_remove_message_internal (app, message_id); } indicator_messages_application_complete_activate_message (app_interface, invocation); return TRUE; } static gboolean messaging_menu_app_dismiss (IndicatorMessagesApplication *app_interface, GDBusMethodInvocation *invocation, const gchar * const *sources, const gchar * const *messages, gpointer user_data) { MessagingMenuApp *app = user_data; const gchar * const *it; for (it = sources; *it; it++) messaging_menu_app_remove_source_internal (app, *it); for (it = messages; *it; it++) messaging_menu_app_remove_message_internal (app, *it); return TRUE; } static void messaging_menu_app_init (MessagingMenuApp *app) { app->registered = -1; app->status_set = FALSE; app->bus = NULL; app->cancellable = g_cancellable_new (); app->app_interface = indicator_messages_application_skeleton_new (); g_signal_connect (app->app_interface, "handle-list-sources", G_CALLBACK (messaging_menu_app_list_sources), app); g_signal_connect (app->app_interface, "handle-activate-source", G_CALLBACK (messaging_menu_app_activate_source), app); g_signal_connect (app->app_interface, "handle-list-messages", G_CALLBACK (messaging_menu_app_list_messages), app); g_signal_connect (app->app_interface, "handle-activate-message", G_CALLBACK (messaging_menu_app_activate_message), app); g_signal_connect (app->app_interface, "handle-dismiss", G_CALLBACK (messaging_menu_app_dismiss), app); app->messages = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref); app->watch_id = g_bus_watch_name (G_BUS_TYPE_SESSION, "org.ayatana.indicator.messages", G_BUS_NAME_WATCHER_FLAGS_NONE, indicator_messages_appeared, indicator_messages_vanished, app, NULL); } /** * messaging_menu_new: * @desktop_id: a desktop file id. See g_desktop_app_info_new() * * Creates a new #MessagingMenuApp for the application associated with * @desktop_id. * * The application will not show up (nor be marked as "running") in the * Messaging Menu before messaging_menu_app_register() has been called. * * Returns: (transfer full): a new #MessagingMenuApp */ MessagingMenuApp * messaging_menu_app_new (const gchar *desktop_id) { return g_object_new (MESSAGING_MENU_TYPE_APP, "desktop-id", desktop_id, NULL); } /** * messaging_menu_app_register: * @app: a #MessagingMenuApp * * Registers @app with the Messaging Menu. * * If the application doesn't already have a section in the Messaging * Menu, one will be created for it. The application will also be * marked as "running". * * The application will be marked as "not running" as soon as @app is * destroyed. The application launcher as well as shortcut actions will * remain in the menu. To completely remove the application section * from the Messaging Menu, call messaging_menu_app_unregister(). */ void messaging_menu_app_register (MessagingMenuApp *app) { gchar *object_path; g_return_if_fail (MESSAGING_MENU_IS_APP (app)); app->registered = TRUE; /* state will be synced right after connecting to the service */ if (!app->messages_service) return; object_path = messaging_menu_app_get_dbus_object_path (app); if (!object_path) return; indicator_messages_service_call_register_application (app->messages_service, g_app_info_get_id (G_APP_INFO (app->appinfo)), object_path, app->cancellable, NULL, NULL); g_free (object_path); } /** * messaging_menu_app_unregister: * @app: a #MessagingMenuApp * * Completely removes the @app from the Messaging Menu. If the * application's launcher and shortcut actions should remain in the * menu, destroying @app with g_object_unref() suffices. * * Note: @app will remain valid and usable after this call. */ void messaging_menu_app_unregister (MessagingMenuApp *app) { g_return_if_fail (MESSAGING_MENU_IS_APP (app)); app->registered = FALSE; /* state will be synced right after connecting to the service */ if (!app->messages_service) return; if (!app->appinfo) return; indicator_messages_service_call_unregister_application (app->messages_service, g_app_info_get_id (G_APP_INFO (app->appinfo)), app->cancellable, NULL, NULL); } /** * messaging_menu_app_set_status: * @app: a #MessagingMenuApp * @status: a #MessagingMenuStatus * * Notify the Messaging Menu that the chat status of @app has changed to * @status. * * Connect to the ::status-changed signal to receive notification about * the user changing their global chat status through the Messaging * Menu. * * This function does nothing for applications whose desktop file does * not include X-MessagingMenu-UsesChatSection. */ void messaging_menu_app_set_status (MessagingMenuApp *app, MessagingMenuStatus status) { g_return_if_fail (MESSAGING_MENU_IS_APP (app)); g_return_if_fail (status >= MESSAGING_MENU_STATUS_AVAILABLE && status <= MESSAGING_MENU_STATUS_OFFLINE); app->status = status; app->status_set = TRUE; /* state will be synced right after connecting to the service */ if (!app->messages_service) return; if (!app->appinfo) return; indicator_messages_service_call_set_status (app->messages_service, g_app_info_get_id (G_APP_INFO (app->appinfo)), status_ids [status], app->cancellable, NULL, NULL); } static int status_from_string (const gchar *s) { int i; if (!s) return -1; for (i = 0; i <= MESSAGING_MENU_STATUS_OFFLINE; i++) { if (g_str_equal (s, status_ids[i])) return i; } return -1; } static void global_status_changed (IndicatorMessagesService *service, const gchar *status_str, gpointer user_data) { MessagingMenuApp *app = user_data; int status; status = status_from_string (status_str); g_return_if_fail (status >= 0); g_signal_emit (app, signals[STATUS_CHANGED], 0, status); } static Source * messaging_menu_app_lookup_source (MessagingMenuApp *app, const gchar *id) { GList *node; node = g_list_find_custom (app->sources, id, compare_source_id); return node ? node->data : NULL; } static Source * messaging_menu_app_get_source (MessagingMenuApp *app, const gchar *id) { Source *source; source = messaging_menu_app_lookup_source (app, id); if (!source) g_warning ("a source with id '%s' doesn't exist", id); return source; } static void messaging_menu_app_notify_source_changed (MessagingMenuApp *app, Source *source) { indicator_messages_application_emit_source_changed (app->app_interface, source_to_variant (source)); } static void messaging_menu_app_insert_source_internal (MessagingMenuApp *app, gint position, const gchar *id, GIcon *icon, const gchar *label, guint count, gint64 time, const gchar *string) { Source *source; g_return_if_fail (MESSAGING_MENU_IS_APP (app)); g_return_if_fail (id != NULL); g_return_if_fail (label != NULL); if (messaging_menu_app_lookup_source (app, id)) { g_warning ("a source with id '%s' already exists", id); return; } source = g_slice_new0 (Source); source->id = g_strdup (id); source->label = g_strdup (label); if (icon) source->icon = g_object_ref (icon); source->count = count; source->time = time; source->string = g_strdup (string); app->sources = g_list_insert (app->sources, source, position); indicator_messages_application_emit_source_added (app->app_interface, position, source_to_variant (source)); } /** * messaging_menu_app_insert_source: * @app: a #MessagingMenuApp * @position: the position at which to insert the source * @id: a unique identifier for the source to be added * @icon: the icon associated with the source * @label: a user-visible string best describing the source * * Inserts a new message source into the section representing @app. Equivalent * to calling messaging_menu_app_insert_source_with_time() with the current * time. * * It is an error to insert a source with an @id which already exists. Use * messaging_menu_app_has_source() to find out whether there is such a source. */ void messaging_menu_app_insert_source (MessagingMenuApp *app, gint position, const gchar *id, GIcon *icon, const gchar *label) { messaging_menu_app_insert_source_with_time (app, position, id, icon, label, g_get_real_time ()); } /** * messaging_menu_app_append_source: * @app: a #MessagingMenuApp * @id: a unique identifier for the source to be added * @icon: (allow-none): the icon associated with the source * @label: a user-visible string best describing the source * * Appends a new message source to the end of the section representing @app. * Equivalent to calling messaging_menu_app_append_source_with_time() with the * current time. * * It is an error to add a source with an @id which already exists. Use * messaging_menu_app_has_source() to find out whether there is such a source. */ void messaging_menu_app_append_source (MessagingMenuApp *app, const gchar *id, GIcon *icon, const gchar *label) { messaging_menu_app_insert_source (app, -1, id, icon, label); } /** * messaging_menu_app_insert_source_with_count: * @app: a #MessagingMenuApp * @position: the position at which to insert the source * @id: a unique identifier for the source to be added * @icon: (allow-none): the icon associated with the source * @label: a user-visible string best describing the source * @count: the count for the source * * Inserts a new message source into the section representing @app and * initializes it with @count. * * To update the count, use messaging_menu_app_set_source_count(). * * It is an error to insert a source with an @id which already exists. Use * messaging_menu_app_has_source() to find out whether there is such a source. */ void messaging_menu_app_insert_source_with_count (MessagingMenuApp *app, gint position, const gchar *id, GIcon *icon, const gchar *label, guint count) { messaging_menu_app_insert_source_internal (app, position, id, icon, label, count, 0, ""); } /** * messaging_menu_app_append_source_with_count: * @app: a #MessagingMenuApp * @id: a unique identifier for the source to be added * @icon: (allow-none): the icon associated with the source * @label: a user-visible string best describing the source * @count: the count for the source * * Appends a new message source to the end of the section representing @app and * initializes it with @count. * * To update the count, use messaging_menu_app_set_source_count(). * * It is an error to add a source with an @id which already exists. Use * messaging_menu_app_has_source() to find out whether there is such a source. */ void messaging_menu_app_append_source_with_count (MessagingMenuApp *app, const gchar *id, GIcon *icon, const gchar *label, guint count) { messaging_menu_app_insert_source_with_count (app, -1, id, icon, label, count); } /** * messaging_menu_app_insert_source_with_time: * @app: a #MessagingMenuApp * @position: the position at which to insert the source * @id: a unique identifier for the source to be added * @icon: (allow-none): the icon associated with the source * @label: a user-visible string best describing the source * @time: the time when the source was created, in microseconds * * Inserts a new message source into the section representing @app and * initializes it with @time. Use messaging_menu_app_insert_source() to * insert a source with the current time. * * To change the time, use messaging_menu_app_set_source_time(). * * It is an error to insert a source with an @id which already exists. Use * messaging_menu_app_has_source() to find out whether there is such a source. */ void messaging_menu_app_insert_source_with_time (MessagingMenuApp *app, gint position, const gchar *id, GIcon *icon, const gchar *label, gint64 time) { messaging_menu_app_insert_source_internal (app, position, id, icon, label, 0, time, ""); } /** * messaging_menu_app_append_source_with_time: * @app: a #MessagingMenuApp * @id: a unique identifier for the source to be added * @icon: (allow-none): the icon associated with the source * @label: a user-visible string best describing the source * @time: the time when the source was created, in microseconds * * Appends a new message source to the end of the section representing * @app and initializes it with @time. Use * messaging_menu_app_append_source() to append a source with the * current time. * * To change the time, use messaging_menu_app_set_source_time(). * * It is an error to insert a source with an @id which already exists. Use * messaging_menu_app_has_source() to find out whether there is such a source. */ void messaging_menu_app_append_source_with_time (MessagingMenuApp *app, const gchar *id, GIcon *icon, const gchar *label, gint64 time) { messaging_menu_app_insert_source_with_time (app, -1, id, icon, label, time); } /** * messaging_menu_app_insert_source_with_string: * @app: a #MessagingMenuApp * @position: the position at which to insert the source * @id: a unique identifier for the source to be added * @icon: (allow-none): the icon associated with the source * @label: a user-visible string best describing the source * @str: a string associated with the source * * Inserts a new message source into the section representing @app and * initializes it with @str. * * To update the string, use messaging_menu_app_set_source_string(). * * It is an error to insert a source with an @id which already exists. Use * messaging_menu_app_has_source() to find out whether there is such a source. */ void messaging_menu_app_insert_source_with_string (MessagingMenuApp *app, gint position, const gchar *id, GIcon *icon, const gchar *label, const gchar *str) { messaging_menu_app_insert_source_internal (app, position, id, icon, label, 0, 0, str); } /** * messaging_menu_app_append_source_with_string: * @app: a #MessagingMenuApp * @id: a unique identifier for the source to be added * @icon: (allow-none): the icon associated with the source * @label: a user-visible string best describing the source * @str: a string associated with the source * * Appends a new message source to the end of the section representing @app and * initializes it with @str. * * To update the string, use messaging_menu_app_set_source_string(). * * It is an error to insert a source with an @id which already exists. Use * messaging_menu_app_has_source() to find out whether there is such a source. */ void messaging_menu_app_append_source_with_string (MessagingMenuApp *app, const gchar *id, GIcon *icon, const gchar *label, const gchar *str) { messaging_menu_app_insert_source_with_string (app, -1, id, icon, label, str); } /** * messaging_menu_app_remove_source: * @app: a #MessagingMenuApp * @source_id: the id of the source to remove * * Removes the source corresponding to @source_id from the menu. */ void messaging_menu_app_remove_source (MessagingMenuApp *app, const gchar *source_id) { g_return_if_fail (MESSAGING_MENU_IS_APP (app)); g_return_if_fail (source_id != NULL); if (messaging_menu_app_remove_source_internal (app, source_id)) indicator_messages_application_emit_source_removed (app->app_interface, source_id); } /** * messaging_menu_app_has_source: * @app: a #MessagingMenuApp * @source_id: a source id * * Returns: TRUE if there is a source associated with @source_id */ gboolean messaging_menu_app_has_source (MessagingMenuApp *app, const gchar *source_id) { g_return_val_if_fail (MESSAGING_MENU_IS_APP (app), FALSE); g_return_val_if_fail (source_id != NULL, FALSE); return messaging_menu_app_lookup_source (app, source_id) != NULL; } /** * messaging_menu_app_set_source_label: * @app: a #MessagingMenuApp * @source_id: a source id * @label: the new label for the source * * Changes the label of @source_id to @label. */ void messaging_menu_app_set_source_label (MessagingMenuApp *app, const gchar *source_id, const gchar *label) { Source *source; g_return_if_fail (MESSAGING_MENU_IS_APP (app)); g_return_if_fail (source_id != NULL); g_return_if_fail (label != NULL); source = messaging_menu_app_get_source (app, source_id); if (source) { g_free (source->label); source->label = g_strdup (label); messaging_menu_app_notify_source_changed (app, source); } } /** * messaging_menu_app_set_source_icon: * @app: a #MessagingMenuApp * @source_id: a source id * @icon: (allow-none): the new icon for the source * * Changes the icon of @source_id to @icon. */ void messaging_menu_app_set_source_icon (MessagingMenuApp *app, const gchar *source_id, GIcon *icon) { Source *source; g_return_if_fail (MESSAGING_MENU_IS_APP (app)); g_return_if_fail (source_id != NULL); source = messaging_menu_app_get_source (app, source_id); if (source) { g_clear_object (&source->icon); if (icon) source->icon = g_object_ref (icon); messaging_menu_app_notify_source_changed (app, source); } } /** * messaging_menu_app_set_source_count: * @app: a #MessagingMenuApp * @source_id: a source id * @count: the new count for the source * * Updates the count of @source_id to @count. */ void messaging_menu_app_set_source_count (MessagingMenuApp *app, const gchar *source_id, guint count) { Source *source; g_return_if_fail (MESSAGING_MENU_IS_APP (app)); g_return_if_fail (source_id != NULL); source = messaging_menu_app_get_source (app, source_id); if (source) { source->count = count; messaging_menu_app_notify_source_changed (app, source); } } /** * messaging_menu_app_set_source_time: * @app: a #MessagingMenuApp * @source_id: a source id * @time: the new time for the source, in microseconds * * Updates the time of @source_id to @time. */ void messaging_menu_app_set_source_time (MessagingMenuApp *app, const gchar *source_id, gint64 time) { Source *source; g_return_if_fail (MESSAGING_MENU_IS_APP (app)); g_return_if_fail (source_id != NULL); source = messaging_menu_app_get_source (app, source_id); if (source) { source->time = time; messaging_menu_app_notify_source_changed (app, source); } } /** * messaging_menu_app_set_source_string: * @app: a #MessagingMenuApp * @source_id: a source id * @str: the new string for the source * * Updates the string displayed next to @source_id to @str. */ void messaging_menu_app_set_source_string (MessagingMenuApp *app, const gchar *source_id, const gchar *str) { Source *source; g_return_if_fail (MESSAGING_MENU_IS_APP (app)); g_return_if_fail (source_id != NULL); source = messaging_menu_app_get_source (app, source_id); if (source) { g_free (source->string); source->string = g_strdup (str); messaging_menu_app_notify_source_changed (app, source); } } /** * messaging_menu_app_draw_attention: * @app: a #MessagingMenuApp * @source_id: a source id * * Indicates that @source_id has important unread messages. Currently, this * means that the messaging menu's envelope icon will turn blue. * * Use messaging_menu_app_remove_attention() to stop indicating that the source * needs attention. */ void messaging_menu_app_draw_attention (MessagingMenuApp *app, const gchar *source_id) { Source *source; g_return_if_fail (MESSAGING_MENU_IS_APP (app)); g_return_if_fail (source_id != NULL); source = messaging_menu_app_get_source (app, source_id); if (source) { source->draws_attention = TRUE; messaging_menu_app_notify_source_changed (app, source); } } /** * messaging_menu_app_remove_attention: * @app: a #MessagingMenuApp * @source_id: a source id * * Stop indicating that @source_id needs attention. * * This function does not need to be called when the source is removed * with messaging_menu_app_remove_source() or the user has activated the * source. * * Use messaging_menu_app_draw_attention() to make @source_id draw attention * again. */ void messaging_menu_app_remove_attention (MessagingMenuApp *app, const gchar *source_id) { Source *source; g_return_if_fail (MESSAGING_MENU_IS_APP (app)); g_return_if_fail (source_id != NULL); source = messaging_menu_app_get_source (app, source_id); if (source) { source->draws_attention = FALSE; messaging_menu_app_notify_source_changed (app, source); } } /** * messaging_menu_app_append_message: * @app: a #MessagingMenuApp * @msg: the #MessagingMenuMessage to append * @source_id: (allow-none): the source id to which @msg is added, or NULL * @notify: whether a notification bubble should be shown for this * message * * Appends @msg to the source with id @source_id of @app. The messaging * menu might not display this message immediately if other messages are * queued before this one. * * If @source_id has a count associated with it, that count will be * increased by one. * * If @source_id is %NULL, @msg won't be associated with a source. */ void messaging_menu_app_append_message (MessagingMenuApp *app, MessagingMenuMessage *msg, const gchar *source_id, gboolean notify) { const gchar *id; g_return_if_fail (MESSAGING_MENU_IS_APP (app)); g_return_if_fail (MESSAGING_MENU_IS_MESSAGE (msg)); id = messaging_menu_message_get_id (msg); if (g_hash_table_lookup (app->messages, id)) { g_warning ("a message with id '%s' already exists", id); return; } g_hash_table_insert (app->messages, g_strdup (id), g_object_ref (msg)); indicator_messages_application_emit_message_added (app->app_interface, _messaging_menu_message_to_variant (msg)); if (source_id) { Source *source; source = messaging_menu_app_get_source (app, source_id); if (source && source->count >= 0) { source->count++; messaging_menu_app_notify_source_changed (app, source); } } } /** * messaging_menu_app_get_message: * @app: a #MessagingMenuApp * @id: id of the message to retrieve * * Retrieves the message with @id, that was added with * messaging_menu_app_append_message(). * * Returns: (transfer none) (allow-none): the #MessagingMenuApp with * @id, or %NULL */ MessagingMenuMessage * messaging_menu_app_get_message (MessagingMenuApp *app, const gchar *id) { g_return_val_if_fail (MESSAGING_MENU_IS_APP (app), NULL); g_return_val_if_fail (id != NULL, NULL); return g_hash_table_lookup (app->messages, id); } /** * messaging_menu_app_remove_message: * @app: a #MessagingMenuApp * @msg: the #MessagingMenuMessage to remove * * Removes @msg from @app. * * If @source_id has a count associated with it, that count will be * decreased by one. */ void messaging_menu_app_remove_message (MessagingMenuApp *app, MessagingMenuMessage *msg) { /* take a ref of @msg here to make sure the pointer returned by * _get_id() is valid for the duration of remove_message_by_id. */ g_object_ref (msg); messaging_menu_app_remove_message_by_id (app, messaging_menu_message_get_id (msg)); g_object_unref (msg); } /** * messaging_menu_app_remove_message_by_id: * @app: a #MessagingMenuApp * @id: the unique id of @msg * * Removes the message with the id @id from @app. * * If @source_id has a count associated with it, that count will be * decreased by one. */ void messaging_menu_app_remove_message_by_id (MessagingMenuApp *app, const gchar *id) { g_return_if_fail (MESSAGING_MENU_IS_APP (app)); g_return_if_fail (id != NULL); if (messaging_menu_app_remove_message_internal (app, id)) indicator_messages_application_emit_message_removed (app->app_interface, id); } ayatana-indicator-messages-24.5.1/libmessaging-menu/messaging-menu-app.h0000644000000000000000000002216514764273406023165 0ustar /* * Copyright 2012 Canonical Ltd. * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3, as * published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranties of * MERCHANTABILITY, SATISFACTORY QUALITY, 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, see . * * Authors: * Lars Uebernickel */ #ifndef __messaging_menu_app_h__ #define __messaging_menu_app_h__ #include #include "messaging-menu-message.h" G_BEGIN_DECLS #define MESSAGING_MENU_TYPE_APP messaging_menu_app_get_type() #define MESSAGING_MENU_APP(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), MESSAGING_MENU_TYPE_APP, MessagingMenuApp)) #define MESSAGING_MENU_APP_CLASS(c) (G_TYPE_CHECK_CLASS_CAST ((c), MESSAGING_MENU_TYPE_APP, MessagingMenuAppClass)) #define MESSAGING_MENU_IS_APP(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), MESSAGING_MENU_TYPE_APP)) /** * MessagingMenuStatus: * @MESSAGING_MENU_STATUS_AVAILABLE: available * @MESSAGING_MENU_STATUS_AWAY: away * @MESSAGING_MENU_STATUS_BUSY: busy * @MESSAGING_MENU_STATUS_INVISIBLE: invisible * @MESSAGING_MENU_STATUS_OFFLINE: offline * * An enumeration for the possible chat statuses the messaging menu can be in. */ typedef enum { MESSAGING_MENU_STATUS_AVAILABLE, MESSAGING_MENU_STATUS_AWAY, MESSAGING_MENU_STATUS_BUSY, MESSAGING_MENU_STATUS_INVISIBLE, MESSAGING_MENU_STATUS_OFFLINE } MessagingMenuStatus; typedef GObjectClass MessagingMenuAppClass; typedef struct _MessagingMenuApp MessagingMenuApp; GType messaging_menu_app_get_type (void) G_GNUC_CONST; MessagingMenuApp * messaging_menu_app_new (const gchar *desktop_id); void messaging_menu_app_register (MessagingMenuApp *app); void messaging_menu_app_unregister (MessagingMenuApp *app); void messaging_menu_app_set_status (MessagingMenuApp *app, MessagingMenuStatus status); void messaging_menu_app_insert_source (MessagingMenuApp *app, gint position, const gchar *id, GIcon *icon, const gchar *label); void messaging_menu_app_append_source (MessagingMenuApp *app, const gchar *id, GIcon *icon, const gchar *label); void messaging_menu_app_insert_source_with_count (MessagingMenuApp *app, gint position, const gchar *id, GIcon *icon, const gchar *label, guint count); void messaging_menu_app_append_source_with_count (MessagingMenuApp *app, const gchar *id, GIcon *icon, const gchar *label, guint count); void messaging_menu_app_insert_source_with_time (MessagingMenuApp *app, gint position, const gchar *id, GIcon *icon, const gchar *label, gint64 time); void messaging_menu_app_append_source_with_time (MessagingMenuApp *app, const gchar *id, GIcon *icon, const gchar *label, gint64 time); void messaging_menu_app_append_source_with_string (MessagingMenuApp *app, const gchar *id, GIcon *icon, const gchar *label, const gchar *str); void messaging_menu_app_insert_source_with_string (MessagingMenuApp *app, gint position, const gchar *id, GIcon *icon, const gchar *label, const gchar *str); void messaging_menu_app_remove_source (MessagingMenuApp *app, const gchar *source_id); gboolean messaging_menu_app_has_source (MessagingMenuApp *app, const gchar *source_id); void messaging_menu_app_set_source_label (MessagingMenuApp *app, const gchar *source_id, const gchar *label); void messaging_menu_app_set_source_icon (MessagingMenuApp *app, const gchar *source_id, GIcon *icon); void messaging_menu_app_set_source_count (MessagingMenuApp *app, const gchar *source_id, guint count); void messaging_menu_app_set_source_time (MessagingMenuApp *app, const gchar *source_id, gint64 time); void messaging_menu_app_set_source_string (MessagingMenuApp *app, const gchar *source_id, const gchar *str); void messaging_menu_app_draw_attention (MessagingMenuApp *app, const gchar *source_id); void messaging_menu_app_remove_attention (MessagingMenuApp *app, const gchar *source_id); void messaging_menu_app_append_message (MessagingMenuApp *app, MessagingMenuMessage *msg, const gchar *source_id, gboolean notify); MessagingMenuMessage * messaging_menu_app_get_message (MessagingMenuApp *app, const gchar *id); void messaging_menu_app_remove_message (MessagingMenuApp *app, MessagingMenuMessage *msg); void messaging_menu_app_remove_message_by_id (MessagingMenuApp *app, const gchar *id); G_END_DECLS #endif ayatana-indicator-messages-24.5.1/libmessaging-menu/messaging-menu.h0000644000000000000000000000146614764273406022410 0ustar /* * Copyright 2012 Canonical Ltd. * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3, as * published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranties of * MERCHANTABILITY, SATISFACTORY QUALITY, 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, see . * * Authors: * Lars Uebernickel */ #ifndef __messaging_menu_h__ #define __messaging_menu_h__ #include "messaging-menu-app.h" #endif ayatana-indicator-messages-24.5.1/libmessaging-menu/messaging-menu-message.c0000644000000000000000000004003314764273406024016 0ustar /* * Copyright 2012 Canonical Ltd. * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3, as * published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranties of * MERCHANTABILITY, SATISFACTORY QUALITY, 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, see . * * Authors: * Lars Uebernickel */ #include "messaging-menu-message.h" /** * SECTION:messaging-menu-message * @title: MessagingMenuMessage * @short_description: A single message in the messaging menu * @include: messaging-menu.h */ typedef GObjectClass MessagingMenuMessageClass; struct _MessagingMenuMessage { GObject parent; gchar *id; GIcon *icon; gchar *title; gchar *subtitle; gchar *body; gint64 time; gboolean draws_attention; GSList *actions; }; G_DEFINE_TYPE (MessagingMenuMessage, messaging_menu_message, G_TYPE_OBJECT); enum { PROP_0, PROP_ID, PROP_ICON, PROP_TITLE, PROP_SUBTITLE, PROP_BODY, PROP_TIME, PROP_DRAWS_ATTENTION, NUM_PROPERTIES }; static GParamSpec *properties[NUM_PROPERTIES]; typedef struct { gchar *id; gchar *label; GVariantType *parameter_type; GVariant *parameter_hint; } Action; static void action_free (gpointer data) { Action *action = data; g_free (action->id); g_free (action->label); if (action->parameter_type) g_variant_type_free (action->parameter_type); if (action->parameter_hint) g_variant_unref (action->parameter_hint); g_slice_free (Action, action); } static void messaging_menu_message_dispose (GObject *object) { MessagingMenuMessage *msg = MESSAGING_MENU_MESSAGE (object); g_clear_object (&msg->icon); G_OBJECT_CLASS (messaging_menu_message_parent_class)->dispose (object); } static void messaging_menu_message_finalize (GObject *object) { MessagingMenuMessage *msg = MESSAGING_MENU_MESSAGE (object); g_free (msg->id); g_free (msg->title); g_free (msg->subtitle); g_free (msg->body); g_slist_free_full (msg->actions, action_free); msg->actions = NULL; G_OBJECT_CLASS (messaging_menu_message_parent_class)->finalize (object); } static void messaging_menu_message_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec) { MessagingMenuMessage *msg = MESSAGING_MENU_MESSAGE (object); switch (property_id) { case PROP_ID: g_value_set_string (value, msg->id); break; case PROP_ICON: g_value_set_object (value, msg->icon); break; case PROP_TITLE: g_value_set_string (value, msg->title); break; case PROP_SUBTITLE: g_value_set_string (value, msg->subtitle); break; case PROP_BODY: g_value_set_string (value, msg->body); break; case PROP_TIME: g_value_set_int64 (value, msg->time); break; case PROP_DRAWS_ATTENTION: g_value_set_boolean (value, msg->draws_attention); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); } } static void messaging_menu_message_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) { MessagingMenuMessage *msg = MESSAGING_MENU_MESSAGE (object); switch (property_id) { case PROP_ID: msg->id = g_value_dup_string (value); break; case PROP_ICON: msg->icon = g_value_dup_object (value); break; case PROP_TITLE: msg->title = g_value_dup_string (value); break; case PROP_SUBTITLE: msg->subtitle = g_value_dup_string (value); break; case PROP_BODY: msg->body = g_value_dup_string (value); break; case PROP_TIME: msg->time = g_value_get_int64 (value); break; case PROP_DRAWS_ATTENTION: messaging_menu_message_set_draws_attention (msg, g_value_get_boolean (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); } } static void messaging_menu_message_class_init (MessagingMenuMessageClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->dispose = messaging_menu_message_dispose; object_class->finalize = messaging_menu_message_finalize; object_class->get_property = messaging_menu_message_get_property; object_class->set_property = messaging_menu_message_set_property; properties[PROP_ID] = g_param_spec_string ("id", "Id", "Unique id of the message", NULL, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); properties[PROP_ICON] = g_param_spec_object ("icon", "Icon", "Icon of the message", G_TYPE_ICON, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); properties[PROP_TITLE] = g_param_spec_string ("title", "Title", "Title of the message", NULL, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); properties[PROP_SUBTITLE] = g_param_spec_string ("subtitle", "Subtitle", "Subtitle of the message", NULL, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); properties[PROP_BODY] = g_param_spec_string ("body", "Body", "First lines of the body of the message", NULL, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); properties[PROP_TIME] = g_param_spec_int64 ("time", "Time", "Time the message was sent, in microseconds", 0, G_MAXINT64, 0, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); properties[PROP_DRAWS_ATTENTION] = g_param_spec_boolean ("draws-attention", "Draws attention", "Whether the message should draw attention", TRUE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_properties (klass, NUM_PROPERTIES, properties); /** * MessagingMenuMessage::activate: * @msg: the #MessagingMenuMessage * @action: (allow-none): the id of activated action, or %NULL * @parameter: (allow-none): activation parameter, or %NULL * * Emitted when the user has activated the message. The message is * immediately removed from the application's menu, handlers of this * signal do not need to call messaging_menu_app_remove_message(). */ g_signal_new ("activate", MESSAGING_MENU_TYPE_MESSAGE, G_SIGNAL_RUN_FIRST | G_SIGNAL_DETAILED, 0, NULL, NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 2, G_TYPE_STRING, G_TYPE_VARIANT); } static void messaging_menu_message_init (MessagingMenuMessage *self) { self->draws_attention = TRUE; } /** * messaging_menu_message_new: * @id: unique id of the message * @icon: (transfer full) (allow-none): a #GIcon representing the message * @title: the title of the message * @subtitle: (allow-none): the subtitle of the message * @body: (allow-none): the message body * @time: the time the message was received * * Creates a new #MessagingMenuMessage. * * Returns: (transfer full): a new #MessagingMenuMessage */ MessagingMenuMessage * messaging_menu_message_new (const gchar *id, GIcon *icon, const gchar *title, const gchar *subtitle, const gchar *body, gint64 time) { g_return_val_if_fail (id != NULL, NULL); g_return_val_if_fail (title != NULL, NULL); return g_object_new (MESSAGING_MENU_TYPE_MESSAGE, "id", id, "icon", icon, "title", title, "subtitle", subtitle, "body", body, "time", time, NULL); } /** * messaging_menu_message_get_id: * @msg: a #MessagingMenuMessage * * Returns: the unique id of @msg */ const gchar * messaging_menu_message_get_id (MessagingMenuMessage *msg) { g_return_val_if_fail (MESSAGING_MENU_IS_MESSAGE (msg), NULL); return msg->id; } /** * messaging_menu_message_get_icon: * @msg: a #MessagingMenuMessage * * Returns: (transfer none): the icon of @msg */ GIcon * messaging_menu_message_get_icon (MessagingMenuMessage *msg) { g_return_val_if_fail (MESSAGING_MENU_IS_MESSAGE (msg), NULL); return msg->icon; } /** * messaging_menu_message_get_title: * @msg: a #MessagingMenuMessage * * Returns: the title of @msg */ const gchar * messaging_menu_message_get_title (MessagingMenuMessage *msg) { g_return_val_if_fail (MESSAGING_MENU_IS_MESSAGE (msg), NULL); return msg->title; } /** * messaging_menu_message_get_subtitle: * @msg: a #MessagingMenuMessage * * Returns: the subtitle of @msg */ const gchar * messaging_menu_message_get_subtitle (MessagingMenuMessage *msg) { g_return_val_if_fail (MESSAGING_MENU_IS_MESSAGE (msg), NULL); return msg->subtitle; } /** * messaging_menu_message_get_body: * @msg: a #MessagingMenuMessage * * Returns: the body of @msg */ const gchar * messaging_menu_message_get_body (MessagingMenuMessage *msg) { g_return_val_if_fail (MESSAGING_MENU_IS_MESSAGE (msg), NULL); return msg->body; } /** * messaging_menu_message_get_time: * @msg: a #MessagingMenuMessage * * Returns: the time at which @msg was received */ gint64 messaging_menu_message_get_time (MessagingMenuMessage *msg) { g_return_val_if_fail (MESSAGING_MENU_IS_MESSAGE (msg), 0); return msg->time; } /** * messaging_menu_message_get_draws_attention: * @msg: a #MessagingMenuMessage * * Returns: whether @msg is drawing attention */ gboolean messaging_menu_message_get_draws_attention (MessagingMenuMessage *msg) { g_return_val_if_fail (MESSAGING_MENU_IS_MESSAGE (msg), FALSE); return msg->draws_attention; } /** * messaging_menu_message_set_draws_attention: * @msg: a #MessagingMenuMessage * @draws_attention: whether @msg should draw attention * * Sets whether @msg is drawing attention. */ void messaging_menu_message_set_draws_attention (MessagingMenuMessage *msg, gboolean draws_attention) { g_return_if_fail (MESSAGING_MENU_IS_MESSAGE (msg)); msg->draws_attention = draws_attention; g_object_notify_by_pspec (G_OBJECT (msg), properties[PROP_DRAWS_ATTENTION]); } /** * messaging_menu_message_add_action: * @msg: a #MessagingMenuMessage * @id: unique id of the action * @label: (allow-none): label of the action * @parameter_type: (allow-none): a #GVariantType * @parameter_hint: (allow-none): a #GVariant suggesting a valid range * for parameters * * Adds an action with @id and @label to @message. Actions are an * alternative way for users to activate a message. Note that messages * can still be activated without an action. * * If @parameter_type is non-%NULL, the action is able to receive user * input in addition to simply activating the action. Currently, only * string parameters are supported. * * A list of predefined parameters can be supplied as a #GVariant array * of @parameter_type in @parameter_hint. If @parameter_hint is * floating, it will be consumed. * * It is recommended to add at most two actions to a message. */ void messaging_menu_message_add_action (MessagingMenuMessage *msg, const gchar *id, const gchar *label, const GVariantType *parameter_type, GVariant *parameter_hint) { Action *action; g_return_if_fail (MESSAGING_MENU_IS_MESSAGE (msg)); g_return_if_fail (id != NULL); action = g_slice_new (Action); action->id = g_strdup (id); action->label = g_strdup (label); action->parameter_type = parameter_type ? g_variant_type_copy (parameter_type) : NULL; action->parameter_hint = parameter_hint ? g_variant_ref_sink (parameter_hint) : NULL; msg->actions = g_slist_append (msg->actions, action); } static GVariant * action_to_variant (Action *action) { GVariantBuilder builder; g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); g_variant_builder_add (&builder, "{sv}", "name", g_variant_new_string (action->id)); if (action->label) g_variant_builder_add (&builder, "{sv}", "label", g_variant_new_string (action->label)); if (action->parameter_type) { gchar *type = g_variant_type_dup_string (action->parameter_type); g_variant_builder_add (&builder, "{sv}", "parameter-type", g_variant_new_signature (type)); g_free (type); } if (action->parameter_hint) g_variant_builder_add (&builder, "{sv}", "parameter-hint", action->parameter_hint); return g_variant_builder_end (&builder); } /* * _messaging_menu_message_to_variant: * @msg: a #MessagingMenuMessage * * Serializes @msg to a #GVariant of the form (savsssxaa{sv}b): * * id * icon (fake-maybe) * title * subtitle * body * time * array of action dictionaries * draws_attention * * Returns: a new floating #GVariant instance */ GVariant * _messaging_menu_message_to_variant (MessagingMenuMessage *msg) { GVariantBuilder builder; GSList *it; GVariant *serialized_icon; GVariantBuilder icon_builder; g_return_val_if_fail (MESSAGING_MENU_IS_MESSAGE (msg), NULL); serialized_icon = msg->icon ? g_icon_serialize (msg->icon) : NULL; g_variant_builder_init (&icon_builder, G_VARIANT_TYPE ("av")); if (serialized_icon) { g_variant_builder_add (&icon_builder, "v", serialized_icon); g_variant_unref (serialized_icon); } g_variant_builder_init (&builder, G_VARIANT_TYPE ("(savsssxaa{sv}b)")); g_variant_builder_add (&builder, "s", msg->id); g_variant_builder_add (&builder, "av", &icon_builder); g_variant_builder_add (&builder, "s", msg->title ? msg->title : ""); g_variant_builder_add (&builder, "s", msg->subtitle ? msg->subtitle : ""); g_variant_builder_add (&builder, "s", msg->body ? msg->body : ""); g_variant_builder_add (&builder, "x", msg->time); g_variant_builder_open (&builder, G_VARIANT_TYPE ("aa{sv}")); for (it = msg->actions; it; it = it->next) g_variant_builder_add_value (&builder, action_to_variant (it->data)); g_variant_builder_close (&builder); g_variant_builder_add (&builder, "b", msg->draws_attention); return g_variant_builder_end (&builder); } ayatana-indicator-messages-24.5.1/libmessaging-menu/messaging-menu-message.h0000644000000000000000000000711214764273406024024 0ustar /* * Copyright 2012 Canonical Ltd. * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3, as * published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranties of * MERCHANTABILITY, SATISFACTORY QUALITY, 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, see . * * Authors: * Lars Uebernickel */ #ifndef __messaging_menu_message_h__ #define __messaging_menu_message_h__ #include G_BEGIN_DECLS #define MESSAGING_MENU_TYPE_MESSAGE (messaging_menu_message_get_type ()) #define MESSAGING_MENU_MESSAGE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MESSAGING_MENU_TYPE_MESSAGE, MessagingMenuMessage)) #define MESSAGING_MENU_MESSAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MESSAGING_MENU_TYPE_MESSAGE, MessagingMenuMessageClass)) #define MESSAGING_MENU_IS_MESSAGE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MESSAGING_MENU_TYPE_MESSAGE)) #define MESSAGING_MENU_IS_MESSAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MESSAGING_MENU_TYPE_MESSAGE)) #define MESSAGING_MENU_MESSAGE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MESSAGING_MENU_TYPE_MESSAGE, MessagingMenuMessageClass)) typedef struct _MessagingMenuMessage MessagingMenuMessage; GType messaging_menu_message_get_type (void) G_GNUC_CONST; MessagingMenuMessage * messaging_menu_message_new (const gchar *id, GIcon *icon, const gchar *title, const gchar *subtitle, const gchar *body, gint64 time); const gchar * messaging_menu_message_get_id (MessagingMenuMessage *msg); GIcon * messaging_menu_message_get_icon (MessagingMenuMessage *msg); const gchar * messaging_menu_message_get_title (MessagingMenuMessage *msg); const gchar * messaging_menu_message_get_subtitle (MessagingMenuMessage *msg); const gchar * messaging_menu_message_get_body (MessagingMenuMessage *msg); gint64 messaging_menu_message_get_time (MessagingMenuMessage *msg); gboolean messaging_menu_message_get_draws_attention (MessagingMenuMessage *msg); void messaging_menu_message_set_draws_attention (MessagingMenuMessage *msg, gboolean draws_attention); void messaging_menu_message_add_action (MessagingMenuMessage *msg, const gchar *id, const gchar *label, const GVariantType *parameter_type, GVariant *parameter_hint); G_END_DECLS #endif ayatana-indicator-messages-24.5.1/libmessaging-menu/messaging-menu.pc.in0000644000000000000000000000054614764273406023166 0ustar prefix=@CMAKE_INSTALL_PREFIX@ exec_prefix=${prefix} libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@ includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@/messaging-menu Name: Ayatana Messaging Menu Library Description: Ayatana Messaging Menu client library Version: @PROJECT_VERSION@ Requires: gio-unix-2.0 Libs: -L${libdir} -lmessaging-menu Cflags: -I${includedir} ayatana-indicator-messages-24.5.1/libmessaging-menu/messaging-menu.symbols0000644000000000000000000000014514764273406023642 0ustar { global: messaging_menu_*; local: *indicator_messages_*; _messaging_menu_*; }; ayatana-indicator-messages-24.5.1/NEWS0000644000000000000000000000524214764273406014405 0ustar Overview of changes in ayatana-indicator-messages 24.5.1 - tests/CMakeLists.txt: Drop hardcoded -no-pie linker flags - Translation updates. Overview of changes in ayatana-indicator-messages 24.5.0 - data/ayatana-indicator-messages.service.in: Become part of lomiri-indicators.target. - Translation updates. Overview of changes in ayatana-indicator-messages 23.10.0 - account-service: Do not unref UserManager owned user. - accounts-service: Also update the user when a new user is added. - accounts-manager: Cancel account manager requests on new user. - Translation updates. Overview of changes in ayatana-indicator-messages 22.9.0 - Add tooltip support. - Drop duplicate COPYING.GPLv3 file. - Translation updates. Overview of changes in ayatana-indicator-messages 22.2.0 - tests/CMakeLists.txt: Fix potential multicore compile error. - Clean up compilation flags. Overview of changes in ayatana-indicator-messages 21.12.0 - Upstream version bump to new release versioning scheme: .., where . will be bumped in Ayatana Indicators bundle releases and gets incremented with minor changeset releases. - Travis CI adjustments (enable Lomiri features when building on Debian). - Translation updates. Overview of changes in ayatana-indicator-messages 0.9.0 - Rename com.ubuntu.* to com.lomiri.*. - Allow autostart for Budgie Desktop. - Update Ayatana IDO names. - Update/add documentation. - Port to CMake. - Add Travis CI configuration. - Translation updates. Overview of changes in ayatana-indicator-messages 0.8.2 - Translation updates. Overview of changes in ayatana-indicator-messages 0.8.1 - Translation updates. Overview of changes in ayatana-indicator-messages 0.8.0 - Version bump to bring all system indicators (and the renderer libraries to the same version level). - Rename 'x-canonical-type' attribute to 'x-ayatana-type' (and others) to allow using system indicators from Ayatana Indicators on Ubuntu. - Start the indicator with the ayatana-indicators.target. - Drop upstart support. Overview of changes in ayatana-indicator-messages 0.6.2 - configure.ac: Drop "subdir-projects" from AM_INIT_AUTOMAKE. - Translation updates (thanks to all translaters contributing to hosted Weblate). Overview of changes in ayatana-indicator-messages 0.6.1 - Stop using deprecated g_type_class_add_private(). - Translation updates (thanks to all translaters contributing to hosted Weblate). Overview of changes in ayatana-indicator-messages 0.6.0 - Fork from Ubuntu Indicators' indicator-messages project. https://launchpad.net/indicator-messagesayatana-indicator-messages-24.5.1/NEWS.Canonical0000644000000000000000000000247214764273406016275 0ustar 12.10.5 * fix crash caused by GError not being cleared (lp #1064314) * fix crash when registering an app that was previously unregistered (lp #1065169) * remove the icon if NULL is passed to source_set_icon (lp #1070421) * call gtk-update-icon-cache (lp #1060618) 12.10.4 * specify fallback icons for the ones with status emblem (lp #1056595) * make icon size consistent with the other indicators (lp #1055966) * libmessaging-menu: fix crash when receiving a invalid desktop id (lp #1058386) 12.10.3 * hide indicator when no application shows in the menu (lp #661059) * remove apps as soon as they are uninstalled (lp #864545) * make generated .gir compatible with vala (lp #104496) * draw counts as lozenges (lp #1046331) * show separators (lp #1048245) * show chat presence in the panel (lp #859905) * improve documentation 12.10.2 * libmessaging-menu: - expand source documentation and add gtk-doc to the build system - added new API: messaging_menu_app_set_source_{label,icon} - fix bug: only one MessagingMenuApp was exported to the messaging menu 12.10.1 * presence icons are shown again * the icon is changed when a source draws attention * the time in source menu items is always kep current * fixed all g-ir-scanner warnings * libmessaging-menu now removes sources when they are activated * fixed several bugs ayatana-indicator-messages-24.5.1/po/aa.po0000644000000000000000000000277714764273406015257 0ustar # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: aa\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/af.po0000644000000000000000000000365214764273406015255 0ustar # Afrikaans translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2020-05-10 07:12+0000\n" "Last-Translator: iNetRoos \n" "Language-Team: Afrikaans \n" "Language: af\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.1-dev\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "Lys van toepassings in die boodskappe kieslys" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" "Toepassings in hierdie lys word tov. tafelrekenaar lêer-ID's word vertoon in " "die boodskappe kieslys." #: src/im-application-list.c:231 msgid "New Messages" msgstr "Nuwe Boodskappe" #: src/im-application-list.c:235 msgid "Messages" msgstr "Boodskappe" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "Kennisgewings" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "Beskikbaar" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "Afwesig" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "Besig" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "Onsigbaar" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "Aflyn" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "Uitwis" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "Vee als uit" ayatana-indicator-messages-24.5.1/po/am.po0000644000000000000000000000301414764273406015254 0ustar # Amharic translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: am\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/an.po0000644000000000000000000000301614764273406015257 0ustar # Aragonese translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: an\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/ar.po0000644000000000000000000000341614764273406015267 0ustar # Arabic translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2020-03-15 05:36+0000\n" "Last-Translator: yagoub fadel \n" "Language-Team: Arabic \n" "Language: ar\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " "&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n" "X-Generator: Weblate 4.0-dev\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "إشعارات" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/as.po0000644000000000000000000000277714764273406015301 0ustar # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: as\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/ast.po0000644000000000000000000000301614764273406015450 0ustar # Asturian translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: ast\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/ayatana-indicator-messages.pot0000644000000000000000000000303214764273406022240 0ustar # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/az.po0000644000000000000000000000302014764273406015266 0ustar # Azerbaijani translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: az\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/bem.po0000644000000000000000000000301314764273406015421 0ustar # Bemba translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: bem\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/be.po0000644000000000000000000000446114764273406015254 0ustar # Belarusian translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2020-09-24 20:40+0000\n" "Last-Translator: Viktar Vauchkevich \n" "Language-Team: Belarusian \n" "Language: be\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Generator: Weblate 4.3-dev\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "Спіс прыкладанняў, якія адлюстроўваюцца ў меню паведамленняў" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" "Прыкладанні, якія адпавядаюць ідэнтыфікатарам файлаў працоўнага стала ў " "гэтым спісе, адлюстроўваюцца ў меню паведамленняў." #: src/im-application-list.c:231 msgid "New Messages" msgstr "Новыя паведамленні" #: src/im-application-list.c:235 msgid "Messages" msgstr "Паведамленні" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "Апавяшчэнні" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "Дастуны" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "Адышоў" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "Заняты" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "Нябачны" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "Па-за сеткай" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "Ачысціць" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "Ачысціць усё" ayatana-indicator-messages-24.5.1/po/bg.po0000644000000000000000000000307514764273406015256 0ustar # Bulgarian translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: bg\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/bn.po0000644000000000000000000000331614764273406015263 0ustar # Bengali translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2020-10-11 15:26+0000\n" "Last-Translator: Yota321 \n" "Language-Team: Bengali \n" "Language: bn\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 4.3-dev\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "বিজ্ঞপ্তি" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/bo.po0000644000000000000000000000301414764273406015257 0ustar # Tibetan translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: bo\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/br.po0000644000000000000000000000301314764273406015261 0ustar # Breton translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: br\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/bs.po0000644000000000000000000000301414764273406015263 0ustar # Bosnian translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: bs\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/ca.po0000644000000000000000000000402114764273406015241 0ustar # Catalan translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2023-06-23 22:50+0000\n" "Last-Translator: Joan CiberSheep \n" "Language-Team: Catalan \n" "Language: ca\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.18.1\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "Llista d'aplicacions que es mostren al menú de missatgeria" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" "Es mostraran al menú de missatgeria les aplicacions corresponents als " "identificadors de fitxers d'escriptori d'aquesta llista." #: src/im-application-list.c:231 msgid "New Messages" msgstr "Nous missatges" #: src/im-application-list.c:235 msgid "Messages" msgstr "Missatges" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "Notificacions" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "Accés ràpid als missatges rebuts recentment" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "Disponible" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "Absent/a" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "Ocupat/da" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "Invisible" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "Fora de línia" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "Neteja" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "Neteja-ho tot" ayatana-indicator-messages-24.5.1/po/ca@valencia.po0000644000000000000000000000302514764273406017047 0ustar # Catalan translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: ca@valencia\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/ce.po0000644000000000000000000000301414764273406015246 0ustar # Chechen translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: ce\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/ckb.po0000644000000000000000000000302214764273406015415 0ustar # Language ckb translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: ckb\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/CMakeLists.txt0000644000000000000000000000014614764273406017062 0ustar find_package(Intltool REQUIRED) intltool_install_translations(ALL GETTEXT_PACKAGE ${GETTEXT_PACKAGE}) ayatana-indicator-messages-24.5.1/po/co.po0000644000000000000000000000301514764273406015261 0ustar # Corsican translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: co\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/crh.po0000644000000000000000000000302314764273406015433 0ustar # Crimean Tatar translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: crh\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/csb.po0000644000000000000000000000300014764273406015421 0ustar # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:48+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: csb\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/cs.po0000644000000000000000000000404414764273406015270 0ustar # Czech translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2022-09-14 11:45+0000\n" "Last-Translator: Milan Korecky \n" "Language-Team: Czech \n" "Language: cs\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" "X-Generator: Weblate 4.14.1-dev\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "Seznam aplikací, které jsou zobrazeny v nabídce zpráv" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" "Aplikace odpovídající identifikátorům desktop souborů v tomto seznamu jsou " "zobrazeny v nabídce zpráv." #: src/im-application-list.c:231 msgid "New Messages" msgstr "Nové zprávy" #: src/im-application-list.c:235 msgid "Messages" msgstr "Zprávy" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "Oznámení" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "Rychlý přístup k nově přijatým zprávám" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "Dostupné" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "Nepřítomen" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "Zaneprázdněný" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "Neviditelný" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "Nepřipojen" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "Vyčistit" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "Vyčistit vše" ayatana-indicator-messages-24.5.1/po/cv.po0000644000000000000000000000301414764273406015267 0ustar # Chuvash translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: cv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/cy.po0000644000000000000000000000301214764273406015270 0ustar # Welsh translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: cy\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/da.po0000644000000000000000000000365514764273406015256 0ustar # Danish translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2020-07-05 00:41+0000\n" "Last-Translator: Tobias p \n" "Language-Team: Danish \n" "Language: da\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.2-dev\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "Liste over applikationer som vises i meddelelses menuen" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" "Applikationer der svarer til desktop fil ID'er i denne liste vises i " "meddelelses menuen." #: src/im-application-list.c:231 msgid "New Messages" msgstr "Nye Meddelelser" #: src/im-application-list.c:235 msgid "Messages" msgstr "Meddelelser" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "Notifikationer" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "Tilgængelig" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "Ikke Tilstede" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "Optaget" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "Usynlig" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "Offline" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "Ryd" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "Ryd Alt" ayatana-indicator-messages-24.5.1/po/de.po0000644000000000000000000000401414764273406015250 0ustar # German translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2022-09-05 19:31+0000\n" "Last-Translator: Mike Gabriel \n" "Language-Team: German \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.14.1-dev\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "Liste von Anwendungen, die im Nachrichtenmenü angezeigt werden" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" "Anwendungen, die den Desktopdatei-IDs in dieser Liste entsprechen, werden im " "Nachrichtenmenü angezeigt." #: src/im-application-list.c:231 msgid "New Messages" msgstr "Neue Nachrichten" #: src/im-application-list.c:235 msgid "Messages" msgstr "Nachrichten" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "Benachrichtigungen" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "Schellzugriff auf neue Nachrichten" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "Verfügbar" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "Abwesend" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "Beschäftigt" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "Unsichtbar" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "nicht Verbunden" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "Löschen" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "Alle leeren" ayatana-indicator-messages-24.5.1/po/dv.po0000644000000000000000000000277714764273406015307 0ustar # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: dv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/el.po0000644000000000000000000000434114764273406015263 0ustar # Greek translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2020-02-10 13:50+0000\n" "Last-Translator: THANOS SIOURDAKIS \n" "Language-Team: Greek \n" "Language: el\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 3.11-dev\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "Λίστα εφαρμογών που εμφανίζονται εις το κατάλογο μηνυμάτων" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" "Οι εφαρμογές που αντιστοιχούν στα αναγνωριστικά αρχείων της επιφάνειας " "εργασίας σε αυτήν τη λίστα εμφανίζονται στο μενού μηνυμάτων." #: src/im-application-list.c:231 msgid "New Messages" msgstr "Νέα μηνύματα" #: src/im-application-list.c:235 msgid "Messages" msgstr "Μηνύματα" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "Ειδοποιήσεις" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "Διαθέσιμος" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "Μακριά" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "Απασχολημένο" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "Εμφανές" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "Εκτός σύνδεσης" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "Σαφές" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "Όλα σαφή" ayatana-indicator-messages-24.5.1/po/en_AU.po0000644000000000000000000000366414764273406015661 0ustar # English translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2020-04-28 11:11+0000\n" "Last-Translator: Jeannette L \n" "Language-Team: English (Australia) \n" "Language: en_AU\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.0.2\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "List of applications that are shown in the messaging menu" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." #: src/im-application-list.c:231 msgid "New Messages" msgstr "New Messages" #: src/im-application-list.c:235 msgid "Messages" msgstr "Messages" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "Notifications" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "Available" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "Away" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "Busy" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "Invisible" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "Offline" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "Clear" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "Clear All" ayatana-indicator-messages-24.5.1/po/en_CA.po0000644000000000000000000000366114764273406015634 0ustar # English translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2020-04-28 11:11+0000\n" "Last-Translator: Jeannette L \n" "Language-Team: English (Canada) \n" "Language: en_CA\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.0.2\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "List of applications that are shown in the messaging menu" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." #: src/im-application-list.c:231 msgid "New Messages" msgstr "New Messages" #: src/im-application-list.c:235 msgid "Messages" msgstr "Messages" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "Notifications" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "Available" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "Away" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "Busy" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "Invisible" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "Offline" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "Clear" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "Clear All" ayatana-indicator-messages-24.5.1/po/en_GB.po0000644000000000000000000000367114764273406015642 0ustar # English translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2020-04-28 11:11+0000\n" "Last-Translator: Jeannette L \n" "Language-Team: English (United Kingdom) \n" "Language: en_GB\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.0.2\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "List of applications that are shown in the messaging menu" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." #: src/im-application-list.c:231 msgid "New Messages" msgstr "New Messages" #: src/im-application-list.c:235 msgid "Messages" msgstr "Messages" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "Notifications" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "Available" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "Away" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "Busy" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "Invisible" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "Offline" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "Clear" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "Clear All" ayatana-indicator-messages-24.5.1/po/eo.po0000644000000000000000000000371014764273406015265 0ustar # Esperanto translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2021-11-24 14:52+0000\n" "Last-Translator: phlostically \n" "Language-Team: Esperanto \n" "Language: eo\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.10-dev\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "Listo de programoj montrataj en la mesaĝa menuo" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" "Programoj respondantaj al la labortablaj dosiero-identigiloj en ĉi tiu listo " "estas montrataj en la mesaĝa menuo." #: src/im-application-list.c:231 msgid "New Messages" msgstr "Novaj mesaĝoj" #: src/im-application-list.c:235 msgid "Messages" msgstr "Mesaĝoj" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "Sciigoj" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "Disponebla" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "Fora" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "Okupata" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "Kaŝata" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "Ne konektita" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "Forviŝi" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "Forviŝi ĉion" ayatana-indicator-messages-24.5.1/po/es.po0000644000000000000000000000400214764273406015264 0ustar # Spanish translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2023-03-04 13:37+0000\n" "Last-Translator: gallegonovato \n" "Language-Team: Spanish \n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.16.2-dev\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "Lista de aplicaciones que aparecen en el menú de mensajería" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" "Las aplicaciones cuyos ids. de archivo .desktop corresponden con los de esta " "lista aparecen en el menú de mensajería." #: src/im-application-list.c:231 msgid "New Messages" msgstr "Mensajes nuevos" #: src/im-application-list.c:235 msgid "Messages" msgstr "Mensajes" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "Notificaciones" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "Acceso rápido a los mensajes recibidos" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "Disponible" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "Ausente" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "Ocupado" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "Invisible" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "Desconectado" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "Vaciar" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "Vaciar todo" ayatana-indicator-messages-24.5.1/po/et.po0000644000000000000000000000400114764273406015264 0ustar # Estonian translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2022-10-20 10:05+0000\n" "Last-Translator: Kristjan Räts \n" "Language-Team: Estonian \n" "Language: et\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.14.2-dev\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "Loetelu programmidest, mida kuvatakse sõnumivahetuse menüüs" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" "Rakendused, millede desktop-failide identifikaatorid on siin loetletud, " "kuvatakse sõnumivahetuse menüüs." #: src/im-application-list.c:231 msgid "New Messages" msgstr "Uued sõnumid" #: src/im-application-list.c:235 msgid "Messages" msgstr "Sõnumid" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "Teated" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "Kiire juurdepääs äsja vastuvõetud sõnumitele" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "Saadaval" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "Eemal" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "Hõivatud" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "Nähtamatu" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "Võrgust väljas" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "Puhasta" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "Puhasta kõik" ayatana-indicator-messages-24.5.1/po/eu.po0000644000000000000000000000301314764273406015267 0ustar # Basque translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: eu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/fa.po0000644000000000000000000000411514764273406015250 0ustar # Persian translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2020-07-20 20:41+0000\n" "Last-Translator: Tetra Homer \n" "Language-Team: Persian \n" "Language: fa\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 4.2-dev\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "لیست برنامه‌هایی که در فهرست پیام نشان داده شده اند" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" "برنامه های مربوط به شناسه پرونده دسک‌تاپ در این لیست در منوی پیام رسانی نشان " "داده شده اند." #: src/im-application-list.c:231 msgid "New Messages" msgstr "پیام ها تازه" #: src/im-application-list.c:235 msgid "Messages" msgstr "پیام‌ها" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "اعلانات" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "دردسترس" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "در راه" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "مشغول" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "مخفی" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "آفلاین" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "پاک کردن" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "پاک کردن همه" ayatana-indicator-messages-24.5.1/po/fil.po0000644000000000000000000000301614764273406015433 0ustar # Filipino translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: fil\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/fi.po0000644000000000000000000000307314764273406015262 0ustar # Finnish translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: fi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/fo.po0000644000000000000000000000307314764273406015270 0ustar # Faroese translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: fo\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/fr_CA.po0000644000000000000000000000376114764273406015642 0ustar # French translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2020-12-31 03:29+0000\n" "Last-Translator: J. Lavoie \n" "Language-Team: French (Canada) \n" "Language: fr_CA\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 4.4.1-dev\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" "Liste des applications qui sont affichées dans le menu de la messagerie" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" "Applications correspondant aux identifiants des fichier du bureau dans la " "liste qui est affichée sur la messagerie." #: src/im-application-list.c:231 msgid "New Messages" msgstr "Nouveaux messages" #: src/im-application-list.c:235 msgid "Messages" msgstr "Messages" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "Notifications" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "Disponible" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "Absent(e)" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "Occupé(e)" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "Invisible" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "Hors ligne" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "Effacer" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "Tout supprimer" ayatana-indicator-messages-24.5.1/po/fr.po0000644000000000000000000000401714764273406015272 0ustar # French translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2023-07-02 17:50+0000\n" "Last-Translator: spnux \n" "Language-Team: French \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 5.0-dev\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" "Liste des applications qui sont affichées dans le menu de la messagerie" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" "Applications correspondant aux identifiants des fichier du bureau dans la " "liste qui est affichée sur la messagerie." #: src/im-application-list.c:231 msgid "New Messages" msgstr "Nouveaux messages" #: src/im-application-list.c:235 msgid "Messages" msgstr "Messages" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "Notifications" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "Accès rapide aux nouveaux messages reçus" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "Disponible" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "Absent(e)" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "Occupé(e)" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "Invisible" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "Hors ligne" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "Effacer" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "Tout supprimer" ayatana-indicator-messages-24.5.1/po/frp.po0000644000000000000000000000302214764273406015445 0ustar # Language frp translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: frp\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/fur.po0000644000000000000000000000300014764273406015446 0ustar # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: fur\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/fy.po0000644000000000000000000000302414764273406015276 0ustar # Western Frisian translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: fy\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/ga.po0000644000000000000000000000311014764273406015243 0ustar # Irish translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: ga\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n==1 ? 0 : n==2 ? 1 : 2;\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/gd.po0000644000000000000000000000344114764273406015255 0ustar # Scottish Gaelic translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2021-11-17 13:49+0000\n" "Last-Translator: Phil Clifford \n" "Language-Team: Gaelic \n" "Language: gd\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=(n==1 || n==11) ? 0 : (n==2 || n==12) ? 1 : " "(n > 2 && n < 20) ? 2 : 3;\n" "X-Generator: Weblate 4.9.1-dev\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "Teachdaireachdan" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "Brathan" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/gl.po0000644000000000000000000000375514764273406015275 0ustar # Galician translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 20.9.00-24 16:29+0000\n" "Last-Translator: Iván Seoane \n" "Language-Team: Galician \n" "Language: gl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 3.3-dev\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "Listaxe das aplicacións que se amosan no menú de mensaxeiría" #: data/org.ayatana.indicator.messages.gschema.xml:2 #, fuzzy msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" "As aplicacións que se corresponden cas ID dos ficheiros do escritorio nesta " "listaxe serán amosadas no menú de mensaxeiría." #: src/im-application-list.c:231 msgid "New Messages" msgstr "Mensaxes novas" #: src/im-application-list.c:235 msgid "Messages" msgstr "Mensaxes" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "Notificacións" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "Dispoñíbel" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "Ausente" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "Ocupado" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "Invisíbel" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "Desconectado" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "Limpar" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "Limpar todo" ayatana-indicator-messages-24.5.1/po/gu.po0000644000000000000000000000301514764273406015273 0ustar # Gujarati translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: gu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/gv.po0000644000000000000000000000277714764273406015312 0ustar # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: gv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/he.po0000644000000000000000000000421314764273406015255 0ustar # Hebrew translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2022-09-05 19:31+0000\n" "Last-Translator: Yaron Shahrabani \n" "Language-Team: Hebrew \n" "Language: he\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=(n == 1) ? 0 : ((n == 2) ? 1 : ((n > 10 && " "n % 10 == 0) ? 2 : 3));\n" "X-Generator: Weblate 4.14.1-dev\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "רשימת היישומים שמופיעים בתפריט ההודעות" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" "יישומים שמתאימים למזהים קובצי שולחן העבודה ברשימה זו יופיעו בתפריט ההודעות." #: src/im-application-list.c:231 msgid "New Messages" msgstr "הודעות חדשות" #: src/im-application-list.c:235 msgid "Messages" msgstr "הודעות" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "התראות" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "גישה מהירה להודעות חדשות שהתקבלו" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "זמין" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "מרוחק" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "עסוק" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "בלתי נראה" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "כבוי" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "מחיקה" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "למחוק הכול" ayatana-indicator-messages-24.5.1/po/hi.po0000644000000000000000000000301214764273406015255 0ustar # Hindi translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: hi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/hr.po0000644000000000000000000000407514764273406015300 0ustar # Croatian translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2022-12-31 15:47+0000\n" "Last-Translator: Milo Ivir \n" "Language-Team: Croatian \n" "Language: hr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Generator: Weblate 4.15.1-dev\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "Popis programa koji su prikazani u izborniku za razmjenu poruka" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" "Programi na ovom popisu koji odgovaraju ID-ovima datoteka radne površine, " "prikazuju se u izborniku za razmjenu poruka." #: src/im-application-list.c:231 msgid "New Messages" msgstr "Nove poruke" #: src/im-application-list.c:235 msgid "Messages" msgstr "Poruke" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "Obavjesti" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "Brz pristup novim porukama" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "Dostupno" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "Odsutan(na)" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "Zauzet(a)" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "Nevidljiv(a)" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "Isključen(a)" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "Izbriši" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "Izbriši sve" ayatana-indicator-messages-24.5.1/po/ht.po0000644000000000000000000000301414764273406015272 0ustar # Haitian translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: ht\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/hu.po0000644000000000000000000000374214764273406015303 0ustar # Hungarian translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2020-11-27 14:29+0000\n" "Last-Translator: Ács Zoltán \n" "Language-Team: Hungarian \n" "Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.4-dev\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "Az üzenetek menüben megjelenő alkalmazások listája" #: data/org.ayatana.indicator.messages.gschema.xml:2 #, fuzzy msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" "A listában szereplő asztali fájlazonosítóknak megfelelő alkalmazások az " "üzenetküldő menüben jelennek meg." #: src/im-application-list.c:231 msgid "New Messages" msgstr "Új üzenetek" #: src/im-application-list.c:235 msgid "Messages" msgstr "Üzenetek" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "Értesítések" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "Elérhető" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "Távol" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "Elfoglalt" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "Láthatatlan" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "Offline" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "Törlés" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "Összes törlése" ayatana-indicator-messages-24.5.1/po/hy.po0000644000000000000000000000355614764273406015312 0ustar # Armenian translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2020-04-02 21:09+0000\n" "Last-Translator: Davit Mayilyan \n" "Language-Team: Armenian \n" "Language: hy\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 4.0-dev\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "Նոր նամակներ" #: src/im-application-list.c:235 msgid "Messages" msgstr "Նամակներ" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "Ծանուցումներ" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "Հասանելի" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "Հեռու" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "Զբաղված" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "Անտեսանելի" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "Անցանց" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "Մաքրել" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "Մաքրել ամենը" ayatana-indicator-messages-24.5.1/po/ia.po0000644000000000000000000000302014764273406015245 0ustar # Interlingua translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: ia\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/id.po0000644000000000000000000000350114764273406015254 0ustar # Indonesian translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2021-03-18 17:29+0000\n" "Last-Translator: Reza Almanda \n" "Language-Team: Indonesian \n" "Language: id\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Weblate 4.5.2-dev\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "Daftar aplikasi yang ditampilkan di menu pesan" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "Pesan baru" #: src/im-application-list.c:235 msgid "Messages" msgstr "Pesan" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "Pemberitahuan" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "Tersedia" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "pergi" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "Sibuk" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "Tak terlihat" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "Luring" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "Bersihkan" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "Hapus semua" ayatana-indicator-messages-24.5.1/po/is.po0000644000000000000000000000301614764273406015274 0ustar # Icelandic translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: is\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/it_CARES.po0000644000000000000000000000300514764273406016210 0ustar # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: it_CARES\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/it.po0000644000000000000000000000400714764273406015276 0ustar # Italian translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2023-06-28 10:51+0000\n" "Last-Translator: Sylke Vicious \n" "Language-Team: Italian \n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.18.1\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "Lista delle applicazioni che sono visualizzate nel menu dei messaggi" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" "Le applicazioni corrispondenti agli ID dei file desktop in questo elenco " "sono visualizzate nel menu di messaggistica." #: src/im-application-list.c:231 msgid "New Messages" msgstr "Nuovi messaggi" #: src/im-application-list.c:235 msgid "Messages" msgstr "Messaggi" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "Notifiche" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "Accesso rapido ai nuovi messaggi ricevuti" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "Disponibile" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "Assente" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "Occupato/a" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "Invisibile" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "Non in linea" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "Pulisci" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "Cancella tutto" ayatana-indicator-messages-24.5.1/po/ja.po0000644000000000000000000000403714764273406015257 0ustar # Japanese translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2020-03-17 04:36+0000\n" "Last-Translator: Grace Guo \n" "Language-Team: Japanese \n" "Language: ja\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Weblate 4.0-dev\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "メッセージングメニューに表示されるアプリケーションのリスト" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" "このリストのデスクトップファイルIDに対応するアプリケーションは、メッセージン" "グメニューに表示されます。" #: src/im-application-list.c:231 msgid "New Messages" msgstr "新規メッセージ" #: src/im-application-list.c:235 msgid "Messages" msgstr "メッセージ" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "通知" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "有効" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "離れて" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "ビジー" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "非表示" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "オフライン" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "クリア" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "すべてクリアする" ayatana-indicator-messages-24.5.1/po/ka.po0000644000000000000000000000301514764273406015253 0ustar # Georgian translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: ka\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/kk.po0000644000000000000000000000301314764273406015263 0ustar # Kazakh translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: kk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/kl.po0000644000000000000000000000302014764273406015262 0ustar # Kalaallisut translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: kl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/km.po0000644000000000000000000000302214764273406015265 0ustar # Central Khmer translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: km\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/kmr.po0000644000000000000000000000300014764273406015443 0ustar # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:48+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: kmr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/kn.po0000644000000000000000000000301414764273406015267 0ustar # Kannada translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: kn\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/ko.po0000644000000000000000000000376214764273406015302 0ustar # Korean translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2022-09-30 18:21+0000\n" "Last-Translator: 이정희 \n" "Language-Team: Korean \n" "Language: ko\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Weblate 4.14.1\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "메시징 메뉴에 표시되는 응용프로그램 목록" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" "이 목록의 데스크톱 파일 ID에 해당하는 응용프로그램이 메시징 메뉴에 표시됩니" "다." #: src/im-application-list.c:231 msgid "New Messages" msgstr "새 메시지" #: src/im-application-list.c:235 msgid "Messages" msgstr "메시지" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "알림" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "새로 받은 메시지에 빠르게 액세스" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "사용 가능함" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "자리비움" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "바쁨" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "숨김" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "오프라인" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "지우기" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "모두 지우기" ayatana-indicator-messages-24.5.1/po/ku.po0000644000000000000000000000301414764273406015276 0ustar # Kurdish translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: ku\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/kw.po0000644000000000000000000000301414764273406015300 0ustar # Cornish translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: kw\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/ky.po0000644000000000000000000000301414764273406015302 0ustar # Kirghiz translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: ky\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/la.po0000644000000000000000000000301214764273406015251 0ustar # Latin translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: la\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/lb.po0000644000000000000000000000302214764273406015253 0ustar # Letzeburgesch translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: lb\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/LINGUAS0000644000000000000000000000072414764273406015351 0ustar af am an ar ast az bem be bg bn bo br bs ca ca@valencia ce ckb co crh cs cv cy da de el en_AU en_CA en_GB eo es et eu fa fil fi fo fr_CA fr frp fy ga gd gl gu he hi hr ht hu hy ia id is it ja ka kk kl km kn ko ku kw ky la lb lo lt lv mg mhr mi ml mr ms my nb ne nl nn oc os pa pl ps pt_BR pt ro ru sa sc sd se shn si sk sl sq sr sv sw szl ta te tg th ti tr ug uk ur uz vi wae zh_CN zh_HK ny aa as wo gv fur it_CARES dv mk vec csb tt ta_LK zh_LATN@pinyin zh_TW kmr sdh ayatana-indicator-messages-24.5.1/po/lo.po0000644000000000000000000000350214764273406015273 0ustar # Laotian translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2023-04-21 15:53+0000\n" "Last-Translator: Vilakone Thammavong \n" "Language-Team: Lao \n" "Language: lo\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Weblate 4.18-dev\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "ລາຍຊື່ແອັບພລິເຄຊັນທີ່ສະແດງຢູ່ໃນເມນູຂໍ້ຄວາມ" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/lt.po0000644000000000000000000000420614764273406015302 0ustar # Lithuanian translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2022-09-08 18:19+0000\n" "Last-Translator: Moo \n" "Language-Team: Lithuanian \n" "Language: lt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n % 10 == 1 && (n % 100 < 11 || n % 100 > " "19)) ? 0 : ((n % 10 >= 2 && n % 10 <= 9 && (n % 100 < 11 || n % 100 > 19)) ? " "1 : 2);\n" "X-Generator: Weblate 4.14.1-dev\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "Sąrašas programų, kurios yra rodomos susirašinėjimo meniu" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" "Programos, kurios šiame sąraše atitinka darbalaukio faile esančius ID, bus " "rodomos susirašinėjimo meniu." #: src/im-application-list.c:231 msgid "New Messages" msgstr "Naujos žinutės" #: src/im-application-list.c:235 msgid "Messages" msgstr "Žinutės" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "Pranešimai" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "Greita prieiga prie naujai gautų žinučių" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "Pasiekiamas" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "Pasišalinęs" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "Užsiėmęs" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "Nematomas" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "Atsijungęs" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "Išvalyti" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "Išvalyti viską" ayatana-indicator-messages-24.5.1/po/lv.po0000644000000000000000000000314114764273406015301 0ustar # Latvian translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: lv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : " "2);\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/mg.po0000644000000000000000000000301514764273406015263 0ustar # Malagasy translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: mg\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/mhr.po0000644000000000000000000000302214764273406015444 0ustar # Language mhr translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: mhr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/mi.po0000644000000000000000000000301214764273406015262 0ustar # Maori translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: mi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/mk.po0000644000000000000000000000345614764273406015300 0ustar # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2021-11-04 17:35+0000\n" "Last-Translator: ElectrifiedSpeed \n" "Language-Team: Macedonian \n" "Language: mk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n==1 || n%10==1 ? 0 : 1;\n" "X-Generator: Weblate 4.9-dev\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "Список на апликации што се покажани во менито за пораки" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/ml.po0000644000000000000000000000301614764273406015271 0ustar # Malayalam translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: ml\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/mr.po0000644000000000000000000000301414764273406015275 0ustar # Marathi translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: mr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/ms.po0000644000000000000000000000362114764273406015302 0ustar # Malay translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2020-09-05 07:36+0000\n" "Last-Translator: antuketot76 \n" "Language-Team: Malay \n" "Language: ms\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Weblate 4.3-dev\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "Senarai aplikasi yang dipaparkan dalam mesej menu" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" "Aplikasi merujuk kepada ID fail desktop disini dipaparkan didalam mesej menu." #: src/im-application-list.c:231 msgid "New Messages" msgstr "Mesej Baru" #: src/im-application-list.c:235 msgid "Messages" msgstr "Mesej" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "Notifikasi" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "Boleh digunakan" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "Keluar" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "Sibuk" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "Tidak Nampak" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "Ditutup" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "Bersih" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "Bersihkan Semua" ayatana-indicator-messages-24.5.1/po/my.po0000644000000000000000000000301414764273406015304 0ustar # Burmese translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: my\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/nb.po0000644000000000000000000000374314764273406015267 0ustar # Norwegian Bokmal translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2023-10-16 12:02+0000\n" "Last-Translator: Allan Nordhøy \n" "Language-Team: Norwegian Bokmål \n" "Language: nb\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.1-dev\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "Liste over program som vises i meldingsmenyen" #: data/org.ayatana.indicator.messages.gschema.xml:2 #, fuzzy msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" "Programmer som tilsvarer skrivebordsfil-ID-er på denne listen vises i " "meldingsmenyen." #: src/im-application-list.c:231 msgid "New Messages" msgstr "Nye meldinger" #: src/im-application-list.c:235 msgid "Messages" msgstr "Meldinger" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "Merknader" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "Hurtigtilgang til nylig mottatte meldinger" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "Tilgjengelig" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "Borte" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "Opptatt" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "Usynlig" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "Frakoblet" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "Tøm" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "Tøm alle" ayatana-indicator-messages-24.5.1/po/ne.po0000644000000000000000000000301314764273406015260 0ustar # Nepali translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: ne\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/nl.po0000644000000000000000000000376614764273406015306 0ustar # Dutch translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2023-03-17 11:41+0000\n" "Last-Translator: Heimen Stoffels \n" "Language-Team: Dutch \n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.16.2-dev\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "Lijst met programma's die worden getoond in het berichtmenu" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" "Programma's die overeenkomen met de id's van desktopbestanden op deze lijst " "worden in het berichtmenu getoond." #: src/im-application-list.c:231 msgid "New Messages" msgstr "Nieuwe berichten" #: src/im-application-list.c:235 msgid "Messages" msgstr "Berichten" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "Meldingen" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "Snelle toegang tot nieuwe ontvangen berichten" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "Beschikbaar" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "Afwezig" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "Bezig" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "Onzichtbaar" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "Offline" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "Wissen" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "Alles wissen" ayatana-indicator-messages-24.5.1/po/nn.po0000644000000000000000000000310514764273406015273 0ustar # Norwegian Nynorsk translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: nn\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/ny.po0000644000000000000000000000277714764273406015324 0ustar # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: ny\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/oc.po0000644000000000000000000000402714764273406015265 0ustar # Occitan translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2022-09-08 18:19+0000\n" "Last-Translator: Quentin PAGÈS \n" "Language-Team: Occitan \n" "Language: oc\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 4.14.1-dev\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "Lista de las aplicacions que son mostradas al menú de messatjariá" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" "Aplicacions que correspondon als identificants dels fichièrs de burèu dins " "aquesta lista qu’es mostrada sus la messatjariá." #: src/im-application-list.c:231 msgid "New Messages" msgstr "Nòus messatges" #: src/im-application-list.c:235 msgid "Messages" msgstr "Messatges" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "Notificacions" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "Accès rapid pels messatges recebuts fa pas res" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "Disponible" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "Absent" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "Ocupat" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "Invisble" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "Fòra linha" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "Escafar" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "Tot escafar" ayatana-indicator-messages-24.5.1/po/os.po0000644000000000000000000000301514764273406015301 0ustar # Ossetian translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: os\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/pa.po0000644000000000000000000000301414764273406015257 0ustar # Punjabi translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: pa\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/pl.po0000644000000000000000000000407114764273406015276 0ustar # Polish translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2023-05-03 19:49+0000\n" "Last-Translator: Eryk Michalak \n" "Language-Team: Polish \n" "Language: pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2;\n" "X-Generator: Weblate 4.18-dev\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "Lista aplikacji wyświetlanych w menu wiadomości" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" "Aplikacje odpowiadające identyfikatorom plików na pulpicie są wyświetlane na " "tej liście w menu wiadomości." #: src/im-application-list.c:231 msgid "New Messages" msgstr "Nowe wiadomości" #: src/im-application-list.c:235 msgid "Messages" msgstr "Wiadomości" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "Powiadomienia" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "Szybki dostęp do nowo otrzymanych wiadomości" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "Dostępny" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "Z dala" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "Zajęty" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "Niewidzialny" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "Offline" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "Wyczyść" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "Wyczyść wszystko" ayatana-indicator-messages-24.5.1/po/POTFILES.in0000644000000000000000000000054014764273406016075 0ustar [encoding: UTF-8] data/org.ayatana.indicator.messages.gschema.xml src/gactionmuxer.c src/gsettingsstrv.c src/im-accounts-service.c src/im-application-list.c src/im-desktop-menu.c src/im-menu.c src/im-phone-menu.c src/indicator-desktop-shortcuts.c src/messages-service.c libmessaging-menu/messaging-menu-message.c libmessaging-menu/messaging-menu-app.c ayatana-indicator-messages-24.5.1/po/ps.po0000644000000000000000000000301314764273406015300 0ustar # Pashto translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: ps\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/pt_BR.po0000644000000000000000000000404314764273406015670 0ustar # Portuguese translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2022-09-07 03:22+0000\n" "Last-Translator: Wellington Terumi Uemura \n" "Language-Team: Portuguese (Brazil) \n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 4.14.1-dev\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "Lista de aplicações a mostrar no menu de mensagens" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" "Os aplicativos correspondentes aos IDs de arquivos da Área de Trabalho nesta " "lista são mostrados no menu de mensagens." #: src/im-application-list.c:231 msgid "New Messages" msgstr "Novas Mensagens" #: src/im-application-list.c:235 msgid "Messages" msgstr "Mensagens" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "Notificações" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "Acesso rápido as mensagens recém-recebidas" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "Disponível" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "Ausente" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "Ocupado" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "Invisível" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "Offline" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "Remover" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "Remover Tudo" ayatana-indicator-messages-24.5.1/po/pt.po0000644000000000000000000000401414764273406015303 0ustar # Portuguese translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2023-04-07 16:52+0000\n" "Last-Translator: ssantos \n" "Language-Team: Portuguese \n" "Language: pt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 4.17-dev\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "Lista de aplicações a mostrar no menu de mensagens" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" "As aplicações correspondentes aos identificadores (ids) do ficheiro da área " "de trabalho nesta lista são mostradas no menu de mensagens." #: src/im-application-list.c:231 msgid "New Messages" msgstr "Novas mensagens" #: src/im-application-list.c:235 msgid "Messages" msgstr "Mensagens" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "Notificações" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "Acesso rápido às mensagens recém-recebidas" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "Disponível" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "Ausente" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "Ocupado" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "Invisível" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "Desconectado" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "Limpar" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "Limpar tudo" ayatana-indicator-messages-24.5.1/po/ro.po0000644000000000000000000000406114764273406015302 0ustar # Romanian translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2024-09-29 00:16+0000\n" "Last-Translator: Remus-Gabriel Chelu \n" "Language-Team: Romanian \n" "Language: ro\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " "20)) ? 1 : 2;\n" "X-Generator: Weblate 5.8-dev\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "Lista de aplicații care sunt afișate în meniul de mesagerie" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" "Aplicațiile ce corespund ID-urilor fișierelor desktop din această listă sunt " "afișate în meniul de mesagerie." #: src/im-application-list.c:231 msgid "New Messages" msgstr "Mesaje noi" #: src/im-application-list.c:235 msgid "Messages" msgstr "Mesaje" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "Notificări" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "Acces rapid la mesajele recent primite" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "Disponibil" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "Plecat" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "Ocupat" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "Invizibil" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "Deconectat" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "Șterge" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "Șterge tot" ayatana-indicator-messages-24.5.1/po/ru.po0000644000000000000000000000447114764273406015315 0ustar # Russian translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2022-09-15 21:17+0000\n" "Last-Translator: Sergii Horichenko \n" "Language-Team: Russian \n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Generator: Weblate 4.14.1-dev\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "Список приложения которые показывают меню с сообщениями" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" "Приложения, соответствующие идентификаторам файлов рабочего стола в этом " "списке, отображаются в меню Сообщений." #: src/im-application-list.c:231 msgid "New Messages" msgstr "Новые сообщения" #: src/im-application-list.c:235 msgid "Messages" msgstr "Сообщения" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "Уведомления" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "Быстрый доступ к новым сообщениям" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "Доступно" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "Долой" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "Оживленный" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "Невидимый" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "Не в сети" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "Очистить" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "Очистить все" ayatana-indicator-messages-24.5.1/po/sa.po0000644000000000000000000000301514764273406015263 0ustar # Sanskrit translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: sa\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/sc.po0000644000000000000000000000354714764273406015277 0ustar # Sardinian translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2020-10-27 14:36+0000\n" "Last-Translator: Adrià Martín \n" "Language-Team: Sardinian \n" "Language: sc\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.3.2-dev\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "Lista de is aplicatziones ammustradas in su menù de is messàgios" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "Messàgios noos" #: src/im-application-list.c:235 msgid "Messages" msgstr "Messàgios" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "Notìficas" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "A disponimentu" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "Invisìbile" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "Foras de lìnia" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "Lìmpia" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "Cantzella totu" ayatana-indicator-messages-24.5.1/po/sdh.po0000644000000000000000000000300014764273406015430 0ustar # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:48+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: sdh\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/sd.po0000644000000000000000000000301314764273406015264 0ustar # Sindhi translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: sd\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/se.po0000644000000000000000000000302214764273406015265 0ustar # Northern Sami translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: se\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/shn.po0000644000000000000000000000301214764273406015445 0ustar # Shan translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: shn\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/si.po0000644000000000000000000000301414764273406015272 0ustar # Sinhala translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: si\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/sk.po0000644000000000000000000000333714764273406015304 0ustar # Slovak translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2020-06-28 05:41+0000\n" "Last-Translator: Zsolt Pastorek \n" "Language-Team: Slovak \n" "Language: sk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" "X-Generator: Weblate 4.2-dev\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "Oznámenia" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/sl.po0000644000000000000000000000316414764273406015303 0ustar # Slovenian translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: sl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n" "%100==4 ? 2 : 3);\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/sq.po0000644000000000000000000000375514764273406015316 0ustar # Albanian translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2019-10-31 15:03+0000\n" "Last-Translator: Marcela Korreshi \n" "Language-Team: Albanian \n" "Language: sq\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 3.10-dev\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "Lista e sistemeve të cilat janë të dukshme ne menunë e mesazheve" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" "Sistemet korresponduese të skedarit të IDs në desktop në këtë listë janë të " "dukshme në menunë e mesazheve." #: src/im-application-list.c:231 msgid "New Messages" msgstr "Mesazhe të reja" #: src/im-application-list.c:235 msgid "Messages" msgstr "Mesazhe" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "Njoftime" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "I Disponueshëm" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "Mungon" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "I zënë" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "I padukshëm" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "Jashtë linje" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "Anullon" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "Anullo të gjitha" ayatana-indicator-messages-24.5.1/po/sr.po0000644000000000000000000000321014764273406015301 0ustar # Serbian translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: sr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/sv.po0000644000000000000000000000372014764273406015313 0ustar # Swedish translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2023-02-11 12:36+0000\n" "Last-Translator: Luna Jernberg \n" "Language-Team: Swedish \n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.16-dev\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "Lista över program som visas i meddelandemenyn" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" "Program som motsvarar skrivbordsfil-ID:n i denna lista visas i " "meddelandemenyn." #: src/im-application-list.c:231 msgid "New Messages" msgstr "Nya meddelanden" #: src/im-application-list.c:235 msgid "Messages" msgstr "Meddelanden" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "Aviseringar" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "Snabb åtkomst till nyligen mottagna meddelanden" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "Tillgänglig" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "Borta" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "Upptagen" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "Osynlig" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "Frånkopplad" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "Rensa" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "Rensa allt" ayatana-indicator-messages-24.5.1/po/sw.po0000644000000000000000000000301414764273406015310 0ustar # Swahili translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: sw\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/szl.po0000644000000000000000000000302214764273406015466 0ustar # Language szl translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: szl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/ta_LK.po0000644000000000000000000000300214764273406015646 0ustar # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:48+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: ta_LK\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/ta.po0000644000000000000000000000521314764273406015266 0ustar # Tamil translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2024-11-09 09:00+0000\n" "Last-Translator: தமிழ்நேரம் \n" "Language-Team: Tamil \n" "Language: ta\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.8.2\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "செய்தியிடல் பட்டியலில் காட்டப்பட்டுள்ள பயன்பாடுகளின் பட்டியல்" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" "இந்த பட்டியலில் உள்ள டெச்க்டாப் கோப்பு ஐடிகளுடன் தொடர்புடைய பயன்பாடுகள் செய்தி பட்டியலில் காட்டப்பட்டுள்ளன." #: src/im-application-list.c:231 msgid "New Messages" msgstr "புதிய செய்திகள்" #: src/im-application-list.c:235 msgid "Messages" msgstr "செய்திகள்" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "அறிவிப்புகள்" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "புதிதாக பெறப்பட்ட செய்திகளுக்கு விரைவான அணுகல்" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "கிடைக்கிறது" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "தொலைவில்" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "பிசியாக" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "கண்ணுக்கு தெரியாத" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "இணையமில்லாமல்" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "தெளிவான" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "அனைத்தையும் அழிக்கவும்" ayatana-indicator-messages-24.5.1/po/te.po0000644000000000000000000000362014764273406015272 0ustar # Telugu translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2019-08-11 11:23+0000\n" "Last-Translator: Madhumitha Thanneeru \n" "Language-Team: Telugu \n" "Language: te\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 3.8-dev\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "కొత్త సందేశం" #: src/im-application-list.c:235 msgid "Messages" msgstr "సందేశాలు" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "అందుబాటులో" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "దూరం" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "అందుబాటులో లేకపోవడం" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "అదృశ్యం" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "స్పష్టమైన" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/tg.po0000644000000000000000000000301214764273406015267 0ustar # Tajik translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: tg\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/th.po0000644000000000000000000000301114764273406015267 0ustar # Thai translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: th\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/ti.po0000644000000000000000000000301514764273406015274 0ustar # Tigrinya translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: ti\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/tr.po0000644000000000000000000000372614764273406015316 0ustar # Turkish translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2022-09-25 13:21+0000\n" "Last-Translator: Oğuz Ersen \n" "Language-Team: Turkish \n" "Language: tr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.14.1\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "Mesajlaşma menüsünde gösterilen uygulamaların listesi" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" "Masaüstü dosya ID' lerine karşılık gelen uygulamalar mesaj listesinde " "gösterilmektedir." #: src/im-application-list.c:231 msgid "New Messages" msgstr "Yeni Mesajlar" #: src/im-application-list.c:235 msgid "Messages" msgstr "Mesajlar" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "Bildirimler" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "Yeni alınan mesajlara hızlı erişim" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "Müsait" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "Uzakta" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "Meşgul" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "Görünmez" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "Çevrimdışı" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "Temizle" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "Hepsini Temizle" ayatana-indicator-messages-24.5.1/po/tt.po0000644000000000000000000000277714764273406015325 0ustar # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:48+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: tt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/ug.po0000644000000000000000000000424614764273406015302 0ustar # Uighur translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2020-05-10 07:12+0000\n" "Last-Translator: Abdusalam <1810010207@s.upc.edu.cn>\n" "Language-Team: Uyghur \n" "Language: ug\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.1-dev\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "ئۇچۇر تىزىملىكىدە كۆرسىتىلگەن پروگراممىلار تىزىملىكى" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" "بۇ تىزىملىكتىكى ئۈستەل يۈزى ھۆججەت كىملىكىگە ماس كېلىدىغان پروگراممىلار " "ئۇچۇر تىزىملىكىدە كۆرسىتىلىدۇ." #: src/im-application-list.c:231 msgid "New Messages" msgstr "يېڭى ئۇچۇرلار" #: src/im-application-list.c:235 msgid "Messages" msgstr "ئۇچۇرلار" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "ئۇقتۇرۇش" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "ئىشلەتكىلى بولىدۇ" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "ئايرىلىش" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "ئالدىراش" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "كۆرۈنمەيدۇ" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "تورسىز" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "تازىلاش" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "ھەممىنى تازىلاش" ayatana-indicator-messages-24.5.1/po/uk.po0000644000000000000000000000454014764273406015303 0ustar # Ukrainian translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2022-09-15 21:17+0000\n" "Last-Translator: Sergii Horichenko \n" "Language-Team: Ukrainian \n" "Language: uk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Generator: Weblate 4.14.1-dev\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "Список програм, які відображаються в меню повідомлень" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" "Програми, що відповідають ідентифікаторам настільних файлів в цьому списку, " "відображаються в меню повідомлень." #: src/im-application-list.c:231 msgid "New Messages" msgstr "Нові повідомлення" #: src/im-application-list.c:235 msgid "Messages" msgstr "Повідомлення" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "Сповіщення" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "Швидкий доступ до свіжих повідомлень" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "Доступний" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "Відсутній" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "Зайнятий" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "Невидимий" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "В автономному режимі" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "Очистити" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "Очистити все" ayatana-indicator-messages-24.5.1/po/ur.po0000644000000000000000000000301114764273406015302 0ustar # Urdu translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: ur\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/uz.po0000644000000000000000000000301214764273406015313 0ustar # Uzbek translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: uz\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/vec.po0000644000000000000000000000300014764273406015427 0ustar # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:48+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: vec\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/vi.po0000644000000000000000000000306714764273406015305 0ustar # Vietnamese translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: vi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/wae.po0000644000000000000000000000302214764273406015432 0ustar # Language wae translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: wae\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/wo.po0000644000000000000000000000277714764273406015323 0ustar # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: wo\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/zh_CN.po0000644000000000000000000000361614764273406015670 0ustar # Chinese translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2024-04-01 22:37+0000\n" "Last-Translator: 复予 \n" "Language-Team: Chinese (Simplified) \n" "Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Weblate 5.5-dev\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "消息菜单中显示的应用程序列表" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "桌面文件ID相对应的应用程序已显示在消息菜单中." #: src/im-application-list.c:231 msgid "New Messages" msgstr "新的信息" #: src/im-application-list.c:235 msgid "Messages" msgstr "消息" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "通知" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "快速查看新接收的消息" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "在线" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "离开" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "忙" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "隐身" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "离线" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "清除" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "清除所有" ayatana-indicator-messages-24.5.1/po/zh_HK.po0000644000000000000000000000301714764273406015665 0ustar # Chinese translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:47+0200\n" "PO-Revision-Date: 2017-10-12 07:58+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: zh_HK\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/zh_LATN@pinyin.po0000644000000000000000000000301314764273406017444 0ustar # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:48+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: zh_LATN@pinyin\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "" #: data/org.ayatana.indicator.messages.gschema.xml:2 msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "" #: src/im-application-list.c:231 msgid "New Messages" msgstr "" #: src/im-application-list.c:235 msgid "Messages" msgstr "" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "" ayatana-indicator-messages-24.5.1/po/zh_TW.po0000644000000000000000000000363714764273406015725 0ustar # Chinese translations for PACKAGE package. # Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2017. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-09-14 08:48+0200\n" "PO-Revision-Date: 2019-01-12 12:06+0000\n" "Last-Translator: Louies \n" "Language-Team: Chinese (Traditional) \n" "Language: zh_TW\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Weblate 3.4-dev\n" #: data/org.ayatana.indicator.messages.gschema.xml:1 msgid "List of applications that are shown in the messaging menu" msgstr "消息傳遞功能表中顯示的應用程式清單" #: data/org.ayatana.indicator.messages.gschema.xml:2 #, fuzzy msgid "" "Applications corresponding to the desktop file IDs in this list are shown in " "the messaging menu." msgstr "與此清單中的桌面檔相對應的應用程式顯示在消息傳遞功能表中。" #: src/im-application-list.c:231 msgid "New Messages" msgstr "新訊息" #: src/im-application-list.c:235 msgid "Messages" msgstr "訊息" #. title #: src/im-application-list.c:258 msgid "Notifications" msgstr "通知" #: src/im-application-list.c:259 msgid "Quick access to newly received messages" msgstr "" #: src/im-desktop-menu.c:67 msgid "Available" msgstr "可用" #: src/im-desktop-menu.c:68 msgid "Away" msgstr "離開" #: src/im-desktop-menu.c:69 msgid "Busy" msgstr "忙碌" #: src/im-desktop-menu.c:70 msgid "Invisible" msgstr "無顯示" #: src/im-desktop-menu.c:71 msgid "Offline" msgstr "離線" #: src/im-desktop-menu.c:367 msgid "Clear" msgstr "清除" #: src/im-phone-menu.c:76 msgid "Clear All" msgstr "全部清除" ayatana-indicator-messages-24.5.1/README0000644000000000000000000000000014764273406014551 0ustar ayatana-indicator-messages-24.5.1/README.md0000644000000000000000000000370314764273406015165 0ustar # Ayatana System Indicator — Messages [![Build Status](https://api.travis-ci.com/AyatanaIndicators/ayatana-indicator-messages.svg)](https://travis-ci.com/github/AyatanaIndicators/ayatana-indicator-messages) ## About Ayatana Indicators The Ayatana Indicators project is the continuation of Application Indicators and System Indicators, two technologies developed by Canonical Ltd. for the Unity7 desktop. Application Indicators are a GTK implementation of the StatusNotifierItem Specification (SNI) that was originally submitted to freedesktop.org by KDE. System Indicators are an extensions to the Application Indicators idea. System Indicators allow for far more widgets to be displayed in the indicator's menu. The Ayatana Indicators project is the new upstream for application indicators, system indicators and associated projects with a focus on making Ayatana Indicators a desktop agnostic technology. On GNU/Linux, Ayatana Indicators are currently available for desktop envinronments like MATE (used by default in [Ubuntu MATE](https://ubuntu-mate.com)), XFCE (used by default in [Xubuntu](https://bluesabre.org/2021/02/25/xubuntu-21-04-progress-update/), LXDE, and the Budgie Desktop). The Lomiri Operating Environment (UI of the Ubuntu Touch OS, formerly known as Unity8) uses Ayatana Indicators for rendering its notification area and the [UBports](https://ubports.com) project is a core contributor to the Ayatana Indicators project. For further info, please visit: https://ayatana-indicators.org ## The Messages Ayatana System Indicator The -messages Ayatana System Indicator is the messages menu indicator for Unity7, MATE and Lomiri (optionally for others, e.g. XFCE, LXDE). Its behavior and features are listed at https://wiki.ayatana-indicators.org/AyatanaIndicatorMessages ## License and Copyright See COPYING and AUTHORS file in this project. ## Building and Testing For instructions on building and running built-in tests, see the INSTALL.md file. ayatana-indicator-messages-24.5.1/src/CMakeLists.txt0000644000000000000000000000274514764273406017242 0ustar include(GdbusCodegen) set(SOURCES_GEN) # indicator-messages-service.h # indicator-messages-service.c add_gdbus_codegen_with_namespace( SOURCES_GEN indicator-messages-service org.ayatana.indicator.messages IndicatorMessages ${CMAKE_SOURCE_DIR}/common/org.ayatana.indicator.messages.service.xml ) # indicator-messages-application.h # indicator-messages-application.c add_gdbus_codegen_with_namespace( SOURCES_GEN indicator-messages-application org.ayatana.indicator.messages IndicatorMessages ${CMAKE_SOURCE_DIR}/common/org.ayatana.indicator.messages.application.xml ) # ayatana-indicator-messages-service set( SOURCES gactionmuxer.c gsettingsstrv.c im-accounts-service.c im-application-list.c im-desktop-menu.c im-menu.c im-phone-menu.c indicator-desktop-shortcuts.c messages-service.c ) add_executable("ayatana-indicator-messages-service" ${SOURCES} ${SOURCES_GEN}) target_compile_definitions( "ayatana-indicator-messages-service" PUBLIC G_LOG_DOMAIN="Ayatana-Indicator-Messages" GETTEXT_PACKAGE="${GETTEXT_PACKAGE}" LOCALEDIR="${CMAKE_INSTALL_FULL_LOCALEDIR}" ) target_include_directories("ayatana-indicator-messages-service" PUBLIC ${PROJECT_DEPS_INCLUDE_DIRS} ${CMAKE_CURRENT_BINARY_DIR}) target_link_libraries("ayatana-indicator-messages-service" ${PROJECT_DEPS_LIBRARIES}) install(TARGETS "ayatana-indicator-messages-service" RUNTIME DESTINATION "${CMAKE_INSTALL_FULL_LIBEXECDIR}/ayatana-indicator-messages") ayatana-indicator-messages-24.5.1/src/dbus-data.h0000644000000000000000000000210414764273406016504 0ustar /* * Copyright 2012-2013 Canonical Ltd. * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3, as published * by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranties of * MERCHANTABILITY, SATISFACTORY QUALITY, 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, see . */ #ifndef __DBUS_DATA_H__ #define __DBUS_DATA_H__ 1 #define INDICATOR_MESSAGES_DBUS_NAME "org.ayatana.indicator.messages" #define INDICATOR_MESSAGES_DBUS_OBJECT "/org/ayatana/indicator/messages" #define INDICATOR_MESSAGES_DBUS_SERVICE_OBJECT "/org/ayatana/indicator/messages/service" #define INDICATOR_MESSAGES_DBUS_SERVICE_INTERFACE "org.ayatana.indicator.messages.service" #endif /* __DBUS_DATA_H__ */ ayatana-indicator-messages-24.5.1/src/gactionmuxer.c0000644000000000000000000004023114764273406017343 0ustar /* * Copyright 2012 Canonical Ltd. * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3, as published * by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranties of * MERCHANTABILITY, SATISFACTORY QUALITY, 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, see . * * Authors: * Lars Uebernickel * Ryan Lortie */ #include "gactionmuxer.h" #include /* * SECTION:gactionmuxer * @short_description: Aggregate several action groups * * #GActionMuxer is a #GActionGroup that is capable of containing other * #GActionGroup instances. * * The typical use is aggregating all of the actions applicable to a * particular context into a single action group, with namespacing. * * Consider the case of two action groups -- one containing actions * applicable to an entire application (such as 'quit') and one * containing actions applicable to a particular window in the * application (such as 'fullscreen'). * * In this case, each of these action groups could be added to a * #GActionMuxer with the prefixes "app" and "win", respectively. This * would expose the actions as "app.quit" and "win.fullscreen" on the * #GActionGroup interface presented by the #GActionMuxer. * * Activations and state change requests on the #GActionMuxer are wired * through to the underlying action group in the expected way. */ typedef GObjectClass GActionMuxerClass; struct _GActionMuxer { GObject parent; GActionGroup *global_actions; GHashTable *groups; /* prefix -> subgroup */ GHashTable *reverse; /* subgroup -> prefix */ }; static void g_action_muxer_group_init (GActionGroupInterface *iface); static void g_action_muxer_dispose (GObject *object); static void g_action_muxer_finalize (GObject *object); static void g_action_muxer_disconnect_group (GActionMuxer *muxer, GActionGroup *subgroup); static gchar ** g_action_muxer_list_actions (GActionGroup *group); static void g_action_muxer_activate_action (GActionGroup *group, const gchar *action_name, GVariant *parameter); static void g_action_muxer_change_action_state (GActionGroup *group, const gchar *action_name, GVariant *value); static gboolean g_action_muxer_query_action (GActionGroup *group, const gchar *action_name, gboolean *enabled, const GVariantType **parameter_type, const GVariantType **state_type, GVariant **state_hint, GVariant **state); static void g_action_muxer_action_added (GActionGroup *group, gchar *action_name, gpointer user_data); static void g_action_muxer_action_removed (GActionGroup *group, gchar *action_name, gpointer user_data); static void g_action_muxer_action_state_changed (GActionGroup *group, gchar *action_name, GVariant *value, gpointer user_data); static void g_action_muxer_action_enabled_changed (GActionGroup *group, gchar *action_name, gboolean enabled, gpointer user_data); G_DEFINE_TYPE_WITH_CODE (GActionMuxer, g_action_muxer, G_TYPE_OBJECT, G_IMPLEMENT_INTERFACE (G_TYPE_ACTION_GROUP, g_action_muxer_group_init)); static void g_action_muxer_class_init (GObjectClass *klass) { klass->dispose = g_action_muxer_dispose; klass->finalize = g_action_muxer_finalize; } static void g_action_muxer_init (GActionMuxer *muxer) { muxer->global_actions = NULL; muxer->groups = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref); muxer->reverse = g_hash_table_new (g_direct_hash, g_direct_equal); } static void g_action_muxer_group_init (GActionGroupInterface *iface) { iface->list_actions = g_action_muxer_list_actions; iface->activate_action = g_action_muxer_activate_action; iface->change_action_state = g_action_muxer_change_action_state; iface->query_action = g_action_muxer_query_action; } static void g_action_muxer_dispose (GObject *object) { GActionMuxer *muxer = G_ACTION_MUXER (object); GHashTableIter it; GActionGroup *subgroup; if (muxer->global_actions) { g_action_muxer_disconnect_group (muxer, muxer->global_actions); g_clear_object (&muxer->global_actions); } g_hash_table_iter_init (&it, muxer->groups); while (g_hash_table_iter_next (&it, NULL, (gpointer *) &subgroup)) g_action_muxer_disconnect_group (muxer, subgroup); g_hash_table_remove_all (muxer->groups); g_hash_table_remove_all (muxer->reverse); } static void g_action_muxer_finalize (GObject *object) { GActionMuxer *muxer = G_ACTION_MUXER (object); g_hash_table_unref (muxer->groups); g_hash_table_unref (muxer->reverse); G_OBJECT_CLASS (g_action_muxer_parent_class)->finalize (object); } static GActionGroup * g_action_muxer_lookup_group (GActionMuxer *muxer, const gchar *full_name, const gchar **action_name) { const gchar *sep; GActionGroup *group; sep = strchr (full_name, '.'); if (sep) { gchar *prefix; prefix = g_strndup (full_name, sep - full_name); group = g_hash_table_lookup (muxer->groups, prefix); g_free (prefix); if (action_name) *action_name = sep + 1; } else { group = muxer->global_actions; if (action_name) *action_name = full_name; } return group; } static gchar * g_action_muxer_lookup_full_name (GActionMuxer *muxer, GActionGroup *subgroup, const gchar *action_name) { gpointer prefix; if (subgroup == muxer->global_actions) return g_strdup (action_name); if (g_hash_table_lookup_extended (muxer->reverse, subgroup, NULL, &prefix)) return g_strdup_printf ("%s.%s", (gchar *) prefix, action_name); return NULL; } static void g_action_muxer_disconnect_group (GActionMuxer *muxer, GActionGroup *subgroup) { gchar **actions; gchar **action; actions = g_action_group_list_actions (subgroup); for (action = actions; *action; action++) g_action_muxer_action_removed (subgroup, *action, muxer); g_strfreev (actions); g_signal_handlers_disconnect_by_func (subgroup, g_action_muxer_action_added, muxer); g_signal_handlers_disconnect_by_func (subgroup, g_action_muxer_action_removed, muxer); g_signal_handlers_disconnect_by_func (subgroup, g_action_muxer_action_enabled_changed, muxer); g_signal_handlers_disconnect_by_func (subgroup, g_action_muxer_action_state_changed, muxer); } static gchar ** g_action_muxer_list_actions (GActionGroup *group) { GActionMuxer *muxer = G_ACTION_MUXER (group); GHashTableIter it; GArray *all_actions; gchar *prefix; GActionGroup *subgroup; gchar **actions; gchar **a; all_actions = g_array_sized_new (TRUE, FALSE, sizeof (gchar *), 8); if (muxer->global_actions) { actions = g_action_group_list_actions (muxer->global_actions); for (a = actions; *a; a++) { gchar *name = g_strdup (*a); g_array_append_val (all_actions, name); } g_strfreev (actions); } g_hash_table_iter_init (&it, muxer->groups); while (g_hash_table_iter_next (&it, (gpointer *) &prefix, (gpointer *) &subgroup)) { actions = g_action_group_list_actions (subgroup); for (a = actions; *a; a++) { gchar *full_name = g_strdup_printf ("%s.%s", prefix, *a); g_array_append_val (all_actions, full_name); } g_strfreev (actions); } return (gchar **) g_array_free (all_actions, FALSE); } static void g_action_muxer_activate_action (GActionGroup *group, const gchar *action_name, GVariant *parameter) { GActionMuxer *muxer = G_ACTION_MUXER (group); GActionGroup *subgroup; const gchar *action; g_return_if_fail (action_name != NULL); subgroup = g_action_muxer_lookup_group (muxer, action_name, &action); if (subgroup) g_action_group_activate_action (subgroup, action, parameter); } static void g_action_muxer_change_action_state (GActionGroup *group, const gchar *action_name, GVariant *value) { GActionMuxer *muxer = G_ACTION_MUXER (group); GActionGroup *subgroup; const gchar *action; g_return_if_fail (action_name != NULL); subgroup = g_action_muxer_lookup_group (muxer, action_name, &action); if (subgroup) g_action_group_change_action_state (subgroup, action, value); } static gboolean g_action_muxer_query_action (GActionGroup *group, const gchar *action_name, gboolean *enabled, const GVariantType **parameter_type, const GVariantType **state_type, GVariant **state_hint, GVariant **state) { GActionMuxer *muxer = G_ACTION_MUXER (group); GActionGroup *subgroup; const gchar *action; g_return_val_if_fail (action_name != NULL, FALSE); subgroup = g_action_muxer_lookup_group (muxer, action_name, &action); if (!subgroup) return FALSE; return g_action_group_query_action (subgroup, action, enabled, parameter_type, state_type, state_hint, state); } static void g_action_muxer_action_added (GActionGroup *group, gchar *action_name, gpointer user_data) { GActionMuxer *muxer = user_data; gchar *full_name; full_name = g_action_muxer_lookup_full_name (muxer, group, action_name); if (full_name) { g_action_group_action_added (G_ACTION_GROUP (muxer), full_name); g_free (full_name); } } static void g_action_muxer_action_removed (GActionGroup *group, gchar *action_name, gpointer user_data) { GActionMuxer *muxer = user_data; gchar *full_name; full_name = g_action_muxer_lookup_full_name (muxer, group, action_name); if (full_name) { g_action_group_action_removed (G_ACTION_GROUP (muxer), full_name); g_free (full_name); } } static void g_action_muxer_action_state_changed (GActionGroup *group, gchar *action_name, GVariant *value, gpointer user_data) { GActionMuxer *muxer = user_data; gchar *full_name; full_name = g_action_muxer_lookup_full_name (muxer, group, action_name); if (full_name) { g_action_group_action_state_changed (G_ACTION_GROUP (muxer), full_name, value); g_free (full_name); } } static void g_action_muxer_action_enabled_changed (GActionGroup *group, gchar *action_name, gboolean enabled, gpointer user_data) { GActionMuxer *muxer = user_data; gchar *full_name; full_name = g_action_muxer_lookup_full_name (muxer, group, action_name); if (full_name) { g_action_group_action_enabled_changed (G_ACTION_GROUP (muxer), full_name, enabled); g_free (full_name); } } /* * g_action_muxer_new: * * Creates a new #GActionMuxer. */ GActionMuxer * g_action_muxer_new (void) { return g_object_new (G_TYPE_ACTION_MUXER, NULL); } /* * g_action_muxer_insert: * @muxer: a #GActionMuxer * @prefix: (allow-none): the prefix string for the action group, or NULL * @group: (allow-none): a #GActionGroup, or NULL * * Adds the actions in @group to the list of actions provided by @muxer. * @prefix is prefixed to each action name, such that for each action * x in @group, there is an equivalent action * @prefix.x in @muxer. * * For example, if @prefix is "app" and @group contains an * action called "quit", then @muxer will now contain an * action called "app.quit". * * If @prefix is NULL, the actions in @group will be added * to @muxer without prefix. * * If @group is NULL, this function has the same effect as * calling g_action_muxer_remove() with @prefix. * * There may only be one group per prefix (including the * NULL-prefix). If a group has been added with @prefix in * a previous call to this function, it will be removed. * * @prefix must not contain a dot ('.'). */ void g_action_muxer_insert (GActionMuxer *muxer, const gchar *prefix, GActionGroup *group) { gchar *prefix_copy; gchar **actions; gchar **action; g_return_if_fail (G_IS_ACTION_MUXER (muxer)); g_return_if_fail (group == NULL || G_IS_ACTION_GROUP (group)); g_action_muxer_remove (muxer, prefix); if (group == NULL) return; if (prefix) { prefix_copy = g_strdup (prefix); g_hash_table_insert (muxer->groups, prefix_copy, g_object_ref (group)); g_hash_table_insert (muxer->reverse, group, prefix_copy); } else muxer->global_actions = g_object_ref (group); actions = g_action_group_list_actions (group); for (action = actions; *action; action++) g_action_muxer_action_added (group, *action, muxer); g_strfreev (actions); g_signal_connect (group, "action-added", G_CALLBACK (g_action_muxer_action_added), muxer); g_signal_connect (group, "action-removed", G_CALLBACK (g_action_muxer_action_removed), muxer); g_signal_connect (group, "action-enabled-changed", G_CALLBACK (g_action_muxer_action_enabled_changed), muxer); g_signal_connect (group, "action-state-changed", G_CALLBACK (g_action_muxer_action_state_changed), muxer); } /* * g_action_muxer_remove: * @muxer: a #GActionMuxer * @prefix: (allow-none): the prefix of the action group to remove, or NULL * * Removes a #GActionGroup from the #GActionMuxer. */ void g_action_muxer_remove (GActionMuxer *muxer, const gchar *prefix) { GActionGroup *subgroup; g_return_if_fail (G_IS_ACTION_MUXER (muxer)); subgroup = prefix ? g_hash_table_lookup (muxer->groups, prefix) : muxer->global_actions; if (!subgroup) return; g_action_muxer_disconnect_group (muxer, subgroup); if (prefix) { g_hash_table_remove (muxer->groups, prefix); g_hash_table_remove (muxer->reverse, subgroup); } else g_clear_object (&muxer->global_actions); } GActionGroup * g_action_muxer_get_group (GActionMuxer *muxer, const gchar *prefix) { g_return_val_if_fail (G_IS_ACTION_MUXER (muxer), NULL); return prefix ? g_hash_table_lookup (muxer->groups, prefix) : muxer->global_actions; } ayatana-indicator-messages-24.5.1/src/gactionmuxer.h0000644000000000000000000000323414764273406017352 0ustar /* * Copyright 2012 Canonical Ltd. * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3, as published * by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranties of * MERCHANTABILITY, SATISFACTORY QUALITY, 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, see . * * Authors: * Lars Uebernickel * Ryan Lortie */ #ifndef __G_ACTION_MUXER_H__ #define __G_ACTION_MUXER_H__ #include #define G_TYPE_ACTION_MUXER (g_action_muxer_get_type ()) #define G_ACTION_MUXER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_ACTION_MUXER, GActionMuxer)) #define G_IS_ACTION_MUXER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_ACTION_MUXER)) typedef struct _GActionMuxer GActionMuxer; GType g_action_muxer_get_type (void) G_GNUC_CONST; GActionMuxer * g_action_muxer_new (void); void g_action_muxer_insert (GActionMuxer *muxer, const gchar *prefix, GActionGroup *group); void g_action_muxer_remove (GActionMuxer *muxer, const gchar *prefix); GActionGroup * g_action_muxer_get_group (GActionMuxer *muxer, const gchar *prefix); #endif ayatana-indicator-messages-24.5.1/src/gsettingsstrv.c0000644000000000000000000000547614764273406017600 0ustar /* * Copyright 2012 Canonical Ltd. * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3, as published * by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranties of * MERCHANTABILITY, SATISFACTORY QUALITY, 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, see . * * Authors: * Lars Uebernickel */ #include "gsettingsstrv.h" /** * g_settings_strv_append_unique: * @settings: a #GSettings object * @key: the key at which @settings contains a string array * @item: the string to append * * Appends @item to the string array at @key if that string array doesn't * contain @item yet. * * Returns: TRUE if @item was added to the list, FALSE if it already existed. */ gboolean g_settings_strv_append_unique (GSettings *settings, const gchar *key, const gchar *item) { gchar **strv; gchar **it; gboolean add = TRUE; g_return_val_if_fail (G_IS_SETTINGS (settings), FALSE); g_return_val_if_fail (key != NULL, FALSE); g_return_val_if_fail (item != NULL, FALSE); strv = g_settings_get_strv (settings, key); for (it = strv; *it; it++) { if (g_str_equal (*it, item)) { add = FALSE; break; } } if (add) { GVariantBuilder builder; g_variant_builder_init (&builder, G_VARIANT_TYPE ("as")); for (it = strv; *it; it++) g_variant_builder_add (&builder, "s", *it); g_variant_builder_add (&builder, "s", item); g_settings_set_value (settings, key, g_variant_builder_end (&builder)); } g_strfreev (strv); return add; } /** * g_settings_strv_remove: * @settings: a #GSettings object * @key: the key at which @settings contains a string array * @item: the string to remove * * Removes all occurences of @item in @key. */ void g_settings_strv_remove (GSettings *settings, const gchar *key, const gchar *item) { gchar **strv; gchar **it; GVariantBuilder builder; g_return_if_fail (G_IS_SETTINGS (settings)); g_return_if_fail (key != NULL); g_return_if_fail (item != NULL); strv = g_settings_get_strv (settings, key); g_variant_builder_init (&builder, (GVariantType *)"as"); for (it = strv; *it; it++) { if (!g_str_equal (*it, item)) g_variant_builder_add (&builder, "s", *it); } g_settings_set_value (settings, key, g_variant_builder_end (&builder)); g_strfreev (strv); } ayatana-indicator-messages-24.5.1/src/gsettingsstrv.h0000644000000000000000000000231714764273406017574 0ustar /* * Copyright 2012 Canonical Ltd. * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3, as published * by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranties of * MERCHANTABILITY, SATISFACTORY QUALITY, 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, see . * * Authors: * Lars Uebernickel */ #ifndef __G_SETTINGS_STRV_H__ #define __G_SETTINGS_STRV_H__ #include gboolean g_settings_strv_append_unique (GSettings *settings, const gchar *key, const gchar *item); void g_settings_strv_remove (GSettings *settings, const gchar *key, const gchar *item); #endif ayatana-indicator-messages-24.5.1/src/im-accounts-service.c0000644000000000000000000001726314764273406020527 0ustar /* * Copyright © 2014 Canonical Ltd. * Copyright © 2021 Robert Tari * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3, as published * by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranties of * MERCHANTABILITY, SATISFACTORY QUALITY, 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, see . * * Authors: * Ted Gould * Robert Tari */ #include #include "im-accounts-service.h" typedef struct { ActUserManager * user_manager; GDBusProxy * touch_settings; GCancellable * cancel; } ImAccountsServicePrivate; static void im_accounts_service_class_init (ImAccountsServiceClass *klass); static void im_accounts_service_init (ImAccountsService *self); static void im_accounts_service_dispose (GObject *object); static void im_accounts_service_finalize (GObject *object); static void user_changed (ActUserManager * manager, ActUser * user, gpointer user_data); static void on_user_manager_loaded (ActUserManager * manager, GParamSpec * pspect, gpointer user_data); static void security_privacy_ready (GObject * obj, GAsyncResult * res, gpointer user_data); G_DEFINE_TYPE_WITH_PRIVATE (ImAccountsService, im_accounts_service, G_TYPE_OBJECT); static void im_accounts_service_class_init (ImAccountsServiceClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->dispose = im_accounts_service_dispose; object_class->finalize = im_accounts_service_finalize; } static void im_accounts_service_init (ImAccountsService *self) { ImAccountsServicePrivate * priv = im_accounts_service_get_instance_private(self); priv->cancel = g_cancellable_new(); priv->user_manager = act_user_manager_get_default(); g_signal_connect(priv->user_manager, "user-added", G_CALLBACK(user_changed), self); g_signal_connect(priv->user_manager, "user-changed", G_CALLBACK(user_changed), self); g_signal_connect(priv->user_manager, "notify::is-loaded", G_CALLBACK(on_user_manager_loaded), self); gboolean isLoaded = FALSE; g_object_get(G_OBJECT(priv->user_manager), "is-loaded", &isLoaded, NULL); if (isLoaded) { on_user_manager_loaded(priv->user_manager, NULL, NULL); } } static void im_accounts_service_dispose (GObject *object) { ImAccountsService * self = IM_ACCOUNTS_SERVICE(object); ImAccountsServicePrivate * priv = im_accounts_service_get_instance_private(self); if (priv->cancel != NULL) { g_cancellable_cancel(priv->cancel); g_clear_object(&priv->cancel); } g_clear_object(&priv->user_manager); G_OBJECT_CLASS (im_accounts_service_parent_class)->dispose (object); } static void im_accounts_service_finalize (GObject *object) { G_OBJECT_CLASS (im_accounts_service_parent_class)->finalize (object); } /* Handles a User getting updated */ static void user_changed (ActUserManager * manager, ActUser * user, gpointer user_data) { if (g_strcmp0(act_user_get_user_name(user), g_get_user_name()) != 0) { return; } ImAccountsService * self = IM_ACCOUNTS_SERVICE(user_data); ImAccountsServicePrivate * priv = im_accounts_service_get_instance_private(self); g_debug("User Updated"); /* Clear old proxies */ g_clear_object(&priv->touch_settings); g_cancellable_cancel(priv->cancel); g_clear_object(&priv->cancel); priv->cancel = g_cancellable_new(); /* Start getting a new proxy */ g_dbus_proxy_new_for_bus(G_BUS_TYPE_SYSTEM, G_DBUS_PROXY_FLAGS_NONE, NULL, "org.freedesktop.Accounts", act_user_get_object_path(user), "com.lomiri.touch.AccountsService.SecurityPrivacy", priv->cancel, security_privacy_ready, user_data); } /* Respond to the async of setting up the proxy. Mostly we get it or we error. */ static void security_privacy_ready (GObject * obj, GAsyncResult * res, gpointer user_data) { GError * error = NULL; GDBusProxy * proxy = g_dbus_proxy_new_for_bus_finish(res, &error); if (error != NULL) { if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) { g_warning("Unable to get a proxy on accounts service for touch settings: %s", error->message); } g_error_free(error); return; } ImAccountsService * self = IM_ACCOUNTS_SERVICE(user_data); ImAccountsServicePrivate * priv = im_accounts_service_get_instance_private(self); /* Ensure we didn't get a proxy while we weren't looking */ g_clear_object(&priv->touch_settings); priv->touch_settings = proxy; } /* When the user manager is loaded see if we have a user already loaded along with. */ static void on_user_manager_loaded (ActUserManager * manager, GParamSpec * pspect, gpointer user_data) { ImAccountsService * self = IM_ACCOUNTS_SERVICE(user_data); ImAccountsServicePrivate * priv = im_accounts_service_get_instance_private(self); ActUser * user = NULL; g_debug("Accounts Manager Loaded"); user = act_user_manager_get_user(priv->user_manager, g_get_user_name()); if (user != NULL) { user_changed(priv->user_manager, user, user_data); } } /* Not the most testable way to do this but, it is a less invasive one, and we'll probably restructure this codebase soonish */ /* Gets an account service wrapper reference, so then it can be free'd */ ImAccountsService * im_accounts_service_ref_default (void) { static ImAccountsService * as = NULL; if (as == NULL) { as = IM_ACCOUNTS_SERVICE(g_object_new(IM_ACCOUNTS_SERVICE_TYPE, NULL)); g_object_add_weak_pointer(G_OBJECT(as), (gpointer *)&as); return as; } return g_object_ref(as); } /* The draws attention setting is very legacy right now, we've patched and not changed things much. We're gonna do better in the future, this function abstracts out the ugly */ void im_accounts_service_set_draws_attention (ImAccountsService * service, gboolean draws_attention) { g_return_if_fail(IM_IS_ACCOUNTS_SERVICE(service)); ImAccountsService * self = IM_ACCOUNTS_SERVICE(service); ImAccountsServicePrivate * priv = im_accounts_service_get_instance_private(self); if (priv->touch_settings == NULL) { return; } g_dbus_connection_call(g_dbus_proxy_get_connection(priv->touch_settings), g_dbus_proxy_get_name(priv->touch_settings), g_dbus_proxy_get_object_path(priv->touch_settings), "org.freedesktop.Accounts.User", "SetXHasMessages", g_variant_new("(b)", draws_attention), NULL, /* reply */ G_DBUS_CALL_FLAGS_NONE, -1, /* timeout */ priv->cancel, /* cancellable */ NULL, NULL); /* cb */ } /* Looks at the property that is set by settings. We default to off in any case that we can or we don't know what the state is. */ gboolean im_accounts_service_get_show_on_greeter (ImAccountsService * service) { g_return_val_if_fail(IM_IS_ACCOUNTS_SERVICE(service), FALSE); ImAccountsService * self = IM_ACCOUNTS_SERVICE(service); ImAccountsServicePrivate * priv = im_accounts_service_get_instance_private(self); if (priv->touch_settings == NULL) { return FALSE; } GVariant * val = g_dbus_proxy_get_cached_property(priv->touch_settings, "MessagesWelcomeScreen"); if (val == NULL) { return FALSE; } gboolean retval = g_variant_get_boolean(val); g_variant_unref(val); return retval; } ayatana-indicator-messages-24.5.1/src/im-accounts-service.h0000644000000000000000000000400614764273406020523 0ustar /* * Copyright © 2014 Canonical Ltd. * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3, as published * by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranties of * MERCHANTABILITY, SATISFACTORY QUALITY, 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, see . * * Authors: * Ted Gould */ #ifndef __IM_ACCOUNTS_SERVICE_H__ #define __IM_ACCOUNTS_SERVICE_H__ #include #include G_BEGIN_DECLS #define IM_ACCOUNTS_SERVICE_TYPE (im_accounts_service_get_type ()) #define IM_ACCOUNTS_SERVICE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), IM_ACCOUNTS_SERVICE_TYPE, ImAccountsService)) #define IM_ACCOUNTS_SERVICE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), IM_ACCOUNTS_SERVICE_TYPE, ImAccountsServiceClass)) #define IM_IS_ACCOUNTS_SERVICE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IM_ACCOUNTS_SERVICE_TYPE)) #define IM_IS_ACCOUNTS_SERVICE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), IM_ACCOUNTS_SERVICE_TYPE)) #define IM_ACCOUNTS_SERVICE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), IM_ACCOUNTS_SERVICE_TYPE, ImAccountsServiceClass)) typedef struct _ImAccountsService ImAccountsService; typedef struct _ImAccountsServiceClass ImAccountsServiceClass; struct _ImAccountsServiceClass { GObjectClass parent_class; }; struct _ImAccountsService { GObject parent; }; GType im_accounts_service_get_type (void); ImAccountsService * im_accounts_service_ref_default (void); void im_accounts_service_set_draws_attention (ImAccountsService * service, gboolean draws_attention); gboolean im_accounts_service_get_show_on_greeter (ImAccountsService * service); G_END_DECLS #endif ayatana-indicator-messages-24.5.1/src/im-application-list.c0000644000000000000000000013462714764273406020532 0ustar /* * Copyright 2012 Canonical Ltd. * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3, as published * by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranties of * MERCHANTABILITY, SATISFACTORY QUALITY, 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, see . * * Authors: * Lars Uebernickel */ #include "im-application-list.h" #include "indicator-messages-application.h" #include "gactionmuxer.h" #include "indicator-desktop-shortcuts.h" #include "im-accounts-service.h" #include #include #include "glib/gi18n.h" typedef GObjectClass ImApplicationListClass; struct _ImApplicationList { GObject parent; GHashTable *applications; GActionMuxer *muxer; GSimpleActionGroup * globalactions; GSimpleAction * statusaction; GHashTable *app_status; ImAccountsService * as; }; G_DEFINE_TYPE (ImApplicationList, im_application_list, G_TYPE_OBJECT); G_DEFINE_QUARK (draws_attention, message_action_draws_attention); enum { SOURCE_ADDED, SOURCE_CHANGED, SOURCE_REMOVED, MESSAGE_ADDED, MESSAGE_REMOVED, APP_ADDED, APP_STOPPED, REMOVE_ALL, STATUS_SET, N_SIGNALS }; static guint signals[N_SIGNALS]; typedef struct { ImApplicationList *list; GDesktopAppInfo *info; gchar *id; IndicatorMessagesApplication *proxy; GActionMuxer *muxer; GSimpleActionGroup *source_actions; GSimpleActionGroup *message_actions; GActionMuxer *message_sub_actions; GCancellable *cancellable; gboolean draws_attention; IndicatorDesktopShortcuts * shortcuts; } Application; /* Prototypes */ static void status_activated (GSimpleAction * action, GVariant * param, gpointer user_data); static void application_free (gpointer data) { Application *app = data; if (!app) return; g_object_unref (app->info); g_free (app->id); if (app->cancellable) { g_cancellable_cancel (app->cancellable); g_clear_object (&app->cancellable); } if (app->proxy) g_object_unref (app->proxy); if (app->muxer) { g_object_unref (app->muxer); g_object_unref (app->source_actions); g_object_unref (app->message_actions); g_object_unref (app->message_sub_actions); } g_clear_object (&app->shortcuts); g_slice_free (Application, app); } /* Check to see if we have actions by getting the full list of names and see if there is one. Not exactly efficient :-/ */ static gboolean _g_action_group_has_actions (GActionGroup * ag) { gchar ** list = NULL; gboolean retval = FALSE; list = g_action_group_list_actions(ag); retval = (list[0] != NULL); g_strfreev(list); return retval; } static gchar * escape_action_name (const gchar *name) { static const gchar *xdigits = "0123456789abcdef"; GString *escaped; gchar c; g_return_val_if_fail (name != NULL, NULL); escaped = g_string_new (NULL); while ((c = *name++)) { if (g_ascii_isalnum (c) || c == '.') { g_string_append_c (escaped, c); } else { g_string_append_c (escaped, '-'); g_string_append_c (escaped, xdigits[c >> 4]); g_string_append_c (escaped, xdigits[c & 0xf]); } } return g_string_free (escaped, FALSE); } static gchar * unescape_action_name (const gchar *name) { GString *unescaped; gint i; g_return_val_if_fail (name != NULL, NULL); unescaped = g_string_new (NULL); for (i = 0; name[i]; i++) { gint one, two; if (name[i] == '-' && (one = g_ascii_xdigit_value (name[i + 1])) >= 0 && (two = g_ascii_xdigit_value (name[i + 2])) >= 0) { g_string_append_c (unescaped, (one << 4) | two); i += 2; } else { g_string_append_c (unescaped, name[i]); } } return g_string_free (unescaped, FALSE); } /* Check to see if either of our action groups has any actions, if so return TRUE so we get chosen! */ static gboolean application_has_items (gpointer key, gpointer value, gpointer user_data) { Application *app = value; return _g_action_group_has_actions(G_ACTION_GROUP(app->source_actions)) || _g_action_group_has_actions(G_ACTION_GROUP(app->message_actions)); } static gboolean application_draws_attention (gpointer key, gpointer value, gpointer user_data) { Application *app = value; return app->draws_attention; } static void im_application_list_update_root_action (ImApplicationList *list) { const gchar *base_icon_name; const gchar *accessible_name; gchar *icon_name; GIcon * icon; GVariant *serialized_icon; GVariantBuilder builder; GVariant *state; guint n_applications; /* Figure out what type of icon we should be drawing */ if (g_hash_table_find (list->applications, application_draws_attention, NULL)) { base_icon_name = "indicator-messages-new-%s"; accessible_name = _("New Messages"); im_accounts_service_set_draws_attention(list->as, TRUE); } else { base_icon_name = "indicator-messages-%s"; accessible_name = _("Messages"); im_accounts_service_set_draws_attention(list->as, FALSE); } /* Include the IM state in the icon */ state = g_action_group_get_action_state(G_ACTION_GROUP(list->globalactions), "status"); icon_name = g_strdup_printf(base_icon_name, g_variant_get_string(state, NULL)); g_variant_unref(state); /* Build up the dictionary of values for the state */ g_variant_builder_init(&builder, G_VARIANT_TYPE_DICTIONARY); /* icon */ icon = g_themed_icon_new_with_default_fallbacks(icon_name); g_free(icon_name); if ((serialized_icon = g_icon_serialize(icon))) { g_variant_builder_add (&builder, "{sv}", "icon", serialized_icon); g_variant_unref (serialized_icon); } g_object_unref(icon); /* title */ g_variant_builder_add (&builder, "{sv}", "title", g_variant_new_string (_("Notifications"))); g_variant_builder_add (&builder, "{sv}", "tooltip", g_variant_new_string (_("Quick access to newly received messages"))); /* accessible description */ g_variant_builder_open(&builder, G_VARIANT_TYPE_DICT_ENTRY); g_variant_builder_add_value(&builder, g_variant_new_string("accessible-desc")); g_variant_builder_add_value(&builder, g_variant_new_variant(g_variant_new_string(accessible_name))); g_variant_builder_close(&builder); /* visibility */ n_applications = g_hash_table_size (list->applications); g_variant_builder_add (&builder, "{sv}", "visible", g_variant_new_boolean (n_applications > 0)); /* Set the state */ g_action_group_change_action_state (G_ACTION_GROUP(list->globalactions), "messages", g_variant_builder_end(&builder)); GAction * remove_action = g_action_map_lookup_action (G_ACTION_MAP (list->globalactions), "remove-all"); if (g_hash_table_find (list->applications, application_has_items, NULL)) { g_debug("Enabling remove-all"); g_simple_action_set_enabled(G_SIMPLE_ACTION(remove_action), TRUE); } else { g_debug("Disabling remove-all"); g_simple_action_set_enabled(G_SIMPLE_ACTION(remove_action), FALSE); } } /* Check a source action to see if it draws */ static gboolean app_source_action_check_draw (Application * app, const gchar * action_name) { GVariant *state; guint32 count; gint64 time; const gchar *string; gboolean draws_attention; state = g_action_group_get_action_state (G_ACTION_GROUP(app->source_actions), action_name); if (state == NULL) return FALSE; if (!g_variant_is_of_type(state, G_VARIANT_TYPE("(uxsb)"))) return FALSE; g_variant_get (state, "(ux&sb)", &count, &time, &string, &draws_attention); /* invisible sources do not draw attention */ if (count == 0 && time == 0 && (string == NULL || string[0] == '\0')) draws_attention = FALSE; g_variant_unref(state); return draws_attention; } /* Check a message action to see if it draws */ static gboolean app_message_action_check_draw (Application * app, const gchar * action_name) { GAction * action = NULL; action = g_action_map_lookup_action (G_ACTION_MAP (app->message_actions), action_name); return GPOINTER_TO_INT(g_object_get_qdata(G_OBJECT(action), message_action_draws_attention_quark())); } /* Regenerate the draw attention flag based on the sources and messages * that we have in the action groups. * * Returns TRUE if app->draws_attention has changed */ static gboolean application_update_draws_attention (Application * app) { gchar **source_actions = NULL; gchar **message_actions = NULL; gchar **it; gboolean was_drawing_attention = app->draws_attention; app->draws_attention = FALSE; source_actions = g_action_group_list_actions (G_ACTION_GROUP (app->source_actions)); for (it = source_actions; *it && !app->draws_attention; it++) app->draws_attention = app_source_action_check_draw (app, *it); message_actions = g_action_group_list_actions (G_ACTION_GROUP (app->message_actions)); for (it = message_actions; *it && !app->draws_attention; it++) app->draws_attention = app_message_action_check_draw (app, *it); g_strfreev (source_actions); g_strfreev (message_actions); return was_drawing_attention != app->draws_attention; } static void im_application_list_source_removed_action (Application *app, const gchar *action_name) { g_action_map_remove_action (G_ACTION_MAP(app->source_actions), action_name); g_signal_emit (app->list, signals[SOURCE_REMOVED], 0, app->id, action_name); application_update_draws_attention (app); im_application_list_update_root_action (app->list); } /* Remove a source from an application, signal up and update the status of the draws attention flag. */ static void im_application_list_source_removed (Application *app, const gchar *id) { gchar *action_name; action_name = escape_action_name (id); im_application_list_source_removed_action (app, action_name); g_free (action_name); } static void im_application_list_source_activated (GSimpleAction *action, GVariant *parameter, gpointer user_data) { Application *app = user_data; const gchar *action_name; gchar *source_id; action_name = g_action_get_name (G_ACTION (action)); source_id = unescape_action_name (action_name); if (g_variant_get_boolean (parameter)) { indicator_messages_application_call_activate_source (app->proxy, source_id, app->cancellable, NULL, NULL); } else { const gchar *sources[] = { source_id, NULL }; const gchar *messages[] = { NULL }; indicator_messages_application_call_dismiss (app->proxy, sources, messages, app->cancellable, NULL, NULL); } im_application_list_source_removed_action (app, action_name); g_free (source_id); } static void im_application_list_message_removed_action (Application *app, const gchar *action_name) { g_action_map_remove_action (G_ACTION_MAP(app->message_actions), action_name); g_action_muxer_remove (app->message_sub_actions, action_name); application_update_draws_attention (app); im_application_list_update_root_action (app->list); g_signal_emit (app->list, signals[MESSAGE_REMOVED], 0, app->id, action_name); } static void im_application_list_message_removed (Application *app, const gchar *id) { gchar *action_name; action_name = escape_action_name (id); im_application_list_message_removed_action(app, action_name); g_free (action_name); } static void im_application_list_message_activated (GSimpleAction *action, GVariant *parameter, gpointer user_data) { Application *app = user_data; const gchar *action_name; gchar *message_id; action_name = g_action_get_name (G_ACTION (action)); message_id = unescape_action_name (action_name); if (g_variant_get_boolean (parameter)) { indicator_messages_application_call_activate_message (app->proxy, message_id, "", g_variant_new_array (G_VARIANT_TYPE_VARIANT, NULL, 0), app->cancellable, NULL, NULL); } else { const gchar *sources[] = { NULL }; const gchar *messages[] = { message_id, NULL }; indicator_messages_application_call_dismiss (app->proxy, sources, messages, app->cancellable, NULL, NULL); } im_application_list_message_removed_action (app, action_name); g_free (message_id); } static void im_application_list_sub_message_activated (GSimpleAction *action, GVariant *parameter, gpointer user_data) { Application *app = user_data; const gchar *message_id; gchar *action_id; GVariantBuilder builder; message_id = g_object_get_data (G_OBJECT (action), "message"); action_id = unescape_action_name (g_action_get_name (G_ACTION (action))); g_variant_builder_init (&builder, G_VARIANT_TYPE ("av")); if (parameter) g_variant_builder_add (&builder, "v", parameter); indicator_messages_application_call_activate_message (app->proxy, message_id, action_id, g_variant_builder_end (&builder), app->cancellable, NULL, NULL); im_application_list_message_removed (app, message_id); g_free (action_id); } static void im_application_list_remove_all (GSimpleAction *action, GVariant *parameter, gpointer user_data) { ImApplicationList *list = user_data; GHashTableIter iter; Application *app; g_signal_emit (list, signals[REMOVE_ALL], 0); g_hash_table_iter_init (&iter, list->applications); while (g_hash_table_iter_next (&iter, NULL, (gpointer *) &app)) { gchar **source_actions; gchar **message_actions; gchar **it; app->draws_attention = FALSE; source_actions = g_action_group_list_actions (G_ACTION_GROUP (app->source_actions)); for (it = source_actions; *it; it++) im_application_list_source_removed_action (app, *it); message_actions = g_action_group_list_actions (G_ACTION_GROUP (app->message_actions)); for (it = message_actions; *it; it++) im_application_list_message_removed_action (app, *it); if (app->proxy != NULL) /* If it is remote, we tell the app we've cleared */ { guint i; gchar **unescaped_source_actions; gchar **unescaped_message_actions; /* Unescape action names */ unescaped_source_actions = g_new0 (gchar *, g_strv_length (source_actions) + 1); for (i = 0; source_actions[i]; i++) unescaped_source_actions[i] = unescape_action_name (source_actions[i]); unescaped_message_actions = g_new0 (gchar *, g_strv_length (message_actions) + 1); for (i = 0; message_actions[i]; i++) unescaped_message_actions[i] = unescape_action_name (message_actions[i]); indicator_messages_application_call_dismiss (app->proxy, (const gchar * const *) unescaped_source_actions, (const gchar * const *) unescaped_message_actions, app->cancellable, NULL, NULL); g_strfreev (unescaped_source_actions); g_strfreev (unescaped_message_actions); } g_strfreev (source_actions); g_strfreev (message_actions); } im_application_list_update_root_action (list); } static void im_application_list_dispose (GObject *object) { ImApplicationList *list = IM_APPLICATION_LIST (object); g_clear_object (&list->statusaction); g_clear_object (&list->globalactions); g_clear_pointer (&list->app_status, g_hash_table_unref); g_clear_pointer (&list->applications, g_hash_table_unref); g_clear_object (&list->muxer); g_clear_object (&list->as); G_OBJECT_CLASS (im_application_list_parent_class)->dispose (object); } static void im_application_list_finalize (GObject *object) { G_OBJECT_CLASS (im_application_list_parent_class)->finalize (object); } static void im_application_list_class_init (ImApplicationListClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->dispose = im_application_list_dispose; object_class->finalize = im_application_list_finalize; signals[SOURCE_ADDED] = g_signal_new ("source-added", IM_TYPE_APPLICATION_LIST, G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 5, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_VARIANT, G_TYPE_BOOLEAN); signals[SOURCE_CHANGED] = g_signal_new ("source-changed", IM_TYPE_APPLICATION_LIST, G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 5, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_VARIANT, G_TYPE_BOOLEAN); signals[SOURCE_REMOVED] = g_signal_new ("source-removed", IM_TYPE_APPLICATION_LIST, G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 2, G_TYPE_STRING, G_TYPE_STRING); signals[MESSAGE_ADDED] = g_signal_new ("message-added", IM_TYPE_APPLICATION_LIST, G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 10, G_TYPE_STRING, G_TYPE_ICON, G_TYPE_STRING, G_TYPE_VARIANT, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_VARIANT, G_TYPE_INT64, G_TYPE_BOOLEAN); signals[MESSAGE_REMOVED] = g_signal_new ("message-removed", IM_TYPE_APPLICATION_LIST, G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 2, G_TYPE_STRING, G_TYPE_STRING); signals[APP_ADDED] = g_signal_new ("app-added", IM_TYPE_APPLICATION_LIST, G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 2, G_TYPE_STRING, G_TYPE_DESKTOP_APP_INFO); signals[APP_STOPPED] = g_signal_new ("app-stopped", IM_TYPE_APPLICATION_LIST, G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING); signals[REMOVE_ALL] = g_signal_new ("remove-all", IM_TYPE_APPLICATION_LIST, G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); signals[STATUS_SET] = g_signal_new ("status-set", IM_TYPE_APPLICATION_LIST, G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 1, G_TYPE_STRING); } static void im_application_list_init (ImApplicationList *list) { const GActionEntry action_entries[] = { { "remove-all", im_application_list_remove_all } }; list->applications = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, application_free); list->app_status = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free); list->globalactions = g_simple_action_group_new (); { GSimpleAction * messages = g_simple_action_new_stateful("messages", NULL, g_variant_new_array(G_VARIANT_TYPE("{sv}"), NULL, 0)); g_action_map_add_action(G_ACTION_MAP(list->globalactions), G_ACTION(messages)); } g_action_map_add_action_entries (G_ACTION_MAP (list->globalactions), action_entries, G_N_ELEMENTS (action_entries), list); list->statusaction = g_simple_action_new_stateful("status", G_VARIANT_TYPE_STRING, g_variant_new_string("offline")); g_signal_connect(list->statusaction, "activate", G_CALLBACK(status_activated), list); g_action_map_add_action(G_ACTION_MAP(list->globalactions), G_ACTION(list->statusaction)); list->muxer = g_action_muxer_new (); g_action_muxer_insert (list->muxer, NULL, G_ACTION_GROUP (list->globalactions)); list->as = im_accounts_service_ref_default(); im_application_list_update_root_action (list); } ImApplicationList * im_application_list_new (void) { return g_object_new (IM_TYPE_APPLICATION_LIST, NULL); } static gchar * im_application_list_canonical_id (const gchar *id) { gchar *str; gchar *p; int len; len = strlen (id); if (g_str_has_suffix (id, ".desktop")) len -= 8; str = g_strndup (id, len); for (p = str; *p; p++) { if (*p == '.') *p = '_'; } return str; } static Application * im_application_list_lookup (ImApplicationList *list, const gchar *desktop_id) { gchar *id; Application *app; id = im_application_list_canonical_id (desktop_id); app = g_hash_table_lookup (list->applications, id); g_free (id); return app; } void im_application_list_activate_launch (GSimpleAction *action, GVariant *parameter, gpointer user_data) { Application *app = user_data; GError *error = NULL; if (!g_app_info_launch (G_APP_INFO (app->info), NULL, NULL, &error)) { g_warning ("unable to launch application: %s", error->message); g_error_free (error); } } void im_application_list_activate_app_action (GSimpleAction *action, GVariant *parameter, gpointer user_data) { Application *app = user_data; indicator_desktop_shortcuts_nick_exec_with_context (app->shortcuts, g_action_get_name (G_ACTION (action)), NULL); } gboolean im_application_list_add (ImApplicationList *list, const gchar *desktop_id) { GDesktopAppInfo *info; Application *app; const gchar *id; GSimpleActionGroup *actions; GSimpleAction *launch_action; IndicatorDesktopShortcuts * shortcuts = NULL; g_return_val_if_fail (IM_IS_APPLICATION_LIST (list), FALSE); g_return_val_if_fail (desktop_id != NULL, FALSE); if (im_application_list_lookup (list, desktop_id)) return TRUE; info = g_desktop_app_info_new (desktop_id); if (!info) { g_warning ("an application with id '%s' is not installed", desktop_id); return FALSE; } id = g_app_info_get_id (G_APP_INFO (info)); g_return_val_if_fail (id != NULL, FALSE); { const char * filename = g_desktop_app_info_get_filename(info); if (filename != NULL) shortcuts = indicator_desktop_shortcuts_new(filename, "Messaging Menu"); } app = g_slice_new0 (Application); app->info = info; app->id = im_application_list_canonical_id (id); app->list = list; app->muxer = g_action_muxer_new (); app->source_actions = g_simple_action_group_new (); app->message_actions = g_simple_action_group_new (); app->message_sub_actions = g_action_muxer_new (); app->draws_attention = FALSE; app->shortcuts = shortcuts; actions = g_simple_action_group_new (); launch_action = g_simple_action_new_stateful ("launch", NULL, g_variant_new_boolean (FALSE)); g_signal_connect (launch_action, "activate", G_CALLBACK (im_application_list_activate_launch), app); g_action_map_add_action (G_ACTION_MAP (actions), G_ACTION (launch_action)); if (app->shortcuts != NULL) { const gchar ** nicks; for (nicks = indicator_desktop_shortcuts_get_nicks (app->shortcuts); *nicks; nicks++) { GSimpleAction *action; action = g_simple_action_new (*nicks, NULL); g_signal_connect (action, "activate", G_CALLBACK (im_application_list_activate_app_action), app); g_action_map_add_action (G_ACTION_MAP (actions), G_ACTION (action)); g_object_unref (action); } } g_action_muxer_insert (app->muxer, NULL, G_ACTION_GROUP (actions)); g_action_muxer_insert (app->muxer, "src", G_ACTION_GROUP (app->source_actions)); g_action_muxer_insert (app->muxer, "msg", G_ACTION_GROUP (app->message_actions)); g_action_muxer_insert (app->muxer, "msg-actions", G_ACTION_GROUP (app->message_sub_actions)); g_hash_table_insert (list->applications, (gpointer) app->id, app); g_action_muxer_insert (list->muxer, app->id, G_ACTION_GROUP (app->muxer)); im_application_list_update_root_action (list); g_signal_emit (app->list, signals[APP_ADDED], 0, app->id, app->info); g_object_unref (launch_action); g_object_unref (actions); return TRUE; } void im_application_list_remove (ImApplicationList *list, const gchar *id) { Application *app; g_return_if_fail (IM_IS_APPLICATION_LIST (list)); app = im_application_list_lookup (list, id); if (app) { if (app->proxy || app->cancellable) g_signal_emit (app->list, signals[APP_STOPPED], 0, app->id); g_hash_table_remove (list->applications, id); g_action_muxer_remove (list->muxer, id); im_application_list_update_root_action (list); } } static void im_application_list_source_added (Application *app, guint position, GVariant *source) { const gchar *id; const gchar *label; GVariant *maybe_serialized_icon; guint32 count; gint64 time; const gchar *string; gboolean draws_attention; gboolean visible; GVariant *serialized_icon = NULL; GVariant *state; GSimpleAction *action; gchar *action_name; g_variant_get (source, "(&s&s@avux&sb)", &id, &label, &maybe_serialized_icon, &count, &time, &string, &draws_attention); if (g_variant_n_children (maybe_serialized_icon) == 1) g_variant_get_child (maybe_serialized_icon, 0, "v", &serialized_icon); visible = count > 0 || time != 0 || (string != NULL && string[0] != '\0'); state = g_variant_new ("(uxsb)", count, time, string, draws_attention); action_name = escape_action_name (id); action = g_simple_action_new_stateful (action_name, G_VARIANT_TYPE_BOOLEAN, state); g_signal_connect (action, "activate", G_CALLBACK (im_application_list_source_activated), app); g_action_map_add_action (G_ACTION_MAP(app->source_actions), G_ACTION (action)); g_signal_emit (app->list, signals[SOURCE_ADDED], 0, app->id, action_name, label, serialized_icon, visible); if (visible && draws_attention && app->draws_attention == FALSE) app->draws_attention = TRUE; im_application_list_update_root_action (app->list); g_free (action_name); g_object_unref (action); if (serialized_icon) g_variant_unref (serialized_icon); g_variant_unref (maybe_serialized_icon); } static void im_application_list_source_changed (Application *app, GVariant *source) { const gchar *id; const gchar *label; GVariant *maybe_serialized_icon; guint32 count; gint64 time; const gchar *string; gboolean draws_attention; GVariant *serialized_icon = NULL; gboolean visible; gchar *action_name; g_variant_get (source, "(&s&s@avux&sb)", &id, &label, &maybe_serialized_icon, &count, &time, &string, &draws_attention); if (g_variant_n_children (maybe_serialized_icon) == 1) g_variant_get_child (maybe_serialized_icon, 0, "v", &serialized_icon); action_name = escape_action_name (id); g_action_group_change_action_state (G_ACTION_GROUP (app->source_actions), action_name, g_variant_new ("(uxsb)", count, time, string, draws_attention)); visible = count > 0 || time != 0 || (string != NULL && string[0] != '\0'); g_signal_emit (app->list, signals[SOURCE_CHANGED], 0, app->id, action_name, label, serialized_icon, visible); application_update_draws_attention (app); im_application_list_update_root_action (app->list); if (serialized_icon) g_variant_unref (serialized_icon); g_variant_unref (maybe_serialized_icon); g_free (action_name); } static void im_application_list_sources_listed (GObject *source_object, GAsyncResult *result, gpointer user_data) { Application *app = user_data; GVariant *sources; GError *error = NULL; if (indicator_messages_application_call_list_sources_finish (app->proxy, &sources, result, &error)) { GVariantIter iter; GVariant *source; guint i = 0; g_variant_iter_init (&iter, sources); while ((source = g_variant_iter_next_value (&iter))) { im_application_list_source_added (app, i++, source); g_variant_unref (source); } g_variant_unref (sources); } else { g_warning ("could not fetch the list of sources: %s", error->message); g_error_free (error); } } static GIcon * get_symbolic_app_icon (GDesktopAppInfo *info) { gchar *x_symbolic_icon; GIcon *icon; const gchar * const *names; gchar *symbolic_name; GIcon *symbolic_icon; /* If X-Ubuntu-SymbolicIcon exists, use that. It is always interpreted * as a filename. * * Simply appending -symbolic to the normal icon doesn't work for * icons specified by file name, because the symbolic icon might be in * a different format (symbolic icons tend to be svg and normal icons * png). Also, icons specified by file names don't allow for fallbacks * (without stating the file from this process), and we'd want to fall * back to the normal app icon. * * See lp: #1365408 */ if ((x_symbolic_icon = g_desktop_app_info_get_string (info, "X-Ubuntu-SymbolicIcon"))) { GFile *file; file = g_file_new_for_path (x_symbolic_icon); symbolic_icon = g_file_icon_new (file); g_object_unref (file); g_free (x_symbolic_icon); return symbolic_icon; } icon = g_app_info_get_icon (G_APP_INFO (info)); if (icon == NULL) return NULL; if (!G_IS_THEMED_ICON (icon)) return g_object_ref (icon); names = g_themed_icon_get_names (G_THEMED_ICON (icon)); if (!names || !names[0]) return g_object_ref (icon); symbolic_name = g_strconcat (names[0], "-symbolic", NULL); symbolic_icon = g_themed_icon_new_from_names ((gchar **) names, -1); g_themed_icon_prepend_name (G_THEMED_ICON (symbolic_icon), symbolic_name); g_free (symbolic_name); return symbolic_icon; } static void im_application_list_message_added (Application *app, GVariant *message) { const gchar *id; GVariant *maybe_serialized_icon; const gchar *title; const gchar *subtitle; const gchar *body; gint64 time; GVariantIter *action_iter; gboolean draws_attention; GVariant *serialized_icon = NULL; GSimpleAction *action; GIcon *app_icon; GVariant *actions = NULL; gchar *action_name; g_variant_get (message, "(&s@av&s&s&sxaa{sv}b)", &id, &maybe_serialized_icon, &title, &subtitle, &body, &time, &action_iter, &draws_attention); if (g_variant_n_children (maybe_serialized_icon) == 1) g_variant_get_child (maybe_serialized_icon, 0, "v", &serialized_icon); action_name = escape_action_name (id); action = g_simple_action_new (action_name, G_VARIANT_TYPE_BOOLEAN); g_object_set_qdata(G_OBJECT(action), message_action_draws_attention_quark(), GINT_TO_POINTER(draws_attention)); g_signal_connect (action, "activate", G_CALLBACK (im_application_list_message_activated), app); g_action_map_add_action (G_ACTION_MAP(app->message_actions), G_ACTION (action)); { GVariant *entry; GSimpleActionGroup *action_group; GVariantBuilder actions_builder; g_variant_builder_init (&actions_builder, G_VARIANT_TYPE ("aa{sv}")); action_group = g_simple_action_group_new (); while ((entry = g_variant_iter_next_value (action_iter))) { const gchar *name; GSimpleAction *action; GVariant *label; const gchar *type = NULL; GVariant *hint; GVariantBuilder dict_builder; gchar *prefixed_name; gchar *escaped_name; if (!g_variant_lookup (entry, "name", "&s", &name)) { g_warning ("action dictionary for message '%s' is missing 'name' key", id); continue; } label = g_variant_lookup_value (entry, "label", G_VARIANT_TYPE_STRING); g_variant_lookup (entry, "parameter-type", "&g", &type); hint = g_variant_lookup_value (entry, "parameter-hint", NULL); escaped_name = escape_action_name (name); action = g_simple_action_new (escaped_name, type ? G_VARIANT_TYPE (type) : NULL); g_object_set_data_full (G_OBJECT (action), "message", g_strdup (id), g_free); g_signal_connect (action, "activate", G_CALLBACK (im_application_list_sub_message_activated), app); g_action_map_add_action (G_ACTION_MAP(action_group), G_ACTION (action)); g_variant_builder_init (&dict_builder, G_VARIANT_TYPE ("a{sv}")); prefixed_name = g_strjoin (".", app->id, "msg-actions", action_name, escaped_name, NULL); g_variant_builder_add (&dict_builder, "{sv}", "name", g_variant_new_string (prefixed_name)); if (label) { g_variant_builder_add (&dict_builder, "{sv}", "label", label); g_variant_unref (label); } if (type) g_variant_builder_add (&dict_builder, "{sv}", "parameter-type", g_variant_new_string (type)); if (hint) { g_variant_builder_add (&dict_builder, "{sv}", "parameter-hint", hint); g_variant_unref (hint); } g_variant_builder_add (&actions_builder, "a{sv}", &dict_builder); g_object_unref (action); g_variant_unref (entry); g_free (prefixed_name); g_free (escaped_name); } g_action_muxer_insert (app->message_sub_actions, action_name, G_ACTION_GROUP (action_group)); actions = g_variant_builder_end (&actions_builder); g_object_unref (action_group); } if (draws_attention && !app->draws_attention) { app->draws_attention = TRUE; im_application_list_update_root_action (app->list); } app_icon = get_symbolic_app_icon (app->info); g_signal_emit (app->list, signals[MESSAGE_ADDED], 0, app->id, app_icon, action_name, serialized_icon, title, subtitle, body, actions, time, draws_attention); g_free (action_name); g_variant_iter_free (action_iter); g_object_unref (action); if (serialized_icon) g_variant_unref (serialized_icon); g_variant_unref (maybe_serialized_icon); g_object_unref (app_icon); } static void im_application_list_messages_listed (GObject *source_object, GAsyncResult *result, gpointer user_data) { Application *app = user_data; GVariant *messages; GError *error = NULL; if (indicator_messages_application_call_list_messages_finish (app->proxy, &messages, result, &error)) { GVariantIter iter; GVariant *message; g_variant_iter_init (&iter, messages); while ((message = g_variant_iter_next_value (&iter))) { im_application_list_message_added (app, message); g_variant_unref (message); } g_variant_unref (messages); } else { g_warning ("could not fetch the list of messages: %s", error->message); g_error_free (error); } } static void im_application_list_unset_remote (Application *app) { gboolean was_running; was_running = app->proxy || app->cancellable; if (app->cancellable) { g_cancellable_cancel (app->cancellable); g_clear_object (&app->cancellable); } g_clear_object (&app->proxy); /* clear actions by creating a new action group and overriding it in * the muxer */ g_object_unref (app->source_actions); g_object_unref (app->message_actions); g_object_unref (app->message_sub_actions); app->source_actions = g_simple_action_group_new (); app->message_actions = g_simple_action_group_new (); app->message_sub_actions = g_action_muxer_new (); g_action_muxer_insert (app->muxer, "src", G_ACTION_GROUP (app->source_actions)); g_action_muxer_insert (app->muxer, "msg", G_ACTION_GROUP (app->message_actions)); g_action_muxer_insert (app->muxer, "msg-actions", G_ACTION_GROUP (app->message_sub_actions)); app->draws_attention = FALSE; im_application_list_update_root_action (app->list); g_action_group_change_action_state (G_ACTION_GROUP (app->muxer), "launch", g_variant_new_boolean (FALSE)); if (was_running) g_signal_emit (app->list, signals[APP_STOPPED], 0, app->id); } static void im_application_list_app_vanished (GDBusConnection *connection, const gchar *name, gpointer user_data) { Application *app = user_data; im_application_list_unset_remote (app); } static void im_application_list_proxy_created (GObject *source_object, GAsyncResult *result, gpointer user_data) { Application *app = user_data; GError *error = NULL; app->proxy = indicator_messages_application_proxy_new_finish (result, &error); if (!app->proxy) { if (error->code != G_IO_ERROR_CANCELLED) g_warning ("could not create application proxy: %s", error->message); g_error_free (error); return; } indicator_messages_application_call_list_sources (app->proxy, app->cancellable, im_application_list_sources_listed, app); indicator_messages_application_call_list_messages (app->proxy, app->cancellable, im_application_list_messages_listed, app); g_signal_connect_swapped (app->proxy, "source-added", G_CALLBACK (im_application_list_source_added), app); g_signal_connect_swapped (app->proxy, "source-changed", G_CALLBACK (im_application_list_source_changed), app); g_signal_connect_swapped (app->proxy, "source-removed", G_CALLBACK (im_application_list_source_removed), app); g_signal_connect_swapped (app->proxy, "message-added", G_CALLBACK (im_application_list_message_added), app); g_signal_connect_swapped (app->proxy, "message-removed", G_CALLBACK (im_application_list_message_removed), app); g_action_group_change_action_state (G_ACTION_GROUP (app->muxer), "launch", g_variant_new_boolean (TRUE)); g_bus_watch_name_on_connection (g_dbus_proxy_get_connection (G_DBUS_PROXY (app->proxy)), g_dbus_proxy_get_name (G_DBUS_PROXY (app->proxy)), G_BUS_NAME_WATCHER_FLAGS_NONE, NULL, im_application_list_app_vanished, app, NULL); } void im_application_list_set_remote (ImApplicationList *list, const gchar *id, GDBusConnection *connection, const gchar *unique_bus_name, const gchar *object_path) { Application *app; g_return_if_fail (IM_IS_APPLICATION_LIST (list)); app = im_application_list_lookup (list, id); if (!app) { g_warning ("'%s' is not a registered application", id); return; } if (!connection && !unique_bus_name && !object_path) { im_application_list_unset_remote (app); return; } if (app->cancellable) { gchar *name_owner = NULL; if (app->proxy) name_owner = g_dbus_proxy_get_name_owner (G_DBUS_PROXY (app->proxy)); if (g_strcmp0 (name_owner, unique_bus_name) != 0) { g_warning ("replacing '%s' at %s with %s", id, name_owner, unique_bus_name); im_application_list_unset_remote (app); } g_free (name_owner); } app->cancellable = g_cancellable_new (); indicator_messages_application_proxy_new (connection, G_DBUS_PROXY_FLAGS_NONE, unique_bus_name, object_path, app->cancellable, im_application_list_proxy_created, app); } GActionGroup * im_application_list_get_action_group (ImApplicationList *list) { g_return_val_if_fail (IM_IS_APPLICATION_LIST (list), NULL); return G_ACTION_GROUP (list->muxer); } GList * im_application_list_get_applications (ImApplicationList *list) { g_return_val_if_fail (IM_IS_APPLICATION_LIST (list), NULL); return g_hash_table_get_keys (list->applications); } GDesktopAppInfo * im_application_list_get_application (ImApplicationList *list, const gchar *id) { Application *app; g_return_val_if_fail (IM_IS_APPLICATION_LIST (list), NULL); app = g_hash_table_lookup (list->applications, id); return app ? app->info : NULL; } static void status_activated (GSimpleAction * action, GVariant * param, gpointer user_data) { g_return_if_fail (IM_IS_APPLICATION_LIST(user_data)); ImApplicationList * list = IM_APPLICATION_LIST(user_data); const gchar * status = g_variant_get_string(param, NULL); g_simple_action_set_state(action, param); GList * appshash = g_hash_table_get_keys(list->app_status); GList * appsfree = g_list_copy_deep(appshash, (GCopyFunc)g_strdup, NULL); GList * app; for (app = appsfree; app != NULL; app = g_list_next(app)) { g_hash_table_insert(list->app_status, app->data, g_strdup(status)); } g_list_free(appshash); g_list_free(appsfree); g_signal_emit (list, signals[STATUS_SET], 0, status); im_application_list_update_root_action(list); return; } #define STATUS_ID_OFFLINE (G_N_ELEMENTS(status_ids) - 1) static const gchar *status_ids[] = { "available", "away", "busy", "invisible", "offline" }; static guint status2val (const gchar * string) { if (string == NULL) return STATUS_ID_OFFLINE; guint i; for (i = 0; i < G_N_ELEMENTS(status_ids); i++) { if (g_strcmp0(status_ids[i], string) == 0) { break; } } if (i > STATUS_ID_OFFLINE) i = STATUS_ID_OFFLINE; return i; } void im_application_list_set_status (ImApplicationList * list, const gchar * id, const gchar *status) { g_return_if_fail (IM_IS_APPLICATION_LIST (list)); g_hash_table_insert(list->app_status, im_application_list_canonical_id(id), g_strdup(status)); guint final_status = STATUS_ID_OFFLINE; GList * statuses = g_hash_table_get_values(list->app_status); GList * statusentry; for (statusentry = statuses; statusentry != NULL; statusentry = g_list_next(statusentry)) { guint statusval = status2val((gchar *)statusentry->data); final_status = MIN(final_status, statusval); } g_list_free(statuses); g_simple_action_set_state(list->statusaction, g_variant_new_string(status_ids[final_status])); im_application_list_update_root_action(list); return; } ayatana-indicator-messages-24.5.1/src/im-application-list.h0000644000000000000000000000622114764273406020523 0ustar /* * Copyright 2012 Canonical Ltd. * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3, as published * by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranties of * MERCHANTABILITY, SATISFACTORY QUALITY, 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, see . * * Authors: * Lars Uebernickel */ #ifndef __IM_APPLICATION_LIST_H__ #define __IM_APPLICATION_LIST_H__ #include #include #define IM_TYPE_APPLICATION_LIST (im_application_list_get_type ()) #define IM_APPLICATION_LIST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), IM_TYPE_APPLICATION_LIST, ImApplicationList)) #define IM_APPLICATION_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), IM_TYPE_APPLICATION_LIST, ImApplicationListClass)) #define IM_IS_APPLICATION_LIST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IM_TYPE_APPLICATION_LIST)) #define IM_IS_APPLICATION_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), IM_TYPE_APPLICATION_LIST)) #define IM_APPLICATION_LIST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), IM_TYPE_APPLICATION_LIST, ImApplicationListClass)) typedef struct _ImApplicationList ImApplicationList; GType im_application_list_get_type (void); ImApplicationList * im_application_list_new (void); gboolean im_application_list_add (ImApplicationList *list, const gchar *desktop_id); void im_application_list_remove (ImApplicationList *list, const gchar *id); void im_application_list_set_remote (ImApplicationList *list, const gchar *id, GDBusConnection *connection, const gchar *unique_bus_name, const gchar *object_path); GActionGroup * im_application_list_get_action_group (ImApplicationList *list); GList * im_application_list_get_applications (ImApplicationList *list); GDesktopAppInfo * im_application_list_get_application (ImApplicationList *list, const gchar *id); void im_application_list_set_status (ImApplicationList *list, const gchar *id, const gchar *status); #endif ayatana-indicator-messages-24.5.1/src/im-desktop-menu.c0000644000000000000000000003217714764273406017666 0ustar /* * Copyright 2012 Canonical Ltd. * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3, as published * by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranties of * MERCHANTABILITY, SATISFACTORY QUALITY, 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, see . * * Authors: * Lars Uebernickel */ #include "im-desktop-menu.h" #include "indicator-desktop-shortcuts.h" #include typedef ImMenuClass ImDesktopMenuClass; struct _ImDesktopMenu { ImMenu parent; gboolean status_section_visible; GMenu *default_chat_client_section; GMenu *default_mail_client_section; GHashTable *source_sections; }; G_DEFINE_TYPE (ImDesktopMenu, im_desktop_menu, IM_TYPE_MENU); static void menu_append_status (GMenu *menu, const gchar *label, const gchar *detailed_action, const gchar *icon_name) { GMenuItem *item; GIcon *icon; icon = g_themed_icon_new (icon_name); item = g_menu_item_new (label, detailed_action); g_menu_item_set_icon (item, icon); g_menu_append_item (menu, item); g_object_unref (icon); g_object_unref (item); } static void im_desktop_menu_show_chat_section (ImDesktopMenu *menu) { GMenu *status_section; if (menu->status_section_visible) return; status_section = g_menu_new (); menu_append_status (status_section, _("Available"), "indicator.status::available", "user-available"); menu_append_status (status_section, _("Away"), "indicator.status::away", "user-away"); menu_append_status (status_section, _("Busy"), "indicator.status::busy", "user-busy"); menu_append_status (status_section, _("Invisible"), "indicator.status::invisible", "user-invisible"); menu_append_status (status_section, _("Offline"), "indicator.status::offline", "user-offline"); im_menu_prepend_section (IM_MENU (menu), G_MENU_MODEL (status_section)); menu->status_section_visible = TRUE; g_object_unref (status_section); } static gboolean g_app_info_is_default_for_uri_scheme (GAppInfo *info, const gchar *uri_scheme) { GAppInfo *default_info; gboolean is_default = FALSE; default_info = g_app_info_get_default_for_uri_scheme (uri_scheme); if (default_info) { is_default = g_app_info_equal (info, default_info); g_object_unref (default_info); } return is_default; } static void im_desktop_menu_app_added (ImApplicationList *applist, const gchar *app_id, GDesktopAppInfo *app_info, gpointer user_data) { ImDesktopMenu *menu = user_data; GMenu *section; GMenu *app_section; GMenu *source_section; gchar *namespace; GMenuItem *item; app_section = g_menu_new (); /* application launcher */ { GMenuItem *item; GVariant *icon; item = g_menu_item_new (g_app_info_get_name (G_APP_INFO (app_info)), "launch"); g_menu_item_set_attribute (item, "x-ayatana-type", "s", "org.ayatana.indicator.application"); icon = g_icon_serialize (g_app_info_get_icon (G_APP_INFO (app_info))); if (icon) { g_menu_item_set_attribute_value (item, "icon", icon); g_variant_unref (icon); } g_menu_append_item (app_section, item); g_object_unref (item); } /* application actions */ { const gchar * filename = NULL; IndicatorDesktopShortcuts * shortcuts = NULL; const gchar ** nicks = {NULL}; filename = g_desktop_app_info_get_filename(app_info); if (filename != NULL) shortcuts = indicator_desktop_shortcuts_new(filename, "Messaging Menu"); if (shortcuts != NULL) for (nicks = indicator_desktop_shortcuts_get_nicks(shortcuts); *nicks; nicks++) { GMenuItem *item; gchar *label; label = indicator_desktop_shortcuts_nick_get_name (shortcuts, *nicks); item = g_menu_item_new (label, *nicks); g_menu_item_set_attribute (item, "x-ayatana-type", "s", "org.ayatana.indicator.application"); g_menu_append_item (app_section, item); g_free (label); g_object_unref (item); } g_clear_object(&shortcuts); } if (g_desktop_app_info_get_boolean (app_info, "X-MessagingMenu-UsesChatSection")) im_desktop_menu_show_chat_section (menu); source_section = g_menu_new (); section = g_menu_new (); g_menu_append_section (section, NULL, G_MENU_MODEL (app_section)); g_menu_append_section (section, NULL, G_MENU_MODEL (source_section)); item = g_menu_item_new_section (NULL, G_MENU_MODEL (section)); namespace = g_strconcat ("indicator.", app_id, NULL); g_menu_item_set_attribute (item, "action-namespace", "s", namespace); /* The default chat client is not stored anywhere, so let's hardcode empathy. */ if (g_str_equal (app_id, "empathy")) { g_menu_remove_all (menu->default_chat_client_section); g_menu_append_item (menu->default_chat_client_section, item); } else if (g_app_info_is_default_for_uri_scheme (G_APP_INFO (app_info), "mailto")) { g_menu_remove_all (menu->default_mail_client_section); g_menu_append_item (menu->default_mail_client_section, item); } else { g_menu_item_set_attribute (item, "x-messaging-menu-sort-string", "s", g_app_info_get_name(G_APP_INFO(app_info))); im_menu_insert_item_sorted (IM_MENU (menu), item, menu->status_section_visible ? 3 : 2, -1); } g_hash_table_insert (menu->source_sections, g_strdup (app_id), source_section); g_free (namespace); g_object_unref (item); g_object_unref (section); g_object_unref (app_section); } static void im_desktop_menu_source_section_insert_source (GMenu *source_section, const gchar *source_id, const gchar *label, GVariant *serialized_icon, gint pos) { GMenuItem *item; gchar *action; action = g_strconcat ("src.", source_id, NULL); item = g_menu_item_new (label, NULL); g_menu_item_set_action_and_target_value (item, action, NULL); g_menu_item_set_attribute (item, "x-ayatana-type", "s", "org.ayatana.indicator.messages.source"); if (serialized_icon) g_menu_item_set_attribute_value (item, "icon", serialized_icon); if (pos >= 0) g_menu_insert_item (source_section, pos, item); else g_menu_append_item (source_section, item); g_free (action); g_object_unref (item); } static gint im_desktop_menu_source_section_find_source (GMenu *source_section, const gchar *source_id) { gint n_items; gchar *action; gint i; n_items = g_menu_model_get_n_items (G_MENU_MODEL (source_section)); action = g_strconcat ("src.", source_id, NULL); for (i = 0; i < n_items; i++) { gchar *item_action; if (g_menu_model_get_item_attribute (G_MENU_MODEL (source_section), i, "action", "s", &item_action)) { gboolean equal; equal = g_str_equal (action, item_action); g_free (item_action); if (equal) break; } } g_free (action); return i < n_items ? i : -1; } static void im_desktop_menu_source_added (ImApplicationList *applist, const gchar *app_id, const gchar *source_id, const gchar *label, GVariant *serialized_icon, gboolean visible, gpointer user_data) { ImDesktopMenu *menu = user_data; GMenu *source_section; source_section = g_hash_table_lookup (menu->source_sections, app_id); g_return_if_fail (source_section != NULL); if (visible) im_desktop_menu_source_section_insert_source (source_section, source_id, label, serialized_icon, -1); } static void im_desktop_menu_source_removed (ImApplicationList *applist, const gchar *app_id, const gchar *source_id, gpointer user_data) { ImDesktopMenu *menu = user_data; GMenu *source_section; gint pos; source_section = g_hash_table_lookup (menu->source_sections, app_id); g_return_if_fail (source_section != NULL); pos = im_desktop_menu_source_section_find_source (source_section, source_id); if (pos >= 0) g_menu_remove (source_section, pos); } static void im_desktop_menu_source_changed (ImApplicationList *applist, const gchar *app_id, const gchar *source_id, const gchar *label, GVariant *serialized_icon, gboolean visible, gpointer user_data) { ImDesktopMenu *menu = user_data; GMenu *section; gint pos; section = g_hash_table_lookup (menu->source_sections, app_id); g_return_if_fail (section != NULL); pos = im_desktop_menu_source_section_find_source (section, source_id); if (pos >= 0) g_menu_remove (section, pos); if (visible) im_desktop_menu_source_section_insert_source (section, source_id, label, serialized_icon, pos); } static void im_desktop_menu_remove_all (ImApplicationList *applist, gpointer user_data) { ImDesktopMenu *menu = user_data; GHashTableIter it; GMenu *section; g_hash_table_iter_init (&it, menu->source_sections); while (g_hash_table_iter_next (&it, NULL, (gpointer *) §ion)) { while (g_menu_model_get_n_items (G_MENU_MODEL (section)) > 0) g_menu_remove (section, 0); } } static void im_desktop_menu_app_stopped (ImApplicationList *applist, const gchar *app_id, gpointer user_data) { ImDesktopMenu *menu = user_data; GMenu *section; section = g_hash_table_lookup (menu->source_sections, app_id); g_return_if_fail (section != NULL); while (g_menu_model_get_n_items (G_MENU_MODEL (section)) > 0) g_menu_remove (section, 0); } static void im_desktop_menu_constructed (GObject *object) { ImDesktopMenu *menu = IM_DESKTOP_MENU (object); ImApplicationList *applist; menu->default_chat_client_section = g_menu_new (); im_menu_append_section (IM_MENU (menu), G_MENU_MODEL (menu->default_chat_client_section)); menu->default_mail_client_section = g_menu_new (); im_menu_append_section (IM_MENU (menu), G_MENU_MODEL (menu->default_mail_client_section)); { GMenu *clear_section; clear_section = g_menu_new (); g_menu_append (clear_section, _("Clear"), "indicator.remove-all"); im_menu_append_section (IM_MENU (menu), G_MENU_MODEL (clear_section)); g_object_unref (clear_section); } applist = im_menu_get_application_list (IM_MENU (menu)); { GList *apps; GList *it; apps = im_application_list_get_applications (applist); for (it = apps; it != NULL; it = it->next) { const gchar *id = it->data; im_desktop_menu_app_added (applist, id, im_application_list_get_application (applist, id), menu); } g_list_free (apps); } g_signal_connect (applist, "app-added", G_CALLBACK (im_desktop_menu_app_added), menu); g_signal_connect (applist, "source-added", G_CALLBACK (im_desktop_menu_source_added), menu); g_signal_connect (applist, "source-removed", G_CALLBACK (im_desktop_menu_source_removed), menu); g_signal_connect (applist, "source-changed", G_CALLBACK (im_desktop_menu_source_changed), menu); g_signal_connect (applist, "remove-all", G_CALLBACK (im_desktop_menu_remove_all), menu); g_signal_connect (applist, "app-stopped", G_CALLBACK (im_desktop_menu_app_stopped), menu); G_OBJECT_CLASS (im_desktop_menu_parent_class)->constructed (object); } static void im_desktop_menu_finalize (GObject *object) { ImDesktopMenu *menu = IM_DESKTOP_MENU (object); g_hash_table_unref (menu->source_sections); G_OBJECT_CLASS (im_desktop_menu_parent_class)->finalize (object); } static void im_desktop_menu_class_init (ImDesktopMenuClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->constructed = im_desktop_menu_constructed; object_class->finalize = im_desktop_menu_finalize; } static void im_desktop_menu_init (ImDesktopMenu *menu) { menu->source_sections = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref); } ImDesktopMenu * im_desktop_menu_new (ImApplicationList *applist) { g_return_val_if_fail (IM_IS_APPLICATION_LIST (applist), NULL); return g_object_new (IM_TYPE_DESKTOP_MENU, "application-list", applist, NULL); } ayatana-indicator-messages-24.5.1/src/im-desktop-menu.h0000644000000000000000000000242414764273406017663 0ustar /* * Copyright 2013 Canonical Ltd. * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3, as published * by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranties of * MERCHANTABILITY, SATISFACTORY QUALITY, 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, see . * * Authors: * Lars Uebernickel */ #ifndef __IM_DESKTOP_MENU_H__ #define __IM_DESKTOP_MENU_H__ #include "im-menu.h" #define IM_TYPE_DESKTOP_MENU (im_desktop_menu_get_type ()) #define IM_DESKTOP_MENU(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), IM_TYPE_DESKTOP_MENU, ImDesktopMenu)) #define IM_IS_DESKTOP_MENU(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IM_TYPE_DESKTOP_MENU)) typedef struct _ImDesktopMenu ImDesktopMenu; GType im_desktop_menu_get_type (void); ImDesktopMenu * im_desktop_menu_new (ImApplicationList *applist); #endif ayatana-indicator-messages-24.5.1/src/im-menu.c0000644000000000000000000001650114764273406016210 0ustar /* * Copyright 2013 Canonical Ltd. * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3, as published * by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranties of * MERCHANTABILITY, SATISFACTORY QUALITY, 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, see . * * Authors: * Lars Uebernickel */ #include "im-menu.h" #include "im-accounts-service.h" struct _ImMenuPrivate { GMenu *toplevel_menu; GMenu *menu; ImApplicationList *applist; gboolean on_greeter; ImAccountsService *as; }; G_DEFINE_TYPE_WITH_PRIVATE (ImMenu, im_menu, G_TYPE_OBJECT) enum { PROP_0, PROP_APPLICATION_LIST, PROP_ON_GREETER, NUM_PROPERTIES }; static void im_menu_finalize (GObject *object) { ImMenuPrivate *priv = im_menu_get_instance_private (IM_MENU (object)); g_object_unref (priv->toplevel_menu); g_object_unref (priv->menu); g_object_unref (priv->applist); g_object_unref (priv->as); G_OBJECT_CLASS (im_menu_parent_class)->finalize (object); } static void im_menu_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec) { ImMenuPrivate *priv = im_menu_get_instance_private (IM_MENU (object)); switch (property_id) { case PROP_APPLICATION_LIST: g_value_set_object (value, priv->applist); break; case PROP_ON_GREETER: g_value_set_boolean (value, priv->on_greeter); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); } } static void im_menu_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) { ImMenuPrivate *priv = im_menu_get_instance_private (IM_MENU (object)); switch (property_id) { case PROP_APPLICATION_LIST: /* construct only */ priv->applist = g_value_dup_object (value); break; case PROP_ON_GREETER: priv->on_greeter = g_value_get_boolean (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); } } static void im_menu_class_init (ImMenuClass *class) { GObjectClass *object_class = G_OBJECT_CLASS (class); object_class->finalize = im_menu_finalize; object_class->get_property = im_menu_get_property; object_class->set_property = im_menu_set_property; g_object_class_install_property (object_class, PROP_APPLICATION_LIST, g_param_spec_object ("application-list", "", "", IM_TYPE_APPLICATION_LIST, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (object_class, PROP_ON_GREETER, g_param_spec_boolean ("on-greeter", "", "", FALSE, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); } static void im_menu_init (ImMenu *menu) { ImMenuPrivate *priv = im_menu_get_instance_private (menu); GMenuItem *root; priv->toplevel_menu = g_menu_new (); priv->menu = g_menu_new (); priv->on_greeter = FALSE; priv->as = im_accounts_service_ref_default(); root = g_menu_item_new (NULL, "indicator.messages"); g_menu_item_set_attribute (root, "x-ayatana-type", "s", "org.ayatana.indicator.root"); g_menu_item_set_attribute (root, "action-namespace", "s", "indicator"); g_menu_item_set_submenu (root, G_MENU_MODEL (priv->menu)); g_menu_append_item (priv->toplevel_menu, root); g_object_unref (root); } ImApplicationList * im_menu_get_application_list (ImMenu *menu) { ImMenuPrivate *priv; g_return_val_if_fail (IM_IS_MENU (menu), FALSE); priv = im_menu_get_instance_private (menu); return priv->applist; } gboolean im_menu_export (ImMenu *menu, GDBusConnection *connection, const gchar *object_path, GError **error) { ImMenuPrivate *priv; g_return_val_if_fail (IM_IS_MENU (menu), FALSE); priv = im_menu_get_instance_private (menu); return g_dbus_connection_export_menu_model (connection, object_path, G_MENU_MODEL (priv->toplevel_menu), error) > 0; } void im_menu_prepend_section (ImMenu *menu, GMenuModel *section) { ImMenuPrivate *priv; g_return_if_fail (IM_IS_MENU (menu)); g_return_if_fail (G_IS_MENU_MODEL (section)); priv = im_menu_get_instance_private (menu); g_menu_prepend_section (priv->menu, NULL, section); } void im_menu_append_section (ImMenu *menu, GMenuModel *section) { ImMenuPrivate *priv; g_return_if_fail (IM_IS_MENU (menu)); g_return_if_fail (G_IS_MENU_MODEL (section)); priv = im_menu_get_instance_private (menu); g_menu_append_section (priv->menu, NULL, section); } /* * Inserts @item into @menu by comparing its * "x-messaging-menu-sort-string" with those found in existing menu * items between positions @first and @last. * * If @last is negative, it is counted from the end of @menu. */ void im_menu_insert_item_sorted (ImMenu *menu, GMenuItem *item, gint first, gint last) { ImMenuPrivate *priv; gint position = first; gchar *sort_string; g_return_if_fail (IM_IS_MENU (menu)); g_return_if_fail (G_IS_MENU_ITEM (item)); priv = im_menu_get_instance_private (menu); if (last < 0) last = g_menu_model_get_n_items (G_MENU_MODEL (priv->menu)) + last; g_return_if_fail (first <= last); if (g_menu_item_get_attribute (item, "x-messaging-menu-sort-string", "s", &sort_string)) { while (position < last) { gchar *item_sort; if (g_menu_model_get_item_attribute(G_MENU_MODEL(priv->menu), position, "x-messaging-menu-sort-string", "s", &item_sort)) { gint cmp; cmp = g_utf8_collate(sort_string, item_sort); g_free (item_sort); if (cmp < 0) break; } position++; } } g_menu_insert_item (priv->menu, position, item); } /* Whether the menu should show extra data on it. Depends on the greeter status and user settings */ gboolean im_menu_show_data (ImMenu *menu) { g_return_val_if_fail (IM_IS_MENU (menu), FALSE); ImMenuPrivate *priv = im_menu_get_instance_private (IM_MENU (menu)); if (!priv->on_greeter) return TRUE; return im_accounts_service_get_show_on_greeter(priv->as); } ayatana-indicator-messages-24.5.1/src/im-menu.h0000644000000000000000000000563614764273406016224 0ustar /* * Copyright 2013 Canonical Ltd. * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3, as published * by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranties of * MERCHANTABILITY, SATISFACTORY QUALITY, 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, see . * * Authors: * Lars Uebernickel */ #ifndef __IM_MENU_H__ #define __IM_MENU_H__ #include #include "im-application-list.h" #define IM_TYPE_MENU (im_menu_get_type ()) #define IM_MENU(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), IM_TYPE_MENU, ImMenu)) #define IM_MENU_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), IM_TYPE_MENU, ImMenuClass)) #define IM_IS_MENU(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IM_TYPE_MENU)) #define IM_IS_MENU_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), IM_TYPE_MENU)) #define IM_MENU_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), IM_TYPE_MENU, ImMenuClass)) typedef struct _ImMenuClass ImMenuClass; typedef struct _ImMenu ImMenu; typedef struct _ImMenuPrivate ImMenuPrivate; struct _ImMenuClass { GObjectClass parent_class; }; struct _ImMenu { GObject parent_instance; }; GType im_menu_get_type (void) G_GNUC_CONST; ImApplicationList * im_menu_get_application_list (ImMenu *menu); gboolean im_menu_export (ImMenu *menu, GDBusConnection *connection, const gchar *object_path, GError **error); void im_menu_prepend_section (ImMenu *menu, GMenuModel *section); void im_menu_append_section (ImMenu *menu, GMenuModel *section); void im_menu_insert_item_sorted (ImMenu *menu, GMenuItem *item, gint first, gint last); gboolean im_menu_show_data (ImMenu *menu); #endif ayatana-indicator-messages-24.5.1/src/im-phone-menu.c0000644000000000000000000002430714764273406017322 0ustar /* * Copyright 2012 Canonical Ltd. * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3, as published * by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranties of * MERCHANTABILITY, SATISFACTORY QUALITY, 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, see . * * Authors: * Lars Uebernickel */ #include "im-phone-menu.h" #include #include typedef ImMenuClass ImPhoneMenuClass; struct _ImPhoneMenu { ImMenu parent; GMenu *message_section; GMenu *source_section; GMenu *clear_section; }; G_DEFINE_TYPE (ImPhoneMenu, im_phone_menu, IM_TYPE_MENU); typedef void (*ImMenuForeachFunc) (GMenuModel *menu, gint pos); static void im_phone_menu_foreach_item_with_action (GMenuModel *menu, const gchar *action, ImMenuForeachFunc func) { gint n_items; gint i; n_items = g_menu_model_get_n_items (menu); for (i = 0; i < n_items; i++) { gchar *item_action; g_menu_model_get_item_attribute (menu, i, G_MENU_ATTRIBUTE_ACTION, "s", &item_action); if (g_str_equal (action, item_action)) func (menu, i); g_free (item_action); } } static void im_phone_menu_update_clear_section (ImPhoneMenu *menu) { gboolean is_shown; gboolean should_be_shown; is_shown = g_menu_model_get_n_items (G_MENU_MODEL (menu->clear_section)) > 0; should_be_shown = (g_menu_model_get_n_items (G_MENU_MODEL (menu->message_section)) + g_menu_model_get_n_items (G_MENU_MODEL (menu->source_section))) > 0; if (!is_shown && should_be_shown) { GMenuItem *item; item = g_menu_item_new (_("Clear All"), "remove-all"); g_menu_item_set_attribute (item, "x-ayatana-type", "s", "org.ayatana.indicator.button"); g_menu_append_item (menu->clear_section, item); g_object_unref (item); } else if (is_shown && !should_be_shown) { g_menu_remove (menu->clear_section, 0); } } static void im_phone_menu_constructed (GObject *object) { ImPhoneMenu *menu = IM_PHONE_MENU (object); ImApplicationList *applist; im_menu_append_section (IM_MENU (menu), G_MENU_MODEL (menu->message_section)); im_menu_append_section (IM_MENU (menu), G_MENU_MODEL (menu->source_section)); im_menu_append_section (IM_MENU (menu), G_MENU_MODEL (menu->clear_section)); applist = im_menu_get_application_list (IM_MENU (menu)); g_signal_connect_swapped (applist, "message-added", G_CALLBACK (im_phone_menu_add_message), menu); g_signal_connect_swapped (applist, "message-removed", G_CALLBACK (im_phone_menu_remove_message), menu); g_signal_connect_swapped (applist, "app-stopped", G_CALLBACK (im_phone_menu_remove_application), menu); g_signal_connect_swapped (applist, "remove-all", G_CALLBACK (im_phone_menu_remove_all), menu); G_OBJECT_CLASS (im_phone_menu_parent_class)->constructed (object); } static void im_phone_menu_dispose (GObject *object) { ImPhoneMenu *menu = IM_PHONE_MENU (object); g_clear_object (&menu->message_section); g_clear_object (&menu->source_section); g_clear_object (&menu->clear_section); G_OBJECT_CLASS (im_phone_menu_parent_class)->dispose (object); } static void im_phone_menu_finalize (GObject *object) { G_OBJECT_CLASS (im_phone_menu_parent_class)->finalize (object); } static void im_phone_menu_class_init (ImPhoneMenuClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->constructed = im_phone_menu_constructed; object_class->dispose = im_phone_menu_dispose; object_class->finalize = im_phone_menu_finalize; } static void im_phone_menu_init (ImPhoneMenu *menu) { menu->message_section = g_menu_new (); menu->source_section = g_menu_new (); menu->clear_section = g_menu_new (); } ImPhoneMenu * im_phone_menu_new (ImApplicationList *applist, gboolean greeter) { g_return_val_if_fail (IM_IS_APPLICATION_LIST (applist), NULL); return g_object_new (IM_TYPE_PHONE_MENU, "application-list", applist, "on-greeter", greeter, NULL); } static gint64 im_phone_menu_get_message_time (GMenuModel *model, gint i) { gint64 time; g_menu_model_get_item_attribute (model, i, "x-ayatana-time", "x", &time); return time; } void im_phone_menu_add_message (ImPhoneMenu *menu, const gchar *app_id, GIcon *app_icon, const gchar *id, GVariant *serialized_icon, const gchar *title, const gchar *subtitle, const gchar *body, GVariant *actions, gint64 time) { GMenuItem *item; gchar *action_name; gint n_messages; gint pos; GVariant *serialized_app_icon; gboolean show_data; g_return_if_fail (IM_IS_PHONE_MENU (menu)); g_return_if_fail (app_id); show_data = im_menu_show_data(IM_MENU (menu)); action_name = g_strconcat (app_id, ".msg.", id, NULL); item = g_menu_item_new (title, NULL); g_menu_item_set_action_and_target_value (item, action_name, g_variant_new_boolean (TRUE)); g_menu_item_set_attribute (item, "x-ayatana-type", "s", "org.ayatana.indicator.messages.messageitem"); g_menu_item_set_attribute (item, "x-ayatana-message-id", "s", id); if (show_data) g_menu_item_set_attribute (item, "x-ayatana-subtitle", "s", subtitle); if (show_data) g_menu_item_set_attribute (item, "x-ayatana-text", "s", body); g_menu_item_set_attribute (item, "x-ayatana-time", "x", time); if (serialized_icon) g_menu_item_set_attribute_value (item, "icon", serialized_icon); if (app_icon && (serialized_app_icon = g_icon_serialize (app_icon))) { g_menu_item_set_attribute_value (item, "x-ayatana-app-icon", serialized_app_icon); g_variant_unref (serialized_app_icon); } if (actions && show_data) g_menu_item_set_attribute (item, "x-ayatana-message-actions", "v", actions); n_messages = g_menu_model_get_n_items (G_MENU_MODEL (menu->message_section)); pos = 0; while (pos < n_messages && time < im_phone_menu_get_message_time (G_MENU_MODEL (menu->message_section), pos)) pos++; g_menu_insert_item (menu->message_section, pos, item); im_phone_menu_update_clear_section (menu); g_free (action_name); g_object_unref (item); } void im_phone_menu_remove_message (ImPhoneMenu *menu, const gchar *app_id, const gchar *id) { gchar *action_name; g_return_if_fail (IM_IS_PHONE_MENU (menu)); g_return_if_fail (app_id != NULL); action_name = g_strconcat (app_id, ".msg.", id, NULL); im_phone_menu_foreach_item_with_action (G_MENU_MODEL (menu->message_section), action_name, (ImMenuForeachFunc) g_menu_remove); im_phone_menu_update_clear_section (menu); g_free (action_name); } void im_phone_menu_add_source (ImPhoneMenu *menu, const gchar *app_id, const gchar *id, const gchar *label, const gchar *iconstr) { GMenuItem *item; gchar *action_name; g_return_if_fail (IM_IS_PHONE_MENU (menu)); g_return_if_fail (app_id != NULL); action_name = g_strconcat (app_id, ".src.", id, NULL); item = g_menu_item_new (label, NULL); g_menu_item_set_action_and_target_value (item, action_name, g_variant_new_boolean (TRUE)); g_menu_item_set_attribute (item, "x-ayatana-type", "s", "org.ayatana.indicator.messages.sourceitem"); if (iconstr) g_menu_item_set_attribute (item, "x-ayatana-icon", "s", iconstr); g_menu_prepend_item (menu->source_section, item); g_free (action_name); g_object_unref (item); } void im_phone_menu_remove_source (ImPhoneMenu *menu, const gchar *app_id, const gchar *id) { gchar *action_name; g_return_if_fail (IM_IS_PHONE_MENU (menu)); g_return_if_fail (app_id != NULL); action_name = g_strconcat (app_id, ".src.", id, NULL); im_phone_menu_foreach_item_with_action (G_MENU_MODEL (menu->source_section), action_name, (ImMenuForeachFunc) g_menu_remove); g_free (action_name); } static void im_phone_menu_remove_all_for_app (GMenu *menu, const gchar *app_id) { gchar *prefix; gint n_items; gint i = 0; prefix = g_strconcat (app_id, ".", NULL); n_items = g_menu_model_get_n_items (G_MENU_MODEL (menu)); while (i < n_items) { gchar *action; g_menu_model_get_item_attribute (G_MENU_MODEL (menu), i, G_MENU_ATTRIBUTE_ACTION, "s", &action); if (g_str_has_prefix (action, prefix)) { g_menu_remove (menu, i); n_items--; } else { i++; } g_free (action); } g_free (prefix); } void im_phone_menu_remove_application (ImPhoneMenu *menu, const gchar *app_id) { g_return_if_fail (IM_IS_PHONE_MENU (menu)); g_return_if_fail (app_id != NULL); im_phone_menu_remove_all_for_app (menu->source_section, app_id); im_phone_menu_remove_all_for_app (menu->message_section, app_id); im_phone_menu_update_clear_section (menu); } void im_phone_menu_remove_all (ImPhoneMenu *menu) { g_return_if_fail (IM_IS_PHONE_MENU (menu)); while (g_menu_model_get_n_items (G_MENU_MODEL (menu->message_section))) g_menu_remove (menu->message_section, 0); while (g_menu_model_get_n_items (G_MENU_MODEL (menu->source_section))) g_menu_remove (menu->source_section, 0); im_phone_menu_update_clear_section (menu); } ayatana-indicator-messages-24.5.1/src/im-phone-menu.h0000644000000000000000000000717614764273406017334 0ustar /* * Copyright 2012 Canonical Ltd. * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3, as published * by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranties of * MERCHANTABILITY, SATISFACTORY QUALITY, 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, see . * * Authors: * Lars Uebernickel */ #ifndef __IM_PHONE_MENU_H__ #define __IM_PHONE_MENU_H__ #include "im-menu.h" #define IM_TYPE_PHONE_MENU (im_phone_menu_get_type ()) #define IM_PHONE_MENU(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), IM_TYPE_PHONE_MENU, ImPhoneMenu)) #define IM_PHONE_MENU_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), IM_TYPE_PHONE_MENU, ImPhoneMenuClass)) #define IM_IS_PHONE_MENU(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IM_TYPE_PHONE_MENU)) #define IM_IS_PHONE_MENU_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), IM_TYPE_PHONE_MENU)) #define IM_PHONE_MENU_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), IM_TYPE_PHONE_MENU, ImPhoneMenuClass)) typedef struct _ImPhoneMenu ImPhoneMenu; GType im_phone_menu_get_type (void); ImPhoneMenu * im_phone_menu_new (ImApplicationList *applist, gboolean greeter); void im_phone_menu_add_message (ImPhoneMenu *menu, const gchar *app_id, GIcon *app_icon, const gchar *id, GVariant *serialized_icon, const gchar *title, const gchar *subtitle, const gchar *body, GVariant *actions, gint64 time); void im_phone_menu_remove_message (ImPhoneMenu *menu, const gchar *app_id, const gchar *id); void im_phone_menu_add_source (ImPhoneMenu *menu, const gchar *app_id, const gchar *id, const gchar *label, const gchar *iconstr); void im_phone_menu_remove_source (ImPhoneMenu *menu, const gchar *app_id, const gchar *id); void im_phone_menu_remove_application (ImPhoneMenu *menu, const gchar *app_id); void im_phone_menu_remove_all (ImPhoneMenu *menu); #endif ayatana-indicator-messages-24.5.1/src/indicator-desktop-shortcuts.c0000644000000000000000000005610014764273406022317 0ustar /* A small file to parse through the actions that are available in the desktop file and making those easily usable. Copyright 2010 Canonical Ltd. Copyright 2021 Robert Tari Authors: Ted Gould Robert Tari This library is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation. This library 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 version 3.0 for more details. You should have received a copy of the GNU General Public License along with this library. If not, see . */ #include #include "indicator-desktop-shortcuts.h" #define ACTIONS_KEY "Actions" #define ACTION_GROUP_PREFIX "Desktop Action" #define OLD_GROUP_SUFFIX "Shortcut Group" #define OLD_SHORTCUTS_KEY "X-Ayatana-Desktop-Shortcuts" #define OLD_ENVIRON_KEY "TargetEnvironment" #define PROP_DESKTOP_FILE_S "desktop-file" #define PROP_IDENTITY_S "identity" typedef enum _actions_t actions_t; enum _actions_t { ACTIONS_NONE, ACTIONS_XAYATANA, ACTIONS_DESKTOP_SPEC }; typedef struct { actions_t actions; GKeyFile * keyfile; gchar * identity; GArray * nicks; gchar * domain; } IndicatorDesktopShortcutsPrivate; enum { PROP_0, PROP_DESKTOP_FILE, PROP_IDENTITY }; static void indicator_desktop_shortcuts_class_init (IndicatorDesktopShortcutsClass *klass); static void indicator_desktop_shortcuts_init (IndicatorDesktopShortcuts *self); static void indicator_desktop_shortcuts_dispose (GObject *object); static void indicator_desktop_shortcuts_finalize (GObject *object); static void set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec); static void get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec); static void parse_keyfile (IndicatorDesktopShortcuts * ids); static gboolean should_show (GKeyFile * keyfile, const gchar * group, const gchar * identity, gboolean should_have_target); G_DEFINE_TYPE_WITH_PRIVATE (IndicatorDesktopShortcuts, indicator_desktop_shortcuts, G_TYPE_OBJECT); /* Build up the class */ static void indicator_desktop_shortcuts_class_init (IndicatorDesktopShortcutsClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->dispose = indicator_desktop_shortcuts_dispose; object_class->finalize = indicator_desktop_shortcuts_finalize; /* Property funcs */ object_class->set_property = set_property; object_class->get_property = get_property; g_object_class_install_property(object_class, PROP_DESKTOP_FILE, g_param_spec_string(PROP_DESKTOP_FILE_S, "The path of the desktop file to read", "A path to a desktop file that we'll look for shortcuts in.", NULL, G_PARAM_WRITABLE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT_ONLY)); g_object_class_install_property(object_class, PROP_IDENTITY, g_param_spec_string(PROP_IDENTITY_S, "The string that represents the identity that we're acting as.", "Used to process ShowIn and NotShownIn fields of the desktop shortcust to get the proper list.", NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT_ONLY)); return; } /* Initialize instance data */ static void indicator_desktop_shortcuts_init (IndicatorDesktopShortcuts *self) { IndicatorDesktopShortcutsPrivate * priv = indicator_desktop_shortcuts_get_instance_private(self); priv->keyfile = NULL; priv->identity = NULL; priv->domain = NULL; priv->nicks = g_array_new(TRUE, TRUE, sizeof(gchar *)); priv->actions = ACTIONS_NONE; return; } /* Clear object references */ static void indicator_desktop_shortcuts_dispose (GObject *object) { IndicatorDesktopShortcuts * self = INDICATOR_DESKTOP_SHORTCUTS(object); IndicatorDesktopShortcutsPrivate * priv = indicator_desktop_shortcuts_get_instance_private(self); if (priv->keyfile) { g_key_file_free(priv->keyfile); priv->keyfile = NULL; } G_OBJECT_CLASS (indicator_desktop_shortcuts_parent_class)->dispose (object); return; } /* Free all memory */ static void indicator_desktop_shortcuts_finalize (GObject *object) { IndicatorDesktopShortcuts * self = INDICATOR_DESKTOP_SHORTCUTS(object); IndicatorDesktopShortcutsPrivate * priv = indicator_desktop_shortcuts_get_instance_private(self); if (priv->identity != NULL) { g_free(priv->identity); priv->identity = NULL; } if (priv->domain != NULL) { g_free(priv->domain); priv->domain = NULL; } if (priv->nicks != NULL) { gint i; for (i = 0; i < priv->nicks->len; i++) { gchar * nick = g_array_index(priv->nicks, gchar *, i); g_free(nick); } g_array_free(priv->nicks, TRUE); priv->nicks = NULL; } G_OBJECT_CLASS (indicator_desktop_shortcuts_parent_class)->finalize (object); return; } /* Sets one of the two properties we have, only at construction though */ static void set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec) { g_return_if_fail(INDICATOR_IS_DESKTOP_SHORTCUTS(object)); IndicatorDesktopShortcuts * self = INDICATOR_DESKTOP_SHORTCUTS(object); IndicatorDesktopShortcutsPrivate * priv = indicator_desktop_shortcuts_get_instance_private(self); switch(prop_id) { case PROP_DESKTOP_FILE: { if (priv->keyfile != NULL) { g_key_file_free(priv->keyfile); priv->keyfile = NULL; priv->actions = ACTIONS_NONE; } GError * error = NULL; GKeyFile * keyfile = g_key_file_new(); g_key_file_load_from_file(keyfile, g_value_get_string(value), G_KEY_FILE_NONE, &error); if (error != NULL) { g_warning("Unable to load keyfile from file '%s': %s", g_value_get_string(value), error->message); g_error_free(error); g_key_file_free(keyfile); break; } /* Always prefer the desktop spec if we can get it */ if (priv->actions == ACTIONS_NONE && g_key_file_has_key(keyfile, G_KEY_FILE_DESKTOP_GROUP, ACTIONS_KEY, NULL)) { priv->actions = ACTIONS_DESKTOP_SPEC; } /* But fallback if we can't */ if (priv->actions == ACTIONS_NONE && g_key_file_has_key(keyfile, G_KEY_FILE_DESKTOP_GROUP, OLD_SHORTCUTS_KEY, NULL)) { priv->actions = ACTIONS_XAYATANA; g_warning("Desktop file '%s' is using a deprecated format for its actions that will be dropped soon.", g_value_get_string(value)); } if (priv->actions == ACTIONS_NONE) { g_key_file_free(keyfile); break; } priv->keyfile = keyfile; parse_keyfile(INDICATOR_DESKTOP_SHORTCUTS(object)); break; } case PROP_IDENTITY: if (priv->identity != NULL) { g_warning("Identity already set to '%s' and trying to set it to '%s'.", priv->identity, g_value_get_string(value)); return; } priv->identity = g_value_dup_string(value); parse_keyfile(INDICATOR_DESKTOP_SHORTCUTS(object)); break; /* *********************** */ default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } return; } /* Gets either the desktop file our the identity. */ static void get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec) { g_return_if_fail(INDICATOR_IS_DESKTOP_SHORTCUTS(object)); IndicatorDesktopShortcuts * self = INDICATOR_DESKTOP_SHORTCUTS(object); IndicatorDesktopShortcutsPrivate * priv = indicator_desktop_shortcuts_get_instance_private(self); switch(prop_id) { case PROP_IDENTITY: g_value_set_string(value, priv->identity); break; /* *********************** */ default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } return; } /* Checks to see if we can, and if we can it goes through and parses the keyfile entries. */ static void parse_keyfile (IndicatorDesktopShortcuts * ids) { IndicatorDesktopShortcuts * self = INDICATOR_DESKTOP_SHORTCUTS(ids); IndicatorDesktopShortcutsPrivate * priv = indicator_desktop_shortcuts_get_instance_private(self); if (priv->keyfile == NULL) { return; } if (priv->identity == NULL) { return; } /* Remove a previous translation domain if we had one from a previously parsed file. */ if (priv->domain != NULL) { g_free(priv->domain); priv->domain = NULL; } /* Check to see if there is a custom translation domain that we should take into account. */ if (priv->domain == NULL && g_key_file_has_key(priv->keyfile, G_KEY_FILE_DESKTOP_GROUP, "X-GNOME-Gettext-Domain", NULL)) { priv->domain = g_key_file_get_string(priv->keyfile, G_KEY_FILE_DESKTOP_GROUP, "X-GNOME-Gettext-Domain", NULL); } if (priv->domain == NULL && g_key_file_has_key(priv->keyfile, G_KEY_FILE_DESKTOP_GROUP, "X-Ubuntu-Gettext-Domain", NULL)) { priv->domain = g_key_file_get_string(priv->keyfile, G_KEY_FILE_DESKTOP_GROUP, "X-Ubuntu-Gettext-Domain", NULL); } /* We need to figure out what we're looking for and what we want to look for in the rest of the file */ const gchar * list_name = NULL; const gchar * group_format = NULL; gboolean should_have_target = FALSE; switch (priv->actions) { case ACTIONS_NONE: /* None, let's just get outta here */ return; case ACTIONS_XAYATANA: list_name = OLD_SHORTCUTS_KEY; group_format = "%s " OLD_GROUP_SUFFIX; should_have_target = TRUE; break; case ACTIONS_DESKTOP_SPEC: list_name = ACTIONS_KEY; group_format = ACTION_GROUP_PREFIX " %s"; should_have_target = FALSE; break; default: g_assert_not_reached(); return; } /* Okay, we've got everything we need. Let's get it on! */ gint i; gsize num_nicks = 0; gchar ** nicks = g_key_file_get_string_list(priv->keyfile, G_KEY_FILE_DESKTOP_GROUP, list_name, &num_nicks, NULL); /* If there is an error from get_string_list num_nicks should still be zero, so this loop will drop out. */ for (i = 0; i < num_nicks; i++) { /* g_debug("Looking at group nick %s", nicks[i]); */ gchar * groupname = g_strdup_printf(group_format, nicks[i]); if (!g_key_file_has_group(priv->keyfile, groupname)) { g_warning("Unable to find group '%s'", groupname); g_free(groupname); continue; } if (!should_show(priv->keyfile, G_KEY_FILE_DESKTOP_GROUP, priv->identity, FALSE)) { g_free(groupname); continue; } if (!should_show(priv->keyfile, groupname, priv->identity, should_have_target)) { g_free(groupname); continue; } gchar * nickalloc = g_strdup(nicks[i]); g_array_append_val(priv->nicks, nickalloc); g_free(groupname); } if (nicks != NULL) { g_strfreev(nicks); } return; } /* Checks the ONLY_SHOW_IN and NOT_SHOW_IN keys for a group to see if we should be showing ourselves. */ static gboolean should_show (GKeyFile * keyfile, const gchar * group, const gchar * identity, gboolean should_have_target) { if (should_have_target && g_key_file_has_key(keyfile, group, OLD_ENVIRON_KEY, NULL)) { /* If we've got this key, we're going to return here and not process the deprecated keys. */ gint j; gsize num_env = 0; gchar ** envs = g_key_file_get_string_list(keyfile, group, OLD_ENVIRON_KEY, &num_env, NULL); for (j = 0; j < num_env; j++) { if (g_strcmp0(envs[j], identity) == 0) { break; } } if (envs != NULL) { g_strfreev(envs); } if (j == num_env) { return FALSE; } return TRUE; } /* If there is a list of OnlyShowIn entries we need to check to see if we're in that list. If not, we drop this nick */ if (g_key_file_has_key(keyfile, group, G_KEY_FILE_DESKTOP_KEY_ONLY_SHOW_IN, NULL)) { gint j; gsize num_only = 0; gchar ** onlies = g_key_file_get_string_list(keyfile, group, G_KEY_FILE_DESKTOP_KEY_ONLY_SHOW_IN, &num_only, NULL); for (j = 0; j < num_only; j++) { if (g_strcmp0(onlies[j], identity) == 0) { break; } } if (onlies != NULL) { g_strfreev(onlies); } if (j == num_only) { return FALSE; } } /* If there is a NotShowIn entry we need to make sure that we're not in that list. If we are, we need to drop out. */ if (g_key_file_has_key(keyfile, group, G_KEY_FILE_DESKTOP_KEY_NOT_SHOW_IN, NULL)) { gint j; gsize num_not = 0; gchar ** nots = g_key_file_get_string_list(keyfile, group, G_KEY_FILE_DESKTOP_KEY_NOT_SHOW_IN, &num_not, NULL); for (j = 0; j < num_not; j++) { if (g_strcmp0(nots[j], identity) == 0) { break; } } if (nots != NULL) { g_strfreev(nots); } if (j != num_not) { return FALSE; } } return TRUE; } /* Looks through the nicks to see if this one is in the list, and thus valid to use. */ static gboolean is_valid_nick (gchar ** list, const gchar * nick) { if (*list == NULL) return FALSE; /* g_debug("Checking Nick: %s", list[0]); */ if (g_strcmp0(list[0], nick) == 0) return TRUE; return is_valid_nick(&list[1], nick); } /* API */ /** indicator_desktop_shortcuts_new: @file: The desktop file that would be opened to find the actions. @identity: This is a string that represents the identity that should be used in searching those actions. It relates to the ShowIn and NotShownIn properties. This function creates the basic object. It involves opening the file and parsing it. It could potentially block on IO. At the end of the day you'll have a fully functional object. Return value: A new #IndicatorDesktopShortcuts object. */ IndicatorDesktopShortcuts * indicator_desktop_shortcuts_new (const gchar * file, const gchar * identity) { GObject * obj = g_object_new(INDICATOR_TYPE_DESKTOP_SHORTCUTS, PROP_DESKTOP_FILE_S, file, PROP_IDENTITY_S, identity, NULL); return INDICATOR_DESKTOP_SHORTCUTS(obj); } /** indicator_desktop_shortcuts_get_nicks: @ids: The #IndicatorDesktopShortcuts object to look in Give you the list of commands that are available for this desktop file given the identity that was passed in at creation. This will filter out the various items in the desktop file. These nicks can then be used as keys for working with the desktop file. Return value: A #NULL terminated list of strings. This memory is managed by the @ids object. */ const gchar ** indicator_desktop_shortcuts_get_nicks (IndicatorDesktopShortcuts * ids) { g_return_val_if_fail(INDICATOR_IS_DESKTOP_SHORTCUTS(ids), NULL); IndicatorDesktopShortcuts * self = INDICATOR_DESKTOP_SHORTCUTS(ids); IndicatorDesktopShortcutsPrivate * priv = indicator_desktop_shortcuts_get_instance_private(self); return (const gchar **)priv->nicks->data; } /** indicator_desktop_shortcuts_nick_get_name: @ids: The #IndicatorDesktopShortcuts object to look in @nick: Which command that we're referencing. This function looks in a desktop file for a nick to find the user visible name for that shortcut. The @nick parameter should be gotten from #indicator_desktop_shortcuts_get_nicks though it's not required that the exact memory location be the same. Return value: A user visible string for the shortcut or #NULL on error. */ gchar * indicator_desktop_shortcuts_nick_get_name (IndicatorDesktopShortcuts * ids, const gchar * nick) { g_return_val_if_fail(INDICATOR_IS_DESKTOP_SHORTCUTS(ids), NULL); IndicatorDesktopShortcuts * self = INDICATOR_DESKTOP_SHORTCUTS(ids); IndicatorDesktopShortcutsPrivate * priv = indicator_desktop_shortcuts_get_instance_private(self); g_return_val_if_fail(priv->actions != ACTIONS_NONE, NULL); g_return_val_if_fail(priv->keyfile != NULL, NULL); g_return_val_if_fail(is_valid_nick((gchar **)priv->nicks->data, nick), NULL); const gchar * group_format = NULL; switch (priv->actions) { case ACTIONS_XAYATANA: group_format = "%s " OLD_GROUP_SUFFIX; break; case ACTIONS_DESKTOP_SPEC: group_format = ACTION_GROUP_PREFIX " %s"; break; default: g_assert_not_reached(); return NULL; } gchar * groupheader = g_strdup_printf(group_format, nick); if (!g_key_file_has_group(priv->keyfile, groupheader)) { g_warning("The group for nick '%s' doesn't exist anymore.", nick); g_free(groupheader); return NULL; } if (!g_key_file_has_key(priv->keyfile, groupheader, G_KEY_FILE_DESKTOP_KEY_NAME, NULL)) { g_warning("No name available for nick '%s'", nick); g_free(groupheader); return NULL; } gchar * name = NULL; gchar * keyvalue = g_key_file_get_string(priv->keyfile, groupheader, G_KEY_FILE_DESKTOP_KEY_NAME, NULL); gchar * localeval = g_key_file_get_locale_string(priv->keyfile, groupheader, G_KEY_FILE_DESKTOP_KEY_NAME, NULL, NULL); g_free(groupheader); if (priv->domain != NULL && g_strcmp0(keyvalue, localeval) == 0) { name = g_strdup(g_dgettext(priv->domain, keyvalue)); g_free(localeval); } else { name = localeval; } g_free(keyvalue); return name; } /** indicator_desktop_shortcuts_nick_exec_with_context: @ids: The #IndicatorDesktopShortcuts object to look in @nick: Which command that we're referencing. @launch_context: The #GAppLaunchContext to use for launching the shortcut Here we take a @nick and try and execute the action that is associated with it. The @nick parameter should be gotten from #indicator_desktop_shortcuts_get_nicks though it's not required that the exact memory location be the same. Return value: #TRUE on success or #FALSE on error. */ gboolean indicator_desktop_shortcuts_nick_exec_with_context (IndicatorDesktopShortcuts * ids, const gchar * nick, GAppLaunchContext * launch_context) { GError * error = NULL; g_return_val_if_fail(INDICATOR_IS_DESKTOP_SHORTCUTS(ids), FALSE); IndicatorDesktopShortcuts * self = INDICATOR_DESKTOP_SHORTCUTS(ids); IndicatorDesktopShortcutsPrivate * priv = indicator_desktop_shortcuts_get_instance_private(self); g_return_val_if_fail(priv->actions != ACTIONS_NONE, FALSE); g_return_val_if_fail(priv->keyfile != NULL, FALSE); g_return_val_if_fail(is_valid_nick((gchar **)priv->nicks->data, nick), FALSE); const gchar * group_format = NULL; switch (priv->actions) { case ACTIONS_XAYATANA: group_format = "%s " OLD_GROUP_SUFFIX; break; case ACTIONS_DESKTOP_SPEC: group_format = ACTION_GROUP_PREFIX " %s"; break; default: g_assert_not_reached(); return FALSE; } gchar * groupheader = g_strdup_printf(group_format, nick); if (!g_key_file_has_group(priv->keyfile, groupheader)) { g_warning("The group for nick '%s' doesn't exist anymore.", nick); g_free(groupheader); return FALSE; } if (!g_key_file_has_key(priv->keyfile, groupheader, G_KEY_FILE_DESKTOP_KEY_NAME, NULL)) { g_warning("No name available for nick '%s'", nick); g_free(groupheader); return FALSE; } if (!g_key_file_has_key(priv->keyfile, groupheader, G_KEY_FILE_DESKTOP_KEY_EXEC, NULL)) { g_warning("No exec available for nick '%s'", nick); g_free(groupheader); return FALSE; } /* Grab the name and the exec entries out of our current group */ gchar * name = g_key_file_get_locale_string(priv->keyfile, groupheader, G_KEY_FILE_DESKTOP_KEY_NAME, NULL, NULL); gchar * exec = g_key_file_get_locale_string(priv->keyfile, groupheader, G_KEY_FILE_DESKTOP_KEY_EXEC, NULL, NULL); g_free(groupheader); GAppInfoCreateFlags flags = G_APP_INFO_CREATE_NONE; if (launch_context) { flags |= G_APP_INFO_CREATE_SUPPORTS_STARTUP_NOTIFICATION; } GAppInfo * appinfo = g_app_info_create_from_commandline(exec, name, flags, &error); g_free(name); g_free(exec); if (error != NULL) { g_warning("Unable to build Command line App info: %s", error->message); g_error_free(error); return FALSE; } if (appinfo == NULL) { g_warning("Unable to build Command line App info (unknown)"); return FALSE; } gboolean launched = g_app_info_launch(appinfo, NULL, launch_context, &error); if (error != NULL) { g_warning("Unable to launch file from nick '%s': %s", nick, error->message); g_clear_error(&error); } g_object_unref(appinfo); return launched; } /** indicator_desktop_shortcuts_nick_exec: @ids: The #IndicatorDesktopShortcuts object to look in @nick: Which command that we're referencing. Here we take a @nick and try and execute the action that is associated with it. The @nick parameter should be gotten from #indicator_desktop_shortcuts_get_nicks though it's not required that the exact memory location be the same. This function is deprecated and shouldn't be used in newly written code. Return value: #TRUE on success or #FALSE on error. */ gboolean indicator_desktop_shortcuts_nick_exec (IndicatorDesktopShortcuts * ids, const gchar * nick) { return indicator_desktop_shortcuts_nick_exec_with_context (ids, nick, NULL); } ayatana-indicator-messages-24.5.1/src/indicator-desktop-shortcuts.h0000644000000000000000000000674614764273406022337 0ustar /* A small file to parse through the actions that are available in the desktop file and making those easily usable. Copyright 2010 Canonical Ltd. Authors: Ted Gould This library is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation. This library 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 version 3.0 for more details. You should have received a copy of the GNU General Public License along with this library. If not, see . */ #ifndef __INDICATOR_DESKTOP_SHORTCUTS_H__ #define __INDICATOR_DESKTOP_SHORTCUTS_H__ #include #include #include G_BEGIN_DECLS #define INDICATOR_TYPE_DESKTOP_SHORTCUTS (indicator_desktop_shortcuts_get_type ()) #define INDICATOR_DESKTOP_SHORTCUTS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), INDICATOR_TYPE_DESKTOP_SHORTCUTS, IndicatorDesktopShortcuts)) #define INDICATOR_DESKTOP_SHORTCUTS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), INDICATOR_TYPE_DESKTOP_SHORTCUTS, IndicatorDesktopShortcutsClass)) #define INDICATOR_IS_DESKTOP_SHORTCUTS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), INDICATOR_TYPE_DESKTOP_SHORTCUTS)) #define INDICATOR_IS_DESKTOP_SHORTCUTS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), INDICATOR_TYPE_DESKTOP_SHORTCUTS)) #define INDICATOR_DESKTOP_SHORTCUTS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), INDICATOR_TYPE_DESKTOP_SHORTCUTS, IndicatorDesktopShortcutsClass)) typedef struct _IndicatorDesktopShortcuts IndicatorDesktopShortcuts; typedef struct _IndicatorDesktopShortcutsClass IndicatorDesktopShortcutsClass; /** IndicatorDesktopShortcutsClass: @parent_class: Space for #GObjectClass The vtable for our precious #IndicatorDesktopShortcutsClass. */ struct _IndicatorDesktopShortcutsClass { GObjectClass parent_class; }; /** IndicatorDesktopShortcuts: @parent: The parent data from #GObject The public data for an instance of the class #IndicatorDesktopShortcuts. */ struct _IndicatorDesktopShortcuts { GObject parent; }; GType indicator_desktop_shortcuts_get_type (void); IndicatorDesktopShortcuts * indicator_desktop_shortcuts_new (const gchar * file, const gchar * identity); const gchar ** indicator_desktop_shortcuts_get_nicks (IndicatorDesktopShortcuts * ids); gchar * indicator_desktop_shortcuts_nick_get_name (IndicatorDesktopShortcuts * ids, const gchar * nick); gboolean indicator_desktop_shortcuts_nick_exec_with_context (IndicatorDesktopShortcuts * ids, const gchar * nick, GAppLaunchContext * launch_context); GLIB_DEPRECATED_FOR(indicator_desktop_shortcuts_nick_exec_with_context) gboolean indicator_desktop_shortcuts_nick_exec (IndicatorDesktopShortcuts * ids, const gchar * nick); G_END_DECLS #endif ayatana-indicator-messages-24.5.1/src/messages-service.c0000644000000000000000000002164614764273406020114 0ustar /* An indicator to show information that is in messaging applications that the user is using. Copyright 2012 Canonical Ltd. Copyright 2021 Robert Tari Authors: Ted Gould Lars Uebernickel Robert Tari This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranties of MERCHANTABILITY, SATISFACTORY QUALITY, 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, see . */ #include #include #include #include #include "dbus-data.h" #include "gsettingsstrv.h" #include "indicator-messages-service.h" #include "indicator-messages-application.h" #include "im-phone-menu.h" #include "im-desktop-menu.h" #include "im-application-list.h" #define NUM_STATUSES 5 static ImApplicationList *applications; static IndicatorMessagesService *messages_service; static GHashTable *menus; static GSettings *settings; enum { DBUS_ERROR_BAD_DESKTOP_FILE, }; G_DEFINE_QUARK(indicator_messages_dbus_error, dbus_error); static gboolean register_application (IndicatorMessagesService *service, GDBusMethodInvocation *invocation, const gchar *desktop_id, const gchar *menu_path, gpointer user_data) { GDBusConnection *bus; const gchar *sender; if (!im_application_list_add (applications, desktop_id)) { g_dbus_method_invocation_return_error(invocation, dbus_error_quark(), DBUS_ERROR_BAD_DESKTOP_FILE, "Unable to find or parse desktop file for application '%s'", desktop_id); return TRUE; } bus = g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (service)); sender = g_dbus_method_invocation_get_sender (invocation); im_application_list_set_remote (applications, desktop_id, bus, sender, menu_path); g_settings_strv_append_unique (settings, "applications", desktop_id); indicator_messages_service_complete_register_application (service, invocation); return TRUE; } static gboolean unregister_application (IndicatorMessagesService *service, GDBusMethodInvocation *invocation, const gchar *desktop_id, gpointer user_data) { im_application_list_remove (applications, desktop_id); g_settings_strv_remove (settings, "applications", desktop_id); indicator_messages_service_complete_unregister_application (service, invocation); return TRUE; } static gboolean set_status (IndicatorMessagesService *service, GDBusMethodInvocation *invocation, const gchar *desktop_id, const gchar *status_str, gpointer user_data) { GDesktopAppInfo *appinfo; const gchar *id; g_return_val_if_fail (g_str_equal (status_str, "available") || g_str_equal (status_str, "away")|| g_str_equal (status_str, "busy") || g_str_equal (status_str, "invisible") || g_str_equal (status_str, "offline"), FALSE); appinfo = g_desktop_app_info_new (desktop_id); if (!appinfo) { g_warning ("could not set status for '%s', there's no desktop file with that id", desktop_id); return TRUE; } id = g_app_info_get_id (G_APP_INFO (appinfo)); im_application_list_set_status(applications, id, status_str); indicator_messages_service_complete_set_status (service, invocation); g_object_unref (appinfo); return TRUE; } static gboolean app_stopped (IndicatorMessagesService *service, GDBusMethodInvocation *invocation, const gchar *desktop_id, gpointer user_data) { GDesktopAppInfo *appinfo; const gchar *id; appinfo = g_desktop_app_info_new (desktop_id); if (!appinfo) return TRUE; id = g_app_info_get_id (G_APP_INFO (appinfo)); im_application_list_set_remote (applications, id, NULL, NULL, NULL); indicator_messages_service_complete_application_stopped_running (service, invocation); g_object_unref (appinfo); return TRUE; } /* The status has been set by the user, let's tell the world! */ static void status_set_by_user (ImApplicationList * list, const gchar * status, gpointer user_data) { indicator_messages_service_emit_status_changed(messages_service, status); return; } static void on_bus_acquired (GDBusConnection *bus, const gchar *name, gpointer user_data) { GError *error = NULL; GHashTableIter it; const gchar *profile; ImMenu *menu; /* Register some errors */ g_dbus_error_register_error (dbus_error_quark(), DBUS_ERROR_BAD_DESKTOP_FILE, "BadDesktopFile"); g_dbus_connection_export_action_group (bus, INDICATOR_MESSAGES_DBUS_OBJECT, im_application_list_get_action_group (applications), &error); if (error) { g_warning ("unable to export action group on dbus: %s", error->message); g_error_free (error); return; } g_hash_table_iter_init (&it, menus); while (g_hash_table_iter_next (&it, (gpointer *) &profile, (gpointer *) &menu)) { gchar *object_path; object_path = g_strconcat (INDICATOR_MESSAGES_DBUS_OBJECT, "/", profile, NULL); if (!im_menu_export (menu, bus, object_path, &error)) { g_warning ("unable to export menu for profile '%s': %s", profile, error->message); g_clear_error (&error); } g_free (object_path); } g_dbus_interface_skeleton_export (G_DBUS_INTERFACE_SKELETON (messages_service), bus, INDICATOR_MESSAGES_DBUS_SERVICE_OBJECT, &error); if (error) { g_warning ("unable to export messages service on dbus: %s", error->message); g_error_free (error); return; } } static void on_name_lost (GDBusConnection *bus, const gchar *name, gpointer user_data) { GMainLoop *mainloop = user_data; g_main_loop_quit (mainloop); } static gboolean sig_term_handler (gpointer user_data) { GMainLoop *mainloop = user_data; g_main_loop_quit (mainloop); return FALSE; } int main (int argc, char ** argv) { GMainLoop * mainloop = NULL; GBusNameOwnerFlags flags; /* Glib init */ #if G_ENCODE_VERSION(GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION) <= GLIB_VERSION_2_34 g_type_init(); #endif mainloop = g_main_loop_new (NULL, FALSE); /* Setting up i18n and gettext. Apparently, we need all of these. */ setlocale (LC_ALL, ""); bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); textdomain (GETTEXT_PACKAGE); /* Bring up the service DBus interface */ messages_service = indicator_messages_service_skeleton_new (); flags = G_BUS_NAME_OWNER_FLAGS_ALLOW_REPLACEMENT; if (argc >= 2 && g_str_equal (argv[1], "--replace")) flags |= G_BUS_NAME_OWNER_FLAGS_REPLACE; g_bus_own_name (G_BUS_TYPE_SESSION, "org.ayatana.indicator.messages", flags, on_bus_acquired, NULL, on_name_lost, mainloop, NULL); g_signal_connect (messages_service, "handle-register-application", G_CALLBACK (register_application), NULL); g_signal_connect (messages_service, "handle-unregister-application", G_CALLBACK (unregister_application), NULL); g_signal_connect (messages_service, "handle-set-status", G_CALLBACK (set_status), NULL); g_signal_connect (messages_service, "handle-application-stopped-running", G_CALLBACK (app_stopped), NULL); applications = im_application_list_new (); g_signal_connect (applications, "status-set", G_CALLBACK (status_set_by_user), NULL); settings = g_settings_new ("org.ayatana.indicator.messages"); { gchar **app_ids; gchar **id; app_ids = g_settings_get_strv (settings, "applications"); for (id = app_ids; *id; id++) im_application_list_add (applications, *id); g_strfreev (app_ids); } menus = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, g_object_unref); g_hash_table_insert (menus, "phone", im_phone_menu_new (applications, FALSE)); g_hash_table_insert (menus, "phone_greeter", im_phone_menu_new (applications, TRUE)); g_hash_table_insert (menus, "desktop", im_desktop_menu_new (applications)); g_hash_table_insert (menus, "desktop_greeter", im_desktop_menu_new (applications)); g_unix_signal_add(SIGTERM, sig_term_handler, mainloop); g_main_loop_run(mainloop); /* Clean up */ g_hash_table_unref (menus); g_object_unref (messages_service); g_object_unref (settings); g_object_unref (applications); return 0; } ayatana-indicator-messages-24.5.1/tests/accounts-service-mock.h0000644000000000000000000001407514764273406021431 0ustar /* * Copyright © 2014 Canonical Ltd. * Copyright © 2021 Robert Tari * * 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; version 3. * * 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, see . * * Authors: * Ted Gould * Robert Tari */ #include #include class AccountsServiceMock { DbusTestDbusMock * mock = nullptr; DbusTestDbusMockObject * soundobj = nullptr; DbusTestDbusMockObject * userobj = nullptr; DbusTestDbusMockObject * syssoundobj = nullptr; DbusTestDbusMockObject * privacyobj = nullptr; public: AccountsServiceMock () { mock = dbus_test_dbus_mock_new("org.freedesktop.Accounts"); dbus_test_task_set_bus(DBUS_TEST_TASK(mock), DBUS_TEST_SERVICE_BUS_SYSTEM); DbusTestDbusMockObject * baseobj = dbus_test_dbus_mock_get_object(mock, "/org/freedesktop/Accounts", "org.freedesktop.Accounts", NULL); dbus_test_dbus_mock_object_add_method(mock, baseobj, "CacheUser", G_VARIANT_TYPE_STRING, G_VARIANT_TYPE_OBJECT_PATH, "ret = dbus.ObjectPath('/user')\n", NULL); dbus_test_dbus_mock_object_add_method(mock, baseobj, "FindUserById", G_VARIANT_TYPE_INT64, G_VARIANT_TYPE_OBJECT_PATH, "ret = dbus.ObjectPath('/user')\n", NULL); dbus_test_dbus_mock_object_add_method(mock, baseobj, "FindUserByName", G_VARIANT_TYPE_STRING, G_VARIANT_TYPE_OBJECT_PATH, "ret = dbus.ObjectPath('/user')\n", NULL); dbus_test_dbus_mock_object_add_method(mock, baseobj, "ListCachedUsers", NULL, G_VARIANT_TYPE_OBJECT_PATH_ARRAY, "ret = [ dbus.ObjectPath('/user') ]\n", NULL); dbus_test_dbus_mock_object_add_method(mock, baseobj, "UncacheUser", G_VARIANT_TYPE_STRING, NULL, "", NULL); userobj = dbus_test_dbus_mock_get_object(mock, "/user", "org.freedesktop.Accounts.User", NULL); dbus_test_dbus_mock_object_add_property(mock, userobj, "UserName", G_VARIANT_TYPE_STRING, g_variant_new_string(g_get_user_name()), NULL); dbus_test_dbus_mock_object_add_method(mock, baseobj, "SetXHasMessages", G_VARIANT_TYPE_BOOLEAN, nullptr, "", NULL); soundobj = dbus_test_dbus_mock_get_object(mock, "/user", "org.ayatana.indicator.sound.AccountsService", NULL); dbus_test_dbus_mock_object_add_property(mock, soundobj, "Timestamp", G_VARIANT_TYPE_UINT64, g_variant_new_uint64(0), NULL); dbus_test_dbus_mock_object_add_property(mock, soundobj, "PlayerName", G_VARIANT_TYPE_STRING, g_variant_new_string(""), NULL); dbus_test_dbus_mock_object_add_property(mock, soundobj, "PlayerIcon", G_VARIANT_TYPE_VARIANT, g_variant_new_variant(g_variant_new_string("")), NULL); dbus_test_dbus_mock_object_add_property(mock, soundobj, "Running", G_VARIANT_TYPE_BOOLEAN, g_variant_new_boolean(FALSE), NULL); dbus_test_dbus_mock_object_add_property(mock, soundobj, "State", G_VARIANT_TYPE_STRING, g_variant_new_string(""), NULL); dbus_test_dbus_mock_object_add_property(mock, soundobj, "Title", G_VARIANT_TYPE_STRING, g_variant_new_string(""), NULL); dbus_test_dbus_mock_object_add_property(mock, soundobj, "Artist", G_VARIANT_TYPE_STRING, g_variant_new_string(""), NULL); dbus_test_dbus_mock_object_add_property(mock, soundobj, "Album", G_VARIANT_TYPE_STRING, g_variant_new_string(""), NULL); dbus_test_dbus_mock_object_add_property(mock, soundobj, "ArtUrl", G_VARIANT_TYPE_STRING, g_variant_new_string(""), NULL); syssoundobj = dbus_test_dbus_mock_get_object(mock, "/user", "com.lomiri.touch.AccountsService.Sound", NULL); dbus_test_dbus_mock_object_add_property(mock, syssoundobj, "SilentMode", G_VARIANT_TYPE_BOOLEAN, g_variant_new_boolean(FALSE), NULL); privacyobj = dbus_test_dbus_mock_get_object(mock, "/user", "com.lomiri.touch.AccountsService.SecurityPrivacy", NULL); dbus_test_dbus_mock_object_add_property(mock, privacyobj, "MessagesWelcomeScreen", G_VARIANT_TYPE_BOOLEAN, g_variant_new_boolean(true), NULL); dbus_test_dbus_mock_object_add_property(mock, privacyobj, "StatsWelcomeScreen", G_VARIANT_TYPE_BOOLEAN, g_variant_new_boolean(true), NULL); } ~AccountsServiceMock () { g_debug("Destroying the Accounts Service Mock"); g_clear_object(&mock); } void setSilentMode (bool modeValue) { dbus_test_dbus_mock_object_update_property(mock, syssoundobj, "SilentMode", g_variant_new_boolean(modeValue ? TRUE : FALSE), NULL); } operator std::shared_ptr () { return std::shared_ptr( DBUS_TEST_TASK(g_object_ref(mock)), [](DbusTestTask * task) { g_clear_object(&task); }); } operator DbusTestTask* () { return DBUS_TEST_TASK(mock); } operator DbusTestDbusMock* () { return mock; } DbusTestDbusMockObject * get_sound () { return soundobj; } }; ayatana-indicator-messages-24.5.1/tests/applications/test2.desktop0000644000000000000000000000010314764273406022161 0ustar [Desktop Entry] Type=Application Name=Test Exec=test Icon=test-app ayatana-indicator-messages-24.5.1/tests/applications/test.desktop0000644000000000000000000000010314764273406022077 0ustar [Desktop Entry] Type=Application Name=Test Exec=test Icon=test-app ayatana-indicator-messages-24.5.1/tests/CMakeLists.txt0000644000000000000000000000704414764273406017612 0ustar # libindicator-messages-service find_package(GMock) set( HEADERS ${CMAKE_SOURCE_DIR}/src/gactionmuxer.h ${CMAKE_SOURCE_DIR}/src/dbus-data.h ) set( SOURCES ${CMAKE_SOURCE_DIR}/src/gactionmuxer.c ) set( HEADERS_GEN ${CMAKE_BINARY_DIR}/src/indicator-messages-service.h ) set( SOURCES_GEN ${CMAKE_BINARY_DIR}/src/indicator-messages-service.c ) set_source_files_properties(${HEADERS_GEN} ${SOURCES_GEN} PROPERTIES GENERATED TRUE) add_library("indicator-messages-service" STATIC ${HEADERS} ${HEADERS_GEN} ${SOURCES} ${SOURCES_GEN}) target_include_directories("indicator-messages-service" PUBLIC ${PROJECT_DEPS_INCLUDE_DIRS}) target_compile_definitions("indicator-messages-service" PUBLIC G_LOG_DOMAIN="Ayatana-Indicator-Messages") add_dependencies("indicator-messages-service" "ayatana-indicator-messages-service") # test-gactionmuxer add_executable("test-gactionmuxer" test-gactionmuxer.cpp) target_include_directories("test-gactionmuxer" PUBLIC ${PROJECT_DEPS_INCLUDE_DIRS} "${CMAKE_SOURCE_DIR}/src") target_link_libraries("test-gactionmuxer" "indicator-messages-service" ${PROJECT_DEPS_LIBRARIES} ${GTEST_LIBRARIES} ${GTEST_BOTH_LIBRARIES} ${GMOCK_LIBRARIES}) add_test("test-gactionmuxer" "test-gactionmuxer") add_dependencies("test-gactionmuxer" "indicator-messages-service") set(COVERAGE_TEST_TARGETS ${COVERAGE_TEST_TARGETS} "test-gactionmuxer" PARENT_SCOPE) if (ENABLE_COVERAGE) if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") target_link_libraries("test-gactionmuxer" "--coverage") else() target_link_libraries("test-gactionmuxer" "-lgcov") endif() endif() # gschemas.compiled set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES gschemas.compiled) set_source_files_properties(gschemas.compiled GENERATED) execute_process(COMMAND ${PKG_CONFIG_EXECUTABLE} gio-2.0 --variable glib_compile_schemas OUTPUT_VARIABLE COMPILE_SCHEMA_EXECUTABLE OUTPUT_STRIP_TRAILING_WHITESPACE) add_custom_command(OUTPUT gschemas.compiled COMMAND cp -f ${CMAKE_SOURCE_DIR}/data/org.ayatana.indicator.messages.gschema.xml ${CMAKE_CURRENT_BINARY_DIR} COMMAND ${COMPILE_SCHEMA_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}) add_custom_target("gschemas-compiled" ALL DEPENDS gschemas.compiled) # indicator-test pkg_check_modules(DBUSTEST REQUIRED dbustest-1) add_executable("indicator-test" indicator-test.cpp) target_include_directories("indicator-test" PUBLIC ${PROJECT_DEPS_INCLUDE_DIRS} ${DBUSTEST_INCLUDE_DIRS} "${CMAKE_SOURCE_DIR}/libmessaging-menu") target_link_libraries("indicator-test" "messaging-menu" ${PROJECT_DEPS_LIBRARIES} ${DBUSTEST_LIBRARIES} ${GTEST_LIBRARIES} ${GTEST_BOTH_LIBRARIES} ${GMOCK_LIBRARIES}) target_compile_definitions( "indicator-test" PUBLIC INDICATOR_MESSAGES_SERVICE_BINARY="${CMAKE_BINARY_DIR}/src/ayatana-indicator-messages-service" SCHEMA_DIR="${CMAKE_CURRENT_BINARY_DIR}" XDG_DATA_DIRS="${CMAKE_CURRENT_SOURCE_DIR}" ) add_test("indicator-test" "indicator-test") add_dependencies("indicator-test" "messaging-menu" "gschemas-compiled") set(COVERAGE_TEST_TARGETS ${COVERAGE_TEST_TARGETS} "indicator-test" PARENT_SCOPE) # test-client.sh set_source_files_properties("${CMAKE_CURRENT_BINARY_DIR}/test-client.sh" GENERATED) file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/test-client.sh" "export LD_LIBRARY_PATH=\"${CMAKE_BINARY_DIR}/libmessaging-menu\"; export GI_TYPELIB_PATH=\"${CMAKE_BINARY_DIR}/libmessaging-menu\"; export XDG_DATA_DIRS=\"${CMAKE_CURRENT_SOURCE_DIR}\"; python3 \"${CMAKE_CURRENT_SOURCE_DIR}/test-client.py\"") add_test(NAME "test-client" COMMAND sh "${CMAKE_CURRENT_BINARY_DIR}/test-client.sh") ayatana-indicator-messages-24.5.1/tests/indicator-fixture.h0000644000000000000000000005702114764273406020663 0ustar /* * Copyright © 2014 Canonical Ltd. * * 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; version 3. * * 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, see . * * Authors: * Ted Gould */ #include #include #include #include #include #include #include #include class IndicatorFixture : public ::testing::Test { private: std::string _indicatorPath; std::string _indicatorAddress; std::vector> _mocks; protected: std::chrono::milliseconds _eventuallyTime; private: class PerRunData { public: /* We're private in the fixture but other than that we don't care, we don't leak out. This object's purpose isn't to hide data it is to make the lifecycle of the items more clear. */ std::shared_ptr _menu; std::shared_ptr _actions; DbusTestService * _session_service; DbusTestService * _system_service; DbusTestTask * _test_indicator; DbusTestTask * _test_dummy; GDBusConnection * _session; GDBusConnection * _system; PerRunData (const std::string& indicatorPath, const std::string& indicatorAddress, std::vector>& mocks) : _menu(nullptr) , _session(nullptr) { _session_service = dbus_test_service_new(nullptr); dbus_test_service_set_bus(_session_service, DBUS_TEST_SERVICE_BUS_SESSION); _system_service = dbus_test_service_new(nullptr); dbus_test_service_set_bus(_system_service, DBUS_TEST_SERVICE_BUS_SYSTEM); _test_indicator = DBUS_TEST_TASK(dbus_test_process_new(indicatorPath.c_str())); dbus_test_task_set_name(_test_indicator, "Indicator"); dbus_test_service_add_task(_session_service, _test_indicator); _test_dummy = dbus_test_task_new(); dbus_test_task_set_wait_for(_test_dummy, indicatorAddress.c_str()); dbus_test_task_set_name(_test_dummy, "Dummy"); dbus_test_service_add_task(_session_service, _test_dummy); for(auto task : mocks) { if (dbus_test_task_get_bus(task.get()) == DBUS_TEST_SERVICE_BUS_SYSTEM) { dbus_test_service_add_task(_system_service, task.get()); } else { dbus_test_service_add_task(_session_service, task.get()); } } g_debug("Starting System Bus"); dbus_test_service_start_tasks(_system_service); _system = g_bus_get_sync(G_BUS_TYPE_SYSTEM, nullptr, nullptr); g_dbus_connection_set_exit_on_close(_system, FALSE); g_debug("Starting Session Bus"); dbus_test_service_start_tasks(_session_service); _session = g_bus_get_sync(G_BUS_TYPE_SESSION, nullptr, nullptr); g_dbus_connection_set_exit_on_close(_session, FALSE); } virtual ~PerRunData (void) { _menu.reset(); _actions.reset(); /* D-Bus Test Stuff */ g_clear_object(&_test_dummy); g_clear_object(&_test_indicator); g_clear_object(&_session_service); g_clear_object(&_system_service); /* Wait for D-Bus session bus to go */ if (!g_dbus_connection_is_closed(_session)) { g_dbus_connection_close_sync(_session, nullptr, nullptr); } g_clear_object(&_session); if (!g_dbus_connection_is_closed(_system)) { g_dbus_connection_close_sync(_system, nullptr, nullptr); } g_clear_object(&_system); } }; std::shared_ptr run; public: virtual ~IndicatorFixture() = default; IndicatorFixture (const std::string& path, const std::string& addr) : _indicatorPath(path) , _indicatorAddress(addr) , _eventuallyTime(std::chrono::seconds(5)) { }; protected: virtual void SetUp() override { run = std::make_shared(_indicatorPath, _indicatorAddress, _mocks); _mocks.clear(); } virtual void TearDown() override { run.reset(); } void addMock (std::shared_ptr mock) { _mocks.push_back(mock); } std::shared_ptr buildBustleMock (const std::string& filename, DbusTestServiceBus bus = DBUS_TEST_SERVICE_BUS_BOTH) { return std::shared_ptr([filename, bus]() { DbusTestTask * bustle = DBUS_TEST_TASK(dbus_test_bustle_new(filename.c_str())); dbus_test_task_set_name(bustle, "Bustle"); dbus_test_task_set_bus(bustle, bus); return bustle; }(), [](DbusTestTask * bustle) { g_clear_object(&bustle); }); } private: void waitForCore (GObject * obj, const gchar * signalname) { auto loop = g_main_loop_new(nullptr, FALSE); /* Our two exit criteria */ gulong signal = g_signal_connect_swapped(obj, signalname, G_CALLBACK(g_main_loop_quit), loop); guint timer = g_timeout_add_seconds(5, [](gpointer user_data) -> gboolean { g_warning("Menu Timeout"); g_main_loop_quit((GMainLoop *)user_data); return G_SOURCE_CONTINUE; }, loop); /* Wait for sync */ g_main_loop_run(loop); /* Clean up */ g_source_remove(timer); g_signal_handler_disconnect(obj, signal); g_main_loop_unref(loop); } void menuWaitForItems (const std::shared_ptr& menu) { auto count = g_menu_model_get_n_items(menu.get()); if (count != 0) return; waitForCore(G_OBJECT(menu.get()), "items-changed"); } void agWaitForActions (const std::shared_ptr& group) { auto list = std::shared_ptr( g_action_group_list_actions(group.get()), [](gchar ** list) { g_strfreev(list); }); if (g_strv_length(list.get()) != 0) { return; } waitForCore(G_OBJECT(group.get()), "action-added"); } testing::AssertionResult expectEventually (std::function &testfunc) { auto loop = std::shared_ptr(g_main_loop_new(nullptr, FALSE), [](GMainLoop * loop) { if (loop != nullptr) g_main_loop_unref(loop); }); std::promise retpromise; auto retfuture = retpromise.get_future(); auto start = std::chrono::steady_clock::now(); /* The core of the idle function as an object so we can use the C++-isms of attaching the variables and make this code reasonably readable */ std::function idlefunc = [&loop, &retpromise, &testfunc, &start, this]() -> void { auto result = testfunc(); if (result == false && _eventuallyTime > (std::chrono::steady_clock::now() - start)) { return; } retpromise.set_value(result); g_main_loop_quit(loop.get()); }; auto idlesrc = g_idle_add([](gpointer data) -> gboolean { auto func = reinterpret_cast *>(data); (*func)(); return G_SOURCE_CONTINUE; }, &idlefunc); g_main_loop_run(loop.get()); g_source_remove(idlesrc); return retfuture.get(); } protected: void setMenu (const std::string& path) { run->_menu.reset(); g_debug("Getting Menu: %s:%s", _indicatorAddress.c_str(), path.c_str()); run->_menu = std::shared_ptr(G_MENU_MODEL(g_dbus_menu_model_get(run->_session, _indicatorAddress.c_str(), path.c_str())), [](GMenuModel * modelptr) { g_clear_object(&modelptr); }); menuWaitForItems(run->_menu); } void setActions (const std::string& path) { run->_actions.reset(); run->_actions = std::shared_ptr(G_ACTION_GROUP(g_dbus_action_group_get(run->_session, _indicatorAddress.c_str(), path.c_str())), [](GActionGroup * groupptr) { g_clear_object(&groupptr); }); agWaitForActions(run->_actions); } void activateAction (const std::string &name, std::shared_ptr ¶meter) { g_action_group_activate_action(run->_actions.get(), name.c_str(), parameter.get()); } void activateAction (const std::string &name, GVariant * parameter = nullptr) { std::shared_ptr param; if (parameter != nullptr) param = std::shared_ptr(g_variant_ref_sink(parameter), [](GVariant * var) { g_variant_unref(var); }); return activateAction(name, param); } testing::AssertionResult expectActionExists (const gchar * nameStr, const std::string& name) { bool hasit = g_action_group_has_action(run->_actions.get(), name.c_str()); if (!hasit) { auto result = testing::AssertionFailure(); result << " Action: " << nameStr << std::endl << " Expected: " << "Exists" << std::endl << " Actual: " << "No action found" << std::endl; return result; } auto result = testing::AssertionSuccess(); return result; } template testing::AssertionResult expectEventuallyActionExists (Args&& ... args) { std::function func = [&]() { return expectActionExists(std::forward(args)...); }; return expectEventually(func); } testing::AssertionResult expectActionDoesNotExist (const gchar * nameStr, const std::string& name) { bool hasit = g_action_group_has_action(run->_actions.get(), name.c_str()); if (hasit) { auto result = testing::AssertionFailure(); result << " Action: " << nameStr << std::endl << " Expected: " << "No action found" << std::endl << " Actual: " << "Exists" << std::endl; return result; } auto result = testing::AssertionSuccess(); return result; } template testing::AssertionResult expectEventuallyActionDoesNotExist (Args&& ... args) { std::function func = [&]() { return expectActionDoesNotExist(std::forward(args)...); }; return expectEventually(func); } testing::AssertionResult expectActionEnabled (const char * nameStr, const char * typeStr, const std::string& name, bool enabled) { auto aenabled = g_action_group_get_action_enabled(run->_actions.get(), name.c_str()); if (enabled != aenabled) { auto result = testing::AssertionFailure(); result << " Action: " << nameStr << std::endl << " Expected: " << enabled << std::endl << " Actual: " << aenabled << std::endl; return result; } auto result = testing::AssertionSuccess(); return result; } template testing::AssertionResult expectEventuallyActionEnabled (Args&& ... args) { std::function func = [&]() { return expectActionEnabled(std::forward(args)...); }; return expectEventually(func); } testing::AssertionResult expectActionStateType (const char * nameStr, const char * typeStr, const std::string& name, const GVariantType * type) { auto atype = g_action_group_get_action_state_type(run->_actions.get(), name.c_str()); bool same = false; if (atype != nullptr) { same = g_variant_type_equal(atype, type); } if (!same) { auto result = testing::AssertionFailure(); result << " Action: " << nameStr << std::endl << " Expected: " << typeStr << std::endl << " Actual: " << (atype == nullptr ? "(null)" : g_variant_type_peek_string(atype)) << std::endl; return result; } auto result = testing::AssertionSuccess(); return result; } template testing::AssertionResult expectEventuallyActionStateType (Args&& ... args) { std::function func = [&]() { return expectActionStateType(std::forward(args)...); }; return expectEventually(func); } testing::AssertionResult expectActionActivationType (const char * nameStr, const char * typeStr, const std::string& name, const GVariantType * type) { auto atype = g_action_group_get_action_parameter_type(run->_actions.get(), name.c_str()); bool same = false; if (atype != nullptr) { same = g_variant_type_equal(atype, type); } if (!same) { auto result = testing::AssertionFailure(); result << " Action: " << nameStr << std::endl << " Expected: " << typeStr << std::endl << " Actual: " << (atype == nullptr ? "(null)" : g_variant_type_peek_string(atype)) << std::endl; return result; } auto result = testing::AssertionSuccess(); return result; } template testing::AssertionResult expectEventuallyActionActivationType (Args&& ... args) { std::function func = [&]() { return expectActionActivationType(std::forward(args)...); }; return expectEventually(func); } testing::AssertionResult expectActionStateIs (const char * nameStr, const char * valueStr, const std::string& name, std::shared_ptr varref) { auto aval = std::shared_ptr(g_action_group_get_action_state(run->_actions.get(), name.c_str()), [] (GVariant * varptr) { if (varptr != nullptr) g_variant_unref(varptr); }); bool match = false; if (aval != nullptr) { match = g_variant_equal(aval.get(), varref.get()); } if (!match) { gchar * attstr = nullptr; if (aval != nullptr) { attstr = g_variant_print(aval.get(), TRUE); } else { attstr = g_strdup("nullptr"); } auto result = testing::AssertionFailure(); result << " Action: " << nameStr << std::endl << " Expected: " << valueStr << std::endl << " Actual: " << attstr << std::endl; g_free(attstr); return result; } else { auto result = testing::AssertionSuccess(); return result; } } testing::AssertionResult expectActionStateIs (const char * nameStr, const char * valueStr, const std::string& name, GVariant * value) { auto varref = std::shared_ptr(g_variant_ref_sink(value), [](GVariant * varptr) { if (varptr != nullptr) g_variant_unref(varptr); }); return expectActionStateIs(nameStr, valueStr, name, varref); } testing::AssertionResult expectActionStateIs (const char * nameStr, const char * valueStr, const std::string& name, bool value) { GVariant * var = g_variant_new_boolean(value); return expectActionStateIs(nameStr, valueStr, name, var); } testing::AssertionResult expectActionStateIs (const char * nameStr, const char * valueStr, const std::string& name, std::string value) { GVariant * var = g_variant_new_string(value.c_str()); return expectActionStateIs(nameStr, valueStr, name, var); } testing::AssertionResult expectActionStateIs (const char * nameStr, const char * valueStr, const std::string& name, const char * value) { GVariant * var = g_variant_new_string(value); return expectActionStateIs(nameStr, valueStr, name, var); } testing::AssertionResult expectActionStateIs (const char * nameStr, const char * valueStr, const std::string& name, double value) { GVariant * var = g_variant_new_double(value); return expectActionStateIs(nameStr, valueStr, name, var); } testing::AssertionResult expectActionStateIs (const char * nameStr, const char * valueStr, const std::string& name, float value) { GVariant * var = g_variant_new_double(value); return expectActionStateIs(nameStr, valueStr, name, var); } template testing::AssertionResult expectEventuallyActionStateIs (Args&& ... args) { std::function func = [&]() { return expectActionStateIs(std::forward(args)...); }; return expectEventually(func); } private: std::shared_ptr getMenuAttributeVal (int location, std::shared_ptr& menu, const std::string& attribute, std::shared_ptr& value) { if (!(location < g_menu_model_get_n_items(menu.get()))) { return nullptr; } if (location >= g_menu_model_get_n_items(menu.get())) return nullptr; auto menuval = std::shared_ptr(g_menu_model_get_item_attribute_value(menu.get(), location, attribute.c_str(), g_variant_get_type(value.get())), [](GVariant * varptr) { if (varptr != nullptr) g_variant_unref(varptr); }); return menuval; } std::shared_ptr getMenuAttributeRecurse (std::vector::const_iterator menuLocation, std::vector::const_iterator menuEnd, const std::string& attribute, std::shared_ptr& value, std::shared_ptr& menu) { if (menuLocation == menuEnd) return nullptr; if (menuLocation + 1 == menuEnd) return getMenuAttributeVal(*menuLocation, menu, attribute, value); auto clearfunc = [](GMenuModel * modelptr) { g_clear_object(&modelptr); }; auto submenu = std::shared_ptr(g_menu_model_get_item_link(menu.get(), *menuLocation, G_MENU_LINK_SUBMENU), clearfunc); if (submenu == nullptr) submenu = std::shared_ptr(g_menu_model_get_item_link(menu.get(), *menuLocation, G_MENU_LINK_SECTION), clearfunc); if (submenu == nullptr) return nullptr; menuWaitForItems(submenu); return getMenuAttributeRecurse(menuLocation + 1, menuEnd, attribute, value, submenu); } protected: testing::AssertionResult expectMenuAttribute (const char * menuLocationStr, const char * attributeStr, const char * valueStr, const std::vector menuLocation, const std::string& attribute, GVariant * value) { auto varref = std::shared_ptr(g_variant_ref_sink(value), [](GVariant * varptr) { if (varptr != nullptr) g_variant_unref(varptr); }); auto attrib = getMenuAttributeRecurse(menuLocation.cbegin(), menuLocation.cend(), attribute, varref, run->_menu); bool same = false; if (attrib != nullptr && varref != nullptr) { same = g_variant_equal(attrib.get(), varref.get()); } if (!same) { gchar * attstr = nullptr; if (attrib != nullptr) { attstr = g_variant_print(attrib.get(), TRUE); } else { attstr = g_strdup("nullptr"); } auto result = testing::AssertionFailure(); result << " Menu: " << menuLocationStr << std::endl << " Attribute: " << attributeStr << std::endl << " Expected: " << valueStr << std::endl << " Actual: " << attstr << std::endl; g_free(attstr); return result; } else { auto result = testing::AssertionSuccess(); return result; } } testing::AssertionResult expectMenuAttribute (const char * menuLocationStr, const char * attributeStr, const char * valueStr, const std::vector menuLocation, const std::string& attribute, bool value) { GVariant * var = g_variant_new_boolean(value); return expectMenuAttribute(menuLocationStr, attributeStr, valueStr, menuLocation, attribute, var); } testing::AssertionResult expectMenuAttribute (const char * menuLocationStr, const char * attributeStr, const char * valueStr, const std::vector menuLocation, const std::string& attribute, std::string value) { GVariant * var = g_variant_new_string(value.c_str()); return expectMenuAttribute(menuLocationStr, attributeStr, valueStr, menuLocation, attribute, var); } testing::AssertionResult expectMenuAttribute (const char * menuLocationStr, const char * attributeStr, const char * valueStr, const std::vector menuLocation, const std::string& attribute, const char * value) { GVariant * var = g_variant_new_string(value); return expectMenuAttribute(menuLocationStr, attributeStr, valueStr, menuLocation, attribute, var); } template testing::AssertionResult expectEventuallyMenuAttribute (Args&& ... args) { std::function func = [&]() { return expectMenuAttribute(std::forward(args)...); }; return expectEventually(func); } /* Eventually Helpers */ #define _EVENTUALLY_HELPER(oper) \ template testing::AssertionResult expectEventually##oper (Args&& ... args) { \ std::function func = [&]() { \ return testing::internal::CmpHelper##oper(std::forward(args)...); \ }; \ return expectEventually(func); \ } _EVENTUALLY_HELPER(EQ); _EVENTUALLY_HELPER(NE); _EVENTUALLY_HELPER(LT); _EVENTUALLY_HELPER(GT); _EVENTUALLY_HELPER(STREQ); _EVENTUALLY_HELPER(STRNE); #undef _EVENTUALLY_HELPER }; /* Menu Attrib */ #define ASSERT_MENU_ATTRIB(menu, attrib, value) \ ASSERT_PRED_FORMAT3(IndicatorFixture::expectMenuAttribute, menu, attrib, value) #define EXPECT_MENU_ATTRIB(menu, attrib, value) \ EXPECT_PRED_FORMAT3(IndicatorFixture::expectMenuAttribute, menu, attrib, value) #define EXPECT_EVENTUALLY_MENU_ATTRIB(menu, attrib, value) \ EXPECT_PRED_FORMAT3(IndicatorFixture::expectEventuallyMenuAttribute, menu, attrib, value) /* Action Exists */ #define ASSERT_ACTION_EXISTS(action) \ ASSERT_PRED_FORMAT1(IndicatorFixture::expectActionExists, action) #define EXPECT_ACTION_EXISTS(action) \ EXPECT_PRED_FORMAT1(IndicatorFixture::expectActionExists, action) #define EXPECT_EVENTUALLY_ACTION_EXISTS(action) \ EXPECT_PRED_FORMAT1(IndicatorFixture::expectEventuallyActionExists, action) /* Action Does Not Exist */ #define ASSERT_ACTION_DOES_NOT_EXIST(action) \ ASSERT_PRED_FORMAT1(IndicatorFixture::expectActionDoesNotExist, action) #define EXPECT_ACTION_DOES_NOT_EXIST(action) \ EXPECT_PRED_FORMAT1(IndicatorFixture::expectActionDoesNotExist, action) #define EXPECT_EVENTUALLY_ACTION_DOES_NOT_EXIST(action) \ EXPECT_PRED_FORMAT1(IndicatorFixture::expectEventuallyActionDoesNotExist, action) /* Action Enabled */ #define ASSERT_ACTION_ENABLED(action, state) \ ASSERT_PRED_FORMAT2(IndicatorFixture::expectActionEnabled, action, state) #define EXPECT_ACTION_ENABLED(action, state) \ EXPECT_PRED_FORMAT2(IndicatorFixture::expectActionEnabled, action, state) #define EXPECT_EVENTUALLY_ACTION_ENABLED(action, state) \ EXPECT_PRED_FORMAT2(IndicatorFixture::expectEventuallyActionEnabled, action, state) /* Action State */ #define ASSERT_ACTION_STATE(action, value) \ ASSERT_PRED_FORMAT2(IndicatorFixture::expectActionStateIs, action, value) #define EXPECT_ACTION_STATE(action, value) \ EXPECT_PRED_FORMAT2(IndicatorFixture::expectActionStateIs, action, value) #define EXPECT_EVENTUALLY_ACTION_STATE(action, value) \ EXPECT_PRED_FORMAT2(IndicatorFixture::expectEventuallyActionStateIs, action, value) /* Action State Type */ #define ASSERT_ACTION_STATE_TYPE(action, type) \ ASSERT_PRED_FORMAT2(IndicatorFixture::expectActionStateType, action, type) #define EXPECT_ACTION_STATE_TYPE(action, type) \ EXPECT_PRED_FORMAT2(IndicatorFixture::expectActionStateType, action, type) #define EXPECT_EVENTUALLY_ACTION_STATE_TYPE(action, type) \ EXPECT_PRED_FORMAT2(IndicatorFixture::expectEventuallyActionStateType, action, type) /* Action Activation Type */ #define ASSERT_ACTION_ACTIVATION_TYPE(action, type) \ ASSERT_PRED_FORMAT2(IndicatorFixture::expectActionActivationType, action, type) #define EXPECT_ACTION_ACTIVATION_TYPE(action, type) \ EXPECT_PRED_FORMAT2(IndicatorFixture::expectActionActivationType, action, type) #define EXPECT_EVENTUALLY_ACTION_ACTIVATION_TYPE(action, type) \ EXPECT_PRED_FORMAT2(IndicatorFixture::expectEventuallyActionActivationType, action, type) /* Helpers */ #define EXPECT_EVENTUALLY_EQ(expected, actual) \ EXPECT_PRED_FORMAT2(IndicatorFixture::expectEventuallyEQ, expected, actual) #define EXPECT_EVENTUALLY_NE(expected, actual) \ EXPECT_PRED_FORMAT2(IndicatorFixture::expectEventuallyNE, expected, actual) #define EXPECT_EVENTUALLY_LT(expected, actual) \ EXPECT_PRED_FORMAT2(IndicatorFixture::expectEventuallyLT, expected, actual) #define EXPECT_EVENTUALLY_GT(expected, actual) \ EXPECT_PRED_FORMAT2(IndicatorFixture::expectEventuallyGT, expected, actual) #define EXPECT_EVENTUALLY_STREQ(expected, actual) \ EXPECT_PRED_FORMAT2(IndicatorFixture::expectEventuallySTREQ, expected, actual) #define EXPECT_EVENTUALLY_STRNE(expected, actual) \ EXPECT_PRED_FORMAT2(IndicatorFixture::expectEventuallySTRNE, expected, actual) ayatana-indicator-messages-24.5.1/tests/indicator-messages-service-activate.build.sh0000644000000000000000000000021414764273406025511 0ustar #!/bin/sh gcc -o indicator-messages-service-activate indicator-messages-service-activate.c `pkg-config --cflags --libs dbus-1 dbus-glib-1` ayatana-indicator-messages-24.5.1/tests/indicator-messages-service-activate.c0000644000000000000000000000336414764273406024234 0ustar /* An indicator to show information that is in messaging applications that the user is using. Copyright 2009 Canonical Ltd. Authors: Ted Gould This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranties of MERCHANTABILITY, SATISFACTORY QUALITY, 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, see . */ #include #include #include #include "../src/dbus-data.h" int main (int argc, char ** argv) { #if G_ENCODE_VERSION(GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION) <= GLIB_VERSION_2_34 g_type_init(); #endif guint returnval = 0; GError * error = NULL; DBusGConnection * connection = dbus_g_bus_get(DBUS_BUS_SESSION, NULL); DBusGProxy * proxy = dbus_g_proxy_new_for_name(connection, DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS); g_debug("Activating service: %s", INDICATOR_MESSAGES_DBUS_NAME); if (!org_freedesktop_DBus_start_service_by_name (proxy, INDICATOR_MESSAGES_DBUS_NAME, 0, &returnval, &error)) { g_error("Unable to send message to DBus to start service: %s", error != NULL ? error->message : "(NULL error)" ); g_error_free(error); return 1; } if (returnval != DBUS_START_REPLY_SUCCESS && returnval != DBUS_START_REPLY_ALREADY_RUNNING) { g_error("Return value isn't indicative of success: %d", returnval); return 1; } return 0; } ayatana-indicator-messages-24.5.1/tests/indicator-test.cpp0000644000000000000000000002073714764273406020513 0ustar /* * Copyright © 2015 Canonical Ltd. * Copyright © 2021-2022 Robert Tari * * 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; version 3. * * 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, see . * * Authors: * Ted Gould * Robert Tari */ #include #include #include "indicator-fixture.h" #include "accounts-service-mock.h" #include "messaging-menu-app.h" #include "messaging-menu-message.h" class IndicatorTest : public IndicatorFixture { protected: IndicatorTest (void) : IndicatorFixture(INDICATOR_MESSAGES_SERVICE_BINARY, "org.ayatana.indicator.messages") { } std::shared_ptr as; virtual void SetUp() override { g_setenv("GSETTINGS_SCHEMA_DIR", SCHEMA_DIR, TRUE); g_setenv("GSETTINGS_BACKEND", "memory", TRUE); g_setenv("XDG_DATA_DIRS", XDG_DATA_DIRS, TRUE); as = std::make_shared(); addMock(*as); IndicatorFixture::SetUp(); } virtual void TearDown() override { as.reset(); IndicatorFixture::TearDown(); } }; TEST_F(IndicatorTest, RootAction) { setActions("/org/ayatana/indicator/messages"); EXPECT_EVENTUALLY_ACTION_EXISTS("messages"); EXPECT_ACTION_STATE_TYPE("messages", G_VARIANT_TYPE("a{sv}")); EXPECT_ACTION_STATE("messages", g_variant_new_parsed("{'icon': <('themed', <['indicator-messages-offline', 'indicator-messages', 'indicator', 'indicator-messages-offline-symbolic', 'indicator-messages-symbolic', 'indicator-symbolic']>)>, 'title': <'Notifications'>, 'tooltip': <'Quick access to newly received messages'>, 'accessible-desc': <'Messages'>, 'visible': }")); } TEST_F(IndicatorTest, SingleMessage) { setActions("/org/ayatana/indicator/messages"); auto app = std::shared_ptr(messaging_menu_app_new("test.desktop"), [](MessagingMenuApp * app) { g_clear_object(&app); }); ASSERT_NE(nullptr, app); messaging_menu_app_register(app.get()); EXPECT_EVENTUALLY_ACTION_EXISTS("test.launch"); auto msg = std::shared_ptr(messaging_menu_message_new( "testid", nullptr, /* no icon */ "Test Title", "A subtitle too", "You only like me for my body", 0), [](MessagingMenuMessage * msg) { g_clear_object(&msg); }); messaging_menu_app_append_message(app.get(), msg.get(), nullptr, FALSE); EXPECT_EVENTUALLY_ACTION_EXISTS("test.msg.testid"); setMenu("/org/ayatana/indicator/messages/phone"); EXPECT_EVENTUALLY_MENU_ATTRIB(std::vector({0, 0, 0}), "x-ayatana-type", "org.ayatana.indicator.messages.messageitem"); EXPECT_MENU_ATTRIB(std::vector({0, 0, 0}), "label", "Test Title"); EXPECT_MENU_ATTRIB(std::vector({0, 0, 0}), "x-ayatana-message-id", "testid"); EXPECT_MENU_ATTRIB(std::vector({0, 0, 0}), "x-ayatana-subtitle", "A subtitle too"); EXPECT_MENU_ATTRIB(std::vector({0, 0, 0}), "x-ayatana-text", "You only like me for my body"); } static void messageReplyActivate (GObject * obj, gchar * name, GVariant * value, gpointer user_data) { auto res = reinterpret_cast(user_data); *res = g_variant_get_string(value, nullptr); } TEST_F(IndicatorTest, MessageReply) { setActions("/org/ayatana/indicator/messages"); auto app = std::shared_ptr(messaging_menu_app_new("test.desktop"), [](MessagingMenuApp * app) { g_clear_object(&app); }); ASSERT_NE(nullptr, app); messaging_menu_app_register(app.get()); EXPECT_EVENTUALLY_ACTION_EXISTS("test.launch"); auto msg = std::shared_ptr(messaging_menu_message_new( "messageid", nullptr, /* no icon */ "Reply Message", "A message to reply to", "In-app replies are for wimps, reply here to save yourself time and be cool.", 0), [](MessagingMenuMessage * msg) { g_clear_object(&msg); }); messaging_menu_message_add_action(msg.get(), "replyid", "Reply", G_VARIANT_TYPE_STRING, nullptr); messaging_menu_app_append_message(app.get(), msg.get(), nullptr, FALSE); EXPECT_EVENTUALLY_ACTION_EXISTS("test.msg.messageid"); EXPECT_EVENTUALLY_ACTION_EXISTS("test.msg-actions.messageid.replyid"); EXPECT_ACTION_ACTIVATION_TYPE("test.msg-actions.messageid.replyid", G_VARIANT_TYPE_STRING); EXPECT_ACTION_ENABLED("remove-all", true); setMenu("/org/ayatana/indicator/messages/phone"); EXPECT_EVENTUALLY_MENU_ATTRIB(std::vector({0, 0, 0}), "x-ayatana-type", "org.ayatana.indicator.messages.messageitem"); std::string activateResponse; g_signal_connect(msg.get(), "activate", G_CALLBACK(messageReplyActivate), &activateResponse); activateAction("test.msg-actions.messageid.replyid", g_variant_new_string("Reply to me")); EXPECT_EVENTUALLY_EQ("Reply to me", activateResponse); EXPECT_EVENTUALLY_ACTION_ENABLED("remove-all", false); } TEST_F(IndicatorTest, IconNotification) { auto normalicon = std::shared_ptr(g_variant_ref_sink(g_variant_new_parsed("{'icon': <('themed', <['indicator-messages-offline', 'indicator-messages', 'indicator', 'indicator-messages-offline-symbolic', 'indicator-messages-symbolic', 'indicator-symbolic']>)>, 'title': <'Notifications'>, 'tooltip': <'Quick access to newly received messages'>, 'accessible-desc': <'Messages'>, 'visible': }")), [](GVariant *var) {if (var != nullptr) g_variant_unref(var); }); auto blueicon = std::shared_ptr(g_variant_ref_sink(g_variant_new_parsed("{'icon': <('themed', <['indicator-messages-new-offline', 'indicator-messages-new', 'indicator-messages', 'indicator', 'indicator-messages-new-offline-symbolic', 'indicator-messages-new-symbolic', 'indicator-messages-symbolic', 'indicator-symbolic']>)>, 'title': <'Notifications'>, 'tooltip': <'Quick access to newly received messages'>, 'accessible-desc': <'New Messages'>, 'visible': }")), [](GVariant *var) {if (var != nullptr) g_variant_unref(var); }); setActions("/org/ayatana/indicator/messages"); auto app = std::shared_ptr(messaging_menu_app_new("test.desktop"), [](MessagingMenuApp * app) { g_clear_object(&app); }); ASSERT_NE(nullptr, app); messaging_menu_app_register(app.get()); EXPECT_EVENTUALLY_ACTION_EXISTS("test.launch"); EXPECT_ACTION_STATE("messages", normalicon); auto app2 = std::shared_ptr(messaging_menu_app_new("test2.desktop"), [](MessagingMenuApp * app) { g_clear_object(&app); }); ASSERT_NE(nullptr, app2); messaging_menu_app_register(app2.get()); EXPECT_EVENTUALLY_ACTION_EXISTS("test2.launch"); messaging_menu_app_append_source_with_count(app2.get(), "countsource", nullptr, "Count Source", 500); messaging_menu_app_draw_attention(app2.get(), "countsource"); EXPECT_EVENTUALLY_ACTION_STATE("messages", blueicon); auto msg = std::shared_ptr(messaging_menu_message_new( "messageid", nullptr, /* no icon */ "Message", "A secret message", "asdfa;lkweraoweprijas;dvlknasvdoiewur;aslkd", 0), [](MessagingMenuMessage * msg) { g_clear_object(&msg); }); messaging_menu_message_set_draws_attention(msg.get(), true); messaging_menu_app_append_message(app.get(), msg.get(), nullptr, FALSE); EXPECT_EVENTUALLY_ACTION_EXISTS("test.msg.messageid"); EXPECT_ACTION_STATE("messages", blueicon); messaging_menu_app_unregister(app2.get()); app2.reset(); EXPECT_EVENTUALLY_ACTION_DOES_NOT_EXIST("test2.msg.countsource"); EXPECT_ACTION_STATE("messages", blueicon); messaging_menu_app_remove_message(app.get(), msg.get()); EXPECT_EVENTUALLY_ACTION_STATE("messages", normalicon); EXPECT_ACTION_ENABLED("remove-all", false); messaging_menu_app_append_message(app.get(), msg.get(), nullptr, FALSE); EXPECT_EVENTUALLY_ACTION_STATE("messages", blueicon); EXPECT_ACTION_ENABLED("remove-all", true); activateAction("remove-all"); EXPECT_EVENTUALLY_ACTION_STATE("messages", normalicon); } ayatana-indicator-messages-24.5.1/tests/manual0000644000000000000000000001010314764273406016240 0ustar Test-case indicator-messages/unity7-items-check
Log in to a Unity 7 user session
Go to the panel and click on the Messages indicator
Ensure there are items in the menu
Test-case indicator-messages/unity7-greeter-items-check
Start a system and wait for the greeter or logout of the current user session
Go to the panel and click on the Messages indicator
Ensure there are items in the menu
Test-case indicator-messages/unity8-items-check
Login to a user session running Unity 8
Pull down the top panel until it sticks open
Navigate through the tabs until "Notifications" is shown
Incoming is at the top of the menu
The menu is populated with items
Test-case indicator-messages/unity8-phone-symbolic-icon
NOTE: Requires Unity8 and Telephony hardware
Login to a user session running Unity 8
Send an SMS to the device
Icon on the panel should change color signifying a new message
Verify the application icon in the menu item is monochromatic
On the right side of the item the application icon should have no color
Test-case indicator-messages/unity8-embedded-greeter
NOTE: Only works with embedded greeter, split greeter will require modifications to this test
NOTE: Only works on a device that can receive SMS messages
Ensure System Settings is set to "Show Messages on Greeter"
Send an SMS to the device
The notification icon should change color
There should be an entry in the messaging menu with the SMS message
The item should include the sender and the start of the message
Go to the greeter. This can be done by hitting the lock button twice.
Ensure the messaging menu has the message
The notification icon should have color
There should be an entry in the messaging menu with the SMS message
The item should include the sender and the start of the message
Clear the message in the greeter
The message should no longer be in the messaging menu
Disable System Settings value "Show Messages on Greeter"
Send an SMS to the device
The notification icon should change color
There should be an entry in the messaging menu with the SMS message
The item should include the sender and the start of the message
Go to the greeter. This can be done by hitting the lock button twice.
Ensure the messaging menu has the message, but it does not include the start of the message
The notification icon should have color
There should be an entry in the messaging menu with the SMS message
The item should include the sender but NOT the start of the message
Clear the message in the greeter
The message should no longer be in the messaging menu
Test-case indicator-messages/push-message-twitter
From a shell prompt send a simultated Twitter push notification
gdbus call --session --dest com.ubuntu.Postal --object-path /com/ubuntu/Postal/com_2eubuntu_2edeveloper_2ewebapps_2ewebapp_2dtwitter --method com.ubuntu.Postal.Post com.ubuntu.developer.webapps.webapp-twitter_webapp-twitter '"{\"message\": \"foobar\", \"notification\":{\"card\": {\"summary\": \"yes\", \"body\": \"hello\", \"popup\": true, \"persist\": true}}}"'
The messaging envelope on the panel should change to highlight a message
Open the messaging menu
The menu should contain an entry with the Twitter icon for the application
The title of the message should be 'yes'
The body of the message should be 'hello'
At the bottom of them menu there should be a 'Clear All' menu item
Clear the message using the 'Clear All' command
The Twitter message should disappear
The 'Clear All' item should disappear
The icon in the panel should return to its original state
ayatana-indicator-messages-24.5.1/tests/test-client.py0000755000000000000000000000615014764273406017657 0ustar #!/usr/bin/env python3 import unittest import dbus from dbus.mainloop.glib import DBusGMainLoop import dbusmock import subprocess from gi.repository import GLib, Gio, MessagingMenu DBusGMainLoop(set_as_default=True) class MessagingMenuTest(dbusmock.DBusTestCase): @classmethod def setUpClass(klass): klass.start_session_bus() klass.bus = klass.get_dbus(False) def setUp(self): name = 'org.ayatana.indicator.messages' obj_path = '/org/ayatana/indicator/messages/service' iface = 'org.ayatana.indicator.messages.service' self.messaging_service = self.spawn_server(name, obj_path, iface, stdout=subprocess.PIPE) self.mock = dbus.Interface(self.bus.get_object(name, obj_path), dbusmock.MOCK_IFACE) self.mock.AddMethod('', 'RegisterApplication', 'so', '', '') self.mock.AddMethod('', 'UnregisterApplication', 's', '', '') self.mock.AddMethod('', 'ApplicationStoppedRunning', 's', '', '') self.mock.AddMethod('', 'SetStatus', 'ss', '', '') self.loop = GLib.MainLoop() def tearDown(self): self.messaging_service.terminate() self.messaging_service.wait() def assertArgumentsEqual(self, args, *expected_args): self.assertEqual(len(args), len(expected_args)) for i in range(len(args)): if expected_args[i]: self.assertEqual(args[i], expected_args[i]) def assertMethodCalled(self, name, *expected_args): # set a flag on timeout, assertions don't get bubbled up through c functions self.timed_out = False def timeout(): self.timed_out = True timeout_id = GLib.timeout_add_seconds(10, timeout) while 1: calls = self.mock.GetMethodCalls(name) if len(calls) > 0: GLib.source_remove(timeout_id) self.assertArgumentsEqual(calls[0][1], *expected_args) break GLib.MainContext.default().iteration(True) if self.timed_out: raise self.failureException('method %s was not called after 10 seconds' % name) def test_registration(self): mmapp = MessagingMenu.App.new('test.desktop') mmapp.register() self.assertMethodCalled('RegisterApplication', 'test.desktop', None) mmapp.unregister() self.assertMethodCalled('UnregisterApplication', 'test.desktop') # ApplicationStoppedRunning is called when the last ref on mmapp is dropped # Since mmapp is the only thing holding on to a GDBusConnection, the # connection might get freed before it sends the StoppedRunning # message. Flush the connection to make sure it is sent. bus = Gio.bus_get_sync(Gio.BusType.SESSION, None) bus.flush_sync(None) del mmapp self.assertMethodCalled('ApplicationStoppedRunning', 'test.desktop') def test_status(self): mmapp = MessagingMenu.App.new('test.desktop') mmapp.register() mmapp.set_status(MessagingMenu.Status.AWAY) self.assertMethodCalled('SetStatus', 'test.desktop', 'away') unittest.main(testRunner=unittest.TextTestRunner()) ayatana-indicator-messages-24.5.1/tests/test-gactionmuxer.cpp0000644000000000000000000003116514764273406021241 0ustar /* An indicator to show information that is in messaging applications that the user is using. Copyright 2012 Canonical Ltd. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranties of MERCHANTABILITY, SATISFACTORY QUALITY, 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, see . */ #include #include #include extern "C" { #include "gactionmuxer.h" } static gboolean strv_contains (gchar **str_array, const gchar *str) { gchar **it; for (it = str_array; *it; it++) { if (!g_strcmp0 (*it, str)) return TRUE; } return FALSE; } TEST(GActionMuxerTest, Sanity) { GActionMuxer *muxer; #if G_ENCODE_VERSION(GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION) <= GLIB_VERSION_2_34 g_type_init (); #endif g_test_expect_message ("Ayatana-Indicator-Messages", G_LOG_LEVEL_CRITICAL, "*G_IS_ACTION_MUXER*"); g_action_muxer_insert (NULL, NULL, NULL); g_test_assert_expected_messages (); g_test_expect_message ("Ayatana-Indicator-Messages", G_LOG_LEVEL_CRITICAL, "*G_IS_ACTION_MUXER*"); g_action_muxer_remove (NULL, NULL); g_test_assert_expected_messages (); muxer = g_action_muxer_new (); g_action_muxer_insert (muxer, NULL, NULL); g_action_muxer_remove (muxer, NULL); g_test_expect_message ("Ayatana-Indicator-Messages", G_LOG_LEVEL_CRITICAL, "*NULL*"); EXPECT_FALSE (g_action_group_has_action (G_ACTION_GROUP (muxer), NULL)); g_test_assert_expected_messages (); g_test_expect_message ("Ayatana-Indicator-Messages", G_LOG_LEVEL_CRITICAL, "*NULL*"); EXPECT_FALSE (g_action_group_get_action_enabled (G_ACTION_GROUP (muxer), NULL)); g_test_assert_expected_messages (); g_test_expect_message ("Ayatana-Indicator-Messages", G_LOG_LEVEL_CRITICAL, "*NULL*"); EXPECT_FALSE (g_action_group_query_action (G_ACTION_GROUP (muxer), NULL, NULL, NULL, NULL, NULL, NULL)); g_test_assert_expected_messages (); g_test_expect_message ("GLib-GIO", G_LOG_LEVEL_CRITICAL, "*NULL*"); g_action_group_activate_action (G_ACTION_GROUP (muxer), NULL, NULL); g_test_assert_expected_messages (); g_object_unref (muxer); } TEST(GActionMuxerTest, Empty) { GActionMuxer *muxer; gchar **actions; #if G_ENCODE_VERSION(GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION) <= GLIB_VERSION_2_34 g_type_init (); #endif muxer = g_action_muxer_new (); actions = g_action_group_list_actions (G_ACTION_GROUP (muxer)); EXPECT_EQ (0, g_strv_length (actions)); g_strfreev (actions); g_object_unref (muxer); } TEST(GActionMuxerTest, AddAndRemove) { const GActionEntry entries1[] = { { "one" }, { "two" }, { "three" } }; const GActionEntry entries2[] = { { "gb" }, { "es" }, { "fr" } }; const GActionEntry entries3[] = { { "foo" }, { "bar" } }; GSimpleActionGroup *group1; GSimpleActionGroup *group2; GSimpleActionGroup *group3; GActionMuxer *muxer; gchar **actions; #if G_ENCODE_VERSION(GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION) <= GLIB_VERSION_2_34 g_type_init (); #endif group1 = g_simple_action_group_new (); g_action_map_add_action_entries (G_ACTION_MAP (group1), entries1, G_N_ELEMENTS (entries1), NULL); group2 = g_simple_action_group_new (); g_action_map_add_action_entries (G_ACTION_MAP (group2), entries2, G_N_ELEMENTS (entries2), NULL); group3 = g_simple_action_group_new (); g_action_map_add_action_entries (G_ACTION_MAP (group3), entries3, G_N_ELEMENTS (entries3), NULL); muxer = g_action_muxer_new (); g_action_muxer_insert (muxer, "first", G_ACTION_GROUP (group1)); g_action_muxer_insert (muxer, "second", G_ACTION_GROUP (group2)); g_action_muxer_insert (muxer, NULL, G_ACTION_GROUP (group3)); actions = g_action_group_list_actions (G_ACTION_GROUP (muxer)); EXPECT_TRUE (g_action_group_has_action (G_ACTION_GROUP (muxer), "first.one")); EXPECT_FALSE (g_action_group_has_action (G_ACTION_GROUP (muxer), "one")); EXPECT_EQ (8, g_strv_length (actions)); EXPECT_TRUE (strv_contains (actions, "first.one")); EXPECT_TRUE (strv_contains (actions, "first.two")); EXPECT_TRUE (strv_contains (actions, "first.three")); EXPECT_TRUE (strv_contains (actions, "second.gb")); EXPECT_TRUE (strv_contains (actions, "second.es")); EXPECT_TRUE (strv_contains (actions, "second.fr")); EXPECT_TRUE (strv_contains (actions, "foo")); EXPECT_TRUE (strv_contains (actions, "bar")); g_strfreev (actions); g_action_muxer_remove (muxer, NULL); EXPECT_FALSE (g_action_group_has_action (G_ACTION_GROUP (muxer), "foo")); EXPECT_TRUE (g_action_group_has_action (G_ACTION_GROUP (muxer), "first.one")); actions = g_action_group_list_actions (G_ACTION_GROUP (muxer)); EXPECT_EQ (6, g_strv_length (actions)); EXPECT_FALSE (strv_contains (actions, "foo")); EXPECT_TRUE (strv_contains (actions, "first.one")); g_strfreev (actions); g_action_muxer_remove (muxer, "first"); EXPECT_FALSE (g_action_group_has_action (G_ACTION_GROUP (muxer), "first.two")); EXPECT_TRUE (g_action_group_has_action (G_ACTION_GROUP (muxer), "second.es")); actions = g_action_group_list_actions (G_ACTION_GROUP (muxer)); EXPECT_EQ (3, g_strv_length (actions)); EXPECT_FALSE (strv_contains (actions, "first.two")); EXPECT_TRUE (strv_contains (actions, "second.es")); g_strfreev (actions); g_action_muxer_insert (muxer, "second", G_ACTION_GROUP (group2)); actions = g_action_group_list_actions (G_ACTION_GROUP (muxer)); EXPECT_EQ (3, g_strv_length (actions)); g_strfreev (actions); g_action_muxer_insert (muxer, NULL, G_ACTION_GROUP (group3)); actions = g_action_group_list_actions (G_ACTION_GROUP (muxer)); EXPECT_EQ (5, g_strv_length (actions)); g_strfreev (actions); g_object_unref (muxer); g_object_unref (group1); g_object_unref (group2); g_object_unref (group3); } static gboolean g_variant_equal0 (gconstpointer one, gconstpointer two) { if (one == NULL) return two == NULL; else return g_variant_equal (one, two); } TEST(GActionMuxerTest, ActionAttributes) { GSimpleActionGroup *group; GSimpleAction *action; GActionMuxer *muxer; gboolean enabled[2]; const GVariantType *param_type[2]; const GVariantType *state_type[2]; GVariant *state_hint[2]; GVariant *state[2]; #if G_ENCODE_VERSION(GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION) <= GLIB_VERSION_2_34 g_type_init (); #endif group = g_simple_action_group_new (); action = g_simple_action_new ("one", G_VARIANT_TYPE_STRING); g_action_map_add_action (G_ACTION_MAP(group), G_ACTION (action)); muxer = g_action_muxer_new (); g_action_muxer_insert (muxer, "first", G_ACTION_GROUP (group)); /* test two of the convenience functions */ EXPECT_TRUE (g_action_group_get_action_enabled (G_ACTION_GROUP (muxer), "first.one")); g_simple_action_set_enabled (action, FALSE); EXPECT_FALSE (g_action_group_get_action_enabled (G_ACTION_GROUP (muxer), "first.one")); EXPECT_STREQ ((gchar *) g_action_group_get_action_parameter_type (G_ACTION_GROUP (muxer), "first.one"), (gchar *) G_VARIANT_TYPE_STRING); /* query_action */ g_action_group_query_action (G_ACTION_GROUP (group), "one", &enabled[0], ¶m_type[0], &state_type[0], &state_hint[0], &state[0]); g_action_group_query_action (G_ACTION_GROUP (muxer), "first.one", &enabled[1], ¶m_type[1], &state_type[1], &state_hint[1], &state[1]); EXPECT_EQ (enabled[0], enabled[1]); EXPECT_STREQ ((gchar *) param_type[0], (gchar *) param_type[1]); EXPECT_STREQ ((gchar *) state_type[0], (gchar *) state_type[1]); EXPECT_TRUE (g_variant_equal0 ((gconstpointer) state_hint[0], (gconstpointer) state_hint[1])); EXPECT_TRUE (g_variant_equal0 ((gconstpointer) state[0], (gconstpointer) state[1])); g_object_unref (action); g_object_unref (group); g_object_unref (muxer); } typedef struct { gboolean signal_ran; const gchar *name; } TestSignalClosure; static void action_added (GActionGroup *group, gchar *action_name, gpointer user_data) { TestSignalClosure *c = (TestSignalClosure *)user_data; EXPECT_STREQ (c->name, action_name); c->signal_ran = TRUE; } static void action_enabled_changed (GActionGroup *group, gchar *action_name, gboolean enabled, gpointer user_data) { TestSignalClosure *c = (TestSignalClosure *)user_data; EXPECT_EQ (enabled, FALSE); c->signal_ran = TRUE; } static void action_state_changed (GActionGroup *group, gchar *action_name, GVariant *value, gpointer user_data) { TestSignalClosure *c = (TestSignalClosure *)user_data; EXPECT_STREQ (g_variant_get_string (value, NULL), "off"); c->signal_ran = TRUE; } static void action_removed (GActionGroup *group, gchar *action_name, gpointer user_data) { TestSignalClosure *c = (TestSignalClosure *)user_data; EXPECT_STREQ (c->name, action_name); c->signal_ran = TRUE; } TEST(GActionMuxerTest, Signals) { GSimpleActionGroup *group; GSimpleAction *action; GActionMuxer *muxer; TestSignalClosure closure; group = g_simple_action_group_new (); action = g_simple_action_new ("one", G_VARIANT_TYPE_STRING); g_action_map_add_action (G_ACTION_MAP(group), G_ACTION (action)); g_object_unref (action); muxer = g_action_muxer_new (); g_signal_connect (muxer, "action-added", G_CALLBACK (action_added), (gpointer) &closure); g_signal_connect (muxer, "action-enabled-changed", G_CALLBACK (action_enabled_changed), (gpointer) &closure); g_signal_connect (muxer, "action-state-changed", G_CALLBACK (action_state_changed), (gpointer) &closure); g_signal_connect (muxer, "action-removed", G_CALLBACK (action_removed), (gpointer) &closure); /* add the group with "one" action and check whether the signal is emitted */ closure.signal_ran = FALSE; closure.name = "first.one"; g_action_muxer_insert (muxer, "first", G_ACTION_GROUP (group)); EXPECT_TRUE (closure.signal_ran); /* add a second action after the group was added to the muxer */ closure.signal_ran = FALSE; closure.name = "first.two"; action = g_simple_action_new_stateful ("two", G_VARIANT_TYPE_STRING, g_variant_new_string ("on")); g_action_map_add_action (G_ACTION_MAP(group), G_ACTION (action)); EXPECT_TRUE (closure.signal_ran); /* disable the action */ closure.signal_ran = FALSE; g_simple_action_set_enabled (action, FALSE); EXPECT_TRUE (closure.signal_ran); /* change its state */ closure.signal_ran = FALSE; g_simple_action_set_state (action, g_variant_new_string ("off")); EXPECT_TRUE (closure.signal_ran); g_object_unref (action); /* remove the first action */ closure.signal_ran = FALSE; closure.name = "first.one"; g_action_map_remove_action (G_ACTION_MAP(group), "one"); EXPECT_TRUE (closure.signal_ran); /* remove the whole group, should be notified about "first.two" */ closure.signal_ran = FALSE; closure.name = "first.two"; g_action_muxer_remove (muxer, "first"); EXPECT_TRUE (closure.signal_ran); g_object_unref (group); g_object_unref (muxer); } static void action_activated (GSimpleAction *simple, GVariant *parameter, gpointer user_data) { gboolean *signal_ran = (gboolean *)user_data; EXPECT_STREQ (g_variant_get_string (parameter, NULL), "value"); *signal_ran = TRUE; } static void action_change_state (GSimpleAction *simple, GVariant *value, gpointer user_data) { gboolean *signal_ran = (gboolean *)user_data; EXPECT_STREQ (g_variant_get_string (value, NULL), "off"); *signal_ran = TRUE; } TEST(GActionMuxerTest, ActivateAction) { GSimpleActionGroup *group; GSimpleAction *action; GActionMuxer *muxer; gboolean signal_ran; group = g_simple_action_group_new (); action = g_simple_action_new ("one", G_VARIANT_TYPE_STRING); g_action_map_add_action (G_ACTION_MAP(group), G_ACTION (action)); g_signal_connect (action, "activate", G_CALLBACK (action_activated), (gpointer) &signal_ran); g_object_unref (action); action = g_simple_action_new_stateful ("two", NULL, g_variant_new_string ("on")); g_action_map_add_action (G_ACTION_MAP(group), G_ACTION (action)); g_signal_connect (action, "change-state", G_CALLBACK (action_change_state), (gpointer) &signal_ran); g_object_unref (action); muxer = g_action_muxer_new (); g_action_muxer_insert (muxer, "first", G_ACTION_GROUP (group)); signal_ran = FALSE; g_action_group_activate_action (G_ACTION_GROUP (muxer), "first.one", g_variant_new_string ("value")); EXPECT_TRUE (signal_ran); signal_ran = FALSE; g_action_group_change_action_state (G_ACTION_GROUP (muxer), "first.two", g_variant_new_string ("off")); EXPECT_TRUE (signal_ran); g_object_unref (group); g_object_unref (muxer); } ayatana-indicator-messages-24.5.1/.travis.yml0000644000000000000000000000170614764273406016020 0ustar # vim: set ts=2 sts=2 sw=2 expandtab : dist: focal language: shell os: linux arch: - amd64 # - ppc64le services: - docker addons: apt: packages: - python3-pip - python3-setuptools before_install: # let's use the MATE project's docker build script... - curl -Ls -o docker-build https://github.com/AyatanaIndicators/ayatana-dev-scripts/raw/main/travis/docker-build - chmod +x docker-build install: - pip3 install wheel - pip3 install PyGithub - ./docker-build --name ${DISTRO} --config .build.yml --install script: - ./docker-build --name ${DISTRO} --verbose --config .build.yml --build scripts env: # temp disable of archlinux builds, see https://gitlab.archlinux.org/archlinux/archlinux-docker/-/issues/56 # - DISTRO="archlinux:latest" - DISTRO="debian:testing" - DISTRO="debian:stable" # - DISTRO="ubuntu:rolling" - DISTRO="ubuntu:focal" jobs: exclude: - env: DISTRO="archlinux:latest" arch: ppc64le ayatana-indicator-messages-24.5.1/update-po.sh0000755000000000000000000000262414764273406016144 0ustar #!/bin/bash set -x # Copyright (C) 2017 by Mike Gabriel # # This package 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; version 3 of the License. # # This package 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, see GETTEXT_DOMAIN=$(cat CMakeLists.txt | grep 'set.*(.*GETTEXT_PACKAGE' | sed -r -e 's/.*\"([^"]+)\"\)/\1/') cp po/${GETTEXT_DOMAIN}.pot po/${GETTEXT_DOMAIN}.pot~ cd po/ cat LINGUAS | while read lingua; do if [ ! -e ${lingua}.po ]; then msginit --input=${GETTEXT_DOMAIN}.pot --locale=${lingua} --no-translator --output-file=$lingua.po else intltool-update --gettext-package ${GETTEXT_DOMAIN} $(basename ${lingua}) fi sed -E \ -e 's/\.xml\.in\.h:/.xml.in:/g' \ -e 's/\.ini\.in\.h:/.ini.in:/g' \ -e 's/\.xml\.h:/.xml:/g' \ -e 's/\.ini\.h:/.ini:/g' \ -e 's@^#: \.\./@#: @g' \ -e 's@(:[0-9]+) \.\./@\1 @g' \ -i ${lingua}.po done cd - 1>/dev/null mv po/${GETTEXT_DOMAIN}.pot~ po/${GETTEXT_DOMAIN}.pot ayatana-indicator-messages-24.5.1/update-pot.sh0000755000000000000000000000213614764273406016326 0ustar #!/bin/bash # Copyright (C) 2017 by Mike Gabriel # # This package 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; version 3 of the License. # # This package 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, see GETTEXT_DOMAIN=$(cat CMakeLists.txt | grep 'set.*(.*GETTEXT_PACKAGE' | sed -r -e 's/.*\"([^"]+)\"\)/\1/') cd po/ && intltool-update --gettext-package ${GETTEXT_DOMAIN} --pot && cd - 1>/dev/null sed -E \ -e 's/\.xml\.in\.h:/.xml.in:/g' \ -e 's/\.ini\.in\.h:/.ini.in:/g' \ -e 's/\.xml\.h:/.xml:/g' \ -e 's/\.ini\.h:/.ini:/g' \ -e 's@^#: \.\./@#: @g' \ -e 's@(:[0-9]+) \.\./@\1 @g' \ -i po/${GETTEXT_DOMAIN}.pot