migrate
This commit is contained in:
+62
-41
@@ -1,52 +1,73 @@
|
||||
# C++ objects and libs
|
||||
*.slo
|
||||
*.lo
|
||||
*.o
|
||||
# This file is used to ignore files which are generated
|
||||
# ----------------------------------------------------------------------------
|
||||
|
||||
*~
|
||||
*.autosave
|
||||
*.a
|
||||
*.la
|
||||
*.lai
|
||||
*.core
|
||||
*.moc
|
||||
*.o
|
||||
*.obj
|
||||
*.orig
|
||||
*.rej
|
||||
*.so
|
||||
*.so.*
|
||||
*.dll
|
||||
*.dylib
|
||||
|
||||
# Qt-es
|
||||
object_script.*.Release
|
||||
object_script.*.Debug
|
||||
*_plugin_import.cpp
|
||||
*_pch.h.cpp
|
||||
*_resource.rc
|
||||
*.qm
|
||||
.#*
|
||||
*.*#
|
||||
core
|
||||
!core/
|
||||
tags
|
||||
.DS_Store
|
||||
.directory
|
||||
*.debug
|
||||
Makefile*
|
||||
*.prl
|
||||
*.app
|
||||
moc_*.cpp
|
||||
ui_*.h
|
||||
qrc_*.cpp
|
||||
Thumbs.db
|
||||
*.res
|
||||
*.rc
|
||||
/.qmake.cache
|
||||
/.qmake.stash
|
||||
*.pro.user
|
||||
*.pro.user.*
|
||||
*.qbs.user
|
||||
*.qbs.user.*
|
||||
*.moc
|
||||
moc_*.cpp
|
||||
moc_*.h
|
||||
qrc_*.cpp
|
||||
ui_*.h
|
||||
*.qmlc
|
||||
*.jsc
|
||||
Makefile*
|
||||
*build-*
|
||||
*.qm
|
||||
*.prl
|
||||
|
||||
# Qt unit tests
|
||||
target_wrapper.*
|
||||
# qtcreator generated files
|
||||
*.pro.user*
|
||||
|
||||
# QtCreator
|
||||
*.autosave
|
||||
# xemacs temporary files
|
||||
*.flc
|
||||
|
||||
# QtCreator Qml
|
||||
*.qmlproject.user
|
||||
*.qmlproject.user.*
|
||||
# Vim temporary files
|
||||
.*.swp
|
||||
|
||||
# QtCreator CMake
|
||||
CMakeLists.txt.user*
|
||||
# Visual Studio generated files
|
||||
*.ib_pdb_index
|
||||
*.idb
|
||||
*.ilk
|
||||
*.pdb
|
||||
*.sln
|
||||
*.suo
|
||||
*.vcproj
|
||||
*vcproj.*.*.user
|
||||
*.ncb
|
||||
*.sdf
|
||||
*.opensdf
|
||||
*.vcxproj
|
||||
*vcxproj.*
|
||||
|
||||
# QtCreator 4.8< compilation database
|
||||
compile_commands.json
|
||||
# MinGW generated files
|
||||
*.Debug
|
||||
*.Release
|
||||
|
||||
# Python byte code
|
||||
*.pyc
|
||||
|
||||
# Binaries
|
||||
# --------
|
||||
*.dll
|
||||
*.exe
|
||||
|
||||
# QtCreator local machine specific files for imported projects
|
||||
*creator.user*
|
||||
|
||||
+181
@@ -0,0 +1,181 @@
|
||||
#include "common.h"
|
||||
#include "cdatabase.h"
|
||||
|
||||
#include <QSettings>
|
||||
|
||||
#include <QDebug>
|
||||
|
||||
|
||||
cDatabase::cDatabase()
|
||||
{
|
||||
QSettings settings;
|
||||
|
||||
m_databaseType = settings.value("database/databasetype", "").toString();
|
||||
m_hostName = settings.value("database/hostname", "").toString();
|
||||
m_port = settings.value("database/port", "").toInt();
|
||||
m_databaseName = settings.value("database/databaseName").toString();
|
||||
m_userName = settings.value("database/username", "").toString();
|
||||
m_password = settings.value("database/password").toString();
|
||||
|
||||
addTranslate("AUTOINCREMENT", "QMYSQL", "AUTO_INCREMENT");
|
||||
addTranslate("AUTOINCREMENT", "QSQLITE", "AUTOINCREMENT");
|
||||
}
|
||||
|
||||
cDatabase::~cDatabase()
|
||||
{
|
||||
if(m_db.isOpen())
|
||||
m_db.close();
|
||||
}
|
||||
|
||||
void cDatabase::addTranslate(const QString& sql, const QString& dbType, const QString& translated)
|
||||
{
|
||||
SQLTRANSLATE st = { sql, dbType, translated };
|
||||
m_sqlTranslate.append(st);
|
||||
}
|
||||
|
||||
QString cDatabase::translate(const QString& sql, const QString& dbType)
|
||||
{
|
||||
for(QList<SQLTRANSLATE>::iterator st = m_sqlTranslate.begin();st != m_sqlTranslate.end();st++)
|
||||
{
|
||||
if(st->sql == sql && st->dbType == dbType)
|
||||
return(st->translated);
|
||||
}
|
||||
return(sql);
|
||||
}
|
||||
|
||||
bool cDatabase::connect()
|
||||
{
|
||||
m_db = QSqlDatabase::addDatabase(m_databaseType);
|
||||
m_db.setHostName(m_hostName);
|
||||
m_db.setPort(m_port);
|
||||
m_db.setDatabaseName(m_databaseName);
|
||||
m_db.setUserName(m_userName);
|
||||
m_db.setPassword(m_password);
|
||||
|
||||
if(!m_db.open())
|
||||
{
|
||||
myDebug << m_db.lastError().text();
|
||||
return(false);
|
||||
}
|
||||
|
||||
if(!checkDB())
|
||||
{
|
||||
myDebug << m_db.lastError().text();
|
||||
return(false);
|
||||
}
|
||||
|
||||
return(true);
|
||||
}
|
||||
|
||||
QSqlDatabase cDatabase::db()
|
||||
{
|
||||
return(m_db);
|
||||
}
|
||||
|
||||
bool cDatabase::checkDB()
|
||||
{
|
||||
QSqlQuery query(m_db);
|
||||
if(!query.exec("SELECT version FROM config;"))
|
||||
{
|
||||
if(!createTables())
|
||||
return(false);
|
||||
|
||||
if(!query.exec("SELECT version FROM config;"))
|
||||
return(false);
|
||||
}
|
||||
|
||||
query.first();
|
||||
QString version = query.value("version").toString();
|
||||
if(version.compare(APP_VERSION))
|
||||
{
|
||||
if(!upgradeDB(APP_VERSION))
|
||||
return(false);
|
||||
}
|
||||
|
||||
return(true);
|
||||
}
|
||||
|
||||
bool cDatabase::createTables()
|
||||
{
|
||||
QSqlQuery query(m_db);
|
||||
|
||||
// CONFIG
|
||||
if(!query.exec("CREATE TABLE config "
|
||||
"( version VARCHAR(32) NOT NULL "
|
||||
");"))
|
||||
{
|
||||
myDebug << query.lastError().text();
|
||||
return(false);
|
||||
}
|
||||
|
||||
if(!query.exec(QString("INSERT INTO config (version) VALUES ('%1');").arg(APP_VERSION)))
|
||||
{
|
||||
myDebug << query.lastError().text();
|
||||
return(false);
|
||||
}
|
||||
|
||||
// MANUFACTURER
|
||||
if(!query.exec(QString("CREATE TABLE manufacturer "
|
||||
"( id INTEGER PRIMARY KEY %1, "
|
||||
" name VARCHAR(255) NOT NULL, "
|
||||
" address VARCHAR(2000), "
|
||||
" url VARCHAR(255), "
|
||||
" email VARCHAR(255), "
|
||||
" phone VARCHAR(255), "
|
||||
" fax VARCHAR(255), "
|
||||
" comment VARCHAR(2000) "
|
||||
");").arg(translate("AUTOINCREMENT", m_databaseType))))
|
||||
{
|
||||
myDebug << query.lastError().text();
|
||||
return(false);
|
||||
}
|
||||
|
||||
// DISTRIBUTOR
|
||||
if(!query.exec(QString("CREATE TABLE distributor "
|
||||
"( id INTEGER PRIMARY KEY %1, "
|
||||
" name VARCHAR(255) NOT NULL, "
|
||||
" address VARCHAR(2000), "
|
||||
" url VARCHAR(255), "
|
||||
" email VARCHAR(255), "
|
||||
" phone VARCHAR(255), "
|
||||
" fax VARCHAR(255), "
|
||||
" comment VARCHAR(2000) "
|
||||
");").arg(translate("AUTOINCREMENT", m_databaseType))))
|
||||
{
|
||||
myDebug << query.lastError().text();
|
||||
return(false);
|
||||
}
|
||||
|
||||
// STORAGE_CATEGORY
|
||||
if(!query.exec(QString("CREATE TABLE storage_category "
|
||||
"( id INTEGER PRIMARY KEY %1, "
|
||||
" parent INTEGER, "
|
||||
" name VARCHAR(255) NOT NULL, "
|
||||
" description VARCHAR(2000), "
|
||||
" CONSTRAINT FK_storage_category_id FOREIGN KEY (parent) REFERENCES storage_category(id) "
|
||||
");").arg(translate("AUTOINCREMENT", m_databaseType))))
|
||||
{
|
||||
myDebug << query.lastError().text();
|
||||
return(false);
|
||||
}
|
||||
|
||||
// STORAGE
|
||||
if(!query.exec(QString("CREATE TABLE storage "
|
||||
"( id INTEGER PRIMARY KEY %1, "
|
||||
" storage_category_id INTEGER, "
|
||||
" name VARCHAR(255) NOT NULL, "
|
||||
" description VARCHAR(2000), "
|
||||
" CONSTRAINT FK_storage_storage_category_id FOREIGN KEY (storage_category_id) REFERENCES storage_category(id) "
|
||||
");").arg(translate("AUTOINCREMENT", m_databaseType))))
|
||||
{
|
||||
myDebug << query.lastError().text();
|
||||
return(false);
|
||||
}
|
||||
|
||||
return(true);
|
||||
}
|
||||
|
||||
bool cDatabase::upgradeDB(const QString& /*version*/)
|
||||
{
|
||||
return(true);
|
||||
}
|
||||
+47
@@ -0,0 +1,47 @@
|
||||
#ifndef CDATABASE_H
|
||||
#define CDATABASE_H
|
||||
|
||||
|
||||
#include <QSqlDatabase>
|
||||
#include <QSqlQuery>
|
||||
#include <QSqlError>
|
||||
#include <QList>
|
||||
|
||||
|
||||
typedef struct tagSQLTRANSLATE
|
||||
{
|
||||
QString sql;
|
||||
QString dbType;
|
||||
QString translated;
|
||||
} SQLTRANSLATE;
|
||||
|
||||
|
||||
class cDatabase
|
||||
{
|
||||
public:
|
||||
cDatabase();
|
||||
~cDatabase();
|
||||
|
||||
bool connect();
|
||||
|
||||
QSqlDatabase db();
|
||||
private:
|
||||
QString m_databaseType;
|
||||
QString m_hostName;
|
||||
qint16 m_port;
|
||||
QString m_databaseName;
|
||||
QString m_userName;
|
||||
QString m_password;
|
||||
QSqlDatabase m_db;
|
||||
|
||||
QList<SQLTRANSLATE> m_sqlTranslate;
|
||||
|
||||
void addTranslate(const QString& sql, const QString& dbType, const QString& translated);
|
||||
QString translate(const QString& sql, const QString& dbType);
|
||||
|
||||
bool checkDB();
|
||||
bool createTables();
|
||||
bool upgradeDB(const QString& version);
|
||||
};
|
||||
|
||||
#endif // CDATABASE_H
|
||||
@@ -0,0 +1,364 @@
|
||||
#include "cdistributor.h"
|
||||
|
||||
#include <QSqlQuery>
|
||||
#include <QSqlError>
|
||||
|
||||
#include <QStandardItem>
|
||||
|
||||
#include "common.h"
|
||||
|
||||
|
||||
cDistributor::cDistributor(cDatabase* db, qint32 id, QObject* parent) :
|
||||
QObject(parent),
|
||||
m_db(db),
|
||||
m_changed(false),
|
||||
m_id(id),
|
||||
m_name(""),
|
||||
m_address(""),
|
||||
m_url(""),
|
||||
m_email(""),
|
||||
m_comment(""),
|
||||
m_phone(""),
|
||||
m_fax(""),
|
||||
m_item(nullptr)
|
||||
{
|
||||
}
|
||||
|
||||
cDistributor::cDistributor(cDistributor* distributor)
|
||||
{
|
||||
set(distributor);
|
||||
}
|
||||
|
||||
void cDistributor::set(cDistributor* distributor)
|
||||
{
|
||||
m_db = distributor->db();
|
||||
m_id = distributor->id();
|
||||
m_name = distributor->name();
|
||||
m_address = distributor->address();
|
||||
m_url = distributor->url();
|
||||
m_email = distributor->email();
|
||||
m_comment = distributor->comment();
|
||||
m_phone = distributor->phone();
|
||||
m_fax = distributor->fax();
|
||||
}
|
||||
|
||||
void cDistributor::setID(const qint32& id)
|
||||
{
|
||||
m_id = id;
|
||||
m_changed = true;
|
||||
emit idChanged(id);
|
||||
emit distributorChanged(this);
|
||||
}
|
||||
|
||||
qint32 cDistributor::id()
|
||||
{
|
||||
return(m_id);
|
||||
}
|
||||
|
||||
void cDistributor::setName(const QString& name)
|
||||
{
|
||||
m_name = name;
|
||||
m_changed = true;
|
||||
emit nameChanged(name);
|
||||
emit distributorChanged(this);
|
||||
}
|
||||
|
||||
QString cDistributor::name()
|
||||
{
|
||||
return(m_name);
|
||||
}
|
||||
|
||||
void cDistributor::setAddress(const QString& address)
|
||||
{
|
||||
m_address = address;
|
||||
emit addressChanged(address);
|
||||
emit distributorChanged(this);
|
||||
}
|
||||
|
||||
QString cDistributor::address()
|
||||
{
|
||||
return(m_address);
|
||||
}
|
||||
|
||||
void cDistributor::setURL(const QString& url)
|
||||
{
|
||||
m_url = url;
|
||||
m_changed = true;
|
||||
emit urlChanged(url);
|
||||
emit distributorChanged(this);
|
||||
}
|
||||
|
||||
QString cDistributor::url()
|
||||
{
|
||||
return(m_url);
|
||||
}
|
||||
|
||||
void cDistributor::setEmail(const QString& email)
|
||||
{
|
||||
m_email = email;
|
||||
m_changed = true;
|
||||
emit emailChanged(email);
|
||||
emit distributorChanged(this);
|
||||
}
|
||||
|
||||
QString cDistributor::email()
|
||||
{
|
||||
return(m_email);
|
||||
}
|
||||
|
||||
void cDistributor::setComment(const QString& comment)
|
||||
{
|
||||
m_comment = comment;
|
||||
emit commentChanged(comment);
|
||||
emit distributorChanged(this);
|
||||
}
|
||||
|
||||
QString cDistributor::comment()
|
||||
{
|
||||
return(m_comment);
|
||||
}
|
||||
|
||||
void cDistributor::setPhone(const QString& phone)
|
||||
{
|
||||
m_phone = phone;
|
||||
m_changed = true;
|
||||
emit phoneChanged(phone);
|
||||
emit distributorChanged(this);
|
||||
}
|
||||
|
||||
QString cDistributor::phone()
|
||||
{
|
||||
return(m_phone);
|
||||
}
|
||||
|
||||
void cDistributor::setFax(const QString& fax)
|
||||
{
|
||||
m_fax = fax;
|
||||
m_changed = true;
|
||||
emit faxChanged(fax);
|
||||
emit distributorChanged(this);
|
||||
}
|
||||
|
||||
QString cDistributor::fax()
|
||||
{
|
||||
return(m_fax);
|
||||
}
|
||||
|
||||
void cDistributor::setItem(QStandardItem* item)
|
||||
{
|
||||
m_item = item;
|
||||
}
|
||||
|
||||
QStandardItem* cDistributor::item()
|
||||
{
|
||||
return(m_item);
|
||||
}
|
||||
|
||||
cDatabase* cDistributor::db()
|
||||
{
|
||||
return(m_db);
|
||||
}
|
||||
|
||||
bool cDistributor::save()
|
||||
{
|
||||
if(!m_changed)
|
||||
return(true);
|
||||
|
||||
QSqlQuery query;
|
||||
|
||||
if(m_id == -1)
|
||||
query.prepare("INSERT INTO distributor (name, address, url, email, comment, phone, fax) VALUES (:name, :address, :url, :email, :comment, :phone, :fax);");
|
||||
else
|
||||
query.prepare("UPDATE distributor SET name=:name, address=:address, url=:url, email=:email, comment=:comment, phone=:phone, fax=:fax WHERE id=:id;");
|
||||
|
||||
query.bindValue(":id", m_id);
|
||||
query.bindValue(":name", m_name);
|
||||
query.bindValue(":address", m_address);
|
||||
query.bindValue(":url", m_url);
|
||||
query.bindValue(":email", m_email);
|
||||
query.bindValue(":comment", m_comment);
|
||||
query.bindValue(":phone", m_phone);
|
||||
query.bindValue(":fax", m_fax);
|
||||
|
||||
if(!query.exec())
|
||||
{
|
||||
myDebug << query.lastError().text();
|
||||
return(false);
|
||||
}
|
||||
|
||||
if(m_id == -1)
|
||||
{
|
||||
if(!query.exec("SELECT MAX(id) MAXID FROM distributor;"))
|
||||
{
|
||||
myDebug << query.lastError().text();
|
||||
return(false);
|
||||
}
|
||||
|
||||
query.first();
|
||||
m_id = query.value("MAXID").toInt();
|
||||
}
|
||||
m_changed = false;
|
||||
return(true);
|
||||
}
|
||||
|
||||
bool cDistributor::remove()
|
||||
{
|
||||
QSqlQuery query;
|
||||
|
||||
query.prepare("DELETE FROM distributor WHERE id=:id;");
|
||||
query.bindValue(":id", m_id);
|
||||
|
||||
if(!query.exec())
|
||||
{
|
||||
myDebug << query.lastError().text();
|
||||
return(false);
|
||||
}
|
||||
|
||||
return(true);
|
||||
}
|
||||
|
||||
void cDistributor::clearSave()
|
||||
{
|
||||
m_changed = false;
|
||||
}
|
||||
|
||||
cDistributorList::cDistributorList(cDatabase* db, QObject* parent) :
|
||||
QObject(parent),
|
||||
m_db(db)
|
||||
{
|
||||
}
|
||||
|
||||
bool cDistributorList::load()
|
||||
{
|
||||
if(!m_db->db().isOpen())
|
||||
return(false);
|
||||
|
||||
QString sql = QString("SELECT id, "
|
||||
" name, "
|
||||
" address, "
|
||||
" url, "
|
||||
" email, "
|
||||
" comment, "
|
||||
" phone, "
|
||||
" fax "
|
||||
"FROM distributor "
|
||||
"ORDER BY name;");
|
||||
QSqlQuery query(m_db->db());
|
||||
|
||||
query.prepare(sql);
|
||||
|
||||
if(!query.exec())
|
||||
{
|
||||
myDebug << query.lastError().text();
|
||||
return(false);
|
||||
}
|
||||
|
||||
while(query.next())
|
||||
{
|
||||
cDistributor* lpDistributor = add(query.value("id").toInt());
|
||||
lpDistributor->setName(query.value("name").toString());
|
||||
lpDistributor->setAddress(query.value("address").toString());
|
||||
lpDistributor->setURL(query.value("url").toString());
|
||||
lpDistributor->setEmail(query.value("email").toString());
|
||||
lpDistributor->setComment(query.value("comment").toString());
|
||||
lpDistributor->setPhone(query.value("phone").toString());
|
||||
lpDistributor->setFax(query.value("fax").toString());
|
||||
}
|
||||
|
||||
return(true);
|
||||
}
|
||||
|
||||
cDistributor* cDistributorList::add(const qint32& id)
|
||||
{
|
||||
cDistributor* lpNew = find(id);
|
||||
|
||||
if(!lpNew)
|
||||
{
|
||||
lpNew = new cDistributor(m_db, id);
|
||||
append(lpNew);
|
||||
emit distributorAdded(lpNew);
|
||||
}
|
||||
|
||||
return(lpNew);
|
||||
}
|
||||
|
||||
cDistributor* cDistributorList::add(const QString& name)
|
||||
{
|
||||
cDistributor* lpNew = new cDistributor(m_db);
|
||||
lpNew->setName(name);
|
||||
append(lpNew);
|
||||
emit distributorAdded(lpNew);
|
||||
|
||||
return(lpNew);
|
||||
}
|
||||
|
||||
bool cDistributorList::remove(const qint32& id)
|
||||
{
|
||||
cDistributor* manufacturer = find(id);
|
||||
if(!manufacturer)
|
||||
return(false);
|
||||
|
||||
if(!manufacturer->remove())
|
||||
return(false);
|
||||
|
||||
if(!removeOne(manufacturer))
|
||||
return(false);
|
||||
|
||||
emit distributorRemoved(manufacturer);
|
||||
|
||||
return(true);
|
||||
}
|
||||
|
||||
cDistributor* cDistributorList::find(const qint32& id)
|
||||
{
|
||||
for(int i = 0;i < count();i++)
|
||||
{
|
||||
if(at(i)->id() == id)
|
||||
return(at(i));
|
||||
}
|
||||
|
||||
return(nullptr);
|
||||
}
|
||||
|
||||
cDistributor* cDistributorList::find(const QString& name)
|
||||
{
|
||||
for(int i = 0;i < count();i++)
|
||||
{
|
||||
if(at(i)->name() == name)
|
||||
return(at(i));
|
||||
}
|
||||
|
||||
return(nullptr);
|
||||
}
|
||||
|
||||
bool cDistributorList::fillList(QStandardItemModel* model)
|
||||
{
|
||||
model->clear();
|
||||
|
||||
if(!count())
|
||||
return(true);
|
||||
|
||||
for(int i = 0;i < count();i++)
|
||||
{
|
||||
QStandardItem* item = new QStandardItem;
|
||||
at(i)->setItem(item);
|
||||
item->setText(at(i)->name());
|
||||
item->setData(QVariant::fromValue(at(i)), ITEM_DISTRIBUTOR_DATA);
|
||||
model->appendRow(item);
|
||||
}
|
||||
|
||||
return(true);
|
||||
}
|
||||
|
||||
bool cDistributorList::save()
|
||||
{
|
||||
bool ret = true;
|
||||
|
||||
for(int i = 0;i < count();i++)
|
||||
{
|
||||
if(!at(i)->save())
|
||||
ret = false;
|
||||
}
|
||||
|
||||
return(ret);
|
||||
}
|
||||
+108
@@ -0,0 +1,108 @@
|
||||
#ifndef CDISTRIBUTOR_H
|
||||
#define CDISTRIBUTOR_H
|
||||
|
||||
|
||||
#include "cdatabase.h"
|
||||
|
||||
#include <QMetaType>
|
||||
#include <QList>
|
||||
#include <QObject>
|
||||
|
||||
#include <QStandardItem>
|
||||
#include <QStandardItemModel>
|
||||
|
||||
|
||||
class cDistributor : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit cDistributor(cDatabase* db, qint32 id = -1, QObject* parent = nullptr);
|
||||
cDistributor(cDistributor* distributor);
|
||||
|
||||
void set(cDistributor* distributor);
|
||||
|
||||
void setID(const qint32& id);
|
||||
qint32 id();
|
||||
|
||||
void setName(const QString& name);
|
||||
QString name();
|
||||
|
||||
void setAddress(const QString& address);
|
||||
QString address();
|
||||
|
||||
void setURL(const QString& url);
|
||||
QString url();
|
||||
|
||||
void setEmail(const QString& email);
|
||||
QString email();
|
||||
|
||||
void setComment(const QString& comment);
|
||||
QString comment();
|
||||
|
||||
void setPhone(const QString& phone);
|
||||
QString phone();
|
||||
|
||||
void setFax(const QString& fax);
|
||||
QString fax();
|
||||
|
||||
void setItem(QStandardItem* item);
|
||||
QStandardItem* item();
|
||||
|
||||
bool save();
|
||||
void clearSave();
|
||||
bool remove();
|
||||
|
||||
cDatabase* db();
|
||||
private:
|
||||
cDatabase* m_db;
|
||||
bool m_changed;
|
||||
qint32 m_id;
|
||||
QString m_name;
|
||||
QString m_address;
|
||||
QString m_url;
|
||||
QString m_email;
|
||||
QString m_comment;
|
||||
QString m_phone;
|
||||
QString m_fax;
|
||||
QStandardItem* m_item;
|
||||
signals:
|
||||
void distributorChanged(cDistributor* distributor);
|
||||
void idChanged(const qint32& id);
|
||||
void nameChanged(const QString& name);
|
||||
void addressChanged(const QString& address);
|
||||
void urlChanged(const QString& url);
|
||||
void emailChanged(const QString& email);
|
||||
void commentChanged(const QString& comment);
|
||||
void phoneChanged(const QString& phone);
|
||||
void faxChanged(const QString& fax);
|
||||
};
|
||||
|
||||
Q_DECLARE_METATYPE(cDistributor*)
|
||||
|
||||
class cDistributorList : public QObject, public QList<cDistributor*>
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
cDistributorList(cDatabase* db, QObject* parent = nullptr);
|
||||
|
||||
bool load();
|
||||
cDistributor* add(const qint32& id);
|
||||
cDistributor* add(const QString& name);
|
||||
bool remove(const qint32& id);
|
||||
cDistributor* find(const qint32& id);
|
||||
cDistributor* find(const QString& name);
|
||||
|
||||
bool fillList(QStandardItemModel* model);
|
||||
|
||||
bool save();
|
||||
private:
|
||||
cDatabase* m_db;
|
||||
|
||||
signals:
|
||||
void distributorAdded(cDistributor* manufacturer);
|
||||
void distributorRemoved(cDistributor* manufacturer);
|
||||
};
|
||||
|
||||
#endif // CDISTRIBUTOR_H
|
||||
@@ -0,0 +1,111 @@
|
||||
#include "cdistributorwindow.h"
|
||||
#include "ui_cdistributorwindow.h"
|
||||
|
||||
#include "cmainwindow.h"
|
||||
|
||||
|
||||
cDistributorWindow::cDistributorWindow(QWidget *parent) :
|
||||
cMDISubWindow(parent),
|
||||
ui(new Ui::cDistributorWindow),
|
||||
m_distributor(nullptr)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
}
|
||||
|
||||
cDistributorWindow::~cDistributorWindow()
|
||||
{
|
||||
delete ui;
|
||||
}
|
||||
|
||||
void cDistributorWindow::setDistributor(cDistributor* distributor)
|
||||
{
|
||||
m_distributor = distributor;
|
||||
|
||||
fillFields();
|
||||
|
||||
connect(ui->m_name, &QLineEdit::textChanged, this, &cDistributorWindow::onNameChanged);
|
||||
connect(ui->m_address, &QPlainTextEdit::textChanged, this, &cDistributorWindow::onAddressChanged);
|
||||
connect(ui->m_url, &QLineEdit::textChanged, this, &cDistributorWindow::onURLChanged);
|
||||
connect(ui->m_email, &QLineEdit::textChanged, this, &cDistributorWindow::onEmailChanged);
|
||||
connect(ui->m_phone, &QLineEdit::textChanged, this, &cDistributorWindow::onPhoneChanged);
|
||||
connect(ui->m_fax, &QLineEdit::textChanged, this, &cDistributorWindow::onFaxChanged);
|
||||
connect(ui->m_comment, &QPlainTextEdit::textChanged, this, &cDistributorWindow::onCommentChanged);
|
||||
}
|
||||
|
||||
cDistributor* cDistributorWindow::distributor()
|
||||
{
|
||||
return(m_distributor);
|
||||
}
|
||||
|
||||
void cDistributorWindow::onDistributorChanged(cDistributor* distributor)
|
||||
{
|
||||
if(m_distributor != distributor)
|
||||
return;
|
||||
|
||||
fillFields();
|
||||
}
|
||||
|
||||
void cDistributorWindow::onNameChanged(const QString& name)
|
||||
{
|
||||
m_distributor->setName(name);
|
||||
|
||||
if(m_distributor->item())
|
||||
m_distributor->item()->setText(name);
|
||||
|
||||
emit somethingChanged();
|
||||
}
|
||||
|
||||
void cDistributorWindow::onAddressChanged()
|
||||
{
|
||||
m_distributor->setAddress(ui->m_address->toPlainText());
|
||||
|
||||
emit somethingChanged();
|
||||
}
|
||||
|
||||
void cDistributorWindow::onURLChanged(const QString& url)
|
||||
{
|
||||
m_distributor->setURL(url);
|
||||
|
||||
emit somethingChanged();
|
||||
}
|
||||
|
||||
void cDistributorWindow::onEmailChanged(const QString& email)
|
||||
{
|
||||
m_distributor->setEmail(email);
|
||||
|
||||
emit somethingChanged();
|
||||
}
|
||||
|
||||
void cDistributorWindow::onPhoneChanged(const QString& phone)
|
||||
{
|
||||
m_distributor->setPhone(phone);
|
||||
|
||||
emit somethingChanged();
|
||||
}
|
||||
|
||||
void cDistributorWindow::onFaxChanged(const QString& fax)
|
||||
{
|
||||
m_distributor->setFax(fax);
|
||||
|
||||
emit somethingChanged();
|
||||
}
|
||||
|
||||
void cDistributorWindow::onCommentChanged()
|
||||
{
|
||||
m_distributor->setComment(ui->m_comment->toPlainText());
|
||||
|
||||
emit somethingChanged();
|
||||
}
|
||||
|
||||
void cDistributorWindow::fillFields()
|
||||
{
|
||||
ui->m_name->setText(m_distributor->name());
|
||||
ui->m_address->setPlainText(m_distributor->address());
|
||||
ui->m_url->setText(m_distributor->url());
|
||||
ui->m_email->setText(m_distributor->email());
|
||||
ui->m_phone->setText(m_distributor->phone());
|
||||
ui->m_fax->setText(m_distributor->fax());
|
||||
ui->m_comment->setPlainText(m_distributor->comment());
|
||||
|
||||
setWindowTitle("distributor - " + m_distributor->name());
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
#ifndef CDISTRIBUTORWINDOW_H
|
||||
#define CDISTRIBUTORWINDOW_H
|
||||
|
||||
|
||||
#include "cdistributor.h"
|
||||
|
||||
#include "cmdisubwindow.h"
|
||||
#include "cmainwindow.h"
|
||||
|
||||
#include <QWidget>
|
||||
|
||||
|
||||
namespace Ui {
|
||||
class cDistributorWindow;
|
||||
}
|
||||
|
||||
class cDistributorWindow : public cMDISubWindow
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit cDistributorWindow(QWidget *parent = nullptr);
|
||||
~cDistributorWindow();
|
||||
|
||||
void setDistributor(cDistributor* distributor);
|
||||
cDistributor* distributor();
|
||||
|
||||
private:
|
||||
Ui::cDistributorWindow* ui;
|
||||
cDistributor* m_distributor;
|
||||
|
||||
void fillFields();
|
||||
|
||||
public slots:
|
||||
void onDistributorChanged(cDistributor* distributor);
|
||||
|
||||
private slots:
|
||||
void onNameChanged(const QString& szName);
|
||||
void onAddressChanged();
|
||||
void onURLChanged(const QString& szURL);
|
||||
void onEmailChanged(const QString& szEmail);
|
||||
void onPhoneChanged(const QString& szPhone);
|
||||
void onFaxChanged(const QString& szFax);
|
||||
void onCommentChanged();
|
||||
|
||||
signals:
|
||||
void somethingChanged();
|
||||
};
|
||||
|
||||
#endif // CDISTRIBUTORWINDOW_H
|
||||
@@ -0,0 +1,95 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>cDistributorWindow</class>
|
||||
<widget class="QWidget" name="cDistributorWindow">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>400</width>
|
||||
<height>300</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Distributor - </string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="0" column="0">
|
||||
<layout class="QFormLayout" name="formLayout">
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="text">
|
||||
<string>Name:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QLineEdit" name="m_name"/>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_2">
|
||||
<property name="text">
|
||||
<string>Address:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QPlainTextEdit" name="m_address"/>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="label_3">
|
||||
<property name="text">
|
||||
<string>URL:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QLineEdit" name="m_url"/>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<widget class="QLabel" name="label_4">
|
||||
<property name="text">
|
||||
<string>Email:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<widget class="QLineEdit" name="m_email"/>
|
||||
</item>
|
||||
<item row="4" column="0">
|
||||
<widget class="QLabel" name="label_5">
|
||||
<property name="text">
|
||||
<string>Phone:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="1">
|
||||
<widget class="QLineEdit" name="m_phone"/>
|
||||
</item>
|
||||
<item row="5" column="0">
|
||||
<widget class="QLabel" name="label_6">
|
||||
<property name="text">
|
||||
<string>Fax:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="1">
|
||||
<widget class="QLineEdit" name="m_fax"/>
|
||||
</item>
|
||||
<item row="6" column="0">
|
||||
<widget class="QLabel" name="label_7">
|
||||
<property name="text">
|
||||
<string>Comment:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="1">
|
||||
<widget class="QPlainTextEdit" name="m_comment"/>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
+726
@@ -0,0 +1,726 @@
|
||||
#include "cmainwindow.h"
|
||||
#include "ui_cmainwindow.h"
|
||||
|
||||
#include "cdatabase.h"
|
||||
|
||||
#include "cwidget.h"
|
||||
#include "cmanufacturerwindow.h"
|
||||
#include "cdistributorwindow.h"
|
||||
|
||||
#include <QSettings>
|
||||
#include <QInputDialog>
|
||||
|
||||
#include <QMessageBox>
|
||||
|
||||
#include "common.h"
|
||||
|
||||
|
||||
cMainWindow::cMainWindow(cSplashScreen* splashScreen, QWidget *parent)
|
||||
: QMainWindow(parent),
|
||||
ui(new Ui::cMainWindow),
|
||||
m_somethingChanged(false),
|
||||
m_splashScreen(splashScreen),
|
||||
m_database(nullptr),
|
||||
m_manufacturerList(nullptr),
|
||||
m_distributorList(nullptr),
|
||||
m_storageCategoryList(nullptr),
|
||||
m_storageList(nullptr),
|
||||
m_fileMenu(nullptr),
|
||||
m_fileToolBar(nullptr),
|
||||
m_fileQuitAction(nullptr),
|
||||
m_listAdd(nullptr),
|
||||
m_listEdit(nullptr),
|
||||
m_listRemove(nullptr),
|
||||
m_manufacturerListAddAction(nullptr),
|
||||
m_manufacturerListEditAction(nullptr),
|
||||
m_manufacturerListRemoveAction(nullptr),
|
||||
m_distributorListAddAction(nullptr),
|
||||
m_distributorListEditAction(nullptr),
|
||||
m_distributorListRemoveAction(nullptr),
|
||||
m_manufacturerListModel(nullptr),
|
||||
m_distributorListModel(nullptr),
|
||||
m_storageListModel(nullptr),
|
||||
m_updatingTab(false)
|
||||
{
|
||||
initUI();
|
||||
createActions();
|
||||
|
||||
loadData();
|
||||
|
||||
setListButtonState();
|
||||
updateWindowTitle();
|
||||
}
|
||||
|
||||
cMainWindow::~cMainWindow()
|
||||
{
|
||||
if(m_manufacturerList)
|
||||
delete m_manufacturerList;
|
||||
|
||||
if(m_distributorList)
|
||||
delete m_distributorList;
|
||||
|
||||
if(m_storageCategoryList)
|
||||
delete m_storageCategoryList;
|
||||
|
||||
if(m_storageList)
|
||||
delete m_storageList;
|
||||
|
||||
if(m_database)
|
||||
delete m_database;
|
||||
|
||||
delete ui;
|
||||
}
|
||||
|
||||
void cMainWindow::closeEvent(QCloseEvent *event)
|
||||
{
|
||||
QSettings settings;
|
||||
settings.setValue("main/width", QVariant::fromValue(size().width()));
|
||||
settings.setValue("main/height", QVariant::fromValue(size().height()));
|
||||
settings.setValue("main/x", QVariant::fromValue(x()));
|
||||
settings.setValue("main/y", QVariant::fromValue(y()));
|
||||
if(this->isMaximized())
|
||||
settings.setValue("main/maximized", QVariant::fromValue(true));
|
||||
else
|
||||
settings.setValue("main/maximized", QVariant::fromValue(false));
|
||||
|
||||
QList<qint32> sizes = ui->m_splitter->sizes();
|
||||
|
||||
for(int x = 0;x < sizes.count();x++)
|
||||
settings.setValue(QString("main/splitter%1").arg(x+1), QVariant::fromValue(sizes[x]));
|
||||
|
||||
event->accept();
|
||||
}
|
||||
|
||||
void cMainWindow::initUI()
|
||||
{
|
||||
ui->setupUi(this);
|
||||
|
||||
QIcon::setThemeName("TangoMFK");
|
||||
|
||||
QSettings settings;
|
||||
|
||||
if(!settings.value("main/maximized").toBool())
|
||||
{
|
||||
qint32 iX = settings.value("main/x", QVariant::fromValue(-1)).toInt();
|
||||
qint32 iY = settings.value("main/y", QVariant::fromValue(-1)).toInt();
|
||||
qint32 iWidth = settings.value("main/width", QVariant::fromValue(-1)).toInt();
|
||||
qint32 iHeight = settings.value("main/height", QVariant::fromValue(-1)).toInt();
|
||||
|
||||
if(iWidth != -1 && iHeight != -1)
|
||||
resize(iWidth, iHeight);
|
||||
if(iX != -1 && iY != -1)
|
||||
move(iX, iY);
|
||||
}
|
||||
|
||||
qint32 iWidth1 = settings.value("main/splitter1", QVariant::fromValue(-1)).toInt();
|
||||
qint32 iWidth2 = settings.value("main/splitter2", QVariant::fromValue(-1)).toInt();
|
||||
qint32 iWidth3 = settings.value("main/splitter3", QVariant::fromValue(-1)).toInt();
|
||||
|
||||
ui->m_splitter->setSizes(QList<int>() << iWidth1 << iWidth2 << iWidth3);
|
||||
|
||||
m_manufacturerListModel = new QStandardItemModel(0, 1);
|
||||
ui->m_manufacturerList->setModel(m_manufacturerListModel);
|
||||
|
||||
m_distributorListModel = new QStandardItemModel(0, 1);
|
||||
ui->m_distributorList->setModel(m_distributorListModel);
|
||||
|
||||
m_storageListModel = new QStandardItemModel(0, 1);
|
||||
ui->m_storageList->setModel(m_storageListModel);
|
||||
|
||||
ui->m_toolBox->setCurrentIndex(0);
|
||||
}
|
||||
|
||||
void cMainWindow::createActions()
|
||||
{
|
||||
setToolButtonStyle(Qt::ToolButtonFollowStyle);
|
||||
createFileActions();
|
||||
|
||||
const QIcon addIcon = QIcon::fromTheme("list-add");
|
||||
m_listAdd = new QAction(addIcon, "add", this);
|
||||
ui->m_listAdd->setDefaultAction(m_listAdd);
|
||||
connect(m_listAdd, &QAction::triggered, this, &cMainWindow::onListAdd);
|
||||
|
||||
const QIcon editIcon = QIcon::fromTheme("accessories-text-editor");
|
||||
m_listEdit = new QAction(editIcon, "edit", this);
|
||||
ui->m_listEdit->setDefaultAction(m_listEdit);
|
||||
connect(m_listEdit, &QAction::triggered, this, &cMainWindow::onListEdit);
|
||||
|
||||
const QIcon removeIcon = QIcon::fromTheme("list-remove");
|
||||
m_listRemove = new QAction(removeIcon, "remove", this);
|
||||
ui->m_listRemove->setDefaultAction(m_listRemove);
|
||||
connect(m_listRemove, &QAction::triggered, this, &cMainWindow::onListRemove);
|
||||
|
||||
connect(ui->m_toolBox, &QToolBox::currentChanged, this, &cMainWindow::onToolBoxCurrentChanged);
|
||||
|
||||
connect(ui->m_manufacturerList, &QTreeView::clicked, this, &cMainWindow::onManufacturerListClicked);
|
||||
connect(ui->m_manufacturerList, &QTreeView::doubleClicked, this, &cMainWindow::onManufacturerListDoubleClicked);
|
||||
connect(m_manufacturerListModel, &QStandardItemModel::itemChanged, this, &cMainWindow::onManufacturerListNameChanged);
|
||||
connect(ui->m_manufacturerList, &QTreeView::customContextMenuRequested, this, &cMainWindow::onManufacturerListContextMenu);
|
||||
|
||||
connect(ui->m_distributorList, &QTreeView::clicked, this, &cMainWindow::onDistributorListClicked);
|
||||
connect(ui->m_distributorList, &QTreeView::doubleClicked, this, &cMainWindow::onDistributorListDoubleClicked);
|
||||
connect(m_distributorListModel, &QStandardItemModel::itemChanged, this, &cMainWindow::onDistributorListNameChanged);
|
||||
connect(ui->m_distributorList, &QTreeView::customContextMenuRequested, this, &cMainWindow::onDistributorListContextMenu);
|
||||
|
||||
connect(ui->m_mainTab, &QTabWidget::currentChanged, this, &cMainWindow::onMainTabCurrentChanged);
|
||||
connect(ui->m_mainTab, &QTabWidget::tabCloseRequested, this, &cMainWindow::onMainTabTabCloseRequested);
|
||||
connect(ui->m_mdiArea, &QMdiArea::subWindowActivated, this, &cMainWindow::onMdiAreaSubWindowActivated);
|
||||
|
||||
createContextActions();
|
||||
}
|
||||
|
||||
void cMainWindow::createContextActions()
|
||||
{
|
||||
m_manufacturerListAddAction = new QAction(tr("add..."), this);
|
||||
connect(m_manufacturerListAddAction, &QAction::triggered, this, &cMainWindow::onManufacturerListAddClicked);
|
||||
|
||||
m_manufacturerListEditAction = new QAction(tr("edit..."), this);
|
||||
connect(m_manufacturerListEditAction, &QAction::triggered, this, &cMainWindow::onManufacturerListEditClicked);
|
||||
|
||||
m_manufacturerListRemoveAction = new QAction(tr("remove..."), this);
|
||||
connect(m_manufacturerListRemoveAction, &QAction::triggered, this, &cMainWindow::onManufacturerListRemoveClicked);
|
||||
|
||||
m_distributorListAddAction = new QAction(tr("add..."), this);
|
||||
connect(m_distributorListAddAction, &QAction::triggered, this, &cMainWindow::onDistributorListAddClicked);
|
||||
|
||||
m_distributorListEditAction = new QAction(tr("edit..."), this);
|
||||
connect(m_distributorListEditAction, &QAction::triggered, this, &cMainWindow::onDistributorListEditClicked);
|
||||
|
||||
m_distributorListRemoveAction = new QAction(tr("remove..."), this);
|
||||
connect(m_distributorListRemoveAction, &QAction::triggered, this, &cMainWindow::onDistributorListRemoveClicked);
|
||||
}
|
||||
|
||||
void cMainWindow::createFileActions()
|
||||
{
|
||||
m_fileMenu = menuBar()->addMenu(tr("&File"));
|
||||
m_fileToolBar = addToolBar(tr("File Actions"));
|
||||
|
||||
m_fileSaveAction = m_fileMenu->addAction(tr("&Save"), this, &cMainWindow::onFileSave);
|
||||
m_fileSaveAction->setShortcut(Qt::CTRL | Qt::Key_S);
|
||||
|
||||
m_fileMenu->addSeparator();
|
||||
|
||||
m_fileQuitAction = m_fileMenu->addAction(tr("&Quit"), this, &QWidget::close);
|
||||
m_fileQuitAction->setShortcut(Qt::CTRL | Qt::Key_Q);
|
||||
}
|
||||
|
||||
void cMainWindow::loadData()
|
||||
{
|
||||
m_database = new cDatabase();
|
||||
m_database->connect();
|
||||
|
||||
m_manufacturerList = new cManufacturerList(m_database);
|
||||
m_manufacturerList->load();
|
||||
m_manufacturerList->fillList(m_manufacturerListModel);
|
||||
|
||||
m_distributorList = new cDistributorList(m_database);
|
||||
m_distributorList->load();
|
||||
m_distributorList->fillList(m_distributorListModel);
|
||||
|
||||
m_storageCategoryList = new cStorageCategoryList(m_database);
|
||||
m_storageCategoryList->load();
|
||||
m_storageCategoryList->fillList(m_storageListModel);
|
||||
|
||||
m_storageList = new cStorageList(m_database, m_storageCategoryList);
|
||||
m_storageList->load();
|
||||
m_storageList->fillList();
|
||||
}
|
||||
|
||||
void cMainWindow::setListButtonState()
|
||||
{
|
||||
switch(activeTab())
|
||||
{
|
||||
case TAB_MANUFACTURER_LIST:
|
||||
if(ui->m_manufacturerList->selectionModel()->selectedRows().count())
|
||||
{
|
||||
m_listEdit->setEnabled(true);
|
||||
m_listRemove->setEnabled(true);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_listEdit->setEnabled(false);
|
||||
m_listRemove->setEnabled(false);
|
||||
}
|
||||
break;
|
||||
case TAB_DISTRIBUTOR_LIST:
|
||||
if(ui->m_distributorList->selectionModel()->selectedRows().count())
|
||||
{
|
||||
m_listEdit->setEnabled(true);
|
||||
m_listRemove->setEnabled(true);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_listEdit->setEnabled(false);
|
||||
m_listRemove->setEnabled(false);
|
||||
}
|
||||
break;
|
||||
case TAB_PART_LIST:
|
||||
{
|
||||
m_listEdit->setEnabled(false);
|
||||
m_listRemove->setEnabled(false);
|
||||
}
|
||||
break;
|
||||
case TAB_PROJECT_LIST:
|
||||
{
|
||||
m_listEdit->setEnabled(false);
|
||||
m_listRemove->setEnabled(false);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
m_listAdd->setEnabled(true);
|
||||
}
|
||||
|
||||
void cMainWindow::onFileSave()
|
||||
{
|
||||
if(m_manufacturerList->save())
|
||||
{
|
||||
m_somethingChanged = false;
|
||||
updateWindowTitle();
|
||||
}
|
||||
|
||||
if(m_distributorList->save())
|
||||
{
|
||||
m_somethingChanged = false;
|
||||
updateWindowTitle();
|
||||
}
|
||||
|
||||
if(m_storageList->save())
|
||||
{
|
||||
m_somethingChanged = false;
|
||||
updateWindowTitle();
|
||||
}
|
||||
|
||||
if(m_storageCategoryList->save())
|
||||
{
|
||||
m_somethingChanged = false;
|
||||
updateWindowTitle();
|
||||
}
|
||||
}
|
||||
|
||||
void cMainWindow::onSomethingChanged()
|
||||
{
|
||||
if(!m_somethingChanged)
|
||||
{
|
||||
m_somethingChanged = true;
|
||||
updateWindowTitle();
|
||||
}
|
||||
}
|
||||
|
||||
void cMainWindow::onToolBoxCurrentChanged(int /*index*/)
|
||||
{
|
||||
setListButtonState();
|
||||
}
|
||||
|
||||
void cMainWindow::onMainTabCurrentChanged(int /*index*/)
|
||||
{
|
||||
if(m_updatingTab)
|
||||
return;
|
||||
|
||||
m_updatingTab = true;
|
||||
cWidget* lpWidget = static_cast<cWidget*>(ui->m_mainTab->currentWidget());
|
||||
QMdiSubWindow* lpWindow = lpWidget->window();
|
||||
ui->m_mdiArea->setActiveSubWindow(lpWindow);
|
||||
m_updatingTab = false;
|
||||
}
|
||||
|
||||
void cMainWindow::onMainTabTabCloseRequested(int index)
|
||||
{
|
||||
if(m_updatingTab)
|
||||
return;
|
||||
|
||||
m_updatingTab = true;
|
||||
// disconnectTextEdit();
|
||||
// m_lpOldTextEdit = nullptr;
|
||||
cWidget* lpWidget = static_cast<cWidget*>(ui->m_mainTab->currentWidget());
|
||||
QMdiSubWindow* lpWindow = lpWidget->window();
|
||||
ui->m_mainTab->removeTab(index);
|
||||
ui->m_mdiArea->removeSubWindow(lpWindow);
|
||||
delete(lpWidget);
|
||||
m_updatingTab = false;
|
||||
}
|
||||
|
||||
void cMainWindow::onMdiAreaSubWindowActivated(QMdiSubWindow *arg1)
|
||||
{
|
||||
if(m_updatingTab)
|
||||
return;
|
||||
|
||||
m_updatingTab = true;
|
||||
|
||||
for(int x = 0;x < ui->m_mainTab->count();x++)
|
||||
{
|
||||
cWidget* lpWidget = static_cast<cWidget*>(ui->m_mainTab->widget(x));
|
||||
if(lpWidget->window() == arg1)
|
||||
{
|
||||
ui->m_mainTab->setCurrentIndex(x);
|
||||
m_updatingTab = false;
|
||||
return;
|
||||
}
|
||||
}
|
||||
m_updatingTab = false;
|
||||
}
|
||||
|
||||
void cMainWindow::onSubWindowClosed(QWidget* lpSubWindow)
|
||||
{
|
||||
if(m_updatingTab)
|
||||
return;
|
||||
|
||||
m_updatingTab = true;
|
||||
// disconnectTextEdit();
|
||||
// m_lpOldTextEdit = nullptr;
|
||||
|
||||
for(int x = 0;x < ui->m_mainTab->count();x++)
|
||||
{
|
||||
cWidget* lpWidget = static_cast<cWidget*>(ui->m_mainTab->widget(x));
|
||||
if(lpWidget->widget() == lpSubWindow)
|
||||
{
|
||||
ui->m_mainTab->removeTab(x);
|
||||
m_updatingTab = false;
|
||||
return;
|
||||
}
|
||||
}
|
||||
m_updatingTab = false;
|
||||
}
|
||||
|
||||
void cMainWindow::onManufacturerListClicked(const QModelIndex& /*index*/)
|
||||
{
|
||||
setListButtonState();
|
||||
}
|
||||
|
||||
void cMainWindow::onManufacturerListDoubleClicked(const QModelIndex& /*index*/)
|
||||
{
|
||||
editManufacturer();
|
||||
}
|
||||
|
||||
void cMainWindow::onManufacturerListContextMenu(const QPoint& pos)
|
||||
{
|
||||
QMenu* menu = new QMenu(this);
|
||||
|
||||
menu->addAction(m_manufacturerListAddAction);
|
||||
|
||||
QStandardItem* item = nullptr;
|
||||
|
||||
if(ui->m_manufacturerList->selectionModel()->selectedRows().count())
|
||||
item = m_manufacturerListModel->itemFromIndex(ui->m_manufacturerList->currentIndex());
|
||||
if(item)
|
||||
{
|
||||
menu->addAction(m_manufacturerListEditAction);
|
||||
menu->addAction(m_manufacturerListRemoveAction);
|
||||
}
|
||||
|
||||
menu->exec(ui->m_manufacturerList->mapToGlobal(pos));
|
||||
}
|
||||
|
||||
void cMainWindow::onManufacturerListNameChanged(QStandardItem* item)
|
||||
{
|
||||
cManufacturer* manufacturer = item->data(ITEM_MANUFACTURER_DATA).value<cManufacturer*>();
|
||||
QString name = item->text();
|
||||
|
||||
if(name.isEmpty())
|
||||
{
|
||||
item->setText(manufacturer->name());
|
||||
return;
|
||||
}
|
||||
|
||||
if(name != manufacturer->name())
|
||||
{
|
||||
onSomethingChanged();
|
||||
manufacturer->setName(name);
|
||||
emit manufacturerNameChanged(manufacturer);
|
||||
}
|
||||
}
|
||||
|
||||
void cMainWindow::onDistributorListClicked(const QModelIndex& /*index*/)
|
||||
{
|
||||
setListButtonState();
|
||||
}
|
||||
|
||||
void cMainWindow::onDistributorListDoubleClicked(const QModelIndex& /*index*/)
|
||||
{
|
||||
editDistributor();
|
||||
}
|
||||
|
||||
void cMainWindow::onDistributorListContextMenu(const QPoint& pos)
|
||||
{
|
||||
QMenu* menu = new QMenu(this);
|
||||
|
||||
menu->addAction(m_distributorListAddAction);
|
||||
|
||||
QStandardItem* item = nullptr;
|
||||
|
||||
if(ui->m_distributorList->selectionModel()->selectedRows().count())
|
||||
item = m_distributorListModel->itemFromIndex(ui->m_distributorList->currentIndex());
|
||||
if(item)
|
||||
{
|
||||
menu->addAction(m_distributorListEditAction);
|
||||
menu->addAction(m_distributorListRemoveAction);
|
||||
}
|
||||
|
||||
menu->exec(ui->m_distributorList->mapToGlobal(pos));
|
||||
}
|
||||
|
||||
void cMainWindow::onDistributorListNameChanged(QStandardItem* item)
|
||||
{
|
||||
cDistributor* distributor = item->data(ITEM_DISTRIBUTOR_DATA).value<cDistributor*>();
|
||||
QString name = item->text();
|
||||
|
||||
if(name.isEmpty())
|
||||
{
|
||||
item->setText(distributor->name());
|
||||
return;
|
||||
}
|
||||
|
||||
if(name != distributor->name())
|
||||
{
|
||||
onSomethingChanged();
|
||||
distributor->setName(name);
|
||||
emit distributorNameChanged(distributor);
|
||||
}
|
||||
}
|
||||
|
||||
void cMainWindow::onListAdd()
|
||||
{
|
||||
switch(activeTab())
|
||||
{
|
||||
case TAB_MANUFACTURER_LIST:
|
||||
addManufacturer();
|
||||
break;
|
||||
case TAB_DISTRIBUTOR_LIST:
|
||||
addDistributor();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void cMainWindow::onListEdit()
|
||||
{
|
||||
switch(activeTab())
|
||||
{
|
||||
case TAB_MANUFACTURER_LIST:
|
||||
editManufacturer();
|
||||
break;
|
||||
}
|
||||
switch(activeTab())
|
||||
{
|
||||
case TAB_DISTRIBUTOR_LIST:
|
||||
editDistributor();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void cMainWindow::onListRemove()
|
||||
{
|
||||
switch(activeTab())
|
||||
{
|
||||
case TAB_MANUFACTURER_LIST:
|
||||
removeManufacturer();
|
||||
break;
|
||||
}
|
||||
switch(activeTab())
|
||||
{
|
||||
case TAB_DISTRIBUTOR_LIST:
|
||||
removeDistributor();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void cMainWindow::onManufacturerListAddClicked()
|
||||
{
|
||||
addManufacturer();
|
||||
}
|
||||
|
||||
void cMainWindow::onManufacturerListEditClicked()
|
||||
{
|
||||
editManufacturer();
|
||||
}
|
||||
|
||||
void cMainWindow::onManufacturerListRemoveClicked()
|
||||
{
|
||||
removeManufacturer();
|
||||
}
|
||||
|
||||
void cMainWindow::onDistributorListAddClicked()
|
||||
{
|
||||
addDistributor();
|
||||
}
|
||||
|
||||
void cMainWindow::onDistributorListEditClicked()
|
||||
{
|
||||
editDistributor();
|
||||
}
|
||||
|
||||
void cMainWindow::onDistributorListRemoveClicked()
|
||||
{
|
||||
removeDistributor();
|
||||
}
|
||||
|
||||
qint16 cMainWindow::activeTab()
|
||||
{
|
||||
QWidget* widget = ui->m_toolBox->currentWidget();
|
||||
|
||||
if(widget == ui->m_manufacturerListTab)
|
||||
return(TAB_MANUFACTURER_LIST);
|
||||
else if(widget == ui->m_distributorListTab)
|
||||
return(TAB_DISTRIBUTOR_LIST);
|
||||
else if(widget == ui->m_partListTab)
|
||||
return(TAB_PART_LIST);
|
||||
else if(widget == ui->m_projectListTab)
|
||||
return(TAB_PROJECT_LIST);
|
||||
|
||||
return(0);
|
||||
}
|
||||
|
||||
void cMainWindow::updateWindowTitle()
|
||||
{
|
||||
QString windowTitle = "";
|
||||
|
||||
if(m_somethingChanged)
|
||||
windowTitle = "unsaved";
|
||||
|
||||
m_fileSaveAction->setEnabled(m_somethingChanged);
|
||||
|
||||
setWindowTitle(windowTitle);
|
||||
}
|
||||
|
||||
void cMainWindow::addManufacturer()
|
||||
{
|
||||
bool ok;
|
||||
QString name = QInputDialog::getText(this, tr("New Manufacturer"), tr("Name:"), QLineEdit::Normal, "", &ok);
|
||||
if(!ok)
|
||||
return;
|
||||
|
||||
cManufacturer* manufacturer = m_manufacturerList->add(name);
|
||||
|
||||
QStandardItem* item = new QStandardItem(name);
|
||||
item->setData(QVariant::fromValue(manufacturer), ITEM_MANUFACTURER_DATA);
|
||||
m_manufacturerListModel->appendRow(item);
|
||||
m_manufacturerListModel->sort(Qt::AscendingOrder | Qt::CaseInsensitive);
|
||||
|
||||
onSomethingChanged();
|
||||
}
|
||||
|
||||
void cMainWindow::editManufacturer()
|
||||
{
|
||||
if(!ui->m_manufacturerList->selectionModel()->selectedIndexes().count())
|
||||
return;
|
||||
|
||||
QModelIndex index = ui->m_manufacturerList->selectionModel()->selectedIndexes()[0];
|
||||
QStandardItem* item = m_manufacturerListModel->itemFromIndex(index);
|
||||
cManufacturer* manufacturer = item->data(ITEM_MANUFACTURER_DATA).value<cManufacturer*>();
|
||||
|
||||
for(int x = 0;x < ui->m_mainTab->count();x++)
|
||||
{
|
||||
cWidget* widget = static_cast<cWidget*>(ui->m_mainTab->widget(x));
|
||||
if(widget->type() == cWidget::TYPE_manufacturer)
|
||||
{
|
||||
cManufacturerWindow* manufacturerWindow = static_cast<cManufacturerWindow*>(widget->widget());
|
||||
if(manufacturerWindow->manufacturer() == manufacturer)
|
||||
{
|
||||
ui->m_mainTab->setCurrentIndex(x);
|
||||
ui->m_mdiArea->setActiveSubWindow(widget->window());
|
||||
m_updatingTab = false;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
cManufacturerWindow* manufacturerWindow = new cManufacturerWindow(this);
|
||||
manufacturerWindow->setManufacturer(manufacturer);
|
||||
cWidget* widget1 = new cWidget(manufacturerWindow);
|
||||
widget1->setWindow(ui->m_mdiArea->addSubWindow(manufacturerWindow));
|
||||
ui->m_mainTab->addTab(static_cast<QWidget*>(widget1), manufacturerWindow->windowTitle());
|
||||
manufacturerWindow->show();
|
||||
|
||||
connect(manufacturerWindow, &cManufacturerWindow::somethingChanged, this, &cMainWindow::onSomethingChanged);
|
||||
connect(this, &cMainWindow::manufacturerNameChanged, manufacturerWindow, &cManufacturerWindow::onManufacturerChanged);
|
||||
connect(manufacturerWindow, &cManufacturerWindow::subWindowClosed, this, &cMainWindow::onSubWindowClosed);
|
||||
}
|
||||
|
||||
void cMainWindow::removeManufacturer()
|
||||
{
|
||||
if(!ui->m_manufacturerList->selectionModel()->selectedIndexes().count())
|
||||
return;
|
||||
|
||||
QModelIndex index = ui->m_manufacturerList->selectionModel()->selectedIndexes()[0];
|
||||
QStandardItem* item = m_manufacturerListModel->itemFromIndex(index);
|
||||
cManufacturer* manufacturer = item->data(ITEM_MANUFACTURER_DATA).value<cManufacturer*>();
|
||||
|
||||
if(QMessageBox::question(this, tr("Remove Manufacturer"), QString(tr("Are you sure you want to remove \"%1\"?")).arg(manufacturer->name())) == QMessageBox::No)
|
||||
return;
|
||||
|
||||
if(!manufacturer->remove())
|
||||
return;
|
||||
|
||||
m_manufacturerListModel->removeRow(index.row());
|
||||
}
|
||||
|
||||
void cMainWindow::addDistributor()
|
||||
{
|
||||
bool ok;
|
||||
QString name = QInputDialog::getText(this, tr("New Distributor"), tr("Name:"), QLineEdit::Normal, "", &ok);
|
||||
if(!ok)
|
||||
return;
|
||||
|
||||
cDistributor* distributor = m_distributorList->add(name);
|
||||
|
||||
QStandardItem* item = new QStandardItem(name);
|
||||
item->setData(QVariant::fromValue(distributor), ITEM_DISTRIBUTOR_DATA);
|
||||
m_distributorListModel->appendRow(item);
|
||||
m_distributorListModel->sort(Qt::AscendingOrder | Qt::CaseInsensitive);
|
||||
|
||||
onSomethingChanged();
|
||||
}
|
||||
|
||||
void cMainWindow::editDistributor()
|
||||
{
|
||||
if(!ui->m_distributorList->selectionModel()->selectedIndexes().count())
|
||||
return;
|
||||
|
||||
QModelIndex index = ui->m_distributorList->selectionModel()->selectedIndexes()[0];
|
||||
QStandardItem* item = m_distributorListModel->itemFromIndex(index);
|
||||
cDistributor* distributor = item->data(ITEM_DISTRIBUTOR_DATA).value<cDistributor*>();
|
||||
|
||||
for(int x = 0;x < ui->m_mainTab->count();x++)
|
||||
{
|
||||
cWidget* widget = static_cast<cWidget*>(ui->m_mainTab->widget(x));
|
||||
if(widget->type() == cWidget::TYPE_distributor)
|
||||
{
|
||||
cDistributorWindow* distributorWindow = static_cast<cDistributorWindow*>(widget->widget());
|
||||
if(distributorWindow->distributor() == distributor)
|
||||
{
|
||||
ui->m_mainTab->setCurrentIndex(x);
|
||||
ui->m_mdiArea->setActiveSubWindow(widget->window());
|
||||
m_updatingTab = false;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
cDistributorWindow* distributorWindow = new cDistributorWindow(this);
|
||||
distributorWindow->setDistributor(distributor);
|
||||
cWidget* widget1 = new cWidget(distributorWindow);
|
||||
widget1->setWindow(ui->m_mdiArea->addSubWindow(distributorWindow));
|
||||
ui->m_mainTab->addTab(static_cast<QWidget*>(widget1), distributorWindow->windowTitle());
|
||||
distributorWindow->show();
|
||||
|
||||
connect(distributorWindow, &cDistributorWindow::somethingChanged, this, &cMainWindow::onSomethingChanged);
|
||||
connect(this, &cMainWindow::distributorNameChanged, distributorWindow, &cDistributorWindow::onDistributorChanged);
|
||||
connect(distributorWindow, &cDistributorWindow::subWindowClosed, this, &cMainWindow::onSubWindowClosed);
|
||||
}
|
||||
|
||||
void cMainWindow::removeDistributor()
|
||||
{
|
||||
if(!ui->m_distributorList->selectionModel()->selectedIndexes().count())
|
||||
return;
|
||||
|
||||
QModelIndex index = ui->m_distributorList->selectionModel()->selectedIndexes()[0];
|
||||
QStandardItem* item = m_distributorListModel->itemFromIndex(index);
|
||||
cDistributor* distributor = item->data(ITEM_DISTRIBUTOR_DATA).value<cDistributor*>();
|
||||
|
||||
if(QMessageBox::question(this, tr("Remove distributor"), QString(tr("Are you sure you want to remove \"%1\"?")).arg(distributor->name())) == QMessageBox::No)
|
||||
return;
|
||||
|
||||
if(!distributor->remove())
|
||||
return;
|
||||
|
||||
m_distributorListModel->removeRow(index.row());
|
||||
}
|
||||
+130
@@ -0,0 +1,130 @@
|
||||
#ifndef CMAINWINDOW_H
|
||||
#define CMAINWINDOW_H
|
||||
|
||||
|
||||
#include "csplashscreen.h"
|
||||
|
||||
#include "cdatabase.h"
|
||||
#include "cmanufacturer.h"
|
||||
#include "cdistributor.h"
|
||||
#include "cstoragecategory.h"
|
||||
#include "cstorage.h"
|
||||
|
||||
#include <QMainWindow>
|
||||
#include <QCloseEvent>
|
||||
#include <QStandardItemModel>
|
||||
#include <QMdiSubWindow>
|
||||
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
namespace Ui { class cMainWindow; }
|
||||
QT_END_NAMESPACE
|
||||
|
||||
class cMainWindow : public QMainWindow
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
cMainWindow(cSplashScreen* splashScreen, QWidget *parent = nullptr);
|
||||
~cMainWindow();
|
||||
|
||||
private:
|
||||
Ui::cMainWindow* ui;
|
||||
|
||||
bool m_somethingChanged;
|
||||
|
||||
cSplashScreen* m_splashScreen;
|
||||
cDatabase* m_database;
|
||||
cManufacturerList* m_manufacturerList;
|
||||
cDistributorList* m_distributorList;
|
||||
cStorageCategoryList* m_storageCategoryList;
|
||||
cStorageList* m_storageList;
|
||||
|
||||
QMenu* m_fileMenu;
|
||||
|
||||
QToolBar* m_fileToolBar;
|
||||
|
||||
QAction* m_fileSaveAction;
|
||||
QAction* m_fileQuitAction;
|
||||
|
||||
QAction* m_listAdd;
|
||||
QAction* m_listEdit;
|
||||
QAction* m_listRemove;
|
||||
|
||||
QAction* m_manufacturerListAddAction;
|
||||
QAction* m_manufacturerListEditAction;
|
||||
QAction* m_manufacturerListRemoveAction;
|
||||
|
||||
QAction* m_distributorListAddAction;
|
||||
QAction* m_distributorListEditAction;
|
||||
QAction* m_distributorListRemoveAction;
|
||||
|
||||
QStandardItemModel* m_manufacturerListModel;
|
||||
QStandardItemModel* m_distributorListModel;
|
||||
QStandardItemModel* m_storageListModel;
|
||||
|
||||
bool m_updatingTab;
|
||||
|
||||
|
||||
void initUI();
|
||||
void createActions();
|
||||
void createFileActions();
|
||||
void createContextActions();
|
||||
|
||||
void loadData();
|
||||
|
||||
void setListButtonState();
|
||||
|
||||
qint16 activeTab();
|
||||
|
||||
void updateWindowTitle();
|
||||
|
||||
void addManufacturer();
|
||||
void editManufacturer();
|
||||
void removeManufacturer();
|
||||
|
||||
void addDistributor();
|
||||
void editDistributor();
|
||||
void removeDistributor();
|
||||
|
||||
protected:
|
||||
void closeEvent(QCloseEvent* event);
|
||||
|
||||
private slots:
|
||||
void onSomethingChanged();
|
||||
|
||||
void onToolBoxCurrentChanged(int index);
|
||||
|
||||
void onFileSave();
|
||||
|
||||
void onMainTabCurrentChanged(int index);
|
||||
void onMainTabTabCloseRequested(int index);
|
||||
void onMdiAreaSubWindowActivated(QMdiSubWindow *arg1);
|
||||
void onSubWindowClosed(QWidget* lpSubWindow);
|
||||
|
||||
void onManufacturerListClicked(const QModelIndex& index);
|
||||
void onManufacturerListDoubleClicked(const QModelIndex& index);
|
||||
void onManufacturerListContextMenu(const QPoint& pos);
|
||||
void onManufacturerListNameChanged(QStandardItem* item);
|
||||
void onManufacturerListAddClicked();
|
||||
void onManufacturerListEditClicked();
|
||||
void onManufacturerListRemoveClicked();
|
||||
|
||||
void onDistributorListClicked(const QModelIndex& index);
|
||||
void onDistributorListDoubleClicked(const QModelIndex& index);
|
||||
void onDistributorListContextMenu(const QPoint& pos);
|
||||
void onDistributorListNameChanged(QStandardItem* item);
|
||||
void onDistributorListAddClicked();
|
||||
void onDistributorListEditClicked();
|
||||
void onDistributorListRemoveClicked();
|
||||
|
||||
void onListAdd();
|
||||
void onListEdit();
|
||||
void onListRemove();
|
||||
|
||||
signals:
|
||||
void manufacturerNameChanged(cManufacturer* manufacturer);
|
||||
void distributorNameChanged(cDistributor* distributor);
|
||||
};
|
||||
|
||||
#endif // CMAINWINDOW_H
|
||||
+240
@@ -0,0 +1,240 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>cMainWindow</class>
|
||||
<widget class="QMainWindow" name="cMainWindow">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>800</width>
|
||||
<height>600</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string/>
|
||||
</property>
|
||||
<widget class="QWidget" name="centralwidget">
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="0" column="0">
|
||||
<widget class="QSplitter" name="m_splitter">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<widget class="QWidget" name="verticalLayoutWidget">
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="m_buttonLayout">
|
||||
<item>
|
||||
<widget class="QToolButton" name="m_listAdd">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="toolButtonStyle">
|
||||
<enum>Qt::ToolButtonIconOnly</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QToolButton" name="m_listEdit">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QToolButton" name="m_listRemove">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QToolBox" name="m_toolBox">
|
||||
<property name="currentIndex">
|
||||
<number>2</number>
|
||||
</property>
|
||||
<widget class="QWidget" name="m_manufacturerListTab">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>89</width>
|
||||
<height>362</height>
|
||||
</rect>
|
||||
</property>
|
||||
<attribute name="label">
|
||||
<string>Manufacturer</string>
|
||||
</attribute>
|
||||
<layout class="QGridLayout" name="gridLayout_2">
|
||||
<item row="0" column="0">
|
||||
<widget class="QTreeView" name="m_manufacturerList">
|
||||
<property name="contextMenuPolicy">
|
||||
<enum>Qt::CustomContextMenu</enum>
|
||||
</property>
|
||||
<property name="editTriggers">
|
||||
<set>QAbstractItemView::EditKeyPressed</set>
|
||||
</property>
|
||||
<property name="rootIsDecorated">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<attribute name="headerVisible">
|
||||
<bool>false</bool>
|
||||
</attribute>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="m_distributorListTab">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>89</width>
|
||||
<height>362</height>
|
||||
</rect>
|
||||
</property>
|
||||
<attribute name="label">
|
||||
<string>Distributor</string>
|
||||
</attribute>
|
||||
<layout class="QGridLayout" name="gridLayout_3">
|
||||
<item row="0" column="0">
|
||||
<widget class="QTreeView" name="m_distributorList">
|
||||
<property name="contextMenuPolicy">
|
||||
<enum>Qt::CustomContextMenu</enum>
|
||||
</property>
|
||||
<property name="editTriggers">
|
||||
<set>QAbstractItemView::EditKeyPressed</set>
|
||||
</property>
|
||||
<property name="rootIsDecorated">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="headerHidden">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="m_storage">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>89</width>
|
||||
<height>362</height>
|
||||
</rect>
|
||||
</property>
|
||||
<attribute name="label">
|
||||
<string>Storage</string>
|
||||
</attribute>
|
||||
<layout class="QGridLayout" name="gridLayout_4">
|
||||
<item row="0" column="0">
|
||||
<widget class="QTreeView" name="m_storageList">
|
||||
<property name="rootIsDecorated">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<attribute name="headerVisible">
|
||||
<bool>false</bool>
|
||||
</attribute>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="m_partListTab">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>89</width>
|
||||
<height>362</height>
|
||||
</rect>
|
||||
</property>
|
||||
<attribute name="label">
|
||||
<string>Part</string>
|
||||
</attribute>
|
||||
</widget>
|
||||
<widget class="QWidget" name="m_projectListTab">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>89</width>
|
||||
<height>362</height>
|
||||
</rect>
|
||||
</property>
|
||||
<attribute name="label">
|
||||
<string>Project</string>
|
||||
</attribute>
|
||||
</widget>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="verticalLayoutWidget_2">
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2" stretch="0,99">
|
||||
<item>
|
||||
<widget class="QTabWidget" name="m_mainTab">
|
||||
<property name="currentIndex">
|
||||
<number>-1</number>
|
||||
</property>
|
||||
<property name="documentMode">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="tabsClosable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="movable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QMdiArea" name="m_mdiArea"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QMenuBar" name="m_menuBar">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>800</width>
|
||||
<height>21</height>
|
||||
</rect>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QStatusBar" name="m_statusBar"/>
|
||||
<widget class="QToolBar" name="m_toolBar">
|
||||
<property name="windowTitle">
|
||||
<string>toolBar</string>
|
||||
</property>
|
||||
<attribute name="toolBarArea">
|
||||
<enum>TopToolBarArea</enum>
|
||||
</attribute>
|
||||
<attribute name="toolBarBreak">
|
||||
<bool>false</bool>
|
||||
</attribute>
|
||||
</widget>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
@@ -0,0 +1,364 @@
|
||||
#include "cmanufacturer.h"
|
||||
|
||||
#include <QSqlQuery>
|
||||
#include <QSqlError>
|
||||
|
||||
#include <QStandardItem>
|
||||
|
||||
#include "common.h"
|
||||
|
||||
|
||||
cManufacturer::cManufacturer(cDatabase* db, qint32 id, QObject* parent) :
|
||||
QObject(parent),
|
||||
m_db(db),
|
||||
m_changed(false),
|
||||
m_id(id),
|
||||
m_name(""),
|
||||
m_address(""),
|
||||
m_url(""),
|
||||
m_email(""),
|
||||
m_comment(""),
|
||||
m_phone(""),
|
||||
m_fax(""),
|
||||
m_item(nullptr)
|
||||
{
|
||||
}
|
||||
|
||||
cManufacturer::cManufacturer(cManufacturer* manufacturer)
|
||||
{
|
||||
set(manufacturer);
|
||||
}
|
||||
|
||||
void cManufacturer::set(cManufacturer* manufacturer)
|
||||
{
|
||||
m_db = manufacturer->db();
|
||||
m_id = manufacturer->id();
|
||||
m_name = manufacturer->name();
|
||||
m_address = manufacturer->address();
|
||||
m_url = manufacturer->url();
|
||||
m_email = manufacturer->email();
|
||||
m_comment = manufacturer->comment();
|
||||
m_phone = manufacturer->phone();
|
||||
m_fax = manufacturer->fax();
|
||||
}
|
||||
|
||||
void cManufacturer::setID(const qint32& id)
|
||||
{
|
||||
m_id = id;
|
||||
m_changed = true;
|
||||
emit idChanged(id);
|
||||
emit manufacturerChanged(this);
|
||||
}
|
||||
|
||||
qint32 cManufacturer::id()
|
||||
{
|
||||
return(m_id);
|
||||
}
|
||||
|
||||
void cManufacturer::setName(const QString& name)
|
||||
{
|
||||
m_name = name;
|
||||
m_changed = true;
|
||||
emit nameChanged(name);
|
||||
emit manufacturerChanged(this);
|
||||
}
|
||||
|
||||
QString cManufacturer::name()
|
||||
{
|
||||
return(m_name);
|
||||
}
|
||||
|
||||
void cManufacturer::setAddress(const QString& address)
|
||||
{
|
||||
m_address = address;
|
||||
emit addressChanged(address);
|
||||
emit manufacturerChanged(this);
|
||||
}
|
||||
|
||||
QString cManufacturer::address()
|
||||
{
|
||||
return(m_address);
|
||||
}
|
||||
|
||||
void cManufacturer::setURL(const QString& url)
|
||||
{
|
||||
m_url = url;
|
||||
m_changed = true;
|
||||
emit urlChanged(url);
|
||||
emit manufacturerChanged(this);
|
||||
}
|
||||
|
||||
QString cManufacturer::url()
|
||||
{
|
||||
return(m_url);
|
||||
}
|
||||
|
||||
void cManufacturer::setEmail(const QString& email)
|
||||
{
|
||||
m_email = email;
|
||||
m_changed = true;
|
||||
emit emailChanged(email);
|
||||
emit manufacturerChanged(this);
|
||||
}
|
||||
|
||||
QString cManufacturer::email()
|
||||
{
|
||||
return(m_email);
|
||||
}
|
||||
|
||||
void cManufacturer::setComment(const QString& comment)
|
||||
{
|
||||
m_comment = comment;
|
||||
emit commentChanged(comment);
|
||||
emit manufacturerChanged(this);
|
||||
}
|
||||
|
||||
QString cManufacturer::comment()
|
||||
{
|
||||
return(m_comment);
|
||||
}
|
||||
|
||||
void cManufacturer::setPhone(const QString& phone)
|
||||
{
|
||||
m_phone = phone;
|
||||
m_changed = true;
|
||||
emit phoneChanged(phone);
|
||||
emit manufacturerChanged(this);
|
||||
}
|
||||
|
||||
QString cManufacturer::phone()
|
||||
{
|
||||
return(m_phone);
|
||||
}
|
||||
|
||||
void cManufacturer::setFax(const QString& fax)
|
||||
{
|
||||
m_fax = fax;
|
||||
m_changed = true;
|
||||
emit faxChanged(fax);
|
||||
emit manufacturerChanged(this);
|
||||
}
|
||||
|
||||
QString cManufacturer::fax()
|
||||
{
|
||||
return(m_fax);
|
||||
}
|
||||
|
||||
void cManufacturer::setItem(QStandardItem* item)
|
||||
{
|
||||
m_item = item;
|
||||
}
|
||||
|
||||
QStandardItem* cManufacturer::item()
|
||||
{
|
||||
return(m_item);
|
||||
}
|
||||
|
||||
bool cManufacturer::save()
|
||||
{
|
||||
if(!m_changed)
|
||||
return(true);
|
||||
|
||||
QSqlQuery query(m_db->db());
|
||||
|
||||
if(m_id == -1)
|
||||
query.prepare("INSERT INTO manufacturer (name, address, url, email, comment, phone, fax) VALUES (:name, :address, :url, :email, :comment, :phone, :fax);");
|
||||
else
|
||||
query.prepare("UPDATE manufacturer SET name=:name, address=:address, url=:url, email=:email, comment=:comment, phone=:phone, fax=:fax WHERE id=:id;");
|
||||
|
||||
query.bindValue(":id", m_id);
|
||||
query.bindValue(":name", m_name);
|
||||
query.bindValue(":address", m_address);
|
||||
query.bindValue(":url", m_url);
|
||||
query.bindValue(":email", m_email);
|
||||
query.bindValue(":comment", m_comment);
|
||||
query.bindValue(":phone", m_phone);
|
||||
query.bindValue(":fax", m_fax);
|
||||
|
||||
if(!query.exec())
|
||||
{
|
||||
myDebug << query.lastError().text();
|
||||
return(false);
|
||||
}
|
||||
|
||||
if(m_id == -1)
|
||||
{
|
||||
if(!query.exec("SELECT MAX(id) MAXID FROM manufacturer;"))
|
||||
{
|
||||
myDebug << query.lastError().text();
|
||||
return(false);
|
||||
}
|
||||
|
||||
query.first();
|
||||
m_id = query.value("MAXID").toInt();
|
||||
}
|
||||
m_changed = false;
|
||||
return(true);
|
||||
}
|
||||
|
||||
cDatabase* cManufacturer::db()
|
||||
{
|
||||
return(m_db);
|
||||
}
|
||||
|
||||
bool cManufacturer::remove()
|
||||
{
|
||||
QSqlQuery query(m_db->db());
|
||||
|
||||
query.prepare("DELETE FROM manufacturer WHERE id=:id;");
|
||||
query.bindValue(":id", m_id);
|
||||
|
||||
if(!query.exec())
|
||||
{
|
||||
myDebug << query.lastError().text();
|
||||
return(false);
|
||||
}
|
||||
|
||||
return(true);
|
||||
}
|
||||
|
||||
void cManufacturer::clearSave()
|
||||
{
|
||||
m_changed = false;
|
||||
}
|
||||
|
||||
cManufacturerList::cManufacturerList(cDatabase* db, QObject* parent) :
|
||||
QObject(parent),
|
||||
m_db(db)
|
||||
{
|
||||
}
|
||||
|
||||
bool cManufacturerList::load()
|
||||
{
|
||||
if(!m_db->db().isOpen())
|
||||
return(false);
|
||||
|
||||
QString sql = QString("SELECT id, "
|
||||
" name, "
|
||||
" address, "
|
||||
" url, "
|
||||
" email, "
|
||||
" comment, "
|
||||
" phone, "
|
||||
" fax "
|
||||
"FROM manufacturer "
|
||||
"ORDER BY name;");
|
||||
QSqlQuery query(m_db->db());
|
||||
|
||||
query.prepare(sql);
|
||||
|
||||
if(!query.exec())
|
||||
{
|
||||
myDebug << query.lastError().text();
|
||||
return(false);
|
||||
}
|
||||
|
||||
while(query.next())
|
||||
{
|
||||
cManufacturer* lpManufacturer = add(query.value("id").toInt());
|
||||
lpManufacturer->setName(query.value("name").toString());
|
||||
lpManufacturer->setAddress(query.value("address").toString());
|
||||
lpManufacturer->setURL(query.value("url").toString());
|
||||
lpManufacturer->setEmail(query.value("email").toString());
|
||||
lpManufacturer->setComment(query.value("comment").toString());
|
||||
lpManufacturer->setPhone(query.value("phone").toString());
|
||||
lpManufacturer->setFax(query.value("fax").toString());
|
||||
}
|
||||
|
||||
return(true);
|
||||
}
|
||||
|
||||
cManufacturer* cManufacturerList::add(const qint32& id)
|
||||
{
|
||||
cManufacturer* lpNew = find(id);
|
||||
|
||||
if(!lpNew)
|
||||
{
|
||||
lpNew = new cManufacturer(m_db, id);
|
||||
append(lpNew);
|
||||
emit manufacturerAdded(lpNew);
|
||||
}
|
||||
|
||||
return(lpNew);
|
||||
}
|
||||
|
||||
cManufacturer* cManufacturerList::add(const QString& name)
|
||||
{
|
||||
cManufacturer* lpNew = new cManufacturer(m_db);
|
||||
lpNew->setName(name);
|
||||
append(lpNew);
|
||||
emit manufacturerAdded(lpNew);
|
||||
|
||||
return(lpNew);
|
||||
}
|
||||
|
||||
bool cManufacturerList::remove(const qint32& id)
|
||||
{
|
||||
cManufacturer* manufacturer = find(id);
|
||||
if(!manufacturer)
|
||||
return(false);
|
||||
|
||||
if(!manufacturer->remove())
|
||||
return(false);
|
||||
|
||||
if(!removeOne(manufacturer))
|
||||
return(false);
|
||||
|
||||
emit manufacturerRemoved(manufacturer);
|
||||
|
||||
return(true);
|
||||
}
|
||||
|
||||
cManufacturer* cManufacturerList::find(const qint32& id)
|
||||
{
|
||||
for(int i = 0;i < count();i++)
|
||||
{
|
||||
if(at(i)->id() == id)
|
||||
return(at(i));
|
||||
}
|
||||
|
||||
return(nullptr);
|
||||
}
|
||||
|
||||
cManufacturer* cManufacturerList::find(const QString& name)
|
||||
{
|
||||
for(int i = 0;i < count();i++)
|
||||
{
|
||||
if(at(i)->name() == name)
|
||||
return(at(i));
|
||||
}
|
||||
|
||||
return(nullptr);
|
||||
}
|
||||
|
||||
bool cManufacturerList::fillList(QStandardItemModel* model)
|
||||
{
|
||||
model->clear();
|
||||
|
||||
if(!count())
|
||||
return(true);
|
||||
|
||||
for(int i = 0;i < count();i++)
|
||||
{
|
||||
QStandardItem* item = new QStandardItem;
|
||||
at(i)->setItem(item);
|
||||
item->setText(at(i)->name());
|
||||
item->setData(QVariant::fromValue(at(i)), ITEM_MANUFACTURER_DATA);
|
||||
model->appendRow(item);
|
||||
}
|
||||
|
||||
return(true);
|
||||
}
|
||||
|
||||
bool cManufacturerList::save()
|
||||
{
|
||||
bool ret = true;
|
||||
|
||||
for(int i = 0;i < count();i++)
|
||||
{
|
||||
if(!at(i)->save())
|
||||
ret = false;
|
||||
}
|
||||
|
||||
return(ret);
|
||||
}
|
||||
+108
@@ -0,0 +1,108 @@
|
||||
#ifndef CMANUFACTURER_H
|
||||
#define CMANUFACTURER_H
|
||||
|
||||
|
||||
#include "cdatabase.h"
|
||||
|
||||
#include <QMetaType>
|
||||
#include <QList>
|
||||
#include <QObject>
|
||||
|
||||
#include <QStandardItem>
|
||||
#include <QStandardItemModel>
|
||||
|
||||
|
||||
class cManufacturer : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit cManufacturer(cDatabase* db, qint32 id = -1, QObject* parent = nullptr);
|
||||
cManufacturer(cManufacturer* manufacturer);
|
||||
|
||||
void set(cManufacturer* manufacturer);
|
||||
|
||||
void setID(const qint32& id);
|
||||
qint32 id();
|
||||
|
||||
void setName(const QString& name);
|
||||
QString name();
|
||||
|
||||
void setAddress(const QString& address);
|
||||
QString address();
|
||||
|
||||
void setURL(const QString& url);
|
||||
QString url();
|
||||
|
||||
void setEmail(const QString& email);
|
||||
QString email();
|
||||
|
||||
void setComment(const QString& comment);
|
||||
QString comment();
|
||||
|
||||
void setPhone(const QString& phone);
|
||||
QString phone();
|
||||
|
||||
void setFax(const QString& fax);
|
||||
QString fax();
|
||||
|
||||
void setItem(QStandardItem* item);
|
||||
QStandardItem* item();
|
||||
|
||||
bool save();
|
||||
void clearSave();
|
||||
bool remove();
|
||||
|
||||
cDatabase* db();
|
||||
private:
|
||||
cDatabase* m_db;
|
||||
bool m_changed;
|
||||
qint32 m_id;
|
||||
QString m_name;
|
||||
QString m_address;
|
||||
QString m_url;
|
||||
QString m_email;
|
||||
QString m_comment;
|
||||
QString m_phone;
|
||||
QString m_fax;
|
||||
QStandardItem* m_item;
|
||||
signals:
|
||||
void manufacturerChanged(cManufacturer* manufacturer);
|
||||
void idChanged(const qint32& id);
|
||||
void nameChanged(const QString& name);
|
||||
void addressChanged(const QString& address);
|
||||
void urlChanged(const QString& url);
|
||||
void emailChanged(const QString& email);
|
||||
void commentChanged(const QString& comment);
|
||||
void phoneChanged(const QString& phone);
|
||||
void faxChanged(const QString& fax);
|
||||
};
|
||||
|
||||
Q_DECLARE_METATYPE(cManufacturer*)
|
||||
|
||||
class cManufacturerList : public QObject, public QList<cManufacturer*>
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
cManufacturerList(cDatabase* db, QObject* parent = nullptr);
|
||||
|
||||
bool load();
|
||||
cManufacturer* add(const qint32& id);
|
||||
cManufacturer* add(const QString& name);
|
||||
bool remove(const qint32& id);
|
||||
cManufacturer* find(const qint32& id);
|
||||
cManufacturer* find(const QString& name);
|
||||
|
||||
bool fillList(QStandardItemModel* model);
|
||||
|
||||
bool save();
|
||||
private:
|
||||
cDatabase* m_db;
|
||||
|
||||
signals:
|
||||
void manufacturerAdded(cManufacturer* manufacturer);
|
||||
void manufacturerRemoved(cManufacturer* manufacturer);
|
||||
};
|
||||
|
||||
#endif // CMANUFACTURER_H
|
||||
@@ -0,0 +1,111 @@
|
||||
#include "cmanufacturerwindow.h"
|
||||
#include "ui_cmanufacturerwindow.h"
|
||||
|
||||
#include "cmainwindow.h"
|
||||
|
||||
|
||||
cManufacturerWindow::cManufacturerWindow(QWidget *parent) :
|
||||
cMDISubWindow(parent),
|
||||
ui(new Ui::cManufacturerWindow),
|
||||
m_manufacturer(nullptr)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
}
|
||||
|
||||
cManufacturerWindow::~cManufacturerWindow()
|
||||
{
|
||||
delete ui;
|
||||
}
|
||||
|
||||
void cManufacturerWindow::setManufacturer(cManufacturer* manufacturer)
|
||||
{
|
||||
m_manufacturer = manufacturer;
|
||||
|
||||
fillFields();
|
||||
|
||||
connect(ui->m_name, &QLineEdit::textChanged, this, &cManufacturerWindow::onNameChanged);
|
||||
connect(ui->m_address, &QPlainTextEdit::textChanged, this, &cManufacturerWindow::onAddressChanged);
|
||||
connect(ui->m_url, &QLineEdit::textChanged, this, &cManufacturerWindow::onURLChanged);
|
||||
connect(ui->m_email, &QLineEdit::textChanged, this, &cManufacturerWindow::onEmailChanged);
|
||||
connect(ui->m_phone, &QLineEdit::textChanged, this, &cManufacturerWindow::onPhoneChanged);
|
||||
connect(ui->m_fax, &QLineEdit::textChanged, this, &cManufacturerWindow::onFaxChanged);
|
||||
connect(ui->m_comment, &QPlainTextEdit::textChanged, this, &cManufacturerWindow::onCommentChanged);
|
||||
}
|
||||
|
||||
cManufacturer* cManufacturerWindow::manufacturer()
|
||||
{
|
||||
return(m_manufacturer);
|
||||
}
|
||||
|
||||
void cManufacturerWindow::onManufacturerChanged(cManufacturer* manufacturer)
|
||||
{
|
||||
if(m_manufacturer != manufacturer)
|
||||
return;
|
||||
|
||||
fillFields();
|
||||
}
|
||||
|
||||
void cManufacturerWindow::onNameChanged(const QString& name)
|
||||
{
|
||||
m_manufacturer->setName(name);
|
||||
|
||||
if(m_manufacturer->item())
|
||||
m_manufacturer->item()->setText(name);
|
||||
|
||||
emit somethingChanged();
|
||||
}
|
||||
|
||||
void cManufacturerWindow::onAddressChanged()
|
||||
{
|
||||
m_manufacturer->setAddress(ui->m_address->toPlainText());
|
||||
|
||||
emit somethingChanged();
|
||||
}
|
||||
|
||||
void cManufacturerWindow::onURLChanged(const QString& url)
|
||||
{
|
||||
m_manufacturer->setURL(url);
|
||||
|
||||
emit somethingChanged();
|
||||
}
|
||||
|
||||
void cManufacturerWindow::onEmailChanged(const QString& email)
|
||||
{
|
||||
m_manufacturer->setEmail(email);
|
||||
|
||||
emit somethingChanged();
|
||||
}
|
||||
|
||||
void cManufacturerWindow::onPhoneChanged(const QString& phone)
|
||||
{
|
||||
m_manufacturer->setPhone(phone);
|
||||
|
||||
emit somethingChanged();
|
||||
}
|
||||
|
||||
void cManufacturerWindow::onFaxChanged(const QString& fax)
|
||||
{
|
||||
m_manufacturer->setFax(fax);
|
||||
|
||||
emit somethingChanged();
|
||||
}
|
||||
|
||||
void cManufacturerWindow::onCommentChanged()
|
||||
{
|
||||
m_manufacturer->setComment(ui->m_comment->toPlainText());
|
||||
|
||||
emit somethingChanged();
|
||||
}
|
||||
|
||||
void cManufacturerWindow::fillFields()
|
||||
{
|
||||
ui->m_name->setText(m_manufacturer->name());
|
||||
ui->m_address->setPlainText(m_manufacturer->address());
|
||||
ui->m_url->setText(m_manufacturer->url());
|
||||
ui->m_email->setText(m_manufacturer->email());
|
||||
ui->m_phone->setText(m_manufacturer->phone());
|
||||
ui->m_fax->setText(m_manufacturer->fax());
|
||||
ui->m_comment->setPlainText(m_manufacturer->comment());
|
||||
|
||||
setWindowTitle("manufacturer - " + m_manufacturer->name());
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
#ifndef CMANUFACTURERWINDOW_H
|
||||
#define CMANUFACTURERWINDOW_H
|
||||
|
||||
|
||||
#include "cmanufacturer.h"
|
||||
|
||||
#include "cmdisubwindow.h"
|
||||
#include "cmainwindow.h"
|
||||
|
||||
#include <QWidget>
|
||||
|
||||
|
||||
namespace Ui {
|
||||
class cManufacturerWindow;
|
||||
}
|
||||
|
||||
class cManufacturerWindow : public cMDISubWindow
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit cManufacturerWindow(QWidget *parent = nullptr);
|
||||
~cManufacturerWindow();
|
||||
|
||||
void setManufacturer(cManufacturer* manufacturer);
|
||||
cManufacturer* manufacturer();
|
||||
|
||||
private:
|
||||
Ui::cManufacturerWindow* ui;
|
||||
cManufacturer* m_manufacturer;
|
||||
|
||||
void fillFields();
|
||||
|
||||
public slots:
|
||||
void onManufacturerChanged(cManufacturer* manufacturer);
|
||||
|
||||
private slots:
|
||||
void onNameChanged(const QString& szName);
|
||||
void onAddressChanged();
|
||||
void onURLChanged(const QString& szURL);
|
||||
void onEmailChanged(const QString& szEmail);
|
||||
void onPhoneChanged(const QString& szPhone);
|
||||
void onFaxChanged(const QString& szFax);
|
||||
void onCommentChanged();
|
||||
|
||||
signals:
|
||||
void somethingChanged();
|
||||
};
|
||||
|
||||
#endif // CMANUFACTURERWINDOW_H
|
||||
@@ -0,0 +1,95 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>cManufacturerWindow</class>
|
||||
<widget class="QWidget" name="cManufacturerWindow">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>400</width>
|
||||
<height>300</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Manufacturer - </string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="0" column="0">
|
||||
<layout class="QFormLayout" name="formLayout">
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="text">
|
||||
<string>Name:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QLineEdit" name="m_name"/>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_2">
|
||||
<property name="text">
|
||||
<string>Address:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QPlainTextEdit" name="m_address"/>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="label_3">
|
||||
<property name="text">
|
||||
<string>URL:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QLineEdit" name="m_url"/>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<widget class="QLabel" name="label_4">
|
||||
<property name="text">
|
||||
<string>Email:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<widget class="QLineEdit" name="m_email"/>
|
||||
</item>
|
||||
<item row="4" column="0">
|
||||
<widget class="QLabel" name="label_5">
|
||||
<property name="text">
|
||||
<string>Phone:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="1">
|
||||
<widget class="QLineEdit" name="m_phone"/>
|
||||
</item>
|
||||
<item row="5" column="0">
|
||||
<widget class="QLabel" name="label_6">
|
||||
<property name="text">
|
||||
<string>Fax:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="1">
|
||||
<widget class="QLineEdit" name="m_fax"/>
|
||||
</item>
|
||||
<item row="6" column="0">
|
||||
<widget class="QLabel" name="label_7">
|
||||
<property name="text">
|
||||
<string>Comment:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="1">
|
||||
<widget class="QPlainTextEdit" name="m_comment"/>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
@@ -0,0 +1,19 @@
|
||||
/*!
|
||||
\file cmdisubwindow.cpp
|
||||
|
||||
*/
|
||||
|
||||
#include "cmdisubwindow.h"
|
||||
|
||||
#include <QCloseEvent>
|
||||
|
||||
|
||||
cMDISubWindow::cMDISubWindow(QWidget *parent) : QWidget(parent)
|
||||
{
|
||||
}
|
||||
|
||||
void cMDISubWindow::closeEvent(QCloseEvent* event)
|
||||
{
|
||||
emit subWindowClosed(this);
|
||||
event->accept();
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
/*!
|
||||
\file cmdisubwindow.h
|
||||
|
||||
*/
|
||||
|
||||
#ifndef CMDISUBWINDOW_H
|
||||
#define CMDISUBWINDOW_H
|
||||
|
||||
|
||||
#include <QWidget>
|
||||
|
||||
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\class cMDISubWindow cmdisubwindow.h "cmdisubwindow.h"
|
||||
*/
|
||||
class cMDISubWindow : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn cMDISubWindow
|
||||
\param parent
|
||||
*/
|
||||
explicit cMDISubWindow(QWidget *parent = nullptr);
|
||||
|
||||
signals:
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn subWindowClosed
|
||||
\param lpWidget
|
||||
*/
|
||||
void subWindowClosed(QWidget* lpWidget);
|
||||
|
||||
public slots:
|
||||
|
||||
protected:
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn closeEvent
|
||||
\param event
|
||||
*/
|
||||
void closeEvent(QCloseEvent *event);
|
||||
};
|
||||
|
||||
#endif // CMDISUBWINDOW_H
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
/*!
|
||||
\file common.cpp
|
||||
|
||||
*/
|
||||
|
||||
/*!
|
||||
\file common.cpp
|
||||
|
||||
*/
|
||||
|
||||
#include "common.h"
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
/*!
|
||||
\file common.h
|
||||
|
||||
*/
|
||||
|
||||
#ifndef COMMON_H
|
||||
#define COMMON_H
|
||||
|
||||
|
||||
#include <QDebug>
|
||||
|
||||
|
||||
#define THUMBNAIL_WIDTH 160
|
||||
#define THUMBNAIL_HEIGHT 120
|
||||
|
||||
|
||||
#ifdef __GNUC__
|
||||
#define myDebug qDebug() << __FILE__ << "(" << __LINE__ << ") - " << __PRETTY_FUNCTION__ << ":"
|
||||
#elif __MINGW32__
|
||||
#define myDebug qDebug() << __FILE__ << "(" << __LINE__ << ") - " << __PRETTY_FUNCTION__ << ":"
|
||||
#else
|
||||
#define myDebug qDebug() << __FILE__ << "(" << __LINE__ << ") - " << __FUNCTION__ << ":"
|
||||
#endif
|
||||
|
||||
#define ITEM_MANUFACTURER_DATA (Qt::UserRole+1)
|
||||
#define ITEM_DISTRIBUTOR_DATA (Qt::UserRole+2)
|
||||
#define ITEM_STORAGE_CATEGORY_DATA (Qt::UserRole+3)
|
||||
#define ITEM_STORAGE_DATA (Qt::UserRole+4)
|
||||
#define ITEM_PART_DATA (Qt::UserRole+5)
|
||||
#define ITEM_PROJECT_DATA (Qt::UserRole+6)
|
||||
|
||||
#define TAB_MANUFACTURER_LIST 1
|
||||
#define TAB_DISTRIBUTOR_LIST 2
|
||||
#define TAB_STORAGE_LIST 3
|
||||
#define TAB_PART_LIST 4
|
||||
#define TAB_PROJECT_LIST 5
|
||||
|
||||
|
||||
#endif // COMMON_H
|
||||
@@ -0,0 +1,68 @@
|
||||
/*!
|
||||
\file csplashscreen.cpp
|
||||
|
||||
*/
|
||||
|
||||
#include "csplashscreen.h"
|
||||
//#include "common.h"
|
||||
|
||||
#include <QStyleOptionProgressBar>
|
||||
|
||||
|
||||
cSplashScreen::cSplashScreen(const QPixmap& pixmap, QFont& font) :
|
||||
QSplashScreen(pixmap),
|
||||
m_iMax(100),
|
||||
m_iProgress(0)
|
||||
{
|
||||
setFont(font);
|
||||
m_textDocument.setDefaultFont(font);
|
||||
}
|
||||
|
||||
void cSplashScreen::setMax(qint32 max)
|
||||
{
|
||||
m_iMax = max;
|
||||
}
|
||||
|
||||
void cSplashScreen::drawContents(QPainter *painter)
|
||||
{
|
||||
painter->translate(m_rect.topLeft());
|
||||
m_textDocument.setHtml(m_szMessage);
|
||||
m_textDocument.drawContents(painter);
|
||||
|
||||
QStyleOptionProgressBar pbstyle;
|
||||
pbstyle.initFrom(this);
|
||||
pbstyle.state = QStyle::State_Enabled;
|
||||
pbstyle.textVisible = false;
|
||||
pbstyle.minimum = 0;
|
||||
pbstyle.maximum = m_iMax;
|
||||
pbstyle.progress = m_iProgress;
|
||||
pbstyle.invertedAppearance = false;
|
||||
pbstyle.rect = QRect(0, 330, 390, 10); // Where is it.
|
||||
|
||||
// Draw it...
|
||||
style()->drawControl(QStyle::CE_ProgressBar, &pbstyle, painter, this);
|
||||
}
|
||||
|
||||
void cSplashScreen::showStatusMessage(const QString& message)
|
||||
{
|
||||
m_szMessage = message;
|
||||
showMessage(m_szMessage);
|
||||
}
|
||||
|
||||
void cSplashScreen::addStatusMessage(const QString& message)
|
||||
{
|
||||
m_szMessage.append(message);
|
||||
showMessage(m_szMessage);
|
||||
}
|
||||
|
||||
void cSplashScreen::setMessageRect(QRect rect)
|
||||
{
|
||||
m_rect = rect;
|
||||
m_textDocument.setTextWidth(rect.width());
|
||||
}
|
||||
|
||||
void cSplashScreen::setProgress(int value)
|
||||
{
|
||||
m_iProgress = value;
|
||||
update();
|
||||
}
|
||||
@@ -0,0 +1,78 @@
|
||||
/*!
|
||||
\file csplashscreen.h
|
||||
|
||||
*/
|
||||
|
||||
#ifndef CSPLASHSCREEN_H
|
||||
#define CSPLASHSCREEN_H
|
||||
|
||||
|
||||
#include <QSplashScreen>
|
||||
#include <QPainter>
|
||||
#include <QTextDocument>
|
||||
|
||||
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\class cSplashScreen csplashscreen.h "csplashscreen.h"
|
||||
*/
|
||||
class cSplashScreen : public QSplashScreen
|
||||
{
|
||||
public:
|
||||
cSplashScreen(const QPixmap& pixmap, QFont &font);
|
||||
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn drawContents
|
||||
\param painter
|
||||
*/
|
||||
virtual void drawContents(QPainter *painter);
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn showStatusMessage
|
||||
\param message
|
||||
*/
|
||||
void showStatusMessage(const QString &message);
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn addStatusMessage
|
||||
\param message
|
||||
*/
|
||||
void addStatusMessage(const QString &message);
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn setMessageRect
|
||||
\param rect
|
||||
*/
|
||||
void setMessageRect(QRect rect);
|
||||
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn setMax
|
||||
\param max
|
||||
*/
|
||||
void setMax(qint32 max);
|
||||
|
||||
private:
|
||||
QTextDocument m_textDocument; /*!< TODO: describe */
|
||||
QString m_szMessage; /*!< TODO: describe */
|
||||
QRect m_rect; /*!< TODO: describe */
|
||||
qint32 m_iMax; /*!< TODO: describe */
|
||||
qint32 m_iProgress; /*!< TODO: describe */
|
||||
public slots:
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\fn setProgress
|
||||
\param value
|
||||
*/
|
||||
void setProgress(int value);
|
||||
};
|
||||
|
||||
#endif // CSPLASHSCREEN_H
|
||||
+325
@@ -0,0 +1,325 @@
|
||||
#include "cstorage.h"
|
||||
|
||||
#include <QSqlQuery>
|
||||
#include <QSqlError>
|
||||
|
||||
#include <QStandardItem>
|
||||
|
||||
#include "common.h"
|
||||
|
||||
#include <QDebug>
|
||||
|
||||
|
||||
bool sortAsc(cStorage* &v1, cStorage* &v2)
|
||||
{
|
||||
return(v1->name() < v2->name());
|
||||
}
|
||||
|
||||
|
||||
cStorage::cStorage(cDatabase* db, qint32 id, QObject *parent) :
|
||||
QObject(parent),
|
||||
m_db(db),
|
||||
m_changed(false),
|
||||
m_id(id),
|
||||
m_storageCategory(nullptr),
|
||||
m_name(""),
|
||||
m_description(""),
|
||||
m_item(nullptr)
|
||||
{
|
||||
}
|
||||
|
||||
cStorage::cStorage(cStorage* storage)
|
||||
{
|
||||
set(storage);
|
||||
}
|
||||
|
||||
void cStorage::set(cStorage* storage)
|
||||
{
|
||||
m_db = storage->db();
|
||||
m_id = storage->id();
|
||||
m_storageCategory = storage->storageCategory();
|
||||
m_name = storage->name();
|
||||
m_description = storage->description();
|
||||
}
|
||||
|
||||
void cStorage::setID(const qint32& id)
|
||||
{
|
||||
m_id = id;
|
||||
m_changed = true;
|
||||
emit idChanged(id);
|
||||
emit storageChanged(this);
|
||||
}
|
||||
|
||||
qint32 cStorage::id()
|
||||
{
|
||||
return(m_id);
|
||||
}
|
||||
|
||||
void cStorage::setStorageCategory(cStorageCategory* storageCategory)
|
||||
{
|
||||
m_storageCategory = storageCategory;
|
||||
m_changed = true;
|
||||
emit storageCategoryChanged(storageCategory);
|
||||
emit storageChanged(this);
|
||||
}
|
||||
|
||||
cStorageCategory* cStorage::storageCategory()
|
||||
{
|
||||
return(m_storageCategory);
|
||||
}
|
||||
|
||||
void cStorage::setName(const QString& name)
|
||||
{
|
||||
m_name = name;
|
||||
m_changed = true;
|
||||
emit nameChanged(name);
|
||||
emit storageChanged(this);
|
||||
}
|
||||
|
||||
QString cStorage::name()
|
||||
{
|
||||
return(m_name);
|
||||
}
|
||||
|
||||
void cStorage::setDescription(const QString& description)
|
||||
{
|
||||
m_description = description;
|
||||
m_changed = true;
|
||||
emit descriptionChanged(description);
|
||||
emit storageChanged(this);
|
||||
}
|
||||
|
||||
QString cStorage::description()
|
||||
{
|
||||
return(m_description);
|
||||
}
|
||||
|
||||
void cStorage::setItem(QStandardItem* item)
|
||||
{
|
||||
m_item = item;
|
||||
}
|
||||
|
||||
QStandardItem* cStorage::item()
|
||||
{
|
||||
return(m_item);
|
||||
}
|
||||
|
||||
bool cStorage::save()
|
||||
{
|
||||
if(!m_changed)
|
||||
return(true);
|
||||
|
||||
QSqlQuery query;
|
||||
|
||||
if(m_id == -1)
|
||||
query.prepare("INSERT INTO storage (storageCategory, name, description) VALUES (:storageCategory, :name, :description);");
|
||||
else
|
||||
query.prepare("UPDATE storage SET storageCategory=:storageCategory, name=:name, description=:description WHERE id=:id;");
|
||||
|
||||
query.bindValue(":id", m_id);
|
||||
query.bindValue(":storageCategory", m_storageCategory->id());
|
||||
query.bindValue(":name", m_name);
|
||||
query.bindValue(":description", m_description);
|
||||
|
||||
if(!query.exec())
|
||||
{
|
||||
myDebug << query.lastError().text();
|
||||
return(false);
|
||||
}
|
||||
|
||||
if(m_id == -1)
|
||||
{
|
||||
if(!query.exec("SELECT MAX(id) MAXID FROM storage;"))
|
||||
{
|
||||
myDebug << query.lastError().text();
|
||||
return(false);
|
||||
}
|
||||
|
||||
query.first();
|
||||
m_id = query.value("MAXID").toInt();
|
||||
}
|
||||
m_changed = false;
|
||||
return(true);
|
||||
}
|
||||
|
||||
void cStorage::clearSave()
|
||||
{
|
||||
m_changed = false;
|
||||
}
|
||||
|
||||
bool cStorage::remove()
|
||||
{
|
||||
QSqlQuery query;
|
||||
|
||||
query.prepare("DELETE FROM storage WHERE id=:id;");
|
||||
query.bindValue(":id", m_id);
|
||||
|
||||
if(!query.exec())
|
||||
{
|
||||
myDebug << query.lastError().text();
|
||||
return(false);
|
||||
}
|
||||
|
||||
return(true);
|
||||
}
|
||||
|
||||
cDatabase* cStorage::db()
|
||||
{
|
||||
return(m_db);
|
||||
}
|
||||
|
||||
cStorageList::cStorageList(cDatabase* db, cStorageCategoryList* storageCategoryList, QObject* parent) :
|
||||
QObject(parent),
|
||||
m_db(db),
|
||||
m_storageCategoryList(storageCategoryList)
|
||||
{
|
||||
}
|
||||
|
||||
bool cStorageList::load()
|
||||
{
|
||||
if(!m_db->db().isOpen())
|
||||
return(false);
|
||||
|
||||
QString sql = QString("SELECT id, "
|
||||
" storage_category_id, "
|
||||
" name, "
|
||||
" description "
|
||||
"FROM storage "
|
||||
"ORDER BY name, "
|
||||
" id;");
|
||||
QSqlQuery query(m_db->db());
|
||||
|
||||
query.prepare(sql);
|
||||
|
||||
if(!query.exec())
|
||||
{
|
||||
myDebug << query.lastError().text();
|
||||
return(false);
|
||||
}
|
||||
|
||||
while(query.next())
|
||||
{
|
||||
cStorage* lpStorage = new cStorage(m_db, query.value("id").toInt());
|
||||
cStorageCategory* storageCatgegory = m_storageCategoryList->find(query.value("storage_category_id").toInt());
|
||||
lpStorage->setStorageCategory(storageCatgegory);
|
||||
lpStorage->setName(query.value("name").toString());
|
||||
lpStorage->setDescription(query.value("description").toString());
|
||||
storageCatgegory->addStorage(lpStorage);
|
||||
|
||||
add(lpStorage);
|
||||
}
|
||||
|
||||
sort();
|
||||
|
||||
return(true);
|
||||
}
|
||||
|
||||
cStorage* cStorageList::add(const qint32& id)
|
||||
{
|
||||
cStorage* lpNew = find(id);
|
||||
|
||||
if(!lpNew)
|
||||
{
|
||||
lpNew = new cStorage(m_db, id);
|
||||
append(lpNew);
|
||||
emit storageAdded(lpNew);
|
||||
}
|
||||
|
||||
return(lpNew);
|
||||
}
|
||||
|
||||
cStorage* cStorageList::add(const QString& name)
|
||||
{
|
||||
cStorage* lpNew = new cStorage(m_db);
|
||||
lpNew->setName(name);
|
||||
append(lpNew);
|
||||
emit storageAdded(lpNew);
|
||||
|
||||
return(lpNew);
|
||||
}
|
||||
|
||||
void cStorageList::add(cStorage* storage)
|
||||
{
|
||||
append(storage);
|
||||
}
|
||||
|
||||
bool cStorageList::remove(const qint32& id)
|
||||
{
|
||||
cStorage* storage = find(id);
|
||||
if(!storage)
|
||||
return(false);
|
||||
|
||||
if(!storage->remove())
|
||||
return(false);
|
||||
|
||||
if(!removeOne(storage))
|
||||
return(false);
|
||||
|
||||
emit storageRemoved(storage);
|
||||
|
||||
return(true);
|
||||
}
|
||||
|
||||
cStorage* cStorageList::find(const qint32& id)
|
||||
{
|
||||
for(int i = 0;i < count();i++)
|
||||
{
|
||||
if(at(i)->id() == id)
|
||||
return(at(i));
|
||||
}
|
||||
|
||||
return(nullptr);
|
||||
}
|
||||
|
||||
cStorage* cStorageList::find(const QString& name)
|
||||
{
|
||||
for(int i = 0;i < count();i++)
|
||||
{
|
||||
if(at(i)->name() == name)
|
||||
return(at(i));
|
||||
}
|
||||
|
||||
return(nullptr);
|
||||
}
|
||||
|
||||
void cStorageList::sort()
|
||||
{
|
||||
std::sort(begin(), end(), sortAsc);
|
||||
}
|
||||
|
||||
bool cStorageList::fillList()
|
||||
{
|
||||
if(!count())
|
||||
return(true);
|
||||
|
||||
QStandardItem i;
|
||||
QFont font = i.font();
|
||||
font.setItalic(true);
|
||||
font.setBold(true);
|
||||
|
||||
for(int i = 0;i < count();i++)
|
||||
{
|
||||
QStandardItem* item = new QStandardItem;
|
||||
at(i)->setItem(item);
|
||||
item->setText(at(i)->name());
|
||||
item->setData(QVariant::fromValue(at(i)), ITEM_STORAGE_DATA);
|
||||
item->setFont(font);
|
||||
|
||||
at(i)->storageCategory()->item()->appendRow(item);
|
||||
}
|
||||
|
||||
return(true);
|
||||
}
|
||||
|
||||
bool cStorageList::save()
|
||||
{
|
||||
bool ret = true;
|
||||
|
||||
for(int i = 0;i < count();i++)
|
||||
{
|
||||
if(!at(i)->save())
|
||||
ret = false;
|
||||
}
|
||||
|
||||
return(ret);
|
||||
}
|
||||
+92
@@ -0,0 +1,92 @@
|
||||
#ifndef CSTORAGE_H
|
||||
#define CSTORAGE_H
|
||||
|
||||
|
||||
#include "cdatabase.h"
|
||||
#include "cstoragecategory.h"
|
||||
|
||||
#include <QMetaType>
|
||||
#include <QList>
|
||||
#include <QObject>
|
||||
|
||||
#include <QStandardItem>
|
||||
#include <QStandardItemModel>
|
||||
|
||||
|
||||
class cStorage : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit cStorage(cDatabase* db, qint32 id = -1, QObject *parent = nullptr);
|
||||
cStorage(cStorage* storage);
|
||||
|
||||
void set(cStorage* storage);
|
||||
|
||||
void setID(const qint32& id);
|
||||
qint32 id();
|
||||
|
||||
void setStorageCategory(cStorageCategory* storageCategory);
|
||||
cStorageCategory* storageCategory();
|
||||
|
||||
void setName(const QString& name);
|
||||
QString name();
|
||||
|
||||
void setDescription(const QString& description);
|
||||
QString description();
|
||||
|
||||
void setItem(QStandardItem* item);
|
||||
QStandardItem* item();
|
||||
|
||||
bool save();
|
||||
void clearSave();
|
||||
bool remove();
|
||||
|
||||
cDatabase* db();
|
||||
private:
|
||||
cDatabase* m_db;
|
||||
bool m_changed;
|
||||
qint32 m_id;
|
||||
cStorageCategory* m_storageCategory;
|
||||
QString m_name;
|
||||
QString m_description;
|
||||
QStandardItem* m_item;
|
||||
signals:
|
||||
void storageChanged(cStorage* storage);
|
||||
void idChanged(const qint32& id);
|
||||
void storageCategoryChanged(cStorageCategory* storageCategory);
|
||||
void nameChanged(const QString& name);
|
||||
void descriptionChanged(const QString& description);
|
||||
};
|
||||
|
||||
Q_DECLARE_METATYPE(cStorage*)
|
||||
|
||||
class cStorageList : public QObject, public QList<cStorage*>
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
cStorageList(cDatabase* db, cStorageCategoryList* storageCategoryList, QObject* parent = nullptr);
|
||||
|
||||
bool load();
|
||||
cStorage* add(const qint32& id);
|
||||
cStorage* add(const QString& name);
|
||||
void add(cStorage* storage);
|
||||
bool remove(const qint32& id);
|
||||
cStorage* find(const qint32& id);
|
||||
cStorage* find(const QString& name);
|
||||
|
||||
void sort();
|
||||
|
||||
bool fillList();
|
||||
|
||||
bool save();
|
||||
private:
|
||||
cDatabase* m_db;
|
||||
cStorageCategoryList* m_storageCategoryList;
|
||||
|
||||
signals:
|
||||
void storageAdded(cStorage* storage);
|
||||
void storageRemoved(cStorage* storage);
|
||||
};
|
||||
|
||||
#endif // CSTORAGE_H
|
||||
@@ -0,0 +1,385 @@
|
||||
#include "cstoragecategory.h"
|
||||
#include "cstorage.h"
|
||||
|
||||
#include <QSqlQuery>
|
||||
#include <QSqlError>
|
||||
|
||||
#include <QStandardItem>
|
||||
|
||||
#include "common.h"
|
||||
|
||||
#include <QDebug>
|
||||
|
||||
|
||||
bool sortAsc(cStorageCategory* &v1, cStorageCategory* &v2)
|
||||
{
|
||||
return(v1->name() < v2->name());
|
||||
}
|
||||
|
||||
|
||||
cStorageCategory::cStorageCategory(cDatabase* db, qint32 id, QObject* parent) :
|
||||
QObject(parent),
|
||||
m_db(db),
|
||||
m_changed(false),
|
||||
m_id(id),
|
||||
m_parent(-1),
|
||||
m_name(""),
|
||||
m_description(""),
|
||||
m_parentCategory(nullptr),
|
||||
m_list(nullptr),
|
||||
m_childList(new cStorageCategoryList(nullptr)),
|
||||
m_storageList(new cStorageList(db, nullptr, nullptr)),
|
||||
m_item(nullptr)
|
||||
{
|
||||
}
|
||||
|
||||
cStorageCategory::cStorageCategory(cStorageCategory* storageCategory)
|
||||
{
|
||||
set(storageCategory);
|
||||
}
|
||||
|
||||
void cStorageCategory::set(cStorageCategory* storageCategory)
|
||||
{
|
||||
m_db = storageCategory->db();
|
||||
m_id = storageCategory->id();
|
||||
m_parent = storageCategory->parent();
|
||||
m_name = storageCategory->name();
|
||||
m_description = storageCategory->description();
|
||||
}
|
||||
|
||||
void cStorageCategory::setID(const qint32& id)
|
||||
{
|
||||
m_id = id;
|
||||
m_changed = true;
|
||||
emit idChanged(id);
|
||||
emit storageCategoryChanged(this);
|
||||
}
|
||||
|
||||
qint32 cStorageCategory::id()
|
||||
{
|
||||
return(m_id);
|
||||
}
|
||||
|
||||
void cStorageCategory::setParent(const qint32& parent)
|
||||
{
|
||||
m_parent = parent;
|
||||
m_changed = true;
|
||||
emit parentChanged(parent);
|
||||
emit storageCategoryChanged(this);
|
||||
}
|
||||
|
||||
qint32 cStorageCategory::parent()
|
||||
{
|
||||
return(m_parent);
|
||||
}
|
||||
|
||||
void cStorageCategory::addStorage(cStorage* storage)
|
||||
{
|
||||
m_storageList->add(storage);
|
||||
}
|
||||
|
||||
cStorageList* cStorageCategory::storageList()
|
||||
{
|
||||
return(m_storageList);
|
||||
}
|
||||
|
||||
void cStorageCategory::setName(const QString& name)
|
||||
{
|
||||
m_name = name;
|
||||
m_changed = true;
|
||||
emit nameChanged(name);
|
||||
emit storageCategoryChanged(this);
|
||||
}
|
||||
|
||||
QString cStorageCategory::name()
|
||||
{
|
||||
return(m_name);
|
||||
}
|
||||
|
||||
void cStorageCategory::setDescription(const QString &description)
|
||||
{
|
||||
m_description = description;
|
||||
m_changed = true;
|
||||
emit descriptionChanged(description);
|
||||
emit storageCategoryChanged(this);
|
||||
}
|
||||
|
||||
QString cStorageCategory::description()
|
||||
{
|
||||
return(m_description);
|
||||
}
|
||||
|
||||
void cStorageCategory::setParentCategory(cStorageCategory* parentCategory)
|
||||
{
|
||||
m_parentCategory = parentCategory;
|
||||
}
|
||||
|
||||
cStorageCategory* cStorageCategory::parentCategory()
|
||||
{
|
||||
return(m_parentCategory);
|
||||
}
|
||||
|
||||
void cStorageCategory::setItem(QStandardItem* item)
|
||||
{
|
||||
m_item = item;
|
||||
}
|
||||
|
||||
QStandardItem* cStorageCategory::item()
|
||||
{
|
||||
return(m_item);
|
||||
}
|
||||
|
||||
cStorageCategoryList* cStorageCategory::childList()
|
||||
{
|
||||
return(m_childList);
|
||||
}
|
||||
|
||||
cDatabase* cStorageCategory::db()
|
||||
{
|
||||
return(m_db);
|
||||
}
|
||||
|
||||
bool cStorageCategory::save()
|
||||
{
|
||||
if(!m_changed)
|
||||
return(true);
|
||||
|
||||
QSqlQuery query;
|
||||
|
||||
if(m_id == -1)
|
||||
query.prepare("INSERT INTO storage_category (parent, name, description) VALUES (:parent, :name, :description);");
|
||||
else
|
||||
query.prepare("UPDATE storage_category SET parent=:parent, name=:name, description=:description WHERE id=:id;");
|
||||
|
||||
query.bindValue(":id", m_id);
|
||||
query.bindValue(":parent", (m_parent==-1)?QVariant(QVariant::Int):m_parent);
|
||||
query.bindValue(":name", m_name);
|
||||
query.bindValue(":description", m_description);
|
||||
|
||||
if(!query.exec())
|
||||
{
|
||||
myDebug << query.lastError().text();
|
||||
return(false);
|
||||
}
|
||||
|
||||
if(m_id == -1)
|
||||
{
|
||||
if(!query.exec("SELECT MAX(id) MAXID FROM storage_category;"))
|
||||
{
|
||||
myDebug << query.lastError().text();
|
||||
return(false);
|
||||
}
|
||||
|
||||
query.first();
|
||||
m_id = query.value("MAXID").toInt();
|
||||
}
|
||||
m_changed = false;
|
||||
return(true);
|
||||
}
|
||||
|
||||
bool cStorageCategory::remove()
|
||||
{
|
||||
QSqlQuery query;
|
||||
|
||||
query.prepare("DELETE FROM storage_category WHERE id=:id;");
|
||||
query.bindValue(":id", m_id);
|
||||
|
||||
if(!query.exec())
|
||||
{
|
||||
myDebug << query.lastError().text();
|
||||
return(false);
|
||||
}
|
||||
|
||||
return(true);
|
||||
}
|
||||
|
||||
void cStorageCategory::clearSave()
|
||||
{
|
||||
m_changed = false;
|
||||
}
|
||||
|
||||
cStorageCategoryList::cStorageCategoryList(cDatabase* db, QObject* parent) :
|
||||
QObject(parent),
|
||||
m_db(db)
|
||||
{
|
||||
}
|
||||
|
||||
bool cStorageCategoryList::load()
|
||||
{
|
||||
if(!m_db->db().isOpen())
|
||||
return(false);
|
||||
|
||||
QString sql = QString("SELECT id, "
|
||||
" parent, "
|
||||
" name, "
|
||||
" description "
|
||||
"FROM storage_category "
|
||||
"ORDER BY parent, "
|
||||
" id;");
|
||||
QSqlQuery query(m_db->db());
|
||||
|
||||
query.prepare(sql);
|
||||
|
||||
if(!query.exec())
|
||||
{
|
||||
myDebug << query.lastError().text();
|
||||
return(false);
|
||||
}
|
||||
|
||||
while(query.next())
|
||||
{
|
||||
cStorageCategory* lpCategory = new cStorageCategory(m_db, query.value("id").toInt());
|
||||
if(query.value("parent").isNull())
|
||||
lpCategory->setParent(-1);
|
||||
else
|
||||
lpCategory->setParent(query.value("parent").toInt());
|
||||
lpCategory->setName(query.value("name").toString());
|
||||
lpCategory->setDescription(query.value("description").toString());
|
||||
|
||||
cStorageCategory* lpParent = find(lpCategory->parent());
|
||||
|
||||
if(lpParent)
|
||||
{
|
||||
lpCategory->setParentCategory(lpParent);
|
||||
lpParent->childList()->add(lpCategory);
|
||||
}
|
||||
else
|
||||
add(lpCategory);
|
||||
}
|
||||
|
||||
sort();
|
||||
|
||||
return(true);
|
||||
}
|
||||
|
||||
cStorageCategory* cStorageCategoryList::add(const qint32& id)
|
||||
{
|
||||
cStorageCategory* lpNew = find(id);
|
||||
|
||||
if(!lpNew)
|
||||
{
|
||||
lpNew = new cStorageCategory(m_db, id);
|
||||
append(lpNew);
|
||||
emit storageCategoryAdded(lpNew);
|
||||
}
|
||||
|
||||
return(lpNew);
|
||||
}
|
||||
|
||||
cStorageCategory* cStorageCategoryList::add(const QString& name)
|
||||
{
|
||||
cStorageCategory* lpNew = new cStorageCategory(m_db);
|
||||
lpNew->setName(name);
|
||||
append(lpNew);
|
||||
emit storageCategoryAdded(lpNew);
|
||||
|
||||
return(lpNew);
|
||||
}
|
||||
|
||||
void cStorageCategoryList::add(cStorageCategory* storageCategory)
|
||||
{
|
||||
append(storageCategory);
|
||||
}
|
||||
|
||||
bool cStorageCategoryList::remove(const qint32& id)
|
||||
{
|
||||
cStorageCategory* storageCategory = find(id);
|
||||
if(!storageCategory)
|
||||
return(false);
|
||||
|
||||
if(!storageCategory->remove())
|
||||
return(false);
|
||||
|
||||
if(!removeOne(storageCategory))
|
||||
return(false);
|
||||
|
||||
emit storageCategoryRemoved(storageCategory);
|
||||
|
||||
return(true);
|
||||
}
|
||||
|
||||
cStorageCategory* cStorageCategoryList::find(const qint32& id)
|
||||
{
|
||||
for(int i = 0;i < count();i++)
|
||||
{
|
||||
if(at(i)->id() == id)
|
||||
return(at(i));
|
||||
}
|
||||
|
||||
cStorageCategory* category;
|
||||
for(int i = 0;i < count();i++)
|
||||
{
|
||||
category = at(i)->childList()->find(id);
|
||||
if(category)
|
||||
return(category);
|
||||
}
|
||||
|
||||
return(nullptr);
|
||||
}
|
||||
|
||||
cStorageCategory* cStorageCategoryList::find(const QString& name)
|
||||
{
|
||||
for(int i = 0;i < count();i++)
|
||||
{
|
||||
if(at(i)->name() == name)
|
||||
return(at(i));
|
||||
}
|
||||
|
||||
cStorageCategory* category;
|
||||
for(int i = 0;i < count();i++)
|
||||
{
|
||||
category = at(i)->childList()->find(name);
|
||||
if(category)
|
||||
return(category);
|
||||
}
|
||||
|
||||
return(nullptr);
|
||||
}
|
||||
|
||||
void cStorageCategoryList::sort()
|
||||
{
|
||||
std::sort(begin(), end(), sortAsc);
|
||||
|
||||
for(int i = 0;i < count();i++)
|
||||
at(i)->childList()->sort();
|
||||
}
|
||||
|
||||
bool cStorageCategoryList::fillList(QStandardItemModel* model, QStandardItem* parent)
|
||||
{
|
||||
if(!parent)
|
||||
model->clear();
|
||||
|
||||
if(!count())
|
||||
return(true);
|
||||
|
||||
for(int i = 0;i < count();i++)
|
||||
{
|
||||
QStandardItem* item = new QStandardItem;
|
||||
at(i)->setItem(item);
|
||||
item->setText(at(i)->name());
|
||||
item->setData(QVariant::fromValue(at(i)), ITEM_STORAGE_CATEGORY_DATA);
|
||||
|
||||
if(parent)
|
||||
parent->appendRow(item);
|
||||
else
|
||||
model->appendRow(item);
|
||||
|
||||
if(at(i)->childList())
|
||||
at(i)->childList()->fillList(model, item);
|
||||
}
|
||||
|
||||
return(true);
|
||||
}
|
||||
|
||||
bool cStorageCategoryList::save()
|
||||
{
|
||||
bool ret = true;
|
||||
|
||||
for(int i = 0;i < count();i++)
|
||||
{
|
||||
if(!at(i)->save())
|
||||
ret = false;
|
||||
}
|
||||
|
||||
return(ret);
|
||||
}
|
||||
@@ -0,0 +1,109 @@
|
||||
#ifndef CSTORAGECATEGORY_H
|
||||
#define CSTORAGECATEGORY_H
|
||||
|
||||
|
||||
#include "cdatabase.h"
|
||||
|
||||
#include <QMetaType>
|
||||
#include <QList>
|
||||
#include <QObject>
|
||||
|
||||
#include <QStandardItem>
|
||||
#include <QStandardItemModel>
|
||||
|
||||
|
||||
class cStorageCategoryList;
|
||||
class cStorage;
|
||||
class cStorageList;
|
||||
|
||||
class cStorageCategory : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit cStorageCategory(cDatabase* db, qint32 id = -1, QObject *parent = nullptr);
|
||||
cStorageCategory(cStorageCategory* storageCategory);
|
||||
|
||||
void set(cStorageCategory* storageCategory);
|
||||
|
||||
void setID(const qint32& id);
|
||||
qint32 id();
|
||||
|
||||
void setParent(const qint32& parent);
|
||||
qint32 parent();
|
||||
|
||||
void setName(const QString& name);
|
||||
QString name();
|
||||
|
||||
void setDescription(const QString& description);
|
||||
QString description();
|
||||
|
||||
void setParentCategory(cStorageCategory* parentCategory);
|
||||
cStorageCategory* parentCategory();
|
||||
|
||||
void addStorage(cStorage* storage);
|
||||
cStorageList* storageList();
|
||||
|
||||
void setItem(QStandardItem* item);
|
||||
QStandardItem* item();
|
||||
|
||||
bool save();
|
||||
void clearSave();
|
||||
bool remove();
|
||||
|
||||
void setList(cStorageCategoryList* list);
|
||||
cStorageCategoryList* list();
|
||||
|
||||
cStorageCategoryList* childList();
|
||||
|
||||
cDatabase* db();
|
||||
private:
|
||||
cDatabase* m_db;
|
||||
bool m_changed;
|
||||
qint32 m_id;
|
||||
qint32 m_parent;
|
||||
QString m_name;
|
||||
QString m_description;
|
||||
cStorageCategory* m_parentCategory;
|
||||
cStorageCategoryList* m_list;
|
||||
cStorageCategoryList* m_childList;
|
||||
cStorageList* m_storageList;
|
||||
QStandardItem* m_item;
|
||||
signals:
|
||||
void storageCategoryChanged(cStorageCategory* storageCategory);
|
||||
void idChanged(const qint32& id);
|
||||
void parentChanged(const qint32& parent);
|
||||
void nameChanged(const QString& name);
|
||||
void descriptionChanged(const QString& description);
|
||||
};
|
||||
|
||||
Q_DECLARE_METATYPE(cStorageCategory*)
|
||||
|
||||
class cStorageCategoryList : public QObject, public QList<cStorageCategory*>
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
cStorageCategoryList(cDatabase* db, QObject* parent = nullptr);
|
||||
|
||||
bool load();
|
||||
cStorageCategory* add(const qint32& id);
|
||||
cStorageCategory* add(const QString& name);
|
||||
void add(cStorageCategory* storageCategory);
|
||||
bool remove(const qint32& id);
|
||||
cStorageCategory* find(const qint32& id);
|
||||
cStorageCategory* find(const QString& name);
|
||||
|
||||
void sort();
|
||||
|
||||
bool fillList(QStandardItemModel* model, QStandardItem* parent = 0);
|
||||
|
||||
bool save();
|
||||
private:
|
||||
cDatabase* m_db;
|
||||
|
||||
signals:
|
||||
void storageCategoryAdded(cStorageCategory* storageCategory);
|
||||
void storageCategoryRemoved(cStorageCategory* storageCategory);
|
||||
};
|
||||
|
||||
#endif // CSTORAGECATEGORY_H
|
||||
+51
@@ -0,0 +1,51 @@
|
||||
/*!
|
||||
\file cwidget.cpp
|
||||
|
||||
*/
|
||||
|
||||
#include "cwidget.h"
|
||||
|
||||
|
||||
cWidget::cWidget(cManufacturerWindow* parent) :
|
||||
QWidget(parent),
|
||||
m_type(TYPE_manufacturer),
|
||||
m_lpWidget(parent),
|
||||
m_lpWindow(0)
|
||||
{
|
||||
}
|
||||
|
||||
cWidget::cWidget(cDistributorWindow* parent) :
|
||||
QWidget(parent),
|
||||
m_type(TYPE_distributor),
|
||||
m_lpWidget(parent),
|
||||
m_lpWindow(0)
|
||||
{
|
||||
}
|
||||
|
||||
cWidget::cWidget(QWidget* parent) :
|
||||
QWidget(parent),
|
||||
m_type(TYPE_unknown),
|
||||
m_lpWidget(parent),
|
||||
m_lpWindow(0)
|
||||
{
|
||||
}
|
||||
|
||||
void cWidget::setWindow(QMdiSubWindow* lpWindow)
|
||||
{
|
||||
m_lpWindow = lpWindow;
|
||||
}
|
||||
|
||||
QMdiSubWindow* cWidget::window()
|
||||
{
|
||||
return(m_lpWindow);
|
||||
}
|
||||
|
||||
QWidget* cWidget::widget()
|
||||
{
|
||||
return(m_lpWidget);
|
||||
}
|
||||
|
||||
cWidget::TYPE cWidget::type()
|
||||
{
|
||||
return(m_type);
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
#ifndef CWIDGET_H
|
||||
#define CWIDGET_H
|
||||
|
||||
|
||||
#include "cmanufacturerwindow.h"
|
||||
#include "cdistributorwindow.h"
|
||||
|
||||
#include <QWidget>
|
||||
#include <QMdiSubWindow>
|
||||
|
||||
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\class cWidget cwidget.h "cwidget.h"
|
||||
*/
|
||||
class cWidget : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
/*!
|
||||
\brief
|
||||
|
||||
\enum TYPE
|
||||
*/
|
||||
enum TYPE
|
||||
{
|
||||
TYPE_unknown = 0,
|
||||
TYPE_manufacturer = 1,
|
||||
TYPE_distributor = 2,
|
||||
TYPE_storage = 3,
|
||||
TYPE_part = 4,
|
||||
TYPE_project = 5,
|
||||
};
|
||||
|
||||
explicit cWidget(cManufacturerWindow* parent);
|
||||
explicit cWidget(cDistributorWindow* parent);
|
||||
explicit cWidget(QWidget* parent);
|
||||
|
||||
QWidget* widget();
|
||||
|
||||
void setWindow(QMdiSubWindow* lpWindow);
|
||||
QMdiSubWindow* window();
|
||||
TYPE type();
|
||||
signals:
|
||||
|
||||
public slots:
|
||||
|
||||
private:
|
||||
TYPE m_type;
|
||||
QWidget* m_lpWidget;
|
||||
QMdiSubWindow* m_lpWindow;
|
||||
};
|
||||
|
||||
#endif // CWIDGET_H
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 1.0 KiB |
@@ -0,0 +1,41 @@
|
||||
#include "cmainwindow.h"
|
||||
|
||||
#include <QApplication>
|
||||
#include <QSettings>
|
||||
|
||||
#include "csplashscreen.h"
|
||||
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
QApplication a(argc, argv);
|
||||
|
||||
a.setApplicationVersion(APP_VERSION);
|
||||
a.setApplicationDisplayName("partlistManager");
|
||||
a.setOrganizationName("WIN-DESIGN");
|
||||
a.setOrganizationDomain("windesign.at");
|
||||
a.setApplicationName("partlistManager");
|
||||
|
||||
QSettings settings;
|
||||
|
||||
QPixmap pixmap(":/images/splash.png");
|
||||
QFont splashFont;
|
||||
cSplashScreen* lpSplash = new cSplashScreen(pixmap, splashFont);
|
||||
|
||||
lpSplash->show();
|
||||
a.processEvents();
|
||||
|
||||
lpSplash->showStatusMessage(QObject::tr("<center>initializing...</denter>"));
|
||||
|
||||
cMainWindow w(lpSplash);
|
||||
|
||||
if(settings.value("main/maximized").toBool())
|
||||
w.showMaximized();
|
||||
else
|
||||
w.show();
|
||||
|
||||
lpSplash->finish(&w);
|
||||
delete lpSplash;
|
||||
|
||||
return a.exec();
|
||||
}
|
||||
@@ -0,0 +1,77 @@
|
||||
VERSION = "0.0.1.0"
|
||||
|
||||
QMAKE_TARGET_COMPANY = "WIN-DESIGN"
|
||||
QMAKE_TARGET_PRODUCT = "partlistManager"
|
||||
QMAKE_TARGET_DESCRIPTION = "partlistManager"
|
||||
QMAKE_TARGET_COPYRIGHT = "(c) 2019 WIN-DESIGN"
|
||||
QMAKE_TARGET_DOMAIN = "windesign.at"
|
||||
|
||||
QT += core gui sql
|
||||
|
||||
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
|
||||
|
||||
win32-msvc* {
|
||||
contains(QT_ARCH, i386) {
|
||||
message("msvc 32-bit")
|
||||
} else {
|
||||
message("msvc 64-bit")
|
||||
}
|
||||
}
|
||||
|
||||
win32-g++ {
|
||||
message("mingw")
|
||||
}
|
||||
|
||||
unix {
|
||||
message("*nix")
|
||||
}
|
||||
|
||||
CONFIG += c++11
|
||||
|
||||
# You can make your code fail to compile if it uses deprecated APIs.
|
||||
# In order to do so, uncomment the following line.
|
||||
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
|
||||
|
||||
DEFINES += APP_VERSION=\\\"$$VERSION\\\"
|
||||
|
||||
SOURCES += \
|
||||
cdatabase.cpp \
|
||||
cdistributor.cpp \
|
||||
cdistributorwindow.cpp \
|
||||
cmanufacturer.cpp \
|
||||
cmanufacturerwindow.cpp \
|
||||
cmdisubwindow.cpp \
|
||||
common.cpp \
|
||||
csplashscreen.cpp \
|
||||
cstorage.cpp \
|
||||
cstoragecategory.cpp \
|
||||
cwidget.cpp \
|
||||
main.cpp \
|
||||
cmainwindow.cpp
|
||||
|
||||
HEADERS += \
|
||||
cdatabase.h \
|
||||
cdistributor.h \
|
||||
cdistributorwindow.h \
|
||||
cmainwindow.h \
|
||||
cmanufacturer.h \
|
||||
cmanufacturerwindow.h \
|
||||
cmdisubwindow.h \
|
||||
common.h \
|
||||
csplashscreen.h \
|
||||
cstorage.h \
|
||||
cstoragecategory.h \
|
||||
cwidget.h
|
||||
|
||||
FORMS += \
|
||||
cdistributorwindow.ui \
|
||||
cmainwindow.ui \
|
||||
cmanufacturerwindow.ui
|
||||
|
||||
# Default rules for deployment.
|
||||
qnx: target.path = /tmp/$${TARGET}/bin
|
||||
else: unix:!android: target.path = /opt/$${TARGET}/bin
|
||||
!isEmpty(target.path): INSTALLS += target
|
||||
|
||||
RESOURCES += \
|
||||
partlistmanager.qrc
|
||||
@@ -0,0 +1,659 @@
|
||||
<RCC>
|
||||
<qresource prefix="/">
|
||||
<file>images/splashEmpty.png</file>
|
||||
</qresource>
|
||||
<qresource prefix="/icons/TangoMFK">
|
||||
<file alias="16x16/address-book-new.png">themes/tango/16x16/actions/address-book-new.png</file>
|
||||
<file alias="16x16/appointment-new.png">themes/tango/16x16/actions/appointment-new.png</file>
|
||||
<file alias="16x16/bookmark-new.png">themes/tango/16x16/actions/bookmark-new.png</file>
|
||||
<file alias="16x16/contact-new.png">themes/tango/16x16/actions/contact-new.png</file>
|
||||
<file alias="16x16/document-new.png">themes/tango/16x16/actions/document-new.png</file>
|
||||
<file alias="16x16/document-open.png">themes/tango/16x16/actions/document-open.png</file>
|
||||
<file alias="16x16/document-print-preview.png">themes/tango/16x16/actions/document-print-preview.png</file>
|
||||
<file alias="16x16/document-print.png">themes/tango/16x16/actions/document-print.png</file>
|
||||
<file alias="16x16/document-pdf.png">themes/tango/16x16/actions/document-pdf.png</file>
|
||||
<file alias="16x16/document-properties.png">themes/tango/16x16/actions/document-properties.png</file>
|
||||
<file alias="16x16/document-revert.png">themes/tango/16x16/actions/document-revert.png</file>
|
||||
<file alias="16x16/document-save-as.png">themes/tango/16x16/actions/document-save-as.png</file>
|
||||
<file alias="16x16/document-save.png">themes/tango/16x16/actions/document-save.png</file>
|
||||
<file alias="16x16/edit-clear.png">themes/tango/16x16/actions/edit-clear.png</file>
|
||||
<file alias="16x16/edit-copy.png">themes/tango/16x16/actions/edit-copy.png</file>
|
||||
<file alias="16x16/edit-cut.png">themes/tango/16x16/actions/edit-cut.png</file>
|
||||
<file alias="16x16/edit-delete.png">themes/tango/16x16/actions/edit-delete.png</file>
|
||||
<file alias="16x16/edit-find-replace.png">themes/tango/16x16/actions/edit-find-replace.png</file>
|
||||
<file alias="16x16/edit-find.png">themes/tango/16x16/actions/edit-find.png</file>
|
||||
<file alias="16x16/edit-paste.png">themes/tango/16x16/actions/edit-paste.png</file>
|
||||
<file alias="16x16/edit-redo.png">themes/tango/16x16/actions/edit-redo.png</file>
|
||||
<file alias="16x16/edit-select-all.png">themes/tango/16x16/actions/edit-select-all.png</file>
|
||||
<file alias="16x16/edit-undo.png">themes/tango/16x16/actions/edit-undo.png</file>
|
||||
<file alias="16x16/folder-new.png">themes/tango/16x16/actions/folder-new.png</file>
|
||||
<file alias="16x16/format-indent-less.png">themes/tango/16x16/actions/format-indent-less.png</file>
|
||||
<file alias="16x16/format-indent-more.png">themes/tango/16x16/actions/format-indent-more.png</file>
|
||||
<file alias="16x16/format-justify-center.png">themes/tango/16x16/actions/format-justify-center.png</file>
|
||||
<file alias="16x16/format-justify-fill.png">themes/tango/16x16/actions/format-justify-fill.png</file>
|
||||
<file alias="16x16/format-justify-left.png">themes/tango/16x16/actions/format-justify-left.png</file>
|
||||
<file alias="16x16/format-justify-right.png">themes/tango/16x16/actions/format-justify-right.png</file>
|
||||
<file alias="16x16/format-text-bold.png">themes/tango/16x16/actions/format-text-bold.png</file>
|
||||
<file alias="16x16/format-text-italic.png">themes/tango/16x16/actions/format-text-italic.png</file>
|
||||
<file alias="16x16/format-text-strikethrough.png">themes/tango/16x16/actions/format-text-strikethrough.png</file>
|
||||
<file alias="16x16/format-text-underline.png">themes/tango/16x16/actions/format-text-underline.png</file>
|
||||
<file alias="16x16/go-bottom.png">themes/tango/16x16/actions/go-bottom.png</file>
|
||||
<file alias="16x16/go-down.png">themes/tango/16x16/actions/go-down.png</file>
|
||||
<file alias="16x16/go-first.png">themes/tango/16x16/actions/go-first.png</file>
|
||||
<file alias="16x16/go-home.png">themes/tango/16x16/actions/go-home.png</file>
|
||||
<file alias="16x16/go-jump.png">themes/tango/16x16/actions/go-jump.png</file>
|
||||
<file alias="16x16/go-last.png">themes/tango/16x16/actions/go-last.png</file>
|
||||
<file alias="16x16/go-next.png">themes/tango/16x16/actions/go-next.png</file>
|
||||
<file alias="16x16/go-previous.png">themes/tango/16x16/actions/go-previous.png</file>
|
||||
<file alias="16x16/go-top.png">themes/tango/16x16/actions/go-top.png</file>
|
||||
<file alias="16x16/go-up.png">themes/tango/16x16/actions/go-up.png</file>
|
||||
<file alias="16x16/list-add.png">themes/tango/16x16/actions/list-add.png</file>
|
||||
<file alias="16x16/list-remove.png">themes/tango/16x16/actions/list-remove.png</file>
|
||||
<file alias="16x16/mail-forward.png">themes/tango/16x16/actions/mail-forward.png</file>
|
||||
<file alias="16x16/mail-mark-junk.png">themes/tango/16x16/actions/mail-mark-junk.png</file>
|
||||
<file alias="16x16/mail-mark-not-junk.png">themes/tango/16x16/actions/mail-mark-not-junk.png</file>
|
||||
<file alias="16x16/mail-message-new.png">themes/tango/16x16/actions/mail-message-new.png</file>
|
||||
<file alias="16x16/mail-reply-all.png">themes/tango/16x16/actions/mail-reply-all.png</file>
|
||||
<file alias="16x16/mail-reply-sender.png">themes/tango/16x16/actions/mail-reply-sender.png</file>
|
||||
<file alias="16x16/mail-send-receive.png">themes/tango/16x16/actions/mail-send-receive.png</file>
|
||||
<file alias="16x16/media-eject.png">themes/tango/16x16/actions/media-eject.png</file>
|
||||
<file alias="16x16/media-playback-pause.png">themes/tango/16x16/actions/media-playback-pause.png</file>
|
||||
<file alias="16x16/media-playback-start.png">themes/tango/16x16/actions/media-playback-start.png</file>
|
||||
<file alias="16x16/media-playback-stop.png">themes/tango/16x16/actions/media-playback-stop.png</file>
|
||||
<file alias="16x16/media-record.png">themes/tango/16x16/actions/media-record.png</file>
|
||||
<file alias="16x16/media-seek-backward.png">themes/tango/16x16/actions/media-seek-backward.png</file>
|
||||
<file alias="16x16/media-seek-forward.png">themes/tango/16x16/actions/media-seek-forward.png</file>
|
||||
<file alias="16x16/media-skip-backward.png">themes/tango/16x16/actions/media-skip-backward.png</file>
|
||||
<file alias="16x16/media-skip-forward.png">themes/tango/16x16/actions/media-skip-forward.png</file>
|
||||
<file alias="16x16/process-stop.png">themes/tango/16x16/actions/process-stop.png</file>
|
||||
<file alias="16x16/system-lock-screen.png">themes/tango/16x16/actions/system-lock-screen.png</file>
|
||||
<file alias="16x16/system-log-out.png">themes/tango/16x16/actions/system-log-out.png</file>
|
||||
<file alias="16x16/system-search.png">themes/tango/16x16/actions/system-search.png</file>
|
||||
<file alias="16x16/system-shutdown.png">themes/tango/16x16/actions/system-shutdown.png</file>
|
||||
<file alias="16x16/tab-new.png">themes/tango/16x16/actions/tab-new.png</file>
|
||||
<file alias="16x16/view-fullscreen.png">themes/tango/16x16/actions/view-fullscreen.png</file>
|
||||
<file alias="16x16/view-refresh.png">themes/tango/16x16/actions/view-refresh.png</file>
|
||||
<file alias="16x16/window-new.png">themes/tango/16x16/actions/window-new.png</file>
|
||||
<file alias="16x16/process-working.png">themes/tango/16x16/animations/process-working.png</file>
|
||||
<file alias="16x16/accessories-calculator.png">themes/tango/16x16/apps/accessories-calculator.png</file>
|
||||
<file alias="16x16/accessories-character-map.png">themes/tango/16x16/apps/accessories-character-map.png</file>
|
||||
<file alias="16x16/accessories-text-editor.png">themes/tango/16x16/apps/accessories-text-editor.png</file>
|
||||
<file alias="16x16/help-browser.png">themes/tango/16x16/apps/help-browser.png</file>
|
||||
<file alias="16x16/internet-group-chat.png">themes/tango/16x16/apps/internet-group-chat.png</file>
|
||||
<file alias="16x16/internet-mail.png">themes/tango/16x16/apps/internet-mail.png</file>
|
||||
<file alias="16x16/internet-news-reader.png">themes/tango/16x16/apps/internet-news-reader.png</file>
|
||||
<file alias="16x16/internet-web-browser.png">themes/tango/16x16/apps/internet-web-browser.png</file>
|
||||
<file alias="16x16/office-calendar.png">themes/tango/16x16/apps/office-calendar.png</file>
|
||||
<file alias="16x16/preferences-desktop-accessibility.png">themes/tango/16x16/apps/preferences-desktop-accessibility.png</file>
|
||||
<file alias="16x16/preferences-desktop-assistive-technology.png">themes/tango/16x16/apps/preferences-desktop-assistive-technology.png</file>
|
||||
<file alias="16x16/preferences-desktop-font.png">themes/tango/16x16/apps/preferences-desktop-font.png</file>
|
||||
<file alias="16x16/preferences-desktop-keyboard-shortcuts.png">themes/tango/16x16/apps/preferences-desktop-keyboard-shortcuts.png</file>
|
||||
<file alias="16x16/preferences-desktop-locale.png">themes/tango/16x16/apps/preferences-desktop-locale.png</file>
|
||||
<file alias="16x16/preferences-desktop-multimedia.png">themes/tango/16x16/apps/preferences-desktop-multimedia.png</file>
|
||||
<file alias="16x16/preferences-desktop-remote-desktop.png">themes/tango/16x16/apps/preferences-desktop-remote-desktop.png</file>
|
||||
<file alias="16x16/preferences-desktop-screensaver.png">themes/tango/16x16/apps/preferences-desktop-screensaver.png</file>
|
||||
<file alias="16x16/preferences-desktop-theme.png">themes/tango/16x16/apps/preferences-desktop-theme.png</file>
|
||||
<file alias="16x16/preferences-desktop-wallpaper.png">themes/tango/16x16/apps/preferences-desktop-wallpaper.png</file>
|
||||
<file alias="16x16/preferences-system-network-proxy.png">themes/tango/16x16/apps/preferences-system-network-proxy.png</file>
|
||||
<file alias="16x16/preferences-system-session.png">themes/tango/16x16/apps/preferences-system-session.png</file>
|
||||
<file alias="16x16/preferences-system-windows.png">themes/tango/16x16/apps/preferences-system-windows.png</file>
|
||||
<file alias="16x16/system-file-manager.png">themes/tango/16x16/apps/system-file-manager.png</file>
|
||||
<file alias="16x16/system-installer.png">themes/tango/16x16/apps/system-installer.png</file>
|
||||
<file alias="16x16/system-software-update.png">themes/tango/16x16/apps/system-software-update.png</file>
|
||||
<file alias="16x16/system-users.png">themes/tango/16x16/apps/system-users.png</file>
|
||||
<file alias="16x16/utilities-system-monitor.png">themes/tango/16x16/apps/utilities-system-monitor.png</file>
|
||||
<file alias="16x16/utilities-terminal.png">themes/tango/16x16/apps/utilities-terminal.png</file>
|
||||
<file alias="16x16/applications-accessories.png">themes/tango/16x16/categories/applications-accessories.png</file>
|
||||
<file alias="16x16/applications-development.png">themes/tango/16x16/categories/applications-development.png</file>
|
||||
<file alias="16x16/applications-games.png">themes/tango/16x16/categories/applications-games.png</file>
|
||||
<file alias="16x16/applications-graphics.png">themes/tango/16x16/categories/applications-graphics.png</file>
|
||||
<file alias="16x16/applications-internet.png">themes/tango/16x16/categories/applications-internet.png</file>
|
||||
<file alias="16x16/applications-multimedia.png">themes/tango/16x16/categories/applications-multimedia.png</file>
|
||||
<file alias="16x16/applications-office.png">themes/tango/16x16/categories/applications-office.png</file>
|
||||
<file alias="16x16/applications-other.png">themes/tango/16x16/categories/applications-other.png</file>
|
||||
<file alias="16x16/applications-system.png">themes/tango/16x16/categories/applications-system.png</file>
|
||||
<file alias="16x16/preferences-desktop-peripherals.png">themes/tango/16x16/categories/preferences-desktop-peripherals.png</file>
|
||||
<file alias="16x16/preferences-desktop.png">themes/tango/16x16/categories/preferences-desktop.png</file>
|
||||
<file alias="16x16/preferences-system.png">themes/tango/16x16/categories/preferences-system.png</file>
|
||||
<file alias="16x16/audio-card.png">themes/tango/16x16/devices/audio-card.png</file>
|
||||
<file alias="16x16/audio-input-microphone.png">themes/tango/16x16/devices/audio-input-microphone.png</file>
|
||||
<file alias="16x16/battery.png">themes/tango/16x16/devices/battery.png</file>
|
||||
<file alias="16x16/camera-photo.png">themes/tango/16x16/devices/camera-photo.png</file>
|
||||
<file alias="16x16/camera-video.png">themes/tango/16x16/devices/camera-video.png</file>
|
||||
<file alias="16x16/computer.png">themes/tango/16x16/devices/computer.png</file>
|
||||
<file alias="16x16/drive-harddisk.png">themes/tango/16x16/devices/drive-harddisk.png</file>
|
||||
<file alias="16x16/drive-optical.png">themes/tango/16x16/devices/drive-optical.png</file>
|
||||
<file alias="16x16/drive-removable-media.png">themes/tango/16x16/devices/drive-removable-media.png</file>
|
||||
<file alias="16x16/input-gaming.png">themes/tango/16x16/devices/input-gaming.png</file>
|
||||
<file alias="16x16/input-keyboard.png">themes/tango/16x16/devices/input-keyboard.png</file>
|
||||
<file alias="16x16/input-mouse.png">themes/tango/16x16/devices/input-mouse.png</file>
|
||||
<file alias="16x16/media-flash.png">themes/tango/16x16/devices/media-flash.png</file>
|
||||
<file alias="16x16/media-floppy.png">themes/tango/16x16/devices/media-floppy.png</file>
|
||||
<file alias="16x16/media-optical.png">themes/tango/16x16/devices/media-optical.png</file>
|
||||
<file alias="16x16/multimedia-player.png">themes/tango/16x16/devices/multimedia-player.png</file>
|
||||
<file alias="16x16/network-wired.png">themes/tango/16x16/devices/network-wired.png</file>
|
||||
<file alias="16x16/network-wireless.png">themes/tango/16x16/devices/network-wireless.png</file>
|
||||
<file alias="16x16/printer.png">themes/tango/16x16/devices/printer.png</file>
|
||||
<file alias="16x16/video-display.png">themes/tango/16x16/devices/video-display.png</file>
|
||||
<file alias="16x16/emblem-favorite.png">themes/tango/16x16/emblems/emblem-favorite.png</file>
|
||||
<file alias="16x16/emblem-important.png">themes/tango/16x16/emblems/emblem-important.png</file>
|
||||
<file alias="16x16/emblem-photos.png">themes/tango/16x16/emblems/emblem-photos.png</file>
|
||||
<file alias="16x16/emblem-readonly.png">themes/tango/16x16/emblems/emblem-readonly.png</file>
|
||||
<file alias="16x16/emblem-symbolic-link.png">themes/tango/16x16/emblems/emblem-symbolic-link.png</file>
|
||||
<file alias="16x16/emblem-system.png">themes/tango/16x16/emblems/emblem-system.png</file>
|
||||
<file alias="16x16/emblem-unreadable.png">themes/tango/16x16/emblems/emblem-unreadable.png</file>
|
||||
<file alias="16x16/face-angel.png">themes/tango/16x16/emotes/face-angel.png</file>
|
||||
<file alias="16x16/face-crying.png">themes/tango/16x16/emotes/face-crying.png</file>
|
||||
<file alias="16x16/face-devilish.png">themes/tango/16x16/emotes/face-devilish.png</file>
|
||||
<file alias="16x16/face-glasses.png">themes/tango/16x16/emotes/face-glasses.png</file>
|
||||
<file alias="16x16/face-grin.png">themes/tango/16x16/emotes/face-grin.png</file>
|
||||
<file alias="16x16/face-kiss.png">themes/tango/16x16/emotes/face-kiss.png</file>
|
||||
<file alias="16x16/face-monkey.png">themes/tango/16x16/emotes/face-monkey.png</file>
|
||||
<file alias="16x16/face-plain.png">themes/tango/16x16/emotes/face-plain.png</file>
|
||||
<file alias="16x16/face-sad.png">themes/tango/16x16/emotes/face-sad.png</file>
|
||||
<file alias="16x16/face-smile-big.png">themes/tango/16x16/emotes/face-smile-big.png</file>
|
||||
<file alias="16x16/face-smile.png">themes/tango/16x16/emotes/face-smile.png</file>
|
||||
<file alias="16x16/face-surprise.png">themes/tango/16x16/emotes/face-surprise.png</file>
|
||||
<file alias="16x16/face-wink.png">themes/tango/16x16/emotes/face-wink.png</file>
|
||||
<file alias="16x16/application-certificate.png">themes/tango/16x16/mimetypes/application-certificate.png</file>
|
||||
<file alias="16x16/application-x-executable.png">themes/tango/16x16/mimetypes/application-x-executable.png</file>
|
||||
<file alias="16x16/audio-x-generic.png">themes/tango/16x16/mimetypes/audio-x-generic.png</file>
|
||||
<file alias="16x16/font-x-generic.png">themes/tango/16x16/mimetypes/font-x-generic.png</file>
|
||||
<file alias="16x16/image-x-generic.png">themes/tango/16x16/mimetypes/image-x-generic.png</file>
|
||||
<file alias="16x16/package-x-generic.png">themes/tango/16x16/mimetypes/package-x-generic.png</file>
|
||||
<file alias="16x16/text-html.png">themes/tango/16x16/mimetypes/text-html.png</file>
|
||||
<file alias="16x16/text-x-generic-template.png">themes/tango/16x16/mimetypes/text-x-generic-template.png</file>
|
||||
<file alias="16x16/text-x-generic.png">themes/tango/16x16/mimetypes/text-x-generic.png</file>
|
||||
<file alias="16x16/text-x-script.png">themes/tango/16x16/mimetypes/text-x-script.png</file>
|
||||
<file alias="16x16/video-x-generic.png">themes/tango/16x16/mimetypes/video-x-generic.png</file>
|
||||
<file alias="16x16/x-office-address-book.png">themes/tango/16x16/mimetypes/x-office-address-book.png</file>
|
||||
<file alias="16x16/x-office-calendar.png">themes/tango/16x16/mimetypes/x-office-calendar.png</file>
|
||||
<file alias="16x16/x-office-document-template.png">themes/tango/16x16/mimetypes/x-office-document-template.png</file>
|
||||
<file alias="16x16/x-office-document.png">themes/tango/16x16/mimetypes/x-office-document.png</file>
|
||||
<file alias="16x16/x-office-drawing-template.png">themes/tango/16x16/mimetypes/x-office-drawing-template.png</file>
|
||||
<file alias="16x16/x-office-drawing.png">themes/tango/16x16/mimetypes/x-office-drawing.png</file>
|
||||
<file alias="16x16/x-office-presentation-template.png">themes/tango/16x16/mimetypes/x-office-presentation-template.png</file>
|
||||
<file alias="16x16/x-office-presentation.png">themes/tango/16x16/mimetypes/x-office-presentation.png</file>
|
||||
<file alias="16x16/x-office-spreadsheet-template.png">themes/tango/16x16/mimetypes/x-office-spreadsheet-template.png</file>
|
||||
<file alias="16x16/x-office-spreadsheet.png">themes/tango/16x16/mimetypes/x-office-spreadsheet.png</file>
|
||||
<file alias="16x16/folder-remote.png">themes/tango/16x16/places/folder-remote.png</file>
|
||||
<file alias="16x16/folder-saved-search.png">themes/tango/16x16/places/folder-saved-search.png</file>
|
||||
<file alias="16x16/folder.png">themes/tango/16x16/places/folder.png</file>
|
||||
<file alias="16x16/network-server.png">themes/tango/16x16/places/network-server.png</file>
|
||||
<file alias="16x16/network-workgroup.png">themes/tango/16x16/places/network-workgroup.png</file>
|
||||
<file alias="16x16/start-here.png">themes/tango/16x16/places/start-here.png</file>
|
||||
<file alias="16x16/user-desktop.png">themes/tango/16x16/places/user-desktop.png</file>
|
||||
<file alias="16x16/user-home.png">themes/tango/16x16/places/user-home.png</file>
|
||||
<file alias="16x16/user-trash.png">themes/tango/16x16/places/user-trash.png</file>
|
||||
<file alias="16x16/audio-volume-high.png">themes/tango/16x16/status/audio-volume-high.png</file>
|
||||
<file alias="16x16/audio-volume-low.png">themes/tango/16x16/status/audio-volume-low.png</file>
|
||||
<file alias="16x16/audio-volume-medium.png">themes/tango/16x16/status/audio-volume-medium.png</file>
|
||||
<file alias="16x16/audio-volume-muted.png">themes/tango/16x16/status/audio-volume-muted.png</file>
|
||||
<file alias="16x16/battery-caution.png">themes/tango/16x16/status/battery-caution.png</file>
|
||||
<file alias="16x16/dialog-error.png">themes/tango/16x16/status/dialog-error.png</file>
|
||||
<file alias="16x16/dialog-information.png">themes/tango/16x16/status/dialog-information.png</file>
|
||||
<file alias="16x16/dialog-warning.png">themes/tango/16x16/status/dialog-warning.png</file>
|
||||
<file alias="16x16/folder-drag-accept.png">themes/tango/16x16/status/folder-drag-accept.png</file>
|
||||
<file alias="16x16/folder-open.png">themes/tango/16x16/status/folder-open.png</file>
|
||||
<file alias="16x16/folder-visiting.png">themes/tango/16x16/status/folder-visiting.png</file>
|
||||
<file alias="16x16/image-loading.png">themes/tango/16x16/status/image-loading.png</file>
|
||||
<file alias="16x16/image-missing.png">themes/tango/16x16/status/image-missing.png</file>
|
||||
<file alias="16x16/mail-attachment.png">themes/tango/16x16/status/mail-attachment.png</file>
|
||||
<file alias="16x16/network-error.png">themes/tango/16x16/status/network-error.png</file>
|
||||
<file alias="16x16/network-idle.png">themes/tango/16x16/status/network-idle.png</file>
|
||||
<file alias="16x16/network-offline.png">themes/tango/16x16/status/network-offline.png</file>
|
||||
<file alias="16x16/network-receive.png">themes/tango/16x16/status/network-receive.png</file>
|
||||
<file alias="16x16/network-transmit-receive.png">themes/tango/16x16/status/network-transmit-receive.png</file>
|
||||
<file alias="16x16/network-transmit.png">themes/tango/16x16/status/network-transmit.png</file>
|
||||
<file alias="16x16/network-wireless-encrypted.png">themes/tango/16x16/status/network-wireless-encrypted.png</file>
|
||||
<file alias="16x16/printer-error.png">themes/tango/16x16/status/printer-error.png</file>
|
||||
<file alias="16x16/software-update-available.png">themes/tango/16x16/status/software-update-available.png</file>
|
||||
<file alias="16x16/software-update-urgent.png">themes/tango/16x16/status/software-update-urgent.png</file>
|
||||
<file alias="16x16/user-trash-full.png">themes/tango/16x16/status/user-trash-full.png</file>
|
||||
<file alias="16x16/weather-clear-night.png">themes/tango/16x16/status/weather-clear-night.png</file>
|
||||
<file alias="16x16/weather-clear.png">themes/tango/16x16/status/weather-clear.png</file>
|
||||
<file alias="16x16/weather-few-clouds-night.png">themes/tango/16x16/status/weather-few-clouds-night.png</file>
|
||||
<file alias="16x16/weather-few-clouds.png">themes/tango/16x16/status/weather-few-clouds.png</file>
|
||||
<file alias="16x16/weather-overcast.png">themes/tango/16x16/status/weather-overcast.png</file>
|
||||
<file alias="16x16/weather-severe-alert.png">themes/tango/16x16/status/weather-severe-alert.png</file>
|
||||
<file alias="16x16/weather-showers-scattered.png">themes/tango/16x16/status/weather-showers-scattered.png</file>
|
||||
<file alias="16x16/weather-showers.png">themes/tango/16x16/status/weather-showers.png</file>
|
||||
<file alias="16x16/weather-snow.png">themes/tango/16x16/status/weather-snow.png</file>
|
||||
<file alias="16x16/weather-storm.png">themes/tango/16x16/status/weather-storm.png</file>
|
||||
<file alias="22x22/address-book-new.png">themes/tango/22x22/actions/address-book-new.png</file>
|
||||
<file alias="22x22/appointment-new.png">themes/tango/22x22/actions/appointment-new.png</file>
|
||||
<file alias="22x22/bookmark-new.png">themes/tango/22x22/actions/bookmark-new.png</file>
|
||||
<file alias="22x22/contact-new.png">themes/tango/22x22/actions/contact-new.png</file>
|
||||
<file alias="22x22/document-new.png">themes/tango/22x22/actions/document-new.png</file>
|
||||
<file alias="22x22/document-open.png">themes/tango/22x22/actions/document-open.png</file>
|
||||
<file alias="22x22/document-print-preview.png">themes/tango/22x22/actions/document-print-preview.png</file>
|
||||
<file alias="22x22/document-print.png">themes/tango/22x22/actions/document-print.png</file>
|
||||
<file alias="22x22/document-pdf.png">themes/tango/22x22/actions/document-pdf.png</file>
|
||||
<file alias="22x22/document-properties.png">themes/tango/22x22/actions/document-properties.png</file>
|
||||
<file alias="22x22/document-revert.png">themes/tango/22x22/actions/document-revert.png</file>
|
||||
<file alias="22x22/document-save-as.png">themes/tango/22x22/actions/document-save-as.png</file>
|
||||
<file alias="22x22/document-save.png">themes/tango/22x22/actions/document-save.png</file>
|
||||
<file alias="22x22/edit-clear.png">themes/tango/22x22/actions/edit-clear.png</file>
|
||||
<file alias="22x22/edit-copy.png">themes/tango/22x22/actions/edit-copy.png</file>
|
||||
<file alias="22x22/edit-cut.png">themes/tango/22x22/actions/edit-cut.png</file>
|
||||
<file alias="22x22/edit-delete.png">themes/tango/22x22/actions/edit-delete.png</file>
|
||||
<file alias="22x22/edit-find-replace.png">themes/tango/22x22/actions/edit-find-replace.png</file>
|
||||
<file alias="22x22/edit-find.png">themes/tango/22x22/actions/edit-find.png</file>
|
||||
<file alias="22x22/edit-paste.png">themes/tango/22x22/actions/edit-paste.png</file>
|
||||
<file alias="22x22/edit-redo.png">themes/tango/22x22/actions/edit-redo.png</file>
|
||||
<file alias="22x22/edit-select-all.png">themes/tango/22x22/actions/edit-select-all.png</file>
|
||||
<file alias="22x22/edit-undo.png">themes/tango/22x22/actions/edit-undo.png</file>
|
||||
<file alias="22x22/folder-new.png">themes/tango/22x22/actions/folder-new.png</file>
|
||||
<file alias="22x22/format-indent-less.png">themes/tango/22x22/actions/format-indent-less.png</file>
|
||||
<file alias="22x22/format-indent-more.png">themes/tango/22x22/actions/format-indent-more.png</file>
|
||||
<file alias="22x22/format-justify-center.png">themes/tango/22x22/actions/format-justify-center.png</file>
|
||||
<file alias="22x22/format-justify-fill.png">themes/tango/22x22/actions/format-justify-fill.png</file>
|
||||
<file alias="22x22/format-justify-left.png">themes/tango/22x22/actions/format-justify-left.png</file>
|
||||
<file alias="22x22/format-justify-right.png">themes/tango/22x22/actions/format-justify-right.png</file>
|
||||
<file alias="22x22/format-text-bold.png">themes/tango/22x22/actions/format-text-bold.png</file>
|
||||
<file alias="22x22/format-text-italic.png">themes/tango/22x22/actions/format-text-italic.png</file>
|
||||
<file alias="22x22/format-text-strikethrough.png">themes/tango/22x22/actions/format-text-strikethrough.png</file>
|
||||
<file alias="22x22/format-text-underline.png">themes/tango/22x22/actions/format-text-underline.png</file>
|
||||
<file alias="22x22/go-bottom.png">themes/tango/22x22/actions/go-bottom.png</file>
|
||||
<file alias="22x22/go-down.png">themes/tango/22x22/actions/go-down.png</file>
|
||||
<file alias="22x22/go-first.png">themes/tango/22x22/actions/go-first.png</file>
|
||||
<file alias="22x22/go-home.png">themes/tango/22x22/actions/go-home.png</file>
|
||||
<file alias="22x22/go-jump.png">themes/tango/22x22/actions/go-jump.png</file>
|
||||
<file alias="22x22/go-last.png">themes/tango/22x22/actions/go-last.png</file>
|
||||
<file alias="22x22/go-next.png">themes/tango/22x22/actions/go-next.png</file>
|
||||
<file alias="22x22/go-previous.png">themes/tango/22x22/actions/go-previous.png</file>
|
||||
<file alias="22x22/go-top.png">themes/tango/22x22/actions/go-top.png</file>
|
||||
<file alias="22x22/go-up.png">themes/tango/22x22/actions/go-up.png</file>
|
||||
<file alias="22x22/list-add.png">themes/tango/22x22/actions/list-add.png</file>
|
||||
<file alias="22x22/list-remove.png">themes/tango/22x22/actions/list-remove.png</file>
|
||||
<file alias="22x22/mail-forward.png">themes/tango/22x22/actions/mail-forward.png</file>
|
||||
<file alias="22x22/mail-mark-junk.png">themes/tango/22x22/actions/mail-mark-junk.png</file>
|
||||
<file alias="22x22/mail-mark-not-junk.png">themes/tango/22x22/actions/mail-mark-not-junk.png</file>
|
||||
<file alias="22x22/mail-message-new.png">themes/tango/22x22/actions/mail-message-new.png</file>
|
||||
<file alias="22x22/mail-reply-all.png">themes/tango/22x22/actions/mail-reply-all.png</file>
|
||||
<file alias="22x22/mail-reply-sender.png">themes/tango/22x22/actions/mail-reply-sender.png</file>
|
||||
<file alias="22x22/mail-send-receive.png">themes/tango/22x22/actions/mail-send-receive.png</file>
|
||||
<file alias="22x22/media-eject.png">themes/tango/22x22/actions/media-eject.png</file>
|
||||
<file alias="22x22/media-playback-pause.png">themes/tango/22x22/actions/media-playback-pause.png</file>
|
||||
<file alias="22x22/media-playback-start.png">themes/tango/22x22/actions/media-playback-start.png</file>
|
||||
<file alias="22x22/media-playback-stop.png">themes/tango/22x22/actions/media-playback-stop.png</file>
|
||||
<file alias="22x22/media-record.png">themes/tango/22x22/actions/media-record.png</file>
|
||||
<file alias="22x22/media-seek-backward.png">themes/tango/22x22/actions/media-seek-backward.png</file>
|
||||
<file alias="22x22/media-seek-forward.png">themes/tango/22x22/actions/media-seek-forward.png</file>
|
||||
<file alias="22x22/media-skip-backward.png">themes/tango/22x22/actions/media-skip-backward.png</file>
|
||||
<file alias="22x22/media-skip-forward.png">themes/tango/22x22/actions/media-skip-forward.png</file>
|
||||
<file alias="22x22/process-stop.png">themes/tango/22x22/actions/process-stop.png</file>
|
||||
<file alias="22x22/system-lock-screen.png">themes/tango/22x22/actions/system-lock-screen.png</file>
|
||||
<file alias="22x22/system-log-out.png">themes/tango/22x22/actions/system-log-out.png</file>
|
||||
<file alias="22x22/system-search.png">themes/tango/22x22/actions/system-search.png</file>
|
||||
<file alias="22x22/system-shutdown.png">themes/tango/22x22/actions/system-shutdown.png</file>
|
||||
<file alias="22x22/tab-new.png">themes/tango/22x22/actions/tab-new.png</file>
|
||||
<file alias="22x22/view-fullscreen.png">themes/tango/22x22/actions/view-fullscreen.png</file>
|
||||
<file alias="22x22/view-refresh.png">themes/tango/22x22/actions/view-refresh.png</file>
|
||||
<file alias="22x22/window-new.png">themes/tango/22x22/actions/window-new.png</file>
|
||||
<file alias="22x22/process-working.png">themes/tango/22x22/animations/process-working.png</file>
|
||||
<file alias="22x22/accessories-calculator.png">themes/tango/22x22/apps/accessories-calculator.png</file>
|
||||
<file alias="22x22/accessories-character-map.png">themes/tango/22x22/apps/accessories-character-map.png</file>
|
||||
<file alias="22x22/accessories-text-editor.png">themes/tango/22x22/apps/accessories-text-editor.png</file>
|
||||
<file alias="22x22/help-browser.png">themes/tango/22x22/apps/help-browser.png</file>
|
||||
<file alias="22x22/internet-group-chat.png">themes/tango/22x22/apps/internet-group-chat.png</file>
|
||||
<file alias="22x22/internet-mail.png">themes/tango/22x22/apps/internet-mail.png</file>
|
||||
<file alias="22x22/internet-news-reader.png">themes/tango/22x22/apps/internet-news-reader.png</file>
|
||||
<file alias="22x22/internet-web-browser.png">themes/tango/22x22/apps/internet-web-browser.png</file>
|
||||
<file alias="22x22/office-calendar.png">themes/tango/22x22/apps/office-calendar.png</file>
|
||||
<file alias="22x22/preferences-desktop-accessibility.png">themes/tango/22x22/apps/preferences-desktop-accessibility.png</file>
|
||||
<file alias="22x22/preferences-desktop-assistive-technology.png">themes/tango/22x22/apps/preferences-desktop-assistive-technology.png</file>
|
||||
<file alias="22x22/preferences-desktop-font.png">themes/tango/22x22/apps/preferences-desktop-font.png</file>
|
||||
<file alias="22x22/preferences-desktop-keyboard-shortcuts.png">themes/tango/22x22/apps/preferences-desktop-keyboard-shortcuts.png</file>
|
||||
<file alias="22x22/preferences-desktop-locale.png">themes/tango/22x22/apps/preferences-desktop-locale.png</file>
|
||||
<file alias="22x22/preferences-desktop-multimedia.png">themes/tango/22x22/apps/preferences-desktop-multimedia.png</file>
|
||||
<file alias="22x22/preferences-desktop-remote-desktop.png">themes/tango/22x22/apps/preferences-desktop-remote-desktop.png</file>
|
||||
<file alias="22x22/preferences-desktop-screensaver.png">themes/tango/22x22/apps/preferences-desktop-screensaver.png</file>
|
||||
<file alias="22x22/preferences-desktop-theme.png">themes/tango/22x22/apps/preferences-desktop-theme.png</file>
|
||||
<file alias="22x22/preferences-desktop-wallpaper.png">themes/tango/22x22/apps/preferences-desktop-wallpaper.png</file>
|
||||
<file alias="22x22/preferences-system-network-proxy.png">themes/tango/22x22/apps/preferences-system-network-proxy.png</file>
|
||||
<file alias="22x22/preferences-system-session.png">themes/tango/22x22/apps/preferences-system-session.png</file>
|
||||
<file alias="22x22/preferences-system-windows.png">themes/tango/22x22/apps/preferences-system-windows.png</file>
|
||||
<file alias="22x22/system-file-manager.png">themes/tango/22x22/apps/system-file-manager.png</file>
|
||||
<file alias="22x22/system-installer.png">themes/tango/22x22/apps/system-installer.png</file>
|
||||
<file alias="22x22/system-software-update.png">themes/tango/22x22/apps/system-software-update.png</file>
|
||||
<file alias="22x22/system-users.png">themes/tango/22x22/apps/system-users.png</file>
|
||||
<file alias="22x22/utilities-system-monitor.png">themes/tango/22x22/apps/utilities-system-monitor.png</file>
|
||||
<file alias="22x22/utilities-terminal.png">themes/tango/22x22/apps/utilities-terminal.png</file>
|
||||
<file alias="22x22/applications-accessories.png">themes/tango/22x22/categories/applications-accessories.png</file>
|
||||
<file alias="22x22/applications-development.png">themes/tango/22x22/categories/applications-development.png</file>
|
||||
<file alias="22x22/applications-games.png">themes/tango/22x22/categories/applications-games.png</file>
|
||||
<file alias="22x22/applications-graphics.png">themes/tango/22x22/categories/applications-graphics.png</file>
|
||||
<file alias="22x22/applications-internet.png">themes/tango/22x22/categories/applications-internet.png</file>
|
||||
<file alias="22x22/applications-multimedia.png">themes/tango/22x22/categories/applications-multimedia.png</file>
|
||||
<file alias="22x22/applications-office.png">themes/tango/22x22/categories/applications-office.png</file>
|
||||
<file alias="22x22/applications-other.png">themes/tango/22x22/categories/applications-other.png</file>
|
||||
<file alias="22x22/applications-system.png">themes/tango/22x22/categories/applications-system.png</file>
|
||||
<file alias="22x22/preferences-desktop-peripherals.png">themes/tango/22x22/categories/preferences-desktop-peripherals.png</file>
|
||||
<file alias="22x22/preferences-desktop.png">themes/tango/22x22/categories/preferences-desktop.png</file>
|
||||
<file alias="22x22/preferences-system.png">themes/tango/22x22/categories/preferences-system.png</file>
|
||||
<file alias="22x22/audio-card.png">themes/tango/22x22/devices/audio-card.png</file>
|
||||
<file alias="22x22/audio-input-microphone.png">themes/tango/22x22/devices/audio-input-microphone.png</file>
|
||||
<file alias="22x22/battery.png">themes/tango/22x22/devices/battery.png</file>
|
||||
<file alias="22x22/camera-photo.png">themes/tango/22x22/devices/camera-photo.png</file>
|
||||
<file alias="22x22/camera-video.png">themes/tango/22x22/devices/camera-video.png</file>
|
||||
<file alias="22x22/computer.png">themes/tango/22x22/devices/computer.png</file>
|
||||
<file alias="22x22/drive-harddisk.png">themes/tango/22x22/devices/drive-harddisk.png</file>
|
||||
<file alias="22x22/drive-optical.png">themes/tango/22x22/devices/drive-optical.png</file>
|
||||
<file alias="22x22/drive-removable-media.png">themes/tango/22x22/devices/drive-removable-media.png</file>
|
||||
<file alias="22x22/input-gaming.png">themes/tango/22x22/devices/input-gaming.png</file>
|
||||
<file alias="22x22/input-keyboard.png">themes/tango/22x22/devices/input-keyboard.png</file>
|
||||
<file alias="22x22/input-mouse.png">themes/tango/22x22/devices/input-mouse.png</file>
|
||||
<file alias="22x22/media-flash.png">themes/tango/22x22/devices/media-flash.png</file>
|
||||
<file alias="22x22/media-floppy.png">themes/tango/22x22/devices/media-floppy.png</file>
|
||||
<file alias="22x22/media-optical.png">themes/tango/22x22/devices/media-optical.png</file>
|
||||
<file alias="22x22/multimedia-player.png">themes/tango/22x22/devices/multimedia-player.png</file>
|
||||
<file alias="22x22/network-wired.png">themes/tango/22x22/devices/network-wired.png</file>
|
||||
<file alias="22x22/network-wireless.png">themes/tango/22x22/devices/network-wireless.png</file>
|
||||
<file alias="22x22/printer.png">themes/tango/22x22/devices/printer.png</file>
|
||||
<file alias="22x22/video-display.png">themes/tango/22x22/devices/video-display.png</file>
|
||||
<file alias="22x22/emblem-favorite.png">themes/tango/22x22/emblems/emblem-favorite.png</file>
|
||||
<file alias="22x22/emblem-important.png">themes/tango/22x22/emblems/emblem-important.png</file>
|
||||
<file alias="22x22/emblem-photos.png">themes/tango/22x22/emblems/emblem-photos.png</file>
|
||||
<file alias="22x22/emblem-readonly.png">themes/tango/22x22/emblems/emblem-readonly.png</file>
|
||||
<file alias="22x22/emblem-symbolic-link.png">themes/tango/22x22/emblems/emblem-symbolic-link.png</file>
|
||||
<file alias="22x22/emblem-system.png">themes/tango/22x22/emblems/emblem-system.png</file>
|
||||
<file alias="22x22/emblem-unreadable.png">themes/tango/22x22/emblems/emblem-unreadable.png</file>
|
||||
<file alias="22x22/face-angel.png">themes/tango/22x22/emotes/face-angel.png</file>
|
||||
<file alias="22x22/face-crying.png">themes/tango/22x22/emotes/face-crying.png</file>
|
||||
<file alias="22x22/face-devilish.png">themes/tango/22x22/emotes/face-devilish.png</file>
|
||||
<file alias="22x22/face-glasses.png">themes/tango/22x22/emotes/face-glasses.png</file>
|
||||
<file alias="22x22/face-grin.png">themes/tango/22x22/emotes/face-grin.png</file>
|
||||
<file alias="22x22/face-kiss.png">themes/tango/22x22/emotes/face-kiss.png</file>
|
||||
<file alias="22x22/face-monkey.png">themes/tango/22x22/emotes/face-monkey.png</file>
|
||||
<file alias="22x22/face-plain.png">themes/tango/22x22/emotes/face-plain.png</file>
|
||||
<file alias="22x22/face-sad.png">themes/tango/22x22/emotes/face-sad.png</file>
|
||||
<file alias="22x22/face-smile-big.png">themes/tango/22x22/emotes/face-smile-big.png</file>
|
||||
<file alias="22x22/face-smile.png">themes/tango/22x22/emotes/face-smile.png</file>
|
||||
<file alias="22x22/face-surprise.png">themes/tango/22x22/emotes/face-surprise.png</file>
|
||||
<file alias="22x22/face-wink.png">themes/tango/22x22/emotes/face-wink.png</file>
|
||||
<file alias="22x22/application-certificate.png">themes/tango/22x22/mimetypes/application-certificate.png</file>
|
||||
<file alias="22x22/application-x-executable.png">themes/tango/22x22/mimetypes/application-x-executable.png</file>
|
||||
<file alias="22x22/audio-x-generic.png">themes/tango/22x22/mimetypes/audio-x-generic.png</file>
|
||||
<file alias="22x22/font-x-generic.png">themes/tango/22x22/mimetypes/font-x-generic.png</file>
|
||||
<file alias="22x22/image-x-generic.png">themes/tango/22x22/mimetypes/image-x-generic.png</file>
|
||||
<file alias="22x22/package-x-generic.png">themes/tango/22x22/mimetypes/package-x-generic.png</file>
|
||||
<file alias="22x22/text-html.png">themes/tango/22x22/mimetypes/text-html.png</file>
|
||||
<file alias="22x22/text-x-generic-template.png">themes/tango/22x22/mimetypes/text-x-generic-template.png</file>
|
||||
<file alias="22x22/text-x-generic.png">themes/tango/22x22/mimetypes/text-x-generic.png</file>
|
||||
<file alias="22x22/text-x-script.png">themes/tango/22x22/mimetypes/text-x-script.png</file>
|
||||
<file alias="22x22/video-x-generic.png">themes/tango/22x22/mimetypes/video-x-generic.png</file>
|
||||
<file alias="22x22/x-office-address-book.png">themes/tango/22x22/mimetypes/x-office-address-book.png</file>
|
||||
<file alias="22x22/x-office-calendar.png">themes/tango/22x22/mimetypes/x-office-calendar.png</file>
|
||||
<file alias="22x22/x-office-document-template.png">themes/tango/22x22/mimetypes/x-office-document-template.png</file>
|
||||
<file alias="22x22/x-office-document.png">themes/tango/22x22/mimetypes/x-office-document.png</file>
|
||||
<file alias="22x22/x-office-drawing-template.png">themes/tango/22x22/mimetypes/x-office-drawing-template.png</file>
|
||||
<file alias="22x22/x-office-drawing.png">themes/tango/22x22/mimetypes/x-office-drawing.png</file>
|
||||
<file alias="22x22/x-office-presentation-template.png">themes/tango/22x22/mimetypes/x-office-presentation-template.png</file>
|
||||
<file alias="22x22/x-office-presentation.png">themes/tango/22x22/mimetypes/x-office-presentation.png</file>
|
||||
<file alias="22x22/x-office-spreadsheet-template.png">themes/tango/22x22/mimetypes/x-office-spreadsheet-template.png</file>
|
||||
<file alias="22x22/x-office-spreadsheet.png">themes/tango/22x22/mimetypes/x-office-spreadsheet.png</file>
|
||||
<file alias="22x22/folder-remote.png">themes/tango/22x22/places/folder-remote.png</file>
|
||||
<file alias="22x22/folder-saved-search.png">themes/tango/22x22/places/folder-saved-search.png</file>
|
||||
<file alias="22x22/folder.png">themes/tango/22x22/places/folder.png</file>
|
||||
<file alias="22x22/network-server.png">themes/tango/22x22/places/network-server.png</file>
|
||||
<file alias="22x22/network-workgroup.png">themes/tango/22x22/places/network-workgroup.png</file>
|
||||
<file alias="22x22/start-here.png">themes/tango/22x22/places/start-here.png</file>
|
||||
<file alias="22x22/user-desktop.png">themes/tango/22x22/places/user-desktop.png</file>
|
||||
<file alias="22x22/user-home.png">themes/tango/22x22/places/user-home.png</file>
|
||||
<file alias="22x22/user-trash.png">themes/tango/22x22/places/user-trash.png</file>
|
||||
<file alias="22x22/audio-volume-high.png">themes/tango/22x22/status/audio-volume-high.png</file>
|
||||
<file alias="22x22/audio-volume-low.png">themes/tango/22x22/status/audio-volume-low.png</file>
|
||||
<file alias="22x22/audio-volume-medium.png">themes/tango/22x22/status/audio-volume-medium.png</file>
|
||||
<file alias="22x22/audio-volume-muted.png">themes/tango/22x22/status/audio-volume-muted.png</file>
|
||||
<file alias="22x22/battery-caution.png">themes/tango/22x22/status/battery-caution.png</file>
|
||||
<file alias="22x22/dialog-error.png">themes/tango/22x22/status/dialog-error.png</file>
|
||||
<file alias="22x22/dialog-information.png">themes/tango/22x22/status/dialog-information.png</file>
|
||||
<file alias="22x22/dialog-warning.png">themes/tango/22x22/status/dialog-warning.png</file>
|
||||
<file alias="22x22/folder-drag-accept.png">themes/tango/22x22/status/folder-drag-accept.png</file>
|
||||
<file alias="22x22/folder-open.png">themes/tango/22x22/status/folder-open.png</file>
|
||||
<file alias="22x22/folder-visiting.png">themes/tango/22x22/status/folder-visiting.png</file>
|
||||
<file alias="22x22/image-loading.png">themes/tango/22x22/status/image-loading.png</file>
|
||||
<file alias="22x22/image-missing.png">themes/tango/22x22/status/image-missing.png</file>
|
||||
<file alias="22x22/mail-attachment.png">themes/tango/22x22/status/mail-attachment.png</file>
|
||||
<file alias="22x22/network-error.png">themes/tango/22x22/status/network-error.png</file>
|
||||
<file alias="22x22/network-idle.png">themes/tango/22x22/status/network-idle.png</file>
|
||||
<file alias="22x22/network-offline.png">themes/tango/22x22/status/network-offline.png</file>
|
||||
<file alias="22x22/network-receive.png">themes/tango/22x22/status/network-receive.png</file>
|
||||
<file alias="22x22/network-transmit-receive.png">themes/tango/22x22/status/network-transmit-receive.png</file>
|
||||
<file alias="22x22/network-transmit.png">themes/tango/22x22/status/network-transmit.png</file>
|
||||
<file alias="22x22/network-wireless-encrypted.png">themes/tango/22x22/status/network-wireless-encrypted.png</file>
|
||||
<file alias="22x22/printer-error.png">themes/tango/22x22/status/printer-error.png</file>
|
||||
<file alias="22x22/software-update-available.png">themes/tango/22x22/status/software-update-available.png</file>
|
||||
<file alias="22x22/software-update-urgent.png">themes/tango/22x22/status/software-update-urgent.png</file>
|
||||
<file alias="22x22/user-trash-full.png">themes/tango/22x22/status/user-trash-full.png</file>
|
||||
<file alias="22x22/weather-clear-night.png">themes/tango/22x22/status/weather-clear-night.png</file>
|
||||
<file alias="22x22/weather-clear.png">themes/tango/22x22/status/weather-clear.png</file>
|
||||
<file alias="22x22/weather-few-clouds-night.png">themes/tango/22x22/status/weather-few-clouds-night.png</file>
|
||||
<file alias="22x22/weather-few-clouds.png">themes/tango/22x22/status/weather-few-clouds.png</file>
|
||||
<file alias="22x22/weather-overcast.png">themes/tango/22x22/status/weather-overcast.png</file>
|
||||
<file alias="22x22/weather-severe-alert.png">themes/tango/22x22/status/weather-severe-alert.png</file>
|
||||
<file alias="22x22/weather-showers-scattered.png">themes/tango/22x22/status/weather-showers-scattered.png</file>
|
||||
<file alias="22x22/weather-showers.png">themes/tango/22x22/status/weather-showers.png</file>
|
||||
<file alias="22x22/weather-snow.png">themes/tango/22x22/status/weather-snow.png</file>
|
||||
<file alias="22x22/weather-storm.png">themes/tango/22x22/status/weather-storm.png</file>
|
||||
<file alias="32x32/address-book-new.png">themes/tango/32x32/actions/address-book-new.png</file>
|
||||
<file alias="32x32/appointment-new.png">themes/tango/32x32/actions/appointment-new.png</file>
|
||||
<file alias="32x32/bookmark-new.png">themes/tango/32x32/actions/bookmark-new.png</file>
|
||||
<file alias="32x32/contact-new.png">themes/tango/32x32/actions/contact-new.png</file>
|
||||
<file alias="32x32/document-new.png">themes/tango/32x32/actions/document-new.png</file>
|
||||
<file alias="32x32/document-open.png">themes/tango/32x32/actions/document-open.png</file>
|
||||
<file alias="32x32/document-print-preview.png">themes/tango/32x32/actions/document-print-preview.png</file>
|
||||
<file alias="32x32/document-print.png">themes/tango/32x32/actions/document-print.png</file>
|
||||
<file alias="32x32/document-pdf.png">themes/tango/32x32/actions/document-pdf.png</file>
|
||||
<file alias="32x32/document-properties.png">themes/tango/32x32/actions/document-properties.png</file>
|
||||
<file alias="32x32/document-revert.png">themes/tango/32x32/actions/document-revert.png</file>
|
||||
<file alias="32x32/document-save-as.png">themes/tango/32x32/actions/document-save-as.png</file>
|
||||
<file alias="32x32/document-save.png">themes/tango/32x32/actions/document-save.png</file>
|
||||
<file alias="32x32/edit-clear.png">themes/tango/32x32/actions/edit-clear.png</file>
|
||||
<file alias="32x32/edit-copy.png">themes/tango/32x32/actions/edit-copy.png</file>
|
||||
<file alias="32x32/edit-cut.png">themes/tango/32x32/actions/edit-cut.png</file>
|
||||
<file alias="32x32/edit-delete.png">themes/tango/32x32/actions/edit-delete.png</file>
|
||||
<file alias="32x32/edit-find-replace.png">themes/tango/32x32/actions/edit-find-replace.png</file>
|
||||
<file alias="32x32/edit-find.png">themes/tango/32x32/actions/edit-find.png</file>
|
||||
<file alias="32x32/edit-paste.png">themes/tango/32x32/actions/edit-paste.png</file>
|
||||
<file alias="32x32/edit-redo.png">themes/tango/32x32/actions/edit-redo.png</file>
|
||||
<file alias="32x32/edit-select-all.png">themes/tango/32x32/actions/edit-select-all.png</file>
|
||||
<file alias="32x32/edit-undo.png">themes/tango/32x32/actions/edit-undo.png</file>
|
||||
<file alias="32x32/folder-new.png">themes/tango/32x32/actions/folder-new.png</file>
|
||||
<file alias="32x32/format-indent-less.png">themes/tango/32x32/actions/format-indent-less.png</file>
|
||||
<file alias="32x32/format-indent-more.png">themes/tango/32x32/actions/format-indent-more.png</file>
|
||||
<file alias="32x32/format-justify-center.png">themes/tango/32x32/actions/format-justify-center.png</file>
|
||||
<file alias="32x32/format-justify-fill.png">themes/tango/32x32/actions/format-justify-fill.png</file>
|
||||
<file alias="32x32/format-justify-left.png">themes/tango/32x32/actions/format-justify-left.png</file>
|
||||
<file alias="32x32/format-justify-right.png">themes/tango/32x32/actions/format-justify-right.png</file>
|
||||
<file alias="32x32/format-text-bold.png">themes/tango/32x32/actions/format-text-bold.png</file>
|
||||
<file alias="32x32/format-text-italic.png">themes/tango/32x32/actions/format-text-italic.png</file>
|
||||
<file alias="32x32/format-text-strikethrough.png">themes/tango/32x32/actions/format-text-strikethrough.png</file>
|
||||
<file alias="32x32/format-text-underline.png">themes/tango/32x32/actions/format-text-underline.png</file>
|
||||
<file alias="32x32/go-bottom.png">themes/tango/32x32/actions/go-bottom.png</file>
|
||||
<file alias="32x32/go-down.png">themes/tango/32x32/actions/go-down.png</file>
|
||||
<file alias="32x32/go-first.png">themes/tango/32x32/actions/go-first.png</file>
|
||||
<file alias="32x32/go-home.png">themes/tango/32x32/actions/go-home.png</file>
|
||||
<file alias="32x32/go-jump.png">themes/tango/32x32/actions/go-jump.png</file>
|
||||
<file alias="32x32/go-last.png">themes/tango/32x32/actions/go-last.png</file>
|
||||
<file alias="32x32/go-next.png">themes/tango/32x32/actions/go-next.png</file>
|
||||
<file alias="32x32/go-previous.png">themes/tango/32x32/actions/go-previous.png</file>
|
||||
<file alias="32x32/go-top.png">themes/tango/32x32/actions/go-top.png</file>
|
||||
<file alias="32x32/go-up.png">themes/tango/32x32/actions/go-up.png</file>
|
||||
<file alias="32x32/list-add.png">themes/tango/32x32/actions/list-add.png</file>
|
||||
<file alias="32x32/list-remove.png">themes/tango/32x32/actions/list-remove.png</file>
|
||||
<file alias="32x32/mail-forward.png">themes/tango/32x32/actions/mail-forward.png</file>
|
||||
<file alias="32x32/mail-mark-junk.png">themes/tango/32x32/actions/mail-mark-junk.png</file>
|
||||
<file alias="32x32/mail-mark-not-junk.png">themes/tango/32x32/actions/mail-mark-not-junk.png</file>
|
||||
<file alias="32x32/mail-message-new.png">themes/tango/32x32/actions/mail-message-new.png</file>
|
||||
<file alias="32x32/mail-reply-all.png">themes/tango/32x32/actions/mail-reply-all.png</file>
|
||||
<file alias="32x32/mail-reply-sender.png">themes/tango/32x32/actions/mail-reply-sender.png</file>
|
||||
<file alias="32x32/mail-send-receive.png">themes/tango/32x32/actions/mail-send-receive.png</file>
|
||||
<file alias="32x32/media-eject.png">themes/tango/32x32/actions/media-eject.png</file>
|
||||
<file alias="32x32/media-playback-pause.png">themes/tango/32x32/actions/media-playback-pause.png</file>
|
||||
<file alias="32x32/media-playback-start.png">themes/tango/32x32/actions/media-playback-start.png</file>
|
||||
<file alias="32x32/media-playback-stop.png">themes/tango/32x32/actions/media-playback-stop.png</file>
|
||||
<file alias="32x32/media-record.png">themes/tango/32x32/actions/media-record.png</file>
|
||||
<file alias="32x32/media-seek-backward.png">themes/tango/32x32/actions/media-seek-backward.png</file>
|
||||
<file alias="32x32/media-seek-forward.png">themes/tango/32x32/actions/media-seek-forward.png</file>
|
||||
<file alias="32x32/media-skip-backward.png">themes/tango/32x32/actions/media-skip-backward.png</file>
|
||||
<file alias="32x32/media-skip-forward.png">themes/tango/32x32/actions/media-skip-forward.png</file>
|
||||
<file alias="32x32/process-stop.png">themes/tango/32x32/actions/process-stop.png</file>
|
||||
<file alias="32x32/system-lock-screen.png">themes/tango/32x32/actions/system-lock-screen.png</file>
|
||||
<file alias="32x32/system-log-out.png">themes/tango/32x32/actions/system-log-out.png</file>
|
||||
<file alias="32x32/system-search.png">themes/tango/32x32/actions/system-search.png</file>
|
||||
<file alias="32x32/system-shutdown.png">themes/tango/32x32/actions/system-shutdown.png</file>
|
||||
<file alias="32x32/tab-new.png">themes/tango/32x32/actions/tab-new.png</file>
|
||||
<file alias="32x32/view-fullscreen.png">themes/tango/32x32/actions/view-fullscreen.png</file>
|
||||
<file alias="32x32/view-refresh.png">themes/tango/32x32/actions/view-refresh.png</file>
|
||||
<file alias="32x32/window-new.png">themes/tango/32x32/actions/window-new.png</file>
|
||||
<file alias="32x32/process-working.png">themes/tango/32x32/animations/process-working.png</file>
|
||||
<file alias="32x32/accessories-calculator.png">themes/tango/32x32/apps/accessories-calculator.png</file>
|
||||
<file alias="32x32/accessories-character-map.png">themes/tango/32x32/apps/accessories-character-map.png</file>
|
||||
<file alias="32x32/accessories-text-editor.png">themes/tango/32x32/apps/accessories-text-editor.png</file>
|
||||
<file alias="32x32/help-browser.png">themes/tango/32x32/apps/help-browser.png</file>
|
||||
<file alias="32x32/internet-group-chat.png">themes/tango/32x32/apps/internet-group-chat.png</file>
|
||||
<file alias="32x32/internet-mail.png">themes/tango/32x32/apps/internet-mail.png</file>
|
||||
<file alias="32x32/internet-news-reader.png">themes/tango/32x32/apps/internet-news-reader.png</file>
|
||||
<file alias="32x32/internet-web-browser.png">themes/tango/32x32/apps/internet-web-browser.png</file>
|
||||
<file alias="32x32/office-calendar.png">themes/tango/32x32/apps/office-calendar.png</file>
|
||||
<file alias="32x32/preferences-desktop-accessibility.png">themes/tango/32x32/apps/preferences-desktop-accessibility.png</file>
|
||||
<file alias="32x32/preferences-desktop-assistive-technology.png">themes/tango/32x32/apps/preferences-desktop-assistive-technology.png</file>
|
||||
<file alias="32x32/preferences-desktop-font.png">themes/tango/32x32/apps/preferences-desktop-font.png</file>
|
||||
<file alias="32x32/preferences-desktop-keyboard-shortcuts.png">themes/tango/32x32/apps/preferences-desktop-keyboard-shortcuts.png</file>
|
||||
<file alias="32x32/preferences-desktop-locale.png">themes/tango/32x32/apps/preferences-desktop-locale.png</file>
|
||||
<file alias="32x32/preferences-desktop-multimedia.png">themes/tango/32x32/apps/preferences-desktop-multimedia.png</file>
|
||||
<file alias="32x32/preferences-desktop-remote-desktop.png">themes/tango/32x32/apps/preferences-desktop-remote-desktop.png</file>
|
||||
<file alias="32x32/preferences-desktop-screensaver.png">themes/tango/32x32/apps/preferences-desktop-screensaver.png</file>
|
||||
<file alias="32x32/preferences-desktop-theme.png">themes/tango/32x32/apps/preferences-desktop-theme.png</file>
|
||||
<file alias="32x32/preferences-desktop-wallpaper.png">themes/tango/32x32/apps/preferences-desktop-wallpaper.png</file>
|
||||
<file alias="32x32/preferences-system-network-proxy.png">themes/tango/32x32/apps/preferences-system-network-proxy.png</file>
|
||||
<file alias="32x32/preferences-system-session.png">themes/tango/32x32/apps/preferences-system-session.png</file>
|
||||
<file alias="32x32/preferences-system-windows.png">themes/tango/32x32/apps/preferences-system-windows.png</file>
|
||||
<file alias="32x32/system-file-manager.png">themes/tango/32x32/apps/system-file-manager.png</file>
|
||||
<file alias="32x32/system-installer.png">themes/tango/32x32/apps/system-installer.png</file>
|
||||
<file alias="32x32/system-software-update.png">themes/tango/32x32/apps/system-software-update.png</file>
|
||||
<file alias="32x32/system-users.png">themes/tango/32x32/apps/system-users.png</file>
|
||||
<file alias="32x32/utilities-system-monitor.png">themes/tango/32x32/apps/utilities-system-monitor.png</file>
|
||||
<file alias="32x32/utilities-terminal.png">themes/tango/32x32/apps/utilities-terminal.png</file>
|
||||
<file alias="32x32/applications-accessories.png">themes/tango/32x32/categories/applications-accessories.png</file>
|
||||
<file alias="32x32/applications-development.png">themes/tango/32x32/categories/applications-development.png</file>
|
||||
<file alias="32x32/applications-games.png">themes/tango/32x32/categories/applications-games.png</file>
|
||||
<file alias="32x32/applications-graphics.png">themes/tango/32x32/categories/applications-graphics.png</file>
|
||||
<file alias="32x32/applications-internet.png">themes/tango/32x32/categories/applications-internet.png</file>
|
||||
<file alias="32x32/applications-multimedia.png">themes/tango/32x32/categories/applications-multimedia.png</file>
|
||||
<file alias="32x32/applications-office.png">themes/tango/32x32/categories/applications-office.png</file>
|
||||
<file alias="32x32/applications-other.png">themes/tango/32x32/categories/applications-other.png</file>
|
||||
<file alias="32x32/applications-system.png">themes/tango/32x32/categories/applications-system.png</file>
|
||||
<file alias="32x32/preferences-desktop-peripherals.png">themes/tango/32x32/categories/preferences-desktop-peripherals.png</file>
|
||||
<file alias="32x32/preferences-desktop.png">themes/tango/32x32/categories/preferences-desktop.png</file>
|
||||
<file alias="32x32/preferences-system.png">themes/tango/32x32/categories/preferences-system.png</file>
|
||||
<file alias="32x32/audio-card.png">themes/tango/32x32/devices/audio-card.png</file>
|
||||
<file alias="32x32/audio-input-microphone.png">themes/tango/32x32/devices/audio-input-microphone.png</file>
|
||||
<file alias="32x32/battery.png">themes/tango/32x32/devices/battery.png</file>
|
||||
<file alias="32x32/camera-photo.png">themes/tango/32x32/devices/camera-photo.png</file>
|
||||
<file alias="32x32/camera-video.png">themes/tango/32x32/devices/camera-video.png</file>
|
||||
<file alias="32x32/computer.png">themes/tango/32x32/devices/computer.png</file>
|
||||
<file alias="32x32/drive-harddisk.png">themes/tango/32x32/devices/drive-harddisk.png</file>
|
||||
<file alias="32x32/drive-optical.png">themes/tango/32x32/devices/drive-optical.png</file>
|
||||
<file alias="32x32/drive-removable-media.png">themes/tango/32x32/devices/drive-removable-media.png</file>
|
||||
<file alias="32x32/input-gaming.png">themes/tango/32x32/devices/input-gaming.png</file>
|
||||
<file alias="32x32/input-keyboard.png">themes/tango/32x32/devices/input-keyboard.png</file>
|
||||
<file alias="32x32/input-mouse.png">themes/tango/32x32/devices/input-mouse.png</file>
|
||||
<file alias="32x32/media-flash.png">themes/tango/32x32/devices/media-flash.png</file>
|
||||
<file alias="32x32/media-floppy.png">themes/tango/32x32/devices/media-floppy.png</file>
|
||||
<file alias="32x32/media-optical.png">themes/tango/32x32/devices/media-optical.png</file>
|
||||
<file alias="32x32/multimedia-player.png">themes/tango/32x32/devices/multimedia-player.png</file>
|
||||
<file alias="32x32/network-wired.png">themes/tango/32x32/devices/network-wired.png</file>
|
||||
<file alias="32x32/network-wireless.png">themes/tango/32x32/devices/network-wireless.png</file>
|
||||
<file alias="32x32/printer.png">themes/tango/32x32/devices/printer.png</file>
|
||||
<file alias="32x32/video-display.png">themes/tango/32x32/devices/video-display.png</file>
|
||||
<file alias="32x32/emblem-favorite.png">themes/tango/32x32/emblems/emblem-favorite.png</file>
|
||||
<file alias="32x32/emblem-important.png">themes/tango/32x32/emblems/emblem-important.png</file>
|
||||
<file alias="32x32/emblem-photos.png">themes/tango/32x32/emblems/emblem-photos.png</file>
|
||||
<file alias="32x32/emblem-readonly.png">themes/tango/32x32/emblems/emblem-readonly.png</file>
|
||||
<file alias="32x32/emblem-symbolic-link.png">themes/tango/32x32/emblems/emblem-symbolic-link.png</file>
|
||||
<file alias="32x32/emblem-system.png">themes/tango/32x32/emblems/emblem-system.png</file>
|
||||
<file alias="32x32/emblem-unreadable.png">themes/tango/32x32/emblems/emblem-unreadable.png</file>
|
||||
<file alias="32x32/face-angel.png">themes/tango/32x32/emotes/face-angel.png</file>
|
||||
<file alias="32x32/face-crying.png">themes/tango/32x32/emotes/face-crying.png</file>
|
||||
<file alias="32x32/face-devilish.png">themes/tango/32x32/emotes/face-devilish.png</file>
|
||||
<file alias="32x32/face-glasses.png">themes/tango/32x32/emotes/face-glasses.png</file>
|
||||
<file alias="32x32/face-grin.png">themes/tango/32x32/emotes/face-grin.png</file>
|
||||
<file alias="32x32/face-kiss.png">themes/tango/32x32/emotes/face-kiss.png</file>
|
||||
<file alias="32x32/face-monkey.png">themes/tango/32x32/emotes/face-monkey.png</file>
|
||||
<file alias="32x32/face-plain.png">themes/tango/32x32/emotes/face-plain.png</file>
|
||||
<file alias="32x32/face-sad.png">themes/tango/32x32/emotes/face-sad.png</file>
|
||||
<file alias="32x32/face-smile-big.png">themes/tango/32x32/emotes/face-smile-big.png</file>
|
||||
<file alias="32x32/face-smile.png">themes/tango/32x32/emotes/face-smile.png</file>
|
||||
<file alias="32x32/face-surprise.png">themes/tango/32x32/emotes/face-surprise.png</file>
|
||||
<file alias="32x32/face-wink.png">themes/tango/32x32/emotes/face-wink.png</file>
|
||||
<file alias="32x32/application-certificate.png">themes/tango/32x32/mimetypes/application-certificate.png</file>
|
||||
<file alias="32x32/application-x-executable.png">themes/tango/32x32/mimetypes/application-x-executable.png</file>
|
||||
<file alias="32x32/audio-x-generic.png">themes/tango/32x32/mimetypes/audio-x-generic.png</file>
|
||||
<file alias="32x32/font-x-generic.png">themes/tango/32x32/mimetypes/font-x-generic.png</file>
|
||||
<file alias="32x32/image-x-generic.png">themes/tango/32x32/mimetypes/image-x-generic.png</file>
|
||||
<file alias="32x32/package-x-generic.png">themes/tango/32x32/mimetypes/package-x-generic.png</file>
|
||||
<file alias="32x32/text-html.png">themes/tango/32x32/mimetypes/text-html.png</file>
|
||||
<file alias="32x32/text-x-generic-template.png">themes/tango/32x32/mimetypes/text-x-generic-template.png</file>
|
||||
<file alias="32x32/text-x-generic.png">themes/tango/32x32/mimetypes/text-x-generic.png</file>
|
||||
<file alias="32x32/text-x-script.png">themes/tango/32x32/mimetypes/text-x-script.png</file>
|
||||
<file alias="32x32/video-x-generic.png">themes/tango/32x32/mimetypes/video-x-generic.png</file>
|
||||
<file alias="32x32/x-office-address-book.png">themes/tango/32x32/mimetypes/x-office-address-book.png</file>
|
||||
<file alias="32x32/x-office-calendar.png">themes/tango/32x32/mimetypes/x-office-calendar.png</file>
|
||||
<file alias="32x32/x-office-document-template.png">themes/tango/32x32/mimetypes/x-office-document-template.png</file>
|
||||
<file alias="32x32/x-office-document.png">themes/tango/32x32/mimetypes/x-office-document.png</file>
|
||||
<file alias="32x32/x-office-drawing-template.png">themes/tango/32x32/mimetypes/x-office-drawing-template.png</file>
|
||||
<file alias="32x32/x-office-drawing.png">themes/tango/32x32/mimetypes/x-office-drawing.png</file>
|
||||
<file alias="32x32/x-office-presentation-template.png">themes/tango/32x32/mimetypes/x-office-presentation-template.png</file>
|
||||
<file alias="32x32/x-office-presentation.png">themes/tango/32x32/mimetypes/x-office-presentation.png</file>
|
||||
<file alias="32x32/x-office-spreadsheet-template.png">themes/tango/32x32/mimetypes/x-office-spreadsheet-template.png</file>
|
||||
<file alias="32x32/x-office-spreadsheet.png">themes/tango/32x32/mimetypes/x-office-spreadsheet.png</file>
|
||||
<file alias="32x32/folder-remote.png">themes/tango/32x32/places/folder-remote.png</file>
|
||||
<file alias="32x32/folder-saved-search.png">themes/tango/32x32/places/folder-saved-search.png</file>
|
||||
<file alias="32x32/folder.png">themes/tango/32x32/places/folder.png</file>
|
||||
<file alias="32x32/network-server.png">themes/tango/32x32/places/network-server.png</file>
|
||||
<file alias="32x32/network-workgroup.png">themes/tango/32x32/places/network-workgroup.png</file>
|
||||
<file alias="32x32/start-here.png">themes/tango/32x32/places/start-here.png</file>
|
||||
<file alias="32x32/user-desktop.png">themes/tango/32x32/places/user-desktop.png</file>
|
||||
<file alias="32x32/user-home.png">themes/tango/32x32/places/user-home.png</file>
|
||||
<file alias="32x32/user-trash.png">themes/tango/32x32/places/user-trash.png</file>
|
||||
<file alias="32x32/audio-volume-high.png">themes/tango/32x32/status/audio-volume-high.png</file>
|
||||
<file alias="32x32/audio-volume-low.png">themes/tango/32x32/status/audio-volume-low.png</file>
|
||||
<file alias="32x32/audio-volume-medium.png">themes/tango/32x32/status/audio-volume-medium.png</file>
|
||||
<file alias="32x32/audio-volume-muted.png">themes/tango/32x32/status/audio-volume-muted.png</file>
|
||||
<file alias="32x32/battery-caution.png">themes/tango/32x32/status/battery-caution.png</file>
|
||||
<file alias="32x32/dialog-error.png">themes/tango/32x32/status/dialog-error.png</file>
|
||||
<file alias="32x32/dialog-information.png">themes/tango/32x32/status/dialog-information.png</file>
|
||||
<file alias="32x32/dialog-warning.png">themes/tango/32x32/status/dialog-warning.png</file>
|
||||
<file alias="32x32/folder-drag-accept.png">themes/tango/32x32/status/folder-drag-accept.png</file>
|
||||
<file alias="32x32/folder-open.png">themes/tango/32x32/status/folder-open.png</file>
|
||||
<file alias="32x32/folder-visiting.png">themes/tango/32x32/status/folder-visiting.png</file>
|
||||
<file alias="32x32/image-loading.png">themes/tango/32x32/status/image-loading.png</file>
|
||||
<file alias="32x32/image-missing.png">themes/tango/32x32/status/image-missing.png</file>
|
||||
<file alias="32x32/mail-attachment.png">themes/tango/32x32/status/mail-attachment.png</file>
|
||||
<file alias="32x32/network-error.png">themes/tango/32x32/status/network-error.png</file>
|
||||
<file alias="32x32/network-idle.png">themes/tango/32x32/status/network-idle.png</file>
|
||||
<file alias="32x32/network-offline.png">themes/tango/32x32/status/network-offline.png</file>
|
||||
<file alias="32x32/network-receive.png">themes/tango/32x32/status/network-receive.png</file>
|
||||
<file alias="32x32/network-transmit-receive.png">themes/tango/32x32/status/network-transmit-receive.png</file>
|
||||
<file alias="32x32/network-transmit.png">themes/tango/32x32/status/network-transmit.png</file>
|
||||
<file alias="32x32/network-wireless-encrypted.png">themes/tango/32x32/status/network-wireless-encrypted.png</file>
|
||||
<file alias="32x32/printer-error.png">themes/tango/32x32/status/printer-error.png</file>
|
||||
<file alias="32x32/software-update-available.png">themes/tango/32x32/status/software-update-available.png</file>
|
||||
<file alias="32x32/software-update-urgent.png">themes/tango/32x32/status/software-update-urgent.png</file>
|
||||
<file alias="32x32/user-trash-full.png">themes/tango/32x32/status/user-trash-full.png</file>
|
||||
<file alias="32x32/weather-clear-night.png">themes/tango/32x32/status/weather-clear-night.png</file>
|
||||
<file alias="32x32/weather-clear.png">themes/tango/32x32/status/weather-clear.png</file>
|
||||
<file alias="32x32/weather-few-clouds-night.png">themes/tango/32x32/status/weather-few-clouds-night.png</file>
|
||||
<file alias="32x32/weather-few-clouds.png">themes/tango/32x32/status/weather-few-clouds.png</file>
|
||||
<file alias="32x32/weather-overcast.png">themes/tango/32x32/status/weather-overcast.png</file>
|
||||
<file alias="32x32/weather-severe-alert.png">themes/tango/32x32/status/weather-severe-alert.png</file>
|
||||
<file alias="32x32/weather-showers-scattered.png">themes/tango/32x32/status/weather-showers-scattered.png</file>
|
||||
<file alias="32x32/weather-showers.png">themes/tango/32x32/status/weather-showers.png</file>
|
||||
<file alias="32x32/weather-snow.png">themes/tango/32x32/status/weather-snow.png</file>
|
||||
<file alias="32x32/weather-storm.png">themes/tango/32x32/status/weather-storm.png</file>
|
||||
<file alias="index.theme">themes/tango/index.theme</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
@@ -0,0 +1,8 @@
|
||||
<RCC>
|
||||
<qresource prefix="/icons">
|
||||
<file>images/splashEmpty.png</file>
|
||||
</qresource>
|
||||
<qresource prefix="/">
|
||||
<file>themes/tango/index.theme</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
Reference in New Issue
Block a user