1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3  * This file is part of the LibreOffice project.
4  *
5  * This Source Code Form is subject to the terms of the Mozilla Public
6  * License, v. 2.0. If a copy of the MPL was not distributed with this
7  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8  *
9  * This file incorporates work covered by the following license notice:
10  *
11  *   Licensed to the Apache Software Foundation (ASF) under one or more
12  *   contributor license agreements. See the NOTICE file distributed
13  *   with this work for additional information regarding copyright
14  *   ownership. The ASF licenses this file to you under the Apache
15  *   License, Version 2.0 (the "License"); you may not use this file
16  *   except in compliance with the License. You may obtain a copy of
17  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
18  */
19 
20 #pragma once
21 
22 #include <rtl/ustring.hxx>
23 
24 namespace framework{
25 
26 /** @short  can be used to detect, if a target name (used e.g. for XFrame.findFrame())
27             has a special meaning or can be used as normal frame name (e.g. for XFrame.setName()).
28  */
29 class TargetHelper
30 {
31 
32     public:
33 
34         /** @short  it's used at the following interfaces to classify
35                     target names.
36          */
37         enum class ESpecialTarget
38         {
39             Blank,
40             Default,
41             Beamer,
42             HelpTask
43         };
44 
45     // interface
46 
47     public:
48 
49         /** @short  it checks the given unknown target name,
50                     if it's the expected special one.
51 
52             @note   An empty target is similar to "_self"!
53 
54             @param  sCheckTarget
55                     must be the unknown target name, which should be checked.
56 
57             @param  eSpecialTarget
58                     represent the expected target.
59 
60             @return It returns <TRUE/> if <var>sCheckTarget</var> represent
61                     the expected <var>eSpecialTarget</var> value; <FALSE/> otherwise.
62          */
63         static bool matchSpecialTarget(std::u16string_view sCheckTarget  ,
64                                                  ESpecialTarget   eSpecialTarget);
65 
66         /** @short  it checks, if the given name can be used
67                     to set it at a frame using XFrame.setName() method.
68 
69             @descr  Because we handle special targets in a hard coded way
70                     (means we do not check the real name of a frame then)
71                     such named frames will never be found!
72 
73                     And in case such special names can exists one times only
74                     by definition inside the same frame tree (e.g. _beamer and
75                     OFFICE_HELP_TASK) it's not a good idea to allow anything here :-)
76 
77                     Of course we can't check unknown names, which are not special ones.
78                     But we decide, that it's not allowed to use "_" as first sign
79                     (because we reserve this letter for our own purposes!)
80                     and the value must not a well known special target.
81 
82             @param  sName
83                     the new frame name, which should be checked.
84          */
85         static bool isValidNameForFrame(const OUString& sName);
86 };
87 
88 } // namespace framework
89 
90 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
91