summaryrefslogtreecommitdiff
path: root/src/statusbar.h
blob: 708615a12af210a7617b2185c8926e0e75749a5d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#ifndef MO_STATUSBAR_H
#define MO_STATUSBAR_H

#include <QStatusBar>
#include <QProgressBar>

struct APIStats;
class APIUserAccount;
class Settings;
namespace Ui { class MainWindow; }


class StatusBarAction : public QWidget
{
public:
  StatusBarAction(QAction* action);

  void set(bool visible);

protected:
  void mouseDoubleClickEvent(QMouseEvent* e) override;

private:
  QAction* m_action;
  QLabel* m_icon;
  QLabel* m_text;

  QString cleanupActionText(const QString& s) const;
};


class StatusBar : public QStatusBar
{
public:
  StatusBar(QWidget* parent=nullptr);

  void setup(Ui::MainWindow* ui, const Settings& settings);

  void setProgress(int percent);
  void setNotifications(bool hasNotifications);
  void setAPI(const APIStats& stats, const APIUserAccount& user);
  void setUpdateAvailable(bool b);
  void checkSettings(const Settings& settings);

protected:
  void showEvent(QShowEvent* e);
  void hideEvent(QHideEvent* e);

private:
  Ui::MainWindow* ui;
  QProgressBar* m_progress;
  QWidget* m_progressSpacer1;
  QWidget* m_progressSpacer2;
  StatusBarAction* m_notifications;
  StatusBarAction* m_update;
  QLabel* m_api;

  void visibilityChanged(bool visible);
};

#endif // MO_STATUSBAR_H