ImageViewer::ImageViewer (const KUrl &url, const QString &capText, QWidget *parent) : KDialog( parent ), m_ImageUrl(url), fileIsImage(false), downloadJob(0) { init(url.fileName(), capText); // Add save button setButtons( KDialog::User2 | KDialog::User1 | KDialog::Close ); KGuiItem saveButton( i18n("Save"), "document-save", i18n("Save the image to disk") ); setButtonGuiItem( KDialog::User1, saveButton ); // FIXME: Add more options, and do this more nicely KGuiItem invertButton( i18n("Invert colors"), "", i18n("Reverse colors of the image. This is useful to enhance contrast at times. This affects only the display and not the saving.") ); setButtonGuiItem( KDialog::User2, invertButton ); connect( this, SIGNAL( user1Clicked() ), this, SLOT ( saveFileToDisc() ) ); connect( this, SIGNAL( user2Clicked() ), this, SLOT ( invertColors() ) ); // check URL if (!m_ImageUrl.isValid()) kDebug() << "URL is malformed: " << m_ImageUrl; // FIXME: check the logic with temporary files. Races are possible { KTemporaryFile tempfile; tempfile.open(); file.setFileName( tempfile.fileName() ); }// we just need the name and delete the tempfile from disc; if we don't do it, a dialog will be show loadImageFromURL(); }
void ImageViewer::init(QString caption, QString capText) { setAttribute( Qt::WA_DeleteOnClose, true ); setModal( false ); setWindowTitle( i18n( "KStars image viewer: %1", caption ) ); // Create widget QFrame* page = new QFrame( this ); //setMainWidget( page ); QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->addWidget(page); setLayout(mainLayout); QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Close); mainLayout->addWidget(buttonBox); connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject())); QPushButton *invertB = new QPushButton(i18n("Invert colors")); invertB->setToolTip(i18n("Reverse colors of the image. This is useful to enhance contrast at times. This affects only the display and not the saving.")); QPushButton *saveB = new QPushButton(QIcon::fromTheme("document-save"), i18n("Save")); saveB->setToolTip(i18n("Save the image to disk")); buttonBox->addButton(invertB, QDialogButtonBox::ActionRole); buttonBox->addButton(saveB, QDialogButtonBox::ActionRole); connect(invertB, SIGNAL(clicked()), this, SLOT(invertColors())); connect(saveB, SIGNAL(clicked()), this, SLOT(saveFileToDisc())); m_View = new ImageLabel( page ); m_View->setAutoFillBackground( true ); m_Caption = new QLabel( page ); m_Caption->setAutoFillBackground( true ); m_Caption->setFrameShape( QFrame::StyledPanel ); m_Caption->setText( capText ); // Add layout QVBoxLayout* vlay = new QVBoxLayout( page ); vlay->setSpacing( 0 ); vlay->setMargin( 0 ); vlay->addWidget( m_View ); vlay->addWidget( m_Caption ); //Reverse colors QPalette p = palette(); p.setColor( QPalette::Window, palette().color( QPalette::WindowText ) ); p.setColor( QPalette::WindowText, palette().color( QPalette::Window ) ); m_Caption->setPalette( p ); m_View->setPalette( p ); //If the caption is wider than the image, try to shrink the font a bit QFont capFont = m_Caption->font(); capFont.setPointSize( capFont.pointSize() - 2 ); m_Caption->setFont( capFont ); }