1. 27 Jun, 2019 1 commit
  2. 26 Jun, 2019 1 commit
    • Linus Jahn's avatar
      Rewrite database models to not block the GUI · e8750bad
      Linus Jahn authored
      This rewrites parts of the main database class. All classes working on
      the database have been moved to the new database thread, so inserting
      records into the database isn't blocking the user interface anymore.
      What also improved the performance *massively* is the use of SQLite
      transactions, when inserting multiple records. So inserting is so fast
      now that it actually wouldn't necessarily require another thread, but
      with this we're safe in the future.
      
      The message model and the roster model have been splitted up into a
      database manager and the list model that is used to present cached data
      to the user. The XMPP managers are connected to both the model and the
      db classes, so both are updated in parallel.
      
      There are also two new classes for the RosterItem and the Message,
      because we need to cache those in the models in a vector. The Message
      class inherits from QXmppMessage, so we can now use the same class for
      sending messages and inserting messages into the database.
      
      Closes #273.
      e8750bad
  3. 11 May, 2019 1 commit
  4. 02 Apr, 2019 2 commits
  5. 22 Jan, 2019 1 commit
  6. 24 Nov, 2018 5 commits
  7. 04 Apr, 2018 1 commit
  8. 03 Apr, 2018 3 commits
    • Linus Jahn's avatar
      back-end: Add signals for asynchronous subscription handling · 38a2bd51
      Linus Jahn authored
      The handling of incoming subscription requests can be done in QML, now.
      
      First the signal of an incoming subscription request is emitted (
      kaidan.subscriptionRequestReceived(from, message)), then the use can decide if
      they want to accept, decline or ignore the request. If they want to decline or
      accept it, the signal kaidan.subscriptionRequestAnswered(jid, accepted) should
      be emitted (accepted=true: allow, accepted=false: decline).
      38a2bd51
    • Linus Jahn's avatar
      Roster: Use asynchronous subscription handling · 0ad76247
      Linus Jahn authored
      With this subscription requests are not handled in any way. So other clients can
      handle them, Kaidan itself won't do anything.
      0ad76247
    • Linus Jahn's avatar
      Roster: Use subscribe & add for roster contact additions · fb7335c1
      Linus Jahn authored
      Before only the contact was added, now also a subscription request is sent.
      fb7335c1
  9. 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.
      5c513623
  10. 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!'.
      14b7183a
  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.
      8f8e40b9
  12. 30 Jul, 2017 2 commits