Commit 601de1d3 authored by Isa's avatar Isa Committed by Andreas Traczyk

accounts: add subclassed QComboBox for current account selection

Change-Id: I3ad675db56a27101d78ba13825f4618051084b53
Reviewed-by: Andreas Traczyk's avatarAndreas Traczyk <andreas.traczyk@savoirfairelinux.com>
parent 55f92cb9
......@@ -70,7 +70,6 @@ SOURCES += main.cpp\
ringbutton.cpp \
photoboothdialog.cpp \
sendcontactrequestwidget.cpp \
currentaccountwidget.cpp \
contactrequestwidget.cpp \
smartlistselectorbuttonnotifier.cpp \
deleteaccountdialog.cpp \
......@@ -82,7 +81,8 @@ SOURCES += main.cpp\
accountlistmodel.cpp \
messagemodel.cpp \
invitebuttonswidget.cpp \
wizardwidget.cpp
wizardwidget.cpp \
currentaccountcombobox.cpp
HEADERS += mainwindow.h \
callwidget.h \
......@@ -115,7 +115,6 @@ HEADERS += mainwindow.h \
ringbutton.h \
photoboothdialog.h \
sendcontactrequestwidget.h \
currentaccountwidget.h \
contactrequestwidget.h \
smartlistselectorbuttonnotifier.h \
deleteaccountdialog.h \
......@@ -128,7 +127,8 @@ HEADERS += mainwindow.h \
accountlistmodel.h \
messagemodel.h \
invitebuttonswidget.h \
wizardwidget.h
wizardwidget.h \
currentaccountcombobox.h
contains(DEFINES, URI_PROTOCOL) {
HEADERS += shmclient.h
......@@ -150,7 +150,6 @@ FORMS += mainwindow.ui \
ringbutton.ui \
photoboothdialog.ui \
sendcontactrequestwidget.ui \
currentaccountwidget.ui \
contactrequestwidget.ui \
deleteaccountdialog.ui \
bannedcontactswidget.ui \
......
......@@ -77,7 +77,7 @@ AccountItemDelegate::paint(QPainter* painter,
// Presence indicator
QPainterPath outerCircle, innerCircle;
QPointF center(rectAvatar.right() - avatarSize_ / 6, (rectAvatar.bottom() - avatarSize_ / 6) + 1);
qreal outerCRadius = avatarSize_ / 6, innerCRadius = outerCRadius * 0.75;
qreal outerCRadius = avatarSize_ / 6, innerCRadius = outerCRadius * 0.85;
outerCircle.addEllipse(center, outerCRadius, outerCRadius);
innerCircle.addEllipse(center, innerCRadius, innerCRadius);
auto status = index.data(static_cast<int>(AccountListModel::Role::Status)).value<int>();
......
......@@ -24,6 +24,7 @@
#include <QClipboard>
#include <QDesktopServices>
#include <QComboBox>
#include <memory>
......@@ -92,13 +93,17 @@ CallWidget::CallWidget(QWidget* parent) :
accountIdToStartWith = accountList.at(0);
}
setSelectedAccount(accountIdToStartWith);
// get account index and set the currentAccountWidget selector
// get account index and set the currentAccountComboBox
auto index = Utils::indexInVector(accountList, accountIdToStartWith);
if (index != -1) {
ui->currentAccountWidget->changeSelectedIndex(index);
ui->currentAccountComboBox->setCurrentIndex(index);
ui->currentAccountComboBox->importLabelPhoto(index);
}
}
//disable dropdown shadow on combobox
ui->currentAccountComboBox->view()->window()->setWindowFlags(Qt::Popup | Qt::FramelessWindowHint | Qt::NoDropShadowWindowHint);
// conversation list
conversationItemDelegate_ = new ConversationItemDelegate();
ui->smartList->setContextMenuPolicy(Qt::CustomContextMenu);
......@@ -126,13 +131,6 @@ CallWidget::CallWidget(QWidget* parent) :
connect(ui->buttonInvites, &QPushButton::clicked,
this, &CallWidget::invitationsButtonClicked);
connect(ui->currentAccountWidget, &CurrentAccountWidget::currentAccountChanged,
this, &CallWidget::currentAccountChanged);
// TODO(new lrc)
connect(&ProfileModel::instance(), &ProfileModel::dataChanged,
ui->currentAccountWidget, &CurrentAccountWidget::setPhoto);
connect(ui->smartList, &QListView::customContextMenuRequested,
this, &CallWidget::slotCustomContextMenuRequested);
......@@ -154,6 +152,10 @@ CallWidget::CallWidget(QWidget* parent) :
connect(&LRCInstance::behaviorController(), &BehaviorController::showChatView,
this, &CallWidget::slotShowChatView);
// change call widget current account if combobox index changed
connect(ui->currentAccountComboBox, QOverload<int>::of(&QComboBox::currentIndexChanged),
this, &CallWidget::slotAccountChanged);
// set first view to welcome view
ui->stackedWidget->setCurrentWidget(ui->welcomePage);
}
......@@ -535,6 +537,12 @@ void CallWidget::slotCustomContextMenuRequested(const QPoint& pos)
setupSmartListContextMenu(pos);
}
void CallWidget::slotAccountChanged(int index)
{
auto accountList = LRCInstance::accountModel().getAccountList();
setSelectedAccount(accountList.at(index));
}
void CallWidget::slotShowCallView(const std::string& accountId,
const lrc::api::conversation::Info& convInfo)
{
......@@ -1023,8 +1031,7 @@ CallWidget::updateSmartList()
void
CallWidget::update()
{
ui->currentAccountWidget->update();
updateSmartList();
updateConversationsFilterWidget();
connectConversationModel();
}
\ No newline at end of file
}
......@@ -74,7 +74,8 @@ public slots:
void slotAcceptInviteClicked(const QModelIndex& index);
void slotBlockInviteClicked(const QModelIndex& index);
void slotIgnoreInviteClicked(const QModelIndex& index);
void slotCustomContextMenuRequested(const QPoint & pos);
void slotCustomContextMenuRequested(const QPoint & pos);
void slotAccountChanged(int index);
void slotShowCallView(const std::string & accountId, const lrc::api::conversation::Info & convInfo);
void slotShowIncomingCallView(const std::string & accountId, const lrc::api::conversation::Info & convInfo);
void slotShowChatView(const std::string & accountId, const lrc::api::conversation::Info & convInfo);
......
......@@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>1128</width>
<height>724</height>
<width>747</width>
<height>639</height>
</rect>
</property>
<property name="sizePolicy">
......@@ -101,7 +101,7 @@
<enum>QLayout::SetDefaultConstraint</enum>
</property>
<item>
<widget class="CurrentAccountWidget" name="currentAccountWidget" native="true">
<widget class="CurrentAccountComboBox" name="currentAccountComboBox" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
<horstretch>0</horstretch>
......@@ -114,6 +114,12 @@
<height>60</height>
</size>
</property>
<property name="autoFillBackground">
<bool>false</bool>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
</widget>
</item>
<item>
......@@ -1811,12 +1817,6 @@
<header>sendcontactrequestwidget.h</header>
<container>1</container>
</customwidget>
<customwidget>
<class>CurrentAccountWidget</class>
<extends>QWidget</extends>
<header>currentaccountwidget.h</header>
<container>1</container>
</customwidget>
<customwidget>
<class>ContactRequestWidget</class>
<extends>QWidget</extends>
......@@ -1829,6 +1829,11 @@
<header>conversationsfilterwidget.h</header>
<container>1</container>
</customwidget>
<customwidget>
<class>CurrentAccountComboBox</class>
<extends>QWidget</extends>
<header>currentaccountcombobox.h</header>
</customwidget>
</customwidgets>
<resources>
<include location="ressources.qrc"/>
......
/***************************************************************************
* Copyright (C) 2018 by Savoir-faire Linux *
* Author: Isa Nanic <isa.nanic@savoirfairelinux.com> *
* Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com> *
* *
* 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 <http://www.gnu.org/licenses/>. *
**************************************************************************/
#include "currentaccountcombobox.h"
#include <accountitemdelegate.h>
#include "pixbufmanipulator.h"
#include "utils.h"
#include "ringthemeutils.h"
#include "lrcinstance.h"
#include <QPixmap>
#include "callwidget.h"
#include "ui_callwidget.h"
#undef REGISTERED
CurrentAccountComboBox::CurrentAccountComboBox(QWidget* parent)
{
Q_UNUSED(parent);
accountListModel_ = std::make_unique<AccountListModel>();
this->setModel(accountListModel_.get());
accountItemDelegate_ = new AccountItemDelegate();
this->setItemDelegate(accountItemDelegate_);
// combobox index changed and so must the avatar
connect(this, QOverload<int>::of(&QComboBox::currentIndexChanged),
[=](const int& index) {
importLabelPhoto(index);
});
// account added to combobox
connect(&LRCInstance::accountModel(),
&lrc::api::NewAccountModel::accountAdded,
[this](const std::string& accountId) {
auto accountList = LRCInstance::accountModel().getAccountList();
auto it = std::find(accountList.begin(), accountList.end(), accountId);
if (it != accountList.end()) {
this->setCurrentIndex(std::distance(accountList.begin(), it));
}
});
}
CurrentAccountComboBox::~CurrentAccountComboBox()
{
delete accountItemDelegate_;
}
void
CurrentAccountComboBox::paintEvent(QPaintEvent* e)
{
Q_UNUSED(e);
QPoint p(2, 2);
QPainter painter(this);
painter.setRenderHints(QPainter::Antialiasing, QPainter::TextAntialiasing);
QStyleOption opt;
opt.init(this);
style()->drawPrimitive(QStyle::PE_Widget, &opt, &painter, this);
// create box in which to draw avatar and presence indicator
QRect avatarRect(2, 2, cellHeight_, cellHeight_); // [screen awareness]
QRect comboBoxRect(52, 2, 322, cellHeight_-4); // [screen awareness]
// define and set the two fonts
QFont fontPrimary = painter.font();
QFont fontSecondary = painter.font();
fontPrimary.setPointSize(11);
fontPrimary.setWeight(QFont::ExtraLight);
fontSecondary.setPointSize(10);
painter.setFont(fontPrimary);
QFontMetrics fontMetricPrimary(fontPrimary);
QFontMetrics fontMetricSecondary(fontSecondary);
painter.drawPixmap(p, currentAccountAvatarImage_);
// fill in presence indicator if account is registered
auto accountStatus = LRCInstance::getCurrentAccountInfo().status;
if (accountStatus == lrc::api::account::Status::REGISTERED) {
// paint the presence indicator circle
QPainterPath outerCircle, innerCircle;
QPointF presenceCenter(40.0, 40.0);
qreal outerCircleRadius = cellHeight_/6.5;
qreal innerCircleRadius = outerCircleRadius - 1;
outerCircle.addEllipse(presenceCenter, outerCircleRadius, outerCircleRadius);
innerCircle.addEllipse(presenceCenter, innerCircleRadius, innerCircleRadius);
painter.fillPath(outerCircle, Qt::white);
painter.fillPath(innerCircle, RingTheme::presenceGreen_);
}
// write primary and secondary account identifiers to combobox label
const int elidConst = 85; // [screen awareness]
QString primaryAccountID = QString::fromStdString(Utils::bestNameForAccount(LRCInstance::getCurrentAccountInfo()));
painter.setPen(Qt::black);
primaryAccountID = fontMetricPrimary.elidedText(primaryAccountID, Qt::ElideRight, comboBoxRect.width() - elidConst);
painter.drawText(comboBoxRect, Qt::AlignLeft, primaryAccountID);
QString secondaryAccountID = QString::fromStdString(Utils::secondBestNameForAccount(LRCInstance::getCurrentAccountInfo()));
secondaryAccountID = fontMetricSecondary.elidedText(secondaryAccountID, Qt::ElideRight, comboBoxRect.width() - elidConst - 2); // [screen awareness]
if (secondaryAccountID.length()) { // if secondary accound id exists
painter.setFont(fontSecondary);
painter.setPen(Qt::lightGray);
painter.drawText(comboBoxRect, (Qt::AlignBottom | Qt::AlignLeft), secondaryAccountID);
}
if (LRCInstance::accountModel().getAccountList().size() <= 1) {
this->setDisabled(true);
}
else {
this->setEnabled(true);
}
painter.end();
}
// import account background account pixmap and scale pixmap to fit in label
void
CurrentAccountComboBox::importLabelPhoto(const int& index)
{
currentAccountAvatarImage_ = accountListModel_->data(accountListModel_->index(index), // [efficiency improvement]
AccountListModel::Role::Picture).value<QPixmap>().scaledToHeight(cellHeight_ - 4, Qt::SmoothTransformation);
}
\ No newline at end of file
/***************************************************************************
* Copyright (C) 2018 by Savoir-faire Linux *
* Author: Isa Nanic <isa.nanic@savoirfairelinux.com> *
* Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com> *
* *
* 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 <http://www.gnu.org/licenses/>. *
**************************************************************************/
#pragma once
#include <QComboBox>
#include "accountlistmodel.h"
#include "accountitemdelegate.h"
namespace Ui {
class CurrentAccountComboBox;
}
class CurrentAccountComboBox : public QComboBox
{
Q_OBJECT
CurrentAccountComboBox(const CurrentAccountComboBox& cpy);
public:
explicit CurrentAccountComboBox(QWidget* parent = nullptr);
~CurrentAccountComboBox();
void importLabelPhoto(const int& index);
private:
void paintEvent(QPaintEvent* e);
AccountItemDelegate* accountItemDelegate_;
std::unique_ptr<AccountListModel> accountListModel_;
QPixmap currentAccountAvatarImage_;
int cellHeight_ = 48; // [screen awareness]
};
\ No newline at end of file
/***************************************************************************
* Copyright (C) 2015-2017 by Savoir-faire Linux *
* Author: Anthony Léonard <anthony.leonard@savoirfairelinux.com> *
* Author: Olivier Soldano <olivier.soldano@savoirfairelinux.com> *
* Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com> *
* *
* 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 <http://www.gnu.org/licenses/>. *
**************************************************************************/
#include "currentaccountwidget.h"
#include "ui_currentaccountwidget.h"
#include "globalinstances.h"
#include "availableaccountmodel.h"
#include "account.h"
#include "qstandarditemmodel.h"
#include "profilemodel.h"
#include "profile.h"
#include "person.h"
#include "utils.h"
#include "lrcinstance.h"
#include "pixbufmanipulator.h"
CurrentAccountWidget::CurrentAccountWidget(QWidget *parent) :
QWidget(parent),
ui(new Ui::CurrentAccountWidget)
{
ui->setupUi(this);
accountListModel_ = std::make_unique<AccountListModel>();
ui->currentAccountSelector->setModel(accountListModel_.get());
accountItemDelegate_ = new AccountItemDelegate();
ui->currentAccountSelector->setItemDelegate(accountItemDelegate_);
connect(&LRCInstance::accountModel(),
&lrc::api::NewAccountModel::accountAdded,
[this](const std::string& accountId) {
auto accountList = LRCInstance::accountModel().getAccountList();
auto it = std::find(accountList.begin(), accountList.end(), accountId);
if (it != accountList.end()) {
auto index = std::distance(accountList.begin(), it);
// newly created account
// index should be 0
QModelIndex idx = ui->currentAccountSelector->model()->index(index, 0);
emit currentAccountChanged(idx);
update();
}
});
}
CurrentAccountWidget::~CurrentAccountWidget()
{
delete ui;
}
void
CurrentAccountWidget::update()
{
if (ui->currentAccountSelector->count() <= 1) {
ui->currentAccountSelector->setEnabled(false);
ui->currentAccountSelector->setStyleSheet(
"QComboBox:disabled{color: black;}"
"QComboBox{border:0;}"
"QComboBox::down-arrow{image:url('none');}"
);
} else {
ui->currentAccountSelector->setEnabled(true);
ui->currentAccountSelector->setStyleSheet("");
}
setPhoto();
}
void
CurrentAccountWidget::setPhoto()
{
auto accountId = LRCInstance::getSelectedAccountId();
try {
auto& accountInfo = LRCInstance::accountModel().getAccountInfo(accountId);
QVariant avatarImage = PixbufManipulator::accountPhoto(accountInfo);
QImage image = Utils::getCirclePhoto(avatarImage.value<QImage>(), ui->idDisplayLayout->contentsRect().height());
ui->currentAccountPixmap->setPixmap(QPixmap::fromImage(image));
}
catch (...) {}
}
void
CurrentAccountWidget::on_currentAccountSelector_currentIndexChanged(int index)
{
QModelIndex idx = ui->currentAccountSelector->model()->index(index, 0);
emit currentAccountChanged(idx);
setPhoto();
}
void
CurrentAccountWidget::changeSelectedIndex(int index)
{
if (index != ui->currentAccountSelector->currentIndex()) {
ui->currentAccountSelector->setCurrentIndex(index);
}
}
/**************************************************************************
* Copyright (C) 2015-2017 by Savoir-faire Linux *
* Author: Anthony Léonard <anthony.leonard@savoirfairelinux.com> *
* Author: Olivier Soldano <olivier.soldano@savoirfairelinux.com> *
* *
* 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 <http://www.gnu.org/licenses/>. *
**************************************************************************/
#ifndef CURRENTACCOUNTWIDGET_H
#define CURRENTACCOUNTWIDGET_H
#include <QWidget>
#include "accountlistmodel.h"
#include "accountitemdelegate.h"
namespace Ui {
class CurrentAccountWidget;
}
class CurrentAccountWidget : public QWidget
{
Q_OBJECT
public:
explicit CurrentAccountWidget(QWidget *parent = 0);
~CurrentAccountWidget();
void changeSelectedIndex(int index);
signals:
void currentAccountChanged(const QModelIndex& current);
public slots:
void update();
void setPhoto();
private slots:
void on_currentAccountSelector_currentIndexChanged(int index);
private:
AccountItemDelegate * accountItemDelegate_;
std::unique_ptr<AccountListModel> accountListModel_;
Ui::CurrentAccountWidget *ui;
};
#endif // CURRENTACCOUNTWIDGET_H
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>CurrentAccountWidget</class>
<widget class="QWidget" name="CurrentAccountWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>461</width>
<height>128</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>100</height>
</size>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<property name="autoFillBackground">
<bool>false</bool>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<property name="spacing">
<number>0</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<layout class="QVBoxLayout" name="fullLayout" stretch="4">
<property name="spacing">
<number>0</number>
</property>
<item>
<layout class="QHBoxLayout" name="idDisplayLayout" stretch="0,0,0,0">
<property name="leftMargin">
<number>10</number>
</property>
<property name="topMargin">
<number>3</number>
</property>
<property name="rightMargin">
<number>10</number>
</property>
<property name="bottomMargin">
<number>3</number>
</property>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>10</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item alignment="Qt::AlignHCenter|Qt::AlignVCenter">
<widget class="QLabel" name="currentAccountPixmap">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>48</width>
<height>48</height>
</size>
</property>
<property name="toolTip">
<string>Account avatar</string>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Minimum</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>10</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QComboBox" name="currentAccountSelector">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>account selection combobox</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>
......@@ -117,6 +117,7 @@
</QtUic>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="currentaccountcombobox.cpp" />
<ClCompile Include="aboutdialog.cpp" />
<ClCompile Include="accountdetails.cpp" />
<ClCompile Include="accountitemdelegate.cpp" />
......@@ -134,7 +135,6 @@
<ClCompile Include="configurationwidget.cpp" />
<ClCompile Include="contactpicker.cpp" />
<ClCompile Include="contactrequestwidget.cpp" />
<ClCompile Include="currentaccountwidget.cpp" />
<ClCompile Include="deleteaccountdialog.cpp" />
<ClCompile Include="globalsystemtray.cpp" />
<ClCompile Include="idlabel.cpp" />
......@@ -189,6 +189,7 @@
<QtMoc Include="callutilsdialog.h">
</QtMoc>
<QtMoc Include="callwidget.h">
<SubType>Designer</SubType>
</QtMoc>
<QtMoc Include="configurationwidget.h">
</QtMoc>
......@@ -204,8 +205,6 @@
</QtMoc>
<QtMoc Include="contactrequestwidget.h">
</QtMoc>
<QtMoc Include="currentaccountwidget.h">
</QtMoc>
<QtMoc Include="deleteaccountdialog.h">
</QtMoc>
<QtMoc Include="globalsystemtray.h">
......@@ -228,6 +227,10 @@
<IncludePath Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\GeneratedFiles\$(ConfigurationName)\.;.\GeneratedFiles;.;$(ProjectDir)..\daemon\contrib\msvc\include;$(ProjectDir)..\lrc\src;$(ProjectDir)..\client-windows\winsparkle\include;$(ProjectDir)..\client-windows\qrencode-win32\qrencode-win32;$(QTDIR)\include;$(QTDIR)\include\QtSvg;$(QTDIR)\include\QtWidgets;$(QTDIR)\include\QtWinExtras;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtANGLE;$(QTDIR)\include\QtXml;$(QTDIR)\include\QtNetwork;$(QTDIR)\include\QtCore;$(QTDIR)\mkspecs\win32-msvc;.\release</IncludePath>
<Define Condition="'$(Configuration)|$(Platform)'=='Release|x64'">_WINDOWS;UNICODE;_UNICODE;WIN32;WIN64;NIGHTLY_VERSION=20180706;ENABLE_AUTOUPDATE;QT_NO_DEBUG;NDEBUG</Define>
</QtMoc>
<QtMoc Include="currentaccountcombobox.h">
<IncludePath Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\GeneratedFiles\$(ConfigurationName)\.;.\GeneratedFiles;.;$(ProjectDir)..\daemon\contrib\msvc\include;$(ProjectDir)..\lrc\src;$(ProjectDir)..\client-windows\winsparkle\include;$(ProjectDir)..\client-windows\qrencode-win32\qrencode-win32;$(QTDIR)\include;$(QTDIR)\include\QtSvg;$(QTDIR)\include\QtWidgets;$(QTDIR)\include\QtWinExtras;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtANGLE;$(QTDIR)\include\QtXml;$(QTDIR)\include\QtNetwork;$(QTDIR)\include\QtCore;$(QTDIR)\mkspecs\win32-msvc;.\release</IncludePath>
<Define Condition="'$(Configuration)|$(Platform)'=='Release|x64'">_WINDOWS;UNICODE;_UNICODE;WIN32;WIN64;NIGHTLY_VERSION=20180706;ENABLE_AUTOUPDATE;QT_NO_DEBUG;NDEBUG</Define>