SYNERGY-799 Implement add computer button
This commit is contained in:
parent
5a8ec2356d
commit
d89657c0d9
6 changed files with 54 additions and 0 deletions
|
|
@ -141,3 +141,22 @@ bool ScreenSetupModel::dropMimeData(const QMimeData* data, Qt::DropAction action
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ScreenSetupModel::addScreen(const Screen& newScreen)
|
||||||
|
{
|
||||||
|
auto screenTest = std::find_if(m_Screens.begin(), m_Screens.end(),
|
||||||
|
[](const Screen& item) { return item.isNull(); });
|
||||||
|
|
||||||
|
if (screenTest != m_Screens.end())
|
||||||
|
{
|
||||||
|
(*screenTest) = newScreen;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ScreenSetupModel::isFull() const
|
||||||
|
{
|
||||||
|
auto emptyScreen = std::find_if(m_Screens.cbegin(), m_Screens.cend(),
|
||||||
|
[](const Screen& item) { return item.isNull(); });
|
||||||
|
|
||||||
|
return (emptyScreen == m_Screens.cend());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -51,6 +51,7 @@ class ScreenSetupModel : public QAbstractTableModel
|
||||||
Qt::ItemFlags flags(const QModelIndex& index) const;
|
Qt::ItemFlags flags(const QModelIndex& index) const;
|
||||||
QStringList mimeTypes() const;
|
QStringList mimeTypes() const;
|
||||||
QMimeData* mimeData(const QModelIndexList& indexes) const;
|
QMimeData* mimeData(const QModelIndexList& indexes) const;
|
||||||
|
bool isFull() const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
bool dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column, const QModelIndex& parent);
|
bool dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column, const QModelIndex& parent);
|
||||||
|
|
@ -58,6 +59,7 @@ class ScreenSetupModel : public QAbstractTableModel
|
||||||
Screen& screen(const QModelIndex& index) { return screen(index.column(), index.row()); }
|
Screen& screen(const QModelIndex& index) { return screen(index.column(), index.row()); }
|
||||||
const Screen& screen(int column, int row) const { return m_Screens[row * m_NumColumns + column]; }
|
const Screen& screen(int column, int row) const { return m_Screens[row * m_NumColumns + column]; }
|
||||||
Screen& screen(int column, int row) { return m_Screens[row * m_NumColumns + column]; }
|
Screen& screen(int column, int row) { return m_Screens[row * m_NumColumns + column]; }
|
||||||
|
void addScreen(const Screen& newScreen);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
ScreenList& m_Screens;
|
ScreenList& m_Screens;
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "ScreenSettingsDialog.h"
|
||||||
#include "ServerConfigDialog.h"
|
#include "ServerConfigDialog.h"
|
||||||
#include "ServerConfig.h"
|
#include "ServerConfig.h"
|
||||||
#include "HotkeyDialog.h"
|
#include "HotkeyDialog.h"
|
||||||
|
|
@ -79,6 +80,9 @@ ServerConfigDialog::ServerConfigDialog(QWidget* parent, ServerConfig& config) :
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m_pButtonAddComputer->setEnabled(!model().isFull());
|
||||||
|
connect(m_pTrashScreenWidget, SIGNAL(screenRemoved()), this, SLOT(onScreenRemoved()));
|
||||||
}
|
}
|
||||||
|
|
||||||
void ServerConfigDialog::showEvent(QShowEvent* event)
|
void ServerConfigDialog::showEvent(QShowEvent* event)
|
||||||
|
|
@ -239,3 +243,21 @@ void ServerConfigDialog::on_m_pListActions_itemSelectionChanged()
|
||||||
m_pButtonEditAction->setEnabled(!m_pListActions->selectedItems().isEmpty());
|
m_pButtonEditAction->setEnabled(!m_pListActions->selectedItems().isEmpty());
|
||||||
m_pButtonRemoveAction->setEnabled(!m_pListActions->selectedItems().isEmpty());
|
m_pButtonRemoveAction->setEnabled(!m_pListActions->selectedItems().isEmpty());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ServerConfigDialog::on_m_pButtonAddComputer_clicked()
|
||||||
|
{
|
||||||
|
Screen newScreen("");
|
||||||
|
|
||||||
|
ScreenSettingsDialog dlg(this, &newScreen, &model().m_Screens);
|
||||||
|
if (dlg.exec() == QDialog::Accepted)
|
||||||
|
{
|
||||||
|
model().addScreen(newScreen);
|
||||||
|
}
|
||||||
|
|
||||||
|
m_pButtonAddComputer->setEnabled(!model().isFull());
|
||||||
|
}
|
||||||
|
|
||||||
|
void ServerConfigDialog::onScreenRemoved()
|
||||||
|
{
|
||||||
|
m_pButtonAddComputer->setEnabled(true);
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -51,6 +51,8 @@ class ServerConfigDialog : public QDialog, public Ui::ServerConfigDialogBase
|
||||||
void on_m_pButtonRemoveAction_clicked();
|
void on_m_pButtonRemoveAction_clicked();
|
||||||
|
|
||||||
void on_m_pCheckBoxEnableClipboard_stateChanged(int state);
|
void on_m_pCheckBoxEnableClipboard_stateChanged(int state);
|
||||||
|
void on_m_pButtonAddComputer_clicked();
|
||||||
|
void onScreenRemoved();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
ServerConfig& serverConfig() { return m_ServerConfig; }
|
ServerConfig& serverConfig() { return m_ServerConfig; }
|
||||||
|
|
|
||||||
|
|
@ -36,8 +36,13 @@ void TrashScreenWidget::dragEnterEvent(QDragEnterEvent* event)
|
||||||
void TrashScreenWidget::dropEvent(QDropEvent* event)
|
void TrashScreenWidget::dropEvent(QDropEvent* event)
|
||||||
{
|
{
|
||||||
if (event->mimeData()->hasFormat(ScreenSetupModel::mimeType()))
|
if (event->mimeData()->hasFormat(ScreenSetupModel::mimeType()))
|
||||||
|
{
|
||||||
event->acceptProposedAction();
|
event->acceptProposedAction();
|
||||||
|
emit screenRemoved();
|
||||||
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
event->ignore();
|
event->ignore();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -36,6 +36,10 @@ class TrashScreenWidget : public QLabel
|
||||||
public:
|
public:
|
||||||
void dragEnterEvent(QDragEnterEvent* event);
|
void dragEnterEvent(QDragEnterEvent* event);
|
||||||
void dropEvent(QDropEvent* event);
|
void dropEvent(QDropEvent* event);
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void screenRemoved();
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue