Back to index

unity  6.0.0
Decaymulator.cpp
Go to the documentation of this file.
00001 // -*- Mode: C++; indent-tabs-mode: nil; tab-width: 2 -*-
00002 /*
00003  * Copyright (C) 2010 Canonical Ltd
00004  *
00005  * This program is free software: you can redistribute it and/or modify
00006  * it under the terms of the GNU General Public License version 3 as
00007  * published by the Free Software Foundation.
00008  *
00009  * This program is distributed in the hope that it will be useful,
00010  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00011  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00012  * GNU General Public License for more details.
00013  *
00014  * You should have received a copy of the GNU General Public License
00015  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
00016  *
00017  * Authored by: Jason Smith <jason.smith@canonical.com>
00018  */
00019 
00020 #include "Decaymulator.h"
00021 
00022 namespace unity {
00023 namespace ui {
00024 
00025 Decaymulator::Decaymulator()
00026 {
00027   value.changed.connect(sigc::mem_fun(this, &Decaymulator::OnValueChanged));
00028 }
00029 
00030 void Decaymulator::OnValueChanged(int value)
00031 {
00032   if (!decay_timer_ && value > 0)
00033   {
00034     decay_timer_.reset(new glib::Timeout(10, sigc::mem_fun(this, &Decaymulator::OnDecayTimeout)));
00035   }
00036 }
00037 
00038 bool Decaymulator::OnDecayTimeout()
00039 {
00040   int partial_decay = rate_of_decay / 100;
00041 
00042   if (value <= partial_decay)
00043   {
00044     value = 0;
00045     decay_timer_.reset();
00046     return false;
00047   }
00048 
00049   value = value - partial_decay;
00050   return true;
00051 }
00052 
00053 }
00054 }