aboutsummaryrefslogtreecommitdiff
path: root/src-qt5/desktop-utils/lumina-calculator
diff options
context:
space:
mode:
authorWeblate <noreply@weblate.org>2016-10-17 06:30:04 +0000
committerWeblate <noreply@weblate.org>2016-10-17 06:30:04 +0000
commit15f388cffbbf3b331f38ea761995dbb98534228a (patch)
tree8d2d406cb57eaf11c44d52272510b9982ecd67ec /src-qt5/desktop-utils/lumina-calculator
parentTranslated using Weblate (lumina_OPEN@hu (generated)) (diff)
parentOops - forgot to save the fallback CPU temperature reading into the variable. (diff)
downloadlumina-15f388cffbbf3b331f38ea761995dbb98534228a.tar.gz
lumina-15f388cffbbf3b331f38ea761995dbb98534228a.tar.bz2
lumina-15f388cffbbf3b331f38ea761995dbb98534228a.zip
Merge remote-tracking branch 'origin/master'
Diffstat (limited to 'src-qt5/desktop-utils/lumina-calculator')
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/lumina-calculator.pro92
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/main.cpp19
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/mainUI.cpp133
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/mainUI.h50
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/mainUI.ui192
5 files changed, 486 insertions, 0 deletions
diff --git a/src-qt5/desktop-utils/lumina-calculator/lumina-calculator.pro b/src-qt5/desktop-utils/lumina-calculator/lumina-calculator.pro
new file mode 100644
index 00000000..8c36c516
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/lumina-calculator.pro
@@ -0,0 +1,92 @@
+include("$${PWD}/../../OS-detect.pri")
+
+QT += core gui widgets
+
+TARGET = lumina-calculator
+target.path = $${L_BINDIR}
+
+HEADERS += mainUI.h
+
+SOURCES += main.cpp \
+ mainUI.cpp
+
+FORMS += mainUI.ui
+
+LIBS += -lLuminaUtils
+
+DEPENDPATH += ../../libLumina
+
+TRANSLATIONS = i18n/l-calc_af.ts \
+ i18n/l-calc_ar.ts \
+ i18n/l-calc_az.ts \
+ i18n/l-calc_bg.ts \
+ i18n/l-calc_bn.ts \
+ i18n/l-calc_bs.ts \
+ i18n/l-calc_ca.ts \
+ i18n/l-calc_cs.ts \
+ i18n/l-calc_cy.ts \
+ i18n/l-calc_da.ts \
+ i18n/l-calc_de.ts \
+ i18n/l-calc_el.ts \
+ i18n/l-calc_en_GB.ts \
+ i18n/l-calc_en_ZA.ts \
+ i18n/l-calc_es.ts \
+ i18n/l-calc_et.ts \
+ i18n/l-calc_eu.ts \
+ i18n/l-calc_fa.ts \
+ i18n/l-calc_fi.ts \
+ i18n/l-calc_fr.ts \
+ i18n/l-calc_fr_CA.ts \
+ i18n/l-calc_gl.ts \
+ i18n/l-calc_he.ts \
+ i18n/l-calc_hi.ts \
+ i18n/l-calc_hr.ts \
+ i18n/l-calc_hu.ts \
+ i18n/l-calc_id.ts \
+ i18n/l-calc_is.ts \
+ i18n/l-calc_it.ts \
+ i18n/l-calc_ja.ts \
+ i18n/l-calc_ka.ts \
+ i18n/l-calc_ko.ts \
+ i18n/l-calc_lt.ts \
+ i18n/l-calc_lv.ts \
+ i18n/l-calc_mk.ts \
+ i18n/l-calc_mn.ts \
+ i18n/l-calc_ms.ts \
+ i18n/l-calc_mt.ts \
+ i18n/l-calc_nb.ts \
+ i18n/l-calc_nl.ts \
+ i18n/l-calc_pa.ts \
+ i18n/l-calc_pl.ts \
+ i18n/l-calc_pt.ts \
+ i18n/l-calc_pt_BR.ts \
+ i18n/l-calc_ro.ts \
+ i18n/l-calc_ru.ts \
+ i18n/l-calc_sk.ts \
+ i18n/l-calc_sl.ts \
+ i18n/l-calc_sr.ts \
+ i18n/l-calc_sv.ts \
+ i18n/l-calc_sw.ts \
+ i18n/l-calc_ta.ts \
+ i18n/l-calc_tg.ts \
+ i18n/l-calc_th.ts \
+ i18n/l-calc_tr.ts \
+ i18n/l-calc_uk.ts \
+ i18n/l-calc_uz.ts \
+ i18n/l-calc_vi.ts \
+ i18n/l-calc_zh_CN.ts \
+ i18n/l-calc_zh_HK.ts \
+ i18n/l-calc_zh_TW.ts \
+ i18n/l-calc_zu.ts
+
+dotrans.path=$${L_SHAREDIR}/lumina-desktop/i18n/
+dotrans.extra=cd i18n && $${LRELEASE} -nounfinished *.ts && cp *.qm $(INSTALL_ROOT)$${L_SHAREDIR}/lumina-desktop/i18n/
+
+#desktop.files=lumina-calculator.desktop
+#desktop.path=$${L_SHAREDIR}/applications/
+
+INSTALLS += target
+
+WITH_I18N{
+ INSTALLS += dotrans
+}
diff --git a/src-qt5/desktop-utils/lumina-calculator/main.cpp b/src-qt5/desktop-utils/lumina-calculator/main.cpp
new file mode 100644
index 00000000..af252cb3
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/main.cpp
@@ -0,0 +1,19 @@
+//===========================================
+// Lumina Desktop source code
+// Copyright (c) 2016, Ken Moore
+// Available under the 3-clause BSD license
+// See the LICENSE file for full details
+//===========================================
+#include <QApplication>
+#include <QDebug>
+
+#include "mainUI.h"
+
+int main(int argc, char *argv[]) {
+ QApplication a(argc, argv);
+
+ //Now start the window
+ mainUI W;
+ W.show();
+ return a.exec();
+}
diff --git a/src-qt5/desktop-utils/lumina-calculator/mainUI.cpp b/src-qt5/desktop-utils/lumina-calculator/mainUI.cpp
new file mode 100644
index 00000000..244a7f3e
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/mainUI.cpp
@@ -0,0 +1,133 @@
+//===========================================
+// Lumina Desktop source code
+// Copyright (c) 2016, Ken Moore
+// Available under the 3-clause BSD license
+// See the LICENSE file for full details
+//===========================================
+#include "mainUI.h"
+#include "ui_mainUI.h"
+
+#include <QDebug>
+#include <LuminaXDG.h>
+
+#define VALIDSYMBOLS QString("+-*x/.")
+
+#include <math.h>
+#define BADVALUE NAN
+
+mainUI::mainUI() : QMainWindow(), ui(new Ui::mainUI()){
+ ui->setupUi(this);
+ connect(ui->tool_clear, SIGNAL(clicked()), this, SLOT(clear_calc()) );
+ connect(ui->line_eq, SIGNAL(returnPressed()), this, SLOT(start_calc()) );
+ connect(ui->button_1, SIGNAL (clicked()), this, SLOT (captureButton1()));
+ connect(ui->button_2, SIGNAL (clicked()), this, SLOT (captureButton2()));
+ connect(ui->button_3, SIGNAL (clicked()), this, SLOT (captureButton3()));
+ connect(ui->button_4, SIGNAL (clicked()), this, SLOT (captureButton4()));
+ connect(ui->button_5, SIGNAL (clicked()), this, SLOT (captureButton5()));
+ connect(ui->button_6, SIGNAL (clicked()), this, SLOT (captureButton6()));
+ connect(ui->button_7, SIGNAL (clicked()), this, SLOT (captureButton7()));
+ connect(ui->button_8, SIGNAL (clicked()), this, SLOT (captureButton8()));
+ connect(ui->button_9, SIGNAL (clicked()), this, SLOT (captureButton9()));
+ connect(ui->button_0, SIGNAL (clicked()), this, SLOT (captureButton0()));
+ connect(ui->button_Subtract, SIGNAL (clicked()), this, SLOT (captureButtonSubtract()));
+ connect(ui->button_Add, SIGNAL (clicked()), this, SLOT (captureButtonAdd()));
+ connect(ui->button_Divide, SIGNAL (clicked()), this, SLOT (captureButtonDivide()));
+ connect(ui->button_Multiply, SIGNAL (clicked()), this, SLOT (captureButtonMultiply()));
+ connect(ui->button_Decimal, SIGNAL (clicked()), this, SLOT (captureButtonDecimal()));
+ connect(ui->button_Equal, SIGNAL (clicked()), this, SLOT (start_calc()));
+
+ this->setWindowTitle(tr("Calculator"));
+ this->setWindowIcon( LXDG::findIcon("accessories-calculator","") );
+ ui->line_eq->setFocus();
+}
+
+mainUI::~mainUI(){
+}
+
+void mainUI::start_calc(){
+ if(ui->line_eq->text().isEmpty()){ return; } //nothing to do
+ double result = strToNumber(ui->line_eq->text());
+ if(result!=result){ return; } //bad calculation - NaN's values are special in that they don't equal itself
+ QString res = "%1 \t(%2)";
+ ui->list_results->addItem(res.arg(QString::number(result), ui->line_eq->text()));
+ ui->list_results->scrollToItem( ui->list_results->item( ui->list_results->count()-1) );
+ ui->line_eq->clear();
+}
+
+void mainUI::clear_calc(){
+ ui->line_eq->clear();
+ ui->line_eq->setFocus();
+}
+
+void mainUI::captureButton1(){ ui->line_eq->setText(ui->line_eq->text() += ui->button_1->text()); }
+void mainUI::captureButton2(){ ui->line_eq->setText(ui->line_eq->text() += ui->button_2->text()); }
+void mainUI::captureButton3(){ ui->line_eq->setText(ui->line_eq->text() += ui->button_3->text()); }
+void mainUI::captureButton4(){ ui->line_eq->setText(ui->line_eq->text() += ui->button_4->text()); }
+void mainUI::captureButton5(){ ui->line_eq->setText(ui->line_eq->text() += ui->button_5->text()); }
+void mainUI::captureButton6(){ ui->line_eq->setText(ui->line_eq->text() += ui->button_6->text()); }
+void mainUI::captureButton7(){ ui->line_eq->setText(ui->line_eq->text() += ui->button_7->text()); }
+void mainUI::captureButton8(){ ui->line_eq->setText(ui->line_eq->text() += ui->button_8->text()); }
+void mainUI::captureButton9(){ ui->line_eq->setText(ui->line_eq->text() += ui->button_9->text()); }
+void mainUI::captureButton0(){ ui->line_eq->setText(ui->line_eq->text() += ui->button_0->text()); }
+void mainUI::captureButtonSubtract(){ ui->line_eq->setText(ui->line_eq->text() += ui->button_Subtract->text()); }
+void mainUI::captureButtonAdd(){ ui->line_eq->setText(ui->line_eq->text() += ui->button_Add->text()); }
+void mainUI::captureButtonDivide(){ ui->line_eq->setText(ui->line_eq->text() += ui->button_Divide->text()); }
+void mainUI::captureButtonMultiply(){ ui->line_eq->setText(ui->line_eq->text() += ui->button_Multiply->text()); }
+//void mainUI::captureButtonEqual(){ ui->line_eq->setText(ui->line_eq->text() += ui->button_Equal->text()); }
+void mainUI::captureButtonDecimal(){ ui->line_eq->setText(ui->line_eq->text() += ui->button_Decimal->text()); }
+
+double mainUI::performOperation(double LHS, double RHS, QChar symbol){
+ if(symbol== '+'){ return (LHS+RHS); }
+ else if(symbol== '-'){ return (LHS-RHS); }
+ else if(symbol== '*' || symbol=='x'){ return (LHS*RHS); }
+ else if(symbol== '/'){ return (LHS/RHS); }
+ //else if(symbol== '%'){ return (LHS%RHS); }
+ qDebug() << "Invalid Symbol:" << symbol;
+ return BADVALUE;
+}
+
+double mainUI::strToNumber(QString str){
+ //Look for perentheses first
+ //qDebug() << "String to Number: " << str;
+ if(str.indexOf("(")>=0){
+ //qDebug() << "Found Parenthesis";
+ int start = str.indexOf("(");
+ int need = 1;
+ int end = -1;
+ for(int i=start+1; i<str.length() && need>0; i++){
+ if(str[i]=='('){ need++; }
+ else if(str[i]==')'){ need--; }
+ //qDebug() << "Check char:" << str[i] << need;
+ if(need==0){ end = i; }
+ }
+ if(end<start){ return BADVALUE; }
+ //qDebug() << "Replace value:" << str << start << end << str.mid(start+1,end-start);
+ str.replace(start, end-start+1, QString::number( strToNumber( str.mid(start+1, end-start-1)) ) );
+ //qDebug() << "Replaced:" << str;
+ }
+ // -------------------------------------
+ // NOTE: the order of operations appears reversed here due to the recursive nature of the algorithm
+ // the first operation *found* is actually the last one *evaluated*
+ // --------------------------------------
+ //Now look for add/subtract
+ int sym = -1;
+ QStringList symbols; symbols << "+" << "-";
+ for(int i=0; i<symbols.length(); i++){
+ int tmp = str.indexOf(symbols[i]);
+ if(sym < tmp){ sym = tmp; }
+ }
+ if(sym>0){ return performOperation( strToNumber(str.left(sym)), strToNumber(str.right(str.length()-sym-1)), str[sym]); }
+ if(sym==0){ return BADVALUE; }
+ //Now look for multiply/divide
+ symbols.clear(); symbols << "x" << "*" << "/";
+ for(int i=0; i<symbols.length(); i++){
+ int tmp = str.indexOf(symbols[i]);
+ if(sym < tmp){ sym = tmp; }
+ }
+ if(sym>0){ return performOperation( strToNumber(str.left(sym)), strToNumber(str.right(str.length()-sym-1)), str[sym]); }
+ if(sym==0){ return BADVALUE; }
+
+ //Could not find any operations - must be a raw number
+ //qDebug() << "Found Number:" << str.toDouble();
+ return str.toDouble();
+}
diff --git a/src-qt5/desktop-utils/lumina-calculator/mainUI.h b/src-qt5/desktop-utils/lumina-calculator/mainUI.h
new file mode 100644
index 00000000..0d99c83a
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/mainUI.h
@@ -0,0 +1,50 @@
+//===========================================
+// Lumina Desktop source code
+// Copyright (c) 2016, Ken Moore
+// Available under the 3-clause BSD license
+// See the LICENSE file for full details
+//===========================================
+#ifndef _LUMINA_CALCULATOR_MAIN_UI_H
+#define _LUMINA_CALCULATOR_MAIN_UI_H
+
+#include <QMainWindow>
+#include <QString>
+#include <QChar>
+
+namespace Ui{
+ class mainUI;
+};
+
+class mainUI : public QMainWindow{
+ Q_OBJECT
+public:
+ mainUI();
+ ~mainUI();
+
+private slots:
+ void start_calc();
+ void clear_calc();
+ void captureButton1();
+ void captureButton2();
+ void captureButton3();
+ void captureButton4();
+ void captureButton5();
+ void captureButton6();
+ void captureButton7();
+ void captureButton8();
+ void captureButton9();
+ void captureButton0();
+ void captureButtonSubtract();
+ void captureButtonAdd();
+ void captureButtonDivide();
+ void captureButtonMultiply();
+// void captureButtonEqual();
+ void captureButtonDecimal();
+
+
+private:
+ Ui::mainUI *ui;
+ double performOperation(double LHS, double RHS, QChar symbol);
+ double strToNumber(QString str); //this is highly-recursive
+};
+#endif
diff --git a/src-qt5/desktop-utils/lumina-calculator/mainUI.ui b/src-qt5/desktop-utils/lumina-calculator/mainUI.ui
new file mode 100644
index 00000000..2ca316ed
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-calculator/mainUI.ui
@@ -0,0 +1,192 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>mainUI</class>
+ <widget class="QMainWindow" name="mainUI">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>255</width>
+ <height>376</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Calculator</string>
+ </property>
+ <widget class="QWidget" name="centralwidget">
+ <widget class="QSplitter" name="splitter">
+ <property name="geometry">
+ <rect>
+ <x>9</x>
+ <y>9</y>
+ <width>241</width>
+ <height>361</height>
+ </rect>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <widget class="QWidget" name="">
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <widget class="QListWidget" name="list_results"/>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QLineEdit" name="line_eq"/>
+ </item>
+ <item>
+ <widget class="QToolButton" name="tool_clear">
+ <property name="text">
+ <string>C</string>
+ </property>
+ <property name="autoRaise">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QWidget" name="">
+ <layout class="QGridLayout" name="gridLayout">
+ <item row="0" column="0">
+ <widget class="QPushButton" name="button_7">
+ <property name="text">
+ <string>7</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QPushButton" name="button_8">
+ <property name="text">
+ <string>8</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="2">
+ <widget class="QPushButton" name="button_9">
+ <property name="text">
+ <string>9</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="3">
+ <widget class="QPushButton" name="button_Divide">
+ <property name="text">
+ <string>/</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QPushButton" name="button_4">
+ <property name="text">
+ <string>4</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QPushButton" name="button_5">
+ <property name="text">
+ <string>5</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="2">
+ <widget class="QPushButton" name="button_6">
+ <property name="text">
+ <string>6</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="3">
+ <widget class="QPushButton" name="button_Multiply">
+ <property name="text">
+ <string>*</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0">
+ <widget class="QPushButton" name="button_1">
+ <property name="text">
+ <string>1</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1">
+ <widget class="QPushButton" name="button_2">
+ <property name="text">
+ <string>2</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="2">
+ <widget class="QPushButton" name="button_3">
+ <property name="text">
+ <string>3</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="3">
+ <widget class="QPushButton" name="button_Subtract">
+ <property name="text">
+ <string>-</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0">
+ <widget class="QPushButton" name="button_0">
+ <property name="text">
+ <string>0</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="1">
+ <widget class="QPushButton" name="button_Decimal">
+ <property name="text">
+ <string>.</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="2">
+ <widget class="QPushButton" name="button_Equal">
+ <property name="text">
+ <string>=</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="3">
+ <widget class="QPushButton" name="button_Add">
+ <property name="text">
+ <string>+</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </widget>
+ <zorder>list_results</zorder>
+ <zorder>button_7</zorder>
+ <zorder>button_8</zorder>
+ <zorder>button_9</zorder>
+ <zorder>button_Divide</zorder>
+ <zorder>button_4</zorder>
+ <zorder>button_5</zorder>
+ <zorder>button_6</zorder>
+ <zorder>button_Multiply</zorder>
+ <zorder>button_1</zorder>
+ <zorder>button_2</zorder>
+ <zorder>button_3</zorder>
+ <zorder>button_Subtract</zorder>
+ <zorder>button_0</zorder>
+ <zorder>button_Decimal</zorder>
+ <zorder>button_Equal</zorder>
+ <zorder>button_Add</zorder>
+ <zorder>line_eq</zorder>
+ </widget>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
bgstack15