1
// -*- Mode: C++; indent-tabs-mode: nil; tab-width: 2 -*-
3
* Copyright 2011 Canonical Ltd.
5
* This program is free software: you can redistribute it and/or modify it
6
* under the terms of the GNU Lesser General Public License version 3, as
7
* published by the Free Software Foundation.
9
* This program is distributed in the hope that it will be useful, but
10
* WITHOUT ANY WARRANTY; without even the implied warranties of
11
* MERCHANTABILITY, SATISFACTORY QUALITY or FITNESS FOR A PARTICULAR
12
* PURPOSE. See the applicable version of the GNU Lesser General Public
13
* License for more details.
15
* You should have received a copy of both the GNU Lesser General Public
16
* License version 3 along with this program. If not, see
17
* <http://www.gnu.org/licenses/>
19
* Authored by: Nick Dedekind <nick.dedekind@canonical.com>
20
* Ken VanDine <ken.vandine@canonical.com>
24
#ifndef SOCIAL_PREVIEW_CONTENT_H
25
#define SOCIAL_PREVIEW_CONTENT_H
29
#include <Nux/CairoWrapper.h>
30
#include <NuxCore/ObjectPtr.h>
31
#include "unity-shared/StaticCairoText.h"
32
#include "unity-shared/Introspectable.h"
41
class SocialPreviewContent : public nux::View, public unity::debug::Introspectable
44
typedef nux::ObjectPtr<SocialPreviewContent> Ptr;
45
NUX_DECLARE_OBJECT_TYPE(SocialPreviewContent, nux::View);
47
SocialPreviewContent(std::string const& text, NUX_FILE_LINE_PROTO);
48
virtual ~SocialPreviewContent();
50
void SetText(std::string const& text);
53
virtual void Draw(nux::GraphicsEngine& gfx_engine, bool force_draw);
54
virtual void DrawContent(nux::GraphicsEngine& gfx_engine, bool force_draw);
55
virtual void PreLayoutManagement();
57
virtual bool AcceptKeyNavFocus() { return false; }
60
void UpdateBaloonTexture();
61
void RedrawBubble(nux::Geometry const& geom, cairo_t* cr, nux::ButtonVisualState faked_state);
62
void DrawBubble(cairo_t* cr,
72
virtual std::string GetName() const;
73
virtual void AddProperties(GVariantBuilder* builder);
76
nux::ObjectPtr<StaticCairoText> text_;
78
typedef std::unique_ptr<nux::CairoWrapper> NuxCairoPtr;
79
NuxCairoPtr cr_bubble_;
86
#endif // SOCIAL_PREVIEW_CONTENT_H