Context::AppletToolbarAppletItem::AppletToolbarAppletItem( QGraphicsItem* parent, Plasma::Applet* applet ) : AppletToolbarBase( parent ) , m_applet( applet ) , m_label( 0 ) , m_deleteIcon( 0 ) , m_labelPadding( 5 ) , m_configEnabled( false ) { m_label = new QGraphicsTextItem( this ); if( m_applet ) { m_label->setPlainText( m_applet->name() ); setToolTip( m_applet->name() ); } else { m_label->setPlainText( i18n("no applet name") ); } setAcceptHoverEvents( true ); m_label->setAcceptHoverEvents( true ); QAction* delApplet = new QAction( i18n( "Remove Applet" ), this ); delApplet->setIcon( KIcon( "edit-delete" ) ); delApplet->setVisible( true ); delApplet->setEnabled( true ); connect( delApplet, SIGNAL( triggered() ), this, SLOT( deleteApplet() ) ); m_deleteIcon = addAction( delApplet, 18 ); m_deleteIcon->hide(); setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding ); paletteChanged( palette() ); connect( The::paletteHandler(), SIGNAL(newPalette(QPalette)), SLOT(paletteChanged(QPalette)) ); }
void KCMStyle::setStyleRecursive(TQWidget* w, TQStyle* s) { // Don't let broken styles kill the palette // for other styles being previewed. (e.g SGI style) w->unsetPalette(); TQPalette newPalette(TDEApplication::createApplicationPalette()); s->polish( newPalette ); w->setPalette(newPalette); // Apply the new style. w->setStyle(s); // Recursively update all children. const TQObjectList children = w->childrenListObject(); if (children.isEmpty()) return; // Apply the style to each child widget. TQPtrListIterator<TQObject> childit(children); TQObject *child; while ((child = childit.current()) != 0) { ++childit; if (child->isWidgetType()) setStyleRecursive((TQWidget *) child, s); } }
PackageItem::PackageItem(Package* p, int index, QWidget* parent): QWidget(parent), package(0), title(), size(), installButton("Install"), removeButton("Remove"), upgradeButton("Upgrade"), detailsButton("Details"), progressBar() { connect(&installButton, SIGNAL(clicked(bool)), this, SLOT(handleInstall())); connect(&removeButton, SIGNAL(clicked(bool)), this, SLOT(handleRemove())); connect(&upgradeButton, SIGNAL(clicked(bool)), this, SLOT(handleUpgrade())); connect(&detailsButton, SIGNAL(clicked(bool)), this, SLOT(handleDetails())); if(index % 2) { QPalette newPalette(palette()); newPalette.setColor(QPalette::AlternateBase, QColor(0, 0, 0, 32)); setBackgroundRole(QPalette::AlternateBase); setPalette(newPalette); } setAutoFillBackground(true); QHBoxLayout* layout = new QHBoxLayout; setLayout(layout); layout->addWidget(&progressBar); progressBar.setMaximumWidth(64); layout->addWidget(&title); title.setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); layout->addWidget(&size); layout->addWidget(&upgradeButton); upgradeButton.setStyleSheet("background-color: #6992D7; width: 48px;"); layout->addWidget(&installButton); installButton.setStyleSheet("background-color: #69D772; width: 48px;"); layout->addWidget(&removeButton); removeButton.setStyleSheet("background-color: #D76D69; width: 48px;"); layout->addWidget(&detailsButton); setPackage(p); }
//-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- void RiuPvtPlotWidget::setPlotDefaults(QwtPlot* plot) { // Plot background and frame look QPalette newPalette(plot->palette()); newPalette.setColor(QPalette::Background, Qt::white); plot->setPalette(newPalette); plot->setAutoFillBackground(true); plot->setCanvasBackground(Qt::white); QFrame* canvasFrame = dynamic_cast<QFrame*>(plot->canvas()); if (canvasFrame) { canvasFrame->setFrameShape(QFrame::NoFrame); } // Grid { QwtPlotGrid* grid = new QwtPlotGrid; grid->attach(plot); QPen gridPen(Qt::SolidLine); gridPen.setColor(Qt::lightGray); grid->setPen(gridPen); } // Axis number font { QFont axisFont = plot->axisFont(QwtPlot::xBottom); axisFont.setPointSize(8); plot->setAxisFont(QwtPlot::xBottom, axisFont); plot->setAxisFont(QwtPlot::yLeft, axisFont); } // Axis title font { QwtText axisTitle = plot->axisTitle(QwtPlot::xBottom); QFont axisTitleFont = axisTitle.font(); axisTitleFont.setPointSize(8); axisTitleFont.setBold(false); axisTitle.setFont(axisTitleFont); axisTitle.setRenderFlags(Qt::AlignRight); plot->setAxisTitle(QwtPlot::xBottom, axisTitle); plot->setAxisTitle(QwtPlot::yLeft, axisTitle); } // Title font { QwtText plotTitle = plot->title(); QFont titleFont = plotTitle.font(); titleFont.setPointSize(12); plotTitle.setFont(titleFont); plot->setTitle(plotTitle); } plot->setAxisMaxMinor(QwtPlot::xBottom, 2); plot->setAxisMaxMinor(QwtPlot::yLeft, 3); plot->plotLayout()->setAlignCanvasToScales(true); }
ImageWindow::ImageWindow(const std::string &imageFileName, QWidget *parent): QLabel(parent), bError(false) { setAlignment(Qt::AlignCenter); setWindowFlags(windowFlags()|Qt::Window); // setting backgournd color to black QPalette newPalette(palette()); newPalette.setColor(QPalette::Window,QColor("black")); setPalette(newPalette); // displaying the image QPixmap pix(imageFileName.c_str()); if (pix.isNull()) { // the image cannot be loaded bError = true; setPixmap(QPixmap(":/data/images/stop.svg")); } else { setPixmap(pix); } showNormal(); if (bError) { setFixedSize(size()); } }
/*! Reimplementation from QStyle */ void MetalStyle::polish( QApplication *app) { oldPalette = app->palette(); // we simply create a nice QColorGroup with a couple of fancy // pixmaps here and apply to it all widgets QFont f("times", app->font().pointSize() ); f.setBold( TRUE ); f.setItalic( TRUE ); app->setFont( f, TRUE, "QMenuBar"); app->setFont( f, TRUE, "QPopupMenu"); // QPixmap button( stonedark_xpm ); QColor gold("#B9B9A5A54040"); //same as topgrad below QPixmap button( 1, 1 ); button.fill( gold ); QPixmap background(marble_xpm); QPixmap dark( 1, 1 ); dark.fill( red.dark() ); QPixmap mid( stone1_xpm ); QPixmap light( stone1_xpm );//1, 1 ); light.fill( green ); QPalette op = app->palette(); QColor backCol( 227,227,227 ); // QPalette op(white); QColorGroup active (op.active().foreground(), QBrush(op.active().button(),button), QBrush(op.active().light(), light), QBrush(op.active().dark(), dark), QBrush(op.active().mid(), mid), op.active().text(), Qt::white, op.active().base(),// QColor(236,182,120), QBrush(backCol, background) ); active.setColor( QColorGroup::ButtonText, Qt::white ); active.setColor( QColorGroup::Shadow, Qt::black ); QColorGroup disabled (op.disabled().foreground(), QBrush(op.disabled().button(),button), QBrush(op.disabled().light(), light), op.disabled().dark(), QBrush(op.disabled().mid(), mid), op.disabled().text(), Qt::white, op.disabled().base(),// QColor(236,182,120), QBrush(backCol, background) ); QPalette newPalette( active, disabled, active ); app->setPalette( newPalette, TRUE ); }
//-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- void RiuSummaryQwtPlot::setDefaults() { QPalette newPalette(palette()); newPalette.setColor(QPalette::Background, Qt::white); setPalette(newPalette); setAutoFillBackground(true); setCanvasBackground(Qt::white); QFrame* canvasFrame = dynamic_cast<QFrame*>(canvas()); if (canvasFrame) { canvasFrame->setFrameShape(QFrame::NoFrame); } canvas()->setMouseTracking(true); canvas()->installEventFilter(this); QPen gridPen(Qt::SolidLine); gridPen.setColor(Qt::lightGray); m_grid->setPen(gridPen); enableAxis(QwtPlot::xBottom, true); enableAxis(QwtPlot::yLeft, true); enableAxis(QwtPlot::xTop, false); enableAxis(QwtPlot::yRight, false); plotLayout()->setAlignCanvasToScales(true); useDateBasedTimeAxis(); QFont xAxisFont = axisFont(QwtPlot::xBottom); xAxisFont.setPixelSize(11); setAxisFont(QwtPlot::xBottom, xAxisFont); setAxisMaxMinor(QwtPlot::xBottom, 2); QFont yAxisFont = axisFont(QwtPlot::yLeft); yAxisFont.setPixelSize(11); setAxisFont(QwtPlot::yLeft, yAxisFont); setAxisMaxMinor(QwtPlot::yLeft, 3); QwtText axisTitleY = axisTitle(QwtPlot::yLeft); QFont yAxisTitleFont = axisTitleY.font(); yAxisTitleFont.setPixelSize(11); yAxisTitleFont.setBold(false); axisTitleY.setFont(yAxisTitleFont); axisTitleY.setRenderFlags(Qt::AlignRight); setAxisTitle(QwtPlot::yLeft, axisTitleY); QwtLegend* legend = new QwtLegend(this); // The legend will be deleted in the destructor of the plot or when // another legend is inserted. this->insertLegend(legend, BottomLegend); }
FileView::FileView( QWidget *parent ) : Amarok::PrettyTreeView( parent ) , m_appendAction( 0 ) , m_loadAction( 0 ) , m_editAction( 0 ) , m_moveToTrashAction( 0 ) , m_deleteAction( 0 ) , m_pd( 0 ) , m_ongoingDrag( false ) { setFrameStyle( QFrame::NoFrame ); setItemsExpandable( false ); setRootIsDecorated( false ); setAlternatingRowColors( true ); setUniformRowHeights( true ); setEditTriggers( EditKeyPressed ); The::paletteHandler()->updateItemView( this ); connect( The::paletteHandler(), SIGNAL(newPalette(QPalette)), SLOT(newPalette(QPalette)) ); }
void SongkickApplet::init() { // Call the base implementation. Context::Applet::init(); QColor highlight = PaletteHandler::highlightColor().darker( 300 ); m_titleLabel = new QGraphicsSimpleTextItem( i18n("Concerts"), this ); QFont bigger = m_titleLabel->font(); bigger.setPointSize( bigger.pointSize() + 2 ); m_titleLabel->setFont( bigger ); m_titleLabel->setZValue( m_titleLabel->zValue() + 100 ); m_titleLabel->setDrawBackground( true ); QAction* reloadAction = new QAction( i18n("Reload Songkick"), this ); reloadAction->setIcon( KIcon( "view-refresh" ) ); reloadAction->setVisible( true ); reloadAction->setEnabled( true ); m_reloadIcon = addAction( reloadAction ); connect( m_reloadIcon, SIGNAL(clicked()), dataEngine( "amarok-songkick" ), SLOT(update()) ); m_songkickProxy = new QGraphicsProxyWidget( this ); m_songkick = new QTextBrowser; m_songkick->setAttribute( Qt::WA_NoSystemBackground ); m_songkick->setReadOnly( true ); m_songkick->setOpenExternalLinks( true ); m_songkick->setTextInteractionFlags( Qt::TextBrowserInteraction | Qt::TextSelectableByKeyboard ); m_songkickProxy->setWidget( m_songkick ); QPalette pal; QBrush brush( PaletteHandler::highlightColor().lighter( 170 ) ); brush.setStyle( Qt::SolidPattern ); pal.setBrush( QPalette::Active, QPalette::Base, brush ); pal.setBrush( QPalette::Inactive, QPalette::Base, brush ); pal.setBrush( QPalette::Disabled, QPalette::Base, brush ); pal.setBrush( QPalette::Window, brush ); m_songkick->setPalette( pal ); m_songkickProxy->setPalette( pal ); m_songkick->setStyleSheet( QString( "QTextBrowser { background-color: %1; border-width: 0px; border-radius: 0px; color: %2; }" ) .arg( PaletteHandler::highlightColor().lighter( 150 ).name() ) .arg( PaletteHandler::highlightColor().darker( 400 ).name() ) ); connect( dataEngine( "amarok-songkick" ), SIGNAL(sourceAdded(QString)), this, SLOT(connectSource(QString)) ); connect( The::paletteHandler(), SIGNAL(newPalette(QPalette)), SLOT(paletteChanged(QPalette)) ); constraintsEvent(); connectSource( "ontour" ); connectSource( "dates" ); }
Context::ToolbarView::ToolbarView( Plasma::Containment* containment, QGraphicsScene* scene, QWidget* parent ) : QGraphicsView( scene, parent ) , m_height( 36 ) , m_cont( containment ) { setObjectName( "ContextToolbarView" ); setFixedHeight( m_height ); setSizePolicy( QSizePolicy::Preferred, QSizePolicy::Fixed ); setAutoFillBackground( true ); setContentsMargins( 0, 0, 0, 0 ); setFrameStyle( QFrame::NoFrame ); applyStyleSheet(); connect( The::paletteHandler(), SIGNAL(newPalette(QPalette)), SLOT(applyStyleSheet()) ); //Padding required to prevent view scrolling, probably caused by the 1px ridge setSceneRect( TOOLBAR_X_OFFSET, 0, size().width()-TOOLBAR_SCENE_PADDING, size().height()-TOOLBAR_SCENE_PADDING ); setInteractive( true ); setAcceptDrops( true ); setHorizontalScrollBarPolicy( Qt::ScrollBarAlwaysOff ); setVerticalScrollBarPolicy( Qt::ScrollBarAlwaysOff ); // now we create the toolbar m_toolbar = new AppletToolbar(0); scene->addItem(m_toolbar.data()); m_toolbar.data()->setContainment( qobject_cast<Context::Containment *>(containment) ); m_toolbar.data()->setZValue( m_toolbar.data()->zValue() + 1000 ); m_toolbar.data()->setPos( TOOLBAR_X_OFFSET, 0 ); connect( m_toolbar.data(), SIGNAL(configModeToggled()), SLOT(toggleConfigMode()) ); connect( m_toolbar.data(), SIGNAL(hideAppletExplorer()), SIGNAL(hideAppletExplorer()) ); connect( m_toolbar.data(), SIGNAL(showAppletExplorer()), SIGNAL(showAppletExplorer()) ); Context::Containment* cont = dynamic_cast< Context::Containment* >( containment ); if( cont ) { connect( cont, SIGNAL(appletAdded(Plasma::Applet*,int)), m_toolbar.data(), SLOT(appletAdded(Plasma::Applet*,int)) ); connect( m_toolbar.data(), SIGNAL(appletAddedToToolbar(Plasma::Applet*,int)), this, SLOT(appletAdded(Plasma::Applet*,int)) ); connect( cont, SIGNAL(appletRemoved(Plasma::Applet*)), this, SLOT(appletRemoved(Plasma::Applet*)) ); connect( m_toolbar.data(), SIGNAL(showApplet(Plasma::Applet*)), cont, SLOT(showApplet(Plasma::Applet*)) ); connect( m_toolbar.data(), SIGNAL(moveApplet(Plasma::Applet*,int,int)), cont, SLOT(moveApplet(Plasma::Applet*,int,int)) ); } }
ImageWindow::ImageWindow(const std::string &pictureFileName, QWidget *parent): QLabel(parent), bError(false), sImageFileName(pictureFileName), bSvg(true), renderer(0) { setAlignment(Qt::AlignCenter); setWindowFlags(windowFlags()|Qt::Window); // setting background color to black QPalette newPalette(palette()); newPalette.setColor(QPalette::Window,QColor("black")); setPalette(newPalette); // displaying (or not) the picture if (sImageFileName.length() < 3 || !QFileInfo(sImageFileName.c_str()).exists()) { bError = true; return; } if (sImageFileName.substr(sImageFileName.length()-3,3) != "svg") { bSvg = false; pix = QPixmap(sImageFileName.c_str()); if (pix.isNull()) { // the image cannot be loaded bError = true; return; } else { setPixmap(pix); } } if (bSvg) { renderer = new QSvgRenderer(this); if (!renderer->load(QString(sImageFileName.c_str()))) { // unable to load the image bError = true; return; } resize(renderer->defaultSize()); // the size is fixed when the image does not exist QRectF rect = renderer->viewBoxF(); dAspectRatio = rect.width()/rect.height(); } showNormal(); }
void BrowserDock::polish() { m_categoryList.data()->setIcon( KIcon( "user-home" ) ); m_categoryList.data()->setMinimumSize( 100, 300 ); connect( m_breadcrumbWidget, SIGNAL(toHome()), this, SLOT(home()) ); // Keyboard shortcut for going back one level KAction *action = new KAction( KIcon( "go-up" ), i18n( "Go Up in Media Sources Pane" ), m_mainWidget ); Amarok::actionCollection()->addAction( "browser_previous", action ); connect( action, SIGNAL(triggered(bool)), m_categoryList.data(), SLOT(back()) ); action->setShortcut( KShortcut( Qt::Key_Backspace ) ); paletteChanged( palette() ); connect( The::paletteHandler(), SIGNAL(newPalette(QPalette)), SLOT(paletteChanged(QPalette)) ); }
void ColorQuantizationCommand::onExecute(Context* context) { try { ContextWriter writer(UIContext::instance(), 500); Sprite* sprite = writer.sprite(); frame_t frame = writer.frame(); if (sprite) { PalettePicks entries; ColorBar::instance()->getPaletteView()->getSelectedEntries(entries); entries.pickAllIfNeeded(); int n = entries.picks(); Palette palette(frame, n); render::create_palette_from_rgb(sprite, frame, &palette); Palette newPalette(*get_current_palette()); int i = 0, j = 0; for (bool state : entries) { if (state) newPalette.setEntry(i, palette.getEntry(j++)); ++i; } Transaction transaction(writer.context(), "Color Quantization", ModifyDocument); transaction.execute(new cmd::SetPalette(sprite, frame, &newPalette)); transaction.commit(); set_current_palette(&newPalette, false); ui::Manager::getDefault()->invalidate(); } } catch (base::Exception& e) { Console::showException(e); } }
void PaletteBox::paletteCmd(PaletteCommand cmd, int slot) { QLayoutItem* item = vbox->itemAt(slot); PaletteBoxButton* b = static_cast<PaletteBoxButton*>(item->widget()); Palette* palette = static_cast<Palette*>(vbox->itemAt(slot+1)->widget()); switch(cmd) { case PaletteCommand::PDELETE: { vbox->removeItem(item); b->deleteLater(); // this is the button widget delete item; item = vbox->itemAt(slot); vbox->removeItem(item); delete item->widget(); delete item; for (int i = 0; i < (vbox->count() - 1) / 2; ++i) static_cast<PaletteBoxButton*>(vbox->itemAt(i * 2)->widget())->setId(i*2); emit changed(); } break; case PaletteCommand::SAVE: { QString path = mscore->getPaletteFilename(false); if (!path.isEmpty()) palette->write(path); } break; case PaletteCommand::LOAD: { QString path = mscore->getPaletteFilename(true); if (!path.isEmpty()) { QFileInfo fi(path); Palette* palette = newPalette(fi.baseName(), slot); palette->read(path); } } emit changed(); break; case PaletteCommand::NEW: palette = newPalette(tr("new Palette"), slot); item = vbox->itemAt(slot); b = static_cast<PaletteBoxButton*>(item->widget()); // fall through case PaletteCommand::EDIT: { PaletteProperties pp(palette, 0); int rv = pp.exec(); if (rv == 1) { emit changed(); b->setText(palette->name()); palette->update(); } } emit changed(); break; case PaletteCommand::UP: if (slot) { QLayoutItem* i1 = vbox->itemAt(slot); QLayoutItem* i2 = vbox->itemAt(slot+1); vbox->removeItem(i1); vbox->removeItem(i2); vbox->insertWidget(slot-2, i2->widget()); vbox->insertWidget(slot-2, i1->widget()); delete i1; delete i2; for (int i = 0; i < (vbox->count() - 1) / 2; ++i) static_cast<PaletteBoxButton*>(vbox->itemAt(i * 2)->widget())->setId(i*2); emit changed(); } break; case PaletteCommand::DOWN: if (slot < (vbox->count() - 3)) { QLayoutItem* i1 = vbox->itemAt(slot); QLayoutItem* i2 = vbox->itemAt(slot+1); vbox->removeItem(i1); vbox->removeItem(i2); vbox->insertWidget(slot+2, i2->widget()); vbox->insertWidget(slot+2, i1->widget()); delete i1; delete i2; for (int i = 0; i < (vbox->count() - 1) / 2; ++i) static_cast<PaletteBoxButton*>(vbox->itemAt(i * 2)->widget())->setId(i*2); emit changed(); } break; } }
void ColorQuantizationCommand::onExecute(Context* context) { try { app::gen::PaletteFromSprite window; PalettePicks entries; Sprite* sprite; frame_t frame; Palette* curPalette; { ContextReader reader(context); Site site = context->activeSite(); sprite = site.sprite(); frame = site.frame(); curPalette = sprite->palette(frame); window.newPalette()->setSelected(true); window.alphaChannel()->setSelected( App::instance()->preferences().quantization.withAlpha()); window.ncolors()->setText("256"); ColorBar::instance()->getPaletteView()->getSelectedEntries(entries); if (entries.picks() > 1) { window.currentRange()->setTextf( "%s, %d color(s)", window.currentRange()->text().c_str(), entries.picks()); } else window.currentRange()->setEnabled(false); window.currentPalette()->setTextf( "%s, %d color(s)", window.currentPalette()->text().c_str(), curPalette->size()); } window.openWindowInForeground(); if (window.closer() != window.ok()) return; bool withAlpha = window.alphaChannel()->isSelected(); App::instance()->preferences().quantization.withAlpha(withAlpha); bool createPal = false; if (window.newPalette()->isSelected()) { int n = window.ncolors()->textInt(); n = MAX(1, n); entries = PalettePicks(n); entries.all(); createPal = true; } else if (window.currentPalette()->isSelected()) { entries.all(); } if (entries.picks() == 0) return; Palette tmpPalette(frame, entries.picks()); ContextReader reader(context); SpriteJob job(reader, "Color Quantization"); const bool newBlend = Preferences::instance().experimental.newBlend(); job.startJobWithCallback( [sprite, withAlpha, &tmpPalette, &job, newBlend]{ render::create_palette_from_sprite( sprite, 0, sprite->lastFrame(), withAlpha, &tmpPalette, &job, newBlend); // SpriteJob is a render::TaskDelegate }); job.waitJob(); if (job.isCanceled()) return; std::unique_ptr<Palette> newPalette( new Palette(createPal ? tmpPalette: *get_current_palette())); if (createPal) { entries = PalettePicks(newPalette->size()); entries.all(); } int i = 0, j = 0; for (bool state : entries) { if (state) newPalette->setEntry(i, tmpPalette.getEntry(j++)); ++i; } if (*curPalette != *newPalette) job.tx()(new cmd::SetPalette(sprite, frame, newPalette.get())); set_current_palette(newPalette.get(), false); ui::Manager::getDefault()->invalidate(); } catch (const base::Exception& e) { Console::showException(e); } }
MoodbarManager::MoodbarManager() : m_cache( new KImageCache( "Amarok-moodbars", 10 * 1024 ) ) , m_lastPaintMode( 0 ) { connect( The::paletteHandler(), SIGNAL(newPalette(QPalette)), SLOT(paletteChanged(QPalette)) ); }
void ColorQuantizationCommand::onExecute(Context* context) { try { app::gen::PaletteFromSprite window; PalettePicks entries; Sprite* sprite; frame_t frame; Palette* curPalette; { ContextReader reader(context); Site site = context->activeSite(); sprite = site.sprite(); frame = site.frame(); curPalette = sprite->palette(frame); window.newPalette()->setSelected(true); window.alphaChannel()->setSelected( App::instance()->preferences().quantization.withAlpha()); window.ncolors()->setText("256"); ColorBar::instance()->getPaletteView()->getSelectedEntries(entries); if (entries.picks() > 1) { window.currentRange()->setTextf( "%s, %d color(s)", window.currentRange()->text().c_str(), entries.picks()); } else window.currentRange()->setEnabled(false); window.currentPalette()->setTextf( "%s, %d color(s)", window.currentPalette()->text().c_str(), curPalette->size()); } window.openWindowInForeground(); if (window.closer() != window.ok()) return; bool withAlpha = window.alphaChannel()->isSelected(); App::instance()->preferences().quantization.withAlpha(withAlpha); bool createPal = false; if (window.newPalette()->isSelected()) { int n = window.ncolors()->textInt(); n = MAX(1, n); entries = PalettePicks(n); entries.all(); createPal = true; } else if (window.currentPalette()->isSelected()) { entries.all(); } if (entries.picks() == 0) return; Palette tmpPalette(frame, entries.picks()); ColorQuantizationJob job(sprite, withAlpha, &tmpPalette); job.startJob(); job.waitJob(); if (job.isCanceled()) return; base::UniquePtr<Palette> newPalette( new Palette(createPal ? tmpPalette: *get_current_palette())); if (createPal) { entries = PalettePicks(newPalette->size()); entries.all(); } int i = 0, j = 0; for (bool state : entries) { if (state) newPalette->setEntry(i, tmpPalette.getEntry(j++)); ++i; } if (*curPalette != *newPalette) { ContextWriter writer(UIContext::instance(), 500); Transaction transaction(writer.context(), "Color Quantization", ModifyDocument); transaction.execute(new cmd::SetPalette(sprite, frame, newPalette.get())); transaction.commit(); set_current_palette(newPalette.get(), false); ui::Manager::getDefault()->invalidate(); } } catch (base::Exception& e) { Console::showException(e); } }
void PaletteEditorDialog::OnSaveAsResource() { std::unique_ptr<ResourceEntity> newPalette(CreatePaletteResource(appState->GetVersion())); newPalette->GetComponent<PaletteComponent>() = *this->_palette; appState->GetResourceMap().AppendResourceAskForNumber(*newPalette, "", true); }
QgsCompoundColorWidget::QgsCompoundColorWidget( QWidget *parent, const QColor& color, Layout widgetLayout ) : QgsPanelWidget( parent ) , mAllowAlpha( true ) , mLastCustomColorIndex( 0 ) , mPickingColor( false ) { setupUi( this ); if ( widgetLayout == LayoutVertical ) { // shuffle stuff around QVBoxLayout* newLayout = new QVBoxLayout(); newLayout->addWidget( mTabWidget ); newLayout->addWidget( mSlidersWidget ); newLayout->addWidget( mPreviewWidget ); newLayout->addWidget( mSwatchesWidget ); delete layout(); setLayout( newLayout ); } QSettings settings; mSchemeList->header()->hide(); mSchemeList->setColumnWidth( 0, 44 ); //get schemes with ShowInColorDialog set refreshSchemeComboBox(); QList<QgsColorScheme *> schemeList = QgsColorSchemeRegistry::instance()->schemes( QgsColorScheme::ShowInColorDialog ); //choose a reasonable starting scheme int activeScheme = settings.value( "/Windows/ColorDialog/activeScheme", 0 ).toInt(); activeScheme = activeScheme >= mSchemeComboBox->count() ? 0 : activeScheme; mSchemeList->setScheme( schemeList.at( activeScheme ) ); mSchemeComboBox->setCurrentIndex( activeScheme ); updateActionsForCurrentScheme(); //listen out for selection changes in list, so we can enable/disable the copy colors option connect( mSchemeList->selectionModel(), SIGNAL( selectionChanged( QItemSelection, QItemSelection ) ), this, SLOT( listSelectionChanged( QItemSelection, QItemSelection ) ) ); //copy action defaults to disabled mActionCopyColors->setEnabled( false ); connect( mActionCopyColors, SIGNAL( triggered() ), mSchemeList, SLOT( copyColors() ) ); connect( mActionPasteColors, SIGNAL( triggered() ), mSchemeList, SLOT( pasteColors() ) ); connect( mActionExportColors, SIGNAL( triggered() ), this, SLOT( exportColors() ) ); connect( mActionImportColors, SIGNAL( triggered() ), this, SLOT( importColors() ) ); connect( mActionImportPalette, SIGNAL( triggered() ), this, SLOT( importPalette() ) ); connect( mActionRemovePalette, SIGNAL( triggered() ), this, SLOT( removePalette() ) ); connect( mActionNewPalette, SIGNAL( triggered() ), this, SLOT( newPalette() ) ); connect( mRemoveColorsFromSchemeButton, SIGNAL( clicked() ), mSchemeList, SLOT( removeSelection() ) ); QMenu* schemeMenu = new QMenu( mSchemeToolButton ); schemeMenu->addAction( mActionCopyColors ); schemeMenu->addAction( mActionPasteColors ); schemeMenu->addSeparator(); schemeMenu->addAction( mActionImportColors ); schemeMenu->addAction( mActionExportColors ); schemeMenu->addSeparator(); schemeMenu->addAction( mActionNewPalette ); schemeMenu->addAction( mActionImportPalette ); schemeMenu->addAction( mActionRemovePalette ); schemeMenu->addAction( mActionShowInButtons ); mSchemeToolButton->setMenu( schemeMenu ); connect( mSchemeComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( schemeIndexChanged( int ) ) ); connect( mSchemeList, SIGNAL( colorSelected( QColor ) ), this, SLOT( setColor( QColor ) ) ); mOldColorLabel->hide(); mVerticalRamp->setOrientation( QgsColorRampWidget::Vertical ); mVerticalRamp->setInteriorMargin( 2 ); mVerticalRamp->setShowFrame( true ); mRedSlider->setComponent( QgsColorWidget::Red ); mGreenSlider->setComponent( QgsColorWidget::Green ); mBlueSlider->setComponent( QgsColorWidget::Blue ); mHueSlider->setComponent( QgsColorWidget::Hue ); mSaturationSlider->setComponent( QgsColorWidget::Saturation ); mValueSlider->setComponent( QgsColorWidget::Value ); mAlphaSlider->setComponent( QgsColorWidget::Alpha ); mSwatchButton1->setShowMenu( false ); mSwatchButton1->setBehaviour( QgsColorButton::SignalOnly ); mSwatchButton2->setShowMenu( false ); mSwatchButton2->setBehaviour( QgsColorButton::SignalOnly ); mSwatchButton3->setShowMenu( false ); mSwatchButton3->setBehaviour( QgsColorButton::SignalOnly ); mSwatchButton4->setShowMenu( false ); mSwatchButton4->setBehaviour( QgsColorButton::SignalOnly ); mSwatchButton5->setShowMenu( false ); mSwatchButton5->setBehaviour( QgsColorButton::SignalOnly ); mSwatchButton6->setShowMenu( false ); mSwatchButton6->setBehaviour( QgsColorButton::SignalOnly ); mSwatchButton7->setShowMenu( false ); mSwatchButton7->setBehaviour( QgsColorButton::SignalOnly ); mSwatchButton8->setShowMenu( false ); mSwatchButton8->setBehaviour( QgsColorButton::SignalOnly ); mSwatchButton9->setShowMenu( false ); mSwatchButton9->setBehaviour( QgsColorButton::SignalOnly ); mSwatchButton10->setShowMenu( false ); mSwatchButton10->setBehaviour( QgsColorButton::SignalOnly ); mSwatchButton11->setShowMenu( false ); mSwatchButton11->setBehaviour( QgsColorButton::SignalOnly ); mSwatchButton12->setShowMenu( false ); mSwatchButton12->setBehaviour( QgsColorButton::SignalOnly ); mSwatchButton13->setShowMenu( false ); mSwatchButton13->setBehaviour( QgsColorButton::SignalOnly ); mSwatchButton14->setShowMenu( false ); mSwatchButton14->setBehaviour( QgsColorButton::SignalOnly ); mSwatchButton15->setShowMenu( false ); mSwatchButton15->setBehaviour( QgsColorButton::SignalOnly ); mSwatchButton16->setShowMenu( false ); mSwatchButton16->setBehaviour( QgsColorButton::SignalOnly ); //restore custom colors mSwatchButton1->setColor( settings.value( "/Windows/ColorDialog/customColor1", QVariant( QColor() ) ).value<QColor>() ); mSwatchButton2->setColor( settings.value( "/Windows/ColorDialog/customColor2", QVariant( QColor() ) ).value<QColor>() ); mSwatchButton3->setColor( settings.value( "/Windows/ColorDialog/customColor3", QVariant( QColor() ) ).value<QColor>() ); mSwatchButton4->setColor( settings.value( "/Windows/ColorDialog/customColor4", QVariant( QColor() ) ).value<QColor>() ); mSwatchButton5->setColor( settings.value( "/Windows/ColorDialog/customColor5", QVariant( QColor() ) ).value<QColor>() ); mSwatchButton6->setColor( settings.value( "/Windows/ColorDialog/customColor6", QVariant( QColor() ) ).value<QColor>() ); mSwatchButton7->setColor( settings.value( "/Windows/ColorDialog/customColor7", QVariant( QColor() ) ).value<QColor>() ); mSwatchButton8->setColor( settings.value( "/Windows/ColorDialog/customColor8", QVariant( QColor() ) ).value<QColor>() ); mSwatchButton9->setColor( settings.value( "/Windows/ColorDialog/customColor9", QVariant( QColor() ) ).value<QColor>() ); mSwatchButton10->setColor( settings.value( "/Windows/ColorDialog/customColor10", QVariant( QColor() ) ).value<QColor>() ); mSwatchButton11->setColor( settings.value( "/Windows/ColorDialog/customColor11", QVariant( QColor() ) ).value<QColor>() ); mSwatchButton12->setColor( settings.value( "/Windows/ColorDialog/customColor12", QVariant( QColor() ) ).value<QColor>() ); mSwatchButton13->setColor( settings.value( "/Windows/ColorDialog/customColor13", QVariant( QColor() ) ).value<QColor>() ); mSwatchButton14->setColor( settings.value( "/Windows/ColorDialog/customColor14", QVariant( QColor() ) ).value<QColor>() ); mSwatchButton15->setColor( settings.value( "/Windows/ColorDialog/customColor15", QVariant( QColor() ) ).value<QColor>() ); mSwatchButton16->setColor( settings.value( "/Windows/ColorDialog/customColor16", QVariant( QColor() ) ).value<QColor>() ); //restore sample radius mSpinBoxRadius->setValue( settings.value( "/Windows/ColorDialog/sampleRadius", 1 ).toInt() ); mSamplePreview->setColor( QColor() ); if ( color.isValid() ) { setColor( color ); } //restore active component radio button int activeRadio = settings.value( "/Windows/ColorDialog/activeComponent", 2 ).toInt(); switch ( activeRadio ) { case 0: mHueRadio->setChecked( true ); break; case 1: mSaturationRadio->setChecked( true ); break; case 2: mValueRadio->setChecked( true ); break; case 3: mRedRadio->setChecked( true ); break; case 4: mGreenRadio->setChecked( true ); break; case 5: mBlueRadio->setChecked( true ); break; } int currentTab = settings.value( "/Windows/ColorDialog/activeTab", 0 ).toInt(); mTabWidget->setCurrentIndex( currentTab ); #ifdef Q_OS_MAC //disable color picker tab for OSX, as it is impossible to grab the mouse under OSX //see note for QWidget::grabMouse() re OSX Cocoa //http://qt-project.org/doc/qt-4.8/qwidget.html#grabMouse mTabWidget->removeTab( 3 ); #endif //setup connections connect( mColorBox, SIGNAL( colorChanged( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mColorWheel, SIGNAL( colorChanged( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mColorText, SIGNAL( colorChanged( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mVerticalRamp, SIGNAL( colorChanged( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mRedSlider, SIGNAL( colorChanged( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mGreenSlider, SIGNAL( colorChanged( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mBlueSlider, SIGNAL( colorChanged( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mHueSlider, SIGNAL( colorChanged( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mValueSlider, SIGNAL( colorChanged( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mSaturationSlider, SIGNAL( colorChanged( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mAlphaSlider, SIGNAL( colorChanged( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mColorPreview, SIGNAL( colorChanged( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mSwatchButton1, SIGNAL( colorClicked( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mSwatchButton2, SIGNAL( colorClicked( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mSwatchButton3, SIGNAL( colorClicked( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mSwatchButton4, SIGNAL( colorClicked( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mSwatchButton5, SIGNAL( colorClicked( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mSwatchButton6, SIGNAL( colorClicked( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mSwatchButton7, SIGNAL( colorClicked( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mSwatchButton8, SIGNAL( colorClicked( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mSwatchButton9, SIGNAL( colorClicked( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mSwatchButton10, SIGNAL( colorClicked( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mSwatchButton11, SIGNAL( colorClicked( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mSwatchButton12, SIGNAL( colorClicked( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mSwatchButton13, SIGNAL( colorClicked( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mSwatchButton14, SIGNAL( colorClicked( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mSwatchButton15, SIGNAL( colorClicked( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mSwatchButton16, SIGNAL( colorClicked( QColor ) ), this, SLOT( setColor( QColor ) ) ); }
QgsColorDialogV2::QgsColorDialogV2( QWidget *parent, Qt::WindowFlags fl, const QColor& color ) : QDialog( parent, fl ) , mPreviousColor( color ) , mAllowAlpha( true ) , mLastCustomColorIndex( 0 ) , mPickingColor( false ) { setupUi( this ); QSettings settings; restoreGeometry( settings.value( "/Windows/ColorDialog/geometry" ).toByteArray() ); mSchemeList->header()->hide(); mSchemeList->setColumnWidth( 0, 44 ); //get schemes with ShowInColorDialog set refreshSchemeComboBox(); QList<QgsColorScheme *> schemeList = QgsColorSchemeRegistry::instance()->schemes( QgsColorScheme::ShowInColorDialog ); //choose a reasonable starting scheme int activeScheme = settings.value( "/Windows/ColorDialog/activeScheme", 0 ).toInt(); activeScheme = activeScheme >= mSchemeComboBox->count() ? 0 : activeScheme; mSchemeList->setScheme( schemeList.at( activeScheme ) ); mSchemeComboBox->setCurrentIndex( activeScheme ); mActionImportColors->setEnabled( schemeList.at( activeScheme )->isEditable() ); mActionPasteColors->setEnabled( schemeList.at( activeScheme )->isEditable() ); mAddColorToSchemeButton->setEnabled( schemeList.at( activeScheme )->isEditable() ); mRemoveColorsFromSchemeButton->setEnabled( schemeList.at( activeScheme )->isEditable() ); QgsUserColorScheme* userScheme = dynamic_cast<QgsUserColorScheme*>( schemeList.at( activeScheme ) ); mActionRemovePalette->setEnabled( userScheme ? true : false ); //listen out for selection changes in list, so we can enable/disable the copy colors option connect( mSchemeList->selectionModel(), SIGNAL( selectionChanged( QItemSelection, QItemSelection ) ), this, SLOT( listSelectionChanged( QItemSelection, QItemSelection ) ) ); //copy action defaults to disabled mActionCopyColors->setEnabled( false ); connect( mActionCopyColors, SIGNAL( triggered() ), mSchemeList, SLOT( copyColors() ) ); connect( mActionPasteColors, SIGNAL( triggered() ), mSchemeList, SLOT( pasteColors() ) ); connect( mActionExportColors, SIGNAL( triggered() ), this, SLOT( exportColors() ) ); connect( mActionImportColors, SIGNAL( triggered() ), this, SLOT( importColors() ) ); connect( mActionImportPalette, SIGNAL( triggered() ), this, SLOT( importPalette() ) ); connect( mActionRemovePalette, SIGNAL( triggered() ), this, SLOT( removePalette() ) ); connect( mActionNewPalette, SIGNAL( triggered() ), this, SLOT( newPalette() ) ); connect( mRemoveColorsFromSchemeButton, SIGNAL( clicked() ), mSchemeList, SLOT( removeSelection() ) ); QMenu* schemeMenu = new QMenu( mSchemeToolButton ); schemeMenu->addAction( mActionCopyColors ); schemeMenu->addAction( mActionPasteColors ); schemeMenu->addSeparator(); schemeMenu->addAction( mActionImportColors ); schemeMenu->addAction( mActionExportColors ); schemeMenu->addSeparator(); schemeMenu->addAction( mActionNewPalette ); schemeMenu->addAction( mActionImportPalette ); schemeMenu->addAction( mActionRemovePalette ); mSchemeToolButton->setMenu( schemeMenu ); connect( mSchemeComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( schemeIndexChanged( int ) ) ); connect( mSchemeList, SIGNAL( colorSelected( QColor ) ), this, SLOT( setColor( QColor ) ) ); if ( mPreviousColor.isValid() ) { QPushButton* resetButton = new QPushButton( tr( "Reset" ) ); mButtonBox->addButton( resetButton, QDialogButtonBox::ResetRole ); } else { mOldColorLabel->hide(); } mVerticalRamp->setOrientation( QgsColorRampWidget::Vertical ); mVerticalRamp->setInteriorMargin( 2 ); mVerticalRamp->setShowFrame( true ); mRedSlider->setComponent( QgsColorWidget::Red ); mGreenSlider->setComponent( QgsColorWidget::Green ); mBlueSlider->setComponent( QgsColorWidget::Blue ); mHueSlider->setComponent( QgsColorWidget::Hue ); mSaturationSlider->setComponent( QgsColorWidget::Saturation ); mValueSlider->setComponent( QgsColorWidget::Value ); mAlphaSlider->setComponent( QgsColorWidget::Alpha ); mSwatchButton1->setShowMenu( false ); mSwatchButton1->setBehaviour( QgsColorButtonV2::SignalOnly ); mSwatchButton2->setShowMenu( false ); mSwatchButton2->setBehaviour( QgsColorButtonV2::SignalOnly ); mSwatchButton3->setShowMenu( false ); mSwatchButton3->setBehaviour( QgsColorButtonV2::SignalOnly ); mSwatchButton4->setShowMenu( false ); mSwatchButton4->setBehaviour( QgsColorButtonV2::SignalOnly ); mSwatchButton5->setShowMenu( false ); mSwatchButton5->setBehaviour( QgsColorButtonV2::SignalOnly ); mSwatchButton6->setShowMenu( false ); mSwatchButton6->setBehaviour( QgsColorButtonV2::SignalOnly ); mSwatchButton7->setShowMenu( false ); mSwatchButton7->setBehaviour( QgsColorButtonV2::SignalOnly ); mSwatchButton8->setShowMenu( false ); mSwatchButton8->setBehaviour( QgsColorButtonV2::SignalOnly ); mSwatchButton9->setShowMenu( false ); mSwatchButton9->setBehaviour( QgsColorButtonV2::SignalOnly ); mSwatchButton10->setShowMenu( false ); mSwatchButton10->setBehaviour( QgsColorButtonV2::SignalOnly ); mSwatchButton11->setShowMenu( false ); mSwatchButton11->setBehaviour( QgsColorButtonV2::SignalOnly ); mSwatchButton12->setShowMenu( false ); mSwatchButton12->setBehaviour( QgsColorButtonV2::SignalOnly ); mSwatchButton13->setShowMenu( false ); mSwatchButton13->setBehaviour( QgsColorButtonV2::SignalOnly ); mSwatchButton14->setShowMenu( false ); mSwatchButton14->setBehaviour( QgsColorButtonV2::SignalOnly ); mSwatchButton15->setShowMenu( false ); mSwatchButton15->setBehaviour( QgsColorButtonV2::SignalOnly ); mSwatchButton16->setShowMenu( false ); mSwatchButton16->setBehaviour( QgsColorButtonV2::SignalOnly ); //restore custom colors mSwatchButton1->setColor( settings.value( "/Windows/ColorDialog/customColor1", QVariant( QColor() ) ).value<QColor>() ); mSwatchButton2->setColor( settings.value( "/Windows/ColorDialog/customColor2", QVariant( QColor() ) ).value<QColor>() ); mSwatchButton3->setColor( settings.value( "/Windows/ColorDialog/customColor3", QVariant( QColor() ) ).value<QColor>() ); mSwatchButton4->setColor( settings.value( "/Windows/ColorDialog/customColor4", QVariant( QColor() ) ).value<QColor>() ); mSwatchButton5->setColor( settings.value( "/Windows/ColorDialog/customColor5", QVariant( QColor() ) ).value<QColor>() ); mSwatchButton6->setColor( settings.value( "/Windows/ColorDialog/customColor6", QVariant( QColor() ) ).value<QColor>() ); mSwatchButton7->setColor( settings.value( "/Windows/ColorDialog/customColor7", QVariant( QColor() ) ).value<QColor>() ); mSwatchButton8->setColor( settings.value( "/Windows/ColorDialog/customColor8", QVariant( QColor() ) ).value<QColor>() ); mSwatchButton9->setColor( settings.value( "/Windows/ColorDialog/customColor9", QVariant( QColor() ) ).value<QColor>() ); mSwatchButton10->setColor( settings.value( "/Windows/ColorDialog/customColor10", QVariant( QColor() ) ).value<QColor>() ); mSwatchButton11->setColor( settings.value( "/Windows/ColorDialog/customColor11", QVariant( QColor() ) ).value<QColor>() ); mSwatchButton12->setColor( settings.value( "/Windows/ColorDialog/customColor12", QVariant( QColor() ) ).value<QColor>() ); mSwatchButton13->setColor( settings.value( "/Windows/ColorDialog/customColor13", QVariant( QColor() ) ).value<QColor>() ); mSwatchButton14->setColor( settings.value( "/Windows/ColorDialog/customColor14", QVariant( QColor() ) ).value<QColor>() ); mSwatchButton15->setColor( settings.value( "/Windows/ColorDialog/customColor15", QVariant( QColor() ) ).value<QColor>() ); mSwatchButton16->setColor( settings.value( "/Windows/ColorDialog/customColor16", QVariant( QColor() ) ).value<QColor>() ); //restore sample radius mSpinBoxRadius->setValue( settings.value( "/Windows/ColorDialog/sampleRadius", 1 ).toInt() ); mSamplePreview->setColor( QColor() ); if ( color.isValid() ) { setColor( color ); mColorPreview->setColor2( color ); } //restore active component radio button int activeRadio = settings.value( "/Windows/ColorDialog/activeComponent", 2 ).toInt(); switch ( activeRadio ) { case 0: mHueRadio->setChecked( true ); break; case 1: mSaturationRadio->setChecked( true ); break; case 2: mValueRadio->setChecked( true ); break; case 3: mRedRadio->setChecked( true ); break; case 4: mGreenRadio->setChecked( true ); break; case 5: mBlueRadio->setChecked( true ); break; } int currentTab = settings.value( "/Windows/ColorDialog/activeTab", 0 ).toInt(); mTabWidget->setCurrentIndex( currentTab ); //setup connections connect( mColorBox, SIGNAL( colorChanged( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mColorWheel, SIGNAL( colorChanged( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mColorText, SIGNAL( colorChanged( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mVerticalRamp, SIGNAL( colorChanged( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mRedSlider, SIGNAL( colorChanged( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mGreenSlider, SIGNAL( colorChanged( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mBlueSlider, SIGNAL( colorChanged( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mHueSlider, SIGNAL( colorChanged( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mValueSlider, SIGNAL( colorChanged( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mSaturationSlider, SIGNAL( colorChanged( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mAlphaSlider, SIGNAL( colorChanged( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mColorPreview, SIGNAL( colorChanged( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mSwatchButton1, SIGNAL( colorClicked( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mSwatchButton2, SIGNAL( colorClicked( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mSwatchButton3, SIGNAL( colorClicked( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mSwatchButton4, SIGNAL( colorClicked( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mSwatchButton5, SIGNAL( colorClicked( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mSwatchButton6, SIGNAL( colorClicked( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mSwatchButton7, SIGNAL( colorClicked( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mSwatchButton8, SIGNAL( colorClicked( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mSwatchButton9, SIGNAL( colorClicked( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mSwatchButton10, SIGNAL( colorClicked( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mSwatchButton11, SIGNAL( colorClicked( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mSwatchButton12, SIGNAL( colorClicked( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mSwatchButton13, SIGNAL( colorClicked( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mSwatchButton14, SIGNAL( colorClicked( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mSwatchButton15, SIGNAL( colorClicked( QColor ) ), this, SLOT( setColor( QColor ) ) ); connect( mSwatchButton16, SIGNAL( colorClicked( QColor ) ), this, SLOT( setColor( QColor ) ) ); }
Playlist::PrettyListView::PrettyListView( QWidget* parent ) : QListView( parent ) , ViewCommon() , m_headerPressIndex( QModelIndex() ) , m_mousePressInHeader( false ) , m_skipAutoScroll( false ) , m_firstScrollToActiveTrack( true ) , m_rowsInsertedScrollItem( 0 ) , m_showOnlyMatches( false ) , m_pd( 0 ) { // QAbstractItemView basics setModel( The::playlist()->qaim() ); m_prettyDelegate = new PrettyItemDelegate( this ); connect( m_prettyDelegate, SIGNAL( redrawRequested() ), this, SLOT( redrawActive() ) ); setItemDelegate( m_prettyDelegate ); setSelectionMode( ExtendedSelection ); setDragDropMode( DragDrop ); setDropIndicatorShown( false ); // we draw our own drop indicator setEditTriggers ( SelectedClicked | EditKeyPressed ); setAutoScroll( true ); setVerticalScrollMode( ScrollPerPixel ); setMouseTracking( true ); // Rendering adjustments setFrameShape( QFrame::NoFrame ); setAlternatingRowColors( true) ; The::paletteHandler()->updateItemView( this ); connect( The::paletteHandler(), SIGNAL(newPalette(QPalette)), SLOT(newPalette(QPalette)) ); setAutoFillBackground( false ); // Signal connections connect( this, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(trackActivated(QModelIndex)) ); connect( selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)), this, SLOT(slotSelectionChanged()) ); connect( LayoutManager::instance(), SIGNAL(activeLayoutChanged()), this, SLOT(playlistLayoutChanged()) ); connect( model(), SIGNAL(activeTrackChanged(quint64)), this, SLOT(slotPlaylistActiveTrackChanged()) ); connect( model(), SIGNAL(queueChanged()), viewport(), SLOT(update()) ); // Warning, this one doesn't connect to the normal 'model()' (i.e. '->top()'), but to '->bottom()'. connect( Playlist::ModelStack::instance()->bottom(), SIGNAL(rowsInserted(QModelIndex,int,int)), this, SLOT(bottomModelRowsInserted(QModelIndex,int,int)) ); // Timers m_proxyUpdateTimer = new QTimer( this ); m_proxyUpdateTimer->setSingleShot( true ); connect( m_proxyUpdateTimer, SIGNAL(timeout()), this, SLOT(updateProxyTimeout()) ); m_animationTimer = new QTimer(this); connect( m_animationTimer, SIGNAL(timeout()), this, SLOT(redrawActive()) ); m_animationTimer->setInterval( 250 ); playlistLayoutChanged(); // We do the following call here to be formally correct, but note: // - It happens to be redundant, because 'playlistLayoutChanged()' already schedules // another one, via a QTimer( 0 ). // - Both that one and this one don't work right (they scroll like 'PositionAtTop', // not 'PositionAtCenter'). This is probably because MainWindow changes its // geometry in a QTimer( 0 )? As a fix, MainWindow does a 'slotShowActiveTrack()' // at the end of its QTimer slot, which will finally scroll to the right spot. slotPlaylistActiveTrackChanged(); }