Skip to content

Commit

Permalink
Merge 5999f1f into b467511
Browse files Browse the repository at this point in the history
  • Loading branch information
ugnelis committed May 16, 2018
2 parents b467511 + 5999f1f commit 6992b27
Show file tree
Hide file tree
Showing 12 changed files with 35 additions and 41 deletions.
1 change: 0 additions & 1 deletion src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@ qt5_add_resources(RESOURCE_FILES_ADDED ${RESOURCE_FILES})

# Source files.
set(SOURCE_FILES
apis/api.cpp
apis/api.h
apis/googleapi.cpp
apis/googleapi.h
Expand Down
5 changes: 0 additions & 5 deletions src/apis/api.cpp

This file was deleted.

12 changes: 6 additions & 6 deletions src/apis/api.h
Original file line number Diff line number Diff line change
@@ -1,21 +1,19 @@
#ifndef INSTANT_TRANSLATOR_API_H
#define INSTANT_TRANSLATOR_API_H

#include <QObject>
#include <QtPlugin>
#include <QString>
#include <QStringList>

/**
* Abstract class for API classes.
*/
class API : public QObject {
Q_OBJECT
class API {
public:
/**
* Constructs an object with parent object parent.
* @param parent Parent of an object may be viewed as the object's owner.
* Destructor.
*/
explicit API(QObject *parent = nullptr);
virtual ~API() {}

/**
* Translate given input.
Expand All @@ -35,4 +33,6 @@ Q_OBJECT
virtual QStringList getSupportedLanguages() const = 0;
};

Q_DECLARE_INTERFACE(API, "API")

#endif // INSTANT_TRANSLATOR_API_H
8 changes: 3 additions & 5 deletions src/apis/googleapi.cpp
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#include "googleapi.h"

GoogleAPI::GoogleAPI(QObject *parent)
: API(parent) {
: QObject(parent) {
}

GoogleAPI::~GoogleAPI() {
Expand Down Expand Up @@ -36,8 +36,7 @@ QString GoogleAPI::translate(const QString &input,
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");


std::unique_ptr<QNetworkAccessManager> manager =
std::unique_ptr<QNetworkAccessManager>(new QNetworkAccessManager());
QNetworkAccessManager *manager = new QNetworkAccessManager();

RequestManager requestManager(nullptr, std::move(manager));
requestManager.postRequest(request, postJsonDocument.toJson());
Expand Down Expand Up @@ -73,8 +72,7 @@ QStringList GoogleAPI::getSupportedLanguages() const {
QUrl url(urlString);
QNetworkRequest request(url);

std::unique_ptr<QNetworkAccessManager> manager =
std::unique_ptr<QNetworkAccessManager>(new QNetworkAccessManager());
QNetworkAccessManager *manager = new QNetworkAccessManager();

RequestManager requestManager(nullptr, std::move(manager));
requestManager.getRequest(request);
Expand Down
5 changes: 3 additions & 2 deletions src/apis/googleapi.h
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
#ifndef INSTANT_TRANSLATOR_GOOGLEAPI_H
#define INSTANT_TRANSLATOR_GOOGLEAPI_H

#include <memory>
#include <QObject>
#include <QSettings>
#include <QJsonDocument>
Expand All @@ -13,7 +12,9 @@
/**
* Google Translate API implementation class.
*/
class GoogleAPI : public API {
class GoogleAPI : public QObject, public API {
Q_OBJECT
Q_INTERFACES(API)
public:
/**
* Constructs an object with parent object parent.
Expand Down
2 changes: 1 addition & 1 deletion src/mainwindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ MainWindow::MainWindow(QWidget *parent) :
);

// Set Google Translator API.
api = new GoogleAPI();
api = new GoogleAPI(this);

// Load supported languages in the combo boxes.
loadLanguagesInComboBoxes();
Expand Down
2 changes: 1 addition & 1 deletion src/mainwindow.h
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ private slots:
Ui::MainWindow *ui; // MainWindow user interface.
QClipboard *clipboard; // Clipboard information.
API *api; // Translation API.
Language language;
Language language; // Language.
};

#endif // MAINWINDOW_H
3 changes: 2 additions & 1 deletion src/utils/language.cpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#include "language.h"

Language::Language() {
Language::Language(QObject *parent)
: QObject(parent) {
readFromJsonFile();
}

Expand Down
10 changes: 6 additions & 4 deletions src/utils/language.h
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#ifndef INSTANT_TRANSLATOR_LANGUAGE_H
#define INSTANT_TRANSLATOR_LANGUAGE_H

#include <QObject>
#include <QHash>
#include <QString>
#include <QStringList>
Expand All @@ -13,17 +14,18 @@
/**
* Language codes and names holder.
*/
class Language {
class Language : public QObject {
public:
/**
* Constructor.
* Constructs an object with parent object parent.
* @param parent Parent of an object may be viewed as the object's owner.
*/
Language();
explicit Language(QObject *parent = nullptr);

/**
* Destructor.
*/
~Language();
~Language() override;

/**
* Get language name.
Expand Down
4 changes: 2 additions & 2 deletions src/utils/requestmanager.cpp
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#include "requestmanager.h"

RequestManager::RequestManager(QObject *parent, std::unique_ptr<QNetworkAccessManager> manager)
: QObject(parent), manager(std::move(manager)), networkReplyData(QByteArray("")) {
RequestManager::RequestManager(QObject *parent, QNetworkAccessManager *manager)
: QObject(parent), manager(manager), networkReplyData(QByteArray("")) {
}

RequestManager::~RequestManager() {
Expand Down
8 changes: 5 additions & 3 deletions src/utils/requestmanager.h
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
#ifndef INSTANT_TRANSLATOR_REQUESTMANAGER_H
#define INSTANT_TRANSLATOR_REQUESTMANAGER_H

#include <memory>
#include <QObject>
#include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QEventLoop>

/**
* Request manager class.
*/
class RequestManager : public QObject {
Q_OBJECT
public:
Expand All @@ -15,7 +17,7 @@ Q_OBJECT
* @param parent Parent of an object may be viewed as the object's owner.
* @param manager Network access manager.
*/
RequestManager(QObject *parent, std::unique_ptr<QNetworkAccessManager> manager);
RequestManager(QObject *parent, QNetworkAccessManager *manager);

/**
* Destructor.
Expand All @@ -42,7 +44,7 @@ Q_OBJECT
QByteArray getReply();

private:
std::unique_ptr<QNetworkAccessManager> manager; // Network manager.
QNetworkAccessManager *manager; // Network manager.
QByteArray networkReplyData; // Network reply data.
};

Expand Down
16 changes: 6 additions & 10 deletions tests/utils/requestmanager_test.cpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
#include <gtest/gtest.h>
#include <gmock/gmock.h>
#include <memory>
#include <QApplication>
#include <QJsonObject>
#include <QJsonDocument>
Expand Down Expand Up @@ -44,10 +43,9 @@ TEST(RequestManagerTests, postRequest_SendPostRequest_True) {
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");

// Send request.
std::unique_ptr<MockQNetworkAccessManager> manager =
std::unique_ptr<MockQNetworkAccessManager>(new MockQNetworkAccessManager());
MockQNetworkAccessManager *manager = new MockQNetworkAccessManager();

RequestManager requestManager(nullptr, std::move(manager));
RequestManager requestManager(nullptr, manager);
requestManager.postRequest(request, postJsonDocument.toJson());

// Test.
Expand All @@ -66,10 +64,9 @@ TEST(RequestManagerTests, getRequest_SendGetRequest_True) {
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");

// Send request.
std::unique_ptr<MockQNetworkAccessManager> manager =
std::unique_ptr<MockQNetworkAccessManager>(new MockQNetworkAccessManager());
MockQNetworkAccessManager *manager = new MockQNetworkAccessManager();

RequestManager requestManager(nullptr, std::move(manager));
RequestManager requestManager(nullptr, manager);
requestManager.getRequest(request);

// Test.
Expand All @@ -88,10 +85,9 @@ TEST(RequestManagerTests, getReply_NetworkReplyIsNull_True) {
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");

// Send request.
std::unique_ptr<MockQNetworkAccessManager> manager =
std::unique_ptr<MockQNetworkAccessManager>(new MockQNetworkAccessManager());
MockQNetworkAccessManager *manager = new MockQNetworkAccessManager();

RequestManager requestManager(nullptr, std::move(manager));
RequestManager requestManager(nullptr, manager);

// Test.
QByteArray expected("");
Expand Down

0 comments on commit 6992b27

Please sign in to comment.