mirror of
https://github.com/altlinux/admc.git
synced 2025-03-31 02:50:17 +03:00
commit
8d75716853
@ -798,12 +798,12 @@ void CentralWidget::update_description_bar() {
|
||||
console->set_description_bar_text(text);
|
||||
}
|
||||
|
||||
void CentralWidget::add_actions(QMenu *action_menu, QMenu *navigation_menu, QMenu *view_menu, QMenu *preferences_menu) {
|
||||
void CentralWidget::add_actions(QMenu *action_menu, QMenu *navigation_menu, QMenu *view_menu, QMenu *preferences_menu, QToolBar *toolbar) {
|
||||
console_actions->add_to_menu(action_menu);
|
||||
|
||||
action_menu->addSeparator();
|
||||
|
||||
console->add_actions(action_menu, navigation_menu, view_menu);
|
||||
console->add_actions(action_menu, navigation_menu, view_menu, toolbar);
|
||||
|
||||
view_menu->addSeparator();
|
||||
|
||||
|
@ -45,6 +45,7 @@ class ConsoleActions;
|
||||
class PolicyResultsWidget;
|
||||
template <typename T>
|
||||
class QList;
|
||||
class QToolBar;
|
||||
|
||||
enum ItemType {
|
||||
ItemType_Unassigned,
|
||||
@ -65,7 +66,7 @@ public:
|
||||
CentralWidget(AdInterface &ad);
|
||||
~CentralWidget();
|
||||
|
||||
void add_actions(QMenu *action_menu, QMenu *navigation_menu, QMenu *view_menu, QMenu *preferences_menu);
|
||||
void add_actions(QMenu *action_menu, QMenu *navigation_menu, QMenu *view_menu, QMenu *preferences_menu, QToolBar *toolbar);
|
||||
|
||||
signals:
|
||||
void context_menu(const QPoint pos);
|
||||
|
@ -38,6 +38,7 @@
|
||||
#include <QStackedWidget>
|
||||
#include <QTreeView>
|
||||
#include <QVBoxLayout>
|
||||
#include <QToolBar>
|
||||
|
||||
#define SPLITTER_STATE "SPLITTER_STATE"
|
||||
|
||||
@ -83,10 +84,17 @@ ConsoleWidget::ConsoleWidget(QWidget *parent)
|
||||
d->results_stacked_widget = new QStackedWidget();
|
||||
|
||||
d->properties_action = new QAction(tr("&Properties"), this);
|
||||
d->navigate_up_action = new QAction(tr("&Up one level"), this);
|
||||
d->navigate_back_action = new QAction(tr("&Back"), this);
|
||||
d->navigate_forward_action = new QAction(tr("&Forward"), this);
|
||||
d->navigate_up_action = new QAction(QIcon::fromTheme("go-up"), tr("&Up one level"), this);
|
||||
d->navigate_back_action = new QAction(QIcon::fromTheme("go-previous"), tr("&Back"), this);
|
||||
d->navigate_forward_action = new QAction(QIcon::fromTheme("go-next"), tr("&Forward"), this);
|
||||
// NOTE: this refresh action is for the action menu.
|
||||
// Refreshes selected object, if it can be refreshed.
|
||||
// Hidden if can't refresh.
|
||||
d->refresh_action = new QAction(tr("&Refresh"), this);
|
||||
// NOTE: this refresh action is for the toolbar.
|
||||
// Refreshes current scope item, if it can be refreshed.
|
||||
// Always visible.
|
||||
d->refresh_current_scope_action = new QAction(QIcon::fromTheme("view-refresh"), tr("&Refresh"), this);
|
||||
d->customize_columns_action = new QAction(tr("&Customize columns"), this);
|
||||
d->set_results_to_icons_action = new QAction(tr("&Icons"), this);
|
||||
d->set_results_to_list_action = new QAction(tr("&List"), this);
|
||||
@ -168,6 +176,9 @@ ConsoleWidget::ConsoleWidget(QWidget *parent)
|
||||
connect(
|
||||
d->refresh_action, &QAction::triggered,
|
||||
d, &ConsoleWidgetPrivate::refresh);
|
||||
connect(
|
||||
d->refresh_current_scope_action, &QAction::triggered,
|
||||
d, &ConsoleWidgetPrivate::refresh_current_scope);
|
||||
connect(
|
||||
d->customize_columns_action, &QAction::triggered,
|
||||
d, &ConsoleWidgetPrivate::customize_columns);
|
||||
@ -566,7 +577,8 @@ void ConsoleWidgetPrivate::update_actions() {
|
||||
const QModelIndex selected = selected_list[0];
|
||||
|
||||
const bool is_dynamic = selected.data(ConsoleRole_ScopeIsDynamic).toBool();
|
||||
if (is_dynamic) {
|
||||
const bool is_scope = selected.data(ConsoleRole_IsScope).toBool();
|
||||
if (is_scope && is_dynamic) {
|
||||
refresh_action->setVisible(true);
|
||||
}
|
||||
|
||||
@ -709,9 +721,23 @@ void ConsoleWidgetPrivate::on_focus_changed(QWidget *old, QWidget *now) {
|
||||
}
|
||||
|
||||
void ConsoleWidgetPrivate::refresh() {
|
||||
const QList<QModelIndex> selected = q->get_selected_items();
|
||||
|
||||
if (selected.size() == 1) {
|
||||
const QModelIndex index = selected[0];
|
||||
|
||||
q->refresh_scope(index);
|
||||
}
|
||||
}
|
||||
|
||||
void ConsoleWidgetPrivate::refresh_current_scope() {
|
||||
const QModelIndex current_scope = q->get_current_scope_item();
|
||||
|
||||
q->refresh_scope(current_scope);
|
||||
const bool is_dynamic = current_scope.data(ConsoleRole_ScopeIsDynamic).toBool();
|
||||
|
||||
if (is_dynamic) {
|
||||
q->refresh_scope(current_scope);
|
||||
}
|
||||
}
|
||||
|
||||
void ConsoleWidgetPrivate::customize_columns() {
|
||||
@ -851,7 +877,7 @@ void ConsoleWidgetPrivate::update_view_actions() {
|
||||
customize_columns_action->setVisible(results_view_exists);
|
||||
}
|
||||
|
||||
void ConsoleWidget::add_actions(QMenu *action_menu, QMenu *navigation_menu, QMenu *view_menu) {
|
||||
void ConsoleWidget::add_actions(QMenu *action_menu, QMenu *navigation_menu, QMenu *view_menu, QToolBar *toolbar) {
|
||||
// Action
|
||||
action_menu->addAction(d->refresh_action);
|
||||
action_menu->addSeparator();
|
||||
@ -891,6 +917,13 @@ void ConsoleWidget::add_actions(QMenu *action_menu, QMenu *navigation_menu, QMen
|
||||
view_menu->addSeparator();
|
||||
|
||||
view_menu->addAction(d->customize_columns_action);
|
||||
|
||||
// Toolbar
|
||||
toolbar->addAction(d->navigate_back_action);
|
||||
toolbar->addAction(d->navigate_forward_action);
|
||||
toolbar->addAction(d->navigate_up_action);
|
||||
toolbar->addSeparator();
|
||||
toolbar->addAction(d->refresh_current_scope_action);
|
||||
}
|
||||
|
||||
const ResultsDescription ConsoleWidgetPrivate::get_current_results() const {
|
||||
|
@ -49,6 +49,7 @@ class QStandardItem;
|
||||
class QMenu;
|
||||
class QAbstractItemView;
|
||||
class QStandardItemModel;
|
||||
class QToolBar;
|
||||
|
||||
enum ConsoleRolePublic {
|
||||
ConsoleRole_Fetching = Qt::UserRole + 17,
|
||||
@ -165,7 +166,7 @@ public:
|
||||
|
||||
bool item_was_fetched(const QModelIndex &index) const;
|
||||
|
||||
void add_actions(QMenu *action_menu, QMenu *navigation_menu, QMenu *view_menu);
|
||||
void add_actions(QMenu *action_menu, QMenu *navigation_menu, QMenu *view_menu, QToolBar *toolbar);
|
||||
|
||||
// These getters are only for showing/hiding these widgets
|
||||
QWidget *get_scope_view() const;
|
||||
|
@ -82,6 +82,7 @@ public:
|
||||
|
||||
QAction *properties_action;
|
||||
QAction *refresh_action;
|
||||
QAction *refresh_current_scope_action;
|
||||
|
||||
QAction *navigate_up_action;
|
||||
QAction *navigate_back_action;
|
||||
@ -113,6 +114,7 @@ public:
|
||||
void on_scope_items_about_to_be_removed(const QModelIndex &parent, int first, int last);
|
||||
void on_focus_changed(QWidget *old, QWidget *now);
|
||||
void refresh();
|
||||
void refresh_current_scope();
|
||||
void customize_columns();
|
||||
void navigate_up();
|
||||
void navigate_back();
|
||||
|
@ -37,15 +37,23 @@
|
||||
#include <QMenuBar>
|
||||
#include <QStatusBar>
|
||||
#include <QTextEdit>
|
||||
#include <QToolBar>
|
||||
|
||||
#define MESSAGE_LOG_OBJECT_NAME "MESSAGE_LOG_OBJECT_NAME"
|
||||
|
||||
MainWindow::MainWindow()
|
||||
: QMainWindow() {
|
||||
toolbar = new QToolBar(this);
|
||||
toolbar->setObjectName("main_window_toolbar");
|
||||
toolbar->setWindowTitle(tr("Toolbar"));
|
||||
addToolBar(toolbar);
|
||||
|
||||
setStatusBar(g_status()->status_bar());
|
||||
|
||||
connection_options_dialog = new ConnectionOptionsDialog(this);
|
||||
|
||||
manual_action = new QAction(QIcon::fromTheme("help-faq"), tr("&Manual"), this);
|
||||
|
||||
message_log_dock = new QDockWidget();
|
||||
message_log_dock->setWindowTitle(tr("Message Log"));
|
||||
message_log_dock->setWidget(g_status()->message_log());
|
||||
@ -103,7 +111,6 @@ void MainWindow::setup_menubar() {
|
||||
auto quit_action = new QAction(tr("&Quit"), this);
|
||||
quit_action->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_Q));
|
||||
|
||||
auto manual_action = new QAction(tr("&Manual"), this);
|
||||
auto about_action = new QAction(tr("&About ADMC"), this);
|
||||
|
||||
auto confirm_actions_action = settings_make_and_connect_action(SETTING_confirm_actions, tr("&Confirm actions"), this);
|
||||
@ -177,6 +184,7 @@ void MainWindow::setup_menubar() {
|
||||
preferences_menu->addMenu(language_menu);
|
||||
preferences_menu->addSeparator();
|
||||
preferences_menu->addAction(message_log_dock->toggleViewAction());
|
||||
preferences_menu->addAction(toolbar->toggleViewAction());
|
||||
|
||||
for (const auto language : language_list) {
|
||||
QAction *language_action = language_actions[language];
|
||||
@ -245,8 +253,10 @@ void MainWindow::connect_to_server() {
|
||||
auto central_widget = new CentralWidget(ad);
|
||||
setCentralWidget(central_widget);
|
||||
|
||||
central_widget->add_actions(action_menu, navigation_menu, view_menu, preferences_menu);
|
||||
central_widget->add_actions(action_menu, navigation_menu, view_menu, preferences_menu, toolbar);
|
||||
|
||||
toolbar->addAction(manual_action);
|
||||
|
||||
connect_action->setEnabled(false);
|
||||
}
|
||||
}
|
||||
|
@ -27,6 +27,7 @@ class QAction;
|
||||
class QDockWidget;
|
||||
class QMenu;
|
||||
class ConnectionOptionsDialog;
|
||||
class QToolBar;
|
||||
|
||||
class MainWindow final : public QMainWindow {
|
||||
Q_OBJECT
|
||||
@ -39,8 +40,10 @@ protected:
|
||||
|
||||
private:
|
||||
QAction *connect_action;
|
||||
QAction *manual_action;
|
||||
ConnectionOptionsDialog *connection_options_dialog;
|
||||
QDockWidget *message_log_dock;
|
||||
QToolBar *toolbar;
|
||||
|
||||
QMenu *action_menu;
|
||||
QMenu *navigation_menu;
|
||||
|
Loading…
x
Reference in New Issue
Block a user