Exemplo n.º 1
0
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;
    }
}
Exemplo n.º 2
0
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;
    }
}
Exemplo n.º 3
0
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);
}