static gboolean layout_changed (NemoDesktopManager *manager) { FETCH_PRIV (manager); gint n_monitors = 0; gint x_primary = 0; gboolean show_desktop_on_primary = FALSE; gboolean show_desktop_on_remaining = FALSE; priv->update_layout_idle_id = 0; close_all_windows (manager); gchar *pref = g_settings_get_string (nemo_desktop_preferences, NEMO_PREFERENCES_DESKTOP_LAYOUT); if (g_strcmp0 (pref, "") == 0) { g_settings_set_string (nemo_desktop_preferences, NEMO_PREFERENCES_DESKTOP_LAYOUT, DESKTOPS_DEFAULT); g_free (pref); layout_changed (manager); return G_SOURCE_REMOVE; } gchar **pref_split = g_strsplit (pref, "::", 2); if (g_strv_length (pref_split) != 2) { g_settings_set_string (nemo_desktop_preferences, NEMO_PREFERENCES_DESKTOP_LAYOUT, DESKTOPS_DEFAULT); g_free (pref); g_strfreev (pref_split); layout_changed (manager); return G_SOURCE_REMOVE; } n_monitors = get_n_monitors (manager); x_primary = 0; /* always */ show_desktop_on_primary = g_strcmp0 (pref_split[0], "true") == 0; show_desktop_on_remaining = g_strcmp0 (pref_split[1], "true") == 0; priv->desktop_on_primary_only = show_desktop_on_primary && !show_desktop_on_remaining; gint i = 0; gboolean primary_set = FALSE; for (i = 0; i < n_monitors; i++) { if (i == x_primary) { create_new_desktop_window (manager, i, show_desktop_on_primary, show_desktop_on_primary); primary_set = primary_set || show_desktop_on_primary; } else if (!nemo_desktop_utils_get_monitor_cloned (i, x_primary)) { gboolean set_layout_primary = !primary_set && !show_desktop_on_primary && show_desktop_on_remaining; create_new_desktop_window (manager, i, set_layout_primary, show_desktop_on_remaining); primary_set = primary_set || set_layout_primary; } } g_free (pref); g_strfreev (pref_split); return G_SOURCE_REMOVE; }
static void layout_changed (NemoDesktopManager *manager) { gint n_monitors = 0; gint x_primary = 0; gboolean show_desktop_on_primary = FALSE; gboolean show_desktop_on_remaining = FALSE; close_all_windows (manager); NemoApplication *app = NEMO_APPLICATION (g_application_get_default ()); if (!nemo_application_get_show_desktop (app)) { return; } gchar *pref = g_settings_get_string (nemo_desktop_preferences, NEMO_PREFERENCES_DESKTOP_LAYOUT); if (g_strcmp0 (pref, "") == 0) { g_settings_set_string (nemo_desktop_preferences, NEMO_PREFERENCES_DESKTOP_LAYOUT, DESKTOPS_DEFAULT); g_free (pref); layout_changed (manager); } gchar **pref_split = g_strsplit (pref, "::", 2); if (g_strv_length (pref_split) != 2) { g_settings_set_string (nemo_desktop_preferences, NEMO_PREFERENCES_DESKTOP_LAYOUT, DESKTOPS_DEFAULT); g_free (pref); g_strfreev (pref_split); layout_changed (manager); } n_monitors = gdk_screen_get_n_monitors (manager->screen); x_primary = gdk_screen_get_primary_monitor (manager->screen); show_desktop_on_primary = g_strcmp0 (pref_split[0], "true") == 0; show_desktop_on_remaining = g_strcmp0 (pref_split[1], "true") == 0; gint i = 0; gboolean primary_set = FALSE; for (i = 0; i < n_monitors; i++) { if (i == x_primary) { create_new_desktop_window (manager, i, show_desktop_on_primary, show_desktop_on_primary); primary_set = primary_set || show_desktop_on_primary; } else if (!nemo_desktop_utils_get_monitor_cloned (i, x_primary)) { gboolean set_layout_primary = !primary_set && !show_desktop_on_primary && show_desktop_on_remaining; create_new_desktop_window (manager, i, set_layout_primary, show_desktop_on_remaining); primary_set = primary_set || set_layout_primary; } } g_free (pref); g_strfreev (pref_split); }
static void on_run_state_changed (NemoDesktopManager *manager) { g_return_if_fail (NEMO_IS_DESKTOP_MANAGER (manager)); FETCH_PRIV (manager); RunState new_state; DEBUG ("New run state..."); /* If we're already running (showing icons,) there's no * change in behavior, we just keep showing. */ if (priv->current_run_state == RUN_STATE_RUNNING) { return; } new_state = get_run_state (manager); /* If our state is INIT, we're waiting for the proxy to * get picked up (cinnamon starting) and still within our * failsafe timeout, so we just return */ if (new_state == RUN_STATE_INIT) { priv->current_run_state = new_state; return; } /* If our state is STARTUP, RUNNING, or FAILSAFE, we can * cancel our failsafe timer. We've either gotten a proxy * owner, given up waiting, or are now running */ if (new_state > RUN_STATE_INIT) { if (priv->failsafe_timeout_id > 0) { g_source_remove (priv->failsafe_timeout_id); priv->failsafe_timeout_id = 0; } } /* RUNNING or FALLBACK is the final endpoint of the desktop startup * sequence. Either way we trigger the desktop to start and release * our hold on the GApplication (the windows created in layout_changed * will keep the application alive from here on out.) */ if (new_state == RUN_STATE_RUNNING || new_state == RUN_STATE_FALLBACK) { priv->current_run_state = new_state; layout_changed (manager); g_application_release (G_APPLICATION (nemo_application_get_singleton ())); } }
static void nemo_desktop_manager_constructed (GObject *object) { G_OBJECT_CLASS (nemo_desktop_manager_parent_class)->constructed (object); NemoDesktopManager *manager = NEMO_DESKTOP_MANAGER (object); manager->screen = gdk_screen_get_default (); manager->update_layout_idle_id = 0; manager->show_desktop_changed_id = g_signal_connect_swapped (nemo_desktop_preferences, "changed::" NEMO_PREFERENCES_SHOW_DESKTOP, G_CALLBACK (queue_update_layout), manager); manager->desktop_layout_changed_id = g_signal_connect_swapped (nemo_desktop_preferences, "changed::" NEMO_PREFERENCES_DESKTOP_LAYOUT, G_CALLBACK (queue_update_layout), manager); manager->size_changed_id = g_signal_connect_swapped (manager->screen, "size_changed", G_CALLBACK (queue_update_layout), manager); manager->use_grid_changed_id = g_signal_connect_swapped (nemo_desktop_preferences, "changed::" NEMO_PREFERENCES_USE_DESKTOP_GRID, G_CALLBACK (queue_update_layout), manager); /* Monitor the preference to have the desktop */ /* point to the Unix home folder */ manager->home_dir_changed_id = g_signal_connect_swapped (nemo_preferences, "changed::" NEMO_PREFERENCES_DESKTOP_IS_HOME_DIR, G_CALLBACK (queue_update_layout), manager); manager->orphaned_icon_handling_id = g_signal_connect_swapped (nemo_preferences, "changed::" NEMO_PREFERENCES_SHOW_ORPHANED_DESKTOP_ICONS, G_CALLBACK (queue_update_layout), manager); layout_changed (manager); }
/******************************************************************************* initScene *******************************************************************************/ void SettingsScene::initScene() { // create pages m_pages[SETTINGS::GENERAL] = new PageGeneral(parentView()); m_pages[SETTINGS::PLAYER] = new PagePlayer(parentView()); m_pages[SETTINGS::LIBRARY] = new PageLibrary(parentView()); m_pages[SETTINGS::SHORTCUT] = new PageShortcut(parentView()); m_pages[SETTINGS::SCROBBLER] = new PageScrobbler(parentView()); m_pages[SETTINGS::SONGINFO] = new PageSongInfo(parentView()); /* first init => always restore settings */ restore_settings(); /* layout */ m_layout = new QGraphicsLinearLayout(Qt::Vertical); m_layout->setSpacing(10); m_layout->addItem( m_pages.value(SETTINGS::GENERAL) ); m_layout->addItem( m_pages.value(SETTINGS::PLAYER) ); m_layout->addItem( m_pages.value(SETTINGS::LIBRARY) ); m_layout->addItem( m_pages.value(SETTINGS::SHORTCUT) ); m_layout->addItem( m_pages.value(SETTINGS::SONGINFO) ); m_layout->addItem( m_pages.value(SETTINGS::SCROBBLER) ); m_container = new QGraphicsWidget(); m_container->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding ); m_container->setLayout(m_layout); m_container->setPos(0,0); this->addItem(m_container); /* il faut interdire la modification des parametres de collection si un database builder est en cours */ connect(ThreadManager::instance(), SIGNAL(dbBuildStart()), this, SLOT(slot_dbBuilder_stateChange())); connect(ThreadManager::instance(), SIGNAL(dbBuildFinished()), this, SLOT(slot_dbBuilder_stateChange())); connect(Database::instance(), SIGNAL(settingsChanged()), this, SLOT(slot_database_settingsChanged())); connect(MainLeftWidget::instance(), SIGNAL(dbNameChanged()), this, SLOT(slot_database_settingsChanged())); connect(MainLeftWidget::instance(), SIGNAL(settings_save_clicked()), this, SLOT(slot_apply_settings())); connect(MainLeftWidget::instance(), SIGNAL(settings_cancel_clicked()), this, SLOT(slot_cancel_settings())); connect(m_pages[SETTINGS::GENERAL], SIGNAL(layout_changed()), this, SLOT(populateScene())); connect(m_pages[SETTINGS::PLAYER], SIGNAL(layout_changed()), this, SLOT(populateScene())); connect(m_pages[SETTINGS::LIBRARY], SIGNAL(layout_changed()), this, SLOT(populateScene())); connect(m_pages[SETTINGS::SHORTCUT], SIGNAL(layout_changed()), this, SLOT(populateScene())); connect(m_pages[SETTINGS::SCROBBLER], SIGNAL(layout_changed()), this, SLOT(populateScene())); connect(m_pages[SETTINGS::SONGINFO], SIGNAL(layout_changed()), this, SLOT(populateScene())); setInit(true); }
static GdkFilterReturn gdk_filter_func (GdkXEvent *gdk_xevent, GdkEvent *event, gpointer data) { XEvent *xevent = gdk_xevent; NemoDesktopManager *manager; manager = NEMO_DESKTOP_MANAGER (data); switch (xevent->type) { case PropertyNotify: if (xevent->xproperty.atom == gdk_x11_get_xatom_by_name ("_NET_WORKAREA")) layout_changed (manager); break; default: break; } return GDK_FILTER_CONTINUE; }
/******************************************************************************* initScene *******************************************************************************/ void SettingsScene::initScene() { // create pages m_pages[SETTINGS::GENERAL] = new PageGeneral(parentView()); m_pages[SETTINGS::PLAYER] = new PagePlayer(parentView()); m_pages[SETTINGS::LIBRARY] = new PageLibrary(parentView()); m_pages[SETTINGS::SHORTCUT] = new PageShortcut(parentView()); m_pages[SETTINGS::SCROBBLER] = new PageScrobbler(parentView()); m_pages[SETTINGS::SONGINFO] = new PageSongInfo(parentView()); connect(m_pages[SETTINGS::GENERAL], SIGNAL(layout_changed()), this, SLOT(populateScene())); connect(m_pages[SETTINGS::PLAYER], SIGNAL(layout_changed()), this, SLOT(populateScene())); connect(m_pages[SETTINGS::LIBRARY], SIGNAL(layout_changed()), this, SLOT(populateScene())); connect(m_pages[SETTINGS::SHORTCUT], SIGNAL(layout_changed()), this, SLOT(populateScene())); connect(m_pages[SETTINGS::SCROBBLER], SIGNAL(layout_changed()), this, SLOT(populateScene())); connect(m_pages[SETTINGS::SONGINFO], SIGNAL(layout_changed()), this, SLOT(populateScene())); m_header = new HeaderItem(qobject_cast<QGraphicsView*> (parentView())->viewport()); m_header->setText( tr("Settings") ); /* bottom widget */ m_bottomWidget = new BottomWidget(); connect(m_bottomWidget, SIGNAL(save_clicked()), this, SLOT(slot_apply_settings())); connect(m_bottomWidget, SIGNAL(cancel_clicked()), this, SLOT(slot_cancel_settings())); this->addItem(m_header); this->addItem(m_pages.value(SETTINGS::GENERAL)); this->addItem(m_pages.value(SETTINGS::PLAYER)); this->addItem(m_pages.value(SETTINGS::LIBRARY)); this->addItem(m_pages.value(SETTINGS::SHORTCUT)); this->addItem(m_pages.value(SETTINGS::SCROBBLER)); this->addItem(m_pages.value(SETTINGS::SONGINFO)); /* first init => always restore settings */ restore_settings(); /* il faut interdire la modification des parametres de collection si un database builder est en cours */ connect(ThreadManager::instance(), SIGNAL(dbBuildStart()), this, SLOT(slot_dbBuilder_stateChange())); connect(ThreadManager::instance(), SIGNAL(dbBuildFinished()), this, SLOT(slot_dbBuilder_stateChange())); setInit(true); }
void layoutChanged_() { layout_changed(); }
void LogWindow::connections() { QObject::connect(ui.pushButton, SIGNAL(clicked()), this, SLOT(hide())); QObject::connect(ui.pushButton_2, SIGNAL(clicked()), eh, SLOT(saveXML())); QObject::connect(eh, SIGNAL(layout_changed()), this, SLOT(refresh())); }