1. 02 Mar, 2018 1 commit
    • Linus Jahn's avatar
      Fix lag when changing chat (#205) · bc071e8c
      Linus Jahn authored
      This also does some clean up and restructuring of the deployment of the
      `chatPartner` property to the ClientThread (MessageHandler) and MessageModel.
      Before, a thread-safe function of the ClientThread was used, so the mutex of it
      blocked the GUI, when the client thread was busy in this moment.
  2. 26 Feb, 2018 1 commit
  3. 25 Feb, 2018 2 commits
    • Linus Jahn's avatar
      Use passive notifications when online actions fail · 672b11fb
      Linus Jahn authored
      This will throw a Kirigami passive notification, whenever you try to add or
      remove a contact or send a message when being offline. It uses the "long" preset
      for the timeout.
    • Linus Jahn's avatar
      Add XEP-0352: Client State Indication · 855bc84f
      Linus Jahn authored
      This will give the XMPP server the information if the user is currently actively
      using Kaidan or it's runnning in the background. If it's running in the
      background, the server will only send some important messages, not everything.
  4. 24 Feb, 2018 1 commit
    • Linus Jahn's avatar
      Use new ClientThread for XMPP-connection; Make offline usable · 5c513623
      Linus Jahn authored
      This rewrites the full back-end <-> front-end communication, moves the
      connection logic to the back-end and makes the XMPP client connection
      independant of the user interface (they will run parallel). However, the
      database still runs on the main, GUI thread, so this will still block GUI
      rendering (will be done in one of the next commits).
      Now, Kaidan is able to handle different DisconnectionReason, so it can
      distinguish if the authentication failed or there's just no connection to the
      server available. So this will finally make Kaidan offline useable! But it
      currently won't reconenct after losing the connection once.
      The bug that Kaidan always crashed, when logging in after logging out has also
      been fixed with this.
      The LogInPage was simplified: now, the button only shows "Connecting..." (when
      pressed) or "Connect". The trivial state of "retry" has been removed.
      `branding.h` was renamed to `Globals.h`. The new `Enums` namespace is used to
      register enums as a QMetaEnum, to make them printable and accessible in QML. The
      new `Q_ENUM_NS` macro is used for that.
      Coding style: I started to use doxygen-compatible inline documentation for the
      most functions, classes, enums and other elements. I don't want to really use
      doxygen (we're not a library), but it should definitely make it easier for new
      developers to understand the code. So from now on new code should be documented
      like this.
      Closes #107 - Make Kaidan offline usable.
  5. 13 Jan, 2018 1 commit
    • Linus Jahn's avatar
      Bump copyright to 2018 · 14b7183a
      Linus Jahn authored
      This updates all copyright headers in the source files to 2018. Also,
      there are not all contributors listed with a seperate copyright line,
      only one line for all Kaidan developers and contributors with a 'link'
      to a full list of contributors in the LICENSE file.
      It would be very hard to maintain the old strategy and adding each
      contributor to each file. Also the copyright lines were get too long then.
      All Kaidan headings are uniform, now. I replaced 'A cross platform XMPP
      client' with 'A user-friendly XMPP client for every device!'.
  6. 20 Dec, 2017 1 commit
    • Ilya Bizyaev's avatar
      Initial support for Android · d4c295e5
      Ilya Bizyaev authored
      * Added submodules for build dependencies, Moved kaidansf to 3rdparty/, too.
      * Added QMake build system for simpler android compilation
      * Added all images and icons to a resource file for android-only
      * Added AndroidManifest for APK creation
      * Added a script for android compilation into
      * Added splash screen and green status bar for android
      * Global constants are moved into header file: `branding.h`
  7. 25 Nov, 2017 2 commits
  8. 14 Aug, 2017 1 commit
  9. 12 Aug, 2017 1 commit
    • Linus Jahn's avatar
      AvatarStorage: Deploy IDs dynamically to QML (#122) · e3de6116
      Linus Jahn authored
      This will make it possible to show automatically updating avatars of a
      specific JID. Also the avatar hashes don't have to be saved in the
      message database anymore, and so problems when changing accounts are
      fixed now.
      The AvatarStorage now has a signal, that is emitted when the avatar of a JID
      was changed. Connected to it is the NOTIFY signal of the Q_PROPERTY of
      the avatar storage, so all avatars are updated then.
  10. 07 Aug, 2017 1 commit
  11. 05 Aug, 2017 1 commit
    • Linus Jahn's avatar
      Add VCard-based Avatars via. vcard-temp · 8f8e40b9
      Linus Jahn authored
      This implements XEP-0054: vcard-temp, but only handles the avatar/profile picture.
      Avatars (and everything else in the VCard) will currently only be updated on connecting.
      For changing this, we need to implement XEP-0153: vCard-Based Avatars, that will send
      presences with notices of updated VCards.
  12. 04 Aug, 2017 1 commit
  13. 31 Jul, 2017 2 commits
    • Linus Jahn's avatar
    • Linus Jahn's avatar
      Add XEP-0280: Message Carbons · 07eab2b9
      Linus Jahn authored
      Message carbons allow you to receive the outgoing message of another client of the
      same account. In short: messages are synced between the clients.
      The handleMessage function of the MessageHandler can now handle both types of messages,
      normal, direct messages by a contact and forwarded messages (possibly) written from the same
      Notfications and unread message counters are only used, if the message written by somebody
      else, so you're not getting annoyed by notifications of your own messages. :)
      Closes #116.
  14. 30 Jul, 2017 9 commits
  15. 19 Jun, 2017 1 commit
    • Linus Jahn's avatar
      Fix message insertion bug · 0a6e43bd
      Linus Jahn authored
      There was still an, now unused, variable/pointer in the MessageController class. It
      wasn't set so it was a nullptr, when the MessageModel was trying to add it to the db.
  16. 12 Jun, 2017 1 commit
  17. 10 Jun, 2017 1 commit
  18. 07 Jun, 2017 1 commit
    • Linus Jahn's avatar
      Clean up Message/RosterController · 5fdf2e7a
      Linus Jahn authored
      I separated them again, so the RosterController will also connect to the
      Message received event, and will upsate the unread message counter on its
      I also removed many `emit xxxModelChanged`. They are unnecessary and I don't
      know why I added them at all (in these cases).
      There were also some unused #includes, that I have removed.
      But the QML API has also changed through this and sendMessage and chatPartner
      are now on the top level of `kaidan`.
  19. 06 Jun, 2017 1 commit
  20. 05 Jun, 2017 1 commit
  21. 12 May, 2017 1 commit
    • Linus Jahn's avatar
      Kaidan.cpp: Use Swift::MemoryStorages · f5f443bb
      Linus Jahn authored
      Next will be to get all storages (roster, history, vcards, ...) from these MemoryStorages.
      And then we can replace these MemoryStorages with real FileStorages, so you can see
      everything even if you're offline.
      I added a new include for the PlatformCryptoProvider; we should clean up all includes and
      only use specific files instead of just everything from Swiften: this will speed up
      compilation much!
  22. 03 May, 2017 2 commits
  23. 01 May, 2017 1 commit
  24. 14 Mar, 2017 1 commit
    • Linus Jahn's avatar
      Roster: Sort using last exchanged · 51c48b80
      Linus Jahn authored
      The new `lastExchanged` coloumn in the RosterModel contains
      a ISODate string with the time when the last message has
      arrived or has been sent. The roster is now sorted using this
      The message controller is now able to communicate with the roster
      controller directly and updates the lastExchanged whenever a
      message arrives/is been sent.
      To preserve the lastExchanged property, the roster is now only
      'updated' instead of being replaced every login. It looks up
      which JIDs have been removed and added, adds/removes them
      and updates the name of all the others (lastExchanged keeps the
      same). Roster Versioning would be the better solution here and
      also generally ...
  25. 12 Mar, 2017 2 commits
  26. 07 Mar, 2017 1 commit
    • Linus Jahn's avatar
      Add VCard back-end support (#85) · d4527fb8
      Linus Jahn authored
      The new QML-side variables:
      `kaidan.vCardController.currentJid = ""`
      `kaidan.vCardController.currentVCard = VCard` (read-only)
      `kaidan.vCardController.ownVCard = VCard`
      Properties of a VCard:
      `version`, `fullName`, `familyName`, `givenName`, `middleName`,
      `prefix`, `suffix`, `nickname`, `preferredEMailAddress`
      The own VCard is not working correctly yet.
  27. 05 Mar, 2017 1 commit