From 26c5098fc07b5d7b7324e6d71b93b0beffc8ee4b Mon Sep 17 00:00:00 2001 From: konrad Date: Sun, 16 Sep 2007 15:55:28 +0000 Subject: [PATCH] some more i18n make language changeable at runtime add icon some draft window layout for overview git-svn-id: https://silmor.de/svn/softmagic/smoke/trunk@28 6e3c4bff-ac9f-4ac1-96c5-d2ea494d3e33 --- src/code39.h | 5 +- src/files.qrc | 6 ++ src/icon.png | Bin 0 -> 5093 bytes src/icon.xcf | Bin 0 -> 12716 bytes src/main.cpp | 52 ++++++++---- src/main.h | 14 +++ src/mainwindow.cpp | 9 ++- src/mainwindow.h | 2 + src/overview.cpp | 70 +++++++++++++++- src/overview.h | 3 + src/smoke.pro | 7 ++- src/smoke_de.ts | 219 +++++++++++++++++++++++++++++++++++++++---------- src/smoke_de_SAX.ts | 227 ++++++++++++++++++++++++++++++++++++++++----------- 13 files changed, 500 insertions(+), 114 deletions(-) create mode 100644 src/files.qrc create mode 100644 src/icon.png create mode 100644 src/icon.xcf create mode 100644 src/main.h diff --git a/src/code39.h b/src/code39.h index afa05f7..fcf0888 100644 --- a/src/code39.h +++ b/src/code39.h @@ -13,4 +13,7 @@ #include #include -QPixmap code39(QString); \ No newline at end of file +/**Takes a string and converts it into a code-39 bar code. +Code-39 allows letters (case-insensitive), digits, spaces and the special chars "-.$/+%". +The bar code pixmap will be 1 pixel high and 16 pixels wide for each character (plus start/stop character and checksum character) - it needs to be scaled up to fit the intended size.*/ +QPixmap code39(QString); diff --git a/src/files.qrc b/src/files.qrc new file mode 100644 index 0000000..93605ce --- /dev/null +++ b/src/files.qrc @@ -0,0 +1,6 @@ + + + + icon.png + + diff --git a/src/icon.png b/src/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..a5b3bbf74b2456e291c14d9c74e7620e662bb033 GIT binary patch literal 5093 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

$RNE(9RrU>Q8# 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 YJ>ADx7Ot #include #include +#include #include "keygen.h" #include "mainwindow.h" #include "hmac.h" +#include "main.h" + +QString choseLanguage(bool warn) +{ + QString lang=QSettings().value("lang","--").toString(); + if(lang=="--"){ + lang=QLocale::system().name(); + } + int cur=0; + QStringList langs; + langs<<"C - default"; + QStringList files=QDir(QApplication::applicationDirPath()).entryList(QStringList()<<"smoke_*.qm", QDir::Files, QDir::Name); + for(int i=0;i, (C) 2007 +// +// Copyright: See README/COPYING files that come with this distribution +// +// + +QString choseLanguage(bool warn=true); + diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index f320b51..71bf17a 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -14,6 +14,7 @@ #include "keygen.h" #include "webrequest.h" #include "overview.h" +#include "main.h" #include #include @@ -44,6 +45,7 @@ MMainWindow::MMainWindow() m->addSeparator(); m->addAction(tr("&Close Window"),this,SLOT(close())); m=mb->addMenu(tr("&Configure")); + m->addAction(tr("&Language..."),this,SLOT(changeLang())); //create central widget QWidget *loginwidget; @@ -77,7 +79,7 @@ MMainWindow::MMainWindow() gl->addWidget(lab=new QLabel(tr("Proxy Password:")),++lctr,0); lab->setAlignment(Qt::AlignRight); gl->addWidget(proxypass=new QLineEdit,lctr,1); - password->setEchoMode(QLineEdit::Password); + proxypass->setEchoMode(QLineEdit::Password); connect(useproxy,SIGNAL(toggled(bool)),proxyuser,SLOT(setEnabled(bool))); connect(useproxy,SIGNAL(toggled(bool)),proxypass,SLOT(setEnabled(bool))); QFrame*frm; @@ -210,3 +212,8 @@ void MMainWindow::startLogin() setEnabled(true); } + +void MMainWindow::changeLang() +{ + choseLanguage(); +} diff --git a/src/mainwindow.h b/src/mainwindow.h index f4091ea..3560096 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -45,6 +45,8 @@ class MMainWindow:public QMainWindow void saveProfile(); void newProfile(); void startLogin(); + //settings + void changeLang(); }; #endif diff --git a/src/overview.cpp b/src/overview.cpp index dd76f16..30490f0 100644 --- a/src/overview.cpp +++ b/src/overview.cpp @@ -19,6 +19,12 @@ #include #include #include +#include +#include +#include +#include +#include +#include MOverview::MOverview(MWebRequest*mw,QString pk) { @@ -30,17 +36,75 @@ MOverview::MOverview(MWebRequest*mw,QString pk) QMenuBar*mb=menuBar(); QMenu*m=mb->addMenu(tr("&Session")); m->addAction(tr("&Re-Login"),this,SLOT(relogin())); + m->addAction(tr("&Offline mode"))->setEnabled(false); m->addSeparator(); m->addAction(tr("&Close Session"),this,SLOT(close())); m=mb->addMenu(tr("&Event")); + m->addAction(tr("&Show details...")); + m->addAction(tr("&New Event...")); + m->addAction(tr("&Cancel Event...")); + m=mb->addMenu(tr("&Customer")); + m->addAction(tr("&Show all customers")); + + m=mb->addMenu(tr("C&art")); + m->addAction(tr("Add &Ticket")); + m->addAction(tr("Add &Voucher")); + m->addAction(tr("&Remove Item")); + m->addAction(tr("&Abort Shopping")); + m->addSeparator(); + m->addAction(tr("&Show all orders")); + m=mb->addMenu(tr("C&onfigure")); + //tabs setCentralWidget(tab=new QTabWidget); - tab->addTab(new QWidget,tr("Events")); - tab->addTab(new QWidget,tr("Customers")); - tab->addTab(new QWidget,tr("Order")); + tab->addTab(eventtab=new QWidget,tr("Events")); + QVBoxLayout*vl;QHBoxLayout*hl; + eventtab->setLayout(hl=new QHBoxLayout); + hl->addWidget(new QTableView,10); + hl->addSpacing(5); + hl->addLayout(vl=new QVBoxLayout,0); + vl->addWidget(new QPushButton(tr("New Event...")),0); + vl->addWidget(new QPushButton(tr("Details...")),0); + vl->addSpacing(15); + vl->addWidget(new QPushButton(tr("Order Ticket...")),0); + vl->addStretch(10); + + tab->addTab(carttab=new QWidget,tr("Shopping Cart")); + carttab->setLayout(vl=new QVBoxLayout); + vl->addLayout(hl=new QHBoxLayout); + QVBoxLayout*vl2; + hl->addLayout(vl2=new QVBoxLayout,1); + vl2->addWidget(new QTableView,10); + QHBoxLayout*hl2; + vl2->addLayout(hl2=new QHBoxLayout,0); + hl2->addStretch(10); + hl2->addWidget(new QPushButton(tr("Add Ticket")),0); + hl2->addWidget(new QPushButton(tr("Add Voucher")),0); + hl2->addWidget(new QPushButton(tr("Remove Item")),0); + QFrame*frm; + hl->addWidget(frm=new QFrame,0); + frm->setFrameShape(QFrame::VLine); + hl->addLayout(vl2=new QVBoxLayout,1); + vl2->addWidget(new QPushButton(tr("Customer:")),0); + vl2->addWidget(new QLabel("...blah\nPerson\nsomewhere")); + vl2->addWidget(frm=new QFrame,0); + frm->setFrameShape(QFrame::HLine); + vl2->addSpacing(10); + vl2->addWidget(new QLabel(tr("Delivery Address:")),0); + vl2->addWidget(new QTextEdit); + vl2->addSpacing(10); + vl2->addWidget(new QLabel(tr("Comments:")),0); + vl2->addWidget(new QTextEdit); + vl2->addStretch(10); + vl->addWidget(frm=new QFrame,0); + frm->setFrameShape(QFrame::HLine); + vl->addLayout(hl=new QHBoxLayout,0); + hl->addStretch(10); + hl->addWidget(new QPushButton(tr("Save Order"))); + hl->addWidget(new QPushButton(tr("Clear"))); //status bar statusBar()->setSizeGripEnabled(true); diff --git a/src/overview.h b/src/overview.h index d5ba10a..732d547 100644 --- a/src/overview.h +++ b/src/overview.h @@ -27,8 +27,10 @@ class MOverview:public QMainWindow MOverview(MWebRequest*,QString); ~MOverview(); protected: + /**handle closing the window: close the session too*/ void closeEvent(QCloseEvent*); private slots: + /**try to log in again*/ void relogin(); private: //my session object @@ -37,6 +39,7 @@ class MOverview:public QMainWindow QString profilekey; //widgets QTabWidget*tab; + QWidget*eventtab,*carttab; }; #endif diff --git a/src/smoke.pro b/src/smoke.pro index 41fef86..a31eaf7 100644 --- a/src/smoke.pro +++ b/src/smoke.pro @@ -29,6 +29,11 @@ HEADERS = \ webrequest.h \ overview.h +RESOURCES += files.qrc + TRANSLATIONS = \ smoke_de.ts \ - smoke_de_SAX.ts \ No newline at end of file + smoke_de_SAX.ts + + +#include(zip/zip.pri) diff --git a/src/smoke_de.ts b/src/smoke_de.ts index 2e07296..6f2dfb9 100644 --- a/src/smoke_de.ts +++ b/src/smoke_de.ts @@ -33,161 +33,271 @@ At least %1 Bits of random are required. MMainWindow - + Profile: - + Alternate Hostname: - + Server URL: - + Proxy: - + Username: - + Password: - + New Profile - + Please enter a profile name. It must be non-empty and must not be used yet: - + Proxy Username: - + Proxy Password: - + Warning - + Unable to log in. Error: %1 - + &File - + &New Profile... - + &Save Profile - + &Close Window - + &Configure - + new Profile - + save Profile - + Login + + + &Language... + + MOverview - + &Session - + &Re-Login - + &Close Session - + &Event - + &Customer - + C&onfigure - + Events - - Customers + + Warning - - Order + + I was unable to renew the login at the server, the error was: %1 - - Warning + + &Offline mode - - I was unable to renew the login at the server, the error was: %1 + + &Show details... + + + + + &New Event... + + + + + &Cancel Event... + + + + + &Show all customers + + + + + C&art + + + + + Add &Ticket + + + + + Add &Voucher + + + + + &Remove Item + + + + + &Abort Shopping + + + + + &Show all orders + + + + + New Event... + + + + + Details... + + + + + Order Ticket... + + + + + Shopping Cart + + + + + Add Ticket + + + + + Add Voucher + + + + + Remove Item + + + + + Customer: + + + + + Delivery Address: + + + + + Comments: + + + + + Save Order + + + + + Clear @@ -252,27 +362,27 @@ At least %1 Bits of random are required. initkey - + Warning - + Magic Smoke needs a host key. You have to generate one before you can use the program. - + Enter Host Name - + Host name: - + Magic Smoke needs a host name. You have to configure one before you can use the program. @@ -280,20 +390,43 @@ At least %1 Bits of random are required. initprofile - + default initial profile - + Create Initial Profile - + You need a profile to work with Magic Smoke. Magic Smoke will now create one for you. Please enter the name you wish to give this profile. + + lang + + + Information + + + + + The changed language setting will only be active after restarting the application. + + + + + Chose Language + + + + + Language: + + + diff --git a/src/smoke_de_SAX.ts b/src/smoke_de_SAX.ts index 390e188..4b506e7 100644 --- a/src/smoke_de_SAX.ts +++ b/src/smoke_de_SAX.ts @@ -34,163 +34,273 @@ At least %1 Bits of random are required. MMainWindow - + Profile: Brofiel: - + Alternate Hostname: Andror Reschnername: - + Server URL: URL vom diggen Reschnor: - + Proxy: Web-Broggsie: - + Username: Nudsorname: - + Password: Gans doll geheimer Gohd: - + New Profile Neues Brofiel - + Please enter a profile name. It must be non-empty and must not be used yet: Bidde gäben'se 'nen Namen für das neue Brofiel ein. Der darf noch ni' benudsd sein und leer darf'or och nedd sein: - + Proxy Username: Nudsername für'n Broggsie: - + Proxy Password: Geheimer Gohd für'n Broggsie: - + Warning Dumm gelaufen - + Unable to log in. Error: %1 Isch gann nisch off'n gross'n Reschner. Der will nisch weil: %1 - + &File &Dadai - + &New Profile... &Neues Brofiel - + &Save Profile Brofiel &schbeichorn - + &Close Window Fänsdor &zumach'n - + &Configure &Gonfiguriern - + new Profile Neues Brofiel - + save Profile Brofiel schbeichorn - + Login Droff offn' Reschnor + + + &Language... + &Schbrache... + MOverview - + &Session &Sidsung - + &Re-Login &Noch'ma einloggn - + &Close Session Sidsung &Zumachn - + &Event &Veranschdaldung - + &Customer &Gunde - + C&onfigure G&onfiguriern - + Events Veranschdaldungen - - Customers - Gunden - - - - Order - Beschdellung - - - + Warning Dumm gelaufen - + I was unable to renew the login at the server, the error was: %1 Isch gann de' Verbindung off'n gross'n Reschner nisch erneuern. Der will nisch weil: %1 + + + &Offline mode + &Ohne Neds und Dobbelden Boden + + + + &Show details... + &Dedails anzeigen... + + + + &New Event... + &Neue Veranschdaldung... + + + + &Cancel Event... + Veranschdaldung &absach'n... + + + + &Show all customers + &Alle Gunden anzeigen + + + + C&art + Eing&aufswagen + + + + Add &Ticket + Ein&driddsgarde hinzufüchen + + + + Add &Voucher + &Gudschein hinzufüchen + + + + &Remove Item + Doch &ni' nehm' + + + + &Abort Shopping + &Eingauf Abbrechen + + + + &Show all orders + &Alle Beschdellungen anzeichen + + + + New Event... + Neue Veranschdaldung... + + + + Details... + Dedails anzeichen... + + + + Order Ticket... + Eindriddsgarde beschdellen... + + + + Shopping Cart + Eingaufswagen + + + + Add Ticket + Eindriddsgarde hinzufüchen + + + + Add Voucher + Gudschein hinzufüchen + + + + Remove Item + Doch ni' nehm' + + + + Customer: + Gunde: + + + + Delivery Address: + Adresse wo's Zeuch hin soll: + + + + Comments: + Wischdiches Gelaber und Gerede: + + + + Save Order + Beschdellung abschbeichern + + + + Clear + Wechwerfen und von vorne! + MWebRequest @@ -253,27 +363,27 @@ At least %1 Bits of random are required. initkey - + Warning Dumm gelaufen - + Magic Smoke needs a host key. You have to generate one before you can use the program. Mädschig Schmohg brauchd 'nen Schlüssel. Desweschen isser beleidschd. Beim nächsden Schdard mussde ihn einen mach'n lass'n. - + Enter Host Name Gombjudername eingäbn - + Host name: Gombjudername: - + Magic Smoke needs a host name. You have to configure one before you can use the program. Mädschig Schmohg brauchd 'nen Namen für diesen Gombjuder. Desweschen isser beleidschd. Beim nächsden Schdard mussde ihn eingäben. @@ -281,20 +391,43 @@ At least %1 Bits of random are required. initprofile - + default initial profile Schdandardbrofiel - + Create Initial Profile Erschdes Brofiel anlechen - + You need a profile to work with Magic Smoke. Magic Smoke will now create one for you. Please enter the name you wish to give this profile. Gugge, Du brauchsd sowas wie'n Brofiel. Mädschig Schmohg iss nedd und machd eens für Disch. Desderweschen brauchsde jedsd nur noch n Namen dafür eindibben. + + lang + + + Information + Informadschion + + + + The changed language setting will only be active after restarting the application. + De Ändorung von dor Schbrache wird ersd wirgsam, wenn'de das Brogramm neu geschdarded hasd. S' is draurisch, aber wahr. + + + + Chose Language + Schbrache Aussuch'n + + + + Language: + Schbrache: + + -- 1.7.2.5