void RemoteSelectionFrame::on_nameCombo_activated(QString selected) // ---------------------------------------------------------------------------- // Process the selection by the user of an item of the combo box // ---------------------------------------------------------------------------- { int index = nameCombo->currentIndex(); int kind = nameCombo->itemData(index).toInt(); switch (kind) { case CIK_None: populateNameComboAndSelect(""); break; case CIK_Name: populateNameComboAndSelect(selected); break; case CIK_AddNew: populateNameComboAndSelect(addNewRemote()); urlEdit->setFocus(); break; case CIK_Rename: populateNameComboAndSelect(renameRemote()); break; case CIK_Delete: repo->delRemote(prevSelected); populateNameComboAndSelect(""); break; } }
bool RemoteModel::setData(const QModelIndex &index, const QVariant &value, int role) { if (role != Qt::EditRole) return false; const QString name = remoteName(index.row()); const QString url = remoteUrl(index.row()); switch (index.column()) { case 0: if (name == value.toString()) return true; return renameRemote(name, value.toString()); case 1: if (url == value.toString()) return true; return updateUrl(name, value.toString()); default: return false; } }
void FtpSessionDialog::init(Bookmark *bookmark) { connect(watcher, SIGNAL(directoryChanged(const QString&)), this, SLOT(localDirectoryChanged(const QString&))); // GUI STUFF // left side controlsLayoutLeft = new QHBoxLayout(); cmdRefreshLeft = new QPushButton(tr("Refresh")); cmdRefreshLeft->setIcon(QIcon(":images/reload.png")); txtPathLeft = new QLineEdit(); controlsLayoutLeft->addWidget(txtPathLeft); controlsLayoutLeft->addWidget(cmdRefreshLeft); // right side controlsLayoutRight = new QHBoxLayout(); cmdRefreshRight = new QPushButton(tr("Refresh")); cmdRefreshRight->setIcon(QIcon(":images/reload.png")); txtPathRight = new QLineEdit(); controlsLayoutRight->addWidget(txtPathRight); controlsLayoutRight->addWidget(cmdRefreshRight); // folder splitter folderSplitter = new QSplitter(Qt::Horizontal); widgetSplitter = new QSplitter(Qt::Vertical); // left side with local dir model // TODO drop support on both sides localModel = new FileModel(this, bookmark); watcher->addPath(localModel->currentDir().absolutePath()); txtPathLeft->setText(localModel->currentDir().absolutePath()); connect(localModel, SIGNAL(modelReset()), this, SLOT(localModelReseted())); connect(txtPathLeft, SIGNAL(returnPressed()), this, SLOT(localPathTextChanged())); leftFolderList = new QTableView(); leftFolderList->setFocusPolicy(Qt::NoFocus); leftFolderList->verticalHeader()->hide(); leftFolderList->setShowGrid(false); leftFolderList->setContextMenuPolicy(Qt::CustomContextMenu); leftFolderList->setSelectionBehavior(QAbstractItemView::SelectRows); leftFolderList->setAcceptDrops(true); leftFolderList->setDragDropMode(QAbstractItemView::DragDrop); leftFolderList->setDropIndicatorShown(true); leftFolderList->setDragEnabled(true); leftFolderList->setModel(localModel); leftFolderList->horizontalHeader()->installEventFilter(this); connect(leftFolderList, SIGNAL(doubleClicked(const QModelIndex &)), this, SLOT(localViewDoubleClicked(const QModelIndex &))); connect(leftFolderList, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(leftListMenuRequested(const QPoint &))); remoteModel = new FtpModel(this, bookmark); txtPathRight->setText(remoteModel->currentDirectory()); connect(remoteModel, SIGNAL(connectionStateChanged(QString&)), this, SLOT(connectionStateChanged(QString&))); connect(remoteModel, SIGNAL(ftpErrorOccurred(QString&)), this, SLOT(connectionStateChanged(QString&))); connect(remoteModel, SIGNAL(modelReset()), this, SLOT(remoteModelReseted())); // FIXME implement connect(remoteModel, SIGNAL(queryUpload(int, QString&)), this, SLOT(queryFile(int, QString&))); // FIXME implement connect(remoteModel, SIGNAL(queryDownload(int, QString&)), this, SLOT(queryFile(int, QString&))); // FIXME implement connect(remoteModel, SIGNAL(transferStarted(int, int)), this, SLOT(transferStarted(int, int))); // FIXME implement connect(remoteModel, SIGNAL(transferProgress(int, qint64, qint64)), this, SLOT(updateProgress(int, qint64, qint64))); // FIXME implement connect(remoteModel, SIGNAL(transferFinished(int, bool)), this, SLOT(transferFinished(int))); rightFolderList = new QTableView(); rightFolderList->setModel(remoteModel); rightFolderList->verticalHeader()->hide(); rightFolderList->setFocusPolicy(Qt::NoFocus); rightFolderList->setShowGrid(false); rightFolderList->setAcceptDrops(true); rightFolderList->setContextMenuPolicy(Qt::CustomContextMenu); rightFolderList->setSelectionBehavior(QAbstractItemView::SelectRows); rightFolderList->setDragDropMode(QAbstractItemView::DragDrop); rightFolderList->setDropIndicatorShown(true); rightFolderList->setDragEnabled(true); rightFolderList->horizontalHeader()->installEventFilter(this); connect(rightFolderList, SIGNAL(doubleClicked(const QModelIndex &)), this, SLOT(remoteViewDoubleClicked(const QModelIndex &))); connect(rightFolderList, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(rightListMenuRequested(const QPoint &))); leftLayout = new QVBoxLayout(); leftLayout->addLayout(controlsLayoutLeft); leftLayout->addWidget(leftFolderList); left = new QWidget(this); left->setLayout(leftLayout); rightLayout = new QVBoxLayout(); rightLayout->addLayout(controlsLayoutRight); rightLayout->addWidget(rightFolderList); right = new QWidget(this); right->setLayout(rightLayout); folderSplitter->addWidget(left); folderSplitter->addWidget(right); progressTable = new QTableWidget(); QStringList progressHorizontalHeader; progressHorizontalHeader.append(tr("Name")); progressHorizontalHeader.append(tr("Progress")); // TODO set progress column width to max size progressTable->setColumnCount(progressHorizontalHeader.size()); progressTable->setHorizontalHeaderLabels(progressHorizontalHeader); logList = new QListWidget(); widgetSplitter->addWidget(folderSplitter); widgetSplitter->addWidget(progressTable); widgetSplitter->addWidget(logList); mainLayout = new QVBoxLayout(); mainLayout->addWidget(widgetSplitter); setLayout(mainLayout); // CONTEXT MENUS leftListContextMenu = new QMenu(this); // give parent control about memory leftCopyAction = leftListContextMenu->addAction(tr("Upload selected items")); connect(leftCopyAction, SIGNAL(triggered()), this, SLOT(upload())); leftDeleteAction = leftListContextMenu->addAction(tr("Delete selected items")); connect(leftDeleteAction, SIGNAL(triggered()), this, SLOT(deleteLocal())); leftMkdirAction = leftListContextMenu->addAction(tr("Create Directory")); connect(leftMkdirAction, SIGNAL(triggered()), this, SLOT(mkdirLocal())); leftRenameAction = leftListContextMenu->addAction(tr("Rename")); connect(leftRenameAction, SIGNAL(triggered()), this, SLOT(renameLocal())); // CONTEXT MENUS rightListContextMenu = new QMenu(this); // give parent control about memory rightCopyAction = rightListContextMenu->addAction(tr("Download selected items")); connect(rightCopyAction, SIGNAL(triggered()), this, SLOT(download())); rightDeleteAction = rightListContextMenu->addAction(tr("Delete selected items")); connect(rightDeleteAction, SIGNAL(triggered()), this, SLOT(deleteRemote())); rightMkdirAction = rightListContextMenu->addAction(tr("Create Directory")); connect(rightMkdirAction, SIGNAL(triggered()), this, SLOT(mkdirRemote())); rightRenameAction = rightListContextMenu->addAction(tr("Rename")); connect(rightRenameAction, SIGNAL(triggered()), this, SLOT(renameRemote())); resize(800, 600); }