File indexing completed on 2024-12-08 10:25:48

0001 /*
0002    SPDX-FileCopyrightText: 2018-2024 Laurent Montel <montel@kde.org>
0003 
0004    SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "accountmanager.h"
0008 #include "config-ruqola.h"
0009 #include "localdatabase/localdatabaseutils.h"
0010 #include "managerdatapaths.h"
0011 #include "notificationhistorymanager.h"
0012 #include "notifications/notifierjob.h"
0013 #include "rocketchataccount.h"
0014 #include "ruqola_debug.h"
0015 #include "ruqolaglobalconfig.h"
0016 #include <KLocalizedString>
0017 #include <QDir>
0018 #include <QDirIterator>
0019 #include <QSettings>
0020 #include <TextEmoticonsCore/EmojiModelManager>
0021 
0022 AccountManager::AccountManager(QObject *parent)
0023     : QObject(parent)
0024     , mRocketChatAccountModel(new RocketChatAccountModel(this))
0025     , mRocketChatAccountProxyModel(new RocketChatAccountFilterProxyModel(this))
0026 {
0027     mRocketChatAccountProxyModel->setSourceModel(mRocketChatAccountModel);
0028     loadExcludeEmoticons();
0029     loadAccount();
0030 }
0031 
0032 AccountManager::~AccountManager() = default;
0033 
0034 void AccountManager::loadExcludeEmoticons()
0035 {
0036 #if HAVE_TEXTADDONS_TEXTEMOTICON_EXCLUDEEMOTICON_SUPPORT
0037     const QStringList lst = QStringList({QStringLiteral(":face_holding_back_tears:"),
0038                                          QStringLiteral(":smiling_face_with_tear:"),
0039                                          QStringLiteral(":disguised_face:"),
0040                                          QStringLiteral(":face_in_clouds:"),
0041                                          QStringLiteral(":face_with_peeking_eye:"),
0042                                          QStringLiteral(":face_with_open_eyes_and_hand_over_mouth:"),
0043                                          QStringLiteral(":saluting_face:"),
0044                                          QStringLiteral(":melting_face:"),
0045                                          QStringLiteral(":dotted_line_face:"),
0046                                          QStringLiteral(":face_with_diagonal_mouth:"),
0047                                          QStringLiteral(":face_exhaling:"),
0048                                          QStringLiteral(":face_with_spiral_eyes:"),
0049                                          QStringLiteral(":heart_hands:"),
0050                                          QStringLiteral(":heart_hands_tone1:"),
0051                                          QStringLiteral(":heart_hands_tone2:"),
0052                                          QStringLiteral(":heart_hands_tone3:"),
0053                                          QStringLiteral(":heart_hands_tone4:"),
0054                                          QStringLiteral(":heart_hands_tone5:"),
0055                                          QStringLiteral(":handshake_tone1:"),
0056                                          QStringLiteral(":handshake_tone1_tone2:"),
0057                                          QStringLiteral(":handshake_tone1_tone3:"),
0058                                          QStringLiteral(":handshake_tone1_tone4:"),
0059                                          QStringLiteral(":handshake_tone1_tone5:"),
0060                                          QStringLiteral(":handshake_tone2_tone1:"),
0061                                          QStringLiteral(":handshake_tone2:"),
0062                                          QStringLiteral(":handshake_tone2_tone3:"),
0063                                          QStringLiteral(":handshake_tone2_tone4:"),
0064                                          QStringLiteral(":handshake_tone2_tone5:"),
0065                                          QStringLiteral(":handshake_tone3_tone1:"),
0066                                          QStringLiteral(":handshake_tone3_tone2:"),
0067                                          QStringLiteral(":handshake_tone3:"),
0068                                          QStringLiteral(":handshake_tone3_tone4:"),
0069                                          QStringLiteral(":handshake_tone3_tone5:"),
0070                                          QStringLiteral(":handshake_tone4_tone1:"),
0071                                          QStringLiteral(":handshake_tone4_tone2:"),
0072                                          QStringLiteral(":handshake_tone4_tone3:"),
0073                                          QStringLiteral(":handshake_tone4:"),
0074                                          QStringLiteral(":handshake_tone4_tone5:"),
0075                                          QStringLiteral(":handshake_tone5_tone1:"),
0076                                          QStringLiteral(":handshake_tone5_tone2:"),
0077                                          QStringLiteral(":handshake_tone5_tone3:"),
0078                                          QStringLiteral(":handshake_tone5_tone4:"),
0079                                          QStringLiteral(":handshake_tone5:"),
0080                                          QStringLiteral(":hand_with_index_finger_and_thumb_crossed:"),
0081                                          QStringLiteral(":hand_with_index_finger_and_thumb_crossed_tone1:"),
0082                                          QStringLiteral(":hand_with_index_finger_and_thumb_crossed_tone2:"),
0083                                          QStringLiteral(":hand_with_index_finger_and_thumb_crossed_tone3:"),
0084                                          QStringLiteral(":hand_with_index_finger_and_thumb_crossed_tone4:"),
0085                                          QStringLiteral(":hand_with_index_finger_and_thumb_crossed_tone5:"),
0086                                          QStringLiteral(":pinched_fingers:"),
0087                                          QStringLiteral(":pinched_fingers_tone2:"),
0088                                          QStringLiteral(":pinched_fingers_tone1:"),
0089                                          QStringLiteral(":pinched_fingers_tone3:"),
0090                                          QStringLiteral(":pinched_fingers_tone4:"),
0091                                          QStringLiteral(":pinched_fingers_tone5:"),
0092                                          QStringLiteral(":palm_down_hand:"),
0093                                          QStringLiteral(":palm_down_hand_tone1:"),
0094                                          QStringLiteral(":palm_down_hand_tone2:"),
0095                                          QStringLiteral(":palm_down_hand_tone3:"),
0096                                          QStringLiteral(":palm_down_hand_tone4:"),
0097                                          QStringLiteral(":palm_down_hand_tone5:"),
0098                                          QStringLiteral(":palm_up_hand:"),
0099                                          QStringLiteral(":palm_up_hand_tone1:"),
0100                                          QStringLiteral(":palm_up_hand_tone2:"),
0101                                          QStringLiteral(":palm_up_hand_tone3:"),
0102                                          QStringLiteral(":palm_up_hand_tone4:"),
0103                                          QStringLiteral(":palm_up_hand_tone5:"),
0104                                          QStringLiteral(":leftwards_hand:"),
0105                                          QStringLiteral(":leftwards_hand_tone1:"),
0106                                          QStringLiteral(":leftwards_hand_tone2:"),
0107                                          QStringLiteral(":leftwards_hand_tone3:"),
0108                                          QStringLiteral(":leftwards_hand_tone4:"),
0109                                          QStringLiteral(":leftwards_hand_tone5:"),
0110                                          QStringLiteral(":rightwards_hand:"),
0111                                          QStringLiteral(":rightwards_hand_tone1:"),
0112                                          QStringLiteral(":rightwards_hand_tone2:"),
0113                                          QStringLiteral(":rightwards_hand_tone3:"),
0114                                          QStringLiteral(":rightwards_hand_tone4:"),
0115                                          QStringLiteral(":rightwards_hand_tone5:"),
0116                                          QStringLiteral(":index_pointing_at_the_viewer:"),
0117                                          QStringLiteral(":index_pointing_at_the_viewer_tone1:"),
0118                                          QStringLiteral(":index_pointing_at_the_viewer_tone2:"),
0119                                          QStringLiteral(":index_pointing_at_the_viewer_tone3:"),
0120                                          QStringLiteral(":index_pointing_at_the_viewer_tone4:"),
0121                                          QStringLiteral(":index_pointing_at_the_viewer_tone5:"),
0122                                          QStringLiteral(":biting_lip:"),
0123                                          QStringLiteral(":anatomical_heart:"),
0124                                          QStringLiteral(":lungs:"),
0125                                          QStringLiteral(":people_hugging:"),
0126                                          QStringLiteral(":person_curly_hair:"),
0127                                          QStringLiteral(":person_tone1_curly_hair:"),
0128                                          QStringLiteral(":person_tone2_curly_hair:"),
0129                                          QStringLiteral(":person_tone3_curly_hair:"),
0130                                          QStringLiteral(":person_tone4_curly_hair:"),
0131                                          QStringLiteral(":person_tone5_curly_hair:"),
0132                                          QStringLiteral(":person_red_hair:"),
0133                                          QStringLiteral(":person_tone1_red_hair:"),
0134                                          QStringLiteral(":person_tone2_red_hair:"),
0135                                          QStringLiteral(":person_tone3_red_hair:"),
0136                                          QStringLiteral(":person_tone4_red_hair:"),
0137                                          QStringLiteral(":person_tone5_red_hair:"),
0138                                          QStringLiteral(":person_white_hair:"),
0139                                          QStringLiteral(":person_tone1_white_hair:"),
0140                                          QStringLiteral(":person_tone2_white_hair:"),
0141                                          QStringLiteral(":person_tone3_white_hair:"),
0142                                          QStringLiteral(":person_tone4_white_hair:"),
0143                                          QStringLiteral(":person_tone5_white_hair:"),
0144                                          QStringLiteral(":person_bald:"),
0145                                          QStringLiteral(":person_tone1_bald:"),
0146                                          QStringLiteral(":person_tone2_bald:"),
0147                                          QStringLiteral(":person_tone3_bald:"),
0148                                          QStringLiteral(":person_tone4_bald:"),
0149                                          QStringLiteral(":person_tone5_bald:"),
0150                                          QStringLiteral(":woman_beard:"),
0151                                          QStringLiteral(":woman_tone1_beard:"),
0152                                          QStringLiteral(":woman_tone2_beard:"),
0153                                          QStringLiteral(":woman_tone3_beard:"),
0154                                          QStringLiteral(":woman_tone4_beard:"),
0155                                          QStringLiteral(":woman_tone5_beard:"),
0156                                          QStringLiteral(":man_beard:"),
0157                                          QStringLiteral(":man_tone1_beard:"),
0158                                          QStringLiteral(":man_tone2_beard:"),
0159                                          QStringLiteral(":man_tone3_beard:"),
0160                                          QStringLiteral(":man_tone4_beard:"),
0161                                          QStringLiteral(":man_tone5_beard:"),
0162                                          QStringLiteral(":health_worker:"),
0163                                          QStringLiteral(":health_worker_tone1:"),
0164                                          QStringLiteral(":health_worker_tone2:"),
0165                                          QStringLiteral(":health_worker_tone3:"),
0166                                          QStringLiteral(":health_worker_tone4:"),
0167                                          QStringLiteral(":health_worker_tone5:"),
0168                                          QStringLiteral(":farmer:"),
0169                                          QStringLiteral(":farmer_tone1:"),
0170                                          QStringLiteral(":farmer_tone2:"),
0171                                          QStringLiteral(":farmer_tone3:"),
0172                                          QStringLiteral(":farmer_tone4:"),
0173                                          QStringLiteral(":farmer_tone5:"),
0174                                          QStringLiteral(":cook:"),
0175                                          QStringLiteral(":cook_tone1:"),
0176                                          QStringLiteral(":cook_tone2:"),
0177                                          QStringLiteral(":cook_tone3:"),
0178                                          QStringLiteral(":cook_tone4:"),
0179                                          QStringLiteral(":cook_tone5:"),
0180                                          QStringLiteral(":student:"),
0181                                          QStringLiteral(":student_tone1:"),
0182                                          QStringLiteral(":student_tone2:"),
0183                                          QStringLiteral(":student_tone3:"),
0184                                          QStringLiteral(":student_tone4:"),
0185                                          QStringLiteral(":student_tone5:"),
0186                                          QStringLiteral(":singer:"),
0187                                          QStringLiteral(":singer_tone1:"),
0188                                          QStringLiteral(":singer_tone2:"),
0189                                          QStringLiteral(":singer_tone3:"),
0190                                          QStringLiteral(":singer_tone4:"),
0191                                          QStringLiteral(":singer_tone5:"),
0192                                          QStringLiteral(":teacher:"),
0193                                          QStringLiteral(":teacher_tone1:"),
0194                                          QStringLiteral(":teacher_tone2:"),
0195                                          QStringLiteral(":teacher_tone3:"),
0196                                          QStringLiteral(":teacher_tone4:"),
0197                                          QStringLiteral(":teacher_tone5:"),
0198                                          QStringLiteral(":factory_worker:"),
0199                                          QStringLiteral(":factory_worker_tone1:"),
0200                                          QStringLiteral(":factory_worker_tone2:"),
0201                                          QStringLiteral(":factory_worker_tone3:"),
0202                                          QStringLiteral(":factory_worker_tone4:"),
0203                                          QStringLiteral(":factory_worker_tone5:"),
0204                                          QStringLiteral(":technologist:"),
0205                                          QStringLiteral(":technologist_tone1:"),
0206                                          QStringLiteral(":technologist_tone2:"),
0207                                          QStringLiteral(":technologist_tone3:"),
0208                                          QStringLiteral(":technologist_tone4:"),
0209                                          QStringLiteral(":technologist_tone5:"),
0210                                          QStringLiteral(":office_worker:"),
0211                                          QStringLiteral(":office_worker_tone1:"),
0212                                          QStringLiteral(":office_worker_tone2:"),
0213                                          QStringLiteral(":office_worker_tone3:"),
0214                                          QStringLiteral(":office_worker_tone4:"),
0215                                          QStringLiteral(":office_worker_tone5:"),
0216                                          QStringLiteral(":mechanic:"),
0217                                          QStringLiteral(":mechanic_tone1:"),
0218                                          QStringLiteral(":mechanic_tone2:"),
0219                                          QStringLiteral(":mechanic_tone3:"),
0220                                          QStringLiteral(":mechanic_tone4:"),
0221                                          QStringLiteral(":mechanic_tone5:"),
0222                                          QStringLiteral(":scientist:"),
0223                                          QStringLiteral(":scientist_tone1:"),
0224                                          QStringLiteral(":scientist_tone2:"),
0225                                          QStringLiteral(":scientist_tone3:"),
0226                                          QStringLiteral(":scientist_tone4:"),
0227                                          QStringLiteral(":scientist_tone5:"),
0228                                          QStringLiteral(":artist:"),
0229                                          QStringLiteral(":artist_tone1:"),
0230                                          QStringLiteral(":artist_tone2:"),
0231                                          QStringLiteral(":artist_tone3:"),
0232                                          QStringLiteral(":artist_tone4:"),
0233                                          QStringLiteral(":artist_tone5:"),
0234                                          QStringLiteral(":firefighter:"),
0235                                          QStringLiteral(":firefighter_tone1:"),
0236                                          QStringLiteral(":firefighter_tone2:"),
0237                                          QStringLiteral(":firefighter_tone3:"),
0238                                          QStringLiteral(":firefighter_tone4:"),
0239                                          QStringLiteral(":firefighter_tone5:"),
0240                                          QStringLiteral(":pilot:"),
0241                                          QStringLiteral(":pilot_tone1:"),
0242                                          QStringLiteral(":pilot_tone2:"),
0243                                          QStringLiteral(":pilot_tone3:"),
0244                                          QStringLiteral(":pilot_tone4:"),
0245                                          QStringLiteral(":pilot_tone5:"),
0246                                          QStringLiteral(":astronaut:"),
0247                                          QStringLiteral(":astronaut_tone1:"),
0248                                          QStringLiteral(":astronaut_tone2:"),
0249                                          QStringLiteral(":astronaut_tone3:"),
0250                                          QStringLiteral(":astronaut_tone4:"),
0251                                          QStringLiteral(":astronaut_tone5:"),
0252                                          QStringLiteral(":judge:"),
0253                                          QStringLiteral(":judge_tone1:"),
0254                                          QStringLiteral(":judge_tone2:"),
0255                                          QStringLiteral(":judge_tone3:"),
0256                                          QStringLiteral(":judge_tone4:"),
0257                                          QStringLiteral(":judge_tone5:"),
0258                                          QStringLiteral(":person_with_veil:"),
0259                                          QStringLiteral(":person_with_veil_tone1:"),
0260                                          QStringLiteral(":person_with_veil_tone2:"),
0261                                          QStringLiteral(":person_with_veil_tone3:"),
0262                                          QStringLiteral(":person_with_veil_tone4:"),
0263                                          QStringLiteral(":person_with_veil_tone5:"),
0264                                          QStringLiteral(":woman_with_veil:"),
0265                                          QStringLiteral(":woman_with_veil_tone1:"),
0266                                          QStringLiteral(":woman_with_veil_tone2:"),
0267                                          QStringLiteral(":woman_with_veil_tone3:"),
0268                                          QStringLiteral(":woman_with_veil_tone4:"),
0269                                          QStringLiteral(":woman_with_veil_tone5:"),
0270                                          QStringLiteral(":man_with_veil:"),
0271                                          QStringLiteral(":man_with_veil_tone1:"),
0272                                          QStringLiteral(":man_with_veil_tone2:"),
0273                                          QStringLiteral(":man_with_veil_tone3:"),
0274                                          QStringLiteral(":man_with_veil_tone4:"),
0275                                          QStringLiteral(":man_with_veil_tone5:"),
0276                                          QStringLiteral(":person_in_tuxedo:"),
0277                                          QStringLiteral(":person_in_tuxedo_tone1:"),
0278                                          QStringLiteral(":person_in_tuxedo_tone2:"),
0279                                          QStringLiteral(":person_in_tuxedo_tone3:"),
0280                                          QStringLiteral(":person_in_tuxedo_tone4:"),
0281                                          QStringLiteral(":person_in_tuxedo_tone5:"),
0282                                          QStringLiteral(":woman_in_tuxedo:"),
0283                                          QStringLiteral(":woman_in_tuxedo_tone1:"),
0284                                          QStringLiteral(":woman_in_tuxedo_tone2:"),
0285                                          QStringLiteral(":woman_in_tuxedo_tone3:"),
0286                                          QStringLiteral(":woman_in_tuxedo_tone4:"),
0287                                          QStringLiteral(":woman_in_tuxedo_tone5:"),
0288                                          QStringLiteral(":person_with_crown:"),
0289                                          QStringLiteral(":person_with_crown_tone1:"),
0290                                          QStringLiteral(":person_with_crown_tone2:"),
0291                                          QStringLiteral(":person_with_crown_tone3:"),
0292                                          QStringLiteral(":person_with_crown_tone4:"),
0293                                          QStringLiteral(":person_with_crown_tone5:"),
0294                                          QStringLiteral(":ninja:"),
0295                                          QStringLiteral(":ninja_tone1:"),
0296                                          QStringLiteral(":ninja_tone2:"),
0297                                          QStringLiteral(":ninja_tone3:"),
0298                                          QStringLiteral(":ninja_tone4:"),
0299                                          QStringLiteral(":ninja_tone5:"),
0300                                          QStringLiteral(":mx_claus:"),
0301                                          QStringLiteral(":mx_claus_tone1:"),
0302                                          QStringLiteral(":mx_claus_tone2:"),
0303                                          QStringLiteral(":mx_claus_tone3:"),
0304                                          QStringLiteral(":mx_claus_tone4:"),
0305                                          QStringLiteral(":mx_claus_tone5:"),
0306                                          QStringLiteral(":troll:"),
0307                                          QStringLiteral(":pregnant_person:"),
0308                                          QStringLiteral(":pregnant_person_tone1:"),
0309                                          QStringLiteral(":pregnant_person_tone2:"),
0310                                          QStringLiteral(":pregnant_person_tone3:"),
0311                                          QStringLiteral(":pregnant_person_tone4:"),
0312                                          QStringLiteral(":pregnant_person_tone5:"),
0313                                          QStringLiteral(":pregnant_man:"),
0314                                          QStringLiteral(":pregnant_man_tone1:"),
0315                                          QStringLiteral(":pregnant_man_tone2:"),
0316                                          QStringLiteral(":pregnant_man_tone3:"),
0317                                          QStringLiteral(":pregnant_man_tone4:"),
0318                                          QStringLiteral(":pregnant_man_tone5:"),
0319                                          QStringLiteral(":person_feeding_baby:"),
0320                                          QStringLiteral(":person_feeding_baby_tone1:"),
0321                                          QStringLiteral(":person_feeding_baby_tone2:"),
0322                                          QStringLiteral(":person_feeding_baby_tone3:"),
0323                                          QStringLiteral(":person_feeding_baby_tone4:"),
0324                                          QStringLiteral(":person_feeding_baby_tone5:"),
0325                                          QStringLiteral(":woman_feeding_baby:"),
0326                                          QStringLiteral(":woman_feeding_baby_tone1:"),
0327                                          QStringLiteral(":woman_feeding_baby_tone2:"),
0328                                          QStringLiteral(":woman_feeding_baby_tone3:"),
0329                                          QStringLiteral(":woman_feeding_baby_tone4:"),
0330                                          QStringLiteral(":woman_feeding_baby_tone5:"),
0331                                          QStringLiteral(":man_feeding_baby:"),
0332                                          QStringLiteral(":man_feeding_baby_tone1:"),
0333                                          QStringLiteral(":man_feeding_baby_tone2:"),
0334                                          QStringLiteral(":man_feeding_baby_tone3:"),
0335                                          QStringLiteral(":man_feeding_baby_tone4:"),
0336                                          QStringLiteral(":man_feeding_baby_tone5:"),
0337                                          QStringLiteral(":person_in_manual_wheelchair:"),
0338                                          QStringLiteral(":person_in_manual_wheelchair_tone1:"),
0339                                          QStringLiteral(":person_in_manual_wheelchair_tone2:"),
0340                                          QStringLiteral(":person_in_manual_wheelchair_tone3:"),
0341                                          QStringLiteral(":person_in_manual_wheelchair_tone4:"),
0342                                          QStringLiteral(":person_in_manual_wheelchair_tone5:"),
0343                                          QStringLiteral(":person_in_motorized_wheelchair:"),
0344                                          QStringLiteral(":person_in_motorized_wheelchair_tone1:"),
0345                                          QStringLiteral(":person_in_motorized_wheelchair_tone2:"),
0346                                          QStringLiteral(":person_in_motorized_wheelchair_tone3:"),
0347                                          QStringLiteral(":person_in_motorized_wheelchair_tone4:"),
0348                                          QStringLiteral(":person_in_motorized_wheelchair_tone5:"),
0349                                          QStringLiteral(":person_with_probing_cane:"),
0350                                          QStringLiteral(":person_with_probing_cane_tone1:"),
0351                                          QStringLiteral(":person_with_probing_cane_tone2:"),
0352                                          QStringLiteral(":person_with_probing_cane_tone3:"),
0353                                          QStringLiteral(":person_with_probing_cane_tone4:"),
0354                                          QStringLiteral(":person_with_probing_cane_tone5:"),
0355                                          QStringLiteral(":people_holding_hands_tone1_tone2:"),
0356                                          QStringLiteral(":people_holding_hands_tone1_tone3:"),
0357                                          QStringLiteral(":people_holding_hands_tone1_tone4:"),
0358                                          QStringLiteral(":people_holding_hands_tone1_tone5:"),
0359                                          QStringLiteral(":people_holding_hands_tone2_tone3:"),
0360                                          QStringLiteral(":people_holding_hands_tone2_tone4:"),
0361                                          QStringLiteral(":people_holding_hands_tone2_tone5:"),
0362                                          QStringLiteral(":people_holding_hands_tone3_tone4:"),
0363                                          QStringLiteral(":people_holding_hands_tone3_tone5:"),
0364                                          QStringLiteral(":people_holding_hands_tone4_tone5:"),
0365                                          QStringLiteral(":women_holding_hands_tone1_tone2:"),
0366                                          QStringLiteral(":women_holding_hands_tone1_tone3:"),
0367                                          QStringLiteral(":women_holding_hands_tone1_tone4:"),
0368                                          QStringLiteral(":women_holding_hands_tone1_tone5:"),
0369                                          QStringLiteral(":women_holding_hands_tone2_tone3:"),
0370                                          QStringLiteral(":women_holding_hands_tone2_tone4:"),
0371                                          QStringLiteral(":women_holding_hands_tone2_tone5:"),
0372                                          QStringLiteral(":women_holding_hands_tone3_tone4:"),
0373                                          QStringLiteral(":women_holding_hands_tone3_tone5:"),
0374                                          QStringLiteral(":women_holding_hands_tone4_tone5:"),
0375                                          QStringLiteral(":men_holding_hands_tone1_tone2:"),
0376                                          QStringLiteral(":men_holding_hands_tone1_tone3:"),
0377                                          QStringLiteral(":men_holding_hands_tone1_tone4:"),
0378                                          QStringLiteral(":men_holding_hands_tone1_tone5:"),
0379                                          QStringLiteral(":men_holding_hands_tone2_tone3:"),
0380                                          QStringLiteral(":men_holding_hands_tone2_tone4:"),
0381                                          QStringLiteral(":men_holding_hands_tone2_tone5:"),
0382                                          QStringLiteral(":men_holding_hands_tone3_tone4:"),
0383                                          QStringLiteral(":men_holding_hands_tone3_tone5:"),
0384                                          QStringLiteral(":men_holding_hands_tone4_tone5:"),
0385                                          QStringLiteral(":couple_with_heart_tone1:"),
0386                                          QStringLiteral(":couple_with_heart_person_person_tone1_tone2:"),
0387                                          QStringLiteral(":couple_with_heart_person_person_tone1_tone3:"),
0388                                          QStringLiteral(":couple_with_heart_person_person_tone1_tone4:"),
0389                                          QStringLiteral(":couple_with_heart_person_person_tone1_tone5:"),
0390                                          QStringLiteral(":couple_with_heart_person_person_tone2_tone1:"),
0391                                          QStringLiteral(":couple_with_heart_tone2:"),
0392                                          QStringLiteral(":couple_with_heart_person_person_tone2_tone3:"),
0393                                          QStringLiteral(":couple_with_heart_person_person_tone2_tone4:"),
0394                                          QStringLiteral(":couple_with_heart_person_person_tone2_tone5:"),
0395                                          QStringLiteral(":couple_with_heart_person_person_tone3_tone1:"),
0396                                          QStringLiteral(":couple_with_heart_person_person_tone3_tone2:"),
0397                                          QStringLiteral(":couple_with_heart_tone3:"),
0398                                          QStringLiteral(":couple_with_heart_person_person_tone3_tone4:"),
0399                                          QStringLiteral(":couple_with_heart_person_person_tone3_tone5:"),
0400                                          QStringLiteral(":couple_with_heart_person_person_tone4_tone1:"),
0401                                          QStringLiteral(":couple_with_heart_person_person_tone4_tone2:"),
0402                                          QStringLiteral(":couple_with_heart_person_person_tone4_tone3:"),
0403                                          QStringLiteral(":couple_with_heart_tone4:"),
0404                                          QStringLiteral(":couple_with_heart_person_person_tone4_tone5:"),
0405                                          QStringLiteral(":couple_with_heart_person_person_tone5_tone1:"),
0406                                          QStringLiteral(":couple_with_heart_person_person_tone5_tone2:"),
0407                                          QStringLiteral(":couple_with_heart_person_person_tone5_tone3:"),
0408                                          QStringLiteral(":couple_with_heart_person_person_tone5_tone4:"),
0409                                          QStringLiteral(":couple_with_heart_tone5:"),
0410                                          QStringLiteral(":couple_with_heart_woman_man_tone1:"),
0411                                          QStringLiteral(":couple_with_heart_woman_man_tone1_tone2:"),
0412                                          QStringLiteral(":couple_with_heart_woman_man_tone1_tone3:"),
0413                                          QStringLiteral(":couple_with_heart_woman_man_tone1_tone4:"),
0414                                          QStringLiteral(":couple_with_heart_woman_man_tone1_tone5:"),
0415                                          QStringLiteral(":couple_with_heart_woman_man_tone2_tone1:"),
0416                                          QStringLiteral(":couple_with_heart_woman_man_tone2:"),
0417                                          QStringLiteral(":couple_with_heart_woman_man_tone2_tone3:"),
0418                                          QStringLiteral(":couple_with_heart_woman_man_tone2_tone4:"),
0419                                          QStringLiteral(":couple_with_heart_woman_man_tone2_tone5:"),
0420                                          QStringLiteral(":couple_with_heart_woman_man_tone3_tone1:"),
0421                                          QStringLiteral(":couple_with_heart_woman_man_tone3_tone2:"),
0422                                          QStringLiteral(":couple_with_heart_woman_man_tone3:"),
0423                                          QStringLiteral(":couple_with_heart_woman_man_tone3_tone4:"),
0424                                          QStringLiteral(":couple_with_heart_woman_man_tone3_tone5:"),
0425                                          QStringLiteral(":couple_with_heart_woman_man_tone4_tone1:"),
0426                                          QStringLiteral(":couple_with_heart_woman_man_tone4_tone2:"),
0427                                          QStringLiteral(":couple_with_heart_woman_man_tone4_tone3:"),
0428                                          QStringLiteral(":couple_with_heart_woman_man_tone4:"),
0429                                          QStringLiteral(":couple_with_heart_woman_man_tone4_tone5:"),
0430                                          QStringLiteral(":couple_with_heart_woman_man_tone5_tone1:"),
0431                                          QStringLiteral(":couple_with_heart_woman_man_tone5_tone2:"),
0432                                          QStringLiteral(":couple_with_heart_woman_man_tone5_tone3:"),
0433                                          QStringLiteral(":couple_with_heart_woman_man_tone5_tone4:"),
0434                                          QStringLiteral(":couple_with_heart_woman_man_tone5:"),
0435                                          QStringLiteral(":couple_with_heart_woman_woman_tone1:"),
0436                                          QStringLiteral(":couple_with_heart_woman_woman_tone1_tone2:"),
0437                                          QStringLiteral(":couple_with_heart_woman_woman_tone1_tone3:"),
0438                                          QStringLiteral(":couple_with_heart_woman_woman_tone1_tone4:"),
0439                                          QStringLiteral(":couple_with_heart_woman_woman_tone1_tone5:"),
0440                                          QStringLiteral(":couple_with_heart_woman_woman_tone2_tone1:"),
0441                                          QStringLiteral(":couple_with_heart_woman_woman_tone2:"),
0442                                          QStringLiteral(":couple_with_heart_woman_woman_tone2_tone3:"),
0443                                          QStringLiteral(":couple_with_heart_woman_woman_tone2_tone4:"),
0444                                          QStringLiteral(":couple_with_heart_woman_woman_tone2_tone5:"),
0445                                          QStringLiteral(":couple_with_heart_woman_woman_tone3_tone1:"),
0446                                          QStringLiteral(":couple_with_heart_woman_woman_tone3_tone2:"),
0447                                          QStringLiteral(":couple_with_heart_woman_woman_tone3:"),
0448                                          QStringLiteral(":couple_with_heart_woman_woman_tone3_tone4:"),
0449                                          QStringLiteral(":couple_with_heart_woman_woman_tone3_tone5:"),
0450                                          QStringLiteral(":couple_with_heart_woman_woman_tone4_tone1:"),
0451                                          QStringLiteral(":couple_with_heart_woman_woman_tone4_tone2:"),
0452                                          QStringLiteral(":couple_with_heart_woman_woman_tone4_tone3:"),
0453                                          QStringLiteral(":couple_with_heart_woman_woman_tone4:"),
0454                                          QStringLiteral(":couple_with_heart_woman_woman_tone4_tone5:"),
0455                                          QStringLiteral(":couple_with_heart_woman_woman_tone5_tone1:"),
0456                                          QStringLiteral(":couple_with_heart_woman_woman_tone5_tone2:"),
0457                                          QStringLiteral(":couple_with_heart_woman_woman_tone5_tone3:"),
0458                                          QStringLiteral(":couple_with_heart_woman_woman_tone5_tone4:"),
0459                                          QStringLiteral(":couple_with_heart_woman_woman_tone5:"),
0460                                          QStringLiteral(":couple_with_heart_man_man_tone1:"),
0461                                          QStringLiteral(":couple_with_heart_man_man_tone1_tone2:"),
0462                                          QStringLiteral(":couple_with_heart_man_man_tone1_tone3:"),
0463                                          QStringLiteral(":couple_with_heart_man_man_tone1_tone4:"),
0464                                          QStringLiteral(":couple_with_heart_man_man_tone1_tone5:"),
0465                                          QStringLiteral(":couple_with_heart_man_man_tone2_tone1:"),
0466                                          QStringLiteral(":couple_with_heart_man_man_tone2:"),
0467                                          QStringLiteral(":couple_with_heart_man_man_tone2_tone3:"),
0468                                          QStringLiteral(":couple_with_heart_man_man_tone2_tone4:"),
0469                                          QStringLiteral(":couple_with_heart_man_man_tone2_tone5:"),
0470                                          QStringLiteral(":couple_with_heart_man_man_tone3_tone1:"),
0471                                          QStringLiteral(":couple_with_heart_man_man_tone3_tone2:"),
0472                                          QStringLiteral(":couple_with_heart_man_man_tone3:"),
0473                                          QStringLiteral(":couple_with_heart_man_man_tone3_tone4:"),
0474                                          QStringLiteral(":couple_with_heart_man_man_tone3_tone5:"),
0475                                          QStringLiteral(":couple_with_heart_man_man_tone4_tone1:"),
0476                                          QStringLiteral(":couple_with_heart_man_man_tone4_tone2:"),
0477                                          QStringLiteral(":couple_with_heart_man_man_tone4_tone3:"),
0478                                          QStringLiteral(":couple_with_heart_man_man_tone4:"),
0479                                          QStringLiteral(":couple_with_heart_man_man_tone4_tone5:"),
0480                                          QStringLiteral(":couple_with_heart_man_man_tone5_tone1:"),
0481                                          QStringLiteral(":couple_with_heart_man_man_tone5_tone2:"),
0482                                          QStringLiteral(":couple_with_heart_man_man_tone5_tone3:"),
0483                                          QStringLiteral(":couple_with_heart_man_man_tone5_tone4:"),
0484                                          QStringLiteral(":couple_with_heart_man_man_tone5:"),
0485                                          QStringLiteral(":kiss_tone1:"),
0486                                          QStringLiteral(":kiss_person_person_tone1_tone2:"),
0487                                          QStringLiteral(":kiss_person_person_tone1_tone3:"),
0488                                          QStringLiteral(":kiss_person_person_tone1_tone4:"),
0489                                          QStringLiteral(":kiss_person_person_tone1_tone5:"),
0490                                          QStringLiteral(":kiss_person_person_tone2_tone1:"),
0491                                          QStringLiteral(":kiss_tone2:"),
0492                                          QStringLiteral(":kiss_person_person_tone2_tone3:"),
0493                                          QStringLiteral(":kiss_person_person_tone2_tone4:"),
0494                                          QStringLiteral(":kiss_person_person_tone2_tone5:"),
0495                                          QStringLiteral(":kiss_person_person_tone3_tone1:"),
0496                                          QStringLiteral(":kiss_person_person_tone3_tone2:"),
0497                                          QStringLiteral(":kiss_tone3:"),
0498                                          QStringLiteral(":kiss_person_person_tone3_tone4:"),
0499                                          QStringLiteral(":kiss_person_person_tone3_tone5:"),
0500                                          QStringLiteral(":kiss_person_person_tone4_tone1:"),
0501                                          QStringLiteral(":kiss_person_person_tone4_tone2:"),
0502                                          QStringLiteral(":kiss_person_person_tone4_tone3:"),
0503                                          QStringLiteral(":kiss_tone4:"),
0504                                          QStringLiteral(":kiss_person_person_tone4_tone5:"),
0505                                          QStringLiteral(":kiss_person_person_tone5_tone1:"),
0506                                          QStringLiteral(":kiss_person_person_tone5_tone2:"),
0507                                          QStringLiteral(":kiss_person_person_tone5_tone3:"),
0508                                          QStringLiteral(":kiss_person_person_tone5_tone4:"),
0509                                          QStringLiteral(":kiss_tone5:"),
0510                                          QStringLiteral(":kiss_woman_man_tone1:"),
0511                                          QStringLiteral(":kiss_woman_man_tone1_tone2:"),
0512                                          QStringLiteral(":kiss_woman_man_tone1_tone3:"),
0513                                          QStringLiteral(":kiss_woman_man_tone1_tone4:"),
0514                                          QStringLiteral(":kiss_woman_man_tone1_tone5:"),
0515                                          QStringLiteral(":kiss_woman_man_tone2_tone1:"),
0516                                          QStringLiteral(":kiss_woman_man_tone2:"),
0517                                          QStringLiteral(":kiss_woman_man_tone2_tone3:"),
0518                                          QStringLiteral(":kiss_woman_man_tone2_tone4:"),
0519                                          QStringLiteral(":kiss_woman_man_tone2_tone5:"),
0520                                          QStringLiteral(":kiss_woman_man_tone3_tone1:"),
0521                                          QStringLiteral(":kiss_woman_man_tone3_tone2:"),
0522                                          QStringLiteral(":kiss_woman_man_tone3:"),
0523                                          QStringLiteral(":kiss_woman_man_tone3_tone4:"),
0524                                          QStringLiteral(":kiss_woman_man_tone3_tone5:"),
0525                                          QStringLiteral(":kiss_woman_man_tone4_tone1:"),
0526                                          QStringLiteral(":kiss_woman_man_tone4_tone2:"),
0527                                          QStringLiteral(":kiss_woman_man_tone4_tone3:"),
0528                                          QStringLiteral(":kiss_woman_man_tone4:"),
0529                                          QStringLiteral(":kiss_woman_man_tone4_tone5:"),
0530                                          QStringLiteral(":kiss_woman_man_tone5_tone1:"),
0531                                          QStringLiteral(":kiss_woman_man_tone5_tone2:"),
0532                                          QStringLiteral(":kiss_woman_man_tone5_tone3:"),
0533                                          QStringLiteral(":kiss_woman_man_tone5_tone4:"),
0534                                          QStringLiteral(":kiss_woman_man_tone5:"),
0535                                          QStringLiteral(":kiss_woman_woman_tone1:"),
0536                                          QStringLiteral(":kiss_woman_woman_tone1_tone2:"),
0537                                          QStringLiteral(":kiss_woman_woman_tone1_tone3:"),
0538                                          QStringLiteral(":kiss_woman_woman_tone1_tone4:"),
0539                                          QStringLiteral(":kiss_woman_woman_tone1_tone5:"),
0540                                          QStringLiteral(":kiss_woman_woman_tone2_tone1:"),
0541                                          QStringLiteral(":kiss_woman_woman_tone2:"),
0542                                          QStringLiteral(":kiss_woman_woman_tone2_tone3:"),
0543                                          QStringLiteral(":kiss_woman_woman_tone2_tone4:"),
0544                                          QStringLiteral(":kiss_woman_woman_tone2_tone5:"),
0545                                          QStringLiteral(":kiss_woman_woman_tone3_tone1:"),
0546                                          QStringLiteral(":kiss_woman_woman_tone3_tone2:"),
0547                                          QStringLiteral(":kiss_woman_woman_tone3:"),
0548                                          QStringLiteral(":kiss_woman_woman_tone3_tone4:"),
0549                                          QStringLiteral(":kiss_woman_woman_tone3_tone5:"),
0550                                          QStringLiteral(":kiss_woman_woman_tone4_tone1:"),
0551                                          QStringLiteral(":kiss_woman_woman_tone4_tone2:"),
0552                                          QStringLiteral(":kiss_woman_woman_tone4_tone3:"),
0553                                          QStringLiteral(":kiss_woman_woman_tone4:"),
0554                                          QStringLiteral(":kiss_woman_woman_tone4_tone5:"),
0555                                          QStringLiteral(":kiss_woman_woman_tone5_tone1:"),
0556                                          QStringLiteral(":kiss_woman_woman_tone5_tone2:"),
0557                                          QStringLiteral(":kiss_woman_woman_tone5_tone3:"),
0558                                          QStringLiteral(":kiss_woman_woman_tone5_tone4:"),
0559                                          QStringLiteral(":kiss_woman_woman_tone5:"),
0560                                          QStringLiteral(":kiss_man_man_tone1:"),
0561                                          QStringLiteral(":kiss_man_man_tone1_tone2:"),
0562                                          QStringLiteral(":kiss_man_man_tone1_tone3:"),
0563                                          QStringLiteral(":kiss_man_man_tone1_tone4:"),
0564                                          QStringLiteral(":kiss_man_man_tone1_tone5:"),
0565                                          QStringLiteral(":kiss_man_man_tone2_tone1:"),
0566                                          QStringLiteral(":kiss_man_man_tone2:"),
0567                                          QStringLiteral(":kiss_man_man_tone2_tone3:"),
0568                                          QStringLiteral(":kiss_man_man_tone2_tone4:"),
0569                                          QStringLiteral(":kiss_man_man_tone2_tone5:"),
0570                                          QStringLiteral(":kiss_man_man_tone3_tone1:"),
0571                                          QStringLiteral(":kiss_man_man_tone3_tone2:"),
0572                                          QStringLiteral(":kiss_man_man_tone3:"),
0573                                          QStringLiteral(":kiss_man_man_tone3_tone4:"),
0574                                          QStringLiteral(":kiss_man_man_tone3_tone5:"),
0575                                          QStringLiteral(":kiss_man_man_tone4_tone1:"),
0576                                          QStringLiteral(":kiss_man_man_tone4_tone2:"),
0577                                          QStringLiteral(":kiss_man_man_tone4_tone3:"),
0578                                          QStringLiteral(":kiss_man_man_tone4:"),
0579                                          QStringLiteral(":kiss_man_man_tone4_tone5:"),
0580                                          QStringLiteral(":kiss_man_man_tone5_tone1:"),
0581                                          QStringLiteral(":kiss_man_man_tone5_tone2:"),
0582                                          QStringLiteral(":kiss_man_man_tone5_tone3:"),
0583                                          QStringLiteral(":kiss_man_man_tone5_tone4:"),
0584                                          QStringLiteral(":kiss_man_man_tone5:"),
0585                                          QStringLiteral(":knot:"),
0586                                          QStringLiteral(":sewing_needle:"),
0587                                          QStringLiteral(":thong_sandal:"),
0588                                          QStringLiteral(":military_helmet:"),
0589                                          QStringLiteral(":polar_bear:"),
0590                                          QStringLiteral(":worm:"),
0591                                          QStringLiteral(":lady_beetle:"),
0592                                          QStringLiteral(":fly:"),
0593                                          QStringLiteral(":cockroach:"),
0594                                          QStringLiteral(":seal:"),
0595                                          QStringLiteral(":mammoth:"),
0596                                          QStringLiteral(":bison:"),
0597                                          QStringLiteral(":black_cat:"),
0598                                          QStringLiteral(":feather:"),
0599                                          QStringLiteral(":dodo:"),
0600                                          QStringLiteral(":beaver:"),
0601                                          QStringLiteral(":empty_nest:"),
0602                                          QStringLiteral(":nest_with_eggs:"),
0603                                          QStringLiteral(":coral:"),
0604                                          QStringLiteral(":rock:"),
0605                                          QStringLiteral(":wood:"),
0606                                          QStringLiteral(":potted_plant:"),
0607                                          QStringLiteral(":lotus:"),
0608                                          QStringLiteral(":bubbles:"),
0609                                          QStringLiteral(":blueberries:"),
0610                                          QStringLiteral(":olive:"),
0611                                          QStringLiteral(":bell_pepper:"),
0612                                          QStringLiteral(":flatbread:"),
0613                                          QStringLiteral(":tamale:"),
0614                                          QStringLiteral(":fondue:"),
0615                                          QStringLiteral(":jar:"),
0616                                          QStringLiteral(":beans:"),
0617                                          QStringLiteral(":pouring_liquid:"),
0618                                          QStringLiteral(":teapot:"),
0619                                          QStringLiteral(":bubble_tea:"),
0620                                          QStringLiteral(":boomerang:"),
0621                                          QStringLiteral(":playground_slide:"),
0622                                          QStringLiteral(":roller_skate:"),
0623                                          QStringLiteral(":long_drum:"),
0624                                          QStringLiteral(":accordion:"),
0625                                          QStringLiteral(":pickup_truck:"),
0626                                          QStringLiteral(":crutch:"),
0627                                          QStringLiteral(":wheel:"),
0628                                          QStringLiteral(":ring_buoy:"),
0629                                          QStringLiteral(":hook:"),
0630                                          QStringLiteral(":hut:"),
0631                                          QStringLiteral(":mobile_phone:"),
0632                                          QStringLiteral(":low_battery:"),
0633                                          QStringLiteral(":coin:"),
0634                                          QStringLiteral(":identification_card:"),
0635                                          QStringLiteral(":ladder:"),
0636                                          QStringLiteral(":screwdriver:"),
0637                                          QStringLiteral(":carpentry_saw:"),
0638                                          QStringLiteral(":mouse_trap:"),
0639                                          QStringLiteral(":headstone:"),
0640                                          QStringLiteral(":hamsa:"),
0641                                          QStringLiteral(":x_ray:"),
0642                                          QStringLiteral(":plunger:"),
0643                                          QStringLiteral(":toothbrush:"),
0644                                          QStringLiteral(":bucket:"),
0645                                          QStringLiteral(":nesting_dolls:"),
0646                                          QStringLiteral(":mirror:"),
0647                                          QStringLiteral(":window:"),
0648                                          QStringLiteral(":magic_wand:"),
0649                                          QStringLiteral(":piƱata:"),
0650                                          QStringLiteral(":mirror_ball:"),
0651                                          QStringLiteral(":placard:"),
0652                                          QStringLiteral(":mending_heart:"),
0653                                          QStringLiteral(":heart_on_fire:"),
0654                                          QStringLiteral(":elevator:"),
0655                                          QStringLiteral(":heavy_equals_sign:"),
0656                                          QStringLiteral(":transgender_symbol:"),
0657                                          QStringLiteral(":transgender_flag:"),
0658                                          QStringLiteral(":flag_bq:"),
0659                                          QStringLiteral(":flag_fk:"),
0660                                          QStringLiteral(":flag_gf:"),
0661                                          QStringLiteral(":flag_tf:"),
0662                                          QStringLiteral(":flag_gp:"),
0663                                          QStringLiteral(":flag_xk:"),
0664                                          QStringLiteral(":flag_mq:"),
0665                                          QStringLiteral(":flag_yt:"),
0666                                          QStringLiteral(":flag_nc:"),
0667                                          QStringLiteral(":flag_re:"),
0668                                          QStringLiteral(":flag_gs:"),
0669                                          QStringLiteral(":flag_bl:"),
0670                                          QStringLiteral(":flag_pm:"),
0671                                          QStringLiteral(":flag_wf:"),
0672                                          QStringLiteral(":flag_eh:"),
0673                                          QStringLiteral(":flag_ea:"),
0674                                          QStringLiteral(":flag_dg:"),
0675                                          QStringLiteral(":flag_mf:")});
0676     TextEmoticonsCore::EmojiModelManager::self()->setExcludeEmoticons(lst);
0677 #endif
0678 }
0679 
0680 int AccountManager::accountNumber() const
0681 {
0682     return mRocketChatAccountModel->accountNumber();
0683 }
0684 
0685 bool AccountManager::showMessage(const ParseMessageUrlUtils &parseUrl)
0686 {
0687     auto account = mRocketChatAccountModel->accountFromServerUrl(parseUrl.serverHost());
0688     if (account) {
0689         // const QString path{parseUrl.path()};
0690         const QString messageId = parseUrl.messageId();
0691         qCDebug(RUQOLA_LOG) << " parseUrl " << parseUrl;
0692         // https://<server url>/channel/python?msg=sn3gEQom7NcLxTg5h
0693         setCurrentAccount(account->accountName());
0694         // qDebug() << " account->accountName() : " << account->accountName();
0695         Q_EMIT mCurrentAccount->raiseWindow();
0696         Q_EMIT mCurrentAccount->selectChannelAndMessage(messageId, parseUrl.roomId(), parseUrl.roomIdType(), parseUrl.channelType());
0697         return true;
0698     }
0699     return false;
0700 }
0701 
0702 void AccountManager::openMessageUrl(const QString &messageUrl)
0703 {
0704     ParseMessageUrlUtils parseUrl;
0705     if (parseUrl.parseUrl(messageUrl)) {
0706         if (showMessage(parseUrl)) {
0707             return;
0708         }
0709     }
0710 
0711     Q_EMIT messageUrlNotFound(i18n("Server not found: %1", messageUrl));
0712     // TODO report error
0713 }
0714 
0715 void AccountManager::connectToAccount(RocketChatAccount *account)
0716 {
0717     connect(account, &RocketChatAccount::notification, this, [this, account](const NotificationInfo &info) {
0718         NotificationHistoryManager::self()->addNotification(info);
0719 
0720         switch (info.notificationType()) {
0721         case NotificationInfo::StandardMessage: {
0722             auto job = new NotifierJob;
0723             job->setInfo(info);
0724             connect(job, &NotifierJob::switchToAccountAndRoomName, this, &AccountManager::slotSwitchToAccountAndRoomName);
0725             connect(job, &NotifierJob::sendReply, this, [account](const QString &str, const QString &roomId, const QString &tmId) {
0726                 if (tmId.isEmpty()) {
0727                     account->sendMessage(roomId, str);
0728                 } else {
0729                     account->replyOnThread(roomId, tmId, str);
0730                 }
0731                 // qDebug() << " str" << str << " Room Name " << roomName;
0732             });
0733             job->start();
0734             break;
0735         }
0736         case NotificationInfo::ConferenceCall: {
0737             break;
0738         }
0739         }
0740     });
0741     connect(account, &RocketChatAccount::updateNotification, this, &AccountManager::updateNotification);
0742     connect(account, &RocketChatAccount::roomNeedAttention, this, &AccountManager::roomNeedAttention);
0743     connect(account, &RocketChatAccount::logoutDone, this, &AccountManager::logoutAccountDone);
0744 }
0745 
0746 void AccountManager::slotSwitchToAccountAndRoomName(const QString &accountName, const QString &roomName, const QString &channelType)
0747 {
0748     setCurrentAccount(accountName);
0749     QString linkRoom;
0750     if (channelType == QLatin1Char('c')) {
0751         linkRoom = QStringLiteral("ruqola:/room/%1").arg(roomName);
0752     } else {
0753         linkRoom = QStringLiteral("ruqola:/user/%1").arg(roomName);
0754     }
0755     Q_EMIT mCurrentAccount->raiseWindow();
0756     Q_EMIT mCurrentAccount->openLinkRequested(linkRoom);
0757 }
0758 
0759 void AccountManager::loadAccount()
0760 {
0761     qCDebug(RUQOLA_LOG) << " void AccountManager::loadAccount()" << ManagerDataPaths::self()->path(ManagerDataPaths::Config, QString());
0762     QDirIterator it(ManagerDataPaths::self()->path(ManagerDataPaths::Config, QString()),
0763                     QStringList() << QStringLiteral("ruqola.conf"),
0764                     QDir::AllEntries | QDir::NoSymLinks | QDir::NoDotAndDotDot,
0765                     QDirIterator::Subdirectories);
0766     QVector<RocketChatAccount *> lstAccounts;
0767     while (it.hasNext()) {
0768         const QString val = it.next();
0769         qCDebug(RUQOLA_LOG) << "Account found list.at(i)" << val;
0770         auto account = new RocketChatAccount(val);
0771         if (account->settings()->isValid()) {
0772             connectToAccount(account);
0773             lstAccounts.append(account);
0774         } else {
0775             account->deleteLater();
0776         }
0777     }
0778 
0779     // New account => empty list.
0780     if (lstAccounts.isEmpty()) {
0781         qCDebug(RUQOLA_LOG) << "Empty list. Create a default rocketchataccount";
0782         auto account = new RocketChatAccount();
0783         if (account->accountEnabled()) {
0784             connectToAccount(account);
0785         }
0786         lstAccounts.append(account);
0787     }
0788 
0789     mRocketChatAccountModel->setAccounts(lstAccounts);
0790 
0791     QSettings settings;
0792     const QString previousAccount = settings.value(QStringLiteral("currentAccount"), QString()).toString();
0793     if (previousAccount.isEmpty()) {
0794         // Use first one
0795         mCurrentAccount = mRocketChatAccountModel->account(0);
0796     } else {
0797         selectAccount(previousAccount);
0798         if (!mCurrentAccount) {
0799             // Use first one
0800             mCurrentAccount = mRocketChatAccountModel->account(0);
0801         }
0802     }
0803     mRocketChatAccountProxyModel->setAccountOrder(RuqolaGlobalConfig::self()->accountOrder());
0804 }
0805 
0806 RocketChatAccountFilterProxyModel *AccountManager::rocketChatAccountProxyModel() const
0807 {
0808     return mRocketChatAccountProxyModel;
0809 }
0810 
0811 RocketChatAccount *AccountManager::account() const
0812 {
0813     return mCurrentAccount;
0814 }
0815 
0816 void AccountManager::addAccount(const AccountManagerInfo &info)
0817 {
0818     // TODO verify if account exist or not ?
0819     auto account = new RocketChatAccount();
0820     account->setAccountName(info.accountName);
0821     account->setUserName(info.userName);
0822     account->setServerUrl(info.serverUrl);
0823     account->setAccountEnabled(info.enabled);
0824     account->setPassword(info.password);
0825     if (info.enabled) {
0826         connectToAccount(account);
0827     }
0828     addAccount(account);
0829 }
0830 
0831 void AccountManager::modifyAccount(const AccountManagerInfo &info)
0832 {
0833     RocketChatAccount *account = mRocketChatAccountModel->account(info.accountName);
0834     if (account) {
0835         account->setDisplayName(info.displayName);
0836         account->setUserName(info.userName);
0837         account->setServerUrl(info.serverUrl);
0838         account->setAccountEnabled(info.enabled);
0839         if (!info.enabled) {
0840             // TODO fixme
0841             // disconnect(account, &RocketChatAccount::notification, this, &AccountManager::notification);
0842             disconnect(account, &RocketChatAccount::updateNotification, this, &AccountManager::updateNotification);
0843             disconnect(account, &RocketChatAccount::logoutDone, this, &AccountManager::logoutAccountDone);
0844         }
0845     }
0846 }
0847 
0848 RocketChatAccount *AccountManager::accountFromName(const QString &accountName)
0849 {
0850     return mRocketChatAccountModel->account(accountName);
0851 }
0852 
0853 QStringList AccountManager::accountsName() const
0854 {
0855     return mRocketChatAccountModel->accountsName();
0856 }
0857 
0858 void AccountManager::addAccount(RocketChatAccount *account)
0859 {
0860     mRocketChatAccountModel->insertAccount(account);
0861 }
0862 
0863 void AccountManager::selectAccount(const QString &accountName)
0864 {
0865     RocketChatAccount *account = mRocketChatAccountModel->account(accountName);
0866     if (account) {
0867         mCurrentAccount = account;
0868     } else {
0869         qCWarning(RUQOLA_LOG) << "AccountName " << accountName << " is not found on system.";
0870     }
0871 }
0872 
0873 void AccountManager::setCurrentAccount(const QString &accountName)
0874 {
0875     RocketChatAccount *account = mRocketChatAccountModel->account(accountName);
0876     if (account) {
0877         if (mCurrentAccount != account) {
0878             QSettings settings;
0879             settings.setValue(QStringLiteral("currentAccount"), accountName);
0880             settings.sync();
0881             mCurrentAccount = account;
0882             Q_EMIT currentAccountChanged();
0883         }
0884     } else {
0885         qCWarning(RUQOLA_LOG) << "AccountName " << accountName << " is not found on system. Fallback to default one.";
0886     }
0887 }
0888 
0889 QString AccountManager::currentAccount() const
0890 {
0891     return mCurrentAccount ? mCurrentAccount->accountName() : QString();
0892 }
0893 
0894 void AccountManager::removeLogs(const QString &accountName)
0895 {
0896     const QString directory = LocalDatabaseUtils::localMessageLoggerPath() + accountName;
0897     removeDirectory(directory);
0898 }
0899 
0900 void AccountManager::removeDatabaseAccount(const QString &accountName)
0901 {
0902     const QString directory = LocalDatabaseUtils::localAccountDatabasePath() + accountName;
0903     removeDirectory(directory);
0904 }
0905 
0906 void AccountManager::removeDirectory(const QString &directory)
0907 {
0908     QDir dir(directory);
0909     if (dir.exists()) {
0910         if (!dir.removeRecursively()) {
0911             qCWarning(RUQOLA_LOG) << " Impossible to remove directory : " << directory;
0912         }
0913     }
0914 }
0915 
0916 void AccountManager::removeAccount(const QString &accountName, bool removeLogFiles)
0917 {
0918     auto account = mRocketChatAccountModel->removeAccount(accountName);
0919     if (mRocketChatAccountModel->accountNumber() > 0) {
0920         mCurrentAccount = mRocketChatAccountModel->account(0);
0921         removeDatabaseAccount(accountName);
0922         // TODO remove others files
0923         if (removeLogFiles) {
0924             removeLogs(accountName);
0925         }
0926     } else {
0927         // TODO create new dummy account !
0928     }
0929     Q_EMIT currentAccountChanged();
0930     if (account) {
0931         account->deleteLater();
0932     }
0933 }
0934 
0935 RocketChatAccountModel *AccountManager::rocketChatAccountModel() const
0936 {
0937     return mRocketChatAccountModel;
0938 }
0939 
0940 QStringList AccountManager::accountNamesSorted() const
0941 {
0942     QStringList lst;
0943     auto model = rocketChatAccountProxyModel();
0944     for (int i = 0; i < model->rowCount(); ++i) {
0945         const auto index = model->index(i, 0);
0946         auto account = index.data(RocketChatAccountModel::Account).value<RocketChatAccount *>();
0947         lst << account->displayName();
0948     }
0949     return lst;
0950 }
0951 
0952 #include "moc_accountmanager.cpp"