ListViews::ListViews( QWidget *parent, const char *name ) : QSplitter( Qt::Horizontal, parent, name ) { lstFolders.setAutoDelete( TRUE ); folders = new QListView( this ); folders->header()->setClickEnabled( FALSE ); folders->addColumn( "Folder" ); initFolders(); setupFolders(); folders->setRootIsDecorated( TRUE ); setResizeMode( folders, QSplitter::KeepSize ); QSplitter *vsplitter = new QSplitter( Qt::Vertical, this ); messages = new QListView( vsplitter ); messages->addColumn( "Sender" ); messages->addColumn( "Subject" ); messages->addColumn( "Date" ); messages->setColumnAlignment( 1, Qt::AlignRight ); messages->setAllColumnsShowFocus( TRUE ); messages->setShowSortIndicator( TRUE ); menu = new QPopupMenu( messages ); for( int i = 1; i <= 10; i++ ) menu->insertItem( QString( "Context Item %1" ).arg( i ) ); connect(messages, SIGNAL( rightButtonPressed( QListViewItem *, const QPoint& , int ) ), this, SLOT( slotRMB( QListViewItem *, const QPoint &, int ) ) ); vsplitter->setResizeMode( messages, QSplitter::KeepSize ); message = new QLabel( vsplitter ); message->setAlignment( Qt::AlignTop ); message->setBackgroundMode( PaletteBase ); connect( folders, SIGNAL( selectionChanged( QListViewItem* ) ), this, SLOT( slotFolderChanged( QListViewItem* ) ) ); connect( messages, SIGNAL( selectionChanged() ), this, SLOT( slotMessageChanged() ) ); connect( messages, SIGNAL( currentChanged( QListViewItem * ) ), this, SLOT( slotMessageChanged() ) ); messages->setSelectionMode( QListView::Extended ); // some preparations folders->firstChild()->setOpen( TRUE ); folders->firstChild()->firstChild()->setOpen( TRUE ); folders->setCurrentItem( folders->firstChild()->firstChild()->firstChild() ); folders->setSelected( folders->firstChild()->firstChild()->firstChild(), TRUE ); messages->setSelected( messages->firstChild(), TRUE ); messages->setCurrentItem( messages->firstChild() ); message->setMargin( 5 ); QValueList<int> lst; lst.append( 170 ); setSizes( lst ); }
HgCommitDialog::HgCommitDialog(QWidget *parent): KDialog(parent, Qt::Dialog) { // dialog properties this->setCaption(i18nc("@title:window", "<application>Hg</application> Commit")); this->setButtons(KDialog::Ok | KDialog::Cancel); this->setDefaultButton(KDialog::Ok); this->setButtonText(KDialog::Ok, i18nc("@action:button", "Commit")); this->enableButtonOk(false); // since commit message is empty when loaded // To show diff between commit KTextEditor::Editor *editor = KTextEditor::EditorChooser::editor(); if (!editor) { KMessageBox::error(this, i18n("A KDE text-editor component could not be found;" "\nplease check your KDE installation.")); return; } m_fileDiffDoc = editor->createDocument(0); m_fileDiffView = qobject_cast<KTextEditor::View*>(m_fileDiffDoc->createView(this)); m_fileDiffDoc->setReadWrite(false); // Setup actions m_useCurrentBranch= new KAction(this); m_useCurrentBranch->setCheckable(true); m_useCurrentBranch->setText(i18nc("@action:inmenu", "Commit to current branch")); m_newBranch = new KAction(this); m_newBranch->setCheckable(true); m_newBranch->setText(i18nc("@action:inmenu", "Create new branch")); m_closeBranch = new KAction(this); m_closeBranch->setCheckable(true); m_closeBranch->setText(i18nc("@action:inmenu", "Close current branch")); m_branchMenu = new KMenu(this); m_branchMenu->addAction(m_useCurrentBranch); m_branchMenu->addAction(m_newBranch); m_branchMenu->addAction(m_closeBranch); QActionGroup *branchActionGroup = new QActionGroup(this); branchActionGroup->addAction(m_useCurrentBranch); branchActionGroup->addAction(m_newBranch); branchActionGroup->addAction(m_closeBranch); m_useCurrentBranch->setChecked(true); connect(branchActionGroup, SIGNAL(triggered(QAction *)), this, SLOT(slotBranchActions(QAction *))); ////////////// // Setup UI // ////////////// // Top bar of buttons QHBoxLayout *topBarLayout = new QHBoxLayout; m_copyMessageButton = new KPushButton(i18n("Copy Message")); m_branchButton = new KPushButton(i18n("Branch")); m_copyMessageMenu = new KMenu(this); createCopyMessageMenu(); topBarLayout->addWidget(new QLabel(getParentForLabel())); topBarLayout->addStretch(); topBarLayout->addWidget(m_branchButton); topBarLayout->addWidget(m_copyMessageButton); m_branchButton->setMenu(m_branchMenu); m_copyMessageButton->setMenu(m_copyMessageMenu); // the commit box itself QGroupBox *messageGroupBox = new QGroupBox; QVBoxLayout *commitLayout = new QVBoxLayout; m_commitMessage = new QPlainTextEdit; commitLayout->addWidget(m_commitMessage); messageGroupBox->setTitle(i18nc("@title:group", "Commit Message")); messageGroupBox->setLayout(commitLayout); // Show diff here QGroupBox *diffGroupBox = new QGroupBox; QVBoxLayout *diffLayout = new QVBoxLayout(diffGroupBox); diffLayout->addWidget(m_fileDiffView); diffGroupBox->setTitle(i18nc("@title:group", "Diff/Content")); diffGroupBox->setLayout(diffLayout); // Set up layout for Status, Commit and Diff boxes QGridLayout *bodyLayout = new QGridLayout; m_statusList = new HgStatusList; bodyLayout->addWidget(m_statusList, 0, 0, 0, 1); bodyLayout->addWidget(messageGroupBox, 0, 1); bodyLayout->addWidget(diffGroupBox, 1, 1); bodyLayout->setColumnStretch(0, 1); bodyLayout->setColumnStretch(1, 2); bodyLayout->setRowStretch(0, 1); bodyLayout->setRowStretch(1, 1); // Set up layout and container for main dialog QFrame *frame = new QFrame; QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->addLayout(topBarLayout); mainLayout->addLayout(bodyLayout); frame->setLayout(mainLayout); setMainWidget(frame); slotBranchActions(m_useCurrentBranch); slotInitDiffOutput(); // initialise with whole repo diff // Load saved settings FileViewHgPluginSettings *settings = FileViewHgPluginSettings::self(); this->setInitialSize(QSize(settings->commitDialogWidth(), settings->commitDialogHeight())); // connect(m_statusList, SIGNAL(itemSelectionChanged(const char, const QString &)), this, SLOT(slotItemSelectionChanged(const char, const QString &))); connect(m_commitMessage, SIGNAL(textChanged()), this, SLOT(slotMessageChanged())); connect(this, SIGNAL(finished()), this, SLOT(saveGeometry())); }