527137e3ee
Now it can't be told if this is was a Windows App before. All Mac design principles are fulfilled and some cosmetics have been applied to suit the native look and feel. The biggest change there is the proper use of the Dock icon which takes the role of the Tray icon on Mac. The QDoubleSpinBox improves entering of Bitcoin amounts, no two separate fields are required anymore. All functionality and validation effects have been retained; pressing the comma key will be internally translated to a period to keep it consistent throughout the application and eases entering in countries which use the comma as decimal separator. Additionally, Notificator now supports Growl, Mac's native notification system. This is provided via Apple Script in order to avoid linking to Growl on compile time. Other changes involve encapsulation of Toolbar and Menubar creation, loading of Qt's own translation and some clean up.
58 lines
1.3 KiB
C++
58 lines
1.3 KiB
C++
#ifndef BITCOINFIELD_H
|
|
#define BITCOINFIELD_H
|
|
|
|
#include <QWidget>
|
|
|
|
QT_BEGIN_NAMESPACE
|
|
class QDoubleSpinBox;
|
|
class QValueComboBox;
|
|
QT_END_NAMESPACE
|
|
|
|
// Coin amount entry widget with separate parts for whole
|
|
// coins and decimals.
|
|
class BitcoinAmountField: public QWidget
|
|
{
|
|
Q_OBJECT
|
|
Q_PROPERTY(qint64 value READ value WRITE setValue NOTIFY textChanged USER true)
|
|
public:
|
|
explicit BitcoinAmountField(QWidget *parent = 0);
|
|
|
|
qint64 value(bool *valid=0) const;
|
|
void setValue(qint64 value);
|
|
|
|
// Mark current valid as invalid in UI
|
|
void setValid(bool valid);
|
|
bool validate();
|
|
|
|
// Change current unit
|
|
void setDisplayUnit(int unit);
|
|
|
|
// Make field empty and ready for new input
|
|
void clear();
|
|
|
|
// Qt messes up the tab chain by default in some cases (issue http://bugreports.qt.nokia.com/browse/QTBUG-10907)
|
|
// Hence we have to set it up manually
|
|
QWidget *setupTabChain(QWidget *prev);
|
|
|
|
signals:
|
|
void textChanged();
|
|
|
|
protected:
|
|
// Intercept focus-in event and ',' keypresses
|
|
bool eventFilter(QObject *object, QEvent *event);
|
|
|
|
private:
|
|
QDoubleSpinBox *amount;
|
|
QValueComboBox *unit;
|
|
int currentUnit;
|
|
|
|
void setText(const QString &text);
|
|
QString text() const;
|
|
|
|
private slots:
|
|
void unitChanged(int idx);
|
|
|
|
};
|
|
|
|
|
|
#endif // BITCOINFIELD_H
|