forked from blue/squawk
initial
This commit is contained in:
commit
de36fe2a4e
27
CMakeLists.txt
Normal file
27
CMakeLists.txt
Normal file
@ -0,0 +1,27 @@
|
||||
cmake_minimum_required(VERSION 3.0)
|
||||
project(squawk)
|
||||
|
||||
# Find includes in corresponding build directories
|
||||
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
||||
# Instruct CMake to run moc automatically when needed.
|
||||
set(CMAKE_AUTOMOC ON)
|
||||
# Instruct CMake to create code from Qt designer ui files
|
||||
set(CMAKE_AUTOUIC ON)
|
||||
|
||||
find_package(Qt5Widgets CONFIG REQUIRED)
|
||||
set(squawk_SRC
|
||||
main.cpp
|
||||
)
|
||||
|
||||
# Tell CMake to create the helloworld executable
|
||||
add_executable(squawk ${squawk_SRC})
|
||||
target_link_libraries(squawk Qt5::Widgets)
|
||||
|
||||
add_subdirectory(ui)
|
||||
add_subdirectory(core)
|
||||
|
||||
target_link_libraries(squawk squawkUI)
|
||||
target_link_libraries(squawk squawkCORE)
|
||||
|
||||
# Install the executable
|
||||
install(TARGETS squawk DESTINATION bin)
|
24
core/CMakeLists.txt
Normal file
24
core/CMakeLists.txt
Normal file
@ -0,0 +1,24 @@
|
||||
cmake_minimum_required(VERSION 3.0)
|
||||
project(squawkCORE)
|
||||
|
||||
# Instruct CMake to run moc automatically when needed.
|
||||
set(CMAKE_AUTOMOC ON)
|
||||
|
||||
find_package(Qt5Widgets CONFIG REQUIRED)
|
||||
find_package(Qt5Network CONFIG REQUIRED)
|
||||
|
||||
set(squawkCORE_SRC
|
||||
squawk.cpp
|
||||
account.cpp
|
||||
)
|
||||
|
||||
# Tell CMake to create the helloworld executable
|
||||
add_library(squawkCORE ${squawkCORE_SRC})
|
||||
|
||||
# Use the Widgets module from Qt 5.
|
||||
target_link_libraries(squawkCORE Qt5::Core)
|
||||
target_link_libraries(squawkCORE Qt5::Network)
|
||||
target_link_libraries(squawkCORE qxmpp)
|
||||
|
||||
# Install the executable
|
||||
install(TARGETS squawkCORE DESTINATION lib)
|
17
core/account.cpp
Normal file
17
core/account.cpp
Normal file
@ -0,0 +1,17 @@
|
||||
#include "account.h"
|
||||
|
||||
using namespace Core;
|
||||
|
||||
Account::Account(const QString& p_jid, const QString& p_password, QObject* parent):
|
||||
QObject(parent),
|
||||
jid(p_jid),
|
||||
password(p_password),
|
||||
client()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
Account::~Account()
|
||||
{
|
||||
|
||||
}
|
25
core/account.h
Normal file
25
core/account.h
Normal file
@ -0,0 +1,25 @@
|
||||
#ifndef CORE_ACCOUNT_H
|
||||
#define CORE_ACCOUNT_H
|
||||
|
||||
#include <QtCore/QObject>
|
||||
|
||||
#include <qxmpp/QXmppClient.h>
|
||||
|
||||
namespace Core
|
||||
{
|
||||
|
||||
class Account : public QObject
|
||||
{
|
||||
public:
|
||||
Account(const QString& p_jid, const QString& p_password, QObject* parent = 0);
|
||||
~Account();
|
||||
|
||||
private:
|
||||
QString jid;
|
||||
QString password;
|
||||
QXmppClient client;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif // CORE_ACCOUNT_H
|
15
core/squawk.cpp
Normal file
15
core/squawk.cpp
Normal file
@ -0,0 +1,15 @@
|
||||
#include "squawk.h"
|
||||
|
||||
using namespace Core;
|
||||
|
||||
Squawk::Squawk(QObject* parent):
|
||||
QObject(parent),
|
||||
accounts()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
Squawk::~Squawk()
|
||||
{
|
||||
|
||||
}
|
27
core/squawk.h
Normal file
27
core/squawk.h
Normal file
@ -0,0 +1,27 @@
|
||||
#ifndef CORE_SQUAWK_H
|
||||
#define CORE_SQUAWK_H
|
||||
|
||||
#include <QtCore/QObject>
|
||||
#include <deque>
|
||||
|
||||
#include "account.h"
|
||||
|
||||
namespace Core
|
||||
{
|
||||
class Squawk : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
Squawk(QObject* parent = 0);
|
||||
~Squawk();
|
||||
|
||||
private:
|
||||
typedef std::deque<Account> Accounts;
|
||||
|
||||
Accounts accounts;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif // CORE_SQUAWK_H
|
24
main.cpp
Normal file
24
main.cpp
Normal file
@ -0,0 +1,24 @@
|
||||
#include "ui/squawk.h"
|
||||
#include "core/squawk.h"
|
||||
#include <QtWidgets/QApplication>
|
||||
#include <QtCore/QThread>
|
||||
#include <QtCore/QObject>
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
QApplication app(argc, argv);
|
||||
Squawk w;
|
||||
w.show();
|
||||
|
||||
Core::Squawk* squawk = new Core::Squawk();
|
||||
QThread* coreThread = new QThread();
|
||||
squawk->moveToThread(coreThread);
|
||||
|
||||
QObject::connect(coreThread, SIGNAL(finished()), squawk, SLOT(deleteLater()));
|
||||
//QObject::connect(this, &Controller::operate, worker, &Worker::doWork);
|
||||
//QObject::connect(worker, &Worker::resultReady, this, &Controller::handleResults);
|
||||
coreThread->start();
|
||||
|
||||
return app.exec();
|
||||
}
|
||||
|
24
ui/CMakeLists.txt
Normal file
24
ui/CMakeLists.txt
Normal file
@ -0,0 +1,24 @@
|
||||
cmake_minimum_required(VERSION 3.0)
|
||||
project(squawkUI)
|
||||
|
||||
# Instruct CMake to run moc automatically when needed.
|
||||
set(CMAKE_AUTOMOC ON)
|
||||
# Instruct CMake to create code from Qt designer ui files
|
||||
set(CMAKE_AUTOUIC ON)
|
||||
|
||||
# Find the QtWidgets library
|
||||
find_package(Qt5Widgets CONFIG REQUIRED)
|
||||
|
||||
set(squawkUI_SRC
|
||||
squawk.cpp
|
||||
accounts.cpp
|
||||
)
|
||||
|
||||
# Tell CMake to create the helloworld executable
|
||||
add_library(squawkUI ${squawkUI_SRC})
|
||||
|
||||
# Use the Widgets module from Qt 5.
|
||||
target_link_libraries(squawkUI Qt5::Widgets)
|
||||
|
||||
# Install the executable
|
||||
install(TARGETS squawkUI DESTINATION lib)
|
10
ui/accounts.cpp
Normal file
10
ui/accounts.cpp
Normal file
@ -0,0 +1,10 @@
|
||||
#include "accounts.h"
|
||||
#include "ui_accounts.h"
|
||||
|
||||
Accounts::Accounts(QWidget *parent) :
|
||||
m_ui(new Ui::Accounts)
|
||||
{
|
||||
m_ui->setupUi(this);
|
||||
}
|
||||
|
||||
Accounts::~Accounts() = default;
|
26
ui/accounts.h
Normal file
26
ui/accounts.h
Normal file
@ -0,0 +1,26 @@
|
||||
#ifndef ACCOUNTS_H
|
||||
#define ACCOUNTS_H
|
||||
|
||||
#include <QWidget>
|
||||
#include <QScopedPointer>
|
||||
|
||||
namespace Ui
|
||||
{
|
||||
class Accounts;
|
||||
}
|
||||
|
||||
/**
|
||||
* @todo write docs
|
||||
*/
|
||||
class Accounts : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit Accounts(QWidget *parent = nullptr);
|
||||
~Accounts() override;
|
||||
|
||||
private:
|
||||
QScopedPointer<Ui::Accounts> m_ui;
|
||||
};
|
||||
|
||||
#endif // ACCOUNTS_H
|
73
ui/accounts.ui
Normal file
73
ui/accounts.ui
Normal file
@ -0,0 +1,73 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>Accounts</class>
|
||||
<widget class="QWidget" name="Accounts">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>768</width>
|
||||
<height>235</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Accounts</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item row="0" column="1">
|
||||
<widget class="QPushButton" name="addButton">
|
||||
<property name="text">
|
||||
<string>Add</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QPushButton" name="editButton">
|
||||
<property name="text">
|
||||
<string>Edit</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QPushButton" name="deleteButton">
|
||||
<property name="text">
|
||||
<string>Delete</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0" rowspan="4">
|
||||
<widget class="QTableView" name="tableView"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
43
ui/squawk.cpp
Normal file
43
ui/squawk.cpp
Normal file
@ -0,0 +1,43 @@
|
||||
#include "squawk.h"
|
||||
#include "ui_squawk.h"
|
||||
|
||||
Squawk::Squawk(QWidget *parent) :
|
||||
QMainWindow(parent),
|
||||
m_ui(new Ui::Squawk),
|
||||
accounts(0)
|
||||
{
|
||||
m_ui->setupUi(this);
|
||||
|
||||
connect(m_ui->actionAccounts, SIGNAL(triggered()), this, SLOT(onAccounts()));
|
||||
}
|
||||
|
||||
Squawk::~Squawk() {
|
||||
|
||||
}
|
||||
|
||||
void Squawk::onAccounts()
|
||||
{
|
||||
if (accounts == 0) {
|
||||
accounts = new Accounts(this);
|
||||
accounts->setAttribute(Qt::WA_DeleteOnClose);
|
||||
connect(accounts, SIGNAL(destroyed(QObject*)), this, SLOT(onAccountsClosed(QObject*)));
|
||||
accounts->show();
|
||||
} else {
|
||||
accounts->focusWidget();
|
||||
}
|
||||
}
|
||||
|
||||
void Squawk::closeEvent(QCloseEvent* event)
|
||||
{
|
||||
if (accounts != 0) {
|
||||
accounts->close();
|
||||
}
|
||||
|
||||
QMainWindow::closeEvent(event);
|
||||
}
|
||||
|
||||
|
||||
void Squawk::onAccountsClosed(QObject* parent)
|
||||
{
|
||||
accounts = 0;
|
||||
}
|
35
ui/squawk.h
Normal file
35
ui/squawk.h
Normal file
@ -0,0 +1,35 @@
|
||||
#ifndef SQUAWK_H
|
||||
#define SQUAWK_H
|
||||
|
||||
#include <QMainWindow>
|
||||
#include <QScopedPointer>
|
||||
#include <QCloseEvent>
|
||||
|
||||
#include "accounts.h"
|
||||
|
||||
namespace Ui {
|
||||
class Squawk;
|
||||
}
|
||||
|
||||
class Squawk : public QMainWindow
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit Squawk(QWidget *parent = nullptr);
|
||||
~Squawk() override;
|
||||
|
||||
private:
|
||||
QScopedPointer<Ui::Squawk> m_ui;
|
||||
|
||||
Accounts* accounts;
|
||||
|
||||
protected:
|
||||
void closeEvent(QCloseEvent * event) override;
|
||||
|
||||
private slots:
|
||||
void onAccounts();
|
||||
void onAccountsClosed(QObject* parent = 0);
|
||||
};
|
||||
|
||||
#endif // SQUAWK_H
|
51
ui/squawk.ui
Normal file
51
ui/squawk.ui
Normal file
@ -0,0 +1,51 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>Squawk</class>
|
||||
<widget class="QMainWindow" name="Squawk">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>400</width>
|
||||
<height>300</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>squawk</string>
|
||||
</property>
|
||||
<widget class="QWidget" name="centralWidget"/>
|
||||
<widget class="QMenuBar" name="menuBar">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>400</width>
|
||||
<height>27</height>
|
||||
</rect>
|
||||
</property>
|
||||
<widget class="QMenu" name="menu">
|
||||
<property name="title">
|
||||
<string>Settings</string>
|
||||
</property>
|
||||
<addaction name="actionAccounts"/>
|
||||
</widget>
|
||||
<addaction name="menu"/>
|
||||
</widget>
|
||||
<widget class="QToolBar" name="mainToolBar">
|
||||
<attribute name="toolBarArea">
|
||||
<enum>TopToolBarArea</enum>
|
||||
</attribute>
|
||||
<attribute name="toolBarBreak">
|
||||
<bool>true</bool>
|
||||
</attribute>
|
||||
</widget>
|
||||
<widget class="QStatusBar" name="statusBar"/>
|
||||
<action name="actionAccounts">
|
||||
<property name="text">
|
||||
<string>Accounts</string>
|
||||
</property>
|
||||
</action>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
Loading…
Reference in New Issue
Block a user