Skip to content

Commit

Permalink
add new wizard
Browse files Browse the repository at this point in the history
Change-Id: I138136ff268d717967d62e2e612798c39f3e098d
  • Loading branch information
atraczyk committed Dec 22, 2018
1 parent 5bafcb9 commit 6ace34f
Show file tree
Hide file tree
Showing 35 changed files with 2,518 additions and 190 deletions.
20 changes: 15 additions & 5 deletions accountitemdelegate.cpp
Expand Up @@ -25,6 +25,7 @@
#include "utils.h"
#include "accountlistmodel.h"
#include "ringthemeutils.h"
#include "lrcinstance.h"

#undef REGISTERED

Expand Down Expand Up @@ -62,6 +63,20 @@ AccountItemDelegate::paint(QPainter* painter,

QRect &rect = opt.rect;

QFont font(painter->font());
font.setPointSize(fontSize_);
QPen pen(painter->pen());

// is it the add account row?
if (index.row() == LRCInstance::accountModel().getAccountList().size()) {
pen.setColor(RingTheme::lightBlack_);
painter->setPen(pen);
painter->setFont(font);
QFontMetrics fontMetrics(font);
painter->drawText(rect, Qt::AlignVCenter | Qt::AlignHCenter, tr("Add Account") + "+");
return;
}

// Avatar drawing
opt.decorationSize = QSize(avatarSize_, avatarSize_);
opt.decorationPosition = QStyleOptionViewItem::Left;
Expand All @@ -72,8 +87,6 @@ AccountItemDelegate::paint(QPainter* painter,
QPixmap::fromImage(index.data(AccountListModel::Role::Picture).value<QImage>())
.scaled(avatarSize_, avatarSize_, Qt::KeepAspectRatio, Qt::SmoothTransformation));

QFont font(painter->font());

// Presence indicator
QPainterPath outerCircle, innerCircle;
QPointF center(rectAvatar.right() - avatarSize_ / 6, (rectAvatar.bottom() - avatarSize_ / 6) + 1);
Expand All @@ -87,9 +100,6 @@ AccountItemDelegate::paint(QPainter* painter,
painter->fillPath(innerCircle, RingTheme::presenceGreen_);
}

font.setPointSize(fontSize_);
QPen pen(painter->pen());

painter->setPen(pen);

QRect rectTexts(dx_ + rect.left() + dx_ + avatarSize_,
Expand Down
2 changes: 1 addition & 1 deletion accountlistmodel.cpp
Expand Up @@ -37,7 +37,7 @@ AccountListModel::AccountListModel(QObject *parent)
int AccountListModel::rowCount(const QModelIndex &parent) const
{
if (!parent.isValid()) {
return LRCInstance::accountModel().getAccountList().size(); // count
return LRCInstance::accountModel().getAccountList().size() + 1; // count
}
return 0; // A valid QModelIndex returns 0 as no entry has sub-elements
}
Expand Down
24 changes: 16 additions & 8 deletions callwidget.cpp
Expand Up @@ -128,6 +128,11 @@ CallWidget::CallWidget(QWidget* parent) :
connect(ui->currentAccountComboBox, &CurrentAccountComboBox::settingsButtonClicked,
this, &CallWidget::settingsButtonClicked);

connect(ui->currentAccountComboBox, &CurrentAccountComboBox::newAccountClicked,
[this]() {
emit NavigationRequested(ScreenEnum::WizardScreen);
});

connect(ui->videoWidget, &VideoView::setChatVisibility,
[this](bool visible) {
if (visible) {
Expand Down Expand Up @@ -223,12 +228,17 @@ CallWidget::navigated(bool to)
if (to) {
updateSmartList();
connectConversationModel();
ui->currentAccountComboBox->accountListUpdate();
} else {
QObject::disconnect(smartlistSelectionConnection_);
smartListModel_.reset(nullptr);
}
}

void CallWidget::updateCustomUI()
{
}

int
CallWidget::getLeftPanelWidth()
{
Expand Down Expand Up @@ -592,8 +602,12 @@ void CallWidget::slotCustomContextMenuRequested(const QPoint& pos)

void CallWidget::slotAccountChanged(int index)
{
auto accountList = LRCInstance::accountModel().getAccountList();
setSelectedAccount(accountList.at(index));
try {
auto accountList = LRCInstance::accountModel().getAccountList();
setSelectedAccount(accountList.at(index));
} catch (...) {
qWarning() << "exception changing account";
}
}

void CallWidget::slotShowCallView(const std::string& accountId,
Expand Down Expand Up @@ -914,12 +928,6 @@ CallWidget::on_sendContactRequestButton_clicked()
LRCInstance::getCurrentConversationModel()->makePermanent(selectedConvUid());
}

void
CallWidget::on_pendingCRBackButton_clicked()
{
ui->stackedWidget->setCurrentWidget(ui->welcomePage);
}

void
CallWidget::on_btnAudioCall_clicked()
{
Expand Down
2 changes: 1 addition & 1 deletion callwidget.h
Expand Up @@ -68,6 +68,7 @@ class CallWidget : public NavWidget

// NavWidget
virtual void navigated(bool to);
virtual void updateCustomUI();

public slots:
void on_ringContactLineEdit_returnPressed();
Expand Down Expand Up @@ -98,7 +99,6 @@ private slots:
void on_smartList_clicked(const QModelIndex &index);
void on_qrButton_toggled(bool checked);
void on_shareButton_clicked();
void on_pendingCRBackButton_clicked();
void on_btnAudioCall_clicked();
void on_btnVideoCall_clicked();

Expand Down
19 changes: 13 additions & 6 deletions currentaccountcombobox.cpp
Expand Up @@ -39,7 +39,7 @@ CurrentAccountComboBox::CurrentAccountComboBox(QWidget* parent)
gearLabel_.setMouseTracking(true);

accountListUpdate();
accountItemDelegate_ = new AccountItemDelegate();
accountItemDelegate_ = new AccountItemDelegate(this);
this->setItemDelegate(accountItemDelegate_);

// combobox index changed and so must the avatar
Expand Down Expand Up @@ -131,6 +131,10 @@ CurrentAccountComboBox::paintEvent(QPaintEvent* e)
painter.setPen(Qt::lightGray);
painter.drawText(comboBoxRect, (Qt::AlignBottom | Qt::AlignLeft), secondaryAccountID);
}

if (QWidget* popupWidget = this->findChild<QFrame*>()) {
popupWidget->setStyleSheet("QFrame{border: 0px;border-bottom: 1px solid #f0f0f0;}");
}
}

void CurrentAccountComboBox::resizeEvent(QResizeEvent* event)
Expand Down Expand Up @@ -160,8 +164,13 @@ CurrentAccountComboBox::importLabelPhoto(int index)
void
CurrentAccountComboBox::setCurrentIndex(int index)
{
importLabelPhoto(index);
QComboBox::setCurrentIndex(index);
auto accountListSize = LRCInstance::accountModel().getAccountList().size();
if (index == accountListSize) {
emit newAccountClicked();
} else if (index < accountListSize) {
importLabelPhoto(index);
QComboBox::setCurrentIndex(index);
}
}

void
Expand All @@ -176,9 +185,7 @@ void
CurrentAccountComboBox::mousePressEvent(QMouseEvent* mouseEvent)
{
if (!gearLabel_.frameGeometry().contains(mouseEvent->localPos().toPoint())) {
if (count() > 1) {
QComboBox::mousePressEvent(mouseEvent);
}
QComboBox::mousePressEvent(mouseEvent);
} else {
emit settingsButtonClicked();
}
Expand Down
5 changes: 3 additions & 2 deletions currentaccountcombobox.h
Expand Up @@ -40,19 +40,20 @@ class CurrentAccountComboBox : public QComboBox

signals:
void settingsButtonClicked();
void newAccountClicked();

protected:
void paintEvent(QPaintEvent* e);
void resizeEvent(QResizeEvent *event);
void mousePressEvent(QMouseEvent* mouseEvent);
void mouseMoveEvent(QMouseEvent* event);
void leaveEvent(QEvent * event);
void showPopup();
void hidePopup();

private:
void importLabelPhoto(int index);
void setupSettingsButton();
void showPopup();
void hidePopup();

AccountItemDelegate* accountItemDelegate_;
std::unique_ptr<AccountListModel> accountListModel_;
Expand Down
Binary file removed images/background-dark.png
Binary file not shown.
Binary file removed images/background-light.png
Binary file not shown.
1 change: 1 addition & 0 deletions images/icons/baseline-camera_alt-24px.svg
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions images/icons/baseline-close-24px.svg
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions images/icons/baseline-done-24px.svg
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions images/icons/baseline-error_outline-24px.svg
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions images/icons/baseline-refresh-24px.svg
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/jami_eclipse_spinner.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/jami_rolling_spinner.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed images/loading.gif
Binary file not shown.
1 change: 1 addition & 0 deletions main.cpp
Expand Up @@ -104,6 +104,7 @@ int
main(int argc, char *argv[])
{
QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QGuiApplication::setAttribute(Qt::AA_UseHighDpiPixmaps);

QApplication a(argc, argv);

Expand Down
25 changes: 23 additions & 2 deletions mainwindow.cpp
Expand Up @@ -65,6 +65,7 @@ MainWindow::MainWindow(QWidget* parent) :
QIcon icon(":images/jami.png");

this->setWindowIcon(icon);
setWindowTitle(" ");

GlobalSystemTray& sysIcon = GlobalSystemTray::instance();
sysIcon.setIcon(icon);
Expand Down Expand Up @@ -147,6 +148,15 @@ MainWindow::MainWindow(QWidget* parent) :
}

lastScr_ = startScreen;

connect(windowHandle(), &QWindow::activeChanged,
[this]() {
auto screenNumber = qApp->desktop()->screenNumber();
QScreen* screen = qApp->screens().at(screenNumber);
windowHandle()->setScreen(nullptr);
windowHandle()->setScreen(screen);
});

}

MainWindow::~MainWindow()
Expand Down Expand Up @@ -297,7 +307,6 @@ void
MainWindow::setWindowSize(ScreenEnum scr, bool firstUse)
{
auto screenNumber = qApp->desktop()->screenNumber();
QScreen* screen = qApp->screens().at(screenNumber);
auto accountList = LRCInstance::accountModel().getAccountList();
if (scr == ScreenEnum::WizardScreen && !accountList.size()) {
hide();
Expand All @@ -315,7 +324,6 @@ MainWindow::setWindowSize(ScreenEnum scr, bool firstUse)
qApp->desktop()->screenGeometry(screenNumber)
)
);
windowHandle()->setScreen(screen);
if (scr == ScreenEnum::WizardScreen) {
setWindowFlags(Qt::Dialog);
setWindowFlags(windowFlags() & (~Qt::WindowContextHelpButtonHint));
Expand All @@ -336,8 +344,21 @@ MainWindow::show()
disconnect(screenChangedConnection_);
screenChangedConnection_ = connect(windowHandle(), &QWindow::screenChanged,
[this](QScreen* screen) {
Q_UNUSED(screen);
adjustSize();
updateGeometry();
update();
// a little delay won't hurt ;)
QTimer::singleShot(100, this,
[this] {
qobject_cast<NavWidget*>(ui->navStack->currentWidget())->updateCustomUI();
});
});
}

void
MainWindow::resizeEvent(QResizeEvent* event)
{
Q_UNUSED(event);
qobject_cast<NavWidget*>(ui->navStack->currentWidget())->updateCustomUI();
}
1 change: 1 addition & 0 deletions mainwindow.h
Expand Up @@ -59,6 +59,7 @@ class MainWindow : public QMainWindow
protected:
bool nativeEvent(const QByteArray& eventType, void* message, long* result);
void closeEvent(QCloseEvent* event);
void resizeEvent(QResizeEvent *event);

public slots:
void onRingEvent(const QString& uri);
Expand Down
12 changes: 6 additions & 6 deletions mainwindow.ui
Expand Up @@ -463,7 +463,7 @@
</property>
<item>
<widget class="QStackedWidget" name="navStack">
<widget class="WizardWidget" name="wizardwidget"/>
<widget class="NewWizardWidget" name="wizardwidget"/>
<widget class="CallWidget" name="callwidget"/>
<widget class="SettingsWidget" name="settingswidget">
<property name="sizePolicy">
Expand All @@ -487,15 +487,15 @@
<container>1</container>
</customwidget>
<customwidget>
<class>WizardWidget</class>
<class>SettingsWidget</class>
<extends>QWidget</extends>
<header>wizardwidget.h</header>
<container>1</container>
<header>settingswidget.h</header>
</customwidget>
<customwidget>
<class>SettingsWidget</class>
<class>NewWizardWidget</class>
<extends>QWidget</extends>
<header>settingswidget.h</header>
<header>newwizardwidget.h</header>
<container>1</container>
</customwidget>
</customwidgets>
<resources>
Expand Down
1 change: 1 addition & 0 deletions navwidget.h
Expand Up @@ -37,6 +37,7 @@ class NavWidget : public QWidget
~NavWidget();

virtual void navigated(bool to) = 0;
virtual void updateCustomUI() = 0;

signals:
void NavigationRequested(ScreenEnum screen);
Expand Down

0 comments on commit 6ace34f

Please sign in to comment.