summaryrefslogtreecommitdiffstats
path: root/kcontrol/randr/krandrtray.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kcontrol/randr/krandrtray.cpp')
-rw-r--r--kcontrol/randr/krandrtray.cpp49
1 files changed, 49 insertions, 0 deletions
diff --git a/kcontrol/randr/krandrtray.cpp b/kcontrol/randr/krandrtray.cpp
index 18d14bdc6..292d51380 100644
--- a/kcontrol/randr/krandrtray.cpp
+++ b/kcontrol/randr/krandrtray.cpp
@@ -78,6 +78,14 @@ KRandRSystemTray::KRandRSystemTray(QWidget* parent, const char *name)
last_known_x = currentScreen()->currentPixelWidth();
last_known_y = currentScreen()->currentPixelHeight();
}
+
+ t_config = new KSimpleConfig("kiccconfigrc");
+
+ QString cur_profile;
+ cur_profile = getCurrentProfile();
+ if (cur_profile != "") {
+ applyIccConfiguration(cur_profile, NULL);
+ }
}
void KRandRSystemTray::mousePressEvent(QMouseEvent* e)
@@ -179,8 +187,26 @@ void KRandRSystemTray::contextMenuAboutToShow(KPopupMenu* menu)
addOutputMenu(menu);
+ // Find any user ICC profiles
+ menu->insertTitle(SmallIcon("kcoloredit"), i18n("Color Profile"));
+ QStringList cfgProfiles;
+ cfgProfiles = t_config->groupList();
+ for (QStringList::Iterator t(cfgProfiles.begin()); t != cfgProfiles.end(); ++t) {
+ lastIndex = menu->insertItem(*t);
+ if (t_config->readEntry("CurrentProfile") == (*t)) {
+ menu->setItemChecked(lastIndex, true);
+ }
+ menu->setItemEnabled(lastIndex, t_config->readBoolEntry("EnableICC", false));
+ menu->connectItem(lastIndex, this, SLOT(slotColorProfileChanged(int)));
+ }
+
menu->insertTitle(SmallIcon("randr"), i18n("Global Configuation"));
+ KAction *actColors = new KAction( i18n( "Configure Color Profiles..." ),
+ SmallIconSet( "configure" ), KShortcut(), this, SLOT( slotColorConfig() ),
+ actionCollection() );
+ actColors->plug( menu );
+
// KAction *actPrefs = new KAction( i18n( "Configure Display..." ),
// SmallIconSet( "configure" ), KShortcut(), this, SLOT( slotPrefs() ),
// actionCollection() );
@@ -194,6 +220,8 @@ void KRandRSystemTray::contextMenuAboutToShow(KPopupMenu* menu)
menu->insertItem(SmallIcon("help"),KStdGuiItem::help().text(), m_help->menu());
KAction *quitAction = actionCollection()->action(KStdAction::name(KStdAction::Quit));
quitAction->plug(menu);
+
+ m_menu = menu;
}
void KRandRSystemTray::slotScreenActivated()
@@ -225,6 +253,12 @@ void KRandRSystemTray::configChanged()
}
first = false;
+
+ QString cur_profile;
+ cur_profile = getCurrentProfile();
+ if (cur_profile != "") {
+ applyIccConfiguration(cur_profile, NULL);
+ }
}
int KRandRSystemTray::GetDefaultResolutionParameter()
@@ -401,6 +435,15 @@ void KRandRSystemTray::slotPrefs()
kcm->exec();
}
+void KRandRSystemTray::slotColorConfig()
+{
+ KCMultiDialog *kcm = new KCMultiDialog( KDialogBase::Plain, i18n( "Configure" ), this );
+
+ kcm->addModule( "iccconfig" );
+ kcm->setPlainCaption( i18n( "Configure Display Color Profiles" ) );
+ kcm->exec();
+}
+
void KRandRSystemTray::slotSettingsChanged(int category)
{
if ( category == (int) KApplication::SETTINGS_SHORTCUTS ) {
@@ -693,6 +736,12 @@ void KRandRSystemTray::addOutputMenu(KPopupMenu* menu)
}
}
+void KRandRSystemTray::slotColorProfileChanged(int parameter)
+{
+ t_config->writeEntry("CurrentProfile", m_menu->text(parameter));
+ applyIccConfiguration(m_menu->text(parameter), NULL);
+}
+
void KRandRSystemTray::slotOutputChanged(int parameter)
{
XRROutputInfo *output_info;