diff --git a/callwidget.cpp b/callwidget.cpp index 62868c8a106493a0400538f99391d11b73514553..3a794ac65d200c016f5e9789631915af61daa29c 100644 --- a/callwidget.cpp +++ b/callwidget.cpp @@ -1122,6 +1122,7 @@ CallWidget::connectConversationModel() updateSmartList(); updateConversationForNewContact(convUid); ui->conversationsFilterWidget->update(); + ui->currentAccountComboBox->canPlaceAudioOnlyCall(convUid); } ); conversationRemovedConnection_ = QObject::connect( diff --git a/currentaccountcombobox.cpp b/currentaccountcombobox.cpp index b71b2c14f38f016560b41031bdd47a4c12996f59..d3693e50f924004296084a886cadd27598952dd8 100644 --- a/currentaccountcombobox.cpp +++ b/currentaccountcombobox.cpp @@ -19,9 +19,6 @@ #include "currentaccountcombobox.h" -#include <QPixmap> -#include <QMouseEvent> - #include "accountitemdelegate.h" #include "pixbufmanipulator.h" #include "utils.h" @@ -29,6 +26,10 @@ #include "lrcinstance.h" #include "mainwindow.h" +#include <QPixmap> +#include <QMessageBox> +#include <QMouseEvent> + #undef REGISTERED CurrentAccountComboBox::CurrentAccountComboBox(QWidget* parent) @@ -37,6 +38,9 @@ CurrentAccountComboBox::CurrentAccountComboBox(QWidget* parent) setMouseTracking(true); gearLabel_.setMouseTracking(true); + voicemailButton_.setMouseTracking(true); + voicemailButton_.setNeedToShowNotify(false); + voicemailButton_.setEnabled(false); accountListUpdate(); accountItemDelegate_ = new AccountItemDelegate(this); @@ -59,10 +63,65 @@ CurrentAccountComboBox::CurrentAccountComboBox(QWidget* parent) } }); + // voicemail received + connect(LRCInstance::getCurrentCallModel(), &lrc::api::NewCallModel::voiceMailNotify, + [this] (const std::string& accountId, int newCount, int oldCount, int urgentCount) { + Q_UNUSED(urgentCount); + voicemailMap_[accountId] = std::make_pair(newCount, oldCount); + if (LRCInstance::accountModel().getAccountList()[currentIndex()] == accountId) { + if (newCount == 0 && oldCount == 0) { + voicemailButton_.setNeedToShowNotify(false); + voicemailButton_.setEnabled(false); + return; + } + if (newCount == 0) { + voicemailButton_.setNotifyNumber(oldCount); + voicemailButton_.setGreyStyleNotification(true); + } else { + voicemailButton_.setNotifyNumber(newCount); + voicemailButton_.setGreyStyleNotification(false); + } + voicemailButton_.setNeedToShowNotify(true); + voicemailButton_.setEnabled(true); + } + }); + + connect(&voicemailButton_, &QAbstractButton::clicked, + [this] { + auto currentAccountId = LRCInstance::accountModel().getAccountList()[currentIndex()]; + auto &accInfo = LRCInstance::accountModel().getAccountInfo(currentAccountId); + auto conversationModel = accInfo.conversationModel.get(); + auto confProps = LRCInstance::accountModel().getAccountConfig(currentAccountId); + + auto possibleConv = LRCInstance::getConversationFromPeerUri(confProps.mailbox); + if (possibleConv.uid.empty()) { + if (confProps.mailbox.empty()) { + QMessageBox::information(0, "Voicemail", "Voicemail dial code is empty"); + } + // construct new contact + lrc::api::profile::Type type{ lrc::api::profile::Type::SIP }; + lrc::api::contact::Info contactInfo{ {{confProps.mailbox}, {} , {"Voicemail"}, type }, {} }; + + Utils::oneShotConnect(this, &CurrentAccountComboBox::placeAudioOnlyCall, + [this, conversationModel] (const std::string& convUid) { + conversationModel->placeAudioOnlyCall(convUid); + }); + accInfo.contactModel->addContact(contactInfo); + } else { + // contact existed + conversationModel->placeAudioOnlyCall(possibleConv.uid); + } + }); + gearLabel_.setPixmap(QPixmap(":/images/icons/round-settings-24px.svg")); gearLabel_.setParent(this); gearLabel_.setStyleSheet("background: transparent;"); setupSettingsButton(); + + voicemailButton_.setIcon(QIcon(QPixmap(":/images/icons/ic_voicemail_black_24dp_2x_.png"))); + voicemailButton_.setParent(this); + voicemailButton_.setStyleSheet("background: transparent;"); + setupVoicemailButton(); } CurrentAccountComboBox::~CurrentAccountComboBox() @@ -126,12 +185,12 @@ CurrentAccountComboBox::paintEvent(QPaintEvent* e) painter.setFont(fontPrimary); painter.setPen(RingTheme::lightBlack_); primaryAccountID = fontMetricPrimary.elidedText(primaryAccountID, Qt::ElideRight, - comboBoxRect.width() - elidConst - (popupPresent ? 0 : 2 * gearSize_)); + comboBoxRect.width() - elidConst - (popupPresent ? 0 : 2 * gearSize_ + 2 * voicemailSize_)); painter.drawText(comboBoxRect, Qt::AlignLeft, primaryAccountID); QString secondaryAccountID = QString::fromStdString(Utils::secondBestNameForAccount(LRCInstance::getCurrentAccountInfo())); secondaryAccountID = fontMetricSecondary.elidedText(secondaryAccountID, Qt::ElideRight, - comboBoxRect.width() - elidConst - 2 - (popupPresent ? 0 : 2 * gearSize_)); // [screen awareness] + comboBoxRect.width() - elidConst - 2 - (popupPresent ? 0 : 2 * gearSize_ + 2 * voicemailSize_)); // [screen awareness] if (secondaryAccountID.length()) { // if secondary accound id exists painter.setFont(fontSecondary); @@ -148,6 +207,7 @@ void CurrentAccountComboBox::resizeEvent(QResizeEvent* event) { Q_UNUSED(event); setupSettingsButton(); + setupVoicemailButton(); } void @@ -162,6 +222,17 @@ CurrentAccountComboBox::setupSettingsButton() gearLabel_.setMargin(gearBorder_); } +void +CurrentAccountComboBox::setupVoicemailButton() +{ + voicemailPoint_.setX(this->width() - gearSize_ - voicemailSize_ - 6 * voicemailBorder_ - 5 * gearBorder_ - 1); + voicemailPoint_.setY(this->height() / 2 - voicemailButton_.height() / 2 - 2 * voicemailBorder_ + 8); + voicemailButton_.setGeometry( + voicemailPoint_.x(), voicemailPoint_.y(), + voicemailSize_ + 2 * voicemailBorder_, + voicemailSize_ + 2 * voicemailBorder_); +} + // import account background account pixmap and scale pixmap to fit in label void CurrentAccountComboBox::importLabelPhoto(int index) @@ -177,11 +248,42 @@ void CurrentAccountComboBox::setCurrentIndex(int index) { auto accountListSize = LRCInstance::accountModel().getAccountList().size(); + if (index == accountListSize) { emit newAccountClicked(); } else if (index < accountListSize) { importLabelPhoto(index); QComboBox::setCurrentIndex(index); + + auto accountId = LRCInstance::accountModel().getAccountList()[index]; + auto& info = LRCInstance::accountModel().getAccountInfo(accountId); + if (!(info.profileInfo.type == lrc::api::profile::Type::SIP)) { + voicemailButton_.setNeedToShowNotify(false); + voicemailButton_.setEnabled(false); + } else { + if (voicemailMap_.find(accountId) != voicemailMap_.end()) { + int newVoiceMail = voicemailMap_[accountId].first; + int oldVoiceMail = voicemailMap_[accountId].second; + + if (newVoiceMail == 0 && oldVoiceMail == 0) { + voicemailButton_.setNeedToShowNotify(false); + voicemailButton_.setEnabled(false); + return; + } + if (newVoiceMail == 0) { + voicemailButton_.setNotifyNumber(oldVoiceMail); + voicemailButton_.setGreyStyleNotification(true); + } else { + voicemailButton_.setNotifyNumber(newVoiceMail); + voicemailButton_.setGreyStyleNotification(false); + } + voicemailButton_.setNeedToShowNotify(true); + voicemailButton_.setEnabled(true); + return; + } + voicemailButton_.setNeedToShowNotify(false); + voicemailButton_.setEnabled(false); + } } } @@ -196,10 +298,10 @@ CurrentAccountComboBox::accountListUpdate() void CurrentAccountComboBox::mousePressEvent(QMouseEvent* mouseEvent) { - if (!gearLabel_.frameGeometry().contains(mouseEvent->localPos().toPoint())) { - QComboBox::mousePressEvent(mouseEvent); - } else { + if (gearLabel_.frameGeometry().contains(mouseEvent->localPos().toPoint())) { emit settingsButtonClicked(); + } else { + QComboBox::mousePressEvent(mouseEvent); } } @@ -211,14 +313,21 @@ CurrentAccountComboBox::mouseMoveEvent(QMouseEvent* mouseEvent) QComboBox::mouseMoveEvent(mouseEvent); gearLabel_.setStyleSheet("background: rgb(237, 237, 237); border-width: 0px; border-radius: 15px;"); return; + } else if (voicemailButton_.geometry().contains(mouseEvent->localPos().toPoint())) { + QComboBox::mouseMoveEvent(mouseEvent); + voicemailButton_.setStyleSheet("background: rgb(237, 237, 237); border-width: 0px; border-radius: 15px;"); + return; } + voicemailButton_.setStyleSheet("background: transparent;"); gearLabel_.setStyleSheet("background: transparent;"); } void CurrentAccountComboBox::showPopup() { + voicemailButton_.setNeedToShowNotify(false); + voicemailButton_.setEnabled(false); gearLabel_.hide(); popupPresent = true; QComboBox::showPopup(); @@ -227,6 +336,13 @@ CurrentAccountComboBox::showPopup() void CurrentAccountComboBox::hidePopup() { + auto accountId { LRCInstance::getCurrAccId() }; + auto& info = LRCInstance::accountModel().getAccountInfo(accountId); + if (info.profileInfo.type == lrc::api::profile::Type::SIP + && voicemailMap_.find(accountId) != voicemailMap_.end()) { + voicemailButton_.setNeedToShowNotify(true); + voicemailButton_.setEnabled(true); + } gearLabel_.show(); popupPresent = false; QComboBox::hidePopup(); @@ -235,6 +351,7 @@ CurrentAccountComboBox::hidePopup() void CurrentAccountComboBox::leaveEvent(QEvent* event) { + voicemailButton_.setStyleSheet("background: transparent;"); gearLabel_.setStyleSheet("background: transparent;"); QComboBox::leaveEvent(event); } diff --git a/currentaccountcombobox.h b/currentaccountcombobox.h index f7b2c434d1ae38aade569616c1b128884372a8b6..a2903ce6603cf7b41775a29e0e6006c1418c7e61 100644 --- a/currentaccountcombobox.h +++ b/currentaccountcombobox.h @@ -16,11 +16,16 @@ * 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 <QLabel> + #include "accountlistmodel.h" #include "accountitemdelegate.h" +#include "notifypushbutton.h" + +#include <QComboBox> +#include <QLabel> +#include <QPushButton> namespace Ui { class CurrentAccountComboBox; @@ -37,10 +42,12 @@ public: void accountListUpdate(); void setCurrentIndex(int index); void updateComboBoxDisplay(); + void canPlaceAudioOnlyCall(const std::string& convUid) { emit placeAudioOnlyCall(convUid); } signals: void settingsButtonClicked(); void newAccountClicked(); + void placeAudioOnlyCall(const std::string& convUid); protected: void paintEvent(QPaintEvent* e); @@ -54,6 +61,7 @@ protected: private: void importLabelPhoto(int index); void setupSettingsButton(); + void setupVoicemailButton(); AccountItemDelegate* accountItemDelegate_; std::unique_ptr<AccountListModel> accountListModel_; @@ -68,4 +76,11 @@ private: QPoint gearPoint_; QLabel gearLabel_; + + QPoint voicemailPoint_; + NotifyPushButton voicemailButton_; + const int voicemailBorder_ = 4; + const int voicemailSize_ = 24; + + std::map<std::string,std::pair<int,int>> voicemailMap_; }; diff --git a/images/icons/ic_voicemail_black_24dp_2x_.png b/images/icons/ic_voicemail_black_24dp_2x_.png new file mode 100644 index 0000000000000000000000000000000000000000..dfd0ea061893b6b5015bf8cd0717ce219c0842e6 Binary files /dev/null and b/images/icons/ic_voicemail_black_24dp_2x_.png differ diff --git a/jami-qt.pro b/jami-qt.pro index d879f763143e98bc60fcac774b28b56d0df01cf1..d9e111a1a8109802b307892e28ef522fe1f90b82 100644 --- a/jami-qt.pro +++ b/jami-qt.pro @@ -78,7 +78,8 @@ HEADERS += ./aboutdialog.h \ ./previewwidget.h \ ./rendermanager.h \ ./distantwidget.h \ - ./videowidgetbase.h + ./videowidgetbase.h \ + ./notifypushbutton.h SOURCES += ./aboutdialog.cpp \ ./banneditemwidget.cpp \ ./conversationsfilterwidget.cpp \ @@ -138,7 +139,8 @@ SOURCES += ./aboutdialog.cpp \ ./previewwidget.cpp \ ./rendermanager.cpp \ ./distantwidget.cpp \ - ./videowidgetbase.cpp + ./videowidgetbase.cpp \ + ./notifypushbutton.cpp FORMS += ./aboutdialog.ui \ ./advancedsipsettingwidget.ui \ ./callwidget.ui \ diff --git a/notifypushbutton.cpp b/notifypushbutton.cpp new file mode 100644 index 0000000000000000000000000000000000000000..8d0b4d3a4efbf7405bad0ae9ba957db048022480 --- /dev/null +++ b/notifypushbutton.cpp @@ -0,0 +1,100 @@ +/************************************************************************** +* Copyright (C) 2019 by Savoir-faire Linux * +* Author: Mingrui Zhang <mingrui.zhang@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 "notifypushbutton.h" + +#include "lrcinstance.h" + +#include <QPainter> +#include <QPainterPath> + +NotifyPushButton::NotifyPushButton(QWidget* parent, + // count + int newCount, + int notifyLimit, + // geo + int circleRadiusDivideRatio, + int circleRadiusMakeup, + int notifyCirclePresenceMakeup, + int notifyTextCorrectionY, + int notifyTextCorrectionX, + int notifyTextCorrectionXOverLimit, + // font size + int notifyNumberFontSize, + int notifyNumberFontSizeDeductionOverLimit) : + QPushButton(parent), + newCount_(newCount), + notifyLimit_(notifyLimit), + circleRadiusDivideRatio_(circleRadiusDivideRatio), + circleRadiusMakeup_(circleRadiusMakeup), + notifyCirclePresenceMakeup_(notifyCirclePresenceMakeup), + notifyTextCorrectionY_(notifyTextCorrectionY), + notifyTextCorrectionX_(notifyTextCorrectionX), + notifyTextCorrectionXOverLimit_(notifyTextCorrectionXOverLimit), + notifyNumberFontSize_(notifyNumberFontSize), + notifyNumberFontSizeDeductionOverLimit_(notifyNumberFontSizeDeductionOverLimit) +{ + +} + +NotifyPushButton::~NotifyPushButton() +{ + +} + +void +NotifyPushButton::paintEvent(QPaintEvent* e) +{ + if (!needToNotify_) { + setEnabled(false); + return; + } + + QPushButton::paintEvent(e); + + // set up + bool isOverNotifyLimit = (newCount_ > notifyLimit_) ? true : false; + + QPainter painter(this); + painter.setRenderHint(QPainter::Antialiasing, true); + + QFont font; + font.setPixelSize(isOverNotifyLimit ? notifyNumberFontSize_ - notifyNumberFontSizeDeductionOverLimit_ : notifyNumberFontSize_); + font.setWeight(QFont::Bold); + + QPainterPath notifyCircle; + QPointF presenceCenter(height() - notifyCirclePresenceMakeup_, height() - notifyCirclePresenceMakeup_); + qreal circleRadius = height() / circleRadiusDivideRatio_ + circleRadiusMakeup_; + + // draw circle + notifyCircle.addEllipse(presenceCenter, circleRadius, circleRadius); + painter.fillPath(notifyCircle, greyStyleNotification_ ? QBrush(QColor("grey")) : QBrush(QColor("red"))); + + // draw notify count + presenceCenter.setY(height() - notifyTextCorrectionY_); + presenceCenter.setX(isOverNotifyLimit ? + height() - notifyTextCorrectionX_ - notifyTextCorrectionXOverLimit_: + height() - notifyTextCorrectionX_); + painter.setPen(QPen(QColor("white"))); + painter.setOpacity(1); + painter.setFont(font); + + QString notifyCount = (isOverNotifyLimit) ? (QString::number(notifyLimit_) + "+") : QString::number(newCount_); + + painter.drawText(presenceCenter, notifyCount); +} diff --git a/notifypushbutton.h b/notifypushbutton.h new file mode 100644 index 0000000000000000000000000000000000000000..f9737a3c372f69b91836750f01da7a0fdc300a62 --- /dev/null +++ b/notifypushbutton.h @@ -0,0 +1,78 @@ +/************************************************************************** +* Copyright (C) 2019 by Savoir-faire Linux * +* Author: Mingrui Zhang <mingrui.zhang@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 "utils.h" + +#include <QColor> +#include <QImage> +#include <QPaintEvent> +#include <QPushButton> + +class NotifyPushButton : public QPushButton { + + Q_OBJECT + +public: + // note that height should always be equal to the width for this button + explicit NotifyPushButton(QWidget* parent = nullptr, + // count + int newCount = 0, + int notifyLimit = 9, + // geo + int circleRadiusDivideRatio = 5, + int circleRadiusMakeup = 0 , + int notifyCirclePresenceMakeup = 8, + int notifyTextCorrectionY = 5, + int notifyTextCorrectionX = 11, + int notifyTextCorrectionXOverLimit = 2, + // font size + int notifyNumberFontSize = 10, + int notifyNumberFontSizeDeductionOverLimit = 2); + ~NotifyPushButton(); + + // count + void setNotifyNumber(int num) { newCount_ = num; } + int getNotifyNumber() { return newCount_; } + void setNotifyLimit(int limit) { notifyLimit_ = limit; } + + void setNeedToShowNotify(bool need) { needToNotify_ = need; } + void setGreyStyleNotification(bool grey) { greyStyleNotification_ = grey; } + +protected: + void paintEvent(QPaintEvent* e); + +private: + // count + int newCount_; + int notifyLimit_; + // geo + int circleRadiusDivideRatio_; + int circleRadiusMakeup_; + int notifyCirclePresenceMakeup_; + int notifyTextCorrectionY_; + int notifyTextCorrectionX_; + int notifyTextCorrectionXOverLimit_; + // font size + int notifyNumberFontSize_; + int notifyNumberFontSizeDeductionOverLimit_; + + bool needToNotify_ { true }; + bool greyStyleNotification_ { false }; +}; diff --git a/ressources.qrc b/ressources.qrc index 31b5bf02713f30f10aa4780dd8c513b5e00cdde5..0fe012a38c07bfbee3fbec205387fa9407959358 100644 --- a/ressources.qrc +++ b/ressources.qrc @@ -88,5 +88,6 @@ <file>images/icons/icon-keypad-24.png</file> <file>images/icons/ic_play_white_24dp.png</file> <file>images/icons/icon-keypad-24-2x.png</file> + <file>images/icons/ic_voicemail_black_24dp_2x_.png</file> </qresource> </RCC> \ No newline at end of file diff --git a/ring-client-windows.vcxproj b/ring-client-windows.vcxproj index 3f1ae4c9692b492d69822eb35bf0ef94a5accc61..df350a26bf2a1a3ebcccf3cf460480e36b80ece5 100644 --- a/ring-client-windows.vcxproj +++ b/ring-client-windows.vcxproj @@ -351,6 +351,7 @@ del /s /q $(OutDir)\Jami.exp</Command> <ClCompile Include="aboutdialog.cpp" /> <ClCompile Include="distantwidget.cpp" /> <ClCompile Include="levelmeter.cpp" /> + <ClCompile Include="notifypushbutton.cpp" /> <ClCompile Include="overlaybutton.cpp" /> <ClCompile Include="previewwidget.cpp" /> <ClCompile Include="rendermanager.cpp" /> @@ -644,6 +645,10 @@ del /s /q $(OutDir)\Jami.exp</Command> <IncludePath Condition="'$(Configuration)|$(Platform)'=='ReleaseCompile|x64'">.\GeneratedFiles\$(ConfigurationName);.\GeneratedFiles;.;$(ProjectDir)..\ring-daemon\contrib\msvc\include;$(ProjectDir)..\daemon\contrib\msvc\include;$(ProjectDir)..\ring-lrc\src;$(ProjectDir)..\lrc\src;$(ProjectDir)winsparkle\include;$(ProjectDir)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\QtWebEngineWidgets;$(QTDIR)\include\QtWebChannel;$(QTDIR)\include\QtCore;$(QTDIR)\mkspecs\win32-msvc;.\release</IncludePath> <IncludePath Condition="'$(Configuration)|$(Platform)'=='Beta|x64'">.\GeneratedFiles\$(ConfigurationName);.\GeneratedFiles;.;$(ProjectDir)..\ring-daemon\contrib\msvc\include;$(ProjectDir)..\daemon\contrib\msvc\include;$(ProjectDir)..\ring-lrc\src;$(ProjectDir)..\lrc\src;$(ProjectDir)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\QtWebEngineWidgets;$(QTDIR)\include\QtWebChannel;$(QTDIR)\include\QtCore;$(QTDIR)\mkspecs\win32-msvc;.\release</IncludePath> </QtMoc> + <QtMoc Include="notifypushbutton.h"> + <IncludePath Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\GeneratedFiles\$(ConfigurationName);.\GeneratedFiles;.;$(ProjectDir)..\ring-daemon\contrib\msvc\include;$(ProjectDir)..\daemon\contrib\msvc\include;$(ProjectDir)..\ring-lrc\src;$(ProjectDir)..\lrc\src;$(ProjectDir)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\QtWebEngineWidgets;$(QTDIR)\include\QtWebChannel;$(QTDIR)\include\QtCore;$(QTDIR)\mkspecs\win32-msvc;.\release</IncludePath> + <IncludePath Condition="'$(Configuration)|$(Platform)'=='ReleaseCompile|x64'">.\GeneratedFiles\$(ConfigurationName);.\GeneratedFiles;.;$(ProjectDir)..\ring-daemon\contrib\msvc\include;$(ProjectDir)..\daemon\contrib\msvc\include;$(ProjectDir)..\ring-lrc\src;$(ProjectDir)..\lrc\src;$(ProjectDir)winsparkle\include;$(ProjectDir)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\QtWebEngineWidgets;$(QTDIR)\include\QtWebChannel;$(QTDIR)\include\QtCore;$(QTDIR)\mkspecs\win32-msvc;.\release</IncludePath> + </QtMoc> <ClInclude Include="pixbufmanipulator.h" /> <QtMoc Include="ringbutton.h"> </QtMoc> diff --git a/ring-client-windows.vcxproj.filters b/ring-client-windows.vcxproj.filters index a729d4e956cb51ffb1547e93f08a48974eb1788f..6f5c52dc53106952ad715fc48e5de3c244f5d48a 100644 --- a/ring-client-windows.vcxproj.filters +++ b/ring-client-windows.vcxproj.filters @@ -243,6 +243,9 @@ <ClCompile Include="distantwidget.cpp"> <Filter>Source Files</Filter> </ClCompile> + <ClCompile Include="notifypushbutton.cpp"> + <Filter>Source Files</Filter> + </ClCompile> </ItemGroup> <ItemGroup> <QtMoc Include="aboutdialog.h"> @@ -428,6 +431,9 @@ <QtMoc Include="distantwidget.h"> <Filter>Header Files</Filter> </QtMoc> + <QtMoc Include="notifypushbutton.h"> + <Filter>Header Files</Filter> + </QtMoc> </ItemGroup> <ItemGroup> <CustomBuild Include="debug\moc_predefs.h.cbt">