RazorPanel::RazorPanel(const QString &configFile, QWidget *parent) : QFrame(parent), mLineSize(22), mLineCount(1) { setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint); setAttribute(Qt::WA_X11NetWmWindowTypeDock); setAttribute(Qt::WA_AlwaysShowToolTips); setWindowTitle("Razor Panel"); setObjectName(QString("RazorPanel %1").arg(configFile)); mLayout = new RazorPanelLayout(this); connect(mLayout, SIGNAL(pluginMoved()), this, SLOT(pluginMoved())); setLayout(mLayout); mLayout->setLineCount(mLineCount); mDelaySave.setSingleShot(true); mDelaySave.setInterval(SETTINGS_SAVE_DELAY); connect(&mDelaySave, SIGNAL(timeout()), this, SLOT(saveSettings())); connect(QApplication::desktop(), SIGNAL(resized(int)), this, SLOT(screensChangeds())); connect(QApplication::desktop(), SIGNAL(resized(int)), this, SLOT(realign())); connect(QApplication::desktop(), SIGNAL(screenCountChanged(int)), this, SLOT(screensChangeds())); connect(RazorSettings::globalSettings(), SIGNAL(settingsChanged()), this, SLOT(update())); connect(razorApp, SIGNAL(themeChanged()), this, SLOT(realign())); mSettings = new RazorSettings("razor-panel/" + configFile, this); readSettings(); loadPlugins(); show(); }
void PanelPluginsModel::movePlugin(Plugin * plugin, QString const & nameAfter) { //merge list of plugins (try to preserve original position) const int from = std::find_if(mPlugins.begin(), mPlugins.end(), [plugin] (pluginslist_t::const_reference obj) { return plugin == obj.second.data(); }) - mPlugins.begin(); const int to = std::find_if(mPlugins.begin(), mPlugins.end(), [nameAfter] (pluginslist_t::const_reference obj) { return nameAfter == obj.first; }) - mPlugins.begin(); const int to_plugins = from < to ? to - 1 : to; if (from != to && from != to_plugins) { beginMoveRows(QModelIndex(), from, from, QModelIndex(), to); mPlugins.move(from, to_plugins); endMoveRows(); emit pluginMoved(plugin); mPanel->settings()->setValue(mNamesKey, pluginNames()); } }
void PanelPluginsModel::onMovePluginDown() { if (!isActiveIndexValid()) return; const int row = mActive.row(); if (mPlugins.size() <= row + 1) return; //can't move down beginMoveRows(QModelIndex(), row, row, QModelIndex(), row + 2); mPlugins.swap(row, row + 1); endMoveRows(); pluginslist_t::const_reference moved_plugin = mPlugins[row + 1]; pluginslist_t::const_reference next_plugin = mPlugins[row]; emit pluginMoved(moved_plugin.second.data()); //emit signal for layout only in case both plugins are loaded/displayed if (!moved_plugin.second.isNull() && !next_plugin.second.isNull()) emit pluginMovedUp(next_plugin.second.data()); mPanel->settings()->setValue(mNamesKey, pluginNames()); }