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;
|
||||
}
|
||||
|
||||
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;
|
||||
QStringList mimeTypes() const;
|
||||
QMimeData* mimeData(const QModelIndexList& indexes) const;
|
||||
bool isFull() const;
|
||||
|
||||
protected:
|
||||
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()); }
|
||||
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]; }
|
||||
void addScreen(const Screen& newScreen);
|
||||
|
||||
private:
|
||||
ScreenList& m_Screens;
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "ScreenSettingsDialog.h"
|
||||
#include "ServerConfigDialog.h"
|
||||
#include "ServerConfig.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)
|
||||
|
|
@ -239,3 +243,21 @@ void ServerConfigDialog::on_m_pListActions_itemSelectionChanged()
|
|||
m_pButtonEditAction->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_pCheckBoxEnableClipboard_stateChanged(int state);
|
||||
void on_m_pButtonAddComputer_clicked();
|
||||
void onScreenRemoved();
|
||||
|
||||
protected:
|
||||
ServerConfig& serverConfig() { return m_ServerConfig; }
|
||||
|
|
|
|||
|
|
@ -36,8 +36,13 @@ void TrashScreenWidget::dragEnterEvent(QDragEnterEvent* event)
|
|||
void TrashScreenWidget::dropEvent(QDropEvent* event)
|
||||
{
|
||||
if (event->mimeData()->hasFormat(ScreenSetupModel::mimeType()))
|
||||
{
|
||||
event->acceptProposedAction();
|
||||
emit screenRemoved();
|
||||
}
|
||||
else
|
||||
{
|
||||
event->ignore();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -36,6 +36,10 @@ class TrashScreenWidget : public QLabel
|
|||
public:
|
||||
void dragEnterEvent(QDragEnterEvent* event);
|
||||
void dropEvent(QDropEvent* event);
|
||||
|
||||
signals:
|
||||
void screenRemoved();
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Reference in a new issue